1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5225],{1030:(e,t,r)=>{"use strict";r.d(t,{t:()=>l});var i=r(71622),s=function(e,t,r){if(e&&"reportValidity"in e){var s=(0,i.Jt)(r,t);e.setCustomValidity(s&&s.message||""),e.reportValidity()}},n=function(e,t){var r=function(r){var i=t.fields[r];i&&i.ref&&"reportValidity"in i.ref?s(i.ref,r,e):i.refs&&i.refs.forEach(function(t){return s(t,r,e)})};for(var i in t.fields)r(i)},a=function(e,t){t.shouldUseNativeValidation&&n(e,t);var r={};for(var s in e){var a=(0,i.Jt)(t.fields,s),l=Object.assign(e[s]||{},{ref:a&&a.ref});if(o(t.names||Object.keys(e),s)){var u=Object.assign({},(0,i.Jt)(r,s));(0,i.hZ)(u,"root",l),(0,i.hZ)(r,s,u)}else(0,i.hZ)(r,s,l)}return r},o=function(e,t){return e.some(function(e){return e.startsWith(t+".")})};function l(e,t,r){return void 0===t&&(t={}),void 0===r&&(r={}),function(s,o,l){try{return Promise.resolve(function(i){try{var a=(t.context,Promise.resolve(e["sync"===r.mode?"validateSync":"validate"](s,Object.assign({abortEarly:!1},t,{context:o}))).then(function(e){return l.shouldUseNativeValidation&&n({},l),{values:r.raw?s:e,errors:{}}}))}catch(e){return i(e)}return a&&a.then?a.then(void 0,i):a}(function(e){var t;if(!e.inner)throw e;return{values:{},errors:a((t=!l.shouldUseNativeValidation&&"all"===l.criteriaMode,(e.inner||[]).reduce(function(e,r){if(e[r.path]||(e[r.path]={message:r.message,type:r.type}),t){var s=e[r.path].types,n=s&&s[r.type];e[r.path]=(0,i.Gb)(r.path,t,e,r.type,n?[].concat(n,r.message):r.message)}return e},{})),l)}}))}catch(e){return Promise.reject(e)}}}},3232:e=>{var t=/((([a-zA-Z]+(-[a-zA-Z0-9]+){0,2})|\*)(;q=[0-1](\.[0-9]+)?)?)*/g;function r(e){return(e||"").match(t).map(function(e){if(e){var t=e.split(";"),r=t[0].split("-"),i=3===r.length;return{code:r[0],script:i?r[1]:null,region:i?r[2]:r[1],quality:t[1]?parseFloat(t[1].split("=")[1]):1}}}).filter(function(e){return e}).sort(function(e,t){return t.quality-e.quality})}e.exports.parse=r,e.exports.pick=function(e,t,i){if(i=i||{},!e||!e.length||!t)return null;"string"==typeof t&&(t=r(t));for(var s=e.map(function(e){var t=e.split("-"),r=3===t.length;return{code:t[0],script:r?t[1]:null,region:r?t[2]:t[1]}}),n=0;n<t.length;n++)for(var a=t[n],o=a.code.toLowerCase(),l=a.region?a.region.toLowerCase():a.region,u=a.script?a.script.toLowerCase():a.script,c=0;c<s.length;c++){var d=s[c].code.toLowerCase(),h=s[c].script?s[c].script.toLowerCase():s[c].script,f=s[c].region?s[c].region.toLowerCase():s[c].region;if(o===d&&(i.loose||!u||u===h)&&(i.loose||!l||l===f))return e[c]}return null}},43905:(e,t,r)=>{"use strict";r.d(t,{NN:()=>eH,iX:()=>ez,Br:()=>eG});var i,s,n=/^[a-zA-Z:_][a-zA-Z0-9:_.-]*$/,a={revert:function(){}},o=new Map,l=new Set;function u(e){var t=o.get(e);return t||(t={element:e,attributes:{}},o.set(e,t)),t}function c(e,t,r,i,s){var n=r(e),a={isDirty:!1,originalValue:n,virtualValue:n,mutations:[],el:e,_positionTimeout:null,observer:new MutationObserver(function(){if("position"!==t||!a._positionTimeout){"position"===t&&(a._positionTimeout=setTimeout(function(){a._positionTimeout=null},1e3));var i=r(e);"position"===t&&i.parentNode===a.virtualValue.parentNode&&i.insertBeforeNode===a.virtualValue.insertBeforeNode||i!==a.virtualValue&&(a.originalValue=i,s(a))}}),mutationRunner:s,setValue:i,getCurrentValue:r};return"position"===t&&e.parentNode?a.observer.observe(e.parentNode,{childList:!0,subtree:!0,attributes:!1,characterData:!1}):a.observer.observe(e,"html"===t?{childList:!0,subtree:!0,attributes:!0,characterData:!0}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[t]}),a}function d(e,t){var r=t.getCurrentValue(t.el);t.virtualValue=e,e&&"string"!=typeof e?r&&e.parentNode===r.parentNode&&e.insertBeforeNode===r.insertBeforeNode||(t.isDirty=!0,B()):e!==r&&(t.isDirty=!0,B())}function h(e){var t,r=e.originalValue;e.mutations.forEach(function(e){return r=e.mutate(r)}),d((t=r,i||(i=document.createElement("div")),i.innerHTML=t,i.innerHTML),e)}function f(e){var t=new Set(e.originalValue.split(/\s+/).filter(Boolean));e.mutations.forEach(function(e){return e.mutate(t)}
1),d(Array.from(t).filter(Boolean).join(" "),e)}function p(e){var t=e.originalValue;e.mutations.forEach(function(e){return t=e.mutate(t)}),d(t,e)}function g(e){var t=e.originalValue;e.mutations.forEach(function(e){t=function(e){var t=e.parentSelector,r=e.insertBeforeSelector,i=document.querySelector(t);if(!i)return null;var s=r?document.querySelector(r):null;return r&&!s?null:{parentNode:i,insertBeforeNode:s}}(e.mutate())||t}),d(t,e)}var m=function(e){return e.innerHTML},y=function(e,t){return e.innerHTML=t};function v(e){var t=u(e);return t.html||(t.html=c(e,"html",m,y,h)),t.html}var b=function(e){return{parentNode:e.parentElement,insertBeforeNode:e.nextElementSibling}},k=function(e,t){(!t.insertBeforeNode||t.parentNode.contains(t.insertBeforeNode))&&t.parentNode.insertBefore(e,t.insertBeforeNode)};function _(e){var t=u(e);return t.position||(t.position=c(e,"position",b,k,g)),t.position}var E=function(e,t){return t?e.className=t:e.removeAttribute("class")},A=function(e){return e.className};function w(e){var t=u(e);return t.classes||(t.classes=c(e,"class",A,E,f)),t.classes}function x(e,t){var r=u(e);return r.attributes[t]||(r.attributes[t]=c(e,t,function(e){var r;return null!=(r=e.getAttribute(t))?r:null},function(e,r){return null!==r?e.setAttribute(t,r):e.removeAttribute(t)},p)),r.attributes[t]}function S(e,t,r){if(r.isDirty){r.isDirty=!1;var i,s,n,a,l,u,c,d,h,f,p=r.virtualValue;!r.mutations.length&&(f=o.get(e))&&("html"===t?(null==(i=f.html)||null==(s=i.observer)||s.disconnect(),delete f.html):"class"===t?(null==(n=f.classes)||null==(a=n.observer)||a.disconnect(),delete f.classes):"position"===t?(null==(l=f.position)||null==(u=l.observer)||u.disconnect(),delete f.position):(null==(c=f.attributes)||null==(d=c[t])||null==(h=d.observer)||h.disconnect(),delete f.attributes[t])),r.setValue(e,p)}}function C(e,t){e.html&&S(t,"html",e.html),e.classes&&S(t,"class",e.classes),e.position&&S(t,"position",e.position),Object.keys(e.attributes).forEach(function(r){S(t,r,e.attributes[r])})}function B(){o.forEach(C)}function D(e){if("position"!==e.kind||1!==e.elements.size){var t=new Set(e.elements);document.querySelectorAll(e.selector).forEach(function(r){if(!t.has(r)){var i;e.elements.add(r),i=null,"html"===e.kind?i=v(r):"class"===e.kind?i=w(r):"attribute"===e.kind?i=x(r,e.attribute):"position"===e.kind&&(i=_(r)),i&&(i.mutations.push(e),i.mutationRunner(i))}})}}function V(){l.forEach(D)}function F(e){return"u"<typeof document?a:(l.add(e),D(e),{revert:function(){e.elements.forEach(function(t){var r=null;if("html"===e.kind?r=v(t):"class"===e.kind?r=w(t):"attribute"===e.kind?r=x(t,e.attribute):"position"===e.kind&&(r=_(t)),r){var i=r.mutations.indexOf(e);-1!==i&&r.mutations.splice(i,1),r.mutationRunner(r)}}),e.elements.clear(),l.delete(e)}})}function T(e,t){return F({kind:"html",elements:new Set,mutate:t,selector:e})}function $(e,t){return F({kind:"class",elements:new Set,mutate:t,selector:e})}function L(e,t,r){return n.test(t)?"class"===t||"className"===t?$(e,function(e){var t=r(Array.from(e).join(" "));e.clear(),t&&t.split(/\s+/g).filter(Boolean).forEach(function(t){return e.add(t)})}):F({kind:"attribute",attribute:t,elements:new Set,mutate:r,selector:e}):a}"u">typeof document&&(s||(s=new MutationObserver(function(){V()})),V(),s.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!1,characterData:!1}));let N=function(e){var t,r,i=e.selector,s=e.action,n=e.value,o=e.attribute,l=e.parentSelector,u=e.insertBeforeSelector;if("html"===o){if("append"===s)return T(i,function(e){return e+(null!=n?n:"")});else if("set"===s)return T(i,function(){return null!=n?n:""})}else if("class"===o){if("append"===s)return $(i,function(e){n&&e.add(n)});else if("remove"===s)return $(i,function(e){n&&e.delete(n)});else if("set"===s)return $(i,function(e){e.clear(),n&&e.add(n)})}else if("position"===o){if("set"===s&&l){return t=i,r=function(){return{insertBeforeSelector:u,parentSelector:l}},F({kind:"position",elements:new Set,mutate:r,selector:t})}}else if("append"===s)return L(i,o,function(e){return null!==e?e+(null!=n?n:""):null!=n?n:""});else if("set"===s)return L(i,o,function(){return null!=n?n:""});else if("remove"===s)return L(i,o,function(){return null});return a},R={fetch:globalThis.fetch?globalThis.fetch.bind(globalThis):void 0,SubtleCrypto:globalThis.crypto?globalThis.crypto.subtle:void 0,EventSource:globalThis.EventSource};function I(e){let t=0x811c9dc5,r=e.length;for(let i=0;i<r;i++)t^=e.charCodeAt(i),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return t>>>0}function M(e,t,r){return 2===r?I(I(e+t)+"")%1e4/1e4:1===r?I(t+e)%1e3/1e3:null}function O(e,t){return e>=t[0]&&e<t[1]}function U(e){try{let t=e.replace(/([^\\])\//g,"$1\\/");return new RegExp(t)}catch(e){console.error(e);return}}function P(e,t){if(!t.length)return!1;let r=!1,i=!1;for(let s=0;s<t.length;s++){let n=function(e,t,r){try{let i=new URL(e,"https://_");if("regex"===t){let e=U(r);if(!e)return!1;return e.test(i.href)||e.test(i.href.substring(i.origin.length))}if("simple"===t)try{let e=new URL(r.replace(/^([^:/?]*)\./i,"https://$1.").replace(/\*/g,"_____"),"https://_____"),t=[[i.host,e.host,!1],[i.pathname,e.pathname,!0]];
1return e.hash&&t.push([i.hash,e.hash,!1]),e.searchParams.forEach((e,r)=>{t.push([i.searchParams.get(r)||"",e,!1])}),!t.some(e=>!function(e,t,r){try{let i=t.replace(/[*.+?^${}()|[\]\\]/g,"\\$&").replace(/_____/g,".*");return r&&(i="\\/?"+i.replace(/(^\/|\/$)/g,"")+"\\/?"),RegExp("^"+i+"$","i").test(e)}catch(e){return!1}}(e[0],e[1],e[2]))}catch(e){}return!1}catch(e){return!1}}(e,t[s].type,t[s].pattern);if(!1===t[s].include){if(n)return!1}else r=!0,n&&(i=!0)}return i||!r}let K=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0));async function j(e,t,r){if(t=t||"",!(r=r||globalThis.crypto&&globalThis.crypto.subtle||R.SubtleCrypto))throw Error("No SubtleCrypto implementation found");try{let i=await r.importKey("raw",K(t),{name:"AES-CBC",length:128},!0,["encrypt","decrypt"]),[s,n]=e.split("."),a=await r.decrypt({name:"AES-CBC",iv:K(s)},i,K(n));return new TextDecoder().decode(a)}catch(e){throw Error("Failed to decrypt")}}function H(e){return"string"==typeof e?e:JSON.stringify(e)}function q(e){"number"==typeof e&&(e+=""),e&&"string"==typeof e||(e="0");let t=e.replace(/(^v|\+.*$)/g,"").split(/[-.]/);return 3===t.length&&t.push("~"),t.map(e=>e.match(/^[0-9]+$/)?e.padStart(5," "):e).join("-")}function J(e){return"object"==typeof e&&null!==e}function G(e){return e.urlPatterns&&e.variations.some(e=>J(e)&&"urlRedirect"in e)?"redirect":e.variations.some(e=>J(e)&&(e.domMutations||"js"in e||"css"in e))?"visual":"unknown"}async function z(e,t){return new Promise(r=>{let i,s=!1,n=e=>{s||(s=!0,i&&clearTimeout(i),r(e||null))};t&&(i=setTimeout(()=>n(),t)),e.then(e=>n(e)).catch(()=>n())})}let Z={staleTTL:6e4,maxAge:144e5,cacheKey:"gbFeaturesCache",backgroundSync:!0,maxEntries:10,disableIdleStreams:!1,idleStreamInterval:2e4,disableCache:!1},Q={fetchFeaturesCall:e=>{let{host:t,clientKey:r,headers:i}=e;return R.fetch(`${t}/api/features/${r}`,{headers:i})},fetchRemoteEvalCall:e=>{let{host:t,clientKey:r,payload:i,headers:s}=e,n={method:"POST",headers:{"Content-Type":"application/json",...s},body:JSON.stringify(i)};return R.fetch(`${t}/api/eval/${r}`,n)},eventSourceCall:e=>{let{host:t,clientKey:r,headers:i}=e;return i?new R.EventSource(`${t}/sub/${r}`,{headers:i}):new R.EventSource(`${t}/sub/${r}`)},startIdleListener:()=>{let e;if(!("u">typeof window&&"u">typeof document))return;let t=()=>{"visible"===document.visibilityState?(window.clearTimeout(e),et.forEach(e=>{e&&"idle"===e.state&&ey(e)})):"hidden"===document.visibilityState&&(e=window.setTimeout(es,Z.idleStreamInterval))};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},stopIdleListener:()=>{}};try{globalThis.localStorage&&(R.localStorage=globalThis.localStorage)}catch(e){}let W=new Map,X=!1,Y=new Map,ee=new Map,et=new Map,er=new Set;async function ei(e){let{instance:t,timeout:r,skipCache:i,allowStale:s,backgroundSync:n}=e;return n||(Z.backgroundSync=!1),ea({instance:t,allowStale:s,timeout:r,skipCache:i})}function es(){et.forEach(e=>{e&&(e.state="idle",em(e))})}async function en(){try{if(!R.localStorage)return;await R.localStorage.setItem(Z.cacheKey,JSON.stringify(Array.from(Y.entries())))}catch(e){}}async function ea(e){let{instance:t,allowStale:r,timeout:i,skipCache:s}=e,n=eo(t),a=el(t),o=new Date,l=new Date(o.getTime()-Z.maxAge+Z.staleTTL);await eu();let u=Z.disableCache||s?void 0:Y.get(a);return u&&(r||u.staleAt>o)&&u.staleAt>l?(u.sse&&er.add(n),u.staleAt<o?ef(t):ep(t),{data:u.data,success:!0,source:"cache"}):await z(ef(t),i)||{data:null,success:!1,source:"timeout",error:Error("Timeout")}}function eo(e){let[t,r]=e.getApiInfo();return`${t}||${r}`}function el(e){let t=eo(e);if(!("isRemoteEval"in e)||!e.isRemoteEval())return t;let r=e.getAttributes(),i=e.getCacheKeyAttributes()||Object.keys(e.getAttributes()),s={};i.forEach(e=>{s[e]=r[e]});let n=e.getForcedVariations(),a=e.getUrl();return`${t}||${JSON.stringify({ca:s,fv:n,url:a})}`}async function eu(){if(!X){X=!0;try{if(R.localStorage){let e=await R.localStorage.getItem(Z.cacheKey);if(!Z.disableCache&&e){let t=JSON.parse(e);t&&Array.isArray(t)&&t.forEach(e=>{let[t,r]=e;Y.set(t,{...r,staleAt:new Date(r.staleAt)})}),ec()}}}catch(e){}if(!Z.disableIdleStreams){let e=Q.startIdleListener();e&&(Q.stopIdleListener=e)}}}function ec(){let e=Array.from(Y.entries()).map(e=>{let[t,r]=e;return{key:t,staleAt:r.staleAt.getTime()}}).sort((e,t)=>
1e.staleAt-t.staleAt),t=Math.min(Math.max(0,Y.size-Z.maxEntries),Y.size);for(let r=0;r<t;r++)Y.delete(e[r].key)}function ed(e,t,r){let i=r.dateUpdated||"",s=new Date(Date.now()+Z.staleTTL),n=Z.disableCache?void 0:Y.get(t);if(n&&i&&n.version===i){n.staleAt=s,en();return}Z.disableCache||(Y.set(t,{data:r,version:i,staleAt:s,sse:er.has(e)}),ec()),en();let a=W.get(e);a&&a.forEach(e=>eh(e,r))}async function eh(e,t){await e.setPayload(t||e.getPayload())}async function ef(e){let{apiHost:t,apiRequestHeaders:r}=e.getApiHosts(),i=e.getClientKey(),s="isRemoteEval"in e&&e.isRemoteEval(),n=eo(e),a=el(e),o=ee.get(a);return o||(o=(s?Q.fetchRemoteEvalCall({host:t,clientKey:i,payload:{attributes:e.getAttributes(),forcedVariations:e.getForcedVariations(),forcedFeatures:Array.from(e.getForcedFeatures().entries()),url:e.getUrl()},headers:r}):Q.fetchFeaturesCall({host:t,clientKey:i,headers:r})).then(e=>{if(!e.ok)throw Error(`HTTP error: ${e.status}`);return"enabled"===e.headers.get("x-sse-support")&&er.add(n),e.json()}).then(t=>(ed(n,a,t),ep(e),ee.delete(a),{data:t,success:!0,source:"network"})).catch(e=>(ee.delete(a),{data:null,source:"error",success:!1,error:e})),ee.set(a,o)),o}function ep(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=eo(e),i=el(e),{streamingHost:s,streamingHostRequestHeaders:n}=e.getApiHosts(),a=e.getClientKey();if(t&&er.add(r),Z.backgroundSync&&er.has(r)&&R.EventSource){if(et.has(r))return;let e={src:null,host:s,clientKey:a,headers:n,cb:t=>{try{if("features-updated"===t.type){let e=W.get(r);e&&e.forEach(e=>{ef(e)})}else if("features"===t.type){let e=JSON.parse(t.data);ed(r,i,e)}e.errors=0}catch(t){eg(e)}},errors:0,state:"active"};et.set(r,e),ey(e)}}function eg(e){if("idle"!==e.state&&(e.errors++,e.errors>3||e.src&&2===e.src.readyState)){let t=Math.pow(3,e.errors-3)*(1e3+1e3*Math.random());em(e),setTimeout(()=>{["idle","active"].includes(e.state)||ey(e)},Math.min(t,3e5))}}function em(e){e.src&&(e.src.onopen=null,e.src.onerror=null,e.src.close(),e.src=null,"active"===e.state&&(e.state="disabled"))}function ey(e){e.src=Q.eventSourceCall({host:e.host,clientKey:e.clientKey,headers:e.headers}),e.state="active",e.src.addEventListener("features",e.cb),e.src.addEventListener("features-updated",e.cb),e.src.onerror=()=>eg(e),e.src.onopen=()=>{e.errors=0}}function ev(e,t){em(e),et.delete(t)}function eb(){er.clear(),et.forEach(ev),W.clear(),Q.stopIdleListener()}function ek(e,t){if(t.streaming){let r,i;if(!e.getClientKey())throw Error("Must specify clientKey to enable streaming");t.payload&&ep(e,!0),r=eo(e),(i=W.get(r)||new Set).add(e),W.set(r,i)}}let e_={};function eE(e,t,r){for(let[i,s]of(r=r||{},Object.entries(t)))switch(i){case"$or":if(!ex(e,s,r))return!1;break;case"$nor":if(ex(e,s,r))return!1;break;case"$and":if(!function(e,t,r){for(let i=0;i<t.length;i++)if(!eE(e,t[i],r))return!1;return!0}(e,s,r))return!1;break;case"$not":if(eE(e,s,r))return!1;break;default:if(!function e(t,r,i){if("string"==typeof t)return r+""===t;if("number"==typeof t)return+r===t;if("boolean"==typeof t)return null!==r&&!!r===t;if(null===t)return null===r;if(Array.isArray(t)||!eA(t))return JSON.stringify(r)===JSON.stringify(t);for(let s in t)if(!function(t,r,i,s){switch(t){case"$veq":return q(r)===q(i);case"$vne":return q(r)!==q(i);case"$vgt":return q(r)>q(i);case"$vgte":return q(r)>=q(i);case"$vlt":return q(r)<q(i);case"$vlte":return q(r)<=q(i);case"$eq":return r===i;case"$ne":return r!==i;case"$lt":return r<i;case"$lte":return r<=i;case"$gt":return r>i;case"$gte":return r>=i;case"$exists":return i?null!=r:null==r;case"$in":if(!Array.isArray(i))return!1;return ew(r,i);case"$inGroup":return ew(r,s[i]||[]);case"$notInGroup":return!ew(r,s[i]||[]);case"$nin":if(!Array.isArray(i))return!1;return!ew(r,i);case"$not":return!e(i,r,s);case"$size":if(!Array.isArray(r))return!1;return e(i,r.length,s);case"$elemMatch":if(!Array.isArray(r))return!1;let n=eA(i)?t=>e(i,t,s):e=>eE(e,i,s);for(let e=0;e<r.length;e++)if(r[e]&&n(r[e]))return!0;return!1;case"$all":if(!Array.isArray(r))return!1;for(let t=0;t<i.length;t++){let n=!1;for(let a=0;a<r.length;a++)if(e(i[t],r[a],s)){n=!0;break}if(!n)return!1}return!0;case"$regex":try{return(!e_[i]&&(e_[i]=new RegExp(i.replace(/([^\\])\//g,"$1\\/"))),e_[i]).test(r)}catch(e){return!1}case"$type":return function(e){if(null===e)return"null";if(Array.isArray(e))return"array";let t=typeof e;return["string","number","boolean","object","undefined"].includes(t)?t:"unknown"}(r)===i;default:return console.error("Unknown operator: "+t),!1}}(s,r,t[s],i))return!1;return!0}(s,function(e,t){let r=t.split("."),i=e;for(let e=0;e<r.length;e++)if(!i||"object"!=typeof i||!(r[e]in i))return null;else i=i[r[e]];return i}(e,i),r))return!1}return!0}function eA(e){let t=Object.keys(e);return t.length>0&&t.filter(e=>"$"===e[0]).length===t.length}function ew(e,t){return Array.isArray(e)?e.some(e=>t.includes(e)):t.includes(e)}function ex(e,t,r){if(!t.length)return!0;for(let i=0;i<t.length;i++)if(eE(e,t[i],r))return!0;return!1}async function eS(e){try{await e()}catch(e){}}function eC(e,t,r){if(e.user.trackedExperiments){let i=eP(t,r);
1if(e.user.trackedExperiments.has(i))return[];e.user.trackedExperiments.add(i)}e.user.enableDevMode&&e.user.devLogs&&e.user.devLogs.push({experiment:t,result:r,timestamp:Date.now().toString(),logType:"experiment"});let i=[];if(e.global.trackingCallback){let s=e.global.trackingCallback;i.push(eS(()=>s(t,r,e.user)))}if(e.user.trackingCallback){let s=e.user.trackingCallback;i.push(eS(()=>s(t,r)))}if(e.global.eventLogger){let s=e.global.eventLogger;i.push(eS(()=>s("Experiment Viewed",{experimentId:t.key,variationId:r.key,hashAttribute:r.hashAttribute,hashValue:r.hashValue},e.user)))}return i}function eB(e,t){let r;if(t.stack.evaluatedFeatures.has(e))return eV(t,e,null,"cyclicPrerequisite");t.stack.evaluatedFeatures.add(e),t.stack.id=e;let i=(r=new Map,t.global.forcedFeatureValues&&t.global.forcedFeatureValues.forEach((e,t)=>r.set(t,e)),t.user.forcedFeatureValues&&t.user.forcedFeatureValues.forEach((e,t)=>r.set(t,e)),r);if(i.has(e))return eV(t,e,i.get(e),"override");if(!t.global.features||!t.global.features[e])return eV(t,e,null,"unknownFeature");let s=t.global.features[e];if(s.rules){let r=new Set(t.stack.evaluatedFeatures);e:for(let i of s.rules){if(i.parentConditions)for(let s of i.parentConditions){t.stack.evaluatedFeatures=new Set(r);let i=eB(s.id,t);if("cyclicPrerequisite"===i.source)return eV(t,e,null,"cyclicPrerequisite");if(!eE({value:i.value},s.condition||{})){if(s.gate)return eV(t,e,null,"prerequisite");continue e}}if(i.filters&&e$(i.filters,t))continue;if("force"in i){if(i.condition&&!eT(i.condition,t)||!function(e,t,r,i,s,n,a){if(!s&&void 0===n)return!0;if(!s&&0===n)return!1;let{hashValue:o}=eN(e,r,i);if(!o)return!1;let l=M(t,o,a||1);return null!==l&&(s?O(l,s):void 0===n||l<=n)}(t,i.seed||e,i.hashAttribute,t.user.saveStickyBucketAssignmentDoc&&!i.disableStickyBucketing?i.fallbackAttribute:void 0,i.range,i.coverage,i.hashVersion))continue;return i.tracks&&i.tracks.forEach(e=>{!eC(t,e.experiment,e.result).length&&t.global.saveDeferredTrack&&t.global.saveDeferredTrack({experiment:e.experiment,result:e.result})}),eV(t,e,i.force,"force",i.id)}if(!i.variations)continue;let s={variations:i.variations,key:i.key||e};"coverage"in i&&(s.coverage=i.coverage),i.weights&&(s.weights=i.weights),i.hashAttribute&&(s.hashAttribute=i.hashAttribute),i.fallbackAttribute&&(s.fallbackAttribute=i.fallbackAttribute),i.disableStickyBucketing&&(s.disableStickyBucketing=i.disableStickyBucketing),void 0!==i.bucketVersion&&(s.bucketVersion=i.bucketVersion),void 0!==i.minBucketVersion&&(s.minBucketVersion=i.minBucketVersion),i.namespace&&(s.namespace=i.namespace),i.meta&&(s.meta=i.meta),i.ranges&&(s.ranges=i.ranges),i.name&&(s.name=i.name),i.phase&&(s.phase=i.phase),i.seed&&(s.seed=i.seed),i.hashVersion&&(s.hashVersion=i.hashVersion),i.filters&&(s.filters=i.filters),i.condition&&(s.condition=i.condition);let{result:n}=eD(s,e,t);if(t.global.onExperimentEval&&t.global.onExperimentEval(s,n),n.inExperiment&&!n.passthrough)return eV(t,e,n.value,"experiment",i.id,s,n)}}return eV(t,e,void 0===s.defaultValue?null:s.defaultValue,"defaultValue")}function eD(e,t,r){var i,s,n,a,o,l,u,c,d,h;let f,p,g=e.key,m=e.variations.length;if(m<2||!1===r.global.enabled||!1===r.user.enabled||(a=e,o=r,f=a.key,(p=o.global.overrides)&&p[f]&&"string"==typeof(a=Object.assign({},a,p[f])).url&&(a.url=U(a.url)),e=a).urlPatterns&&!P(r.user.url||"",e.urlPatterns))return{result:eL(r,e,-1,!1,t)};let y=function(e,t,r){if(!t)return null;let i=t.split("?")[1];if(!i)return null;let s=i.replace(/#.*/,"").split("&").map(e=>e.split("=",2)).filter(t=>{let[r]=t;return r===e}).map(e=>{let[,t]=e;return parseInt(t)});return s.length>0&&s[0]>=0&&s[0]<r?s[0]:null}(g,r.user.url||"",m);if(null!==y)return{result:eL(r,e,y,!1,t)};let v=(l=r).global.forcedVariations&&l.user.forcedVariations?{...l.global.forcedVariations,...l.user.forcedVariations}:l.global.forcedVariations?l.global.forcedVariations:l.user.forcedVariations?l.user.forcedVariations:{};if(g in v)return{result:eL(r,e,v[g],!1,t)};if("draft"===e.status||!1===e.active)return{result:eL(r,e,-1,!1,t)};let{hashAttribute:b,hashValue:k}=eN(r,e.hashAttribute,r.user.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing?e.fallbackAttribute:void 0);if(!k)return{result:eL(r,e,-1,!1,t)};let _=-1,E=!1,A=!1;if(r.user.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing){let{variation:t,versionIsBlocked:i}=function(e){let{ctx:t,expKey:r,expBucketVersion:i,expHashAttribute:s,expFallbackAttribute:n,expMinBucketVersion:a,expMeta:o}=e;a=a||0,s=s||"id",o=o||[];let l=eR(r,i=i||0),u=function(e,t,r){if(!e.user.stickyBucketAssignmentDocs)return{};let{hashAttribute:i,hashValue:s}=eN(e,t),n=eI(i,H(s)),{hashAttribute:a,hashValue:o}=eN(e,r),l=o?eI(a,H(o)):null,u={};return l&&e.user.stickyBucketAssignmentDocs[l]&&Object.assign(u,e.user.stickyBucketAssignmentDocs[l].assignments||{}),e.user.stickyBucketAssignmentDocs[n]&&Object.assign(u,e.user.stickyBucketAssignmentDocs[n].assignments||{}),u}(t,s,n);if(a>0){for(let e=0;e<a;e++)if(void 0!==u[eR(r,e)])return{variation:-1,versionIsBlocked:!0}}let c=u[l];
1if(void 0===c)return{variation:-1};let d=o.findIndex(e=>e.key===c);return d<0?{variation:-1}:{variation:d}}({ctx:r,expKey:e.key,expBucketVersion:e.bucketVersion,expHashAttribute:e.hashAttribute,expFallbackAttribute:e.fallbackAttribute,expMinBucketVersion:e.minBucketVersion,expMeta:e.meta});E=t>=0,_=t,A=!!i}if(!E){if(e.filters){if(e$(e.filters,r))return{result:eL(r,e,-1,!1,t)}}else{let s;if(e.namespace&&(null===(s=M("__"+(i=e.namespace)[0],k,1))||!(s>=i[1])||!(s<i[2])))return{result:eL(r,e,-1,!1,t)}}if(e.include&&!function(e){try{return e()}catch(e){return console.error(e),!1}}(e.include)||e.condition&&!eT(e.condition,r))return{result:eL(r,e,-1,!1,t)};if(e.parentConditions){let i=new Set(r.stack.evaluatedFeatures);for(let s of e.parentConditions){r.stack.evaluatedFeatures=new Set(i);let n=eB(s.id,r);if("cyclicPrerequisite"===n.source||!eE({value:n.value},s.condition||{}))return{result:eL(r,e,-1,!1,t)}}}if(e.groups&&!function(e,t){let r=t.global.groups||{};for(let t=0;t<e.length;t++)if(r[e[t]])return!0;return!1}(e.groups,r))return{result:eL(r,e,-1,!1,t)}}if(e.url&&!function(e,t){let r=t.user.url;if(!r)return!1;let i=r.replace(/^https?:\/\//,"").replace(/^[^/]*\//,"/");return!!(e.test(r)||e.test(i))}(e.url,r))return{result:eL(r,e,-1,!1,t)};let w=M(e.seed||g,k,e.hashVersion||1);if(null===w)return{result:eL(r,e,-1,!1,t)};if(!E){let t,r,i;_=function(e,t){for(let r=0;r<t.length;r++)if(O(e,t[r]))return r;return -1}(w,e.ranges||(s=void 0===e.coverage?1:e.coverage,n=e.weights,(s=void 0===s?1:s)<0?s=0:s>1&&(s=1),t=m<=0?[]:Array(m).fill(1/m),(n=n||t).length!==m&&(n=t),((r=n.reduce((e,t)=>t+e,0))<.99||r>1.01)&&(n=t),i=0,n.map(e=>{let t=i;return i+=e,[t,t+s*e]})))}if(A)return{result:eL(r,e,-1,!1,t,void 0,!0)};if(_<0)return{result:eL(r,e,-1,!1,t)};if("force"in e)return{result:eL(r,e,void 0===e.force?-1:e.force,!1,t)};if(r.global.qaMode||r.user.qaMode||"stopped"===e.status)return{result:eL(r,e,-1,!1,t)};let x=eL(r,e,_,!0,t,w,E);if(r.user.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing){let t,i,s,n,{changed:a,key:o,doc:l}=(u=r,c=b,d=H(k),h={[eR(e.key,e.bucketVersion)]:x.key},t=eI(c,d),s={...i=u.user.stickyBucketAssignmentDocs&&u.user.stickyBucketAssignmentDocs[t]&&u.user.stickyBucketAssignmentDocs[t].assignments||{},...h},n=JSON.stringify(i)!==JSON.stringify(s),{key:t,doc:{attributeName:c,attributeValue:d,assignments:s},changed:n});a&&(r.user.stickyBucketAssignmentDocs=r.user.stickyBucketAssignmentDocs||{},r.user.stickyBucketAssignmentDocs[o]=l,r.user.saveStickyBucketAssignmentDoc(l))}let S=eC(r,e,x);0===S.length&&r.global.saveDeferredTrack&&r.global.saveDeferredTrack({experiment:e,result:x});let C=S.length?1===S.length?S[0]:Promise.all(S).then(()=>{}):void 0;return"changeId"in e&&e.changeId&&r.global.recordChangeId&&r.global.recordChangeId(e.changeId),{result:x,trackingCall:C}}function eV(e,t,r,i,s,n,a){let o={value:r,on:!!r,off:!r,source:i,ruleId:s||""};return n&&(o.experiment=n),a&&(o.experimentResult=a),"override"!==i&&function(e,t,r){if(e.user.trackedFeatureUsage){let i=JSON.stringify(r.value);if(e.user.trackedFeatureUsage[t]===i)return;e.user.trackedFeatureUsage[t]=i,e.user.enableDevMode&&e.user.devLogs&&e.user.devLogs.push({featureKey:t,result:r,timestamp:Date.now().toString(),logType:"feature"})}if(e.global.onFeatureUsage){let i=e.global.onFeatureUsage;eS(()=>i(t,r,e.user))}if(e.user.onFeatureUsage){let i=e.user.onFeatureUsage;eS(()=>i(t,r))}if(e.global.eventLogger){let i=e.global.eventLogger;eS(()=>i("Feature Evaluated",{feature:t,source:r.source,value:r.value,ruleId:"defaultValue"===r.source?"$default":r.ruleId||"",variationId:r.experimentResult?r.experimentResult.key:""},e.user))}}(e,t,o),o}function eF(e){return{...e.user.attributes,...e.user.attributeOverrides}}function eT(e,t){return eE(eF(t),e,t.global.savedGroups||{})}function e$(e,t){return e.some(e=>{let{hashValue:r}=eN(t,e.attribute);if(!r)return!0;let i=M(e.seed,r,e.hashVersion||2);return null===i||!e.ranges.some(e=>O(i,e))})}function eL(e,t,r,i,s,n,a){let o=!0;(r<0||r>=t.variations.length)&&(r=0,o=!1);let{hashAttribute:l,hashValue:u}=eN(e,t.hashAttribute,e.user.saveStickyBucketAssignmentDoc&&!t.disableStickyBucketing?t.fallbackAttribute:void 0),c=t.meta?t.meta[r]:{},d={key:c.key||""+r,featureId:s,inExperiment:o,hashUsed:i,variationId:r,value:t.variations[r],hashAttribute:l,hashValue:u,stickyBucketUsed:!!a};return c.name&&(d.name=c.name),void 0!==n&&(d.bucket=n),c.passthrough&&(d.passthrough=c.passthrough),d}function eN(e,t,r){let i=t||"id",s="",n=eF(e);return n[i]&&(s=n[i]),!s&&r&&(n[r]&&(s=n[r]),s&&(i=r)),{hashAttribute:i,hashValue:s}}function eR(e,t){return t=t||0,`${e}__${t}`}function eI(e,t){return`${e}||${t}`}async function eM(e,t,r){let i=eO(e,r);return t.getAllAssignments(i)}function eO(e,t){let r,i,s,n={};
1return(r=new Set,i=t&&t.features?t.features:e.global.features||{},s=t&&t.experiments?t.experiments:e.global.experiments||[],Object.keys(i).forEach(e=>{let t=i[e];if(t.rules)for(let e of t.rules)e.variations&&(r.add(e.hashAttribute||"id"),e.fallbackAttribute&&r.add(e.fallbackAttribute))}),s.map(e=>{r.add(e.hashAttribute||"id"),e.fallbackAttribute&&r.add(e.fallbackAttribute)}),Array.from(r)).forEach(t=>{let{hashValue:r}=eN(e,t);n[t]=H(r)}),n}async function eU(e,t,r){if((e={...e}).encryptedFeatures){try{e.features=JSON.parse(await j(e.encryptedFeatures,t,r))}catch(e){console.error(e)}delete e.encryptedFeatures}if(e.encryptedExperiments){try{e.experiments=JSON.parse(await j(e.encryptedExperiments,t,r))}catch(e){console.error(e)}delete e.encryptedExperiments}if(e.encryptedSavedGroups){try{e.savedGroups=JSON.parse(await j(e.encryptedSavedGroups,t,r))}catch(e){console.error(e)}delete e.encryptedSavedGroups}return e}function eP(e,t){return t.hashAttribute+t.hashValue+e.key+t.variationId}let eK="u">typeof window&&"u">typeof document,ej=function(){let e;try{e="1.6.2"}catch(t){e=""}return e}();class eH{constructor(e){if(e=e||{},this.version=ej,this._options=this.context=e,this._renderer=e.renderer||null,this._trackedExperiments=new Set,this._completedChangeIds=new Set,this._trackedFeatures={},this.debug=!!e.debug,this._subscriptions=new Set,this.ready=!1,this._assigned=new Map,this._activeAutoExperiments=new Map,this._triggeredExpKeys=new Set,this._initialized=!1,this._redirectedUrl="",this._deferredTrackingCalls=new Map,this._autoExperimentsAllowed=!e.disableExperimentsOnLoad,this._destroyCallbacks=[],this.logs=[],this.log=this.log.bind(this),this._saveDeferredTrack=this._saveDeferredTrack.bind(this),this._onExperimentEval=this._onExperimentEval.bind(this),this._fireSubscriptions=this._fireSubscriptions.bind(this),this._recordChangedId=this._recordChangedId.bind(this),e.remoteEval){if(e.decryptionKey)throw Error("Encryption is not available for remoteEval");if(!e.clientKey)throw Error("Missing clientKey");let t=!1;try{t=!!new URL(e.apiHost||"").hostname.match(/growthbook\.io$/i)}catch(e){}if(t)throw Error("Cannot use remoteEval on GrowthBook Cloud")}else if(e.cacheKeyAttributes)throw Error("cacheKeyAttributes are only used for remoteEval");if(e.stickyBucketService){const t=e.stickyBucketService;this._saveStickyBucketAssignmentDoc=e=>t.saveAssignments(e)}if(e.plugins)for(const t of e.plugins)t(this);if(e.features&&(this.ready=!0),eK&&e.enableDevMode&&(window._growthbook=this,document.dispatchEvent(new Event("gbloaded"))),e.experiments&&(this.ready=!0,this._updateAllAutoExperiments()),this._options.stickyBucketService&&this._options.stickyBucketAssignmentDocs)for(const e in this._options.stickyBucketAssignmentDocs){const t=this._options.stickyBucketAssignmentDocs[e];t&&this._options.stickyBucketService.saveAssignments(t).catch(()=>{})}this.ready&&this.refreshStickyBuckets(this.getPayload())}async setPayload(e){this._payload=e;let t=await eU(e,this._options.decryptionKey);this._decryptedPayload=t,await this.refreshStickyBuckets(t),t.features&&(this._options.features=t.features),t.savedGroups&&(this._options.savedGroups=t.savedGroups),t.experiments&&(this._options.experiments=t.experiments,this._updateAllAutoExperiments()),this.ready=!0,this._render()}initSync(e){this._initialized=!0;let t=e.payload;if(t.encryptedExperiments||t.encryptedFeatures)throw Error("initSync does not support encrypted payloads");return this._options.stickyBucketService&&!this._options.stickyBucketAssignmentDocs&&(this._options.stickyBucketAssignmentDocs=this.generateStickyBucketAssignmentDocsSync(this._options.stickyBucketService,t)),this._payload=t,this._decryptedPayload=t,t.features&&(this._options.features=t.features),t.experiments&&(this._options.experiments=t.experiments,this._updateAllAutoExperiments()),this.ready=!0,ek(this,e),this}async init(e){if(this._initialized=!0,(e=e||{}).cacheSettings&&(Object.assign(Z,e.cacheSettings),Z.backgroundSync||eb()),e.payload)return await this.setPayload(e.payload),ek(this,e),{success:!0,source:"init"};{let{data:t,...r}=await this._refresh({...e,allowStale:!0});return ek(this,e),await this.setPayload(t||{}),r}}async loadFeatures(e){e=e||{},await this.init({skipCache:e.skipCache,timeout:e.timeout,streaming:(this._options.backgroundSync??!0)&&(e.autoRefresh||this._options.subscribeToChanges)})}async refreshFeatures(e){let t=await this._refresh({...e||{},allowStale:!1});t.data&&await this.setPayload(t.data)}
1getApiInfo(){return[this.getApiHosts().apiHost,this.getClientKey()]}getApiHosts(){var e;let t;return{apiHost:(t=(e=this._options).apiHost||"https://cdn.growthbook.io").replace(/\/*$/,""),streamingHost:(e.streamingHost||t).replace(/\/*$/,""),apiRequestHeaders:e.apiHostRequestHeaders,streamingHostRequestHeaders:e.streamingHostRequestHeaders}}getClientKey(){return this._options.clientKey||""}getPayload(){return this._payload||{features:this.getFeatures(),experiments:this.getExperiments()}}getDecryptedPayload(){return this._decryptedPayload||this.getPayload()}isRemoteEval(){return this._options.remoteEval||!1}getCacheKeyAttributes(){return this._options.cacheKeyAttributes}async _refresh(e){let{timeout:t,skipCache:r,allowStale:i,streaming:s}=e;if(!this._options.clientKey)throw Error("Missing clientKey");return ei({instance:this,timeout:t,skipCache:r||this._options.disableCache,allowStale:i,backgroundSync:s??this._options.backgroundSync??!0})}_render(){if(this._renderer)try{this._renderer()}catch(e){console.error("Failed to render",e)}}setFeatures(e){this._options.features=e,this.ready=!0,this._render()}async setEncryptedFeatures(e,t,r){let i=await j(e,t||this._options.decryptionKey,r);this.setFeatures(JSON.parse(i))}setExperiments(e){this._options.experiments=e,this.ready=!0,this._updateAllAutoExperiments()}async setEncryptedExperiments(e,t,r){let i=await j(e,t||this._options.decryptionKey,r);this.setExperiments(JSON.parse(i))}async setAttributes(e){(this._options.attributes=e,this._options.stickyBucketService&&await this.refreshStickyBuckets(),this._options.remoteEval)?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}async updateAttributes(e){return this.setAttributes({...this._options.attributes,...e})}async setAttributeOverrides(e){(this._options.attributeOverrides=e,this._options.stickyBucketService&&await this.refreshStickyBuckets(),this._options.remoteEval)?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}async setForcedVariations(e){(this._options.forcedVariations=e||{},this._options.remoteEval)?await this._refreshForRemoteEval():(this._render(),this._updateAllAutoExperiments())}setForcedFeatures(e){this._options.forcedFeatureValues=e,this._render()}async setURL(e){if(e!==this._options.url){if(this._options.url=e,this._redirectedUrl="",this._options.remoteEval){await this._refreshForRemoteEval(),this._updateAllAutoExperiments(!0);return}this._updateAllAutoExperiments(!0)}}getAttributes(){return{...this._options.attributes,...this._options.attributeOverrides}}getForcedVariations(){return this._options.forcedVariations||{}}getForcedFeatures(){return this._options.forcedFeatureValues||new Map}getStickyBucketAssignmentDocs(){return this._options.stickyBucketAssignmentDocs||{}}getUrl(){return this._options.url||""}getFeatures(){return this._options.features||{}}getExperiments(){return this._options.experiments||[]}getCompletedChangeIds(){return Array.from(this._completedChangeIds)}subscribe(e){return this._subscriptions.add(e),()=>{this._subscriptions.delete(e)}}async _refreshForRemoteEval(){if(!this._options.remoteEval||!this._initialized)return;let e=await this._refresh({allowStale:!1});e.data&&await this.setPayload(e.data)}getAllResults(){return new Map(this._assigned)}onDestroy(e){this._destroyCallbacks.push(e)}isDestroyed(){return!!this._destroyed}destroy(e){var t;e=e||{},this._destroyed=!0,this._destroyCallbacks.forEach(e=>{try{e()}catch(e){console.error(e)}}),this._subscriptions.clear(),this._assigned.clear(),this._trackedExperiments.clear(),this._completedChangeIds.clear(),this._deferredTrackingCalls.clear(),this._trackedFeatures={},this._destroyCallbacks=[],this._payload=void 0,this._saveStickyBucketAssignmentDoc=void 0,t=this,W.forEach(e=>e.delete(t)),e.destroyAllStreams&&eb(),this.logs=[],eK&&window._growthbook===this&&delete window._growthbook,this._activeAutoExperiments.forEach(e=>{e.undo()}),this._activeAutoExperiments.clear(),this._triggeredExpKeys.clear()}setRenderer(e){this._renderer=e}forceVariation(e,t){(this._options.forcedVariations=this._options.forcedVariations||{},this._options.forcedVariations[e]=t,this._options.remoteEval)?this._refreshForRemoteEval():(this._updateAllAutoExperiments(),this._render())}run(e){let{result:t}=eD(e,null,this._getEvalContext());return this._onExperimentEval(e,t),t}triggerExperiment(e){return(this._triggeredExpKeys.add(e),this._options.experiments)?this._options.experiments.filter(t=>t.key===e).map(e=>this._runAutoExperiment(e)).filter(e=>null!==e):null}triggerAutoExperiments(){this._autoExperimentsAllowed=!0,this._updateAllAutoExperiments(!0)}_getEvalContext(){return{user:this._getUserContext(),global:this._getGlobalContext(),stack:{evaluatedFeatures:new Set}}}_getUserContext(){return{attributes:this._options.user?{...this._options.user,...this._options.attributes}:this._options.attributes,enableDevMode:this._options.enableDevMode,blockedCh
1angeIds:this._options.blockedChangeIds,stickyBucketAssignmentDocs:this._options.stickyBucketAssignmentDocs,url:this._getContextUrl(),forcedVariations:this._options.forcedVariations,forcedFeatureValues:this._options.forcedFeatureValues,attributeOverrides:this._options.attributeOverrides,saveStickyBucketAssignmentDoc:this._saveStickyBucketAssignmentDoc,trackingCallback:this._options.trackingCallback,onFeatureUsage:this._options.onFeatureUsage,devLogs:this.logs,trackedExperiments:this._trackedExperiments,trackedFeatureUsage:this._trackedFeatures}}_getGlobalContext(){return{features:this._options.features,experiments:this._options.experiments,log:this.log,enabled:this._options.enabled,qaMode:this._options.qaMode,savedGroups:this._options.savedGroups,groups:this._options.groups,overrides:this._options.overrides,onExperimentEval:this._onExperimentEval,recordChangeId:this._recordChangedId,saveDeferredTrack:this._saveDeferredTrack,eventLogger:this._options.eventLogger}}_runAutoExperiment(e,t){let r,i,s=this._activeAutoExperiments.get(e);if(e.manual&&!this._triggeredExpKeys.has(e.key)&&!s)return null;this._isAutoExperimentBlockedByContext(e)?r=eL(this._getEvalContext(),e,-1,!1,""):({result:r,trackingCall:i}=eD(e,null,this._getEvalContext()),this._onExperimentEval(e,r));let n=JSON.stringify(r.value);if(!t&&r.inExperiment&&s&&s.valueHash===n)return r;if(s&&this._undoActiveAutoExperiment(e),r.inExperiment){let t=G(e);if("redirect"===t&&r.value.urlRedirect&&e.urlPatterns){let t=e.persistQueryString?function(e,t){let r,i;try{r=new URL(e),i=new URL(t)}catch(e){return console.error(`Unable to merge query strings: ${e}`),t}return r.searchParams.forEach((e,t)=>{i.searchParams.has(t)||i.searchParams.set(t,e)}),i.toString()}(this._getContextUrl(),r.value.urlRedirect):r.value.urlRedirect;if(P(t,e.urlPatterns))return this.log("Skipping redirect because original URL matches redirect URL",{id:e.key}),r;this._redirectedUrl=t;let{navigate:s,delay:n}=this._getNavigateFunction();if(s)if(eK)Promise.all([...i?[z(i,this._options.maxNavigateDelay??1e3)]:[],new Promise(e=>window.setTimeout(e,this._options.navigateDelay??n))]).then(()=>{try{s(t)}catch(e){console.error(e)}});else try{s(t)}catch(e){console.error(e)}}else if("visual"===t){let t=this._options.applyDomChangesCallback?this._options.applyDomChangesCallback(r.value):this._applyDOMChanges(r.value);t&&this._activeAutoExperiments.set(e,{undo:t,valueHash:n})}}return r}_undoActiveAutoExperiment(e){let t=this._activeAutoExperiments.get(e);t&&(t.undo(),this._activeAutoExperiments.delete(e))}_updateAllAutoExperiments(e){if(!this._autoExperimentsAllowed)return;let t=this._options.experiments||[],r=new Set(t);for(let i of(this._activeAutoExperiments.forEach((e,t)=>{r.has(t)||(e.undo(),this._activeAutoExperiments.delete(t))}),t)){let t=this._runAutoExperiment(i,e);if(t&&t.inExperiment&&"redirect"===G(i))break}}_onExperimentEval(e,t){let r=this._assigned.get(e.key);this._assigned.set(e.key,{experiment:e,result:t}),this._subscriptions.size>0&&this._fireSubscriptions(e,t,r)}_fireSubscriptions(e,t,r){r&&r.result.inExperiment===t.inExperiment&&r.result.variationId===t.variationId||this._subscriptions.forEach(r=>{try{r(e,t)}catch(e){console.error(e)}})}_recordChangedId(e){this._completedChangeIds.add(e)}isOn(e){return this.evalFeature(e).on}isOff(e){return this.evalFeature(e).off}getFeatureValue(e,t){let r=this.evalFeature(e).value;return null===r?t:r}feature(e){return this.evalFeature(e)}evalFeature(e){return eB(e,this._getEvalContext())}log(e,t){this.debug&&(this._options.log?this._options.log(e,t):console.log(e,t))}getDeferredTrackingCalls(){return Array.from(this._deferredTrackingCalls.values())}setDeferredTrackingCalls(e){this._deferredTrackingCalls=new Map(e.filter(e=>e&&e.experiment&&e.result).map(e=>[eP(e.experiment,e.result),e]))}async fireDeferredTrackingCalls(){if(!this._options.trackingCallback)return;let e=[];this._deferredTrackingCalls.forEach(t=>{t&&t.experiment&&t.result?e.push(this._options.trackingCallback(t.experiment,t.result)):console.error("Invalid deferred tracking call",{call:t})}),this._deferredTrackingCalls.clear(),await Promise.all(e)}setTrackingCallback(e){this._options.trackingCallback=e,this.fireDeferredTrackingCalls()}setEventLogger(e){this._options.eventLogger=e}async logEvent(e,t){if(this._destroyed)return void console.error("Cannot log event to destroyed GrowthBook instance");if(this._options.enableDevMode&&this.logs.push({eventName:e,properties:t,timestamp:Date.now().toString(),logType:"event"}),this._options.eventLogger)try{await this._options.eventLogger(e,t||{},this._getUserContext())}catch(e){console.error(e)}else console.error("No event logger configured")}_saveDeferredTrack(e){this._deferredTrackingCalls.set(eP(e.experiment,e.result),e)}_getContextUrl(){return this._options.url||(eK?window.location.href:"")}_isAutoExperimentBlockedByContext(e){let t=G(e);
1if("visual"===t){if(this._options.disableVisualExperiments||this._options.disableJsInjection&&e.variations.some(e=>e.js))return!0}else{if("redirect"!==t||this._options.disableUrlRedirectExperiments)return!0;try{let t=new URL(this._getContextUrl());for(let r of e.variations){if(!r||!r.urlRedirect)continue;let e=new URL(r.urlRedirect);if(this._options.disableCrossOriginUrlRedirectExperiments&&(e.protocol!==t.protocol||e.host!==t.host))return!0}}catch(t){return this.log("Error parsing current or redirect URL",{id:e.key,error:t}),!0}}return!!(e.changeId&&(this._options.blockedChangeIds||[]).includes(e.changeId))}getRedirectUrl(){return this._redirectedUrl}_getNavigateFunction(){return this._options.navigate?{navigate:this._options.navigate,delay:0}:eK?{navigate:e=>{window.location.replace(e)},delay:100}:{navigate:null,delay:0}}_applyDOMChanges(e){if(!eK)return;let t=[];if(e.css){let r=document.createElement("style");r.innerHTML=e.css,document.head.appendChild(r),t.push(()=>r.remove())}if(e.js){let r=document.createElement("script");r.innerHTML=e.js,this._options.jsInjectionNonce&&(r.nonce=this._options.jsInjectionNonce),document.head.appendChild(r),t.push(()=>r.remove())}return e.domMutations&&e.domMutations.forEach(e=>{t.push(N(e).revert)}),()=>{t.forEach(e=>e())}}async refreshStickyBuckets(e){if(this._options.stickyBucketService){let t=this._getEvalContext(),r=await eM(t,this._options.stickyBucketService,e);this._options.stickyBucketAssignmentDocs=r}}generateStickyBucketAssignmentDocsSync(e,t){if(!("getAllAssignmentsSync"in e))return void console.error("generating StickyBucketAssignmentDocs docs requires StickyBucketServiceSync");let r=eO(this._getEvalContext(),t);return e.getAllAssignmentsSync(r)}inDevMode(){return!!this._options.enableDevMode}}var eq=r(16560);let eJ=eq.createContext({});function eG(e,t){return(function(){let{growthbook:e}=eq.useContext(eJ);if(!e)throw Error("Missing or invalid GrowthBookProvider");return e})().getFeatureValue(e,t)}let ez=({children:e,growthbook:t})=>{let[r,i]=eq.useState(0);return eq.useEffect(()=>{if(t&&t.setRenderer)return t.setRenderer(()=>{i(e=>e+1)}),()=>{t.setRenderer(()=>{})}},[t]),eq.createElement(eJ.Provider,{value:{growthbook:t}},e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.