! 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')
!
#%#var AG_removeCookie=function(a){var e=/./;/^\/.+\/$/.test(a)?e=new RegExp(a.slice(1,-1)):""!==a&&(e=new RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")));a=function(){for(var a=document.cookie.split(";"),g=a.length;g--;){cookieStr=a[g];var d=cookieStr.indexOf("=");if(-1!==d&&(d=cookieStr.slice(0,d).trim(),e.test(d)))for(var h=document.location.hostname.split("."),f=0;f 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')
!#endif
! 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
!+ PLATFORM(windows, mac, android, ios) NOT_OPTIMIZED
adguard.info,adguard.com,adguard.app##.hello_from_adguard_apps
!+ NOT_PLATFORM(windows, mac, android, ios, ext_ublock) NOT_OPTIMIZED
adguard.info,adguard.com,adguard.app##.hello_from_adguard_ext
! Detect HTTPS filtering
!+ PLATFORM(windows, mac, android) NOT_OPTIMIZED
||https-filtering-check.adtidy.org^
! Detect Advanced Protection of AdGuard for iOS
!+ PLATFORM(ios) NOT_OPTIMIZED
adguard.info,adguard.com,adguard.app#$#.hello_from_adguard_advanced_protection_ios { display: none !important; }
!
!-------------------------------------------------------------------!
!------- 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
! ||video-weaver.*.hls.ttvnw.net/v*/playlist/*.m3u8$replace=/#EXT-X-DATERANGE:ID="stitched-ad[\s\S]*(#EXT-X-PROGRAM-DATE-TIME)(?![\s\S]*?#EXTINF:\d\.\d+\,live)[\s\S]*|(#EXT-X-DATERANGE:ID="stitched-ad[\s\S]*?(#EXT-X-PROGRAM-DATE-TIME)([\s\S]*?(#EXTINF:\d\.\d+\,live)))/\$5/
!
!################## For tracking ##################
||uim.tifbs.net/js/2048.js