@salla.sa/twilight 2.14.345 → 2.14.346

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"twilight.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"twilight.min.js","sources":["../../src/lib/init.js","../../node_modules/@jitsu/js/dist/jitsu.es.js"],"sourcesContent":["import Salla from \"@salla.sa/base\";\n\nexport default class Init {\n /**\n * @param {TwilightConfig} config\n */\n constructor(config) {\n //this case happens when watch twilight-components😌\n if (Salla.status === 'ready') {\n salla.log(\"Trying to re-initiate Salla, while its status === 'ready'!\");\n return;\n }\n\n if (!config) {\n this.setSallaReady(config);\n return\n }\n\n // todo :: cleanup events before the merge\n Salla.config.merge(config);\n\n\n //this for edge case, probably because of cache, cusing returning the store domain on preview mode instead of the salla with username url\n if(['salla.sa', 'salla.group'].includes(location.hostname) && !Salla.config.get('store.url')?.includes(location.hostname) && Salla.config.get('store.username')){\n Salla.config.set('store.url', window.location.origin + \"/\" + Salla.config.get('store.username'));\n }\n\n config?.events && Salla.event.dispatchEvents(config?.events);\n\n if (config._token) {\n salla.api.setHeader(\"X-CSRF-TOKEN\", config._token);\n }\n\n if (window.self === window.top) {\n this.injectMaintenanceAlert();\n this.injectThemePreviewAlert();\n }\n this.injectTemplateStoreAlert();\n this.injectAppInstallAlert();\n this.applyContentCopyright();\n this.injectEditAlert();\n\n if (config?.user?.language_code) {\n salla.lang.setLocale(config?.user?.language_code);\n }\n\n //todo:: move it to its class, call it after listening the event\n salla.lang.loadStoreTranslations();\n\n this.setSallaReady(config);\n this.afterInit();\n }\n\n afterInit() {\n if (!Salla.url.is_page('product.single') || !Salla.config.isGuest()) {\n return;\n }\n //this a patch until I find time to debug about reported issue: https://sallaops.youtrack.cloud/issue/SP-10049\n window.addEventListener('mini-checkout::before-init', (event) => {\n event.preventDefault();\n Salla.event.emit('login::open');\n });\n }\n\n applyContentCopyright() {\n if (!Salla.config.get('store.settings.content_copyright')) {\n return;\n }\n\n // Helper to check if element is an input\n const isInputElement = (element) => {\n if (!element) return false;\n const tagName = element.tagName?.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n };\n\n // Common event prevention (excluding inputs)\n const preventEvents = ['contextmenu', 'selectstart', 'copy'];\n preventEvents.forEach((event) => {\n document.addEventListener(event, (e) => {\n if (!isInputElement(e.target)) {\n e.preventDefault();\n }\n });\n });\n\n // Prevent common dev tools shortcuts\n document.addEventListener('keydown', (e) => {\n const key = e.key.toLowerCase();\n const blockedCombos = (\n key === 'f12' ||\n (e.ctrlKey && e.shiftKey && ['i', 'j', 'c'].includes(key)) ||\n (e.ctrlKey && key === 'u')\n );\n if (blockedCombos) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // Inject protection styles (excluding inputs)\n const style = document.createElement('style');\n style.textContent = `\n body {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n input, textarea {\n -webkit-touch-callout: auto;\n -webkit-user-select: auto;\n -moz-user-select: auto;\n -ms-user-select: auto;\n user-select: auto;\n }\n img {\n pointer-events: none;\n -webkit-user-drag: none;\n }\n `;\n document.head.appendChild(style);\n }\n\n injectMaintenanceAlert() {\n if (!salla.config.get('maintenance')) {\n return;\n }\n\n document.body.classList.add('has-maintenance-bar');\n if (document.querySelector('salla-maintenance-alert')) {\n salla.logger.warn('salla-maintenance-alert element Existed before!');\n return;\n }\n\n salla.lang.onLoaded(() => document.body.prepend(document.createElement('salla-maintenance-alert')));\n }\n\n injectTemplateStoreAlert() {\n if (!salla.config.get('store.template')) {\n return;\n }\n\n document.body.classList.add('has-bottom-alert');\n if (document.querySelector('salla-bottom-alert')) {\n salla.logger.warn('salla-bottom-alert element Existed before!');\n return;\n }\n\n salla.lang.onLoaded(() => document.body.append(document.createElement('salla-bottom-alert')));\n }\n\n injectAppInstallAlert() {\n if (!salla.config.get('store.app_install_prompt') || !salla.config.get('store.apps') || salla.storage.get('app_install_prompt_disabled') || salla.config.isMobileApp()) {\n return;\n }\n\n document.body.classList.add('has-app-install-alert');\n if (document.querySelector('salla-app-install-alert')) {\n salla.logger.warn('salla-app-install-alert element Existed before!');\n return;\n }\n\n salla.lang.onLoaded(() => document.body.append(document.createElement('salla-app-install-alert')));\n }\n injectThemePreviewAlert() {\n if (salla.config.get('theme.mode') !== 'preview') {\n return;\n }\n document.body.classList.add('has-preview-bar');\n if (document.querySelector('#s-theme_preview_bar')) {\n salla.logger.warn('#s-theme_preview_bar element Existed before!');\n return;\n }\n salla.lang.onLoaded(() => {\n let alertElement = document.createElement('div');\n alertElement.id = 's-theme_preview_bar';\n alertElement.setAttribute('style', 'display: flex; justify-content: space-between; text-align: center; background-color: #232323; color: #fff; padding: 10px; font-size: 0.875rem; line-height: 1.25rem; position: relative;');\n alertElement.innerHTML = `\n <div style=\"display:flex; align-items:center;\">\n <img width=\"32\" src=\"https://cdn.salla.network/images/logo/logo-light.svg\">\n <span style=\"margin:0 10px;\">${salla.lang.get('blocks.header.preview_mode')}: <span style=\"background:rgba(255,255,255,0.25);border-radius:15px; padding:2px 15px 4px\">${salla.config.get('theme.name')}</span></span>\n </div>\n <a href=\"${salla.url.get('preview_theme/cancel/preview')}\" style=\"line-height:32px; width:32px;\"><i class=\"sicon-cancel\"></i></a>\n `;\n document.body.prepend(alertElement);\n });\n }\n\n /**\n * @deprecated\n */\n injectEditAlert() {\n let edit = salla.config.get('edit');\n if (!edit) {\n return;\n }\n if (document.querySelector('#s-edit-alert')) {\n salla.logger.warn('#s-edit-alert element Existed before!');\n return;\n }\n salla.lang.onLoaded(() => {\n let alertElement = document.createElement('div');\n alertElement.id = 's-edit-alert';\n alertElement.innerHTML = `\n <a href=\"${edit}\" style=\"display:block; background-color:${salla.config.get('theme.color.primary', '#5cd5c4')}; color:${salla.config.get('theme.color.reverse', '#fff')}; padding: 10px; text-align:center; font-size: 0.875rem; line-height: 1.25rem;\">\n <i class=\"sicon-edit\"></i> \n ${salla.lang.get('pages.products.quick_edit')}\n </a>\n `;\n document.body.prepend(alertElement);\n });\n }\n\n /**\n * Link Action Of forms & links that have '.ajax' class.\n *\n * @param {Event} event\n * @param {Element} element\n */\n handleElementAjaxRequest(event, element) {\n if (!(element instanceof HTMLFormElement || element instanceof HTMLAnchorElement)) {\n salla.logger.warn('trying to call ajax from non Element!!');\n return false;\n }\n event.preventDefault();\n\n // todo :: support async to allow for complex logic before the submit which take a time\n let data = element.getAjaxFormData(event);\n let method = data.method ? data.method.toLowerCase() : undefined;\n salla.api.request(data.url, data.formData, method)\n .then(response => {\n //instead of passing all axios object, we will pass response data only\n if (response.data && response.request) {\n response = response.data;\n }\n salla.api.handleAfterResponseActions(response);\n this.callAjaxEvent(data.events.success, response, data.formData);\n return response;\n })\n .catch(error => {\n salla.api.handleErrorResponse(error);\n this.callAjaxEvent(data.events.fail, error, data.formData);\n throw error;\n });\n }\n\n callAjaxEvent(event, response, formData) {\n if (!event) {\n return;\n }\n\n if (formData instanceof FormData) {\n const parameters = {};\n Array.from(formData.entries()).forEach(function (data) {\n parameters[data[0]] = data[1];\n });\n formData = parameters;\n }\n\n if (window[event]) {\n window[event](response, formData);\n return;\n }\n\n salla.event.dispatch(event, response, formData);\n }\n\n setSallaReady(config) {\n this.storeUTMs();\n //to avoid firing onReady before inject api requests headers\n Salla.event.emitAsync('twilight::before.ready', config)\n Salla.status = 'ready';\n Salla.event.dispatch('twilight::initiated', config);\n window.dispatchEvent(new CustomEvent('twilight::initiated', { detail: config }));\n }\n\n storeUTMs() {\n // Mapping of CLICKID parameters to their respective sources\n const otherUTMSources = {fbclid: 'facebook', gad_source: 'google', ttclid: 'tiktok', twclid: 'twitter', scid: 'snapchat', sccid: 'snapchat'};\n const otherUTMs = Object.keys(otherUTMSources);\n const utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', ...otherUTMs];\n const utmParams = {};\n const headerUTMs = {};\n\n // Extract all parameters and decode values\n window.location.search\n .replace('?', '')\n .split('&')\n .map(param => param.split('='))\n .filter(([key]) => utmKeys.includes(key.toLowerCase()))\n .forEach(([key, value]) => {\n let decodedValue = value || '';\n let decoded = false;\n \n try {\n decodedValue = decodeURIComponent(value);\n decoded = true;\n } catch (e) {\n Salla.log(\"Failed to decode UTM param:\", e);\n }\n \n utmParams[key.toLowerCase()] = decoded\n ? decodedValue.replace(/[^\\p{L}\\p{N}\\- ]/gu, ' ').replace(/ +/g, ' ').trim() //don't sanitize F- or d-F- because it's a flag for partners\n : decodedValue;\n });\n\n // Check if any CLICKID parameter is present\n const otherUTM = otherUTMs.find(utm => utmParams[utm]);\n\n // Auto-set utm_source when CLICKID exists\n if (!utmParams.utm_source && otherUTM) {\n utmParams.utm_source = otherUTMSources[otherUTM];\n\n utmParams.utm_campaign = utmParams.utm_campaign\n || `Using the CLICKID ${otherUTM} provided by ${utmParams.utm_source}`;\n\n utmParams.utm_term = utmParams.utm_term\n || `${otherUTM}: ${utmParams[otherUTM]}`;\n }\n\n // If utm_source still missing, stop\n if (!utmParams.utm_source) {\n return;\n }\n\n // Prepare final UTM headers (excluding CLICKID params)\n Object.entries(utmParams)\n .filter(([key]) => !otherUTMs.includes(key))\n .forEach(([key, value]) => {\n headerUTMs[`s-${key.replace('_', '-')}`] = value;\n });\n\n headerUTMs['s-utm-referrer'] = document.referrer;\n\n salla.storage.setWithTTL('s-utms', headerUTMs, 90 * 24 * 60);\n\n this.logUTMVisitData(headerUTMs);\n }\n\n async logUTMVisitData(utmParams) {\n const source = utmParams['s-utm-source'];\n const medium = utmParams['s-utm-medium'];\n const campaign = utmParams['s-utm-campaign'];\n const storeId = Salla.config.get('store.id');\n if (!utmParams || source !== 'affiliate' || !medium || !campaign) {\n return;\n }\n\n fetch(salla.config.get('affiliate.utm_url'), {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'Content-Type': 'application/json',\n 's-utm-source': source,\n 's-utm-medium': medium,\n 's-utm-campaign': campaign,\n 's-store-id': storeId,\n },\n }).then(response => {\n if (response.ok) {\n const url = new URL(window.location.href);\n const perviousState = window.history.state;\n url.searchParams.delete('utm_source');\n url.searchParams.delete('utm_medium');\n url.searchParams.delete('utm_campaign');\n window.history.replaceState(perviousState, '', url);\n }\n });\n }\n}\n","function n$2(t,e,l,n,r){for(e=e.split?e.split(\".\"):e,n=0;n<e.length;n++)t=t?t[e[n]]:r;return t===r?l:t}\n\nvar e=\"undefined\",o$1=\"object\",b$3=\"any\",m$1=\"*\",j$1=\"__\",F$2=\"undefined\"!=typeof process?process:{};F$2.env&&F$2.env.NODE_ENV||\"\";var $$1=\"undefined\"!=typeof document;null!=F$2.versions&&null!=F$2.versions.node;\"undefined\"!=typeof Deno&&void 0!==Deno.core;$$1&&\"nodejs\"===window.name||\"undefined\"!=typeof navigator&&void 0!==navigator.userAgent&&(navigator.userAgent.includes(\"Node.js\")||navigator.userAgent.includes(\"jsdom\"));function M$1(n,t){return t.charAt(0)[n]()+t.slice(1)}var U$1=M$1.bind(null,\"toUpperCase\"),H$1=M$1.bind(null,\"toLowerCase\");function J$2(n){return Y$1(n)?U$1(\"null\"):\"object\"==typeof n?yn(n):Object.prototype.toString.call(n).slice(8,-1)}function R$1(n,t){void 0===t&&(t=!0);var e=J$2(n);return t?H$1(e):e}function V$1(n,t){return typeof t===n}var W$1=V$1.bind(null,\"function\"),q$1=V$1.bind(null,\"string\"),I$2=V$1.bind(null,\"undefined\");var Q$1=V$1.bind(null,\"boolean\");V$1.bind(null,\"symbol\");function Y$1(n){return null===n}function nn(n){return \"number\"===R$1(n)&&!isNaN(n)}function rn(n){return \"array\"===R$1(n)}function on(n){if(!un(n))return !1;for(var t=n;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(n)===t}function un(n){return n&&(\"object\"==typeof n||null!==n)}function yn(n){return W$1(n.constructor)?n.constructor.name:null}function hn(n){return n instanceof Error||q$1(n.message)&&n.constructor&&nn(n.constructor.stackTraceLimit)}function On(n,t){if(\"object\"!=typeof t||Y$1(t))return !1;if(t instanceof n)return !0;var e=R$1(new n(\"\"));if(hn(t))for(;t;){if(R$1(t)===e)return !0;t=Object.getPrototypeOf(t);}return !1}On.bind(null,TypeError);On.bind(null,SyntaxError);function $n(n,t){var e=n instanceof Element||n instanceof HTMLDocument;return e&&t?Tn(n,t):e}function Tn(n,t){return void 0===t&&(t=\"\"),n&&n.nodeName===t.toUpperCase()}function _n(n){var t=[].slice.call(arguments,1);return function(){return n.apply(void 0,[].slice.call(arguments).concat(t))}}_n($n,\"form\");_n($n,\"button\");_n($n,\"input\");_n($n,\"select\");\n\nfunction n$1(e){try{return decodeURIComponent(e.replace(/\\+/g,\" \"))}catch(e){return null}}function s(r){return function(e){for(var r,t=Object.create(null),o=/([^&=]+)=?([^&]*)/g;r=o.exec(e);){var a=n$1(r[1]),i=n$1(r[2]);\"[]\"===a.substring(a.length-2)?(t[a=a.substring(0,a.length-2)]||(t[a]=[])).push(i):t[a]=\"\"===i||i;}for(var u in t){var c=u.split(\"[\");c.length>1&&(m(t,c.map(function(e){return e.replace(/[?[\\]\\\\ ]/g,\"\")}),t[u]),delete t[u]);}return t}(function(r){if(r){var t=r.match(/\\?(.*)/);return t&&t[1]?t[1].split(\"#\")[0]:\"\"}return $$1&&window.location.search.substring(1)}(r))}function m(e,r,t){for(var n=r.length-1,o=0;o<n;++o){var a=r[o];if(\"__proto__\"===a||\"constructor\"===a)break;a in e||(e[a]={}),e=e[a];}e[r[n]]=t;}function y$1(){for(var e=\"\",r=0,t=4294967295*Math.random()|0;r++<36;){var n=\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"[r-1],o=15&t;e+=\"-\"==n||\"4\"==n?n:(\"x\"==n?o:3&o|8).toString(16),t=r%8==0?4294967295*Math.random()|0:t>>4;}return e}\n\nvar l=\"global\",o=j$1+\"global\"+j$1,n=typeof self===o$1&&self.self===self&&self||typeof global===o$1&&global.global===global&&global||void 0;function a$2(t){return n[o][t]}function f(t,e){return n[o][t]=e}function i$2(t){delete n[o][t];}function u$1(t,e,r){var l;try{if(b$2(t)){var o=window[t];l=o[e].bind(o);}}catch(t){}return l||r}n[o]||(n[o]={});var c$1={};function b$2(t){if(typeof c$1[t]!==e)return c$1[t];try{var e$1=window[t];e$1.setItem(e,e),e$1.removeItem(e);}catch(e){return c$1[t]=!1}return c$1[t]=!0}\n\nfunction g$1(){return g$1=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);}return e},g$1.apply(this,arguments)}var h$1=\"function\",v=\"undefined\",y=\"@@redux/\"+Math.random().toString(36),b$1=/* #__PURE__ */function(){return typeof Symbol===h$1&&Symbol.observable||\"@@observable\"}(),I$1=\" != \"+h$1;function w(e,t,n){var r;if(typeof t===h$1&&typeof n===v&&(n=t,t=void 0),typeof n!==v){if(typeof n!==h$1)throw new Error(\"enhancer\"+I$1);return n(w)(e,t)}if(typeof e!==h$1)throw new Error(\"reducer\"+I$1);var i=e,a=t,o=[],u=o,s=!1;function l(){u===o&&(u=o.slice());}function f(){return a}function d(e){if(typeof e!==h$1)throw new Error(\"Listener\"+I$1);var t=!0;return l(),u.push(e),function(){if(t){t=!1,l();var n=u.indexOf(e);u.splice(n,1);}}}function p(e){if(!on(e))throw new Error(\"Act != obj\");if(typeof e.type===v)throw new Error(\"ActType \"+v);if(s)throw new Error(\"Dispatch in reducer\");try{s=!0,a=i(a,e);}finally{s=!1;}for(var t=o=u,n=0;n<t.length;n++)(0, t[n])();return e}return p({type:\"@@redux/INIT\"}),(r={dispatch:p,subscribe:d,getState:f,replaceReducer:function(e){if(typeof e!==h$1)throw new Error(\"next reducer\"+I$1);i=e,p({type:\"@@redux/INIT\"});}})[b$1]=function(){var e,t=d;return (e={subscribe:function(e){if(\"object\"!=typeof e)throw new TypeError(\"Observer != obj\");function n(){e.next&&e.next(f());}return n(),{unsubscribe:t(n)}}})[b$1]=function(){return this},e},r}function E$1(e,t){var n=t&&t.type;return \"action \"+(n&&n.toString()||\"?\")+\"reducer \"+e+\" returns \"+v}function P(){var e=[].slice.call(arguments);return 0===e.length?function(e){return e}:1===e.length?e[0]:e.reduce(function(e,t){return function(){return e(t.apply(void 0,[].slice.call(arguments)))}})}function S(){var e=arguments;return function(t){return function(n,r,i){var a,o=t(n,r,i),u=o.dispatch,c={getState:o.getState,dispatch:function(e){return u(e)}};return a=[].slice.call(e).map(function(e){return e(c)}),g$1({},o,{dispatch:u=P.apply(void 0,a)(o.dispatch)})}}}var N$1=j$1+\"anon_id\",A$1=j$1+\"user_id\",_=j$1+\"user_traits\",j=\"userId\",k$1=\"anonymousId\",x$1=[\"bootstrap\",\"params\",\"campaign\",\"initializeStart\",\"initialize\",\"initializeEnd\",\"ready\",\"resetStart\",\"reset\",\"resetEnd\",\"pageStart\",\"page\",\"pageEnd\",\"pageAborted\",\"trackStart\",\"track\",\"trackEnd\",\"trackAborted\",\"identifyStart\",\"identify\",\"identifyEnd\",\"identifyAborted\",\"userIdChanged\",\"registerPlugins\",\"enablePlugin\",\"disablePlugin\",\"online\",\"offline\",\"setItemStart\",\"setItem\",\"setItemEnd\",\"setItemAborted\",\"removeItemStart\",\"removeItem\",\"removeItemEnd\",\"removeItemAborted\"],T=[\"name\",\"EVENTS\",\"config\",\"loaded\"],z=x$1.reduce(function(e,t){return e[t]=t,e},{registerPluginType:function(e){return \"registerPlugin:\"+e},pluginReadyType:function(e){return \"ready:\"+e}}),M=/^utm_/,q=/^an_prop_/,V=/^an_trait_/;function C$1(e){var t=e.storage.setItem;return function(n){return function(r){return function(i){if(i.type===z.bootstrap){var a=i.params,o=i.user,u=i.persistedUser,c=i.initialUser,s=u.userId===o.userId;u.anonymousId!==o.anonymousId&&t(N$1,o.anonymousId),s||t(A$1,o.userId),c.traits&&t(_,g$1({},s&&u.traits?u.traits:{},c.traits));var l=Object.keys(i.params);if(l.length){var f=a.an_uid,d=a.an_event,p=l.reduce(function(e,t){if(t.match(M)||t.match(/^(d|g)clid/)){var n=t.replace(M,\"\");e.campaign[\"campaign\"===n?\"name\":n]=a[t];}return t.match(q)&&(e.props[t.replace(q,\"\")]=a[t]),t.match(V)&&(e.traits[t.replace(V,\"\")]=a[t]),e},{campaign:{},props:{},traits:{}});n.dispatch(g$1({type:z.params,raw:a},p,f?{userId:f}:{})),f&&setTimeout(function(){return e.identify(f,p.traits)},0),d&&setTimeout(function(){return e.track(d,p.props)},0),Object.keys(p.campaign).length&&n.dispatch({type:z.campaign,campaign:p.campaign});}}return r(i)}}}}function U(e){return function(t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),n.type===z.setItemEnd){if(n.key===N$1)return g$1({},t,{anonymousId:n.value});if(n.key===A$1)return g$1({},t,{userId:n.value})}switch(n.type){case z.identify:return Object.assign({},t,{userId:n.userId,traits:g$1({},t.traits,n.traits)});case z.reset:return [A$1,N$1,_].forEach(function(t){e.removeItem(t);}),Object.assign({},t,{userId:null,anonymousId:null,traits:{}});default:return t}}}function R(e){return {userId:e.getItem(A$1),anonymousId:e.getItem(N$1),traits:e.getItem(_)}}var $=function(e){return j$1+\"TEMP\"+j$1+e};function D(t){var n=t.storage,r=n.setItem,a=n.removeItem,o=n.getItem;return function(t){return function(n){return function(u){var c=u.userId,s=u.traits,l=u.options;if(u.type===z.reset&&([A$1,_,N$1].forEach(function(e){a(e);}),[j,k$1,\"traits\"].forEach(function(e){i$2($(e));})),u.type===z.identify){o(N$1)||r(N$1,y$1());var f=o(A$1),d=o(_)||{};f&&f!==c&&t.dispatch({type:z.userIdChanged,old:{userId:f,traits:d},new:{userId:c,traits:s},options:l}),c&&r(A$1,c),s&&r(_,g$1({},d,s));}return n(u)}}}}var B={};function L$1(e,t){B[e]&&W$1(B[e])&&(B[e](t),delete B[e]);}function J$1(e,t,n){return new Promise(function(r,i){return t()?r(e):n<1?i(g$1({},e,{queue:!0})):new Promise(function(e){return setTimeout(e,10)}).then(function(a){return J$1(e,t,n-10).then(r,i)})})}function X(e){return {abort:e}}var H=function(e){var t=e.data,n=e.action,r=e.instance,i=e.state,a=e.allPlugins,o=e.allMatches,u=e.store,s=e.EVENTS;try{var f=i.plugins,d=i.context,p=n.type,m=p.match(W),h=t.exact.map(function(e){return e.pluginName});m&&(h=o.during.map(function(e){return e.pluginName}));var v=function(e,t){return function(n,r,i){var a=r.config,o=r.name,u=o+\".\"+n.type;i&&(u=i.event);var c=n.type.match(W)?function(e,t,n,r,i){return function(a,o){var u=r?r.name:e,c=o&&ne(o)?o:n;if(r&&(!(c=o&&ne(o)?o:[e]).includes(e)||1!==c.length))throw new Error(\"Method \"+t+\" can only abort \"+e+\" plugin. \"+JSON.stringify(c)+\" input valid\");return g$1({},i,{abort:{reason:a,plugins:c,caller:t,_:u}})}}(o,u,t,i,n):function(e,t){return function(){throw new Error(e.type+\" action not cancellable. Remove abort in \"+t)}}(n,u);return {payload:ae(n),instance:e,config:a||{},abort:c}}}(r,h),y=t.exact.reduce(function(e,t){var n=t.pluginName,r=t.methodName,i=!1;return r.match(/^initialize/)||r.match(/^reset/)||(i=!f[n].loaded),d.offline&&r.match(/^(page|track|identify)/)&&(i=!0),e[\"\"+n]=i,e},{});return Promise.resolve(t.exact.reduce(function(e,i,o){try{var u=i.pluginName;return Promise.resolve(e).then(function(e){function i(){return Promise.resolve(e)}var o=function(){if(t.namespaced&&t.namespaced[u])return Promise.resolve(t.namespaced[u].reduce(function(e,t,n){try{return Promise.resolve(e).then(function(e){return t.method&&W$1(t.method)?(function(e,t){var n=ie(e);if(n&&n.name===t){var r=ie(n.method);throw new Error([t+\" plugin is calling method \"+e,\"Plugins cant call self\",\"Use \"+n.method+\" \"+(r?\"or \"+r.method:\"\")+\" in \"+t+\" plugin insteadof \"+e].join(\"\\n\"))}}(t.methodName,t.pluginName),Promise.resolve(t.method({payload:e,instance:r,abort:(n=e,i=u,o=t.pluginName,function(e,t){return g$1({},n,{abort:{reason:e,plugins:t||[i],caller:p,from:o||i}})}),config:Q(t.pluginName,f,a),plugins:f})).then(function(t){var n=on(t)?t:{};return Promise.resolve(g$1({},e,n))})):e;var n,i,o;})}catch(e){return Promise.reject(e)}},Promise.resolve(n))).then(function(t){e[u]=t;});e[u]=n;}();return o&&o.then?o.then(i):i()})}catch(e){return Promise.reject(e)}},Promise.resolve({}))).then(function(e){return Promise.resolve(t.exact.reduce(function(n,i,o){try{var s=t.exact.length===o+1,l=i.pluginName,d=a[l];return Promise.resolve(n).then(function(t){var n=e[l]?e[l]:{};if(m&&(n=t),ee(n,l))return K({data:n,method:p,instance:r,pluginName:l,store:u}),Promise.resolve(t);if(ee(t,l))return s&&K({data:t,method:p,instance:r,store:u}),Promise.resolve(t);if(y.hasOwnProperty(l)&&!0===y[l])return u.dispatch({type:\"queue\",plugin:l,payload:n,_:{called:\"queue\",from:\"queueMechanism\"}}),Promise.resolve(t);var i=v(e[l],a[l]);return Promise.resolve(d[p]({abort:i.abort,payload:n,instance:r,config:Q(l,f,a),plugins:f})).then(function(i){var a=on(i)?i:{},o=g$1({},t,a),s=e[l];if(ee(s,l))K({data:s,method:p,instance:r,pluginName:l,store:u});else {var f=p+\":\"+l;(f.match(/:/g)||[]).length<2&&!p.match(F$1)&&!p.match(G$1)&&r.dispatch(g$1({},m?o:n,{type:f,_:{called:f,from:\"submethod\"}}));}return Promise.resolve(o)})})}catch(e){return Promise.reject(e)}},Promise.resolve(n))).then(function(e){if(!(p.match(W)||p.match(/^registerPlugin/)||p.match(G$1)||p.match(F$1)||p.match(/^params/)||p.match(/^userIdChanged/))){if(s.plugins.includes(p),e._&&e._.originalAction===p)return e;var n=g$1({},e,{_:{originalAction:e.type,called:e.type,from:\"engineEnd\"}});te(e,t.exact.length)&&!p.match(/End$/)&&(n=g$1({},n,{type:e.type+\"Aborted\"})),u.dispatch(n);}return e})})}catch(e){return Promise.reject(e)}},W=/Start$/,F$1=/^bootstrap/,G$1=/^ready/;function K(e){var t=e.pluginName,n=e.method+\"Aborted\"+(t?\":\"+t:\"\");e.store.dispatch(g$1({},e.data,{type:n,_:{called:n,from:\"abort\"}}));}function Q(e,t,n){var r=t[e]||n[e];return r&&r.config?r.config:{}}function Y(e,t){return t.reduce(function(t,n){return n[e]?t.concat({methodName:e,pluginName:n.name,method:n[e]}):t},[])}function Z(e,t){var n=e.replace(W,\"\"),r=t?\":\"+t:\"\";return [\"\"+e+r,\"\"+n+r,n+\"End\"+r]}function ee(e,t){var n=e.abort;return !!n&&(!0===n||re(n,t)||n&&re(n.plugins,t))}function te(e,t){var n=e.abort;if(!n)return !1;if(!0===n||q$1(n))return !0;var r=n.plugins;return ne(n)&&n.length===t||ne(r)&&r.length===t}function ne(e){return Array.isArray(e)}function re(e,t){return !(!e||!ne(e))&&e.includes(t)}function ie(e){var t=e.match(/(.*):(.*)/);return !!t&&{method:t[1],name:t[2]}}function ae(e){return Object.keys(e).reduce(function(t,n){return \"type\"===n||(t[n]=on(e[n])?Object.assign({},e[n]):e[n]),t},{})}function oe(e,t,n){var r={};return function(i){return function(a){return function(o){try{var u,s=function(e){return u?e:a(m)},d=o.type,p=o.plugins,m=o;if(o.abort)return Promise.resolve(a(o));if(d===z.enablePlugin&&i.dispatch({type:z.initializeStart,plugins:p,disabled:[],fromEnable:!0,meta:o.meta}),d===z.disablePlugin&&setTimeout(function(){return L$1(o.meta.rid,{payload:o})},0),d===z.initializeEnd){var h=t(),v=Object.keys(h),y=v.filter(function(e){return p.includes(e)}).map(function(e){return h[e]}),b=[],I=[],w=o.disabled,E=y.map(function(e){var t=e.loaded,n=e.name,a=e.config;return J$1(e,function(){return t({config:a})},1e4).then(function(t){return r[n]||(i.dispatch({type:z.pluginReadyType(n),name:n,events:Object.keys(e).filter(function(e){return !T.includes(e)})}),r[n]=!0),b=b.concat(n),e}).catch(function(e){if(e instanceof Error)throw new Error(e);return I=I.concat(e.name),e})});Promise.all(E).then(function(e){var t={plugins:b,failed:I,disabled:w};setTimeout(function(){v.length===E.length+w.length&&i.dispatch(g$1({},{type:z.ready},t));},0);});}var P=function(){if(d!==z.bootstrap)return /^ready:([^:]*)$/.test(d)&&setTimeout(function(){return function(e,t,n){var r={},i=t(),a=e.getState(),o=a.plugins,u=a.queue,s=a.user;if(!a.context.offline&&u&&u.actions&&u.actions.length){var f=u.actions.reduce(function(e,t,n){return o[t.plugin].loaded?(e.process.push(t),e.processIndex.push(n)):(e.requeue.push(t),e.requeueIndex.push(n)),e},{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(f.processIndex&&f.processIndex.length){f.processIndex.forEach(function(t){var a=u.actions[t],f=a.plugin,d=a.payload.type,p=i[f][d];if(p&&W$1(p)){var m,h=function(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),[j,k$1].reduce(function(n,r){return e.hasOwnProperty(r)&&t[r]&&t[r]!==e[r]&&(n[r]=t[r]),n},e)}(a.payload,s),v=r[h.meta.rid];if(!v&&(m=p({payload:h,config:o[f].config,instance:n,abort:X}))&&on(m)&&m.abort)return void(r[h.meta.rid]=!0);if(!v){var y=d+\":\"+f;e.dispatch(g$1({},h,{type:y,_:{called:y,from:\"queueDrain\"}}));}}});var d=u.actions.filter(function(e,t){return !~f.processIndex.indexOf(t)});u.actions=d;}}}(i,t,e)},0),Promise.resolve(function(e,t,n,r,i){try{var a=W$1(t)?t():t,o=e.type,u=o.replace(W,\"\");if(e._&&e._.called)return Promise.resolve(e);var c=n.getState(),s=(m=a,void 0===(h=c.plugins)&&(h={}),void 0===(v=e.options)&&(v={}),Object.keys(m).filter(function(e){var t=v.plugins||{};return Q$1(t[e])?t[e]:!1!==t.all&&(!h[e]||!1!==h[e].enabled)}).map(function(e){return m[e]}));o===z.initializeStart&&e.fromEnable&&(s=Object.keys(c.plugins).filter(function(t){var n=c.plugins[t];return e.plugins.includes(t)&&!n.initialized}).map(function(e){return a[e]}));var d=s.map(function(e){return e.name}),p=function(e,t,n){var r=Z(e).map(function(e){return Y(e,t)});return t.reduce(function(n,r){var i=r.name,a=Z(e,i).map(function(e){return Y(e,t)}),o=a[0],u=a[1],c=a[2];return o.length&&(n.beforeNS[i]=o),u.length&&(n.duringNS[i]=u),c.length&&(n.afterNS[i]=c),n},{before:r[0],beforeNS:{},during:r[1],duringNS:{},after:r[2],afterNS:{}})}(o,s);return Promise.resolve(H({action:e,data:{exact:p.before,namespaced:p.beforeNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){function t(){var t=function(){if(o.match(W))return Promise.resolve(H({action:g$1({},s,{type:u+\"End\"}),data:{exact:p.after,namespaced:p.afterNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){e.meta&&e.meta.hasCallback&&L$1(e.meta.rid,{payload:e});})}();return t&&t.then?t.then(function(){return e}):e}if(te(e,d.length))return e;var s,l=function(){if(o!==u)return Promise.resolve(H({action:g$1({},e,{type:u}),data:{exact:p.during,namespaced:p.duringNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){s=e;});s=e;}();return l&&l.then?l.then(t):t()})}catch(e){return Promise.reject(e)}var m,h,v;}(o,t,e,i,n)).then(function(e){return u=1,a(e)})}();return Promise.resolve(P&&P.then?P.then(s):s(P))}catch(e){return Promise.reject(e)}}}}}function ue(e){return function(t){return function(t){return function(n){var r=n.type,i=n.key,a=n.value,o=n.options;if(r===z.setItem||r===z.removeItem){if(n.abort)return t(n);r===z.setItem?e.setItem(i,a,o):e.removeItem(i,o);}return t(n)}}}}var ce=function(){var e=this;this.before=[],this.after=[],this.addMiddleware=function(t,n){e[n]=e[n].concat(t);},this.removeMiddleware=function(t,n){var r=e[n].findIndex(function(e){return e===t});-1!==r&&(e[n]=[].concat(e[n].slice(0,r),e[n].slice(r+1)));},this.dynamicMiddlewares=function(t){return function(n){return function(r){return function(i){var a={getState:n.getState,dispatch:function(e){return n.dispatch(e)}},o=e[t].map(function(e){return e(a)});return P.apply(void 0,o)(r)(i)}}}};};function se(e){return function(t,n){void 0===t&&(t={});var r={};if(\"initialize:aborted\"===n.type)return t;if(/^registerPlugin:([^:]*)$/.test(n.type)){var i=le(n.type,\"registerPlugin\"),a=e()[i];if(!a||!i)return t;var o=n.enabled,u=a.config;return r[i]={enabled:o,initialized:!!o&&Boolean(!a.initialize),loaded:!!o&&Boolean(a.loaded({config:u})),config:u},g$1({},t,r)}if(/^initialize:([^:]*)$/.test(n.type)){var c=le(n.type,z.initialize),s=e()[c];return s&&c?(r[c]=g$1({},t[c],{initialized:!0,loaded:Boolean(s.loaded({config:s.config}))}),g$1({},t,r)):t}if(/^ready:([^:]*)$/.test(n.type))return r[n.name]=g$1({},t[n.name],{loaded:!0}),g$1({},t,r);switch(n.type){case z.disablePlugin:return g$1({},t,fe(n.plugins,!1,t));case z.enablePlugin:return g$1({},t,fe(n.plugins,!0,t));default:return t}}}function le(e,t){return e.substring(t.length+1,e.length)}function fe(e,t,n){return e.reduce(function(e,r){return e[r]=g$1({},n[r],{enabled:t}),e},n)}function de(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var pe={last:{},history:[]};function me(e,t){void 0===e&&(e=pe);var n=t.options,r=t.meta;if(t.type===z.track){var i=de(g$1({event:t.event,properties:t.properties},Object.keys(n).length&&{options:n},{meta:r}));return g$1({},e,{last:i,history:e.history.concat(i)})}return e}var ge={actions:[]};function he(e,t){void 0===e&&(e=ge);var n=t.payload;switch(t.type){case\"queue\":var r;return r=n&&n.type&&n.type===z.identify?[t].concat(e.actions):e.actions.concat(t),g$1({},e,{actions:r});case\"dequeue\":return [];default:return e}}var ve=/#.*$/;function ye(e){var t=/(http[s]?:\\/\\/)?([^\\/\\s]+\\/)(.*)/g.exec(e);return \"/\"+(t&&t[3]?t[3].split(\"?\")[0].replace(ve,\"\"):\"\")}var be,Ie=function(e){if(void 0===e&&(e={}),!$$1)return e;var t=document,n=t.title,r=t.referrer,i=window,a=i.location,o=i.innerWidth,u=i.innerHeight,c=a.hash,s=a.search,l=function(e){var t=function(){if($$1)for(var e,t=document.getElementsByTagName(\"link\"),n=0;e=t[n];n++)if(\"canonical\"===e.getAttribute(\"rel\"))return e.getAttribute(\"href\")}();return t?t.match(/\\?/)?t:t+e:window.location.href.replace(ve,\"\")}(s),f={title:n,url:l,path:ye(l),hash:c,search:s,width:o,height:u};return r&&\"\"!==r&&(f.referrer=r),g$1({},f,e)},we={last:{},history:[]};function Ee(e,t){void 0===e&&(e=we);var n=t.options;if(t.type===z.page){var r=de(g$1({properties:t.properties,meta:t.meta},Object.keys(n).length&&{options:n}));return g$1({},e,{last:r,history:e.history.concat(r)})}return e}be={};var Pe={initialized:!1,sessionId:y$1(),app:null,version:null,debug:!1,offline:!!$$1&&!navigator.onLine,os:{name:\"na\"},userAgent:$$1?navigator.userAgent:\"node\",library:{name:\"analytics\",version:\"0.12.14\"},timezone:void 0,locale:void 0,campaign:{},referrer:be};function Se(e,t){void 0===e&&(e=Pe);var n=e.initialized,r=t.campaign;switch(t.type){case z.campaign:return g$1({},e,{campaign:r});case z.offline:return g$1({},e,{offline:!0});case z.online:return g$1({},e,{offline:!1});default:return n?e:g$1({},Pe,e,{initialized:!0})}}var Ne=[\"plugins\",\"reducers\",\"storage\"];function Ae(){return f(\"analytics\",[]),function(e){return function(t,n$1,r){var i=e(t,n$1,r),a=i.dispatch;return Object.assign(i,{dispatch:function(e){return n[o].analytics.push(e.action||e),a(e)}})}}}function _e(e){return function(){return P(P.apply(null,arguments),Ae())}}function Oe(e){return e?rn(e)?e:[e]:[]}function je(t,n,r){void 0===t&&(t={});var i,a,o=y$1();return n&&(B[o]=(i=n,a=function(e){for(var t,n=e||Array.prototype.slice.call(arguments),r=0;r<n.length;r++)if(W$1(n[r])){t=n[r];break}return t}(r),function(e){a&&a(e),i(e);})),g$1({},t,{rid:o,ts:(new Date).getTime()},n?{hasCallback:!0}:{})}function ke(o){void 0===o&&(o={});var u=o.reducers||{},s$1=o.initialUser||{},f$1=(o.plugins||[]).reduce(function(e,t){if(W$1(t))return e.middlewares=e.middlewares.concat(t),e;if(t.NAMESPACE&&(t.name=t.NAMESPACE),!t.name)throw new Error(\"https://lytics.dev/errors/1\");t.config||(t.config={});var n=t.EVENTS?Object.keys(t.EVENTS).map(function(e){return t.EVENTS[e]}):[];e.pluginEnabled[t.name]=!(!1===t.enabled||!1===t.config.enabled),delete t.enabled,t.methods&&(e.methods[t.name]=Object.keys(t.methods).reduce(function(e,n){var r;return e[n]=(r=t.methods[n],function(){for(var e=Array.prototype.slice.call(arguments),t=new Array(r.length),n=0;n<e.length;n++)t[n]=e[n];return t[t.length]=K,r.apply({instance:K},t)}),e},{}),delete t.methods);var r=Object.keys(t).concat(n),i=new Set(e.events.concat(r));if(e.events=Array.from(i),e.pluginsArray=e.pluginsArray.concat(t),e.plugins[t.name])throw new Error(t.name+\"AlreadyLoaded\");return e.plugins[t.name]=t,e.plugins[t.name].loaded||(e.plugins[t.name].loaded=function(){return !0}),e},{plugins:{},pluginEnabled:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),m=o.storage?o.storage:{getItem:a$2,setItem:f,removeItem:i$2},b=function(e){return function(t,n,i){return n.getState(\"user\")[t]||(i&&on(i)&&i[t]?i[t]:R(e)[t]||a$2($(t))||null)}}(m),I=f$1.plugins,A=f$1.events.filter(function(e){return !T.includes(e)}).sort(),_=new Set(A.concat(x$1).filter(function(e){return !T.includes(e)})),O=Array.from(_).sort(),M=function(){return I},q=new ce,V=q.addMiddleware,B=q.removeMiddleware,L=q.dynamicMiddlewares,J=function(){throw new Error(\"Abort disabled inListener\")},X=s(),H=R(m),W=g$1({},H,s$1,X.an_uid?{userId:X.an_uid}:{},X.an_aid?{anonymousId:X.an_aid}:{});W.anonymousId||(W.anonymousId=y$1());var F=g$1({enable:function(e,t){return new Promise(function(n){le.dispatch({type:z.enablePlugin,plugins:Oe(e),_:{originalAction:z.enablePlugin}},n,[t]);})},disable:function(e,t){return new Promise(function(n){le.dispatch({type:z.disablePlugin,plugins:Oe(e),_:{originalAction:z.disablePlugin}},n,[t]);})}},f$1.methods),G=!1,K={identify:function(e,t,n,r){try{var i=q$1(e)?e:null,o=on(e)?e:t,u=n||{},s=K.user();f($(j),i);var l=i||o.userId||b(j,K,o);return Promise.resolve(new Promise(function(e){le.dispatch(g$1({type:z.identifyStart,userId:l,traits:o||{},options:u,anonymousId:s.anonymousId},s.id&&s.id!==i&&{previousId:s.id}),e,[t,n,r]);}))}catch(e){return Promise.reject(e)}},track:function(e,t,n,r){try{var i=on(e)?e.event:e;if(!i||!q$1(i))throw new Error(\"EventMissing\");var a=on(e)?e:t||{},o=on(n)?n:{};return Promise.resolve(new Promise(function(e){le.dispatch({type:z.trackStart,event:i,properties:a,options:o,userId:b(j,K,t),anonymousId:b(k$1,K,t)},e,[t,n,r]);}))}catch(e){return Promise.reject(e)}},page:function(e,t,n){try{var r=on(e)?e:{},i=on(t)?t:{};return Promise.resolve(new Promise(function(a){le.dispatch({type:z.pageStart,properties:Ie(r),options:i,userId:b(j,K,r),anonymousId:b(k$1,K,r)},a,[e,t,n]);}))}catch(e){return Promise.reject(e)}},user:function(e){if(e===j||\"id\"===e)return b(j,K);if(e===k$1||\"anonId\"===e)return b(k$1,K);var t=K.getState(\"user\");return e?n$2(t,e):t},reset:function(e){return new Promise(function(t){le.dispatch({type:z.resetStart},t,e);})},ready:function(e){return G&&e({plugins:F,instance:K}),K.on(z.ready,function(t){e(t),G=!0;})},on:function(e,t){if(!e||!W$1(t))return !1;if(e===z.bootstrap)throw new Error(\".on disabled for \"+e);var n=/Start$|Start:/;if(\"*\"===e){var r=function(e){return function(e){return function(r){return r.type.match(n)&&t({payload:r,instance:K,plugins:I}),e(r)}}},i=function(e){return function(e){return function(r){return r.type.match(n)||t({payload:r,instance:K,plugins:I}),e(r)}}};return V(r,xe),V(i,Te),function(){B(r,xe),B(i,Te);}}var a=e.match(n)?xe:Te,o=function(n){return function(n){return function(r){return r.type===e&&t({payload:r,instance:K,plugins:I,abort:J}),n(r)}}};return V(o,a),function(){return B(o,a)}},once:function(e,t){if(!e||!W$1(t))return !1;if(e===z.bootstrap)throw new Error(\".once disabled for \"+e);var n=K.on(e,function(e){t({payload:e.payload,instance:K,plugins:I,abort:J}),n();});return n},getState:function(e){var t=le.getState();return e?n$2(t,e):Object.assign({},t)},dispatch:function(e){var t=q$1(e)?{type:e}:e;if(x$1.includes(t.type))throw new Error(\"reserved action \"+t.type);var n=g$1({},t,{_:g$1({originalAction:t.type},e._||{})});le.dispatch(n);},enablePlugin:F.enable,disablePlugin:F.disable,plugins:F,storage:{getItem:m.getItem,setItem:function(e,t,n){le.dispatch({type:z.setItemStart,key:e,value:t,options:n});},removeItem:function(e,t){le.dispatch({type:z.removeItemStart,key:e,options:t});}},setAnonymousId:function(e,t){K.storage.setItem(N$1,e,t);},events:{core:x$1,plugins:A}},Q=f$1.middlewares.concat([function(e){return function(e){return function(t){return t.meta||(t.meta=je()),e(t)}}},L(xe),oe(K,M,{all:O,plugins:A}),ue(m),C$1(K),D(K),L(Te)]),Y={context:Se,user:U(m),page:Ee,track:me,plugins:se(M),queue:he},Z=P,ee=P;if($$1&&o.debug){var te=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;te&&(Z=te({trace:!0,traceLimit:25})),ee=function(){return 0===arguments.length?Ae():on(typeof arguments[0])?_e():_e().apply(null,arguments)};}var ne,re=function(e){return Object.keys(e).reduce(function(t,n){return Ne.includes(n)||(t[n]=e[n]),t},{})}(o),ie=f$1.pluginsArray.reduce(function(e,t){var n=t.name,r=t.config,i=t.loaded,a=f$1.pluginEnabled[n];return e[n]={enabled:a,initialized:!!a&&Boolean(!t.initialize),loaded:Boolean(i({config:r})),config:r},e},{}),ae={context:re,user:W,plugins:ie},le=w(function(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];typeof e[i]===h$1&&(n[i]=e[i]);}var a,o=Object.keys(n);try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(typeof n(void 0,{type:\"@@redux/INIT\"})===v||typeof n(void 0,{type:y})===v)throw new Error(\"reducer \"+t+\" \"+v)});}(n);}catch(e){a=e;}return function(e,t){if(void 0===e&&(e={}),a)throw a;for(var r=!1,i={},u=0;u<o.length;u++){var c=o[u],s=e[c],l=(0, n[c])(s,t);if(typeof l===v){var f=E$1(c,t);throw new Error(f)}i[c]=l,r=r||l!==s;}return r?i:e}}(g$1({},Y,u)),ae,ee(Z(S.apply(void 0,Q))));le.dispatch=(ne=le.dispatch,function(e,t,n){var r=g$1({},e,{meta:je(e.meta,t,Oe(n))});return ne.apply(null,[r])});var fe=Object.keys(I);le.dispatch({type:z.bootstrap,plugins:fe,config:re,params:X,user:W,initialUser:s$1,persistedUser:H});var de=fe.filter(function(e){return f$1.pluginEnabled[e]}),pe=fe.filter(function(e){return !f$1.pluginEnabled[e]});return le.dispatch({type:z.registerPlugins,plugins:fe,enabled:f$1.pluginEnabled}),f$1.pluginsArray.map(function(e,t){var n=e.bootstrap,r=e.config,i=e.name;n&&W$1(n)&&n({instance:K,config:r,payload:e}),le.dispatch({type:z.registerPluginType(i),name:i,enabled:f$1.pluginEnabled[i],plugin:e}),f$1.pluginsArray.length===t+1&&le.dispatch({type:z.initializeStart,plugins:de,disabled:pe});}),K}var xe=\"before\",Te=\"after\";\n\nvar t=\"cookie\",i$1=a$1(),r$1=d$1,c=d$1;function u(o){return i$1?d$1(o,\"\",-1):i$2(o)}function a$1(){if(void 0!==i$1)return i$1;var e=\"cookiecookie\";try{d$1(e,e),i$1=-1!==document.cookie.indexOf(e),u(e);}catch(e){i$1=!1;}return i$1}function d$1(e,t,r,c,u,a){if(\"undefined\"!=typeof window){var d=arguments.length>1;return !1===i$1&&(d?f(e,t):a$2(e)),d?document.cookie=e+\"=\"+encodeURIComponent(t)+(r?\"; expires=\"+new Date(+new Date+1e3*r).toUTCString()+(c?\"; path=\"+c:\"\")+(u?\"; domain=\"+u:\"\")+(a?\"; secure\":\"\"):\"\"):decodeURIComponent(((\"; \"+document.cookie).split(\"; \"+e+\"=\")[1]||\"\").split(\";\")[0])}}\n\nvar r=\"localStorage\",g=b$2.bind(null,\"localStorage\");u$1(\"localStorage\",\"getItem\",a$2);u$1(\"localStorage\",\"setItem\",f);u$1(\"localStorage\",\"removeItem\",i$2);\n\nvar a=\"sessionStorage\",i=b$2.bind(null,\"sessionStorage\");u$1(\"sessionStorage\",\"getItem\",a$2);u$1(\"sessionStorage\",\"setItem\",f);u$1(\"sessionStorage\",\"removeItem\",i$2);\n\nfunction I(t){var o=t;try{if(\"true\"===(o=JSON.parse(t)))return !0;if(\"false\"===o)return !1;if(on(o))return o;parseFloat(o)===o&&(o=parseFloat(o));}catch(t){}if(null!==o&&\"\"!==o)return o}var k=g(),O=i(),x=a$1();function C(o,e){if(o){var r=A(e),a=!N(r),i=d(r)?I(localStorage.getItem(o)):void 0;if(a&&!I$2(i))return i;var n=h(r)?I(r$1(o)):void 0;if(a&&n)return n;var l=E(r)?I(sessionStorage.getItem(o)):void 0;if(a&&l)return l;var u=a$2(o);return a?u:{localStorage:i,sessionStorage:l,cookie:n,global:u}}}function L(r$2,a$1,l$1){if(r$2&&!I$2(a$1)){var u={},g=A(l$1),m=JSON.stringify(a$1),S=!N(g);return d(g)&&(u[r]=F(r,a$1,I(localStorage.getItem(r$2))),localStorage.setItem(r$2,m),S)?u[r]:h(g)&&(u[t]=F(t,a$1,I(r$1(r$2))),c(r$2,m),S)?u[t]:E(g)&&(u[a]=F(a,a$1,I(sessionStorage.getItem(r$2))),sessionStorage.setItem(r$2,m),S)?u[a]:(u[l]=F(l,a$1,a$2(r$2)),f(r$2,a$1),S?u[l]:u)}}function b(t$1,e){if(t$1){var a$1=A(e),s=C(t$1,m$1),n={};return !I$2(s.localStorage)&&d(a$1)&&(localStorage.removeItem(t$1),n[r]=s.localStorage),!I$2(s.cookie)&&h(a$1)&&(u(t$1),n[t]=s.cookie),!I$2(s.sessionStorage)&&E(a$1)&&(sessionStorage.removeItem(t$1),n[a]=s.sessionStorage),!I$2(s.global)&&G(a$1,l)&&(i$2(t$1),n[l]=s.global),n}}function A(t){return t?q$1(t)?t:t.storage:b$3}function d(t){return k&&G(t,r)}function h(t$1){return x&&G(t$1,t)}function E(t){return O&&G(t,a)}function N(t){return t===m$1||\"all\"===t}function G(t,o){return t===b$3||t===o||N(t)}function F(t,o,e){return {location:t,current:o,previous:e}}var J={setItem:L,getItem:C,removeItem:b};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction analyticsLib() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultSettings = {\n storage: J\n };\n return ke(_objectSpread2(_objectSpread2({}, defaultSettings), opts));\n}\n\nfunction findScript(src) {\n const scripts = Array.prototype.slice.call(window.document.querySelectorAll(\"script\"));\n return scripts.find(s => s.src === src);\n}\nfunction buildScriptSrc(src, options) {\n let result = src;\n if (!result.startsWith(\"http\")) {\n result = `https://${(options === null || options === void 0 ? void 0 : options.www) ? \"www.\" : \"\"}${result}`;\n }\n if (options === null || options === void 0 ? void 0 : options.min) {\n result = result + \".min.js\";\n }\n else if (options === null || options === void 0 ? void 0 : options.js) {\n result = result + \".js\";\n }\n if (options === null || options === void 0 ? void 0 : options.query) {\n result += \"?\" + options.query;\n }\n return result;\n}\nfunction loadScript(src, options) {\n const found = findScript(src);\n if (found !== undefined) {\n const status = found === null || found === void 0 ? void 0 : found.getAttribute(\"status\");\n if (status === \"loaded\") {\n return Promise.resolve(found);\n }\n if (status === \"loading\") {\n return new Promise((resolve, reject) => {\n found.addEventListener(\"load\", () => resolve(found));\n found.addEventListener(\"error\", err => reject(err));\n });\n }\n }\n return new Promise((resolve, reject) => {\n var _a, _b;\n const script = window.document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = buildScriptSrc(src, options);\n script.async = true;\n script.setAttribute(\"status\", \"loading\");\n for (const [k, v] of Object.entries((_a = options === null || options === void 0 ? void 0 : options.attributes) !== null && _a !== void 0 ? _a : {})) {\n script.setAttribute(k, v);\n }\n script.onload = () => {\n script.onerror = script.onload = null;\n script.setAttribute(\"status\", \"loaded\");\n resolve(script);\n };\n script.onerror = () => {\n script.onerror = script.onload = null;\n script.setAttribute(\"status\", \"error\");\n reject(new Error(`Failed to load ${src}`));\n };\n const tag = window.document.getElementsByTagName(\"script\")[0];\n (_b = tag.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(script, tag);\n });\n}\n\nvar __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst tagPlugin = {\n id: \"tag\",\n handle(config, payload) {\n return __awaiter$5(this, void 0, void 0, function* () {\n if (!applyFilters(payload, config)) {\n return;\n }\n insertTags(config.code, payload);\n });\n },\n};\nfunction insertTags(code, event, opts = {}) {\n let tag;\n try {\n tag = JSON.parse(code);\n }\n catch (e) {\n tag = { code, lang: \"javascript\" };\n }\n const debug = opts.debug || false;\n if (isInBrowser()) {\n if (tag.lang === \"javascript\") {\n execJs(tag.code, event);\n }\n else {\n const codeHolder = document.createElement(\"span\");\n codeHolder.innerHTML = replaceMacro(tag.code, event);\n document.body.insertAdjacentElement(\"beforeend\", codeHolder);\n const scripts = codeHolder.querySelectorAll(\"script\");\n scripts.forEach(script => {\n const scriptClone = document.createElement(\"script\");\n scriptClone.type = scriptClone.type || \"text/javascript\";\n if (script.hasAttribute(\"src\")) {\n scriptClone.src = script.src;\n }\n scriptClone.text = script.text;\n if (debug) {\n console.log(`[JITSU] Executing script${script.hasAttribute(\"src\") ? ` ${script.src}` : \"\"}`, scriptClone.text);\n }\n document.head.appendChild(scriptClone);\n document.head.removeChild(scriptClone);\n });\n }\n }\n else {\n if (debug) {\n console.log(`[JITSU] insertTags(): cannot insert tags in non-browser environment`);\n }\n }\n}\n//This weird code is used to mask eval() usage.\n//Although the code can be executed in the browser, some server side bundlers (like Vercel) fails\n//the build if a direct reference to eval() is found.\nlet al = \"al\";\nlet ev = \"ve\".split(\"\").reverse().join(\"\");\nconst execF = globalThis[ev + al];\nfunction execJs(code, event) {\n const varName = `jitsu_event_${randomId()}`;\n window[varName] = event;\n const iif = `(function(){\n const event = ${varName};\n ${code}\n })()`;\n try {\n execF(iif);\n }\n catch (e) {\n console.error(`[JITSU] Error executing JS code: ${e.message}. Code: `, iif);\n }\n finally {\n delete window[varName];\n }\n return iif;\n}\nfunction replaceMacro(code, event) {\n return code.replace(/{{\\s*event\\s*}}/g, JSON.stringify(event));\n}\n\nvar __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst cdn = \"cdn.lr-ingest.io/\";\nconst logrocketPlugin = {\n id: \"logrocket\",\n handle(config, payload) {\n return __awaiter$4(this, void 0, void 0, function* () {\n if (!applyFilters(payload, config)) {\n return;\n }\n initLogrocketIfNeeded(config.appId);\n const action = logRocket => {\n if (payload.type === \"identify\" && payload.userId) {\n logRocket.identify(payload.userId, payload.traits || {});\n }\n };\n getLogRocketQueue().push(action);\n if (getLogRocketState() === \"loaded\") {\n flushLogRocketQueue(window[\"LogRocket\"]);\n }\n });\n },\n};\nfunction getLogRocketState() {\n return window[\"__jitsuLrState\"] || \"fresh\";\n}\nfunction setLogRocketState(s) {\n window[\"__jitsuLrState\"] = s;\n}\nfunction getLogRocketQueue() {\n return window[\"__jitsuLrQueue\"] || (window[\"__jitsuLrQueue\"] = []);\n}\nfunction flushLogRocketQueue(lr) {\n const queue = getLogRocketQueue();\n while (queue.length > 0) {\n const method = queue.shift();\n try {\n const res = method(lr);\n if (res) {\n res.catch(e => console.warn(`Async LogRocket method failed: ${e.message}`, e));\n }\n }\n catch (e) {\n console.warn(`LogRocket method failed: ${e.message}`, e);\n }\n }\n}\nfunction initLogrocketIfNeeded(appId) {\n return __awaiter$4(this, void 0, void 0, function* () {\n if (getLogRocketState() !== \"fresh\") {\n return;\n }\n setLogRocketState(\"loading\");\n loadScript(`${cdn}LogRocket`, { min: true, attributes: { crossOrigin: \"anonymous\" } })\n .then(() => {\n if (window[\"LogRocket\"]) {\n try {\n window[\"LogRocket\"].init(appId);\n }\n catch (e) {\n console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);\n setLogRocketState(\"failed\");\n }\n setLogRocketState(\"loaded\");\n flushLogRocketQueue(window[\"LogRocket\"]);\n }\n })\n .catch(e => {\n console.warn(`LogRocket (id=${appId}) init failed: ${e.message}`, e);\n setLogRocketState(\"failed\");\n });\n });\n}\n\nvar __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nfunction omit(obj, ...keys) {\n return Object.fromEntries(Object.entries(obj).filter(([k]) => !keys.includes(k)));\n}\nconst gtmPlugin = {\n id: \"gtm\",\n handle(config, payload) {\n return __awaiter$3(this, void 0, void 0, function* () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n const debug = !!config.debug;\n if (!applyFilters(payload, config)) {\n return;\n }\n yield initGtmIfNeeded(config, payload);\n const dataLayer = window[config.dataLayerName || \"dataLayer\"];\n //traits could be in both nodes, context.traits takes precedence\n const traits = Object.assign(Object.assign({}, ((payload === null || payload === void 0 ? void 0 : payload.traits) || {})), (((_a = payload === null || payload === void 0 ? void 0 : payload.context) === null || _a === void 0 ? void 0 : _a.traits) || {}));\n //remove properties that defined separately\n const idsFromTraits = omit(traits, \"id\", \"userId\", \"user_id\", \"anonymousId\", \"userId\");\n if (debug) {\n console.debug(\"GTM plugin will be applied to following payload\", payload);\n }\n // See https://developers.google.com/tag-platform/tag-manager/server-side/common-event-data\n const userData = {\n email_address: traits.email,\n };\n const ids = Object.assign(Object.assign(Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {})), idsFromTraits), { user_data: Object.keys(userData).length > 0 ? userData : undefined });\n if (debug) {\n console.debug(\"GTM plugin will set following user-related data layer vars\", ids);\n }\n const pageProperties = payload.properties || {};\n const pageVariables = {\n page_location: pageProperties.url || ((_c = (_b = payload.context) === null || _b === void 0 ? void 0 : _b.page) === null || _c === void 0 ? void 0 : _c.url),\n page_title: pageProperties.title || ((_e = (_d = payload.context) === null || _d === void 0 ? void 0 : _d.page) === null || _e === void 0 ? void 0 : _e.title),\n page_path: pageProperties.path || ((_g = (_f = payload.context) === null || _f === void 0 ? void 0 : _f.page) === null || _g === void 0 ? void 0 : _g.path),\n page_hash: pageProperties.hash || ((_j = (_h = payload.context) === null || _h === void 0 ? void 0 : _h.page) === null || _j === void 0 ? void 0 : _j.hash),\n page_search: pageProperties.search || ((_l = (_k = payload.context) === null || _k === void 0 ? void 0 : _k.page) === null || _l === void 0 ? void 0 : _l.search),\n page_referrer: (_p = (_o = (_m = payload === null || payload === void 0 ? void 0 : payload.context) === null || _m === void 0 ? void 0 : _m.page) === null || _o === void 0 ? void 0 : _o.referrer) !== null && _p !== void 0 ? _p : \"\",\n };\n if (debug) {\n console.debug(\"GTM plugin will set following context (page) related data layer vars\", ids);\n }\n const pushToDataLayer = (data) => {\n dataLayer.push(data);\n if (debug) {\n console.debug(\"GTM plugin will push following data to dataLayer\", data);\n }\n };\n switch (payload.type) {\n case \"page\":\n const pageEvent = Object.assign(Object.assign({ event: \"page_view\" }, pageVariables), ids);\n pushToDataLayer(pageEvent);\n break;\n case \"track\":\n const { properties: trackProperties } = payload;\n const trackEvent = Object.assign(Object.assign(Object.assign({ event: payload.event }, pageVariables), trackProperties), ids);\n pushToDataLayer(trackEvent);\n break;\n case \"identify\":\n const { traits } = payload;\n const identifyEvent = Object.assign(Object.assign(Object.assign({ event: \"identify\" }, pageVariables), traits), ids);\n pushToDataLayer(identifyEvent);\n break;\n }\n dataLayer.push(function () {\n this.reset();\n });\n });\n },\n};\nfunction getGtmState() {\n return window[\"__jitsuGtmState\"] || \"fresh\";\n}\nfunction setGtmState(s) {\n window[\"__jitsuGtmState\"] = s;\n}\nfunction initGtmIfNeeded(config, payload) {\n return __awaiter$3(this, void 0, void 0, function* () {\n if (getGtmState() !== \"fresh\") {\n return;\n }\n setGtmState(\"loading\");\n const dlName = config.dataLayerName || \"dataLayer\";\n const tagId = config.containerId;\n (function (w, l, i) {\n w[l] = w[l] || [];\n w[l].push({\n user_id: payload.userId,\n });\n w[l].push({\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\",\n });\n const dl = l != \"dataLayer\" ? \"&l=\" + l : \"\";\n const scriptSrc = \"googletagmanager.com/gtm\";\n loadScript(scriptSrc, { www: true, js: true, query: \"id=\" + i + dl })\n .then(() => {\n setGtmState(\"loaded\");\n })\n .catch(e => {\n console.warn(`GTM (containerId=${tagId}) init failed: ${e.message}`, e);\n setGtmState(\"failed\");\n });\n })(window, dlName, tagId);\n });\n}\n\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst urlData = [\n new Uint8Array([109, 111, 99, 46, 114, 101, 103, 97, 110, 97, 109, 103, 97, 116, 101, 108, 103, 111, 111, 103]),\n new Uint8Array([103, 97, 116, 103]),\n new Uint8Array([115, 106]),\n];\nfunction byteArrayToString(byteArray) {\n const decoder = new TextDecoder();\n return decoder.decode(byteArray);\n}\nfunction buildTagUrl() {\n return urlData\n .map(d => d.reverse())\n .map(byteArrayToString)\n .join(\"/\");\n}\nconst ga4Plugin = {\n id: \"ga4-tag\",\n handle(config, payload) {\n return __awaiter$2(this, void 0, void 0, function* () {\n var _a, _b;\n if (!applyFilters(payload, config)) {\n return;\n }\n yield initGa4IfNeeded(config, payload);\n const dataLayer = window[config.dataLayerName || \"dataLayer\"];\n const gtag = function () {\n dataLayer.push(arguments);\n };\n const ids = Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId, userId: payload.userId } : {})), (payload.anonymousId ? { anonymousId: payload.anonymousId } : {}));\n if (payload.userId) {\n // @ts-ignore\n gtag(\"set\", { user_id: payload.userId });\n }\n switch (payload.type) {\n case \"page\":\n if (config.autoPageView) {\n console.log(\"autoPageView\");\n break;\n }\n const { properties: pageProperties, context } = payload;\n const pageEvent = Object.assign({ page_location: pageProperties.url, page_title: pageProperties.title, page_path: pageProperties.path, page_hash: pageProperties.hash, page_search: pageProperties.search, page_referrer: (_b = (_a = context === null || context === void 0 ? void 0 : context.page) === null || _a === void 0 ? void 0 : _a.referrer) !== null && _b !== void 0 ? _b : \"\" }, ids);\n // @ts-ignore\n gtag(\"event\", \"page_view\", pageEvent);\n break;\n case \"track\":\n const { properties: trackProperties } = payload;\n const trackEvent = Object.assign(Object.assign({}, trackProperties), ids);\n // @ts-ignore\n gtag(\"event\", payload.event, trackEvent);\n break;\n case \"identify\":\n const { traits } = payload;\n const identifyEvent = Object.assign(Object.assign({}, traits), ids);\n // @ts-ignore\n gtag(\"event\", \"identify\", identifyEvent);\n break;\n }\n });\n },\n};\nfunction getGa4State() {\n return window[\"__jitsuGa4State\"] || \"fresh\";\n}\nfunction setGa4State(s) {\n window[\"__jitsuGa4State\"] = s;\n}\nfunction initGa4IfNeeded(config, payload) {\n return __awaiter$2(this, void 0, void 0, function* () {\n if (getGa4State() !== \"fresh\") {\n return;\n }\n setGa4State(\"loading\");\n const dlName = config.dataLayerName || \"dataLayer\";\n const dlParam = dlName !== \"dataLayer\" ? \"&l=\" + dlName : \"\";\n // to work with both GA4 and GTM\n const tagId = config.measurementIds;\n window[dlName] = window[dlName] || [];\n const gtag = function () {\n window[dlName].push(arguments);\n };\n // @ts-ignore\n gtag(\"js\", new Date());\n gtag(\n // @ts-ignore\n \"config\", tagId, Object.assign(Object.assign({}, (payload.userId ? { user_id: payload.userId } : {})), (!config.autoPageView ? { send_page_view: false } : {})));\n loadScript(buildTagUrl(), { query: `id=${tagId}${dlParam}`, www: true })\n .then(() => {\n setGa4State(\"loaded\");\n })\n .catch(e => {\n console.warn(`GA4 (containerId=${config.measurementIds}) init failed: ${e.message}`, e);\n setGa4State(\"failed\");\n });\n });\n}\n\nfunction satisfyFilter(filter, subject) {\n return filter === \"*\" || filter.toLowerCase().trim() === (subject || \"\").trim().toLowerCase();\n}\nfunction satisfyDomainFilter(filter, subject) {\n if (filter === \"*\") {\n return true;\n }\n subject = subject || \"\";\n if (filter.startsWith(\"*.\")) {\n return subject.endsWith(filter.substring(1));\n }\n else {\n return filter === subject;\n }\n}\nfunction applyFilters(event, creds) {\n const { hosts = \"*\", events = \"*\" } = creds;\n try {\n const eventsArray = Array.isArray(events) ? events : events.split(\"\\n\");\n const hostsArray = Array.isArray(hosts) ? hosts : hosts.split(\"\\n\");\n return (!!hostsArray.find(hostFilter => { var _a, _b; return satisfyDomainFilter(hostFilter, (_b = (_a = event.context) === null || _a === void 0 ? void 0 : _a.page) === null || _b === void 0 ? void 0 : _b.host); }) &&\n (!!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.type)) ||\n !!eventsArray.find(eventFilter => satisfyFilter(eventFilter, event.event))));\n }\n catch (e) {\n console.warn(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}. Values`, events, hosts);\n throw new Error(`Failed to apply filters: ${e.message}. Typeof events: ${typeof events}, typeof hosts: ${typeof hosts}`);\n }\n}\nconst internalDestinationPlugins = {\n [tagPlugin.id]: tagPlugin,\n [gtmPlugin.id]: gtmPlugin,\n [ga4Plugin.id]: ga4Plugin,\n [logrocketPlugin.id]: logrocketPlugin,\n};\n\nconst jitsuVersion = \"2.0.0\";\nconst jitsuLibraryName = \"@jitsu/js\";\n\nconst publicSuffixes = \"myshopify.com,ac,com.ac,edu.ac,gov.ac,net.ac,mil.ac,org.ac,ad,nom.ad,ae,co.ae,net.ae,org.ae,sch.ae,ac.ae,gov.ae,mil.ae,aero,af,gov.af,com.af,org.af,net.af,edu.af,ag,com.ag,org.ag,net.ag,co.ag,nom.ag,ai,off.ai,com.ai,net.ai,org.ai,al,com.al,edu.al,gov.al,mil.al,net.al,org.al,am,co.am,com.am,commune.am,net.am,org.am,ao,ed.ao,gv.ao,og.ao,co.ao,pb.ao,it.ao,aq,ar,bet.ar,com.ar,coop.ar,edu.ar,gob.ar,gov.ar,int.ar,mil.ar,musica.ar,mutual.ar,net.ar,org.ar,senasa.ar,tur.ar,arpa,e164.arpa,in-addr.arpa,ip6.arpa,iris.arpa,uri.arpa,urn.arpa,as,gov.as,asia,at,ac.at,co.at,gv.at,or.at,sth.ac.at,au,com.au,net.au,org.au,edu.au,gov.au,asn.au,id.au,act.au,nsw.au,nt.au,qld.au,sa.au,tas.au,vic.au,wa.au,aw,com.aw,ax,az,com.az,net.az,int.az,gov.az,org.az,edu.az,info.az,pp.az,mil.az,name.az,pro.az,biz.az,ba,com.ba,edu.ba,gov.ba,mil.ba,net.ba,org.ba,bb,biz.bb,co.bb,com.bb,edu.bb,gov.bb,info.bb,net.bb,org.bb,store.bb,tv.bb,bd,be,ac.be,bf,gov.bf,bg,a.bg,b.bg,c.bg,d.bg,e.bg,f.bg,g.bg,h.bg,i.bg,j.bg,k.bg,l.bg,m.bg,n.bg,o.bg,p.bg,q.bg,r.bg,s.bg,t.bg,u.bg,v.bg,w.bg,x.bg,y.bg,z.bg,0.bg,1.bg,2.bg,3.bg,4.bg,5.bg,6.bg,7.bg,8.bg,9.bg,bh,com.bh,edu.bh,net.bh,org.bh,gov.bh,bi,co.bi,com.bi,edu.bi,or.bi,org.bi,biz,bj,africa.bj,agro.bj,architectes.bj,assur.bj,avocats.bj,co.bj,com.bj,eco.bj,econo.bj,edu.bj,info.bj,loisirs.bj,money.bj,net.bj,org.bj,ote.bj,resto.bj,restaurant.bj,tourism.bj,univ.bj,bm,com.bm,edu.bm,gov.bm,net.bm,org.bm,bn,com.bn,edu.bn,gov.bn,net.bn,org.bn,bo,com.bo,edu.bo,gob.bo,int.bo,org.bo,net.bo,mil.bo,tv.bo,web.bo,br,9guacu.br,abc.br,adm.br,adv.br,agr.br,aju.br,am.br,anani.br,aparecida.br,app.br,arq.br,art.br,ato.br,b.br,barueri.br,belem.br,bhz.br,bib.br,bio.br,blog.br,bmd.br,boavista.br,bsb.br,campinagrande.br,campinas.br,caxias.br,cim.br,cng.br,cnt.br,com.br,contagem.br,coop.br,coz.br,cri.br,cuiaba.br,curitiba.br,def.br,des.br,det.br,dev.br,ecn.br,eco.br,edu.br,emp.br,enf.br,eng.br,esp.br,etc.br,eti.br,far.br,feira.br,flog.br,floripa.br,fm.br,fnd.br,fortal.br,fot.br,foz.br,fst.br,g12.br,geo.br,ggf.br,goiania.br,gov.br,gru.br,imb.br,ind.br,inf.br,jab.br,jampa.br,jdf.br,joinville.br,jor.br,jus.br,leg.br,lel.br,log.br,londrina.br,macapa.br,maceio.br,manaus.br,maringa.br,mat.br,med.br,mil.br,morena.br,mp.br,mus.br,natal.br,net.br,niteroi.br,nom.br,not.br,ntr.br,odo.br,ong.br,org.br,osasco.br,palmas.br,poa.br,ppg.br,pro.br,psc.br,psi.br,pvh.br,qsl.br,radio.br,rec.br,recife.br,rep.br,ribeirao.br,rio.br,riobranco.br,riopreto.br,salvador.br,sampa.br,santamaria.br,santoandre.br,saobernardo.br,saogonca.br,seg.br,sjc.br,slg.br,slz.br,sorocaba.br,srv.br,taxi.br,tc.br,tec.br,teo.br,the.br,tmp.br,trd.br,tur.br,tv.br,udi.br,vet.br,vix.br,vlog.br,wiki.br,zlg.br,bs,com.bs,net.bs,org.bs,edu.bs,gov.bs,bt,com.bt,edu.bt,gov.bt,net.bt,org.bt,bv,bw,co.bw,org.bw,by,gov.by,mil.by,com.by,of.by,bz,com.bz,net.bz,org.bz,edu.bz,gov.bz,ca,ab.ca,bc.ca,mb.ca,nb.ca,nf.ca,nl.ca,ns.ca,nt.ca,nu.ca,on.ca,pe.ca,qc.ca,sk.ca,yk.ca,gc.ca,cat,cc,cd,gov.cd,cf,cg,ch,ci,org.ci,or.ci,com.ci,co.ci,edu.ci,ed.ci,ac.ci,net.ci,go.ci,asso.ci,aéroport.ci,int.ci,presse.ci,md.ci,gouv.ci,ck,cl,co.cl,gob.cl,gov.cl,mil.cl,cm,co.cm,com.cm,gov.cm,net.cm,cn,ac.cn,com.cn,edu.cn,gov.cn,net.cn,org.cn,mil.cn,co,arts.co,com.co,edu.co,firm.co,gov.co,info.co,int.co,mil.co,net.co,nom.co,org.co,rec.co,web.co,com,coop,cr,ac.cr,co.cr,ed.cr,fi.cr,go.cr,or.cr,sa.cr,cu,com.cu,edu.cu,org.cu,net.cu,gov.cu,inf.cu,cv,com.cv,edu.cv,int.cv,nome.cv,org.cv,cw,com.cw,edu.cw,net.cw,org.cw,cx,gov.cx,cy,ac.cy,biz.cy,com.cy,ekloges.cy,gov.cy,ltd.cy,mil.cy,net.cy,org.cy,press.cy,pro.cy,tm.cy,cz,de,dj,dk,dm,com.dm,net.dm,org.dm,edu.dm,gov.dm,do,art.do,com.do,edu.do,gob.do,gov.do,mil.do,net.do,org.do,sld.do,web.do,dz,art.dz,asso.dz,com.dz,edu.dz,gov.dz,org.dz,net.dz,pol.dz,soc.dz,tm.dz,ec,com.ec,info.ec,net.ec,fin.ec,k12.ec,med.ec,pro.ec,org.ec,edu.ec,gov.ec,gob.ec,mil.ec,edu,ee,edu.ee,gov.ee,riik.ee,lib.ee,med.ee,com.ee,pri.ee,aip.ee,org.ee,fie.ee,eg,com.eg,edu.eg,eun.eg,gov.eg,mil.eg,name.eg,net.eg,org.eg,sci.eg,er,es,com.es,nom.es,org.es,gob.es,edu.es,et,com.et,gov.et,org.et,edu.et,biz.et,name.et,info.et,net.et,eu,fi,aland.fi,fj,ac.fj,biz.fj,com.fj,gov.fj,info.fj,mil.fj,name.fj,net.fj,org.fj,pro.fj,fk,com.fm,edu.fm,net.fm,org.fm,fm,fo,fr,asso.fr,com.fr,gouv.fr,nom.fr,prd.fr,tm.fr,aeroport.fr,avocat.fr,avoues.fr,cci.fr,chambagri.fr,chirurgiens-dentistes.fr,experts-comptables.fr,geometre-expert.fr,greta.fr,huissier-justice.fr,medecin.fr,notaires.fr,pharmacien.fr,port.fr,veterinaire.fr,ga,gb,edu.gd,gov.gd,gd,ge,com.ge,edu.ge,gov.ge,org.ge,mil.ge,net.ge,pvt.ge,gf,gg,co.gg,net.gg,org.gg,gh,com.gh,edu.gh,gov.gh,org.gh,mil.gh,gi,com.gi,ltd.gi,gov.gi,mod.gi,edu.gi,org.gi,gl,co.gl,com.gl,edu.gl,net.gl,org.gl,gm,gn,ac.gn,com.gn,edu.gn,gov.gn,org.gn,net.gn,gov,gp,com.gp,net.gp,mobi.gp,edu.gp,org.gp,asso.gp,gq,gr,com.gr,edu.gr,net.gr,org.gr,gov.gr,gs,gt,com.gt,edu.gt,gob.gt,ind.gt,mil.gt,net.gt,org.gt,gu,com.gu,edu.gu,gov.gu,guam.gu,info.gu,net.gu,org.gu,web.gu,gw,gy,co.gy,com.gy,edu.gy,gov.gy,net.gy,org.gy,hk,com.hk,edu.hk,gov.hk,idv.hk,net.hk,org.hk,hm,hn,com.hn,edu.hn,org.hn,net.hn,mil.hn,gob.hn,hr,iz.hr,from.hr,name.hr,com.hr,ht,com.ht,shop.ht,firm.ht,info.ht,adult.ht,net.ht,pro.ht,org.ht,med.ht,art.ht,coop.ht,pol.ht,asso.ht,edu.ht,rel.ht,gouv.ht,perso.ht,hu,co.hu,info.hu,org.hu,priv.hu,sport.hu,tm.hu,2000.hu,agrar.hu,bolt.hu,casino.hu,city.hu,erotica.hu,erotika.hu,film.hu,forum.hu,games.hu,hotel.hu,ingatlan.hu,jogasz.hu,konyvelo.hu,lakas.hu,media.hu,news.hu,reklam.hu,sex.hu,shop.hu,suli.hu,szex.hu,tozsde.hu,utazas.hu,video.hu,id,ac.id,biz.id,co.id,desa.id,go.id,mil.id,my.id,net.id,or.id,ponpes.id,sch.id,web.id,ie,gov.ie,il,ac.il,co.il,gov.il,idf.il,k12.il,muni.il,net.il,org.il,im,ac.im,co.im,com.im,ltd.co.im,net.im,org.im,plc.co.im,tt.im,tv.im,in,5g.in,6g.in,ac.in,ai.in,am.in,bihar.in,biz.in,business.in,ca.in,cn.in,co.in,com.in,coop.in,cs.in,delhi.in,dr.in,edu.in,er.in,firm.in,gen.in,gov.in,gujarat.in,ind.in,info.in,int.in,internet.in,io.in,me.in,mil.in,net.in,nic.in,org.in,pg.in,post.in,pro.in,res.in,travel.in,tv.in,uk.in,up.in,us.in,info,int,eu.int,io,com.io,iq,gov.iq,edu.iq,mil.iq,com.iq,org.iq,net.iq,ir,ac.ir,co.ir,gov.ir,id.ir,net.ir,org.ir,sch.ir,is,net.is,com.is,edu.is,gov.is,org.is,int.is,it,gov.it,edu.it,je,co.je,net.je,org.je,jm,jo,com.jo,org.jo,net.jo,edu.jo,sch.jo,gov.jo,mil.jo,name.jo,jobs,jp,ac.jp,ad.jp,co.jp,ed.jp,go.jp,gr.jp,lg.jp,ne.jp,or.jp,ke,ac.ke,co.ke,go.ke,info.ke,me.ke,mobi.ke,ne.ke,or.ke,sc.ke,kg,org.kg,net.kg,com.kg,edu.kg,gov.kg,mil.kg,kh,ki,edu.ki,biz.ki,net.ki,org.ki,gov.ki,info.ki,com.ki,km,org.km,nom.km,gov.km,prd.km,tm.km,edu.km,mil.km,ass.km,com.km,kn,net.kn,org.kn,edu.kn,gov.kn,kp,com.kp,edu.kp,gov.kp,org.kp,rep.kp,tra.kp,kr,ac.kr,co.kr,es.kr,go.kr,hs.kr,kg.kr,mil.kr,ms.kr,ne.kr,or.kr,pe.kr,re.kr,sc.kr,kw,com.kw,edu.kw,emb.kw,gov.kw,ind.kw,net.kw,org.kw,ky,com.ky,edu.ky,net.ky,org.ky,kz,org.kz,edu.kz,net.kz,gov.kz,mil.kz,com.kz,la,int.la,net.la,info.la,edu.la,gov.la,per.la,com.la,org.la,lb,com.lb,edu.lb,gov.lb,net.lb,org.lb,lc,com.lc,net.lc,co.lc,org.lc,edu.lc,gov.lc,li,lk,gov.lk,sch.lk,net.lk,int.lk,com.lk,org.lk,edu.lk,ngo.lk,soc.lk,web.lk,ltd.lk,assn.lk,grp.lk,hotel.lk,ac.lk,lr,com.lr,edu.lr,gov.lr,org.lr,net.lr,ls,ac.ls,biz.ls,co.ls,edu.ls,gov.ls,info.ls,net.ls,org.ls,sc.ls,lt,gov.lt,lu,lv,com.lv,edu.lv,gov.lv,org.lv,mil.lv,id.lv,net.lv,asn.lv,conf.lv,ly,com.ly,net.ly,gov.ly,plc.ly,edu.ly,sch.ly,med.ly,org.ly,id.ly,ma,co.ma,net.ma,gov.ma,org.ma,ac.ma,press.ma,mc,tm.mc,asso.mc,md,me,co.me,net.me,org.me,edu.me,ac.me,gov.me,its.me,priv.me,mg,org.mg,nom.mg,gov.mg,prd.mg,tm.mg,edu.mg,mil.mg,com.mg,co.mg,mh,mil,mk,com.mk,org.mk,net.mk,edu.mk,gov.mk,inf.mk,name.mk,ml,com.ml,edu.ml,gouv.ml,gov.ml,net.ml,org.ml,presse.ml,mm,mn,gov.mn,edu.mn,org.mn,mo,com.mo,net.mo,org.mo,edu.mo,gov.mo,mobi,mp,mq,mr,gov.mr,ms,com.ms,edu.ms,gov.ms,net.ms,org.ms,mt,com.mt,edu.mt,net.mt,org.mt,mu,com.mu,net.mu,org.mu,gov.mu,ac.mu,co.mu,or.mu,museum,mv,aero.mv,biz.mv,com.mv,coop.mv,edu.mv,gov.mv,info.mv,int.mv,mil.mv,museum.mv,name.mv,net.mv,org.mv,pro.mv,mw,ac.mw,biz.mw,co.mw,com.mw,coop.mw,edu.mw,gov.mw,int.mw,museum.mw,net.mw,org.mw,mx,com.mx,org.mx,gob.mx,edu.mx,net.mx,my,biz.my,com.my,edu.my,gov.my,mil.my,name.my,net.my,org.my,mz,ac.mz,adv.mz,co.mz,edu.mz,gov.mz,mil.mz,net.mz,org.mz,na,info.na,pro.na,name.na,school.na,or.na,dr.na,us.na,mx.na,ca.na,in.na,cc.na,tv.na,ws.na,mobi.na,co.na,com.na,org.na,name,nc,asso.nc,nom.nc,ne,net,nf,com.nf,net.nf,per.nf,rec.nf,web.nf,arts.nf,firm.nf,info.nf,other.nf,store.nf,ng,com.ng,edu.ng,gov.ng,i.ng,mil.ng,mobi.ng,name.ng,net.ng,org.ng,sch.ng,ni,ac.ni,biz.ni,co.ni,com.ni,edu.ni,gob.ni,in.ni,info.ni,int.ni,mil.ni,net.ni,nom.ni,org.ni,web.ni,nl,no,fhs.no,vgs.no,fylkesbibl.no,folkebibl.no,museum.no,idrett.no,priv.no,mil.no,stat.no,dep.no,kommune.no,herad.no,np,nr,biz.nr,info.nr,gov.nr,edu.nr,org.nr,net.nr,com.nr,nu,nz,ac.nz,co.nz,cri.nz,geek.nz,gen.nz,govt.nz,health.nz,iwi.nz,kiwi.nz,maori.nz,mil.nz,māori.nz,net.nz,org.nz,parliament.nz,school.nz,om,co.om,com.om,edu.om,gov.om,med.om,museum.om,net.om,org.om,pro.om,onion,org,pa,ac.pa,gob.pa,com.pa,org.pa,sld.pa,edu.pa,net.pa,ing.pa,abo.pa,med.pa,nom.pa,pe,edu.pe,gob.pe,nom.pe,mil.pe,org.pe,com.pe,net.pe,pf,com.pf,org.pf,edu.pf,pg,ph,com.ph,net.ph,org.ph,gov.ph,edu.ph,ngo.ph,mil.ph,i.ph,pk,com.pk,net.pk,edu.pk,org.pk,fam.pk,biz.pk,web.pk,gov.pk,gob.pk,gok.pk,gon.pk,gop.pk,gos.pk,info.pk,pl,com.pl,net.pl,org.pl,aid.pl,agro.pl,atm.pl,auto.pl,biz.pl,edu.pl,gmina.pl,gsm.pl,info.pl,mail.pl,miasta.pl,media.pl,mil.pl,nieruchomosci.pl,nom.pl,pc.pl,powiat.pl,priv.pl,realestate.pl,rel.pl,sex.pl,shop.pl,sklep.pl,sos.pl,szkola.pl,targi.pl,tm.pl,tourism.pl,travel.pl,turystyka.pl,pm,pn,gov.pn,co.pn,org.pn,edu.pn,net.pn,post,pr,com.pr,net.pr,org.pr,gov.pr,edu.pr,isla.pr,pro.pr,biz.pr,info.pr,name.pr,est.pr,prof.pr,ac.pr,pro,aaa.pro,aca.pro,acct.pro,avocat.pro,bar.pro,cpa.pro,eng.pro,jur.pro,law.pro,med.pro,recht.pro,ps,edu.ps,gov.ps,sec.ps,plo.ps,com.ps,org.ps,net.ps,pt,net.pt,gov.pt,org.pt,edu.pt,int.pt,publ.pt,com.pt,nome.pt,pw,co.pw,ne.pw,or.pw,ed.pw,go.pw,belau.pw,py,com.py,coop.py,edu.py,gov.py,mil.py,net.py,org.py,qa,com.qa,edu.qa,gov.qa,mil.qa,name.qa,net.qa,org.qa,sch.qa,re,asso.re,com.re,nom.re,ro,arts.ro,com.ro,firm.ro,info.ro,nom.ro,nt.ro,org.ro,rec.ro,store.ro,tm.ro,www.ro,rs,ac.rs,co.rs,edu.rs,gov.rs,in.rs,org.rs,ru,rw,ac.rw,co.rw,coop.rw,gov.rw,mil.rw,net.rw,org.rw,sa,com.sa,net.sa,org.sa,gov.sa,med.sa,pub.sa,edu.sa,sch.sa,sb,com.sb,edu.sb,gov.sb,net.sb,org.sb,sc,com.sc,gov.sc,net.sc,org.sc,edu.sc,sd,com.sd,net.sd,org.sd,edu.sd,med.sd,tv.sd,gov.sd,info.sd,se,a.se,ac.se,b.se,bd.se,brand.se,c.se,d.se,e.se,f.se,fh.se,fhsk.se,fhv.se,g.se,h.se,i.se,k.se,komforb.se,kommunalforbund.se,komvux.se,l.se,lanbib.se,m.se,n.se,naturbruksgymn.se,o.se,org.se,p.se,parti.se,pp.se,press.se,r.se,s.se,t.se,tm.se,u.se,w.se,x.se,y.se,z.se,sg,com.sg,net.sg,org.sg,gov.sg,edu.sg,per.sg,sh,com.sh,net.sh,gov.sh,org.sh,mil.sh,si,sj,sk,sl,com.sl,net.sl,edu.sl,gov.sl,org.sl,sm,sn,art.sn,com.sn,edu.sn,gouv.sn,org.sn,perso.sn,univ.sn,so,com.so,edu.so,gov.so,me.so,net.so,org.so,sr,ss,biz.ss,com.ss,edu.ss,gov.ss,me.ss,net.ss,org.ss,sch.ss,st,co.st,com.st,consulado.st,edu.st,embaixada.st,mil.st,net.st,org.st,principe.st,saotome.st,store.st,su,sv,com.sv,edu.sv,gob.sv,org.sv,red.sv,sx,gov.sx,sy,edu.sy,gov.sy,net.sy,mil.sy,com.sy,org.sy,sz,co.sz,ac.sz,org.sz,tc,td,tel,tf,tg,th,ac.th,co.th,go.th,in.th,mi.th,net.th,or.th,tj,ac.tj,biz.tj,co.tj,com.tj,edu.tj,go.tj,gov.tj,int.tj,mil.tj,name.tj,net.tj,nic.tj,org.tj,test.tj,web.tj,tk,tl,gov.tl,tm,com.tm,co.tm,org.tm,net.tm,nom.tm,gov.tm,mil.tm,edu.tm,tn,com.tn,ens.tn,fin.tn,gov.tn,ind.tn,info.tn,intl.tn,mincom.tn,nat.tn,net.tn,org.tn,perso.tn,tourism.tn,to,com.to,gov.to,net.to,org.to,edu.to,mil.to,tr,av.tr,bbs.tr,bel.tr,biz.tr,com.tr,dr.tr,edu.tr,gen.tr,gov.tr,info.tr,mil.tr,k12.tr,kep.tr,name.tr,net.tr,org.tr,pol.tr,tel.tr,tsk.tr,tv.tr,web.tr,nc.tr,tt,co.tt,com.tt,org.tt,net.tt,biz.tt,info.tt,pro.tt,int.tt,coop.tt,jobs.tt,mobi.tt,travel.tt,museum.tt,aero.tt,name.tt,gov.tt,edu.tt,tv,tw,edu.tw,gov.tw,mil.tw,com.tw,net.tw,org.tw,idv.tw,game.tw,ebiz.tw,club.tw,tz,ac.tz,co.tz,go.tz,hotel.tz,info.tz,me.tz,mil.tz,mobi.tz,ne.tz,or.tz,sc.tz,tv.tz,ua,com.ua,edu.ua,gov.ua,in.ua,net.ua,org.ua,ug,co.ug,or.ug,ac.ug,sc.ug,go.ug,ne.ug,com.ug,org.ug,uk,ac.uk,co.uk,gov.uk,ltd.uk,me.uk,net.uk,nhs.uk,org.uk,plc.uk,police.uk,us,dni.us,fed.us,isa.us,kids.us,nsn.us,ak.us,al.us,ar.us,as.us,az.us,ca.us,co.us,ct.us,dc.us,de.us,fl.us,ga.us,gu.us,hi.us,ia.us,id.us,il.us,in.us,ks.us,ky.us,la.us,ma.us,md.us,me.us,mi.us,mn.us,mo.us,ms.us,mt.us,nc.us,nd.us,ne.us,nh.us,nj.us,nm.us,nv.us,ny.us,oh.us,ok.us,or.us,pa.us,pr.us,ri.us,sc.us,sd.us,tn.us,tx.us,ut.us,vi.us,vt.us,va.us,wa.us,wi.us,wv.us,wy.us,uy,com.uy,edu.uy,gub.uy,mil.uy,net.uy,org.uy,uz,co.uz,com.uz,net.uz,org.uz,va,vc,com.vc,net.vc,org.vc,gov.vc,mil.vc,edu.vc,ve,arts.ve,bib.ve,co.ve,com.ve,e12.ve,edu.ve,firm.ve,gob.ve,gov.ve,info.ve,int.ve,mil.ve,net.ve,nom.ve,org.ve,rar.ve,rec.ve,store.ve,tec.ve,web.ve,vg,vi,co.vi,com.vi,k12.vi,net.vi,org.vi,vn,ac.vn,ai.vn,biz.vn,com.vn,edu.vn,gov.vn,health.vn,id.vn,info.vn,int.vn,io.vn,name.vn,net.vn,org.vn,pro.vn,vu,com.vu,edu.vu,net.vu,org.vu,wf,ws,com.ws,net.ws,org.ws,gov.ws,edu.ws,yt,ye,com.ye,edu.ye,gov.ye,net.ye,mil.ye,org.ye,ac.za,agric.za,alt.za,co.za,edu.za,gov.za,grondar.za,law.za,mil.za,net.za,ngo.za,nic.za,nis.za,nom.za,org.za,school.za,tm.za,web.za,zm,ac.zm,biz.zm,co.zm,com.zm,edu.zm,gov.zm,info.zm,mil.zm,net.zm,org.zm,sch.zm,zw,ac.zw,co.zw,gov.zw,mil.zw,org.zw\".split(\",\");\n//convert to Map\nconst _publicSuffixesMap = {};\npublicSuffixes.forEach(tld => {\n _publicSuffixesMap[tld] = true;\n});\nconst publicSuffixesMap = _publicSuffixesMap;\nfunction getTopLevelDomain(hostname) {\n const [domain] = hostname.split(\":\");\n const parts = domain.split(\".\");\n if (parts[parts.length - 1] === \"localhost\" || parts.length < 2) {\n return parts[parts.length - 1];\n }\n else {\n const d = parts[parts.length - 2] + \".\" + parts[parts.length - 1];\n if (parts.length > 2 && publicSuffixesMap[d]) {\n return parts[parts.length - 3] + \".\" + d;\n }\n else {\n return d;\n }\n }\n}\n\nclass Processor {\n constructor(options) {\n this.selfOptions = options || {};\n this.pipes = {};\n }\n options(options) {\n if (options) {\n this.selfOptions = options;\n }\n return this.selfOptions;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pipe(name, pipeArg) {\n let pipe = pipeArg;\n if (typeof name === \"string\") {\n if (typeof pipe === \"undefined\") {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return this.pipes[name];\n }\n else {\n this.pipes[name] = pipe;\n }\n }\n if (name && name.name) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pipe = name;\n if (pipe.processor === this) {\n return pipe;\n }\n this.pipes[pipe.name] = pipe;\n }\n pipe.processor = this;\n return pipe;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process(input, pipe) {\n let context = input;\n context.options = this.options();\n let nextPipe = pipe || input.pipe || \"default\";\n let lastPipe;\n while (nextPipe) {\n if (typeof context.nextAfterChildren !== \"undefined\") {\n // children processed and coming back to parent\n context.next = context.nextAfterChildren;\n context.nextAfterChildren = null;\n }\n if (typeof nextPipe === \"string\") {\n nextPipe = this.pipe(nextPipe);\n }\n nextPipe.process(context);\n lastPipe = nextPipe;\n nextPipe = null;\n if (context) {\n if (context.next) {\n context = context.next;\n nextPipe = context.pipe || lastPipe;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return context.hasResult ? context.result : undefined;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass Pipe {\n constructor(name) {\n this.name = name;\n this.filters = [];\n }\n process(input) {\n if (!this.processor) {\n throw new Error(\"add this pipe to a processor before using it\");\n }\n const debug = this.debug;\n const length = this.filters.length;\n const context = input;\n for (let index = 0; index < length; index++) {\n const filter = this.filters[index];\n if (debug) {\n this.log(`filter: ${filter.filterName}`);\n }\n filter(context);\n if (typeof context === \"object\" && context.exiting) {\n context.exiting = false;\n break;\n }\n }\n if (!context.next && this.resultCheck) {\n this.resultCheck(context);\n }\n }\n log(msg) {\n console.log(`[jsondiffpatch] ${this.name} pipe, ${msg}`);\n }\n append(...args) {\n this.filters.push(...args);\n return this;\n }\n prepend(...args) {\n this.filters.unshift(...args);\n return this;\n }\n indexOf(filterName) {\n if (!filterName) {\n throw new Error(\"a filter name is required\");\n }\n for (let index = 0; index < this.filters.length; index++) {\n const filter = this.filters[index];\n if (filter.filterName === filterName) {\n return index;\n }\n }\n throw new Error(`filter not found: ${filterName}`);\n }\n list() {\n return this.filters.map(f => f.filterName);\n }\n after(filterName, ...params) {\n const index = this.indexOf(filterName);\n this.filters.splice(index + 1, 0, ...params);\n return this;\n }\n before(filterName, ...params) {\n const index = this.indexOf(filterName);\n this.filters.splice(index, 0, ...params);\n return this;\n }\n replace(filterName, ...params) {\n const index = this.indexOf(filterName);\n this.filters.splice(index, 1, ...params);\n return this;\n }\n remove(filterName) {\n const index = this.indexOf(filterName);\n this.filters.splice(index, 1);\n return this;\n }\n clear() {\n this.filters.length = 0;\n return this;\n }\n shouldHaveResult(should) {\n if (should === false) {\n this.resultCheck = null;\n return;\n }\n if (this.resultCheck) {\n return;\n }\n this.resultCheck = context => {\n if (!context.hasResult) {\n console.log(context);\n const error = new Error(`${this.name} failed`);\n error.noResult = true;\n throw error;\n }\n };\n return this;\n }\n}\n\nclass Context {\n setResult(result) {\n this.result = result;\n this.hasResult = true;\n return this;\n }\n exit() {\n this.exiting = true;\n return this;\n }\n push(child, name) {\n child.parent = this;\n if (typeof name !== \"undefined\") {\n child.childName = name;\n }\n child.root = this.root || this;\n child.options = child.options || this.options;\n if (!this.children) {\n this.children = [child];\n this.nextAfterChildren = this.next || null;\n this.next = child;\n }\n else {\n this.children[this.children.length - 1].next = child;\n this.children.push(child);\n }\n child.next = this;\n return this;\n }\n}\n\nclass DiffContext extends Context {\n constructor(left, right) {\n super();\n this.left = left;\n this.right = right;\n this.pipe = \"diff\";\n }\n setResult(result) {\n return super.setResult(result);\n }\n}\n\nclass PatchContext extends Context {\n constructor(left, delta) {\n super();\n this.left = left;\n this.delta = delta;\n this.pipe = \"patch\";\n }\n}\n\nfunction arrayEquals(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nconst diffFilter$1 = function trivialMatchesDiffFilter(context) {\n if (context.left === context.right) {\n context.setResult(undefined).exit();\n return;\n }\n if (typeof context.left === \"undefined\") {\n if (typeof context.right === \"function\") {\n throw new Error(\"functions are not supported\");\n }\n context.setResult([context.right]).exit();\n return;\n }\n if (typeof context.right === \"undefined\") {\n context.setResult([context.left, 0, 0]).exit();\n return;\n }\n if (typeof context.left === \"function\" || typeof context.right === \"function\") {\n throw new Error(\"functions are not supported\");\n }\n context.leftType = context.left === null ? \"null\" : typeof context.left;\n context.rightType = context.right === null ? \"null\" : typeof context.right;\n if (context.leftType !== context.rightType) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n if (context.leftType === \"boolean\" || context.leftType === \"number\" || context.leftType === \"string\") {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n if (context.leftType === \"object\") {\n context.leftIsArray = Array.isArray(context.left);\n }\n if (context.rightType === \"object\") {\n context.rightIsArray = Array.isArray(context.right);\n }\n if (context.leftIsArray !== context.rightIsArray) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n if (context.leftIsArray && context.rightIsArray) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (arrayEquals(context.left, context.right)) {\n context.setResult(undefined).exit();\n return;\n }\n else {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n }\n if (context.left instanceof RegExp) {\n if (context.right instanceof RegExp) {\n context.setResult([context.left.toString(), context.right.toString()]).exit();\n }\n else {\n context.setResult([context.left, context.right]).exit();\n }\n }\n};\ndiffFilter$1.filterName = \"trivial\";\nconst patchFilter$1 = function trivialMatchesPatchFilter(context) {\n if (typeof context.delta === \"undefined\") {\n context.setResult(context.left).exit();\n return;\n }\n context.nested = !Array.isArray(context.delta);\n if (context.nested) {\n return;\n }\n const nonNestedDelta = context.delta;\n if (nonNestedDelta.length === 1) {\n context.setResult(nonNestedDelta[0]).exit();\n return;\n }\n if (nonNestedDelta.length === 2) {\n if (context.left instanceof RegExp) {\n const regexArgs = /^\\/(.*)\\/([gimyu]+)$/.exec(nonNestedDelta[1]);\n if (regexArgs) {\n context.setResult(new RegExp(regexArgs[1], regexArgs[2])).exit();\n return;\n }\n }\n context.setResult(nonNestedDelta[1]).exit();\n return;\n }\n if (nonNestedDelta.length === 3 && nonNestedDelta[2] === 0) {\n context.setResult(undefined).exit();\n }\n};\npatchFilter$1.filterName = \"trivial\";\n\nconst collectChildrenDiffFilter = context => {\n if (!context || !context.children) {\n return;\n }\n const length = context.children.length;\n let child;\n let result = context.result;\n for (let index = 0; index < length; index++) {\n child = context.children[index];\n if (typeof child.result === \"undefined\") {\n continue;\n }\n result = result || {};\n result[child.childName] = child.result;\n }\n if (result && context.leftIsArray) {\n result._t = \"a\";\n }\n context.setResult(result).exit();\n};\ncollectChildrenDiffFilter.filterName = \"collectChildren\";\nconst objectsDiffFilter = context => {\n if (context.leftIsArray || context.leftType !== \"object\") {\n return;\n }\n const left = context.left;\n const right = context.right;\n let name;\n let child;\n const propertyFilter = context.options.propertyFilter;\n for (name in left) {\n if (!Object.prototype.hasOwnProperty.call(left, name)) {\n continue;\n }\n if (propertyFilter && !propertyFilter(name, context)) {\n continue;\n }\n child = new DiffContext(left[name], right[name]);\n context.push(child, name);\n }\n for (name in right) {\n if (!Object.prototype.hasOwnProperty.call(right, name)) {\n continue;\n }\n if (propertyFilter && !propertyFilter(name, context)) {\n continue;\n }\n if (typeof left[name] === \"undefined\") {\n child = new DiffContext(undefined, right[name]);\n context.push(child, name);\n }\n }\n if (!context.children || context.children.length === 0) {\n context.setResult(undefined).exit();\n return;\n }\n context.exit();\n};\nobjectsDiffFilter.filterName = \"objects\";\nconst patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n const nestedDelta = context.delta;\n if (nestedDelta._t) {\n return;\n }\n const objectDelta = nestedDelta;\n let name;\n let child;\n for (name in objectDelta) {\n child = new PatchContext(context.left[name], objectDelta[name]);\n context.push(child, name);\n }\n context.exit();\n};\npatchFilter.filterName = \"objects\";\nconst collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {\n if (!context || !context.children) {\n return;\n }\n const deltaWithChildren = context.delta;\n if (deltaWithChildren._t) {\n return;\n }\n const object = context.left;\n const length = context.children.length;\n let child;\n for (let index = 0; index < length; index++) {\n child = context.children[index];\n const property = child.childName;\n if (Object.prototype.hasOwnProperty.call(context.left, property) && child.result === undefined) {\n delete object[property];\n }\n else if (object[property] !== child.result) {\n object[property] = child.result;\n }\n }\n context.setResult(object).exit();\n};\ncollectChildrenPatchFilter.filterName = \"collectChildren\";\n\nconst diffFilter = function datesDiffFilter(context) {\n if (context.left instanceof Date) {\n if (context.right instanceof Date) {\n if (context.left.getTime() !== context.right.getTime()) {\n context.setResult([context.left, context.right]);\n }\n else {\n context.setResult(undefined);\n }\n }\n else {\n context.setResult([context.left, context.right]);\n }\n context.exit();\n }\n else if (context.right instanceof Date) {\n context.setResult([context.left, context.right]).exit();\n }\n};\ndiffFilter.filterName = \"dates\";\n\nclass DiffPatcher {\n constructor(options) {\n this.processor = new Processor(options);\n this.processor.pipe(new Pipe(\"diff\")\n .append(collectChildrenDiffFilter, diffFilter$1, diffFilter, objectsDiffFilter)\n .shouldHaveResult());\n this.processor.pipe(new Pipe(\"patch\")\n .append(collectChildrenPatchFilter, patchFilter$1, patchFilter)\n .shouldHaveResult());\n }\n options(options) {\n return this.processor.options(options);\n }\n diff(left, right) {\n return this.processor.process(new DiffContext(left, right));\n }\n patch(left, delta) {\n return this.processor.process(new PatchContext(left, delta));\n }\n}\n\nfunction create(options) {\n return new DiffPatcher(options);\n}\n\n/* global analytics */\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nconst diff = create();\nconst defaultConfig = {\n /* Your segment writeKey */\n writeKey: null,\n /* Disable anonymous MTU */\n host: null,\n debug: false,\n fetch: null,\n echoEvents: false,\n cookieDomain: undefined,\n cookieNames: {},\n cookieCapture: {},\n runtime: undefined,\n fetchTimeoutMs: undefined,\n s2s: undefined,\n idEndpoint: undefined,\n errorPolicy: \"log\",\n defaultPayloadContext: {},\n privacy: {\n dontSend: false,\n disableUserIds: false,\n ipPolicy: \"keep\",\n consentCategories: undefined,\n },\n};\n// mergeConfig merges newConfig into currentConfig also making sure that all undefined values are replaced with defaultConfig values\nconst mergeConfig = (current, newConfig) => {\n for (const key of Object.keys(defaultConfig)) {\n const value = newConfig[key];\n if (key === \"privacy\") {\n if (typeof value === \"object\") {\n current.privacy = Object.assign(Object.assign(Object.assign({}, defaultConfig.privacy), current.privacy), value);\n }\n else if (newConfig.hasOwnProperty(\"privacy\") && typeof value === \"undefined\") {\n // explicitly set to undefined - reset to default\n current.privacy = Object.assign({}, defaultConfig.privacy);\n }\n }\n else if (typeof value === \"undefined\") {\n if (newConfig.hasOwnProperty(key) || !current.hasOwnProperty(key)) {\n // explicitly set to undefined - reset to default\n // or was not set at all - set to default\n current[key] = defaultConfig[key];\n }\n }\n else {\n current[key] = value;\n }\n }\n};\nconst parseQuery = (qs) => {\n if (!qs) {\n return {};\n }\n let queryString = qs.length > 0 && qs.charAt(0) === \"?\" ? qs.substring(1) : qs;\n let query = {};\n let pairs = (queryString[0] === \"?\" ? queryString.substr(1) : queryString).split(\"&\");\n for (let i = 0; i < pairs.length; i++) {\n let pair = pairs[i].split(\"=\");\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || \"\");\n }\n return query;\n};\nfunction utmToKey(key) {\n const name = key.substring(\"utm_\".length);\n return name === \"campaign\" ? \"name\" : name;\n}\nfunction parseUtms(query) {\n return Object.entries(query)\n .filter(([key]) => key.indexOf(\"utm_\") === 0)\n .reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [utmToKey(key)]: value })), {});\n}\nfunction safeCall(f, defaultVal) {\n try {\n return f();\n }\n catch (e) {\n return defaultVal;\n }\n}\nfunction restoreTraits(storage) {\n let val = storage.getItem(\"__user_traits\");\n if (typeof val === \"string\") {\n val = safeCall(() => JSON.parse(val), {});\n }\n if (typeof val !== \"object\" || val === null || Array.isArray(val)) {\n val = {};\n }\n let groupVal = storage.getItem(\"__group_traits\");\n if (typeof groupVal === \"string\") {\n groupVal = safeCall(() => JSON.parse(groupVal), {});\n }\n if (typeof groupVal !== \"object\" || groupVal === null || Array.isArray(groupVal)) {\n groupVal = {};\n }\n return Object.assign(Object.assign({}, (groupVal || {})), (val || {}));\n}\nfunction getCookie(name) {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n return parts.length === 2 ? parts.pop().split(\";\").shift() : undefined;\n}\nfunction getClientIds(runtime, customCookieCapture) {\n const cookieCapture = Object.assign({ fbc: \"_fbc\", fbp: \"_fbp\" }, customCookieCapture);\n const clientIds = Object.entries(cookieCapture).reduce((acc, [key, cookieName]) => {\n acc[key] = runtime.getCookie(cookieName);\n return acc;\n }, {});\n return Object.assign(Object.assign({}, clientIds), getGa4Ids(runtime));\n}\nfunction getGa4Ids(runtime) {\n var _a;\n const allCookies = runtime.getCookies();\n const clientId = (_a = allCookies[\"_ga\"]) === null || _a === void 0 ? void 0 : _a.split(\".\").slice(-2).join(\".\");\n const gaSessionCookies = Object.entries(allCookies).filter(([key]) => key.startsWith(\"_ga_\"));\n const sessionIds = gaSessionCookies.length > 0\n ? Object.fromEntries(gaSessionCookies\n .map(([key, value]) => {\n if (typeof value !== \"string\") {\n return null;\n }\n const parts = value.split(\".\");\n if (parts.length < 3) {\n return null;\n }\n return [key.substring(\"_ga_\".length), parts[2]];\n })\n .filter(v => v !== null))\n : undefined;\n if (clientId || sessionIds) {\n return { ga4: { clientId, sessionIds } };\n }\n else {\n return undefined;\n }\n}\nfunction removeCookie(name, { domain, secure }) {\n document.cookie =\n name +\n \"=;domain=\" +\n domain +\n \";path=/\" +\n \";expires=Thu, 01 Jan 1970 00:00:01 GMT;SameSite=\" +\n (secure ? \"None\" : \"Lax\") +\n (secure ? \";secure\" : \"\");\n}\nfunction setCookie(name, val, { domain, secure }) {\n document.cookie =\n name +\n \"=\" +\n val +\n \";domain=\" +\n domain +\n \";path=/\" +\n \";expires=\" +\n new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365 * 5).toUTCString() +\n \";SameSite=\" +\n (secure ? \"None\" : \"Lax\") +\n (secure ? \";secure\" : \"\");\n}\nconst defaultCookie2Key = {\n __anon_id: \"__eventn_id\",\n __user_id: \"__eventn_uid\",\n __user_traits: \"__eventn_id_usr\",\n __group_id: \"__group_id\",\n __group_traits: \"__group_traits\",\n};\nconst cookieStorage = (cookieDomain, key2cookie) => {\n return {\n setItem(key, val) {\n const cookieName = key2cookie(key) || key;\n if (typeof val === \"undefined\") {\n removeCookie(cookieName, {\n domain: cookieDomain,\n secure: window.location.protocol === \"https:\",\n });\n return;\n }\n const strVal = typeof val === \"object\" && val !== null ? encodeURIComponent(JSON.stringify(val)) : val;\n setCookie(cookieName, strVal, {\n domain: cookieDomain,\n secure: window.location.protocol === \"https:\",\n });\n },\n getItem(key) {\n const cookieName = key2cookie(key) || key;\n const result = getCookie(cookieName);\n if (key === \"__anon_id\") {\n //anonymous id must always be a string, so we don't parse it to preserve its exact value\n return result;\n }\n if (typeof result === \"undefined\" && key === \"__user_id\") {\n //backward compatibility with old jitsu cookie. get user id if from traits\n const traits = parse(getCookie(key2cookie(\"__user_traits\") || \"__eventn_id_usr\")) || {};\n return traits.internal_id || traits.user_id || traits.id || traits.userId;\n }\n return parse(result);\n },\n removeItem(key) {\n removeCookie(key2cookie(key) || key, {\n domain: cookieDomain,\n secure: window.location.protocol === \"https:\",\n });\n },\n reset() {\n for (const key of Object.keys(defaultCookie2Key)) {\n removeCookie(key2cookie(key) || key, {\n domain: cookieDomain,\n secure: window.location.protocol === \"https:\",\n });\n }\n },\n };\n};\nfunction windowRuntime(opts) {\n const key2Cookie = (key) => {\n var _a, _b, _c, _d, _e;\n switch (key) {\n case \"__anon_id\":\n return ((_a = opts.cookieNames) === null || _a === void 0 ? void 0 : _a.anonymousId) || defaultCookie2Key.__anon_id;\n case \"__user_id\":\n return ((_b = opts.cookieNames) === null || _b === void 0 ? void 0 : _b.userId) || defaultCookie2Key.__user_id;\n case \"__user_traits\":\n return ((_c = opts.cookieNames) === null || _c === void 0 ? void 0 : _c.userTraits) || defaultCookie2Key.__user_traits;\n case \"__group_id\":\n return ((_d = opts.cookieNames) === null || _d === void 0 ? void 0 : _d.groupId) || defaultCookie2Key.__group_id;\n case \"__group_traits\":\n return ((_e = opts.cookieNames) === null || _e === void 0 ? void 0 : _e.groupTraits) || defaultCookie2Key.__group_traits;\n default:\n return key;\n }\n };\n return {\n getCookie(name) {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n return parts.length === 2 ? parts.pop().split(\";\").shift() : undefined;\n },\n getCookies() {\n const value = `; ${document.cookie}`;\n const cookies = {};\n const matches = value.matchAll(/(\\w+)=([^;]+)/g);\n for (const match of matches) {\n cookies[match[1]] = match[2];\n }\n return cookies;\n },\n documentEncoding() {\n return window.document.characterSet;\n },\n timezoneOffset() {\n return new Date().getTimezoneOffset();\n },\n store() {\n return cookieStorage(opts.cookieDomain || getTopLevelDomain(window.location.hostname), key2Cookie);\n },\n language() {\n return window.navigator.language;\n },\n pageTitle() {\n return window.document.title;\n },\n pageUrl() {\n return window.location.href;\n },\n referrer() {\n return window.document.referrer;\n },\n screen() {\n return {\n width: window.screen.width,\n height: window.screen.height,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n density: Math.floor(window.devicePixelRatio),\n };\n },\n userAgent() {\n return window.navigator.userAgent;\n },\n };\n}\nfunction createInMemoryStorage(debug) {\n const storage = {};\n return {\n reset() {\n Object.keys(storage).forEach(key => delete storage[key]);\n },\n setItem(key, val) {\n if (debug) {\n console.log(`[JITSU EMPTY RUNTIME] Set storage item ${key}=${JSON.stringify(val)}`);\n }\n if (typeof val === \"undefined\") {\n delete storage[key];\n }\n else {\n storage[key] = val;\n }\n },\n getItem(key) {\n const val = storage[key];\n if (debug) {\n console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${JSON.stringify(val)}`);\n }\n return val;\n },\n removeItem(key) {\n if (debug) {\n console.log(`[JITSU EMPTY RUNTIME] Get storage item ${key}=${storage[key]}`);\n }\n delete storage[key];\n },\n };\n}\nconst emptyRuntime = (config) => ({\n documentEncoding() {\n return undefined;\n },\n timezoneOffset() {\n return undefined;\n },\n getCookie(name) {\n return undefined;\n },\n getCookies() {\n return {};\n },\n store() {\n return createInMemoryStorage(config.debug);\n },\n language() {\n return undefined;\n },\n pageTitle() {\n return undefined;\n },\n pageUrl() {\n return undefined;\n },\n referrer() {\n return undefined;\n },\n screen() {\n return undefined;\n },\n userAgent() {\n return undefined;\n },\n});\nfunction deepMerge(target, source) {\n if (typeof source !== \"object\" || source === null) {\n return source;\n }\n if (typeof target !== \"object\" || target === null) {\n return source;\n }\n return Object.entries(source).reduce((acc, [key, value]) => {\n acc[key] = deepMerge(target[key], value);\n return acc;\n }, target);\n}\nfunction isInBrowser() {\n return typeof document !== \"undefined\" && typeof window !== \"undefined\";\n}\n/**\n * Fixes a weird bug in analytics URL where path\n * of https://test.com becomes //test.com\n */\nfunction fixPath(path) {\n if (path.indexOf(\"//\") === 0 && path.lastIndexOf(\"/\") === 1) {\n return \"/\";\n }\n return path;\n}\nconst hashRegex = /#.*$/;\n/**\n * for compatibility with path produced by analytics.js\n * @param url\n */\nfunction urlPath(url) {\n const regex = /(http[s]?:\\/\\/)?([^\\/\\s]+\\/)(.*)/g;\n const matches = regex.exec(url);\n const pathMatch = matches && matches[3] ? matches[3].split(\"?\")[0].replace(hashRegex, \"\") : \"\";\n return \"/\" + pathMatch;\n}\nfunction adjustPayload(payload, config, storage, s2s) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n const runtime = config.runtime || (isInBrowser() ? windowRuntime(config) : emptyRuntime(config));\n const url = runtime.pageUrl();\n const parsedUrl = safeCall(() => new URL(url), undefined);\n const query = parsedUrl ? parseQuery(parsedUrl.search) : {};\n const properties = payload.properties || {};\n if (payload.type === \"page\" && (properties.url || url)) {\n const targetUrl = properties.url || url;\n properties.url = targetUrl.replace(hashRegex, \"\");\n properties.path = fixPath(urlPath(targetUrl));\n }\n const customContext = deepMerge(config.defaultPayloadContext, ((_a = payload.properties) === null || _a === void 0 ? void 0 : _a.context) || ((_b = payload.options) === null || _b === void 0 ? void 0 : _b.context) || {});\n (_c = payload.properties) === null || _c === void 0 ? true : delete _c.context;\n const referrer = runtime.referrer();\n const context = {\n library: {\n name: jitsuLibraryName,\n version: jitsuVersion,\n env: isInBrowser() ? \"browser\" : \"node\",\n },\n consent: ((_d = config.privacy) === null || _d === void 0 ? void 0 : _d.consentCategories)\n ? {\n categoryPreferences: config.privacy.consentCategories,\n }\n : undefined,\n userAgent: (_e = runtime.userAgent) === null || _e === void 0 ? void 0 : _e.call(runtime),\n locale: (_f = runtime.language) === null || _f === void 0 ? void 0 : _f.call(runtime),\n screen: (_g = runtime.screen) === null || _g === void 0 ? void 0 : _g.call(runtime),\n ip: (_h = runtime === null || runtime === void 0 ? void 0 : runtime.ip) === null || _h === void 0 ? void 0 : _h.call(runtime),\n traits: payload.type != \"identify\" && payload.type != \"group\"\n ? Object.assign(Object.assign({}, (restoreTraits(storage) || {})), (((_j = payload === null || payload === void 0 ? void 0 : payload.options) === null || _j === void 0 ? void 0 : _j.traits) || {})) : undefined,\n page: {\n path: properties.path || (parsedUrl && parsedUrl.pathname),\n referrer: referrer,\n referring_domain: safeCall(() => referrer && new URL(referrer).hostname),\n host: parsedUrl && parsedUrl.host,\n search: properties.search || (parsedUrl && parsedUrl.search),\n title: properties.title || runtime.pageTitle(),\n url: properties.url || url,\n encoding: properties.encoding || runtime.documentEncoding(),\n },\n clientIds: !((_k = config.privacy) === null || _k === void 0 ? void 0 : _k.disableUserIds) ? getClientIds(runtime, config.cookieCapture) : undefined,\n campaign: parseUtms(query),\n };\n const withContext = Object.assign(Object.assign({}, payload), { userId: ((_l = payload === null || payload === void 0 ? void 0 : payload.options) === null || _l === void 0 ? void 0 : _l.userId) || (payload === null || payload === void 0 ? void 0 : payload.userId), anonymousId: ((_m = payload === null || payload === void 0 ? void 0 : payload.options) === null || _m === void 0 ? void 0 : _m.anonymousId) || (payload === null || payload === void 0 ? void 0 : payload.anonymousId), groupId: ((_o = payload === null || payload === void 0 ? void 0 : payload.options) === null || _o === void 0 ? void 0 : _o.groupId) || storage.getItem(\"__group_id\"), timestamp: new Date().toISOString(), sentAt: new Date().toISOString(), messageId: randomId(properties.path || (parsedUrl && parsedUrl.pathname)), writeKey: maskWriteKey(config.writeKey), context: deepMerge(context, customContext) });\n delete withContext.meta;\n delete withContext.options;\n if ((_p = config.privacy) === null || _p === void 0 ? void 0 : _p.disableUserIds) {\n delete withContext.userId;\n delete withContext.anonymousId;\n delete withContext.context.traits;\n delete withContext.groupId;\n }\n return withContext;\n}\nfunction isDiff(obj) {\n const keys = Object.keys(obj);\n return keys.length === 1 && keys[0] === \"__diff\";\n}\nfunction processDestinations(destinations, method, originalEvent, debug, analyticsInstance) {\n return __awaiter$1(this, void 0, void 0, function* () {\n const promises = [];\n for (const destination of destinations) {\n let newEvents = [originalEvent];\n if (destination.newEvents) {\n try {\n newEvents = destination.newEvents.map(e => e === \"same\" ? originalEvent : isDiff(e) ? diff.patch(originalEvent, e.__diff) : e);\n }\n catch (e) {\n console.error(`[JITSU] Error applying '${destination.id}' changes to event: ${e === null || e === void 0 ? void 0 : e.message}`, e);\n }\n }\n const credentials = Object.assign(Object.assign({}, destination.credentials), destination.options);\n if (destination.deviceOptions.type === \"internal-plugin\") {\n const plugin = internalDestinationPlugins[destination.deviceOptions.name];\n if (plugin) {\n for (const event of newEvents) {\n try {\n promises.push(plugin.handle(Object.assign(Object.assign({}, credentials), { debug }), event));\n }\n catch (e) {\n console.warn(`[JITSU] Error processing event with internal plugin '${destination.deviceOptions.name}': ${e === null || e === void 0 ? void 0 : e.message}`, e);\n }\n }\n }\n else {\n console.warn(`[JITSU] Unknown internal plugin '${destination.deviceOptions.name}' for destination '${destination.id}'`);\n }\n }\n else if (destination.deviceOptions.type === \"analytics-plugin\") {\n yield loadScript(destination.deviceOptions.packageCdn);\n const plugin = window[destination.deviceOptions.moduleVarName];\n if (!plugin) {\n console.warn(`[JITSU] Broken plugin '${destination.deviceOptions.packageCdn}' for destination '${destination.id}' - it doesn't export '${destination.deviceOptions.moduleVarName}' variable`);\n }\n else {\n let pluginInstance;\n try {\n pluginInstance = (typeof plugin === \"function\" ? plugin : plugin.init)(credentials);\n }\n catch (e) {\n console.warn(`[JITSU] Error creating plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}`, e);\n }\n try {\n if (debug) {\n console.log(`[JITSU] Plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}' initialized with config:`, pluginInstance.config);\n }\n pluginInstance.initialize({ config: pluginInstance.config, instance: analyticsInstance });\n }\n catch (e) {\n console.warn(`[JITSU] Error initializing plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}. Config: ${JSON.stringify(pluginInstance.config)}`, e);\n continue;\n }\n if (pluginInstance[method]) {\n for (const event of newEvents) {\n try {\n pluginInstance[method]({\n payload: event,\n config: pluginInstance.config,\n instance: analyticsInstance,\n });\n }\n catch (e) {\n console.warn(`[JITSU] Error processing ${method}() with plugin '${destination.deviceOptions.moduleVarName}@${destination.deviceOptions.packageCdn}' for destination '${destination.id}': ${e === null || e === void 0 ? void 0 : e.message}`, e);\n }\n }\n }\n }\n }\n }\n });\n}\nfunction looksLikeCuid(id) {\n return id.length === 25 && id.charAt(0) === \"c\";\n}\nfunction validateWriteKey(writeKey) {\n if (writeKey) {\n const [, secret] = writeKey.split(\":\", 2);\n if (!secret && !looksLikeCuid(writeKey)) {\n throw new Error(`Legacy write key detected - ${writeKey}! This format doesn't work anymore, it should be 'key:secret'. Please download a new key from Jitsu UI`);\n }\n }\n return writeKey;\n}\nfunction maskWriteKey(writeKey) {\n if (writeKey) {\n const [id, secret] = writeKey.split(\":\", 2);\n if (secret) {\n return `${id}:***`;\n }\n else {\n return \"***\";\n }\n }\n return writeKey;\n}\nfunction getErrorHandler(opts) {\n const configuredHandler = opts.errorPolicy || \"log\";\n if (typeof configuredHandler === \"function\") {\n return configuredHandler;\n }\n else if (configuredHandler === \"rethrow\") {\n return (msg, ...args) => {\n //ignore args, not clear what to do with them\n throw new Error(msg);\n };\n }\n else {\n return (msg, ...args) => {\n console.error(msg, ...args);\n };\n }\n}\nfunction send(method, payload, jitsuConfig, instance, store) {\n return __awaiter$1(this, void 0, void 0, function* () {\n var _a, _b;\n const s2s = !!jitsuConfig.s2s;\n const debugHeader = jitsuConfig.debug ? { \"X-Enable-Debug\": \"true\" } : {};\n const adjustedPayload = adjustPayload(payload, jitsuConfig, store);\n if (jitsuConfig.echoEvents) {\n console.log(`[JITSU DEBUG] sending '${method}' event:`, adjustedPayload);\n return;\n }\n const url = s2s ? `${jitsuConfig.host}/api/s/s2s/${method}` : `${jitsuConfig.host}/api/s/${method}`;\n const fetch = jitsuConfig.fetch || globalThis.fetch;\n if (!fetch) {\n //don't run it through error handler since error is critical and should be addressed\n throw new Error(\"Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope\");\n }\n const abortController = jitsuConfig.fetchTimeoutMs ? new AbortController() : undefined;\n const abortTimeout = jitsuConfig.fetchTimeoutMs\n ? setTimeout(() => {\n abortController.abort();\n }, jitsuConfig.fetchTimeoutMs)\n : undefined;\n const authHeader = jitsuConfig.writeKey ? { \"X-Write-Key\": jitsuConfig.writeKey } : {};\n const ipHeader = typeof ((_a = jitsuConfig.privacy) === null || _a === void 0 ? void 0 : _a.ipPolicy) === \"undefined\" || ((_b = jitsuConfig.privacy) === null || _b === void 0 ? void 0 : _b.ipPolicy) === \"keep\"\n ? {}\n : { \"X-IP-Policy\": jitsuConfig.privacy.ipPolicy };\n let fetchResult;\n try {\n fetchResult = yield fetch(url, {\n method: \"POST\",\n headers: Object.assign(Object.assign(Object.assign({ \"Content-Type\": \"application/json\" }, authHeader), debugHeader), ipHeader),\n body: JSON.stringify(adjustedPayload),\n signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal,\n });\n if (abortTimeout) {\n clearTimeout(abortTimeout);\n }\n }\n catch (e) {\n getErrorHandler(jitsuConfig)(`Call to ${url} failed with error ${e.message}`);\n return Promise.resolve();\n }\n let responseText;\n try {\n responseText = yield fetchResult.text();\n }\n catch (e) {\n console.warn(`Can't read response text from ${url} (status - ${fetchResult.status} ${fetchResult.statusText}): ${e === null || e === void 0 ? void 0 : e.message}`);\n }\n if (jitsuConfig.debug) {\n console.log(`[JITSU DEBUG] ${url} replied ${fetchResult.status}: ${responseText}. Original payload:\\n${JSON.stringify(adjustedPayload, null, 2)}`);\n }\n if (!fetchResult.ok) {\n getErrorHandler(jitsuConfig)(`Call to ${url} failed with error: ${fetchResult.status} - ${fetchResult.statusText}: ${responseText}`);\n return Promise.resolve();\n }\n let responseJson;\n try {\n responseJson = JSON.parse(responseText);\n }\n catch (e) {\n getErrorHandler(jitsuConfig)(`Can't parse JSON: ${responseText}: ${e === null || e === void 0 ? void 0 : e.message}`);\n return Promise.resolve();\n }\n if (responseJson.destinations && responseJson.destinations.length > 0) {\n if (jitsuConfig.s2s) {\n console.warn(`[JITSU] ${payload.type} responded with list of ${responseJson.destinations.length} destinations. However, this code is running in server-to-server mode, so destinations will be ignored`, jitsuConfig.debug ? JSON.stringify(responseJson.destinations, null, 2) : undefined);\n }\n else {\n //double protection, ingest should not return destinations in s2s mode\n if (isInBrowser()) {\n if (jitsuConfig.debug) {\n console.log(`[JITSU] Processing device destinations: `, JSON.stringify(responseJson.destinations, null, 2));\n }\n return processDestinations(responseJson.destinations, method, adjustedPayload, !!jitsuConfig.debug, instance);\n }\n }\n }\n return adjustedPayload;\n });\n}\nconst controllingTraits = [\"$doNotSend\"];\n/**\n * Remove all members of traits that controls identify/group behavior (see analytics.d.ts), and should not be recorded. Returns\n * copy of the object with these members removed.\n *\n * Do not modify traits object, but creates one\n * @param traits\n */\nfunction stripControllingTraits(traits) {\n const res = Object.assign({}, traits);\n // see Traits definition in analytics.d.ts. We cannot define const here, so here's a little code duplication\n for (const key of controllingTraits) {\n delete res[key];\n }\n return res;\n}\nconst jitsuAnalyticsPlugin = (jitsuOptions = {}, storage) => {\n // just to make sure that all undefined values are replaced with defaultConfig values\n mergeConfig(jitsuOptions, jitsuOptions);\n return {\n name: \"jitsu\",\n config: jitsuOptions,\n initialize: (args) => __awaiter$1(void 0, void 0, void 0, function* () {\n const { config } = args;\n if (config.debug) {\n console.debug(\"[JITSU DEBUG] Initializing Jitsu plugin with config: \", JSON.stringify(config, null, 2));\n }\n if (!config.host && !config.echoEvents) {\n throw new Error(\"Please specify host variable in jitsu plugin initialization, or set echoEvents to true\");\n }\n validateWriteKey(config.writeKey);\n if (config.idEndpoint) {\n if (!isInBrowser()) {\n console.error(`[JITSU] 'idEndpoint' option can be used only in browser environment`);\n return;\n }\n try {\n const fetch = config.fetch || globalThis.fetch;\n const controller = new AbortController();\n setTimeout(() => controller.abort(), 1000);\n const domain = config.cookieDomain || getTopLevelDomain(window.location.hostname);\n const res = yield fetch(config.idEndpoint + \"?domain=\" + encodeURIComponent(domain), {\n credentials: \"include\",\n signal: controller.signal,\n });\n if (!res.ok) {\n console.error(`[JITSU] Can't fetch idEndpoint: ${res.status} - ${res.statusText}`);\n }\n else if (config.debug) {\n console.log(`[JITSU DEBUG] Fetch idEndpoint: ${res.status}`);\n }\n }\n catch (e) {\n console.error(`[JITSU] Can't fetch idEndpoint: ${e.message}`);\n }\n }\n }),\n page: args => {\n var _a;\n const { payload, config, instance } = args;\n if ((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) {\n return;\n }\n return send(\"page\", payload, config, instance, storage);\n },\n track: args => {\n var _a;\n const { payload, config, instance } = args;\n if ((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) {\n return;\n }\n return send(\"track\", payload, config, instance, storage);\n },\n identify: args => {\n var _a, _b, _c;\n const { payload, config, instance } = args;\n if (((_a = config.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = config.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {\n return;\n }\n // Store traits in cache to be able to use them in page and track events that run asynchronously with current identify.\n storage.setItem(\"__user_id\", payload.userId);\n const doNotSend = (_c = payload.traits) === null || _c === void 0 ? void 0 : _c.$doNotSend;\n if (payload.traits && typeof payload.traits === \"object\") {\n payload.traits = stripControllingTraits(payload.traits);\n storage.setItem(\"__user_traits\", payload.traits);\n }\n if (doNotSend) {\n return Promise.resolve();\n }\n return send(\"identify\", payload, config, instance, storage);\n },\n reset: args => {\n const { config, instance } = args;\n storage.reset();\n if (config.debug) {\n console.log(\"[JITSU DEBUG] Resetting Jitsu plugin storage\");\n }\n },\n methods: {\n //analytics doesn't support group as a base method, so we need to add it manually\n configure(newOptions) {\n var _a, _b, _c, _d;\n const idsWasDisabled = ((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.dontSend);\n mergeConfig(jitsuOptions, newOptions);\n const idsDisabledNow = ((_c = jitsuOptions.privacy) === null || _c === void 0 ? void 0 : _c.disableUserIds) || ((_d = jitsuOptions.privacy) === null || _d === void 0 ? void 0 : _d.dontSend);\n if (!idsDisabledNow && idsWasDisabled) {\n if (jitsuOptions.debug) {\n console.log(\"[JITSU] Enabling Anonymous ID. Generating new Id.\");\n }\n const instance = this.instance;\n const newAnonymousId = uuid();\n const userState = instance.user();\n if (userState) {\n userState.anonymousId = newAnonymousId;\n }\n storage.setItem(\"__anon_id\", newAnonymousId);\n instance.setAnonymousId(newAnonymousId);\n }\n },\n group(groupId, traits, options, callback) {\n var _a, _b;\n if (((_a = jitsuOptions.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = jitsuOptions.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {\n return;\n }\n if (typeof groupId === \"number\") {\n //fix potential issues with group id being used incorrectly\n groupId = groupId + \"\";\n }\n const instance = this.instance;\n const user = instance.user();\n const userId = (options === null || options === void 0 ? void 0 : options.userId) || (user === null || user === void 0 ? void 0 : user.userId);\n const anonymousId = (options === null || options === void 0 ? void 0 : options.anonymousId) || (user === null || user === void 0 ? void 0 : user.anonymousId) || storage.getItem(\"__anon_id\");\n storage.setItem(\"__group_id\", groupId);\n const doNotSend = traits === null || traits === void 0 ? void 0 : traits.$doNotSend;\n if (traits && typeof traits === \"object\") {\n traits = stripControllingTraits(traits);\n storage.setItem(\"__group_traits\", traits);\n }\n if (doNotSend) {\n return Promise.resolve();\n }\n return send(\"group\", Object.assign(Object.assign({ type: \"group\", groupId, traits }, (anonymousId ? { anonymousId } : {})), (userId ? { userId } : {})), jitsuOptions, instance, storage);\n },\n },\n };\n};\nlet seedCounter = 0;\nfunction getSeed() {\n var _a;\n seedCounter = (seedCounter + 1) % Number.MAX_SAFE_INTEGER;\n const defaultSeed = Date.now() % 2147483647;\n const seed = isInBrowser() ? ((_a = window === null || window === void 0 ? void 0 : window.performance) === null || _a === void 0 ? void 0 : _a.now()) || defaultSeed : defaultSeed;\n return seed + seedCounter;\n}\nfunction randomId(hashString = \"\") {\n const d = Date.now();\n return (((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : \"\", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36) +\n ((Math.random() * d * hash(hashString !== null && hashString !== void 0 ? hashString : \"\", getSeed())) % Number.MAX_SAFE_INTEGER).toString(36));\n}\nfunction uuid() {\n var u = \"\", m = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\", i = 0, rb = (Math.random() * 0xffffffff) | 0;\n while (i++ < 36) {\n var c = m[i - 1], r = rb & 0xf, v = c == \"x\" ? r : (r & 0x3) | 0x8;\n u += c == \"-\" || c == \"4\" ? c : v.toString(16);\n rb = i % 8 == 0 ? (Math.random() * 0xffffffff) | 0 : rb >> 4;\n }\n return u;\n}\nfunction hash(str, seed = 0) {\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nfunction parse(input) {\n let value = input;\n if ((input === null || input === void 0 ? void 0 : input.indexOf(\"%7B%22\")) === 0) {\n value = decodeURIComponent(input);\n }\n try {\n value = JSON.parse(value);\n if (value === \"true\")\n return true;\n if (value === \"false\")\n return false;\n if (typeof value === \"object\")\n return value;\n if (parseFloat(value) === value) {\n value = parseFloat(value);\n }\n }\n catch (e) { }\n if (value === null || value === \"\") {\n return;\n }\n return value;\n}\nconst emptyAnalytics = {\n setAnonymousId: () => { },\n setContextProperty(name, value) { },\n getContextProperty(name) {\n return undefined;\n },\n track: () => Promise.resolve(),\n page: () => Promise.resolve(),\n user: () => ({}),\n identify: () => Promise.resolve({}),\n group: () => Promise.resolve({}),\n reset: () => Promise.resolve({}),\n configure: () => { },\n};\nfunction createUnderlyingAnalyticsInstance(opts, rt, plugins = []) {\n var _a, _b, _c;\n const storageCache = {};\n // AnalyticsInstance's storage is async somewhere inside. So if we make 'page' call right after 'identify' call\n // 'page' call will load traits from storage before 'identify' call had a change to save them.\n // to avoid that we use in-memory cache for storage\n const cachingStorageWrapper = (persistentStorage) => ({\n setItem(key, val) {\n var _a, _b;\n if (((_a = opts.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {\n return;\n }\n if (opts.debug) {\n console.log(`[JITSU DEBUG] Caching storage setItem: ${key}=${val}`);\n }\n storageCache[key] = val;\n persistentStorage.setItem(key, val);\n },\n getItem(key) {\n var _a, _b;\n if (((_a = opts.privacy) === null || _a === void 0 ? void 0 : _a.dontSend) || ((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds)) {\n return;\n }\n const value = storageCache[key] || persistentStorage.getItem(key);\n if (opts.debug) {\n console.log(`[JITSU DEBUG] Caching storage getItem: ${key}=${value}. Evicted from cache: ${!storageCache[key]}`);\n }\n return value;\n },\n reset() {\n for (const key of [...Object.keys(storageCache)]) {\n delete storageCache[key];\n }\n persistentStorage.reset();\n },\n removeItem(key) {\n if (opts.debug) {\n console.log(`[JITSU DEBUG] Caching storage removeItem: ${key}`);\n }\n delete storageCache[key];\n persistentStorage.removeItem(key);\n },\n });\n const storage = cachingStorageWrapper(((_a = rt.store) === null || _a === void 0 ? void 0 : _a.call(rt)) || createInMemoryStorage(opts.debug));\n const analytics = analyticsLib({\n debug: !!opts.debug,\n storage,\n plugins: [jitsuAnalyticsPlugin(opts, storage), ...plugins],\n });\n const a = Object.assign(Object.assign({}, analytics), { page: (...args) => {\n if (args.length === 2 && typeof args[0] === \"string\" && typeof args[1] === \"object\") {\n return analytics.page(Object.assign({ name: args[0] }, args[1]));\n }\n else {\n return analytics.page(...args);\n }\n }, identify: (...args) => {\n if (args[0] && typeof args[0] !== \"object\" && typeof args[0] !== \"string\") {\n //fix the quirk of analytics.js: if you pass number as first argument, it will be converted to string\n args[0] = args[0] + \"\";\n }\n //analytics.js sets userId and traits asynchronously, so if\n //we want them to be available immediately after identify call in subsequent page() calls,\n //we need to put them into storage manually\n const storage = analytics.storage;\n const storageWrapper = cachingStorageWrapper(storage);\n if (typeof args[0] === \"string\") {\n //first argument is user id\n storageWrapper.setItem(\"__user_id\", args[0]);\n }\n else if (typeof args[0] === \"object\") {\n //first argument is traits\n storageWrapper.setItem(\"__user_traits\", args[0]);\n }\n if (args.length === 2 && typeof args[1] === \"object\") {\n //first argument is user id, second is traits\n storageWrapper.setItem(\"__user_traits\", args[1]);\n }\n return analytics.identify(...args);\n }, setContextProperty(name, value) {\n if (opts.debug) {\n console.log(`[JITSU DEBUG] Setting context property '${name}':${JSON.stringify(value)}`);\n }\n if (!opts.defaultPayloadContext) {\n opts.defaultPayloadContext = {\n [name]: value,\n };\n }\n else {\n opts.defaultPayloadContext[name] = value;\n }\n },\n getContextProperty(name) {\n var _a;\n if (opts.debug) {\n console.log(`[JITSU DEBUG] Getting context property '${name}'`);\n }\n return (_a = opts.defaultPayloadContext) === null || _a === void 0 ? void 0 : _a[name];\n }, setAnonymousId: (id) => {\n if (opts.debug) {\n console.log(\"[JITSU DEBUG] Setting anonymous id to \" + id);\n }\n //Workaround for analytics.js bug. Underlying setAnonymousId doesn't set the id immediately,\n //so we got to it manually here. See https://github.com/jitsucom/jitsu/issues/1060\n storage.setItem(\"__anon_id\", id);\n const userState = analytics.user();\n if (userState) {\n userState.anonymousId = id;\n }\n analytics.setAnonymousId(id);\n }, reset() {\n return __awaiter(this, void 0, void 0, function* () {\n if (opts.debug) {\n console.log(\"[JITSU DEBUG] Called reset(). Storage state\", JSON.stringify(analytics.user()));\n }\n storage.reset();\n yield analytics.reset();\n this.setAnonymousId(uuid());\n if (opts.debug) {\n console.log(\"[JITSU DEBUG] User state after reset\", JSON.stringify(analytics.user()));\n }\n });\n },\n configure(options) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (opts.debug) {\n console.log(\"[JITSU DEBUG] Update Jitsu config with\", JSON.stringify(options));\n }\n if (((_a = options.privacy) === null || _a === void 0 ? void 0 : _a.disableUserIds) || ((_b = options.privacy) === null || _b === void 0 ? void 0 : _b.dontSend)) {\n storage.reset();\n }\n for (const plugin of Object.values(analytics.plugins)) {\n if (typeof plugin[\"configure\"] === \"function\") {\n plugin[\"configure\"](options);\n }\n }\n });\n },\n group(groupId, traits, options, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const results = [];\n for (const plugin of Object.values(analytics.plugins)) {\n if (plugin[\"group\"]) {\n results.push(yield plugin[\"group\"](groupId, traits, options, callback));\n }\n }\n //It's incorrect at many levels. First, it's not a dispatched event. Second, we take a first result\n //However, since returned values are used for debugging purposes only, it's ok\n return results[0];\n });\n } });\n if (((_b = opts.privacy) === null || _b === void 0 ? void 0 : _b.disableUserIds) || ((_c = opts.privacy) === null || _c === void 0 ? void 0 : _c.dontSend)) {\n storage.reset();\n }\n return a;\n}\n/**\n * Fix common mistakes in jitsu configuration\n * @param opts\n */\nfunction fixOptions(opts) {\n var _a, _b;\n return Object.assign(Object.assign({}, opts), { host: ((_a = opts.host) !== null && _a !== void 0 ? _a : \"\").indexOf(\"https://\") !== 0 && ((_b = opts.host) !== null && _b !== void 0 ? _b : \"\").indexOf(\"http://\") !== 0\n ? `https://${opts.host}`\n : opts.host });\n}\nfunction jitsuAnalytics(_opts) {\n const opts = fixOptions(_opts);\n const inBrowser = isInBrowser();\n const rt = opts.runtime || (inBrowser ? windowRuntime(opts) : emptyRuntime(opts));\n return createUnderlyingAnalyticsInstance(opts, rt);\n // if (inBrowser) {\n // const fetch = opts.fetch || globalThis.fetch;\n // if (!fetch) {\n // throw new Error(\n // \"Please specify fetch function in jitsu plugin initialization, fetch isn't available in global scope\"\n // );\n // }\n // const url = `${opts.host}/api/s/cfg`;\n // const authHeader = {};\n // const debugHeader = opts.debug ? { \"X-Enable-Debug\": \"true\" } : {};\n // fetch(url)\n // .then(res => res.json())\n // .then(res => {\n // result.loaded(createUnderlyingAnalyticsInstance(opts, rt, []));\n // })\n // .catch(e => {\n // console.warn(`[JITSU] error getting device-destinations from ${url}`, e);\n // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));\n // });\n // } else {\n // result.loaded(createUnderlyingAnalyticsInstance(opts, rt));\n // }\n}\n\nexport { createInMemoryStorage, emptyAnalytics, emptyRuntime, isInBrowser, jitsuAnalytics, jitsuAnalyticsPlugin, parseQuery, randomId, uuid, windowRuntime };\n"],"names":["Init","constructor","config","_Salla$config$get","_config$user","N$2","status","_config$user2","merge","includes","location","hostname","get","set","window","origin","events","event","dispatchEvents","_token","salla","api","setHeader","self","top","this","injectMaintenanceAlert","injectThemePreviewAlert","injectTemplateStoreAlert","injectAppInstallAlert","applyContentCopyright","injectEditAlert","user","language_code","lang","setLocale","loadStoreTranslations","setSallaReady","afterInit","log","url","is_page","isGuest","addEventListener","preventDefault","emit","forEach","document","e","element","_element$tagName","tagName","toLowerCase","isInputElement","target","key","ctrlKey","shiftKey","stopPropagation","style","createElement","textContent","head","appendChild","body","classList","add","querySelector","logger","warn","onLoaded","prepend","append","storage","isMobileApp","alertElement","id","setAttribute","innerHTML","edit","n$2","t","l","n","varName","split","length","r","o$1","b$3","m$1","F$2","process","env","NODE_ENV","$$1","M$1","charAt","slice","versions","node","Deno","core","name","navigator","userAgent","U$1","bind","H$1","J$2","Y$1","W$1","yn","Object","prototype","toString","call","R$1","V$1","q$1","I$2","Q$1","on","un","getPrototypeOf","hn","Error","message","isNaN","nn","stackTraceLimit","On","$n","Element","HTMLDocument","nodeName","toUpperCase","Tn","_n","arguments","apply","concat","n$1","decodeURIComponent","replace","s","create","o","exec","a","i","substring","push","u","c","m","map","search","y$1","Math","random","TypeError","SyntaxError","j$1","global","a$2","f","i$2","u$1","b$2","c$1","e$1","setItem","removeItem","g$1","assign","hasOwnProperty","h$1","v","y","b$1","Symbol","observable","I$1","w","d","indexOf","splice","p","type","dispatch","subscribe","getState","replaceReducer","next","unsubscribe","E$1","P","reduce","S","N$1","A$1","_","j","k$1","x$1","T","z","registerPluginType","pluginReadyType","M","q","V","C$1","bootstrap","params","persistedUser","initialUser","userId","anonymousId","traits","keys","an_uid","an_event","match","campaign","props","raw","setTimeout","identify","track","U","setItemEnd","value","reset","R","getItem","$","D","options","userIdChanged","old","new","B","L$1","J$1","Promise","queue","then","X","abort","H","data","action","instance","state","allPlugins","allMatches","store","EVENTS","plugins","context","W","h","exact","pluginName","during","ne","JSON","stringify","reason","caller","payload","ae","methodName","loaded","offline","resolve","namespaced","method","ie","join","from","Q","reject","ee","K","plugin","called","F$1","G$1","originalAction","te","Y","Z","re","Array","isArray","oe","enablePlugin","initializeStart","disabled","fromEnable","meta","disablePlugin","rid","initializeEnd","filter","b","I","E","catch","all","failed","ready","test","actions","processIndex","requeue","requeueIndex","enabled","initialized","beforeNS","duringNS","afterNS","before","after","hasCallback","ue","ce","addMiddleware","removeMiddleware","findIndex","dynamicMiddlewares","se","le","Boolean","initialize","fe","de","parse","pe","last","history","me","properties","ge","he","ve","ye","be","Ie","title","referrer","innerWidth","innerHeight","hash","getElementsByTagName","getAttribute","href","path","width","height","we","Ee","page","Pe","sessionId","app","version","debug","onLine","os","library","timezone","locale","Se","online","Ne","Ae","analytics","_e","Oe","rn","je","ts","Date","getTime","ke","reducers","s$1","f$1","middlewares","NAMESPACE","pluginEnabled","methods","Set","pluginsArray","A","sort","O","L","J","an_aid","F","enable","disable","G","identifyStart","previousId","trackStart","pageStart","resetStart","xe","Te","once","setItemStart","removeItemStart","setAnonymousId","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","trace","traceLimit","registerPlugins","i$1","a$1","r$1","d$1","cookie","encodeURIComponent","toUTCString","g","parseFloat","k","x","C","N","localStorage","sessionStorage","t$1","current","previous","r$2","l$1","_defineProperty","obj","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","getOwnPropertyDescriptors","defineProperties","loadScript","src","found","querySelectorAll","find","findScript","undefined","err","_a","_b","script","result","startsWith","www","min","js","query","buildScriptSrc","async","entries","attributes","onload","onerror","tag","parentElement","insertBefore","__awaiter$5","thisArg","_arguments","generator","fulfilled","step","rejected","done","tagPlugin","handle","applyFilters","code","opts","isInBrowser","randomId","iif","execJs","codeHolder","replaceMacro","insertAdjacentElement","scriptClone","hasAttribute","text","console","removeChild","insertTags","ev","reverse","execF","globalThis"],"mappings":"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","x_google_ignoreList":[1]}