1// AppsFlyer Smart Banner Script 2// Loaded post-hydration to avoid SSR/hydration mismatches 3 4(function() { 5 // Disable smart banner on specific pages. Compared against a normalised 6 // pathname (locale prefix and trailing slash stripped) because an exact match 7 // let /en-CA/install-extension/ and /install-extension through â the visitor 8 // is already installing something, which is what these entries exist to 9 // avoid talking over. 10 const DISALLOWED_PATHS = ['/install-extension', '/extension-installed']; 11 12 const normalisePath = function (pathname) { 13 return pathname 14 .replace(/^\/[a-z]{2}(-[a-z]{2})?(?=\/)/i, '') 15 .replace(/\/+$/, ''); 16 }; 17 18 // Initialize AppsFlyer SDK 19 !function(t,e,n,s,a,c,i,o,p){ 20 t.AppsFlyerSdkObject=a, 21 t.AF=t.AF||function(){ 22 (t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments))) 23 }, 24 t.AF.id=t.AF.id||i, 25 t.AF.plugins={}, 26 o=e.createElement(n), 27 p=e.getElementsByTagName(n)[0], 28 o.async=1, 29 o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""), 30 p.parentNode.insertBefore(o,p) 31 }(window,document,"script",0,"AF","banners",{banners: {key: "c6888e2f-f426-4f92-88a9-fef5540424ea"}}); 32 33 // Show banner if not on disallowed path 34 if (!DISALLOWED_PATHS.includes(normalisePath(window.location.pathname))) { 35 AF('banners', 'showBanner'); 36 } 37})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.