@gemx-dev/clarity-js 0.8.67 → 0.8.69
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +181 -63
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +181 -63
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/core/config.ts +1 -0
- package/src/core/history.ts +28 -17
- package/src/core/scrub.ts +1 -4
- package/src/core/version.ts +1 -1
- package/src/data/consent.ts +9 -4
- package/src/data/dimension.ts +1 -1
- package/src/data/encode.ts +4 -4
- package/src/data/metadata.ts +21 -7
- package/src/insight/encode.ts +5 -2
- package/src/interaction/change.ts +3 -3
- package/src/interaction/click.ts +73 -6
- package/src/interaction/encode.ts +1 -0
- package/src/layout/constants.ts +13 -0
- package/src/layout/custom.ts +14 -9
- package/src/layout/dom.ts +10 -9
- package/src/layout/encode.ts +5 -2
- package/src/layout/index.ts +4 -2
- package/src/layout/mutation.ts +5 -5
- package/src/layout/selector.ts +2 -1
- package/test/consentv2.test.ts +160 -15
- package/types/core.d.ts +1 -0
- package/types/data.d.ts +1 -0
- package/types/interaction.d.ts +9 -0
- package/types/layout.d.ts +1 -8
- package/types/performance.d.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Vt},get start(){return Gt},get stop(){return Yt},get track(){return At}}),e=Object.freeze({__proto__:null,get check(){return Qt},get compute(){return te},get data(){return Dt},get start(){return Kt},get stop(){return ee},get trigger(){return $t}}),n=Object.freeze({__proto__:null,get compute(){return ce},get data(){return ne},get log(){return ue},get reset(){return se},get start(){return oe},get stop(){return ie},get updates(){return re}}),r=Object.freeze({__proto__:null,get compute(){return be},get config(){return ge},get consent(){return ve},get data(){return le},get start(){return fe},get stop(){return pe},get trackConsentv2(){return ye}}),a=Object.freeze({__proto__:null,get callback(){return Pe},get callbacks(){return Se},get clear(){return ze},get consent(){return xe},get consentv2(){return Ce},get data(){return we},get electron(){return ke},get id(){return Me},get metadata(){return Te},get save(){return qe},get shortid(){return De},get start(){return Ee},get stop(){return Oe}}),o=Object.freeze({__proto__:null,get data(){return Le},get envelope(){return Ve},get start(){return Ue},get stop(){return Ge}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],excludeClassNames:[],externalSession:!1,userId:null,sessionId:null};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.67";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:k(s,"▪","▫"):S(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return _(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?w(t):S(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?"src"===e&&(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return _(t);case"placeholder":return S(t)}break;case 4:switch(e){case"*T":case"data-":return r?w(t):S(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return k(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function b(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function w(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function S(t){return t.replace(f,"•")}function k(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function _(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var M=[];function x(){}function C(){}function j(){}function N(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:N,hashText:x,keys:M,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:j,trigger:C}),q=null;function A(t,e){gn()&&t&&"string"==typeof t&&t.length<255&&(q=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},Ft(24))}var D,R=null,X=null;function H(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function L(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(We(t),e,n)}function V(t){return window.clearTimeout(t)}var Y=0,B=0,W=null;function Z(){W&&V(W),W=G(J,B),Y=l()}function J(){var t=l();D={gap:t-Y},Ft(25),D.gap<3e5?W=G(J,B):fn&&(A("clarityGemX","suspend"),Rn(),["mousemove","touchstart"].forEach((function(t){return Je(document,t,vn)})),["resize","scroll","pageshow"].forEach((function(t){return Je(window,t,vn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:Z,start:function(){B=6e4,Y=0},stop:function(){V(W),Y=0,B=0}}),K=null;function Q(t){gn()&&i.lean&&(i.lean=!1,K={key:t},Pe(),qe(),i.upgrade&&i.upgrade(t),Ft(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q});function tt(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function et(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var nt=null;function rt(t,e){ot(t,"string"==typeof e?[e]:e)}function at(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),tt(this,void 0,void 0,(function(){var a,o;return et(this,(function(i){switch(i.label){case 0:return o={},[4,ct(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(k(u.substring(2),"*","*")):k(u,"*","*")),ot("userId",[(a=o).userId]),ot("userHint",[a.userHint]),ot("userType",[st(t)]),e&&(ot("sessionId",[e]),a.sessionId=e),n&&(ot("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function ot(t,e){if(gn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in nt?nt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);nt[t]=n}}function it(){Ft(34)}function ut(){nt={}}function ct(t){return tt(this,void 0,void 0,(function(){var e;return et(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function st(t){return t&&t.indexOf("@")>0?"email":"string"}var lt="CompressionStream"in window;function dt(t){return tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),lt?(e=new ReadableStream({start:function(e){return tt(this,void 0,void 0,(function(){return et(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ft(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ft(t){return tt(this,void 0,void 0,(function(){var e,n,r,a,o;return et(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function pt(t,e){try{return!!t[e]}catch(t){return!1}}function ht(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var gt=null,vt="^";function mt(t,e){var n;if(void 0===e&&(e=!1),pt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=ht(o[1]),u=i[0],c=i[1];u;)u=(n=ht(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function yt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||pt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===gt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(gt=".".concat(c[s]).concat(gt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(gt),mt(t)===e))return;gt=""}}catch(t){gt=""}document.cookie=gt?"".concat(u).concat(";").concat("domain=").concat(gt):u}}var bt=null;function wt(t){try{if(!bt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){bt(t)}))}catch(t){}}var St=[P,n,Object.freeze({__proto__:null,compute:it,get data(){return nt},identify:at,reset:ut,set:rt,start:function(){ut()},stop:function(){ut()}}),e,P,Object.freeze({__proto__:null,COOKIE_SEP:vt,getCookie:mt,setCookie:yt,start:function(){gt=null},stop:function(){gt=null}}),r,a,o,t,F,$,P];function kt(){R={},X={},H(5),St.forEach((function(t){return We(t.start)()}))}function _t(){St.slice().reverse().forEach((function(t){return We(t.stop)()})),R={},X={}}function It(){it(),ce(),Ft(0),te(),be()}function Et(t,e,n){return"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Ot=[],Tt=1,Mt=null;function xt(){Ot=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Mt.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Ct(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}jt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){tt(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return et(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,Vt(n);break;case 43:if((a=Ot).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Et(h,s[p][h],c));break;case"value":n.push(y(s[p],s.tag,c))}Vt(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Ct(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function jt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Mt.has(t)?Mt.get(t):(Mt.set(t,Tt),Tt++)}(t),a=e?Mt.get(e):null,o=t.previousSibling?Mt.get(t.previousSibling):null;Ot.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Nt,zt,Pt,qt,At,Dt,Rt=0,Xt=0,Ht=null,Lt=0,Ut=!1;function Gt(){qt=!0,Rt=0,Xt=0,Ut=!1,Lt=0,Nt=[],zt=[],Pt={},At=null}function Vt(t,e){if(void 0===e&&(e=!0),qt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!Ut&&Xt+a.length>10485760&&(Ut=!0):Ut=!1,r){case 5:if(Ut)break;Rt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(Ut)break;Xt+=a.length,Nt.push(a);break;default:zt.push(a)}H(25);var o=function(){var t=!1===i.lean&&Rt>0?100:Le.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-Lt>2*o&&(V(Ht),Ht=null),e&&null===Ht&&(25!==r&&Z(),Ht=G(Bt,o),Lt=n,Qt(Xt))}}function Yt(){V(Ht),Bt(!0),Rt=0,Xt=0,Ut=!1,Lt=0,Nt=[],zt=[],Pt={},At=null,qt=!1}function Bt(t){return void 0===t&&(t=!1),tt(this,void 0,void 0,(function(){var e,n,r,a,o,u,c,s;return et(this,(function(l){switch(l.label){case 0:return qt?(Ht=null,(e=!1===i.lean&&Xt>0&&(Xt<1048576||Le.sequence>0))&&U(1,1),It(),n=!0===t,Le?(r=JSON.stringify(Ve(n)),a="[".concat(zt.join(),"]"),o=e?"[".concat(Nt.join(),"]"):"",n&&o.length>0&&r.length+a.length+o.length>65536&&(o=""),u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:o}),n?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,dt(u)];case 2:s=l.sent(),l.label=3;case 3:return L(2,(c=s)?c.length:u.length),Wt(u,c,Le.sequence,n),zt=[],e&&(Nt=[],Xt=0,Rt=0,Ut=!1),[2]}}))}))}function Wt(t,e,n,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var a=i.upload,o=!1;if(r&&navigator&&navigator.sendBeacon)try{(o=navigator.sendBeacon.bind(navigator)(a,t))&&Jt(n)}catch(t){}if(!1===o){n in Pt?Pt[n].attempts++:Pt[n]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){Be(new Error("".concat("Timeout"," : ").concat(a)))},null!==n&&(u.onreadystatechange=function(){We(Zt)(u,n)}),u.withCredentials=!0,e?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(e)):u.send(t)}}else if(i.upload){(0,i.upload)(t),Jt(n)}}function Zt(t,e){var n=Pt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?$t(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),At={sequence:e,attempts:n.attempts,status:t.status},Ft(2),Wt(n.data,null,e)):(At={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&Ft(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":$t(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&wt(o[1]);break;case"SNAPSHOT":i.lean=!1,xt()}}}(t.responseText),0===t.status&&(Wt(n.data,null,e,!0),$t(3)),t.status>=200&&t.status<=208&&Jt(e),delete Pt[e]))}function Jt(t){1===t&&(qe(),Pe())}function Ft(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),Vt(e,!1));break;case 25:e.push(D.gap),Vt(e);break;case 35:e.push(Dt.check),Vt(e,!1);break;case 3:e.push(K.key),Vt(e);break;case 2:e.push(At.sequence),e.push(At.attempts),e.push(At.status),Vt(e,!1);break;case 24:q.key&&e.push(q.key),e.push(q.value),Vt(e);break;case 34:var r=Object.keys(nt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(nt[i])}ut(),Vt(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},Vt(e,!1)}break;case 1:var p=Object.keys(re);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(re[v])}se(),Vt(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];f=parseInt(w,10);e.push(f),e.push([].concat.apply([],O[w]))}Vt(e,!1)}break;case 40:M.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),Vt(e,!1);break;case 47:e.push(le.source),e.push(le.ad_Storage),e.push(le.analytics_Storage),Vt(e,!1)}}function Kt(){Dt={check:0}}function Qt(t){if(0===Dt.check){var e=Dt.check;e=Le.sequence>=128?1:e,e=Le.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Dt.check&&$t(e)}}function $t(t){Dt.check=t,5!==t&&(ze(),Rn())}function te(){0!==Dt.check&&Ft(35)}function ee(){Dt=null}var ne=null,re=null,ae=!1;function oe(){ne={},re={},ae=!1}function ie(){ne={},re={},ae=!1}function ue(t,e){if(e&&(e="".concat(e),t in ne||(ne[t]=[]),ne[t].indexOf(e)<0)){if(ne[t].length>128)return void(ae||(ae=!0,$t(5)));ne[t].push(e),t in re||(re[t]=[]),re[t].push(e)}}function ce(){Ft(1)}function se(){re={},ae=!1}var le=null,de=!0;function fe(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;de=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],he)}function pe(){de=!0}function he(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState){var n=e.getConsentState("analytics_storage");Ce(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}}function ge(t){me(t.analytics_Storage?1:0),le=t}function ve(){me(2)}function me(t){ue(36,t.toString())}function ye(t){le=t,Ft(47)}function be(){var t;if(de&&(Ft(47),de=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&he()}}var we=null,Se=[],ke=0,_e=null,Ie={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Ee(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";ke=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:De(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=mt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-Re(n[1])<18e5&&(t.session=n[0],t.count=Re(n[2])+1,t.upgrade=Re(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=Xe(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;we={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,ue(0,r),ue(3,c),ue(1,b(location.href,!!ke)),ue(2,document.referrer),ue(15,function(){var t=De();if(i.track&&pt(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),ue(16,document.documentElement.lang),ue(17,document.dir),ue(26,"".concat(window.devicePixelRatio)),ue(28,l.dob.toString()),ue(29,l.version.toString()),ue(33,u),ue(34,a),ue(35,o),U(0,s.ts),U(1,0),U(35,ke);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(ue(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;ue(22,t.platform),ue(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){ue(24,t.name+"~"+t.version)})),ue(25,t.model),U(27,t.mobile?1:0)})):ue(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth)));for(var v=0,m=i.cookies;v<m.length;v++){var y=m[v],w=mt(y);w&&rt(y,w)}null===_e&&(_e={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),ge(je(_e)),i.externalSession||Ae(l)}function Oe(){we=null,Se.forEach((function(t){t.called=!1}))}function Te(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;we&&(a||!1===e)&&(t(we,!i.lean,r?_e:void 0),o=!0),!n&&o||Se.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Me(){return we?[we.userId,we.sessionId,we.pageNum].join("."):""}function xe(t){void 0===t&&(t=!0),t?(Ce({source:4,ad_Storage:"granted",analytics_Storage:"granted"}),ve()):Ce({source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function Ce(t,e){var n;void 0===t&&(t=Ie),void 0===e&&(e=5);var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Ne(t.ad_Storage,null==_e?void 0:_e.ad_Storage),analytics_Storage:Ne(t.analytics_Storage,null==_e?void 0:_e.analytics_Storage)};if(_e&&r.ad_Storage===_e.ad_Storage&&r.analytics_Storage===_e.analytics_Storage)return _e.source=r.source,ye(je(_e)),void ve();_e=r,Pe(!0);var a=je(_e);if(!a.analytics_Storage&&i.track)return i.track=!1,ze(!0),Rn(),void window.setTimeout(Dn,250);gn()&&a.analytics_Storage&&(i.track=!0,Ae(Xe(),1),qe()),ye(a),ve()}function je(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Ne(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function ze(t){void 0===t&&(t=!1),yt("_clsk","",0),t&&yt("_clck","",0)}function Pe(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(Se.length>0)for(var n=0;n<Se.length;n++){var r=Se[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(we,!i.lean,r.consentInfo?_e:void 0),r.called=!0,r.recall||(Se.splice(n,1),n--))}}(i.lean?0:1,t)}function qe(){if(we&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;yt("_clsk",[we.sessionId,t,we.pageNum,n,e].join(vt),1)}}function Ae(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&yt("_clck",[we.userId,2,n.toString(36),e,r].join(vt),365)}function De(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Re(t,e){return void 0===e&&(e=10),parseInt(t,e)}function Xe(){var t={id:De(),version:0,expiry:null,consent:0,dob:0},e=mt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=Re(n[1])),n.length>2&&(t.expiry=Re(n[2],36)),n.length>3&&1===Re(n[3])&&(t.consent=1),n.length>4&&Re(n[1])>1&&(t.dob=Re(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var He,Le=null;function Ue(){var t=we;Le={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Ge(){Le=null}function Ve(t){return Le.start=Le.start+Le.duration,Le.duration=l()-Le.start,Le.sequence++,Le.upload=t&&"sendBeacon"in navigator?1:0,Le.end=t?1:0,Le.applicationPlatform=0,Le.url=b(location.href,!1,!0),[Le.version,Le.sequence,Le.start,Le.duration,Le.projectId,Le.userId,Le.sessionId,Le.pageNum,Le.upload,Le.end,Le.applicationPlatform,Le.url]}function Ye(){He=[]}function Be(t){if(He&&-1===He.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&Le){var n={v:Le.version,p:Le.projectId,u:Le.userId,s:Le.sessionId,n:Le.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),He.push(t.message)}}return t}function We(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw Be(t)}var n=performance.now()-e;L(4,n),n>30&&(H(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var Ze=new Map;function Je(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=We(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return Ze.has(t)}(t)||Ze.set(t,[]),Ze.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function Fe(){Ze.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Ze.delete(e)}(t,e)})),Ze=new Map}var Ke=null,Qe=null,$e=null,tn=0;function en(){return!(tn++>20)}function nn(){tn=0,$e!==an()&&(Rn(),window.setTimeout(rn,250))}function rn(){Dn(),U(29,1)}function an(){return location.href?location.href.replace(location.hash,""):location.href}var on=[],un=null,cn=null,sn=null;function ln(){on=[],un=null,cn=null}function dn(){var t=on.shift();t&&(un=t,t.task().then((function(){t.id===Me()&&(t.resolve(),un=null,dn())})).catch((function(e){t.id===Me()&&(e&&(e.name,e.message,e.stack),un=null,dn())})))}var fn=!1;function pn(){fn=!0,c=s(),ln(),Fe(),Ye(),$e=an(),tn=0,Je(window,"popstate",nn),null===Ke&&(Ke=history.pushState,history.pushState=function(){Ke.apply(this,arguments),gn()&&en()&&nn()}),null===Qe&&(Qe=history.replaceState,history.replaceState=function(){Qe.apply(this,arguments),gn()&&en()&&nn()})}function hn(){$e=null,tn=0,Ye(),Fe(),ln(),c=0,fn=!1}function gn(){return fn}function vn(){Dn(),A("clarityGemX","restart")}var mn=null;function yn(){mn=null}function bn(t){mn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(mn.fetchStart),n.push(mn.connectStart),n.push(mn.connectEnd),n.push(mn.requestStart),n.push(mn.responseStart),n.push(mn.responseEnd),n.push(mn.domInteractive),n.push(mn.domComplete),n.push(mn.loadEventStart),n.push(mn.loadEventEnd),n.push(mn.redirectCount),n.push(mn.size),n.push(mn.type),n.push(mn.protocol),n.push(mn.encodedSize),n.push(mn.decodedSize),yn(),Vt(n)),[2]}))}))}(29)}var wn,Sn=0,kn=1/0,_n=0,In=0,En=[],On=new Map,Tn=function(){return Sn||0},Mn=function(){if(!En.length)return-1;var t=Math.min(En.length-1,Math.floor((Tn()-In)/50));return En[t].latency},xn=function(){In=Tn(),En.length=0,On.clear()},Cn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Sn=performance.interactionCount:t.interactionId&&(kn=Math.min(kn,t.interactionId),_n=Math.max(_n,t.interactionId),Sn=_n?(_n-kn)/7+1:0)}(t);var e=En[En.length-1],n=On.get(t.interactionId);if(n||En.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};On.set(r.id,r),En.push(r)}En.sort((function(t,e){return e.latency-t.latency})),En.length>10&&En.splice(10).forEach((function(t){return On.delete(t.id)}))}}},jn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Nn(){try{wn&&wn.disconnect(),wn=new PerformanceObserver(We(zn));for(var t=0,e=jn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&L(9,0),wn.observe({type:n,buffered:!0}))}}catch(t){}}function zn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":bn(r);break;case"resource":var a=r.name;ue(4,qn(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":H(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Cn(r),ue(37,Mn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&L(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var Pn=null;function qn(t){return Pn||(Pn=document.createElement("a")),Pn.href=t,Pn.host}var An=[P,P,P,Object.freeze({__proto__:null,start:function(){yn(),function(){navigator&&navigator.connection&&ue(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Je(window,"load",G.bind(this,Nn,0)):Nn())}()},stop:function(){wn&&wn.disconnect(),wn=null,xn(),Pn=null,yn()}}),P];function Dn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===fn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||fn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),pn(),kt(),An.forEach((function(t){return We(t.start)()})),null===t&&Un())}function Rn(){gn()&&(An.slice().reverse().forEach((function(t){return We(t.stop)()})),_t(),hn(),void 0!==Hn&&(Hn[Ln]=function(){(Hn[Ln].q=Hn[Ln].q||[]).push(arguments),"start"===arguments[0]&&Hn[Ln].q.unshift(Hn[Ln].q.pop())&&Un()}))}var Xn=Object.freeze({__proto__:null,consent:xe,consentv2:Ce,dlog:ue,event:A,hashText:x,identify:at,maxMetric:U,measure:We,metadata:Te,pause:function(){gn()&&(A("clarityGemX","pause"),null===cn&&(cn=new Promise((function(t){sn=t}))))},queue:Vt,register:z,resume:function(){gn()&&(cn&&(sn(),cn=null,null===un&&dn()),A("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),tt(this,void 0,void 0,(function(){var n,r,a;return et(this,(function(o){for(n=0,r=on;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){on[1===e?"unshift":"push"]({task:t,resolve:n,id:Me()})})),null===un&&null===cn&&dn(),[2,a]}))}))},set:rt,signal:function(t){bt=t},start:Dn,stop:Rn,time:l,upgrade:Q,version:d}),Hn=window,Ln="clarityGemX";function Un(){if(void 0!==Hn){if(Hn[Ln]&&Hn[Ln].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Hn[Ln]&&Hn[Ln].q||[];for(Hn[Ln]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return Xn[t].apply(Xn,e)},Hn[Ln].v=d;t.length>0;)Hn[Ln].apply(Hn,t.shift())}}Un()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Vt},get start(){return Gt},get stop(){return Yt},get track(){return At}}),e=Object.freeze({__proto__:null,get check(){return Qt},get compute(){return te},get data(){return Dt},get start(){return Kt},get stop(){return ee},get trigger(){return $t}}),n=Object.freeze({__proto__:null,get compute(){return ce},get data(){return ne},get log(){return ue},get reset(){return se},get start(){return oe},get stop(){return ie},get updates(){return re}}),r=Object.freeze({__proto__:null,get compute(){return be},get config(){return ge},get consent(){return ve},get data(){return le},get start(){return fe},get stop(){return pe},get trackConsentv2(){return ye}}),a=Object.freeze({__proto__:null,get callback(){return Ae},get callbacks(){return Se},get clear(){return qe},get consent(){return je},get consentv2(){return Ne},get data(){return we},get electron(){return _e},get id(){return Ce},get metadata(){return xe},get save(){return De},get shortid(){return Xe},get start(){return Oe},get stop(){return Me}}),o=Object.freeze({__proto__:null,get data(){return Ge},get envelope(){return Be},get start(){return Ve},get stop(){return Ye}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],diagnostics:!1,excludeClassNames:[],externalSession:!1,userId:null,sessionId:null};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.68";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:_(s,"▪","▫"):S(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return k(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?w(t):S(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return k(t);case"placeholder":return S(t)}break;case 4:switch(e){case"*T":case"data-":return r?w(t):S(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return _(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function b(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function w(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function S(t){return t.replace(f,"•")}function _(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function k(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var M=[];function x(){}function C(){}function j(){}function N(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:N,hashText:x,keys:M,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:j,trigger:C}),q=null;function A(t,e){mn()&&t&&"string"==typeof t&&t.length<255&&(q=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},Ft(24))}var D,R=null,X=null;function L(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function H(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(Je(t),e,n)}function V(t){return window.clearTimeout(t)}var Y=0,B=0,W=null;function Z(){W&&V(W),W=G(J,B),Y=l()}function J(){var t=l();D={gap:t-Y},Ft(25),D.gap<3e5?W=G(J,B):hn&&(A("clarityGemX","suspend"),Ln(),["mousemove","touchstart"].forEach((function(t){return Ke(document,t,yn)})),["resize","scroll","pageshow"].forEach((function(t){return Ke(window,t,yn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:Z,start:function(){B=6e4,Y=0},stop:function(){V(W),Y=0,B=0}}),K=null;function Q(t){mn()&&i.lean&&(i.lean=!1,K={key:t},Ae(),De(),i.upgrade&&i.upgrade(t),Ft(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q});function tt(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function et(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var nt=null;function rt(t,e){ot(t,"string"==typeof e?[e]:e)}function at(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),tt(this,void 0,void 0,(function(){var a,o;return et(this,(function(i){switch(i.label){case 0:return o={},[4,ct(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(_(u.substring(2),"*","*")):_(u,"*","*")),ot("userId",[(a=o).userId]),ot("userHint",[a.userHint]),ot("userType",[st(t)]),e&&(ot("sessionId",[e]),a.sessionId=e),n&&(ot("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function ot(t,e){if(mn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in nt?nt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);nt[t]=n}}function it(){Ft(34)}function ut(){nt={}}function ct(t){return tt(this,void 0,void 0,(function(){var e;return et(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function st(t){return t&&t.indexOf("@")>0?"email":"string"}var lt="CompressionStream"in window;function dt(t){return tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),lt?(e=new ReadableStream({start:function(e){return tt(this,void 0,void 0,(function(){return et(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ft(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ft(t){return tt(this,void 0,void 0,(function(){var e,n,r,a,o;return et(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function pt(t,e){try{return!!t[e]}catch(t){return!1}}function ht(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var gt=null,vt="^";function mt(t,e){var n;if(void 0===e&&(e=!1),pt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=ht(o[1]),u=i[0],c=i[1];u;)u=(n=ht(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function yt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||pt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===gt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(gt=".".concat(c[s]).concat(gt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(gt),mt(t)===e))return;gt=""}}catch(t){gt=""}document.cookie=gt?"".concat(u).concat(";").concat("domain=").concat(gt):u}}var bt=null;function wt(t){try{if(!bt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){bt(t)}))}catch(t){}}var St=[P,n,Object.freeze({__proto__:null,compute:it,get data(){return nt},identify:at,reset:ut,set:rt,start:function(){ut()},stop:function(){ut()}}),e,P,Object.freeze({__proto__:null,COOKIE_SEP:vt,getCookie:mt,setCookie:yt,start:function(){gt=null},stop:function(){gt=null}}),r,a,o,t,F,$,P];function _t(){R={},X={},L(5),St.forEach((function(t){return Je(t.start)()}))}function kt(){St.slice().reverse().forEach((function(t){return Je(t.stop)()})),R={},X={}}function It(){it(),ce(),Ft(0),te(),be()}function Et(t,e,n,r){return"href"===t&&"LINK"===r?"".concat(t,"=").concat(e):"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Ot=[],Tt=1,Mt=null;function xt(){Ot=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Mt.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Ct(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}jt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){tt(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return et(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,Vt(n);break;case 43:if((a=Ot).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Et(h,s[p][h],c,s.tag));break;case"value":n.push(y(s[p],s.tag,c))}Vt(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Ct(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function jt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Mt.has(t)?Mt.get(t):(Mt.set(t,Tt),Tt++)}(t),a=e?Mt.get(e):null,o=t.previousSibling?Mt.get(t.previousSibling):null;Ot.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Nt,zt,Pt,qt,At,Dt,Rt=0,Xt=0,Lt=null,Ht=0,Ut=!1;function Gt(){qt=!0,Rt=0,Xt=0,Ut=!1,Ht=0,Nt=[],zt=[],Pt={},At=null}function Vt(t,e){if(void 0===e&&(e=!0),qt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!Ut&&Xt+a.length>10485760&&(Ut=!0):Ut=!1,r){case 5:if(Ut)break;Rt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(Ut)break;Xt+=a.length,Nt.push(a);break;default:zt.push(a)}L(25);var o=function(){var t=!1===i.lean&&Rt>0?100:Ge.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-Ht>2*o&&(V(Lt),Lt=null),e&&null===Lt&&(25!==r&&Z(),Lt=G(Bt,o),Ht=n,Qt(Xt))}}function Yt(){V(Lt),Bt(!0),Rt=0,Xt=0,Ut=!1,Ht=0,Nt=[],zt=[],Pt={},At=null,qt=!1}function Bt(t){return void 0===t&&(t=!1),tt(this,void 0,void 0,(function(){var e,n,r,a,o,u,c,s;return et(this,(function(l){switch(l.label){case 0:return qt?(Lt=null,(e=!1===i.lean&&Xt>0&&(Xt<1048576||Ge.sequence>0))&&U(1,1),It(),n=!0===t,Ge?(r=JSON.stringify(Be(n)),a="[".concat(zt.join(),"]"),o=e?"[".concat(Nt.join(),"]"):"",n&&o.length>0&&r.length+a.length+o.length>65536&&(o=""),u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:o}),n?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,dt(u)];case 2:s=l.sent(),l.label=3;case 3:return H(2,(c=s)?c.length:u.length),Wt(u,c,Ge.sequence,n),zt=[],e&&(Nt=[],Xt=0,Rt=0,Ut=!1),[2]}}))}))}function Wt(t,e,n,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var a=i.upload,o=!1;if(r&&navigator&&navigator.sendBeacon)try{(o=navigator.sendBeacon.bind(navigator)(a,t))&&Jt(n)}catch(t){}if(!1===o){n in Pt?Pt[n].attempts++:Pt[n]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){Ze(new Error("".concat("Timeout"," : ").concat(a)))},null!==n&&(u.onreadystatechange=function(){Je(Zt)(u,n)}),u.withCredentials=!0,e?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(e)):u.send(t)}}else if(i.upload){(0,i.upload)(t),Jt(n)}}function Zt(t,e){var n=Pt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?$t(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),At={sequence:e,attempts:n.attempts,status:t.status},Ft(2),Wt(n.data,null,e)):(At={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&Ft(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":$t(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&wt(o[1]);break;case"SNAPSHOT":i.lean=!1,xt()}}}(t.responseText),0===t.status&&(Wt(n.data,null,e,!0),$t(3)),t.status>=200&&t.status<=208&&Jt(e),delete Pt[e]))}function Jt(t){1===t&&(De(),Ae())}function Ft(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),Vt(e,!1));break;case 25:e.push(D.gap),Vt(e);break;case 35:e.push(Dt.check),Vt(e,!1);break;case 3:e.push(K.key),Vt(e);break;case 2:e.push(At.sequence),e.push(At.attempts),e.push(At.status),Vt(e,!1);break;case 24:q.key&&e.push(q.key),e.push(q.value),Vt(e);break;case 34:var r=Object.keys(nt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(nt[i])}ut(),Vt(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},Vt(e,!1)}break;case 1:var p=Object.keys(re);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(re[v])}se(),Vt(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];f=parseInt(w,10);e.push(f),e.push([].concat.apply([],O[w]))}Vt(e,!1)}break;case 40:M.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),Vt(e,!1);break;case 47:e.push(le.source),e.push(le.ad_Storage),e.push(le.analytics_Storage),Vt(e,!1)}}function Kt(){Dt={check:0}}function Qt(t){if(0===Dt.check){var e=Dt.check;e=Ge.sequence>=128?1:e,e=Ge.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Dt.check&&$t(e)}}function $t(t){Dt.check=t,5!==t&&(qe(),Ln())}function te(){0!==Dt.check&&Ft(35)}function ee(){Dt=null}var ne=null,re=null,ae=!1;function oe(){ne={},re={},ae=!1}function ie(){ne={},re={},ae=!1}function ue(t,e){if(e&&(e="".concat(e),t in ne||(ne[t]=[]),ne[t].indexOf(e)<0)){if(ne[t].length>128)return void(ae||(ae=!0,$t(5)));ne[t].push(e),t in re||(re[t]=[]),re[t].push(e)}}function ce(){Ft(1)}function se(){re={},ae=!1}var le=null,de=!0;function fe(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;de=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],he)}function pe(){de=!0}function he(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState)try{var n=e.getConsentState("analytics_storage");Ne(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}catch(t){return}}function ge(t){me(t.analytics_Storage?1:0),le=t}function ve(){me(2)}function me(t){ue(36,t.toString())}function ye(t){le=t,Ft(47)}function be(){var t;if(de&&(Ft(47),de=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&he()}}var we=null,Se=[],_e=0,ke=null,Ie=!1,Ee={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Oe(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";_e=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:Xe(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=mt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-Le(n[1])<18e5&&(t.session=n[0],t.count=Le(n[2])+1,t.upgrade=Le(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=He(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;we={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,ue(0,r),ue(3,c),ue(1,b(location.href,!!_e)),ue(2,document.referrer),ue(15,function(){var t=Xe();if(i.track&&pt(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),ue(16,document.documentElement.lang),ue(17,document.dir),ue(26,"".concat(window.devicePixelRatio)),ue(28,l.dob.toString()),ue(29,l.version.toString()),ue(33,u),ue(34,a),ue(35,o),U(0,s.ts),U(1,0),U(35,_e);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(ue(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;ue(22,t.platform),ue(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){ue(24,t.name+"~"+t.version)})),ue(25,t.model),U(27,t.mobile?1:0)})):ue(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth))),null===ke&&(ke={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),Te(),ge(ze(ke)),i.externalSession||Re(l)}function Te(){if(!Ie&&"granted"===(null==ke?void 0:ke.analytics_Storage)&&"granted"===(null==ke?void 0:ke.ad_Storage)){for(var t=0,e=i.cookies;t<e.length;t++){var n=e[t],r=mt(n);r&&rt(n,r)}Ie=!0}}function Me(){we=null,Ie=!1,Se.forEach((function(t){t.called=!1}))}function xe(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;we&&(a||!1===e)&&(t(we,!i.lean,r?ke:void 0),o=!0),!n&&o||Se.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Ce(){return we?[we.userId,we.sessionId,we.pageNum].join("."):""}function je(t){void 0===t&&(t=!0),Ne(t?{source:4,ad_Storage:"granted",analytics_Storage:"granted"}:{source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function Ne(t,e){var n;if(void 0===t&&(t=Ee),void 0===e&&(e=5),mn()){var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Pe(t.ad_Storage,null==ke?void 0:ke.ad_Storage),analytics_Storage:Pe(t.analytics_Storage,null==ke?void 0:ke.analytics_Storage)};if(ke&&r.ad_Storage===ke.ad_Storage&&r.analytics_Storage===ke.analytics_Storage)return ke.source=r.source,ye(ze(ke)),void ve();ke=r,Ae(!0);var a=ze(ke);if(!a.analytics_Storage&&i.track)return i.track=!1,qe(!0),Ln(),void window.setTimeout(Xn,250);mn()&&a.analytics_Storage&&(i.track=!0,Re(He(),1),De()),Te(),ye(a),ve()}}function ze(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Pe(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function qe(t){void 0===t&&(t=!1),yt("_clsk","",0),t&&yt("_clck","",0)}function Ae(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(Se.length>0)for(var n=0;n<Se.length;n++){var r=Se[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(we,!i.lean,r.consentInfo?ke:void 0),r.called=!0,r.recall||(Se.splice(n,1),n--))}}(i.lean?0:1,t)}function De(){if(we&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;yt("_clsk",[we.sessionId,t,we.pageNum,n,e].join(vt),1)}}function Re(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&yt("_clck",[we.userId,2,n.toString(36),e,r].join(vt),365)}function Xe(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Le(t,e){return void 0===e&&(e=10),parseInt(t,e)}function He(){var t={id:Xe(),version:0,expiry:null,consent:0,dob:0},e=mt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=Le(n[1])),n.length>2&&(t.expiry=Le(n[2],36)),n.length>3&&1===Le(n[3])&&(t.consent=1),n.length>4&&Le(n[1])>1&&(t.dob=Le(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var Ue,Ge=null;function Ve(){var t=we;Ge={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Ye(){Ge=null}function Be(t){return Ge.start=Ge.start+Ge.duration,Ge.duration=l()-Ge.start,Ge.sequence++,Ge.upload=t&&"sendBeacon"in navigator?1:0,Ge.end=t?1:0,Ge.applicationPlatform=0,Ge.url=b(location.href,!1,!0),[Ge.version,Ge.sequence,Ge.start,Ge.duration,Ge.projectId,Ge.userId,Ge.sessionId,Ge.pageNum,Ge.upload,Ge.end,Ge.applicationPlatform,Ge.url]}function We(){Ue=[]}function Ze(t){if(Ue&&-1===Ue.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&Ge){var n={v:Ge.version,p:Ge.projectId,u:Ge.userId,s:Ge.sessionId,n:Ge.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),Ue.push(t.message)}}return t}function Je(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw Ze(t)}var n=performance.now()-e;H(4,n),n>30&&(L(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var Fe=new Map;function Ke(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=Je(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return Fe.has(t)}(t)||Fe.set(t,[]),Fe.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function Qe(){Fe.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Fe.delete(e)}(t,e)})),Fe=new Map}var $e=null,tn=null,en=null,nn=0;function rn(){return!(nn++>20)}function an(){nn=0,en!==un()&&(Ln(),window.setTimeout(on,250))}function on(){Xn(),U(29,1)}function un(){return location.href?location.href.replace(location.hash,""):location.href}var cn=[],sn=null,ln=null,dn=null;function fn(){cn=[],sn=null,ln=null}function pn(){var t=cn.shift();t&&(sn=t,t.task().then((function(){t.id===Ce()&&(t.resolve(),sn=null,pn())})).catch((function(e){t.id===Ce()&&(e&&(e.name,e.message,e.stack),sn=null,pn())})))}var hn=!1;function gn(){hn=!0,c=s(),fn(),Qe(),We(),function(){if(en=un(),nn=0,Ke(window,"popstate",an),null===$e)try{$e=history.pushState,history.pushState=function(){$e.apply(this,arguments),mn()&&rn()&&an()}}catch(t){$e=null}if(null===tn)try{tn=history.replaceState,history.replaceState=function(){tn.apply(this,arguments),mn()&&rn()&&an()}}catch(t){tn=null}}()}function vn(){en=null,nn=0,We(),Qe(),fn(),c=0,hn=!1}function mn(){return hn}function yn(){Xn(),A("clarityGemX","restart")}var bn=null;function wn(){bn=null}function Sn(t){bn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(bn.fetchStart),n.push(bn.connectStart),n.push(bn.connectEnd),n.push(bn.requestStart),n.push(bn.responseStart),n.push(bn.responseEnd),n.push(bn.domInteractive),n.push(bn.domComplete),n.push(bn.loadEventStart),n.push(bn.loadEventEnd),n.push(bn.redirectCount),n.push(bn.size),n.push(bn.type),n.push(bn.protocol),n.push(bn.encodedSize),n.push(bn.decodedSize),wn(),Vt(n)),[2]}))}))}(29)}var _n,kn=0,In=1/0,En=0,On=0,Tn=[],Mn=new Map,xn=function(){return kn||0},Cn=function(){if(!Tn.length)return-1;var t=Math.min(Tn.length-1,Math.floor((xn()-On)/50));return Tn[t].latency},jn=function(){On=xn(),Tn.length=0,Mn.clear()},Nn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?kn=performance.interactionCount:t.interactionId&&(In=Math.min(In,t.interactionId),En=Math.max(En,t.interactionId),kn=En?(En-In)/7+1:0)}(t);var e=Tn[Tn.length-1],n=Mn.get(t.interactionId);if(n||Tn.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Mn.set(r.id,r),Tn.push(r)}Tn.sort((function(t,e){return e.latency-t.latency})),Tn.length>10&&Tn.splice(10).forEach((function(t){return Mn.delete(t.id)}))}}},zn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Pn(){try{_n&&_n.disconnect(),_n=new PerformanceObserver(Je(qn));for(var t=0,e=zn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&H(9,0),_n.observe({type:n,buffered:!0}))}}catch(t){}}function qn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":Sn(r);break;case"resource":var a=r.name;ue(4,Dn(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":L(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Nn(r),ue(37,Cn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&H(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var An=null;function Dn(t){return An||(An=document.createElement("a")),An.href=t,An.host}var Rn=[P,P,P,Object.freeze({__proto__:null,start:function(){wn(),function(){navigator&&navigator.connection&&ue(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Ke(window,"load",G.bind(this,Pn,0)):Pn())}()},stop:function(){_n&&_n.disconnect(),_n=null,jn(),An=null,wn()}}),P];function Xn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===hn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||hn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),gn(),_t(),Rn.forEach((function(t){return Je(t.start)()})),null===t&&Vn())}function Ln(){mn()&&(Rn.slice().reverse().forEach((function(t){return Je(t.stop)()})),kt(),vn(),void 0!==Un&&(Un[Gn]=function(){(Un[Gn].q=Un[Gn].q||[]).push(arguments),"start"===arguments[0]&&Un[Gn].q.unshift(Un[Gn].q.pop())&&Vn()}))}var Hn=Object.freeze({__proto__:null,consent:je,consentv2:Ne,dlog:ue,event:A,hashText:x,identify:at,maxMetric:U,measure:Je,metadata:xe,pause:function(){mn()&&(A("clarityGemX","pause"),null===ln&&(ln=new Promise((function(t){dn=t}))))},queue:Vt,register:z,resume:function(){mn()&&(ln&&(dn(),ln=null,null===sn&&pn()),A("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),tt(this,void 0,void 0,(function(){var n,r,a;return et(this,(function(o){for(n=0,r=cn;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){cn[1===e?"unshift":"push"]({task:t,resolve:n,id:Ce()})})),null===sn&&null===ln&&pn(),[2,a]}))}))},set:rt,signal:function(t){bt=t},start:Xn,stop:Ln,time:l,upgrade:Q,version:d}),Un=window,Gn="clarityGemX";function Vn(){if(void 0!==Un){if(Un[Gn]&&Un[Gn].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Un[Gn]&&Un[Gn].q||[];for(Un[Gn]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return Hn[t].apply(Hn,e)},Un[Gn].v=d;t.length>0;)Un[Gn].apply(Un,t.shift())}}Vn()}();
|
package/package.json
CHANGED
package/src/core/config.ts
CHANGED
package/src/core/history.ts
CHANGED
|
@@ -16,26 +16,37 @@ export function start(): void {
|
|
|
16
16
|
bind(window, "popstate", compute);
|
|
17
17
|
|
|
18
18
|
// Add a proxy to history.pushState function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
pushState.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
// Wrap in try-catch to handle Safari iOS where history methods may be readonly
|
|
20
|
+
if (pushState === null) {
|
|
21
|
+
try {
|
|
22
|
+
pushState = history.pushState;
|
|
23
|
+
history.pushState = function(): void {
|
|
24
|
+
pushState.apply(this, arguments);
|
|
25
|
+
if (core.active() && check()) {
|
|
26
|
+
compute();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
} catch (e) {
|
|
30
|
+
// history.pushState is readonly in this environment (e.g., Safari iOS WKWebView)
|
|
31
|
+
pushState = null;
|
|
32
|
+
}
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
// Add a proxy to history.replaceState function
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
replaceState
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
// Wrap in try-catch to handle Safari iOS where history methods may be readonly
|
|
37
|
+
if (replaceState === null) {
|
|
38
|
+
try {
|
|
39
|
+
replaceState = history.replaceState;
|
|
40
|
+
history.replaceState = function(): void {
|
|
41
|
+
replaceState.apply(this, arguments);
|
|
42
|
+
if (core.active() && check()) {
|
|
43
|
+
compute();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
} catch (e) {
|
|
47
|
+
// history.replaceState is readonly in this environment (e.g., Safari iOS WKWebView)
|
|
48
|
+
replaceState = null;
|
|
49
|
+
}
|
|
39
50
|
}
|
|
40
51
|
}
|
|
41
52
|
|
package/src/core/scrub.ts
CHANGED
|
@@ -44,10 +44,7 @@ export function text(value: string, hint: string, privacy: Privacy, mangle: bool
|
|
|
44
44
|
case "href":
|
|
45
45
|
case "xlink:href":
|
|
46
46
|
if (privacy === Privacy.TextImage) {
|
|
47
|
-
|
|
48
|
-
return 'blob:';
|
|
49
|
-
}
|
|
50
|
-
return Data.Constant.Empty;
|
|
47
|
+
return value?.startsWith('blob:') ? 'blob:' : Data.Constant.Empty;
|
|
51
48
|
}
|
|
52
49
|
return value;
|
|
53
50
|
case "value":
|
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.8.
|
|
1
|
+
let version = "0.8.69";
|
|
2
2
|
export default version;
|
package/src/data/consent.ts
CHANGED
|
@@ -28,10 +28,15 @@ function processConsent(): void {
|
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
try {
|
|
32
|
+
const analytics_storage = ics.getConsentState(Constant.AnalyticsStorage);
|
|
33
|
+
const ad_storage = ics.getConsentState(Constant.AdStorage);
|
|
34
|
+
const consentState = getGcmConsentState({ ad_Storage: ad_storage, analytics_Storage: analytics_storage });
|
|
35
|
+
consentv2(consentState);
|
|
36
|
+
} catch {
|
|
37
|
+
// Handle GTM errors gracefully (e.g., misconfigured consent initialization)
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
function getGcmConsentState(googleConsent: GCMConsentState): ConsentState {
|
package/src/data/dimension.ts
CHANGED
package/src/data/encode.ts
CHANGED
|
@@ -13,9 +13,9 @@ import * as variable from "@src/data/variable";
|
|
|
13
13
|
import * as extract from "@src/data/extract";
|
|
14
14
|
import { queue, track } from "./upload";
|
|
15
15
|
|
|
16
|
-
export default function(event: Event): void {
|
|
16
|
+
export default function (event: Event): void {
|
|
17
17
|
const t = time();
|
|
18
|
-
let tokens: Token[] = [t, event];
|
|
18
|
+
let tokens: Token[] = [t, event];
|
|
19
19
|
switch (event) {
|
|
20
20
|
case Event.Baseline: {
|
|
21
21
|
const b = baseline.state;
|
|
@@ -140,12 +140,12 @@ export default function(event: Event): void {
|
|
|
140
140
|
}
|
|
141
141
|
tokens.push(token);
|
|
142
142
|
});
|
|
143
|
-
|
|
143
|
+
|
|
144
144
|
extract.reset();
|
|
145
145
|
queue(tokens, false);
|
|
146
146
|
break;
|
|
147
147
|
}
|
|
148
|
-
case Event.Consent:
|
|
148
|
+
case Event.Consent:
|
|
149
149
|
tokens.push(consent.data.source);
|
|
150
150
|
tokens.push(consent.data.ad_Storage);
|
|
151
151
|
tokens.push(consent.data.analytics_Storage);
|
package/src/data/metadata.ts
CHANGED
|
@@ -16,6 +16,7 @@ export let data: Metadata = null;
|
|
|
16
16
|
export let callbacks: MetadataCallbackOptions[] = [];
|
|
17
17
|
export let electron = BooleanFlag.False;
|
|
18
18
|
let consentStatus: ConsentState = null;
|
|
19
|
+
let cookiesLogged = false;
|
|
19
20
|
let defaultStatus: ConsentState = { source: ConsentSource.Default, ad_Storage: Constant.Denied, analytics_Storage: Constant.Denied };
|
|
20
21
|
|
|
21
22
|
export function start(): void {
|
|
@@ -80,12 +81,6 @@ export function start(): void {
|
|
|
80
81
|
metric.max(Metric.ColorDepth, Math.round(screen.colorDepth));
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
// Read cookies specified in configuration
|
|
84
|
-
for (let key of config.cookies) {
|
|
85
|
-
let value = getCookie(key);
|
|
86
|
-
if (value) { set(key, value); }
|
|
87
|
-
}
|
|
88
|
-
|
|
89
84
|
// Track consent config
|
|
90
85
|
// If consent status is not already set, initialize it based on project configuration. Otherwise, use the existing consent status.
|
|
91
86
|
if (consentStatus === null) {
|
|
@@ -95,6 +90,9 @@ export function start(): void {
|
|
|
95
90
|
analytics_Storage: config.track ? Constant.Granted : Constant.Denied,
|
|
96
91
|
};
|
|
97
92
|
}
|
|
93
|
+
|
|
94
|
+
logCookies();
|
|
95
|
+
|
|
98
96
|
const consent = getConsentData(consentStatus);
|
|
99
97
|
trackConsent.config(consent);
|
|
100
98
|
// Track ids using a cookie if configuration allows it, skip if using external session
|
|
@@ -114,8 +112,21 @@ function userAgentData(): void {
|
|
|
114
112
|
} else { dimension.log(Dimension.Platform, navigator.platform); }
|
|
115
113
|
}
|
|
116
114
|
|
|
115
|
+
function logCookies(): void {
|
|
116
|
+
// Only log cookies if both analytics_Storage and ad_Storage are granted, and we haven't already logged them
|
|
117
|
+
if (cookiesLogged || consentStatus?.analytics_Storage !== Constant.Granted || consentStatus?.ad_Storage !== Constant.Granted) { return; }
|
|
118
|
+
for (let key of config.cookies) {
|
|
119
|
+
let value = getCookie(key);
|
|
120
|
+
if (value) { set(key, value); }
|
|
121
|
+
}
|
|
122
|
+
cookiesLogged = true;
|
|
123
|
+
}
|
|
124
|
+
|
|
117
125
|
export function stop(): void {
|
|
118
126
|
data = null;
|
|
127
|
+
// Reset cookiesLogged so cookies are re-logged on restart. Each session generates new metadata
|
|
128
|
+
// (sessionId, pageNum), and cookie values need to be recorded in the new session's data stream.
|
|
129
|
+
cookiesLogged = false;
|
|
119
130
|
callbacks.forEach(cb => { cb.called = false; });
|
|
120
131
|
}
|
|
121
132
|
|
|
@@ -147,10 +158,12 @@ export function consent(status = true): void {
|
|
|
147
158
|
}
|
|
148
159
|
|
|
149
160
|
consentv2({ source: ConsentSource.APIv1, ad_Storage: Constant.Granted, analytics_Storage: Constant.Granted });
|
|
150
|
-
trackConsent.consent();
|
|
151
161
|
}
|
|
152
162
|
|
|
153
163
|
export function consentv2(consentState: ConsentState = defaultStatus, source: number = ConsentSource.APIv2): void {
|
|
164
|
+
// Guard against calling consent API when Clarity hasn't started (e.g., due to GPC)
|
|
165
|
+
if (!core.active()) { return; }
|
|
166
|
+
|
|
154
167
|
const updatedStatus = {
|
|
155
168
|
source: consentState.source ?? source,
|
|
156
169
|
ad_Storage: normalizeConsent(consentState.ad_Storage, consentStatus?.ad_Storage),
|
|
@@ -186,6 +199,7 @@ export function consentv2(consentState: ConsentState = defaultStatus, source: nu
|
|
|
186
199
|
save();
|
|
187
200
|
}
|
|
188
201
|
|
|
202
|
+
logCookies();
|
|
189
203
|
trackConsent.trackConsentv2(consentData);
|
|
190
204
|
trackConsent.consent();
|
|
191
205
|
}
|
package/src/insight/encode.ts
CHANGED
|
@@ -39,7 +39,7 @@ export default async function (type: Event): Promise<void> {
|
|
|
39
39
|
case "attributes":
|
|
40
40
|
for (let attr in data[key]) {
|
|
41
41
|
if (data[key][attr] !== undefined) {
|
|
42
|
-
tokens.push(attribute(attr, data[key][attr], privacy));
|
|
42
|
+
tokens.push(attribute(attr, data[key][attr], privacy, data.tag));
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
break;
|
|
@@ -56,6 +56,9 @@ export default async function (type: Event): Promise<void> {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
function attribute(key: string, value: string, privacy: Privacy): string {
|
|
59
|
+
function attribute(key: string, value: string, privacy: Privacy, tag: string): string {
|
|
60
|
+
if (key === Constant.Href && tag === Constant.LinkTag) {
|
|
61
|
+
return `${key}=${value}`;
|
|
62
|
+
}
|
|
60
63
|
return `${key}=${scrub.text(value, key.indexOf(Constant.DataAttribute) === 0 ? Constant.DataAttribute : key, privacy)}`;
|
|
61
64
|
}
|
|
@@ -7,7 +7,7 @@ import { schedule } from "@src/core/task";
|
|
|
7
7
|
import { time } from "@src/core/time";
|
|
8
8
|
import { target } from "@src/layout/target";
|
|
9
9
|
import encode from "./encode";
|
|
10
|
-
import {
|
|
10
|
+
import { MaskExcludeList } from "@src/layout/constants";
|
|
11
11
|
|
|
12
12
|
export let state: ChangeState[] = [];
|
|
13
13
|
|
|
@@ -23,10 +23,10 @@ function recompute(evt: UIEvent): void {
|
|
|
23
23
|
let element = target(evt) as HTMLInputElement;
|
|
24
24
|
if (element) {
|
|
25
25
|
let value = element.value;
|
|
26
|
-
let checksum = value && value.length >= Setting.WordLength && config.fraud &&
|
|
26
|
+
let checksum = value && value.length >= Setting.WordLength && config.fraud && MaskExcludeList.indexOf(element.type) === -1 ? hash(value, Setting.ChecksumPrecision) : Constant.Empty;
|
|
27
27
|
state.push({ time: time(evt), event: Event.Change, data: { target: target(evt), type: element.type, value, checksum } });
|
|
28
28
|
schedule(encode.bind(this, Event.Change));
|
|
29
|
-
}
|
|
29
|
+
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
export function reset(): void {
|
package/src/interaction/click.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BooleanFlag, Constant, Event, Setting } from "@clarity-types/data";
|
|
2
|
-
import { BrowsingContext, ClickState, TextInfo } from "@clarity-types/interaction";
|
|
2
|
+
import { BrowsingContext, ClickSource, ClickState, TextInfo } from "@clarity-types/interaction";
|
|
3
3
|
import { Box } from "@clarity-types/layout";
|
|
4
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
5
|
+
import config from "@src/core/config";
|
|
4
6
|
import { bind } from "@src/core/event";
|
|
5
7
|
import { schedule } from "@src/core/task";
|
|
6
8
|
import { time } from "@src/core/time";
|
|
@@ -10,6 +12,7 @@ import { target } from "@src/layout/target";
|
|
|
10
12
|
import encode from "./encode";
|
|
11
13
|
|
|
12
14
|
const UserInputTags = ["input", "textarea", "radio", "button", "canvas", "select"];
|
|
15
|
+
const VM_PATTERN = /VM\d/;
|
|
13
16
|
export let state: ClickState[] = [];
|
|
14
17
|
|
|
15
18
|
export function start(): void {
|
|
@@ -49,8 +52,9 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
49
52
|
y = Math.round(l.y + (l.h / 2));
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
let
|
|
53
|
-
let
|
|
55
|
+
let relativeCoords = computeRelativeCoordinates(t as Element, x, y, l);
|
|
56
|
+
let eX = relativeCoords.eX;
|
|
57
|
+
let eY = relativeCoords.eY;
|
|
54
58
|
|
|
55
59
|
// Check for null values before processing this event
|
|
56
60
|
if (x !== null && y !== null) {
|
|
@@ -75,6 +79,7 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
75
79
|
tag: getElementAttribute(t, "tagName").substring(0, Setting.ClickTag),
|
|
76
80
|
class: getElementAttribute(t, "className").substring(0, Setting.ClickClass),
|
|
77
81
|
id: getElementAttribute(t, "id").substring(0, Setting.ClickId),
|
|
82
|
+
source: config.diagnostics && !evt.isTrusted ? source() : ClickSource.Undefined
|
|
78
83
|
}
|
|
79
84
|
});
|
|
80
85
|
schedule(encode.bind(this, event));
|
|
@@ -132,7 +137,10 @@ function getElementAttribute(element: Node, attribute: "tagName" | "className" |
|
|
|
132
137
|
|
|
133
138
|
function layout(element: Element): Box {
|
|
134
139
|
let box: Box = null;
|
|
135
|
-
let
|
|
140
|
+
let doc = element.ownerDocument || document;
|
|
141
|
+
let de = doc.documentElement;
|
|
142
|
+
let win = doc.defaultView || window;
|
|
143
|
+
|
|
136
144
|
if (typeof element.getBoundingClientRect === "function") {
|
|
137
145
|
// getBoundingClientRect returns rectangle relative positioning to viewport
|
|
138
146
|
let rect = element.getBoundingClientRect();
|
|
@@ -142,17 +150,53 @@ function layout(element: Element): Box {
|
|
|
142
150
|
// Also: using Math.floor() instead of Math.round() because in Edge,
|
|
143
151
|
// getBoundingClientRect returns partial pixel values (e.g. 162.5px) and Chrome already
|
|
144
152
|
// floors the value (e.g. 162px). This keeps consistent behavior across browsers.
|
|
153
|
+
let scrollLeft = "pageXOffset" in win ? win.pageXOffset : de.scrollLeft;
|
|
154
|
+
let scrollTop = "pageYOffset" in win ? win.pageYOffset : de.scrollTop;
|
|
155
|
+
|
|
145
156
|
box = {
|
|
146
|
-
x: Math.floor(rect.left +
|
|
147
|
-
y: Math.floor(rect.top +
|
|
157
|
+
x: Math.floor(rect.left + scrollLeft),
|
|
158
|
+
y: Math.floor(rect.top + scrollTop),
|
|
148
159
|
w: Math.floor(rect.width),
|
|
149
160
|
h: Math.floor(rect.height)
|
|
150
161
|
};
|
|
162
|
+
|
|
163
|
+
// If this element is inside an iframe, add the iframe's offset to get parent-page coordinates
|
|
164
|
+
let frame = iframe(doc);
|
|
165
|
+
if (frame) {
|
|
166
|
+
let distance = offset(frame);
|
|
167
|
+
box.x += Math.round(distance.x);
|
|
168
|
+
box.y += Math.round(distance.y);
|
|
169
|
+
}
|
|
151
170
|
}
|
|
152
171
|
}
|
|
153
172
|
return box;
|
|
154
173
|
}
|
|
155
174
|
|
|
175
|
+
function computeRelativeCoordinates(element: Element, x: number, y: number, l: Box): { eX: number, eY: number } {
|
|
176
|
+
if (!l) return { eX: 0, eY: 0 };
|
|
177
|
+
|
|
178
|
+
let box = l;
|
|
179
|
+
let el = element;
|
|
180
|
+
|
|
181
|
+
let eX = Math.max(Math.floor(((x - box.x) / box.w) * Setting.ClickPrecision), 0);
|
|
182
|
+
let eY = Math.max(Math.floor(((y - box.y) / box.h) * Setting.ClickPrecision), 0);
|
|
183
|
+
|
|
184
|
+
// Walk up parent chain if coords exceed bounds (can happen with CSS-rendered text)
|
|
185
|
+
// Cap iterations to prevent performance issues with deeply nested DOM
|
|
186
|
+
let iterations = 0;
|
|
187
|
+
while ((eX > Setting.ClickPrecision || eY > Setting.ClickPrecision) && el.parentElement && iterations < Setting.ClickParentTraversal) {
|
|
188
|
+
el = el.parentElement;
|
|
189
|
+
iterations++;
|
|
190
|
+
box = layout(el);
|
|
191
|
+
if (!box) continue;
|
|
192
|
+
|
|
193
|
+
eX = Math.max(Math.floor(((x - box.x) / box.w) * Setting.ClickPrecision), 0);
|
|
194
|
+
eY = Math.max(Math.floor(((y - box.y) / box.h) * Setting.ClickPrecision), 0);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return { eX, eY };
|
|
198
|
+
}
|
|
199
|
+
|
|
156
200
|
function context(a: HTMLAnchorElement): BrowsingContext {
|
|
157
201
|
if (a && a.hasAttribute(Constant.Target)) {
|
|
158
202
|
switch (a.getAttribute(Constant.Target)) {
|
|
@@ -164,6 +208,29 @@ function context(a: HTMLAnchorElement): BrowsingContext {
|
|
|
164
208
|
return BrowsingContext.Self;
|
|
165
209
|
}
|
|
166
210
|
|
|
211
|
+
function source(): ClickSource {
|
|
212
|
+
source.dn = FunctionNames.ClickSource;
|
|
213
|
+
try {
|
|
214
|
+
const stack = new Error().stack || "";
|
|
215
|
+
const origin = location.origin;
|
|
216
|
+
let result = ClickSource.Unknown;
|
|
217
|
+
|
|
218
|
+
for (const line of stack.split("\n")) {
|
|
219
|
+
if (line.indexOf("://") >= 0) {
|
|
220
|
+
result = line.indexOf("extension") < 0 && line.indexOf(origin) >= 0
|
|
221
|
+
? ClickSource.FirstParty
|
|
222
|
+
: ClickSource.ThirdParty;
|
|
223
|
+
} else if (line.indexOf("eval") >= 0 || line.indexOf("Function") >= 0 || line.indexOf("<a") >= 0 || VM_PATTERN.test(line)) {
|
|
224
|
+
result = ClickSource.Eval;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return result;
|
|
229
|
+
} catch {
|
|
230
|
+
return ClickSource.Unknown;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
167
234
|
export function reset(): void {
|
|
168
235
|
state = [];
|
|
169
236
|
}
|
|
@@ -77,6 +77,7 @@ export default async function (type: Event, ts: number = null): Promise<void> {
|
|
|
77
77
|
tokens.push(entry.data.tag);
|
|
78
78
|
tokens.push(entry.data.class);
|
|
79
79
|
tokens.push(entry.data.id);
|
|
80
|
+
tokens.push(entry.data.source);
|
|
80
81
|
queue(tokens);
|
|
81
82
|
timeline.track(entry.time, entry.event, cHash, entry.data.x, entry.data.y, entry.data.reaction, entry.data.context);
|
|
82
83
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-computed arrays for better minification and performance
|
|
3
|
+
* These replace comma-separated strings that were previously split at runtime
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Pre-computed mask arrays (replaces Mask.Text.split(), etc.)
|
|
7
|
+
export const MaskTextList = ["address", "password", "contact"];
|
|
8
|
+
export const MaskDisableList = ["radio", "checkbox", "range", "button", "reset", "submit"];
|
|
9
|
+
export const MaskExcludeList = ["password", "secret", "pass", "social", "ssn", "code", "hidden"];
|
|
10
|
+
export const MaskTagsList = ["INPUT", "SELECT", "TEXTAREA"];
|
|
11
|
+
|
|
12
|
+
// Pre-computed exclude class names (replaces Constant.ExcludeClassNames.split())
|
|
13
|
+
export const ExcludeClassNamesList = ["load", "active", "fixed", "visible", "focus", "show", "collaps", "animat"];
|
package/src/layout/custom.ts
CHANGED
|
@@ -21,15 +21,20 @@ export function check(tag: string) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function start() {
|
|
24
|
-
window
|
|
25
|
-
|
|
26
|
-
window.clarityOverrides
|
|
27
|
-
window.customElements
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
// Wrap in try-catch to handle Safari iOS where window properties or customElements.define may be readonly
|
|
25
|
+
try {
|
|
26
|
+
window.clarityOverrides = window.clarityOverrides || {};
|
|
27
|
+
if (window.customElements?.define && !window.clarityOverrides.define) {
|
|
28
|
+
window.clarityOverrides.define = window.customElements.define;
|
|
29
|
+
window.customElements.define = function () {
|
|
30
|
+
if (active()) {
|
|
31
|
+
register(arguments[0]);
|
|
32
|
+
}
|
|
33
|
+
return window.clarityOverrides.define.apply(this, arguments);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
} catch (e) {
|
|
37
|
+
// customElements.define or window properties are readonly in this environment (e.g., Safari iOS WKWebView)
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
40
|
|