From b1bc96bbd9ec549cf496e87f487a0ac35c83df0a Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Wed, 29 Aug 2018 14:13:04 +0200 Subject: [PATCH] Release 68.0.3440.126 --- CHANGELOG.md | 6 + filters/adblock_entries.h | 181 ++++++++++++++-- ...racking-ads-and-video-functionality.patch} | 62 ++++-- ...3_Allow-playing-audio-in-background.patch} | 0 .../BRM043_Play-videos-in-background.patch | 79 ------- ...RM044_Open-YouTube-links-in-Bromite.patch} | 0 ....patch => BRM045_Add-exit-menu-item.patch} | 0 ...tch => BRM046_Remove-help-menu-item.patch} | 0 ...toggle-global-Javascript-preference.patch} | 0 ...ch => BRM048_Bromite-adblock-engine.patch} | 0 ...atch => BRM049_User-Agent-anonymize.patch} | 0 ...-fingerprinting-mitigations-via-IDL.patch} | 0 ...itigations-for-image-data-and-webGL.patch} | 0 ...eText-add-fingerprinting-mitigation.patch} | 0 ...53_Punt-the-Widevine-version-string.patch} | 0 ..._Disable-metrics-on-all-I-O-threads.patch} | 0 ...RM055_Add-a-flag-for-DNS-over-HTTPS.patch} | 0 ...-dns-flag-regardless-of-SDK-version.patch} | 0 ...figure-maximum-connections-per-host.patch} | 0 ...058_Add-flag-to-show-hide-NTP-tiles.patch} | 0 ...dd-custom-tab-intents-privacy-option.patch | 119 +++++++++++ ...d-flag-to-disable-custom-tab-intents.patch | 117 ---------- ...n-to-keep-cookies-until-session-exit.patch | 201 ++++++++++++++++++ ...-to-not-persist-tabs-across-sessions.patch | 61 ++++-- 24 files changed, 575 insertions(+), 251 deletions(-) rename patches/{BRM042_Cure-AMP-and-tracking-from-search-results.patch => BRM042_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch} (66%) rename patches/{BRM044_Allow-playing-audio-in-background.patch => BRM043_Allow-playing-audio-in-background.patch} (100%) delete mode 100644 patches/BRM043_Play-videos-in-background.patch rename patches/{BRM045_Open-YouTube-links-in-Bromite.patch => BRM044_Open-YouTube-links-in-Bromite.patch} (100%) rename patches/{BRM046_Add-exit-menu-item.patch => BRM045_Add-exit-menu-item.patch} (100%) rename patches/{BRM047_Remove-help-menu-item.patch => BRM046_Remove-help-menu-item.patch} (100%) rename patches/{BRM048_Add-menu-option-to-toggle-global-Javascript-preference.patch => BRM047_Add-menu-option-to-toggle-global-Javascript-preference.patch} (100%) rename patches/{BRM049_Bromite-adblock-engine.patch => BRM048_Bromite-adblock-engine.patch} (100%) rename patches/{BRM050_User-Agent-anonymize.patch => BRM049_User-Agent-anonymize.patch} (100%) rename patches/{BRM051_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch => BRM050_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch} (100%) rename patches/{BRM052_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch => BRM051_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch} (100%) rename patches/{BRM053_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch => BRM052_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch} (100%) rename patches/{BRM054_Punt-the-Widevine-version-string.patch => BRM053_Punt-the-Widevine-version-string.patch} (100%) rename patches/{BRM055_Disable-metrics-on-all-I-O-threads.patch => BRM054_Disable-metrics-on-all-I-O-threads.patch} (100%) rename patches/{BRM056_Add-a-flag-for-DNS-over-HTTPS.patch => BRM055_Add-a-flag-for-DNS-over-HTTPS.patch} (100%) rename patches/{BRM057_Always-respect-async-dns-flag-regardless-of-SDK-version.patch => BRM056_Always-respect-async-dns-flag-regardless-of-SDK-version.patch} (100%) rename patches/{BRM058_Add-flag-to-configure-maximum-connections-per-host.patch => BRM057_Add-flag-to-configure-maximum-connections-per-host.patch} (100%) rename patches/{BRM059_Add-flag-to-show-hide-NTP-tiles.patch => BRM058_Add-flag-to-show-hide-NTP-tiles.patch} (100%) create mode 100644 patches/BRM059_Add-custom-tab-intents-privacy-option.patch delete mode 100644 patches/BRM060_Add-flag-to-disable-custom-tab-intents.patch create mode 100644 patches/BRM060_Add-privacy-option-to-keep-cookies-until-session-exit.patch diff --git a/CHANGELOG.md b/CHANGELOG.md index 428f7c9e..0109a323 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 68.0.3440.126 +* add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117) +* add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56) +* fix for do not persist tabs preference saving +* extend anti-AMP to all search results + # 68.0.3440.121 * add option to not persist tabs across sessions (fixes https://github.com/bromite/bromite/issues/106) * always incognito mode (fixes https://github.com/bromite/bromite/issues/18) diff --git a/filters/adblock_entries.h b/filters/adblock_entries.h index 899d2e5c..71c2717c 100644 --- a/filters/adblock_entries.h +++ b/filters/adblock_entries.h @@ -19,7 +19,7 @@ struct adblock_entry { const char **domains, **domains_skip; }; -#define ADBLOCK_ENTRY_COUNT 52704 +#define ADBLOCK_ENTRY_COUNT 52775 const char *m10030a28[] = { "/InsightTrk/", NULL }; const char *m10045299[] = { "award.sitekeuring.net^", NULL }; const char *m100458cd[] = { "eluhhfyxx.com^", NULL }; @@ -1464,6 +1464,7 @@ const char *m16db7b9 [] = { "/ad/index/", NULL }; const char *m16dd49a3[] = { "/full/ads/", NULL }; const char *m16de0f3b[] = { "/cramitin/ads_", NULL }; const char *m16df122e[] = { "/backend_loader.php", NULL }; +const char *m16df2925[] = { "shohabiymgjxdb.com^", NULL }; const char *m16e05c38[] = { "ubuntugeek.com/images/ubuntu1.png", NULL }; const char *m16e1c637[] = { "qkuprxbmkeqp.com^", NULL }; const char *m16e1dd04[] = { "advertisingwouldbegreat.com/", ".", NULL }; @@ -1514,6 +1515,7 @@ const char *m1717b8b1[] = { "atimes.com/banner/", NULL }; const char *m1719ddb3[] = { "ibqmccuuhjqc.com^", NULL }; const char *m171b49e1[] = { ".is/ads/", NULL }; const char *m171bc061[] = { "01dff0e56385455f459.com^", NULL }; +const char *m171bce27[] = { "booking.com^", NULL }; const char *m171c89f3[] = { "/affiliate.linker/", NULL }; const char *m171d2be [] = { "_adverts/", NULL }; const char *m171dd0fd[] = { "kitbit.net^", NULL }; @@ -1685,6 +1687,7 @@ const char *m17d8943a[] = { "phncdn.com/", "/js/likeDislike/", NULL }; const char *m17d96e91[] = { "95g804up.download^", NULL }; const char *m17da43df[] = { "hentaihaven.org/wp-content/banners/", NULL }; const char *m17ddfed0[] = { "/uberlayadrenderer.", NULL }; +const char *m17de82db[] = { "ogjascdgq.com^", NULL }; const char *m17dfd2dc[] = { "atwola.com^", NULL }; const char *m17e3b964[] = { "player.1stcreditrepairs.com^", NULL }; const char *m17e43662[] = { "docin.com/app/playerLoadLog/", NULL }; @@ -2330,6 +2333,7 @@ const char *m1af0ac87[] = { "adnxs.com/ut/", NULL }; const char *m1af1e11e[] = { "d-markets.net^", NULL }; const char *m1af4e76b[] = { "tower.moviepilot.com^", NULL }; const char *m1af5e127[] = { "adtools2.amakings.com^", NULL }; +const char *m1af7578e[] = { "xmgrjuqqc.com^", NULL }; const char *m1af7cb82[] = { "chinadaily.com.cn/s?", NULL }; const char *m1af7e6c5[] = { "shimory.com/js/show_ads.js", NULL }; const char *m1af8e0a [] = { "piwik.pro^", NULL }; @@ -2364,6 +2368,7 @@ const char *m1b15ee26[] = { "omynews.net^", NULL }; const char *m1b18a20a[] = { "windowne.info^", NULL }; const char *m1b196676[] = { "/scanscoutplugin.", NULL }; const char *m1b1b708d[] = { "/ad_content.", NULL }; +const char *m1b1bfd9c[] = { "fgsjjpjhdlfthp.com^", NULL }; const char *m1b1bffff[] = { "seoradar.ro^", NULL }; const char *m1b1c4740[] = { "top10sportsites.com^", NULL }; const char *m1b1d6a79[] = { "thedirectory.co.zw/banners/", NULL }; @@ -2983,6 +2988,7 @@ const char *m1de02f9e[] = { "ah77llcy.party^", NULL }; const char *m1de4f18f[] = { "support.google.com/adsense/", NULL }; const char *m1de5bf25[] = { "voyeurhit.com/js/a2210.js", NULL }; const char *m1de73269[] = { "mediaplex.com/ad/bn/", NULL }; +const char *m1deaaa54[] = { "dieohupl.com^", NULL }; const char *m1deabd7d[] = { "analytics.atomiconline.com/services/jquery.js", NULL }; const char *m1deada94[] = { "crowdtwist.com^", NULL }; const char *m1debb1 [] = { "gibts-hier.com/counter.php", NULL }; @@ -3789,6 +3795,7 @@ const char *m218f2cc3[] = { "jutbdkjc.bid^", NULL }; const char *m218fa620[] = { "nuttynewstoday.com/images/hostwink.jpg", NULL }; const char *m2191c481[] = { "/adbucket.", NULL }; const char *m21940cf5[] = { "hclips.com/js/advertising.js", NULL }; +const char *m219646e2[] = { "zzmyypjedpfxck.com^", NULL }; const char *m2196a373[] = { "vipbox.tv/blackwhite/", NULL }; const char *m2196d7c9[] = { "/adframebottom.", NULL }; const char *m21979415[] = { "b54m4qbmt0b9.com^", NULL }; @@ -5439,6 +5446,7 @@ const char *m292603a3[] = { "hbfnmcncnasfb.bid^", NULL }; const char *m2926c206[] = { "counter.top.ge^", NULL }; const char *m2928b3ec[] = { "/lbl_ad.", NULL }; const char *m2929ac7e[] = { "/adview.", NULL }; +const char *m292f7c23[] = { "games2rule.com/node_modules/", NULL }; const char *m2931ca74[] = { "awmpartners.com^", NULL }; const char *m2932491 [] = { "extremetube.com/player_related?", NULL }; const char *m2932704c[] = { "evtfjieqjhvf.com^", NULL }; @@ -6164,6 +6172,7 @@ const char *m2c9dad60[] = { "itracking.fccinteractive.com^", NULL }; const char *m2c9e3ecb[] = { "vibeo.to^", NULL }; const char *m2c9e8db [] = { "zsxwpotlxihvk.com^", NULL }; const char *m2c9ef8fb[] = { "/ad-studio/", NULL }; +const char *m2c9fc2de[] = { "elwbhndbxfqk.com^", NULL }; const char *m2ca12a9d[] = { "/s.gif?t=", NULL }; const char *m2ca3b3d1[] = { "_onlinead_", NULL }; const char *m2ca3e71c[] = { "bigeddieradio.com/uploads/sponsors/", NULL }; @@ -6314,6 +6323,7 @@ const char *m2d56c7c2[] = { "lixzmpxjilqp.com^", NULL }; const char *m2d570e6e[] = { "jivox.com^", NULL }; const char *m2d5a0988[] = { "telegraphindia.com^", "^native-content^", NULL }; const char *m2d5a2153[] = { "games.latimes.com/Scripts/advert.js", NULL }; +const char *m2d5a7c32[] = { "derqboxqca.com^", NULL }; const char *m2d5abdb6[] = { "/popupad/", NULL }; const char *m2d5bfed2[] = { "pb.i.sogou.com^", NULL }; const char *m2d5c221e[] = { "gorillavid.in/script/ad.js", NULL }; @@ -6626,6 +6636,7 @@ const char *m2ebda69b[] = { "kxtkfkqkrzz.bid^", NULL }; const char *m2ebee166[] = { "perfectmoney.com/img/banners/", NULL }; const char *m2ebf6566[] = { "bluehost-cdn.com/media/partner/images/", NULL }; const char *m2ec1e986[] = { "ads.kelbymediagroup.com^", NULL }; +const char *m2ec4a500[] = { "kwsmqtposrub.com^", NULL }; const char *m2ec50a8a[] = { "advertmarketing.com^", NULL }; const char *m2ec5aabe[] = { "admanage.com^", NULL }; const char *m2ec65fda[] = { "remo-xp.com/wp-content/themes/adsense-boqpod/style.css", NULL }; @@ -7436,6 +7447,7 @@ const char *m326c2b03[] = { "zoossoft.net^", NULL }; const char *m326d6571[] = { "urbanlist.com/event/track-first-view/", NULL }; const char *m326e9dac[] = { "hdporn.net/images/hd-porn-banner.gif", NULL }; const char *m326eb0ca[] = { "lw2.gamecopyworld.com^", NULL }; +const char *m326f841b[] = { "qytabshszekf.com^", NULL }; const char *m32700197[] = { "ckqkwhampiyb.com^", NULL }; const char *m32701208[] = { "bannersng.yell.com^", NULL }; const char *m327309fd[] = { "hyxhxnlqeppn.com^", NULL }; @@ -8587,11 +8599,13 @@ const char *m37d51ad4[] = { "/adexample?", NULL }; const char *m37d6d753[] = { "cctv.com/js/cntv_Advertise.js", NULL }; const char *m37d72b4a[] = { "crzhxquiyo.com^", NULL }; const char *m37d7d345[] = { "fvffhcyxc.com^", NULL }; +const char *m37daf4a0[] = { "nidksyrrrtckzj.com^", NULL }; const char *m37dbc779[] = { ".openxtag.", NULL }; const char *m37dcd83b[] = { "g.doubleclick.net/gampad/ads?gdfp_req=1&", NULL }; const char *m37e071b1[] = { "exogripper.com^", NULL }; const char *m37e0ed7a[] = { "tv5monde.com/cms/javascript/", "/sitestat.js", NULL }; const char *m37e14fdf[] = { "wtp101.com^", NULL }; +const char *m37e2f57c[] = { "putlocker.", "^", "banner", NULL }; const char *m37e4866e[] = { "nbhbqvfcsds.com^", NULL }; const char *m37e554e4[] = { "stats.webs.com^", NULL }; const char *m37e647e [] = { "readynutrition.com^", "^banners^", NULL }; @@ -9109,6 +9123,7 @@ const char *m3a51f210[] = { "wwznjjvkfqnyvy.com^", NULL }; const char *m3a52c01d[] = { "thaivisa.com/promotions/banners/", NULL }; const char *m3a549293[] = { "highcpms.com^", NULL }; const char *m3a5631d6[] = { "molqvpnnlmnb.com^", NULL }; +const char *m3a564e1f[] = { "xmlqerwrehfqo.com^", NULL }; const char *m3a568741[] = { "unrummaged.com^", NULL }; const char *m3a5757b7[] = { "qblpxxcjusgmq.bid^", NULL }; const char *m3a584d5e[] = { "gogousenet.com^", "^promo.cgi", NULL }; @@ -9413,6 +9428,7 @@ const char *m3bed4945[] = { "etacontent.com^", NULL }; const char *m3bed5cd4[] = { "/ads/widebanner.", NULL }; const char *m3bedfc1c[] = { "etherealhakai.com^", NULL }; const char *m3beee322[] = { "segmentnext.com/javascripts/interstitial.client.js", NULL }; +const char *m3befffee[] = { "ftuohzeijbkm.com^", NULL }; const char *m3bf20a46[] = { "bvnekcpa.bid^", NULL }; const char *m3bf245ea[] = { "depositfiles.com^", ".php^ref^", NULL }; const char *m3bf67336[] = { "21sexturycash.com^", NULL }; @@ -9786,6 +9802,7 @@ const char *m3da7926b[] = { "panelsave.com^", NULL }; const char *m3da7c472[] = { "gamesgames.com^", "^advertisement.js", NULL }; const char *m3da856b8[] = { "btrll.com^", NULL }; const char *m3da9cf52[] = { "/ad-page/", NULL }; +const char *m3daa345 [] = { "afgbvhocfvpm.com^", NULL }; const char *m3dac4c1b[] = { "livetraf.com^", NULL }; const char *m3dad7038[] = { "wmwkwubufart.com^", NULL }; const char *m3daee697[] = { "^right_ad^", NULL }; @@ -10135,6 +10152,7 @@ const char *m3f32689e[] = { "_blogads.", NULL }; const char *m3f32fced[] = { "adsmedia.life^", NULL }; const char *m3f334d49[] = { "pop.advecs.com^", NULL }; const char *m3f33581c[] = { "jshjrozmwmyj.com^", NULL }; +const char *m3f35b450[] = { "tzyvolvenvyim.com^", NULL }; const char *m3f36468 [] = { "imageadvantage.net^", NULL }; const char *m3f378e1f[] = { "lifedaily.com/prebid.js", NULL }; const char *m3f38b38b[] = { "ad.winningpartner.com^", NULL }; @@ -11011,6 +11029,7 @@ const char *m433b0cbf[] = { "bbci.co.uk/bbcdotcom/", "/script/av/emp/analytics.j const char *m433bfba8[] = { "evisitanalyst.com^", NULL }; const char *m433d8ae0[] = { "/adprime.", NULL }; const char *m433f57da[] = { "volgograd-info.ru^", NULL }; +const char *m433fde56[] = { "/prebid14.js", NULL }; const char *m43403b7 [] = { "facebook.com/xti.php?", NULL }; const char *m434098c6[] = { "yahoo.com/neo/stat", NULL }; const char *m4341c258[] = { "imrwxmau.com^", NULL }; @@ -11704,6 +11723,7 @@ const char *m467b7d29[] = { "/subadz.", NULL }; const char *m467b83e2[] = { "br.realitykings.com^", NULL }; const char *m467d6a6d[] = { "/ad/b_view?", NULL }; const char *m46817887[] = { "brand.net^", NULL }; +const char *m46825f93[] = { "wgssxjoac.com^", NULL }; const char *m46826233[] = { "vortex.accuweather.com^", "_160x600_bg.jpg", NULL }; const char *m4682bb53[] = { "a135.wftv.com^", NULL }; const char *m4683eb1f[] = { "streetinsider.com/", ".php?", NULL }; @@ -12249,6 +12269,7 @@ const char *m48e9fa85[] = { "swiftypecdn.com/te.js", NULL }; const char *m48eb1b00[] = { "nativeleads.net^", NULL }; const char *m48eb5f46[] = { "vinub.com^", NULL }; const char *m48ec08fd[] = { "jobsearch.careerone.com.au^", "^bannerad.asmx^", NULL }; +const char *m48ec6761[] = { "looopings.nl/adsbygoogle.js", NULL }; const char *m48ed5ec0[] = { "/frontads/", NULL }; const char *m48ef5747[] = { "/gigyatargetad.", NULL }; const char *m48f071fb[] = { "_ad_250.", NULL }; @@ -12782,6 +12803,7 @@ const char *m4b8e9bc6[] = { "howcast.com/flash/assets/ads/liverail.swf", NULL }; const char *m4b8f3382[] = { "stats.blogoscoop.net^", NULL }; const char *m4b9074e6[] = { "ketoo.com^", NULL }; const char *m4b91209b[] = { "scgyndrujhzf.com^", NULL }; +const char *m4b920e20[] = { "st.bebi.com/bebi_", ".js", NULL }; const char *m4b92e354[] = { ";adsense_", NULL }; const char *m4b9312ef[] = { "i-mobile.co.jp^", NULL }; const char *m4b97ec4e[] = { "dclmmbjyshy.com^", NULL }; @@ -12892,6 +12914,7 @@ const char *m4c1c5fcd[] = { "analytics.ooyala.com^", NULL }; const char *m4c1cf93b[] = { "/audience-science.", NULL }; const char *m4c1d90da[] = { "gigya.com^", "^cimp.gif^", NULL }; const char *m4c2223 [] = { "/i2a.js", NULL }; +const char *m4c226c65[] = { "wawlfosfkdy.com^", NULL }; const char *m4c227d78[] = { "/pilot_ad.", NULL }; const char *m4c23b254[] = { "easypic.com/js/easypicads.js", NULL }; const char *m4c23fce2[] = { "track.sprinklecontent.com^", NULL }; @@ -13686,6 +13709,7 @@ const char *m4fcfbb34[] = { "jngnaymz.com^", NULL }; const char *m4fd0081e[] = { "/directadvert-", NULL }; const char *m4fd128d [] = { "mediaticks.com/bollywood.jpg", NULL }; const char *m4fd2479b[] = { "ulrryqpp.com^", NULL }; +const char *m4fd2489d[] = { "zgwuvfye.com^", NULL }; const char *m4fd2a885[] = { "maps.googleapis.com^", NULL }; const char *m4fd4c0ba[] = { "etggealva.com^", NULL }; const char *m4fd50d76[] = { "svapqzplbwjx.com^", NULL }; @@ -14393,6 +14417,7 @@ const char *m53123342[] = { "xcsgthqj.bid^", NULL }; const char *m53156880[] = { "hello.staticstuff.net^", NULL }; const char *m53197f50[] = { "xddgratis.com/adframe.js", NULL }; const char *m5319e3e0[] = { "peypcjxllo.bid^", NULL }; +const char *m5319f28d[] = { "hjjdmohuzp.com^", NULL }; const char *m531a2a42[] = { "bollywoodshaadis.com/js/ads.js", NULL }; const char *m531d47a0[] = { "imgur.com/albumview.gif?", NULL }; const char *m531db7f1[] = { "betway.com/snowflake/?", NULL }; @@ -14438,6 +14463,7 @@ const char *m5349c2a1[] = { "mobatory.com^", NULL }; const char *m534bbdbd[] = { "sxlzcvqfeacy.com^", NULL }; const char *m534bd154[] = { "vtracker.net^", NULL }; const char *m534cc17f[] = { "/ck.php?nids", NULL }; +const char *m534cc702[] = { "brfyubakyg.com^", NULL }; const char *m53528b85[] = { "/evercookie_", NULL }; const char *m5352d4d3[] = { "-ads2.htm", NULL }; const char *m5352f487[] = { "flopturnriver.com", "/banners/", NULL }; @@ -14546,6 +14572,7 @@ const char *m53c19275[] = { "/zanox_ad/", NULL }; const char *m53c31bf [] = { "/cnt/start.php?", NULL }; const char *m53c3e610[] = { "blogcounter.com^", NULL }; const char *m53c457e0[] = { "ffvbcwueh.com^", NULL }; +const char *m53c47064[] = { "slwclrwmruuxav.com^", NULL }; const char *m53c48c0f[] = { "mysdcc.sdccd.edu^", "^.log^", NULL }; const char *m53c545af[] = { "/bbad8.", NULL }; const char *m53c712a7[] = { "/comscore_stats.", NULL }; @@ -14900,6 +14927,7 @@ const char *m5547c1b3[] = { "infinite-ads.com^", NULL }; const char *m554afc72[] = { "wiwo.de/analytics/", NULL }; const char *m554d3d75[] = { "comunicazio.com^", NULL }; const char *m554d49bf[] = { "gverjfuapaag.com^", NULL }; +const char *m554d5a85[] = { "gouowkjmewn.com^", NULL }; const char *m554dd244[] = { "?_siteid=", NULL }; const char *m554de5f5[] = { "redtube.com/js/redtube.js?", NULL }; const char *m554e8e5d[] = { "lypn.com^", NULL }; @@ -14943,6 +14971,7 @@ const char *m556c3040[] = { "dnqejgrbtlxe.com^", NULL }; const char *m556d8363[] = { "/ad_support.", NULL }; const char *m556f4297[] = { "cgicounter.onlinehome.de^", NULL }; const char *m556f776a[] = { "/affiliate.1800flowers.", NULL }; +const char *m5570f72b[] = { "zbsqhxyjlh.com^", NULL }; const char *m55720a2a[] = { "unaspajas.com^", NULL }; const char *m55727f15[] = { "/adplayer-", NULL }; const char *m557352b8[] = { "ads.eatinparis.com^", NULL }; @@ -15115,6 +15144,7 @@ const char *m56459607[] = { "xjfjx8hw.com^", NULL }; const char *m564611ef[] = { "oaqaxjmyuxkpm.com^", NULL }; const char *m5646648d[] = { "/_dts.gif?", NULL }; const char *m56492854[] = { "counterlevel.de^", NULL }; +const char *m564b4d27[] = { "remistrainew.club^", NULL }; const char *m564cb842[] = { "/szm_mclient.js", NULL }; const char *m5651acdb[] = { "/rotatoradbottom.", NULL }; const char *m565369bd[] = { "eatsleepsport.com/images/manorgaming1.jpg", NULL }; @@ -15485,6 +15515,7 @@ const char *m5820f9ee[] = { "ddhnjkaojrcv.bid^", NULL }; const char *m582113a [] = { "proxy-youtube.net/mih_", NULL }; const char *m58228f21[] = { "marengo-uniontimes.com/images/banners/", NULL }; const char *m58242943[] = { "blackshoppingchannel.com^", "^ad_agency^", NULL }; +const char *m5824f4db[] = { "cjgpifztileh.com^", NULL }; const char *m58251c7a[] = { "ef5ahgoo.com^", NULL }; const char *m58256671[] = { "ads.betfair.com^", NULL }; const char *m58261533[] = { "smilyes4u.com^", NULL }; @@ -17021,6 +17052,7 @@ const char *m5f64c392[] = { "hhdbbixxs.bid^", NULL }; const char *m5f64df30[] = { "afternoondc.in/banners/", NULL }; const char *m5f65413e[] = { "/detm_adobe.", NULL }; const char *m5f673255[] = { "tzelsvxtjvy.com^", NULL }; +const char *m5f684563[] = { "hdoabbjyyebca.com^", NULL }; const char *m5f686c67[] = { "/ads/vip_", NULL }; const char *m5f69ba0f[] = { "radar-toulouse.fr/advertisement.js", NULL }; const char *m5f6a0991[] = { "xmr.cool^", NULL }; @@ -17091,6 +17123,7 @@ const char *m5fb7dc4b[] = { "641198810fae7.com^", NULL }; const char *m5fb8164b[] = { ".org/pops.js", NULL }; const char *m5fb8cfff[] = { "/sr.ads.", NULL }; const char *m5fbab5f4[] = { "all-top.ru/cgi-bin/topcount.cgi?", NULL }; +const char *m5fbebc31[] = { "hoyqhygv.com^", NULL }; const char *m5fbfdbc2[] = { "/cdn/adx/", NULL }; const char *m5fc289f8[] = { "rev2pub.com^", NULL }; const char *m5fc346e1[] = { "ads.vnumedia.com^", NULL }; @@ -17693,6 +17726,7 @@ const char *m62597c40[] = { "walprater.com^", NULL }; const char *m625bfd8e[] = { "/bansrc/", NULL }; const char *m625c5deb[] = { "ad.outsidehub.com^", NULL }; const char *m625cde31[] = { "ads.youtube.com^", NULL }; +const char *m625defa6[] = { "mcaybfrnrqpmv.com^", NULL }; const char *m625fa870[] = { "marketshot.com^", NULL }; const char *m625fb261[] = { "173.199.120.7/delivery/", NULL }; const char *m62602d77[] = { "xubqqaqhotit.com^", NULL }; @@ -18578,6 +18612,7 @@ const char *m663978e2[] = { "/jamnboad.", NULL }; const char *m663b5507[] = { "vedomosti.ru/assets/vendors/adriver.media-", NULL }; const char *m663ea553[] = { "idexoro.info^", NULL }; const char *m663f865b[] = { "webstatistieken.xs4all.nl^", NULL }; +const char *m66407a2d[] = { "hfslmsbj.com^", NULL }; const char *m6640fe00[] = { "convertro.com^", NULL }; const char *m6641a812[] = { "drunkard.com/banners/modern-drunkard-book.jpg", NULL }; const char *m6641cd13[] = { "rstg.io^", NULL }; @@ -19812,7 +19847,6 @@ const char *m6bdf38d7[] = { "_728x90_", NULL }; const char *m6be09e93[] = { "nyugalits.info^", NULL }; const char *m6be14af0[] = { "/php/ads/", NULL }; const char *m6be2051f[] = { "/code/script/back.php", NULL }; -const char *m6be34010[] = { "ranking-street.de^", NULL }; const char *m6be3fe00[] = { "vortez.co.uk^", "120x600.swf", NULL }; const char *m6be40543[] = { "usemax.de^", NULL }; const char *m6be9455b[] = { "ads.mmania.com^", NULL }; @@ -20043,6 +20077,7 @@ const char *m6cfc507c[] = { "forads.pl^", NULL }; const char *m6cfc7c08[] = { "w88.m.espn.go.com^", NULL }; const char *m6cfcce87[] = { "kioxprngouirqu.com^", NULL }; const char *m6cfe95c [] = { "vstats.co^", NULL }; +const char *m6d01dc41[] = { "llpdtbmowsg.com^", NULL }; const char *m6d01f5e9[] = { "blackpressusa.com^", "300x250.", NULL }; const char *m6d04088c[] = { "beamkite.com^", NULL }; const char *m6d0430ae[] = { "mosaicolor.website^", NULL }; @@ -20369,6 +20404,7 @@ const char *m6e8958c1[] = { "raz-raz-mataz.com^", NULL }; const char *m6e89b638[] = { "phncdn.com/cb/youpornwebfront/css/skin.css", NULL }; const char *m6e8ac90b[] = { "/ad/960x60.", NULL }; const char *m6e8cd24e[] = { "alternativeadverts.com^", NULL }; +const char *m6e8cf432[] = { "kgkkfrvujnqf.com^", NULL }; const char *m6e8e0b00[] = { "readcomiconline.to^", "^jquery.tools.min.js", NULL }; const char *m6e91416e[] = { "/adfolder/", NULL }; const char *m6e91611a[] = { "erckgobvi.com^", NULL }; @@ -24298,6 +24334,7 @@ const char *m809cd6b9[] = { "/img-ads/", NULL }; const char *m809ce549[] = { "/micro.php?action=view&", NULL }; const char *m809f05a [] = { "tmgr.ccmbg.com^", NULL }; const char *m809f5359[] = { "/mixpanel_tracker.", NULL }; +const char *m809f8099[] = { "mdulmrphzsnvw.com^", NULL }; const char *m809fb68 [] = { "/adsnative_", NULL }; const char *m80a03d68[] = { "cloudfront.net/autotracker", NULL }; const char *m80a5413a[] = { "/admicro_", NULL }; @@ -24670,6 +24707,7 @@ const char *m826f04b [] = { "scmffjmashzc.com^", NULL }; const char *m8270e11 [] = { "webcams.com/js/im_popup.php?", NULL }; const char *m82713b76[] = { "hvagzrssrcze.com^", NULL }; const char *m8272417d[] = { "watchseries-online.se/jquery.js", NULL }; +const char *m82726bad[] = { "rkczvumivvb.com^", NULL }; const char *m82748b48[] = { "havamedia.net^", NULL }; const char *m8274cf75[] = { "gallery.deskbabes.com^", ".php^dir^", "^ids^", NULL }; const char *m827598fc[] = { "b.bedop.com^", NULL }; @@ -25638,6 +25676,7 @@ const char *m871e2c69[] = { "stats.harpercollins.com^", NULL }; const char *m871ec598[] = { "xooimg.com/magesy/js-cdn/adblock.js", NULL }; const char *m8720829d[] = { "ttdaz.xyz^", NULL }; const char *m8722875b[] = { "freedownloadscenter.com^", "^empty.gif^", NULL }; +const char *m87256008[] = { "pvpqgjkgvszq.com^", NULL }; const char *m8725fd4a[] = { "qcjphhqwl.com^", NULL }; const char *m8727892c[] = { "connextra.com^", NULL }; const char *m8729ad73[] = { "networld.hk^", NULL }; @@ -26919,6 +26958,7 @@ const char *m8d47bfa1[] = { "vapeworld.com^", "^banners^", NULL }; const char *m8d47cd0a[] = { "a4dtrk.com^", NULL }; const char *m8d492f6a[] = { "akipress.com/_ban/", NULL }; const char *m8d49cda8[] = { "clipurl.club^", NULL }; +const char *m8d4a8664[] = { "/mod_ablockdetector/", NULL }; const char *m8d4b87e5[] = { ".twoads.", NULL }; const char *m8d4c4a01[] = { "_300x250-", NULL }; const char *m8d4d6213[] = { "ah-ha.com^", NULL }; @@ -27056,6 +27096,7 @@ const char *m8df46bfc[] = { "lukir.info^", NULL }; const char *m8df4bdd9[] = { "apnonline.com.au/img/marketplace/", "_ct50x50.gif", NULL }; const char *m8df4f054[] = { "zindas.info^", NULL }; const char *m8df5c3e5[] = { "visitorpath.com^", NULL }; +const char *m8df66676[] = { "weqfcudxrrbwn.com^", NULL }; const char *m8df80a04[] = { "extole.io^", NULL }; const char *m8df87bcd[] = { "-advert3.", NULL }; const char *m8df8842 [] = { "ipcount.net^", NULL }; @@ -27944,6 +27985,7 @@ const char *m91e367cc[] = { "negdrvgo.com^", NULL }; const char *m91e5301d[] = { "/sample728x90ad.", NULL }; const char *m91e55394[] = { "kfjgnunsuy.bid^", NULL }; const char *m91e6a8e9[] = { "muzotur.info^", NULL }; +const char *m91e9170a[] = { "kickasskatcr.bid/sw.js", NULL }; const char *m91e99449[] = { "/ad/", "&ifid=", NULL }; const char *m91eb00b7[] = { "extensoft.com/artisteer/banners/", NULL }; const char *m91eb10e [] = { "/sitecounter/counter.", NULL }; @@ -28677,6 +28719,7 @@ const char *m95888d88[] = { "/ad_120_", NULL }; const char *m9588bf09[] = { "4affiliate.net^", NULL }; const char *m95890c83[] = { "ndpegjgxzbbv.com^", NULL }; const char *m958a52d5[] = { "_ad_bottom.", NULL }; +const char *m958b5f9b[] = { "fuaawvoqbzza.com^", NULL }; const char *m958bc01f[] = { "fc7fc652fed6.online^", NULL }; const char *m958efda6[] = { "jdoqocy.com/placeholder-", NULL }; const char *m958fd854[] = { "linkshighway.com^", NULL }; @@ -29153,6 +29196,7 @@ const char *m97cd6768[] = { "adigniter.org^", NULL }; const char *m97ce95de[] = { "qctltbnn.com^", NULL }; const char *m97d06dad[] = { "xtgreat.com^", NULL }; const char *m97d0aee6[] = { "/adspot/", NULL }; +const char *m97d1e12a[] = { "pmohsibnim.com^", NULL }; const char *m97d24654[] = { "ujebryyesbeymm.bid^", NULL }; const char *m97d35c0 [] = { "searchfeed.com^", NULL }; const char *m97d3ae5e[] = { "zonearmour4u.link^", NULL }; @@ -30857,6 +30901,7 @@ const char *ma00b18dd[] = { "/wtbase.js", NULL }; const char *ma00b8c13[] = { "demonoid.pw/cached/code.js", NULL }; const char *ma00bc511[] = { "/pcount.asp", NULL }; const char *ma00d1817[] = { "spotrails.com^", "^flowplayeradplayerplugin.swf", NULL }; +const char *ma00e5215[] = { "i.trackmytarget.com^", NULL }; const char *ma00f5e22[] = { "fairfax.com.au/js/track/", NULL }; const char *ma00facdd[] = { "7f8e91975bdc9c5f1c.com^", NULL }; const char *ma01049be[] = { "pcauthority.com.au^", "^skins^", NULL }; @@ -31110,6 +31155,7 @@ const char *ma11e5b13[] = { "/ads09a/", NULL }; const char *ma121cdbd[] = { "api.140proof.com^", NULL }; const char *ma1221299[] = { "/pingd?", NULL }; const char *ma12581b [] = { "ovcksawwem.com^", NULL }; +const char *ma125992e[] = { "zencdn.net^", NULL }; const char *ma125bab9[] = { "/marketing/banners/", NULL }; const char *ma12671a [] = { "/userads/", NULL }; const char *ma127aebb[] = { "vxuradoiwrwqga.bid^", NULL }; @@ -31517,6 +31563,7 @@ const char *ma2faa2f5[] = { "snowplow-collector.sugarops.com^", NULL }; const char *ma2faa7bf[] = { "hittracker.org/counter.php", NULL }; const char *ma2fc46e3[] = { "brothersoft.com/softsale/", NULL }; const char *ma2fcbaa2[] = { "/getsidpixeltag?sid=", NULL }; +const char *ma2fcf88 [] = { "xdonzpjglqxi.com^", NULL }; const char *ma2fd0a11[] = { "jqwww.download^", NULL }; const char *ma2fde934[] = { "busyd5s0.faith^", NULL }; const char *ma2fdf356[] = { "g22rbb7.com^", NULL }; @@ -31562,6 +31609,7 @@ const char *ma32306a [] = { "bonitrust.de^", NULL }; const char *ma3230bfe[] = { "3.cn/cesu/r?", NULL }; const char *ma3230d62[] = { "begbkbqywd.bid^", NULL }; const char *ma3236524[] = { "/affs?affid=", NULL }; +const char *ma323f44e[] = { "khdmabhykmj.com^", NULL }; const char *ma324dfe3[] = { "/CustomTrackingScript.", NULL }; const char *ma3274700[] = { "_text_ads.", NULL }; const char *ma32898e3[] = { "0pixl.com^", NULL }; @@ -34643,6 +34691,7 @@ const char *mb120ff57[] = { "track.zomato.com^", NULL }; const char *mb121ae52[] = { "tradelab.fr^", NULL }; const char *mb1233dba[] = { "d34rdvn2ky3gnm.cloudfront.net^", NULL }; const char *mb123f301[] = { "/adx2.", NULL }; +const char *mb123f686[] = { "dlwmksxohvw.com^", NULL }; const char *mb124b01a[] = { "new-new-years.com^", NULL }; const char *mb1253053[] = { "/ajaxInit.gif?", NULL }; const char *mb126b103[] = { "hvvhxzdps.com^", NULL }; @@ -35041,6 +35090,7 @@ const char *mb3089b6b[] = { "liquidad.narrowcastmedia.com^", NULL }; const char *mb308e218[] = { "mol.im/i/pix/ebay/", NULL }; const char *mb309e38f[] = { "nrgqdsjqu.com^", NULL }; const char *mb30ab43e[] = { "zipcode.org/site_images/flash/zip_v.swf", NULL }; +const char *mb30b3eb2[] = { "xeflnvycs.com^", NULL }; const char *mb30b6e4 [] = { "hackingchinese.com/media/skritter5.jpg", NULL }; const char *mb30d7442[] = { "/ads.aspx", NULL }; const char *mb30fbcd4[] = { "cpcadnet.com^", NULL }; @@ -35261,6 +35311,7 @@ const char *mb40f6371[] = { "viorotica.com^", "^banners^", NULL }; const char *mb410a49a[] = { "cloudflare.com/", "/blockadblock", NULL }; const char *mb41116ad[] = { "/adsx/", NULL }; const char *mb41334b0[] = { "atatus.com^", NULL }; +const char *mb4148f49[] = { "qgawivqfotfyrw.com^", NULL }; const char *mb4168392[] = { "/assets/ad/", NULL }; const char *mb4175d44[] = { "aaugh.com/images/dreamhostad.gif", NULL }; const char *mb418a27a[] = { "4t7su0i3.party^", NULL }; @@ -36181,6 +36232,7 @@ const char *mb86396da[] = { "frosmo.com^", NULL }; const char *mb8660450[] = { "iauvabogtws.bid^", NULL }; const char *mb867eef4[] = { "brigitte.de/pv?", NULL }; const char *mb8693e7e[] = { "/LogPage.aspx?", NULL }; +const char *mb8698bdb[] = { "jecbbkrnfn.com^", NULL }; const char *mb86a1ec9[] = { "/adsidebarrect.", NULL }; const char *mb86b7ef3[] = { "ckjdnyvcop.bid^", NULL }; const char *mb86b82b5[] = { "jvhdxosisifv.com^", NULL }; @@ -36807,6 +36859,7 @@ const char *mbb4469f [] = { "/xtrack.", "/?id=", NULL }; const char *mbb449e86[] = { "/flashads.", NULL }; const char *mbb44a83f[] = { "mms.cleveland.com^", NULL }; const char *mbb4541c9[] = { "erovinmo.com^", NULL }; +const char *mbb454465[] = { "yvlhxqxw.com^", NULL }; const char *mbb460abf[] = { "flashgamestats.com^", NULL }; const char *mbb4688fb[] = { "streamplay.club/js/pop", NULL }; const char *mbb48a455[] = { "/ga_tracker.", NULL }; @@ -37045,6 +37098,7 @@ const char *mbc417206[] = { "manhuntshop.com/images/affbanners/", NULL }; const char *mbc46ac8e[] = { "/recordadsall.", NULL }; const char *mbc47d4ed[] = { "/adv/managers/", NULL }; const char *mbc491467[] = { "vgomgphs.bid^", NULL }; +const char *mbc49bffe[] = { "xcyptaqhl.com^", NULL }; const char *mbc49f1a6[] = { "arxerlxllv.bid^", NULL }; const char *mbc4e6a04[] = { "tarife.spiegel.de/widget.php?wt_mc=1333.extern.rotation.promoflaeche", NULL }; const char *mbc4efb1e[] = { "youlouk.com^", NULL }; @@ -39020,6 +39074,7 @@ const char *mc5ac9fe4[] = { "tagcommander.com^", "^tc_", NULL }; const char *mc5ad6ec8[] = { "intellecthosting.net^", NULL }; const char *mc5ae16f8[] = { "adserver.flossiemediagroup.com^", NULL }; const char *mc5ae4f3e[] = { "webhits.de^", NULL }; +const char *mc5aea2a7[] = { "nllbirpx.com^", NULL }; const char *mc5af6df3[] = { "insidebutlercounty.com/images/468-", NULL }; const char *mc5afb79a[] = { "gkwdspzl.bid^", NULL }; const char *mc5b0856e[] = { "-adspot-", NULL }; @@ -39369,6 +39424,7 @@ const char *mc73c2158[] = { "frailoffer.com^", NULL }; const char *mc73d952d[] = { "westjet.com/js/webstats.js", NULL }; const char *mc73e953e[] = { "pokernews.com/track-views.php?", NULL }; const char *mc73f8883[] = { "gabzfm.com/images/banners/", NULL }; +const char *mc73fe583[] = { "mstmrspnqqevsu.com^", NULL }; const char *mc740dc51[] = { "youtube.com/iframe_api", NULL }; const char *mc74111b0[] = { "/adstrm/", NULL }; const char *mc7413de6[] = { "sytes.net^", NULL }; @@ -39869,6 +39925,7 @@ const char *mc98dc41a[] = { "pbzmmqakvzhm.com^", NULL }; const char *mc98f5914[] = { "sexgalaxy.net/wp-content/themes/annina-pro/js/jquery.powertip.min.js?", NULL }; const char *mc98f8b4 [] = { "kfog.com^", "^banners^", NULL }; const char *mc991e59a[] = { "g.techweekeurope.co.uk^", NULL }; +const char *mc9920600[] = { "obpzuctfozram.com^", NULL }; const char *mc99250c9[] = { "tracker.vreveal.com^", NULL }; const char *mc993949c[] = { "vizual.ai^", "^click-stream-event^", NULL }; const char *mc9945127[] = { "lookr.com^", "^advertisement.js", NULL }; @@ -40386,6 +40443,7 @@ const char *mcbed4032[] = { "thepowerhour.com/images/karatbar1.jpg", NULL }; const char *mcbee2a34[] = { "downture.in^", NULL }; const char *mcbf06299[] = { "adlinx.info^", NULL }; const char *mcbf1052f[] = { "divxstage.eu/images/download.png", NULL }; +const char *mcbf1bab6[] = { "zkowrpcb.com^", NULL }; const char *mcbf2b790[] = { "/images/sponsored.", NULL }; const char *mcbf4f6b9[] = { "images-amazon.com^images^", "^analytics^", NULL }; const char *mcbf57a45[] = { "/adbanner.", NULL }; @@ -41145,6 +41203,7 @@ const char *mcf577b44[] = { "thepiratebay.", "/static/js/prototype.js", NULL }; const char *mcf5987bb[] = { "riverisland.com^", "^mindshare.min.js", NULL }; const char *mcf5a1e27[] = { "code.etracker.com/t.js?et=", NULL }; const char *mcf5a4e1a[] = { "qvovzakydfvi.bid^", NULL }; +const char *mcf5bb3ae[] = { "azdhfnoojvpuvr.com^", NULL }; const char *mcf5d58b7[] = { "ovni9.com/suggestion/stats/", NULL }; const char *mcf5e7358[] = { "log.v.iask.com^", NULL }; const char *mcf5f4799[] = { "qxqtejyqkypfz.bid^", NULL }; @@ -41808,6 +41867,7 @@ const char *md26a9840[] = { "ukw.jp^", NULL }; const char *md26b6798[] = { "/adaptvexchangevastvideo.", NULL }; const char *md26c3c8c[] = { "/vtrack.php?", NULL }; const char *md26cc00f[] = { "odlwjmkfmqbuus.bid^", NULL }; +const char *md26e276d[] = { "xihkdzijh.com^", NULL }; const char *md26f8724[] = { "lovefilm.com/lovefilm/images/dot.gif", NULL }; const char *md26ff773[] = { "belamicash.com^", NULL }; const char *md2700805[] = { "turner.com/v5cache/TCM/images/", "_120x60.", NULL }; @@ -42334,6 +42394,7 @@ const char *md4e1b777[] = { "eltexonline.com/contentrotator/", NULL }; const char *md4e27b5c[] = { "asianpornmovies.com/images/banners/", NULL }; const char *md4e3401 [] = { "utm.arc.nasa.gov/common/js/common.js", NULL }; const char *md4e43397[] = { "/adsall.", NULL }; +const char *md4e4f392[] = { "ajax.googleapis.com/ajax/", NULL }; const char *md4e6840b[] = { "contactatonce.com/VisitorContext.aspx?", NULL }; const char *md4e696b7[] = { "bczvulovuap.com^", NULL }; const char *md4e99b5b[] = { "/somaadscaleskyscraperscript.", NULL }; @@ -43693,6 +43754,7 @@ const char *mdb2c8527[] = { "hffqgxgjiqdlx.bid^", NULL }; const char *mdb2e752 [] = { "oclus.com^", NULL }; const char *mdb2edf63[] = { "/adreclaim-", NULL }; const char *mdb31aa6b[] = { "ypbfrhlgquaj.com^", NULL }; +const char *mdb3298a [] = { "mxzxeersjv.com^", NULL }; const char *mdb349c23[] = { "p.dsero.net^", NULL }; const char *mdb358a3b[] = { "track.promptfile.com^", NULL }; const char *mdb386b13[] = { "frivol-ads.com^", NULL }; @@ -43735,6 +43797,7 @@ const char *mdb670acb[] = { "thibzxxtotyqg.bid^", NULL }; const char *mdb6712ba[] = { "exucfbmppagqta.bid^", NULL }; const char *mdb678d3a[] = { "thvrvojkkjkkpe.bid^", NULL }; const char *mdb685721[] = { "/b/ss/ueglobaldev/", NULL }; +const char *mdb68e8eb[] = { "player.enetres.net/js/videojs-plugins/videojs-ads-contrib/videojs.ads.js", NULL }; const char *mdb690826[] = { "yqtzhigbiame.com^", NULL }; const char *mdb6e04c1[] = { "/ban_ad.", NULL }; const char *mdb6e1314[] = { "/advertverticallong.", NULL }; @@ -46505,6 +46568,7 @@ const char *me8319082[] = { "omkt.co^", NULL }; const char *me831dc5 [] = { "/120_600/", NULL }; const char *me834999 [] = { "streamguys.com^", "^amazon.png", NULL }; const char *me8380af3[] = { "eeqabqioietkquydwxfgvtvpxpzkuilfcpzkplhcckoghwgacb.com^", NULL }; +const char *me8380be9[] = { "cll.press/sw.js", NULL }; const char *me8398259[] = { "ganool.com/wp-content/uploads/", "/Javtoys300250..gif", NULL }; const char *me839b67d[] = { "aqjdigkqvmakz.com^", NULL }; const char *me83d698d[] = { "nerdwallet.com/lib/dist/analytics.min.js", NULL }; @@ -47565,6 +47629,7 @@ const char *med3c04c9[] = { "bttrack.com^", NULL }; const char *med3c7637[] = { "/btmads.", NULL }; const char *med3cfb84[] = { "dm.linternaute.com^", NULL }; const char *med3dad59[] = { "fleshlight.com/images/peel/", NULL }; +const char *med3f295 [] = { "jkywbooyc.com^", NULL }; const char *med3f9f98[] = { "rediff.com/uim/ads/", NULL }; const char *med41e892[] = { "_120x500.", NULL }; const char *med429e34[] = { "imgtaxi.com", "/advertisement.js", NULL }; @@ -47854,6 +47919,7 @@ const char *mee77543f[] = { "ad2load.net^", NULL }; const char *mee78fa73[] = { "ogxatekkyzr.com^", NULL }; const char *mee7ab62e[] = { "gamesims.ru^", NULL }; const char *mee7ee443[] = { "rryodgeerrvn.com^", NULL }; +const char *mee7f547 [] = { "baletingo.com^", NULL }; const char *mee7fec7e[] = { "aqkujuggztyn.bid^", NULL }; const char *mee82634b[] = { "/osGoogleAnalytics.", NULL }; const char *mee84d5cb[] = { "pushly.com/pushly-event-tracker", NULL }; @@ -47927,6 +47993,7 @@ const char *meedfa044[] = { "swimg.net^", "^banners^", NULL }; const char *meee02d73[] = { "predictivadnetwork.com^", NULL }; const char *meee37eab[] = { "metrolyrics.com/js/min/tonefuse.js", NULL }; const char *meee41913[] = { "survey.io/log?", NULL }; +const char *meee55096[] = { "qzbnokxxvvpwf.com^", NULL }; const char *meee5bfaa[] = { "fwbntw.com^", NULL }; const char *meee6c31f[] = { "phncdn.com/www-static/js/streamate-my-photos.js", NULL }; const char *meee9e072[] = { "vriirdcvrvanh.com^", NULL }; @@ -48745,6 +48812,7 @@ const char *mf2dfa246[] = { "friendlyduck.com^", NULL }; const char *mf2e07579[] = { "trombocrack.com^", NULL }; const char *mf2e44fc9[] = { "/jsecoin.", "/?", NULL }; const char *mf2e476eb[] = { "durocount.com^", NULL }; +const char *mf2e4a04a[] = { "rhypgggd.com^", NULL }; const char *mf2e59993[] = { "pxlcadvpqd.com^", NULL }; const char *mf2e627eb[] = { "/sailthru.js", NULL }; const char *mf2e7f506[] = { "adsenseguard.com^", NULL }; @@ -49266,6 +49334,7 @@ const char *mf5295818[] = { "kisvtclf.bid^", NULL }; const char *mf529f808[] = { "bwyckpmsolzk.com^", NULL }; const char *mf52bc147[] = { "zziblxasbl.bid^", NULL }; const char *mf52c88c [] = { "top-site-list.com^", NULL }; +const char *mf52ebb0a[] = { "ptxqjyqhscs.com^", NULL }; const char *mf5307cc3[] = { "prfdesk.pro^", NULL }; const char *mf531251b[] = { "/IPbeacon.", NULL }; const char *mf531ced5[] = { "/eCustomerSurvey.", NULL }; @@ -51401,6 +51470,7 @@ const char *mff098925[] = { "180hits.de^", NULL }; const char *mff09f8a6[] = { "adgoi.mobi^", NULL }; const char *mff0a32cc[] = { "mlg-ad-ops.s3.amazonaws.com^", NULL }; const char *mff0aeab8[] = { "thegatewaypundit.com/wp-content/uploads/submit_tip.png", NULL }; +const char *mff0b284d[] = { "da3uf5ucdz00u.cloudfront.net^", NULL }; const char *mff0f954a[] = { "mbl.is/mm/augl/", NULL }; const char *mff10c3ce[] = { "hurterkranach.net^", NULL }; const char *mff119472[] = { "/ad_supertile/", NULL }; @@ -51484,6 +51554,7 @@ const char *mff7bb69f[] = { "plunderguide.com/rectangle2.html", NULL }; const char *mff7bfa32[] = { "bt.com^", "^touchclarity^homepage^omtr_tc.js", NULL }; const char *mff7d8f6f[] = { "pop-rev.com^", NULL }; const char *mff7ed327[] = { "/OnlineAdServing/", NULL }; +const char *mff7ef157[] = { "lxymfyptdrast.com^", NULL }; const char *mff7fc180[] = { "/redx/c.gif?", NULL }; const char *mff81322e[] = { "jaludo.com/pm.php?", NULL }; const char *mff818b21[] = { "gocdn.site^", NULL }; @@ -51626,7 +51697,6 @@ const char *d138ec66b[] = { "100percentfedup.com", "activistpost.com", "addictin const char *d13994618[] = { "urlgalleries.net", "xxxstreams.eu", NULL }; const char *d13dfc5e4[] = { "dafiti.cl", "dafiti.com.ar", "dafiti.com.br", "dafiti.com.co", NULL }; const char *d13f79a7a[] = { "yourtailorednews.com", NULL }; -const char *d143659c6[] = { "mahjong.com", NULL }; const char *d143d3e80[] = { "verliga.net", NULL }; const char *d143df0d8[] = { "batmanstream.com", "collectivelyconscious.net", "live.robinwidget.com", NULL }; const char *d144b8e9 [] = { "hanime.tv", NULL }; @@ -51892,6 +51962,7 @@ const char *d39f2bf63[] = { "corriereadriatico.it", "ilgazzettino.it", "ilmattin const char *d3a12c62a[] = { "streamapi.xyz", NULL }; const char *d3a140828[] = { "afisha.ru", NULL }; const char *d3a592b5f[] = { "estream.to", NULL }; +const char *d3a5fe9b9[] = { "upbom.net", NULL }; const char *d3a641dba[] = { "askandyaboutclothes.com", NULL }; const char *d3a829d1 [] = { "uploadrocket.net", NULL }; const char *d3a906b33[] = { "estream.nu", "estream.to", "estream.xyz", NULL }; @@ -51991,7 +52062,6 @@ const char *d4c1ca440[] = { "yonhapnews.co.kr", NULL }; const char *d4c2ab000[] = { "pga.com", NULL }; const char *d4c3a724c[] = { "publicleech.xyz", NULL }; const char *d4cbba7bb[] = { "winfuture.de", NULL }; -const char *d4cd4828d[] = { "netcombo.com.br", "saraiva.com.br", "tugatech.com.pt", NULL }; const char *d4cdde2f2[] = { "9anime.is", NULL }; const char *d4d13c4b9[] = { "empireonline.com", NULL }; const char *d4d1ce910[] = { "casinobonus24.se", "top5casinosites.co.uk", NULL }; @@ -52139,6 +52209,7 @@ const char *d63b1a8b3[] = { "www.pornhub.com", NULL }; const char *d63b4d622[] = { "danawa.com", NULL }; const char *d63e7235b[] = { "shopping.ninemsn.com.au", "shopping.yahoo.com.au", NULL }; const char *d642259cb[] = { "mousebreaker.com", NULL }; +const char *d6487a2c2[] = { "gty.pw", NULL }; const char *d649b3fb3[] = { "accounts.google.com", NULL }; const char *d64bd54e1[] = { "4players.de", "brigitte.de", "buffed.de", "erdbeerlounge.de", "gamesaktuell.de", "gamezone.de", "gamona.de", "giga.de", "gmx.net", "golem.de", "kicker.de", "kino.de", "myspass.de", "pcgames.de", "pcgameshardware.de", "spiegel.de", "spiegel.tv", "spielaffe.de", "spieletipps.de", "t-online.de", "thrashermagazine.com", "web.de", "welt.de", "videogameszone.de", NULL }; const char *d651febf6[] = { "intoday.in", NULL }; @@ -52288,7 +52359,6 @@ const char *d7c3b2882[] = { "turbogenerator.info", NULL }; const char *d7c918422[] = { "enter.ru", NULL }; const char *d7c981a53[] = { "discordbots.org", NULL }; const char *d7cc5c95e[] = { "discovery.com", NULL }; -const char *d7ccd9a9f[] = { "eurogamer.net", NULL }; const char *d7cd4742c[] = { "hp.com", NULL }; const char *d7cf36494[] = { "immowelt.de", NULL }; const char *d7d0d2db6[] = { "gsmarena.com", "nydailynews.com", NULL }; @@ -52461,6 +52531,7 @@ const char *d963688ac[] = { "9gag.com", NULL }; const char *d9641a59b[] = { "sportspf.com", NULL }; const char *d966a63d8[] = { "sudinfo.be", NULL }; const char *d9677aa53[] = { "vidup.me", NULL }; +const char *d969dad2 [] = { "xtraordinaryfansub.com", NULL }; const char *d96b90606[] = { "gogoanime.in", NULL }; const char *d96c460fe[] = { "video.repubblica.it", NULL }; const char *d96d2b259[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allenwestrepublic.com", "askmefast.com", "breathecast.com", "bulletsfirst.net", "clashdaily.com", "classicalite.com", "comicallyincorrect.com", "conservativebyte.com", "conservativevideos.com", "coviral.com", "crossmap.com", "dailyfeed.co.uk", "dailyheadlines.net", "dailysurge.com", "dccrimestories.com", "digitaljournal.com", "eaglerising.com", "enstarz.com", "girlsjustwannahaveguns.com", "glitch.news", "gosocial.co", "hngn.com", "infowars.com", "instigatornews.com", "joeforamerica.com", "kdramastars.com", "kpopstarz.com", "latinpost.com", "libertyunyielding.com", "minutemennews.com", "musictimes.com", "naturalblaze.com", "naturalnews.com", "natureworldnews.com", "newser.com", "oddee.com", "parentherald.com", "patriotoutdoornews.com", "rantlifestyle.com", "realfarmacy.com", "redmaryland.com", "shark-tank.com", "spectator.org", "stevedeace.com", "supercheats.com", "techtimes.com", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "thelibertarianrepublic.com", "themattwalshblog.com", "thepoke.co.uk", "tinypic.com", "traileraddict.com", "universityherald.com", "valuewalk.comvcpost.com", "victoriajackson.com", "viralnova.com", "viralthread.com", NULL }; @@ -52548,6 +52619,7 @@ const char *da3a85e2a[] = { "insure.com", NULL }; const char *da3aaff44[] = { "thisdaylive.com", NULL }; const char *da3c34b72[] = { "chromeexperiments.com", NULL }; const char *da3ed2292[] = { "colbertnation.com", "thedailyshow.com", NULL }; +const char *da3eeae13[] = { "videos.13tv.es", NULL }; const char *da48f9154[] = { "mapy.hiking.sk", NULL }; const char *da4d19d01[] = { "lexsteele.com", NULL }; const char *da4dad4f2[] = { "ilix.in", "priva.us", NULL }; @@ -52564,6 +52636,7 @@ const char *da5d6ec64[] = { "propelmedia.com", NULL }; const char *da5ddcf77[] = { "hqq.tv", NULL }; const char *da65d23c2[] = { "deportesmax.com", NULL }; const char *da68b62c0[] = { "greasyfork.org", NULL }; +const char *da697c2a7[] = { "fulltelevisionhd.li", NULL }; const char *da6ecadec[] = { "mavs.wpengine.netdna-cdn.com", NULL }; const char *da70edbdd[] = { "dsero.com", "korean-candy.com", "misheel.net", "politicususa.com", "techydoor.com", "trutower.com", NULL }; const char *da724cbf4[] = { "food.com", NULL }; @@ -52764,6 +52837,7 @@ const char *dc2e4f62e[] = { "cbsnews.com", "colbertlateshow.com", NULL }; const char *dc320d8b [] = { "sporza.be", NULL }; const char *dc3d43063[] = { "ojogo.pt", NULL }; const char *dc4276cbc[] = { "social.economico.pt", NULL }; +const char *dc43fdea3[] = { "efukt.com", NULL }; const char *dc493ef8a[] = { "olweb.tv", NULL }; const char *dc4fd7013[] = { "coursehero.com", NULL }; const char *dc5bf19fa[] = { "moviefone.com", NULL }; @@ -52802,6 +52876,7 @@ const char *dca17bc6a[] = { "destructoid.com", NULL }; const char *dca4ceac4[] = { "ejocuri.ro", "gamesheep.com", "girlg.com", "girlsplay.com", "jocurifete.ro", "pop.games", "playpod.com", NULL }; const char *dca97dbb6[] = { "seattletimes.com", NULL }; const char *dcaed1bd0[] = { "pornhub.com", "redtube.com", "redtube.com.br", "tube8.com", "tube8.es", "tube8.fr", "youporn.com", "youporngay.com", NULL }; +const char *dcb5aaf16[] = { "viamichelin.at", "viamichelin.be", "viamichelin.ch", "viamichelin.co.uk", "viamichelin.com", "viamichelin.de", "viamichelin.es", "viamichelin.fr", "viamichelin.is", "viamichelin.it", "viamichelin.nl", "viamichelin.pl", "viamichelin.pt", NULL }; const char *dcbc0c6b8[] = { "iherb.com", NULL }; const char *dcbfa29f1[] = { "aim.com", "autoblog.com", "autos.aol.com", "engadget.com", "mapquest.com", "video.aol.com", "www.aol.com", NULL }; const char *dcc180a37[] = { "nextag.com", NULL }; @@ -52815,7 +52890,6 @@ const char *dcdef0dec[] = { "8muses.com", "imagefap.com", NULL }; const char *dce0222f5[] = { "voldingenglish.com", NULL }; const char *dce0cefe7[] = { "magicvalley.com", "missoulian.com", "wwg.com", NULL }; const char *dce4bb122[] = { "playstation.com", NULL }; -const char *dce4fac35[] = { "skylinewebcams.com", NULL }; const char *dce7cc77 [] = { "mlssoccer.com", NULL }; const char *dceb6dd45[] = { "habibs.com.br", NULL }; const char *dcee93653[] = { "alean.ru", "anoncer.net", "nabortu.ru", "tv.yandex.ru", "tvrain.ru", NULL }; @@ -53070,7 +53144,6 @@ const char *df71442c0[] = { "metro.co.uk", NULL }; const char *df75086 [] = { "techtimes.com", NULL }; const char *df7a2e878[] = { "yahoo.com", NULL }; const char *df7ef9228[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allenwestrepublic.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "breathecast.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativeintel.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "faithit.com", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hispolitica.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "janmorganmedia.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "lidblog.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "opednews.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "realfarmacy.com", "realmomsrealreviews.com", "realtytoday.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; -const char *df81fee54[] = { "vercanalestv1.com", "verplusonline.com", NULL }; const char *df8349bc [] = { "teletoon.com", NULL }; const char *df834abc1[] = { "supercheats.com", NULL }; const char *df8811b4f[] = { "supersonicads.com", NULL }; @@ -53091,6 +53164,7 @@ const char *dfc793ab6[] = { "eatthis.com", NULL }; const char *dfca0494a[] = { "ft.com", NULL }; const char *dfca1a065[] = { "linkshrink.net", NULL }; const char *dfcbafae0[] = { "ehubsoft.net", "herokuapp.com", NULL }; +const char *dfcbc7d56[] = { "tanked.io", NULL }; const char *dfccbf04c[] = { "nordstrom.com", NULL }; const char *dfccc30c6[] = { "champions.co", "pantagraph.com", "parkers.co.uk", NULL }; const char *dfd38dac5[] = { "radiojavan.com", NULL }; @@ -59006,6 +59080,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m3f6265ce, 0, NULL, NULL }, {m3be814a1, 0, NULL, NULL }, {mf9000d3c, 0, NULL, NULL }, + {m433fde56, 0, NULL, NULL }, {m224e111c, 0, NULL, NULL }, {mdcea0f93, 0, NULL, NULL }, {mbae16911, 0, NULL, NULL }, @@ -62451,6 +62526,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m3032786, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md2a2a35d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m40d4aee, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mf161c40b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m88118c30, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m8c321386, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m3976fd09, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -65816,7 +65892,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m4010016e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma4f7c1a3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m82b5a237, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {mb58092a8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb0aba5c0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mad91c7ae, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m568e2503, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -67575,99 +67650,141 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mc7648b10, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4c0c7163, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mee4099cd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m3daa345, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4ec385be, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2f4e394e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m9760907b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m113e7069, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md767719e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mcf5bb3ae, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {meeac3b7a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma1e11adb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb6114fb7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2bd0cefe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mdbbd7cfc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m534cc702, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m12cea13d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4ec8e906, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m486d5cfc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m13dab28c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m5824f4db, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mc696038, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma3e271b9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m51267f0c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m43b47b6e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m2d5a7c32, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m76bf6f69, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m1deaaa54, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mb123f686, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {maa3a0936, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma87db459, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7a00e05, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma3a49108, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mad2b1ab9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m340f1275, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m2c9fc2de, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5d61a9e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m3348c2cf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2cf7a381, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m1b1bfd9c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2f06adc1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m911e6915, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma5eebb73, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m3befffee, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mfed47da9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m958b5f9b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7a92fef3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m9363361a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf02f5988, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m3c118123, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m554d5a85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {meab001a7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb6469aa4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m89eccc07, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m5f684563, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m66407a2d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m5319f28d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma257675c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m5fbebc31, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2e5cb753, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6c52f6ff, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mffaa0c9a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb54f64fd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m3a4c708b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mb8698bdb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2330f708, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {med3f295, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m41f9c7b2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m342b3bf7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m12229eaa, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6c57db0a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md9537d22, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m295cbdd2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m6e8cf432, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {ma323f44e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mdb02956b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m15eb112d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7e5872b8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m39adbe3a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m2ec4a500, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m8a570d04, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6ea5c1d3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m6d01dc41, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {maeae73cb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mbd937ac5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mff7ef157, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m625defa6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m809f8099, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mc20db6f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m474943b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m99dabef2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mc73fe583, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mdb3298a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m25577bb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m93173622, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m37daf4a0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6b8af9e8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mc5aea2a7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb72d7426, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4ceaa3cb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mdfb15bcf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma8d296ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5b13c453, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mc9920600, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m17de82db, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mc42192e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md1d2b83d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6165c4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m97d1e12a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5411611b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf6b17ad2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mf52ebb0a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m87256008, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m905a6521, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m992138af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mb4148f49, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {me095ca3f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m60289f3c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m326f841b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {meee55096, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7c92bf95, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mf2e4a04a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m82726bad, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mdf9b70ad, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m59fc515b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m667444d0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m37a5e790, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2e460f2b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m15e0e7b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m16df2925, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m53c47064, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7a05270a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma0d1ee4b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m55d68710, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m96855ada, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m89fca81e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5575232a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m3f35b450, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5c244661, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4fd2479b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {me4906fe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -67687,15 +67804,24 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m6524a42a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mbab57209, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m1ba8db02, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m4c226c65, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7af7742b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m49063ad3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf6a16644, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m8df66676, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m46825f93, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mad0081fd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4dcadd4c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m80185941, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2d114ffd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7ffb3329, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m26659aa1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mbc49bffe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {ma2fcf88, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mb30b3eb2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {md26e276d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m1af7578e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m3a564e1f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m6f3525b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf8bd8e9c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m680bdd19, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -67703,10 +67829,15 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m18202baf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m57427d32, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2aa48edc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mbb454465, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb2784381, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2093d209, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m5570f72b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m4fd2489d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mcbf1bab6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m8ad15061, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m66d80875, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m219646e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m65eecbf2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mcb391da2, ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {ma1369350, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -76215,6 +76346,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m6b47036f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m59596ca6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md025525d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m7ad06033, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mab77a910, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m4a73672, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mc5df4941, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -76239,6 +76371,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m5d6e95b6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m76fb51ca, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mde5ab906, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m7b3708af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m28c25f09, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2931ca74, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m716d3e22, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -81308,6 +81441,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mb871a13c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mc86feb4d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m7ba73655, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, + {ma00e5215, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mff00bdb3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {md01c17be, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {md338c9ed, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -85355,6 +85489,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m432f158f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mcadd5f3d, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mfae71728, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, + {md4e4f392, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc43fdea3, NULL }, + {ma125992e, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dc43fdea3, NULL }, {mafe77b3c, 0, NULL, NULL }, {m88d3e975, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {md5f3e307, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -88252,7 +88388,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {md8f6d618, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mf3e6c131, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {me667eba5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, - {mc2a9bd63, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d7ccd9a9f, NULL }, {m698457f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m2abeba9d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mda9b045e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d4fcf8dbc, NULL }, @@ -88411,6 +88546,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {me16f9cc9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m1e76cd0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m1857e287, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m37e2f57c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m4ca5ff04, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m276c9bad, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {me223f3ca, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, @@ -88597,6 +88733,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {me9eb2899, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {md3eeb5b5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mbfcf62fc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d47565321, NULL }, + {m91e9170a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m6be2051f, ADBLOCK_FLAG_MATCH_END, NULL, NULL }, {m9408a1f3, 0, NULL, NULL }, {mca0508f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, @@ -88767,9 +88904,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m7d681989, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d809417, NULL }, {mc0796670, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {md8831ebb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, - {m7ad06033, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {mf161c40b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {m7b3708af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb83635a7, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m64f490ab, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m69f0938a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -88802,13 +88936,13 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m8d8df3bd, ADBLOCK_FLAG_MATCH_DOMAIN, d7a98d170, NULL }, {mb7063375, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2c25242, NULL }, {m719a8fd5, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d2c25242, NULL }, - {mb7063375, ADBLOCK_FLAG_MATCH_DOMAIN, dce4fac35, NULL }, {m78af05ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7e218078, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m9ecce480, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, {mcaa29ef4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc28d1973, NULL }, {m6f3c17cd, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m7a159732, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, + {m4b920e20, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d969dad2, NULL }, {mb72d750c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {me0f7cdae, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m94462164, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, @@ -88840,9 +88974,9 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m488ab655, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m19ffbae, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m3be79090, ADBLOCK_FLAG_MATCH_DOMAIN, d59158744, NULL }, + {m171bce27, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dcb5aaf16, NULL }, {m4dce27c, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {maa7a907f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dfa868bc, NULL }, - {m624e1093, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, df81fee54, NULL }, {meff685f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mec367ab6, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m824a8ca4, ADBLOCK_FLAG_MATCH_DOMAIN, deb253f4a, NULL }, @@ -88861,7 +88995,17 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m59028e95, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d699e2efa, NULL }, {mfc23311b, ADBLOCK_FLAG_MATCH_DOMAIN, d48f82118, NULL }, {mab3cb866, ADBLOCK_FLAG_MATCH_DOMAIN, d1dc4a272, NULL }, - {m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d143659c6, NULL }, + {mc2a9bd63, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d6487a2c2, NULL }, + {me8380be9, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, + {m292f7c23, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, + {mb7063375, ADBLOCK_FLAG_MATCH_DOMAIN, dfcbc7d56, NULL }, + {m48ec6761, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, + {m624e1093, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, da697c2a7, NULL }, + {mff0b284d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d3a5fe9b9, NULL }, + {mee7f547, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m8d4a8664, 0, NULL, NULL }, + {m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, da3eeae13, NULL }, + {mdb68e8eb, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, da3eeae13, NULL }, {m959374f7, 0, NULL, NULL }, {m69eee246, 0, NULL, NULL }, {m480a1f0f, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, @@ -94984,6 +95128,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m6e55b753, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m3c001965, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7e1b1738, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mb58092a8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m279b981f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m47606595, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mb1b24b1b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -103357,7 +103502,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m15bfc6d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m686a5668, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, db5ed7249, NULL }, {md54bc14b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, - {me87bafd3, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d50e200f2, NULL }, {m6d41d63, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, d50e200f2, NULL }, {mbbde9e78, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d95548cd7, NULL }, {maa91352b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2eb53554, NULL }, @@ -103366,7 +103510,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {me73084e7, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc4276cbc, NULL }, {md6449dda, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc4276cbc, NULL }, {m4499236b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc6fea3b6, NULL }, - {ma41dd4d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d4cd4828d, NULL }, {m2526bd49, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dceb6dd45, NULL }, {m8df088d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc3d43063, NULL }, {m1adec965, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d9596b2f1, NULL }, @@ -103416,6 +103559,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m76b9bf6c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, d2e34ec98, NULL }, {md42cc193, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d638d049c, NULL }, {m29ac39c9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d638d049c, NULL }, + {ma41dd4d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2e34ec98, NULL }, + {me87bafd3, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2e34ec98, NULL }, {mbc1b0a1d, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m1145f4b4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_HAS_WILDCARD, d8329c392, NULL }, {mc3c037ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, @@ -105500,7 +105645,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {md2be5426, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m1e143dc8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mb2276d02, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, - {m6be34010, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m47373eb0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mef71e51c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m34e2fb85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, @@ -105538,6 +105682,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {md5f36a4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {me3446792, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m2fe3a59d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {m564b4d27, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m437a5ed7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m5cc658f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m2487dbb8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, diff --git a/patches/BRM042_Cure-AMP-and-tracking-from-search-results.patch b/patches/BRM042_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch similarity index 66% rename from patches/BRM042_Cure-AMP-and-tracking-from-search-results.patch rename to patches/BRM042_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch index 8c50c413..1acd0667 100644 --- a/patches/BRM042_Cure-AMP-and-tracking-from-search-results.patch +++ b/patches/BRM042_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch @@ -1,29 +1,43 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 28 Oct 2017 10:09:41 +0200 -Subject: Cure AMP and tracking from search results +Subject: Inject scripts for AMP, tracking, ads and video functionality +Remove AMP, tracking and ads from search results +Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to +allow playing videos in background (original Javascript code by timdream) --- - third_party/blink/renderer/core/dom/BUILD.gn | 1 + - third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++- - .../renderer/core/dom/extensions/anti_amp_cure.h | 6 ++++++ - 3 files changed, 26 insertions(+), 1 deletion(-) + third_party/blink/renderer/core/dom/BUILD.gn | 2 ++ + third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++- + .../renderer/core/dom/extensions/anti_amp_cure.h | 6 +++++ + .../renderer/core/dom/extensions/video_bg_play.h | 6 +++++ + 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h + create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn --- a/third_party/blink/renderer/core/dom/BUILD.gn +++ b/third_party/blink/renderer/core/dom/BUILD.gn -@@ -147,6 +147,7 @@ blink_core_sources("dom") { +@@ -147,6 +147,8 @@ blink_core_sources("dom") { "events/tree_scope_event_context.h", "events/window_event_context.cc", "events/window_event_context.h", + "extensions/dont-track-me.h", ++ "extensions/video-bg-play.h", "exception_code.h", "first_letter_pseudo_element.cc", "first_letter_pseudo_element.h", diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -277,6 +277,8 @@ +@@ -222,6 +222,7 @@ + #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h" + #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h" + #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h" ++#include "extensions/video_bg_play.h" + #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h" + #include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h" + #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" +@@ -277,6 +278,8 @@ #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h" #include "third_party/blink/renderer/platform/wtf/time.h" @@ -32,7 +46,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink #ifndef NDEBUG using WeakDocumentSet = blink::PersistentHeapHashSet>; -@@ -5882,8 +5884,24 @@ void Document::FinishedParsing() { +@@ -5882,8 +5885,31 @@ void Document::FinishedParsing() { fetcher_->ClearResourcesFromPreviousFetcher(); } @@ -43,18 +57,25 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink + } + + // determine whether this is a Google search results page -+ const SecurityOrigin *origin = GetSecurityOrigin(); -+ if (origin) { -+ WTF::String domain = origin->Domain(); -+ size_t pos = domain.Find(".google."); -+ auto* bodyElement = body(); -+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) { ++ const WTF::String& host = url_.Host(); ++ auto* bodyElement = body(); ++ if (bodyElement) { ++ size_t pos = host.Find(".google."); ++ if ((pos != WTF::kNotFound) && (host.length() - pos - 8 < 4)) { + LOG(INFO) << "injecting anti-AMP-cure Javascript payload"; + HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags()); + e->setText(ANTI_AMP_CURE_JS); + bodyElement->AppendChild(e); + } -+ } ++ ++ // check for eligibility of the video bg fix ++ if ((WTF::kNotFound != host.Find("youtube.com")) || (WTF::kNotFound != host.Find("vimeo.com"))) { ++ LOG(INFO) << "injecting video-bg-play Javascript payload"; ++ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags()); ++ e->setText(VIDEO_BG_PLAY_JS); ++ bodyElement->AppendChild(e); ++ } ++ } // has origin and body element FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable(); } @@ -69,6 +90,17 @@ new file mode 100644 +#define ANTI_AMP_CURE_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=)\n // Mobile (/url?q=)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks(document));\n}\n\nfunction hookMoreResults() {\n var extrares = document.getElementById('extrares');\n if (!extrares) {\n console.log(\"could not hook more results\");\n return;\n }\n // mutation observers are great but they don't work\n extrares.addEventListener(\"DOMNodeInserted\", function(e) {\n var node = e.target;\n if (node.id && node.id.startsWith(\"arc-srp\"))\n console.log(\"hyperlinks sanitized on new result node: \", sanitizeAllHyperlinks(node));\n });\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('qslc');\n if (mlogo && mlogo.children[0]) {\n mlogo = mlogo.children[0];\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks(rootNode) {\n var saned = 0, total = 0;\n rootNode.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n sanitizeAll();\n}\nsetMlogoClick();\n\nhookMoreResults();\n" + +#endif // anti_amp_cure_h +diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h +new file mode 100644 +--- /dev/null ++++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h +@@ -0,0 +1,6 @@ ++#ifndef video_bg_play_h ++#define video_bg_play_h ++ ++#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n" ++ ++#endif // video_bg_play_h -- 2.7.4 diff --git a/patches/BRM044_Allow-playing-audio-in-background.patch b/patches/BRM043_Allow-playing-audio-in-background.patch similarity index 100% rename from patches/BRM044_Allow-playing-audio-in-background.patch rename to patches/BRM043_Allow-playing-audio-in-background.patch diff --git a/patches/BRM043_Play-videos-in-background.patch b/patches/BRM043_Play-videos-in-background.patch deleted file mode 100644 index 083890f6..00000000 --- a/patches/BRM043_Play-videos-in-background.patch +++ /dev/null @@ -1,79 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sun, 18 Feb 2018 22:15:25 +0100 -Subject: Play videos in background - -Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com -Original Javascript code by timdream ---- - third_party/blink/renderer/core/dom/BUILD.gn | 1 + - third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++---- - .../blink/renderer/core/dom/extensions/video_bg_play.h | 6 ++++++ - 3 files changed, 20 insertions(+), 4 deletions(-) - create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h - -diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn ---- a/third_party/blink/renderer/core/dom/BUILD.gn -+++ b/third_party/blink/renderer/core/dom/BUILD.gn -@@ -148,6 +148,7 @@ blink_core_sources("dom") { - "events/window_event_context.cc", - "events/window_event_context.h", - "extensions/dont-track-me.h", -+ "extensions/video-bg-play.h", - "exception_code.h", - "first_letter_pseudo_element.cc", - "first_letter_pseudo_element.h", -diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc ---- a/third_party/blink/renderer/core/dom/document.cc -+++ b/third_party/blink/renderer/core/dom/document.cc -@@ -222,6 +222,7 @@ - #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h" - #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h" - #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h" -+#include "extensions/video_bg_play.h" - #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h" - #include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h" - #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" -@@ -5891,17 +5892,25 @@ void Document::FinishedParsing() { - - // determine whether this is a Google search results page - const SecurityOrigin *origin = GetSecurityOrigin(); -- if (origin) { -+ auto* bodyElement = body(); -+ if (origin && bodyElement) { - WTF::String domain = origin->Domain(); - size_t pos = domain.Find(".google."); -- auto* bodyElement = body(); -- if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) { -+ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) { - LOG(INFO) << "injecting anti-AMP-cure Javascript payload"; - HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags()); - e->setText(ANTI_AMP_CURE_JS); - bodyElement->AppendChild(e); - } -- } -+ -+ // check for eligibility of the video bg fix -+ if ((WTF::kNotFound != domain.Find("youtube.com")) || (WTF::kNotFound != domain.Find("vimeo.com"))) { -+ LOG(INFO) << "injecting video-bg-play Javascript payload"; -+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags()); -+ e->setText(VIDEO_BG_PLAY_JS); -+ bodyElement->AppendChild(e); -+ } -+ } // has origin and body element - - FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable(); - } -diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h -new file mode 100644 ---- /dev/null -+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h -@@ -0,0 +1,6 @@ -+#ifndef video_bg_play_h -+#define video_bg_play_h -+ -+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n" -+ -+#endif // video_bg_play_h --- -2.7.4 - diff --git a/patches/BRM045_Open-YouTube-links-in-Bromite.patch b/patches/BRM044_Open-YouTube-links-in-Bromite.patch similarity index 100% rename from patches/BRM045_Open-YouTube-links-in-Bromite.patch rename to patches/BRM044_Open-YouTube-links-in-Bromite.patch diff --git a/patches/BRM046_Add-exit-menu-item.patch b/patches/BRM045_Add-exit-menu-item.patch similarity index 100% rename from patches/BRM046_Add-exit-menu-item.patch rename to patches/BRM045_Add-exit-menu-item.patch diff --git a/patches/BRM047_Remove-help-menu-item.patch b/patches/BRM046_Remove-help-menu-item.patch similarity index 100% rename from patches/BRM047_Remove-help-menu-item.patch rename to patches/BRM046_Remove-help-menu-item.patch diff --git a/patches/BRM048_Add-menu-option-to-toggle-global-Javascript-preference.patch b/patches/BRM047_Add-menu-option-to-toggle-global-Javascript-preference.patch similarity index 100% rename from patches/BRM048_Add-menu-option-to-toggle-global-Javascript-preference.patch rename to patches/BRM047_Add-menu-option-to-toggle-global-Javascript-preference.patch diff --git a/patches/BRM049_Bromite-adblock-engine.patch b/patches/BRM048_Bromite-adblock-engine.patch similarity index 100% rename from patches/BRM049_Bromite-adblock-engine.patch rename to patches/BRM048_Bromite-adblock-engine.patch diff --git a/patches/BRM050_User-Agent-anonymize.patch b/patches/BRM049_User-Agent-anonymize.patch similarity index 100% rename from patches/BRM050_User-Agent-anonymize.patch rename to patches/BRM049_User-Agent-anonymize.patch diff --git a/patches/BRM051_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch b/patches/BRM050_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch similarity index 100% rename from patches/BRM051_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch rename to patches/BRM050_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch diff --git a/patches/BRM052_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch b/patches/BRM051_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch similarity index 100% rename from patches/BRM052_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch rename to patches/BRM051_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch diff --git a/patches/BRM053_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch b/patches/BRM052_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch similarity index 100% rename from patches/BRM053_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch rename to patches/BRM052_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch diff --git a/patches/BRM054_Punt-the-Widevine-version-string.patch b/patches/BRM053_Punt-the-Widevine-version-string.patch similarity index 100% rename from patches/BRM054_Punt-the-Widevine-version-string.patch rename to patches/BRM053_Punt-the-Widevine-version-string.patch diff --git a/patches/BRM055_Disable-metrics-on-all-I-O-threads.patch b/patches/BRM054_Disable-metrics-on-all-I-O-threads.patch similarity index 100% rename from patches/BRM055_Disable-metrics-on-all-I-O-threads.patch rename to patches/BRM054_Disable-metrics-on-all-I-O-threads.patch diff --git a/patches/BRM056_Add-a-flag-for-DNS-over-HTTPS.patch b/patches/BRM055_Add-a-flag-for-DNS-over-HTTPS.patch similarity index 100% rename from patches/BRM056_Add-a-flag-for-DNS-over-HTTPS.patch rename to patches/BRM055_Add-a-flag-for-DNS-over-HTTPS.patch diff --git a/patches/BRM057_Always-respect-async-dns-flag-regardless-of-SDK-version.patch b/patches/BRM056_Always-respect-async-dns-flag-regardless-of-SDK-version.patch similarity index 100% rename from patches/BRM057_Always-respect-async-dns-flag-regardless-of-SDK-version.patch rename to patches/BRM056_Always-respect-async-dns-flag-regardless-of-SDK-version.patch diff --git a/patches/BRM058_Add-flag-to-configure-maximum-connections-per-host.patch b/patches/BRM057_Add-flag-to-configure-maximum-connections-per-host.patch similarity index 100% rename from patches/BRM058_Add-flag-to-configure-maximum-connections-per-host.patch rename to patches/BRM057_Add-flag-to-configure-maximum-connections-per-host.patch diff --git a/patches/BRM059_Add-flag-to-show-hide-NTP-tiles.patch b/patches/BRM058_Add-flag-to-show-hide-NTP-tiles.patch similarity index 100% rename from patches/BRM059_Add-flag-to-show-hide-NTP-tiles.patch rename to patches/BRM058_Add-flag-to-show-hide-NTP-tiles.patch diff --git a/patches/BRM059_Add-custom-tab-intents-privacy-option.patch b/patches/BRM059_Add-custom-tab-intents-privacy-option.patch new file mode 100644 index 00000000..6f9c43ea --- /dev/null +++ b/patches/BRM059_Add-custom-tab-intents-privacy-option.patch @@ -0,0 +1,119 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Wed, 29 Aug 2018 11:03:44 +0200 +Subject: Add custom tab intents privacy option + +--- + chrome/android/java/res/values/values.xml | 3 +++ + chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++ + .../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 9 +++++++-- + .../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++ + chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++ + 5 files changed, 32 insertions(+), 2 deletions(-) + +diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml +--- a/chrome/android/java/res/values/values.xml ++++ b/chrome/android/java/res/values/values.xml +@@ -18,6 +18,9 @@ + 0.5 + 0.5 + ++ Allow custom tab intents from applications ++ When disabled, all custom tab intents will be processed as regular navigation instead ++ + + 5 + +diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml +--- a/chrome/android/java/res/xml/privacy_preferences.xml ++++ b/chrome/android/java/res/xml/privacy_preferences.xml +@@ -52,4 +52,9 @@ + android:title="@string/clear_browsing_data_title" + android:summary="@string/clear_browsing_data_summary" + android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" /> ++ + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma; + import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; + import org.chromium.chrome.browser.notifications.NotificationPlatformBridge; + import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; ++import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences; + import org.chromium.chrome.browser.searchwidget.SearchActivity; + import org.chromium.chrome.browser.tab.Tab; + import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin; +@@ -149,9 +150,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega + recordIntentMetrics(); + + mIsVrIntent = VrIntentUtils.isVrIntent(mIntent); +- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent)) ++ ++ if (ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) { ++ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent)) + || (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent)); +- mIsCustomTabIntent = isCustomTabIntent; ++ } else { ++ mIsCustomTabIntent = false; ++ } + } + + /** +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java +@@ -37,6 +37,7 @@ public class PrivacyPreferences extends PreferenceFragment + "safe_browsing_extended_reporting"; + private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING = + "safe_browsing_scout_reporting"; ++ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; + private static final String PREF_SAFE_BROWSING = "safe_browsing"; + private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; + private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search"; +@@ -100,6 +101,11 @@ public class PrivacyPreferences extends PreferenceFragment + ? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING; + preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove)); + ++ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref = ++ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS); ++ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this); ++ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate); ++ + ChromeBaseCheckBoxPreference safeBrowsingPref = + (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING); + safeBrowsingPref.setOnPreferenceChangeListener(this); +@@ -123,6 +129,10 @@ public class PrivacyPreferences extends PreferenceFragment + || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { + PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled( + (boolean) newValue); ++ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) { ++ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); ++ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue); ++ sharedPreferencesEditor.apply(); + } else if (PREF_NETWORK_PREDICTIONS.equals(key)) { + PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue); + recordNetworkPredictionEnablingUMA((boolean) newValue); +diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd +--- a/chrome/android/java/strings/android_chrome_strings.grd ++++ b/chrome/android/java/strings/android_chrome_strings.grd +@@ -3423,6 +3423,13 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr + Browse + + ++ ++ Allow custom tab intents ++ ++ ++ Allow applications to open custom tab intents, similar to webview. ++ ++ + + + Updating Chrome... +-- +2.7.4 + diff --git a/patches/BRM060_Add-flag-to-disable-custom-tab-intents.patch b/patches/BRM060_Add-flag-to-disable-custom-tab-intents.patch deleted file mode 100644 index 79d46f10..00000000 --- a/patches/BRM060_Add-flag-to-disable-custom-tab-intents.patch +++ /dev/null @@ -1,117 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sun, 8 Jul 2018 23:06:52 +0200 -Subject: Add flag to disable custom tab intents - -Custom tab intents allow apps to open URLs with a minimal browser UI; -this flag allows disabling this functionality altogether and all custom tab -intents will instead open as regular URLs. ---- - .../java/src/org/chromium/chrome/browser/ChromeSwitches.java | 3 +++ - .../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 8 ++++++-- - chrome/browser/about_flags.cc | 4 ++++ - chrome/browser/flag_descriptions.cc | 4 ++++ - chrome/browser/flag_descriptions.h | 3 +++ - chrome/common/chrome_switches.cc | 3 +++ - chrome/common/chrome_switches.h | 1 + - 7 files changed, 24 insertions(+), 2 deletions(-) - -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java -@@ -177,6 +177,9 @@ public abstract class ChromeSwitches { - /** Open all custom tabs in a new task. Used only for experimental purposes. */ - public static final String OPEN_CUSTOM_TABS_IN_NEW_TASK = "open-custom-tabs-in-new-task"; - -+ /** Disallow custom tab intents. */ -+ public static final String DISALLOW_CUSTOM_TAB_INTENT = "disallow-custom-tab-intent"; -+ - /** - * Don't crash on undispatched VIEW intents sent to .Main. - * See ChromeTabbedActivity.maybeDispatchExplicitMainViewIntent() for more info. -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -149,9 +149,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega - recordIntentMetrics(); - - mIsVrIntent = VrIntentUtils.isVrIntent(mIntent); -- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent)) -+ -+ if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISALLOW_CUSTOM_TAB_INTENT)) { -+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent)) - || (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent)); -- mIsCustomTabIntent = isCustomTabIntent; -+ } else { -+ mIsCustomTabIntent = false; -+ } - } - - /** -diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc ---- a/chrome/browser/about_flags.cc -+++ b/chrome/browser/about_flags.cc -@@ -1297,6 +1297,10 @@ const FeatureEntry kFeatureEntries[] = { - flag_descriptions::kMediaScreenCaptureName, - flag_descriptions::kMediaScreenCaptureDescription, kOsAndroid, - FEATURE_VALUE_TYPE(chrome::android::kUserMediaScreenCapturing)}, -+ {"disallow-custom-tab-intent", -+ flag_descriptions::kDisallowCustomTabIntentName, -+ flag_descriptions::kDisallowCustomTabIntentDescription, kOsAndroid, -+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisallowCustomTabIntent)}, - #endif // OS_ANDROID - // Native client is compiled out if ENABLE_NACL is not set. - #if BUILDFLAG(ENABLE_NACL) -diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc ---- a/chrome/browser/flag_descriptions.cc -+++ b/chrome/browser/flag_descriptions.cc -@@ -2043,6 +2043,10 @@ const char kContextualSearchSecondTapDescription[] = - "Enables triggering on a second tap gesture even when Ranker would " - "normally suppress that tap."; - -+const char kDisallowCustomTabIntentName[] = "Disallow custom tab intent"; -+const char kDisallowCustomTabIntentDescription[] = -+ "Do not allow apps to open custom tab intents and use a regular browsing interaction instead."; -+ - const char kDontPrefetchLibrariesName[] = "Don't Prefetch Libraries"; - const char kDontPrefetchLibrariesDescription[] = - "Don't prefetch libraries after loading."; -diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h ---- a/chrome/browser/flag_descriptions.h -+++ b/chrome/browser/flag_descriptions.h -@@ -1244,6 +1244,9 @@ extern const char kContextualSearchRankerQueryDescription[]; - extern const char kContextualSearchSecondTapName[]; - extern const char kContextualSearchSecondTapDescription[]; - -+extern const char kDisallowCustomTabIntentName[]; -+extern const char kDisallowCustomTabIntentDescription[]; -+ - extern const char kDontPrefetchLibrariesName[]; - extern const char kDontPrefetchLibrariesDescription[]; - -diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc ---- a/chrome/common/chrome_switches.cc -+++ b/chrome/common/chrome_switches.cc -@@ -218,6 +218,9 @@ const char kDisableExtensions[] = "disable-extensions"; - // Disable extensions except those specified in a comma-separated list. - const char kDisableExtensionsExcept[] = "disable-extensions-except"; - -+// Disallow apps to use custom tab intents and use a regular URL open intent instead. -+const char kDisallowCustomTabIntent[] = "disallow-custom-tab-intent"; -+ - // Disable checking for user opt-in for extensions that want to inject script - // into file URLs (ie, always allow it). This is used during automated testing. - const char kDisableExtensionsFileAccessCheck[] = -diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h ---- a/chrome/common/chrome_switches.h -+++ b/chrome/common/chrome_switches.h -@@ -72,6 +72,7 @@ extern const char kDisableCastStreamingHWEncoding[]; - extern const char kDisableClientSidePhishingDetection[]; - extern const char kDisableComponentExtensionsWithBackgroundPages[]; - extern const char kDisableComponentUpdate[]; -+extern const char kDisallowCustomTabIntent[]; - extern const char kDisableDefaultApps[]; - extern const char kDisableDeviceDiscoveryNotifications[]; - extern const char kDisableDomainReliability[]; --- -2.7.4 - diff --git a/patches/BRM060_Add-privacy-option-to-keep-cookies-until-session-exit.patch b/patches/BRM060_Add-privacy-option-to-keep-cookies-until-session-exit.patch new file mode 100644 index 00000000..ab3db207 --- /dev/null +++ b/patches/BRM060_Add-privacy-option-to-keep-cookies-until-session-exit.patch @@ -0,0 +1,201 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Tue, 28 Aug 2018 23:27:23 +0200 +Subject: Add privacy option to keep cookies until session exit + +--- + chrome/android/java/res/values/values.xml | 3 +++ + .../android/java/res/xml/website_preferences.xml | 7 +++++++ + .../browser/preferences/PrefServiceBridge.java | 10 +++++++++ + .../website/SingleCategoryPreferences.java | 24 ++++++++++++++++++++++ + .../java/strings/android_chrome_strings.grd | 6 ++++++ + .../android/preferences/pref_service_bridge.cc | 19 +++++++++++++++++ + 6 files changed, 69 insertions(+) + +diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml +--- a/chrome/android/java/res/values/values.xml ++++ b/chrome/android/java/res/values/values.xml +@@ -39,6 +39,9 @@ + 0 + 1 + ++ Keep cookies only until you quit your browser ++ When enabled, all cookies will be erased when the browsing session is over ++ + +diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml +--- a/chrome/android/java/res/xml/website_preferences.xml ++++ b/chrome/android/java/res/xml/website_preferences.xml +@@ -19,6 +19,13 @@ + android:summary="@string/allow_third_party_cookies_summary" + android:defaultValue="true" + android:persistent="false" /> ++ ++ + + PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged()); + } + ++ private void updateCookiesSessionOnlyCheckBox() { ++ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference) ++ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY); ++ cookiesSessionOnlyPref.setChecked( ++ !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled()); ++ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isAcceptCookiesEnabled()); ++// cookiesSessionOnlyPref.setManagedPreferenceDelegate( ++// preference -> PrefServiceBridge.getInstance().isCookiesSessionOnlyPrefManaged()); ++ } ++ + private void updateNotificationsVibrateCheckBox() { + ChromeBaseCheckBoxPreference preference = + (ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference( +diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd +--- a/chrome/android/java/strings/android_chrome_strings.grd ++++ b/chrome/android/java/strings/android_chrome_strings.grd +@@ -800,6 +800,12 @@ Your Google account may have other forms of browsing history like searches and a + + Third-party websites can save and read cookie data + ++ ++ Keep cookies only until you quit your browser ++ ++ ++ When enabled, all cookies will be erased when the browsing session is over ++ + + JavaScript + +diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc +--- a/chrome/browser/android/preferences/pref_service_bridge.cc ++++ b/chrome/browser/android/preferences/pref_service_bridge.cc +@@ -276,6 +276,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled( + return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies); + } + ++static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled( ++ JNIEnv* env, ++ const JavaParamRef& obj) { ++ HostContentSettingsMap* host_content_settings_map = ++ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile()); ++ return CONTENT_SETTING_SESSION_ONLY == host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr); ++} ++ + static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged( + JNIEnv* env, + const JavaParamRef& obj) { +@@ -724,6 +732,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled( + GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled); + } + ++static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled( ++ JNIEnv* env, ++ const JavaParamRef& obj, ++ jboolean enabled) { ++ HostContentSettingsMap* host_content_settings_map = ++ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile()); ++ host_content_settings_map->SetDefaultContentSetting( ++ CONTENT_SETTINGS_TYPE_COOKIES, ++ enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_SESSION_ONLY); ++} ++ + static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled( + JNIEnv* env, + const JavaParamRef& obj, +-- +2.7.4 + diff --git a/patches/BRM064_Add-option-to-not-persist-tabs-across-sessions.patch b/patches/BRM064_Add-option-to-not-persist-tabs-across-sessions.patch index 3a8abc50..53dbc8be 100644 --- a/patches/BRM064_Add-option-to-not-persist-tabs-across-sessions.patch +++ b/patches/BRM064_Add-option-to-not-persist-tabs-across-sessions.patch @@ -3,26 +3,26 @@ Date: Tue, 17 Apr 2018 17:14:00 +0300 Subject: Add option to not persist tabs across sessions --- - chrome/android/java/res/values/values.xml | 3 +++ - chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++ - .../src/org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++- - .../browser/preferences/privacy/PrivacyPreferences.java | 11 +++++++++++ - chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++ - 5 files changed, 28 insertions(+), 1 deletion(-) + chrome/android/java/res/values/values.xml | 3 +++ + chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++ + .../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++- + .../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++ + chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++ + 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml --- a/chrome/android/java/res/values/values.xml +++ b/chrome/android/java/res/values/values.xml -@@ -59,6 +59,9 @@ - change_sync_passphrase +@@ -66,6 +66,9 @@ -+ + + Close tabs on exit + Don\'t persist tabs between browsing sessions - ++ + diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml @@ -56,7 +56,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java -@@ -44,6 +44,7 @@ public class PrivacyPreferences extends PreferenceFragment +@@ -4,6 +4,7 @@ + + package org.chromium.chrome.browser.preferences.privacy; + ++import android.content.SharedPreferences; + import android.os.Bundle; + import android.preference.CheckBoxPreference; + import android.preference.Preference; +@@ -14,6 +15,7 @@ import android.view.Menu; + import android.view.MenuInflater; + import android.view.MenuItem; + ++import org.chromium.base.ContextUtils; + import org.chromium.base.metrics.RecordHistogram; + import org.chromium.chrome.R; + import org.chromium.chrome.browser.ChromeFeatureList; +@@ -45,6 +47,7 @@ public class PrivacyPreferences extends PreferenceFragment private static final String PREF_DO_NOT_TRACK = "do_not_track"; private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; @@ -64,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri private ManagedPreferenceDelegate mManagedPreferenceDelegate; -@@ -109,6 +110,11 @@ public class PrivacyPreferences extends PreferenceFragment +@@ -115,6 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment (ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT); canMakePaymentPref.setOnPreferenceChangeListener(this); @@ -76,22 +92,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri updateSummaries(); } -@@ -148,6 +154,11 @@ public class PrivacyPreferences extends PreferenceFragment - } - - /** -+ else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) { +@@ -141,6 +149,12 @@ public class PrivacyPreferences extends PreferenceFragment + } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) { + PrefServiceBridge.getInstance().setBoolean( + Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); ++ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) { ++// PrefServiceBridge.getInstance().setBoolean( ++// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue); + SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); + sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue); + sharedPreferencesEditor.apply(); -+ } - * Updates the summaries for several preferences. - */ - public void updateSummaries() { + } + + return true; diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd --- a/chrome/android/java/strings/android_chrome_strings.grd +++ b/chrome/android/java/strings/android_chrome_strings.grd -@@ -3450,6 +3450,12 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr +@@ -3463,6 +3463,12 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr Resume