! Checksum: 9W5cMnRNpmiibBVOMFWclQ ! Diff-Path: ../patches/5/5-s-1714995375-3600.patch ! Title: AdGuard Experimental filter ! Description: Filter designed to test certain hazardous filtering rules before they are added to the basic filters. ! Version: 2.0.1.46 ! TimeUpdated: 2024-05-06T11:31:31+00:00 ! Expires: 5 days (update frequency) ! Homepage: https://github.com/AdguardTeam/AdGuardFilters ! License: https://github.com/AdguardTeam/AdguardFilters/blob/master/LICENSE ! !-------------------------------------------------------------------! !------------------ General JS API ---------------------------------! !-------------------------------------------------------------------! ! JS API START #%#var AG_onLoad=function(func){if(document.readyState==="complete"||document.readyState==="interactive")func();else if(document.addEventListener)document.addEventListener("DOMContentLoaded",func);else if(document.attachEvent)document.attachEvent("DOMContentLoaded",func)}; #%#var AG_removeElementById = function(id) { var element = document.getElementById(id); if (element && element.parentNode) { element.parentNode.removeChild(element); }}; #%#var AG_removeElementBySelector = function(selector) { if (!document.querySelectorAll) { return; } var nodes = document.querySelectorAll(selector); if (nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i] && nodes[i].parentNode) { nodes[i].parentNode.removeChild(nodes[i]); } } } }; #%#var AG_each = function(selector, fn) { if (!document.querySelectorAll) return; var elements = document.querySelectorAll(selector); for (var i = 0; i < elements.length; i++) { fn(elements[i]); }; }; #%#var AG_removeParent = function(el, fn) { while (el && el.parentNode) { if (fn(el)) { el.parentNode.removeChild(el); return; } el = el.parentNode; } }; ! ! AG_removeCookie ! Examples: AG_removeCookie('/REGEX/') or AG_removeCookie('part of the cookie name') ! ! ! AG_defineProperty ! See https://github.com/AdguardTeam/deep-override ! #%#var AG_defineProperty=function(){var p,q=Object.defineProperty;if("function"==typeof WeakMap)p=WeakMap;else{var r=0,t=function(){this.a=(r+=Math.random()).toString()};t.prototype.set=function(a,b){var d=a[this.a];d&&d[0]===a?d[1]=b:q(a,this.a,{value:[a,b],writable:!0});return this};t.prototype.get=function(a){var b;return(b=a[this.a])&&b[0]===a?b[1]:void 0};t.prototype.has=function(a){var b=a[this.a];return b?b[0]===a:!1};p=t}function u(a){this.b=a;this.h=Object.create(null)}function v(a,b,d,e){this.a=a;this.i=b;this.c=d;this.f=e}function w(){this.g=/^([^\\\.]|\\.)*?\./;this.j=/\\(.)/g;this.a=new p}function x(a,b){var d=b.f;if(d&&!("beforeGet"in d||"beforeSet"in d))return z(d);var e={get:function(){var c=b.f;c&&c.beforeGet&&c.beforeGet.call(this,b.a.b);a:if(c=b.g)c=A(c)?c.value:c.get?c.get.call(this):void 0;else{c=b.a.b;if(b.i in c&&(c=B(c),null!==c)){var d=C.call(c,b.i);c=d?d.call(this):c[b.i];break a}c=void 0}(this===b.a.b||D.call(b.a.b,this))&&E(a,c,b.c);return c},set:function(c){if(this===b.a.b||D.call(b.a.b,this)){b.f&&b.f.beforeSet&&(c=b.f.beforeSet.call(this,c,this));var d=b.g;d&&A(d)&&d.value===c?c=!0:(d=F(b,c,this),G(c)&&(c=H(a,c),I(a,c,b.c)),c=d)}else c=F(b,c,this);return c}};d&&J(d,e,K);return e}function I(a,b,d){for(var e in d.h){var c=d.h[e];if(b.h[e]){var h=a,g=b.h[e],k=c;!k.f||g.f||"undefined"===typeof g.a.b||g.g||(g.g=z(k.f));g.c&&k.c&&g.c!==k.c&&I(h,g.c,k.c)}else{g=h=void 0;k=a;var f=b,l=c.i,m="undefined"!==typeof f.b,y=!1;m&&(g=L(f.b,l))&&!g.configurable&&(y=!0,h=f.b[l]);var n=y?H(k,h):new u(c.c.b);I(k,n,c.c);n=new v(f,l,n,c.f);f.h[l]=n;m&&(n.g=g,m=x(k,n),y?E(k,h,c.c):(q(f.b,l,m),g&&A(g)&&(M(m,g.value,f.b),E(k,g.value,c.c))))}}}function E(a,b,d){G(b)&&(b=H(a,b),I(a,b,d))}function F(a,b,d){var e=a.g;if(!e){e=B(a.a.b);if(null!==e&&(e=N.call(e,a.i)))return e.call(d,b);if(!O(a.a.b))return!1;a.g={value:b,configurable:!0,writable:!0,enumerable:!0};return!0}return M(e,b,d)}function H(a,b){var d=a.a.get(b);d||(d=new u(b),a.a.set(b,d));return d}function A(a){return"undefined"!==typeof a.writable}function J(a,b,d){for(var e=0,c=d.length;e element matches specified regular expression. ! Based on AG_defineProperty (https://github.com/AdguardTeam/deep-override) ! ! Examples: ! AG_abortInlineScript(/zfgloadedpopup|zfgloadedpushopt/, 'String.fromCharCode'); ! ! @param regex regular expression that the inline script contents must match ! @param property property or properties chain ! @param debug optional, if true - we will print warning when script is aborted. ! #%#var AG_abortInlineScript=function(g,b,c){var d=function(){if("currentScript"in document)return document.currentScript;var a=document.getElementsByTagName("script");return a[a.length-1]},e=Math.random().toString(36).substr(2,8),h=d();AG_defineProperty(b,{beforeGet:function(){var a=d();if(a instanceof HTMLScriptElement&&a!==h&&""===a.src&&g.test(a.textContent))throw c&&console.warn("AdGuard aborted execution of an inline script"),new ReferenceError(e);}});var f=window.onerror;window.onerror=function(a){if("string"===typeof a&&-1!==a.indexOf(e))return c&&console.warn("AdGuard has caught window.onerror: "+b),!0;if(f instanceof Function)return f.apply(this,arguments)}}; ! ! AG_setConstant('property.chain', 'true') // defines boolean (true), same for false; ! AG_setConstant('property.chain', '123') // defines Number 123; ! AG_setConstant('property.chain', 'noopFunc') // defines function(){}; ! AG_setConstant('property.chain', 'trueFunc') // defines function(){return true}; ! AG_setConstant('property.chain', 'falseFunc') // defines function(){return false}; ! #%#var AG_setConstant=function(e,a){if("undefined"===a)a=void 0;else if("false"===a)a=!1;else if("true"===a)a=!0;else if("noopFunc"===a)a=function(){};else if("trueFunc"===a)a=function(){return!0};else if("falseFunc"===a)a=function(){return!1};else if(/^\d+$/.test(a)){if(a=parseFloat(a),isNaN(a)||32767{const wrapper=(target,thisArg,args)=>{let result=Reflect.apply(target,thisArg,args);try{const decoded=atob(result);if(decoded.includes('bkaEnforcementMessage')){const modifiedContent=decoded.replace(/\n.\n.auxiliaryUi\.messageRenderers\.bkaEnforcementMessageViewModel\.displayType.\dENFORCEMENT_MESSAGE_VIEW_MODEL_DISPLAY_TYPE_[A-Z]+\n.\n.auxiliaryUi\.messageRenderers\.bkaEnforcementMessageViewModel\.isVisible.{2}(?:tru|fals)e/,'');const encodeToBase64=btoa(modifiedContent);return encodeToBase64}}catch(e){} return result};const handler={apply:wrapper};window.Array.prototype.join=new Proxy(window.Array.prototype.join,handler)})(); www.youtube.com#%#//scriptlet('set-constant', 'ytInitialPlayerResponse.auxiliaryUi.messageRenderers.bkaEnforcementMessageViewModel', 'undefined') ! main youtube page - changing view for the first row of elements www.youtube.com#$##contents ytd-rich-grid-row:has(> div[id="contents"] > ytd-rich-item-renderer[style="display: none !important;"]) > #contents:first-child { max-width: unset !important; } www.youtube.com#$##contents ytd-rich-grid-row:has(> div[id="contents"] > ytd-rich-item-renderer[style="display: none !important;"]) ytd-rich-grid-media { max-width: unset !important; } www.youtube.com#$##contents ytd-rich-grid-row:has(> div[id="contents"] > ytd-rich-item-renderer[style="display: none !important;"]) { --ytd-rich-grid-items-per-row: 1 !important; } ! https://github.com/AdguardTeam/AdguardFilters/issues/96262 developer.android.com,adssettings.google.com##sc-survey-survey-manager ! ! https://github.com/AdguardTeam/AdguardFilters/issues/174701#issuecomment-1991730425 foxtel.com.au#%#//scriptlet('xml-prune', 'xpath(//*[name()="MPD"]/@mediaPresentationDuration | //*[name()="Period"]/@start | //*[name()="Period"][.//*[name()="BaseURL" and contains(text(),"/adease/")]])', '', '.mpd') foxtel.com.au#%#//scriptlet('json-prune', 'adease adeaseBlob vmap') ! ! Allowlist ! http://adguard.com/filterrules.html#exclusionRules ! http://adguard.com/filterrules.html#hideRulesExceptions ! http://adguard.com/filterrules.html#cssInjectionExceptions ! http://adguard.com/filterrules.html#javascriptInjectionExceptions ! ! This section contains all kinds of exception rules. ! !-------------------------------------------------------------------! !------- Experimental rules for Spyware filter ---------------------! !-------------------------------------------------------------------! ! ! This file contains all experimental rules for Spyware filter. ! !-------------------------------------------------------------------! !------- Experimental rules for Social filter ----------------------! !-------------------------------------------------------------------! ! ! This file contains all experimental rules for Social filter. ! !-------------------------------------------------------------------! !------- Experimental rules for Russian filter ---------------------! !-------------------------------------------------------------------! ! ! Advertising networks known rotator domains ! ! This section contains the list of rules blocking requests ! to known rotator domains of the advertising networks. ! For example, "*.doubleclick.net" are rotator domains ! of Doubleclick ad network. ! ! Do not mix it up with direct adverts domains. ! Read about it in direct_adverts.txt ! ! ! ! Direct adverts ! ! Contains rules which are blocking URLs to direct adverts. ! What do we mean by direct adverts - it is all kind of advertisers ! who are not ad networks. ! ! For example, rules that block referral links. ! ! ! URL blocking rules unsorted list ! http://adguard.com/filterrules.html#baseRules ! ! Add basic rule here if it cannot be added to ! direct_adverts.txt or advertising_networks.txt. ! For example rules like "http://example.com/banner.png" ! blocking specific URL should be added to this section. ! ! ! Common CSS rules ! http://adguard.com/filterrules.html#hideRules ! http://adguard.com/filterrules.html#cssInjection ! ! This section contains CSS rules without domain restrictions. ! Be cautious and add rules here even if you are sure that this ! rule could be used for more than one web site. ! ! ! Common HTML rules ! http://adguard.com/filterrules.html#htmlContentFilter ! ! This section contains the list of common HTML rules ! without domain restrictions. ! Be aware that rules added to this section cannot be used ! by Adguard extensions. ! We advise you to stick to CSS/Javascript/URL rule types ! and use HTML rules if there is no other way only. ! ! ! Common javascript rules ! http://adguard.com/filterrules.html#javascriptInjection ! ! Javascript rules which are not restricted to specific domains. ! Be VERY cautious with this type of rules. ! ! ! Rules which are restricted to one or more domains. ! This section contain any type of rule grouped by domain. ! mail.yandex.ru#?#.modal:has(> div[data-lego] div[class^="mail-SubscriptionsPopup"]) ! ! Allowlist ! ! This section contains all kinds of exception rules. ! !-------------------------------------------------------------------! !------- Experimental rules for Other filters ----------------------! !-------------------------------------------------------------------! ! ! This file contains all filters other than English, Social, Spyware and Russian. ! Also filters by platforms https://github.com/AdguardTeam/AdguardBrowserExtension/issues/917 ! ! https://github.com/AdguardTeam/AdguardFilters/issues/169842 /videojs8/nuevo.min.js /videojs/plugins/vastpro.js ! https://github.com/AdguardTeam/AdguardFilters/issues/142875 imdb.com#?#div[data-testid="promptable"]:has(.ipc-rating-display-with-poster__image) imdb.com#$?#body:has(div[data-testid="promptable"] .ipc-rating-display-with-poster__image) { overflow: auto !important; } ! ! Special rules for AdGuard websites' test pages. The only purpose of these ! rules is to make test pages work so that users could verify that AdGuard ! is properly working. ! !+ NOT_OPTIMIZED adguard.info,adguard.com,adguard.app##.hello_from_adguard_experimental ! Detect of using AdGuard products !+ NOT_PLATFORM(windows, mac, android, ios, ext_ublock) NOT_OPTIMIZED adguard.info,adguard.com,adguard.app##.hello_from_adguard_ext ! Detect HTTPS filtering ! Detect Advanced Protection of AdGuard for iOS ! !-------------------------------------------------------------------! !------- Experimental rules for Mobile ads filter-------------------! !-------------------------------------------------------------------! ! ! Mobile advertising networks known rotator domains ! Used to show ads in mobile apps and websites ! !-------------------------------------------------------------------! !---------------------- Dangerous rules ----------------------------! !-------------------------------------------------------------------! !####################################################### !######### The list of dangerous rules ################# !####################################################### ! !################## For advertisement ################## ! ! https://github.com/AdguardTeam/AdguardFilters/issues/64754 ! !################## For tracking ################## ||uim.tifbs.net/js/2048.js