@zaplier/sdk 1.8.7 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v2/chunks/anti-adblock-B_7p9rSc.min.js +6 -0
- package/dist/v2/chunks/anti-adblock-B_aAB361.min.js +6 -0
- package/dist/v2/chunks/auto-tracker-5ij0Y4C-.min.js +6 -0
- package/dist/v2/chunks/browser-apis-zkKPQ-Pn.min.js +6 -0
- package/dist/v2/chunks/confidence-DCUtUduG.min.js +6 -0
- package/dist/v2/chunks/core-BTl6GQvU.min.js +6 -0
- package/dist/v2/chunks/core-BUMPOlca.min.js +6 -0
- package/dist/v2/chunks/core-CGxFM5QW.min.js +6 -0
- package/dist/v2/chunks/core-NFvhjAfH.min.js +6 -0
- package/dist/v2/chunks/core-hqxwsWnO.min.js +6 -0
- package/dist/v2/chunks/core-zJiDcx4q.min.js +6 -0
- package/dist/v2/chunks/device-signals-DzcCjR7i.min.js +6 -0
- package/dist/v2/chunks/dom-blockers-CtmwJ8XW.min.js +6 -0
- package/dist/v2/chunks/fingerprint-C1MH_xUr.min.js +6 -0
- package/dist/v2/chunks/hardware-VrMyNUbt.min.js +6 -0
- package/dist/v2/chunks/heatmap-BxbXSH7M.min.js +6 -0
- package/dist/v2/chunks/heatmap-FZpkJ8Pr.min.js +6 -0
- package/dist/v2/chunks/incognito-CUk-WJ9L.min.js +6 -0
- package/dist/v2/chunks/math-k-cWr0Zr.min.js +6 -0
- package/dist/v2/chunks/plugins-enhanced-DybbZw-x.min.js +6 -0
- package/dist/v2/chunks/session-replay-DsIhuKDJ.min.js +6 -0
- package/dist/v2/chunks/session-replay-DzEF_WqO.min.js +6 -0
- package/dist/v2/chunks/storage-DGh64hgU.min.js +6 -0
- package/dist/v2/chunks/system-Bu10BgJe.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-BUu5td5h.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-CIXH9EKf.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-DSIEfVJQ.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-Djomq4wG.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-FU8S1BmX.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-nXdSbDzp.min.js +6 -0
- package/dist/v2/core.d.ts +149 -80
- package/dist/v2/core.min.js +2 -2
- package/dist/v2/modules/anti-adblock.js +2 -2
- package/dist/v2/modules/auto-tracker.js +6 -0
- package/dist/v2/modules/browser-apis-BFbMjhvj.js +6 -0
- package/dist/v2/modules/confidence-B8ji6M6W.js +6 -0
- package/dist/v2/modules/device-signals-OERVSprN.js +6 -0
- package/dist/v2/modules/dom-blockers-NN7G4m7O.js +6 -0
- package/dist/v2/modules/fingerprint-BmsWDNK6.js +6 -0
- package/dist/v2/modules/fingerprint.js +2 -2
- package/dist/v2/modules/hardware-DEB_C62e.js +6 -0
- package/dist/v2/modules/heatmap.js +2 -2
- package/dist/v2/modules/incognito-B8-4CGqL.js +6 -0
- package/dist/v2/modules/math-D6mV6BoT.js +6 -0
- package/dist/v2/modules/plugins-enhanced-Bs-rTKz4.js +6 -0
- package/dist/v2/modules/replay.js +2 -2
- package/dist/v2/modules/storage-DpYaBLNV.js +6 -0
- package/dist/v2/modules/system-C8YX5XCh.js +6 -0
- package/dist/v2/modules/visitor-persistence.js +6 -0
- package/package.json +2 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function n(n){var e;const t=[];return null!==(e=function n(e){var r;if(e&&"function"==typeof e.toJSON&&(e=e.toJSON()),void 0===e)return;if("number"==typeof e)return Number.isFinite(e)?String(e):"null";if("object"!=typeof e)return JSON.stringify(e);if(Array.isArray(e)){let t="[";for(let o=0;o<e.length;o++)o&&(t+=","),t+=null!==(r=n(e[o]))&&void 0!==r?r:"null";return t+"]"}if(null===e)return"null";if(-1!==t.indexOf(e))throw new TypeError("Converting circular structure to JSON");const o=t.push(e)-1,i=Object.keys(e).sort();let a="";for(const t of i){const r=n(e[t]);void 0!==r&&(a&&(a+=","),a+=JSON.stringify(t)+":"+r)}return t.splice(o,1),"{"+a+"}"}(n))&&void 0!==e?e:""}function e(n,e){const t=n[1]+e[1]&4294967295;return[n[0]+e[0]+(t<n[1]?1:0)&4294967295,t]}function t(n,e){const t=65535&n[1],r=n[1]>>>16,o=65535&e[1],i=e[1]>>>16,a=t*i+r*o&4294967295,c=r*i+(a>>>16),s=t*o+((65535&a)<<16)&4294967295;return[n[0]*e[1]+n[1]*e[0]+c&4294967295,s]}function r(n,e){return 0==(e%=64)?n:e<32?[4294967295&(n[0]<<e|n[1]>>>32-e),4294967295&(n[1]<<e|n[0]>>>32-e)]:(e-=32,[4294967295&(n[1]<<e|n[0]>>>32-e),4294967295&(n[0]<<e|n[1]>>>32-e)])}function o(n,e){return[n[0]^e[0],n[1]^e[1]]}function i(n){let e=n;return e=o(e,[0,e[0]>>>1]),e=t(e,[4283543511,3981806797]),e=o(e,[0,e[0]>>>1]),e=t(e,[3301882366,444984403]),e=o(e,[0,e[0]>>>1]),e}function a(n,a=0){const c=function(n){const e=[];for(let t=0;t<n.length;t+=4){let r=0;for(let e=Math.min(3,n.length-t-1);e>=0;e--)r=r<<8|n.charCodeAt(t+e);e.push(r)}return e}(n),s=Math.floor(c.length/4);let u=[0,a],l=[0,a];const d=[2277735313,289559509],f=[1291169091,658871167];for(let n=0;n<s;n++){const i=4*n,a=4*n+2;let s=[c[i+1]||0,c[i]||0],m=[c[a+1]||0,c[a]||0];s=t(s,d),s=r(s,31),s=t(s,f),u=o(u,s),u=r(u,27),u=e(u,l),u=e(t(u,[0,5]),[0,1390208809]),m=t(m,f),m=r(m,33),m=t(m,d),l=o(l,m),l=r(l,31),l=e(l,u),l=e(t(l,[0,5]),[0,944331445])}const m=4*s,p=c.length-m;let h=[0,0],w=[0,0];return p>=12&&(w=o(w,[c[m+3]||0,0])),p>=8&&(w=o(w,[0,c[m+2]||0]),w=t(w,f),w=r(w,33),w=t(w,d),l=o(l,w)),p>=4&&(h=o(h,[c[m+1]||0,0])),p>=1&&(h=o(h,[0,c[m]||0]),h=t(h,d),h=r(h,31),h=t(h,f),u=o(u,h)),u=o(u,[0,n.length]),l=o(l,[0,n.length]),u=e(u,l),l=e(l,u),u=i(u),l=i(l),u=e(u,l),l=e(l,u),(u[0]>>>0).toString(16).padStart(8,"0")+(u[1]>>>0).toString(16).padStart(8,"0")+((l[0]>>>0).toString(16).padStart(8,"0")+(l[1]>>>0).toString(16).padStart(8,"0"))}function c(n){let e=0;if(0===n.length)return e.toString(36);for(let t=0;t<n.length;t++)e=(e<<5)-e+n.charCodeAt(t),e&=e;return Math.abs(e).toString(36)}function s(n){return["duration","timestamp","error","errors","collectionTime","startTime","endTime","_timestamp"].includes(n)||n.endsWith("_timestamp")||n.endsWith("Timestamp")}function u(n){if(null==n)return null;if(Array.isArray(n))return n.map(n=>u(n)).filter(n=>null!==n).sort((n,e)=>JSON.stringify(n).localeCompare(JSON.stringify(e)));if("object"==typeof n){const e=Object.keys(n).sort(),t={};for(const r of e){if(s(r))continue;const e=u(n[r]);null!==e&&(t[r]=e)}return t}return"number"==typeof n?Number.isFinite(n)?Math.abs(n)<1e-4?0:Math.abs(n)>1e6?n>0?1e6:-1e6:Number(n>=.1&&n<=10?n.toFixed(3):n.toFixed(2)):0:"string"==typeof n?n.trim().toLowerCase():"boolean"==typeof n?n:null}const l={SAMPLE_RATE:44100,DURATION:.1,FREQUENCIES:[440,1e3,1760,3520],COMPRESSOR_THRESHOLD:-50,COMPRESSOR_KNEE:40,COMPRESSOR_RATIO:12,COMPRESSOR_ATTACK:.003,COMPRESSOR_RELEASE:.25,FILTER_FREQUENCY:2e3,GAIN_VALUE:.5,DELAY_TIME:.02};function d(){try{const n=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(!n)return null;const e=44100,t=l.DURATION;return new n(1,Math.floor(e*t),e)}catch{return null}}async function f(n){try{const e=l.FREQUENCIES.map((e,t)=>{const r=n.createOscillator(),o=["sine","square","sawtooth","triangle"],i=o[t%o.length];return r.type=i||"sine",r.frequency.setValueAtTime(e,n.currentTime),r}),t=n.createDynamicsCompressor(),r=n.createBiquadFilter(),o=n.createGain(),i=n.createDelay(),a=n.createAnalyser();t.threshold.setValueAtTime(l.COMPRESSOR_THRESHOLD,n.currentTime),t.knee.setValueAtTime(l.COMPRESSOR_KNEE,n.currentTime),t.ratio.setValueAtTime(l.COMPRESSOR_RATIO,n.currentTime),t.attack.setValueAtTime(l.COMPRESSOR_ATTACK,n.currentTime),t.release.setValueAtTime(l.COMPRESSOR_RELEASE,n.currentTime),r.type="bandpass",r.frequency.setValueAtTime(l.FILTER_FREQUENCY,n.currentTime),r.Q.setValueAtTime(.7,n.currentTime),o.gain.setValueAtTime(l.GAIN_VALUE,n.currentTime),i.delayTime.setValueAtTime(l.DELAY_TIME,n.currentTime);const s=n.createGain();s.gain.setValueAtTime(.25,n.currentTime),e.forEach(n=>{n.connect(s)}),s.connect(r),r.connect(t),t.connect(o),o.connect(i),i.connect(a),a.connect(n.destination),e.forEach((n,e)=>{n.start(.01*e),n.stop(l.DURATION)});const u=(await n.startRendering()).getChannelData(0),d=[];for(let n=0;n<32;n++){const e=Math.floor(u.length/32*n);d.push(u[e]||0)}const f=Math.sqrt(d.reduce((n,e)=>n+e*e,0)/d.length),m=Math.max(...d.map(Math.abs)),p=d.reduce((n,e)=>n+Math.abs(e),0)/d.length;let h=0;for(let n=0;n<Math.min(d.length,16);n++){const e=d[n];void 0!==e&&(h+=n*Math.abs(e))}return c([...d,f,m,p,h].join(","))}catch(n){return c("multi_oscillator_error")}}async function m(n){try{const e=[100,440,1e3,2e3,4e3,8e3,12e3,16e3],t=[];for(const r of e){const e=n.createOscillator(),o=n.createAnalyser();e.type="sine",e.frequency.setValueAtTime(r,n.currentTime),o.fftSize=256,o.smoothingTimeConstant=0,e.connect(o),o.connect(n.destination),e.start(),e.stop(.05);const i=d();if(i){const n=i.createOscillator();n.type="sine",n.frequency.setValueAtTime(r,i.currentTime),n.connect(i.destination),n.start(),n.stop(.05);try{const n=(await i.startRendering()).getChannelData(0),e=Math.sqrt(n.reduce((n,e)=>n+e*e,0)/n.length);t.push(e)}catch{t.push(0)}}}return c(t.join(","))}catch(n){return c("frequency_response_error")}}async function p(n){try{const e=n.createOscillator(),t=n.createDynamicsCompressor();e.type="triangle",e.frequency.setValueAtTime(l.FREQUENCIES[0],n.currentTime),t.threshold.setValueAtTime(l.COMPRESSOR_THRESHOLD,n.currentTime),t.knee.setValueAtTime(l.COMPRESSOR_KNEE,n.currentTime),t.ratio.setValueAtTime(l.COMPRESSOR_RATIO,n.currentTime),t.attack.setValueAtTime(l.COMPRESSOR_ATTACK,n.currentTime),t.release.setValueAtTime(l.COMPRESSOR_RELEASE,n.currentTime),e.connect(t),t.connect(n.destination),e.start(),e.stop(l.DURATION);const r=(await n.startRendering()).getChannelData(0);return c([r[0]||0,r[Math.floor(.25*r.length)]||0,r[Math.floor(.5*r.length)]||0,r[Math.floor(.75*r.length)]||0,r[r.length-1]||0].join(","))}catch(n){return c("compressor_error")}}async function h(){var n;const e=performance.now();try{const t=function(){try{const n=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(n)try{return new n(1,1,44100).sampleRate}catch{}const e=window.AudioContext||window.webkitAudioContext;if(e)try{const n=new e,t=n.sampleRate;return n.close().catch(()=>{}),t}catch{}}catch{}return 44100}(),r=function(){const n={};try{const e=d();if(e){n.sampleRate=e.sampleRate,n.length=e.length,n.state=e.state;const t=[],r=[8e3,22050,44100,48e3,96e3];for(const n of r)try{const e=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,1,n);e.sampleRate===n&&t.push(n),"close"in e&&"function"==typeof e.close&&e.close()}catch{}n.supportedSampleRates=t,"baseLatency"in e&&(n.baseLatency=e.baseLatency);try{const t=e.createBufferSource();n.channelCountMode=t.channelCountMode}catch{n.channelCountMode="max"}"close"in e&&"function"==typeof e.close&&e.close()}}catch(e){n.error="context_characteristics_error"}return n}(),o={multiOsc:d(),compressor:d(),frequencyResponse:d()};if(!o.multiOsc||!o.compressor||!o.frequencyResponse)throw new Error("OfflineAudioContext not available");const[i,a,s]=await Promise.all([f(o.multiOsc).catch(()=>"multi_oscillator_error"),p(o.compressor).catch(()=>"compressor_error"),m(o.frequencyResponse).catch(()=>"frequency_response_error")]),u={};try{const n=d();if(n){const e=["createOscillator","createAnalyser","createBiquadFilter","createConvolver","createDelay","createDynamicsCompressor","createGain","createWaveShaper","createStereoPanner","createChannelSplitter","createChannelMerger"];for(const t of e)try{"function"==typeof n[t]&&(n[t](),u[t]=!0)}catch{u[t]=!1}"close"in n&&"function"==typeof n.close&&n.close()}}catch{}const l=c([i,a,s,t.toString(),JSON.stringify(r),JSON.stringify(u)].join("|")),h=performance.now();return{value:{oscillator:i,compressor:a,sampleRate:t,maxChannelCount:(null===(n=r.supportedSampleRates)||void 0===n?void 0:n.length)||2,multiOscillatorFingerprint:i,frequencyResponseFingerprint:s,contextCharacteristics:r,nodeCapabilities:u,audioStackHash:l,supportedSampleRates:r.supportedSampleRates||[],channelCountMode:r.channelCountMode||"max"},duration:h-e}}catch(n){return{value:{oscillator:"error",compressor:"error",sampleRate:0,maxChannelCount:0,multiOscillatorFingerprint:"error",frequencyResponseFingerprint:"error",contextCharacteristics:{},nodeCapabilities:{},audioStackHash:"error",supportedSampleRates:[],channelCountMode:"max"},duration:performance.now()-e,error:n instanceof Error?n.message:"Audio fingerprinting failed"}}}function w(){try{return"WebKitAppearance"in document.documentElement.style||"webkitRequestFileSystem"in window||"webkitResolveLocalFileSystemURL"in window||Boolean(window.safari)}catch{return!1}}function y(){try{return"ontouchstart"in window&&("orientation"in window||"onorientationchange"in window)&&/android/i.test(navigator.userAgent)}catch{return!1}}function v(){try{if("brave"in navigator&&navigator.brave)return!0;const n=navigator.userAgent;return!!n.includes("Brave")||!(!window.chrome||!window.chrome.runtime||window.chrome.webstore||window.navigator.getBattery||!/Chrome/.test(n))}catch{return!1}}function g(){try{const n=navigator.userAgent;return!!(n.includes("Arc/")||window.arc||window.Arc||window.chrome&&window.chrome.runtime&&/Chrome/.test(n)&&(n.includes("ArcBrowser")||"arc:"===window.location.protocol))}catch{return!1}}function b(){try{if(window.opr||window.opera)return!0;const n=navigator.userAgent;return!(!n.includes("OPR/")&&!n.includes("Opera/"))}catch{return!1}}function M(){try{return!!navigator.userAgent.includes("Vivaldi/")||!!window.vivaldi}catch{return!1}}function S(){try{const n=navigator.userAgent;return n.includes("SamsungBrowser/")||n.includes("Samsung Internet")}catch{return!1}}function k(){try{return!(v()||g()||b()||M()||x()||S())&&Boolean(window.chrome&&(window.chrome.webstore||window.chrome.runtime)&&/Chrome/.test(navigator.userAgent)&&!/Edg|OPR|Opera|Vivaldi|SamsungBrowser|Arc|Brave/.test(navigator.userAgent))}catch{return!1}}function E(){try{return"InstallTrigger"in window||"mozInnerScreenX"in window||"mozPaintCount"in window||Boolean(navigator.mozApps)}catch{return!1}}function x(){try{return"msCredentials"in navigator||Boolean(window.StyleMedia)||k()&&/edg/i.test(navigator.userAgent)}catch{return!1}}function A(){try{return w()&&!k()&&!x()&&Boolean(window.safari)&&/safari/i.test(navigator.userAgent)}catch{return!1}}function C(){try{return window.isSecureContext||"https:"===location.protocol}catch{return!1}}function T(){try{return"webkitTemporaryStorage"in navigator||navigator.storage&&navigator.storage.estimate&&navigator.storage.estimate().then(n=>(n.quota||0)<104857600),!1}catch{return!1}}function _(){return v()||g()||b()||M()||S()||k()?"Blink":x()?"EdgeHTML/Blink":E()?"Gecko":w()||A()?"WebKit":"Unknown"}function R(){const n=function(){try{if(v())return"Brave";if(g())return"Arc";if(b())return"Opera";if(M())return"Vivaldi";if(S())return"Samsung Internet";if(x())return"Edge";if(E())return"Firefox";if(A())return"Safari";if(k())return"Chrome";const n=navigator.userAgent;return/Firefox/i.test(n)&&!k()?"Firefox":/Safari/i.test(n)&&!k()?"Safari":/Chrome/i.test(n)?"Chrome":"Unknown"}catch{return"Unknown"}}(),e=_(),t=["Brave","Arc","Opera","Vivaldi","Samsung Internet","Edge","Chrome"].includes(n);let r=n.toLowerCase();return t&&"Chrome"!==n&&(r=`${n.toLowerCase()}-chromium`),{name:n,engine:e,isChromiumBased:t,family:r}}function F(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}function O(){try{if(!F())return!1;const n=document.createElement("canvas"),e=n.getContext("webgl")||n.getContext("experimental-webgl");if(!e)return!1;const t=e,r=t.getParameter(t.RENDERER),o=Boolean(r&&"string"==typeof r),i=t.getExtension("WEBGL_lose_context");return i&&i.loseContext(),o}catch{return!1}}function I(){try{return!(!window.AudioContext&&!window.webkitAudioContext)}catch{return!1}}function P(){const n=F(),e=function(){try{return"undefined"!=typeof window&&"function"==typeof window.matchMedia}catch{return!1}}();return{engine:_(),supportsDOM:n,supportsMediaQueries:e,supportsWebGL:O(),supportsAudio:I(),isSecure:C(),isPrivateMode:T(),canRunDOMBlockers:(w()||y())&&n,canRunAccessibility:e,canRunBrowserAPIs:n&&"undefined"!=typeof navigator}}async function L(){const n=performance.now();try{const e=function(){try{const n=navigator.language||"";let e=[];navigator.languages?e=Array.from(navigator.languages):navigator.language&&(e=[navigator.language]);const t=[navigator.userLanguage,navigator.browserLanguage,navigator.systemLanguage].filter(Boolean);return e=[...new Set([...e,...t])],{language:n,languages:e}}catch{return{language:"",languages:[]}}}(),t=function(){try{let n="";if(Intl&&Intl.DateTimeFormat)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}if(!n){const e=new Date(2024,0,1).getTimezoneOffset(),t=e>0?"-":"+",r=Math.floor(Math.abs(e)/60),o=Math.abs(e)%60;n=`UTC${t}${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}return{timezone:n,timezoneOffset:new Date(2024,0,1).getTimezoneOffset()}}catch{return{timezone:"",timezoneOffset:0}}}(),r=function(){try{return{platform:navigator.platform||"",userAgent:navigator.userAgent||""}}catch{return{platform:"",userAgent:""}}}(),o=function(){try{const n=navigator.hardwareConcurrency||0;let e;"deviceMemory"in navigator&&(e=navigator.deviceMemory);const t={hardwareConcurrency:n};return void 0!==e&&(t.deviceMemory=e),t}catch{return{hardwareConcurrency:0}}}(),i=function(){try{const n=!1!==navigator.cookieEnabled;let e=null;return"doNotTrack"in navigator?e=navigator.doNotTrack:"msDoNotTrack"in navigator?e=navigator.msDoNotTrack:"mozDoNotTrack"in window&&(e=window.mozDoNotTrack),{cookieEnabled:n,doNotTrack:e}}catch{return{cookieEnabled:!0,doNotTrack:null}}}(),a=function(){try{if(!navigator.plugins)return{length:0,names:[]};const n=Array.from(navigator.plugins).map(n=>n.name).filter(n=>n).sort();return{length:navigator.plugins.length,names:n.slice(0,10)}}catch{return{length:0,names:[]}}}(),c=function(){try{let n=0,e=!1,t=!1;"maxTouchPoints"in navigator?n=navigator.maxTouchPoints:"msMaxTouchPoints"in navigator&&(n=navigator.msMaxTouchPoints);try{e="TouchEvent"in window}catch{e="ontouchstart"in window}return t="ontouchstart"in window,{maxTouchPoints:n,touchEvent:e,touchStart:t}}catch{return{maxTouchPoints:0,touchEvent:!1,touchStart:!1}}}(),s=function(){try{return R()}catch{return{name:"Unknown",engine:"Unknown",isChromiumBased:!1,family:"unknown"}}}(),u=performance.now(),l={language:e.language,languages:e.languages,timezone:t.timezone,timezoneOffset:t.timezoneOffset,platform:r.platform,userAgent:r.userAgent,browserInfo:s,hardwareConcurrency:o.hardwareConcurrency,cookieEnabled:i.cookieEnabled,doNotTrack:i.doNotTrack,plugins:a,touchSupport:c};void 0!==o.deviceMemory&&(l.deviceMemory=o.deviceMemory);const d=navigator.productSub;return"string"==typeof d&&d&&(l.productSub=d),l.applePayVersion=(()=>{try{if(void 0===globalThis.ApplePaySession)return 0;if("function"!=typeof globalThis.ApplePaySession.supportsVersion)return 0;for(let n=15;n>=1;n--)if(globalThis.ApplePaySession.supportsVersion(n))return n;return 0}catch{return 0}})(),{value:l,duration:u-n}}catch(e){return{value:{language:"",languages:[],timezone:"",timezoneOffset:0,platform:"",userAgent:"",hardwareConcurrency:0,cookieEnabled:!0,doNotTrack:null,plugins:{length:0,names:[]},touchSupport:{maxTouchPoints:0,touchEvent:!1,touchStart:!1}},duration:performance.now()-n,error:e instanceof Error?e.message:"Browser fingerprinting failed"}}}function N(n){var e;if(0===n.length)return 0;const t={};for(const r of n)t[r]=(null!==(e=t[r])&&void 0!==e?e:0)+1;let r=n[0];for(const n in t){const e=parseInt(n,10);t[e]>t[r]&&(r=e)}return r}function D(n,e,t){const r=n[0].data.length,o=new Uint8ClampedArray(r);for(let e=0;e<r;e++){const t=[];for(const r of n)t.push(r.data[e]);o[e]=N(t)}return new ImageData(o,e,t)}const B=["Zap Canvas 🎨🔒2024","Żółć gęślą jaźń €$¢£¥","αβγδεζηθικλμνξο","中文测试字体渲染","🌟🎯🚀💎🌊🎨"];function H(n){n.imageSmoothingEnabled=!0,n.imageSmoothingQuality="high";const e=n.createRadialGradient(75,75,0,75,75,50);e.addColorStop(0,"rgba(255, 0, 0, 0.8)"),e.addColorStop(.3,"rgba(0, 255, 0, 0.6)"),e.addColorStop(.7,"rgba(0, 0, 255, 0.4)"),e.addColorStop(1,"rgba(255, 255, 0, 0.2)"),n.fillStyle=e,n.fillRect(10,10,130,100),n.fillStyle="rgba(102, 204, 0, 0.7)",n.fillRect(15.5,15.3,49.7,49.2),n.fillStyle="#f60",n.fillRect(70.3,10.7,50.1,50.9),n.beginPath(),n.moveTo(25.2,120.1),n.bezierCurveTo(25.2,120.1,75.8,90.3,125.5,120.7),n.bezierCurveTo(125.5,120.7,90.1,150.2,60.8,140.9),n.closePath(),n.fillStyle="rgba(200, 100, 50, 0.6)",n.fill(),n.globalCompositeOperation="multiply",n.beginPath(),n.arc(50.7,80.3,20.1,0,2*Math.PI),n.fillStyle="rgba(255, 0, 100, 0.5)",n.fill(),n.beginPath(),n.arc(70.3,80.7,20.9,0,2*Math.PI),n.fillStyle="rgba(0, 255, 100, 0.5)",n.fill(),n.globalCompositeOperation="source-over",n.strokeStyle="rgba(50, 50, 50, 0.8)",n.lineWidth=.5,n.setLineDash([2.3,1.7]);for(let e=0;e<10;e++)n.beginPath(),n.moveTo(10+13.7*e,160),n.lineTo(50+11.3*e,200),n.stroke();n.setLineDash([]);const t=document.createElement("canvas");t.width=20,t.height=20;const r=t.getContext("2d");if(r){r.fillStyle="rgba(150, 75, 200, 0.3)",r.fillRect(0,0,10,10),r.fillRect(10,10,10,10);const e=n.createPattern(t,"repeat");e&&(n.fillStyle=e,n.fillRect(150,120,80,60))}n.shadowColor="rgba(0, 0, 0, 0.5)",n.shadowBlur=3.2,n.shadowOffsetX=2.1,n.shadowOffsetY=2.7,n.fillStyle="rgba(100, 200, 150, 0.8)",n.fillRect(160,30,60,40),n.shadowColor="transparent",n.shadowBlur=0,n.shadowOffsetX=0,n.shadowOffsetY=0}function $(n){const e=["14px Arial, sans-serif",'13px "Times New Roman", serif',"12px Georgia, serif","15px Helvetica, Arial, sans-serif",'11px "Courier New", monospace',"13px Verdana, sans-serif","16px Impact, fantasy",'12px "Comic Sans MS", cursive'],t=["#000","#333","#666","#999","rgba(255, 0, 0, 0.8)","rgba(0, 255, 0, 0.7)","rgba(0, 0, 255, 0.6)","rgba(128, 64, 192, 0.9)"],r=["top","hanging","middle","alphabetic","bottom"],o=["left","center","right"];let i=250;B.forEach((a,c)=>{e.forEach((e,s)=>{const u=(c+s)%t.length,l=s%r.length,d=s%o.length;n.font=e,n.fillStyle=t[u]||t[0],n.textBaseline=r[l]||"top",n.textAlign=o[d]||"left";const f=10+.7*s%200,m=i+18.3*s%100;n.fillText(a,f,m),s%2==0&&(n.strokeStyle=`rgba(${100+20*s}, ${50+15*s}, ${150+10*s}, 0.5)`,n.lineWidth=.3,n.strokeText(a,f+.5,m+.5))}),i+=120}),n.save(),n.translate(100,400),n.rotate(Math.PI/6),n.scale(1.2,.8),n.font="italic 14px Arial",n.fillStyle="rgba(200, 100, 50, 0.8)",n.fillText("Transformed & Rotated Text",0,0),n.restore(),n.font="6px Arial",n.fillStyle="#000",n.fillText("Tiny text rendering test",10,500),n.font="32px Arial",n.fillStyle="rgba(255, 0, 0, 0.5)",n.fillText("Large",10,540),n.textAlign="left",n.textBaseline="top"}async function G(){const n=performance.now();try{const e=document.createElement("canvas");e.width=300,e.height=600;const t=e.getContext("2d",{alpha:!0,desynchronized:!1,colorSpace:"srgb",willReadFrequently:!0});if(!t)throw new Error("Canvas 2D context not available");t.rect(0,0,10,10),t.rect(2,2,6,6);const r=t.isPointInPath(5,5,"evenodd");$(t);const o=c(e.toDataURL("image/png"));t.clearRect(0,0,e.width,e.height),H(t);const i=c(e.toDataURL("image/png")),a=function(n,e){try{n.clearRect(0,0,e.width,e.height),n.fillStyle="rgb(100, 150, 200)",n.fillRect(10.3,10.7,20.1,20.9),n.strokeStyle="rgb(200, 100, 50)",n.lineWidth=1.3,n.beginPath(),n.moveTo(15.2,35.8),n.lineTo(25.7,45.1),n.stroke();const t=n.getImageData(10,10,30,40).data;let r=0,o=0,i=0,a=0,c=0;for(let n=0;n<t.length;n+=4){const e=t[n]||0,s=t[n+1]||0,u=t[n+2]||0;if((t[n+3]||0)>25&&(r+=e,o+=s,i+=u,c++,n>=16)){const r=t[n-16]||0,o=Math.abs(e-r);o>=8&&(a+=o)}}if(0===c)return"no-valid-pixels";return`${10*Math.round(r/c/10)}-${10*Math.round(o/c/10)}-${10*Math.round(i/c/10)}-${10*Math.round(a/c/10)}`}catch(n){return"subpixel-error"}}(t,e),s=function(n,e,t,r){const o=[];let i=0;try{const a=r.getImageData(0,0,1,1);a&&0!==a.data.length||(o.push("getImageData-blocked"),i+=3),(n.length<8||e.length<8)&&(o.push("short-hash"),i+=2);const c=["error","blocked","disabled","00000000","ffffffff","12345678"];(c.includes(n)||c.includes(e))&&(o.push("known-blocked-hash"),i+=3),("subpixel-error"===t||t.includes("0-0-0"))&&(o.push("subpixel-anomaly"),i+=2),n===e&&"error"!==n&&(o.push("identical-hashes"),i+=2);const s=document.createElement("canvas");s.width=10,s.height=10;const u=s.getContext("2d");if(u){const n=performance.now();u.fillStyle="red",u.fillRect(0,0,10,10),s.toDataURL(),performance.now()-n>50&&(o.push("slow-canvas"),i+=1)}return{isInconsistent:i>=2,confidence:Math.min(i/5,1),reasons:o}}catch(n){return{isInconsistent:!0,confidence:1,reasons:["detection-error"]}}}(o,i,a,t);let u;s.isInconsistent||v()||S()?u=function(n,e,t,r=3){const o=[];for(let i=0;i<r;i++){const r=document.createElement("canvas");r.width=n,r.height=e;const i=r.getContext("2d",{willReadFrequently:!0});if(i){t(i);try{o.push(i.getImageData(0,0,n,e))}catch{}}}if(0===o.length)return"consensus-blocked";if(1===o.length)return c(Array.from(o[0].data).join(","));const i=D(o,n,e);return c(Array.from(i.data).join(","))}(e.width,e.height,n=>{$(n),n.globalCompositeOperation="multiply",H(n),n.globalCompositeOperation="source-over"}):(t.clearRect(0,0,e.width,e.height),$(t),t.globalCompositeOperation="multiply",H(t),t.globalCompositeOperation="source-over",u=c(e.toDataURL("image/png")));const l=performance.now();return{value:{text:o,geometry:i,winding:r,isInconsistent:s.isInconsistent,subPixelAnalysis:a,compositeHash:u,inconsistencyConfidence:s.confidence,blockingReasons:s.reasons},duration:l-n}}catch(e){return{value:{text:"error",geometry:"error",winding:!1,isInconsistent:!0,subPixelAnalysis:"error",compositeHash:"error",inconsistencyConfidence:1,blockingReasons:["canvas-error"]},duration:performance.now()-n,error:e instanceof Error?e.message:"Canvas fingerprinting failed"}}}const U=["Arial","Arial Black","Calibri","Cambria","Comic Sans MS","Consolas","Courier New","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Microsoft Sans Serif","Palatino Linotype","Segoe UI","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Gill Sans","Helvetica","Helvetica Neue","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","System Font","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Droid Sans","Droid Sans Mono","Droid Serif","Liberation Sans","Liberation Sans Narrow","Liberation Serif","Ubuntu","Ubuntu Mono","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Droid Sans","Droid Sans Mono","Droid Serif","Helvetica Neue","Arial","Helvetica","Courier New","Times New Roman","San Francisco","Avenir Next","Open Sans","Lato","Montserrat","Source Sans Pro","Raleway","PT Sans","Lora","Playfair Display","Oswald","Slabo 27px","Fira Sans","Hiragino Sans","Hiragino Kaku Gothic ProN","Meiryo","MS Gothic","MS Mincho","SimSun","SimHei","Microsoft YaHei","Malgun Gothic","Apple SD Gothic Neo"],j=["monospace","sans-serif","serif"],V="mmMwWLliI0O&1 ※";function W(n,e){const t=document.createElement("canvas").getContext("2d");if(!t)return{width:0,height:0};t.font=`12px ${e}`;const r=t.measureText(n);return{width:r.width,height:r.actualBoundingBoxAscent+r.actualBoundingBoxDescent}}function z(n,e){const t=document.createElement("span");t.style.position="absolute",t.style.left="-9999px",t.style.top="-9999px",t.style.fontSize="12px",t.style.fontFamily=e,t.style.whiteSpace="nowrap",t.textContent=n,document.body.appendChild(t);const r=t.getBoundingClientRect(),o={width:r.width,height:r.height};return document.body.removeChild(t),o}function X(n,e="canvas"){const t="canvas"===e?W:z,r=j.map(n=>t(V,n)),o=j.map(e=>t(V,`${n}, ${e}`));for(let n=0;n<r.length;n++){const e=r[n],t=o[n];if(e&&t){const n=Math.abs(e.width-t.width),r=Math.abs(e.height-t.height);if(n>.1||r>.1)return!0}}return!1}function q(n){return 10*Math.round(n/10)}async function J(){const n=performance.now();try{const e=function(){try{return{width:screen.width||0,height:screen.height||0}}catch{return{width:0,height:0}}}(),t=screen.colorDepth||screen.pixelDepth||0,r=function(){try{return window.devicePixelRatio||1}catch{return 1}}(),o=function(){try{const n=screen.availWidth||0,e=screen.availHeight||0;return 0===n&&0===e?{width:q(screen.width||0),height:q(screen.height||0)}:{width:q(n),height:q(e)}}catch{return{width:q(screen.width||0),height:q(screen.height||0)}}}(),i=function(){try{const n=document.documentElement,e=Math.max(n.clientWidth||0,window.innerWidth||0),t=Math.max(n.clientHeight||0,window.innerHeight||0);return{width:q(e),height:q(t)}}catch{const n=window.innerWidth||0,e=window.innerHeight||0;return{width:q(n),height:q(e)}}}(),a=function(){try{if(screen.orientation)return{angle:screen.orientation.angle,type:screen.orientation.type};const n=screen.mozOrientation||screen.msOrientation||screen.webkitOrientation;if(void 0!==n)return{angle:n,type:"unknown"};const e=screen.width>screen.height;return{angle:e?90:0,type:e?"landscape-primary":"portrait-primary"}}catch{return}}(),c=performance.now(),s={width:e.width,height:e.height,colorDepth:t,pixelRatio:r,availableWidth:o.width,availableHeight:o.height,viewportWidth:i.width,viewportHeight:i.height};return a&&(s.orientation=a),{value:s,duration:c-n}}catch(e){return{value:{width:0,height:0,colorDepth:0,pixelRatio:1,viewportWidth:0,viewportHeight:0,availableWidth:0,availableHeight:0},duration:performance.now()-n,error:e instanceof Error?e.message:"Screen fingerprinting failed"}}}let Z=null,K=0,Y=0;function Q(){try{const n=performance.now();if(Z&&Z.isValid)if(n-Z.timestamp<18e5){if(Z.context&&!Z.context.isContextLost())return Z.usageCount++,Z.lastUsed=n,Z.context;nn()}else nn();if(K>=8)return console.warn("[WebGL Cache] Maximum context limit reached, reusing existing contexts"),null;const e=function(){try{if("undefined"==typeof document)return null;const n=document.createElement("canvas");return n.width=1,n.height=1,n}catch{return null}}();if(!e)return null;const t=function(n){try{const e={alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"default"};return n.getContext("webgl",e)||n.getContext("experimental-webgl",e)}catch{return null}}(e);return t?(K++,Y++,Z={context:t,canvas:e,timestamp:n,isValid:!0,usageCount:1,lastUsed:n},t):null}catch(n){return nn(),null}}function nn(){if(Z){try{if(Z.context){const n=Z.context.getExtension("WEBGL_lose_context");n&&n.loseContext()}Z.canvas&&(Z.canvas.width=0,Z.canvas.height=0),K>0&&K--}catch{K>0&&K--}Z.isValid=!1,Z=null}}function en(){if(!Z||!Z.context)return!1;try{return!Z.context.isContextLost()}catch{return!1}}function tn(){const n=Q();if(!n)return[];try{const e=n.getSupportedExtensions();return e?Array.from(e).sort():[]}catch{return[]}}function rn(){const n=Q();if(!n)return{};try{const e={},t=["VERSION","VENDOR","RENDERER","SHADING_LANGUAGE_VERSION","MAX_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_VIEWPORT_DIMS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS"];for(const r of t)try{const t=n[r];void 0!==t&&(e[r]=n.getParameter(t))}catch{}return e}catch{return{}}}function on(){try{nn(),K=0,Y=0}catch(n){console.warn("[WebGL Cache] Cleanup error:",n)}}if("undefined"!=typeof window&&(window.addEventListener("beforeunload",on),window.addEventListener("pagehide",on),window.addEventListener("unload",on),document.addEventListener("visibilitychange",()=>{}),"memory"in performance&&"function"==typeof performance.memory.addEventListener))try{performance.memory.addEventListener("memorypressure",on)}catch(n){}var an=Object.freeze({__proto__:null,cleanupWebGLCache:on,forceCleanupWebGL:function(){nn(),K=0},getCachedWebGLContext:Q,getCachedWebGLExtensions:tn,getCachedWebGLParameters:rn,invalidateWebGLCache:nn,isWebGLContextValid:en});const cn={VENDOR:7936,RENDERER:7937,VERSION:7938,SHADING_LANGUAGE_VERSION:35724,MAX_VERTEX_ATTRIBS:34921,MAX_TEXTURE_SIZE:3379,MAX_RENDERBUFFER_SIZE:34024,MAX_VIEWPORT_DIMS:3386,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661};function sn(n,e,t){const r=n.createShader(e);return r?(n.shaderSource(r,t),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS)?r:(n.deleteShader(r),null)):null}function un(n,e,t){const r=n.createProgram();return r?(n.attachShader(r,e),n.attachShader(r,t),n.linkProgram(r),n.getProgramParameter(r,n.LINK_STATUS)?r:(n.deleteProgram(r),null)):null}function ln(n){const e=new Uint8Array(n.canvas.width*n.canvas.height*4);return n.readPixels(0,0,n.canvas.width,n.canvas.height,n.RGBA,n.UNSIGNED_BYTE,e),e}function dn(n){var e,t,r,o;let i=0;for(let a=0;a<n.length;a+=4)i=33*i+(null!==(e=n[a])&&void 0!==e?e:0)+256*(null!==(t=n[a+1])&&void 0!==t?t:0)+65536*(null!==(r=n[a+2])&&void 0!==r?r:0)+16777216*(null!==(o=n[a+3])&&void 0!==o?o:0)>>>0;return i.toString(16)}function fn(n){try{const e=n.getParameter(n.VENDOR)||"unknown",t=n.getParameter(n.RENDERER)||"unknown",r=n.getParameter(n.VERSION)||"unknown",o=`${e}|${t}|${r}|${n.getParameter(n.MAX_TEXTURE_SIZE)||0}|${n.getParameter(n.MAX_VERTEX_ATTRIBS)||0}|${n.getParameter(n.MAX_VIEWPORT_DIMS)||[0,0]}`;let i=0;for(let n=0;n<o.length;n++)i=(i<<5)-i+o.charCodeAt(n)&4294967295;return`fallback_${Math.abs(i).toString(16)}`}catch{return"webgl_unavailable"}}async function mn(){const n=performance.now();try{if(!hn())throw new Error("WebGL not supported in this browser");const e=Q();if(!e)throw new Error("WebGL context not available");if(!en())throw new Error("WebGL context lost");const t=function(){try{return rn()}catch{return{}}}(),r=t.VENDOR||"unknown",o=t.RENDERER||"unknown",i=t.VERSION||"unknown";let a=r,c=o;for(let n=0;n<3;n++)try{const n=e.getExtension("WEBGL_debug_renderer_info");if(n){const t=e.getParameter(n.UNMASKED_VENDOR_WEBGL),r=e.getParameter(n.UNMASKED_RENDERER_WEBGL);t&&"unknown"!==t&&(a=t),r&&"unknown"!==r&&(c=r);break}}catch(e){if(2===n)break;await new Promise(n=>setTimeout(n,10))}const s=function(){try{return tn()}catch{return[]}}(),u=function(n){const e={};return Object.entries(cn).forEach(([t,r])=>{const o=function(n,e){try{return n.getParameter(e)}catch{return null}}(n,r);null!==o&&(e[t]=Array.isArray(o)?o.join(","):o)}),["UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL"].forEach(t=>{try{const r=n.getExtension("WEBGL_debug_renderer_info");if(r){const o=r[t];if(void 0!==o){const r=n.getParameter(o);r&&(e[t]=r)}}}catch{}}),e}(e),l=function(n){const e=[],t=[];try{const r=[n.LOW_FLOAT,n.MEDIUM_FLOAT,n.HIGH_FLOAT,n.LOW_INT,n.MEDIUM_INT,n.HIGH_INT],o=["LOW_FLOAT","MEDIUM_FLOAT","HIGH_FLOAT","LOW_INT","MEDIUM_INT","HIGH_INT"];for(let i=0;i<r.length;i++){const a=r[i];if(void 0===a)continue;const c=n.getShaderPrecisionFormat(n.VERTEX_SHADER,a),s=n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,a);c&&e.push(`${o[i]}:${c.precision},${c.rangeMin},${c.rangeMax}`),s&&t.push(`${o[i]}:${s.precision},${s.rangeMin},${s.rangeMax}`)}}catch{}return{vertex:e.join(";"),fragment:t.join(";")}}(e),d=function(n){try{const e="\n attribute vec2 a_position;\n attribute vec3 a_color;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex mathematical operations to differentiate GPUs\n float wave = sin(a_position.x * 10.0 + u_time) * 0.1;\n vec2 position = a_position + vec2(wave, cos(a_position.y * 8.0) * 0.1);\n \n // GPU-specific floating point calculations\n float precision = sin(position.x * 123.456) + cos(position.y * 789.012);\n position += vec2(precision * 0.001);\n \n gl_Position = vec4(position, 0.0, 1.0);\n v_color = a_color;\n }\n ",t="\n precision mediump float;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex color calculations that vary between GPU vendors\n vec3 color = v_color;\n color.r += sin(gl_FragCoord.x * 0.1 + u_time) * 0.1;\n color.g += cos(gl_FragCoord.y * 0.1 + u_time) * 0.1;\n color.b += sin((gl_FragCoord.x + gl_FragCoord.y) * 0.05) * 0.1;\n \n // GPU-specific precision in color calculations\n color = normalize(color) * length(v_color);\n \n gl_FragColor = vec4(color, 1.0);\n }\n ",r=sn(n,n.VERTEX_SHADER,e),o=sn(n,n.FRAGMENT_SHADER,t);if(!r||!o)return fn(n);const i=un(n,r,o);if(!i)return fn(n);n.useProgram(i);const a=new Float32Array([-.8,-.6,1,.2,.3,0,.8,.3,1,.2,.8,-.6,.2,.3,1,-.5,-.2,.8,.9,.1,.3,.6,.1,.8,.9,.7,-.3,.9,.1,.8]),c=n.createBuffer();n.bindBuffer(n.ARRAY_BUFFER,c),n.bufferData(n.ARRAY_BUFFER,a,n.STATIC_DRAW);const s=n.getAttribLocation(i,"a_position"),u=n.getAttribLocation(i,"a_color"),l=n.getUniformLocation(i,"u_time");let d;if(n.enableVertexAttribArray(s),n.enableVertexAttribArray(u),n.vertexAttribPointer(s,2,n.FLOAT,!1,20,0),n.vertexAttribPointer(u,3,n.FLOAT,!1,20,8),n.uniform1f(l,1.23456789),n.enable(n.BLEND),n.blendFunc(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA),n.clearColor(.1,.2,.3,1),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLES,0,6),v()||S()){const r=n.canvas.width,o=n.canvas.height,i=[ln(n)];for(let n=0;n<2;n++){const n=document.createElement("canvas");n.width=r,n.height=o;const c=n.getContext("webgl");if(!c)continue;const s=e,u=t,l=sn(c,c.VERTEX_SHADER,s),d=sn(c,c.FRAGMENT_SHADER,u);if(!l||!d)continue;const f=un(c,l,d);if(!f)continue;c.useProgram(f);const m=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,m),c.bufferData(c.ARRAY_BUFFER,a,c.STATIC_DRAW);const p=c.getAttribLocation(f,"a_position"),h=c.getAttribLocation(f,"a_color"),w=c.getUniformLocation(f,"u_time");c.enableVertexAttribArray(p),c.enableVertexAttribArray(h),c.vertexAttribPointer(p,2,c.FLOAT,!1,20,0),c.vertexAttribPointer(h,3,c.FLOAT,!1,20,8),c.uniform1f(w,1.23456789),c.enable(c.BLEND),c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA),c.clearColor(.1,.2,.3,1),c.clear(c.COLOR_BUFFER_BIT),c.drawArrays(c.TRIANGLES,0,6),i.push(ln(c)),c.deleteProgram(f),c.deleteShader(l),c.deleteShader(d),c.deleteBuffer(m)}const c=D(i.map(n=>new ImageData(new Uint8ClampedArray(n),r,o)),r,o);d=dn(new Uint8Array(c.data))}else d=dn(ln(n));return n.deleteProgram(i),n.deleteShader(r),n.deleteShader(o),n.deleteBuffer(c),d}catch(e){return fn(n)}}(e),f=function(n){var e;const t={};try{const r=n.getExtension("WEBGL_debug_renderer_info");r&&(t.unmaskedVendor=n.getParameter(r.UNMASKED_VENDOR_WEBGL),t.unmaskedRenderer=n.getParameter(r.UNMASKED_RENDERER_WEBGL)),t.maxTextureSize=n.getParameter(n.MAX_TEXTURE_SIZE),t.maxCombinedTextureImageUnits=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS),t.maxViewportDims=n.getParameter(n.MAX_VIEWPORT_DIMS),t.maxRenderbufferSize=n.getParameter(n.MAX_RENDERBUFFER_SIZE),t.maxVertexAttribs=n.getParameter(n.MAX_VERTEX_ATTRIBS),t.maxVertexUniformVectors=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),t.maxFragmentUniformVectors=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),t.maxVaryingVectors=n.getParameter(n.MAX_VARYING_VECTORS),t.antialias=(null===(e=n.getContextAttributes())||void 0===e?void 0:e.antialias)||!1;const o=n.getExtension("OES_texture_float");t.floatTextures=!!o;const i=n.getExtension("OES_texture_half_float");t.halfFloatTextures=!!i;const a=n.getParameter(n.COMPRESSED_TEXTURE_FORMATS);t.compressedTextureFormats=Array.isArray(a)?a.length:0;const c=n instanceof WebGL2RenderingContext;if(t.webgl2=c,c){const e=n;t.maxColorAttachments=e.getParameter(e.MAX_COLOR_ATTACHMENTS),t.maxDrawBuffers=e.getParameter(e.MAX_DRAW_BUFFERS),t.maxTexture3DSize=e.getParameter(e.MAX_3D_TEXTURE_SIZE)}const s=n.getParameter(n.ALIASED_LINE_WIDTH_RANGE);t.lineWidthRange=Array.isArray(s)?s.join(","):"";const u=n.getParameter(n.ALIASED_POINT_SIZE_RANGE);t.pointSizeRange=Array.isArray(u)?u.join(","):""}catch(n){}return t}(e),m=(()=>{const n=`${a||r||""}|${c||o||""}`.toLowerCase();let e=0;for(let t=0;t<n.length;t++)e=(e<<5)-e+n.charCodeAt(t)&4294967295;return Math.abs(e).toString(16)})(),p=performance.now();return{value:{vendor:a,renderer:c,version:i,extensions:s,parameters:u,shaderPrecision:l,renderHash:d,capabilities:f,vendorRendererHash:m,contextAttributes:e.getContextAttributes()||{}},duration:p-n}}catch(e){return{value:{vendor:"unknown",renderer:"unknown",version:"unknown",extensions:[],parameters:{},shaderPrecision:{vertex:"",fragment:""},renderHash:"",capabilities:{},vendorRendererHash:"",contextAttributes:{}},duration:performance.now()-n,error:e instanceof Error?e.message:"WebGL fingerprinting failed"}}}let pn=null;function hn(){if(null!==pn)return pn;try{const n=document.createElement("canvas");n.width=1,n.height=1;const e=n.getContext("webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1})||n.getContext("experimental-webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1}),t=null!==e;if(e&&"getExtension"in e)try{const n=e.getExtension("WEBGL_lose_context");n&&n.loseContext()}catch(n){}return n.width=0,n.height=0,pn=t,t}catch{return pn=!1,!1}}function wn(){try{for(const n of["rec2020","p3","srgb"]){const e=Tn(`(color-gamut: ${n})`);if(null==e?void 0:e.matches)return n}return"unknown"}catch{return"unknown"}}function yn(){try{const n=Tn("(forced-colors: active)");if(null==n?void 0:n.matches)return!0;const e=Tn("(forced-colors: none)");return!(null==e?void 0:e.matches)&&null}catch{return null}}function vn(){try{const n=["no-preference","high","more","low","less","forced"];for(const e of n){const n=Tn(`(prefers-contrast: ${e})`);if(null==n?void 0:n.matches)return"high"===e?"more":"low"===e?"less":e}return"unknown"}catch{return"unknown"}}function gn(){try{const n=Tn("(prefers-reduced-motion: reduce)");if(null==n?void 0:n.matches)return!0;const e=Tn("(prefers-reduced-motion: no-preference)");return!(null==e?void 0:e.matches)&&null}catch{return null}}function bn(){try{return!!matchMedia("(prefers-reduced-transparency: reduce)").matches||!matchMedia("(prefers-reduced-transparency: no-preference)").matches&&null}catch{return null}}function Mn(){try{for(let n=8;n>=0;n--)if(matchMedia(`(monochrome: ${n})`).matches)return n;return 0}catch{return 0}}function Sn(){try{return!!matchMedia("(inverted-colors: inverted)").matches||!matchMedia("(inverted-colors: none)").matches&&null}catch{return null}}function kn(){try{return!!matchMedia("(dynamic-range: high)").matches||!matchMedia("(dynamic-range: standard)").matches&&null}catch{return null}}function En(){try{const n=[48,36,30,24,16,15,8];for(const e of n)if(matchMedia(`(color: ${e})`).matches)return e;return screen.colorDepth||24}catch{return screen.colorDepth||24}}function xn(){try{return matchMedia("(hover: hover)").matches?"hover":matchMedia("(hover: none)").matches?"none":"unknown"}catch{return"unknown"}}function An(){try{return matchMedia("(pointer: fine)").matches?"fine":matchMedia("(pointer: coarse)").matches?"coarse":matchMedia("(pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Cn(){return P().canRunAccessibility}function Tn(n){try{return Cn()?matchMedia(n):null}catch(n){return null}}function _n(){try{return!!matchMedia("(prefers-reduced-data: reduce)").matches||!matchMedia("(prefers-reduced-data: no-preference)").matches&&null}catch{return null}}function Rn(){try{const n=["fullscreen","standalone","minimal-ui","browser"];for(const e of n)if(matchMedia(`(display-mode: ${e})`).matches)return e;return"unknown"}catch{return"unknown"}}function Fn(){try{const n=["opaque","additive","subtractive"];for(const e of n)if(matchMedia(`(environment-blending: ${e})`).matches)return e;return"unknown"}catch{return"unknown"}}function On(){try{return!!matchMedia("(any-hover: hover)").matches||!matchMedia("(any-hover: none)").matches&&null}catch{return null}}function In(){try{return matchMedia("(any-pointer: fine)").matches?"fine":matchMedia("(any-pointer: coarse)").matches?"coarse":matchMedia("(any-pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Pn(){try{return matchMedia("(prefers-color-scheme: dark)").matches?"dark":matchMedia("(prefers-color-scheme: light)").matches?"light":matchMedia("(prefers-color-scheme: no-preference)").matches?"no-preference":"unknown"}catch{return"unknown"}}function Ln(){var n;try{for(const e of["enabled","initial-only","none"])if(null===(n=Tn(`(scripting: ${e})`))||void 0===n?void 0:n.matches)return e;return"unknown"}catch{return"unknown"}}function Nn(){var n;try{for(const e of["fast","slow","none"])if(null===(n=Tn(`(update: ${e})`))||void 0===n?void 0:n.matches)return e;return"unknown"}catch{return"unknown"}}function Dn(){const n=wn(),e=yn(),t=vn(),r=gn(),o=bn(),i=Mn(),a=Sn(),c=kn(),s=En(),u=xn(),l=An(),d=_n(),f=Rn(),m=Fn(),p=On(),h=In(),w=Pn(),y=Ln(),v=Nn(),g=Boolean(e||r||o||a||d||"no-preference"!==t||"no-preference"!==w||i>0),b=[n,c?"hdr":"sdr",`${s}bit`,i>0?`mono${i}`:"color",w,f,m].join("-"),M=[u,l,p?"anyhover":"nohover",h].join("-");return{colorGamut:n,forcedColors:e,contrastPreference:t,reducedMotion:r,reducedTransparency:o,monochromeDepth:i,invertedColors:a,hdrSupport:c,enhancedColorDepth:s,hoverCapability:u,pointerCapability:l,reducedData:d,displayMode:f,environmentBlending:m,anyHover:p,anyPointer:h,colorScheme:w,scripting:y,updateFrequency:v,hasAccessibilityFeatures:g,displayCapabilities:b,interactionCapabilities:M}}function Bn(n){const e=["unknown"!==n.colorGamut,null!==n.forcedColors,"unknown"!==n.contrastPreference,null!==n.reducedMotion,null!==n.reducedTransparency,null!==n.invertedColors,null!==n.hdrSupport,null!==n.reducedData,"unknown"!==n.displayMode,"unknown"!==n.environmentBlending,null!==n.anyHover,"unknown"!==n.colorScheme],t=e.filter(Boolean).length/e.length,r=[null!==n.reducedData,"unknown"!==n.displayMode,"unknown"!==n.environmentBlending,"unknown"!==n.colorScheme,null!==n.hdrSupport],o=r.filter(Boolean).length/r.length,i=[!0===n.forcedColors,!0===n.reducedMotion,!0===n.reducedTransparency,!0===n.invertedColors,!0===n.reducedData,"no-preference"!==n.contrastPreference,"dark"===n.colorScheme,n.monochromeDepth>0],a=i.filter(Boolean).length/i.length,c=["srgb"!==n.colorGamut,!0===n.forcedColors,!0===n.reducedMotion,!0===n.reducedTransparency,!0===n.invertedColors,!0===n.reducedData,n.monochromeDepth>0,!0===n.hdrSupport,"browser"!==n.displayMode,"opaque"!==n.environmentBlending,"dark"===n.colorScheme],s=c.filter(Boolean).length/c.length;return{confidence:Math.round(100*t)/100,uniqueness:Math.round(100*s)/100,accessibilityScore:Math.round(100*a)/100,modernBrowserScore:Math.round(100*o)/100}}var Hn=Object.freeze({__proto__:null,analyzeAccessibilityFingerprint:Bn,getAccessibilityFingerprint:Dn,getAnyHover:On,getAnyPointer:In,getColorGamut:wn,getColorScheme:Pn,getContrastPreference:vn,getDisplayMode:Rn,getEnhancedColorDepth:En,getEnvironmentBlending:Fn,getForcedColors:yn,getHDRSupport:kn,getHoverCapability:xn,getInvertedColors:Sn,getMonochromeDepth:Mn,getPointerCapability:An,getReducedData:_n,getReducedMotion:gn,getReducedTransparency:bn,getScriptingSupport:Ln,getUpdateFrequency:Nn,isAccessibilityDetectionAvailable:Cn});function $n(n){if("number"==typeof n)return{confidence:0,uniqueness:0,intlApiSupport:0,localeComplexity:0};const e=Object.values(n.intlSupport).filter(Boolean).length/Object.keys(n.intlSupport).length,t=[n.locale,n.calendar,n.numberingSystem,n.timeZone,n.dateStyle,n.timeStyle,n.hourCycle,n.numberLocale,n.currencyDisplay,n.currencySign,n.notation,n.signDisplay,n.listStyle,n.relativeTimeStyle,n.pluralRules],r=t.filter(n=>"unknown"!==n&&""!==n).length/t.length,o=[n.locale.length>2?1:0,"gregory"!==n.calendar?1:0,"latn"!==n.numberingSystem?1:0,n.hour12?1:0,n.localeMatch?0:1].reduce((n,e)=>n+e,0)/5,i=(r+e+o)/3;return{confidence:Math.round(100*r)/100,uniqueness:Math.round(100*i)/100,intlApiSupport:Math.round(100*e)/100,localeComplexity:Math.round(100*o)/100}}const Gn="mmMwWLliI0fiflO&1",Un={default:{text:Gn},serif:{style:{fontFamily:"serif"},text:Gn},sans:{style:{fontFamily:"sans-serif"},text:Gn},mono:{style:{fontFamily:"monospace"},text:Gn},apple:{style:{font:"-apple-system-body"},text:Gn},system:{style:{fontFamily:"system-ui"},text:Gn},min:{style:{fontSize:"1px"},text:Gn},large:{style:{fontSize:"72px"},text:Gn},ui:{style:{fontFamily:"ui-serif"},text:Gn},emoji:{style:{fontFamily:"Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji"},text:"🎯🔥💯"},math:{style:{fontFamily:"STIX Two Math, Cambria Math"},text:"∑∆∇∂"},cjk:{style:{fontFamily:"Hiragino Sans, Microsoft YaHei, SimSun"},text:"中文测试"},arabic:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"اختبار"},hebrew:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"בדיקה"},subpixel:{style:{fontFamily:"Arial",fontSize:"11px",textRendering:"optimizeLegibility"},text:Gn},kerning:{style:{fontFamily:"Times",fontSize:"24px",fontKerning:"normal"},text:"AV To"},ligatures:{style:{fontFamily:"Times",fontSize:"24px",fontVariantLigatures:"common-ligatures"},text:"ffi ffl fi fl"}};function jn(n,e,t){try{const r="mmmmmmmmmmlli",o=Vn(n,e,{style:{fontFamily:t},text:r}),i=Vn(n,e,{style:{fontFamily:"monospace"},text:r});if(Math.abs(o-i)<1)return"monospace-fallback";const a=Vn(n,e,{style:{fontFamily:"sans-serif"},text:r});return Math.abs(o-a)<1?"sans-serif-fallback":"native-font"}catch(n){return"fallback-error"}}function Vn(n,e,t){const r=n.createElement("span"),{style:o={},text:i=Gn}=t;r.textContent=i,r.style.cssText="position: absolute; left: 0; top: 0; white-space: nowrap; visibility: hidden;",Object.entries(o).forEach(([n,e])=>{void 0!==e&&(r.style[n]=e)}),e.appendChild(r);const a=r.getBoundingClientRect().width;return e.removeChild(r),Math.round(100*a)/100}function Wn(n){const e=[n.default,n.serif,n.sans,n.mono,n.apple,n.system,n.min,n.large,n.ui,n.emoji,n.math,n.cjk,n.arabic,n.hebrew,n.subpixel,n.kerning,n.ligatures],t=e.some(n=>n>0),r=e.filter(n=>n>0).length,o=e.length;let i=t?r/o:0;(n.antiAliasing.enabled||n.systemFontHints.clearType)&&(i+=.2),Object.keys(n.fallbackBehavior).length>0&&(i+=.1),i=Math.min(i,1);const a=n.apple>0||n.system>0,c=[n.subpixel,n.kerning,n.ligatures,n.emoji,n.math].some(n=>n>0)||n.antiAliasing.enabled||n.systemFontHints.clearType,s=e.reduce((n,e)=>n+e,0)/e.length,u=e.reduce((n,e)=>n+Math.pow(e-s,2),0)/e.length;let l=Math.min(u/100,1);n.antiAliasing.smoothingLevel>0&&(l+=.1),n.systemFontHints.hintingLevel>0&&(l+=.1),l=Math.min(l,1);let d="low";const f=n.antiAliasing.smoothingLevel;f>50||n.systemFontHints.clearType?d="high":(f>20||n.systemFontHints.hintingLevel>2)&&(d="medium");const m="error"!==n.isolatedHash&&n.isolatedHash.length>0;return{confidence:Math.round(100*i)/100,uniqueness:Math.round(100*l)/100,hasSystemFonts:a,hasAdvancedFeatures:c,renderingQuality:d,isolationIntegrity:m}}const zn=["sans-serif-thin","ARNO PRO","Agency FB","Arabic Typesetting","Arial Unicode MS","AvantGarde Bk BT","BankGothic Md BT","Batang","Bitstream Vera Sans Mono","Calibri","Century","Century Gothic","Clarendon","EUROSTILE","Franklin Gothic","Futura Bk BT","Futura Md BT","GOTHAM","Gill Sans","HELV","Haettenschweiler","Helvetica Neue","Humanst521 BT","Leelawadee","Letter Gothic","Levenim MT","Lucida Bright","Lucida Sans","Menlo","MS Mincho","MS Outlook","MS Reference Specialty","MS UI Gothic","MT Extra","MYRIAD PRO","Marlett","Meiryo UI","Microsoft Uighur","Minion Pro","Monotype Corsiva","PMingLiU","Pristina","SCRIPTINA","Segoe UI Light","Serifa","SimHei","Small Fonts","Staccato222 BT","TRAJAN PRO","Univers CE 55 Medium","Vrinda","ZWAdobeF","Arial","Arial Black","Comic Sans MS","Courier New","Georgia","Impact","Palatino Linotype","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Helvetica","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Liberation Sans","Liberation Serif","Ubuntu","Ubuntu Mono"],Xn="mmMwWLliI0O&1",qn="48px",Jn=["monospace","sans-serif","serif"];function Zn(n,e){const t=n.createElement("span");return t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.fontFamily=e,t.style.fontSize=qn,t.style.whiteSpace="nowrap",t.textContent=Xn,t}function Kn(n,e,t){return Zn(n,`'${e}',${t}`)}function Yn(n,e){return Jn.some((t,r)=>{const o=n[r],i=e[t];return!(!o||!i||o.offsetWidth===i.width&&o.offsetHeight===i.height)})}function Qn(n){const{available:e,method:t,precision:r,totalTested:o,detectionTime:i}=n;let a=.5;"iframe"===t?a=.9:"dom"===t&&(a=.7),a*=r;const c=e.filter(n=>["Calibri","Segoe UI Light","MS UI Gothic","Arial Unicode MS"].includes(n)).length,s=e.filter(n=>["Helvetica Neue","Avenir","Menlo","Zapfino","Baskerville"].includes(n)).length,u=e.filter(n=>["DejaVu Sans","Liberation Sans","Ubuntu"].includes(n)).length,l=e.filter(n=>["sans-serif-thin","Roboto"].includes(n)).length;let d="unknown";c>=2?d="windows":s>=2?d="macos":u>=1?d="linux":l>=1&&(d="android");const f=Math.min(i<100?1:.8,1),m=["Arial","Times New Roman","Helvetica"],p=e.filter(n=>!m.includes(n)),h=Math.min(p.length/10,1);return{confidence:Math.round(100*a)/100,uniqueness:Math.round(100*h)/100,osSignature:d,browserCapabilities:Math.round(100*f)/100}}function ne(n){return`${n.available.sort().join(",")}|${n.method}|${n.precision.toFixed(2)}`}const ee=Math;function te(n,e,t,r){const o=(t-e)/r;let i=0;for(let t=0;t<r;t++)i+=n(e+(t+.5)*o);return i*o}const re=()=>0;function oe(){const n=ee.acos||re,e=ee.acosh||re,t=ee.asin||re,r=ee.asinh||re,o=ee.atanh||re,i=ee.atan||re,a=ee.sin||re,c=ee.sinh||re,s=ee.cos||re,u=ee.cosh||re,l=ee.tan||re,d=ee.tanh||re,f=ee.exp||re,m=ee.expm1||re,p=ee.log1p||re,h=ee.cbrt||re,w=ee.hypot||re,y=ee.log10||re,v=ee.log2||re;return{acos:n(.12312423423423424),asin:t(.12312423423423424),atan:i(.5),cos:s(10.000000000123),sin:a(-1e300),tan:l(-1e300),acosh:e(1e308),asinh:r(1),atanh:o(.5),cosh:u(1),sinh:c(1),tanh:d(1),exp:f(1),expm1:m(1),log1p:p(10),powPI:ee.pow(ee.PI,-100),cbrt:h(27),hypot:w(3,4),log10:y(100),log2:v(8),acoshPf:(g=1e154,ee.log(g+ee.sqrt(g*g-1))),asinhPf:ee.log(1+ee.sqrt(2)),atanhPf:ee.log(3)/2,sinhPf:(ee.exp(1)-ee.exp(-1))/2,coshPf:(ee.exp(1)+ee.exp(-1))/2,expm1Pf:ee.exp(1)-1,tanhPf:(ee.exp(2)-1)/(ee.exp(2)+1),log1pPf:ee.log(11),precision:{float32:ee.abs(0),float64:ee.abs(2-2.0000000000000004),bigNumbers:ee.abs(1),smallNumbers:ee.abs(1e-15+2e-15-3e-15)},largeCos:ee.cos(1e20),largeSin:ee.sin(1e20),largeTan:ee.tan(1e20),integratedAsin:te(ee.asin,-1,1,97),integratedCos:te(ee.cos,0,ee.PI,97),integratedSin:te(ee.sin,-ee.PI,ee.PI,97),integratedTan:te(ee.tan,0,2*ee.PI,97)};var g}function ie(){try{const n=oe();return[n.acos,n.asin,n.atan,n.cos,n.sin,n.tan,n.acosh,n.asinh,n.atanh,n.cosh,n.sinh,n.tanh,n.exp,n.expm1,n.log1p,n.powPI,n.cbrt,n.hypot,n.log10,n.log2,n.precision.float32,n.precision.float64,n.precision.bigNumbers,n.precision.smallNumbers].join(",")}catch{return"math-unavailable"}}function ae(n){let e=.9,t=.8;Object.values(n).some(n=>"number"==typeof n&&0!==n)||(e=.1,t=.1),e*=Object.values(n.precision).reduce((n,e)=>n+("number"!=typeof e||isNaN(e)?0:1),0)/4;let r="high";return e<.3?r="low":e<.7&&(r="medium"),{confidence:Math.round(100*e)/100,stability:r,uniqueness:Math.round(100*t)/100}}function ce(n,e){const t=n.match(new RegExp(`m=${e} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));return(t?t[1].split(" "):[]).map(t=>{var r;const o=new RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`,"g"),i=[...n.matchAll(o)];if(!i.length)return null;const a={};for(const n of i){const t=n[1],o=n[2],i=o.split("/");"rtpmap"===t?(a.mimeType=`${e}/${i[0]}`,a.clockRate=Number(i[1]),"audio"===e&&(a.channels=Number(i[2])||1)):"rtcp-fb"===t?(null!==(r=a.feedbackSupport)&&void 0!==r||(a.feedbackSupport=[]),a.feedbackSupport.push(o)):"fmtp"===t&&(a.sdpFmtpLine=o)}return a}).filter(Boolean)}const se=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","geolocation","gyroscope","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management"];async function ue(){const n={};return await Promise.allSettled(se.map(async e=>{try{const t=await navigator.permissions.query({name:e});n[e]=t.state}catch{}})),n}function le(n){var e;if(0===n.length)return"unknown";const t={};for(const r of n)t[r]=(null!==(e=t[r])&&void 0!==e?e:0)+1;let r=n[0];for(const n in t)t[n]>t[r]&&(r=n);return r}async function de(){var n;const e=performance.now();try{if(!(null===(n=null===navigator||void 0===navigator?void 0:navigator.permissions)||void 0===n?void 0:n.query))return{value:{},duration:performance.now()-e,error:"Permissions API not available"};const t=await Promise.all([ue(),ue(),ue()]),r={};for(const n of se){const e=t.map(e=>e[n]).filter(n=>void 0!==n);e.length>0&&(r[n]=le(e))}return{value:r,duration:performance.now()-e}}catch(n){return{value:{},duration:performance.now()-e,error:n instanceof Error?n.message:"Permissions fingerprinting failed"}}}function fe(n){return n.replace(/\\/g,"\\\\").replace(/,/g,"\\,")}async function me(){const e=performance.now();return new Promise(t=>{try{if("undefined"==typeof window||!window.speechSynthesis||"function"!=typeof window.speechSynthesis.getVoices)return void t({value:{supported:!1,voiceCount:0,voicesHash:"unsupported"},duration:performance.now()-e,error:"Speech Synthesis API not supported"});let r=!1,o=null;const i=i=>{if(!r){r=!0,o&&clearTimeout(o);try{const r=function(n){return n.map(n=>{var e,t,r;return[fe(null!==(e=n.voiceURI)&&void 0!==e?e:""),fe(null!==(t=n.name)&&void 0!==t?t:""),fe(null!==(r=n.lang)&&void 0!==r?r:""),n.localService?"1":"0",n.default?"1":"0"].join(",")}).sort()}(i);t({value:{supported:!0,voiceCount:i.length,voicesHash:c(n(r))},duration:performance.now()-e})}catch(n){t({value:{supported:!0,voiceCount:0,voicesHash:"error"},duration:performance.now()-e,error:n instanceof Error?n.message:"Voice processing failed"})}}},a=window.speechSynthesis.getVoices();if(a.length>0)return void i(a);o=setTimeout(()=>{i(window.speechSynthesis.getVoices())},800);const s=()=>{window.speechSynthesis.removeEventListener("voiceschanged",s),i(window.speechSynthesis.getVoices())};window.speechSynthesis.addEventListener("voiceschanged",s)}catch(n){t({value:{supported:!1,voiceCount:0,voicesHash:"error"},duration:performance.now()-e,error:n instanceof Error?n.message:"Speech synthesis error"})}})}const pe=[{exclude:["canvas"],browsers:["firefox","safari","brave"]},{exclude:["audio"],browsers:["safari","samsung"]},{exclude:["fonts"],browsers:["firefox"]},{exclude:["hardware","pluginsEnhanced"],browsers:["brave"]}],he=[{exclude:["system"],browsers:["safari"]},{exclude:["permissions"]}],we=[{exclude:["speech"],browsers:["brave","firefox"]}],ye=[["aspect-ratio","aspect-ratio: 1"],["container-type","container-type: inline-size"],["content-visibility","content-visibility: auto"],["field-sizing","field-sizing: content"],["subgrid","grid-template-columns: subgrid"],["masonry","grid-template-rows: masonry"],["has-selector","selector(:has(*))"],["is-selector","selector(:is(*))"],["where-selector","selector(:where(*))"],["focus-visible","selector(:focus-visible)"],["color-mix","color: color-mix(in srgb, red, blue)"],["oklch","color: oklch(0.5 0.2 200)"],["relative-color","color: hsl(from red h s l)"],["backdrop-filter","backdrop-filter: blur(10px)"],["text-wrap-balance","text-wrap: balance"],["text-wrap-pretty","text-wrap: pretty"],["overscroll-behavior","overscroll-behavior: none"],["scroll-behavior","scroll-behavior: smooth"],["view-transition","view-transition-name: auto"],["animation-timeline","animation-timeline: scroll()"],["animation-range","animation-range: 10% 90%"],["scroll-timeline","scroll-timeline: --t block"],["font-variant-numeric","font-variant-numeric: oldstyle-nums"],["hyphenate-character","hyphenate-character: auto"],["text-decoration-skip-ink","text-decoration-skip-ink: auto"],["hanging-punctuation","hanging-punctuation: first"],["individual-transform","translate: 10px"],["rotate-property","rotate: 45deg"],["margin-inline","margin-inline: auto"],["inset","inset: 0"],["contain","contain: layout"],["contain-intrinsic-size","contain-intrinsic-size: auto"],["cascade-layers","@layer"],["revert-layer","color: revert-layer"],["scrollbar-width","scrollbar-width: thin"],["scrollbar-color","scrollbar-color: red blue"],["webkit-text-stroke","-webkit-text-stroke: 1px black"],["webkit-line-clamp","-webkit-line-clamp: 2"],["css-nesting","selector(& .child)"],["forced-colors","(forced-colors: active)"]];function ve(n){try{return n.startsWith("selector(")||n.startsWith("(")||n.startsWith("@"),CSS.supports(n)}catch{return!1}}function ge(){try{return"undefined"!=typeof CSS&&"function"==typeof CSS.supports}catch{return!1}}const be=['video/mp4; codecs="avc1.42E01E"','video/mp4; codecs="avc1.4D001E"','video/mp4; codecs="hev1.1.6.L93.B0"','video/mp4; codecs="vp09.00.10.08"','video/mp4; codecs="av01.0.01M.08"','video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="av01.0.01M.08"','video/ogg; codecs="theora"'],Me=['audio/mp4; codecs="mp4a.40.2"','audio/mp4; codecs="mp4a.40.5"',"audio/mpeg",'audio/ogg; codecs="vorbis"','audio/ogg; codecs="opus"','audio/webm; codecs="opus"','audio/wav; codecs="1"',"audio/flac","audio/aac"],Se=['video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="av1"','video/webm; codecs="vp9,opus"','audio/webm; codecs="opus"','audio/ogg; codecs="opus"','video/mp4; codecs="avc1"'];function ke(){try{return"undefined"!=typeof document}catch{return!1}}const Ee=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11]),xe=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,0,10,12,1,10,0,65,0,65,0,65,0,252,10,0,0,11]),Ae=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,13,3,1,0,0]),Ce=new Uint8Array([0,97,115,109,1,0,0,0,1,3,1,78,0]);function Te(n){try{return WebAssembly.validate(n)}catch{return!1}}const _e=["𝔸","𝔹","ℂ","𝔻","𝔼","𝔽","𝔾","ℍ","𝕀","𝕁","𝕂","𝕃"],Re=[["β","ψ"],["λ","ε"],["ζ","α"],["ξ","μ"],["ρ","φ"],["κ","τ"],["η","σ"],["ι","ω"],["γ","ν"],["χ","δ"],["θ","π"],["υ","ο"]],Fe=["<math><msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>d</mi><mi>x</mi></mrow></mfrac></math>","<math><mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>4</mn></mrow></mfrac></math>","<math><mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo></math>",`<math><munderover><mo>∏</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mrow>${_e.map((n,e)=>{const[t,r]=Re[e];return`<mmultiscripts><mi>${n}</mi><mi>${t}</mi><mi>${r}</mi></mmultiscripts>`}).join("")}</mrow></math>`,..._e.map((n,e)=>{const[t,r]=Re[e];return`<math><mmultiscripts><mi>${n}</mi><mi>${t}</mi><mi>${r}</mi></mmultiscripts></math>`})],Oe=["fontFamily","fontSize","fontWeight","fontStyle","lineHeight","fontVariant","fontStretch","fontKerning","fontFeatureSettings","fontVariantNumeric"];function Ie(n){let e=2166136261;for(let t=0;t<n.length;t++)e^=n.charCodeAt(t),e=(0|Math.imul(e,16777619))>>>0;return e.toString(16).padStart(8,"0")}async function Pe(){const e=performance.now();try{if(!Le())return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-e,error:"document not available"};if(!function(){try{const n=document.createElement("div");n.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px",n.innerHTML="<math><mrow><mi>x</mi></mrow></math>",document.body.appendChild(n);const e=n.querySelector("math"),t=null==e?void 0:e.getBoundingClientRect();return document.body.removeChild(n),!!(t&&t.width>0&&t.height>0)}catch{return!1}}())return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-e};return{value:{supported:!0,dimensionsHash:Ie(n(Fe.map(n=>function(n){var e;const t=document.createElement("div");t.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px;font-size:16px",t.innerHTML=n,document.body.appendChild(t);const r=t.querySelector("math"),o=null!==(e=null==r?void 0:r.getBoundingClientRect())&&void 0!==e?e:{width:0,height:0};return document.body.removeChild(t),{width:Math.round(100*o.width)/100,height:Math.round(100*o.height)/100}}(n)))),fontStyleHash:Ie(n(function(){var n;const e=document.createElement("div");e.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px;font-size:16px",e.innerHTML="<math><mi>x</mi></math>",document.body.appendChild(e);const t=e.querySelector("math"),r=t?window.getComputedStyle(t):null,o={};for(const e of Oe)o[e]=r&&null!==(n=r[e])&&void 0!==n?n:"";return document.body.removeChild(e),o}()))},duration:performance.now()-e}}catch(n){return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-e,error:n instanceof Error?n.message:"MathML fingerprinting failed"}}}function Le(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body&&null!==document.body}catch{return!1}}async function Ne(){var n;const e=performance.now();try{if(!De())return{value:{available:!1},duration:performance.now()-e};const t=navigator.userAgentData,r=await t.getHighEntropyValues(["architecture","bitness","fullVersionList","mobile","model","platformVersion","formFactor","uaFullVersion"]);return{value:{available:!0,brands:null===(n=r.fullVersionList)||void 0===n?void 0:n.map(n=>{var e,t;return{brand:null!==(e=n.brand)&&void 0!==e?e:"",version:null!==(t=n.version)&&void 0!==t?t:""}}),mobile:r.mobile,platform:t.platform,platformVersion:r.platformVersion,architecture:r.architecture,bitness:r.bitness,model:r.model,uaFullVersion:r.uaFullVersion,formFactor:r.formFactor},duration:performance.now()-e}}catch(n){return{value:{available:!1},duration:performance.now()-e,error:n instanceof Error?n.message:"Client Hints fingerprinting failed"}}}function De(){var n;try{return"undefined"!=typeof navigator&&"userAgentData"in navigator&&"function"==typeof(null===(n=navigator.userAgentData)||void 0===n?void 0:n.getHighEntropyValues)}catch{return!1}}const Be={gdprMode:!1,includeInvasive:!0,timeout:5e3,debug:!1,excludeComponents:[]},He=new Map;function $e(n,e){return!(e.excludeComponents.includes(n)||e.gdprMode&&!e.includeInvasive&&["canvas","webgl","audio","fontPreferences","enhancedFonts"].includes(n)||(["mathFingerprint","dateTimeLocale","accessibilityEnhanced","fontPreferences","enhancedFonts","webrtc","permissions","speech","cssFeatures","mediaCodecs","wasmFeatures","mathml","clientHints"].includes(n),0))}function Ge(n,e){He.set(n,e)}async function Ue(n,e,t){const r=`${n}_${t.gdprMode}`,o=(i=r,He.get(i)||null);var i;if(o)return o;const a="webgl"===n,c=["canvas","webgl","audio","hardware","system"].includes(n),s=a?2:c?3:1,u=a?[200,500]:[100,250,500];for(let o=0;o<s;o++)try{const i=t.timeout+o*(a?2e3:1e3),c=new Promise((e,t)=>{setTimeout(()=>t(new Error(`${n} timeout after ${i}ms (attempt ${o+1})`)),i)}),s=await Promise.race([e(),c]);if(null!=s)return Ge(r,s),s;throw new Error(`${n} returned null/undefined result`)}catch(e){const t=o===s-1,r=e instanceof Error?e.message:String(e);if(a&&r.includes("context")){console.warn(`[RabbitTracker] WebGL context issue detected: ${r}`);try{const{forceCleanupWebGL:n}=await Promise.resolve().then(function(){return an});n()}catch(n){}return null}if(t)return console.warn(`[RabbitTracker] Component ${n} failed after ${s} attempts: ${r}`),null;!r.includes("timeout")&&o<u.length&&await new Promise(n=>setTimeout(n,u[o])),a&&await new Promise(n=>setTimeout(n,100))}return null}async function je(e={}){var t,r,o,i,s,l,d,f;const m=performance.now(),p={...Be,...e},y=[],g=[],b={collectionTime:m,gdprMode:p.gdprMode,components:[]},M=[];if($e("canvas",p)&&function(){try{const n=document.createElement("canvas").getContext("2d");return null!==n&&"function"==typeof n.fillText}catch{return!1}}()&&M.push(Ue("canvas",G,p).then(n=>({component:"canvas",result:n}))),$e("webgl",p)&&hn()&&M.push(Ue("webgl",mn,p).then(n=>({component:"webgl",result:n}))),$e("audio",p)&&function(){try{return"function"==typeof(window.OfflineAudioContext||window.webkitOfflineAudioContext)||"function"==typeof(window.AudioContext||window.webkitAudioContext)}catch{return!1}}()&&M.push(Ue("audio",h,p).then(n=>({component:"audio",result:n}))),$e("fonts",p)&&function(){try{const n=document.createElement("span");return n&&"object"==typeof n.style}catch{return!1}}()&&M.push(Ue("fonts",()=>async function(n=!0){const e=performance.now();try{let t;if(n&&function(){try{const n=document.createElement("canvas").getContext("2d");return null!==n&&"function"==typeof n.measureText}catch{return!1}}()){const{available:n,measurements:e}=function(){const n=[],e={};for(const t of U)try{const r=W(V,t);e[t]=r,X(t,"canvas")&&n.push(t)}catch(n){continue}return{available:n,measurements:e}}();t={available:n.sort(),method:"advanced",measurements:e}}else t={available:function(){const n=[];for(const e of U)try{X(e,"dom")&&n.push(e)}catch(n){continue}return n}().sort(),method:"basic"};return{value:t,duration:performance.now()-e}}catch(n){return{value:{available:[],method:"basic"},duration:performance.now()-e,error:n instanceof Error?n.message:"Font detection failed"}}}(!p.gdprMode),p).then(n=>({component:"fonts",result:n}))),$e("screen",p)&&function(){try{return"object"==typeof screen&&"number"==typeof screen.width&&"number"==typeof screen.height}catch{return!1}}()&&M.push(Ue("screen",J,p).then(n=>({component:"screen",result:n}))),$e("browser",p)&&function(){try{return"object"==typeof navigator&&null!==navigator}catch{return!1}}()&&M.push(Ue("browser",L,p).then(n=>({component:"browser",result:n}))),$e("webrtc",p)&&function(){try{return!!(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection)}catch{return!1}}()&&M.push(Ue("webrtc",()=>async function(e=4500){const t=performance.now();return new Promise(r=>{try{const o=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!o)return void r({value:{supported:!1,extensionsHash:"unsupported",audio:{count:0,hash:"unsupported"},video:{count:0,hash:"unsupported"},candidateType:null},duration:performance.now()-t});const i=new o({iceCandidatePoolSize:1,iceServers:[]});i.createDataChannel(""),(async()=>{var o,a;try{const s=await i.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await i.setLocalDescription(s);const u=null!==(o=s.sdp)&&void 0!==o?o:"",l=[...new Set((null!==(a=u.match(/extmap:\d+ [^\n\r]+/g))&&void 0!==a?a:[]).map(n=>n.replace(/extmap:\d+ /,"")))].sort(),d=ce(u,"audio"),f=ce(u,"video"),m={extensionsHash:c(n(l)),audio:{count:d.length,hash:c(n(d))},video:{count:f.length,hash:c(n(f))}},p=Math.floor(.9*e),h=await new Promise(n=>{const e=setTimeout(()=>{i.removeEventListener("icecandidate",t),i.close(),n(null)},p),t=r=>{var o,a;(null===(o=r.candidate)||void 0===o?void 0:o.candidate)&&(clearTimeout(e),i.removeEventListener("icecandidate",t),i.close(),n(null!==(a=r.candidate.type)&&void 0!==a?a:null))};i.addEventListener("icecandidate",t)});r({value:{supported:!0,...m,candidateType:h,timedOut:null===h},duration:performance.now()-t})}catch(n){i.close(),r({value:{supported:!0,extensionsHash:"offer-error",audio:{count:0,hash:"offer-error"},video:{count:0,hash:"offer-error"},candidateType:null},duration:performance.now()-t,error:n instanceof Error?n.message:"WebRTC offer failed"})}})()}catch(n){r({value:{supported:!1,extensionsHash:"error",audio:{count:0,hash:"error"},video:{count:0,hash:"error"},candidateType:null},duration:performance.now()-t,error:n instanceof Error?n.message:"WebRTC error"})}})}(p.timeout),p).then(n=>({component:"webrtc",result:n}))),$e("permissions",p)&&function(){var n;try{return"undefined"!=typeof navigator&&"function"==typeof(null===(n=navigator.permissions)||void 0===n?void 0:n.query)}catch{return!1}}()&&M.push(Ue("permissions",de,p).then(n=>({component:"permissions",result:n}))),!p.gdprMode&&$e("speech",p)&&function(){var n;try{return"undefined"!=typeof window&&"function"==typeof(null===(n=window.speechSynthesis)||void 0===n?void 0:n.getVoices)}catch{return!1}}()&&M.push(Ue("speech",me,p).then(n=>({component:"speech",result:n}))),$e("cssFeatures",p)&&ge()&&M.push(Ue("cssFeatures",async()=>function(){const e=performance.now();try{if(!ge())return{value:{features:{},supportedCount:0,hash:""},duration:performance.now()-e,error:"CSS.supports not available"};const t={};for(const[n,e]of ye)t[n]=ve(e);const r=Object.values(t).filter(Boolean).length,o=function(e){const t=n(e);let r=2166136261;for(let n=0;n<t.length;n++)r^=t.charCodeAt(n),r=(0|Math.imul(r,16777619))>>>0;return r.toString(16).padStart(8,"0")}(t);return{value:{features:t,supportedCount:r,hash:o},duration:performance.now()-e}}catch(n){return{value:{features:{},supportedCount:0,hash:""},duration:performance.now()-e,error:n instanceof Error?n.message:"CSS features fingerprinting failed"}}}(),p).then(n=>({component:"cssFeatures",result:n}))),$e("mediaCodecs",p)&&ke()&&M.push(Ue("mediaCodecs",async()=>function(){const e=performance.now();try{if(!ke())return{value:{video:{},audio:{},recorder:{},hash:""},duration:performance.now()-e,error:"document not available"};const t=document.createElement("video"),r={};for(const n of be)try{r[n]=t.canPlayType(n)}catch{r[n]=""}const o=document.createElement("audio"),i={};for(const n of Me)try{i[n]=o.canPlayType(n)}catch{i[n]=""}const a={},c="undefined"!=typeof MediaRecorder&&"function"==typeof MediaRecorder.isTypeSupported;for(const n of Se)try{a[n]=!!c&&MediaRecorder.isTypeSupported(n)}catch{a[n]=!1}const s=function(e,t,r){const o=n({video:e,audio:t,recorder:r});let i=2166136261;for(let n=0;n<o.length;n++)i^=o.charCodeAt(n),i=(0|Math.imul(i,16777619))>>>0;return i.toString(16).padStart(8,"0")}(r,i,a);return{value:{video:r,audio:i,recorder:a,hash:s},duration:performance.now()-e}}catch(n){return{value:{video:{},audio:{},recorder:{},hash:""},duration:performance.now()-e,error:n instanceof Error?n.message:"Media codecs fingerprinting failed"}}}(),p).then(n=>({component:"mediaCodecs",result:n}))),$e("wasmFeatures",p)&&function(){try{return"undefined"!=typeof WebAssembly&&"function"==typeof WebAssembly.validate}catch{return!1}}()&&M.push(Ue("wasmFeatures",async()=>function(){const n=performance.now();try{if("undefined"==typeof WebAssembly)return{value:{basic:!1,validate:!1,compile:!1,simd:!1,threads:!1,bulkMemory:!1,exceptions:!1,gc:!1},duration:performance.now()-n};const e="function"==typeof WebAssembly.validate;return{value:{basic:!0,validate:e,compile:"function"==typeof WebAssembly.compile,simd:!!e&&Te(Ee),threads:"undefined"!=typeof SharedArrayBuffer,bulkMemory:!!e&&Te(xe),exceptions:!!e&&Te(Ae),gc:!!e&&Te(Ce)},duration:performance.now()-n}}catch(e){return{value:{basic:!1,validate:!1,compile:!1,simd:!1,threads:!1,bulkMemory:!1,exceptions:!1,gc:!1},duration:performance.now()-n,error:e instanceof Error?e.message:"Wasm features fingerprinting failed"}}}(),p).then(n=>({component:"wasmFeatures",result:n}))),$e("mathml",p)&&Le()&&M.push(Ue("mathml",Pe,p).then(n=>({component:"mathml",result:n}))),!p.gdprMode&&$e("clientHints",p)&&De()&&M.push(Ue("clientHints",Ne,p).then(n=>({component:"clientHints",result:n}))),(await Promise.allSettled(M)).forEach((n,e)=>{var t,r;if("fulfilled"===n.status&&n.value.result){const{component:e,result:t}=n.value;b[e]=t,y.push(e)}else{const o=M[e],i=(null===(t=null==o?void 0:o.toString().match(/component: "(\w+)"/))||void 0===t?void 0:t[1])||"unknown";g.push({component:i,error:"rejected"===n.status?(null===(r=n.reason)||void 0===r?void 0:r.message)||"Promise rejected":"Collection failed or timeout"})}}),!p.gdprMode)try{const{detectIncognitoHeuristics:n}=await import("./incognito-CUk-WJ9L.min.js"),e=await n();e&&(b.incognitoDetection={likelihood:e.likelihood,methods:e.methods},y.push("incognito"))}catch(n){g.push({component:"incognito",error:n instanceof Error?n.message:"Incognito detection failed"})}if($e("hardware",p))try{const n=await import("./hardware-VrMyNUbt.min.js").catch(()=>null);if(null===(t=null==n?void 0:n.isHardwareDetectionAvailable)||void 0===t?void 0:t.call(n)){const e=null===(r=n.getHardwareFingerprint)||void 0===r?void 0:r.call(n);e&&(b.hardware={value:e,duration:0},y.push("hardware"))}else if(!n){const n={hardwareConcurrency:navigator.hardwareConcurrency||0,deviceMemory:navigator.deviceMemory||0,platform:navigator.platform||"unknown"};b.hardware={value:n,duration:0},y.push("hardware")}}catch(n){g.push({component:"hardware",error:n instanceof Error?n.message:"Hardware detection failed"})}if($e("system",p))try{const{getSystemFingerprint:n,isSystemDetectionAvailable:e}=await import("./system-Bu10BgJe.min.js");if(e()){const e=n();e&&(b.system={value:e,duration:0},y.push("system"))}}catch(n){g.push({component:"system",error:n instanceof Error?n.message:"System detection failed"})}if($e("storage",p))try{const{getStorageFingerprint:n,isStorageDetectionAvailable:e}=await import("./storage-DGh64hgU.min.js");if(e()){const e=performance.now(),t=await n(),r=performance.now()-e;t&&(b.storage={value:t,duration:r},y.push("storage"))}}catch(n){g.push({component:"storage",error:n instanceof Error?n.message:"Storage detection failed"})}if($e("math",p))try{const{getCompleteMathFingerprint:n,isMathDetectionAvailable:e}=await import("./math-k-cWr0Zr.min.js");if(e()){const e=performance.now(),t=n(),r=performance.now()-e;t&&(b.math={value:t,duration:r},y.push("math"))}}catch(n){g.push({component:"math",error:n instanceof Error?n.message:"Math fingerprinting failed"})}if($e("domBlockers",p))try{const{getDomBlockersFingerprint:n,isDomBlockersDetectionAvailable:e}=await import("./dom-blockers-CtmwJ8XW.min.js");if(e()){const e=performance.now(),t=await n({debug:p.debug}),r=performance.now()-e;t&&(b.domBlockers={value:t,duration:r},y.push("domBlockers"))}}catch(n){g.push({component:"domBlockers",error:n instanceof Error?n.message:"DOM blockers detection failed"})}if($e("accessibility",p))try{const{getAccessibilityFingerprint:n,isAccessibilityDetectionAvailable:e}=await Promise.resolve().then(function(){return Hn});if(e()){const e=performance.now(),t=n(),r=performance.now()-e;t&&(b.accessibility={value:t,duration:r},y.push("accessibility"))}}catch(n){g.push({component:"accessibility",error:n instanceof Error?n.message:"Accessibility detection failed"})}if($e("browserApis",p))try{const{getBrowserApisFingerprint:n,isBrowserApisDetectionAvailable:e}=await import("./browser-apis-zkKPQ-Pn.min.js");if(e()){const e=performance.now(),t=n(),r=performance.now()-e;t&&(b.browserApis={value:t,duration:r},y.push("browserApis"))}}catch(n){g.push({component:"browserApis",error:n instanceof Error?n.message:"Browser APIs detection failed"})}if($e("pluginsEnhanced",p))try{const{getEnhancedPluginFingerprint:n,isEnhancedPluginDetectionAvailable:e}=await import("./plugins-enhanced-DybbZw-x.min.js");if(e()){const e=performance.now(),t=n(),r=performance.now()-e;t&&(b.pluginsEnhanced={value:t,duration:r},y.push("pluginsEnhanced"))}}catch(n){g.push({component:"pluginsEnhanced",error:n instanceof Error?n.message:"Enhanced plugin detection failed"})}if($e("mathFingerprint",p)&&function(){try{return"undefined"!=typeof Math&&"function"==typeof Math.sin}catch{return!1}}())try{const n=performance.now(),e=oe(),t=performance.now()-n;e&&(b.mathFingerprint={value:e,duration:t,analysis:ae(e),hash:ie()},y.push("mathFingerprint"))}catch(n){g.push({component:"mathFingerprint",error:n instanceof Error?n.message:"Math fingerprinting failed"})}if($e("fontPreferences",p)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const n=performance.now(),e=await async function(){try{const{document:n,container:e,cleanup:t}=await new Promise((n,e)=>{const t=document.createElement("iframe");t.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0;",t.srcdoc='<!doctype html>\n <html>\n <head>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style>\n body { \n margin: 0; \n padding: 20px; \n width: 4000px;\n text-size-adjust: none;\n -webkit-text-size-adjust: none;\n }\n </style>\n </head>\n <body></body>\n </html>',t.onload=()=>{try{const r=t.contentDocument,o=t.contentWindow;if(!r||!o)return void e(new Error("Cannot access iframe content"));const i=r.body;k()?i.style.zoom=""+1/o.devicePixelRatio:w()&&(i.style.zoom="reset");const a=r.createElement("div");a.textContent=Array(200).fill("word").join(" "),i.appendChild(a),n({document:r,container:i,cleanup:()=>{t.parentNode&&t.parentNode.removeChild(t)}})}catch(n){e(n)}},t.onerror=()=>{e(new Error("Failed to load iframe"))},document.body.appendChild(t)}),r={};for(const[t,o]of Object.entries(Un))try{r[t]=Vn(n,e,o)}catch(n){r[t]=0}const o=function(n,e,t="Arial"){try{const e=n.createElement("canvas");e.width=100,e.height=50;const r=e.getContext("2d",{willReadFrequently:!0});if(!r)return{quality:0,antiAliasing:!1,smoothing:0};r.font=`24px "${t}"`,r.fillStyle="#000000",r.fillText("Wg",10.5,30.7);const o=r.getImageData(10,20,30,20).data;let i=0,a=0,c=0;for(let n=0;n<o.length;n+=4){const e=o[n]||0,t=o[n+1]||0,r=o[n+2]||0;(o[n+3]||0)<10||(c++,e===t&&t===r&&e>0&&e<255&&a++,n>4&&Math.abs(e-(o[n-4]||0))>50&&i++)}const s=c>0?a/c:0,u=c>0?100*a/c:0;return{quality:Math.round(u),antiAliasing:s>.1,smoothing:Math.round(100*u)/100}}catch(n){return{quality:0,antiAliasing:!1,smoothing:0}}}(n,0,"Arial"),i=function(n){try{const e=n.createElement("canvas");e.width=100,e.height=50;const t=e.getContext("2d",{willReadFrequently:!0});if(!t)return{clearType:!1,hintingLevel:0,subpixelRendering:!1};const r=["rn","il","WW","mm"];let o=0,i=0,a=0;for(const n of r){t.clearRect(0,0,e.width,e.height),t.font="16px Arial",t.fillStyle="#000",t.fillText(n,10,25);const r=t.getImageData(10,15,40,20).data;for(let n=0;n<r.length;n+=12){const e=r[n]||0,t=r[n+1]||0,c=r[n+2]||0,s=r[n+4]||0,u=r[n+5]||0,l=r[n+6]||0;(Math.abs(e-t)>20||Math.abs(t-c)>20)&&o++,Math.abs(e-s)+Math.abs(t-u)+Math.abs(c-l)>50&&i++,(e>0&&e<255||t>0&&t<255||c>0&&c<255)&&a++}}return{clearType:o>10,hintingLevel:Math.min(Math.round(a/10),5),subpixelRendering:i>5}}catch(n){return{clearType:!1,hintingLevel:0,subpixelRendering:!1}}}(n),a={},s=["Arial","Helvetica","Times New Roman","Georgia","Courier New"];for(const t of s)try{a[t]=jn(n,e,t)}catch(n){a[t]="fallback-error"}const u=c([JSON.stringify(r),JSON.stringify(o),JSON.stringify(i),JSON.stringify(a)].join("|"));return t(),{...r,antiAliasing:{enabled:o.antiAliasing,type:i.clearType?"cleartype":o.antiAliasing?"standard":"none",smoothingLevel:o.smoothing},systemFontHints:i,fallbackBehavior:a,isolatedHash:u}}catch(n){return{...Object.keys(Un).reduce((n,e)=>(n[e]=0,n),{}),antiAliasing:{enabled:!1,type:"unknown",smoothingLevel:0},systemFontHints:{clearType:!1,hintingLevel:0,subpixelRendering:!1},fallbackBehavior:{},isolatedHash:"error"}}}(),t=performance.now()-n;e&&(b.fontPreferences={value:e,duration:t,analysis:Wn(e),hash:(x=e,x.isolatedHash&&"error"!==x.isolatedHash?x.isolatedHash:[...[x.default,x.serif,x.sans,x.mono,x.apple,x.system,x.min,x.large,x.ui,x.emoji,x.math,x.cjk,x.arabic,x.hebrew,x.subpixel,x.kerning,x.ligatures].map(n=>Math.round(n)),x.antiAliasing.enabled?1:0,x.systemFontHints.clearType?1:0,x.systemFontHints.hintingLevel,Math.round(x.antiAliasing.smoothingLevel)].join(","))},y.push("fontPreferences"))}catch(n){g.push({component:"fontPreferences",error:n instanceof Error?n.message:"Font preferences detection failed"})}var x,C;if($e("dateTimeLocale",p)&&function(){try{return"undefined"!=typeof window&&void 0!==window.Intl}catch{return!1}}())try{const n=performance.now(),e=function(){const n=function(){try{if(!window.Intl)return-1;const n=window.Intl.DateTimeFormat;if(!n)return-2;const e=(new n).resolvedOptions();return e.locale||""===e.locale?{locale:e.locale||"unknown",calendar:e.calendar||"unknown",numberingSystem:e.numberingSystem||"unknown",timeZone:e.timeZone||"unknown",hourCycle:e.hourCycle||"unknown",hour12:void 0!==e.hour12&&e.hour12}:-3}catch(n){return-2}}();if("number"==typeof n)return n;const e=function(){try{if(!window.Intl||!window.Intl.NumberFormat)return-4;const n=(new Intl.NumberFormat).resolvedOptions(),e=new Intl.NumberFormat(void 0,{style:"currency",currency:"USD"}).resolvedOptions();return{numberLocale:n.locale||"unknown",currencyDisplay:e.currencyDisplay||"unknown",currencySign:e.currencySign||"unknown",notation:n.notation||"unknown",signDisplay:n.signDisplay||"unknown"}}catch(n){return-4}}(),t="number"==typeof e?{}:e,r=function(){const n={listStyle:"unknown",relativeTimeStyle:"unknown",pluralRules:"unknown"};try{if(window.Intl&&window.Intl.ListFormat){const e=(new window.Intl.ListFormat).resolvedOptions();n.listStyle=e.style||"unknown"}}catch(n){}try{if(window.Intl&&window.Intl.RelativeTimeFormat){const e=(new window.Intl.RelativeTimeFormat).resolvedOptions();n.relativeTimeStyle=e.style||"unknown"}}catch(n){}try{if(window.Intl&&window.Intl.PluralRules){const e=(new window.Intl.PluralRules).select(1);n.pluralRules=e||"unknown"}}catch(n){}return n}(),o=function(){const n={DateTimeFormat:!1,NumberFormat:!1,RelativeTimeFormat:!1,ListFormat:!1,PluralRules:!1,Collator:!1};try{window.Intl&&(n.DateTimeFormat="function"==typeof window.Intl.DateTimeFormat,n.NumberFormat="function"==typeof window.Intl.NumberFormat,n.RelativeTimeFormat="function"==typeof window.Intl.RelativeTimeFormat,n.ListFormat="function"==typeof window.Intl.ListFormat,n.PluralRules="function"==typeof window.Intl.PluralRules,n.Collator="function"==typeof window.Intl.Collator)}catch(n){}return n}(),i=navigator.language||"unknown",a=n.locale===i;let c="unknown",s="unknown";try{if(window.Intl&&"function"==typeof window.Intl.DateTimeFormat){const n=new Intl.DateTimeFormat(void 0,{dateStyle:"long"}),e=new Intl.DateTimeFormat(void 0,{timeStyle:"long"}),t=n.resolvedOptions(),r=e.resolvedOptions();c=t.dateStyle||"unknown",s=r.timeStyle||"unknown"}}catch(n){}return{locale:n.locale||"unknown",calendar:n.calendar||"unknown",numberingSystem:n.numberingSystem||"unknown",timeZone:n.timeZone||"unknown",dateStyle:c,timeStyle:s,hourCycle:n.hourCycle||"unknown",hour12:n.hour12||!1,numberLocale:t.numberLocale||n.locale||"unknown",currencyDisplay:t.currencyDisplay||"unknown",currencySign:t.currencySign||"unknown",notation:t.notation||"unknown",signDisplay:t.signDisplay||"unknown",listStyle:r.listStyle||"unknown",relativeTimeStyle:r.relativeTimeStyle||"unknown",pluralRules:r.pluralRules||"unknown",navigatorLanguage:i,localeMatch:a,intlSupport:o}}(),t=performance.now()-n;e&&"object"==typeof e&&(b.dateTimeLocale={value:e,duration:t,analysis:$n(e),hash:(C=e,"number"==typeof C?`status-${C}`:[C.locale,C.calendar,C.numberingSystem,C.timeZone,C.hourCycle,C.hour12?"1":"0",C.localeMatch?"1":"0",Object.values(C.intlSupport).map(n=>n?"1":"0").join("")].join("|"))},y.push("dateTimeLocale"))}catch(n){g.push({component:"dateTimeLocale",error:n instanceof Error?n.message:"DateTime locale detection failed"})}if($e("accessibilityEnhanced",p)&&Cn())try{const n=performance.now(),e=Dn(),t=performance.now()-n;e&&(b.accessibilityEnhanced={value:e,duration:t,analysis:Bn(e)},y.push("accessibilityEnhanced"))}catch(n){g.push({component:"accessibilityEnhanced",error:n instanceof Error?n.message:"Enhanced accessibility detection failed"})}if($e("enhancedFonts",p)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const n=performance.now(),e=await async function(){const n=performance.now();try{const{document:e,body:t,cleanup:r}=await new Promise((n,e)=>{const t=document.createElement("iframe");t.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none;",t.onload=()=>{try{const e=t.contentDocument;if(!e)throw new Error("Cannot access iframe document");const r=e.body;if(!r)throw new Error("Iframe body not available");r.style.fontSize=qn,r.style.margin="0",r.style.padding="0",n({document:e,body:r,cleanup:()=>{t.parentNode&&t.parentNode.removeChild(t)}})}catch(n){e(n)}},t.onerror=()=>{e(new Error("Failed to load font measurement iframe"))},document.body.appendChild(t)});try{const r=e.createElement("div");r.style.setProperty("visibility","hidden","important");const o=Jn.map(n=>Zn(e,n));o.forEach(n=>r.appendChild(n));const i={};for(const n of zn)i[n]=Jn.map(t=>Kn(e,n,t)),i[n].forEach(n=>r.appendChild(n));t.appendChild(r);const a={};Jn.forEach((n,e)=>{const t=o[e];t&&(a[n]={width:t.offsetWidth,height:t.offsetHeight})});const c=[],s={};for(const n of zn){const e=i[n];e&&(Yn(e,a)&&c.push(n),e.length>0&&e[0]&&(s[n]={width:e[0].offsetWidth,height:e[0].offsetHeight}))}const u=performance.now()-n,l=Object.values(s).map(n=>n.width);return{available:c,method:"iframe",measurements:s,precision:new Set(l).size/l.length,totalTested:zn.length,detectionTime:u}}finally{r()}}catch(e){return function(n){const e=[],t={};try{const n=document.createElement("div");n.style.cssText="position: absolute; left: -9999px; top: -9999px; visibility: hidden;";const r={};Jn.forEach(e=>{const t=document.createElement("span");t.style.fontFamily=e,t.style.fontSize=qn,t.style.whiteSpace="nowrap",t.textContent=Xn,n.appendChild(t),document.body.appendChild(n),r[e]={width:t.offsetWidth,height:t.offsetHeight},document.body.removeChild(n),n.removeChild(t)});for(const o of zn){let i=!1;for(const e of Jn){const a=document.createElement("span");a.style.fontFamily=`'${o}',${e}`,a.style.fontSize=qn,a.style.whiteSpace="nowrap",a.textContent=Xn,n.appendChild(a),document.body.appendChild(n);const c={width:a.offsetWidth,height:a.offsetHeight};t[o]=c;const s=r[e];if(!s||c.width===s.width&&c.height===s.height||(i=!0),document.body.removeChild(n),n.removeChild(a),i)break}i&&e.push(o)}}catch(n){}const r=performance.now()-n,o=Object.values(t).map(n=>n.width),i=new Set(o).size;return{available:e,method:"dom",measurements:t,precision:o.length>0?i/o.length:0,totalTested:zn.length,detectionTime:r}}(n)}}(),t=performance.now()-n;e&&(b.enhancedFonts={value:e,duration:t,analysis:Qn(e),hash:ne(e)},y.push("enhancedFonts"))}catch(n){g.push({component:"enhancedFonts",error:n instanceof Error?n.message:"Enhanced font detection failed"})}{const n=function(n){const e=function(){try{return v()?"brave":E()?"firefox":A()?"safari":S()?"samsung":"other"}catch{return"other"}}(),t=new Set,r=n=>{for(const r of n)if(!r.browsers||r.browsers.includes(e))for(const n of r.exclude)t.add(n)};return r(we),function(){try{return window!==window.top}catch{return!0}}()&&r(he),function(n){return(null!=n?n:0)>=.6}(n)&&r(pe),t}(null!==(i=null===(o=b.incognitoDetection)||void 0===o?void 0:o.likelihood)&&void 0!==i?i:0);if(n.size>0)for(const e of n)if(void 0!==b[e]){b[e]=null;const n=y.indexOf(e);-1!==n&&(y.splice(n,1),g.push({component:e,error:"excluded by stabilization rules"}))}}const T={};let _;y.forEach(n=>{const e=b[n];e&&e.value&&(T[n]=e.value)});try{const{calculateConfidence:n}=await import("./confidence-DCUtUduG.min.js"),e=[...y.map(n=>{var e,t;return{component:n,success:!0,duration:(null===(e=b[n])||void 0===e?void 0:e.duration)||0,value:null===(t=b[n])||void 0===t?void 0:t.value}}),...g.map(n=>({component:n.component,success:!1,duration:0,error:n.error}))];_=n(e,{requireMinimumComponents:6,penalizeMissingCore:!0,adjustForIncognito:!0}),b.confidence={score:_.score,level:_.level,factors:_.factors,recommendations:_.recommendations}}catch(n){const e=y.length/(y.length+g.length||1);b.confidence={score:e>=.8?.95:e>=.6?.8:.5,level:e>=.8?"High":e>=.6?"Medium":"Low",factors:{componentCount:y.length,weightedScore:e,stabilityScore:e,entropyScore:e,spoofResistanceScore:e},recommendations:e<.8?["Enable more fingerprinting components"]:[]}}const F={...b,hash:"",components:y,collectionTime:performance.now()-m},O={success:y.length>0,collectedComponents:y,failedComponents:g,confidence:_||b.confidence};if(y.length>0){const e=null===(s=F.browser)||void 0===s?void 0:s.value,t=null===(l=F.screen)||void 0===l?void 0:l.value,r=(null==e?void 0:e.userAgent)||"",o=(()=>{var n;const e=!0===(null===(n=navigator.userAgentData)||void 0===n?void 0:n.mobile),r=navigator.maxTouchPoints||0,o=(null==t?void 0:t.width)||0,i=(null==t?void 0:t.height)||0,a=Math.min(o,i);return Math.max(o,i),e?"mobile":r>0?a<=480?"mobile":"tablet":a>1024?"desktop":a<=480?"mobile":"desktop"})();let i={};try{const{collectDeviceSignals:n}=await import("./device-signals-DzcCjR7i.min.js");i=n()}catch(n){}const c={ua:(()=>{try{return R().family}catch{const n=r,e=n.match(/(chrome|safari|firefox|edge|edg|brave|opera|opr|chromium)/i);return((null==e?void 0:e[1])||n.split(" ")[0]||"unknown").toLowerCase()}})(),timezone:(null==e?void 0:e.timezone)||"unknown",primaryLanguage:(()=>{try{const n=null==e?void 0:e.languages;return Array.isArray(n)&&n.length>0&&n[0]?n[0].toLowerCase().split("-")[0]:"undefined"!=typeof navigator&&navigator.language?navigator.language.toLowerCase().split("-")[0]:"unknown"}catch{return"unknown"}})(),platform:((null==e?void 0:e.platform)||"unknown").toLowerCase(),deviceType:o,hardware:(()=>{var n;const e=i.hardwareConcurrency,t=i.deviceMemory;if(!e&&!t)return;const r=e?(n=>n>=32?"workstation":n>=20?"ultra":n>=16?"high":n>=12?"premium":n>=8?"mid":n>=6?"normal":n>=4?"basic":n>=2?"low":"minimal")(e):"unknown",o=t?(n=>n>=64?"workstation":n>=32?"ultra":n>=24?"high":n>=16?"premium":n>=12?"mid":n>=8?"normal":n>=4?"basic":n>=2?"low":"minimal")(t):"unknown";var a;return{cores:r,memory:o,arch:void 0===(a=i.architecture)?"unknown":255===a?"arm64":0===a?"x86_64":"other",class:((n,e)=>"workstation"!==n&&"ultra"!==n||"workstation"!==e&&"ultra"!==e?"high"!==n&&"premium"!==n||"high"!==e&&"premium"!==e&&"ultra"!==e?"mid"!==n&&"normal"!==n||"mid"!==e&&"normal"!==e&&"premium"!==e?"basic"!==n&&"low"!==n||"basic"!==e&&"low"!==e&&"normal"!==e?"minimal"===n||"minimal"===e?"mobile":"mixed":"budget":"mainstream":"enthusiast":"professional")(r,o),touch:(null===(n=i.touchSupport)||void 0===n?void 0:n.maxTouchPoints)?i.touchSupport.maxTouchPoints>=10?"multi":i.touchSupport.maxTouchPoints>=5?"standard":"basic":"none"}})(),screenFrame:(null==i?void 0:i.screenFrame)?{top:i.screenFrame.top||0,right:i.screenFrame.right||0,bottom:i.screenFrame.bottom||0,left:i.screenFrame.left||0}:void 0,display:(()=>{const n=i.colorDepth,e=i.colorGamut,t=(n=>n?n>=48?"ultra_high":n>=32?"high":n>=24?"normal":n>=16?"basic":"low":"unknown")(n),r=(n=>{if(!n)return"unknown";switch(n){case"rec2020":return"professional";case"p3":return"enhanced";case"srgb":return"standard";default:return"unknown"}})(e);return{depth:t,gamut:r,class:((n,e)=>"ultra_high"===n||"professional"===e?"professional":"high"===n||"enhanced"===e?"premium":"normal"===n&&"standard"===e?"standard":"basic"===n?"basic":"legacy")(t,r)}})()},m=[c.ua||"",c.platform||"",c.deviceType||"",c.timezone||"",c.primaryLanguage||""].filter(Boolean);if(m.length>=3){const n=m.join("|");let e=0;for(let t=0;t<n.length;t++)e=(e<<5)-e+n.charCodeAt(t)&4294967295;c.t=Math.abs(e).toString(36).substring(0,8)}(p.debug||"undefined"!=typeof window&&window._rabbitTrackerDebug)&&(c.ua,c.platform,c.deviceType,c.timezone,c.primaryLanguage,c.hardware,c.display,c.screenFrame,c.t);const h=function(e,t=!1){const r=u(e),o=n(r);t&&(Object.keys(e),Object.keys(r),o.length,o.substring(0,200));const i=a(o);return t&&i.substring(0,32),i}(c,p.debug),w=["canvas","webgl","audio","mathFingerprint","fontPreferences","enhancedFonts","dateTimeLocale","accessibilityEnhanced","domBlockers","pluginsEnhanced","speech","clientHints"],v={};for(const[n,e]of Object.entries(T))w.includes(n)||(v[n]=e);const b={...v,o:c},M=function(e,t=!1){const r=u(e),o=n(r);t&&(Object.keys(e),Object.keys(r),o.length,o.substring(0,200));const i=a(o);return t&&i.substring(0,32),i}(b,p.debug);F.hash=M,p.debug&&(Object.keys(c),c.t,h.substring(0,16),M.substring(0,16),c.ua,c.deviceType,c.platform,c.timezone,c.screenFrame,null===(d=c.hardware)||void 0===d||d.class,null===(f=c.display)||void 0===f||f.class,Object.keys(b).length),O.data={...F,stableCoreHash:h,stableCoreVector:c},p.debug&&(y.length,g.length,F.collectionTime,F.hash,null==_||_.level,null==_||_.score,(null==_?void 0:_.recommendations.length)&&_.recommendations)}else O.error="No components could be collected";return O}var Ve=Object.freeze({__proto__:null,collectFingerprint:je,getCompleteFingerprint:async function(){return je({gdprMode:!1,includeInvasive:!0,timeout:5e3})},getLightweightFingerprint:async function(){return je({gdprMode:!0,includeInvasive:!1,excludeComponents:["canvas","webgl","audio"],timeout:2e3})}});export{A as a,C as b,E as c,Ve as f,P as g,k as i};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function n(){try{if("deviceMemory"in navigator){const n=navigator.deviceMemory;return"number"==typeof n?n:null}return null}catch{return null}}function r(){try{if("hardwareConcurrency"in navigator){const n=navigator.hardwareConcurrency;return"number"==typeof n?n:null}return null}catch{return null}}function t(){try{return[navigator.platform,navigator.userAgent,navigator.userAgent.includes("ARM")?"ARM":null,navigator.userAgent.includes("arm64")?"ARM64":null,navigator.userAgent.includes("aarch64")?"ARM64":null,navigator.userAgent.includes("x86_64")?"x86_64":null,navigator.userAgent.includes("WOW64")?"x86_64":null,navigator.userAgent.includes("Win64")?"x86_64":null,navigator.userAgent.includes("Intel")?"Intel":null].filter(Boolean).join("|")||"unknown"}catch{return"unknown"}}function a(){try{return navigator.maxTouchPoints||0}catch{return 0}}function o(){return"undefined"!=typeof navigator}function u(){var o,u;return{deviceMemory:n(),hardwareConcurrency:r(),architecture:t(),maxTouchPoints:a(),platform:navigator.platform||"unknown",jsHeapSizeLimit:null!==(u=null===(o=performance.memory)||void 0===o?void 0:o.jsHeapSizeLimit)&&void 0!==u?u:0,architectureFloat32:(()=>{var n;try{const r=new Float32Array(1);return r[0]=1/0,r[0]-=r[0],null!==(n=new Uint8Array(r.buffer)[3])&&void 0!==n?n:-1}catch{return-1}})()}}export{t as getArchitecture,n as getDeviceMemory,r as getHardwareConcurrency,u as getHardwareFingerprint,a as getMaxTouchPoints,o as isHardwareDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
class t{constructor(t,i={}){this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.lastMouseMove=0,this.maxScrollDepth=0,this.isActive=!1,this.recentClicks=[],this.handleClick=t=>{if(!this.config.trackClicks)return;const i=t.target;i.getBoundingClientRect();const s=window.pageXOffset||document.documentElement.scrollLeft,e=window.pageYOffset||document.documentElement.scrollTop,h={x:t.clientX,y:t.clientY,absoluteX:t.clientX+s,absoluteY:t.clientY+e,element:this.getElementSelector(i),timestamp:Date.now(),button:t.button};this.config.trackRageClicks&&this.detectRageClick(h.x,h.y,h.timestamp)&&(h.rageClick=!0),this.clicks.push(h),this.clicks.length>this.config.maxClickBuffer&&(this.clicks=this.clicks.slice(-this.config.maxClickBuffer))},this.handleScroll=()=>{if(!this.config.trackScrollDepth)return;const t=this.calculateScrollDepth();this.maxScrollDepth=Math.max(this.maxScrollDepth,t),this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}}),this.scrollData.length>100&&(this.scrollData=this.scrollData.slice(-50))},this.handleMouseMove=t=>{if(!this.config.trackMouseMoves)return;const i=Date.now();i-this.lastMouseMove<this.config.mouseMoveThrottle||(this.lastMouseMove=i,this.mouseMoves.push({x:t.clientX,y:t.clientY,timestamp:i}),this.mouseMoves.length>200&&(this.mouseMoves=this.mouseMoves.slice(-100)))},this.handleResize=()=>{const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})},this.sessionId=t,this.config={enabled:!0,trackClicks:!0,trackScrollDepth:!0,trackMouseMoves:!1,trackRageClicks:!0,mouseMoveThrottle:200,batchInterval:1e4,maxClickBuffer:500,rageClickThreshold:3,rageClickTimeWindow:1e3,...i}}start(){return!(!this.config.enabled||this.isActive||(this.isActive=!0,this.setupEventListeners(),this.startBatchTimer(),this.trackInitialViewport(),0))}stop(){this.isActive&&(this.isActive=!1,this.removeEventListeners(),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.sendBatch())}setupEventListeners(){this.config.trackClicks&&document.addEventListener("click",this.handleClick,!0),this.config.trackScrollDepth&&(window.addEventListener("scroll",this.handleScroll,{passive:!0}),document.addEventListener("scroll",this.handleScroll,{passive:!0})),this.config.trackMouseMoves&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}),window.addEventListener("resize",this.handleResize),window.addEventListener("orientationchange",this.handleResize)}removeEventListeners(){document.removeEventListener("click",this.handleClick,!0),window.removeEventListener("scroll",this.handleScroll),document.removeEventListener("scroll",this.handleScroll),document.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),window.removeEventListener("orientationchange",this.handleResize)}trackInitialViewport(){const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:t,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})}calculateScrollDepth(){const t=window.pageYOffset||document.documentElement.scrollTop,i=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),s=window.innerHeight;return i<=s?100:Math.min(100,Math.round((t+s)/i*100))}detectRageClick(t,i,s){const e=this.config.rageClickTimeWindow;this.recentClicks=this.recentClicks.filter(t=>s-t.timestamp<=e);const h=this.recentClicks.filter(s=>Math.sqrt(Math.pow(s.x-t,2)+Math.pow(s.y-i,2))<=50);return this.recentClicks.push({x:t,y:i,timestamp:s}),h.length>=this.config.rageClickThreshold-1}getElementSelector(t){if(t.id)return`#${t.id}`;if(t.className&&"string"==typeof t.className){const i=t.className.split(" ").filter(t=>t.length>0);if(i.length>0)return`.${i.slice(0,2).join(".")}`}const i=t.tagName.toLowerCase();return t.parentElement?`${i}:nth-child(${Array.from(t.parentElement.children).indexOf(t)+1})`:i}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(0===this.clicks.length&&0===this.scrollData.length&&0===this.mouseMoves.length)return;const t={sessionId:this.sessionId,pageMetadata:{url:window.location.href,title:document.title,viewport:{width:window.innerWidth,height:window.innerHeight},documentSize:{width:Math.max(document.body.scrollWidth,document.body.offsetWidth,document.documentElement.clientWidth,document.documentElement.scrollWidth,document.documentElement.offsetWidth),height:Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)}},clicks:[...this.clicks],scrollData:[...this.scrollData],mouseMoves:this.config.trackMouseMoves?[...this.mouseMoves]:[],maxScrollDepth:this.maxScrollDepth,timestamp:Date.now()};this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.sendToBackend(t)}setAntiAdblockManager(t){this.antiAdblockManager=t}async sendToBackend(t){try{if(this.antiAdblockManager&&(await this.antiAdblockManager.send(t,"/api/heatmap/record")).success)return;(await fetch("/api/heatmap/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok||console.warn("[Zaplier] Heatmap batch failed to send")}catch(t){console.warn("[Zaplier] Heatmap error:",t)}}getStats(){const t=this.clicks.filter(t=>t.rageClick).length;return{clickCount:this.clicks.length,maxScrollDepth:this.maxScrollDepth,isRecording:this.isActive,mouseMovements:this.mouseMoves.length,rageClicks:t}}enableMouseTracking(){this.config.trackMouseMoves||(this.config.trackMouseMoves=!0,this.isActive&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}))}disableMouseTracking(){this.config.trackMouseMoves&&(this.config.trackMouseMoves=!1,document.removeEventListener("mousemove",this.handleMouseMove),this.mouseMoves=[])}isRecording(){return this.isActive}}export{t as HeatmapEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
class t{constructor(t,i={}){this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.lastMouseMove=0,this.maxScrollDepth=0,this.isActive=!1,this.recentClicks=[],this.handleClick=t=>{if(!this.config.trackClicks)return;const i=t.target;i.getBoundingClientRect();const s=window.pageXOffset||document.documentElement.scrollLeft,e=window.pageYOffset||document.documentElement.scrollTop,h={x:t.clientX,y:t.clientY,absoluteX:t.clientX+s,absoluteY:t.clientY+e,element:this.getElementSelector(i),timestamp:Date.now(),button:t.button};this.config.trackRageClicks&&this.detectRageClick(h.x,h.y,h.timestamp)&&(h.rageClick=!0),this.clicks.push(h),this.clicks.length>this.config.maxClickBuffer&&(this.clicks=this.clicks.slice(-this.config.maxClickBuffer))},this.handleScroll=()=>{if(!this.config.trackScrollDepth)return;const t=this.calculateScrollDepth();this.maxScrollDepth=Math.max(this.maxScrollDepth,t),this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}}),this.scrollData.length>100&&(this.scrollData=this.scrollData.slice(-50))},this.handleMouseMove=t=>{if(!this.config.trackMouseMoves)return;const i=Date.now();i-this.lastMouseMove<this.config.mouseMoveThrottle||(this.lastMouseMove=i,this.mouseMoves.push({x:t.clientX,y:t.clientY,timestamp:i}),this.mouseMoves.length>200&&(this.mouseMoves=this.mouseMoves.slice(-100)))},this.handleResize=()=>{const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})},this.sessionId=t,this.config={enabled:!0,trackClicks:!0,trackScrollDepth:!0,trackMouseMoves:!1,trackRageClicks:!0,mouseMoveThrottle:200,batchInterval:1e4,maxClickBuffer:500,rageClickThreshold:3,rageClickTimeWindow:1e3,...i}}start(){return!(!this.config.enabled||this.isActive||(this.isActive=!0,this.setupEventListeners(),this.startBatchTimer(),this.trackInitialViewport(),0))}stop(){if(this.isActive&&(this.isActive=!1,this.removeEventListeners(),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.clicks.length>0||this.scrollData.length>0||this.mouseMoves.length>0)){try{if("undefined"!=typeof navigator&&navigator.sendBeacon&&this.config.apiEndpoint&&this.config.token){const t=`${this.config.apiEndpoint}/heatmap/track?token=${encodeURIComponent(this.config.token)}`;let i;try{const t=new URL(window.location.href);i=t.origin+t.pathname}catch{i=window.location.href}const s=Math.max(document.body.scrollWidth,document.body.offsetWidth,document.documentElement.clientWidth,document.documentElement.scrollWidth,document.documentElement.offsetWidth),e=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),h={sessionId:this.sessionId,pageMetadata:{url:window.location.href,normalizedUrl:i,width:s,height:e,title:document.title,viewport:{width:window.innerWidth,height:window.innerHeight},documentSize:{width:s,height:e}},clicks:[...this.clicks],scrollData:[...this.scrollData],mouseMoves:this.config.trackMouseMoves?[...this.mouseMoves]:[],maxScrollDepth:this.maxScrollDepth,timestamp:Date.now()},o=new Blob([JSON.stringify(h)],{type:"application/json"});if(navigator.sendBeacon(t,o))return this.clicks=[],this.scrollData=[],void(this.mouseMoves=[])}}catch{}this.sendBatch()}}setupEventListeners(){this.config.trackClicks&&document.addEventListener("click",this.handleClick,!0),this.config.trackScrollDepth&&(window.addEventListener("scroll",this.handleScroll,{passive:!0}),document.addEventListener("scroll",this.handleScroll,{passive:!0})),this.config.trackMouseMoves&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}),window.addEventListener("resize",this.handleResize),window.addEventListener("orientationchange",this.handleResize)}removeEventListeners(){document.removeEventListener("click",this.handleClick,!0),window.removeEventListener("scroll",this.handleScroll),document.removeEventListener("scroll",this.handleScroll),document.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),window.removeEventListener("orientationchange",this.handleResize)}trackInitialViewport(){const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:t,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})}calculateScrollDepth(){const t=window.pageYOffset||document.documentElement.scrollTop,i=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),s=window.innerHeight;return i<=s?100:Math.min(100,Math.round((t+s)/i*100))}detectRageClick(t,i,s){const e=this.config.rageClickTimeWindow;this.recentClicks=this.recentClicks.filter(t=>s-t.timestamp<=e);const h=this.recentClicks.filter(s=>Math.sqrt(Math.pow(s.x-t,2)+Math.pow(s.y-i,2))<=50);return this.recentClicks.push({x:t,y:i,timestamp:s}),h.length>=this.config.rageClickThreshold-1}getElementSelector(t){if(t.id)return`#${t.id}`;if(t.className&&"string"==typeof t.className){const i=t.className.split(" ").filter(t=>t.length>0);if(i.length>0)return`.${i.slice(0,2).join(".")}`}const i=t.tagName.toLowerCase();return t.parentElement?`${i}:nth-child(${Array.from(t.parentElement.children).indexOf(t)+1})`:i}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(0===this.clicks.length&&0===this.scrollData.length&&0===this.mouseMoves.length)return;const t=Math.max(document.body.scrollWidth,document.body.offsetWidth,document.documentElement.clientWidth,document.documentElement.scrollWidth,document.documentElement.offsetWidth),i=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight);let s;try{const t=new URL(window.location.href);s=t.origin+t.pathname}catch{s=window.location.href}const e={sessionId:this.sessionId,pageMetadata:{url:window.location.href,normalizedUrl:s,width:t,height:i,title:document.title,viewport:{width:window.innerWidth,height:window.innerHeight},documentSize:{width:t,height:i}},clicks:[...this.clicks],scrollData:[...this.scrollData],mouseMoves:this.config.trackMouseMoves?[...this.mouseMoves]:[],maxScrollDepth:this.maxScrollDepth,timestamp:Date.now()};this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.sendToBackend(e)}setAntiAdblockManager(t){this.antiAdblockManager=t}async sendToBackend(t){try{if(this.antiAdblockManager&&(await this.antiAdblockManager.send(t,"/heatmap/track")).success)return;const i=this.config.apiEndpoint?`${this.config.apiEndpoint}/heatmap/track?token=${encodeURIComponent(this.config.token||"")}`:"/api/heatmap/track";(await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok||console.warn("[Zaplier] Heatmap batch failed to send")}catch(t){console.warn("[Zaplier] Heatmap error:",t)}}getStats(){const t=this.clicks.filter(t=>t.rageClick).length;return{clickCount:this.clicks.length,maxScrollDepth:this.maxScrollDepth,isRecording:this.isActive,mouseMovements:this.mouseMoves.length,rageClicks:t}}enableMouseTracking(){this.config.trackMouseMoves||(this.config.trackMouseMoves=!0,this.isActive&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}))}disableMouseTracking(){this.config.trackMouseMoves&&(this.config.trackMouseMoves=!1,document.removeEventListener("mousemove",this.handleMouseMove),this.mouseMoves=[])}isRecording(){return this.isActive}}export{t as HeatmapEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
async function t(){var t,n;const o=[];let e=0;const a=await async function(){try{const t="__incognito_test__",n=Date.now().toString();localStorage.setItem(t,n);const o=localStorage.getItem(t);return localStorage.removeItem(t),o===n}catch{return!1}}();a||(e+=.25,o.push("localStorage_blocked"));const r=await async function(){try{const t="__incognito_test__",n=Date.now().toString();sessionStorage.setItem(t,n);const o=sessionStorage.getItem(t);return sessionStorage.removeItem(t),o===n}catch{return!1}}();r||(e+=.2,o.push("sessionStorage_blocked"));const i=await async function(){try{return!!window.indexedDB&&new Promise(t=>{const n=indexedDB.open("__incognito_test__",1);n.onsuccess=()=>{n.result.close(),indexedDB.deleteDatabase("__incognito_test__"),t(!0)},n.onerror=()=>t(!1),n.onblocked=()=>t(!1)})}catch{return!1}}();i||(e+=.15,o.push("indexedDB_blocked"));const c=function(){try{const t="__incognito_test__",n=Date.now().toString();document.cookie=`${t}=${n}; SameSite=Strict; path=/`;const o=-1!==document.cookie.indexOf(`${t}=${n}`);return document.cookie=`${t}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`,o}catch{return!1}}();c||(e+=.2,o.push("cookies_blocked")),function(){try{return!(!Array.isArray(navigator.languages)||1!==navigator.languages.length||!navigator.language)&&navigator.languages[0]===navigator.language}catch{return!1}}()&&(e+=.25,o.push("languages_single_value"));try{if(a){const t="__incognito_persistence_test__",n="persist_test";localStorage.setItem(t,n);const a=localStorage.getItem(t)===n;localStorage.removeItem(t),a||(e+=.2,o.push("localStorage_not_persistent"))}}catch{}try{if(null===(t=navigator.storage)||void 0===t?void 0:t.estimate){const t=await navigator.storage.estimate(),n=(null==t?void 0:t.quota)||0,a=(null==t?void 0:t.usage)||0;0===n?(e+=.3,o.push("storage_quota_zero")):n>0&&n<125829120&&(e+=.25,o.push("storage_quota_low")),0===a&&n>0&&(e+=.1,o.push("storage_usage_zero"))}else o.push("storage_estimate_unavailable")}catch{o.push("storage_estimate_error")}"serviceWorker"in navigator||(e+=.1,o.push("service_worker_absent")),"caches"in window||(e+=.05,o.push("cache_api_absent"));try{if(null===(n=navigator.permissions)||void 0===n?void 0:n.query){const t=await navigator.permissions.query({name:"notifications"});"denied"===(null==t?void 0:t.state)&&(e+=.05,o.push("notifications_denied"))}}catch{o.push("permissions_query_error")}(function(){try{return!!window.showOpenFilePicker}catch{return!1}})()||o.push("fs_access_absent"),"connection"in navigator||o.push("network_info_absent"),e=Math.max(0,Math.min(1,e));const s=[a,r,i,c].filter(t=>!t).length;return s>=3?e=Math.max(e,.85):s>=2&&(e=Math.max(e,.7)),o.includes("languages_single_value")&&(s>=1||e>=.2)&&(e=Math.max(e,.5)),{likelihood:e,methods:o}}export{t as detectIncognitoHeuristics};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function e(){const e=Math,a=()=>0,t=e.acos||a,n=e.acosh||a,r=e.asin||a,i=e.asinh||a,c=e.atanh||a,o=e.atan||a,s=e.sin||a,h=e.sinh||a,p=e.cos||a,u=e.cosh||a,f=e.tan||a,l=e.tanh||a,M=e.exp||a,P=e.expm1||a,g=e.log1p||a,m=a=>e.pow(e.PI,a),N=a=>e.log(a+e.sqrt(a*a+1)),b=a=>e.log((1+a)/(1-a))/2,_=a=>(e.exp(a)-1/e.exp(a))/2,x=a=>(e.exp(a)+1/e.exp(a))/2,y=a=>e.exp(a)-1,S=a=>(e.exp(2*a)-1)/(e.exp(2*a)+1),d=a=>e.log(1+a);try{return{acos:t(.12312423423423424),asin:r(.12312423423423424),atan:o(.5),cos:p(10.000000000123),sin:s(-1e300),tan:f(-1e300),acosh:n(1e308),acoshPf:(I=1e154,e.log(I+e.sqrt(I*I-1))),asinh:i(1),asinhPf:N(1),atanh:c(.5),atanhPf:b(.5),cosh:u(1),coshPf:x(1),sinh:h(1),sinhPf:_(1),tanh:l(1),tanhPf:S(1),exp:M(1),expm1:P(1),expm1Pf:y(1),log1p:g(10),log1pPf:d(10),powPI:m(-100),sqrt:e.sqrt(2),cbrt:e.cbrt?e.cbrt(8):0,log:e.log(e.E),log10:e.log10?e.log10(10):0,log2:e.log2?e.log2(2):0,special_0:e.sin(e.PI),special_1:e.cos(e.PI/2),special_2:e.tan(e.PI/4),special_3:e.sqrt(-1),special_4:e.log(-1),special_5:1/0,special_6:NaN}}catch(a){return{error:1,basicMath:e.PI+e.E}}var I}function a(){try{return{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT1_2:Math.SQRT1_2,SQRT2:Math.SQRT2}}catch{return{}}}function t(){try{return{precision1:.1+.2,precision2:.3-.1,precision3:.1*3,precision4:1.1-.9,largeAdd:1e16,largeSub:1e16,tiny:Number.MIN_VALUE,epsilon:Number.EPSILON||2220446049250313e-31,maxValue:Number.MAX_VALUE,maxSafeInteger:Number.MAX_SAFE_INTEGER||9007199254740991,minSafeInteger:Number.MIN_SAFE_INTEGER||-9007199254740991}}catch{return{}}}function n(){return"undefined"!=typeof Math}function r(){return{operations:e(),constants:a(),floatingPoint:t()}}export{r as getCompleteMathFingerprint,t as getFloatingPointBehavior,a as getMathConstants,e as getMathFingerprint,n as isMathDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as r,i as n,c as t}from"./fingerprint-C1MH_xUr.min.js";function o(){try{if(!p())return"NOT_SUPPORTED";const r=function(){try{return navigator.plugins||null}catch(r){if("SecurityError"===r.name)return null;throw r}}();if(!r)return"NAVIGATOR_UNAVAILABLE";const n=[];if(0===r.length)return n;for(let t=0;t<r.length;t++){const o=r[t];if(!o)continue;const a=[];if(o.length>0)for(let r=0;r<o.length;r++){const n=o[r];n&&n.type&&a.push(n.type)}n.push({name:o.name||"",filename:o.filename||"",description:o.description||"",version:o.version||void 0,mimeTypes:a})}return n.sort((r,n)=>r.name.localeCompare(n.name))}catch(r){return"SecurityError"===r.name?"SECURITY_RESTRICTED":[]}}function a(){try{if(!navigator.mimeTypes||0===navigator.mimeTypes.length)return[];const r=[];for(let n=0;n<navigator.mimeTypes.length;n++){const t=navigator.mimeTypes[n];t&&t.type&&r.push(t.type)}return r.sort()}catch{return[]}}function i(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(r=>r.name.toLowerCase().includes("flash")||r.description.toLowerCase().includes("flash")))return!0;if(navigator.mimeTypes&&Array.from(navigator.mimeTypes).some(r=>"application/x-shockwave-flash"===r.type))return!0;if(void 0!==window.ActiveXObject)try{return!!new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch{return!1}return!1}catch{return!1}}function e(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(r=>r.name.toLowerCase().includes("java")&&!r.name.toLowerCase().includes("javascript")))return!0;const r=["application/x-java-applet","application/x-java-bean","application/x-java-vm"];return!(!navigator.mimeTypes||!r.some(r=>Array.from(navigator.mimeTypes).some(n=>n.type===r)))||"function"==typeof navigator.javaEnabled&&navigator.javaEnabled()}catch{return!1}}function c(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(r=>r.name.toLowerCase().includes("silverlight")))return!0;if(navigator.mimeTypes&&Array.from(navigator.mimeTypes).some(r=>"application/x-silverlight"===r.type))return!0;if(void 0!==window.ActiveXObject)try{return!!new window.ActiveXObject("AgControl.AgControl")}catch{return!1}return!1}catch{return!1}}function u(){var r,t;try{if(!n())return"NOT_SUPPORTED";if(!navigator.plugins)return"NAVIGATOR_UNAVAILABLE";const o=navigator.plugins.length;return 0===o||!(null===(r=window.chrome)||void 0===r?void 0:r.runtime)&&!(null===(t=window.chrome)||void 0===t?void 0:t.webstore)&&void 0!==window.chrome||!Array.from(navigator.plugins).some(r=>r.name.toLowerCase().includes("pdf")||r.name.toLowerCase().includes("chrome"))&&o<3}catch(r){return"SecurityError"===r.name&&"SECURITY_RESTRICTED"}}function s(){try{if(!t())return"NOT_SUPPORTED";const r={mozInnerScreenX:"mozInnerScreenX"in window,mozPaintCount:"mozPaintCount"in window,mozApps:!!navigator.mozApps,buildID:!!navigator.buildID,oscpu:!!navigator.oscpu},n=Object.values(r).filter(Boolean).length;return 0===n||(navigator.plugins?0===navigator.plugins.length&&n<2:"NAVIGATOR_UNAVAILABLE")}catch(r){return"SecurityError"===r.name&&"SECURITY_RESTRICTED"}}function l(r){const n=["antivirus","security","firewall","malware","protection","kaspersky","norton","mcafee","avast","avira","bitdefender","eset","sophos","symantec","trend micro","f-secure"];return r.filter(r=>n.some(n=>r.name.toLowerCase().includes(n)||r.description.toLowerCase().includes(n))).map(r=>r.name)}function v(r){const n=["adblock","adblocker","ad block","ublock","ghostery","privacy badger","disconnect","noscript","tracking protection"];return r.filter(r=>n.some(n=>r.name.toLowerCase().includes(n)||r.description.toLowerCase().includes(n))).map(r=>r.name)}function f(r,n,t,o){let a=50;return a+=10*r.length,a+=5*n.length,t&&(a-=15),o&&(a-=10),Math.max(0,Math.min(100,a))}function g(r,n){const t=r.map(r=>r.name).sort(),o=n.slice(0,10).sort();return[`plugins:${t.length}`,`mimes:${n.length}`,...t.slice(0,5),...o.slice(0,5)].join("|")}function p(){return r().canRunBrowserAPIs&&"undefined"!=typeof navigator}function y(){const r=o(),n=Array.isArray(r)?r:[],t=a(),p=Array.isArray(t)?t:[],y=i(),d=e(),h=c(),A=u(),w="boolean"==typeof A&&A,m=s(),E="boolean"==typeof m&&m,T=l(n),S=v(n),I=g(n,p),R=f(T,S,y,d);return{plugins:n,pluginCount:n.length,mimeTypes:p,mimeTypeCount:p.length,flashEnabled:y,javaEnabled:d,silverLightEnabled:h,chromeExtensionsBlocked:w,firefoxExtensionsBlocked:E,securityPlugins:T,adBlockerPlugins:S,pluginSignature:I,securityScore:R}}export{f as calculateSecurityScore,u as detectChromeExtensionsBlocked,s as detectFirefoxExtensionsBlocked,g as generatePluginSignature,y as getEnhancedPluginFingerprint,a as getMimeTypes,o as getNavigatorPlugins,v as identifyAdBlockerPlugins,l as identifySecurityPlugins,p as isEnhancedPluginDetectionAvailable,i as testFlashEnabled,e as testJavaEnabled,c as testSilverlightEnabled};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
class t{constructor(t,i,s={}){this.events=[],this.isActive=!1,this.isPaused=!1,this.lastActivityTime=Date.now(),this.sessionStartTime=Date.now(),this.boundOnActivity=null,this.sessionId=t,this.visitorId=i,this.config={enabled:!0,sampleRate:1,batchInterval:1e4,inactivityTimeout:3e4,pauseOnInactive:!0,...s}}async start(){if(!this.config.enabled||this.isActive)return!1;if(Math.random()>this.config.sampleRate)return!1;try{const{record:t}=await import("rrweb");return this.rrwebStopRecord=t({emit:t=>{this.onActivity(),this.isPaused||this.events.push(t)}}),this.isActive=!0,this.startBatchTimer(),this.startInactivityTracking(),!0}catch(t){return console.error("[Zaplier] Failed to start rrweb recording:",t),!1}}stop(){this.isActive&&(this.isActive=!1,this.rrwebStopRecord&&(this.rrwebStopRecord(),this.rrwebStopRecord=void 0),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.inactivityTimer&&(clearTimeout(this.inactivityTimer),this.inactivityTimer=void 0),this.boundOnActivity&&(["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.removeEventListener(t,this.boundOnActivity,!0)}),this.boundOnActivity=null),this.sendBatch())}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(!this.sdkInstance)return void(this.config.pauseOnInactive&&this.events.length>0&&console.warn("[Zaplier] Replay: SDK instance not ready, holding batch"));if(0===this.events.length)return;const t={sessionId:this.sessionId,visitorId:this.visitorId,events:[...this.events],metadata:{userAgent:navigator.userAgent,timestamp:Date.now(),startUrl:window.location.href,duration:Date.now()-this.sessionStartTime,activeTime:this.getActiveTime(),funnelSteps:[],hasConversion:!1,eventsCount:this.events.length,isPaused:this.isPaused}};this.events=[],t.events.length,this.sendToBackend(t)}setSDKInstance(t){this.sdkInstance=t}async sendToBackend(t){try{if(!this.sdkInstance)return void console.error("[Zaplier] No SDK instance available for replay transport");const i=await this.sdkInstance.sendReplayBatch(t);i&&i.success||console.error("[Zaplier] Session replay batch failed:",i)}catch(t){console.error("[Zaplier] Session replay error:",t)}}getEventCount(){return this.events.length}isRecording(){return this.isActive}isPausedState(){return this.isPaused}startInactivityTracking(){this.config.pauseOnInactive&&(this.boundOnActivity=this.onActivity.bind(this),["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.addEventListener(t,this.boundOnActivity,!0)}),this.resetInactivityTimer())}onActivity(){this.lastActivityTime=Date.now(),this.isPaused&&this.resume(),this.resetInactivityTimer()}resetInactivityTimer(){this.inactivityTimer&&clearTimeout(this.inactivityTimer),this.inactivityTimer=window.setTimeout(()=>{this.pauseForInactivity()},this.config.inactivityTimeout)}pauseForInactivity(){this.isPaused||(this.isPaused=!0)}resume(){this.isPaused&&(this.isPaused=!1)}getActiveTime(){return Date.now()-this.sessionStartTime}getVisitorId(){return this.visitorId}}export{t as SessionReplayEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
class t{constructor(t,i,s={}){this.events=[],this.isActive=!1,this.isPaused=!1,this.lastActivityTime=Date.now(),this.sessionStartTime=Date.now(),this.sessionId=t,this.visitorId=i,this.config={enabled:!0,sampleRate:1,batchInterval:1e4,inactivityTimeout:3e4,pauseOnInactive:!0,...s}}async start(){if(!this.config.enabled||this.isActive)return!1;if(Math.random()>this.config.sampleRate)return!1;try{const{record:t}=await import("rrweb");return this.rrwebStopRecord=t({emit:t=>{this.onActivity(),this.isPaused||this.events.push(t)}}),this.isActive=!0,this.startBatchTimer(),this.startInactivityTracking(),!0}catch(t){return console.error("[Zaplier] Failed to start rrweb recording:",t),!1}}stop(){this.isActive&&(this.isActive=!1,this.rrwebStopRecord&&(this.rrwebStopRecord(),this.rrwebStopRecord=void 0),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.inactivityTimer&&(clearTimeout(this.inactivityTimer),this.inactivityTimer=void 0),this.sendBatch())}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(0===this.events.length)return;const t={sessionId:this.sessionId,visitorId:this.visitorId,events:[...this.events],metadata:{userAgent:navigator.userAgent,timestamp:Date.now(),startUrl:window.location.href,duration:Date.now()-this.sessionStartTime,activeTime:this.getActiveTime(),funnelSteps:[],hasConversion:!1,eventsCount:this.events.length,isPaused:this.isPaused}};this.events=[],t.events.length,this.sendToBackend(t)}setSDKInstance(t){this.sdkInstance=t}async sendToBackend(t){try{if(!this.sdkInstance)return void console.error("[Zaplier] No SDK instance available for replay transport");const i=await this.sdkInstance.sendReplayBatch(t);i&&i.success||console.error("[Zaplier] Session replay batch failed:",i)}catch(t){console.error("[Zaplier] Session replay error:",t)}}getEventCount(){return this.events.length}isRecording(){return this.isActive}isPausedState(){return this.isPaused}startInactivityTracking(){this.config.pauseOnInactive&&(["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.addEventListener(t,this.onActivity.bind(this),!0)}),this.resetInactivityTimer())}onActivity(){this.lastActivityTime=Date.now(),this.isPaused&&this.resume(),this.resetInactivityTimer()}resetInactivityTimer(){this.inactivityTimer&&clearTimeout(this.inactivityTimer),this.inactivityTimer=window.setTimeout(()=>{this.pauseForInactivity()},this.config.inactivityTimeout)}pauseForInactivity(){this.isPaused||(this.isPaused=!0)}resume(){this.isPaused&&(this.isPaused=!1)}getActiveTime(){return Date.now()-this.sessionStartTime}getVisitorId(){return this.visitorId}}export{t as SessionReplayEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function t(){try{if("undefined"==typeof localStorage)return!1;const t="__rb_test__",e="test";localStorage.setItem(t,e);const n=localStorage.getItem(t);return localStorage.removeItem(t),n===e}catch(t){return"blocked"}}function e(){try{if("undefined"==typeof sessionStorage)return!1;const t="__rb_test__",e="test";sessionStorage.setItem(t,e);const n=sessionStorage.getItem(t);return sessionStorage.removeItem(t),n===e}catch(t){return"blocked"}}function n(){return new Promise(t=>{try{if(!("indexedDB"in window))return void t(!1);const e="__rb_test_db__",n=indexedDB.open(e,1);let o=!1;const r=e=>{o||(o=!0,t(e))};setTimeout(()=>r("blocked"),1e3),n.onerror=()=>r("blocked"),n.onsuccess=()=>{try{n.result.close();const t=indexedDB.deleteDatabase(e);t.onsuccess=()=>r(!0),t.onerror=()=>r(!0)}catch{r("blocked")}},n.onupgradeneeded=()=>{try{const t=n.result;t.objectStoreNames.contains("test")||t.createObjectStore("test")}catch{r("blocked")}}}catch{t("blocked")}})}function o(){try{return"openDatabase"in window&&"function"==typeof window.openDatabase}catch{return!1}}async function r(){try{if("storage"in navigator&&"estimate"in navigator.storage){const t=await navigator.storage.estimate();return{quota:t.quota||null,usage:t.usage||null,available:t.quota&&t.usage?t.quota-t.usage:null}}return{}}catch{return{}}}function c(){return"undefined"!=typeof window}async function a(){const[c,a]=await Promise.all([n(),r()]);return{localStorage:t(),sessionStorage:e(),indexedDB:c,webSQL:o(),quota:a}}export{n as getIndexedDBSupport,t as getLocalStorageSupport,e as getSessionStorageSupport,a as getStorageFingerprint,r as getStorageQuota,o as getWebSQLSupport,c as isStorageDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function n(){try{if("undefined"!=typeof Intl&&Intl.DateTimeFormat){const n=Intl.DateTimeFormat().resolvedOptions().timeZone;if(n)return n}const n=new Date(2024,0,1).getTimezoneOffset();return`UTC${n>0?"-":"+"}${Math.abs(n/60)}`}catch{return"unknown"}}function t(){try{const n=[];navigator.languages&&Array.isArray(navigator.languages)&&n.push(...navigator.languages),navigator.language&&n.push(navigator.language);const t=navigator.userLanguage||navigator.browserLanguage;return t&&n.push(t),[...new Set(n)]}catch{return["unknown"]}}function o(){try{if("undefined"!=typeof Intl&&Intl.DateTimeFormat){const n=(new Intl.DateTimeFormat).resolvedOptions();return{locale:n.locale||"unknown",calendar:n.calendar||"unknown",numberingSystem:n.numberingSystem||"unknown",timeZone:n.timeZone||"unknown"}}return{locale:"unknown"}}catch{return{locale:"unknown"}}}function e(){try{const n={platform:navigator.platform||"unknown",oscpu:navigator.oscpu||null,vendor:navigator.vendor||null},t=navigator.userAgent;if(t.includes("Windows"))n.os="Windows",t.includes("Windows NT 10.0")?n.osVersion="10":t.includes("Windows NT 6.3")?n.osVersion="8.1":t.includes("Windows NT 6.2")?n.osVersion="8":t.includes("Windows NT 6.1")&&(n.osVersion="7");else if(t.includes("Macintosh")||t.includes("Mac OS")){n.os="macOS";const o=t.match(/Mac OS X ([0-9_]+)/);o&&o[1]&&(n.osVersion=o[1].replace(/_/g,"."))}else if(t.includes("Linux"))n.os="Linux";else if(t.includes("Android")){n.os="Android";const o=t.match(/Android ([0-9.]+)/);o&&o[1]&&(n.osVersion=o[1])}else if(t.includes("iOS")||t.includes("iPhone")||t.includes("iPad")){n.os="iOS";const o=t.match(/OS ([0-9_]+)/);o&&o[1]&&(n.osVersion=o[1].replace(/_/g,"."))}return n}catch{return{platform:"unknown"}}}function r(){return"undefined"!=typeof navigator}function a(){return{timezone:n(),languages:t(),dateTimeLocale:o(),platform:e(),cookiesEnabled:navigator.cookieEnabled||!1}}export{o as getDateTimeLocale,t as getLanguages,e as getPlatformExtended,a as getSystemFingerprint,n as getTimezone,r as isSystemDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-BUMPOlca.min.js";const t="__zp_d",n="__zp_p";class s{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}s.memoryStore=new Map;class r{generateSessionId(){const{value:t}=s.get(n);if(t)try{const n=JSON.parse(t);if(n.t&&!0===n.o)return e(n.t)}catch(e){}const r="temp-"+Date.now().toString(36);return e(r)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:t}=e,{value:r,method:o}=s.get(n);if(r){const e=this.extractFromCamouflage(r);if(e&&e.stableCoreHash===t&&e.visitorId){const r=this.createCamouflageData(e.visitorId,e.sessionId,t);return s.set(n,JSON.stringify(r)),{...e,persistenceMethod:o,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:t,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(r,o,i){try{let a=i||this.getCurrentSessionId();a&&!a.includes("temp-")||(a=e(r));const c=this.createCamouflageData(r,a,o,!0),{success:u,method:d}=s.set(n,JSON.stringify(c));return!!u&&(s.set(t,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{s.setLocal(n,""),s.setLocal(t,""),s.setSession(n,""),s.setSession(t,""),s.setCookie(n,"",-1),s.setCookie(t,"",-1),s.setMemory(n,""),s.setMemory(t,"")}catch(e){}}}export{r as VisitorIdentityManager};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-CGxFM5QW.min.js";const t="__zp_d",n="__zp_p";class s{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}s.memoryStore=new Map;class r{generateSessionId(){const{value:t}=s.get(n);if(t)try{const n=JSON.parse(t);if(n.t&&!0===n.o)return e(n.t)}catch(e){}const r="temp-"+Date.now().toString(36);return e(r)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:t}=e,{value:r,method:o}=s.get(n);if(r){const e=this.extractFromCamouflage(r);if(e&&e.stableCoreHash===t&&e.visitorId){const r=this.createCamouflageData(e.visitorId,e.sessionId,t);return s.set(n,JSON.stringify(r)),{...e,persistenceMethod:o,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:t,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(r,o,i){try{let a=i||this.getCurrentSessionId();a&&!a.includes("temp-")||(a=e(r));const c=this.createCamouflageData(r,a,o,!0),{success:u,method:d}=s.set(n,JSON.stringify(c));return!!u&&(s.set(t,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{s.setLocal(n,""),s.setLocal(t,""),s.setSession(n,""),s.setSession(t,""),s.setCookie(n,"",-1),s.setCookie(t,"",-1),s.setMemory(n,""),s.setMemory(t,"")}catch(e){}}}export{r as VisitorIdentityManager};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-NFvhjAfH.min.js";const t="__zp_d",n="__zp_p";class s{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}s.memoryStore=new Map;class r{generateSessionId(){const{value:t}=s.get(n);if(t)try{const n=JSON.parse(t);if(n.t&&!0===n.o)return e(n.t)}catch(e){}const r="temp-"+Date.now().toString(36);return e(r)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:t}=e,{value:r,method:o}=s.get(n);if(r){const e=this.extractFromCamouflage(r);if(e&&e.stableCoreHash===t&&e.visitorId){const r=this.createCamouflageData(e.visitorId,e.sessionId,t);return s.set(n,JSON.stringify(r)),{...e,persistenceMethod:o,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:t,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(r,o,i){try{let a=i||this.getCurrentSessionId();a&&!a.includes("temp-")||(a=e(r));const c=this.createCamouflageData(r,a,o,!0),{success:u,method:d}=s.set(n,JSON.stringify(c));return!!u&&(s.set(t,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=s.get(n);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{s.setLocal(n,""),s.setLocal(t,""),s.setSession(n,""),s.setSession(t,""),s.setCookie(n,"",-1),s.setCookie(t,"",-1),s.setMemory(n,""),s.setMemory(t,"")}catch(e){}}}export{r as VisitorIdentityManager};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-zJiDcx4q.min.js";const t={session:"__zp_s",visitor:"__zp_v",device:"__zp_d",prefs:"__zp_p",analytics:"__zp_a"};class n{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}n.memoryStore=new Map;class s{generateSessionId(){const{value:s}=n.get(t.prefs);if(s)try{const t=JSON.parse(s);if(t.t&&!0===t.o)return e(t.t)}catch(e){}const o="temp-"+Date.now().toString(36);return e(o)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:s}=e,{value:o,method:r}=n.get(t.prefs);if(o){const e=this.extractFromCamouflage(o);if(e&&e.stableCoreHash===s&&e.visitorId){const o=this.createCamouflageData(e.visitorId,e.sessionId,s);return n.set(t.prefs,JSON.stringify(o)),{...e,persistenceMethod:r,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:s,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(s,o,r){try{let i=r||this.getCurrentSessionId();i&&!i.includes("temp-")||(i=e(s));const a=this.createCamouflageData(s,i,o,!0),{success:c,method:u}=n.set(t.prefs,JSON.stringify(a));return!!c&&(n.set(t.device,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{for(const e of Object.values(t)){try{"undefined"!=typeof window&&window.localStorage&&localStorage.removeItem(e)}catch{}try{"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.removeItem(e)}catch{}}n.setCookie(t.prefs,"",-1),n.setCookie(t.device,"",-1)}catch(e){}}}export{s as VisitorIdentityManager};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-hqxwsWnO.min.js";const t={session:"__zp_s",visitor:"__zp_v",device:"__zp_d",prefs:"__zp_p",analytics:"__zp_a"};class n{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}n.memoryStore=new Map;class s{generateSessionId(){const{value:s}=n.get(t.prefs);if(s)try{const t=JSON.parse(s);if(t.t&&!0===t.o)return e(t.t)}catch(e){}const o="temp-"+Date.now().toString(36);return e(o)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:s}=e,{value:o,method:r}=n.get(t.prefs);if(o){const e=this.extractFromCamouflage(o);if(e&&e.stableCoreHash===s&&e.visitorId){const o=this.createCamouflageData(e.visitorId,e.sessionId,s);return n.set(t.prefs,JSON.stringify(o)),{...e,persistenceMethod:r,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:s,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(s,o,r){try{let i=r||this.getCurrentSessionId();i&&!i.includes("temp-")||(i=e(s));const a=this.createCamouflageData(s,i,o,!0),{success:c,method:u}=n.set(t.prefs,JSON.stringify(a));return!!c&&(n.set(t.device,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{for(const e of Object.values(t)){try{"undefined"!=typeof window&&window.localStorage&&localStorage.removeItem(e)}catch{}try{"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.removeItem(e)}catch{}}n.setCookie(t.prefs,"",-1),n.setCookie(t.device,"",-1)}catch(e){}}}export{s as VisitorIdentityManager};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e}from"./core-BTl6GQvU.min.js";const t={session:"__zp_s",visitor:"__zp_v",device:"__zp_d",prefs:"__zp_p",analytics:"__zp_a"};class n{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,n=365){try{if("undefined"!=typeof document){const s=new Date(Date.now()+24*n*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${s}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",n=decodeURIComponent(document.cookie).split(";");for(let e=0;e<n.length;e++){let s=n[e];if(s){for(;" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}n.memoryStore=new Map;class s{generateSessionId(){const{value:s}=n.get(t.prefs);if(s)try{const t=JSON.parse(s);if(t.t&&!0===t.o)return e(t.t)}catch(e){}const o="temp-"+Date.now().toString(36);return e(o)}createCamouflageData(e,t,n,s=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,t:e,i:t,u:n,o:!!s||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t.t&&t.i&&t.u&&!0===t.o)return{visitorId:t.t,sessionId:t.i,stableCoreHash:t.u,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t.t&&!t.o)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:s}=e,{value:o,method:r}=n.get(t.prefs);if(o){const e=this.extractFromCamouflage(o);if(e&&e.stableCoreHash===s&&e.visitorId){const o=this.createCamouflageData(e.visitorId,e.sessionId,s);return n.set(t.prefs,JSON.stringify(o)),{...e,persistenceMethod:r,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:s,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(s,o,r){try{let i=r||this.getCurrentSessionId();i&&!i.includes("temp-")||(i=e(s));const a=this.createCamouflageData(s,i,o,!0),{success:c,method:u}=n.set(t.prefs,JSON.stringify(a));return!!c&&(n.set(t.device,o),!0)}catch(e){return console.error("[VisitorIdentityManager] Failed to update visitor ID from backend:",e),!1}}getCurrentSessionId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=n.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{for(const e of Object.values(t)){try{"undefined"!=typeof window&&window.localStorage&&localStorage.removeItem(e)}catch{}try{"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.removeItem(e)}catch{}}n.setCookie(t.prefs,"",-1),n.setCookie(t.device,"",-1)}catch(e){}}}export{s as VisitorIdentityManager};
|