UNPKG

countly-sdk-web

Version:
96 lines 103 kB
(function(va,Ja){"object"===typeof exports&&"undefined"!==typeof module?Ja(exports):"function"===typeof define&&define.amd?define(["exports"],Ja):(va="undefined"!==typeof globalThis?globalThis:va||self,Ja(va.Countly=va.Countly||{}))})(this,function(va){function Ja(m,p,v){if("function"==typeof m?m===p:m.has(p))return 3>arguments.length?p:v;throw new TypeError("Private element is not present on this object");}function b(m,p){return m.get(Ja(m,p))}function q(m,p,v){if(p.has(m))throw new TypeError("Cannot initialize the same private elements twice on an object"); p.set(m,v)}function l(m,p,v){return m.set(Ja(m,p),v),v}function w(m,p,v){a:{var a=p;if("object"==typeof a&&a){var F=a[Symbol.toPrimitive];if(void 0!==F){a=F.call(a,"string");if("object"!=typeof a)break a;throw new TypeError("@@toPrimitive must return a primitive value.");}a=String(a)}}return(p="symbol"==typeof a?a:a+"")in m?Object.defineProperty(m,p,{value:v,enumerable:!0,configurable:!0,writable:!0}):m[p]=v,m}function R(m){"@babel/helpers - typeof";return R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator? function(p){return typeof p}:function(p){return p&&"function"==typeof Symbol&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},R(m)}function bc(m){var p=[];if("undefined"!==typeof m.options)for(var v=0;v<m.options.length;v++)m.options[v].selected&&p.push(m.options[v].value);return p.join(", ")}function Db(){var m=cc("xxxxxxxx","[x]");var p=Date.now().toString();return m+p}function Eb(){return cc("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx","[xy]")}function cc(m,p){var v=(new Date).getTime(); return m.replace(new RegExp(p,"g"),function(a){var F=(v+16*Math.random())%16|0;return("x"===a?F:F&3|8).toString(16)})}function M(){return Math.floor((new Date).getTime()/1E3)}function Fb(){var m=(new Date).getTime();lb>=m?lb++:lb=m;return lb}function y(m,p,v){if(p&&Object.keys(p).length){if("undefined"!==typeof p[m])return p[m]}else if("undefined"!==typeof t[m])return t[m];return v}function Gb(m,p,v){for(var a in t.i)t.i[a].tracking_crashes&&t.i[a].recordError(m,p,v)}function Hb(m,p){var v=[],a;for(a in m)v.push(a+ "="+encodeURIComponent(m[a]));var F=v.join("&");return p?dc(F,p).then(function(c){return F+="&checksum256="+c}):Promise.resolve(F)}function Ka(m){return"string"===typeof m&&"/"===m.substring(m.length-1)?m.substring(0,m.length-1):m}function $a(m,p){for(var v={},a,F=0,c=p.length;F<c;F++)a=p[F],"undefined"!==typeof m[a]&&(v[a]=m[a]);return v}function ka(m,p,v,a,F,c){var d={};if(m){if(Object.keys(m).length>a){var g={},h=0,n;for(n in m)h<a&&(g[n]=m[n],h++);m=g}for(var k in m)a=C(k,p,F,c),g=C(m[k],v,F, c),d[a]=g}return d}function C(m,p,v,a){var F=m;"number"===typeof m&&(m=m.toString());"string"===typeof m&&m.length>p&&(F=m.substring(0,p),a(f.DEBUG,v+", Key: [ "+m+" ] is longer than accepted length. It will be truncated."));return F}function dc(m,p){m=(new TextEncoder).encode(m+p);return crypto.subtle.digest("SHA-256",m).then(function(v){return Array.from(new Uint8Array(v)).map(function(a){return a.toString(16).padStart(2,"0")}).join("")})}function D(m,p,v){A&&(null===m||"undefined"===typeof m?mb()&& console.warn("[WARNING] [Countly] add_event_listener, Can't bind ["+p+"] event to nonexisting element"):"undefined"!==typeof m.addEventListener?m.addEventListener(p,v,!1):m.attachEvent("on"+p,v))}function nb(m){return m?"undefined"!==typeof m.target?m.target:m.srcElement:window.event.srcElement}function La(m){if(m)return m;(m=navigator.userAgent)||(m=Ib());return m}function Ib(m){if(m)return m;m="";navigator.userAgentData&&(m=navigator.userAgentData.brands.map(function(p){return p.brand+":"+p.version}).join(), m+=navigator.userAgentData.mobile?" mobi ":" ",m+=navigator.userAgentData.platform);return m}function ec(m){if(!m){if(navigator.userAgentData&&navigator.userAgentData.mobile)return"phone";m=La()}m=m.toLowerCase();var p="desktop",v=/(mobi|ipod|phone|blackberry|opera mini|fennec|minimo|symbian|psp|nintendo ds|archos|skyfire|puffin|blazer|bolt|gobrowser|iris|maemo|semc|teashark|uzard)/;/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(m)? p="tablet":v.test(m)&&(p="phone");return p}function fc(m){var p=/(CountlySiteBot|nuhk|Googlebot|GoogleSecurityScanner|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver|bingbot|Google Web Preview|Mediapartners-Google|AdsBot-Google|Baiduspider|Ezooms|YahooSeeker|AltaVista|AVSearch|Mercator|Scooter|InfoSeek|Ultraseek|Lycos|Wget|YandexBot|Yandex|YaDirectFetcher|SiteBot|Exabot|AhrefsBot|MJ12bot|TurnitinBot|magpie-crawler|Nutch Crawler|CMS Crawler|rogerbot|Domnutch|ssearch_bot|XoviBot|netseer|digincore|fr-crawler|wesee|AliasIO|contxbot|PingdomBot|BingPreview|HeadlessChrome|Lighthouse)/; if(m)return p.test(m);m=p.test(La());p=p.test(Ib());return m||p}function Jb(m){"undefined"===typeof m.pageY&&"number"===typeof m.clientX&&document.documentElement&&(m.pageX=m.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,m.pageY=m.clientY+document.body.scrollTop+document.documentElement.scrollTop);return m}function ob(){var m=document;return Math.max(Math.max(m.body.scrollHeight,m.documentElement.scrollHeight),Math.max(m.body.offsetHeight,m.documentElement.offsetHeight),Math.max(m.body.clientHeight, m.documentElement.clientHeight))}function Kb(){var m=document;return Math.max(Math.max(m.body.scrollWidth,m.documentElement.scrollWidth),Math.max(m.body.offsetWidth,m.documentElement.offsetWidth),Math.max(m.body.clientWidth,m.documentElement.clientWidth))}function gc(){var m=document;return Math.min(Math.min(m.body.clientHeight,m.documentElement.clientHeight),Math.min(m.body.offsetHeight,m.documentElement.offsetHeight),window.innerHeight)}function hc(m,p,v,a,F,c){m=document.createElement(m);var d; m.setAttribute(p,v);m.setAttribute(a,F);p=function(){d||c();d=!0};c&&(m.onreadystatechange=p,m.onload=p);document.getElementsByTagName("head")[0].appendChild(m)}function ic(m,p){hc("script","type","text/javascript","src",m,p)}function pb(m,p){hc("link","rel","stylesheet","href",m,p)}function jc(){if(A){var m=document.getElementById("cly-loader");if(!m){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText= "#cly-loader {height: 4px; width: 100%; position: absolute; z-index: 99999; overflow: hidden; background-color: #fff; top:0px; left:0px;}#cly-loader:before{display: block; position: absolute; content: ''; left: -200px; width: 200px; height: 4px; background-color: #2EB52B; animation: cly-loading 2s linear infinite;}@keyframes cly-loading { from {left: -200px; width: 30%;} 50% {width: 30%;} 70% {width: 70%;} 80% { left: 50%;} 95% {left: 120%;} to {left: 100%;}}":v.appendChild(document.createTextNode("#cly-loader {height: 4px; width: 100%; position: absolute; z-index: 99999; overflow: hidden; background-color: #fff; top:0px; left:0px;}#cly-loader:before{display: block; position: absolute; content: ''; left: -200px; width: 200px; height: 4px; background-color: #2EB52B; animation: cly-loading 2s linear infinite;}@keyframes cly-loading { from {left: -200px; width: 30%;} 50% {width: 30%;} 70% {width: 70%;} 80% { left: 50%;} 95% {left: 120%;} to {left: 100%;}}")); p.appendChild(v);m=document.createElement("div");m.setAttribute("id","cly-loader");window.addEventListener("load",function(){if(t.showLoaderProtection)mb()&&console.warn("[WARNING] [Countly] showLoader, Loader is already on");else try{document.body.appendChild(m)}catch(a){mb()&&console.error("[ERROR] [Countly] showLoader, Body is not loaded for loader to append: "+a)}})}m.style.display="block"}}function mb(){return t&&t.debug&&"undefined"!==typeof console?!0:!1}function kc(){if(A){t.showLoaderProtection= !0;var m=document.getElementById("cly-loader");m&&(m.style.display="none")}}function Hc(m){var p=document.createElement("script"),v=document.createElement("script");p.async=!0;v.async=!0;p.src=t.customSourceBoomerang||lc.BOOMERANG_SRC;v.src=t.customSourceCountlyBoomerang||lc.CLY_BOOMERANG_SRC;document.getElementsByTagName("head")[0].appendChild(p);document.getElementsByTagName("head")[0].appendChild(v);var a=!1,F=!1;p.onload=function(){a=!0};v.onload=function(){F=!0};var c=0,d=setInterval(function(){c+= 50;if(a&&F||1500<=c){if(t.debug){var g="BoomerangJS loaded:["+a+"], countly_boomerang loaded:["+F+"].";a&&F?console.log("[DEBUG] "+g):console.warn("[WARNING] "+g+" Initializing without APM.")}t.init(m);clearInterval(d)}},50)}var O={NPS:"[CLY]_nps",SURVEY:"[CLY]_survey",STAR_RATING:"[CLY]_star_rating",VIEW:"[CLY]_view",ORIENTATION:"[CLY]_orientation",ACTION:"[CLY]_action"},Ic=Object.values(O),f={ERROR:"[ERROR] ",WARNING:"[WARNING] ",INFO:"[INFO] ",DEBUG:"[DEBUG] ",VERBOSE:"[VERBOSE] "},lc={BOOMERANG_SRC:"https://cdn.jsdelivr.net/npm/countly-sdk-web@latest/plugin/boomerang/boomerang.min.js", CLY_BOOMERANG_SRC:"https://cdn.jsdelivr.net/npm/countly-sdk-web@latest/plugin/boomerang/countly_boomerang.js"},Z=Object.freeze({errorCount:"cly_hc_error_count",warningCount:"cly_hc_warning_count",statusCode:"cly_hc_status_code",errorMessage:"cly_hc_error_message"}),mc=/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?::([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?::([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,A="undefined"!==typeof window,t=globalThis.Countly||{}, lb=0,ab=new WeakMap,nc=new WeakMap,Ma=new WeakMap,X=new WeakMap,bb=new WeakMap,Na=new WeakMap,Oa=new WeakMap,Pa=new WeakMap,K=new WeakMap,N=new WeakMap,P=new WeakMap,la=new WeakMap,aa=new WeakMap,ba=new WeakMap,cb=new WeakMap,wa=new WeakMap,fa=new WeakMap,db=new WeakMap,S=new WeakMap,xa=new WeakMap,ya=new WeakMap,eb=new WeakMap,Qa=new WeakMap,za=new WeakMap,ra=new WeakMap,Ra=new WeakMap,Aa=new WeakMap,sa=new WeakMap,ha=new WeakMap,Ba=new WeakMap,Sa=new WeakMap,Ta=new WeakMap,L=new WeakMap,ca=new WeakMap, ma=new WeakMap,qb=new WeakMap,na=new WeakMap,ta=new WeakMap,H=new WeakMap,Ca=new WeakMap,Da=new WeakMap,fb=new WeakMap,oa=new WeakMap,Ua=new WeakMap,ia=new WeakMap,ua=new WeakMap,pa=new WeakMap,gb=new WeakMap,I=new WeakMap,hb=new WeakMap,rb=new WeakMap,Lb=new WeakMap,Ea=new WeakMap,Va=new WeakMap,Wa=new WeakMap,Xa=new WeakMap,Ya=new WeakMap,oc=new WeakMap,Mb=new WeakMap,Y=new WeakMap,Nb=new WeakMap,da=new WeakMap,ja=new WeakMap,Ob=new WeakMap,Pb=new WeakMap,sb=new WeakMap,tb=new WeakMap,Qb=new WeakMap, Rb=new WeakMap,pc=new WeakMap,Sb=new WeakMap,qc=new WeakMap,rc=new WeakMap,ub=new WeakMap,Fa=new WeakMap,vb=new WeakMap,Tb=new WeakMap,wb=new WeakMap,sc=new WeakMap,Ub=new WeakMap,Ga=new WeakMap,Q=new WeakMap,ib=new WeakMap,tc=new WeakMap,Ha=new WeakMap,xb=new WeakMap,uc=new WeakMap,Vb=new WeakMap,jb=new WeakMap,kb=new WeakMap,yb=new WeakMap,e=new WeakMap,ea=new WeakMap,Wb=new WeakMap,Xb=new WeakMap,zb=new WeakMap,Ab=new WeakMap,Yb=new WeakMap,Bb=new WeakMap,vc=new WeakMap,Zb=new WeakMap,wc=new WeakMap, xc=new WeakMap,yc=new WeakMap,zc=new WeakMap,$b=new WeakMap,B=new WeakMap,z=new WeakMap,T=new WeakMap,Ac=new WeakMap,Bc=new WeakMap,Cc=new WeakMap,Dc=new WeakMap,qa=new WeakMap,Fc=function(m,p,v){return Object.defineProperty(m,"prototype",{writable:!1}),m}(function v(p){var a=this;if(!(this instanceof v))throw new TypeError("Cannot call a class as a function");q(this,ab,void 0);q(this,nc,void 0);q(this,Ma,void 0);q(this,X,void 0);q(this,bb,void 0);q(this,Na,void 0);q(this,Oa,void 0);q(this,Pa,void 0); q(this,K,void 0);q(this,N,void 0);q(this,P,void 0);q(this,la,void 0);q(this,aa,void 0);q(this,ba,void 0);q(this,cb,void 0);q(this,wa,void 0);q(this,fa,void 0);q(this,db,void 0);q(this,S,void 0);q(this,xa,void 0);q(this,ya,void 0);q(this,eb,void 0);q(this,Qa,void 0);q(this,za,void 0);q(this,ra,void 0);q(this,Ra,void 0);q(this,Aa,void 0);q(this,sa,void 0);q(this,ha,void 0);q(this,Ba,void 0);q(this,Sa,void 0);q(this,Ta,void 0);q(this,L,void 0);q(this,ca,void 0);q(this,ma,void 0);q(this,qb,void 0);q(this, na,void 0);q(this,ta,void 0);q(this,H,void 0);q(this,Ca,void 0);q(this,Da,void 0);q(this,fb,void 0);q(this,oa,void 0);q(this,Ua,void 0);q(this,ia,void 0);q(this,ua,void 0);q(this,pa,void 0);q(this,gb,void 0);q(this,I,void 0);q(this,hb,void 0);q(this,rb,void 0);q(this,Lb,void 0);q(this,Ea,void 0);q(this,Va,void 0);q(this,Wa,void 0);q(this,Xa,void 0);q(this,Ya,void 0);q(this,oc,function(c){a.serialize=y("serialize",c,t.serialize);a.deserialize=y("deserialize",c,t.deserialize);a.getViewName=y("getViewName", c,t.getViewName);a.getViewUrl=y("getViewUrl",c,t.getViewUrl);a.getSearchQuery=y("getSearchQuery",c,t.getSearchQuery);a.DeviceIdType=t.DeviceIdType;a.namespace=y("namespace",c,"");a.clearStoredId=y("clear_stored_id",c,!1);a.app_key=y("app_key",c,null);a.onload=y("onload",c,[]);a.utm=y("utm",c,{source:!0,medium:!0,campaign:!0,term:!0,content:!0});a.ignore_prefetch=y("ignore_prefetch",c,!0);a.rcAutoOptinAb=y("rc_automatic_optin_for_ab",c,!0);a.useExplicitRcApi=y("use_explicit_rc_api",c,!1);a.debug=y("debug", c,!1);a.test_mode=y("test_mode",c,!1);a.test_mode_eq=y("test_mode_eq",c,!1);a.metrics=y("metrics",c,{});a.headers=y("headers",c,{});a.url=Ka(y("url",c,""));a.app_version=y("app_version",c,"0.0");a.country_code=y("country_code",c,null);a.city=y("city",c,null);a.ip_address=y("ip_address",c,null);a.ignore_bots=y("ignore_bots",c,!0);a.force_post=y("force_post",c,!1);a.remote_config=y("remote_config",c,!1);a.ignore_visitor=y("ignore_visitor",c,!1);a.require_consent=y("require_consent",c,!1);a.track_domains= A?y("track_domains",c,!0):void 0;a.storage=y("storage",c,"default");a.enableOrientationTracking=A?y("enable_orientation_tracking",c,!0):void 0;a.maxKeyLength=y("max_key_length",c,128);a.maxValueSize=y("max_value_size",c,256);a.maxSegmentationValues=y("max_segmentation_values",c,100);a.maxBreadcrumbCount=y("max_breadcrumb_count",c,null);a.maxStackTraceLinesPerThread=y("max_stack_trace_lines_per_thread",c,30);a.maxStackTraceLineLength=y("max_stack_trace_line_length",c,200);a.heatmapWhitelist=y("heatmap_whitelist", c,[]);a.salt=y("salt",c,null);a.hcErrorCount=b(B,a).call(a,Z.errorCount)||0;a.hcWarningCount=b(B,a).call(a,Z.warningCount)||0;a.hcStatusCode=b(B,a).call(a,Z.statusCode)||-1;a.hcErrorMessage=b(B,a).call(a,Z.errorMessage)||"";l(Wa,a,y("content_zone_timer_interval",c,null));l(Ya,a,y("crash_filter_callback",c,null));b(Wa,a)&&l(rb,a,1E3*Math.max(b(Wa,a),15));b(sa,a)&&!a.maxBreadcrumbCount?(a.maxBreadcrumbCount=b(sa,a),b(e,a).call(a,f.WARNING,"initialize, 'maxCrashLogs' is deprecated. Use 'maxBreadcrumbCount' instead!")): b(sa,a)||a.maxBreadcrumbCount||(a.maxBreadcrumbCount=100);"cookie"===a.storage&&l(na,a,!1);a.rcAutoOptinAb||a.useExplicitRcApi||(b(e,a).call(a,f.WARNING,"initialize, Auto opting is disabled, switching to explicit RC API"),a.useExplicitRcApi=!0);Array.isArray(b(ba,a))||l(ba,a,[]);""===a.url&&(b(e,a).call(a,f.ERROR,"initialize, Please provide server URL"),a.ignore_visitor=!0);b(B,a).call(a,"cly_ignore")&&(a.ignore_visitor=!0);b(Qb,a).call(a);if(A)if(window.name&&0===window.name.indexOf("cly:"))try{a.passed_data= JSON.parse(window.name.replace("cly:",""))}catch(G){b(e,a).call(a,f.ERROR,"initialize, Could not parse name: "+window.name+", error: "+G)}else if(location.hash&&0===location.hash.indexOf("this.#cly:"))try{a.passed_data=JSON.parse(location.hash.replace("this.#cly:",""))}catch(G){b(e,a).call(a,f.ERROR,"initialize, Could not parse hash: "+location.hash+", error: "+G)}if((a.passed_data&&a.passed_data.app_key&&a.passed_data.app_key===a.app_key||a.passed_data&&!a.passed_data.app_key&&b(Ma,a))&&a.passed_data.token&& a.passed_data.purpose){a.passed_data.token!==b(B,a).call(a,"cly_old_token")&&(b(Zb,a).call(a,a.passed_data.token),b(z,a).call(a,"cly_old_token",a.passed_data.token));var d=[];Array.isArray(a.heatmapWhitelist)?(a.heatmapWhitelist.push(a.url),d=a.heatmapWhitelist.map(function(G){return Ka(G)})):d=[a.url];d.includes(a.passed_data.url)&&"heatmap"===a.passed_data.purpose&&(a.ignore_visitor=!0,jc(),ic(a.passed_data.url+"/views/heatmap.js",kc))}if(a.ignore_visitor)b(e,a).call(a,f.WARNING,"initialize, ignore_visitor:["+ a.ignore_visitor+"], this user will not be tracked");else{b(Ac,a).call(a);l(K,a,b(B,a).call(a,"cly_queue")||[]);l(N,a,b(B,a).call(a,"cly_event")||[]);l(P,a,b(B,a).call(a,"cly_remote_configs")||{});d="[CLY]_temp_id"===b(B,a).call(a,"cly_id");a.clearStoredId&&(b(B,a).call(a,"cly_id")&&!d&&(a.device_id=b(B,a).call(a,"cly_id"),b(e,a).call(a,f.DEBUG,"initialize, temporarily using the previous device ID to flush existing events"),l(H,a,b(B,a).call(a,"cly_id_type")),b(H,a)||(b(e,a).call(a,f.DEBUG,"initialize, No device ID type info from the previous session, falling back to DEVELOPER_SUPPLIED, for event flushing"), l(H,a,0)),b(Fa,a).call(a),a.device_id=void 0,l(H,a,1)),b(e,a).call(a,f.INFO,"initialize, Clearing the device ID storage"),b(T,a).call(a,"cly_id"),b(T,a).call(a,"cly_id_type"),b(T,a).call(a,"cly_session"),d=!1);"javascript_native_web"===b(ua,a)&&"25.1.0"===b(pa,a)?b(e,a).call(a,f.DEBUG,"initialize, SDK name:["+b(ua,a)+"], version:["+b(pa,a)+"]"):b(e,a).call(a,f.DEBUG,"initialize, SDK name:["+b(ua,a)+"], version:["+b(pa,a)+"], default name:[javascript_native_web] and default version:[25.1.0]");b(e, a).call(a,f.DEBUG,"initialize, app_key:["+a.app_key+"], url:["+a.url+"]");b(e,a).call(a,f.DEBUG,"initialize, device_id:["+y("device_id",c,void 0)+"]");b(e,a).call(a,f.DEBUG,"initialize, require_consent is enabled:["+a.require_consent+"]");try{b(e,a).call(a,f.DEBUG,"initialize, metric override:["+JSON.stringify(a.metrics)+"]"),b(e,a).call(a,f.DEBUG,"initialize, header override:["+JSON.stringify(a.headers)+"]"),b(e,a).call(a,f.DEBUG,"initialize, number of onload callbacks provided:["+a.onload.length+ "]"),b(e,a).call(a,f.DEBUG,"initialize, utm tags:["+JSON.stringify(a.utm)+"]"),b(ba,a)&&b(e,a).call(a,f.DEBUG,"initialize, referrers to ignore :["+JSON.stringify(b(ba,a))+"]"),b(e,a).call(a,f.DEBUG,"initialize, salt given:["+!!a.salt+"]")}catch(G){b(e,a).call(a,f.ERROR,"initialize, Could not stringify some config object values")}b(e,a).call(a,f.DEBUG,"initialize, app_version:["+a.app_version+"]");b(e,a).call(a,f.DEBUG,"initialize, provided location info; country_code:["+a.country_code+"], city:["+ a.city+"], ip_address:["+a.ip_address+"]");""!==a.namespace&&b(e,a).call(a,f.DEBUG,"initialize, namespace given:["+a.namespace+"]");a.clearStoredId&&b(e,a).call(a,f.DEBUG,"initialize, clearStoredId flag set to:["+a.clearStoredId+"]");a.ignore_prefetch&&b(e,a).call(a,f.DEBUG,"initialize, ignoring pre-fetching and pre-rendering from counting as real website visits :["+a.ignore_prefetch+"]");a.test_mode&&b(e,a).call(a,f.WARNING,"initialize, test_mode:["+a.test_mode+"], request queue won't be processed"); a.test_mode_eq&&b(e,a).call(a,f.WARNING,"initialize, test_mode_eq:["+a.test_mode_eq+"], event queue won't be processed");a.heatmapWhitelist&&b(e,a).call(a,f.DEBUG,"initialize, heatmap whitelist:["+JSON.stringify(a.heatmapWhitelist)+"], these domains will be whitelisted");"default"!==a.storage&&b(e,a).call(a,f.DEBUG,"initialize, storage is set to:["+a.storage+"]");a.ignore_bots&&b(e,a).call(a,f.DEBUG,"initialize, ignore traffic from bots :["+a.ignore_bots+"]");a.force_post&&b(e,a).call(a,f.DEBUG,"initialize, forced post method for all requests:["+ a.force_post+"]");a.remote_config&&b(e,a).call(a,f.DEBUG,"initialize, remote_config callback provided:["+!!a.remote_config+"]");"boolean"===typeof a.rcAutoOptinAb&&b(e,a).call(a,f.DEBUG,"initialize, automatic RC optin is enabled:["+a.rcAutoOptinAb+"]");a.useExplicitRcApi||b(e,a).call(a,f.WARNING,"initialize, will use legacy RC API. Consider enabling new API during init with use_explicit_rc_api flag");a.track_domains&&b(e,a).call(a,f.DEBUG,"initialize, tracking domain info:["+a.track_domains+"]"); a.enableOrientationTracking&&b(e,a).call(a,f.DEBUG,"initialize, enableOrientationTracking:["+a.enableOrientationTracking+"]");b(ha,a)||b(e,a).call(a,f.WARNING,"initialize, use_session_cookie is enabled:["+b(ha,a)+"]");b(L,a)&&b(e,a).call(a,f.DEBUG,"initialize, offline_mode:["+b(L,a)+"], user info won't be send to the servers");b(P,a)&&b(e,a).call(a,f.DEBUG,"initialize, stored remote configs:["+JSON.stringify(b(P,a))+"]");b(Wa,a)&&b(e,a).call(a,f.DEBUG,"initialize, content_zone_timer_interval:["+b(Wa, a)+"]");b(e,a).call(a,f.DEBUG,"initialize, 'getViewName' callback override provided:["+(a.getViewName!==t.getViewName)+"]");b(e,a).call(a,f.DEBUG,"initialize, 'getSearchQuery' callback override provided:["+(a.getSearchQuery!==t.getSearchQuery)+"]");128!==a.maxKeyLength&&b(e,a).call(a,f.DEBUG,"initialize, maxKeyLength set to:["+a.maxKeyLength+"] characters");256!==a.maxValueSize&&b(e,a).call(a,f.DEBUG,"initialize, maxValueSize set to:["+a.maxValueSize+"] characters");100!==a.maxSegmentationValues&& b(e,a).call(a,f.DEBUG,"initialize, maxSegmentationValues set to:["+a.maxSegmentationValues+"] key/value pairs");100!==a.maxBreadcrumbCount&&b(e,a).call(a,f.DEBUG,"initialize, maxBreadcrumbCount for custom logs set to:["+a.maxBreadcrumbCount+"] entries");30!==a.maxStackTraceLinesPerThread&&b(e,a).call(a,f.DEBUG,"initialize, maxStackTraceLinesPerThread set to:["+a.maxStackTraceLinesPerThread+"] lines");200!==a.maxStackTraceLineLength&&b(e,a).call(a,f.DEBUG,"initialize, maxStackTraceLineLength set to:["+ a.maxStackTraceLineLength+"] characters");500!==b(Oa,a)&&b(e,a).call(a,f.DEBUG,"initialize, interval for heartbeats set to:["+b(Oa,a)+"] milliseconds");1E3!==b(Pa,a)&&b(e,a).call(a,f.DEBUG,"initialize, queue_size set to:["+b(Pa,a)+"] items max");60!==b(Qa,a)&&b(e,a).call(a,f.DEBUG,"initialize, fail_timeout set to:["+b(Qa,a)+"] seconds of wait time after a failed connection to server");20!==b(za,a)&&b(e,a).call(a,f.DEBUG,"initialize, inactivity_time set to:["+b(za,a)+"] minutes to consider a user as inactive after no observable action"); 60!==b(Ra,a)&&b(e,a).call(a,f.DEBUG,"initialize, session_update set to:["+b(Ra,a)+"] seconds to check if extending a session is needed while the user is active");100!==b(Aa,a)&&b(e,a).call(a,f.DEBUG,"initialize, max_events set to:["+b(Aa,a)+"] events to send in one batch");b(sa,a)&&b(e,a).call(a,f.WARNING,"initialize, max_logs set to:["+b(sa,a)+"] breadcrumbs to store for crash logs max, deprecated ");30!==b(Ba,a)&&b(e,a).call(a,f.DEBUG,"initialize, session_cookie_timeout set to:["+b(Ba,a)+"] minutes to expire a cookies session"); var g=null,h=a.getSearchQuery(),n=!1,k={};if(h){0===h.indexOf("?")&&(h=h.substring(1));h=h.split("&");for(var r=0;r<h.length;r++){var u=h[r].split("=");"cly_id"===u[0]?b(z,a).call(a,"cly_cmp_id",u[1]):"cly_uid"===u[0]?b(z,a).call(a,"cly_cmp_uid",u[1]):"cly_device_id"===u[0]?g=u[1]:0===(u[0]+"").indexOf("utm_")&&a.utm[u[0].replace("utm_","")]&&(k[u[0].replace("utm_","")]=u[1],n=!0)}}h=y("device_id",c,void 0);"number"===typeof h&&(h=h.toString());b(B,a).call(a,"cly_id")&&!d?(a.device_id=b(B,a).call(a, "cly_id"),b(e,a).call(a,f.INFO,"initialize, Set the stored device ID"),l(H,a,b(B,a).call(a,"cly_id_type")),b(H,a)||(b(e,a).call(a,f.INFO,"initialize, No device ID type info from the previous session, falling back to DEVELOPER_SUPPLIED"),l(H,a,0)),l(L,a,!1)):null!==g?(b(e,a).call(a,f.INFO,"initialize, Device ID set by URL"),a.device_id=g,l(H,a,3),l(L,a,!1)):h?(b(e,a).call(a,f.INFO,"initialize, Device ID set by developer"),a.device_id=h,c&&Object.keys(c).length?void 0!==c.device_id&&l(H,a,0):void 0!== t.device_id&&l(H,a,0),l(L,a,!1)):b(L,a)||d?(a.device_id="[CLY]_temp_id",l(H,a,2),b(L,a)&&d?b(e,a).call(a,f.INFO,"initialize, Temp ID set, continuing offline mode from previous app session"):b(L,a)&&!d?b(e,a).call(a,f.INFO,"initialize, Temp ID set, entering offline mode"):(l(L,a,!0),b(e,a).call(a,f.INFO,"initialize, Temp ID set, enabling offline mode"))):(b(e,a).call(a,f.INFO,"initialize, Generating the device ID"),a.device_id=y("device_id",c,b(xb,a).call(a)),c&&Object.keys(c).length?void 0!==c.device_id&& l(H,a,0):void 0!==t.device_id&&l(H,a,0));b(z,a).call(a,"cly_id",a.device_id);b(z,a).call(a,"cly_id_type",b(H,a));if(n){l(ia,a,{});for(var x in a.utm)k[x]?(a.userData.set("utm_"+x,k[x]),b(ia,a)[x]=k[x]):a.userData.unset("utm_"+x);a.userData.save()}b(Tb,a).call(a);setTimeout(function(){t.noHeartBeat?b(e,a).call(a,f.WARNING,"initialize, Heartbeat disabled. This is for testing purposes only!"):b(ib,a).call(a);a.remote_config&&a.fetch_remote_config(a.remote_config)},1);A&&document.documentElement.setAttribute("data-countly-useragent", La());b(qa,a).sendInstantHCRequest();b(e,a).call(a,f.INFO,"initialize, Countly initialized")}});q(this,Mb,function(){b(ab,a)&&(clearTimeout(b(ab,a)),l(ab,a,null));l(ab,a,setTimeout(function(){for(var c={},d=0;d<t.features.length;d++)!0===b(I,a)[t.features[d]].optin?c[t.features[d]]=!0:c[t.features[d]]=!1;b(Q,a).call(a,{consent:JSON.stringify(c)});b(e,a).call(a,f.DEBUG,"Consent update request has been sent to the queue.")},1E3))});w(this,"halt",function(){b(e,a).call(a,f.WARNING,"halt, Resetting Countly"); t.i=void 0;t.q=[];t.noHeartBeat=void 0;l(Ma,a,!t.i);l(X,a,!1);l(bb,a,"/i");l(Na,a,"/o/sdk");l(Oa,a,500);l(Pa,a,1E3);l(K,a,[]);l(N,a,[]);l(P,a,{});l(la,a,[]);l(aa,a,{});l(ba,a,[]);l(cb,a,null);l(wa,a,!0);l(db,a,0);l(S,a,null);l(xa,a,0);l(ya,a,0);l(eb,a,0);l(Qa,a,60);l(za,a,20);l(ra,a,0);l(Ra,a,60);l(Aa,a,100);l(sa,a,null);l(ha,a,!0);l(Ba,a,30);l(Sa,a,!0);l(Ta,a,!1);l(L,a,!1);l(ca,a,{});l(ma,a,!0);l(qb,a,M());l(na,a,!0);l(ta,a,null);l(H,a,1);l(Ca,a,!1);l(Da,a,0);l(fb,a,!1);l(oa,a,null);l(Ua,a,null); l(ia,a,null);l(hb,a,[]);try{localStorage.setItem("cly_testLocal",!0),localStorage.removeItem("cly_testLocal"),localStorage.removeItem("cly_old_token"),localStorage.removeItem("cly_cmp_id"),localStorage.removeItem("cly_cmp_uid"),localStorage.removeItem("cly_id"),localStorage.removeItem("cly_id_type"),localStorage.removeItem("cly_queue"),localStorage.removeItem("cly_session"),localStorage.removeItem("cly_remote_configs"),localStorage.removeItem("cly_event"),localStorage.removeItem("cly_ignore"),localStorage.removeItem("cly_fb_widgets"), localStorage.removeItem("cly_token"),localStorage.removeItem("cly_hc_error_count"),localStorage.removeItem("cly_hc_warning_count"),localStorage.removeItem("cly_hc_status_code"),localStorage.removeItem("cly_hc_error_message")}catch(d){b(e,a).call(a,f.ERROR,"halt, Local storage test failed, will fallback to cookies"),l(na,a,!1)}t.features="sessions events views scrolls clicks forms crashes attribution users star-rating location apm feedback remote-config".split(" ");l(I,a,{});for(var c=0;c<t.features.length;c++)b(I, a)[t.features[c]]={};a.app_key=void 0;a.device_id=void 0;a.onload=void 0;a.utm=void 0;a.ignore_prefetch=void 0;a.debug=void 0;a.test_mode=void 0;a.test_mode_eq=void 0;a.metrics=void 0;a.headers=void 0;a.url=void 0;a.app_version=void 0;a.country_code=void 0;a.city=void 0;a.ip_address=void 0;a.ignore_bots=void 0;a.force_post=void 0;a.rcAutoOptinAb=void 0;a.useExplicitRcApi=void 0;a.remote_config=void 0;a.ignore_visitor=void 0;a.require_consent=void 0;a.track_domains=void 0;a.storage=void 0;a.enableOrientationTracking= void 0;a.salt=void 0;a.maxKeyLength=void 0;a.maxValueSize=void 0;a.maxSegmentationValues=void 0;a.maxBreadcrumbCount=void 0;a.maxStackTraceLinesPerThread=void 0;a.maxStackTraceLineLength=void 0});w(this,"group_features",function(c){b(e,a).call(a,f.INFO,"group_features, Grouping features");if(c)for(var d in c)b(I,a)[d]?b(e,a).call(a,f.WARNING,"group_features, Feature name ["+d+"] is already reserved"):"string"===typeof c[d]?b(I,a)[d]={features:[c[d]]}:c[d]&&Array.isArray(c[d])&&c[d].length?b(I,a)[d]= {features:c[d]}:b(e,a).call(a,f.ERROR,"group_features, Incorrect feature list for ["+d+"] value: ["+c[d]+"]");else b(e,a).call(a,f.ERROR,"group_features, Incorrect features:["+c+"]")});w(this,"check_consent",function(c){b(e,a).call(a,f.INFO,"check_consent, Checking if consent is given for specific feature:["+c+"]");if(!a.require_consent)return b(e,a).call(a,f.INFO,"check_consent, require_consent is off, no consent is necessary"),!0;if(b(I,a)[c])return!(!b(I,a)[c]||!b(I,a)[c].optin);b(e,a).call(a, f.ERROR,"check_consent, No feature available for ["+c+"]");return!1});w(this,"get_device_id_type",function(){b(e,a).call(a,f.INFO,"check_device_id_type, Retrieving the current device id type.["+b(H,a)+"]");switch(b(H,a)){case 1:var c=a.DeviceIdType.SDK_GENERATED;break;case 3:case 0:c=a.DeviceIdType.DEVELOPER_SUPPLIED;break;case 2:c=a.DeviceIdType.TEMPORARY_ID;break;default:c=-1}return c});w(this,"get_device_id",function(){b(e,a).call(a,f.INFO,"get_device_id, Retrieving the device id: ["+a.device_id+ "]");return a.device_id});w(this,"check_any_consent",function(){b(e,a).call(a,f.INFO,"check_any_consent, Checking if any consent is given");if(!a.require_consent)return b(e,a).call(a,f.INFO,"check_any_consent, require_consent is off, no consent is necessary"),!0;for(var c in b(I,a))if(b(I,a)[c]&&b(I,a)[c].optin)return!0;b(e,a).call(a,f.INFO,"check_any_consent, No consents given");return!1});w(this,"add_consent",function(c){b(e,a).call(a,f.INFO,"add_consent, Adding consent for ["+c+"]");if(Array.isArray(c))for(var d= 0;d<c.length;d++)a.add_consent(c[d]);else b(I,a)[c]?b(I,a)[c].features?(b(I,a)[c].optin=!0,a.add_consent(b(I,a)[c].features)):!0!==b(I,a)[c].optin&&(b(I,a)[c].optin=!0,b(Mb,a).call(a),setTimeout(function(){"sessions"===c&&b(ca,a).begin_session?(a.begin_session.apply(a,b(ca,a).begin_session),b(ca,a).begin_session=null):"views"===c&&b(ca,a).track_pageview&&(l(S,a,null),a.track_pageview.apply(a,b(ca,a).track_pageview),b(ca,a).track_pageview=null)},1)):b(e,a).call(a,f.ERROR,"add_consent, No feature available for ["+ c+"]")});w(this,"remove_consent",function(c){b(e,a).call(a,f.INFO,"remove_consent, Removing consent for ["+c+"]");a.remove_consent_internal(c,!0)});w(this,"remove_consent_internal",function(c,d){d=d||!1;if(Array.isArray(c))for(var g=0;g<c.length;g++)a.remove_consent_internal(c[g],d);else b(I,a)[c]?b(I,a)[c].features?a.remove_consent_internal(b(I,a)[c].features,d):(b(I,a)[c].optin=!1,d&&!1!==b(I,a)[c].optin&&b(Mb,a).call(a)):b(e,a).call(a,f.WARNING,"remove_consent, No feature available for ["+c+"]")}); w(this,"enable_offline_mode",function(){b(L,a)?b(e,a).call(a,f.WARNING,"enable_offline_mode, Countly is already in offline mode."):(b(e,a).call(a,f.INFO,"enable_offline_mode, Enabling offline mode"),a.remove_consent_internal(t.features,!1),l(L,a,!0),a.device_id="[CLY]_temp_id",l(H,a,2))});w(this,"disable_offline_mode",function(c){if(b(L,a)){b(e,a).call(a,f.INFO,"disable_offline_mode, Disabling offline mode");l(L,a,!1);c&&a.device_id!==c?(a.device_id=c,l(H,a,0),b(z,a).call(a,"cly_id",a.device_id), b(z,a).call(a,"cly_id_type",0),b(e,a).call(a,f.INFO,"disable_offline_mode, Changing id to: "+a.device_id)):(a.device_id=b(xb,a).call(a),"[CLY]_temp_id"===a.device_id&&(a.device_id=Eb()),a.device_id!==b(B,a).call(a,"cly_id")&&(b(z,a).call(a,"cly_id",a.device_id),b(z,a).call(a,"cly_id_type",1)));c=!1;if(0<b(K,a).length)for(var d=0;d<b(K,a).length;d++)"[CLY]_temp_id"===b(K,a)[d].device_id&&(b(K,a)[d].device_id=a.device_id,b(K,a)[d].t=b(H,a),c=!0);c&&b(z,a).call(a,"cly_queue",b(K,a),!0);b(gb,a)&&(b(qa, a).sendInstantHCRequest(),l(gb,a,!1))}else b(e,a).call(a,f.WARNING,"disable_offline_mode, Countly was not in offline mode.")});w(this,"begin_session",function(c,d){b(e,a).call(a,f.INFO,"begin_session, Starting the session. There was an ongoing session: ["+b(X,a)+"]");c&&b(e,a).call(a,f.INFO,"begin_session, Heartbeats are disabled");d&&b(e,a).call(a,f.INFO,"begin_session, Session starts irrespective of session cookie");if(a.check_consent("sessions")){if(!b(X,a)){if(a.enableOrientationTracking){b(Nb, a).call(a);var g;D(window,"resize",function(){clearTimeout(g);g=setTimeout(function(){b(Nb,a).call(a)},200)})}l(fa,a,M());l(X,a,!0);l(wa,a,!c);c=b(B,a).call(a,"cly_session");b(e,a).call(a,f.VERBOSE,"begin_session, Session state, forced: ["+d+"], useSessionCookie: ["+b(ha,a)+"], seconds to expire: ["+(c-b(fa,a))+"], expired: ["+(parseInt(c)<=M())+"] ");if(d||!b(ha,a)||!c||parseInt(c)<=M())b(e,a).call(a,f.INFO,"begin_session, Session started"),null===b(ta,a)&&l(ta,a,!0),d={begin_session:1},d.metrics= JSON.stringify(b(jb,a).call(a)),b(Q,a).call(a,d);b(z,a).call(a,"cly_session",M()+60*b(Ba,a))}}else b(ca,a).begin_session=[c,d]});w(this,"session_duration",function(c){b(e,a).call(a,f.INFO,"session_duration, Reporting session duration: ["+c+"]");a.check_consent("sessions")&&(b(X,a)?(b(e,a).call(a,f.INFO,"session_duration, Session extended: ["+c+"]"),b(Q,a).call(a,{session_duration:c}),b(Ub,a).call(a)):b(e,a).call(a,f.DEBUG,"session_duration, No session was started"))});w(this,"end_session",function(c, d){b(e,a).call(a,f.INFO,"end_session, Ending the current session. There was an on going session:["+b(X,a)+"]");a.check_consent("sessions")&&b(X,a)&&(c=c||M()-b(fa,a),b(wb,a).call(a),!b(ha,a)||d?(b(e,a).call(a,f.INFO,"end_session, Session ended"),b(Q,a).call(a,{end_session:1,session_duration:c})):a.session_duration(c),l(X,a,!1))});w(this,"set_id",function(c){b(e,a).call(a,f.INFO,"set_id, Changing the device ID to:["+c+"]");null==c||""===c?b(e,a).call(a,f.WARNING,"set_id, The provided device is not a valid ID"): 0===b(H,a)?a.change_id(c,!1):a.change_id(c,!0)});w(this,"change_id",function(c,d){b(e,a).call(a,f.INFO,"change_id, Changing the device ID to: ["+c+"] with merge:["+d+"]");if(c&&"string"===typeof c&&0!==c.length)if(b(L,a))b(e,a).call(a,f.WARNING,"change_id, Offline mode was on, initiating disabling sequence instead."),a.disable_offline_mode(c);else if(a.device_id==c)b(e,a).call(a,f.DEBUG,"change_id, Provided device ID is equal to the current device ID. Aborting.");else{d||(b(Ha,a).call(a),b(Fa,a).call(a), a.end_session(null,!0),l(aa,a,{}),a.remove_consent_internal(t.features,!1));var g=a.device_id;a.device_id=c;a.device_id=a.device_id;l(H,a,0);b(z,a).call(a,"cly_id",a.device_id);b(z,a).call(a,"cly_id_type",0);b(e,a).call(a,f.INFO,"change_id, Changing ID from:["+g+"] to ["+c+"]");d?b(Q,a).call(a,{old_device_id:g}):a.begin_session(!b(wa,a),!0);a.remote_config&&(l(P,a,{}),b(z,a).call(a,"cly_remote_configs",b(P,a)),a.fetch_remote_config(a.remote_config))}else b(e,a).call(a,f.WARNING,"change_id, The provided device ID is not a valid ID")}); w(this,"add_event",function(c){b(e,a).call(a,f.INFO,"add_event, Adding event: ",c);switch(c.key){case O.NPS:var d=a.check_consent("feedback");break;case O.SURVEY:d=a.check_consent("feedback");break;case O.STAR_RATING:d=a.check_consent("star-rating");break;case O.VIEW:d=a.check_consent("views");break;case O.ORIENTATION:d=a.check_consent("users");break;case O.ACTION:d=a.check_consent("clicks")||a.check_consent("scrolls");break;default:d=a.check_consent("events")}d&&b(Y,a).call(a,c)});q(this,Y,function(c, d){if(a.ignore_visitor)b(e,a).call(a,f.ERROR,"Adding event failed. Possible bot or user opt out");else if(c.key){c.count||(c.count=1);Ic.includes(c.key)||(c.key=C(c.key,a.maxKeyLength,"add_cly_event",b(e,a)));c.segmentation=ka(c.segmentation,a.maxKeyLength,a.maxValueSize,a.maxSegmentationValues,"add_cly_event",b(e,a));c=$a(c,["key","count","sum","dur","segmentation"]);c.timestamp=Fb();var g=new Date;c.hour=g.getHours();c.dow=g.getDay();c.id=d||Db();c.key===O.VIEW?c.pvid=b(Ua,a)||"":c.cvid=b(oa,a)|| "";b(N,a).push(c);b(z,a).call(a,"cly_event",b(N,a));b(e,a).call(a,f.INFO,"With event ID: ["+c.id+"], successfully adding the last event:",c)}else b(e,a).call(a,f.ERROR,"Adding event failed. Event must have a key property")});w(this,"start_event",function(c){c&&"string"===typeof c?(b(e,a).call(a,f.INFO,"start_event, Starting timed event with key: ["+c+"]"),c=C(c,a.maxKeyLength,"start_event",b(e,a)),b(aa,a)[c]?b(e,a).call(a,f.WARNING,"start_event, Timed event with key: ["+c+"] already started"):b(aa, a)[c]=M()):b(e,a).call(a,f.WARNING,"start_event, you have to provide a valid string key instead of: ["+c+"]")});w(this,"cancel_event",function(c){if(!c||"string"!==typeof c)return b(e,a).call(a,f.WARNING,"cancel_event, you have to provide a valid string key instead of: ["+c+"]"),!1;b(e,a).call(a,f.INFO,"cancel_event, Canceling timed event with key: ["+c+"]");c=C(c,a.maxKeyLength,"cancel_event",b(e,a));if(b(aa,a)[c])return delete b(aa,a)[c],b(e,a).call(a,f.INFO,"cancel_event, Timed event with key: ["+ c+"] is canceled"),!0;b(e,a).call(a,f.WARNING,"cancel_event, Timed event with key: ["+c+"] was not found");return!1});w(this,"end_event",function(c){c?(b(e,a).call(a,f.INFO,"end_event, Ending timed event"),"string"===typeof c&&(c=C(c,a.maxKeyLength,"end_event",b(e,a)),c={key:c}),c.key?b(aa,a)[c.key]?(c.dur=M()-b(aa,a)[c.key],a.add_event(c),delete b(aa,a)[c.key]):b(e,a).call(a,f.ERROR,"end_event, Timed event with key: ["+c.key+"] was not started"):b(e,a).call(a,f.ERROR,"end_event, Timed event must have a key property")): b(e,a).call(a,f.WARNING,"end_event, you have to provide a valid string key or event object instead of: ["+c+"]")});q(this,Nb,function(c){b(e,a).call(a,f.INFO,"report_orientation, Reporting orientation");a.check_consent("users")&&b(Y,a).call(a,{key:O.ORIENTATION,segmentation:{mode:c||(window.innerWidth>window.innerHeight?"landscape":"portrait")}})});w(this,"report_conversion",function(c,d){b(e,a).call(a,f.WARNING,"report_conversion, Deprecated function call! Use 'recordDirectAttribution' in place of this call. Call will be redirected now!"); a.recordDirectAttribution(c,d)});w(this,"recordDirectAttribution",function(c,d){b(e,a).call(a,f.INFO,"recordDirectAttribution, Recording the attribution for campaign ID: ["+c+"] and the user ID: ["+d+"]");a.check_consent("attribution")&&(c=c||b(B,a).call(a,"cly_cmp_id")||"cly_organic",(d=d||b(B,a).call(a,"cly_cmp_uid"))?b(Q,a).call(a,{campaign_id:c,campaign_user:d}):b(Q,a).call(a,{campaign_id:c}))});w(this,"user_details",function(c){b(e,a).call(a,f.INFO,"user_details, Trying to add user details: ", c);a.check_consent("users")&&(b(Ha,a).call(a),b(Fa,a).call(a),b(e,a).call(a,f.INFO,"user_details, flushed the event queue"),c.name=C(c.name,a.maxValueSize,"user_details",b(e,a)),c.username=C(c.username,a.maxValueSize,"user_details",b(e,a)),c.email=C(c.email,a.maxValueSize,"user_details",b(e,a)),c.organization=C(c.organization,a.maxValueSize,"user_details",b(e,a)),c.phone=C(c.phone,a.maxValueSize,"user_details",b(e,a)),c.picture=C(c.picture,4096,"user_details",b(e,a)),c.gender=C(c.gender,a.maxValueSize, "user_details",b(e,a)),c.byear=C(c.byear,a.maxValueSize,"user_details",b(e,a)),c.custom=ka(c.custom,a.maxKeyLength,a.maxValueSize,a.maxSegmentationValues,"user_details",b(e,a)),b(Q,a).call(a,{user_details:JSON.stringify($a(c,"name username email organization phone picture gender byear custom".split(" ")))}))});q(this,da,{});q(this,ja,function(c,d,g){a.check_consent("users")&&(b(da,a)[c]||(b(da,a)[c]={}),"$push"===g||"$pull"===g||"$addToSet"===g?(b(da,a)[c][g]||(b(da,a)[c][g]=[]),b(da,a)[c][g].push(d)): b(da,a)[c][g]=d)});w(this,"userData",{set:function(c,d){b(e,a).call(a,f.INFO,"[userData] set, Setting user's custom property value: ["+d+"] under the key: ["+c+"]");c=C(c,a.maxKeyLength,"userData set",b(e,a));d=C(d,a.maxValueSize,"userData set",b(e,a));b(da,a)[c]=d},unset:function(c){b(e,a).call(a,f.INFO,"[userData] unset, Resetting user's custom property with key: ["+c+"] ");b(da,a)[c]=""},set_once:function(c,d){b(e,a).call(a,f.INFO,"[userData] set_once, Setting user's unique custom property value: ["+ d+"] under the key: ["+c+"] ");c=C(c,a.maxKeyLength,"userData set_once",b(e,a));d=C(d,a.maxValueSize,"userData set_once",b(e,a));b(ja,a).call(a,c,d,"$setOnce")},increment:function(c){b(e,a).call(a,f.INFO,"[userData] increment, Increasing user's custom property value under the key: ["+c+"] by one");c=C(c,a.maxKeyLength,"userData increment",b(e,a));b(ja,a).call(a,c,1,"$inc")},increment_by:function(c,d){b(e,a).call(a,f.INFO,"[userData] increment_by, Increasing user's custom property value under the key: ["+ c+"] by: ["+d+"]");c=C(c,a.maxKeyLength,"userData increment_by",b(e,a));d=C(d,a.maxValueSize,"userData increment_by",b(e,a));b(ja,a).call(a,c,d,"$inc")},multiply:function(c,d){b(e,a).call(a,f.INFO,"[userData] multiply, Multiplying user's custom property value under the key: ["+c+"] by: ["+d+"]");c=C(c,a.maxKeyLength,"userData multiply",b(e,a));d=C(d,a.maxValueSize,"userData multiply",b(e,a));b(ja,a).call(a,c,d,"$mul")},max:function(c,d){b(e,a).call(a,f.INFO,"[userData] max, Saving user's maximum custom property value compared to the value: ["+ d+"] under the key: ["+c+"]");c=C(c,a.maxKeyLength,"userData max",b(e,a));d=C(d,a.maxValueSize,"userData max",b(e,a));b(ja,a).call(a,c,d,"$max")},min:function(c,d){b(e,a).call(a,f.INFO,"[userData] min, Saving user's minimum custom property value compared to the value: ["+d+"] under the key: ["+c+"]");c=C(c,a.maxKeyLength,"userData min",b(e,a));d=C(d,a.maxValueSize,"userData min",b(e,a));b(ja,a).call(a,c,d,"$min")},push:function(c,d){b(e,a).call(a,f.INFO,"[userData] push, Pushing a value: ["+d+"] under the key: ["+ c+"] to user's custom property array");c=C(c,a.maxKeyLength,"userData push",b(e,a));d=C(d,a.maxValueSize,"userData push",b(e,a));b(ja,a).call(a,c,d,"$push")},push_unique:function(c,d){b(e,a).call(a,f.INFO,"[userData] push_unique, Pushing a unique value: ["+d+"] under the key: ["+c+"] to user's custom property array");c=C(c,a.maxKeyLength,"userData push_unique",b(e,a));d=C(d,a.maxValueSize,"userData push_unique",b(e,a));b(ja,a).call(a,c,d,"$addToSet")},pull:function(c,d){b(e,a).call(a,f.INFO,"[userData] pull, Removing the value: ["+ d+"] under the key: ["+c+"] from user's custom property array");b(ja,a).call(a,c,d,"$pull")},save:function(){b(e,a).call(a,f.INFO,"[userData] save, Saving changes to user's custom property");a.check_consent("users")&&(b(Ha,a).call(a),b(Fa,a).call(a),b(e,a).call(a,f.INFO,"user_details, flushed the event queue"),b(Q,a).call(a,{user_details:JSON.stringify({custom:b(da,a)})}));l(da,a,{})}});w(this,"report_trace",function(c){b(e,a).call(a,f.INFO,"report_trace, Reporting performance trace");if(a.check_consent("apm")){for(var d= "type name stz etz apm_metrics apm_attr".split(" "),g=0;g<d.length;g++)if("apm_attr"!==d[g]&&"undefined"===typeof c[d[g]]){b(e,a).call(a,f.WARNING,"report_trace, APM trace don't have the property: "+d[g]);return}c.name=C(c.name,a.maxKeyLength,"report_trace",b(e,a));c.app_metrics=ka(c.app_metrics,a.maxKeyLength,a.maxValueSize,a.maxSegmentationValues,"report_trace",b(e,a));d=$a(c,d);d.timestamp=c.stz;c=new Date;d.hour=c.getHours();d.dow=c.getDay();b(Q,a).call(a,{apm:JSON.stringify(d)});b(e,a).call(a, f.INFO,"report_trace, Successfully adding APM trace: ",d)}});w(this,"track_errors",function(c){A?(b(e,a).call(a,f.INFO,"track_errors, Started tracking errors"),t.i[a.app_key].tracking_crashes=!0,window.cly_crashes||(window.cly_crashes=!0,l(cb,a,c),window.onerror=function u(g,h,n,k,r){if(void 0!==r&&null!==r)Gb(r,!1);else{k=k||window.event&&window.event.errorCharacter;r="";"undefined"!==typeof g&&(r+=g+"\n");"undefined"!==typeof h&&(r+="at "+h);"undefined"!==typeof n&&(r+=":"+n);"undefined"!==typeof k&& (r+=":"+k);r+="\n";try{g=[];for(var x=u.caller;x;)g.push(x.name),x=x.caller;r+=g.join("\n")}catch(G){}Gb(r,!1)}},window.addEventListener("unhandledrejection",function(g){Gb(Error("Unhandled rejection (reason: "+(g.reason&&g.reason.stack?g.reason.stack:g.reason)+")."),!0)}))):b(e,a).call(a,f.WARNING,"track_errors, window object is not available. Not tracking errors.")});w(this,"log_error",function(c,d){b(e,a).call(a,f.INFO,"log_error, Logging errors");a.recordError(c,!0,d)});w(this,"add_log",function(c){b(e, a).call(a,f.INFO,"add_log, Adding a new log of breadcrumbs: [ "+c+" ]");if(a.check_consent("crashes")){for(c=C(c,a.maxValueSize,"add_log",b(e,a));b(la,a).length>=a.maxBreadcrumbCount;)b(la,a).shift(),b(e,a).call(a,f.WARNING,"add_log, Reached maximum crashLogs size. Will erase the oldest one.");b(la,a).push(c)}});w(this,"fetch_remote_config",function(c,d,g){var h=null,n=null,k=null;c&&(g||"function"!==typeof c?Array.isArray(c)&&(h=c):k=c);d&&(g||"function"!==typeof d?Array.isArray(d)&&(n=d):k=d);k|| "function"!==typeof g||(k=g);a.useExplicitRcApi?(b(e,a).call(a,f.INFO,"fetch_remote_config, Fetching remote config"),c=a.rcAutoOptinAb?1:0,b(Ob,a).call(a,h,n,c,null,k)):(b(e,a).call(a,f.WARNING,"fetch_remote_config, Fetching remote config, with legacy API"),b(Ob,a).call(a,h,n,null,"legacy",k))});q(this,Ob,function(c,d,g,h,n){b(e,a).call(a,f.INFO,"fetch_remote_config_explicit, Fetching sequence initiated");var k={method:"rc",av:a.app_version};c&&(k.keys=JSON.stringify(c));d&&(k.omit_keys=JSON.stringify(d)); var r;"legacy"===h&&(k.method="fetch_remote_config");0===g&&(k.oi=0);1===g&&(k.oi=1);"function"===typeof n&&(r=n);a.check_consent("sessions")&&(k.metrics=JSON.stringify(b(jb,a).call(a)));a.check_consent("remote-config")?(b(Ga,a).call(a,k),b(ea,a).call(a,"fetch_remote_config_explicit",a.url+b(Na,a),k,function(u,x,G){if(!u){try{var U=JSON.parse(G);if(k.keys||k.omit_keys)for(var J in U)b(P,a)[J]=U[J];else l(P,a,U);b(z,a).call(a,"cly_remote_configs",b(P,a))}catch(Za){b(e,a).call(a,f.ERROR,"fetch_remote_config_explicit, Had an issue while parsing the response: "+ Za)}r&&(b(e,a).call(a,f.INFO,"fetch_remote_config_explicit, Callback function is provided"),r(u,b(P,a)))}},!0)):(b(e,a).call(a,f.ERROR,"fetch_remote_config_explicit, Remote config requires explicit consent"),r&&r(Error("Remote config requires explicit consent"),b(P,a)))});w(this,"enrollUserToAb",function(c){b(e,a).call(a,f.INFO,"enrollUserToAb, Providing AB test keys to opt in for");c&&Array.isArray(c)&&0!==c.length?(c={method:"ab",keys:JSON.stringify(c),av:a.app_version},b(Ga,a).call(a,c),b(ea,a).call(a, "enrollUserToAb",a.url+b(Na,a),c,function(d,g,h){if(!d)try{var n=JSON.parse(h);b(e,a).call(a,f.DEBUG,"enrollUserToAb, Parsed the response's result: ["+n.result+"]")}catch(k){b(e,a).call(a,f.ERROR,"enrollUserToAb, Had an issue while parsing the response: "+k)}},!0)):b(e,a).call(a,f.ERROR,"enrollUserToAb, No keys provided")});w(this,"get_remote_config",function(c){b(e,a).call(a,f.INFO,"get_remote_config, Getting remote config from storage");return"undefined"!==typeof c?b(P,a)[c]:b(P,a)});q(this,Pb, function(){b(e,a).call(a,f.INFO,"stop_time, Stopping tracking duration");b(ma,a)&&(l(ma,a,!1),l(db,a,M()-b(fa,a)),l(ya,a,M()-b(xa,a)))});q(this,sb,function(){b(e,a).call(a,f.INFO,"start_time, Starting tracking duration");b(ma,a)||(l(ma,a,!0),l(fa,a,M()-b(db,a)),l(xa,a,M()-b(ya,a)),l(ya,a,0),b(Ub,a).call(a))});w(this,"track_sessions",function(){if(A){b(e,a).call(a,f.INFO,"track_session, Starting tracking user session");a.begin_session();b(sb,a).call(a);D(window,"beforeunload",function(){b(Ha,a).call(a); b(Fa,a).call(a);a.end_session()});var c="hidden",d=function(){document[c]||!document.hasFocus()?b(Pb,a).call(a):b(sb,a).call(a)};D(window,"focus",d);D(window,"blur",d);D(window,"pageshow",d);D(window,"pagehide",d);"onfocusin"in document&&(D(window,"focusin",d),D(window,"focusout",d));c in document?document.addEventListener("visibilitychange",d):"mozHidden"in document?(c="mozHidden",document.addEventListener("mozvisibilitychange",d)):"webkitHidden"in document?(c="webkitHidden",document.addEventListener("webkitvisibilitychange", d)):"msHidden"in document&&(c="msHidden",document.addEventListener("msvisibilitychange",d));d=function(){b(ra,a)>=b(za,a)&&b(sb,a).call(a);l(ra,a,0)};D(window,"mousemove",d);D(window,"click",d);D(window,"keydown",d);D(window,"scroll",d);setInterval(function(){var g;l(ra,a,(g=b(ra,a),g++,g));b(ra,a)>=b(za,a)&&b(Pb,a).call(a)},6E4)}else b(e,a).call(a,f.WARNING,"track_sessions, window object is not available. Not tracking sessions.")});w(this,"track_pageview",function(c,d,g){if(A||c)if(b(e,a).call(a, f.INFO,"track_pageview, Tracking page views"),b(e,a).call(a,f.VERBOSE,"track_pageview, last view is:["+b(S,a)+"], current view ID is:["+b(oa,a)+"], previous view ID is:["+b(Ua,a)+"]"),b(S,a)&&b(fb,a)&&(b(e,a).call(a,f.DEBUG,"track_pageview, Scroll registry triggered"),b(Bb,a).call(a),l(Ca,a,!0),l(Da,a,0)),b(wb,a).call(a),l(Ua,a,b(oa,a)),l(oa,a,Db()),(c=C(c,a.maxKeyLength,"track_pageview",b(e,a)))&&Array.isArray(c)&&(d=c,c=null),c||(c=a.getViewName()),void 0===c||""===c)b(e,a).call(a,f.ERROR,"track_pageview, No page name to track (it is either undefined or empty string). No page view can be tracked."); else if(null===c)b(e,a).call(a,f.ERROR,"track_pageview, View name returned as null. Page view will be ignored.");else{if(d&&d.length)for(var h=0;h<d.length;h++)try{if((new RegExp(d[h])).test(c)){b(e,a).call(a,f.INFO,"track_pageview, Ignoring the page: "+c);return}}catch(u){b(e,a).call(a,f.ERROR,"track_pageview, Problem with finding ignore list item: "+d[h]+", error: "+u)}h={name:c,visit:1,view:a.getViewUrl()};h=ka(h,a.maxKeyLength,a.maxValueSize,a.maxSegmentationValues,"track_pageview",b(e,a));a.track_domains&& (h.domain=window.location.hostname);if(b(ha,a))if(b(X,a))b(ta,a)&&(l(ta,a,!1),h.start=1);else{var n=b(B,a).call(a,"cly_session");if(!n||parseInt(n)<=M())l(ta,a,!1),h.start=1}else A&&"undefined"!==typeof document.referrer&&document.referrer.length&&(n=mc.exec(document.referrer))&&n[11]&&n[11]!==window.location.hostname&&(h.start=1);if(b(ia,a)&&Object.keys(b(ia,a)).length){b(e,a).call(a,f.INFO,"track_pageview, Adding fresh utm tags to segmentation:["+JSON.stringify(b(ia,a))+"]");for(var k in b(ia,a))"undefined"=== typeof h["utm_"+k]&&(h["utm_"+k]=b(ia,a)[k])}A&&b(yb,a).call(a)&&(b(e,a).call(a,f.INFO,"track_pageview, Adding referrer to segmentation:["+document.referrer+"]"),h.referrer=document.referrer);if(g){g=ka(g,a.maxKeyLength,a.maxValueSize,a.maxSegmentationValues,"track_pageview",b(e,a));for(var r in g)"undefined"===typeof h[r]&&(h[r]=g[r])}a.check_consent("views")?(b(Y,a).call(a,{key:O.VIEW,segmentation:h},b(oa,a)),l(S,a,c),l(xa,a,M()),b(e,a).call(a,f.VERBOSE,"track_pageview, last view is assigned:["+ b(S,a)+"]")):b(ca,a).track_pageview=[c,d,g]}else b(e,a).call(a,f.WARNING,"track_pageview, window object is not available. Not tracking page views is page is not provided.")});w(this,"track_view",function(c,d,g){b(e,a).call(a,f.INFO,"track_view, Initiating tracking page views");a.track_pageview(c,d,g)});w