1const searchEngines = [ 2 "google", 3 "bing", 4 "yahoo", 5 "baidu", 6 "yandex", 7 "duckduckgo", 8 "ask", 9 "ecosia", 10 "aol", 11 "archive", 12 "naver", 13 ], 14 createStore = () => { 15 const o = { 16 utm_source: void 0, 17 utm_campaign: void 0, 18 utm_content: void 0, 19 utm_medium: void 0, 20 utm_term: void 0, 21 ad_id: void 0, 22 cp_smn_content: void 0, 23 cp_smn_term: void 0, 24 cp_smn_source: void 0, 25 fbclid: void 0, 26 }; 27 return { 28 get: (e) => { 29 if (o.hasOwnProperty(e)) return o[e]; 30 }, 31 update: (e, t) => { 32 o.hasOwnProperty(e) && (o[e] = t); 33 }, 34 getAll: () => o, 35 delete: (e) => { 36 o.hasOwnProperty(e) && (o[e] = void 0); 37 }, 38 unserialize: (e) => { 39 try { 40 var t = JSON.parse(e); 41 for (const r in t) 42 o.hasOwnProperty(r) && 43 0 !== t[r].toString().length && 44 (o[r] = t[r].toString()); 45 } catch (e) { 46 throw Error("Store is malformed"); 47 } 48 }, 49 }; 50 }, 51 utmStorageKey = "fever_utm", 52 store = createStore(), 53 updateSessionStorage = (e) => { 54 window.sessionStorage.setItem(utmStorageKey, JSON.stringify(e)); 55 }, 56 readSessionStorage = () => { 57 var e = window.sessionStorage.getItem(utmStorageKey); 58 if ("string" == typeof e) return e; 59 }, 60 getURLWithoutSuffix = (e) => { 61 return e.replace(/https?:\/\//, "").replace(/\.[^\.]+$/, ""); 62 }, 63 updateUTMParamsFromReferer = () => { 64 if (!store.get("utm_source")) 65 if (document.referrer.length) 66 if (document.referrer.includes("com.google.android")) 67 (store.update("utm_source", "discover"), 68 store.update("utm_medium", "referral")); 69 else 70 try { 71 const t = getURLWithoutSuffix(document.referrer); 72 getURLWithoutSuffix(document.location.href) === t 73 ? (store.update("utm_source", "direct"), 74 store.delete("utm_medium")) 75 : searchEngines.filter((e) => t.includes(e)).length 76 ? (store.update("utm_medium", "organic"), 77 store.update("utm_source", t)) 78 : (store.update("utm_source", t), 79 store.update("utm_medium", "referral")); 80 } catch (e) { 81 (store.update("utm_source", "unknown"), 82 store.update("utm_medium", "referral")); 83 } 84 else store.update("utm_source", "direct"); 85 }, 86 getURLParameters = (e) => Object.fromEntries(new URLSearchParams(e)), 87 storeSessionUTMParams = () => { 88 var e = readSessionStorage(); 89 if (void 0 !== e) 90 try { 91 store.unserialize(e); 92 } catch (e) {} 93 var e = window.location["search"], 94 t = getURLParameters(e); 95 for (const r in t) 96 (store.update(r, t[r]), updateSessionStorage(store.getAll())); 97 updateUTMParamsFromReferer(); 98 }, 99 getInnerUtmValues = (e) => { 100 if (e && e.dataset) 101 return { 102 cp_landing_term: e.dataset.gaAction, 103 cp_landing: e.dataset.gaAction, 104 cp_landing_source: e.dataset.utmSource, 105 }; 106 }, 107 applyUtmsToUrl = (e, t) => { 108 for (var r in t) 109 void 0 !== t[r] && "_target" !== t[r] && e.searchParams.set(r, t[r]); 110 }, 111 getUtmParams = () => store.getAll(), 112 validDomains = { 113 "https://feverup.com": !0, 114 "https://use.fvr.to": !0, 115 "https://webclient3.staging.feverup.com": !0, 116 }, 117 isValidDomain = (e) => { 118 try { 119 var t = new URL(e.getAttribute("href")).origin; 120 return Boolean(validDomains[t]); 121 } catch (e) { 122 return !1; 123 } 124 }, 125 processLinks = () => { 126 var e = Array.from(document.links).filter((e) => isValidDomain(e)); 127 if (e.length) { 128 const o = getUtmParams(); 129 for (const a of e) 130 a.addEventListener("click", (evt) => { 131 evt.preventDefault(); 132 const innerUtms = getInnerUtmValues(a); 133 const url = new URL(a.href); // FIX 2 134 const existingParams = Object.fromEntries( 135 new URLSearchParams(url.search).entries(), 136 ); 137 const merged = Object.assign({}, innerUtms, o, existingParams); 138 applyUtmsToUrl(url, merged); 139 window.open(url.toString(), "_blank"); // FIX 3 140 }); 141 } 142 }, 143 initFeverUTM = () => { 144 storeSessionUTMParams(); 145 // FIX 1 146 if ( 147 document.readyState === "interactive" || 148 document.readyState === "complete" 149 ) { 150 processLinks(); 151 } else { 152 document.addEventListener("DOMContentLoaded", processLinks); 153 } 154 }; 155initFeverUTM();
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.