{"version":3,"sources":["prebid.js","iiq.js","pricing.js","https://adncdn.net/0"],"names":["window","document","URL_PATHS_BLACKLIST","Object","freeze","isBlacklistedMeta","some","w","querySelector","content","toLowerCase","includes","adsConfig","id","size","position","isLazyLoaded","refreshIteration","sizeMapping","desktop","tablet","mobile","refreshTime","biddersWhiteList","appnexus","magnite","msft","pubmatic","rubicon","openx","unruly","country","adagio","adyoulike","amx","anyclip","contxtful","conversant","criteo","exco","fluct","gamoshi","ix","kueezrtb","medianet","oms","onetag","pixfuture","programmaticx","richaudience","rise","seedtag","sharethrough","smartadserver","smilewanted","sovrn","sparteo","ssp_geniee","teads","underdogmedia","vidazoo","yandex","getCountry","bidders","bidder","params","pubId","placementId","placement_id","tagId","organizationId","site","placement","pid","supplyType","supplyPartnerId","filter","name","replace","bidderSettings","storageAllowed","adnimation","sonobi","taboola","bidderNames","endsWith","map","s2sBidders","s2sAliases","fromEntries","slice","GDPR_GEOS","needsGdpr","async","maxMs","Promise","resolve","start","Date","now","check","__tcfapi","setTimeout","isGdprRequired","pbjsConfig","s2sConfig","enabled","accountId","endpoint","syncEndpoint","timeout","extPrebid","aliases","priceGranularity","currency","adServerCurrency","conversionRateFile","defaultRates","USD","EUR","ratesTTL","floors","enforcement","enforceJS","enforcePBS","floorDeals","bidAdjustment","data","skipRate","schema","fields","values","banner","native","video","default","gvlMapping","amxS2S","magniteS2S","riseS2S","kueezrtbS2S","adagioS2S","consentManagement","gdpr","cmpApi","defaultGdprScope","actionTimeout","usp","useBidCache","schain","validation","config","ver","complete","nodes","asi","sid","hp","userSync","iframeEnabled","filterSettings","iframe","userIds","storage","type","expires","partner","refreshInSeconds","detectMissingSizes","aliasSyncEnabled","auctionOptions","suppressStaleRender","version","customer","realTimeData","dataProviders","waitForIt","adServerTargeting","gtag","dataLayer","push","arguments","googletag","cmd","pubads","addEventListener","onImpressionViewable","onFirstAdVisible","setConfig","collapseDiv","_taboola","GA_ID","PREBID_TIMEOUT_MS","createScript","src","preCreate","scriptEl","console","warn","attemptLoad","createElement","fetchPriority","defer","remove","head","appendChild","pathname","location","path","isBlacklistedUrl","scriptsToLoad","all","then","log","handleSlotRenderEnded","removeEventListener","IntentIqObject","intentIq_2072952453","pbjs","adnpbjs","callback","main","timeoutInMillis","ABTestingConfigurationSource","manualWinReportEnabled","domainName","host","vrBrowserBlackList","gamParameterName","onEvent","reportExternalWin","biddingPlatformId","partnerAuctionId","auctionId","bidderCode","prebidAuctionId","cpm","originalCpm","originalCurrency","status","adUnitCode","err","error","initIiq","catch","setAttribute","adUnits","slotsMap","lazyLoader","constructor","margin","this","observer","IntersectionObserver","onIntersect","rootMargin","entries","forEach","entry","isIntersecting","cb","target","dataset","lazyCallback","unobserve","add","element","getBoundingClientRect","top","innerHeight","cbName","Math","random","toString","observe","activeSlotIds","newPbjsAdUnits","viewportType","screen","width","event","slot","slotId","getSlotElementId","adUnitPath","getAdUnitPath","adUnit","timeoutMs","adUnitToRefresh","getSlots","at","targeting","slotEl","getElementById","runBids","refresh","message","refreshAd","firstAdLogged","isEmpty","performance","runPrebidBids","que","requestBids","adUnitCodes","bidsBackHandler","setTargetingForGPTAsync","pbjsBids","bidsFn","race","allSettled","createAdCmd","slotName","length","adsEl","querySelectorAll","adPath","adpath","sizes","slotBidders","ATF","Content","BTF","Side","SideATF","Sticky","publisherId","STANDARD_SIZES","prebidSizes","standardSizes","every","Array","isArray","h","isNative","sw","sh","bids","code","mediaTypes","setBidderConfig","ortb2","source","ext","collectAds","addSize","build","defineSlot","defineSizeMapping","addService","intent_iq_group","pbjsAdUnit","find","addAdUnits","init","enableServices","display","getConfig","disableInitialLoad","createNativeCmd","onload","mark","destroyNativeCmd","footerEl","innerHTML","createNative","createAd","destroyAd","destroySlots","idx","indexOf","splice","removeAttribute","parentElement","destroyAdCmd","getIpInfo","cached","localStorage","getItem","JSON","parse","url","res","fetch","ok","Error","ipInfo","json","setItem","stringify","removeItem","adn","destroyNative","createInterstitial","createInterstitialCmd","observeSlots","handleAdded","node","getAttribute","handleRemoved","isAdSlot","hasAttribute","nodeList","from","nodeType","Node","ELEMENT_NODE","flatMap","concat","MutationObserver","mutations","mutation","addedNodes","removedNodes","attributeName","isStyleChanged","oldStyle","oldValue","newStyle","isVisibilityChanged","style","getComputedStyle","isDisplayed","isVisible","visibility","subtree","childList","attributes","attributeFilter","attributeOldValue","defineOutOfPageSlot","enums","OutOfPageFormat","INTERSTITIAL","callbacks","interval","setInterval","readyState","clearInterval","onDomReady","addCloseButton","stickyBannerSizeDiv","el","innerText","right","height","color","borderRadius","backgroundColor","cursor","fontSize","textAlign","classList","onclick","append","stickyBannerParent","justifyContent","bottom","zIndex","stickyBanner","onpage","getElementsByTagName","flag","createStickyBanner","paragraphs","injected","i","START_AT","pElement","marginTop","marginBottom","minHeight","insertBefore","addInContentAdUnits","anchor","insertAdjacentElement","addAtfUnit","addSectionAdUnits","items","li","index","addSideBarAdUnits","SRC","container","paddingBottom","s","injectTruvidPlayer","matchMedia","matches","elements","divElement","maxWidth","scriptElement","text","injectTaboolaFooterFeed","parentNode","boxSizing","injectTaboolaSPLITArticleFooterFeed","stack"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5HA;ACAA;CCCA,eAAiBA,EAAQC,GAMvB,MAAMC,EAAsBC,OAAOC,OAAO,CAGxC,OACA,OACA,SACA,QACA,UACA,OACA,cACA,MACA,WAGIC,EAAoBH,EAAoBI,KAAKC,IAAMN,EAASO,cAAc,sCAAsCC,SAAW,IAAIC,cAAcC,SAASJ,IAEtJK,EAAYT,OAAOC,OAAO,CAC9B,4CAA6C,CAC3CS,GAAM,4CACNC,KAAQ,CACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,MAERC,SAAY,UACZC,cAAgB,EAChBC,iBAAoB,EACpBC,YAAe,CACbC,QAAW,CACT,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAERC,OAAU,CACR,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,MAERC,OAAU,CACR,CAAC,IAAK,KACN,CAAC,IAAK,OAGVC,YAAe,KAEjB,4CAA6C,CAC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","file":"j95IqigNtA","sourcesContent":[null,null,null,"// Last updated: 2026-10-29T16:12:07.532Z by Matt\r\n(async function (window, document) {\r\n\r\n// ----------------------------------------------\r\n  // Configuration\r\n  // ----------------------------------------------\r\n\r\n  const URL_PATHS_BLACKLIST = Object.freeze([\r\n    // Add a list of URL paths to exclude 👇\r\n    // e.g. \"/path/to/page\"\r\n    \"nsfw\",\r\n    \"nude\",\r\n    \"erotic\",\r\n    \"naked\",\r\n    \"playboy\",\r\n    \"porn\",\r\n    \"pornography\",\r\n    \"sex\",\r\n    \"nudity\"\r\n  ]);\r\n\r\n  const isBlacklistedMeta = URL_PATHS_BLACKLIST.some(w => (document.querySelector('meta[name=\"shareaholic:keywords\"]')?.content ?? '').toLowerCase().includes(w));\r\n\r\n  const adsConfig = Object.freeze({\r\n    \"/339474670,109048388/Flashbak/InContent_0\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/InContent_0\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/InContent_2\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/InContent_2\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/ATF\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/ATF\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"ATF\",\r\n      \"isLazyLoaded\": false,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/Middle\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/Middle\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/Side_0\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/Side_0\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [300, 600]\r\n      ],\r\n      \"position\": \"Side\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"tablet\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/Side_1\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/Side_1\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [300, 600]\r\n      ],\r\n      \"position\": \"Side\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"tablet\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/Side_2\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/Side_2\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [300, 600]\r\n      ],\r\n      \"position\": \"Side\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"tablet\": [\r\n          [300, 600],\r\n          [300, 250]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/Sticky_Footer\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/Sticky_Footer\",\r\n      \"size\": [\r\n        [320, 50],\r\n        [728, 90],\r\n        [970, 90]\r\n      ],\r\n      \"position\": \"Sticky\",\r\n      \"isLazyLoaded\": false,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90]\r\n        ],\r\n        \"mobile\": [\r\n          [320, 50]\r\n        ]\r\n      },\r\n      \"refreshTime\": 45000\r\n    },\r\n    \"/339474670,109048388/Flashbak/InContent_1\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/InContent_1\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/InContent_3\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/InContent_3\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    },\r\n    \"/339474670,109048388/Flashbak/InContent_4\": {\r\n      \"id\": \"/339474670,109048388/Flashbak/InContent_4\",\r\n      \"size\": [\r\n        [300, 250],\r\n        [336, 280],\r\n        [728, 90],\r\n        [970, 90],\r\n        [970, 250]\r\n      ],\r\n      \"position\": \"Content\",\r\n      \"isLazyLoaded\": true,\r\n      \"refreshIteration\": 0,\r\n      \"sizeMapping\": {\r\n        \"desktop\": [\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"tablet\": [\r\n          [728, 90],\r\n          [300, 250],\r\n          [336, 280]\r\n        ],\r\n        \"mobile\": [\r\n          [300, 250],\r\n          [336, 280]\r\n        ]\r\n      },\r\n      \"refreshTime\": 30000\r\n    }\r\n  });\r\n\r\n  const biddersWhiteList = Object.freeze({\r\n    \"appnexus\":[\"US\",\"GB\",\"CA\",\"IL\",\"JP\",\"AU\",\"NZ\",\"IN\",\"BR\",\"ID\",\"EG\",\"AE\",\"SA\",\"AR\",\"CL\",\"MY\",\"PH\",\"PT\",\"HK\",\"SG\",\"NL\",\"BE\",\"IE\",\"NO\",\"SE\",\"FI\",\"DK\",\"CH\",\"DE\",\"TR\",\"PL\",\"RO\",\"CZ\",\"ZA\"],\r\n    \"magnite\":[\"US\",\"GB\",\"IL\",\"PS\",\"TR\",\"CA\",\"DE\",\"GH\",\"ZA\",\"FR\",\"ES\",\"IT\",\"AU\",\"NZ\",\"IN\",\"MX\",\"PL\",\"EC\",\"KR\",\"UA\",\"SA\",\"NL\",\"BE\",\"BD\",\"AE\",\"SG\",\"AM\",\"JP\",\"BR\",\"NG\",\"TH\",\"MY\",\"HK\",\"UZ\",\"SE\",\"AT\",\"PH\",\"VN\",\"CL\",\"IE\",\"CH\",\"NO\",\"FI\",\"DK\",\"PT\"],\r\n    \"msft\":[\"US\",\"GB\",\"CA\",\"IL\",\"JP\",\"AU\",\"NZ\",\"IN\",\"BR\",\"ID\",\"EG\",\"AE\",\"SA\",\"AR\",\"CL\",\"MY\",\"PH\",\"PT\",\"HK\",\"SG\",\"NL\",\"BE\",\"IE\",\"NO\",\"SE\",\"FI\",\"DK\",\"CH\",\"DE\",\"TR\",\"PL\",\"RO\",\"CZ\",\"ZA\"],\r\n    \"pubmatic\":[\"US\",\"CA\",\"GB\",\"IE\",\"AU\",\"NZ\",\"DE\",\"AT\",\"CH\",\"NL\",\"BE\",\"NO\",\"SE\",\"FI\",\"DK\",\"IL\",\"PR\"],\r\n    \"rubicon\":[\"US\",\"GB\",\"IL\",\"PS\",\"TR\",\"CA\",\"DE\",\"GH\",\"ZA\",\"FR\",\"ES\",\"IT\",\"AU\",\"NZ\",\"IN\",\"MX\",\"PL\",\"EC\",\"KR\",\"UA\",\"SA\",\"NL\",\"BE\",\"BD\",\"AE\",\"SG\",\"AM\",\"JP\",\"BR\",\"NG\",\"TH\",\"MY\",\"HK\",\"UZ\",\"SE\",\"AT\",\"PH\",\"VN\",\"CL\",\"IE\",\"CH\",\"NO\",\"FI\",\"DK\",\"PT\"],\r\n    \"openx\":[\"US\",\"CA\"],\r\n    \"unruly\":[\"US\",\"GB\"],\r\n  });\r\n\r\n  const biddersBlackList = Object.freeze({\r\n    \"33across\":[\"GH\",\"GB\",\"CA\",\"DE\",\"NL\",\"IL\",\"SG\",\"AU\",\"IT\",\"FR\"],\r\n    \"adagio\":[\"FR\",\"IL\",\"GB\",\"AU\",\"BE\",\"CH\",\"PH\",\"DE\",\"CN\",\"SG\"],\r\n    \"adyoulike\":[\"IL\",\"CA\",\"CN\",\"SG\",\"GB\",\"AU\",\"ZA\",\"FR\",\"IN\",\"PK\"],\r\n    \"amx\":[\"NL\",\"ID\",\"IT\",\"PH\",\"CN\",\"ES\",\"BE\",\"SO\",\"CH\",\"BR\"],\r\n    \"anyclip\":[\"GH\",\"US\",\"GB\",\"IT\",\"CA\",\"FR\",\"AT\",\"BR\",\"DE\",\"DK\"],\r\n    \"appnexus\":[\"DE\",\"CA\",\"GB\",\"FR\",\"ID\",\"AU\",\"PH\",\"BR\",\"TH\",\"SG\"],\r\n    \"contxtful\":[\"IL\",\"IN\",\"GB\",\"ID\",\"SG\",\"KR\",\"CN\",\"PH\",\"DE\",\"TH\"],\r\n    \"conversant\":[\"IL\",\"IN\",\"KR\",\"PH\",\"TH\",\"JP\",\"VN\",\"PK\",\"CN\",\"EG\"],\r\n    \"criteo\":[\"CN\",\"BD\",\"BY\",\"KZ\",\"AR\",\"MA\",\"CY\",\"CO\",\"BG\",\"CI\"],\r\n    \"exco\":[\"US\",\"SG\",\"GB\",\"DE\",\"CA\",\"AU\",\"IT\",\"PL\",\"CN\",\"BR\"],\r\n    \"fluct\":[\"US\",\"CA\",\"HK\",\"JP\",\"SG\",\"GB\",\"AU\",\"DE\",\"CN\",\"TW\"],\r\n    \"gamoshi\":[\"US\",\"GB\",\"CA\",\"DE\",\"AU\",\"PH\",\"IT\",\"SG\",\"CN\",\"MY\"],\r\n    \"ix\":[\"CN\",\"PL\",\"IE\",\"FI\",\"DK\",\"AT\",\"GR\",\"AR\",\"MA\",\"PT\"],\r\n    \"kueezrtb\":[\"IT\",\"CN\",\"ES\",\"BE\",\"UA\",\"PH\",\"CH\",\"TH\",\"SE\",\"BY\"],\r\n    \"magnite\":[\"NL\",\"IT\",\"CN\",\"BE\",\"SO\",\"CH\",\"ES\",\"UA\",\"BR\",\"PL\"],\r\n    \"medianet\":[\"CN\",\"CH\",\"MY\",\"UA\",\"VN\",\"BD\",\"AE\",\"PK\",\"TR\",\"BY\"],\r\n    \"msft\":[\"CN\",\"SO\",\"SG\",\"UA\",\"PH\",\"BY\",\"KZ\",\"KE\",\"IN\",\"IT\"],\r\n    \"oms\":[\"SG\",\"IN\",\"IL\",\"NL\",\"ID\",\"KR\",\"IT\",\"PH\",\"TH\",\"CH\"],\r\n    \"onetag\":[\"CN\",\"PL\",\"BD\",\"GR\",\"SE\",\"PK\",\"CY\",\"RO\",\"AT\",\"PT\"],\r\n    \"openx\":[\"DE\",\"NL\",\"CN\",\"IT\",\"BE\",\"SO\",\"JP\",\"ES\",\"PH\",\"SE\"],\r\n    \"pixfuture\":[\"DE\",\"CN\",\"AU\",\"FR\",\"SG\",\"TH\",\"PH\",\"ID\",\"BR\",\"JP\"],\r\n    \"programmaticx\":[\"FR\",\"SG\",\"IL\",\"GB\",\"ID\",\"IN\",\"KR\",\"DE\",\"PH\",\"JP\"],\r\n    \"richaudience\":[\"IN\",\"GB\",\"CN\",\"PK\",\"DE\",\"BD\",\"BR\",\"ZA\",\"FR\",\"TW\"],\r\n    \"rise\":[\"FR\",\"SG\",\"IN\",\"GB\",\"DE\",\"ID\",\"AU\",\"PH\",\"KR\",\"CN\"],\r\n    \"rubicon\":[\"IL\",\"CA\",\"MY\",\"GH\",\"SG\",\"AU\",\"PR\",\"GB\",\"CN\",\"DE\"],\r\n    \"seedtag\":[\"CN\",\"PH\",\"NG\",\"IN\",\"NO\",\"AT\",\"MA\",\"DK\",\"MY\",\"CI\"],\r\n    \"sharethrough\":[\"FR\",\"SG\",\"IL\",\"GB\",\"DE\",\"BE\",\"CH\",\"BR\",\"NL\",\"IT\"],\r\n    \"smartadserver\":[\"US\",\"SO\",\"GB\",\"IL\",\"CA\",\"KE\",\"SE\",\"NO\",\"NL\",\"CN\"],\r\n    \"smilewanted\":[\"DE\",\"ID\",\"CN\",\"PH\",\"NL\",\"SE\",\"IT\",\"TH\",\"CH\",\"ES\"],\r\n    \"sovrn\":[\"NL\",\"SG\",\"IT\",\"CN\",\"ES\",\"SE\",\"VN\",\"MY\",\"NG\",\"MX\"],\r\n    \"sparteo\":[\"CN\",\"PK\",\"BD\",\"RO\",\"FI\",\"CZ\",\"DZ\",\"NO\",\"HU\",\"DK\"],\r\n    \"ssp_geniee\":[\"IL\",\"GB\",\"DE\",\"NL\",\"ID\",\"IN\",\"KR\",\"IT\",\"CN\",\"ZA\"],\r\n    \"teads\":[\"CN\",\"CA\",\"SG\",\"IL\",\"AU\",\"GB\",\"FR\",\"TH\",\"DE\",\"PH\"],\r\n    \"underdogmedia\":[\"SO\",\"US\",\"CA\",\"ZA\",\"undefined\"],\r\n    \"unruly\":[\"IN\",\"ID\",\"DE\",\"AU\",\"PH\",\"KR\",\"CN\",\"SG\",\"TH\",\"JP\"],\r\n    \"vidazoo\":[\"FR\",\"SG\",\"GB\",\"IN\",\"ID\",\"DE\",\"PH\",\"CN\",\"SO\",\"TH\"],\r\n    \"yandex\":[\"IL\",\"US\",\"CA\",\"DE\",\"UA\",\"AU\",\"GB\",\"BG\",\"KZ\",\"LV\"]\r\n  });\r\n\r\n  const country = await getCountry();\r\n\r\n  const isBidderAllowed = ({ bidder }) => {\r\n    const name = bidder?.toLowerCase().replace(/s2s$/, '');\r\n    const whiteOk = !biddersWhiteList[name] || biddersWhiteList[name].includes(country);\r\n    // const blackOk = !biddersBlackList[name] || !biddersBlackList[name].includes(country);\r\n    return whiteOk;\r\n  };\r\n\r\nconst bidders = [\r\n\r\n    {\r\n      bidder: 'onetag',\r\n      params: {\r\n        pubId: '62d98ebd4882fb0'\r\n      }\r\n    },\r\n    {\r\n      bidder: 'contxtful',\r\n      params: {\r\n        placementId: 'p101162'\r\n      }\r\n    },\r\n    {\r\n      bidder: 'msft',\r\n      params: {\r\n        placement_id: 37375188\r\n      }\r\n    },\r\n    {\r\n      bidder: 'amx',\r\n      params: {\r\n        tagId: 'YWRuaW1hdGlvbi5jb20'\r\n      }\r\n    },\r\n    {\r\n      bidder: 'msftS2S',\r\n      params: {\r\n        placement_id: '37375189'\r\n      }\r\n    },\r\n    {\r\n      bidder: \"adagioS2S\",\r\n      params: {\r\n        \"organizationId\": \"1570\",\r\n        \"site\": \"flashbak-com\",\r\n        \"placement\": \"flashbak_ros\"\r\n      }\r\n    },\r\n    {\r\n      bidder: 'richaudience',\r\n      params: {\r\n        \"pid\": \"j4niROj6YC\",\r\n        \"supplyType\": \"site\"\r\n      }\r\n    },\r\n    // {\r\n    //   bidder: \"programmaticX\",\r\n    //   params: {\r\n    //     cId: \"68b7586707e74665e7350267\",\r\n    //     pId: \"87ac37v189832w0572283vi3\"\r\n    //   }\r\n    // },\r\n    {\r\n      bidder: \"gamoshi\",\r\n      params: {\r\n        supplyPartnerId: 27935\r\n      }\r\n    },\r\n\r\n].filter(isBidderAllowed);\r\n\r\n  const bidderSettings = Object.freeze({\r\n    \"33across\": { \"storageAllowed\": true },\r\n    \"adagio\": { \"storageAllowed\": true },\r\n    \"adnimation\": { \"storageAllowed\": true },\r\n    \"adyoulike\": { \"storageAllowed\": true },\r\n    \"amx\": { \"storageAllowed\": true },\r\n    \"anyclip\": { \"storageAllowed\": true },\r\n    \"appnexus\": { \"storageAllowed\": true },\r\n    \"contxtful\": { \"storageAllowed\": true },\r\n    \"conversant\": { \"storageAllowed\": true },\r\n    \"criteo\": { \"storageAllowed\": true },\r\n    \"exco\": { \"storageAllowed\": true },\r\n    \"fluct\": { \"storageAllowed\": true },\r\n    \"gamoshi\": { \"storageAllowed\": true },\r\n    \"ix\": { \"storageAllowed\": true },\r\n    \"kueezrtb\": { \"storageAllowed\": true },\r\n    \"magnite\": { \"storageAllowed\": true },\r\n    \"medianet\": { \"storageAllowed\": true },\r\n    \"msft\": { \"storageAllowed\": true },\r\n    \"oms\": { \"storageAllowed\": true },\r\n    \"onetag\": { \"storageAllowed\": true },\r\n    \"openx\": { \"storageAllowed\": true },\r\n    \"pixfuture\": { \"storageAllowed\": true },\r\n    \"programmaticx\": { \"storageAllowed\": true },\r\n    \"pubmatic\": { \"storageAllowed\": true },\r\n    \"richaudience\": { \"storageAllowed\": true },\r\n    \"rise\": { \"storageAllowed\": true },\r\n    \"rubicon\": { \"storageAllowed\": true },\r\n    \"seedtag\": { \"storageAllowed\": true },\r\n    \"sharethrough\": { \"storageAllowed\": true },\r\n    \"smartadserver\": { \"storageAllowed\": true },\r\n    \"smilewanted\": { \"storageAllowed\": true },\r\n    \"sonobi\": { \"storageAllowed\": true },\r\n    \"sovrn\": { \"storageAllowed\": true },\r\n    \"sparteo\": { \"storageAllowed\": true },\r\n    \"ssp_geniee\": { \"storageAllowed\": true },\r\n    \"taboola\": { \"storageAllowed\": true },\r\n    \"teads\": { \"storageAllowed\": true },\r\n    \"underdogmedia\": { \"storageAllowed\": true },\r\n    \"unruly\": { \"storageAllowed\": true },\r\n    \"vidazoo\": { \"storageAllowed\": true },\r\n    \"yandex\": { \"storageAllowed\": true },\r\n  });\r\n\r\n  const bidderNames = bidders.filter(({bidder}) => !bidder.endsWith('S2S')).map(({bidder}) => bidder);\r\n  const s2sBidders = bidders.filter(({bidder}) => bidder.endsWith('S2S')).map(({bidder}) => bidder);\r\n  const s2sAliases = Object.fromEntries(s2sBidders.map(bidder => [bidder, bidder.slice(0, -3)]));\r\n\r\n  const GDPR_GEOS = Object.freeze(['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','IS','LI','NO','GB','CH']);\r\n  const CMP_WAIT_MS = 3000;\r\n  function waitForTcfApi(maxMs){return new Promise((resolve)=>{const start=Date.now();(function check(){if(typeof window.__tcfapi==='function')return resolve(true);if(Date.now()-start>=maxMs)return resolve(false);setTimeout(check,50);})();});}\r\n  async function isGdprRequired(country){const hasCmp=await waitForTcfApi(CMP_WAIT_MS);return hasCmp||GDPR_GEOS.includes(country);}\r\n  const needsGdpr = await isGdprRequired(await getCountry());\r\n\r\n  const pbjsConfig = Object.freeze({\r\n    's2sConfig': {\r\n      'enabled': true,\r\n      'accountId': '1001',\r\n      'bidders': s2sBidders,\r\n      'endpoint': 'https://adnpbs.com/openrtb2/auction',\r\n      'syncEndpoint': 'https://adnpbs.com/cookie_sync',\r\n      'timeout': 1500,\r\n      'extPrebid': {\r\n        'aliases': s2sAliases\r\n      }\r\n    },\r\n    'priceGranularity': 'high',\r\n    'currency': {\r\n      'adServerCurrency': 'USD',\r\n      'conversionRateFile': 'https://cdn.jsdelivr.net/gh/prebid/currency-file@1/latest.json',\r\n      'defaultRates': {\r\n        'USD': {\r\n          'EUR': 0.92,\r\n          'USD': 1\r\n        },\r\n        'EUR': {\r\n          'USD': 1.09,\r\n          'EUR': 1\r\n        }\r\n      },\r\n      'ratesTTL': 3600000\r\n    },\r\n    'floors': {\r\n      'enforcement': {\r\n        'enforceJS': true,\r\n        'enforcePBS': true,\r\n        'floorDeals': true,\r\n        'bidAdjustment': true\r\n      },\r\n      'data': {\r\n        'currency': 'USD',\r\n        'skipRate': 0,\r\n        'schema': {\r\n          'fields': [\r\n            'mediaType'\r\n          ]\r\n        },\r\n        'values': {\r\n          'banner': 0.01,\r\n          'native': 0.01,\r\n          'video': 0.01\r\n        },\r\n        'default': 0.01\r\n      }\r\n    },\r\n    'gvlMapping': {'amxS2S':737,'magniteS2S':52,'riseS2S':1043,'kueezrtbS2S':1165,'adagioS2S':617,'anyclip':1400,'exco':444},\r\n    'consentManagement': {\r\n      'gdpr': needsGdpr && {'cmpApi':'iab','defaultGdprScope':true,'timeout':500,'actionTimeout':2000},\r\n      'usp': { 'cmpApi':'iab', 'timeout':500 }\r\n    },\r\n    'useBidCache': true,\r\n    'schain': {\r\n      'validation': 'strict',\r\n      'config': {\r\n        'ver': '1.0',\r\n        'complete': 1,\r\n        'nodes': [{\r\n          'asi': 'adnimation.com',\r\n          'sid': '20260035',\r\n          'hp': 1\r\n        }]\r\n      }\r\n    },\r\n    'userSync': {\r\n      'iframeEnabled': true,\r\n      'filterSettings': {\r\n        'iframe': {\r\n          'bidders': bidderNames,\r\n          'filter': 'include'\r\n        }\r\n      },\r\n      'userIds': [{\r\n          'name': 'sharedId',\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': '_pubcid',\r\n            'expires': 365\r\n          }\r\n        },\r\n        {\r\n          'name': 'identityLink',\r\n          'params': {\r\n            'pid': '13346'\r\n          },\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': 'idl_env',\r\n            'expires': 30\r\n          }\r\n        },\r\n        {\r\n          'name': 'id5Id',\r\n          'params': {\r\n            'partner': 1262\r\n          },\r\n          'storage': {\r\n            'type': 'html5',\r\n            'name': 'id5id',\r\n            'expires': 90,\r\n            'refreshInSeconds': 28800\r\n          }\r\n        },\r\n        {\r\n          'name': '33acrossId',\r\n          'params': {\r\n            'pid': '0010b00002KBtyLAAT'\r\n          },\r\n          'storage': {\r\n            'name': '33acrossId',\r\n            'type': 'html5',\r\n            'expires': 90,\r\n            'refreshInSeconds': 28800\r\n          }\r\n        }\r\n      ]\r\n    },\r\n    'ix': {\r\n      'detectMissingSizes': true\r\n    },\r\n    'aliasSyncEnabled': true,\r\n    'auctionOptions': {\r\n      'suppressStaleRender': true\r\n    },\r\n    'contxtful': {\r\n      'version': 'v1',\r\n      'customer': 'ADNP250319'\r\n    },\r\n    'realTimeData': {\r\n      'dataProviders': [{\r\n        'name': 'contxtful',\r\n        'waitForIt': true,\r\n        'params': {\r\n          'version': 'v1',\r\n          'customer': 'ADNP250319',\r\n          'bidders': [\r\n            'contxtful'\r\n          ],\r\n          'adServerTargeting': true\r\n        }\r\n      }]\r\n    }\r\n  });\r\n\r\n  // ----------------------------------------------\r\n  // Placeholders\r\n  // ----------------------------------------------\r\n\r\n  // Google Tag\r\n  window.googletag = window.googletag || {};\r\n  window.googletag.cmd = window.googletag.cmd || [];\r\n  // Manage refresh of viewable ads\r\n  window.googletag.cmd.push(() =>\r\n    window.googletag.pubads().addEventListener(\r\n      'impressionViewable', onImpressionViewable));\r\n  // Log time to first ad\r\n  window.googletag.cmd.push(() =>\r\n    window.googletag.pubads().addEventListener(\r\n      'slotRenderEnded', onFirstAdVisible));\r\n  // Visually collapse unfilled slots\r\n  window.googletag.cmd.push(() =>\r\n    window.googletag.setConfig({ collapseDiv: 'ON_NO_FILL' }));\r\n\r\n  // Google Analytics\r\n  window.dataLayer = window.dataLayer || [];\r\n\r\n  function gtag() {\r\n    window.dataLayer.push(arguments);\r\n  }\r\n\r\n  // Taboola\r\n  window._taboola = window._taboola || [];\r\n\r\n  // ----------------------------------------------\r\n  // Constants\r\n  // ----------------------------------------------\r\n\r\n  const GA_ID = 'G-RLMPQD79D9';\r\n  const APS_TIMEOUT_MS = 2000;\r\n  const PREBID_TIMEOUT_MS = 1800;\r\n\r\n  // ----------------------------------------------\r\n  // Scripts\r\n  // ----------------------------------------------\r\n\r\n  function createScript(src, preCreate = () => {}) {\r\n    return new Promise((resolve) => {\r\n      let scriptEl = document.querySelector(`script[src=\"${src}\"]`);\r\n\r\n      if (scriptEl) {\r\n        console.warn('Script already exists:', src);\r\n        resolve(false);\r\n        return;\r\n      }\r\n\r\n      const attemptLoad = () => {\r\n        scriptEl = document.createElement('script');\r\n        scriptEl.src = src;\r\n        scriptEl.fetchPriority = 'high';\r\n        preCreate(scriptEl);\r\n        scriptEl.async = !scriptEl.defer;\r\n        scriptEl.addEventListener('load', () => resolve(true));\r\n        scriptEl.addEventListener('error', () => {\r\n          console.warn('Retrying to load script:', src);\r\n          scriptEl.remove();\r\n          setTimeout(attemptLoad, 100);\r\n        });\r\n        document.head.appendChild(scriptEl);\r\n      };\r\n\r\n      attemptLoad();\r\n    });\r\n  }\r\n\r\n  // Don't initialize anything if page URL is blacklisted\r\n  if (isBlacklistedUrl() || isBlacklistedMeta) {\r\n    throw 'Skipping...';\r\n  }\r\n\r\n  const scriptsToLoad = [];\r\n  // scriptsToLoad.push(// createScript('https://c.amazon-adsystem.com/aax2/apstag.js'));\r\n  scriptsToLoad.push(createScript('https://cadmus.script.ac/d2n03je7t75fil/script.js'));\r\n\r\n  Promise.all(scriptsToLoad)\r\n    .then(config)\r\n    .then(main)\r\n    .catch((err) => console.error('Failed to bootstrap scripts:', err));\r\n\r\n  // Vidazoo video ads\r\n  createScript('https://static.vidazoo.com/basev/vwpt.js', (scriptEl) => {\r\n    scriptEl.setAttribute('data-widget-id', '65e9b79ebdb3a9c5732bbae8');\r\n  });\r\n\r\n  // Google Analytics\r\n  createScript(`https://www.googletagmanager.com/gtag/js?id=${GA_ID}`);\r\n\r\n  // KueezRTB cookieless solution\r\n  createScript('https://static.kueezrtb.com/latest.js', (scriptEl) => {\r\n    scriptEl.setAttribute('data-cfasync', 'false');\r\n    scriptEl.id = 'kueezrtb_latest';\r\n  });\r\n\r\n  class LazyLoader {\r\n    constructor(margin = '100px') {\r\n      this.observer = new IntersectionObserver(this.onIntersect, {\r\n        rootMargin: margin\r\n      });\r\n    }\r\n\r\n    onIntersect = (entries) => {\r\n      entries.forEach((entry) => {\r\n        if (entry.isIntersecting) {\r\n          const cb = entry.target.dataset.lazyCallback;\r\n          if (cb && window[cb]) {\r\n            window[cb](entry.target);\r\n            delete window[cb];\r\n          }\r\n          this.observer.unobserve(entry.target);\r\n        }\r\n      });\r\n    };\r\n\r\n    add(element, callback) {\r\n      if (!element || typeof callback !== 'function') return;\r\n      if (element.getBoundingClientRect().top < window.innerHeight) {\r\n        callback(element);\r\n      } else {\r\n        const cbName = 'lazy_cb_' + Math.random().toString(36).slice(2);\r\n        window[cbName] = callback;\r\n        element.dataset.lazyCallback = cbName;\r\n        this.observer.observe(element);\r\n      }\r\n    }\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // App\r\n  // ----------------------------------------------\r\n\r\n  const adUnits = [];\r\n  const slotsMap = [];\r\n  const lazyLoader = new LazyLoader();\r\n  const activeSlotIds = [];\r\n  const newPbjsAdUnits = [];\r\n  const viewportType =\r\n    window.screen.width > 1525 ?\r\n    'desktop' :\r\n    window.screen.width > 730 ?\r\n    'tablet' :\r\n    'mobile';\r\n\r\n  /**\r\n   * Main entry point of our tag.\r\n   */\r\n  async function main() {\r\n    const isOk = await createScript('https://securepubads.g.doubleclick.net/tag/js/gpt.js');\r\n    if (isOk) {\r\n      console.log('Starting...');\r\n    }\r\n  }\r\n\r\n  function config() {\r\n    console.log('Configuring...');\r\n    initGa();\r\n    // initAps();\r\n    initIiq();\r\n  }\r\n\r\n  function initAps() {\r\n    window.apstag.init({\r\n      pubID: '83d5088d-5f70-4acf-a888-15a83bf33932',\r\n      adServer: 'googletag',\r\n      schain: {\r\n        complete: 1,\r\n        ver: '1.0',\r\n        nodes: [{\r\n          asi: 'zerodegreeads.com',\r\n          sid: '2026ZD035',\r\n          hp: 1\r\n        }]\r\n      }\r\n    });\r\n  }\r\n\r\n  function initGa() {\r\n    window.googletag.cmd.push(() => {\r\n      const handleSlotRenderEnded = () => {\r\n        gtag('js', new Date());\r\n        gtag('config', GA_ID);\r\n\r\n        googletag.pubads().removeEventListener('slotRenderEnded', handleSlotRenderEnded);\r\n      };\r\n      googletag.pubads().addEventListener('slotRenderEnded', handleSlotRenderEnded);\r\n    });\r\n  }\r\n\r\n  function initIiq() {\r\n    if (!window.IntentIqObject) {\r\n      console.log('IIQ not found - skipping initialization');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      // Configure IntentIQ\r\n      window.intentIq_2072952453 = new IntentIqObject({\r\n        partner: 2072952453,\r\n        pbjs: adnpbjs,\r\n        callback: main,\r\n        timeoutInMillis: PREBID_TIMEOUT_MS,\r\n        ABTestingConfigurationSource: 'IIQServer',\r\n        manualWinReportEnabled: true,\r\n        domainName: window.location.host,\r\n        vrBrowserBlackList: ['chrome'],\r\n        gamParameterName: 'googletag', // Optional\r\n      });\r\n\r\n      adnpbjs.onEvent('bidWon', (data) => {\r\n        window.intentIq_2072952453.reportExternalWin({\r\n          biddingPlatformId: 1, // PreBid\r\n          partnerAuctionId: data.auctionId,\r\n          bidderCode: data.bidderCode,\r\n          prebidAuctionId: data.auctionId,\r\n          cpm: data.cpm,\r\n          currency: 'USD',\r\n          originalCpm: data.originalCpm,\r\n          originalCurrency: 'USD',\r\n          status: data.status,\r\n          placementId: data.adUnitCode\r\n        });\r\n      });\r\n\r\n    } catch (err) {\r\n      console.error('Failed to initialize IntentIQ:', err);\r\n      throw err;\r\n    }\r\n  }\r\n\r\n  function initAds() {\r\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\r\n    adsEl.forEach(slotEl => createAd(slotEl.dataset.adpath));\r\n  }\r\n\r\n  function onImpressionViewable(event) {\r\n    const {\r\n      slot\r\n    } = event;\r\n    const slotId = slot.getSlotElementId();\r\n    if (!activeSlotIds.includes(slotId)) {\r\n      return;\r\n    }\r\n\r\n    const adUnitPath = slot.getAdUnitPath();\r\n    const adUnit = adsConfig[adUnitPath];\r\n    const timeoutMs = adUnit.refreshTime;\r\n\r\n    setTimeout(() => refreshAd(slot, slotId, adUnit), timeoutMs);\r\n  }\r\n\r\n  let firstAdLogged = false;\r\n\r\n  function onFirstAdVisible(event) {\r\n    if (!event.isEmpty && !firstAdLogged) {\r\n      console.log('Time to first ad:', performance.now(), 'ms');\r\n      firstAdLogged = true;\r\n      googletag.pubads().removeEventListener('slotRenderEnded', onFirstAdVisible);\r\n    }\r\n  }\r\n\r\n  function collectAds() {\r\n    adUnits.length = 0;\r\n\r\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\r\n    if (!adsEl.length) {\r\n      console.warn('No ads found to collect');\r\n      return;\r\n    }\r\n\r\n    adsEl.forEach((slotEl) => {\r\n      const adPath = slotEl.dataset.adpath;\r\n      const slot = adsConfig[adPath];\r\n      const slotId = slot?.id;\r\n      const sizes = slot?.sizeMapping[viewportType];\r\n\r\n      if (!sizes?.length) {\r\n        console.warn(\r\n          'Failed to find slot sizes for viewport - bids will be affected for',\r\n          viewportType, slotId\r\n        );\r\n        return;\r\n      }\r\n\r\n      const slotBidders = [...bidders];\r\n      const tagMap = {\r\n        ATF: \"ATF\",\r\n        Content: \"Content\",\r\n        BTF: \"BTF\",\r\n        Side: \"Side\",\r\n        SideATF: \"SideATF\",\r\n        Sticky: \"Sticky\"\r\n      };\r\n\r\n      slotBidders.push({\r\n        bidder: \"taboola\",\r\n        params: {\r\n          tagId: tagMap[slot.position] || \"ROS\",\r\n          publisherId: \"2022469\"\r\n        }\r\n      });\r\n      const STANDARD_SIZES = {\r\n        desktop: [\r\n          [1, 1],\r\n          [728, 90],\r\n          [970, 90],\r\n          [970, 250],\r\n          [300, 250],\r\n          [300, 600],\r\n          [160, 600],\r\n          [336, 280],\r\n          [320, 50],\r\n          [320, 100],\r\n        ],\r\n        tablet: [\r\n          [1, 1],\r\n          [728, 90],\r\n          [300, 250],\r\n          [300, 600],\r\n          [160, 600],\r\n          [336, 280],\r\n        ],\r\n        mobile: [\r\n          [1, 1],\r\n          [320, 50],\r\n          [320, 100],\r\n          [300, 250],\r\n          [336, 280],\r\n          [360, 360],\r\n        ]\r\n      };\r\n\r\n      const hasOnlyStandardSizes = (size) => {\r\n        const sizes = [size];\r\n        const standardSizes = STANDARD_SIZES[viewportType] || [];\r\n        const isNative = (w, h) => w === 1 && h === 2;\r\n\r\n        return sizes.every(size => {\r\n          if (Array.isArray(size)) {\r\n            const [w, h] = size;\r\n            return isNative(w, h) ?\r\n              true :\r\n              standardSizes.some(([sw, sh]) => sw === w && sh === h);\r\n          }\r\n          return false;\r\n        });\r\n      }\r\n\r\n      const prebidSizes = sizes.filter(hasOnlyStandardSizes);\r\n\r\n      if (!prebidSizes.length) {\r\n        console.log('No Prebid sizes for', slotId);\r\n\r\n      } else {\r\n        adUnits.push({\r\n          bids: slotBidders,\r\n          code: slotId,\r\n          mediaTypes: {\r\n            banner: {\r\n              sizes: prebidSizes\r\n            }\r\n          }\r\n        });\r\n      }\r\n    });\r\n\r\n    newPbjsAdUnits.length = 0;\r\n    newPbjsAdUnits.push(...adUnits);\r\n\r\n    window.adnpbjs.que.push(() => {\r\n      window.adnpbjs.bidderSettings = bidderSettings;\r\n      window.adnpbjs.setConfig(pbjsConfig);\r\n      window.adnpbjs.setBidderConfig({\r\n        bidders: ['sparteo'],\r\n        config: {\r\n          ortb2: {\r\n            source: {\r\n              ext: {\r\n                schain: {\r\n                  ver: \"1.0\",\r\n                  complete: 1,\r\n                  nodes: [{\r\n                    asi: \"zerodegreeads.com\",\r\n                    sid: \"2026ZD035\",\r\n                    hp: 1\r\n                  }]\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  function runApsBids(slotEl, resolve) {\r\n    return;\r\n\r\n    const slotId = slotEl.id;\r\n    const adPath = slotEl.dataset.adpath;\r\n\r\n    const sizes = adsConfig[adPath].sizeMapping[viewportType];\r\n    if (!sizes.length) {\r\n      console.warn(\r\n        'Failed to find slot sizes for viewport - canceling APS bid for',\r\n        viewportType, slotId\r\n      );\r\n      resolve();\r\n      return;\r\n    }\r\n\r\n    const slots = [{\r\n      slotID: slotId,\r\n      slotName: adsConfig[adPath].id,\r\n      sizes\r\n    }];\r\n\r\n    window.apstag.fetchBids({\r\n      slots,\r\n      timeout: APS_TIMEOUT_MS\r\n    }, () => {\r\n      window.apstag.setDisplayBids();\r\n      resolve();\r\n    });\r\n  }\r\n\r\n  function runPrebidBids(slotEl, resolve) {\r\n    const slotId = slotEl.id;\r\n    window.adnpbjs.que.push(() =>\r\n      window.adnpbjs.requestBids({\r\n        timeout: PREBID_TIMEOUT_MS,\r\n        adUnitCodes: [slotId],\r\n        bidsBackHandler: () => {\r\n          window.adnpbjs.setTargetingForGPTAsync([slotId]);\r\n          resolve();\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  async function runBids(slotEl) {\r\n\r\n    const slotId = slotEl.id;\r\n    const safeBids = (bidsFn) => Promise.race([\r\n      new Promise((resolve) => bidsFn(slotEl, resolve)),\r\n      new Promise((resolve) => setTimeout(resolve, 3000))\r\n    ]);\r\n    // const apsBids = safeBids(runApsBids);\r\n    const pbjsBids = safeBids(runPrebidBids);\r\n    await Promise.allSettled([pbjsBids]);\r\n  }\r\n\r\n  async function createAdCmd(slotName) {\r\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\r\n    if (!slotEl) {\r\n      console.warn('Failed to find ad to create by id:', slotName);\r\n      return;\r\n    }\r\n\r\n    collectAds();\r\n\r\n    let adUnit = adsConfig[slotName];\r\n    if (!adUnit) {\r\n      console.warn('Failed to find ad with the following id:', slotName);\r\n      return;\r\n    }\r\n\r\n    const sizeMapping = googletag\r\n      .sizeMapping()\r\n      .addSize([980, 200], adUnit.sizeMapping.desktop)\r\n      .addSize([730, 200], adUnit.sizeMapping.tablet)\r\n      .addSize([0, 0], adUnit.sizeMapping.mobile)\r\n      .build();\r\n\r\n    const adPath = slotEl.dataset.adpath;\r\n    let refreshIteration = adsConfig[adPath].refreshIteration;\r\n    refreshIteration++;\r\n\r\n    const slot = googletag\r\n      .defineSlot(adUnit.id, adUnit.size)\r\n      .defineSizeMapping(sizeMapping)\r\n      .addService(window.googletag.pubads());\r\n\r\n    slot.setConfig({ targeting: { refreshIteration: refreshIteration.toString(), intent_iq_group: 'U' } });\r\n\r\n    slotEl.id = slot.getSlotElementId();\r\n\r\n    const pbjsAdUnit = newPbjsAdUnits.find(adUnit => adUnit.code === slotName);\r\n    if (pbjsAdUnit) {\r\n      pbjsAdUnit.code = slotEl.id;\r\n      window.adnpbjs.addAdUnits(pbjsAdUnit);\r\n    }\r\n\r\n    slotsMap[slotEl.id] = slot;\r\n    activeSlotIds.push(slotEl.id);\r\n\r\n    const init = async () => {\r\n      try {\r\n        await runBids(slotEl);\r\n        window.googletag.enableServices();\r\n        window.googletag.display(slotEl.id);\r\n        if (googletag.getConfig('disableInitialLoad').disableInitialLoad) {\r\n          window.googletag.pubads().refresh([slot]);\r\n        }\r\n      } catch (err) {\r\n        console.error('Failed to run bids for ad slot: %s, %s', slotEl.id, err);\r\n      }\r\n    };\r\n\r\n    const isLazyLoaded = adsConfig[adPath]?.isLazyLoaded !== false;\r\n    if (isLazyLoaded) {\r\n      lazyLoader.add(slotEl, init);\r\n    } else {\r\n      init();\r\n    }\r\n  }\r\n\r\n  async function refreshAd(slot, slotId, adUnit) {\r\n    try {\r\n      const adUnitToRefresh = googletag\r\n        .pubads()\r\n        .getSlots()\r\n        .filter((slot) => slot.getSlotElementId() === slotId)\r\n        .at(0);\r\n\r\n      if (!adUnitToRefresh) {\r\n        return;\r\n      }\r\n\r\n      adUnit.refreshIteration++;\r\n      slot.setConfig({ targeting: { refreshIteration: adUnit.refreshIteration.toString() } });\r\n\r\n      const slotEl = document.getElementById(adUnitToRefresh.getSlotElementId());\r\n      await runBids(slotEl);\r\n\r\n      window.googletag.pubads().refresh([slotsMap[slotEl.id]]);\r\n    } catch (err) {\r\n      console.error('Failed to refresh ad:', slotId, err.message);\r\n    }\r\n  }\r\n\r\n  function destroyAdCmd(slotName) {\r\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\r\n    if (!slotEl) {\r\n      console.warn('Failed to find ad to destroy by id:', slotName);\r\n      return;\r\n    }\r\n\r\n    const slotId = slotEl.id;\r\n    if (slotId && slotsMap[slotId]) {\r\n      window.googletag.destroySlots([slotsMap[slotId]]);\r\n      delete slotsMap[slotId];\r\n      const idx = activeSlotIds.indexOf(slotId);\r\n      if (idx > -1) {\r\n        activeSlotIds.splice(idx, 1);\r\n      }\r\n    }\r\n\r\n    slotEl.innerHTML = '';\r\n    slotEl.id = '';\r\n    slotEl.removeAttribute('data-onpage');\r\n    if (slotId.toLowerCase().includes('sticky_footer')) {\r\n      slotEl.parentElement.parentElement.remove();\r\n    }\r\n  }\r\n\r\n  function createNativeCmd() {\r\n    createScript('https://cdn.taboola.com/libtrc/adnimationnetwork/loader.js', (scriptEl) => {\r\n      scriptEl.id = 'tb_loader_script';\r\n      scriptEl.onload = () => {\r\n        window.performance?.mark?.('tbl_ic');\r\n      };\r\n    });\r\n\r\n    createScript('data:text/javascript;charset=utf-8,_taboola.push({flush:true})', (scriptEl) => {\r\n      scriptEl.setAttribute('data-taboola-flush', 'true');\r\n      scriptEl.defer = true;\r\n    });\r\n  }\r\n\r\n  function destroyNativeCmd() {\r\n    const footerEl = document.querySelector('.adn-footer');\r\n    if (footerEl) {\r\n      footerEl.innerHTML = '';\r\n    }\r\n  }\r\n\r\n  function createNative() {\r\n    window.googletag.cmd.push(createNativeCmd);\r\n  }\r\n\r\n  function destroyNative() {\r\n    window.googletag.cmd.push(destroyNativeCmd);\r\n  }\r\n\r\n  function createAd(slotName) {\r\n    window.googletag.cmd.push(() => createAdCmd(slotName));\r\n  }\r\n\r\n  function destroyAd(slotName) {\r\n    window.googletag.cmd.push(() => destroyAdCmd(slotName));\r\n  }\r\n\r\n  function createInterstitial() {\r\n    window.googletag.cmd.push(createInterstitialCmd);\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // Exports\r\n  // ----------------------------------------------\r\n\r\n  window.adn = {\r\n    createAd,\r\n    destroyAd,\r\n    createNative,\r\n    destroyNative,\r\n    createInterstitial,\r\n  };\r\n\r\n  // ----------------------------------------------\r\n  // Utils\r\n  // ----------------------------------------------\r\n\r\n  async function getIpInfo() {\r\n    try {\r\n      const cached = localStorage.getItem('ipinfo');\r\n      if (cached) return JSON.parse(cached);\r\n      const key = '7c4d73767e64472ea502eacdbc47386b';\r\n      const url = `https://d2dvy74lyjayxz.cloudfront.net/?key=${key}`;\r\n      const res = await fetch(url);\r\n      if (!res.ok) throw new Error(`HTTP-${res.status}`);\r\n      const ipInfo = await res.json();\r\n      localStorage.setItem('ipinfo', JSON.stringify(ipInfo));\r\n      localStorage.removeItem('adngeo'); // Old version cleanup\r\n      return ipInfo;\r\n    } catch (err) {\r\n      console.error('Failed to get ip info:', err.message);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  async function getCountry() {\r\n    const ipInfo = await getIpInfo();\r\n    return ipInfo?.country ?? 'US';\r\n  }\r\n\r\n  async function getPlatform() {\r\n    const ipInfo = await getIpInfo();\r\n    return ['ios','android','mobile','desktop'].find(k => ipInfo?.[k]) ?? 'desktop';\r\n  }\r\n\r\n  async function waitForElement(selector) {\r\n    let cnt = 0;\r\n    const timeout = 100;\r\n    const threshold = 3000 / timeout;\r\n    return new Promise((resolve) => {\r\n      let interval = setInterval(() => {\r\n        const el = document.querySelector(selector);\r\n        if (el) {\r\n          clearInterval(interval);\r\n          resolve(el);\r\n        }\r\n        if (++cnt === threshold) {\r\n          cnt = 0;\r\n          console.warn('Still waiting for selector:', selector);\r\n        }\r\n      }, timeout);\r\n    });\r\n  }\r\n\r\n  const onDomReady = (function () {\r\n    const callbacks = [];\r\n\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n      callbacks.forEach((callback) => callback());\r\n      callbacks.length = 0;\r\n    });\r\n\r\n    const interval = setInterval(() => {\r\n      if (\r\n        document.readyState === 'complete' ||\r\n        document.readyState === 'interactive'\r\n      ) {\r\n        clearInterval(interval);\r\n        callbacks.forEach((callback) => callback());\r\n        callbacks.length = 0;\r\n      }\r\n    }, 100);\r\n\r\n    return (callback) => {\r\n      if (\r\n        document.readyState === 'complete' ||\r\n        document.readyState === 'interactive'\r\n      ) {\r\n        setTimeout(callback, 0);\r\n      } else {\r\n        callbacks.push(callback);\r\n      }\r\n    };\r\n  })();\r\n\r\n  // Find \"URL_PATHS_BLACKLIST\" under the \"Configuration\" section.\r\n  // There you can add any additional URL paths to blacklist.\r\n  function isBlacklistedUrl() {\r\n    const {\r\n      pathname\r\n    } = window.location;\r\n    const list = URL_PATHS_BLACKLIST ?? [];\r\n    const isBlacklisted = list.some((path) =>\r\n      path === '/' ? pathname === path : pathname.includes(path));\r\n    return isBlacklisted;\r\n  }\r\n\r\n  function observeSlots() {\r\n    const isVisible = (element) => {\r\n      const style = window.getComputedStyle(element);\r\n      const isDisplayed = style.display !== 'none';\r\n      const isVisible = style.visibility !== 'hidden';\r\n      return isDisplayed && isVisible;\r\n    };\r\n\r\n    const isStyleChanged = (mutation) =>\r\n      mutation.type === 'attributes' &&\r\n      (\r\n        mutation.attributeName === 'style' ||\r\n        mutation.attributeName === 'class'\r\n      );\r\n\r\n    const isVisibilityChanged = (mutation) => {\r\n      const oldStyle = mutation.oldValue || '';\r\n      const newStyle = mutation.target.getAttribute('style') || '';\r\n      const wasHidden = oldStyle.includes('hidden') || oldStyle.includes('none');\r\n      const isHidden = newStyle.includes('hidden') || newStyle.includes('none');\r\n      return wasHidden !== isHidden;\r\n    }\r\n\r\n    const handleAdded = (node) => {\r\n      const slot = node.getAttribute('data-adpath');\r\n      console.log('Added:', slot);\r\n      createAd(slot);\r\n    }\r\n\r\n    const handleRemoved = (node) => {\r\n      const slot = node.getAttribute('data-adpath');\r\n      console.log('Removed:', slot);\r\n      destroyAd(slot);\r\n    }\r\n\r\n    const isAdSlot = (node) => node.hasAttribute?.('data-adpath');\r\n\r\n    const getSlots = (nodeList) =>\r\n      Array.from(nodeList)\r\n      .filter((node) => node.nodeType === Node.ELEMENT_NODE)\r\n      .flatMap((node) => Array.from(node.querySelectorAll('[data-adpath]')).concat(node))\r\n      .filter(isAdSlot);\r\n\r\n    const handleMutations = (mutations) =>\r\n      mutations.forEach((mutation) => {\r\n        const addedNodes = getSlots(mutation.addedNodes);\r\n        const removedNodes = getSlots(mutation.removedNodes);\r\n\r\n        addedNodes.forEach(handleAdded);\r\n        removedNodes.forEach(handleRemoved);\r\n\r\n        if (\r\n          !addedNodes.includes(mutation.target) &&\r\n          !removedNodes.includes(mutation.target) &&\r\n          isStyleChanged(mutation) &&\r\n          isVisibilityChanged(mutation)\r\n        ) {\r\n          const childNodes = getSlots(mutation.target);\r\n          childNodes.forEach((node) => {\r\n            if (isVisible(node)) {\r\n              handleAdded(node);\r\n            } else {\r\n              handleRemoved(node);\r\n            }\r\n          });\r\n        }\r\n      });\r\n\r\n    const config = {\r\n      subtree: true,\r\n      childList: true,\r\n      attributes: true,\r\n      attributeFilter: ['style', 'class'],\r\n      attributeOldValue: true\r\n    };\r\n\r\n    const observer = new MutationObserver(handleMutations);\r\n    observer.observe(document, config);\r\n  }\r\n\r\n  // ----------------------------------------------\r\n  // Custom\r\n  // ----------------------------------------------\r\n\r\n  function createStickyBanner() {\r\n\r\n    const addCloseButton = (stickyBannerSizeDiv) => {\r\n      const el = document.createElement('div');\r\n      el.innerText = 'Close';\r\n      el.style.position = 'absolute';\r\n      el.style.top = '-20px';\r\n      el.style.right = '0px';\r\n      el.style.height = '20px';\r\n      el.style.width = '50px';\r\n      el.style.color = 'white';\r\n      el.style.borderRadius = '2px';\r\n      el.style.backgroundColor = '#72bfbe';\r\n      el.style.cursor = 'pointer';\r\n      el.style.fontSize = '14px';\r\n      el.style.textAlign = 'center';\r\n      el.classList.add('closeButton');\r\n      el.onclick = function () {\r\n        this.parentElement.remove();\r\n      };\r\n      stickyBannerSizeDiv.append(el);\r\n    };\r\n\r\n    const stickyBannerParent = document.createElement('div');\r\n    stickyBannerParent.classList.add('adnSticky');\r\n    stickyBannerParent.style.position = 'fixed';\r\n    stickyBannerParent.style.display = 'flex';\r\n    stickyBannerParent.style.justifyContent = 'space-evenly';\r\n    stickyBannerParent.style.bottom = '0px';\r\n    stickyBannerParent.style.width = '100%';\r\n    stickyBannerParent.style.backgroundColor = 'transparent';\r\n    stickyBannerParent.style.zIndex = '9999999999';\r\n\r\n    const stickyBannerSizeDiv = document.createElement('div');\r\n    stickyBannerSizeDiv.style.position = 'relative';\r\n\r\n    const stickyBanner = document.createElement('div');\r\n    stickyBanner.dataset.onpage = !0;\r\n    stickyBanner.dataset.adpath = '/339474670,109048388/Flashbak/Sticky_Footer';\r\n\r\n    stickyBannerSizeDiv.append(stickyBanner);\r\n    stickyBannerParent.append(stickyBannerSizeDiv);\r\n    document.getElementsByTagName('body')[0].append(stickyBannerParent);\r\n\r\n    let flag = true;\r\n    googletag.cmd.push(() => {\r\n      googletag.pubads().addEventListener('slotRenderEnded', (event) => {\r\n        if (\r\n          event.slot.getSlotElementId().includes('Sticky_Footer') &&\r\n          !event.isEmpty && flag\r\n        ) {\r\n          flag = false;\r\n          addCloseButton(stickyBannerSizeDiv);\r\n        }\r\n      });\r\n      googletag.enableServices();\r\n    });\r\n\r\n  }\r\n\r\n  function addInContentAdUnits() {\r\n    const paragraphs = document.querySelectorAll('.entry-content.alignleft > p');\r\n    if (!paragraphs.length) return;\r\n\r\n    const MAX_ADS = 5;\r\n    const START_AT = 6; // before 6th p\r\n    const STEP = 10; // then every 10th p\r\n\r\n    let injected = 0;\r\n\r\n    for (let i = START_AT - 1; i < paragraphs.length && injected < MAX_ADS; i += STEP) {\r\n      const pElement = paragraphs[i];\r\n      const adpath = `/339474670,109048388/Flashbak/InContent_${injected}`;\r\n\r\n      // Prevent duplicate injection for this slot\r\n      if (document.querySelector(`[data-adpath=\"${adpath}\"]`)) {\r\n        injected++;\r\n        continue;\r\n      }\r\n\r\n      const el = document.createElement('div');\r\n      el.dataset.onpage = \"true\";\r\n      el.dataset.adpath = adpath;\r\n      el.style.textAlign = 'center';\r\n      el.style.marginTop = '40px';\r\n      el.style.marginBottom = '40px';\r\n      el.style.minHeight = '250px';\r\n      //el.style.backgroundColor = 'red';\r\n\r\n      // ✅ Inject BEFORE the target paragraph\r\n      pElement.parentElement.insertBefore(el, pElement);\r\n\r\n      injected++;\r\n    }\r\n  }\r\n\r\n  function addAtfUnit() {\r\n\r\n    const anchor = document.querySelector('#masthead');\r\n    if (!anchor) return;\r\n\r\n    // Prevent duplicate injection\r\n    if (document.querySelector('[data-adpath=\"/339474670,109048388/Flashbak/ATF\"]')) {\r\n      return;\r\n    }\r\n\r\n    const el = document.createElement('div');\r\n    el.dataset.onpage = \"true\";\r\n    el.dataset.adpath = '/339474670,109048388/Flashbak/ATF';\r\n    el.style.textAlign = 'center';\r\n    el.style.marginTop = '40px';\r\n    el.style.marginBottom = '40px';\r\n    el.style.minHeight = '250px';\r\n    //el.style.backgroundColor = 'red';\r\n\r\n    // ✅ Inject AFTER the selector\r\n    anchor.insertAdjacentElement('afterend', el);\r\n  }\r\n\r\n  function addSectionAdUnits() {\r\n    // ✅ Homepage only\r\n    const isHome =\r\n      window.location.pathname === \"/\" ||\r\n      window.location.pathname === \"\";\r\n\r\n    if (!isHome) return;\r\n\r\n    const anchor = document.querySelector(\r\n      '#main > div.inner-pad.inner-pad-flex > div.latest-flashbak > div:nth-child(3)'\r\n    );\r\n\r\n    if (!anchor) return;\r\n\r\n    const adpath = '/339474670,109048388/Flashbak/Middle';\r\n\r\n    // Prevent duplicate injection\r\n    if (document.querySelector(`[data-adpath=\"${adpath}\"]`)) {\r\n      return;\r\n    }\r\n\r\n    const el = document.createElement('div');\r\n    el.dataset.onpage = \"true\";\r\n    el.dataset.adpath = adpath;\r\n    el.style.textAlign = '-webkit-center';\r\n    el.style.marginTop = '40px';\r\n    el.style.marginBottom = '40px';\r\n    el.style.minHeight = '250px';\r\n    //el.style.backgroundColor = 'red';\r\n\r\n    // ✅ Inject AFTER the selector\r\n    anchor.insertAdjacentElement('afterend', el);\r\n  }\r\n\r\n  function addSideBarAdUnits() {\r\n    const items = document.querySelectorAll('#sidebar-home > ul > li');\r\n    if (!items.length) return;\r\n\r\n    const MAX_ADS = 3;\r\n    let injected = 0;\r\n\r\n    items.forEach((li, index) => {\r\n      // Only every 3rd item (3, 6, 9...)\r\n      if ((index + 1) % 3 !== 0) return;\r\n\r\n      if (injected >= MAX_ADS) return;\r\n\r\n      const adpath = `/339474670,109048388/Flashbak/Side_${injected}`;\r\n\r\n      // Prevent duplicate for this specific slot\r\n      if (li.parentElement.querySelector(`[data-adpath=\"${adpath}\"]`)) {\r\n        injected++;\r\n        return;\r\n      }\r\n\r\n      const el = document.createElement('div');\r\n      el.dataset.onpage = \"true\";\r\n      el.dataset.adpath = adpath;\r\n      el.style.textAlign = 'center';\r\n      el.style.marginTop = '40px';\r\n      el.style.marginBottom = '40px';\r\n      el.style.minHeight = '250px';\r\n      //el.style.backgroundColor = 'red';\r\n\r\n      // ✅ Inject AFTER the current li\r\n      li.insertAdjacentElement('afterend', el);\r\n\r\n      injected++;\r\n    });\r\n  }\r\n\r\n  function createInterstitialCmd() {\r\n\r\n    const slot = window.googletag.defineOutOfPageSlot(\r\n      '/339474670,109048388/Flashbak/Flashbak_Interstitial', window.googletag.enums.OutOfPageFormat.INTERSTITIAL);\r\n\r\n    if (!slot) {\r\n      console.error('Failed to define out of page slot - Interstitial');\r\n      return;\r\n    }\r\n\r\n    slot.addService(window.googletag.pubads());\r\n    window.googletag.enableServices();\r\n    window.googletag.display(slot);\r\n\r\n  }\r\n\r\n  function injectTruvidPlayer() {\r\n\r\n    const selector = \".entry-content > p:nth-of-type(2)\";\r\n    const anchor = document.querySelector(selector);\r\n\r\n    if (!anchor) return;\r\n\r\n    const SRC = \"https://go.trvdp.com/init/17713.js?pid=13846\";\r\n\r\n    // Prevent duplicate injection\r\n    if (document.querySelector(`script[src=\"${SRC}\"]`)) return;\r\n\r\n    const container = document.createElement(\"div\");\r\n    container.style.paddingBottom = \"10px\";\r\n\r\n    const s = document.createElement(\"script\");\r\n    s.setAttribute(\"data-cfasync\", \"false\");\r\n    s.async = true;\r\n    s.type = \"text/javascript\";\r\n    s.src = SRC;\r\n\r\n    container.appendChild(s);\r\n\r\n    anchor.insertAdjacentElement(\"afterend\", container);\r\n  }\r\n\r\n  function injectTaboolaFooterFeed() {\r\n    // 1. Check for Desktop viewport (typically 1024px and up)\r\n    if (!window.matchMedia(\"(min-width: 1024px)\").matches) {\r\n      console.log('Taboola: Mobile/Tablet detected. Skipping injection.');\r\n      return;\r\n    }\r\n\r\n    // Select all elements matching the selector\r\n    var elements = document.querySelectorAll('.related-posts.inner-pad.inner-border.col-group.quarter');\r\n\r\n    // Check if elements exist\r\n    if (elements.length === 0) {\r\n      console.log('No elements found with the selector.');\r\n      return;\r\n    }\r\n\r\n    // Loop through each matched element\r\n    elements.forEach(function (element) {\r\n      // Create the <div> element\r\n      var divElement = document.createElement('div');\r\n      divElement.id = 'taboola-mid-article-thumbnails-3x2';\r\n      divElement.style.maxWidth = '970px'; // Limit width to 970px\r\n      divElement.style.margin = '0 auto'; // Center the widget\r\n\r\n      // Create the <script> element\r\n      var scriptElement = document.createElement('script');\r\n      scriptElement.type = 'text/javascript';\r\n      scriptElement.text = `\r\n            window._taboola = window._taboola || [];\r\n            _taboola.push({\r\n                mode: 'thumbnails-InArticle-3x2',\r\n                container: 'taboola-mid-article-thumbnails-3x2',\r\n                placement: 'Mid Article Thumbnails 3x2',\r\n                target_type: 'mix'\r\n            });\r\n        `;\r\n\r\n      // Append the <div> and <script> to the current element\r\n      element.appendChild(divElement);\r\n      element.appendChild(scriptElement);\r\n    });\r\n\r\n    console.log('Taboola 3x2 footer feed injected successfully on desktop.');\r\n  }\r\n\r\n  function injectTaboolaSPLITArticleFooterFeed() {\r\n\r\n    // 1. Mobile-only check (typically screens smaller than 1024px)\r\n    if (!window.matchMedia(\"(max-width: 1023px)\").matches) {\r\n      console.log('Taboola SPLIT: Desktop detected. Skipping injection.');\r\n      return;\r\n    }\r\n\r\n    // 2. Target the anchor\r\n    const anchor = document.querySelector('.related-posts.inner-pad.inner-border.col-group.quarter');\r\n\r\n    if (!anchor || !anchor.parentNode) {\r\n      console.log('Anchor element not found — skipping injection.');\r\n      return;\r\n    }\r\n\r\n    // 3. Prevent duplicate injection\r\n    if (document.getElementById('taboola-flashbak-feed')) {\r\n      console.log('Taboola SPLIT article footer feed already injected.');\r\n      return;\r\n    }\r\n\r\n    // 4. Create Taboola container\r\n    const divElement = document.createElement('div');\r\n    divElement.id = 'taboola-flashbak-feed';\r\n\r\n    divElement.style.margin = '40px 0';\r\n    divElement.style.width = '100%';\r\n    divElement.style.boxSizing = 'border-box';\r\n\r\n    // 5. Clean CSS Injection\r\n    if (!document.getElementById('taboola-flashbak-feed-style')) {\r\n      const style = document.createElement('style');\r\n      style.id = 'taboola-flashbak-feed-style';\r\n      style.innerHTML = `\r\n      #taboola-flashbak-feed {\r\n        display: block;\r\n        clear: both;\r\n      }\r\n    `;\r\n      document.head.appendChild(style);\r\n    }\r\n\r\n    // 6. Inject BEFORE the anchor\r\n    anchor.insertAdjacentElement('beforebegin', divElement);\r\n\r\n    // 7. Taboola script initialization\r\n    const scriptElement = document.createElement('script');\r\n    scriptElement.type = 'text/javascript';\r\n    scriptElement.text = `\r\n    window._taboola = window._taboola || [];\r\n    _taboola.push({\r\n      mode: 'alternating-thumbnails-a',\r\n      container: 'taboola-flashbak-feed',\r\n      placement: 'Flashbak Feed',\r\n      target_type: 'mix'\r\n    });\r\n  `;\r\n\r\n    divElement.appendChild(scriptElement);\r\n\r\n    console.log('Taboola SPLIT article footer feed injected (Mobile only).');\r\n  }\r\n\r\n  onDomReady(async () => {\r\n    try {\r\n      // Add custom slots creation logic here 👇\r\n      createNative();\r\n      //createInterstitial();\r\n      createStickyBanner();\r\n      addInContentAdUnits();\r\n      addAtfUnit();\r\n      addSectionAdUnits();\r\n      addSideBarAdUnits();\r\n      injectTruvidPlayer();\r\n\r\n      // if (!window.location.href.includes('photographs-london-david-wisdom-61317')) {\r\n      injectTaboolaFooterFeed();\r\n      // }\r\n\r\n      // if (window.location.href.includes('photographs-london-david-wisdom-61317')) {\r\n      injectTaboolaSPLITArticleFooterFeed();\r\n      // }\r\n\r\n    } catch (err) {\r\n      console.error('Failed to create slots:', err.stack);\r\n    }\r\n\r\n    // Must be called last\r\n    initAds();\r\n    observeSlots();\r\n  });\r\n\r\n})(window, document);"]}