{"version":3,"sources":["prebid.js","iiq.js","pricing.js","https://adncdn.net/0"],"names":["window","document","URL_PATHS_BLACKLIST","Object","freeze","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","siteId","unit","delDomain","pkey","zoneId","pubId","placement","tagId","placement_id","placementId","cId","pId","filter","name","toLowerCase","replace","includes","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","pid","partner","refreshInSeconds","detectMissingSizes","aliasSyncEnabled","auctionOptions","suppressStaleRender","version","customer","realTimeData","dataProviders","waitForIt","adServerTargeting","gtag","dataLayer","push","arguments","pbjs","que","googletag","cmd","pubads","addEventListener","onImpressionViewable","setConfig","collapseDiv","_taboola","PREBID_TIMEOUT_MS","createScript","src","preCreate","scriptEl","querySelector","console","warn","attemptLoad","createElement","fetchPriority","defer","remove","head","appendChild","pathname","location","some","path","isBlacklistedUrl","all","then","log","handleSlotRenderEnded","removeEventListener","IntentIqObject","intentIq_2072952453","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","collectAds","length","adsEl","querySelectorAll","adPath","adpath","sizes","slotBidders","ATF","Content","BTF","Side","SideATF","Sticky","publisherId","STANDARD_SIZES","prebidSizes","viewport","Array","isArray","standardSizes","every","w","h","isNative","sw","sh","hasOnlyStandardSizes","bids","code","mediaTypes","setBidderConfig","ortb2","source","ext","pbjsBids","requestBids","adUnitCodes","bidsBackHandler","setTargetingForGPTAsync","runPrebidBids","allSettled","promise","ms","race","_","reject","Error","e","createNativeCmd","onload","performance","mark","destroyNativeCmd","footerEl","innerHTML","createNative","createAd","slotName","addSize","build","defineSlot","defineSizeMapping","addService","intent_iq_group","pbjsAdUnit","find","addAdUnits","init","enableServices","display","getConfig","disableInitialLoad","createAdCmd","destroyAd","destroySlots","idx","indexOf","splice","removeAttribute","parentElement","destroyAdCmd","getIpInfo","cached","localStorage","getItem","JSON","parse","url","res","fetch","ok","ipInfo","json","setItem","stringify","removeItem","adn","destroyNative","createInterstitial","createInterstitialCmd","onDomReady","callbacks","interval","setInterval","readyState","clearInterval","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","href","innerWidth","base","onpage","textAlign","marginTop","marginBottom","minHeight","cloneNode","addSideBarSkyLeftAdUnits","addSideBarSkyRightAdUnits","elements","divElement","scriptElement","text","injectTaboolaRightStickyWidget","el","addTopMobileAdUnits","addTopDesktopAdUnits","injectTaboolaMobileTop","height","injectTaboolaHeaderWidget","taboolaDiv","body","mode","container","target_type","createNextUpNow","injectTaboolaSideWidget","maxWidth","prepend","injectTaboolaFooterFeed","injectTaboolaMobileFooterFeed","injectTaboolaForumWidget","injectTaboolaContentWidget","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;CCAA,eAAgBA,EAAQC,GAMtB,MAAMC,EAAsBC,OAAOC,OAAO,CAExC,eACH,kBAGOC,EAAYF,OAAOC,OAAO,CAC9B,4BAA6B,CACzBE,GAAM,4BACNC,KAAQ,CACJ,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,KAEVC,SAAY,UACZC,cAAgB,EAChBC,iBAAoB,EACpBC,YAAe,CACXC,QAAW,CACP,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEVC,OAAU,CACN,CAAC,IAAK,IACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEVC,OAAU,CACN,CAAC,IAAK,KACN,CAAC,IAAK,OAGdC,YAAe,KAEnB,4BAA6B,CACzBT,GAAM,4BACNC,KAAQ,CACJ,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,IACN,CAAC,IAAK,KAEVC,SAAY,UACZC,cAAgB,EAChBC,iBAAoB,EACpBC,YAAe,CACXC,QAA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","file":"aJRwaiwp","sourcesContent":[null,null,null,"(async function(window, document) {\n\n// ----------------------------------------------\n  // Configuration\n  // ----------------------------------------------\n\n  const URL_PATHS_BLACKLIST = Object.freeze([\n    // Add a list of URL paths to exclude 👇\n    \"register.php\",\n\t\"loginpage.php\"\n  ]);\n\n  const adsConfig = Object.freeze({\n    \"/34575423/FXP/InContent_0\": {\n        \"id\": \"/34575423/FXP/InContent_0\",\n        \"size\": [\n            [300, 250],\n            [336, 280],\n            [728, 90],\n            [970, 90]\n        ],\n        \"position\": \"Content\",\n        \"isLazyLoaded\": true,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"tablet\": [\n                [728, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/InContent_2\": {\n        \"id\": \"/34575423/FXP/InContent_2\",\n        \"size\": [\n            [300, 250],\n            [336, 280],\n            [728, 90],\n            [970, 90]\n        ],\n        \"position\": \"Content\",\n        \"isLazyLoaded\": true,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"tablet\": [\n                [728, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/Sticky_Footer\": {\n        \"id\": \"/34575423/FXP/Sticky_Footer\",\n        \"size\": [\n            [320, 50],\n            [728, 90],\n            [970, 90]\n        ],\n        \"position\": \"Sticky\",\n        \"isLazyLoaded\": false,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90]\n            ],\n            \"tablet\": [\n                [728, 90]\n            ],\n            \"mobile\": [\n                [320, 50]\n            ]\n        },\n        \"refreshTime\": 45000\n    },\n    \"/34575423/FXP/ATF\": {\n        \"id\": \"/34575423/FXP/ATF\",\n        \"size\": [\n            [300, 250],\n            [336, 280],\n            [728, 90],\n            [970, 90],\n            [970, 250]\n        ],\n        \"position\": \"ATF\",\n        \"isLazyLoaded\": false,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90],\n                [970, 250]\n            ],\n            \"tablet\": [\n                [728, 90]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/ForumCube\": {\n        \"id\": \"/34575423/FXP/ForumCube\",\n        \"size\": [\n            [300, 250],\n            [336, 280]\n        ],\n        \"position\": \"Content\",\n        \"isLazyLoaded\": true,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [300, 250],\n                [336, 280]\n            ],\n            \"tablet\": [\n                [300, 250],\n                [336, 280]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/InContent_1\": {\n        \"id\": \"/34575423/FXP/InContent_1\",\n        \"size\": [\n            [300, 250],\n            [336, 280],\n            [728, 90],\n            [970, 90]\n        ],\n        \"position\": \"Content\",\n        \"isLazyLoaded\": true,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"tablet\": [\n                [728, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/InContent_3\": {\n        \"id\": \"/34575423/FXP/InContent_3\",\n        \"size\": [\n            [300, 250],\n            [336, 280],\n            [728, 90],\n            [970, 90]\n        ],\n        \"position\": \"Content\",\n        \"isLazyLoaded\": true,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [728, 90],\n                [970, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"tablet\": [\n                [728, 90],\n                [300, 250],\n                [336, 280]\n            ],\n            \"mobile\": [\n                [300, 250],\n                [336, 280]\n            ]\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/Sky_Left\": {\n        \"id\": \"/34575423/FXP/Sky_Left\",\n        \"size\": [\n            [120, 600],\n            [160, 600],\n            [300, 600]\n        ],\n        \"position\": \"Sticky\",\n        \"isLazyLoaded\": false,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [120, 600],\n                [160, 600],\n            ],\n            \"tablet\": [\n                [120, 600],\n            ],\n            \"mobile\": []\n        },\n        \"refreshTime\": 30000\n    },\n    \"/34575423/FXP/Sky_Right\": {\n        \"id\": \"/34575423/FXP/Sky_Right\",\n        \"size\": [\n            [120, 600],\n            [160, 600],\n            [300, 600]\n        ],\n        \"position\": \"Sticky\",\n        \"isLazyLoaded\": false,\n        \"refreshIteration\": 0,\n        \"sizeMapping\": {\n            \"desktop\": [\n                [120, 600],\n                [160, 600],\n            ],\n            \"tablet\": [\n                [120, 600],\n            ],\n            \"mobile\": []\n        },\n        \"refreshTime\": 30000\n    }\n});\n  \n  const biddersWhiteList = Object.freeze({\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\"],\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\"],\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\"],\n    \"pubmatic\":[\"US\",\"CA\",\"GB\",\"IE\",\"AU\",\"NZ\",\"DE\",\"AT\",\"CH\",\"NL\",\"BE\",\"NO\",\"SE\",\"FI\",\"DK\",\"IL\",\"PR\"],\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\"],\n    \"openx\":[\"US\",\"CA\"],\n    \"unruly\":[\"US\",\"GB\"],\n  });\n\n  const biddersBlackList = Object.freeze({\n    \"33across\":[\"GH\",\"GB\",\"CA\",\"DE\",\"NL\",\"IL\",\"SG\",\"AU\",\"IT\",\"FR\"],\n    \"adagio\":[\"FR\",\"IL\",\"GB\",\"AU\",\"BE\",\"CH\",\"PH\",\"DE\",\"CN\",\"SG\"],\n    \"adyoulike\":[\"IL\",\"CA\",\"CN\",\"SG\",\"GB\",\"AU\",\"ZA\",\"FR\",\"IN\",\"PK\"],\n    \"amx\":[\"NL\",\"ID\",\"IT\",\"PH\",\"CN\",\"ES\",\"BE\",\"SO\",\"CH\",\"BR\"],\n    \"anyclip\":[\"GH\",\"US\",\"GB\",\"IT\",\"CA\",\"FR\",\"AT\",\"BR\",\"DE\",\"DK\"],\n    \"appnexus\":[\"DE\",\"CA\",\"GB\",\"FR\",\"ID\",\"AU\",\"PH\",\"BR\",\"TH\",\"SG\"],\n    \"contxtful\":[\"IL\",\"IN\",\"GB\",\"ID\",\"SG\",\"KR\",\"CN\",\"PH\",\"DE\",\"TH\"],\n    \"conversant\":[\"IL\",\"IN\",\"KR\",\"PH\",\"TH\",\"JP\",\"VN\",\"PK\",\"CN\",\"EG\"],\n    \"criteo\":[\"CN\",\"BD\",\"BY\",\"KZ\",\"AR\",\"MA\",\"CY\",\"CO\",\"BG\",\"CI\"],\n    \"exco\":[\"US\",\"SG\",\"GB\",\"DE\",\"CA\",\"AU\",\"IT\",\"PL\",\"CN\",\"BR\"],\n    \"fluct\":[\"US\",\"CA\",\"HK\",\"JP\",\"SG\",\"GB\",\"AU\",\"DE\",\"CN\",\"TW\"],\n    \"gamoshi\":[\"US\",\"GB\",\"CA\",\"DE\",\"AU\",\"PH\",\"IT\",\"SG\",\"CN\",\"MY\"],\n    \"ix\":[\"CN\",\"PL\",\"IE\",\"FI\",\"DK\",\"AT\",\"GR\",\"AR\",\"MA\",\"PT\"],\n    \"kueezrtb\":[\"IT\",\"CN\",\"ES\",\"BE\",\"UA\",\"PH\",\"CH\",\"TH\",\"SE\",\"BY\"],\n    \"magnite\":[\"NL\",\"IT\",\"CN\",\"BE\",\"SO\",\"CH\",\"ES\",\"UA\",\"BR\",\"PL\"],\n    \"medianet\":[\"CN\",\"CH\",\"MY\",\"UA\",\"VN\",\"BD\",\"AE\",\"PK\",\"TR\",\"BY\"],\n    \"msft\":[\"CN\",\"SO\",\"SG\",\"UA\",\"PH\",\"BY\",\"KZ\",\"KE\",\"IN\",\"IT\"],\n    \"oms\":[\"SG\",\"IN\",\"IL\",\"NL\",\"ID\",\"KR\",\"IT\",\"PH\",\"TH\",\"CH\"],\n    \"onetag\":[\"CN\",\"PL\",\"BD\",\"GR\",\"SE\",\"PK\",\"CY\",\"RO\",\"AT\",\"PT\"],\n    \"openx\":[\"DE\",\"NL\",\"CN\",\"IT\",\"BE\",\"SO\",\"JP\",\"ES\",\"PH\",\"SE\"],\n    \"pixfuture\":[\"DE\",\"CN\",\"AU\",\"FR\",\"SG\",\"TH\",\"PH\",\"ID\",\"BR\",\"JP\"],\n    \"programmaticx\":[\"FR\",\"SG\",\"IL\",\"GB\",\"ID\",\"IN\",\"KR\",\"DE\",\"PH\",\"JP\"],\n    \"richaudience\":[\"IN\",\"GB\",\"CN\",\"PK\",\"DE\",\"BD\",\"BR\",\"ZA\",\"FR\",\"TW\"],\n    \"rise\":[\"FR\",\"SG\",\"IN\",\"GB\",\"DE\",\"ID\",\"AU\",\"PH\",\"KR\",\"CN\"],\n    \"rubicon\":[\"IL\",\"CA\",\"MY\",\"GH\",\"SG\",\"AU\",\"PR\",\"GB\",\"CN\",\"DE\"],\n    \"seedtag\":[\"CN\",\"PH\",\"NG\",\"IN\",\"NO\",\"AT\",\"MA\",\"DK\",\"MY\",\"CI\"],\n    \"sharethrough\":[\"FR\",\"SG\",\"IL\",\"GB\",\"DE\",\"BE\",\"CH\",\"BR\",\"NL\",\"IT\"],\n    \"smartadserver\":[\"US\",\"SO\",\"GB\",\"IL\",\"CA\",\"KE\",\"SE\",\"NO\",\"NL\",\"CN\"],\n    \"smilewanted\":[\"DE\",\"ID\",\"CN\",\"PH\",\"NL\",\"SE\",\"IT\",\"TH\",\"CH\",\"ES\"],\n    \"sovrn\":[\"NL\",\"SG\",\"IT\",\"CN\",\"ES\",\"SE\",\"VN\",\"MY\",\"NG\",\"MX\"],\n    \"sparteo\":[\"CN\",\"PK\",\"BD\",\"RO\",\"FI\",\"CZ\",\"DZ\",\"NO\",\"HU\",\"DK\"],\n    \"ssp_geniee\":[\"IL\",\"GB\",\"DE\",\"NL\",\"ID\",\"IN\",\"KR\",\"IT\",\"CN\",\"ZA\"],\n    \"teads\":[\"CN\",\"CA\",\"SG\",\"IL\",\"AU\",\"GB\",\"FR\",\"TH\",\"DE\",\"PH\"],\n    \"underdogmedia\":[\"SO\",\"US\",\"CA\",\"ZA\",\"undefined\"],\n    \"unruly\":[\"IN\",\"ID\",\"DE\",\"AU\",\"PH\",\"KR\",\"CN\",\"SG\",\"TH\",\"JP\"],\n    \"vidazoo\":[\"FR\",\"SG\",\"GB\",\"IN\",\"ID\",\"DE\",\"PH\",\"CN\",\"SO\",\"TH\"],\n    \"yandex\":[\"IL\",\"US\",\"CA\",\"DE\",\"UA\",\"AU\",\"GB\",\"BG\",\"KZ\",\"LV\"]\n  });\n\n  const country = await getCountry();\n\n  const isBidderAllowed = ({ bidder }) => {\n    const name = bidder?.toLowerCase().replace(/s2s$/, '');\n    const whiteOk = !biddersWhiteList[name] || biddersWhiteList[name].includes(country);\n    // const blackOk = !biddersBlackList[name] || !biddersBlackList[name].includes(country);\n    return whiteOk;\n  };\n\n  const bidders = ([\n    {bidder: \"ix\", params: {siteId: \"673801\"}},      \n    //{bidder: \"pubmatic\", params: {publisherId: \"166665\"}},\n    {bidder: \"openx\", params: {unit: \"543818676\", delDomain: \"adnimation-d.openx.net\"}},\n    {bidder: \"sharethrough\", params: {pkey: \"Rc9gmOraFfIgz0qyl9jD8Dnx\"}},\n    {bidder: 'smilewanted', params: {zoneId: 'adnimation.com_hb_display',}},\n    {bidder: 'onetag',params: {pubId: '62d98ebd4882fb0'}},\n    {bidder: \"underdogmedia\", params: {siteId: \"15907\"}},\n    {bidder: \"unruly\", params: {siteId: 233835}},\n    {bidder: 'adyoulike', params: {placement: '3b2355218d4a138e6e6cff706513ec62'}},\n    {bidder: \"amx\", params: {tagId: \"YWRuaW1hdGlvbi5jb20\"}},\n    {bidder: \"msft\", params: {placement_id: 20604158}},\n    {bidder:'contxtful',params:{placementId:'p101162'}},\n    {bidder:'kueezrtb',params:{cId:'69159566446aa458efe6fc89',pId:'65lk7c192882r0011813fn9'}},\n\n  ]).filter(isBidderAllowed);\n\n  const bidderSettings = Object.freeze({\n    \"33across\": { \"storageAllowed\": true },\n    \"adagio\": { \"storageAllowed\": true },\n    \"adnimation\": { \"storageAllowed\": true },\n    \"adyoulike\": { \"storageAllowed\": true },\n    \"amx\": { \"storageAllowed\": true },\n    \"anyclip\": { \"storageAllowed\": true },\n    \"appnexus\": { \"storageAllowed\": true },\n    \"contxtful\": { \"storageAllowed\": true },\n    \"conversant\": { \"storageAllowed\": true },\n    \"criteo\": { \"storageAllowed\": true },\n    \"exco\": { \"storageAllowed\": true },\n    \"fluct\": { \"storageAllowed\": true },\n    \"gamoshi\": { \"storageAllowed\": true },\n    \"ix\": { \"storageAllowed\": true },\n    \"kueezrtb\": { \"storageAllowed\": true },\n    \"magnite\": { \"storageAllowed\": true },\n    \"medianet\": { \"storageAllowed\": true },\n    \"msft\": { \"storageAllowed\": true },\n    \"oms\": { \"storageAllowed\": true },\n    \"onetag\": { \"storageAllowed\": true },\n    \"openx\": { \"storageAllowed\": true },\n    \"pixfuture\": { \"storageAllowed\": true },\n    \"programmaticx\": { \"storageAllowed\": true },\n    \"pubmatic\": { \"storageAllowed\": true },\n    \"richaudience\": { \"storageAllowed\": true },\n    \"rise\": { \"storageAllowed\": true },\n    \"rubicon\": { \"storageAllowed\": true },\n    \"seedtag\": { \"storageAllowed\": true },\n    \"sharethrough\": { \"storageAllowed\": true },\n    \"smartadserver\": { \"storageAllowed\": true },\n    \"smilewanted\": { \"storageAllowed\": true },\n    \"sonobi\": { \"storageAllowed\": true },\n    \"sovrn\": { \"storageAllowed\": true },\n    \"sparteo\": { \"storageAllowed\": true },\n    \"ssp_geniee\": { \"storageAllowed\": true },\n    \"taboola\": { \"storageAllowed\": true },\n    \"teads\": { \"storageAllowed\": true },\n    \"underdogmedia\": { \"storageAllowed\": true },\n    \"unruly\": { \"storageAllowed\": true },\n    \"vidazoo\": { \"storageAllowed\": true },\n    \"yandex\": { \"storageAllowed\": true },\n  });\n\n  const bidderNames = bidders.filter(({bidder}) => !bidder.endsWith('S2S')).map(({bidder}) => bidder);\n  const s2sBidders = bidders.filter(({bidder}) => bidder.endsWith('S2S')).map(({bidder}) => bidder);\n  const s2sAliases = Object.fromEntries(s2sBidders.map(bidder => [bidder, bidder.slice(0, -3)]));\n\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']);\n  const CMP_WAIT_MS = 3000;\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);})();});}\n  async function isGdprRequired(country){const hasCmp=await waitForTcfApi(CMP_WAIT_MS);return hasCmp||GDPR_GEOS.includes(country);}\n  const needsGdpr = await isGdprRequired(await getCountry());\n\n  const pbjsConfig = Object.freeze({\n    's2sConfig': {\n      'enabled': true,\n      'accountId': '1001',\n      'bidders': s2sBidders,\n      'endpoint': 'https://adnpbs.com/openrtb2/auction',\n      'syncEndpoint': 'https://adnpbs.com/cookie_sync',\n      'timeout': 1500,\n      'extPrebid': {\n        'aliases': s2sAliases\n      }\n    },\n    'priceGranularity': 'high',\n    'currency': {\n        'adServerCurrency': 'USD',\n        'conversionRateFile': 'https://cdn.jsdelivr.net/gh/prebid/currency-file@1/latest.json',\n        'defaultRates': {\n        'USD': { 'EUR': 0.92, 'USD': 1 },\n        'EUR': { 'USD': 1.09, 'EUR': 1 }\n        },\n        'ratesTTL': 3600000\n    },\n    'floors': {\n      'enforcement': {\n        'enforceJS': true,\n        'enforcePBS': true,\n        'floorDeals': true,\n        'bidAdjustment': true\n      },\n      'data': {\n        'currency': 'USD',\n        'skipRate': 0,\n        'schema': {\n          'fields': [\n            'mediaType'\n          ]\n        },\n        'values': {\n          'banner': 0.01,\n          'native': 0.01,\n          'video': 0.01\n        },\n        'default': 0.01\n      }\n    },\n    'gvlMapping': {'amxS2S':737,'magniteS2S':52,'riseS2S':1043,'kueezrtbS2S':1165,'adagioS2S':617,'anyclip':1400,'exco':444},\n    'consentManagement': {\n      'gdpr': needsGdpr && {'cmpApi':'iab','defaultGdprScope':true,'timeout':500,'actionTimeout':2000},\n      'usp': { 'cmpApi':'iab', 'timeout':500 }\n    },\n    'useBidCache': true,\n    'schain': {\n      'validation': 'strict',\n      'config': {\n        'ver': '1.0',\n        'complete': 1,\n        'nodes': [\n          {\n            'asi': 'adnimation.com',\n            'sid': '20210120',\n            'hp': 1\n          }\n        ]\n      }\n    },\n    'userSync': {\n      'iframeEnabled': true,\n      'filterSettings': {\n        'iframe': {\n          'bidders': bidderNames,\n          'filter': 'include'\n        }\n      },\n      'userIds': [\n        {\n          'name': 'sharedId',\n          'storage': {\n            'type': 'html5',\n            'name': '_pubcid',\n            'expires': 365\n          }\n        },\n        {\n          'name': 'identityLink',\n          'params': {\n            'pid': '13346'\n          },\n          'storage': {\n            'type': 'html5',\n            'name': 'idl_env',\n            'expires': 30\n          }\n        },\n        {\n          'name': 'id5Id',\n          'params': {\n            'partner': 1262\n          },\n          'storage': {\n            'type': 'html5',\n            'name': 'id5id',\n            'expires': 90,\n            'refreshInSeconds': 28800\n          }\n        },\n        {\n          'name': '33acrossId',\n          'params': {\n            'pid': '0010b00002KBtyLAAT'\n          },\n          'storage': {\n            'name': '33acrossId',\n            'type': 'html5',\n            'expires': 90,\n            'refreshInSeconds': 28800\n          }\n        }\n      ]\n    },\n    'ix': {\n      'detectMissingSizes': true\n    },\n    'aliasSyncEnabled': true,\n    'auctionOptions': {\n      'suppressStaleRender': true\n    },\n    'contxtful': {\n      'version': 'v1',\n      'customer': 'ADNP250319'\n    },\n    'realTimeData': {\n      'dataProviders': [\n        {\n          'name': 'contxtful',\n          'waitForIt': true,\n          'params': {\n            'version': 'v1',\n            'customer': 'ADNP250319',\n            'bidders': [\n              'contxtful'\n            ],\n            'adServerTargeting': true\n          }\n        }\n      ]\n    }\n  });\n\n  // ----------------------------------------------\n  // Placeholders\n  // ----------------------------------------------\n\n  // Prebid\n  window.pbjs = window.pbjs || {};\n  window.pbjs.que = window.pbjs.que || [];\n\n  // Google Tag\n  window.googletag = window.googletag || {};\n  window.googletag.cmd = window.googletag.cmd || [];\n  // Manage refresh of viewable ads\n  window.googletag.cmd.push(() =>\n    window.googletag.pubads().addEventListener(\n      'impressionViewable', onImpressionViewable));\n  // Visually collapse unfilled slots\n  window.googletag.cmd.push(() =>\n    window.googletag.setConfig({ collapseDiv: 'ON_NO_FILL' }));\n\n  // Google Analytics\n  window.dataLayer = window.dataLayer || [];\n  function gtag() {\n    window.dataLayer.push(arguments);\n  }\n\n  // Taboola\n  window._taboola = window._taboola || [];\n\n  // ----------------------------------------------\n  // Constants\n  // ----------------------------------------------\n\n  const GA_ID = '';\n  const APS_TIMEOUT_MS = 2000;\n  const PREBID_TIMEOUT_MS = 1800;\n\n  // ----------------------------------------------\n  // Scripts\n  // ----------------------------------------------\n\n  function createScript(src, preCreate = () => {}) {\n    return new Promise((resolve) => {\n      let scriptEl = document.querySelector(`script[src=\"${src}\"]`);\n\n      if (scriptEl) {\n        console.warn('Script already exists:', src);\n        resolve(false);\n        return;\n      }\n\n      const attemptLoad = () => {\n        scriptEl = document.createElement('script');\n        scriptEl.src = src;\n        scriptEl.fetchPriority = 'high';\n        preCreate(scriptEl);\n        scriptEl.async = !scriptEl.defer;\n        scriptEl.addEventListener('load', () => resolve(true));\n        scriptEl.addEventListener('error', () => {\n          console.warn('Retrying to load script:', src);\n          scriptEl.remove();\n          setTimeout(attemptLoad, 100);\n        });\n        document.head.appendChild(scriptEl);\n      };\n\n      attemptLoad();\n    });\n  }\n\n  // Don't initialize anything if page URL is blacklisted\n  if (isBlacklistedUrl()) {\n    throw 'Skipping...';\n  }\n\n  Promise.all([\n    // Amazon Publisher Services\n    // createScript('https://c.amazon-adsystem.com/aax2/apstag.js'),\n\n    // Human anti-bot protection\n    createScript('https://cadmus.script.ac/d3svkhbhkz2i0f/script.js'),\n  ])\n    .then(config)\n    .then(main)\n    .catch((err) => console.error('Failed to bootstrap scripts:', err));\n\n  // Block Through anti-adblock\n  createScript('https://btloader.com/tag?o=5696523966873600&upapi=true');\n\n  // Vidazoo video ads\n  createScript('https://static.vidazoo.com/basev/vwpt.js', (scriptEl) => {\n    scriptEl.setAttribute('data-widget-id', '65e9b79ebdb3a9c5732bbae8');\n  });\n\n  // Google Analytics\n  createScript(`https://www.googletagmanager.com/gtag/js?id=${GA_ID}`);\n\n  // KueezRTB cookieless solution\n  createScript('https://static.kueezrtb.com/latest.js', (scriptEl) => {\n    scriptEl.setAttribute('data-cfasync', 'false');\n    scriptEl.id = 'kueezrtb_latest';\n  });\n\n  class LazyLoader {\n    constructor(margin = '100px') {\n      this.observer = new IntersectionObserver(this.onIntersect, {\n        rootMargin: margin\n      });\n    }\n\n    onIntersect = (entries) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting) {\n          const cb = entry.target.dataset.lazyCallback;\n          if (cb && window[cb]) {\n            window[cb](entry.target);\n            delete window[cb];\n          }\n          this.observer.unobserve(entry.target);\n        }\n      });\n    };\n\n    add(element, callback) {\n      if (!element || typeof callback !== 'function') return;\n      if (element.getBoundingClientRect().top < window.innerHeight) {\n        callback(element);\n      } else {\n        const cbName = 'lazy_cb_' + Math.random().toString(36).slice(2);\n        window[cbName] = callback;\n        element.dataset.lazyCallback = cbName;\n        this.observer.observe(element);\n      }\n    }\n  }\n\n  // ----------------------------------------------\n  // App\n  // ----------------------------------------------\n\n  const adUnits = [];\n  const slotsMap = [];\n  const lazyLoader = new LazyLoader();\n  const activeSlotIds = [];\n  const newPbjsAdUnits = [];\n  const viewportType =\n    window.screen.width > 1525\n      ? 'desktop'\n      : window.screen.width > 730\n        ? 'tablet'\n        : 'mobile';\n\n  /**\n   * Main entry point of our tag.\n   */\n  async function main() {\n    const isOk = await createScript('https://securepubads.g.doubleclick.net/tag/js/gpt.js');\n    if (isOk) {\n      console.log('Starting...');\n    }\n  }\n\n  function config() {\n    console.log('Configuring...');\n    initGa();\n    // initAps();\n    initIiq();\n  }\n\n  function initAps() {\n    window.apstag.init({\n      pubID: '83d5088d-5f70-4acf-a888-15a83bf33932',\n      adServer: 'googletag'\n    });\n  }\n\n  function initGa() {\n    window.googletag.cmd.push(() => {\n      const handleSlotRenderEnded = () => {\n        gtag('js', new Date());\n        gtag('config', GA_ID);\n\n        googletag.pubads().removeEventListener('slotRenderEnded', handleSlotRenderEnded);\n      };\n      googletag.pubads().addEventListener('slotRenderEnded', handleSlotRenderEnded);\n    });\n  }\n\n  function initIiq() {\n    if (!window.IntentIqObject) {\n      console.log('IIQ not found - skipping initialization');\n      return;\n    }\n\n    try {\n      // Configure IntentIQ\n      window.intentIq_2072952453 = new IntentIqObject({\n        partner: 2072952453,\n        pbjs: adnpbjs,\n        callback: main,\n        timeoutInMillis: PREBID_TIMEOUT_MS,\n        ABTestingConfigurationSource: 'IIQServer',\n        manualWinReportEnabled: true,\n        domainName: window.location.host,\n        vrBrowserBlackList: ['chrome'],\n        gamParameterName: 'googletag', // Optional\n      });\n\n      adnpbjs.onEvent('bidWon', (data) => {\n        window.intentIq_2072952453.reportExternalWin({\n          biddingPlatformId: 1, // PreBid\n          partnerAuctionId: data.auctionId,\n          bidderCode: data.bidderCode,\n          prebidAuctionId: data.auctionId,\n          cpm: data.cpm,\n          currency: 'USD',\n          originalCpm: data.originalCpm,\n          originalCurrency: 'USD',\n          status: data.status,\n          placementId: data.adUnitCode\n        });\n      });\n\n    } catch (err) {\n      console.error('Failed to initialize IntentIQ:', err);\n      throw err;\n    }\n  }\n\n  function initAds() {\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\n    adsEl.forEach(slotEl => createAd(slotEl.dataset.adpath));\n  }\n\n  function onImpressionViewable(event) {\n    const { slot } = event;\n    const slotId = slot.getSlotElementId();\n    if (!activeSlotIds.includes(slotId)) {\n      return;\n    }\n\n    const adUnitPath = slot.getAdUnitPath();\n    const adUnit = adsConfig[adUnitPath];\n    const timeoutMs = adUnit.refreshTime;\n\n    setTimeout(() => refreshAd(slot, slotId, adUnit), timeoutMs);\n  }\n\n  function collectAds() {\n    adUnits.length = 0;\n\n    const adsEl = document.querySelectorAll('[data-onpage=\"true\"]');\n    if (!adsEl.length) {\n      console.warn('No ads found to collect');\n      return;\n    }\n\n    adsEl.forEach((slotEl) => {\n      const adPath = slotEl.dataset.adpath;\n      const slot = adsConfig[adPath];\n      const slotId = slot?.id;\n      const sizes = slot?.sizeMapping[viewportType];\n\n      if (!sizes?.length) {\n        console.warn(\n          'Failed to find slot sizes for viewport - bids will be affected for',\n          viewportType, slotId\n        );\n        return;\n      }\n      const slotBidders = [...bidders];\n      const tagMap = {\n            ATF: \"ATF\",\n            Content: \"Content\",\n            BTF: \"BTF\",\n            Side: \"Side\",\n            SideATF: \"SideATF\",\n            Sticky: \"Sticky\"\n        };\n\n        slotBidders.push({\n            bidder: \"taboola\",\n            params: {\n                tagId: tagMap[slot.position] || \"ROS\",\n                publisherId: \"1922255\"\n            }\n        });\n        const STANDARD_SIZES = {\n            desktop: [\n                [1, 1],\n                [728, 90],\n                [970, 90],\n                [970, 250],\n                [300, 250],\n                [300, 600],\n                [160, 600],\n                [336, 280],\n                [320, 50],\n                [320, 100],\n            ],\n            tablet: [\n                [1, 1],\n                [728, 90],\n                [300, 250],\n                [300, 600],\n                [160, 600],\n                [336, 280],\n            ],\n            mobile: [\n                [1, 1],\n                [320, 50],\n                [320, 100],\n                [300, 250],\n                [336, 280],\n                [360, 360],\n            ]\n        };\n\n        function hasOnlyStandardSizes(sizes, viewport) {\n            if (!Array.isArray(sizes) || sizes.length === 0) return false;\n\n            const standardSizes = STANDARD_SIZES[viewport] || [];\n\n            const isNative = (w, h) => w === 1 && h === 2;\n\n            return sizes.every(size => {\n                if (Array.isArray(size)) {\n                    const [w, h] = size;\n                    if (isNative(w, h)) return true;\n                    return standardSizes.some(([sw, sh]) => sw === w && sh === h);\n                }\n                return false;\n            });\n        }\n    const prebidSizes = sizes.filter(size => hasOnlyStandardSizes([size], viewportType));\n\nif (prebidSizes.length) {\n        adUnits.push({\n            bids: slotBidders,\n            code: slotId,\n            mediaTypes: {\n            banner: {\n                sizes: prebidSizes\n            }\n            }\n        });\n        console.log(`Prebid sizes for ${slotId}:`, prebidSizes);\n        } else {\n        console.log(`Skipping Prebid for ${slotId} — No compatible sizes.`);\n        }\n    });\n\n    newPbjsAdUnits.length = 0;\n    newPbjsAdUnits.push(...adUnits);\n\n    window.adnpbjs.que.push(() => {\n      window.adnpbjs.bidderSettings = bidderSettings;\n      window.adnpbjs.setConfig(pbjsConfig);\n      window.adnpbjs.setBidderConfig({\n        bidders: ['sparteo'],\n        config: {\n          ortb2: {\n            source: {\n              ext: {\n                schain: {\n                  ver: \"1.0\",\n                  complete: 1,\n                  nodes: [{\n                    asi: \"zerodegreeads.com\",\n                    sid: \"320252CD1\",\n                    hp: 1\n                  }]\n                }\n              }\n            }\n          }\n        }\n      });\n    });\n  }\n\n  function runApsBids(slotEl, resolve) {\n    return;\n\n    const slotId = slotEl.id;\n    const adPath = slotEl.dataset.adpath;\n\n    const sizes = adsConfig[adPath].sizeMapping[viewportType];\n    if (!sizes.length) {\n      console.warn(\n        'Failed to find slot sizes for viewport - canceling APS bid for',\n        viewportType, slotId\n      );\n      resolve();\n      return;\n    }\n\n    const slots = [{\n      slotID: slotId,\n      slotName: adsConfig[adPath].id,\n      sizes\n    }];\n\n    window.apstag.fetchBids({ slots, timeout: APS_TIMEOUT_MS }, () => {\n      window.apstag.setDisplayBids();\n      resolve();\n    });\n  }\n\n  function runPrebidBids(slotEl, resolve) {\n    const slotId = slotEl.id;\n    window.pbjs.que.push(() =>\n      window.pbjs.requestBids({\n        timeout: PREBID_TIMEOUT_MS,\n        adUnitCodes: [slotId],\n        bidsBackHandler: () => {\n          window.pbjs.setTargetingForGPTAsync([slotId]);\n          resolve();\n        }\n      })\n    );\n  }\n\n  async function runBids(slotEl) {\n    try{\n        const slotId = slotEl.id;\n        // const apsBids = new Promise((resolve) => runApsBids(slotEl, resolve));\n        const pbjsBids = new Promise((resolve) => runPrebidBids(slotEl, resolve));\n        function withTimeout(promise, ms) {\n        return Promise.race([\n            promise,\n            new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms))\n        ]);\n        }\n\n        await Promise.allSettled([\n          // withTimeout(apsBids, 3000),\n            withTimeout(pbjsBids, 3000)\n        ]);\n\n    }catch(e){\n        console.log(e);\n        return\n    }\n  }\n\n  async function createAdCmd(slotName) {\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\n    if (!slotEl) {\n      console.warn('Failed to find ad to create by id:', slotName);\n      return;\n    }\n\n    collectAds();\n\n    let adUnit = adsConfig[slotName];\n    if (!adUnit) {\n      console.warn('Failed to find ad with the following id:', slotName);\n      return;\n    }\n\n    const sizeMapping = googletag\n      .sizeMapping()\n      .addSize([980, 200], adUnit.sizeMapping.desktop)\n      .addSize([730, 200], adUnit.sizeMapping.tablet)\n      .addSize([0, 0], adUnit.sizeMapping.mobile)\n      .build();\n\n    const adPath = slotEl.dataset.adpath;\n    let refreshIteration = adsConfig[adPath].refreshIteration;\n    refreshIteration++;\n\n    const slot = googletag\n      .defineSlot(adUnit.id, adUnit.size)\n      .defineSizeMapping(sizeMapping)\n      .addService(window.googletag.pubads());\n\n    slot.setConfig({ targeting: { refreshIteration: refreshIteration.toString(), intent_iq_group: 'U' } });\n\n    slotEl.id = slot.getSlotElementId();\n\n    const pbjsAdUnit = newPbjsAdUnits.find(adUnit => adUnit.code === slotName);\n    if (pbjsAdUnit) {\n      pbjsAdUnit.code = slotEl.id;\n      window.adnpbjs.addAdUnits(pbjsAdUnit);\n      window.pbjs = adnpbjs;\n    }\n\n    slotsMap[slotEl.id] = slot;\n    activeSlotIds.push(slotEl.id);\n\n    const init = async () => {\n      try {\n        await runBids(slotEl);\n        window.googletag.enableServices();\n        window.googletag.display(slotEl.id);\n        if (googletag.getConfig('disableInitialLoad').disableInitialLoad) {\n          window.googletag.pubads().refresh([slot]);\n        }\n      } catch (err) {\n        console.error('Failed to run bids for ad slot: %s, %s', slotEl.id, err);\n      }\n    };\n\n    const isLazyLoaded = adsConfig[adPath]?.isLazyLoaded !== false;\n    if (isLazyLoaded) {\n      lazyLoader.add(slotEl, init);\n    } else {\n      init();\n    }\n  }\n\n  async function refreshAd(slot, slotId, adUnit) {\n    try {\n      const adUnitToRefresh = googletag\n        .pubads()\n        .getSlots()\n        .filter((slot) => slot.getSlotElementId() === slotId)\n        .at(0);\n\n      if (!adUnitToRefresh) {\n        return;\n      }\n\n      adUnit.refreshIteration++;\n      slot.setConfig({ targeting: { refreshIteration: adUnit.refreshIteration.toString() } });\n\n      const slotEl = document.getElementById(adUnitToRefresh.getSlotElementId());\n      await runBids(slotEl);\n\n      window.googletag.pubads().refresh([slotsMap[slotEl.id]]);\n    } catch (err) {\n      console.error('Failed to refresh ad:', slotId, err.message);\n    }\n  }\n\n  function destroyAdCmd(slotName) {\n    const slotEl = document.querySelector(`[data-adpath=\"${slotName}\"]`);\n    if (!slotEl) {\n      console.warn('Failed to find ad to destroy by id:', slotName);\n      return;\n    }\n\n    const slotId = slotEl.id;\n    if (slotId && slotsMap[slotId]) {\n      window.googletag.destroySlots([slotsMap[slotId]]);\n      delete slotsMap[slotId];\n      const idx = activeSlotIds.indexOf(slotId);\n      if (idx > -1) {\n        activeSlotIds.splice(idx, 1);\n      }\n    }\n\n    slotEl.innerHTML = '';\n    slotEl.id = '';\n    slotEl.removeAttribute('data-onpage');\n    if (slotId.toLowerCase().includes('sticky_footer')) {\n        slotEl.parentElement.parentElement.remove();\n    }\n  }\n\n  function createNativeCmd() {\n    createScript('https://cdn.taboola.com/libtrc/adnimationnetwork/loader.js', (scriptEl) => {\n      scriptEl.id = 'tb_loader_script';\n      scriptEl.onload = () => {\n        window.performance?.mark?.('tbl_ic');\n      };\n    });\n\n    createScript('data:text/javascript;charset=utf-8,_taboola.push({flush:true})', (scriptEl) => {\n      scriptEl.setAttribute('data-taboola-flush', 'true');\n      scriptEl.defer = true;\n    });\n  }\n\n  function destroyNativeCmd() {\n    const footerEl = document.querySelector('.adn-footer');\n    if (footerEl) {\n      footerEl.innerHTML = '';\n    }\n  }\n\n  function createNative() {\n    window.googletag.cmd.push(createNativeCmd);\n  }\n\n  function destroyNative() {\n    window.googletag.cmd.push(destroyNativeCmd);\n  }\n\n  function createAd(slotName) {\n    window.googletag.cmd.push(() => createAdCmd(slotName));\n  }\n\n  function destroyAd(slotName) {\n    window.googletag.cmd.push(() => destroyAdCmd(slotName));\n  }\n\n  function createInterstitial() {\n    window.googletag.cmd.push(createInterstitialCmd);\n  }\n\n  // ----------------------------------------------\n  // Exports\n  // ----------------------------------------------\n\n  window.adn = {\n    createAd,\n    destroyAd,\n    createNative,\n    destroyNative,\n    createInterstitial,\n  };\n\n  // ----------------------------------------------\n  // Utils\n  // ----------------------------------------------\n\n  async function getIpInfo() {\n    try {\n      const cached = localStorage.getItem('ipinfo');\n      if (cached) return JSON.parse(cached);\n      const key = '7c4d73767e64472ea502eacdbc47386b';\n      const url = `https://d2dvy74lyjayxz.cloudfront.net/?key=${key}`;\n      const res = await fetch(url);\n      if (!res.ok) throw new Error(`HTTP-${res.status}`);\n      const ipInfo = await res.json();\n      localStorage.setItem('ipinfo', JSON.stringify(ipInfo));\n      localStorage.removeItem('adngeo'); // Old version cleanup\n      return ipInfo;\n    } catch (err) {\n      console.error('Failed to get ip info:', err.message);\n      return null;\n    }\n  }\n\n  async function getCountry() {\n    const ipInfo = await getIpInfo();\n    return ipInfo?.country ?? 'US';\n  }\n\n  async function getPlatform() {\n    const ipInfo = await getIpInfo();\n    return ['ios','android','mobile','desktop'].find(k => ipInfo?.[k]) ?? 'desktop';\n  }\n\n  async function waitForElement(selector) {\n    let cnt = 0;\n    const timeout = 100;\n    const threshold = 3000 / timeout;\n    return new Promise((resolve) => {\n      let interval = setInterval(() => {\n        const el = document.querySelector(selector);\n        if (el) {\n          clearInterval(interval);\n          resolve(el);\n        }\n        if (++cnt === threshold) {\n          cnt = 0;\n          console.warn('Still waiting for selector:', selector);\n        }\n      }, timeout);\n    });\n  }\n\n  const onDomReady = (function() {\n    const callbacks = [];\n\n    document.addEventListener('DOMContentLoaded', () => {\n      callbacks.forEach((callback) => callback());\n      callbacks.length = 0;\n    });\n\n    const interval = setInterval(() => {\n      if (\n        document.readyState === 'complete' ||\n        document.readyState === 'interactive'\n      ) {\n        clearInterval(interval);\n        callbacks.forEach((callback) => callback());\n        callbacks.length = 0;\n      }\n    }, 100);\n\n    return (callback) => {\n      if (\n        document.readyState === 'complete' ||\n        document.readyState === 'interactive'\n      ) {\n        setTimeout(callback, 0);\n      } else {\n        callbacks.push(callback);\n      }\n    };\n  })();\n\n  // Find \"URL_PATHS_BLACKLIST\" under the \"Configuration\" section.\n  // There you can add any additional URL paths to blacklist.\n  function isBlacklistedUrl() {\n    const { pathname } = window.location;\n    const list = URL_PATHS_BLACKLIST ?? [];\n    const isBlacklisted = list.some((path) =>\n      path === '/' ? pathname === path : pathname.includes(path));\n    return isBlacklisted;\n  }\n\n  function observeSlots() {\n    const isVisible = (element) => {\n      const style = window.getComputedStyle(element);\n      const isDisplayed = style.display !== 'none';\n      const isVisible = style.visibility !== 'hidden';\n      return isDisplayed && isVisible;\n    };\n\n    const isStyleChanged = (mutation) =>\n      mutation.type === 'attributes' &&\n      (\n        mutation.attributeName === 'style' ||\n        mutation.attributeName === 'class'\n      );\n\n    const isVisibilityChanged = (mutation) => {\n      const oldStyle = mutation.oldValue || '';\n      const newStyle = mutation.target.getAttribute('style') || '';\n      const wasHidden = oldStyle.includes('hidden') || oldStyle.includes('none');\n      const isHidden = newStyle.includes('hidden') || newStyle.includes('none');\n      return wasHidden !== isHidden;\n    }\n\n    const handleAdded = (node) => {\n      const slot = node.getAttribute('data-adpath');\n      console.log('Added:', slot);\n      createAd(slot);\n    }\n\n    const handleRemoved = (node) => {\n      const slot = node.getAttribute('data-adpath');\n      console.log('Removed:', slot);\n      destroyAd(slot);\n    }\n\n    const isAdSlot = (node) => node.hasAttribute?.('data-adpath');\n\n    const getSlots = (nodeList) =>\n      Array.from(nodeList)\n        .filter((node) => node.nodeType === Node.ELEMENT_NODE)\n        .flatMap((node) => Array.from(node.querySelectorAll('[data-adpath]')).concat(node))\n        .filter(isAdSlot);\n\n    const handleMutations = (mutations) =>\n      mutations.forEach((mutation) => {\n        const addedNodes = getSlots(mutation.addedNodes);\n        const removedNodes = getSlots(mutation.removedNodes);\n\n        addedNodes.forEach(handleAdded);\n        removedNodes.forEach(handleRemoved);\n\n        if (\n          !addedNodes.includes(mutation.target) &&\n          !removedNodes.includes(mutation.target) &&\n          isStyleChanged(mutation) &&\n          isVisibilityChanged(mutation)\n        ) {\n          const childNodes = getSlots(mutation.target);\n          childNodes.forEach((node) => {\n            if (isVisible(node)) {\n              handleAdded(node);\n            } else {\n              handleRemoved(node);\n            }\n          });\n        }\n      });\n\n    const config = {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: ['style', 'class'],\n      attributeOldValue: true\n    };\n\n    const observer = new MutationObserver(handleMutations);\n    observer.observe(document, config);\n  }\n\n  // ----------------------------------------------\n  // Custom\n  // ----------------------------------------------\n\n  function createStickyBanner() {\n  if (window.innerWidth > 768) {\n  const addCloseButton = (stickyBannerSizeDiv) => {\n    const el = document.createElement('div');\n    el.innerText = 'Close';\n    el.style.position = 'absolute';\n    el.style.top = '-20px';\n    el.style.right = '0px';\n    el.style.height = '20px';\n    el.style.width = '50px';\n    el.style.color = 'white';\n    el.style.borderRadius = '2px';\n    el.style.backgroundColor = 'black';\n    el.style.cursor = 'pointer';\n    el.style.fontSize = '14px';\n    el.style.textAlign = 'center';\n    el.classList.add('closeButton');\n    el.onclick = function() {\n      this.parentElement.remove();\n    };\n    stickyBannerSizeDiv.append(el);\n  };\n\n  const stickyBannerParent = document.createElement('div');\n  stickyBannerParent.classList.add('adnSticky');\n  stickyBannerParent.style.position = 'fixed';\n  stickyBannerParent.style.display = 'flex';\n  stickyBannerParent.style.justifyContent = 'space-evenly';\n  stickyBannerParent.style.bottom = '0px';\n  stickyBannerParent.style.width = '100%';\n  stickyBannerParent.style.backgroundColor = 'transparent';\n  stickyBannerParent.style.zIndex = '9999999999';\n\n  const stickyBannerSizeDiv = document.createElement('div');\n  stickyBannerSizeDiv.style.position = 'relative';\n\n  const stickyBanner = document.createElement('div');\n  stickyBanner.dataset.onpage = !0;\n  stickyBanner.dataset.adpath = '/34575423/FXP/Sticky_Footer';\n\n  stickyBannerSizeDiv.append(stickyBanner);\n  stickyBannerParent.append(stickyBannerSizeDiv);\n  document.getElementsByTagName('body')[0].append(stickyBannerParent);\n\n  let flag = true;\n  googletag.cmd.push(() => {\n    googletag.pubads().addEventListener('slotRenderEnded', (event) => {\n      if (\n        event.slot.getSlotElementId().includes('Sticky_Footer') &&\n        !event.isEmpty && flag\n      ) {\n        flag = false;\n        addCloseButton(stickyBannerSizeDiv);\n      }\n    });\n    googletag.enableServices();\n  });\n  }\n}\n\nfunction createInterstitialCmd() {\n  \n  const slot = window.googletag.defineOutOfPageSlot(\n    '/34575423/FXP/FXP_Interstitial', window.googletag.enums.OutOfPageFormat.INTERSTITIAL);\n\n  if (!slot) {\n    console.error('Failed to define out of page slot - Interstitial');\n    return;\n  }\n\n  slot.addService(window.googletag.pubads());\n  window.googletag.enableServices();\n  window.googletag.display(slot);\n  \n}\n\nfunction addInContentAdUnits() {\n\n    let inContentAdUnit = document.createElement('div');\n    inContentAdUnit.dataset.onpage = true;\n    inContentAdUnit.dataset.adpath = '/34575423/FXP/InContent';\n    inContentAdUnit.style.textAlign = '-webkit-center';\n    inContentAdUnit.style.marginTop = '40px';\n    inContentAdUnit.style.marginBottom = '40px';\n    inContentAdUnit.style.minHeight = '250px';\n    // inContentAdUnit.style.backgroundColor = 'pink';\n\n    let h2Section = document.querySelectorAll('#postlist > #posts > li:nth-of-type(3n)');\n    for (let i = 0; i < h2Section.length && i < 4; i++) {\n        let adUnit = inContentAdUnit.cloneNode(true);\n        adUnit.dataset.adpath = '/23305225849/Telltrip/InContent_' + i;\n        h2Section[i].appendChild(adUnit);\n    }\n  \n}\n\nfunction addSideBarSkyLeftAdUnits() {\n  // ✅ Desktop only\n  if (window.innerWidth <= 768) return;\n\n  const base = document.createElement('div');\n  base.dataset.onpage = 'true';\n  base.dataset.adpath = '/34575423/FXP/Sky_Left';\n  base.style.textAlign = 'center';\n  base.style.marginTop = '40px';\n  base.style.marginBottom = '40px';\n  base.style.minHeight = '250px';\n  // base.style.backgroundColor = 'yellow';\n\n  const targets = document.querySelectorAll('#fxp-left-fix-ad-3x1');\n\n  targets.forEach(target => {\n    if (!target) return;\n\n    // ✅ Prevent duplicates inside the same selector\n    if (\n      target.querySelector('[data-onpage=\"true\"][data-adpath=\"/34575423/FXP/Sky_Left\"]')\n    ) {\n      return;\n    }\n\n    // ✅ Inject INSIDE the selector\n    target.appendChild(base.cloneNode(true));\n  });\n}\n\nfunction addSideBarSkyRightAdUnits() {\n  // ✅ Desktop only\n  if (window.innerWidth <= 768) return;\n\n  const base = document.createElement('div');\n  base.dataset.onpage = 'true';\n  base.dataset.adpath = '/34575423/FXP/Sky_Right';\n  base.style.textAlign = 'center';\n  base.style.marginTop = '40px';\n  base.style.marginBottom = '40px';\n  base.style.minHeight = '250px';\n  // base.style.backgroundColor = 'yellow';\n\n  const targets = document.querySelectorAll('#fxp-right-fix-ad-3x1');\n\n  targets.forEach(target => {\n    if (!target) return;\n\n    // ✅ Prevent duplicates inside the same selector\n    if (\n      target.querySelector('[data-onpage=\"true\"][data-adpath=\"/34575423/FXP/Sky_Right\"]')\n    ) {\n      return;\n    }\n\n    // ✅ Inject INSIDE the selector\n    target.appendChild(base.cloneNode(true));\n  });\n}\n\nfunction addTopMobileAdUnits() {\n  const el = document.createElement('div');\n  el.dataset.onpage = true;\n  el.dataset.adpath = '/34575423/FXP/ATF';\n  el.style.textAlign = 'center';\n  el.style.marginTop = '5px';\n  el.style.marginBottom = '0px';\n  el.style.minHeight = '250px';\n  // el.style.backgroundColor = 'yellow';\n\n  const targets = document.querySelectorAll('#big-wap-g');\n  targets.forEach(target => {\n    target.appendChild(el.cloneNode(true)); // <-- inside the selector\n  });\n}\n\nfunction addTopDesktopAdUnits() {\n  const el = document.createElement('div');\n  el.dataset.onpage = true;\n  el.dataset.adpath = '/34575423/FXP/ATF';\n  el.style.textAlign = 'center';\n  el.style.marginTop = '0px';\n  el.style.marginBottom = '0px';\n  el.style.minHeight = '250px';\n  // el.style.backgroundColor = 'yellow';\n\n  const targets = document.querySelectorAll('#big-top-ad-g');\n  targets.forEach(target => {\n    target.appendChild(el.cloneNode(true)); // <-- inside the selector\n  });\n}\n\nfunction injectTaboolaHeaderWidget() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll('#big-top-ad');\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n    // Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-header-thumbnails-1x4';\n\t\tdivElement.style.height = '250px';\n\n// Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n            window._taboola = window._taboola || [];\n            _taboola.push({\n                mode: 'thumbnails-header-1x4',\n\t\t\t\tcontainer: 'taboola-header-thumbnails-1x4',\n\t\t\t\tplacement: 'Header Thumbnails 1x4',\n\t\t\t\ttarget_type: 'mix'\n            });\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.appendChild(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola header feed injected successfully.');\n}\n\nfunction injectTaboolaContentWidget() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll('#postlist > #posts > li:nth-of-type(3n)');\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n    // Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-header-thumbnails-1x4';\n\n// Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n            window._taboola = window._taboola || [];\n            _taboola.push({\n                mode: 'thumbnails-header-1x4',\n\t\t\t\tcontainer: 'taboola-header-thumbnails-1x4',\n\t\t\t\tplacement: 'Header Thumbnails 1x4',\n\t\t\t\ttarget_type: 'mix'\n            });\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.appendChild(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola incontent feed injected successfully.');\n}\n\nfunction injectTaboolaSideWidget() {\n\t\t// Select all elements matching the selector\n\t\tvar elements = document.querySelectorAll('#div-gpt-ad-article');\n\n\t\t// Check if elements exist\n\t\tif (elements.length === 0) {\n\t\t\tconsole.log('No elements found with the selector');\n\t\t\treturn;\n\t\t}\n\n\t\t// Loop through each matched element\n\t\telements.forEach(function (element) {\n\t\t\t// Create the <div> element\n\t\t\tvar divElement = document.createElement('div');\n\t\t\tdivElement.id = 'taboola-right-rail-3x1';\n\n\t\t\t// Create the <script> element\n\t\t\tvar scriptElement = document.createElement('script');\n\t\t\tscriptElement.type = 'text/javascript';\n\t\t\tscriptElement.text = `\n\t\t\t\twindow._taboola = window._taboola || [];\n\t\t\t\t_taboola.push({\n\t\t\t\t\tmode: 'thumbnails-rr-3x1',\n\t\t\t\t\tcontainer: 'taboola-right-rail-3x1',\n\t\t\t\t\tplacement: 'Right Rail 3x1',\n\t\t\t\t\ttarget_type: 'mix'\n\t\t\t\t});\n\t\t\t`;\n\n\t\t\t// Append the <div> and <script> to the current element\n\t\t\telement.appendChild(divElement);\n\t\t\telement.appendChild(scriptElement);\n\t\t});\n\n\t\tconsole.log('Taboola r side feed injected successfully.');\n\t}\n\n\tfunction injectTaboolaRightStickyWidget() {\n\t\t// Select all elements matching the selector\n\t\tvar elements = document.querySelectorAll('#fxp-right-fix-ad-3x1');\n\n\t\t// Check if elements exist\n\t\tif (elements.length === 0) {\n\t\t\tconsole.log('No elements found with the selector');\n\t\t\treturn;\n\t\t}\n\n\t\t// Loop through each matched element\n\t\telements.forEach(function (element) {\n\t\t\t// Create the <div> element\n\t\t\tvar divElement = document.createElement('div');\n\t\t\tdivElement.id = 'taboola-right-rail-3x1_1';\n\n\t\t\t// Create the <script> element\n\t\t\tvar scriptElement = document.createElement('script');\n\t\t\tscriptElement.type = 'text/javascript';\n\t\t\tscriptElement.text = `\n\t\t\t\twindow._taboola = window._taboola || [];\n\t\t\t\t_taboola.push({\n\t\t\t\t\tmode: 'thumbnails-rr-3x1',\n\t\t\t\t\tcontainer: 'taboola-right-rail-3x1_1',\n\t\t\t\t\tplacement: 'Right Rail 3x1 1',\n\t\t\t\t\ttarget_type: 'mix'\n\t\t\t\t});\n\t\t\t`;\n\n\t\t\t// Append the <div> and <script> to the current element\n\t\t\telement.appendChild(divElement);\n\t\t\telement.appendChild(scriptElement);\n\t\t});\n\n\t\tconsole.log('Taboola r side feed injected successfully.');\n\t}\n\nfunction injectTaboolaStickyLSideWidget() {\n\t\t// Select all elements matching the selector\n\t\tvar elements = document.querySelectorAll('#fxp-left-fix-ad-3x1');\n\n\t\t// Check if elements exist\n\t\tif (elements.length === 0) {\n\t\t\tconsole.log('No elements found with the selector');\n\t\t\treturn;\n\t\t}\n\n\t\t// Loop through each matched element\n\t\telements.forEach(function (element) {\n\t\t\t// Create the <div> element\n\t\t\tvar divElement = document.createElement('div');\n\t\t\tdivElement.id = 'taboola-left-rail-3x1';\n\n\t\t\t// Create the <script> element\n\t\t\tvar scriptElement = document.createElement('script');\n\t\t\tscriptElement.type = 'text/javascript';\n\t\t\tscriptElement.text = `\n\t\t\t\twindow._taboola = window._taboola || [];\n\t\t\t\t_taboola.push({\n\t\t\t\t\tmode: 'thumbnails-rr-3x1',\n\t\t\t\t\tcontainer: 'taboola-left-rail-3x1',\n\t\t\t\t\tplacement: 'Left Rail 3x1',\n\t\t\t\t\ttarget_type: 'mix'\n\t\t\t\t});\n\t\t\t`;\n\n\t\t\t// Append the <div> and <script> to the current element\n\t\t\telement.appendChild(divElement);\n\t\t\telement.appendChild(scriptElement);\n\t\t});\n\n\t\tconsole.log('Taboola l side feed injected successfully.');\n\t}\n\nfunction injectTaboolaMobileTop() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll('#big-wap');\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n    // Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-mid-article-thumbnails-1x1';\n\n        // Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n\t\t\twindow._taboola = window._taboola || [];\n\t\t\t_taboola.push({\n\t\t\tmode: 'thumbnails-1x1',\n\t\t\tcontainer: 'taboola-mid-article-thumbnails-1x1',\n\t\t\tplacement: 'Mid Article Thumbnails 1x1',\n\t\t\ttarget_type: 'mix'\n\t\t\t});\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.appendChild(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola mob top feed injected successfully.');\n}\n\nfunction injectTaboolaFooterFeed() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll(\"#fxp-footer-ads-feed\");\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n    // Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-below-article-thumbnails-50';\n        divElement.style.maxWidth = '970px'; // Limit width to 970px\n        divElement.style.margin = '0 auto'; // Center the widget\n\n// Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n\t\t\twindow._taboola = window._taboola || [];\n\t\t\t_taboola.push({\n\t\t\t\tmode: 'alternating-thumbnails-a',\n\t\t\t\tcontainer: 'taboola-below-article-thumbnails-50',\n\t\t\t\tplacement: 'Below Article Thumbnails 50',\n\t\t\t\ttarget_type: 'mix'\n\t\t\t});\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.prepend(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola m 50 card footer feed injected successfully.');\n}\n\nfunction injectTaboolaMobileFooterFeed() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll(\"#footer\");\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n    // Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-below-article-thumbnails-50';\n\n// Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n\t\t\twindow._taboola = window._taboola || [];\n\t\t\t_taboola.push({\n\t\t\t\tmode: 'alternating-thumbnails-a',\n\t\t\t\tcontainer: 'taboola-below-article-thumbnails-50',\n\t\t\t\tplacement: 'Below Article Thumbnails 50',\n\t\t\t\ttarget_type: 'mix'\n\t\t\t});\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.prepend(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola m 50 card footer feed injected successfully.');\n};\n\nlet createNextUpNow = () => {\n    const taboolaDiv = document.createElement('div');\n    taboolaDiv.id = 'taboola-trigger-next-up-now';\n\n    document.body.appendChild(taboolaDiv);\n\n    window._taboola = window._taboola || [];\n    _taboola.push({\n        mode: 'thumbnails-invisible-next-up',\n        container: 'taboola-trigger-next-up-now',\n        placement: 'Trigger Next Up Now',\n        target_type: 'mix'\n    });\n};\n\nfunction injectTaboolaForumWidget() {\n    // Select all elements matching the selector\n    var elements = document.querySelectorAll(\"#postlist > #posts > li:nth-of-type(3)\");\n\n    // Check if elements exist\n    if (elements.length === 0) {\n        console.log('No elements found with the selector');\n        return;\n    }\n\n// Loop through each matched element\n    elements.forEach(function (element) {\n        // Create the <div> element\n        var divElement = document.createElement('div');\n        divElement.id = 'taboola-mid-forum-thumbnails';\n\n// Create the <script> element\n        var scriptElement = document.createElement('script');\n        scriptElement.type = 'text/javascript';\n        scriptElement.text = `\n\t\t\twindow._taboola = window._taboola || [];\n\t\t\t_taboola.push({\n\t\t\t\tmode: 'thumbnails-textlink-form',\n                container: 'taboola-mid-forum-thumbnails',\n                placement: 'Mid Forum Thumbnails',\n                target_type: 'mix'\n\t\t\t});\n        `;\n\n        // Append the <div> and <script> to the current element\n        element.prepend(divElement);\n        element.appendChild(scriptElement);\n    });\n\n    console.log('Taboola m forum widget injected successfully.');\n};\n\nfunction injectVDOPlayer() {\n  const DIV_ID = \"v-fxp-co-il\";\n  const SCRIPT_PATH = \"a.vdo.ai/core/v-fxp-co-il/vdo.ai.js\";\n  const LIST_SELECTOR = \"#postlist > #posts\";\n  const LI_SELECTOR = \"#postlist > #posts > li\";\n\n  const list = document.querySelector(LIST_SELECTOR);\n  if (!list) return;\n\n  const firstLi = document.querySelector(LI_SELECTOR);\n  if (!firstLi) return;\n\n  // Prevent duplicate injection\n  if (document.getElementById(DIV_ID)) return;\n\n  // Create container\n  const container = document.createElement(\"div\");\n  container.id = DIV_ID;\n\n  // Insert AFTER first <li>\n  firstLi.insertAdjacentElement(\"afterend\", container);\n\n  // Prevent loading script multiple times\n  if (!document.querySelector(`script[src*=\"${SCRIPT_PATH}\"]`)) {\n    const s = document.createElement(\"script\");\n    s.setAttribute(\"data-cfasync\", \"false\");\n    s.defer = true;\n    s.async = true;\n    s.src = window.location.protocol + \"//\" + SCRIPT_PATH;\n    document.head.appendChild(s);\n  }\n\n  // Wait for VDO to generate parent div and apply padding\n  const applyPadding = setInterval(() => {\n    const vdoParent = document.getElementById(\"vdoai_parentDiv0\");\n    if (vdoParent) {\n      vdoParent.style.paddingTop = \"10px\";\n      vdoParent.style.paddingBottom = \"10px\";\n      clearInterval(applyPadding);\n    }\n  }, 100);\n}\n\nonDomReady(async () => {\n\n    try {\n        createNative();\n\n        // createStickyBanner();\n        // createInterstitial();\n        // addInContentAdUnits();\n        // addSideBarLeftAdUnits();\n       \n       if (\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=1250\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=5073\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=16\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=4475\" ||\n\n            // ✅ added URLs\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=148\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=1723\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=23\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=1198\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=10614\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=128\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=1305\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=218\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=393\" ||\n            window.location.href === \"https://www.fxp.co.il/forumdisplay.php?f=8703\"\n        ) {\n        addSideBarSkyLeftAdUnits();\n        addSideBarSkyRightAdUnits();\n        }\n\nif (\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=1250\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=5073\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=16\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=4475\" &&\n\n            // ✅ added URLs (negative match)\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=148\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=1723\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=23\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=1198\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=10614\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=128\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=1305\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=218\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=393\" &&\n            window.location.href !== \"https://www.fxp.co.il/forumdisplay.php?f=8703\"\n        ) {\n        injectTaboolaStickyLSideWidget();\n        injectTaboolaRightStickyWidget();\n        }\n\n        addTopMobileAdUnits();\n        addTopDesktopAdUnits();\n        injectTaboolaMobileTop();\n        injectTaboolaHeaderWidget();\n\n        createNextUpNow();\n        injectTaboolaSideWidget();\n        injectTaboolaFooterFeed();\n        injectTaboolaMobileFooterFeed();\n        injectTaboolaForumWidget();\n        injectTaboolaContentWidget();\n\n        //if (window.location.href === \"https://www.fxp.co.il/showthread.php?t=22022707\"){\n            //injectVDOPlayer();\n        //}\n\n// Add custom slots creation logic here 👇\n    } catch(err) {\n      console.error('Failed to create slots:', err.stack);\n    }\n\n    // Must be called last\n    initAds();\n    observeSlots();\n  });\n\n})(window, document);\n\n"]}