var BAAppProfile = {"profileName":"Portal Web","lastUpdated":1680028835383,"profileId":970,"created":1678373959392,"baAttributes":{"ajaxMetricsEnabled":true,"resourceMetricsThreshold":0,"proxyEnabled":false,"urlIncludeList":[],"ajaxMetricsThreshold":0,"geoEnabled":true,"browserLoggingEnabled":true,"pageLoadMetricsThreshold":0,"jsFunctionMetricsThreshold":0,"jsErrorsEnabled":true,"cookieCaptureEnabled":true,"urlExcludeList":[],"domChangePollingInterval":100,"allowCookies":true,"browserAgentEnabled":true,"proxyUrl":"","resourceMetricsEnabled":true,"metricFrequency":3750,"domChangeTimeout":10000,"pageLoadMetricsEnabled":true,"ajaxErrorsEnabled":false,"collectorUrl":"https:\/\/dxc.dxi-na1.saas.broadcom.com\/api\/1\/urn:ca:tenantId:A577E02B-E720-5C1A-6C59-B3B9D7DA24BA\/urn:ca:appId:Portal%20Web\/browserMetrics","sessionTimeout":3600000,"softPageMetricsEnabled":true,"jsFunctionMetricsEnabled":false}}; /** * CA Experience Collector - Browser Agent * b380e5718e7ea836804432180c3d4351c538f1186c2b212a37b6359f0977ffa7 #84 * Copyright (c) 2018 CA. All Rights Reserved. */ try{if(void 0===BrowserAgentExtension)var BrowserAgentExtension={isBAAlive:function(){return"undefined"!=typeof BrowserAgent&&!0===BrowserAgent.globals.configs.BROWSERAGENTENABLED},init:function(){BrowserAgentExtension.replaceUrls()},extAddJSFuncToInstrument:function(){},extAddCustomPageMetric:function(){},extAddCustomOptionalProperty:function(){},extNameFormatter:function(e,n,o,r,t){},isClickedEventARouteChange:function(e){return null},replaceUrls:function(e){}}}catch(e){window.BrowserAgent&&BrowserAgent.logger?BrowserAgent.logger.error("BrowserAgentExtensionError: "+e.message):window&&window.console&&window.console.log("BrowserAgentExtensionError: "+e.message)} /** * CA Experience Collector - Browser Agent * b380e5718e7ea836804432180c3d4351c538f1186c2b212a37b6359f0977ffa7 #84 * Copyright (c) 2018 CA. All Rights Reserved. */ try{if(void 0!==BrowserAgent)throw new Error("Detected multiple instances of Browser Agent. Skipping monitoring for this instance.");var BrowserAgent={};if(void 0===BrowserAgentBootstrap)var BrowserAgentBootstrap={origFuncMap:{}};BrowserAgent.globals={init:function(){BrowserAgent.globals.defaultMetricDefs=BrowserAgent.globals.setDefaultMetricDefs();var e={};e.schemaVersion=BrowserAgent.jsonUtils.jsonConstants.SCHEMA_VERSION,e.creator={name:BrowserAgent.jsonUtils.jsonConstants.CREATOR_NAME,version:BrowserAgent.jsonUtils.jsonConstants.CREATOR_VERSION},e.clientInfo={},navigator.userAgent&&(BrowserAgent.browserUtils.isiOSWebViewAgent(navigator.userAgent)?e.clientInfo.userAgent=BrowserAgent.browserUtils.getiOSUserAgent(navigator.userAgent):e.clientInfo.userAgent=navigator.userAgent),BrowserAgent.globals.browserFingerprint&&(e.clientInfo.fingerPrint=BrowserAgent.globals.browserFingerprint),BrowserAgent.globals.platform&&(e.clientInfo.browserType=BrowserAgent.globals.platform),BrowserAgent.globals.platformVersion&&(e.clientInfo.browserMajorVersion=BrowserAgent.globals.platformVersion),e.app={ba:{pages:{pageList:[]}}},BrowserAgent.globals.appInfo.id&&(e.app.id=BrowserAgent.globals.appInfo.id),BrowserAgent.globals.appInfo.key&&(e.app.key=BrowserAgent.globals.appInfo.key),e.app.version=BrowserAgent.jsonUtils.jsonConstants.APP_VERSION,e.app.isSynthetic=BrowserAgent.globals.isSyntheticData,BrowserAgent.globals.appInfo.version&&(e.app.version=BrowserAgent.globals.appInfo.version),e.app.useAxaAppName=BrowserAgent.jsonUtils.jsonConstants.APP_USE_AXAAPP_NAME,BrowserAgent.globals.appInfo.useAxaAppName&&(e.app.useAxaAppName=BrowserAgent.globals.appInfo.useAxaAppName),BrowserAgent.globals.appInfo.tenantId&&(e.app.tenantId=BrowserAgent.globals.appInfo.tenantId),BrowserAgent.globals.profileInfo&&(e.app.profileInfo=BrowserAgent.globals.profileInfo),BrowserAgent.globals.eumJSONShell=e,BrowserAgent.globals.lastCorBrowserGUIDsUsed=new BrowserAgent.Set(1e3),BrowserAgent.globals.processedResourceEntries=new BrowserAgent.Set},getSequenceNum:function(){return BrowserAgent.globals.sequenceNum+=1,BrowserAgent.globals.sequenceNum},fetchGlobalSyntheticFlag:function(){BrowserAgent.logger.info("BrowserAgent.fetchGlobalSyntheticFlag: Global synthetic value:"+window.isSynthetic),void 0!==window.isSynthetic&&window.isSynthetic!=BrowserAgent.globals.isSyntheticData&&(BrowserAgent.globals.isSyntheticData=window.isSynthetic,BrowserAgent.logger.info("BrowserAgent.fetchGlobalSyntheticFlag: IsSyntheticData flag"+BrowserAgent.globals.isSyntheticData))},peekSequenceNum:function(){return BrowserAgent.globals.sequenceNum+1},setDefaultMetricDefs:function(){return{NTAPI_PRT:{name:"Page Render Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_DPT:{name:"DOM Processing Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_PLT:{name:"Page Load Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_PST:{name:"Page Stall Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_PPUT:{name:"Previous Page Unload Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_DLT:{name:"Domain Lookup Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_TTFB:{name:"Time to First Byte",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_TTLB:{name:"Time to Last Byte",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},NTAPI_CET:{name:"Connection Establishment Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},PAGE_HPI:{name:"Page Hits Per Interval",unit:BrowserAgent.globals.defaultMetricUnits.NO_UNIT,type:BrowserAgent.globals.metricAggregatorType.LONG_INTERVAL_COUNTER},FUNC_ET:{name:"Execution Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},FUNC_ICPI:{name:"Invocation Count Per Interval",unit:BrowserAgent.globals.defaultMetricUnits.NO_UNIT,type:BrowserAgent.globals.metricAggregatorType.LONG_INTERVAL_COUNTER},AJAX_RLT:{name:"Resource Load Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},AJAX_TTFB:{name:"Time To First Byte",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},AJAX_RDT:{name:"Response Download Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},AJAX_CBET:{name:"Callback Execution Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},AJAX_ICPI:{name:"Invocation Count Per Interval",unit:BrowserAgent.globals.defaultMetricUnits.NO_UNIT,type:BrowserAgent.globals.metricAggregatorType.LONG_INTERVAL_COUNTER},RES_EPI:{name:"Resource Errors Per Interval",unit:BrowserAgent.globals.defaultMetricUnits.NO_UNIT,type:BrowserAgent.globals.metricAggregatorType.LONG_INTERVAL_COUNTER},PAGE_EPI:{name:"Page Errors Per Interval",unit:BrowserAgent.globals.defaultMetricUnits.NO_UNIT,type:BrowserAgent.globals.metricAggregatorType.LONG_INTERVAL_COUNTER},PAGE_UDT:{name:"User Decision Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION},AXA_NRT:{name:"Network Response Time",unit:BrowserAgent.globals.defaultMetricUnits.MILLI,type:BrowserAgent.globals.metricAggregatorType.INT_LONG_DURATION}}},pageWithEventsMap:{},sortedBucketList:[],processedResourceEntries:null,pageBucketsMap:{},pageBucketsMaxLen:100,maxLongValue:0x8000000000000000,evtTypes:{RES:"RES",JSERR:"JSERR",FN:"FN",AXAEXT:"AXAEXT",APMEXT:"APMEXT",HPLOAD:"HPLOAD",SPLOAD:"SPLOAD",TTIME:"TTIME"},evtHandlers:{},pageBucketTypes:{HP:"HP",SP:"SP"},currPagePtr:null,prevPagePtr:null,currSession:null,prevSessionList:[],sessionToChunkMap:{},sessionToActiveEUMPayloadMap:{},deferredPayloadProcessing:null,currTTimeEvtPtr:null,initPageInfo:null,eumJSONShell:null,softPageLoadEvtObj:null,harvestIntervalId:null,sequenceNum:-1,ajaxDataKeys:{URL:"url",METHOD:"method",ASYNC:"async",STATUS_CODE:"status",STATUS_TEXT:"statusText",RESPONSE_CONTENT_LENGTH:"resSize",REQUEST_BODY_SIZE:"reqSize",ERR:"err"},appInfo:null,bs:"-1",bt:"-1",btc:"-1",commaChar:",",equalChar:"=",configs:null,contentLengthHdrStr:"Content-Length",contentLengthHdrStrLowerCase:"content-length",appCookies:null,agentCookies:null,agentCookieKeys:"agentCookieKeys",agentCookieKeyName:{AGENTHOST:"AgentHost",SERVLETNAME:"ServletName",USERID:"UserId",AGENTPROCESS:"AgentProcess",AGENTNAME:"AgentName",WEBAPPNAME:"WebAppName"},agentCookiePrefix:"apm",agentCookieKeysRegexPattern:/^apm.+/,CorBrowsGUID:null,defaultBTRegex:/^Default BT( via (Chrome|Edge|Firefox|IE|Safari))?$/,defaultMetricDefs:null,defaultMetricUnits:{NO_UNIT:null,MILLI:"ms"},isSoftPageLoad:!0,domLastUpdated:null,domChangeTimeoutId:null,domChangeTimerId:null,domChangeObserver:null,domChangeObserverConfig:{childList:!0,characterData:!0,subtree:!0,attributes:!0},dotChar:".",softPageDataKeys:{START:"s",END:"e",REFERRER:"r",URL:"url"},emptyObjStr:"{}",forwardSlashChar:"/",functionsToInstrumentMap:{},tracerCacheMap:{},jsFuncPreTracerName:"BrowserAgent.funcUtils.tracers.JSFuncPre",jsFuncPostTracerName:"BrowserAgent.funcUtils.tracers.JSFuncPost",retryFuncIdMap:{},gapTimeInMillis:0,geoConstants:{ERROR:-255,DENIED:-401},geo:{lat:-401,lon:-401},hashChar:"#",isStoragePresent:!0,metricAggregatorType:{INT_LONG_DURATION:0,LONG_INTERVAL_COUNTER:1,STRING:2},metricPathConsts:{PREFIX:"Business Segment",BROWSER:"Browser",RES:"Resources",HTMLRES:"HTML",AJAX:"AJAX Call",SYNC:"Sync",ASYNC:"Async",FUNC:"JavaScript Function",SOFTPAGE:"Soft Page",URL:"URL",CUSTOM:"Custom",NETWORKEVT:"Network Event"},origFuncMap:{},platform:"-1",platformVersion:"-1",pageFullURL:window.location.href,unloadEvtHndlrFlag:!1,profileURL:"",extensionSrcFullPath:"",BASrcFullPath:"",BALocalProfileUpdate:!0,resourceType:{AJAX:"AJAX",HTMLRES:"HTMLRES"},resourceSubType:{SYNC:"SYNC",ASYNC:"ASYNC"},snippetAttrNames:{SCRIPT_ID:{OLD:"BA_AXA",NEW:"ca_eum_ba",EXT_OLD:"BA_AXA_EXT",EXT_NEW:"ca_eum_ba_ext"},PROFILE_URL:"data-profileUrl",TENANT_ID:"data-tenantID",APP_ID:"data-appID",APP_KEY:"data-appKey",APP_VERSION:"data-appVersion",APP_USE_AXAAPP_NAME:"data-use-axa-appname",SRC:"src",RESPONSE_BT:"x-apm-ba-response-bt",LOCAL_PROFILE_UPDATE:"data-profile-update"},pageBT:null,timestampNames:{START_TIME:"s",REQUEST_START:"rs",CALLBACK_START_TIME:"cs",CALLBACK_END_TIME:"ce",FIRST_BYTE:"f",LAST_BYTE:"l",EXTERNAL:"ex"},pipeChar:"|",profileInfo:null,semiColonChar:";",colonChar:":",startTime:null,endTime:null,UNDEFINED:"-1",userAgents:{CHROME:{name:"Chrome",ver:30},EDGE:{name:"Edge",ver:12},FIREFOX:{name:"Firefox",ver:30},IE:{name:"IE",ver:9},SAFARI:{name:"Safari",ver:9},UNSUPPORTED:{name:"Unsupported",ver:-1}},isOldXHR:!1,browserFingerprint:null,baStartTime:null,trackerDataKey:"TKR",isGrphqlResp:"isGrphqlResp",pageLoadFlag:"pageLoadFlag",isJQOne:null,isJQ:null,retryInterval:1e3,funcInstrumentMaxRetryCount:10,underscoreChar:"_",dashChar:"-",performanceResourceBuffer:1e3,isPerformanceResourceSupported:!1,RAW_RESOURCE_TIME_DATA:"rawResourceDataKey",isOnUnload:!1,traceSource:"Trace Source",traceSourceBrowser:"Browser Agent",isSynthetic:"Is Synthetic",httpStatusCodeMessages:{0:"error",400:"Bad Request",401:"Unauthorized",402:"Payment Required - Future Use",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",426:"Upgrade Required",500:"Internal Sever Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported"},httpStatusCodes:{NOT_MODIFIED_304:304},EVENT_THRESHOLD:1e3,lastUserMouseDown:0,retryPayloadsMap:{},MINIMUM_RETRY_DELAY:5e3,isCookieEnabled:!1,isSyntheticData:!1,urlToPerformanceListMap:{},currentPerfObjectCount:0,MAX_PERF_OBJECT_CACHE_LIMIT:500,XML_HTTP_REQUEST_PERF_RES_TYPE:"xmlhttprequest",REQUEST_START_PROP_NAME:"requestStart",PERF_OBJ_CORR_MAX_ALLOWED_SPREAD:1500,lastCustomSPARouteName:"",lastCustomSPARouteTime:0,MAX_TIME_BETWEEN_SAME_CUSTOM_ROUTE:12e4,supportedSPARouteTagNames:{"md-tab":!0,"md-tab-item":!0},lastEventTime:0,sessionTimeoutLowerLimit:6e4,lastCorBrowserGUIDsUsed:null,fetchHeaderData:[],fetchReqUrl:[],selfMonPerformance:{baloadinit:{totalTimeMS:0},baunload:{totalTimeMS:0},ajax:{numberOfAjax:0,totalTimeMS:0,avgTimePerAjaxMS:0},jquery:{numberOfJQ:0,totalTimeMS:0,avgTimePerJQMS:0},resource:{numberOfRes:0,totalTimeMS:0,avgTimePerResMS:0},harvestpayload:{minTimeMS:0,maxTimeMS:0,totalTimeMS:0,avgTimeMS:0,numberOfHarvestCycles:0},payload:{startTime:0,lastTime:0,numberOfPayloads:0,totalSizeBytes:0,minSizeBytes:0,maxSizeBytes:0,avgSizeBytes:0,totalNetworkTimeMS:0,avgNetworkTimeMS:0,bytesPerSecond:0}}},BrowserAgent.logger={logPrefix:" [CA Browser Agent]: ",logLevelPrefix:{DEBUG:" [DEBUG] ",ERROR:" [ERROR] ",INFO:" [INFO] ",WARN:" [WARN] "},isOk:function(){return window.console&&"object"==typeof window.console&&(!BrowserAgent.globals.configs||!0===BrowserAgent.globals.configs.BROWSERLOGGINGENABLED)},log:function(e,r){BrowserAgent.logger.isOk()&&window.console.log(new Date+BrowserAgent.logger.logPrefix+e+r)},debug:function(e){BrowserAgent.logger.log(BrowserAgent.logger.logLevelPrefix.DEBUG,e)},error:function(e){BrowserAgent.logger.log(BrowserAgent.logger.logLevelPrefix.ERROR,e)},info:function(e){BrowserAgent.logger.log(BrowserAgent.logger.logLevelPrefix.INFO,e)},warn:function(e){BrowserAgent.logger.log(BrowserAgent.logger.logLevelPrefix.WARN,e)}},BrowserAgent.Set=function(e){this.backingSet={},this.CONST_VALUE=1,this.size=0,e>0?(this.itemOrderArray=[],this.maxAllowedSize=e):(this.itemOrderArray=null,this.maxAllowedSize=0),this._removeFromBackingSet=function(e){this.hasItem(e)&&(this.size-=1),delete this.backingSet[e]}},BrowserAgent.Set.prototype.addItem=function(e){this.hasItem(e)||(this.size+=1),this.backingSet[e]=this.CONST_VALUE,this.itemOrderArray&&this.itemOrderArray.push(e),this.maxAllowedSize>0&&this.size>this.maxAllowedSize&&this._removeFromBackingSet(this.itemOrderArray.shift()),this.itemOrderArray&&this.itemOrderArray.length!==this.size&&BrowserAgent.logger.warn("BrowserAgent.Set.prototype.addItem: Discrepancy detected: this.itemOrderArray = "+this.itemOrderArray+", this.size = "+this.size)},BrowserAgent.Set.prototype.removeItem=function(e){this._removeFromBackingSet(e);for(var r=0;this.itemOrderArray&&r0;){var a=n.shift();if(a[1]&&"object"==typeof a[1])if(a[0]){a[2][a[0]]={};for(t in a[1])n.push([t,a[1][t],a[2][a[0]]])}else for(t in a[1])n.push([t,a[1][t],a[2]]);else a[0]?a[2][a[0]]=a[1]:a[2]=a[1]}}else s=e;return s},includes:function(e,r){"use strict";return"number"!=typeof r&&(r=0),!(r+e.length>this.length)&&-1!==this.indexOf(e,r)},getBrowserInfo:function(e){BrowserAgent.logger.warn("BrowserAgent.main: User Agent ["+e+"]");var r=-1;return e&&"string"==typeof e?/opera|opr/i.test(e)?{name:BrowserAgent.globals.userAgents.UNSUPPORTED.name,ver:BrowserAgent.globals.userAgents.UNSUPPORTED.ver,isSupported:!1}:/edge/i.test(e)&&(r=this.getMajorVersion(e,/(?:edge)\/(\d+(\.\d+)?)/i))>=BrowserAgent.globals.userAgents.EDGE.ver?{name:BrowserAgent.globals.userAgents.EDGE.name,ver:r,isSupported:!0}:/msie|trident/i.test(e)&&(r=this.getMajorVersion(e,/(?:msie |rv:)(\d+(\.\d+)?)/i))>=BrowserAgent.globals.userAgents.IE.ver?{name:BrowserAgent.globals.userAgents.IE.name,ver:r,isSupported:!0}:/chrome|crios|crmo/i.test(e)&&(r=this.getMajorVersion(e,/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i))>=BrowserAgent.globals.userAgents.CHROME.ver?{name:BrowserAgent.globals.userAgents.CHROME.name,ver:r,isSupported:!0}:/firefox|iceweasel/i.test(e)&&(r=this.getMajorVersion(e,/(?:firefox|iceweasel)[ /](\d+(\.\d+)?)/i))>=BrowserAgent.globals.userAgents.FIREFOX.ver?{name:BrowserAgent.globals.userAgents.FIREFOX.name,ver:r,isSupported:!0}:/safari/i.test(e)&&(r=this.getMajorVersion(e,/version\/(\d+(\.\d+)?)/i))>=BrowserAgent.globals.userAgents.SAFARI.ver?{name:BrowserAgent.globals.userAgents.SAFARI.name,ver:r,isSupported:!0}:BrowserAgent.browserUtils.isiOSWebViewAgent(e)&&(r=this.getiOSUserAgentVersion(e))>=BrowserAgent.globals.userAgents.SAFARI.ver?{name:BrowserAgent.globals.userAgents.SAFARI.name,ver:r,isSupported:!0}:{name:BrowserAgent.globals.userAgents.UNSUPPORTED.name,ver:BrowserAgent.globals.userAgents.UNSUPPORTED.ver,isSupported:!1}:{name:BrowserAgent.globals.userAgents.UNSUPPORTED.name,ver:BrowserAgent.globals.userAgents.UNSUPPORTED.ver,isSupported:!1}},getMajorVersion:function(e,r){var t=e.match(r);if(t&&t.length>1){var s=t[1].split(".");if(s&&s.length>0)return parseInt(s[0])}return 0},isiOSWebViewAgent:function(e){return!(!e||"string"!=typeof e)&&!(!/iPhone; CPU|iPad; CPU|Macintosh/i.test(e)||/Safari/i.test(e))},getiOSUserAgentVersion:function(e){var r=/\d\w*_\w*\b/g,t=e.match(r);if(t&&t.length>0){var s=t[0].split("_");if(s&&s.length>0)return parseInt(s[0])}return 0},getiOSUserAgent:function(e){var r=BrowserAgent.browserUtils.getiOSUserAgentVersion(e);return e+" Version/"+r+" Safari/"+r},generateUUID:function(){var e=BrowserAgentBootstrap.origFuncMap.timeNow();return BrowserAgent.browserUtils.UUIDPattern.replace(/[xy]/g,function(r){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),(r==BrowserAgent.browserUtils.UUIDChar?t:3&t|8).toString(16)})},getBrowserFingerprint:function(){var e=BrowserAgent.cookieUtils.getRawCookie(BrowserAgent.cookieUtils.BAFINGERPRINT);if(e)return BrowserAgent.logger.info("getBrowserFingerprint: Browser Fingerprint already exists via cookie"),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.LOCAL,BrowserAgent.storageUtils.storageKeys.BAFINGERPRINT,e,!0),e;e=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.LOCAL,BrowserAgent.storageUtils.storageKeys.BAFINGERPRINT);var r=BrowserAgent.browserUtils.getDomainForCookie();return e?(BrowserAgent.logger.info("getBrowserFingerprint: Browser Fingerprint already exists via local storage"),BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.BAFINGERPRINT,e,null,"/",r),e):(BrowserAgent.logger.info("getBrowserFingerprint: Generating a new Browser Fingerprint..."),e=BrowserAgent.browserUtils.generateUUID(),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.LOCAL,BrowserAgent.storageUtils.storageKeys.BAFINGERPRINT,e,!0),BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.BAFINGERPRINT,e,null,"/",r),e)},getDomainForCookie:function(){var e=null,r=window.location.hostname.split(BrowserAgent.globals.dotChar);return r&&r.length>=2&&(e=r[r.length-2]+BrowserAgent.globals.dotChar+r[r.length-1],null===BrowserAgent.browserUtils.convertToNum(r[r.length-2])&&null===BrowserAgent.browserUtils.convertToNum(r[r.length-1])||(e=null)),e},getSession:function(){var e,r=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BASESSION_ID);if(r){if(BrowserAgent.logger.info("getSession: Browser Session ID already exists."),!BrowserAgent.browserUtils.isSameSession(BrowserAgent.globals.baStartTime))return BrowserAgent.browserUtils.getNewSession(BrowserAgent.globals.baStartTime);var t={};t.id=r,t.isNewSession=!1,null!==(e=BrowserAgent.browserUtils.convertToNum(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BASESSION_STARTTIME)))&&(t.startTime=e),BrowserAgent.globals.sessionToChunkMap[r]={};var s=BrowserAgent.browserUtils.convertToNum(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.CHUNK_SEQ));return s=null!==s?s:0,BrowserAgent.globals.sessionToChunkMap[r].ch=s,BrowserAgent.globals.sessionToChunkMap[r].fch=s<=0,BrowserAgent.globals.sessionToChunkMap[r].lch=!1,t}return BrowserAgent.browserUtils.getNewSession(BrowserAgent.globals.baStartTime)},getNewSession:function(e){BrowserAgent.logger.info("getNewSession: Generating a new Session ID...");var r=BrowserAgent.browserUtils.generateUUID();return BrowserAgent.browserUtils.updateSessionInfo(r,e,0,!0),BrowserAgent.globals.sessionToChunkMap[r]={ch:0,fch:!0,lch:!1},"undefined"!=typeof BrowserAgentExtension&&BrowserAgentExtension.internal.clearAllTrackers(),{id:r,startTime:e,isNewSession:!0}},updateSessionInfo:function(e,r,t,s){BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BASESSION_ID,e,s),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BASESSION_STARTTIME,r,s),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BALASTEVENT_TIME,r,s),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.CHUNK_SEQ,t,s)},isSameSession:function(e){if("number"!=typeof e||isNaN(e))return BrowserAgent.logger.error("isSameSession: Cannot determine session truth as event time is NaN."),!0;var r=BrowserAgent.browserUtils.convertToNum(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BALASTEVENT_TIME));return!(!r||e-r>=BrowserAgent.globals.configs.SESSIONTIMEOUT)||(BrowserAgent.logger.info("isSameSession: Session timed out due to inactivity."),!1)},hasCustomGeoLocation:function(){return null!==BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOCUSTOM)},isiOSMobileAgent:function(e){return!(!e||"string"!=typeof e)&&!(!/iPhone|iPad/i.test(e)||!/Mobile/i.test(e)||/Safari/i.test(e))},getGeoLocation:function(){if(!BrowserAgent.browserUtils.hasCustomGeoLocation()){if(!navigator||!navigator.geolocation||BrowserAgent.browserUtils.isiOSMobileAgent(navigator.userAgent))return BrowserAgent.logger.warn("getGeoLocation: Geolocation is not supported in this browser."),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT,BrowserAgent.globals.geoConstants.ERROR,!0),void BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLONG,BrowserAgent.globals.geoConstants.ERROR,!0);var e=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT),r=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLONG);if(null===e||null===r){var t={timeout:BrowserAgent.globals.configs.GEOTIMEOUT,maximumAge:BrowserAgent.globals.configs.GEOMAXIMUMAGE,enableHighAccuracy:BrowserAgent.globals.configs.GEOHIGHACCURACYENABLED};BrowserAgent.logger.info("getGeoLocation: Attempting to calculate geo location"),navigator.geolocation.getCurrentPosition(this.geoLocationFound,this.geoLocationNotFound,t),setTimeout(function(){null===BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT)&&(BrowserAgent.logger.warn("getGeoLocation: Never received a response for geo-location. Setting co-ordinates to "+BrowserAgent.globals.geoConstants.DENIED+","+BrowserAgent.globals.geoConstants.DENIED),BrowserAgent.globals.geo.lat=BrowserAgent.globals.geoConstants.DENIED,BrowserAgent.globals.geo.lon=BrowserAgent.globals.geoConstants.DENIED,BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT,BrowserAgent.globals.geoConstants.DENIED,!0),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLONG,BrowserAgent.globals.geoConstants.DENIED,!0))},parseInt(BrowserAgent.globals.configs.GEOTIMEOUT)+5e3)}else BrowserAgent.globals.geo.lat=Number(e),BrowserAgent.globals.geo.lon=Number(r)}},geoLocationFound:function(e){BrowserAgent.browserUtils.hasCustomGeoLocation()||(BrowserAgent.globals.geo.lat=e.coords.latitude,BrowserAgent.globals.geo.lon=e.coords.longitude,BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT,BrowserAgent.globals.geo.lat,!0),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLONG,BrowserAgent.globals.geo.lon,!0))},geoLocationNotFound:function(e){if(!BrowserAgent.browserUtils.hasCustomGeoLocation()){var r=!1;switch(e.code){case e.PERMISSION_DENIED:BrowserAgent.logger.warn("geoLocationNotFound: Browser indicates that user denied the request for geo-location."),r=!0;break;case e.POSITION_UNAVAILABLE:BrowserAgent.logger.warn("geoLocationNotFound: Browser's geo-location information is unavailable.");break;case e.TIMEOUT:BrowserAgent.logger.warn("geoLocationNotFound: Browser's request to obtain geo-location timed out.");break;default:BrowserAgent.logger.warn("geoLocationNotFound: An unknown error occurred while browser attempted geo-location.")}r?(BrowserAgent.globals.geo.lat=BrowserAgent.globals.geoConstants.DENIED,BrowserAgent.globals.geo.lon=BrowserAgent.globals.geoConstants.DENIED):(BrowserAgent.globals.geo.lat=BrowserAgent.globals.geoConstants.ERROR,BrowserAgent.globals.geo.lon=BrowserAgent.globals.geoConstants.ERROR),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLAT,BrowserAgent.globals.geo.lat,!0),BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOLONG,BrowserAgent.globals.geo.lon,!0)}},convertToNum:function(e){if("Number"===BrowserAgent.browserUtils.getObjType(e)||null===e)return e;var r=Number(e);return isNaN(r)?null:r},getObjType:function(e){var r=typeof e;if("object"!=typeof e)return r.charAt(0).toUpperCase()+r.slice(1);try{if("string"!=typeof(r=Object.prototype.toString.call(e).slice(8,-1))||""===r)return"Object"}catch(e){BrowserAgent.logger.error("getObjType: "+e.message),r=null}return r},cloneTrackerData:function(){var e=[],r=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR));if(!r)return e;for(var t in r)BrowserAgent.jsonStringify(r[t])!==BrowserAgent.globals.emptyObjStr&&e.push(r[t]);return e},getXHRforBAMetrics:function(){BrowserAgentBootstrap.origFuncMap&&BrowserAgentBootstrap.origFuncMap.XHR&&BrowserAgentBootstrap.origFuncMap.XHROpen&&BrowserAgentBootstrap.origFuncMap.XHRSend?(BrowserAgent.browserUtils.XHRToSendMetrics=new BrowserAgentBootstrap.origFuncMap.XHR,BrowserAgent.browserUtils.XHRToSendMetrics.open=BrowserAgentBootstrap.origFuncMap.XHROpen,BrowserAgent.browserUtils.XHRToSendMetrics.send=BrowserAgentBootstrap.origFuncMap.XHRSend):BrowserAgent.browserUtils.XHRToSendMetrics=new XMLHttpRequest},replaceAll:function(e,r,t){return"string"!=typeof e||"string"!=typeof r||"string"!=typeof t?(BrowserAgent.logger.error("replaceAll: Invalid input"),null):e.replace(new RegExp(r,"g"),t)},parseURL:function(e){if("string"!=typeof e||e.length<1)return BrowserAgent.logger.warn("parseURL: Not a valid URL. Skipping parse..."),null;var r=document.createElement("a");r.href=e;var t=r.port;0===t.length&&(t=80,0===r.protocol.indexOf("https")&&(t=443));var s,o=r.pathname;return o.charAt(0)!==BrowserAgent.globals.forwardSlashChar&&(o=BrowserAgent.globals.forwardSlashChar+o),-1!==(s=o.indexOf(BrowserAgent.globals.semiColonChar))&&(o=o.substring(0,s)),{hostname:decodeURIComponent(r.hostname),port:t,pathname:decodeURIComponent(o),hash:decodeURIComponent(r.hash),href:r.href,search:decodeURIComponent(r.search)}},getFullURL:function(e){if("string"!=typeof e||e.length<1)return BrowserAgent.logger.warn("getFullURL: Not a valid URL. Skipping parse..."),null;var r=document.createElement("a");return r.href=e,r.href},isJQPresent:function(){"undefined"!=typeof jQuery?(BrowserAgent.globals.isJQ=!0,null!==jQuery.fn.jquery.match(/^1\.\d+.*/)?(BrowserAgent.globals.isJQOne=!0,BrowserAgent.logger.info("isJQOnePresent: jQuery 1.x detected.")):BrowserAgent.globals.isJQOne=!1):(BrowserAgent.globals.isJQ=!1,BrowserAgent.globals.isJQOne=!1)},shouldPopulateMetrics:function(){return!BrowserAgent.globals.isOnUnload||BrowserAgent.globals.isOnUnload&&navigator&&navigator.sendBeacon},getDefaultHttpStatusCodeMessage:function(e){return"number"==typeof e&&BrowserAgent.globals.httpStatusCodeMessages[e]?BrowserAgent.globals.httpStatusCodeMessages[e]:(BrowserAgent.logger.warn("getDefaultHttpStatusCodeMessage: HTTP status code ["+e+"] does not comply to RFC, returning generic error message."),BrowserAgent.globals.httpStatusCodeMessages[0])},binarySearchByPropCompare:function(e,r,t){for(var s,o=0,n=e.length-1;o<=n;){var a=e[s=Math.floor((o+n)/2)],g=BrowserAgent.browserUtils.binarySearchCompareFunction(a,r,t);if(g<0)o=s+1;else{if(!(g>0))return s;n=s-1}}return-(o+1)},binarySearchCompareFunction:function(e,r,t){return null===t?e-r:e[t]-r},binaryInsert:function(e,r,t){var s;s=null===t?r:r[t];var o,n=BrowserAgent.browserUtils.binarySearchByPropCompare(e,s,t);n>=0?o=n:n<0&&(0===(n+=1)?o=0:n<0&&(o=-1*n)),e.splice(o,0,r)},getLastSegmentFromPathname:function(e){var r,t="",s=!1;return"string"!=typeof e||e.length<1?t:(e[e.length-1]===BrowserAgent.globals.forwardSlashChar&&(s=!0,e=e.slice(0,-1)),(r=e.split(BrowserAgent.globals.forwardSlashChar)).length>0&&(t=r[r.length-1]),s?t+BrowserAgent.globals.forwardSlashChar:t)},setCustomPerformanceNow:function(){if("performance"in window==!1&&(window.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in window.performance==!1){var e=Date.now();performance.timing&&performance.timing.navigationStart&&(e=performance.timing.navigationStart),window.performance.now=function(){return Date.now()-e}}}},BrowserAgent.configUtils={configNames:{BROWSERLOGGINGENABLED:"browserLoggingEnabled",AJAXMETRICSENABLED:"ajaxMetricsEnabled",AJAXMETRICSTHRESHOLD:"ajaxMetricsThreshold",BROWSERAGENTENABLED:"browserAgentEnabled",COLLECTORURL:"collectorUrl",GEOENABLED:"geoEnabled",GEOHIGHACCURACYENABLED:"geoHighAccuracyEnabled",GEOMAXIMUMAGE:"geoMaximumAge",GEOTIMEOUT:"geoTimeout",JSERRORSENABLED:"jsErrorsEnabled",JSFUNCTIONMETRICSENABLED:"jsFunctionMetricsEnabled",JSFUNCTIONMETRICSTHRESHOLD:"jsFunctionMetricsThreshold",METRICFREQUENCY:"metricFrequency",PAGELOADMETRICSENABLED:"pageLoadMetricsEnabled",PAGELOADMETRICSTHRESHOLD:"pageLoadMetricsThreshold",SESSIONTIMEOUT:"sessionTimeout",URLEXCLUDELIST:"urlExcludeList",URLINCLUDELIST:"urlIncludeList",URLMETRICOFF:"urlMetricOff",DOMCHANGETIMEOUT:"domChangeTimeout",DOMCHANGEINTERVAL:"domChangePollingInterval",COOKIECAPTUREENABLED:"cookieCaptureEnabled",ERROREXCLUDELIST:"errorExcludeList",ERRORINCLUDELIST:"errorIncludeList",ERRORCLAMPPERINTERVAL:"errorClampPerInterval",EVENTCOLLECTIONCLAMPPERINTERVAL:"eventCollectionClampPerInterval",EVENTDISPATCHCLAMPPERINTERVAL:"eventDispatchClampPerInterval",RESOURCEMETRICSENABLED:"resourceMetricsEnabled",RESOURCEBUFFERSIZE:"resourceBufferSize",RESOURCEMETRICSTHRESHOLD:"resourceMetricsThreshold",METRICPAYLOADSENDTRYCOUNT:"metricPayloadSendTryCount",DEBUGGING_ENABLED:"debuggingEnabled",ALLOW_COOKIES:"allowCookies",ENABLE_TRUNCATE_URL:"enableTruncateURL",TRUNCATE_URL_VALUE:"truncateURLValue"},defaults:{BROWSERLOGGINGENABLED:!1,AJAXMETRICSENABLED:!0,AJAXMETRICSTHRESHOLD:100,BROWSERAGENTENABLED:!1,COLLECTORURL:"",GEOENABLED:!1,GEOHIGHACCURACYENABLED:!1,GEOMAXIMUMAGE:1e4,GEOTIMEOUT:5e3,JSERRORSENABLED:!0,JSFUNCTIONMETRICSENABLED:!1,JSFUNCTIONMETRICSTHRESHOLD:100,METRICFREQUENCY:3750,PAGELOADMETRICSENABLED:!0,PAGELOADMETRICSTHRESHOLD:100,SESSIONTIMEOUT:36e5,URLEXCLUDELIST:[],URLINCLUDELIST:[],URLMETRICOFF:!1,DOMCHANGETIMEOUT:1e4,DOMCHANGEINTERVAL:100,COOKIECAPTUREENABLED:!1,ERROREXCLUDELIST:[],ERRORINCLUDELIST:[],ERRORCLAMPPERINTERVAL:100,EVENTCOLLECTIONCLAMPPERINTERVAL:1e4,EVENTDISPATCHCLAMPPERINTERVAL:2e4,RESOURCEMETRICSENABLED:!0,RESOURCEBUFFERSIZE:2e3,RESOURCEMETRICSTHRESHOLD:100,METRICPAYLOADSENDTRYCOUNT:3,DEBUGGING_ENABLED:!1,ALLOW_COOKIES:!0,ENABLE_TRUNCATE_URL:!1,TRUNCATE_URL_VALUE:"!ut"},processAppProfile:function(e){var r="processAppProfile: ";if(!e||!e.baAttributes)return BrowserAgent.logger.error(r+"Invalid app profile."),!1;var t=" is out of range. Defaulting to ";for(var s in BrowserAgent.configUtils.configNames){var o=e.baAttributes[BrowserAgent.configUtils.configNames[s]],n=BrowserAgent.configUtils.defaults[s],a=BrowserAgent.browserUtils.getObjType(o);a===BrowserAgent.browserUtils.getObjType(n)&&("Number"!==a||o>=0)?BrowserAgent.globals.configs[s]=o.valueOf():(BrowserAgent.logger.info(r+BrowserAgent.configUtils.configNames[s]+" is not provided or invalid. Defaulting to "+BrowserAgent.jsonStringify(n)),BrowserAgent.globals.configs[s]=n)}for(var g=0;g6e4&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.METRICFREQUENCY+t+BrowserAgent.configUtils.defaults.METRICFREQUENCY),BrowserAgent.globals.configs.METRICFREQUENCY=BrowserAgent.configUtils.defaults.METRICFREQUENCY),BrowserAgent.globals.configs.ERRORCLAMPPERINTERVAL<5&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.ERRORCLAMPPERINTERVAL+t+BrowserAgent.configUtils.defaults.ERRORCLAMPPERINTERVAL),BrowserAgent.globals.configs.ERRORCLAMPPERINTERVAL=BrowserAgent.configUtils.defaults.ERRORCLAMPPERINTERVAL),BrowserAgent.globals.configs.EVENTCOLLECTIONCLAMPPERINTERVAL1e3)&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.DOMCHANGEINTERVAL+t+BrowserAgent.configUtils.defaults.DOMCHANGEINTERVAL),BrowserAgent.globals.configs.DOMCHANGEINTERVAL=BrowserAgent.configUtils.defaults.DOMCHANGEINTERVAL),(BrowserAgent.globals.configs.DOMCHANGETIMEOUT<200||BrowserAgent.globals.configs.DOMCHANGETIMEOUT>15e3)&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.DOMCHANGETIMEOUT+t+BrowserAgent.configUtils.defaults.DOMCHANGETIMEOUT),BrowserAgent.globals.configs.DOMCHANGETIMEOUT=BrowserAgent.configUtils.defaults.DOMCHANGETIMEOUT),BrowserAgent.globals.configs.DOMCHANGETIMEOUT<=BrowserAgent.globals.configs.DOMCHANGEINTERVAL&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.DOMCHANGETIMEOUT+" cannot be less than or equal to "+BrowserAgent.configUtils.configNames.DOMCHANGEINTERVAL+". Using default values."),BrowserAgent.globals.configs.DOMCHANGEINTERVAL=BrowserAgent.configUtils.defaults.DOMCHANGEINTERVAL,BrowserAgent.globals.configs.DOMCHANGETIMEOUT=BrowserAgent.configUtils.defaults.DOMCHANGETIMEOUT),(BrowserAgent.globals.configs.METRICPAYLOADSENDTRYCOUNT<1||BrowserAgent.globals.configs.METRICPAYLOADSENDTRYCOUNT>10)&&(BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.METRICPAYLOADSENDTRYCOUNT+" cannot be less than 1 or greater than 10 "),BrowserAgent.logger.warn(r+BrowserAgent.configUtils.configNames.METRICPAYLOADSENDTRYCOUNT+t+BrowserAgent.configUtils.defaults.METRICPAYLOADSENDTRYCOUNT),BrowserAgent.globals.configs.METRICPAYLOADSENDTRYCOUNT=BrowserAgent.configUtils.defaults.METRICPAYLOADSENDTRYCOUNT),BrowserAgent.globals.configs.SESSIONTIMEOUT0&&BrowserAgent.configUtils.isUrlInRegexList(e,t)||r.length>0&&!BrowserAgent.configUtils.isUrlInRegexList(e,r)},isUrlInRegexList:function(e,r){for(var t=0;t0&&BrowserAgent.configUtils.isErrorInRegexList(e,r,s)||t.length>0&&!BrowserAgent.configUtils.isErrorInRegexList(e,r,t)},isErrorInRegexList:function(e,r,t){for(var s=0;s0)for(o=document.cookie.split(BrowserAgent.globals.semiColonChar),s=0;s0)for(t=document.cookie.split(BrowserAgent.globals.semiColonChar),r=0;r2&&(o=n[a].indexOf("="),t[s[0]]=n[a].substring(o+1));return t},setRawCookie:function(e,r,t,s,o){if(e)if(-1===[BrowserAgent.cookieUtils.cookies.PLATFORM,BrowserAgent.cookieUtils.cookies.PLATFORMVER,BrowserAgent.cookieUtils.cookies.GAPTIME,BrowserAgent.cookieUtils.cookies.SERVERTIME,BrowserAgent.cookieUtils.cookies.BTRESPID,BrowserAgent.cookieUtils.BAFINGERPRINT].indexOf(e)||BrowserAgent.globals.configs.ALLOW_COOKIES){var n=new Date(BrowserAgentBootstrap.origFuncMap.timeNow()+1e3*t);document.cookie=e+"="+encodeURIComponent(r)+(t?"; expires="+n.toUTCString():"")+(o?"; domain="+o:"")+(s?"; path="+s:"")}else BrowserAgent.logger.info("setRawCookie : Cookie not allowed"+e);else BrowserAgent.logger.warn("setRawCookie : Cannot set cookie with name "+e)},updateCookie:function(e,r){if(e){var t=BrowserAgentBootstrap.origFuncMap.jsonParse(this.getRawCookie(e)),s={};for(var o in t)s[o]=t[o];if("object"==typeof r)for(var n in r)null!==r[n]?s[n]=r[n]:delete s[n];else s=r;this.setRawCookie(e,BrowserAgent.jsonStringify(s),null,"/",null)}else BrowserAgent.logger.warn("updateCookie: Cannot update cookie with name "+e)},updateResDataObjWithCookieData:function(e,r){if(e&&r&&"object"==typeof e&&"object"==typeof r){var t,s;for(s in BrowserAgent.cookieUtils.cookieKeys)e[t=BrowserAgent.cookieUtils.cookieKeys[s]]&&(r[t]=e[t],delete e[t]);t=BrowserAgent.globals.agentCookieKeys;for(s in e)BrowserAgent.globals.agentCookieKeysRegexPattern.test(s)&&(r[t]||(r[t]={}),r[t][s]=e[s]);BrowserAgent.globals.defaultBTRegex.test(r.bt)&&(r.bs=BrowserAgent.globals.UNDEFINED,r.bt=BrowserAgent.globals.UNDEFINED,r.btc=BrowserAgent.globals.UNDEFINED)}else BrowserAgent.logger.warn("updateResDataObjWithCookieData: Cannot update object with data from cookie")},updateHPDataObjWithCookieData:function(e){if(e&&"object"==typeof e){var r,t;for(t in BrowserAgent.cookieUtils.cookieKeys)e[r=BrowserAgent.cookieUtils.cookieKeys[t]]&&(BrowserAgent.globals[r]=e[r],delete e[r]);for(t in e)BrowserAgent.globals.agentCookieKeysRegexPattern.test(t)&&(BrowserAgent.globals.agentCookies||(BrowserAgent.globals.agentCookies={}),BrowserAgent.globals.agentCookies[t]=e[t]);BrowserAgent.globals.defaultBTRegex.test(BrowserAgent.globals.bt)&&(BrowserAgent.globals.bs=BrowserAgent.globals.UNDEFINED,BrowserAgent.globals.bt=BrowserAgent.globals.UNDEFINED,BrowserAgent.globals.btc=BrowserAgent.globals.UNDEFINED)}else BrowserAgent.logger.warn("updateHPDataObjWithCookieData: Cannot update object with data from cookie")},isCookieEnabled:function(){var e=!!navigator.cookieEnabled;if(!0!==e){document.cookie="baTestCookie",e=-1!==document.cookie.indexOf("baTestCookie")}return e},getAppCookies:function(){if(!BrowserAgent.globals.isCookieEnabled)return BrowserAgent.logger.warn("getAppCookies: Cannot obtain cookie snapshot because cookies are disabled."),null;var e,r,t={};if(document.cookie.length<1)return t;r=document.cookie.split("; ");for(var s=0;s")+r+1:0;for(var o="";s;){var n=s.outerHTML,a=s.parentNode;if(a&&n){var g=a.outerHTML;g&&(t+=(o=g).indexOf(n))}s=a}var i=o.substr(0,t).split("\n");return{row:i.length,col:i.pop().length}},captureJSError:function(e,r){var t=null;try{if(!e)return void BrowserAgent.logger.warn("captureJSError: Could not capture error. Error object is unavailable.");var s,o=null,n=null;e.error?(o=e.error.stack,n=BrowserAgent.errorUtils.getSubType(e.error.name,e.message)):(BrowserAgent.logger.info("captureJSError: Stack information is unavailable from error object"),n=BrowserAgent.errorUtils.getSubType(null,e.message)),s=r&&!n?e.message:n;var a=window.location.href;if(BrowserAgent.configUtils.isErrorExcluded(a,s))return void BrowserAgent.logger.info("captureJSError: For page: "+a+" and message: "+s+", has been excluded");if(!(t=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.JSERR,!0,BrowserAgent.errorUtils.errorDataFields.STT)))return;t[BrowserAgent.errorUtils.errorDataFields.TYP]=BrowserAgent.errorUtils.errorType.CLIENT,t[BrowserAgent.errorUtils.errorDataFields.SUB]=n,t[BrowserAgent.errorUtils.errorDataFields.MSG]=e.message,t[BrowserAgent.errorUtils.errorDataFields.SRC]=e.filename,t[BrowserAgent.errorUtils.errorDataFields.LIN]=e.lineno,t[BrowserAgent.errorUtils.errorDataFields.COL]=e.colno,t[BrowserAgent.errorUtils.errorDataFields.STK]=o,t.isDone=!0}catch(e){t&&(t.isDelete=!0),BrowserAgent.logger.error("captureJSError: Could not capture JS error due to "+e.message)}},captureJSErrorIE9:function(e,r,t){BrowserAgent.errorUtils.captureJSError({message:e,filename:r,lineno:t},!0)},getSubType:function(e,r){if("string"!=typeof e){if("string"!=typeof r)return BrowserAgent.logger.warn("getSubType: Could not obtain error subtype"),null;var t=r.split(":");return t.length<2?null:t[0]}return e},createResourceError:function(e,r,t,s,o,n){var a={};if(e){if(!e.isDelete&&(n||!e[BrowserAgent.globals.ajaxDataKeys.ERR])){if(!e[BrowserAgent.globals.ajaxDataKeys.ERR]){if(BrowserAgent.evtUtils.isClamped(BrowserAgent.evtUtils.evtClampFlags.ERR.type,BrowserAgent.errorUtils.currErrCt,BrowserAgent.globals.configs.ERRORCLAMPPERINTERVAL))return void(e.isDelete=!0);BrowserAgent.errorUtils.currErrCt++}a[BrowserAgent.errorUtils.errorDataFields.STT]=BrowserAgentBootstrap.origFuncMap.timeNow(),a[BrowserAgent.errorUtils.errorDataFields.TYP]=BrowserAgent.errorUtils.errorType.NETWORK,a[BrowserAgent.errorUtils.errorDataFields.SUB]=r,a[BrowserAgent.errorUtils.errorDataFields.MSG]=t||BrowserAgent.browserUtils.getDefaultHttpStatusCodeMessage(s),a[BrowserAgent.errorUtils.errorDataFields.STK]=o,e[BrowserAgent.globals.ajaxDataKeys.ERR]=a}}else BrowserAgent.logger.info("createResourceError: Skipping creation of resource error as resource event object is not present. Perhaps, events are clamped.")}},BrowserAgent.funcUtils={tracerTypes:{PRE:"pre",POST:"post"},tracers:{xhrOpenPre:function(){try{var e=performance.now();this._BAState||(this._BAState={},this._BAState.xhrOpenPre={});var r=arguments[arguments.length-1];if(this._BAState.xhrOpenPre.isError=!1,this._BAState.xhrOpenPre._isAjaxInstrumented=!0,!1===BrowserAgent.globals.configs.AJAXMETRICSENABLED)return BrowserAgent.logger.info("xhrOpenPre: AJAX Metrics are DISABLED."),void(this._BAState.xhrOpenPre._isAjaxInstrumented=!1);if(BrowserAgent.globals.currPagePtr.isExcluded)return void(this._BAState.xhrOpenPre._isAjaxInstrumented=!1);if(this._BAState.xhrOpenPre._url=r.invocationData[1],this._BAState.xhrOpenPre._fullURL=BrowserAgent.browserUtils.getFullURL(this._BAState.xhrOpenPre._url),BrowserAgent.configUtils.isUrlExcluded(this._BAState.xhrOpenPre._fullURL))return this._BAState.xhrOpenPre._isAjaxInstrumented=!1,void BrowserAgent.logger.info("xhrOpenPre: AJAX URL ["+this._BAState.xhrOpenPre._fullURL+"] is configured to be EXCLUDED.");this._BAState.xhrOpenPre._httpMethod=r.invocationData[0],this._BAState.xhrOpenPre._async=!0,r.invocationData.length>=3&&(this._BAState.xhrOpenPre._async=r.invocationData[2]),BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-e}catch(e){this._BAState.xhrOpenPre.isError=!0,BrowserAgent.logger.error("xhrOpenPre ("+this._BAState.origFunctionName+"): "+e.message)}},xhrOnloadEndPost:function(){var e=performance.now();this._BAState.xhrSendPre.contentLen=BrowserAgent.funcUtils.calculateAjaxResponseSize(this),"number"==typeof this._BAState.xhrSendPre.contentLen&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.RESPONSE_CONTENT_LENGTH]=this._BAState.xhrSendPre.contentLen),this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.FIRST_BYTE]||this._BAState.xhrSendPre.contentLen||(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.FIRST_BYTE]=this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.LAST_BYTE]),void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]=this.status),void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]=this.statusText),(0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]&&4===this.readyState||this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]>=400&&this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]<=600)&&BrowserAgent.errorUtils.createResourceError(this._BAState.xhrSendPre.evtObj,BrowserAgent.errorUtils.errorType.SUBTYPE.ERR,this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT],this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE],null,!1);var r=BrowserAgent.funcUtils.getValueFromHeader(this,BrowserAgent.globals.snippetAttrNames.RESPONSE_BT);if(r||(r=BrowserAgent.cookieUtils.getRawCookie(BrowserAgent.cookieUtils.cookies.BTRESP+"-"+this._BAState.xhrSendPre.evtObj.id)),r){var t=BrowserAgent.cookieUtils.tokenizeCookieIntoMap(r,",");BrowserAgent.cookieUtils.updateResDataObjWithCookieData(t,this._BAState.xhrSendPre.evtObj)}BrowserAgent.cookieUtils.deleteCookie(BrowserAgent.cookieUtils.cookies.BTRESP+"-"+this._BAState.xhrSendPre.evtObj.id,"/",null);var s=this._BAState.xhrSendPre.evtObj[BrowserAgent.cookieUtils.cookieKeys.CorBrowsGUIDChar];(s&&BrowserAgent.globals.lastCorBrowserGUIDsUsed.hasItem(s)||this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]===BrowserAgent.globals.httpStatusCodes.NOT_MODIFIED_304)&&(delete this._BAState.xhrSendPre.evtObj[BrowserAgent.cookieUtils.cookieKeys.CorBrowsGUIDChar],delete this._BAState.xhrSendPre.evtObj[BrowserAgent.cookieUtils.cookieKeys.apmStartTimeChar],delete this._BAState.xhrSendPre.evtObj[BrowserAgent.cookieUtils.cookieKeys.apmEndTimeChar]),(s=this._BAState.xhrSendPre.evtObj[BrowserAgent.cookieUtils.cookieKeys.CorBrowsGUIDChar])&&BrowserAgent.globals.lastCorBrowserGUIDsUsed.addItem(s),BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-e,BrowserAgent.globals.selfMonPerformance.ajax.numberOfAjax+=1,BrowserAgent.globals.selfMonPerformance.ajax.avgTimePerAjaxMS=BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS/BrowserAgent.globals.selfMonPerformance.ajax.numberOfAjax},xhrSendPre:function(){var e=performance.now();this._BAState.xhrSendPre||(this._BAState.xhrSendPre={});var r=arguments[arguments.length-1];this._BAState.xhrSendPre.isError=!1,this._BAState.xhrSendPre.contentLen=null;try{if(!this._BAState.xhrOpenPre.isError&&this._BAState.xhrOpenPre._isAjaxInstrumented){if(this._BAState.xhrSendPre.evtObjTS=BrowserAgentBootstrap.origFuncMap.timeNow(),this._BAState.xhrSendPre.evtObj=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.RES,!1,null),!this._BAState.xhrSendPre.evtObj)return void(this._BAState.xhrSendPre.isError=!0);BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.cookies.BTRESPID,this._BAState.xhrSendPre.evtObj.id,2,"/",null),this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.URL]=this._BAState.xhrOpenPre._fullURL,this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.METHOD]=this._BAState.xhrOpenPre._httpMethod,this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.ASYNC]=this._BAState.xhrOpenPre._async,this._BAState.xhrSendPre.bodySize=BrowserAgent.funcUtils.calculateAjaxRequestSize(r.invocationData[0]),!this._BAState.xhrSendPre.isError&&this._BAState.xhrSendPre.bodySize&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.REQUEST_BODY_SIZE]=this._BAState.xhrSendPre.bodySize);var t=this.onloadend,s=this.onreadystatechange,o=this.onload,n=this.onerror,a=this.ontimeout,g=this.onabort;if(this.onload=function(){var e,r=performance.now();o&&(BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - onload pre"]),BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-r,e=o.apply(this,arguments));try{BrowserAgent.globals.isOldXHR&&!this._BAState.xhrSendPre.isError&&(this.readyState===this.DONE&&(void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]=this.status),void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]=this.statusText)),BrowserAgent.funcUtils.tracers.xhrOnloadEndPost.apply(this),this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]||(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow()),BrowserAgent.funcUtils.evaluateAndAdjustEvtObject(this._BAState.xhrSendPre))}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - onload post ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return e},this.onloadend=function(){var e,r=performance.now();t&&(BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - onloadend pre"]),BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-r,e=t.apply(this,arguments));try{this._BAState.xhrSendPre.isError||(this.readyState===this.DONE&&(void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]=this.status),void 0===this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]=this.statusText)),BrowserAgent.funcUtils.tracers.xhrOnloadEndPost.apply(this),this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]||(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow()),BrowserAgent.funcUtils.evaluateAndAdjustEvtObject(this._BAState.xhrSendPre))}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - onloadend post ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return e},this.onreadystatechange=function(){var e,r=performance.now();try{this._BAState.xhrSendPre.isError||(this.readyState===this.LOADING?this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.FIRST_BYTE]=BrowserAgentBootstrap.origFuncMap.timeNow():this.readyState===this.DONE&&(this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE]=this.status,this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT]=this.statusText,this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.LAST_BYTE]=BrowserAgentBootstrap.origFuncMap.timeNow()))}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - orsc pre 1 ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return s&&(this.readyState===this.DONE&&BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - orsc pre 2"]),BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-r,e=s.apply(this,arguments)),e},this.onerror=function(){var e;try{BrowserAgent.errorUtils.createResourceError(this._BAState.xhrSendPre.evtObj,BrowserAgent.errorUtils.errorType.SUBTYPE.ERR,this.statusText,this.status,null,!1)}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - onerror pre 1 ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return n&&(BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - onerror pre 2"]),e=n.apply(this,arguments)),e},this.ontimeout=function(){var e;try{BrowserAgent.globals.isOldXHR?this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0):BrowserAgent.errorUtils.createResourceError(this._BAState.xhrSendPre.evtObj,BrowserAgent.errorUtils.errorType.SUBTYPE.TIMEOUT,BrowserAgent.errorUtils.errorType.SUBTYPE.TIMEOUT,this.status,null,!1)}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - ontimeout pre 1 ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return a&&(BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - ontimeout pre 2"]),e=a.apply(this,arguments)),e},this.onabort=function(){var e;try{BrowserAgent.errorUtils.createResourceError(this._BAState.xhrSendPre.evtObj,BrowserAgent.errorUtils.errorType.SUBTYPE.ABORT,BrowserAgent.errorUtils.errorType.SUBTYPE.ABORT,this.status,null,!1)}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre - onabort pre 1 ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return g&&(BrowserAgent.funcUtils.setCbkStart.apply(this,["xhrSendPre - onabort pre 2"]),e=g.apply(this,arguments)),e},BrowserAgent.globals.isOldXHR){var i,l=this.abort;this.abort=function(){try{this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0)}catch(e){this._BAState.xhrSendPre.isError=!0,BrowserAgent.logger.error("xhrSendPre - abort pre ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}return l&&(i=l.apply(this,arguments)),i}}this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.timestampNames.REQUEST_START]=BrowserAgentBootstrap.origFuncMap.timeNow(),this._BAState.xhrSendPre.evtObj[BrowserAgent.globals.trackerDataKey]=BrowserAgent.browserUtils.cloneTrackerData()}}catch(e){this._BAState.xhrSendPre.isError=!0,this._BAState.xhrSendPre.evtObj&&(this._BAState.xhrSendPre.evtObj.isDelete=!0),BrowserAgent.logger.error("xhrSendPre ("+this._BAState.xhrOpenPre._fullURL+"): "+e.message)}BrowserAgent.globals.selfMonPerformance.ajax.totalTimeMS+=performance.now()-e},JSFuncPre:function(){var e=arguments[arguments.length-1];try{if(e.JSFuncPre||(e.JSFuncPre={}),e.JSFuncPre.isError=!1,e.JSFuncPre.isInstrumented=!0,!1===BrowserAgent.globals.configs.JSFUNCTIONMETRICSENABLED)return BrowserAgent.logger.info("JSFuncPre ("+e.origFunctionName+"): JS Function Metrics are DISABLED."),void(e.JSFuncPre.isInstrumented=!1);if(BrowserAgent.globals.currPagePtr.isExcluded)return void(e.JSFuncPre.isInstrumented=!1);e.JSFuncPre.evtObj=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.FN,!1,BrowserAgent.globals.timestampNames.START_TIME),e.JSFuncPre.evtObj||(e.JSFuncPre.isError=!0)}catch(r){e.JSFuncPre.isError=!0,e.JSFuncPre.evtObj&&(e.JSFuncPre.evtObj.isDelete=!0),BrowserAgent.logger.error("JSFuncPre ("+e.origFunctionName+"): "+r.message)}},JSFuncPost:function(){var e=arguments[arguments.length-1];try{!e.JSFuncPre.isError&&e.JSFuncPre.isInstrumented&&(e.JSFuncPre.evtObj[BrowserAgent.globals.trackerDataKey]=BrowserAgent.browserUtils.cloneTrackerData(),e.JSFuncPre.evtObj[BrowserAgent.globals.timestampNames.REQUEST_START]=BrowserAgentBootstrap.origFuncMap.timeNow(),e.JSFuncPre.evtObj.fnName=e.origFunctionName,e.JSFuncPre.evtObj.isDone=!0)}catch(r){e.JSFuncPre.evtObj&&(e.JSFuncPre.evtObj.isDelete=!0),BrowserAgent.logger.error("JSFuncPost ("+e.origFunctionName+"): "+r.message)}},routeChangePre:function(){var e=arguments[arguments.length-1];try{if(e.routeChangePre||(e.routeChangePre={}),e.routeChangePre.isError=!1,e.routeChangePre[BrowserAgent.globals.softPageDataKeys.START]=BrowserAgentBootstrap.origFuncMap.timeNow(),e.routeChangePre[BrowserAgent.globals.trackerDataKey]=BrowserAgent.browserUtils.cloneTrackerData(),!BrowserAgent.globals.configs.PAGELOADMETRICSENABLED)return void BrowserAgent.logger.info("routeChangePre: Soft Page Metrics are DISABLED.");(BrowserAgent.globals.domChangeTimeoutId||BrowserAgent.globals.domChangeTimerId)&&(BrowserAgent.logger.debug(e.origFunctionName+" routeChangePre: DOM change tracking terminated by new route change."),BrowserAgent.pageUtils.endDomTracking(e.routeChangePre[BrowserAgent.globals.softPageDataKeys.START]))}catch(r){e.routeChangePre.isError=!0,BrowserAgent.logger.error("routeChangePre ("+e.origFunctionName+"): "+r.message)}},routeChangePost:function(){var e=arguments[arguments.length-1];try{if(!1===BrowserAgent.globals.configs.BROWSERAGENTENABLED)return;if(BrowserAgent.pageUtils.addNewPageBucket(BrowserAgent.globals.pageBucketTypes.SP,window.location.href,e.routeChangePre[BrowserAgent.globals.softPageDataKeys.START],!0,e.routeChangePre[BrowserAgent.globals.trackerDataKey]),!BrowserAgent.globals.isSoftPageLoad)return;e.routeChangePre.isError||BrowserAgent.pageUtils.startDomTracking(e.routeChangePre[BrowserAgent.globals.softPageDataKeys.START],e.routeChangePre[BrowserAgent.globals.trackerDataKey])}catch(r){BrowserAgent.logger.error("routeChangePost ("+e.origFunctionName+"): "+r.message)}},jQXHRPost:function(){BrowserAgent.globals.selfMonPerformance.jquery.numberOfJQ+=1;var e=performance.now(),r=arguments[arguments.length-1];try{if(!1===BrowserAgent.globals.isJQ)return;if(r.jQXhrPost||(r.jQXhrPost={}),"boolean"!=typeof BrowserAgent.globals.isJQ&&BrowserAgent.browserUtils.isJQPresent(),!0===r.jQXhrPost.isVisited)return;$.ajaxPrefilter(function(e,t,s){var o=performance.now();if(!1!==BrowserAgent.globals.configs.AJAXMETRICSENABLED){e._evtInfo={},e._evtInfo.evtId=BrowserAgent.globals.peekSequenceNum(),e._evtInfo.pageId=BrowserAgent.globals.currPagePtr.id;var n,a=t.success,g=t.complete,i=t.error;BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-o,a&&(e.success=function(e,t,s){o=performance.now();var g;try{(g=BrowserAgent.globals.pageBucketsMap[this._evtInfo.pageId].evtMap[this._evtInfo.evtId])&&(g[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,g&&(g.isDelete=!0),BrowserAgent.logger.error("jQuery Success CBK Pre ("+r.origFunctionName+"): "+e.message)}BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-o,n=a.apply(this,arguments),o=performance.now();try{!r.jQXhrPost.isError&&g&&(g[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,g&&(g.isDelete=!0),BrowserAgent.logger.error("jQuery Success CBK Post ("+r.origFunctionName+"): "+e.message)}return BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-o,BrowserAgent.globals.selfMonPerformance.jquery.avgTimePerJQMS=BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS/BrowserAgent.globals.selfMonPerformance.jquery.numberOfJQ,n}),g&&(e.complete=function(e,t){var s,o,n=performance.now();try{s=BrowserAgent.globals.pageBucketsMap[this._evtInfo.pageId].evtMap[this._evtInfo.evtId],r.jQXhrPost.isError||!s||s[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]||(s[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,s&&(s.isDelete=!0),BrowserAgent.logger.error("jQuery Complete CBK Pre ("+r.origFunctionName+"): "+e.message)}BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-n,o=g.apply(this,arguments),n=performance.now();try{!r.jQXhrPost.isError&&s&&(s[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,s&&(s.isDelete=!0),BrowserAgent.logger.error("jQuery Complete CBK Post ("+r.origFunctionName+"): "+e.message)}return BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-n,BrowserAgent.globals.selfMonPerformance.jquery.avgTimePerJQMS=BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS/BrowserAgent.globals.selfMonPerformance.jquery.numberOfJQ,o}),e.error=function(e,t,s){var o,n,a,g;try{(o=BrowserAgent.globals.pageBucketsMap[this._evtInfo.pageId].evtMap[this._evtInfo.evtId])&&(BrowserAgent.globals.isOldXHR?(o.isDelete=!0,r.jQXhrPost.isError=!0):("object"==typeof s?(a=s.message,g=s.stack):a=s||e.statusText,BrowserAgent.errorUtils.createResourceError(o,t,a,e.status,g,!0)))}catch(e){r.jQXhrPost.isError=!0,o&&(o.isDelete=!0),BrowserAgent.logger.error("jQuery Error CBK Pre 1 ("+r.origFunctionName+"): "+e.message)}if(i){try{!r.jQXhrPost.isError&&o&&(o[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,o&&(o.isDelete=!0),BrowserAgent.logger.error("jQuery Error CBK Pre 2 ("+r.origFunctionName+"): "+e.message)}n=i.apply(this,arguments);try{!r.jQXhrPost.isError&&o&&(o[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=BrowserAgentBootstrap.origFuncMap.timeNow())}catch(e){r.jQXhrPost.isError=!0,o&&(o.isDelete=!0),BrowserAgent.logger.error("jQuery Error CBK Post ("+r.origFunctionName+"): "+e.message)}}return n}}}),r.jQXhrPost.isVisited=!0,BrowserAgent.globals.selfMonPerformance.jquery.totalTimeMS+=performance.now()-e}catch(e){BrowserAgent.logger.error("jQuery.ajaxSettings.xhrPost ("+r.origFunctionName+"): "+e.message)}}},evaluateAndAdjustEvtObject:function(e){e.evtObj.isDone=!0;var r=BrowserAgent.globals.EVENT_THRESHOLD+1;if(BrowserAgent.globals.lastUserMouseDown=1&&g0&&s>0&&n>0&&a>0&&(t>s||t+os&&(w=s)}if(n||(w=s),w0){for(var u=0;u0&&(l.x_attributes=B,A=!0)}return i&&(l.bucketId=i,l.adjustedStartTime||(l.adjustedStartTime=l.startTime),A=!0),A?l:null},createMetric:function(e,r,t,s,o){if(!BrowserAgent.jsonUtils.validateMetric(e,r,t,s,o))return BrowserAgent.logger.info("createMetric: Invalid metric input. Discard metric..."),null;if("undefined"!=typeof BrowserAgentExtension){if(e){var n=e.split("|"),a=n[n.length>2?2:n.length-1];(void 0===a||a&&("/"===a.trim()||""===a.trim()))&&(n[n.length>2?2:n.length-1]="/"+BrowserAgent.globals.appInfo.id),("true"===BrowserAgent.globals.appInfo.useAxaAppName||!0===BrowserAgent.globals.appInfo.useAxaAppName)&&n.length>=1&&(n[1]=BrowserAgent.globals.appInfo.id);var g=sessionStorage.getItem(BrowserAgent.storageUtils.storageKeys.BATTPERST);if(g){var i=JSON.parse(g).axa_transaction;if(i)for(var l in i){var A=i[l];if(A&&A.name&&A.name===BrowserAgentExtension.internal.axaExtDataKeys.TXNNAME){n[n.length>2?2:n.length-1]=A.value,e=n.join("|");break}}}e=n.join("|")}var B=BrowserAgentExtension.extNameFormatter(e,r,t,s,o);if(B){if(!BrowserAgent.jsonUtils.validateMetric(B.path,B.name,B.unit,B.accumulatorType,B.value))return BrowserAgent.logger.info("createMetric: Invalid metric input after Name Formatter. Discard metric..."),null;e=B.path,r=B.name,t=B.unit,s=B.accumulatorType,o=B.value}}var w={path:e=BrowserAgent.jsonUtils.truncateMetricPath(e),name:r,accumulatorType:s,value:o.toString()};return 0===s&&t&&(w.unit=t),w},validateMetric:function(e,r,t,s,o){if("string"!=typeof e||0===e.length||"string"!=typeof r||0===r.length||"number"!=typeof s)return!1;switch(s){case BrowserAgent.globals.metricAggregatorType.STRING:if("string"!=typeof o||o.length<1)return!1;break;default:if("number"!=typeof o||isNaN(o)||o<0)return!1}for(var n in BrowserAgent.globals.metricAggregatorType)if(s===BrowserAgent.globals.metricAggregatorType[n])return!0;return!1},createBS:function(e,r,t){return e&&e!==BrowserAgent.globals.UNDEFINED?{name:e,businessTransactionList:[{name:r,transactions:{transactionList:[{name:t}]}}]}:null},addToList:function(e,r){r&&e&&r.push(e)},createAPMData:function(e,r){var t={},s=!1;return e&&e.length>0&&(t.metrics={metricList:e},s=!0),r&&r.length>0&&(t.transactionTraces={transactionTraceList:r},s=!0),s?t:null},createRequest:function(e,r,t){var s={},o=!1;return"string"==typeof e&&e.length>0&&(s.url=e,o=!0),"string"==typeof r&&r.length>0&&(s.method=r.toUpperCase(),o=!0),"number"==typeof t&&t>0&&(s.bodySize=t,o=!0),o?s:null},createResponse:function(e,r,t){var s={},o=!1;return"number"==typeof e&&(s.status=e,o=!0),"string"==typeof r&&r.length>0&&(s.statusText=r),t&&(s.content=t),o?s:null},createContent:function(e){var r={},t=!1;return"number"==typeof e&&(r.size=e,t=!0),t?r:null},createResource:function(e,r,t,s,o,n,a,g,i){var l={},A=!1;return"string"==typeof e&&(l.type=e),"string"==typeof r&&(l.subType=r),"number"==typeof t&&(l.timeStamp=t),s&&(l.businessService=s),o&&(l.apmData=o,A=!0),n&&(l.request=n,A=!0),a&&(l.response=a,A=!0),g&&(l.error=g),i&&(l.axaData=i,A=!0),A?l:null},createError:function(e,r,t,s,o,n,a,g,i,l){var A={},B=!1;return e&&(A.type=e,B=!0),"string"==typeof r&&r.length>0&&(A.subType=r,B=!0),"string"==typeof t&&t.length>0&&(A.message=t,B=!0),"string"==typeof s&&s.length>0&&(A.source=s,B=!0),o&&(A.lineNumber=o,B=!0),n&&(A.columnNumber=n,B=!0),"string"==typeof a&&a.length>0&&(A.stackTrace=a,B=!0),"number"==typeof g&&(A.timeStamp=g,B=!0),i&&(A.apmData=i,B=!0),l&&(A.axaData=l,B=!0),B?A:null},createXAttribute:function(e,r,t){if(!e||!r)return null;e==BrowserAgent.globals.isSynthetic&&(r=!!BrowserAgent.globals.isSyntheticData);var s={};return s.name=e,s.value=r.toString(),t&&(s.description=t),s},createCookies:function(e){if(!e)return null;var r=[],t=!1;for(var s in e)s&&e[s]&&(r.push({name:s,value:e[s]}),t=!0);return t?{cookieList:r}:null},createAXAData:function(e){return e&&e.length>0?{axaEventList:e}:null},createAUTOAXAData:function(e,r,t,s){if(!e||!e.url)return null;var o,n,a,g=[],i=[],l=!1,A=BrowserAgent.browserUtils.parseURL(e.url);if(A&&A.pathname){var B=!("SP"!==e.pageType&&!A.hash);!A.pathname||"/"!==A.pathname&&""!==A.pathname.trim()||(A.pathname="/"+BrowserAgent.globals.appInfo.id),o=B&&A&&A.hash&&A.hash.length>0&&(r||"#/"!==A.hash&&"HP"!=e.pageType)?A.pathname+"_"+A.hash:A.pathname,n=t||e.time,a=s||(e.endTime?e.endTime:BrowserAgentBootstrap.origFuncMap.timeNow()),g.push(BrowserAgent.jsonUtils.createXAttribute("ca_at",o)),g.push(BrowserAgent.jsonUtils.createXAttribute("ca_as",o)),g.push(BrowserAgent.jsonUtils.createXAttribute("txn_s",n)),g.push(BrowserAgent.jsonUtils.createXAttribute("mode","AUTO"))}return g.length>0&&(i.push({eventName:"apptxn_start",eventType:"txn_events",eventValue:o,timeStamp:n,x_attributes:{x_attributeList:g}}),i.push({eventName:"apptxn_end",eventType:"txn_events",eventValue:o,timeStamp:a,x_attributes:{x_attributeList:g}})),i.length>0&&(l=!0),l?{axaEventList:i}:null},createInternalData:function(e,r){if(!e)return null;var t,s,o=BrowserAgent.globals.agentCookiePrefix,n={},a=[];for(var g in r)e[t=o+r[g]]&&(n[t]=e[t],s=!0,delete e[t]);for(g in e)a.push(BrowserAgent.jsonUtils.createXAttribute(g,e[g])),s=!0;return a.length>0&&(n.x_attributes={x_attributeList:a}),s?n:null},updateEUMWithGeo:function(e){var r=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.GEOCUSTOM),t=null;if(null!==r&&(t=BrowserAgentBootstrap.origFuncMap.jsonParse(r),BrowserAgent.globals.geo.lat=t.lat,BrowserAgent.globals.geo.lon=t.lon),!e.clientInfo.geolocation||null!==t){var s=BrowserAgent.globals.geo;s&&s.lat&&s.lon&&s.lat>=-90&&s.lat<=90&&s.lon>=-180&&s.lon<=180&&(e.clientInfo.geolocation={latitude:s.lat,longitude:s.lon})}}},BrowserAgent.RetrySendEventXHR=function(e,r){this.retryCount=BrowserAgent.globals.configs.METRICPAYLOADSENDTRYCOUNT,this.url=e,this.sendData=r,this.sendDataAsString=BrowserAgent.jsonStringify(this.sendData),this.retryDelay=Math.floor(1e3*Math.random()),this.retryInstance=BrowserAgent.browserUtils.generateUUID(),this.hasStarted=!1,this.retryCountOnErrorCBFunction=null,BrowserAgent.evtUtils.addToRetryPayloadsMap(this.retryInstance,this.url,this.sendData);var t=this;this._setupXHR=function(){t.perfStart=performance.now(),BrowserAgent.browserUtils.getXHRforBAMetrics();var e=BrowserAgent.browserUtils.XHRToSendMetrics;e?(e.onerror=function(){t.retryCount>0?(BrowserAgent.evtUtils.addToRetryPayloadsMap(t.retryInstance,t.url,t.sendData),t.retryCount-=1,t.retryDelay=Math.floor(Math.random()*BrowserAgent.globals.MINIMUM_RETRY_DELAY+BrowserAgent.globals.MINIMUM_RETRY_DELAY),BrowserAgent.logger.error("sendMetrics.setupXHR.onerror: payload error. Retry attempts left: "+t.retryCount+". Going to retry in: "+t.retryDelay+" ms."),setTimeout(t._setupXHR,t.retryDelay)):BrowserAgent.logger.error("sendMetrics.setupXHR.onerror: payload error. No more retries left"),t.retryCountOnErrorCBFunction&&t.retryCountOnErrorCBFunction(t.retryCount)},e.onreadystatechange=function(){if(this.readyState===this.DONE&&(204===this.status&&BrowserAgent.globals.BALocalProfileUpdate?(BrowserAgent.logger.info("sendMetrics.setupXHR.orsc: Browser Agent app profile updated. Getting new app profile..."),BrowserAgent.configUtils.getAppProfile(BrowserAgent.globals.profileURL)):0===this.status&&BrowserAgent.logger.error("sendMetrics.setupXHR.orsc: Browser Agent metrics send error. Browser is most likely discarding them."),0!==this.status)){t.perfEnd=performance.now(),BrowserAgent.globals.selfMonPerformance.payload.numberOfPayloads+=1,BrowserAgent.globals.selfMonPerformance.payload.totalSizeBytes+=t.sendDataAsString.length,(0===BrowserAgent.globals.selfMonPerformance.payload.minSizeBytes||BrowserAgent.globals.selfMonPerformance.payload.minSizeBytes>t.sendDataAsString.length)&&(BrowserAgent.globals.selfMonPerformance.payload.minSizeBytes=t.sendDataAsString.length),BrowserAgent.globals.selfMonPerformance.payload.maxSizeBytes=0&&s0))){for(var g=0;g0?a[0].path:e,A=[];BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createTT(l,BrowserAgent.globals.CorBrowsGUID,t.raw.navigationStart,parseInt(BrowserAgent.globals.startTime),s,n,t.raw.responseStart,parseInt(BrowserAgent.globals.endTime),t.bucketId),A);var B,w=!1,c=BrowserAgent.jsonUtils.createAPMData(a,A),u=BrowserAgent.jsonUtils.createAXAData(t[BrowserAgent.globals.trackerDataKey]);if(r.rawData={navigationTiming:BrowserAgent.browserUtils.copyObj(t.raw)},r.rawData&&r.rawData.navigationTiming&&(B=BrowserAgent.jsonUtils.createAUTOAXAData(r,!1,r.rawData.navigationTiming.fetchStart,r.rawData.navigationTiming.loadEventEnd)),BrowserAgent.globals.isSyntheticData&&(BrowserAgent.globals.eumJSONShell.app.isSynthetic=BrowserAgent.globals.isSyntheticData),BrowserAgent.globals.agentCookies){var p=BrowserAgent.jsonUtils.createInternalData(BrowserAgent.globals.agentCookies,BrowserAgent.globals.agentCookieKeyName);p&&(BrowserAgent.globals.CorBrowsGUID&&(p.correlationBrowserGUID=BrowserAgent.globals.CorBrowsGUID),t.bucketId&&(p.bucketId=t.bucketId),r.internalData=p)}return c&&(r.apmData=c,w=!0),u?(r.axaData=u,w=!0):B&&(r.axaData=B,w=!0),w},handleSPLoadEvt:function(e,r,t){if(!t)return!1;if(!e||!r||!BrowserAgent.globals.configs.PAGELOADMETRICSENABLED)return t.isDelete=!0,!1;if(r.pageLoadFlag=!0,!t[BrowserAgent.globals.softPageDataKeys.START]||!t[BrowserAgent.globals.softPageDataKeys.END])return t.isDelete=!0,BrowserAgent.logger.warn("handleSPLoadEvt: Obtained invalid page load data point. Deleting it..."),!1;var s=t[BrowserAgent.globals.softPageDataKeys.END]-t[BrowserAgent.globals.softPageDataKeys.START];if(s>=0&&s0?o[0].path:e,a=[];BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createTT(n,null,r.rawData.softPageTiming.startTime,r.rawData.softPageTiming.startTime,s,null,null,null,t.bucketId),a);var g=BrowserAgent.jsonUtils.createAPMData(o,a);g&&(r.apmData=g)}var i,l=BrowserAgent.jsonUtils.createAXAData(t[BrowserAgent.globals.trackerDataKey]);return r.rawData&&r.rawData.softPageTiming&&(i=BrowserAgent.jsonUtils.createAUTOAXAData(r,!1,r.rawData.softPageTiming.startTime,r.rawData.softPageTiming.endTime)),r.axaData=l||i,!0},handleResEvt:function(e,r,t){if(!t)return!1;if(!e||!r||!BrowserAgent.evtUtils.isValidResEvt(t)||!BrowserAgent.globals.configs.AJAXMETRICSENABLED&&!t[BrowserAgent.globals.RAW_RESOURCE_TIME_DATA])return BrowserAgent.logger.warn("handleResEvt: Obtained invalid AJAX data point or AJAX metrics are DISABLED. Deleting it..."),t.isDelete=!0,!1;BrowserAgent.evtUtils.truncateURL(r);var s=BrowserAgent.browserUtils.parseURL(t.url).pathname;if(t&&BrowserAgent.globals.fetchHeaderData.length>0&&BrowserAgent.globals.fetchReqUrl.length>0&&BrowserAgent.globals.fetchReqUrl.includes(t.url)){var o=BrowserAgent.globals.fetchHeaderData.shift();BrowserAgent.cookieUtils.updateHPDataObjWithCookieData(BrowserAgent.cookieUtils.tokenizeCookieIntoMap(decodeURIComponent(o),",")),(BrowserAgent.browserUtils.getLastSegmentFromPathname(s).includes("graphql")||BrowserAgent.browserUtils.getLastSegmentFromPathname(s).includes("gql"))&&(t[BrowserAgent.globals.isGrphqlResp]=!0),t[BrowserAgent.cookieUtils.cookieKeys.CorBrowsGUIDChar]=BrowserAgent.globals.CorBrowsGUID,t[BrowserAgent.cookieUtils.cookieKeys.apmStartTimeChar]=BrowserAgent.globals.startTime,t[BrowserAgent.cookieUtils.cookieKeys.apmEndTimeChar]=BrowserAgent.globals.endTime}var n=t[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]-t[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME];n>0&&t[BrowserAgent.globals.timestampNames.LAST_BYTE]>0&&t[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]0&&t[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]>0&&((n=t[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]-t[BrowserAgent.globals.timestampNames.LAST_BYTE])>0?t[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=t[BrowserAgent.globals.timestampNames.LAST_BYTE]:(t[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=0,t[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=0,n=0));var a=null,g=t[BrowserAgent.globals.RAW_RESOURCE_TIME_DATA];if(void 0===g||null===g){var i=BrowserAgent.globals.urlToPerformanceListMap[t[BrowserAgent.globals.ajaxDataKeys.URL]];if(i){var l=t[BrowserAgent.globals.timestampNames.REQUEST_START],A=BrowserAgent.evtUtils.determineBestMatchIndex(i,l);null!==(a=BrowserAgent.evtUtils.getCorrelatePerfTimingObject(A,i,t))&&BrowserAgent.evtUtils.adjustAPMMetricsForPerfObject(a,t,n)}}var B=t[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]-t[BrowserAgent.globals.timestampNames.REQUEST_START];if(B>=0&&B=0&&BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createMetric(e,BrowserAgent.globals.defaultMetricDefs.AJAX_TTFB.name,BrowserAgent.globals.defaultMetricDefs.AJAX_TTFB.unit,BrowserAgent.globals.defaultMetricDefs.AJAX_TTFB.type,f),S),d>=0&&BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createMetric(e,BrowserAgent.globals.defaultMetricDefs.AJAX_RDT.name,BrowserAgent.globals.defaultMetricDefs.AJAX_RDT.unit,BrowserAgent.globals.defaultMetricDefs.AJAX_RDT.type,d),S),n>=0&&BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createMetric(e,BrowserAgent.globals.defaultMetricDefs.AJAX_CBET.name,BrowserAgent.globals.defaultMetricDefs.AJAX_CBET.unit,BrowserAgent.globals.defaultMetricDefs.AJAX_CBET.type,n),S),BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createMetric(e,BrowserAgent.globals.defaultMetricDefs.AJAX_ICPI.name,BrowserAgent.globals.defaultMetricDefs.AJAX_ICPI.unit,BrowserAgent.globals.defaultMetricDefs.AJAX_ICPI.type,1),S));var T=S.length>0?S[0].path:e,h=[];BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createTT(T,t[BrowserAgent.cookieUtils.cookieKeys.CorBrowsGUIDChar],t[BrowserAgent.globals.timestampNames.REQUEST_START],parseInt(t[BrowserAgent.cookieUtils.cookieKeys.apmStartTimeChar]),B,f,t[BrowserAgent.globals.timestampNames.FIRST_BYTE],parseInt(t[BrowserAgent.cookieUtils.cookieKeys.apmEndTimeChar]),t.bucketId),h),t&&t[BrowserAgent.globals.ajaxDataKeys.URL]&&(h[0].x_attributes&&h[0].x_attributes.x_attributeList||(h[0].x_attributes=h[0].x_attributes?h[0].x_attributes:{},h[0].x_attributes.x_attributeList=h[0].x_attributes.x_attributeList?h[0].x_attributes.x_attributeList:[]),BrowserAgent.jsonUtils.addToList(BrowserAgent.jsonUtils.createURLXAttribute(t[BrowserAgent.globals.ajaxDataKeys.URL]),h[0].x_attributes.x_attributeList)),h[0].x_attributes.x_attributeList.push(BrowserAgent.jsonUtils.createXAttribute("TTPlugin.globalAttribute.AXAAppName",BrowserAgent.globals.appInfo.id)),h[0].x_attributes.x_attributeList.push(BrowserAgent.jsonUtils.createXAttribute(BrowserAgent.globals.isSynthetic,BrowserAgent.globals.isSynthetic));var U,R,v,P=t[BrowserAgent.globals.ajaxDataKeys.ERR];P&&BrowserAgent.configUtils.isErrorExcluded(t[BrowserAgent.globals.ajaxDataKeys.URL],P[BrowserAgent.errorUtils.errorDataFields.SUB])?BrowserAgent.logger.warn("handleResEvt: Resource ["+t[BrowserAgent.globals.ajaxDataKeys.URL]+"] and error message ["+P[BrowserAgent.errorUtils.errorDataFields.SUB]+"] has been excluded"):P&&(v=BrowserAgent.jsonUtils.createMetric(e,BrowserAgent.globals.defaultMetricDefs.RES_EPI.name,BrowserAgent.globals.defaultMetricDefs.RES_EPI.unit,BrowserAgent.globals.defaultMetricDefs.RES_EPI.type,1),R=BrowserAgent.jsonUtils.createAPMData([v],null),U=BrowserAgent.jsonUtils.createError(P[BrowserAgent.errorUtils.errorDataFields.TYP],P[BrowserAgent.errorUtils.errorDataFields.SUB],P[BrowserAgent.errorUtils.errorDataFields.MSG],null,null,null,P[BrowserAgent.errorUtils.errorDataFields.STK],P[BrowserAgent.errorUtils.errorDataFields.STT],R,null));var I=BrowserAgent.jsonUtils.createAXAData(t[BrowserAgent.globals.trackerDataKey]);I||m!==BrowserAgent.globals.resourceType.AJAX||(I=BrowserAgent.jsonUtils.createAUTOAXAData(r,!0,t.rs,t.ce)),null===I&&t[BrowserAgent.globals.isGrphqlResp]&&(I=BrowserAgent.jsonUtils.createAUTOAXAData(r,!0,t.rs,t.ce));var C=BrowserAgent.jsonUtils.createResource(m,b,t[BrowserAgent.globals.timestampNames.REQUEST_START],c,BrowserAgent.jsonUtils.createAPMData(S,h),BrowserAgent.jsonUtils.createRequest(t[BrowserAgent.globals.ajaxDataKeys.URL],t[BrowserAgent.globals.ajaxDataKeys.METHOD],t[BrowserAgent.globals.ajaxDataKeys.REQUEST_BODY_SIZE]),BrowserAgent.jsonUtils.createResponse(t[BrowserAgent.globals.ajaxDataKeys.STATUS_CODE],t[BrowserAgent.globals.ajaxDataKeys.STATUS_TEXT],BrowserAgent.jsonUtils.createContent(t[BrowserAgent.globals.ajaxDataKeys.RESPONSE_CONTENT_LENGTH])),U,I),N=BrowserAgent.globals.agentCookieKeys;if(t[N]){var L=BrowserAgent.jsonUtils.createInternalData(t[N],BrowserAgent.globals.agentCookieKeyName);L&&(C.internalData=L)}if(I&&t[BrowserAgent.globals.isGrphqlResp]&&BrowserAgent.globals.agentCookies){var y=BrowserAgent.jsonUtils.createInternalData(BrowserAgent.globals.agentCookies,BrowserAgent.globals.agentCookieKeyName);y&&(BrowserAgent.globals.CorBrowsGUID&&(y.correlationBrowserGUID=BrowserAgent.globals.CorBrowsGUID),t.bucketId&&(y.bucketId=t.bucketId),C.internalData=y)}if(C){if(r.resources||(r.resources={resourceList:[]}),BrowserAgent.globals.isSyntheticData&&(BrowserAgent.globals.eumJSONShell.app.isSynthetic=BrowserAgent.globals.isSyntheticData),void 0!==(g=t[BrowserAgent.globals.RAW_RESOURCE_TIME_DATA])&&null!==g)if(g.performanceResourceTiming.encodedBodySize&&g.performanceResourceTiming.encodedBodySize>BrowserAgent.globals.maxLongValue){var O=BrowserAgent.evtUtils.getCorrelatePerfTimingObject(0,g.performanceResourceTiming,t);void 0!==O&&null!==O&&(C.rawData=O)}else C.rawData=g;else a&&(C.rawData=a),C.rawData||(C.rawData=BrowserAgent.evtUtils.getSpoofTimingPerfTimingObject(t,B)),BrowserAgent.evtUtils.addCBET(C,t,n);return r.resources.resourceList.push(C),C.error&&(r.resources.resErrCount?r.resources.resErrCount+=1:r.resources.resErrCount=1,r.resources.pageMetricPath||(r.resources.pageMetricPath=E)),!0}return!1},determineBestMatchIndex:function(e,r){var t=-1;if(0===e.length)return t;var s=Number.MAX_VALUE,o=BrowserAgent.browserUtils.binarySearchByPropCompare(e,r,BrowserAgent.globals.REQUEST_START_PROP_NAME);if(o>=0)t=o,s=0;else if(o<0)if(0===(o+=1))t=o,s=e[0].requestStart-r;else if(o<0){var n=-1*o,a=Number.MAX_VALUE;nBrowserAgent.globals.PERF_OBJ_CORR_MAX_ALLOWED_SPREAD&&(BrowserAgent.logger.info("determineBestMatchIndex : For resource "+e[t].perfObj.name+" spread "+s+" is greater than threshold "+BrowserAgent.globals.PERF_OBJ_CORR_MAX_ALLOWED_SPREAD),t=-1),t},getCorrelatePerfTimingObject:function(e,r,t){var s=null;if(e>=0){var o=null;(s={performanceResourceTiming:{name:(o=r[e]?r[e].perfObj:r).name?o.name:"",entryType:o.entryType?o.entryType:"",startTime:o.startTime?Math.ceil(o.startTime):0,duration:o.duration?Math.ceil(o.duration):0,initiatorType:o.initiatorType?o.initiatorType:"",nextHopProtocol:o.nextHopProtocol?o.nextHopProtocol:"",workerStart:o.workerStart?Math.ceil(o.workerStart):0,redirectStart:o.redirectStart?Math.ceil(o.redirectStart):0,redirectEnd:o.redirectEnd?Math.ceil(o.redirectEnd):0,fetchStart:o.fetchStart?Math.ceil(o.fetchStart):0,domainLookupStart:o.domainLookupStart?Math.ceil(o.domainLookupStart):0,domainLookupEnd:o.domainLookupEnd?Math.ceil(o.domainLookupEnd):0,connectStart:o.connectStart?Math.ceil(o.connectStart):0,connectEnd:o.connectEnd?Math.ceil(o.connectEnd):0,secureConnectionStart:o.secureConnectionStart?Math.ceil(o.secureConnectionStart):0,requestStart:o.requestStart?Math.ceil(o.requestStart):0,responseStart:o.responseStart?Math.ceil(o.responseStart):0,responseEnd:o.responseEnd?Math.ceil(o.responseEnd):0,transferSize:o.transferSize?o.transferSize:0,encodedBodySize:o.encodedBodySize&&o.encodedBodySize0?e.performanceResourceTiming.responseStart+performance.timing.navigationStart:r[BrowserAgent.globals.timestampNames.FIRST_BYTE],r[BrowserAgent.globals.timestampNames.LAST_BYTE]=e.performanceResourceTiming.responseEnd>0?e.performanceResourceTiming.responseEnd+performance.timing.navigationStart:r[BrowserAgent.globals.timestampNames.LAST_BYTE];var o=0;t>0?(o=e.performanceResourceTiming.responseEnd+performance.timing.navigationStart,r[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]=o,r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=t+o):r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]>0&&(o=e.performanceResourceTiming.responseEnd+performance.timing.navigationStart,r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]0&&(s=e[BrowserAgent.globals.timestampNames.FIRST_BYTE]-performance.timing.navigationStart);var o=0;e[BrowserAgent.globals.timestampNames.LAST_BYTE]>0&&(o=e[BrowserAgent.globals.timestampNames.LAST_BYTE]-performance.timing.navigationStart);var n={performanceResourceTiming:{startTime:t,name:e[BrowserAgent.globals.ajaxDataKeys.URL],entryType:"resource",duration:r,requestStart:t,responseStart:s,responseEnd:o}};return e[BrowserAgent.globals.ajaxDataKeys.RESPONSE_CONTENT_LENGTH]&&(n.performanceResourceTiming.decodedBodySize=e[BrowserAgent.globals.ajaxDataKeys.RESPONSE_CONTENT_LENGTH]),n},addCBET:function(e,r,t){if(null!==e.rawData&&null!==e.rawData.performanceResourceTiming&&(t>0?(e.rawData.performanceResourceTiming.callbackExecutionTimeStart=r[BrowserAgent.globals.timestampNames.CALLBACK_START_TIME]-performance.timing.navigationStart,e.rawData.performanceResourceTiming.callbackExecutionTimeEnd=r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]-performance.timing.navigationStart):r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]>0&&(e.rawData.performanceResourceTiming.callbackExecutionTimeEnd=r[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]-performance.timing.navigationStart),e.rawData.performanceResourceTiming.callbackExecutionTimeEnd>0)){var s=e.rawData.performanceResourceTiming.callbackExecutionTimeEnd-e.rawData.performanceResourceTiming.startTime;e.rawData.performanceResourceTiming.duration=s}},purgeOldPerfObjects:function(){var e=BrowserAgent.globals.currentPerfObjectCount;if(BrowserAgent.globals.currentPerfObjectCount>BrowserAgent.globals.MAX_PERF_OBJECT_CACHE_LIMIT){BrowserAgent.logger.info("purgeOldPerfObjects : called current object count "+BrowserAgent.globals.currentPerfObjectCount+" exceeds threshold "+BrowserAgent.globals.MAX_PERF_OBJECT_CACHE_LIMIT);var r,t=BrowserAgentBootstrap.origFuncMap.timeNow()-3e5;for(r in BrowserAgent.globals.urlToPerformanceListMap){for(var s=BrowserAgent.globals.urlToPerformanceListMap[r],o=0;s&&o=0&&s0&&(BrowserAgent.globals.selfMonPerformance.resource.avgTimePerResMS=BrowserAgent.globals.selfMonPerformance.resource.totalTimeMS/BrowserAgent.globals.selfMonPerformance.resource.numberOfRes),e=performance.now(),BrowserAgent.evtUtils.resourceTimingHarvest();var o,n,a,g,i,l,A=!1,B=0;for(o in BrowserAgent.globals.pageWithEventsMap)if(i=!1,void 0!==(n=BrowserAgent.globals.pageBucketsMap[o])){g=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.jsonStringify(n.json));for(a in n.evtMap)if(n.evtMap[a].isDone||n.evtMap[a].isDelete)if(n.evtMap[a].isDelete||BrowserAgent.evtUtils.isClamped(BrowserAgent.evtUtils.evtClampFlags.SND.type,B,BrowserAgent.globals.configs.EVENTDISPATCHCLAMPPERINTERVAL))delete n.evtMap[a],n.evtCount-=1;else{var w=n.evtMap[a].type;if(!g[BrowserAgent.globals.pageLoadFlag]&&w==BrowserAgent.globals.evtTypes.RES){var c=BrowserAgent.cookieUtils.cookies.BTPAGERESP,u=BrowserAgent.browserUtils.getLastSegmentFromPathname(window.location.pathname);u&&(c+="-"+encodeURIComponent(u));var p=BrowserAgent.cookieUtils.getRawCookie(c);p||(c=BrowserAgent.cookieUtils.cookies.BTPAGERESP,c+="-"+encodeURIComponent(window.location.pathname),p=BrowserAgent.cookieUtils.getRawCookie(c)),BrowserAgent.cookieUtils.deleteCookie(c,"/",null),BrowserAgent.evtUtils.prepareDataObjForGraphqlResponse(n.evtMap[a],p)}BrowserAgent.globals.fetchGlobalSyntheticFlag();var f=w?BrowserAgent.globals.evtHandlers[w]:null;f&&(l=f(n.pageMetricPath,g,n.evtMap[a])),l&&(B+=1),i=l||i,delete n.evtMap[a],n.evtCount-=1}if(n.evtCount<1&&delete BrowserAgent.globals.pageWithEventsMap[o],!0===n.newPage&&!0===BrowserAgent.globals.configs.COOKIECAPTUREENABLED){var d=BrowserAgent.jsonUtils.createCookies(BrowserAgent.cookieUtils.getAppCookies());d&&(g.cookies=d,i=!0),n.newPage=!1}if(g.resources&&g.resources.resErrCount>=1){var E=BrowserAgent.jsonUtils.createMetric(g.resources.pageMetricPath,BrowserAgent.globals.defaultMetricDefs.PAGE_EPI.name,BrowserAgent.globals.defaultMetricDefs.PAGE_EPI.unit,BrowserAgent.globals.defaultMetricDefs.PAGE_EPI.type,g.resources.resErrCount);g.apmData?g.apmData.metrics.metricList.push(E):g.apmData=BrowserAgent.jsonUtils.createAPMData([E],null),delete g.resources.resErrCount,delete g.resources.pageMetricPath}if(i){var m=n.json.sessions.sessionList[0].id,b=BrowserAgent.globals.sessionToActiveEUMPayloadMap[m];b||(BrowserAgent.jsonUtils.updateEUMWithGeo(BrowserAgent.globals.eumJSONShell),(b=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.jsonStringify(BrowserAgent.globals.eumJSONShell))).app.ba.pages.pageList=[],BrowserAgent.globals.sessionToActiveEUMPayloadMap[m]=b),b.app.ba.pages.pageList.push(g),A=!0,n.json.pageLoadFlag&&(n.json.pageLoadFlag=!1),n.json.sessions.sessionList[0].newSessionFlag&&(n.json.sessions.sessionList[0].newSessionFlag=!1),g.sessions.sessionList[0].cv={lch:!1}}else!0===g.pageLoadFlag&&(n.json.pageLoadFlag=!0)}A&&(BrowserAgent.evtUtils.payloadProcessing(),BrowserAgent.evtUtils.resetClamps()),BrowserAgent.evtUtils.purgeOldPerfObjects(),s=(t=performance.now())-e,BrowserAgent.globals.selfMonPerformance.harvestpayload.numberOfHarvestCycles+=1,(0===BrowserAgent.globals.selfMonPerformance.harvestpayload.minTimeMS||BrowserAgent.globals.selfMonPerformance.harvestpayload.minTimeMS>s)&&(BrowserAgent.globals.selfMonPerformance.harvestpayload.minTimeMS=s),(0===BrowserAgent.globals.selfMonPerformance.harvestpayload.maxTimeMS||BrowserAgent.globals.selfMonPerformance.harvestpayload.maxTimeMS{let[t,s]=r,o=await e(t,s),n=o.url;return o.headers.forEach(function(e,r){r==BrowserAgent.globals.snippetAttrNames.RESPONSE_BT&&e.includes(BrowserAgent.cookieUtils.cookieKeys.graphqlResp)?(BrowserAgent.globals.fetchHeaderData.push(e),BrowserAgent.globals.fetchReqUrl.push(n)):r.toLowerCase()==BrowserAgent.globals.snippetAttrNames.RESPONSE_BT&&(BrowserAgent.globals.fetchHeaderData.push(e),BrowserAgent.globals.fetchReqUrl.push(n))}),o})},payloadProcessing:function(){if(BrowserAgent.globals.isOnUnload)null!==BrowserAgent.globals.deferredPayloadProcessing&&(clearTimeout(BrowserAgent.globals.deferredPayloadProcessing),BrowserAgent.globals.deferredPayloadProcessing=null),BrowserAgent.browserUtils.isSameSession(BrowserAgentBootstrap.origFuncMap.timeNow())||BrowserAgent.globals.prevSessionList.push(BrowserAgent.globals.currSession),BrowserAgent.globals.prevSessionList.length>0?BrowserAgent.evtUtils.lastChunkDetermination():BrowserAgent.evtUtils.chunkStampingAndDispatch();else{if(null!==BrowserAgent.globals.deferredPayloadProcessing)return;BrowserAgent.globals.prevSessionList.length>0?BrowserAgent.globals.deferredPayloadProcessing=setTimeout(BrowserAgent.evtUtils.lastChunkDetermination,2*BrowserAgent.globals.configs.METRICFREQUENCY):BrowserAgent.evtUtils.chunkStampingAndDispatch()}},lastChunkDetermination:function(){for(var e=0;e0)for(var s=t.app.ba.pages.pageList,o=0;o0&&BrowserAgent.logger.error("chunkStampingAndDispatch: sessionToActiveEUMPayloadMap was found to still have "+s+" payloads ")},processPayloadForSession:function(e){if(e){var r=BrowserAgent.globals.sessionToActiveEUMPayloadMap[e.id];if(r&&r.app.ba.pages.pageList.length>0){for(var t=r.app.ba.pages.pageList,s=BrowserAgent.globals.sessionToChunkMap[e.id],o=0;o=0?s=o:o<0&&(0===(o+=1)?BrowserAgent.logger.warn("resourceTimingHarvest: found resource: "+e.name+" with time stamp earlier than all current buckets. Dropping item."):o<0&&(s=-1*o-1)),s},extractDataForResource:function(e,r){if(void 0!==e&&e>=0){var t=BrowserAgent.globals.sortedBucketList[e].bucket,s=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.RES,!1,null,t);if(null===s)return;s[BrowserAgent.globals.trackerDataKey]=BrowserAgent.browserUtils.cloneTrackerData(),s[BrowserAgent.globals.ajaxDataKeys.URL]=r.name;var o=Math.floor(r.startTime),n=Math.floor(r.fetchStart),a=Math.floor(r.responseStart),g=Math.floor(r.responseEnd);(o>0||n>0)&&(s[BrowserAgent.globals.timestampNames.REQUEST_START]=performance.timing.navigationStart+(o>0?o:n)),a>0&&(s[BrowserAgent.globals.timestampNames.FIRST_BYTE]=performance.timing.navigationStart+a),g>0&&(s[BrowserAgent.globals.timestampNames.LAST_BYTE]=performance.timing.navigationStart+g,s[BrowserAgent.globals.timestampNames.CALLBACK_END_TIME]=performance.timing.navigationStart+g),s[BrowserAgent.globals.ajaxDataKeys.RESPONSE_CONTENT_LENGTH]=r.decodedBodySize,s[BrowserAgent.globals.RAW_RESOURCE_TIME_DATA]={performanceResourceTiming:BrowserAgent.browserUtils.copyObj(r)},s.isDone=!0}},resourceTimingHarvest:function(){if(!BrowserAgent.globals.configs.RESOURCEMETRICSENABLED||!BrowserAgent.globals.isPerformanceResourceSupported)return 0;var e=performance.getEntriesByType("resource");if(void 0===e||e.length<=0)return 0;var r,t;for(t=0;t=0&&r.durationt&&(BrowserAgent.evtUtils.evtClampMask|=BrowserAgent.evtUtils.evtClampFlags[e].code,BrowserAgent.logger.warn("isClamped: Browser Agent"+BrowserAgent.evtUtils.evtClampFlags[e].desc+"clamp reached. Halting"+BrowserAgent.evtUtils.evtClampFlags[e].desc+"until next metric interval..."),!0)},resetClamps:function(){BrowserAgent.evtUtils.currEvtCt=0,BrowserAgent.errorUtils.currErrCt=0,BrowserAgent.evtUtils.evtClampMask=0},addToRetryPayloadsMap:function(e,r,t){var s=BrowserAgent.globals.retryPayloadsMap[e];return BrowserAgent.globals.retryPayloadsMap[e]={url:r,data:t},s},removeFromRetryPayloadsMap:function(e){var r=BrowserAgent.globals.retryPayloadsMap[e];return delete BrowserAgent.globals.retryPayloadsMap[e],r},saveRetryPayloadsMapToSession:function(){var e=[];for(var r in BrowserAgent.globals.retryPayloadsMap)e.push(BrowserAgent.globals.retryPayloadsMap[r]);BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.PAYLOADRETRYLIST,BrowserAgent.jsonStringify(e),!0),BrowserAgent.globals.retryPayloadsMap={}},processRetryPayloadsFromSession:function(){var e=BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.PAYLOADRETRYLIST);if(BrowserAgent.storageUtils.deleteFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.PAYLOADRETRYLIST),e)for(var r=BrowserAgentBootstrap.origFuncMap.jsonParse(e),t=0;t0;){var o=t.localName?t.localName.trim().toLocaleLowerCase():"";if(BrowserAgent.globals.supportedSPARouteTagNames[o]){r=t.textContent||t.innerText;break}t=t.parentElement,s-=1}null===r&&"undefined"!=typeof BrowserAgentExtension&&(r=BrowserAgentExtension.internal.safeCustomFunctionCall(this,BrowserAgentExtension.isClickedEventARouteChange,[e]));var n=BrowserAgentBootstrap.origFuncMap.timeNow();if(null!==r&&r===BrowserAgent.globals.lastCustomSPARouteName&&BrowserAgent.globals.lastCustomSPARouteTime>0){var a=n-BrowserAgent.globals.lastCustomSPARouteTime;a>=0&&aBrowserAgent.globals.pageBucketsMaxLen){var w=BrowserAgent.globals.sortedBucketList[0].id;delete BrowserAgent.globals.pageBucketsMap[w],delete BrowserAgent.globals.pageWithEventsMap[w],BrowserAgent.globals.sortedBucketList.shift()}return BrowserAgent.globals.currPagePtr}},onpopstate:function(e){BrowserAgent.pageUtils.onpopstateImpl(window.location.href)},onpopstateImpl:function(e){var r=BrowserAgentBootstrap.origFuncMap.timeNow(),t=BrowserAgent.browserUtils.cloneTrackerData();BrowserAgent.pageUtils.addNewPageBucket(BrowserAgent.globals.pageBucketTypes.SP,e,r,!0,t),(BrowserAgent.globals.domChangeTimeoutId||BrowserAgent.globals.domChangeTimerId)&&(BrowserAgent.logger.debug("onpopstate: DOM change tracking terminated by new route change."),BrowserAgent.pageUtils.endDomTracking(r)),BrowserAgent.globals.isSoftPageLoad&&BrowserAgent.pageUtils.startDomTracking(r,t)},disableSoftPages:function(){(BrowserAgent.globals.domChangeTimeoutId||BrowserAgent.globals.domChangeTimerId)&&BrowserAgent.pageUtils.clearDomChangeTrackers(),BrowserAgent.globals.isSoftPageLoad=!1},mouseEventHandler:function(){var e=BrowserAgentBootstrap.origFuncMap.timeNow();(BrowserAgent.globals.domChangeTimeoutId||BrowserAgent.globals.domChangeTimerId)&&(BrowserAgent.logger.debug("mouseEventHandler: DOM change tracking terminated by user interaction."),BrowserAgent.pageUtils.endDomTracking(e))},checkLastDOMChange:function(){BrowserAgentBootstrap.origFuncMap.timeNow()>BrowserAgent.globals.domLastUpdated+BrowserAgent.globals.configs.DOMCHANGEINTERVAL&&(BrowserAgent.logger.debug("checkLastDOMChange: DOM has finished loading."),BrowserAgent.pageUtils.endDomTracking(BrowserAgent.globals.domLastUpdated))},startDomTracking:function(e,r){if(e>0){var t=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.SPLOAD,!1,null);if(!t)return;BrowserAgent.globals.domChangeTimeoutId=setTimeout(function(){BrowserAgent.logger.debug("startDomTracking: DOM change tracking timed out."),BrowserAgent.pageUtils.endDomTracking(BrowserAgentBootstrap.origFuncMap.timeNow())},BrowserAgent.globals.configs.DOMCHANGETIMEOUT),BrowserAgent.globals.softPageLoadEvtObj=t,t[BrowserAgent.globals.softPageDataKeys.START]=e,t[BrowserAgent.globals.trackerDataKey]=r,BrowserAgent.globals.domChangeObserver.observe(document,BrowserAgent.globals.domChangeObserverConfig)}else BrowserAgent.logger.error("startDomTracking: startTime is invalid.")},endDomTracking:function(e){if(e>0){var r=BrowserAgent.globals.domLastUpdated;BrowserAgent.pageUtils.clearDomChangeTrackers(),r||(e=BrowserAgent.globals.softPageLoadEvtObj[BrowserAgent.globals.softPageDataKeys.START]),BrowserAgent.globals.softPageLoadEvtObj[BrowserAgent.globals.softPageDataKeys.END]=e,BrowserAgent.globals.softPageLoadEvtObj.isDone=!0}else BrowserAgent.logger.error("endDomTracking: Input is invalid.")},clearDomChangeTrackers:function(){BrowserAgent.globals.domChangeObserver.disconnect(),BrowserAgent.globals.domLastUpdated=null,clearInterval(BrowserAgent.globals.domChangeTimerId),BrowserAgent.globals.domChangeTimerId=null,clearTimeout(BrowserAgent.globals.domChangeTimeoutId),BrowserAgent.globals.domChangeTimeoutId=null,document.removeEventListener("mousedown",BrowserAgent.pageUtils.mouseEventHandler,!0),document.removeEventListener("scroll",BrowserAgent.pageUtils.mouseEventHandler,!0)},onload:function(){BrowserAgent.logger.info("onload: Detected 'onload' event..."),setTimeout(function(){BrowserAgent.pageUtils.onloadHelper()},0),setTimeout(function(){BrowserAgent.pageUtils.checkAnyCORSIssue()},2e3)},getAllFrameSourceList:function(){var e,r=[],t=document.getElementsByTagName("frame");for(e=0;e-1&&t.splice(r,1)}catch(e){((BrowserAgent.globals.platform===BrowserAgent.globals.userAgents.CHROME.name||BrowserAgent.globals.platform===BrowserAgent.globals.userAgents.SAFARI.name)&&e.code===DOMException.SECURITY_ERR||(BrowserAgent.globals.platform===BrowserAgent.globals.userAgents.IE.name||BrowserAgent.globals.platform===BrowserAgent.globals.userAgents.EDGE.name)&&"Permission denied"===e.message||e.message&&-1!=e.message.indexOf("Blocked a frame with origin"))&&BrowserAgent.logger.info("Frames Exception:: "+e.message,e)}for(e in t)BrowserAgent.errorUtils.captureCORSError(t[e],BrowserAgent.errorUtils.elementPointInCode(e,0))},onloadHelper:function(){BrowserAgent.logger.info("onloadHelper: OnloadHelper has started");var e=BrowserAgent.globals.pageBucketsMap[BrowserAgent.globals.initPageInfo.id];if(!e.isExcluded&&!BrowserAgent.evtUtils.isClamped(BrowserAgent.evtUtils.evtClampFlags.COL.type,BrowserAgent.evtUtils.currEvtCt,BrowserAgent.globals.configs.EVENTCOLLECTIONCLAMPPERINTERVAL)){var r=BrowserAgent.globals.getSequenceNum();e.evtMap[r]={id:r,type:BrowserAgent.globals.evtTypes.HPLOAD,raw:BrowserAgent.pageUtils.performance.timing,isDone:!0,bucketId:e.bucketId},e.evtMap[r][BrowserAgent.globals.trackerDataKey]=BrowserAgent.browserUtils.cloneTrackerData(),e.evtCount+=1,BrowserAgent.globals.pageWithEventsMap[BrowserAgent.globals.initPageInfo.id]=1}},unloadEventHandler:function(){setTimeout(function(){var e=performance.now();!BrowserAgent.globals.unloadEvtHndlrFlag&&BrowserAgent.globals.currTTimeEvtPtr&&(BrowserAgent.globals.currTTimeEvtPtr.e=BrowserAgentBootstrap.origFuncMap.timeNow(),BrowserAgent.globals.currTTimeEvtPtr.isDone=!0,BrowserAgent.globals.unloadEvtHndlrFlag=!0,BrowserAgent.globals.isOnUnload=!0,BrowserAgent.evtUtils.harvestEvts(),BrowserAgent.evtUtils.saveRetryPayloadsMapToSession(),BrowserAgent.configUtils.disableBA(),BrowserAgent.globals.selfMonPerformance.baunload=performance.now()-e,BrowserAgent.logger.info("unloadEventHandler: unload time was "+BrowserAgent.globals.selfMonPerformance.baunload))},0)}},"undefined"!=typeof BrowserAgentExtension&&(BrowserAgentExtension.extCustomPageMetricList=[],BrowserAgentExtension.extCustomOptionalPropertyList=[],BrowserAgentExtension.internal={astralRange:/\ud83c[\udffb-\udfff](?=\ud83c[\udffb-\udfff])|(?:[^\ud800-\udfff][\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]?|[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g,maxUserFeedbackLength:256,safeCustomFunctionCall:function(e,r,t){try{var s=null;return"function"==typeof r?s=r.apply(e,t):BrowserAgent.logger.error("safeCustomFunctionCall: function does not exist "),s}catch(e){BrowserAgent.logger.error("safeCustomFunctionCall: Error when invoking custom code in function: "+r.name+", Error: "+e.message)}},axaExtDataKeys:{CUSTID:"axa_customerId",CUSTSESSINFO:"axa_customSessionInfo",TXNNAME:"axa_transactionName",SVCNAME:"axa_serviceName",TXN:"axa_transaction"},createAXAEvent:function(e,r,t,s,o,n,a,g,i,l,A,B,w,c,u){var p={};return"number"!=typeof e||isNaN(e)||(p.eventId=e),"string"==typeof r&&(p.eventName=r),"string"==typeof t&&(p.eventType=t),("number"==typeof s&&!isNaN(s)||"string"==typeof s)&&(p.eventValue=s),"number"!=typeof o||isNaN(o)||(p.timeStamp=o),"string"==typeof n&&(p.url=n),"number"!=typeof a||isNaN(a)||(p.responseTime=a),"number"!=typeof g||isNaN(g)||(p.statusCode=g),"number"!=typeof i||isNaN(i)||(p.dataIn=i),"number"!=typeof l||isNaN(l)||(p.dataOut=l),"string"==typeof A&&(p.countryCode=A),"string"==typeof B&&(p.zipCode=B),"string"==typeof w&&(p.latitude=w),"string"==typeof c&&(p.longitude=c),u&&u.length>0&&(p.x_attributes={x_attributeList:u}),p},addAXAData:function(e){var r=null;try{if(null===e||"object"!=typeof e)return void BrowserAgent.logger.warn("addAXAData: Cannot add data due to invalid input");if(!(r=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.AXAEXT,!1,null)))return;var t,s,o=[],n=[],a=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR));if("string"==typeof e.trackerId&&null!==e.trackerData&&"object"==typeof e.trackerData){if(a&&a.trackerId)return;for(t in e.trackerData)(s=BrowserAgent.jsonUtils.createXAttribute(t,e.trackerData[t]))&&o.push(s);(a={})[e.trackerId]={x_attributes:{x_attributeList:o}},BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR,BrowserAgent.jsonStringify(a),!0)}else for(var g in a)n=n.concat(a[g].x_attributes.x_attributeList);if(e.attr)for(t in e.attr)(s=BrowserAgent.jsonUtils.createXAttribute(t,e.attr[t]))&&n.push(s);if(!(s=BrowserAgentExtension.internal.createAXAEvent(e.eid,e.n,e.ty,e.v,e.t,e.u,e.r,e.s,e.i,e.o,e.cc,e.zp,e.la,e.lo,n)))return void(r.isDelete=!0);r.d=s,r.isDone=!0}catch(e){r&&(r.isDelete=!0)}},clearTracker:function(e){var r;try{("string"!=typeof e||e.length<1)&&BrowserAgent.logger.warn("clearTracker: Cannot clear data for tracker ID ["+e+"]"),(r=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR)))&&r[e]&&(delete r[e],BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR,BrowserAgent.jsonStringify(r),!0))}catch(r){BrowserAgent.logger.error("clearTracker: Cannot clear data for tracker ID ["+e+"] - "+r.message)}},clearAllTrackers:function(){try{if(!BrowserAgent.globals.isStoragePresent)return;sessionStorage.removeItem(BrowserAgent.storageUtils.storageKeys.BATRKR);var e=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATTPERST));e&&(delete e[BrowserAgentExtension.internal.axaExtDataKeys.TXN],BrowserAgent.storageUtils.putInStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATTPERST,BrowserAgent.jsonStringify(e),!0))}catch(e){BrowserAgent.logger.error("clearAllTrackers: Cannot clear tracker data - "+e.message)}},getTrackerDataById:function(e){try{var r=BrowserAgentBootstrap.origFuncMap.jsonParse(BrowserAgent.storageUtils.getFromStorage(BrowserAgent.storageUtils.storageTypes.SESSION,BrowserAgent.storageUtils.storageKeys.BATRKR));return r&&r[e]?r[e]:null}catch(r){return BrowserAgent.logger.error("getTrackerDataById: Cannot obtain data for tracker ID ["+e+"] - "+r.message),null}},getTrueLength:function(e){var r=e.match(BrowserAgentExtension.internal.astralRange);return null===r?0:r.length},limitToLength:function(e,r){return BrowserAgentExtension.internal.getTrueLength(e)<=r?e:e.match(BrowserAgentExtension.internal.astralRange).slice(0,r).join("")}},BrowserAgentExtension.createCustomMetric=function(e,r,t,s,o){var n={name:e,accumulatorType:t,value:s,path:o};return r&&(n.unit=r),n},BrowserAgentExtension.addExtensionJSONObject=function(e){var r=null;try{if(!BrowserAgentExtension.isBAAlive())return;if(!e||0===e.length)return void BrowserAgent.logger.warn("addExtensionJSONObject: Invalid metric list. Discard extension JSON object...");if(!(r=BrowserAgent.evtUtils.getEvtObject(BrowserAgent.globals.evtTypes.APMEXT,!1,null)))return;for(var t=0;tt.length)&&(r=t.length),r-=e.length;var s=t.lastIndexOf(e,r);return-1!==s&&s===r}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}),BrowserAgent.pageUtils.performance=window.performance,BrowserAgent.globals.baStartTime=BrowserAgent.pageUtils.performance&&BrowserAgent.pageUtils.performance.timing&&BrowserAgent.pageUtils.performance.timing.navigationStart?BrowserAgent.pageUtils.performance.timing.navigationStart:BrowserAgentBootstrap.origFuncMap.timeNow();var s=null;BrowserAgent.globals.platform=e.name,BrowserAgent.globals.platformVersion=e.ver,BrowserAgent.globals.isCookieEnabled=BrowserAgent.cookieUtils.isCookieEnabled(),BrowserAgent.globals.isCookieEnabled?(BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.cookies.PLATFORM,e.name,null,BrowserAgent.globals.forwardSlashChar,null),BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.cookies.PLATFORMVER,e.ver,null,BrowserAgent.globals.forwardSlashChar,null),(s=BrowserAgent.cookieUtils.getRawCookie(BrowserAgent.cookieUtils.cookies.SERVERTIME))&&(BrowserAgent.globals.gapTimeInMillis=BrowserAgent.globals.baStartTime-s,BrowserAgent.cookieUtils.setRawCookie(BrowserAgent.cookieUtils.cookies.GAPTIME,Math.ceil(BrowserAgent.globals.gapTimeInMillis/1e3),null,BrowserAgent.globals.forwardSlashChar,null),BrowserAgent.logger.info("BrowserAgent.main: Client Server gap time is "+BrowserAgent.globals.gapTimeInMillis+" ms"))):BrowserAgent.logger.warn("BrowserAgent.main: Cookies seem to be DISABLED. Browser Agent may exhibit unexpected behavior."),BrowserAgent.cookieUtils.init(),BrowserAgent.storageUtils.init(),BrowserAgent.browserUtils.init(),BrowserAgent.funcUtils.init(),BrowserAgent.errorUtils.init(),BrowserAgent.evtUtils.init(),BrowserAgent.globals.init(),window.addEventListener("beforeunload",BrowserAgent.pageUtils.unloadEventHandler,!0),window.addEventListener("pagehide",BrowserAgent.pageUtils.unloadEventHandler,!0),BrowserAgent.pageUtils.init(),BrowserAgent.evtUtils.processRetryPayloadsFromSession(),"undefined"!=typeof BrowserAgentExtension&&BrowserAgentExtension.init(),BrowserAgent.globals.harvestIntervalId=setInterval(BrowserAgent.evtUtils.harvestEvts,BrowserAgent.globals.configs.METRICFREQUENCY);try{if(void 0!==performance.getEntriesByType("resource")){BrowserAgent.globals.isPerformanceResourceSupported=!0;var o="browsers default value";"function"==typeof performance.setResourceTimingBufferSize&&(o=BrowserAgent.globals.configs.RESOURCEBUFFERSIZE,performance.setResourceTimingBufferSize(o)),BrowserAgent.logger.info("Performance API supported, buffer set to: "+o)}}catch(e){BrowserAgent.logger.warn("Performance API not supported"),BrowserAgent.globals.isPerformanceResourceSupported=!1}BrowserAgent.globals.selfMonPerformance.baloadinit.totalTimeMS+=performance.now()-r}else BrowserAgent.logger.error("BrowserAgent.main: Invalid collector URL. Disabling Browser Agent...");else BrowserAgent.logger.info("BrowserAgent.main: Browser Agent is DISABLED.")}else BrowserAgent.logger.warn("BrowserAgent.main: Disabling Browser Agent ...")}else BrowserAgent.logger.error("BrowserAgent.main: BA app profile was not found. Disabling Browser Agent...");else BrowserAgent.logger.warn("BrowserAgent.main: Unsupported browser. Disabling Browser Agent for User Agent ["+navigator.userAgent+"]")},"prerender"===document.visibilityState&&BrowserAgent.logger.warn("Web page in pre-render state."),BrowserAgent.main()}catch(e){window.console&&"object"==typeof window.console&&window.console.log(new Date+" [CA Browser Agent]: [ERROR] "+e.message)}