clarity-js 0.8.9 → 0.8.10

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.
Files changed (90) hide show
  1. package/.lintstagedrc.yml +3 -0
  2. package/biome.json +43 -0
  3. package/build/clarity.extended.js +1 -1
  4. package/build/clarity.insight.js +1 -1
  5. package/build/clarity.js +3095 -2876
  6. package/build/clarity.min.js +1 -1
  7. package/build/clarity.module.js +3095 -2876
  8. package/build/clarity.performance.js +1 -1
  9. package/package.json +17 -10
  10. package/rollup.config.ts +84 -88
  11. package/src/clarity.ts +34 -28
  12. package/src/core/config.ts +2 -2
  13. package/src/core/event.ts +36 -32
  14. package/src/core/hash.ts +5 -6
  15. package/src/core/history.ts +10 -11
  16. package/src/core/index.ts +21 -11
  17. package/src/core/measure.ts +9 -5
  18. package/src/core/report.ts +9 -5
  19. package/src/core/scrub.ts +29 -20
  20. package/src/core/task.ts +73 -45
  21. package/src/core/time.ts +3 -3
  22. package/src/core/timeout.ts +2 -2
  23. package/src/core/version.ts +1 -1
  24. package/src/data/baseline.ts +60 -55
  25. package/src/data/consent.ts +2 -2
  26. package/src/data/custom.ts +8 -13
  27. package/src/data/dimension.ts +11 -7
  28. package/src/data/encode.ts +36 -30
  29. package/src/data/envelope.ts +38 -38
  30. package/src/data/extract.ts +86 -77
  31. package/src/data/index.ts +10 -6
  32. package/src/data/limit.ts +1 -1
  33. package/src/data/metadata.ts +305 -266
  34. package/src/data/metric.ts +18 -8
  35. package/src/data/ping.ts +8 -4
  36. package/src/data/signal.ts +18 -18
  37. package/src/data/summary.ts +6 -4
  38. package/src/data/token.ts +10 -8
  39. package/src/data/upgrade.ts +7 -3
  40. package/src/data/upload.ts +100 -49
  41. package/src/data/variable.ts +27 -20
  42. package/src/diagnostic/encode.ts +2 -2
  43. package/src/diagnostic/fraud.ts +3 -4
  44. package/src/diagnostic/internal.ts +11 -5
  45. package/src/diagnostic/script.ts +12 -8
  46. package/src/global.ts +1 -1
  47. package/src/insight/blank.ts +4 -4
  48. package/src/insight/encode.ts +23 -17
  49. package/src/insight/snapshot.ts +57 -37
  50. package/src/interaction/change.ts +9 -6
  51. package/src/interaction/click.ts +34 -28
  52. package/src/interaction/clipboard.ts +2 -2
  53. package/src/interaction/encode.ts +35 -31
  54. package/src/interaction/input.ts +11 -9
  55. package/src/interaction/pointer.ts +41 -30
  56. package/src/interaction/resize.ts +5 -5
  57. package/src/interaction/scroll.ts +20 -17
  58. package/src/interaction/selection.ts +12 -8
  59. package/src/interaction/submit.ts +2 -2
  60. package/src/interaction/timeline.ts +13 -9
  61. package/src/interaction/unload.ts +1 -1
  62. package/src/interaction/visibility.ts +2 -2
  63. package/src/layout/animation.ts +47 -41
  64. package/src/layout/discover.ts +5 -5
  65. package/src/layout/document.ts +31 -19
  66. package/src/layout/dom.ts +141 -91
  67. package/src/layout/encode.ts +52 -37
  68. package/src/layout/mutation.ts +321 -318
  69. package/src/layout/node.ts +104 -81
  70. package/src/layout/offset.ts +7 -6
  71. package/src/layout/region.ts +66 -43
  72. package/src/layout/schema.ts +15 -8
  73. package/src/layout/selector.ts +47 -25
  74. package/src/layout/style.ts +45 -37
  75. package/src/layout/target.ts +14 -10
  76. package/src/layout/traverse.ts +17 -11
  77. package/src/performance/blank.ts +1 -1
  78. package/src/performance/encode.ts +4 -4
  79. package/src/performance/interaction.ts +58 -70
  80. package/src/performance/navigation.ts +2 -2
  81. package/src/performance/observer.ts +59 -26
  82. package/src/queue.ts +16 -9
  83. package/tsconfig.json +1 -1
  84. package/tslint.json +25 -32
  85. package/types/core.d.ts +13 -13
  86. package/types/data.d.ts +32 -29
  87. package/types/diagnostic.d.ts +1 -1
  88. package/types/interaction.d.ts +5 -4
  89. package/types/layout.d.ts +36 -21
  90. package/types/performance.d.ts +6 -5
@@ -1 +1 @@
1
- !function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return bt},get start(){return yt},get stop(){return wt},get track(){return dt}}),n=Object.freeze({__proto__:null,get check(){return Ot},get compute(){return xt},get data(){return pt},get start(){return Mt},get stop(){return jt},get trigger(){return Tt}}),e=Object.freeze({__proto__:null,get compute(){return Dt},get data(){return zt},get log(){return Nt},get reset(){return Rt},get start(){return Pt},get stop(){return qt},get updates(){return At}}),r=Object.freeze({__proto__:null,get callback(){return Ft},get callbacks(){return Xt},get clear(){return Gt},get consent(){return Zt},get data(){return Ut},get electron(){return Lt},get id(){return Jt},get metadata(){return Wt},get save(){return Kt},get shortid(){return tn},get start(){return Bt},get stop(){return Yt}}),o=Object.freeze({__proto__:null,get data(){return cn},get envelope(){return dn},get start(){return sn},get stop(){return ln}}),a={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};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function c(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-u),0)}var s="0.8.9";var l=255,d=!0,p=null,f=null;function h(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var o=a.drop;if(o&&o.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),u=i[0],c=i[1];r=u+"?"+c.split("&").map((function(t){return o.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,l)),r}function v(t,n,e){return function(){if(d&&null===p)try{p=new RegExp("\\p{N}","gu"),f=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){d=!1}}(),t?t.replace(f,n).replace(p,e):t}var g=[],m=null;function y(){}var b=[];function w(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:w,keys:b,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null;function E(t,n){Nn()&&t&&"string"==typeof t&&t.length<255&&(_=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},It(24))}var I,M=null,O=null;function T(t){t in M||(M[t]=0),t in O||(O[t]=0),M[t]++,O[t]++}function x(t,n){null!==n&&(t in M||(M[t]=0),t in O||(O[t]=0),M[t]+=n,O[t]+=n)}function j(t,n){null!==n&&!1===isNaN(n)&&(t in M||(M[t]=0),(n>M[t]||0===M[t])&&(O[t]=n,M[t]=n))}function z(t,n,e){return window.setTimeout(hn(t),n,e)}function A(t){return window.clearTimeout(t)}var C=0,P=0,q=null;function N(){q&&A(q),q=z(D,P),C=c()}function D(){var t=c();I={gap:t-C},It(25),I.gap<3e5?q=z(D,P):Cn&&(E("clarity","suspend"),ae(),["mousemove","touchstart"].forEach((function(t){return gn(document,t,Dn)})),["resize","scroll","pageshow"].forEach((function(t){return gn(window,t,Dn)})))}var R=Object.freeze({__proto__:null,get data(){return I},reset:N,start:function(){P=6e4,C=0},stop:function(){A(q),C=0,P=0}}),H=null;function U(t){Nn()&&a.lean&&(a.lean=!1,H={key:t},Ft(),Kt(),a.upgrade&&a.upgrade(t),It(3),a.lite)}var X=Object.freeze({__proto__:null,get data(){return H},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),H=null},stop:function(){H=null},upgrade:U});function L(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{c(r.next(t))}catch(t){a(t)}}function u(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function V(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(c){return function(u){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=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(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var B=null;function Y(t,n){J(t,"string"==typeof n?[n]:n)}function W(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),L(this,void 0,void 0,(function(){var o,a;return V(this,(function(i){switch(i.label){case 0:return a={},[4,F(t)];case 1:return a.userId=i.sent(),a.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(v(u.substring(2),"*","*")):v(u,"*","*")),J("userId",[(o=a).userId]),J("userHint",[o.userHint]),J("userType",[K(t)]),n&&(J("sessionId",[n]),o.sessionId=n),e&&(J("pageId",[e]),o.pageId=e),[2,o]}var u}))}))}function J(t,n){if(Nn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in B?B[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);B[t]=e}}function Z(){It(34)}function G(){B={}}function F(t){return L(this,void 0,void 0,(function(){var n;return V(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function $(t){return L(this,void 0,void 0,(function(){var n,e;return V(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return L(this,void 0,void 0,(function(){return V(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,tt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function tt(t){return L(this,void 0,void 0,(function(){var n,e,r,o,a;return V(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var nt=null;function et(t){try{if(!nt)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){nt(t)}))}catch(t){}}var rt=[S,e,Object.freeze({__proto__:null,compute:Z,get data(){return B},identify:W,reset:G,set:Y,start:function(){G()},stop:function(){G()}}),n,S,r,o,t,R,X,S];function ot(){M={},O={},T(5),rt.forEach((function(t){return hn(t.start)()}))}function at(){rt.slice().reverse().forEach((function(t){return hn(t.stop)()})),M={},O={}}function it(){Z(),Dt(),It(0),xt()}var ut,ct,st,lt,dt,pt,ft=0,ht=0,vt=null,gt=0,mt=!1;function yt(){lt=!0,ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null}function bt(t,n){if(void 0===n&&(n=!0),lt){var e=c(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(a.lean?!mt&&ht+o.length>10485760&&(mt=!0):mt=!1,r){case 5:if(mt)break;ft+=o.length;case 37:case 6:case 43:case 45:case 46:if(mt)break;ht+=o.length,ut.push(o);break;default:ct.push(o)}T(25);var i=function(){var t=!1===a.lean&&ft>0?100:cn.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-gt>2*i&&(A(vt),vt=null),n&&null===vt&&(25!==r&&N(),vt=z(kt,i),gt=e,Ot(ht))}}function wt(){A(vt),kt(!0),ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null,lt=!1}function kt(t){return void 0===t&&(t=!1),L(this,void 0,void 0,(function(){var n,e,r,o,i,u,c,s;return V(this,(function(l){switch(l.label){case 0:return vt=null,(n=!1===a.lean&&ht>0&&(ht<1048576||cn.sequence>0))&&j(1,1),it(),e=!0===t,r=JSON.stringify(dn(e)),o="[".concat(ct.join(),"]"),i=n?"[".concat(ut.join(),"]"):"",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:o,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,$(u)];case 2:s=l.sent(),l.label=3;case 3:return x(2,(c=s)?c.length:u.length),St(u,c,cn.sequence,e),ct=[],n&&(ut=[],ht=0,ft=0,mt=!1),[2]}}))}))}function St(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(o,t))&&Et(e)}catch(t){}if(!1===i){e in st?st[e].attempts++:st[e]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",o,!0),u.timeout=15e3,u.ontimeout=function(){fn(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(u.onreadystatechange=function(){hn(_t)(u,e)}),u.withCredentials=!0,n?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(n)):u.send(t)}}else if(a.upload){(0,a.upload)(t),Et(e)}}function _t(t,n){var e=st[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Tt(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),St(e.data,null,n)):(dt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&It(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var o=r[e],i=o&&o.length>0?o.split(/ (.*)/):[""];switch(i[0]){case"END":Tt(6);break;case"UPGRADE":U("Auto");break;case"ACTION":a.action&&i.length>1&&a.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&et(i[1])}}}(t.responseText),0===t.status&&(St(e.data,null,n,!0),Tt(3)),t.status>=200&&t.status<=208&&Et(n),delete st[n]))}function Et(t){1===t&&(Kt(),Ft())}function It(t){var n=[c(),t];switch(t){case 4:var e=g;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),bt(n,!1));break;case 25:n.push(I.gap),bt(n);break;case 35:n.push(pt.check),bt(n,!1);break;case 3:n.push(H.key),bt(n);break;case 2:n.push(dt.sequence),n.push(dt.attempts),n.push(dt.status),bt(n,!1);break;case 24:_.key&&n.push(_.key),n.push(_.value),bt(n);break;case 34:var r=Object.keys(B);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(B[i])}G(),bt(n,!1)}break;case 0:var u=Object.keys(O);if(u.length>0){for(var s=0,l=u;s<l.length;s++){var d=l[s],p=parseInt(d,10);n.push(p),n.push(Math.round(O[d]))}O={},bt(n,!1)}break;case 1:var f=Object.keys(At);if(f.length>0){for(var h=0,v=f;h<v.length;h++){var y=v[h];p=parseInt(y,10);n.push(p),n.push(At[y])}Rt(),bt(n,!1)}break;case 36:var w=Object.keys(m);if(w.length>0){for(var k=0,S=w;k<S.length;k++){var E=S[k];p=parseInt(E,10);n.push(p),n.push([].concat.apply([],m[E]))}bt(n,!1)}break;case 40:b.forEach((function(t){n.push(t);var e=[];for(var r in m[t]){var o=parseInt(r,10);e.push(o),e.push(m[t][r])}n.push(e)})),bt(n,!1)}}function Mt(){pt={check:0}}function Ot(t){if(0===pt.check){var n=pt.check;n=cn.sequence>=128?1:n,n=cn.pageNum>=128?7:n,n=c()>72e5?2:n,(n=t>10485760?2:n)!==pt.check&&Tt(n)}}function Tt(t){pt.check=t,5!==t&&(Gt(),ae())}function xt(){0!==pt.check&&It(35)}function jt(){pt=null}var zt=null,At=null,Ct=!1;function Pt(){zt={},At={},Ct=!1}function qt(){zt={},At={},Ct=!1}function Nt(t,n){if(n&&(n="".concat(n),t in zt||(zt[t]=[]),zt[t].indexOf(n)<0)){if(zt[t].length>128)return void(Ct||(Ct=!0,Tt(5)));zt[t].push(n),t in At||(At[t]=[]),At[t].push(n)}}function Dt(){It(1)}function Rt(){At={},Ct=!1}function Ht(t){Nt(36,t.toString())}var Ut=null,Xt=[],Lt=0,Vt=null;function Bt(){var t,n,e;Vt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";Lt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=rn("_clsk",!a.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-nn(e[1])<18e5&&(t.session=e[0],t.count=nn(e[2])+1,t.upgrade=nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=en(),p=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ut={projectId:p,userId:d.id,sessionId:l.session,pageNum:l.count},a.lean=a.track&&null!==l.upgrade?0===l.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&l.upload&&l.upload.length>"https://".length?l.upload:a.upload,Nt(0,r),Nt(3,c),Nt(1,h(location.href,!!Lt)),Nt(2,document.referrer),Nt(15,function(){var t=tn();if(a.track&&Qt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Nt(16,document.documentElement.lang),Nt(17,document.dir),Nt(26,"".concat(window.devicePixelRatio)),Nt(28,d.dob.toString()),Nt(29,d.version.toString()),Nt(33,u),Nt(34,o),Nt(35,i),j(0,l.ts),j(1,0),j(35,Lt),navigator&&(Nt(9,navigator.language),j(33,navigator.hardwareConcurrency),j(32,navigator.maxTouchPoints),j(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Nt(22,t.platform),Nt(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Nt(24,t.name+"~"+t.version)})),Nt(25,t.model),j(27,t.mobile?1:0)})):Nt(22,navigator.platform)),screen&&(j(14,Math.round(screen.width)),j(15,Math.round(screen.height)),j(16,Math.round(screen.colorDepth)));for(var f=0,v=a.cookies;f<v.length;f++){var g=v[f],m=rn(g);m&&Y(g,m)}!function(t){Ht(t?1:0)}(a.track),$t(d)}function Yt(){Vt=null,Ut=null,Xt.forEach((function(t){t.called=!1}))}function Wt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=a.lean?0:1,o=!1;Ut&&(r||!1===n)&&(t(Ut,!a.lean),o=!0),!e&&o||Xt.push({callback:t,wait:n,recall:e,called:o})}function Jt(){return Ut?[Ut.userId,Ut.sessionId,Ut.pageNum].join("."):""}function Zt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,an("_clsk","",-Number.MAX_VALUE),an("_clck","",-Number.MAX_VALUE),ae(),void window.setTimeout(oe,250);Nn()&&(a.track=!0,$t(en(),1),Kt(),Ht(2))}function Gt(){an("_clsk","",0)}function Ft(){!function(t){if(Xt.length>0)for(var n=0;n<Xt.length;n++){var e=Xt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ut,!a.lean),e.called=!0,e.recall||(Xt.splice(n,1),n--))}}(a.lean?0:1)}function Kt(){if(Ut&&a.track){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;an("_clsk",[Ut.sessionId,t,Ut.pageNum,e,n].join("|"),1)}}function Qt(t,n){try{return!!t[n]}catch(t){return!1}}function $t(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&an("_clck",[Ut.userId,2,e.toString(36),n,r].join("|"),365)}function tn(){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 nn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function en(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},n=rn("_clck",!a.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=nn(e[1])),e.length>2&&(t.expiry=nn(e[2],36)),e.length>3&&1===nn(e[3])&&(t.consent=1),e.length>4&&nn(e[1])>1&&(t.dob=nn(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function rn(t,n){var e;if(void 0===n&&(n=!1),Qt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=on(a[1]),u=i[0],c=i[1];u;)u=(e=on(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function on(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function an(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Qt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var i=o?"expires="+o.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Vt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(Vt=".".concat(c[s]).concat(Vt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(Vt),rn(t)===n))return;Vt=""}}catch(t){Vt=""}document.cookie=Vt?"".concat(u).concat(";").concat("domain=").concat(Vt):u}}var un,cn=null;function sn(){var t=Ut;cn={version:s,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 ln(){cn=null}function dn(t){return cn.start=cn.start+cn.duration,cn.duration=c()-cn.start,cn.sequence++,cn.upload=t&&"sendBeacon"in navigator?1:0,cn.end=t?1:0,cn.applicationPlatform=0,cn.url=h(location.href,!1,!0),[cn.version,cn.sequence,cn.start,cn.duration,cn.projectId,cn.userId,cn.sessionId,cn.pageNum,cn.upload,cn.end,cn.applicationPlatform,cn.url]}function pn(){un=[]}function fn(t){if(un&&-1===un.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:cn.version,p:cn.projectId,u:cn.userId,s:cn.sessionId,n:cn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),un.push(t.message)}}return t}function hn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw fn(t)}var e=performance.now()-n;x(4,e),e>30&&(T(7),j(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var vn=new Map;function gn(t,n,e,r,o){void 0===r&&(r=!1),void 0===o&&(o=!0),e=hn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:o}),function(t){return vn.has(t)}(t)||vn.set(t,[]),vn.get(t).push({event:n,listener:e,options:{capture:r,passive:o}})}catch(t){}}function mn(){vn.forEach((function(t,n){!function(t,n){t.forEach((function(t){try{n[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),vn.delete(n)}(t,n)})),vn=new Map}var yn=null,bn=null,wn=null,kn=0;function Sn(){return!(kn++>20)}function _n(){_n.dn=1,kn=0,wn!==In()&&(ae(),window.setTimeout(En,250))}function En(){oe(),j(29,1)}function In(){return location.href?location.href.replace(location.hash,""):location.href}var Mn=[],On=null,Tn=null,xn=null;function jn(){Tn&&(xn(),Tn=null,null===On&&An())}function zn(){Mn=[],On=null,Tn=null}function An(){var t=Mn.shift();t&&(On=t,t.task().then((function(){t.id===Jt()&&(t.resolve(),On=null,An())})).catch((function(n){t.id===Jt()&&(n&&(n.name,n.message,n.stack),On=null,An())})))}var Cn=!1;function Pn(){Cn=!0,u=performance.now()+performance.timeOrigin,zn(),mn(),pn(),wn=In(),kn=0,gn(window,"popstate",_n),null===yn&&(yn=history.pushState,history.pushState=function(){yn.apply(this,arguments),Nn()&&Sn()&&_n()}),null===bn&&(bn=history.replaceState,history.replaceState=function(){bn.apply(this,arguments),Nn()&&Sn()&&_n()})}function qn(){wn=null,kn=0,pn(),mn(),zn(),u=0,Cn=!1}function Nn(){return Cn}function Dn(){Dn.dn=2,oe(),E("clarity","restart")}var Rn=null;function Hn(){Rn=null}function Un(t){Rn={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){L(this,void 0,void 0,(function(){var n,e;return V(this,(function(r){return n=c(),e=[n,t],29===t&&(e.push(Rn.fetchStart),e.push(Rn.connectStart),e.push(Rn.connectEnd),e.push(Rn.requestStart),e.push(Rn.responseStart),e.push(Rn.responseEnd),e.push(Rn.domInteractive),e.push(Rn.domComplete),e.push(Rn.loadEventStart),e.push(Rn.loadEventEnd),e.push(Rn.redirectCount),e.push(Rn.size),e.push(Rn.type),e.push(Rn.protocol),e.push(Rn.encodedSize),e.push(Rn.decodedSize),Hn(),bt(e)),[2]}))}))}(29)}var Xn,Ln=0,Vn=1/0,Bn=0,Yn=0,Wn=[],Jn=new Map,Zn=function(){return Ln||0},Gn=function(){if(!Wn.length)return-1;var t=Math.min(Wn.length-1,Math.floor((Zn()-Yn)/50));return Wn[t].latency},Fn=function(){Yn=Zn(),Wn.length=0,Jn.clear()},Kn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Ln=performance.interactionCount:t.interactionId&&(Vn=Math.min(Vn,t.interactionId),Bn=Math.max(Bn,t.interactionId),Ln=Bn?(Bn-Vn)/7+1:0)}(t);var n=Wn[Wn.length-1],e=Jn.get(t.interactionId);if(e||Wn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Jn.set(r.id,r),Wn.push(r)}Wn.sort((function(t,n){return n.latency-t.latency})),Wn.length>10&&Wn.splice(10).forEach((function(t){return Jn.delete(t.id)}))}}},Qn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function $n(){$n.dn=26;try{Xn&&Xn.disconnect(),Xn=new PerformanceObserver(hn(te));for(var t=0,n=Qn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&x(9,0),Xn.observe({type:e,buffered:!0}))}}catch(t){}}function te(t){te.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Un(r);break;case"resource":var o=r.name;Nt(4,ne(o)),o!==a.upload&&o!==a.fallback||j(28,r.duration);break;case"longtask":T(7);break;case"first-input":n&&j(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Kn(r),Nt(37,Gn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&x(9,1e3*r.value);break;case"largest-contentful-paint":n&&j(8,r.startTime)}}}(t.getEntries())}function ne(t){var n=document.createElement("a");return n.href=t,n.host}var ee=Object.freeze({__proto__:null,start:function t(){t.dn=25,Hn(),function(){navigator&&"connection"in navigator&&Nt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?gn(window,"load",z.bind(this,$n,0)):$n())}()},stop:function(){Xn&&Xn.disconnect(),Xn=null,Fn(),Hn()}}),re=[S,S,S,ee];function oe(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"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||Cn)return!1;for(var n in t)n in a&&(a[n]=t[n])}(t),Pn(),ot(),re.forEach((function(t){return hn(t.start)()})),null===t&&se())}function ae(){Nn()&&(re.slice().reverse().forEach((function(t){return hn(t.stop)()})),at(),qn(),void 0!==ue&&(ue[ce]=function(){(ue[ce].q=ue[ce].q||[]).push(arguments),"start"===arguments[0]&&ue[ce].q.unshift(ue[ce].q.pop())&&se()}))}var ie=Object.freeze({__proto__:null,consent:Zt,event:E,hashText:w,identify:W,metadata:Wt,pause:function(){Nn()&&(E("clarity","pause"),null===Tn&&(Tn=new Promise((function(t){xn=t}))))},resume:function(){Nn()&&(jn(),E("clarity","resume"))},set:Y,signal:function(t){nt=t},start:oe,stop:ae,upgrade:U,version:s}),ue=window,ce="clarity";function se(){if(void 0!==ue){if(ue[ce]&&ue[ce].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ue[ce]&&ue[ce].q||[];for(ue[ce]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ie[t].apply(ie,n)},ue[ce].v=s;t.length>0;)ue[ce].apply(ue,t.shift())}}se()}();
1
+ !function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return bt},get start(){return yt},get stop(){return wt},get track(){return dt}}),n=Object.freeze({__proto__:null,get check(){return Tt},get compute(){return xt},get data(){return pt},get start(){return Ot},get stop(){return jt},get trigger(){return Et}}),e=Object.freeze({__proto__:null,get compute(){return Dt},get data(){return Nt},get log(){return qt},get reset(){return Rt},get start(){return Ct},get stop(){return Pt},get updates(){return zt}}),r=Object.freeze({__proto__:null,get callback(){return Gt},get callbacks(){return Xt},get clear(){return Ft},get consent(){return Zt},get data(){return Ut},get electron(){return Vt},get id(){return Jt},get metadata(){return Wt},get save(){return Kt},get shortid(){return tn},get start(){return Bt},get stop(){return Yt}}),a=Object.freeze({__proto__:null,get data(){return cn},get envelope(){return dn},get start(){return sn},get stop(){return ln}}),o={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};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=255,c=!0,s=null,l=null;function d(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),c=i[0],s=i[1];r="".concat(c,"?").concat(s.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&"))}}return e&&(r=r.substring(0,u)),r}function p(t,n,e){return function(){if(c&&null===s)try{s=/\p{N}/gu,l=/\p{L}/gu}catch(t){c=!1}}(),t?t.replace(l,n).replace(s,e):t}var f=0;function h(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-f),0)}var v="0.8.10";var g=[],m=null;function y(){}var b=[];function w(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:w,keys:b,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null;function I(t,n){qn()&&t&&"string"==typeof t&&t.length<255&&(_=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Mt(24))}var M,O=null,T=null;function E(t){t in O||(O[t]=0),t in T||(T[t]=0),O[t]++,T[t]++}function x(t,n){null!==n&&(t in O||(O[t]=0),t in T||(T[t]=0),O[t]+=n,T[t]+=n)}function j(t,n){null!==n&&!1===Number.isNaN(n)&&(t in O||(O[t]=0),(n>O[t]||0===O[t])&&(T[t]=n,O[t]=n))}function N(t,n,e){return window.setTimeout(hn(t),n,e)}function z(t){window.clearTimeout(t)}var A=0,C=0,P=null;function q(){P&&z(P),P=N(D,C),A=h()}function D(){var t=h();M={gap:t-A},Mt(25),M.gap<3e5?P=N(D,C):function(){if(An){I("clarity","suspend"),oe();for(var t=0,n=["mousemove","touchstart"];t<n.length;t++){var e=n[t];gn(document,e,Dn)}for(var r=0,a=["resize","scroll","pageshow"];r<a.length;r++){e=a[r];gn(window,e,Dn)}}}()}var R=Object.freeze({__proto__:null,get data(){return M},reset:q,start:function(){C=6e4,A=0},stop:function(){z(P),A=0,C=0}}),H=null;function U(t){qn()&&o.lean&&(o.lean=!1,H={key:t},Gt(),Kt(),o.upgrade&&o.upgrade(t),Mt(3),o.lite)}var X=Object.freeze({__proto__:null,get data(){return H},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),H=null},stop:function(){H=null},upgrade:U});function V(t,n,e,r){return new(e||(e=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 n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,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(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=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=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var B=null;function Y(t,n){J(t,"string"==typeof n?[n]:n)}function W(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),V(this,void 0,void 0,(function(){var a,o;return L(this,(function(i){switch(i.label){case 0:return o={},[4,G(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(p(u.substring(2),"*","*")):p(u,"*","*")),J("userId",[(a=o).userId]),J("userHint",[a.userHint]),J("userType",[K(t)]),n&&(J("sessionId",[n]),a.sessionId=n),e&&(J("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function J(t,n){if(qn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in B?B[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);B[t]=e}}function Z(){Mt(34)}function F(){B={}}function G(t){return V(this,void 0,void 0,(function(){var n;return L(this,(function(e){switch(e.label){case 0:return e.trys.push([0,3,,4]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return"00".concat(t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return e.sent(),[2,""];case 4:return[2]}}))}))}function K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function $(t){return V(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return V(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,tt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function tt(t){return V(this,void 0,void 0,(function(){var n,e,r,a,o;return L(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var nt=null;function et(t){try{if(!nt)return;for(var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t),e=0,r=n;e<r.length;e++){var a=r[e];nt(a)}}catch(t){}}var rt=[S,e,Object.freeze({__proto__:null,compute:Z,get data(){return B},identify:W,reset:F,set:Y,start:function(){F()},stop:function(){F()}}),n,S,r,a,t,R,X,S];function at(){O={},T={},E(5);for(var t=0,n=rt;t<n.length;t++){hn(n[t].start)()}}function ot(){for(var t=0,n=rt.slice().reverse();t<n.length;t++){hn(n[t].stop)()}O={},T={}}function it(){Z(),Dt(),Mt(0),xt()}var ut,ct,st,lt,dt,pt,ft=0,ht=0,vt=null,gt=0,mt=!1;function yt(){lt=!0,ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null}function bt(t,n){if(void 0===n&&(n=!0),lt){var e=h(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!mt&&ht+a.length>10485760&&(mt=!0):mt=!1,r){case 5:if(mt)break;ft+=a.length;case 37:case 6:case 43:case 45:case 46:if(mt)break;ht+=a.length,ut.push(a);break;default:ct.push(a)}E(25);var i=function(){var t=!1===o.lean&&ft>0?100:cn.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-gt>2*i&&(z(vt),vt=null),n&&null===vt&&(25!==r&&q(),vt=N(kt,i),gt=e,Tt(ht))}}function wt(){z(vt),kt(!0),ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null,lt=!1}function kt(t){return void 0===t&&(t=!1),V(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return L(this,(function(l){switch(l.label){case 0:return vt=null,(n=!1===o.lean&&ht>0&&(ht<1048576||cn.sequence>0))&&j(1,1),it(),e=!0===t,r=JSON.stringify(dn(e)),a="[".concat(ct.join(),"]"),i=n?"[".concat(ut.join(),"]"):"",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:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,$(u)];case 2:s=l.sent(),l.label=3;case 3:return x(2,(c=s)?c.length:u.length),St(u,c,cn.sequence,e),ct=[],n&&(ut=[],ht=0,ft=0,mt=!1),[2]}}))}))}function St(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof o.upload){var a=o.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(a,t))&&It(e)}catch(t){}if(!1===i){e in st?st[e].attempts++:st[e]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){fn(new Error("".concat("Timeout"," : ").concat(a)))},null!==e&&(u.onreadystatechange=function(){hn(_t)(u,e)}),u.withCredentials=!0,n?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(n)):u.send(t)}}else if(o.upload){(0,o.upload)(t),It(e)}}function _t(t,n){var e=st[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Et(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),St(e.data,null,n)):(dt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Mt(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":Et(6);break;case"UPGRADE":U("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&et(i[1])}}}(t.responseText),0===t.status&&(St(e.data,null,n,!0),Et(3)),t.status>=200&&t.status<=208&&It(n),delete st[n]))}function It(t){1===t&&(Kt(),Gt())}function Mt(t){var n=[h(),t];switch(t){case 4:var e=g;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),bt(n,!1));break;case 25:n.push(M.gap),bt(n);break;case 35:n.push(pt.check),bt(n,!1);break;case 3:n.push(H.key),bt(n);break;case 2:n.push(dt.sequence),n.push(dt.attempts),n.push(dt.status),bt(n,!1);break;case 24:_.key&&n.push(_.key),n.push(_.value),bt(n);break;case 34:var r=Object.keys(B);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(B[i])}F(),bt(n,!1)}break;case 0:var u=Object.keys(T);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var l=s[c],d=Number.parseInt(l,10);n.push(d),n.push(Math.round(T[l]))}T={},bt(n,!1)}break;case 1:var p=Object.keys(zt);if(p.length>0){for(var f=0,v=p;f<v.length;f++){var y=v[f];d=Number.parseInt(y,10);n.push(d),n.push(zt[y])}Rt(),bt(n,!1)}break;case 36:var w=Object.keys(m);if(w.length>0){for(var k=0,S=w;k<S.length;k++){var I=S[k];d=Number.parseInt(I,10);n.push(d),n.push([].concat.apply([],m[I]))}bt(n,!1)}break;case 40:for(var O=b,E=0,x=Array.from(O);E<x.length;E++){I=x[E];n.push(I);var j=[];for(var y in m[I]){d=Number.parseInt(y,10);j.push(d),j.push(m[I][y])}n.push(j)}bt(n,!1)}}function Ot(){pt={check:0}}function Tt(t){if(0===pt.check){var n=pt.check;n=cn.sequence>=128?1:n,n=cn.pageNum>=128?7:n,n=h()>72e5?2:n,(n=t>10485760?2:n)!==pt.check&&Et(n)}}function Et(t){pt.check=t,5!==t&&(Ft(),oe())}function xt(){0!==pt.check&&Mt(35)}function jt(){pt=null}var Nt=null,zt=null,At=!1;function Ct(){Nt={},zt={},At=!1}function Pt(){Nt={},zt={},At=!1}function qt(t,n){if(n){var e="".concat(n);if(t in Nt||(Nt[t]=[]),Nt[t].indexOf(e)<0){if(Nt[t].length>128)return void(At||(At=!0,Et(5)));Nt[t].push(e),t in zt||(zt[t]=[]),zt[t].push(e)}}}function Dt(){Mt(1)}function Rt(){zt={},At=!1}function Ht(t){qt(36,t.toString())}var Ut=null,Xt=[],Vt=0,Lt=null;function Bt(){var t,n,e;Lt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=(null===document||void 0===document?void 0:document.title)?document.title:"";Vt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=rn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-nn(e[1])<18e5&&(t.session=e[0],t.count=nn(e[2])+1,t.upgrade=nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),p=en(),f=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,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 e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ut={projectId:f,userId:p.id,sessionId:l.session,pageNum:l.count},o.lean=o.track&&null!==l.upgrade?0===l.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&l.upload&&l.upload.length>8?l.upload:o.upload,qt(0,r),qt(3,c),qt(1,d(location.href,!!Vt)),qt(2,document.referrer),qt(15,function(){var t=tn();if(o.track&&Qt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),qt(16,document.documentElement.lang),qt(17,document.dir),qt(26,"".concat(window.devicePixelRatio)),qt(28,p.dob.toString()),qt(29,p.version.toString()),qt(33,u),qt(34,a),qt(35,i),j(0,l.ts),j(1,0),j(35,Vt),navigator&&(qt(9,navigator.language),j(33,navigator.hardwareConcurrency),j(32,navigator.maxTouchPoints),j(34,Math.round(navigator.deviceMemory)),(null==(s=navigator.userAgentData)?void 0:s.getHighEntropyValues)?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){if(qt(22,t.platform),qt(23,t.platformVersion),t.brands)for(var n=0,e=t.brands;n<e.length;n++){var r=e[n];qt(24,r.name+"~"+r.version)}qt(25,t.model),j(27,t.mobile?1:0)})):qt(22,navigator.platform)),screen&&(j(14,Math.round(screen.width)),j(15,Math.round(screen.height)),j(16,Math.round(screen.colorDepth)));for(var h=0,v=o.cookies;h<v.length;h++){var g=v[h],m=rn(g);m&&Y(g,m)}!function(t){Ht(t?1:0)}(o.track),$t(p)}function Yt(){Lt=null,Ut=null;for(var t=0,n=Xt;t<n.length;t++){n[t].called=!1}}function Wt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=o.lean?0:1,a=!1;Ut&&(r||!1===n)&&(t(Ut,!o.lean),a=!0),!e&&a||Xt.push({callback:t,wait:n,recall:e,called:a})}function Jt(){return Ut?[Ut.userId,Ut.sessionId,Ut.pageNum].join("."):""}function Zt(t){if(void 0===t&&(t=!0),!t)return o.track=!1,on("_clsk","",-Number.MAX_VALUE),on("_clck","",-Number.MAX_VALUE),oe(),void window.setTimeout(ae,250);qn()&&(o.track=!0,$t(en(),1),Kt(),Ht(2))}function Ft(){on("_clsk","",0)}function Gt(){!function(t){if(Xt.length>0)for(var n=0;n<Xt.length;n++){var e=Xt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ut,!o.lean),e.called=!0,e.recall||(Xt.splice(n,1),n--))}}(o.lean?0:1)}function Kt(){if(Ut&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;on("_clsk",[Ut.sessionId,t,Ut.pageNum,e,n].join("|"),1)}}function Qt(t,n){try{return!!t[n]}catch(t){return!1}}function $t(t,n){void 0===n&&(n=null);var e=null===n?t.consent:n,r=Math.ceil((Date.now()+31536e6)/864e5),a=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(r-t.expiry)>=1||t.consent!==e||t.dob!==a)&&on("_clck",[Ut.userId,2,r.toString(36),e,a].join("|"),365)}function tn(){var t,n=Math.floor(Math.random()*Math.pow(2,32));return(null===(t=null===window||void 0===window?void 0:window.crypto)||void 0===t?void 0:t.getRandomValues)&&Uint32Array&&(n=window.crypto.getRandomValues(new Uint32Array(1))[0]),n.toString(36)}function nn(t,n){return void 0===n&&(n=10),Number.parseInt(t,n)}function en(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},n=rn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=nn(e[1])),e.length>2&&(t.expiry=nn(e[2],36)),e.length>3&&1===nn(e[3])&&(t.consent=1),e.length>4&&nn(e[1])>1&&(t.dob=nn(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function rn(t,n){var e;if(void 0===n&&(n=!1),Qt(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=an(o[1]),u=i[0],c=i[1];u;)u=(e=an(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function an(t){try{var n=decodeURIComponent(t);return[n!==t,n]}catch(t){}return[!1,t]}function on(t,n,e){if((o.track||""===n)&&((null===navigator||void 0===navigator?void 0:navigator.cookieEnabled)||Qt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Lt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(Lt=".".concat(c[s]).concat(Lt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(Lt),rn(t)===n))return;Lt=""}}catch(t){Lt=""}document.cookie=Lt?"".concat(u).concat(";").concat("domain=").concat(Lt):u}}var un,cn=null;function sn(){var t=Ut;cn={version:v,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 ln(){cn=null}function dn(t){return cn.start=cn.start+cn.duration,cn.duration=h()-cn.start,cn.sequence++,cn.upload=t&&"sendBeacon"in navigator?1:0,cn.end=t?1:0,cn.applicationPlatform=0,cn.url=d(location.href,!1,!0),[cn.version,cn.sequence,cn.start,cn.duration,cn.projectId,cn.userId,cn.sessionId,cn.pageNum,cn.upload,cn.end,cn.applicationPlatform,cn.url]}function pn(){un=[]}function fn(t){if(un&&-1===un.indexOf(t.message)){var n=o.report;if(n&&n.length>0){var e={v:cn.version,p:cn.projectId,u:cn.userId,s:cn.sessionId,n:cn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),un.push(t.message)}}return t}function hn(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=performance.now();try{t.apply(this,n)}catch(t){throw fn(t)}var a=performance.now()-r;x(4,a),a>30&&(E(7),j(6,a),"".concat(t.dn||t.name,"-").concat(a))}}var vn=new Map;function gn(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=hn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return vn.has(t)}(t)||vn.set(t,[]),vn.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function mn(){vn.forEach((function(t,n){!function(t,n){for(var e=0,r=t;e<r.length;e++){var a=r[e];try{n[i("removeEventListener")](a.event,a.listener,{capture:a.options.capture,passive:a.options.passive})}catch(t){}}vn.delete(n)}(t,n)})),vn=new Map}var yn=null,bn=null,wn=null,kn=0;function Sn(){return!(kn++>20)}function _n(){_n.dn=1,kn=0,wn!==Mn()&&(oe(),window.setTimeout(In,250))}function In(){ae(),j(29,1)}function Mn(){return location.href?location.href.replace(location.hash,""):location.href}var On=[],Tn=null,En=null,xn=null;function jn(){En&&(xn(),En=null,null===Tn&&zn())}function Nn(){On=[],Tn=null,En=null}function zn(){var t=On.shift();t&&(Tn=t,t.task().then((function(){t.id===Jt()&&(t.resolve(),Tn=null,zn())})).catch((function(n){t.id===Jt()&&(n&&(n.name,n.message,n.stack),Tn=null,zn())})))}var An=!1;function Cn(){An=!0,f=performance.now()+performance.timeOrigin,Nn(),mn(),pn(),wn=Mn(),kn=0,gn(window,"popstate",_n),null===yn&&(yn=history.pushState,history.pushState=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];yn.apply(this,t),qn()&&Sn()&&_n()}),null===bn&&(bn=history.replaceState,history.replaceState=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];bn.apply(this,t),qn()&&Sn()&&_n()})}function Pn(){wn=null,kn=0,pn(),mn(),Nn(),f=0,An=!1}function qn(){return An}function Dn(){Dn.dn=2,ae(),I("clarity","restart")}var Rn=null;function Hn(){Rn=null}function Un(t){Rn={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){V(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=h(),e=[n,t],29===t&&(e.push(Rn.fetchStart),e.push(Rn.connectStart),e.push(Rn.connectEnd),e.push(Rn.requestStart),e.push(Rn.responseStart),e.push(Rn.responseEnd),e.push(Rn.domInteractive),e.push(Rn.domComplete),e.push(Rn.loadEventStart),e.push(Rn.loadEventEnd),e.push(Rn.redirectCount),e.push(Rn.size),e.push(Rn.type),e.push(Rn.protocol),e.push(Rn.encodedSize),e.push(Rn.decodedSize),Hn(),bt(e)),[2]}))}))}(29)}var Xn,Vn=0,Ln=Number.POSITIVE_INFINITY,Bn=0,Yn=0,Wn=[],Jn=new Map,Zn=function(){return Vn||0},Fn=function(){if(!Wn.length)return-1;var t=Math.min(Wn.length-1,Math.floor((Zn()-Yn)/50));return Wn[t].latency},Gn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Vn=performance.interactionCount:t.interactionId&&(Ln=Math.min(Ln,t.interactionId),Bn=Math.max(Bn,t.interactionId),Vn=Bn?(Bn-Ln)/7+1:0)}(t);var n=Wn[Wn.length-1],e=Jn.get(t.interactionId);if(e||Wn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Jn.set(r.id,r),Wn.push(r)}if(Wn.sort((function(t,n){return n.latency-t.latency})),Wn.length>10)for(var a=0,o=Wn.splice(10);a<o.length;a++){var i=o[a];Jn.delete(i.id)}}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){Qn.dn=26;try{Xn&&Xn.disconnect(),Xn=new PerformanceObserver(hn($n));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&x(9,0),Xn.observe({type:e,buffered:!0}))}}catch(t){}}function $n(t){$n.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Un(r);break;case"resource":var a=r.name;qt(4,ne(a)),a!==o.upload&&a!==o.fallback||j(28,r.duration);break;case"longtask":E(7);break;case"first-input":n&&r.processingStart&&j(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Gn(r),qt(37,Fn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&x(9,1e3*r.value);break;case"largest-contentful-paint":n&&j(8,r.startTime)}}}(t.getEntries())}function te(){Xn&&Xn.disconnect(),Xn=null,Yn=Zn(),Wn.length=0,Jn.clear()}function ne(t){var n=document.createElement("a");return n.href=t,n.host}var ee=Object.freeze({__proto__:null,start:function t(){t.dn=25,Hn(),function(){navigator&&"connection"in navigator&&qt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?gn(window,"load",N.bind(this,Qn,0)):Qn())}()},stop:function(){te(),Hn()}}),re=[S,S,S,ee];function ae(t){if(void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&!0===navigator.globalPrivacyControl;return!1===An&&"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||An)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),Cn(),at();for(var n=0,e=re;n<e.length;n++){hn(e[n].start)()}null===t&&se()}}function oe(){if(qn()){for(var t=0,n=re.slice().reverse();t<n.length;t++){hn(n[t].stop)()}ot(),Pn(),void 0!==ue&&(ue[ce]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];ue[ce].q||(ue[ce].q=[]),ue[ce].q.push(t),"start"===t[0]&&ue[ce].q.unshift(ue[ce].q.pop())&&se()})}}var ie=Object.freeze({__proto__:null,consent:Zt,event:I,hashText:w,identify:W,metadata:Wt,pause:function(){qn()&&(I("clarity","pause"),null===En&&(En=new Promise((function(t){xn=t}))))},resume:function(){qn()&&(jn(),I("clarity","resume"))},set:Y,signal:function(t){nt=t},start:ae,stop:oe,upgrade:U,version:v}),ue=window,ce="clarity";function se(){var t;if(void 0!==ue){if(null===(t=ue[ce])||void 0===t?void 0:t.v)return console.warn("Error CL001: Multiple Clarity tags detected.");var n=ue[ce]&&ue[ce].q||[];for(ue[ce]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ie[t].apply(ie,n)},ue[ce].v=v;n.length>0;)ue[ce].apply(ue,n.shift())}}se()}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarity-js",
3
- "version": "0.8.9",
3
+ "version": "0.8.10",
4
4
  "description": "An analytics library that uses web page interactions to generate aggregated insights",
5
5
  "author": "Microsoft Corp.",
6
6
  "license": "MIT",
@@ -29,24 +29,24 @@
29
29
  "url": "https://github.com/microsoft/clarity/issues"
30
30
  },
31
31
  "devDependencies": {
32
- "@rollup/plugin-alias": "^4.0.0",
33
- "@rollup/plugin-commonjs": "^24.0.0",
34
- "@rollup/plugin-node-resolve": "^15.0.0",
35
- "@rollup/plugin-terser": "^0.4.0",
36
- "@rollup/plugin-typescript": "^11.0.0",
32
+ "@biomejs/biome": "1.9.4",
33
+ "@rollup/plugin-alias": "^5.1.1",
34
+ "@rollup/plugin-commonjs": "^28.0.3",
35
+ "@rollup/plugin-node-resolve": "^16.0.1",
36
+ "@rollup/plugin-terser": "^0.4.4",
37
+ "@rollup/plugin-typescript": "^12.1.2",
37
38
  "@types/chai": "^4.2.21",
38
39
  "@types/mocha": "^10.0.0",
39
40
  "@types/resize-observer-browser": "^0.1.6",
40
41
  "chai": "^4.2.0",
41
42
  "del-cli": "^5.0.0",
42
43
  "husky": "^8.0.0",
43
- "lint-staged": "^13.1.0",
44
+ "lint-staged": "^15.2.9",
44
45
  "mocha": "^10.2.0",
45
46
  "playwright": "^1.6.2",
46
47
  "rollup": "^3.0.0",
47
48
  "ts-mocha": "^10.0.0",
48
49
  "tslib": "^2.3.0",
49
- "tslint": "^6.1.3",
50
50
  "typescript": "^4.3.5"
51
51
  },
52
52
  "scripts": {
@@ -54,8 +54,15 @@
54
54
  "build:main": "rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
55
55
  "build:clean": "del-cli build/*",
56
56
  "test": "ts-mocha -p test/tsconfig.test.json test/stub.test.ts",
57
- "tslint": "tslint --project ./",
58
- "tslint:fix": "tslint --fix --project ./ --force"
57
+ "lint": "biome check --staged",
58
+ "lint:fix": "biome check --write --staged",
59
+ "lint:fix:unsafe": "biome check --write --unsafe --staged",
60
+ "lint:all": "biome check",
61
+ "lint:all:fix": "biome check --write",
62
+ "lint:changed": "biome check --changed",
63
+ "lint:changed:fix": "biome check --changed --write",
64
+ "lint:changed:fix:unsafe": "biome check --changed --write --unsafe",
65
+ "precommit": "lint-staged"
59
66
  },
60
67
  "husky": {
61
68
  "hooks": {
package/rollup.config.ts CHANGED
@@ -1,98 +1,94 @@
1
1
  import alias from "@rollup/plugin-alias";
2
2
  import commonjs from "@rollup/plugin-commonjs";
3
- import resolve from "@rollup/plugin-node-resolve";
3
+ import resolve from "@rollup/plugin-node-resolve";
4
4
  import terser from "@rollup/plugin-terser";
5
5
  import typescript from "@rollup/plugin-typescript";
6
- import pkg from "./package.json" assert { type: 'json' };
6
+ import pkg from "./package.json" assert { type: "json" };
7
7
  export default [
8
- {
9
- input: "src/index.ts",
10
- output: [
11
- { file: pkg.main, format: "cjs", exports: "named" },
12
- { file: pkg.module, format: "es", exports: "named" }
13
- ],
14
- plugins: [
15
- resolve(),
16
- typescript(),
17
- commonjs({ include: ["node_modules/**"] })
18
- ],
19
- onwarn(message, warn) {
20
- if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
21
- warn(message);
22
- }
23
- },
24
- {
25
- input: "src/global.ts",
26
- output: [ { file: pkg.unpkg, format: "iife", exports: "named" } ],
27
- onwarn(message, warn) {
28
- if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
29
- warn(message);
8
+ {
9
+ input: "src/index.ts",
10
+ output: [
11
+ { file: pkg.main, format: "cjs", exports: "named" },
12
+ { file: pkg.module, format: "es", exports: "named" },
13
+ ],
14
+ plugins: [resolve(), typescript(), commonjs({ include: ["node_modules/**"] })],
15
+ onwarn(message, warn) {
16
+ if (message.code === "CIRCULAR_DEPENDENCY") {
17
+ return;
18
+ }
19
+ warn(message);
20
+ },
30
21
  },
31
- plugins: [,
32
- resolve(),
33
- typescript(),
34
- terser({output: {comments: false}}),
35
- commonjs({ include: ["node_modules/**"] })
36
- ]
37
- },
38
- {
39
- input: "src/global.ts",
40
- output: [ { file: pkg.extended, format: "iife", exports: "named" } ],
41
- onwarn(message, warn) {
42
- if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
43
- warn(message);
22
+ {
23
+ input: "src/global.ts",
24
+ output: [{ file: pkg.unpkg, format: "iife", exports: "named" }],
25
+ onwarn(message, warn) {
26
+ if (message.code === "CIRCULAR_DEPENDENCY") {
27
+ return;
28
+ }
29
+ warn(message);
30
+ },
31
+ plugins: [, resolve(), typescript(), terser({ output: { comments: false } }), commonjs({ include: ["node_modules/**"] })],
44
32
  },
45
- plugins: [
46
- resolve(),
47
- typescript(),
48
- terser({output: {comments: false}}),
49
- commonjs({ include: ["node_modules/**"] })
50
- ]
51
- },
52
- {
53
- input: "src/global.ts",
54
- output: [ { file: pkg.insight, format: "iife", exports: "named" } ],
55
- onwarn(message, warn) {
56
- if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
57
- warn(message);
33
+ {
34
+ input: "src/global.ts",
35
+ output: [{ file: pkg.extended, format: "iife", exports: "named" }],
36
+ onwarn(message, warn) {
37
+ if (message.code === "CIRCULAR_DEPENDENCY") {
38
+ return;
39
+ }
40
+ warn(message);
41
+ },
42
+ plugins: [resolve(), typescript(), terser({ output: { comments: false } }), commonjs({ include: ["node_modules/**"] })],
58
43
  },
59
- plugins: [
60
- alias({
61
- entries: [
62
- { find: '@src/layout/style', replacement: '@src/insight/blank' },
63
- { find: '@src/layout/document', replacement: '@src/layout/document' },
64
- { find: '@src/layout/encode', replacement: '@src/insight/encode' },
65
- { find: /@src\/interaction\/(change|clipboard|input|pointer|selection)/, replacement: '@src/insight/blank' },
66
- { find: /@src\/layout.*/, replacement: '@src/insight/snapshot' },
67
- { find: /@src\/performance.*/, replacement: '@src/insight/blank' }
68
- ]
69
- }),
70
- resolve(),
71
- typescript(),
72
- terser({output: {comments: false}}),
73
- commonjs({ include: ["node_modules/**"] })
74
- ]
75
- },
76
- {
77
- input: "src/global.ts",
78
- output: [ { file: pkg.performance, format: "iife", exports: "named" } ],
79
- onwarn(message, warn) {
80
- if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
81
- warn(message);
44
+ {
45
+ input: "src/global.ts",
46
+ output: [{ file: pkg.insight, format: "iife", exports: "named" }],
47
+ onwarn(message, warn) {
48
+ if (message.code === "CIRCULAR_DEPENDENCY") {
49
+ return;
50
+ }
51
+ warn(message);
52
+ },
53
+ plugins: [
54
+ alias({
55
+ entries: [
56
+ { find: "@src/layout/style", replacement: "@src/insight/blank" },
57
+ { find: "@src/layout/document", replacement: "@src/layout/document" },
58
+ { find: "@src/layout/encode", replacement: "@src/insight/encode" },
59
+ { find: /@src\/interaction\/(change|clipboard|input|pointer|selection)/, replacement: "@src/insight/blank" },
60
+ { find: /@src\/layout.*/, replacement: "@src/insight/snapshot" },
61
+ { find: /@src\/performance.*/, replacement: "@src/insight/blank" },
62
+ ],
63
+ }),
64
+ resolve(),
65
+ typescript(),
66
+ terser({ output: { comments: false } }),
67
+ commonjs({ include: ["node_modules/**"] }),
68
+ ],
69
+ },
70
+ {
71
+ input: "src/global.ts",
72
+ output: [{ file: pkg.performance, format: "iife", exports: "named" }],
73
+ onwarn(message, warn) {
74
+ if (message.code === "CIRCULAR_DEPENDENCY") {
75
+ return;
76
+ }
77
+ warn(message);
78
+ },
79
+ plugins: [
80
+ alias({
81
+ entries: [
82
+ { find: /@src\/interaction.*/, replacement: "@src/performance/blank" },
83
+ { find: /@src\/layout.*/, replacement: "@src/performance/blank" },
84
+ { find: /@src\/diagnostic.*/, replacement: "@src/performance/blank" },
85
+ { find: /@src\/data\/(extract|baseline|summary)/, replacement: "@src/performance/blank" },
86
+ ],
87
+ }),
88
+ resolve(),
89
+ typescript(),
90
+ terser({ output: { comments: false } }),
91
+ commonjs({ include: ["node_modules/**"] }),
92
+ ],
82
93
  },
83
- plugins: [
84
- alias({
85
- entries: [
86
- { find: /@src\/interaction.*/, replacement: '@src/performance/blank' },
87
- { find: /@src\/layout.*/, replacement: '@src/performance/blank' },
88
- { find: /@src\/diagnostic.*/, replacement: '@src/performance/blank' },
89
- { find: /@src\/data\/(extract|baseline|summary)/, replacement: '@src/performance/blank' }
90
- ]
91
- }),
92
- resolve(),
93
- typescript(),
94
- terser({output: {comments: false}}),
95
- commonjs({ include: ["node_modules/**"] })
96
- ]
97
- }
98
94
  ];
package/src/clarity.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { Config, Module } from "@clarity-types/core";
1
+ import type { Config, Module } from "@clarity-types/core";
2
2
  import { Constant } from "@clarity-types/data";
3
- import * as queue from "@src/queue";
4
3
  import * as core from "@src/core";
5
4
  import measure from "@src/core/measure";
6
5
  import * as task from "@src/core/task";
@@ -10,6 +9,7 @@ import * as diagnostic from "@src/diagnostic";
10
9
  import * as interaction from "@src/interaction";
11
10
  import * as layout from "@src/layout";
12
11
  import * as performance from "@src/performance";
12
+ import * as queue from "@src/queue";
13
13
  export { version };
14
14
  export { consent, event, identify, set, upgrade, metadata, signal } from "@src/data";
15
15
  export { hashText } from "@src/layout";
@@ -17,17 +17,21 @@ export { hashText } from "@src/layout";
17
17
  const modules: Module[] = [diagnostic, layout, interaction, performance];
18
18
 
19
19
  export function start(config: Config = null): void {
20
- // Check that browser supports required APIs and we do not attempt to start Clarity multiple times
21
- if (core.check()) {
22
- core.config(config);
23
- core.start();
24
- data.start();
25
- modules.forEach(x => measure(x.start)());
20
+ // Check that browser supports required APIs and we do not attempt to start Clarity multiple times
21
+ if (core.check()) {
22
+ core.config(config);
23
+ core.start();
24
+ data.start();
25
+ for (const x of modules) {
26
+ measure(x.start)();
27
+ }
26
28
 
27
- // If it's an internal call to start, without explicit configuration,
28
- // re-process any newly accumulated items in the queue
29
- if (config === null) { queue.process(); }
30
- }
29
+ // If it's an internal call to start, without explicit configuration,
30
+ // re-process any newly accumulated items in the queue
31
+ if (config === null) {
32
+ queue.process();
33
+ }
34
+ }
31
35
  }
32
36
 
33
37
  // By default Clarity is asynchronous and will yield by looking for requestIdleCallback.
@@ -36,26 +40,28 @@ export function start(config: Config = null): void {
36
40
  // we do allow external clients to manually pause Clarity for that short burst of time and minimize
37
41
  // performance impact even further. For reference, we are talking single digit milliseconds optimization here, not seconds.
38
42
  export function pause(): void {
39
- if (core.active()) {
40
- data.event(Constant.Clarity, Constant.Pause);
41
- task.pause();
42
- }
43
+ if (core.active()) {
44
+ data.event(Constant.Clarity, Constant.Pause);
45
+ task.pause();
46
+ }
43
47
  }
44
48
 
45
49
  // This is how external clients can get out of pause state, and resume Clarity to continue monitoring the page
46
50
  export function resume(): void {
47
- if (core.active()) {
48
- task.resume();
49
- data.event(Constant.Clarity, Constant.Resume);
50
- }
51
+ if (core.active()) {
52
+ task.resume();
53
+ data.event(Constant.Clarity, Constant.Resume);
54
+ }
51
55
  }
52
56
 
53
57
  export function stop(): void {
54
- if (core.active()) {
55
- // Stop modules in the reverse order of their initialization and start queuing up items again
56
- modules.slice().reverse().forEach(x => measure(x.stop)());
57
- data.stop();
58
- core.stop();
59
- queue.setup();
60
- }
61
- }
58
+ if (core.active()) {
59
+ // Stop modules in the reverse order of their initialization and start queuing up items again
60
+ for (const x of modules.slice().reverse()) {
61
+ measure(x.stop)();
62
+ }
63
+ data.stop();
64
+ core.stop();
65
+ queue.setup();
66
+ }
67
+ }
@@ -1,6 +1,6 @@
1
- import { Config, Time } from "@clarity-types/core";
1
+ import { type Config, Time } from "@clarity-types/core";
2
2
 
3
- let config: Config = {
3
+ const config: Config = {
4
4
  projectId: null,
5
5
  delay: 1 * Time.Second,
6
6
  lean: false,
package/src/core/event.ts CHANGED
@@ -1,53 +1,57 @@
1
- import { BrowserEvent, Constant } from "@clarity-types/core";
1
+ import { type BrowserEvent, Constant } from "@clarity-types/core";
2
2
  import api from "./api";
3
3
  import measure from "./measure";
4
4
 
5
5
  let bindings: Map<EventTarget, BrowserEvent[]> = new Map();
6
6
 
7
- export function bind(target: EventTarget, event: string, listener: EventListener, capture: boolean = false, passive: boolean = true): void {
8
- listener = measure(listener) as EventListener;
9
- // Wrapping following lines inside try / catch to cover edge cases where we might try to access an inaccessible element.
10
- // E.g. Iframe may start off as same-origin but later turn into cross-origin, and the following lines will throw an exception.
11
- try {
12
- target[api(Constant.AddEventListener)](event, listener, { capture, passive });
13
- if (!has(target)) {
14
- bindings.set(target, []);
15
- }
7
+ export function bind(target: EventTarget, event: string, listener: EventListener, capture = false, passive = true): void {
8
+ // biome-ignore lint/style/noParameterAssign: intentionally reassigning the event listener for caller
9
+ listener = measure(listener) as EventListener;
10
+ // Wrapping following lines inside try / catch to cover edge cases where we might try to access an inaccessible element.
11
+ // E.g. Iframe may start off as same-origin but later turn into cross-origin, and the following lines will throw an exception.
12
+ try {
13
+ target[api(Constant.AddEventListener)](event, listener, { capture, passive });
14
+ if (!has(target)) {
15
+ bindings.set(target, []);
16
+ }
16
17
 
17
- bindings.get(target).push({ event, listener, options: { capture, passive } });
18
- } catch {
19
- /* do nothing */
20
- }
18
+ bindings.get(target).push({ event, listener, options: { capture, passive } });
19
+ } catch {
20
+ /* do nothing */
21
+ }
21
22
  }
22
23
 
23
24
  export function reset(): void {
24
- // Walk through existing list of bindings and remove them all
25
- bindings.forEach((bindingsPerTarget: BrowserEvent[], target: EventTarget) => {
26
- resetByTarget(bindingsPerTarget, target);
27
- });
25
+ // Walk through existing list of bindings and remove them all
26
+ bindings.forEach((bindingsPerTarget: BrowserEvent[], target: EventTarget) => {
27
+ resetByTarget(bindingsPerTarget, target);
28
+ });
28
29
 
29
- bindings = new Map();
30
+ bindings = new Map();
30
31
  }
31
32
 
32
33
  export function unbind(target: EventTarget) {
33
- if (!has(target)) {
34
- return;
35
- }
36
- resetByTarget(bindings.get(target), target);
34
+ if (!has(target)) {
35
+ return;
36
+ }
37
+ resetByTarget(bindings.get(target), target);
37
38
  }
38
39
 
39
40
  export function has(target: EventTarget): boolean {
40
- return bindings.has(target);
41
+ return bindings.has(target);
41
42
  }
42
43
 
43
44
  function resetByTarget(bindingsPerTarget: BrowserEvent[], target: EventTarget): void {
44
- bindingsPerTarget.forEach((binding) => {
45
- // Wrapping inside try / catch to avoid situations where the element may be destroyed before we get a chance to unbind
46
- try {
47
- target[api(Constant.RemoveEventListener)](binding.event, binding.listener, { capture: binding.options.capture, passive: binding.options.passive });
48
- } catch {
49
- /* do nothing */
45
+ for (const binding of bindingsPerTarget) {
46
+ // Wrapping inside try / catch to avoid situations where the element may be destroyed before we get a chance to unbind
47
+ try {
48
+ target[api(Constant.RemoveEventListener)](binding.event, binding.listener, {
49
+ capture: binding.options.capture,
50
+ passive: binding.options.passive,
51
+ });
52
+ } catch {
53
+ /* do nothing */
54
+ }
50
55
  }
51
- });
52
- bindings.delete(target);
56
+ bindings.delete(target);
53
57
  }
package/src/core/hash.ts CHANGED
@@ -1,19 +1,18 @@
1
- // tslint:disable: no-bitwise
2
- export default function(input: string, precision: number = null): string {
1
+ export default function (input: string, precision: number = null): string {
3
2
  // Code inspired from C# GetHashCode: https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/string.cs
4
3
  let hash = 0;
5
4
  let hashOne = 5381;
6
5
  let hashTwo = hashOne;
7
6
  for (let i = 0; i < input.length; i += 2) {
8
- let charOne = input.charCodeAt(i);
7
+ const charOne = input.charCodeAt(i);
9
8
  hashOne = ((hashOne << 5) + hashOne) ^ charOne;
10
9
  if (i + 1 < input.length) {
11
- let charTwo = input.charCodeAt(i + 1);
10
+ const charTwo = input.charCodeAt(i + 1);
12
11
  hashTwo = ((hashTwo << 5) + hashTwo) ^ charTwo;
13
12
  }
14
13
  }
15
14
  // Replace the magic number from C# implementation (1566083941) with a smaller prime number (11579)
16
15
  // This ensures we don't hit integer overflow and prevent collisions
17
- hash = Math.abs(hashOne + (hashTwo * 11579));
18
- return (precision ? hash % Math.pow(2, precision) : hash).toString(36);
16
+ hash = Math.abs(hashOne + hashTwo * 11579);
17
+ return (precision ? hash % 2 ** precision : hash).toString(36);
19
18
  }