From 01dc75f073db8ba0d295e002f3e3a022ed535fa3 Mon Sep 17 00:00:00 2001 From: Stuart Date: Wed, 12 Aug 2026 21:47:44 +1000 Subject: [PATCH 1/5] build: rebuild dist to match deployed customcode.connectio.com.au Co-Authored-By: Claude --- dist/assets/index-BZ-fNYow.js | 306 +++++++++++++++++++++++++++++++++ dist/assets/index-CqRheZeQ.js | 307 ---------------------------------- dist/favicon-brand-v2.svg | 16 ++ dist/index.html | 2 +- dist/social-card.png | Bin 0 -> 221510 bytes 5 files changed, 323 insertions(+), 308 deletions(-) create mode 100644 dist/assets/index-BZ-fNYow.js delete mode 100644 dist/assets/index-CqRheZeQ.js create mode 100644 dist/favicon-brand-v2.svg create mode 100644 dist/social-card.png diff --git a/dist/assets/index-BZ-fNYow.js b/dist/assets/index-BZ-fNYow.js new file mode 100644 index 0000000..25dabdd --- /dev/null +++ b/dist/assets/index-BZ-fNYow.js @@ -0,0 +1,306 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const n of i)if(n.type==="childList")for(const o of n.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function s(i){const n={};return i.integrity&&(n.integrity=i.integrity),i.referrerPolicy&&(n.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?n.credentials="include":i.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function r(i){if(i.ep)return;i.ep=!0;const n=s(i);fetch(i.href,n)}})();var g=typeof window<"u"?window:void 0,we=typeof globalThis<"u"?globalThis:g,xe=we==null?void 0:we.navigator,F=we==null?void 0:we.document,re=we==null?void 0:we.location,wo=we==null?void 0:we.fetch,yn=we!=null&&we.XMLHttpRequest&&"withCredentials"in new we.XMLHttpRequest?we.XMLHttpRequest:void 0,ga=we==null?void 0:we.AbortController,Pd=we==null?void 0:we.CompressionStream,Pe=xe==null?void 0:xe.userAgent;function Xl(){return!(!g||g.navigator.onLine===!1)}var Ss=typeof globalThis<"u"?globalThis:g;Ss&&typeof self>"u"&&(Ss.self=Ss),Ss&&typeof File>"u"&&(Ss.File=function(){});var T=g??{},Y={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function va(t,e,s,r,i,n,o){try{var a=t[n](o),l=a.value}catch(u){return void s(u)}a.done?e(l):Promise.resolve(l).then(r,i)}function X(t){return function(){var e=this,s=arguments;return new Promise(function(r,i){var n=t.apply(e,s);function o(l){va(n,r,i,o,a,"next",l)}function a(l){va(n,r,i,o,a,"throw",l)}o(void 0)})}}function b(){return b=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var s=arguments[e];for(var r in s)({}).hasOwnProperty.call(s,r)&&(t[r]=s[r])}return t},b.apply(null,arguments)}function Ql(t,e){if(t==null)return{};var s={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)!==-1)continue;s[r]=t[r]}return s}var ma=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function _a(t){return typeof t=="string"||t}function ya(t){return typeof t=="string"?t:void 0}var xs,Ad=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],ut=function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t}({}),wa=function(t){return t.GZipJS="gzip-js",t.Base64="base64",t}({}),Rd=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Td=["token"],ec="NativeGzipValidationError",wn=t=>t.length>=2&&t[0]===31&&t[1]===139,ba=(t,e)=>t===wa.GZipJS||e===wa.GZipJS||e==="gzip",Ea=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",ur=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=ec,e},$d=function(){var t=X(function*(e,s){18>e.size&&ur("too-short");var r=new Uint8Array(yield e.slice(0,10).arrayBuffer());wn(r)&&r[2]===8||ur("invalid-header");var i=new DataView(yield e.slice(e.size-8).arrayBuffer());i.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(xs)return xs;xs=[];for(var c=0;256>c;c++){for(var d=c,h=0;8>h;h++)d=1&d?3988292384^d>>>1:d>>>1;xs[c]=d>>>0}return xs})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(s)&&ur("invalid-crc");var n=s.length>>>0;i.getUint32(4,!0)!==n&&ur("invalid-size")});return function(e,s){return t.apply(this,arguments)}}();function bn(){return bn=X(function*(t,e,s){e===void 0&&(e=!0);try{var r=new TextEncoder().encode(t),i=new globalThis.CompressionStream("gzip"),n=i.writable.getWriter(),o=n.write(r).then(()=>n.close()).catch(function(){var u=X(function*(c){try{yield n.abort(c)}catch{}throw c});return function(c){return u.apply(this,arguments)}}()),a=new Response(i.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield $d(l,r),l}catch(u){if(s!=null&&s.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}}),bn.apply(this,arguments)}var Md=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],Sa=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var s=t.toLowerCase();return Md.concat(e).some(r=>{var i=r.toLowerCase();return s.indexOf(i)!==-1})};function L(t,e){return t.indexOf(e)!==-1}var wi=function(t){return t.trim()},En=function(t){return t.replace(/^\$/,"")};function tc(t){var e,s=[];return(e=JSON.stringify(t,function(r,i){if(typeof i=="bigint")return i.toString();if(typeof i!="function"&&typeof i!="symbol"){if(i instanceof Error)return{name:i.name,message:i.message,stack:i.stack};if(i&&typeof i=="object"){for(;s.length>0&&s[s.length-1]!==this;)s.pop();if(s.includes(i))return"[Circular]";s.push(i)}return i}}))!==null&&e!==void 0?e:"null"}var sc=Object.prototype,rc=sc.hasOwnProperty,bi=sc.toString,O=Array.isArray||function(t){return bi.call(t)==="[object Array]"},Ee=t=>typeof t=="function",te=t=>t===Object(t)&&!O(t),vt=t=>{if(te(t)){for(var e in t)if(rc.call(t,e))return!1;return!0}return!1},I=t=>t===void 0,z=t=>bi.call(t)=="[object String]",Sn=t=>z(t)&&t.trim().length===0,Re=t=>t===null,B=t=>I(t)||Re(t),de=t=>bi.call(t)=="[object Number]"&&t==t,lt=t=>de(t)&&t>0,Ke=t=>bi.call(t)==="[object Boolean]",Nd=t=>t instanceof FormData,Ld=t=>L(Rd,t),Od=t=>L(Td,t);function ic(t){return t===null||typeof t!="object"}function Or(t,e){return{}.toString.call(t)==="[object "+e+"]"}function bo(t){return typeof Event<"u"&&nc(t,Event)}function nc(t,e){try{return t instanceof e}catch{return!1}}var Dd=[!0,"true",1,"1","yes"],Ui=t=>L(Dd,t),Bd=[!1,"false",0,"0","no"];function rt(t,e,s,r,i){return e>s&&(r.warn("min cannot be greater than max."),e=s),de(t)?t>s?(r.warn(" cannot be greater than max: "+s+". Using max value instead."),s):e>t?(r.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(r.warn(" must be a number. using max or fallback. max: "+s+", fallback: "+i),rt(i||s,e,s,r))}class jd{constructor(e){this.tt={},this.et=e.et,this.it=rt(e.bucketSize,0,100,e.rt),this.nt=rt(e.refillRate,0,this.it,e.rt),this.st=rt(e.refillInterval,0,864e5,e.rt)}ot(e,s){var r=Math.floor((s-e.lastAccess)/this.st);r>0&&(e.tokens=Math.min(e.tokens+r*this.nt,this.it),e.lastAccess=e.lastAccess+r*this.st)}consumeRateLimit(e){var s,r=Date.now(),i=String(e),n=this.tt[i];return n?this.ot(n,r):this.tt[i]=n={tokens:this.it,lastAccess:r},n.tokens===0||(n.tokens--,n.tokens===0&&((s=this.et)==null||s.call(this,e)),n.tokens===0)}stop(){this.tt={}}}var Le="Mobile",Dr="iOS",mt="Android",us="Tablet",oc=mt+" "+us,ac="iPad",lc="Apple",cc=lc+" Watch",js="Safari",ds="BlackBerry",uc="Samsung",dc=uc+"Browser",hc=uc+" Internet",Ht="Chrome",Ud=Ht+" OS",pc=Ht+" "+Dr,Eo="Internet Explorer",fc=Eo+" "+Le,So="Opera",Hd=So+" Mini",xo="Edge",gc="Microsoft "+xo,os="Firefox",vc=os+" "+Dr,Gs="Nintendo",Ks="PlayStation",as="Xbox",mc=mt+" "+Le,_c=Le+" "+js,$s="Windows",xn=$s+" Phone",xa="Nokia",kn="Ouya",yc="Generic",zd=yc+" "+Le.toLowerCase(),wc=yc+" "+us.toLowerCase(),In="Konqueror",bc="Oculus Browser",Br="Vivaldi",Ec="Yandex",jr="Whale",Cn="DuckDuckGo",Sc="Pale Moon",Ur="Waterfox",Us="Brave",xc="Google Search App",le="(\\d+(\\.\\d+)?)",Hi=new RegExp("Version/"+le),Wd=new RegExp(as,"i"),qd=new RegExp(Ks+" \\w+","i"),Vd=new RegExp(Gs+" \\w+","i"),ko=new RegExp(ds+"|PlayBook|BB10","i"),Gd={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},kc=function(t,e,s,r){e=e||"";var i=function(n){return n!=null&&n.brave?Us:null}(s);return i||(r!=null&&r.detectGoogleSearchApp&&L(t,"GSA/")?xc:L(t," OPR/")&&L(t,"Mini")?Hd:L(t," OPR/")?So:ko.test(t)?ds:L(t,"IE"+Le)||L(t,"WPDesktop")?fc:L(t,"OculusBrowser")?bc:L(t,dc)?hc:L(t,xo)||L(t,"Edg/")?gc:L(t,Br+"/")?Br:L(t,"YaBrowser/")?Ec:L(t,jr+"/")?jr:L(t,Cn+"/")||L(t,"Ddg/")?Cn:L(t,"FBIOS")?"Facebook "+Le:L(t,"UCWEB")||L(t,"UCBrowser")?"UC Browser":L(t,"CriOS")?pc:L(t,"CrMo")||L(t,Ht)?Ht:L(t,mt)&&L(t,js)?mc:L(t,"FxiOS")?vc:L(t.toLowerCase(),In.toLowerCase())?In:L(t,Us+"/")?Us:((n,o)=>o&&L(o,lc)||function(a){return L(a,js)&&!L(a,Ht)&&!L(a,mt)}(n))(t,e)?L(t,Le)?_c:js:L(t,"PaleMoon/")?Sc:L(t,Ur+"/")?Ur:L(t,os)?os:L(t,"MSIE")||L(t,"Trident/")?Eo:L(t,"Gecko")?os:"")},Kd={[fc]:[new RegExp("rv:"+le)],[gc]:[new RegExp(xo+"?\\/"+le)],[Ht]:[new RegExp("("+Ht+"|CrMo)\\/"+le)],[pc]:[new RegExp("CriOS\\/"+le)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+le)],[js]:[Hi],[_c]:[Hi],[So]:[new RegExp("(Opera|OPR)\\/"+le)],[os]:[new RegExp(os+"\\/"+le)],[vc]:[new RegExp("FxiOS\\/"+le)],[In]:[new RegExp("Konqueror[:/]?"+le,"i")],[ds]:[new RegExp(ds+" "+le),Hi],[mc]:[new RegExp("android\\s"+le,"i")],[hc]:[new RegExp(dc+"\\/"+le)],[bc]:[new RegExp("OculusBrowser\\/"+le)],[Br]:[new RegExp(Br+"\\/"+le)],[Ec]:[new RegExp("YaBrowser\\/"+le)],[jr]:[new RegExp(jr+"\\/"+le)],[Us]:[new RegExp(Us+"\\/"+le)],[Cn]:[new RegExp("(DuckDuckGo|Ddg)\\/"+le)],[Sc]:[new RegExp("PaleMoon\\/"+le)],[Ur]:[new RegExp(Ur+"\\/"+le)],[xc]:[new RegExp("GSA\\/"+le)],[Eo]:[new RegExp("(rv:|MSIE )"+le)],Mozilla:[new RegExp("rv:"+le)]},Jd=function(t,e,s,r){var i=kc(t,e,s,r),n=Kd[i];if(I(n))return null;for(var o=0;n.length>o;o++){var a=t.match(n[o]);if(a)return parseFloat(a[a.length-2])}return null},ka=[[new RegExp(as+"; "+as+" (.*?)[);]","i"),t=>[as,t&&t[1]||""]],[new RegExp(Gs,"i"),[Gs,""]],[new RegExp(Ks,"i"),[Ks,""]],[ko,[ds,""]],[new RegExp($s,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[xn,""];if(new RegExp(Le).test(e)&&!/IEMobile\b/.test(e))return[$s+" "+Le,""];var s=/Windows NT ([0-9.]+)/i.exec(e);if(s&&s[1]){var r=Gd[s[1]]||"";return/arm/i.test(e)&&(r="RT"),[$s,r]}return[$s,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[Dr,[t[3],t[4],t[5]||"0"].join(".")]:[Dr,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=I(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+mt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+mt+")","i"),t=>t&&t[2]?[mt,[t[2],t[3],t[4]||"0"].join(".")]:[mt,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Ud,""]],[/Linux|debian/i,["Linux",""]]],Ia=function(t){return Vd.test(t)?Gs:qd.test(t)?Ks:Wd.test(t)?as:new RegExp(kn,"i").test(t)?kn:new RegExp("("+xn+"|WPDesktop)","i").test(t)?xn:/iPad/.test(t)?ac:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?cc:ko.test(t)?ds:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(xa,"i").test(t)?xa:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(Le).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?mt:oc:new RegExp("(pda|"+Le+")","i").test(t)?zd:new RegExp(us,"i").test(t)&&!new RegExp(us+" pc","i").test(t)?wc:""},Yd=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Ca(t,e){return typeof(s=t)=="string"&&Yd.test(s)?t:e();var s}function It(t){return t&&t.split("#")[0]}function Io(t,e){var s=setTimeout(t,e);return s!=null&&s.unref&&(s==null||s.unref()),s}function Fa(t,e,s){return Ic.apply(this,arguments)}function Ic(){return(Ic=X(function*(t,e,s){var r;try{return yield Promise.race([t,new Promise((i,n)=>{r=Io(()=>{try{s==null||s(),i()}catch(o){n(o)}},e)})])}finally{clearTimeout(r)}})).apply(this,arguments)}var Zd=t=>t instanceof Error,Cc={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Xd=Cc.info;function Fc(t){if(Ke(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(O(t))return{arrayValue:{values:t.map(e=>Fc(e))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function Hr(t){var e=[];for(var s in t){var r=t[s];Re(r)||I(r)||e.push({key:s,value:Fc(r)})}return e}function Qd(t,e){var s=Cc[t.level||"info"]||Xd,r=s.text,i=s.number,n=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),B(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),B(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=b({},o,t.attributes||{}),l={timeUnixNano:n,observedTimeUnixNano:n,severityNumber:i,severityText:r,body:{stringValue:t.body},attributes:Hr(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),I(t.trace_flags)||(l.flags=t.trace_flags),l}function Pc(t,e,s){return b({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":s})}function Ac(t,e,s,r){return{resourceLogs:[{resource:{attributes:Hr(e)},scopeLogs:[{scope:{name:s,version:r},logRecords:t}]}]}}let eh=class{constructor(t,e,s,r,i,n,o){var a;n===void 0&&(n=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=s,this.ut=r,this.ht=i,this.dt=n,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var s={record:Qd(e,this.ut())};this.ht(()=>this.At(s))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var s=O(e)?e:[e],r=t;for(var i of s)try{var n=i(r);if(!n)return this.rt.info("Log was rejected in beforeSend function"),null;r=n}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return r}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return X(function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally(()=>{t.ct=null})),t.ct})()}Ft(){var t=this;return X(function*(){var e;t.Et();var s=(e=t._instance.getPersistedProperty(ut.LogsQueue))!==null&&e!==void 0?e:[];if(s.length!==0)for(var r=s.length,i=0;s.length>0&&r>i;){var n,o;t.ft=0;var a=Math.min(s.length,t.Ct),l=s.slice(0,a),u=Ac(l.map(d=>d.record),t.Lt(),(n=t.vt)!==null&&n!==void 0?n:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),s=(o=t._instance.getPersistedProperty(ut.LogsQueue))!==null&&o!==void 0?o:[],i+=l.length,c.kind==="fatal"))throw c.error}})()}Dt(t){var e=this;return X(function*(){var s,r=Math.max(0,t-e.ft),i=(s=e._instance.getPersistedProperty(ut.LogsQueue))!==null&&s!==void 0?s:[];e._instance.setPersistedProperty(ut.LogsQueue,i.slice(r)),yield e.dt()})()}Lt(){return Pc(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var s=(e=this._instance.getPersistedProperty(ut.LogsQueue))!==null&&e!==void 0?e:[];this.xt>s.length||(s.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),s.push(t),this._instance.setPersistedProperty(ut.LogsQueue,s),this.kt>s.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=Io(()=>{this.Nt=void 0,this.It()},t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(ut.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return X(function*(){e.Et();var s=e.flush().catch(()=>{});t!==void 0?yield Fa(s,t):yield s})()}flushWithTimeout(t){var e=this;return X(function*(){var s=e.flush();yield Fa(s,t,()=>{s.catch(()=>{})})})()}It(){this.flush().then(()=>{this.yt=0},t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)}).finally(()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())})}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var zi=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function Pa(t){return String(t)+"000000"}function Aa(t,e,s,r){var i="";return r&&(i=Object.keys(r).sort().map(n=>JSON.stringify(n)+":"+JSON.stringify(r[n])).join(",")),t+"\0"+e+"\0"+(s??"")+"\0"+i}let th=class{constructor(t,e,s){this._instance=t,this.Ne=e,this.rt=s,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,s){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:s==null?void 0:s.unit,attributes:s==null?void 0:s.attributes})}gauge(t,e,s){this.Vt({name:t,type:"gauge",value:e,unit:s==null?void 0:s.unit,attributes:s==null?void 0:s.attributes})}histogram(t,e,s){this.Vt({name:t,type:"histogram",value:e,unit:s==null?void 0:s.unit,attributes:s==null?void 0:s.attributes})}flush(){var t=this,e=this.ct,s=function(){var i=X(function*(){e&&(yield e.catch(()=>{})),yield t.Zt()});return function(){return i.apply(this,arguments)}}(),r=s().finally(()=>{this.ct===r&&(this.ct=null)});return this.ct=r,r}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var s,r;try{s=e.attributes?b({},e.attributes):void 0,r=Aa(e.type,e.name,e.unit,s)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var i=this.Bt.get(r);if(!i){if(!this.Qt())return;i={name:e.name,type:e.type,unit:e.unit,attributes:s,windowStartMs:Date.now()},this.Bt.set(r,i)}var n=this.Ut.get(e.name);n===void 0?this.Ut.set(e.name,e.type):n===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+n+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(i,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var s;switch(t.type){case"count":t.total=((s=t.total)!==null&&s!==void 0?s:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(zi.length+1).fill(0)});var r=t.hist;r.count+=1,r.sum+=e,r.min=Math.min(r.min,e),r.max=Math.max(r.max,e),r.bucketCounts[function(i,n){for(var o=0;n.length>o;o++)if(n[o]>=i)return o;return n.length}(e,zi)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var s=O(e)?e:[e],r=t;for(var i of s)try{var n=i(r);if(!n)return this.rt.info("Metric was rejected in beforeSend function"),null;r=n}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return r}$t(){this.Nt||(this.Nt=Io(()=>{this.Nt=void 0,this.flush().catch(t=>{this.rt.error("Metrics flush failed:",t)})},this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return X(function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var s=t.Wt,r=yield t._instance.Jt(t.Gt(e));if(s===t.Wt)switch(r.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",r.error)}}})()}Gt(t){return e=this.Xt(t),s=function(n,o,a){return b({},n.resourceAttributes,{"service.name":n.serviceName||"unknown_service"},n.environment&&{"deployment.environment":n.environment},n.serviceVersion&&{"service.version":n.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})}(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),r=this._instance.getLibraryId(),i=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:Hr(s)},scopeMetrics:[{scope:{name:r,version:i},metrics:e}]}]};var e,s,r,i}Xt(t){var e=Pa(Date.now()),s=new Map;for(var r of t.values()){var i,n=Aa(r.type,r.name,r.unit,void 0),o=s.get(n);o||(o=b({name:r.name},r.unit&&{unit:r.unit}),r.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:r.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},s.set(n,o));var a=Hr((i=r.attributes)!==null&&i!==void 0?i:{}),l=Pa(r.windowStartMs);if(r.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=r.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(r.type==="gauge"){var d,h={attributes:a,timeUnixNano:e,asDouble:(d=r.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(h)}else r.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:r.hist.count,sum:r.hist.sum,min:r.hist.min,max:r.hist.max,bucketCounts:r.hist.bucketCounts,explicitBounds:zi})}return Array.from(s.values())}Yt(t){var e,s;for(var r of t){var i=r[0],n=r[1],o=this.Bt.get(i);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,n.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((s=n.total)!==null&&s!==void 0?s:0);break;case"gauge":break;case"histogram":if(n.hist)if(o.hist){o.hist.count+=n.hist.count,o.hist.sum+=n.hist.sum,o.hist.min=Math.min(o.hist.min,n.hist.min),o.hist.max=Math.max(o.hist.max,n.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=n.hist.bucketCounts[a]}else o.hist=n.hist}else this.Qt()&&this.Bt.set(i,n)}}};var dr,Ra,Wi;function sh(t){var e=globalThis._posthogChunkIds;if(e){var s=Object.keys(e);return Wi&&s.length===Ra||(Ra=s.length,Wi=s.reduce((r,i)=>{dr||(dr={});var n=dr[i];if(n)r[n[0]]=n[1];else for(var o=t(i),a=o.length-1;a>=0;a--){var l=o[a],u=l==null?void 0:l.filename,c=e[i];if(u&&c){r[u]=c,dr[i]=[u,c];break}}return r},{})),Wi}}class rh{constructor(e,s,r){r===void 0&&(r=[]),this.coercers=e,this.stackParser=s,this.modifiers=r}buildFromUnknown(e,s){s===void 0&&(s={});var r=s&&s.mechanism||{handled:!0,type:"generic"},i=this.buildCoercingContext(r,s,0).apply(e),n=this.buildParsingContext(s),o=this.parseStacktrace(i,n);return{$exception_list:this.convertToExceptionList(o,r),$exception_level:"error"}}modifyFrames(e){var s=this;return X(function*(){for(var r of e)r.stacktrace&&r.stacktrace.frames&&O(r.stacktrace.frames)&&(r.stacktrace.frames=yield s.applyModifiers(r.stacktrace.frames));return e})()}coerceFallback(e){var s;return{type:"Error",value:"Unknown error",stack:(s=e.syntheticException)==null?void 0:s.stack,synthetic:!0}}parseStacktrace(e,s){var r,i;return e.cause!=null&&(r=this.parseStacktrace(e.cause,s)),e.stack!=""&&e.stack!=null&&(i=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?s.skipFirstLines:0),s.chunkIdMap)),b({},e,{cause:r,stack:i})}applyChunkIds(e,s){return e.map(r=>(r.filename&&s&&(r.chunk_id=s[r.filename]),r))}applyCoercers(e,s){for(var r of this.coercers)if(r.match(e))return r.coerce(e,s);return this.coerceFallback(s)}applyModifiers(e){var s=this;return X(function*(){var r=e;for(var i of s.modifiers)r=yield i(r);return r})()}convertToExceptionList(e,s){var r,i,n,o={type:e.type,value:e.value,mechanism:{type:(r=s.type)!==null&&r!==void 0?r:"generic",handled:(i=s.handled)===null||i===void 0||i,synthetic:(n=e.synthetic)!==null&&n!==void 0&&n}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,b({},s,{handled:!0}))),a}buildParsingContext(e){var s;return{chunkIdMap:sh(this.stackParser),skipFirstLines:(s=e.skipFirstLines)!==null&&s!==void 0?s:1}}buildCoercingContext(e,s,r){r===void 0&&(r=0);var i=(n,o)=>{if(4>=o){var a=this.buildCoercingContext(e,s,o);return this.applyCoercers(n,a)}};return b({},s,{syntheticException:r==0?s.syntheticException:void 0,mechanism:e,apply:n=>i(n,r),next:n=>i(n,r+1)})}}var hs="?";function Fn(t,e,s,r,i){var n={platform:t,filename:e,function:s===""?hs:s,in_app:!0};return I(r)||(n.lineno=r),I(i)||(n.colno=i),n}var Rc=(t,e)=>{var s=t.indexOf("safari-extension")!==-1,r=t.indexOf("safari-web-extension")!==-1;return s||r?[t.indexOf("@")!==-1?t.split("@")[0]:hs,s?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},ih=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,nh=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,oh=/\((\S*)(?::(\d+))(?::(\d+))\)/,ah=(t,e)=>{var s=ih.exec(t);if(s)return Fn(e,s[1],hs,+s[2],+s[3]);var r=nh.exec(t);if(r){if(r[2]&&r[2].indexOf("eval")===0){var i=oh.exec(r[2]);i&&(r[2]=i[1],r[3]=i[2],r[4]=i[3])}var n=Rc(r[1]||hs,r[2]);return Fn(e,n[1],n[0],r[3]?+r[3]:void 0,r[4]?+r[4]:void 0)}},lh=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,ch=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,uh=(t,e)=>{var s=lh.exec(t);if(s){if(s[3]&&s[3].indexOf(" > eval")>-1){var r=ch.exec(s[3]);r&&(s[1]=s[1]||"eval",s[3]=r[1],s[4]=r[2],s[5]="")}var i=s[3],n=s[1]||hs,o=Rc(n,i);return Fn(e,i=o[1],n=o[0],s[4]?+s[4]:void 0,s[5]?+s[5]:void 0)}},Ta=/\(error: (.*)\)/;class dh{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,s){var r=z(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?s.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var s=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?s+": "+e.message:s}isDOMException(e){return Or(e,"DOMException")}isDOMError(e){return Or(e,"DOMError")}}class hh{match(e){return function(s){switch({}.toString.call(s)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return nc(s,Error)}}(e)}coerce(e,s){return{type:this.getType(e),value:this.getMessage(e,s),stack:this.getStack(e),cause:e.cause?s.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,s){var r=e.message;return String(r.error&&typeof r.error.message=="string"?r.error.message:r)}getStack(e){return e.stacktrace||e.stack||void 0}}class ph{constructor(){}match(e){return!!Or(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,s){var r;if(e.error!=null)return s.apply(e.error);var i=s.apply(e.message);return b({},i,{stack:(r=this.pe(e))!==null&&r!==void 0?r:i.stack,synthetic:!0})}fe(e){return z(e.message)&&e.message.length>0}pe(e){var s=e;if(z(s.filename)&&s.filename.length>0){var r,i,n=(r=s.lineno)!==null&&r!==void 0?r:0,o=(i=s.colno)!==null&&i!==void 0?i:0;return`Error + at `+s.filename+":"+n+":"+o}}}var fh=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class gh{match(e){return typeof e=="string"}coerce(e,s){var r,i=this.getInfos(e),n=i[0],o=i[1];return{type:n??"Error",value:o??e,stack:(r=s.syntheticException)==null?void 0:r.stack,synthetic:!0}}getInfos(e){var s="Error",r=e,i=e.match(fh);return i&&(s=i[1],r=i[2]),[s,r]}}var vh=["fatal","error","warning","log","info","debug"];function Tc(t,e){e===void 0&&(e=40);var s=Object.keys(t);if(s.sort(),!s.length)return"[object has no keys]";for(var r=s.length;r>0;r--){var i=s.slice(0,r).join(", ");if(e>=i.length)return r===s.length?i:i.length>e?i.slice(0,e)+"...":i}return""}class mh{match(e){return typeof e=="object"&&e!==null}coerce(e,s){var r,i,n=this.getErrorPropertyFromObject(e);return n?s.apply(n):{type:this.getType(e),value:this.getValue(e),stack:(r=this.getStack(e))!==null&&r!==void 0?r:(i=s.syntheticException)==null?void 0:i.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return bo(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var s="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(s+=" with message: '"+e.message+"'"),s}if("message"in e&&typeof e.message=="string")return e.message;var r=this.getObjectClassName(e);return(r&&r!=="Object"?"'"+r+"'":"Object")+" captured as exception with keys: "+Tc(e)}isSeverityLevel(e){return z(e)&&!Sn(e)&&vh.indexOf(e)>=0}getStack(e){try{return z(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:z(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var s in e)if({}.hasOwnProperty.call(e,s)){var r=e[s];if(Zd(r))return r}}getObjectClassName(e){try{var s=Object.getPrototypeOf(e);return s?s.constructor.name:void 0}catch{return}}}class _h{match(e){return bo(e)}coerce(e,s){var r,i=e.constructor.name;return{type:i,value:i+" captured as exception with keys: "+Tc(e),stack:(r=s.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class yh{match(e){return ic(e)}coerce(e,s){var r;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(r=s.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class wh{match(e){return Or(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!bo(e))return!1;try{var s=e.detail;return s!=null&&typeof s=="object"&&"reason"in s}catch{return!1}}coerce(e,s){var r,i=this.getUnhandledRejectionReason(e);return ic(i)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(i),stack:(r=s.syntheticException)==null?void 0:r.stack,synthetic:!0}:s.apply(i)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var zr="$message",Wr="$timestamp",bh=new Set([zr,Wr]),qi={enabled:!0,max_bytes:32768};function qr(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:qi.enabled,max_bytes:Sh(t.max_bytes,qi.max_bytes)}:b({},qi)}class Eh{constructor(e){this.Ke=[],this.Je=0,this.Ne=qr(e)}setConfig(e){this.Ne=qr(e),this.Xe()}add(e){var s=function(i){var n;try{n=tc(i)}catch{return}try{var o=JSON.parse(n);if(!te(o))return;var a=o,l=a[zr],u=a[Wr];return!z(l)||l.trim().length===0||!z(u)&&!de(u)?void 0:{step:a,json:n}}catch{return}}(e);if(s){var r=function(i){if(typeof TextEncoder<"u")return new TextEncoder().encode(i).length;for(var n=encodeURIComponent(i),o=0,a=0;n.length>a;a++)n[a]==="%"?(o+=1,a+=2):o+=1;return o}(s.json);r>this.Ne.max_bytes||(this.Ke.push({step:s.step,bytes:r}),this.Je+=r,this.Xe())}}getAttachable(){return this.Ke.map(e=>e.step)}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function Sh(t,e){if(!de(t)||t===1/0||t===-1/0)return e;var s=Math.floor(t);return 0>s?e:s}var $c=function(t,e){var s=(e===void 0?{}:e).debugEnabled,r={k(i){if(g&&(Y.DEBUG||g.POSTHOG_DEBUG||s)&&!I(g.console)&&g.console){for(var n=("__rrweb_original__"in g.console[i])?g.console[i].__rrweb_original__:g.console[i],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];n(t,...a)}},debug(){for(var i=arguments.length,n=new Array(i),o=0;i>o;o++)n[o]=arguments[o];r.k("debug",...n)},info(){for(var i=arguments.length,n=new Array(i),o=0;i>o;o++)n[o]=arguments[o];r.k("log",...n)},warn(){for(var i=arguments.length,n=new Array(i),o=0;i>o;o++)n[o]=arguments[o];r.k("warn",...n)},error(){for(var i=arguments.length,n=new Array(i),o=0;i>o;o++)n[o]=arguments[o];r.k("error",...n)},critical(){for(var i=arguments.length,n=new Array(i),o=0;i>o;o++)n[o]=arguments[o];console.error(t,...n)},uninitializedWarning(i){r.error("You must initialize PostHog before calling "+i)},createLogger:(i,n)=>$c(t+" "+i,n)};return r},C=$c("[PostHog.js]"),se=C.createLogger,xh=se("[ExternalScriptsLoader]"),Vi=(t,e,s)=>{if(t.config.disable_external_dependency_loading)return xh.warn(e+" was requested but loading of external scripts is disabled."),s("Loading of external scripts is disabled");var r=F==null?void 0:F.querySelectorAll("script");if(r){for(var i,n=function(){if(r[o].src===e){var l=r[o];return l.__posthog_loading_callback_fired?{v:s()}:(l.addEventListener("load",u=>{l.__posthog_loading_callback_fired=!0,s(void 0,u)}),l.onerror=u=>s(u),{v:void 0})}},o=0;r.length>o;o++)if(i=n())return i.v}var a=()=>{if(!F)return s("document not found");var l=F.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,s(void 0,d)},l.onerror=d=>s(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return s("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")F.head.appendChild(l);else{var u,c=F.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):F.body.appendChild(l)}};F!=null&&F.body?a():F==null||F.addEventListener("DOMContentLoaded",a)};T.__PosthogExtensions__=T.__PosthogExtensions__||{},T.__PosthogExtensions__.loadExternalDependency=(t,e,s)=>{if(e!=="remote-config"){var r;if(t.config.strict_script_versioning)r=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var i="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var n=3e5;i=i+"&t="+Math.floor(Date.now()/n)*n}r=t.requestRouter.endpointFor("assets",i)}Vi(t,r,s)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");Vi(t,o,s)}},T.__PosthogExtensions__.loadSiteApp=(t,e,s)=>{var r=t.requestRouter.endpointFor("api",e);Vi(t,r,s)};Y.DEBUG=!1,Y.LIB_VERSION="1.415.7",Y.LIB_NAME="web";var Mc="$people_distinct_id",Js="$device_id",Gi="$device_model",Ms="__alias",Ns="__timers",Pn="$autocapture_disabled_server_side",An="$heatmaps_enabled_server_side",Rn="$exception_capture_enabled_server_side",Tn="$error_tracking_suppression_rules",$n="$error_tracking_capture_extension_exceptions",Mn="$web_vitals_enabled_server_side",Co="$dead_clicks_enabled_server_side",Fo="$product_tours_enabled_server_side",Nn="$web_vitals_allowed_metrics",Ut="$session_recording_remote_config",Nc="$replay_sample_rate",Lc="$replay_override_sampling",Oc="$replay_override_linked_flag",Dc="$replay_override_url_trigger",Bc="$replay_override_event_trigger",is="$sesid",Po="$session_is_sampled",Lt="$enabled_feature_flags",Ls="$active_feature_flags",Sr="$early_access_features",Ln="$feature_flag_details",Os="$feature_flag_payloads",xr="$feature_flag_request_id",Vr="$minimal_flag_called_events",Qe="$override_feature_flags",Ot="$override_feature_flag_payloads",ct="$stored_person_properties",Dt="$stored_group_properties",On="$surveys",Gr="$surveys_loaded_at",Dn="$surveys_activated",kr="$surveys_activated_session",Ir="$surveys_activated_timestamps",Ds="ph_product_tours",jt="$flag_call_reported",Bs="$flag_call_reported_session_id",Cr="$feature_flag_errors",Hs="$feature_flag_evaluated_at",Ue="$user_state",Bn="$client_session_props",jn="$capture_rate_limit",Un="$initial_campaign_params",Hn="$initial_referrer_info",Kr="$initial_person_info",Jr="$epp",hr="$posthog_cookieless",jc="$cookieless_mode",Uc="$sdk_debug_extensions_init_method",Hc="$sdk_debug_extensions_init_time_ms",zc="$sdk_debug_recording_script_not_loaded",Ao="PostHog loadExternalDependency extension not found.",Bt="on_reject",ht="always",Zt="anonymous",At="identified",zn="identified_only",Yr="visibilitychange",Zr="beforeunload",ts="$pageview",Ki="$pageleave",Ji="$identify",$a="$groupidentify";function pr(t,e){O(t)&&t.forEach(e)}function Z(t,e){if(!B(t))if(O(t))t.forEach(e);else if(Nd(t))t.forEach((r,i)=>e(r,i));else for(var s in t)rc.call(t,s)&&e(t[s],s)}var ee=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),r=1;e>r;r++)s[r-1]=arguments[r];for(var i of s)for(var n in i)i[n]!==void 0&&(t[n]=i[n]);return t};function Fr(t){for(var e=Object.keys(t),s=e.length,r=new Array(s);s--;)r[s]=[e[s],t[e[s]]];return r}var Ma=function(t){try{return t()}catch{return}},kh=function(t){return function(){try{for(var e=arguments.length,s=new Array(e),r=0;e>r;r++)s[r]=arguments[r];return t.apply(this,s)}catch(i){C.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),C.critical(i)}}},Ro=function(t){var e={};return Z(t,function(s,r){(z(s)&&s.length>0||de(s))&&(e[r]=s)}),e},Ih=["herokuapp.com","vercel.app","netlify.app"];function Ch(t){var e=t==null?void 0:t.hostname;if(!z(e))return!1;var s=e.split(".").slice(-2).join(".");for(var r of Ih)if(s===r)return!1;return!0}function ie(t,e,s,r){var i=r??{},n=i.capture,o=i.passive;t==null||t.addEventListener(e,s,{capture:n!==void 0&&n,passive:o===void 0||o})}function Wn(t){return t.name==="ph_toolbar_internal"}var Wc=t=>{if(F){try{for(var e=t+"=",s=F.cookie.split(";").filter(n=>n.length),r=0;s.length>r;r++){for(var i=s[r];i.charAt(0)==" ";)i=i.substring(1,i.length);if(i.indexOf(e)===0)return decodeURIComponent(i.substring(e.length,i.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return de(t)&&isFinite(t)&&Math.floor(t)===t});class Xr{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,s,r,i){if(!Number.isInteger(e)||!Number.isInteger(s)||!Number.isInteger(r)||!Number.isInteger(i)||0>e||0>s||0>r||0>i||e>0xffffffffffff||s>4095||r>1073741823||i>4294967295)throw new RangeError("invalid field value");var n=new Uint8Array(16);return n[0]=e/Math.pow(2,40),n[1]=e/Math.pow(2,32),n[2]=e/Math.pow(2,24),n[3]=e/Math.pow(2,16),n[4]=e/256,n[5]=e,n[6]=112|s>>>8,n[7]=s,n[8]=128|r>>>24,n[9]=r>>>16,n[10]=r>>>8,n[11]=r,n[12]=i>>>24,n[13]=i>>>16,n[14]=i>>>8,n[15]=i,new Xr(n)}toString(){for(var e="",s=0;this.bytes.length>s;s++)e=e+(this.bytes[s]>>>4).toString(16)+(15&this.bytes[s]).toString(16),s!==3&&s!==5&&s!==7&&s!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new Xr(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var s=0;16>s;s++){var r=this.bytes[s]-e.bytes[s];if(r!==0)return Math.sign(r)}return 0}}class Fh{generate(){var e=this.generateOrAbort();if(!I(e))return e;this.S=0;var s=this.generateOrAbort();if(I(s))throw new Error("Could not generate UUID after timestamp reset");return s}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return Xr.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new Ph}}var Na,qc=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};g&&!I(g.crypto)&&crypto.getRandomValues&&(qc=t=>crypto.getRandomValues(t));class Ph{nextUint32(){return this.R.length>this.O||(qc(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var dt=()=>Ah().toString(),Ah=()=>(Na||(Na=new Fh)).generate(),ks="",Rh=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,pt={N:()=>!!F,j(t){C.error("cookieStore error: "+t)},P:Wc,H(t){var e;try{e=JSON.parse(pt.P(t))||{}}catch{}return e},F(t,e,s,r,i){if(!F)return!1;try{var n="",o="",a=function(c,d){if(d){var h=function(p,v){if(v===void 0&&(v=F),ks)return ks;if(!v||["localhost","127.0.0.1"].includes(p))return"";for(var _=p.split("."),m=Math.min(_.length,8),w="dmn_chk_"+dt();!ks&&m--;){var S=_.slice(m).join("."),k=w+"=1;domain=."+S+";path=/";v.cookie=k+";max-age=3",v.cookie.includes(w)&&(v.cookie=k+";max-age=0",ks=S)}return ks}(c);if(!h){var f=(p=>{var v=p.match(Rh);return v?v[0]:""})(c);f!==h&&C.info("Warning: cookie subdomain discovery mismatch",f,h),h=f}return h?"; domain=."+h:""}return""}(F.location.hostname,r);if(s){var l=new Date;l.setTime(l.getTime()+864e5*s),n="; expires="+l.toUTCString()}i&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+n+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&C.warn("cookieStore warning: large cookie, len="+u.length),F.cookie=u,!0}catch{return!1}},q(t,e){if(F!=null&&F.cookie)try{pt.F(t,"",-1,e)}catch{return}}},Yi=null,Q={N(){if(!Re(Yi))return Yi;var t=!0;if(I(g))t=!1;else try{var e="__mplssupport__";Q.F(e,"xyz"),Q.P(e)!=='"xyz"'&&(t=!1),Q.q(e)}catch{t=!1}return t||C.error("localStorage unsupported; falling back to cookie store"),Yi=t,t},j(t){C.error("localStorage error: "+t)},P(t){try{return g==null?void 0:g.localStorage.getItem(t)}catch(e){Q.j(e)}return null},H(t){try{return JSON.parse(Q.P(t))||{}}catch{}return null},F(t,e){try{return g==null||g.localStorage.setItem(t,JSON.stringify(e)),!0}catch(s){Q.j(s)}return!1},q(t){try{g==null||g.localStorage.removeItem(t)}catch(e){Q.j(e)}}},Th=[Js,"distinct_id",is,Po,Jr,Kr,Ue],fr={},$h={N:()=>!0,j(t){C.error("memoryStorage error: "+t)},P:t=>fr[t]||null,H:t=>fr[t]||null,F:(t,e)=>(fr[t]=e,!0),q(t){delete fr[t]}},Rt=null,ce={N(){if(!Re(Rt))return Rt;if(Rt=!0,I(g))Rt=!1;else try{var t="__support__";ce.F(t,"xyz"),ce.P(t)!=='"xyz"'&&(Rt=!1),ce.q(t)}catch{Rt=!1}return Rt},j(t){C.error("sessionStorage error: ",t)},P(t){try{return g==null?void 0:g.sessionStorage.getItem(t)}catch(e){ce.j(e)}return null},H(t){try{return JSON.parse(ce.P(t))||null}catch{}return null},F(t,e){try{return g==null||g.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(s){ce.j(s)}return!1},q(t){try{g==null||g.sessionStorage.removeItem(t)}catch(e){ce.j(e)}}};class Mh{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===ht||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===Bt}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,s=e.token,r=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(r?r+s:"__ph_opt_in_out_"+s)}get ei(){var e=this.ii.P(this.ri);return Ui(e)?1:L(Bd,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,s=e==="localStorage"?Q:pt;if(!this.ni||this.ni!==s){this.ni=s;var r=e==="localStorage"?pt:Q;r.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(Ui(r.P(this.ri))),r.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[xe==null?void 0:xe.doNotTrack,xe==null?void 0:xe.msDoNotTrack,T.doNotTrack].some(e=>Ui(e))}}function Vc(t,e){var s,r=t==null||(s=t.config)==null?void 0:s.get_current_url;if(!Ee(r))return e;try{var i=r(e);return z(i)&&i?i:e}catch(n){return C.error("Error in get_current_url, falling back to window.location.href",n),e}}var Gc="__POSTHOG_TOOLBAR__",Nh=1,Lh=3,Oh=11;function La(t){return t instanceof Element&&(t.id===Gc||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function Ct(t){return!!t&&t.nodeType===Nh}function Me(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function Kc(t){return!!t&&t.nodeType===Lh}function Jc(t){return!!t&&t.nodeType===Oh&&Ct(t.host)}var Yc=1e3;function To(t){return t?wi(t).split(/\s+/):[]}function Oa(t,e){var s=function(r){var i,n=g==null||(i=g.location)==null?void 0:i.href;return I(n)?void 0:Vc(r,n)}(e);return!!(s&&t&&t.some(r=>s.match(r)))}function Qr(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return To(e)}function Zc(t){return B(t)?null:wi(t).split(/(\s+)/).filter(e=>zs(e)).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Ys(t){var e="";return Vn(t)&&!tu(t)&&t.childNodes&&t.childNodes.length&&Z(t.childNodes,function(s){var r;Kc(s)&&s.textContent&&(e+=(r=Zc(s.textContent))!==null&&r!==void 0?r:"")}),wi(e)}function Zi(t){var e;return I(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var $o=["a","button","form","input","select","textarea","label"];function qn(t,e){if(I(e))return!0;var s,r=function(n){if(e.some(o=>function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}}(n,o)))return{v:!0}};for(var i of t)if(s=r(i))return s.v;return!1}function Xc(t){var e=t.parentNode;return!(!e||!Ct(e))&&e}var Dh=[".ph-no-autocapture","[data-ph-no-autocapture]"],Qc=["next","previous","prev",">","<"],Bh=[...Qc,"+","-","−","–"],Da=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,Ba=[".ph-no-rageclick",".ph-no-capture"],jh=["","text","search","email","password","url","tel","number"];function ja(t,e){if(!g||Mo(t))return!1;var s,r,i,n,o;if(Ke(e)?(s=!!e&&Ba,r=void 0,i=!1):(s=(n=e==null?void 0:e.css_selector_ignorelist)!==null&&n!==void 0?n:Ba,r=e==null?void 0:e.content_ignorelist,i=(o=e==null?void 0:e.ignore_text_selection)!==null&&o!==void 0&&o),s===!1||i&&function(l){return!(!l||!Ct(l))&&(!!Me(l,"textarea")||(Me(l,"input")?L(jh,(l.getAttribute("type")||"").toLowerCase()):function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""}(l)))}(t))return!1;var a=eu(t,!1).targetElementList;return!function(l,u){if(l===!1||I(l))return!1;var c;if(l===!0)c=Qc;else{if(!O(l))return!1;if(l.length>10)return C.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map(d=>d.toLowerCase())}return u.some(d=>{var h=d.safeText,f=d.ariaLabel;return c.some(p=>Da(h,p)||Da(f,p))})}(r,a.map(l=>{var u;return{safeText:Ys(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}}))&&!qn(a,s)}var Mo=t=>!t||Me(t,"html")||!Ct(t),eu=(t,e)=>{if(!g||Mo(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var s=!1,r=[t],i=t;i.parentNode&&!Me(i,"body");)if(Jc(i.parentNode))r.push(i.parentNode.host),i=i.parentNode.host;else{var n=Xc(i);if(!n)break;if(e||$o.indexOf(n.tagName.toLowerCase())>-1)s=!0;else try{var o=g.getComputedStyle(n);o&&o.getPropertyValue("cursor")==="pointer"&&(s=!0)}catch{}r.push(n),i=n}return{parentIsUsefulElement:s,targetElementList:r}};function Vn(t){for(var e=new Set,s=0,r=t;r.parentNode&&!Me(r,"body");r=r.parentNode){if(s++>=Yc||e.has(r))return!1;e.add(r);var i=Qr(r);if(L(i,"ph-sensitive")||L(i,"ph-no-capture"))return!1}if(L(Qr(t),"ph-include"))return!0;var n=t.type||"";if(z(n))switch(n.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!z(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function tu(t){return!!(Me(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Me(t,"select")||Me(t,"textarea")||t.getAttribute("contenteditable")==="true")}var Ua=new RegExp("^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$"),Ha=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Uh=[16,15,14,13],Hh=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),za=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),Wa=/[0-9A-Za-z_]/;function zh(t){for(var e=0,s=!1,r=t.length-1;r>=0;r--){var i=t.charCodeAt(r)-48;s&&(i*=2)>9&&(i-=9),e+=i,s=!s}return e%10==0}function zs(t,e){if(e===void 0&&(e=!0),B(t))return!1;if(z(t)){t=wi(t);var s=e?Ua.test((t||"").replace(/[- ]/g,"")):function(i){var n;for(Ha.lastIndex=0;n=Ha.exec(i);){var o=n[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Uh){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(Ua.test(d)&&zh(d))return!0}}}return!1}(t);if(s)return!1;var r=e?Hh.test(t):function(i){var n;for(za.lastIndex=0;n=za.exec(i);){var o=n[1],a=n[3];if(!(o&&a&&Wa.test(o)&&Wa.test(a)))return!0}return!1}(t);if(r)return!1}return!0}function qa(t){var e=Ys(t);return zs(e=(e+" "+su(t)).trim())?e:""}function su(t){var e="";return t&&t.childNodes&&t.childNodes.length&&Z(t.childNodes,function(s){var r;if(s&&((r=s.tagName)==null?void 0:r.toLowerCase())==="span")try{var i=Ys(s);e=(e+" "+i).trim(),s.childNodes&&s.childNodes.length&&(e=(e+" "+su(s)).trim())}catch(n){C.error("[AutoCapture]",n)}}),e}function Va(t){return t.replace(/"|\\"/g,'\\"')}function Wh(t){var e=t.attr__class;if(e)return O(e)?e:To(e)}var gr=se("[Dead Clicks]"),qh=()=>!0,Vh=t=>{var e,s=!((e=t.instance.persistence)==null||!e.get_property(Co)),r=t.instance.config.capture_dead_clicks;return Ke(r)?r:!!te(r)||s};class Ga{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,s,r){this.instance=e,this.isEnabled=s,this.onCapture=r,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var s=e.config;"captureDeadClicks"in s&&(this.instance.persistence&&this.instance.persistence.register({[Co]:s.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai(()=>{this.oi()}):this.stop()}ai(e){var s,r;(s=T.__PosthogExtensions__)!=null&&s.initDeadClicksAutocapture?e():(r=T.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"dead-clicks-autocapture",i=>{i?gr.error("failed to load script",i):e()})}oi(){var e;if(F){if(!this.si&&(e=T.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var s=te(this.instance.config.capture_dead_clicks)?b({},this.instance.config.capture_dead_clicks):{};s.__onCapture=this.onCapture,this.onCapture&&(s.capture_dead_swipes=!1),this.si=T.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,s),this.si.start(F),gr.info("starting...")}}else gr.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,gr.info("stopping..."))}}var Xi=se("[SegmentIntegration]"),ru="posthog-js";function iu(t,e){var s=e===void 0?{}:e,r=s.organization,i=s.projectId,n=s.prefix,o=s.severityAllowList,a=o===void 0?["error"]:o,l=s.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,h,f,p,v;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var _=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=_,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var m,w=((d=c.exception)==null?void 0:d.values)||[],S=w.map(E=>b({},E,{stacktrace:E.stacktrace?b({},E.stacktrace,{type:"raw",frames:(E.stacktrace.frames||[]).map(P=>b({},P,{platform:"web:javascript"}))}):void 0})),k={$exception_message:((h=w[0])==null?void 0:h.value)||c.message,$exception_type:(f=w[0])==null?void 0:f.type,$exception_level:c.level,$exception_list:S,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((p=w[0])==null?void 0:p.value)||c.message,$sentry_exception_type:(v=w[0])==null?void 0:v.type,$sentry_tags:c.tags};return r&&i&&(k.$sentry_url=(n||"https://sentry.io/organizations/")+r+"/issues/?project="+i+"&query="+c.event_id),u&&((m=t.exceptions)==null||m.sendExceptionEvent(k)),c}}class Gh{constructor(e,s,r,i,n,o){this.name=ru,this.setupOnce=function(a){a(iu(e,{organization:s,projectId:r,prefix:i,severityAllowList:n,sendExceptionsToPostHog:o==null||o}))}}}class Ka{constructor(e){this.li=(s,r,i)=>{i&&(i.noSessionId||i.activityTimeout||i.sessionPastMaximumLength||i.crossTabAdoption)&&(C.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:s,changeReason:i}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,s){var r,i=this.vi(e,s);return this.ui={pathname:(r=g==null?void 0:g.location.pathname)!==null&&r!==void 0?r:"",pageViewId:s,timestamp:e},this._instance.scrollManager.resetContext(),i}doPageLeave(e){var s;return this.vi(e,(s=this.ui)==null?void 0:s.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,s){var r=this.ui;if(!r)return{$pageview_id:s};var i={$pageview_id:s,$prev_pageview_id:r.pageViewId},n=this._instance.scrollManager.getContext();if(n&&!this._instance.config.disable_scroll_properties){var o=n.maxScrollHeight,a=n.lastScrollY,l=n.maxScrollY,u=n.maxContentHeight,c=n.lastContentY,d=n.maxContentY;if(!(I(o)||I(a)||I(l)||I(u)||I(c)||I(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var h=o>1?rt(a/o,0,1,C):1,f=o>1?rt(l/o,0,1,C):1,p=u>1?rt(c/u,0,1,C):1,v=u>1?rt(d/u,0,1,C):1;i=ee(i,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:h,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:f,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:p,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:v})}}return r.pathname&&(i.$prev_pageview_pathname=r.pathname),r.timestamp&&(i.$prev_pageview_duration=(e.getTime()-r.timestamp.getTime())/1e3),i}}var Qi=["flags","surveys"],Kh={[Mc]:{exposure:"hidden"},[Ms]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[Ns]:{exposure:"hidden"},[Pn]:{exposure:"event"},[An]:{exposure:"hidden"},[Rn]:{exposure:"event"},[Tn]:{exposure:"hidden"},[$n]:{exposure:"event"},[Mn]:{exposure:"event"},[Co]:{exposure:"event"},[Fo]:{exposure:"hidden"},[Nn]:{exposure:"event"},[Ut]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[is]:{exposure:"hidden"},[Po]:{exposure:"event"},[Nc]:{exposure:"event",shouldSkipFromEventProperties:t=>Re(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[Lt]:{exposure:"hidden",storageGroup:"flags"},[Ls]:{exposure:"hidden",storageGroup:"flags"},[Sr]:{exposure:"hidden"},[Ln]:{exposure:"hidden",storageGroup:"flags"},[Os]:{exposure:"hidden",storageGroup:"flags"},[xr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Vr]:{exposure:"hidden",storageGroup:"flags"},[Qe]:{exposure:"hidden"},[Ot]:{exposure:"hidden"},[ct]:{exposure:"hidden"},[Dt]:{exposure:"hidden"},[On]:{exposure:"hidden",storageGroup:"surveys"},[Gr]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[Dn]:{exposure:"event"},[kr]:{exposure:"hidden"},[Ir]:{exposure:"hidden"},[Ds]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[jt]:{exposure:"hidden"},[Bs]:{exposure:"hidden"},[Cr]:{exposure:"hidden"},[Hs]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Ue]:{exposure:"hidden"},[Bn]:{exposure:"hidden"},[jn]:{exposure:"hidden"},[Un]:{exposure:"hidden"},[Hn]:{exposure:"hidden"},[Kr]:{exposure:"hidden"},[Jr]:{exposure:"hidden"},[Lc]:{exposure:"event"},[Oc]:{exposure:"event"},[Dc]:{exposure:"event"},[Bc]:{exposure:"event"},[Uc]:{exposure:"event"},[Hc]:{exposure:"event"},[zc]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},Jh=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],Tt=t=>{var e=Kh[t];if(e)return e;for(var s of Jh){var r=s[1];if(t.indexOf(s[0])===0)return r}},ns=(t,e)=>{try{return JSON.stringify(t,(s,r)=>typeof r=="bigint"?r.toString():r,e)}catch{return tc(t)}},ei=t=>{var e=F==null?void 0:F.createElement("a");return I(e)?null:(e.href=t,e)},ps=function(t,e){for(var s,r=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),i=0;r.length>i;i++){var n=r[i].split("=");if(n[0]===e){s=n;break}}if(!O(s)||2>s.length)return"";var o=s[1];try{o=decodeURIComponent(o)}catch{C.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},Zs=function(t,e,s){if(!t||!e||!e.length)return t;for(var r=t.split("#"),i=r[1],n=(r[0]||"").split("?"),o=n[1],a=n[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");O(d)&&(e.includes(d[0])?u.push(d[0]+"="+s):u.push(l[c]))}var h=a;return o!=null&&(h+="?"+u.join("&")),i!=null&&(h+="#"+i),h},ti=function(t,e){var s=t.match(new RegExp(e+"=([^&]*)"));return s?s[1]:null},nu=(t,e)=>t>=e&&Xl(),ou=(t,e,s,r)=>{if(t===0){if(Xl()){var i=e+1;return i===s&&r(),i}return e}return 0},vr="https?://(.*)",fs=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Yh=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...fs],Xs="",Zh=["li_fat_id"];function au(t,e,s){if(!F)return{};var r,i=e?[...fs,...s||[]]:[],n=lu(Zs(F.URL,i,Xs),t),o=(r={},Z(Zh,function(a){var l=Wc(a);r[a]=l||null}),r);return ee(o,n)}function lu(t,e){var s=Yh.concat(e||[]),r={};return Z(s,function(i){var n=ps(t,i);r[i]=n||null}),r}function cu(t){var e=function(n){return n?n.search(vr+"google.([^/?]*)")===0?"google":n.search(vr+"bing.com")===0?"bing":n.search(vr+"yahoo.com")===0?"yahoo":n.search(vr+"duckduckgo.com")===0?"duckduckgo":null:null}(t),s=e!="yahoo"?"q":"p",r={};if(!Re(e)){r.$search_engine=e;var i=F?ps(F.referrer,s):"";i.length&&(r.ph_keyword=i)}return r}function Ja(){return navigator.language||navigator.userLanguage}var si="$direct";function uu(){return(F==null?void 0:F.referrer)||si}function du(t,e,s){s===void 0&&(s=!1);var r=t?[...fs,...e||[]]:[],i=s?It(re==null?void 0:re.href):re==null?void 0:re.href,n=i==null?void 0:i.substring(0,1e3);return{r:uu().substring(0,1e3),u:n?Zs(n,r,Xs):void 0}}function hu(t,e){var s;e===void 0&&(e=!1);var r=t.r,i=t.u,n=e?It(i):i,o={$referrer:r,$referring_domain:r==null?void 0:r==si?si:(s=ei(r))==null?void 0:s.host};if(n){o.$current_url=n;var a=ei(n);o.$host=a==null?void 0:a.host,o.$pathname=a==null?void 0:a.pathname;var l=lu(n);ee(o,l)}if(r){var u=cu(r);ee(o,u)}return o}function pu(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Xh(){try{return new Date().getTimezoneOffset()}catch{return}}var Qh={flags:Hs,surveys:Gr},ep=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],Xt="main";class en{constructor(e,s,r){if(r===void 0&&(r=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=r,this.props={},this.mi=void 0,this.yi=(n=>{var o="";return n.token&&(o=n.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),n.persistence_name?"ph_"+n.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&C.info("Persistence loaded",e.persistence,b({},this.props)),this.update_config(e,e,s),this.save(),g){var i=()=>this.flush();ie(g,"beforeunload",i,{capture:!1}),ie(g,"pagehide",i,{capture:!1})}}ki(){var e,s=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return de(s)&&s>0?s:0}isDisabled(){return!!this.xi}bi(e){ep.indexOf(e.persistence.toLowerCase())===-1&&(C.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var s,r=function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Th,...o];return b({},Q,{H(u){try{var c={};try{c=pt.H(u)||{}}catch{}var d,h=JSON.parse(Q.P(u)||"{}");if(a){var f={};for(var p in c){var v=c[p];Re(v)||v===""||(f[p]=v)}d=ee(h,f)}else d=ee(c,h);return Q.F(u,d),d}catch{}return null},F(u,c,d,h,f,p){var v=Q.F(u,c,void 0,void 0,p);try{var _={};l.forEach(m=>{c[m]&&(_[m]=c[m])}),Object.keys(_).length&&pt.F(u,_,d,h,f,p)}catch(m){Q.j(m)}return v},q(u,c){try{g==null||g.localStorage.removeItem(u),pt.q(u,c)}catch(d){Q.j(d)}}})}(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),i=!1,n=e.persistence.toLowerCase();return n==="localstorage"&&Q.N()?(s=Q,i=!0):n==="localstorage+cookie"&&r.N()?(s=r,i=!0):n==="sessionstorage"&&ce.N()?s=ce:n==="memory"?s=$h:n==="cookie"?s=pt:r.N()?(s=r,i=!0):s=pt,this.fi=i,s}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return Z(this.props,(s,r)=>{var i=Tt(r);if(!i||i.exposure==="event"){if(i!=null&&i.shouldSkipFromEventProperties!=null&&i.shouldSkipFromEventProperties(s))return;e[r]=s}}),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=ee({},e)),this.pi&&this.Ci()}}Ci(){for(var e of Qi){var s=Q.H(this.Si(e));if(s&&!vt(s)){var r=this.Mi(e);r.persisted=!0,this.Ti(e)||(r.fingerprint=this.Ei(s,e)),this.Ii(e,s)||ee(this.props,s)}}}Ti(e){return Object.keys(this.props).some(s=>{var r;return((r=Tt(s))==null?void 0:r.storageGroup)===e})}Ii(e,s){var r=Qh[e];if(!r)return!1;var i=s[r],n=this.props[r];return de(i)&&de(n)&&n>i}refreshKey(e){var s;if(!this.xi){var r=this.pi?(s=Tt(e))==null?void 0:s.storageGroup:void 0,i=r?Q.H(this.Si(r)):this.ii.H(this.yi);if(i&&e in i)this.Pi(e,i[e]);else{if(r){var n=this.ii.H(this.yi);if(n&&e in n)return void this.Pi(e,n[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?I(this.Ai)&&(this.Ai=setTimeout(()=>{this.Ai=void 0,this.Fi()},e)):this.Fi()}}flush(){I(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,Xt))}Li(){var e=this.Di(),s=e.main,r=e.groups;for(var i of(this.Oi(this.ii,this.yi,s,Xt),Qi)){var n,o=r[i];(!vt(o)||(n=this.ci[i])!=null&&n.persisted)&&this.Oi(Q,this.Si(i),o,i)}}Di(){var e={},s={flags:{},surveys:{}};return Z(this.props,(r,i)=>{var n,o=(n=Tt(i))==null?void 0:n.storageGroup;o?s[o][i]=r:e[i]=r}),{main:e,groups:s}}Ei(e,s){if(s===Xt)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var r={};return Z(e,(i,n)=>{var o;r[n]=(o=Tt(n))!=null&&o.volatile?"__volatile__":i}),JSON.stringify(r)}Oi(e,s,r,i){var n=this.Mi(i);if(i===Xt||n.dirty||I(n.fingerprint)){var o;try{if((o=this.Ei(r,i))===n.fingerprint)return void(n.dirty=!1)}catch{o=void 0}e.F(s,r,this.$i,this.Ni,this.qi,this.Ne.debug)?(n.dirty=!1,i!==Xt&&(n.persisted=!0),I(o)||(n.fingerprint=o)):this.Ne.debug&&C.warn('failed to persist storage entry "'+s+'"; will retry on next save')}}remove(e){var s=(e===void 0?{}:e).keepGroupEntries,r=s!==void 0&&s;if(I(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!r&&this.gi)for(var i of Qi)Q.q(this.Si(i));r?delete this.ci[Xt]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,s,r){if(te(e)){I(s)&&(s="None"),this.$i=I(r)?this.ji:r;var i=!1;if(Z(e,(n,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==s||(this.Pi(o,n),i=!0)}),i)return this.save(),!0}return!1}register(e,s){if(te(e)){this.$i=I(s)?this.ji:s;var r=!1;if(Z(e,(i,n)=>{e.hasOwnProperty(n)&&(this.props[n]!==i||te(i)||O(i))&&(this.Pi(n,i),r=!0)}),r)return this.save(),!0}return!1}unregister(e){var s=typeof e=="string"?[e]:e,r=!1;for(var i of s)i in this.props&&(this.Ri(i),r=!0);r&&this.save()}update_campaign_params(){var e=F==null?void 0:F.URL;if(e!==this.mi){var s=au(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);vt(Ro(s))||this.register(s),this.mi=e}}update_search_keyword(){var e;this.register((e=F==null?void 0:F.referrer)?cu(e):{})}update_referrer_info(){var e;this.register_once({$referrer:uu(),$referring_domain:F!=null&&F.referrer&&((e=ei(F.referrer))==null?void 0:e.host)||si},void 0)}set_initial_person_info(){this.props[Un]||this.props[Hn]||this.register_once({[Kr]:du(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};Z([Hn,Un],i=>{var n=this.props[i];n&&Z(n,function(o,a){e["$initial_"+En(a)]=o})});var s=this.props[Kr];if(s){var r=function(i,n){n===void 0&&(n=!1);var o=hu(i,n),a={};return Z(o,function(l,u){a["$initial_"+En(u)]=l}),a}(s,this.Ne.disable_capture_url_hashes);ee(e,r)}return e}safe_merge(e){return Z(this.props,function(s,r){r in e||(e[r]=s)}),e}update_config(e,s,r){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!r),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var i=e.persistence!==s.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every((h,f)=>h===d[f])})(e.cookie_persisted_properties||[],s.cookie_persisted_properties||[]),n=i?this.bi(e):this.ii,o=this.wi(e);if(i||o!==this.pi){var a=this.props;this.clear(),this.ii=n,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,s){var r=this.props[Ns]||{};r[e]=s,this.Pi(Ns,r),this.save()}remove_event_timer(e){var s=this.props[Ns]||{},r=s[e];return I(r)||(delete s[e],this.Pi(Ns,s),this.save()),r}get_property(e){return this.props[e]}set_property(e,s){this.Pi(e,s),this.save()}Pi(e,s){var r;this.props[e]=s,(r=Tt(e))!=null&&r.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var s,r=(s=Tt(e))==null?void 0:s.storageGroup;r&&(this.Mi(r).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function mr(t){var e=!0;return{dispose(){if(e){e=!1;var s=t();s&&Ee(s.then)&&s.then(void 0,()=>{})}}}}var Se={GZipJS:"gzip-js",Base64:"base64"},Is={Activation:"events",Cancellation:"cancelEvents"},tn={Popover:"popover",API:"api",Widget:"widget"},ft={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},sn={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},Gn={Popover:"popover",Inline:"inline"},tp={SHOWN:"product tour shown"},Ya={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},Za=se("[RateLimiter]");class sp{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=s=>{var r=s.text;if(r&&r.length)try{(JSON.parse(r).quota_limited||[]).forEach(i=>{Za.info((i||"events")+" is quota limited."),this.serverLimits[i]=new Date().getTime()+6e4})}catch(i){return void Za.warn('could not rate limit - continuing. Error: "'+(i==null?void 0:i.message)+'"',{text:r})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var s,r,i;e===void 0&&(e=!1);var n=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(s=(r=this.instance.persistence)==null?void 0:r.get_property(jn))!==null&&s!==void 0?s:{tokens:n,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>n&&(l.tokens=n);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(de(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(i=this.instance.persistence)==null||i.set_property(jn,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var s=this.instance.config.property_denylist;return!O(s)||!s.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&re!=null&&re.pathname)return""+((e=re.origin)!==null&&e!==void 0?e:"")+re.pathname}Hi(e){var s,r,i=this.captureEventsBurstLimit,n=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(s=(r=this.instance).get_session_id)==null?void 0:s.call(r):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+n+" events per second and "+i+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var s=this.serverLimits[e||"events"]||!1;return s!==!1&&new Date().getTime()e(this.remoteConfig)):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return St.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void St.warn("Remote config is disabled. Falling back to local config.");this.Wi(e=>{if(!e)return St.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi(s=>{this.Zi(s.json,s),this.Gi()});this.Zi(e),this.Gi()})}catch(e){St.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&F&&F.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var s=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;s!==0&&(this.Ki=setInterval(()=>{this.refresh()},s))}}Zi(e,s){!e&&s&&(s.statusCode===0?s.error||St.warn("Failed to fetch remote config from PostHog."):St.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(i){St.error("Error applying remote config",i)}if((e==null?void 0:e.hasFeatureFlags)!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var r;(r=this._instance.featureFlags)==null||r.ensureFlagsLoaded()}catch(i){St.error("Error loading feature flags",i)}}}var Ve=Uint8Array,Ae=Uint16Array,gs=Uint32Array,No=new Ve([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Lo=new Ve([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Xa=new Ve([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gu=function(t,e){for(var s=new Ae(31),r=0;31>r;++r)s[r]=e+=1<r;++r)for(var n=s[r];s[r+1]>n;++n)i[n]=n-s[r]<<5|r;return[s,i]},vu=gu(No,2),Kn=vu[1];vu[0][28]=258,Kn[258]=28;for(var Qa=gu(Lo,0)[1],mu=new Ae(32768),ne=0;32768>ne;++ne){var Qt=(43690&ne)>>>1|(21845&ne)<<1;mu[ne]=((65280&(Qt=(61680&(Qt=(52428&Qt)>>>2|(13107&Qt)<<2))>>>4|(3855&Qt)<<4))>>>8|(255&Qt)<<8)>>>1}var Ws=function(t,e,s){for(var r=t.length,i=0,n=new Ae(e);r>i;++i)++n[t[i]-1];var o,a=new Ae(e);for(i=0;e>i;++i)a[i]=a[i-1]+n[i-1]<<1;for(o=new Ae(r),i=0;r>i;++i)o[i]=mu[a[t[i]-1]++]>>>15-t[i];return o},Wt=new Ve(288);for(ne=0;144>ne;++ne)Wt[ne]=8;for(ne=144;256>ne;++ne)Wt[ne]=9;for(ne=256;280>ne;++ne)Wt[ne]=7;for(ne=280;288>ne;++ne)Wt[ne]=8;var ri=new Ve(32);for(ne=0;32>ne;++ne)ri[ne]=5;var rp=Ws(Wt,9),ip=Ws(ri,5),_u=function(t){return(t/8>>0)+(7&t&&1)},yu=function(t,e,s){(s==null||s>t.length)&&(s=t.length);var r=new(t instanceof Ae?Ae:t instanceof gs?gs:Ve)(s-e);return r.set(t.subarray(e,s)),r},ot=function(t,e,s){var r=e/8>>0;t[r]|=s<<=7&e,t[r+1]|=s>>>8},Cs=function(t,e,s){var r=e/8>>0;t[r]|=s<<=7&e,t[r+1]|=s>>>8,t[r+2]|=s>>>16},rn=function(t,e){for(var s=[],r=0;t.length>r;++r)t[r]&&s.push({s:r,f:t[r]});var i=s.length,n=s.slice();if(!i)return[new Ve(0),0];if(i==1){var o=new Ve(s[0].s+1);return o[s[0].s]=1,[o,1]}s.sort(function(E,P){return E.f-P.f}),s.push({s:-1,f:25001});var a=s[0],l=s[1],u=0,c=1,d=2;for(s[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=i-1;)a=s[s[d].f>s[u].f?u++:d++],l=s[u!=c&&s[d].f>s[u].f?u++:d++],s[c++]={s:-1,f:a.f+l.f,l:a,r:l};var h=n[0].s;for(r=1;i>r;++r)n[r].s>h&&(h=n[r].s);var f=new Ae(h+1),p=Jn(s[c-1],f,0);if(p>e){r=0;var v=0,_=p-e,m=1<<_;for(n.sort(function(E,P){return f[P.s]-f[E.s]||E.f-P.f});i>r;++r){var w=n[r].s;if(e>=f[w])break;v+=m-(1<>>=_;v>0;){var S=n[r].s;e>f[S]?v-=1<=0&&v;--r){var k=n[r].s;f[k]==e&&(--f[k],++v)}p=e}return[new Ve(f),p]},Jn=function(t,e,s){return t.s==-1?Math.max(Jn(t.l,e,s+1),Jn(t.r,e,s+1)):e[t.s]=s},el=function(t){for(var e=t.length;e&&!t[--e];);for(var s=new Ae(++e),r=0,i=t[0],n=1,o=function(l){s[r++]=l},a=1;e>=a;++a)if(t[a]==i&&a!=e)++n;else{if(!i&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(i),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(i);n=1,i=t[a]}return[s.subarray(0,r),e]},Fs=function(t,e){for(var s=0,r=0;e.length>r;++r)s+=t[r]*e[r];return s},Yn=function(t,e,s){var r=s.length,i=_u(e+2);t[i]=255&r,t[i+1]=r>>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var n=0;r>n;++n)t[i+n+4]=s[n];return 8*(i+4+r)},tl=function(t,e,s,r,i,n,o,a,l,u,c){ot(e,c++,s),++i[256];for(var d=rn(i,15),h=d[0],f=d[1],p=rn(n,15),v=p[0],_=p[1],m=el(h),w=m[0],S=m[1],k=el(v),E=k[0],P=k[1],D=new Ae(19),x=0;w.length>x;++x)D[31&w[x]]++;for(x=0;E.length>x;++x)D[31&E[x]]++;for(var A=rn(D,7),R=A[0],M=A[1],$=19;$>4&&!R[Xa[$-1]];--$);var N,J,W,H,oe=u+5<<3,pe=Fs(i,Wt)+Fs(n,ri)+o,Ie=Fs(i,h)+Fs(n,v)+o+14+3*$+Fs(D,R)+(2*D[16]+3*D[17]+7*D[18]);if(pe>=oe&&Ie>=oe)return Yn(e,c,t.subarray(l,l+u));if(ot(e,c,1+(pe>Ie)),c+=2,pe>Ie){N=Ws(h,f),J=h,W=Ws(v,_),H=v;var _e=Ws(R,M);for(ot(e,c,S-257),ot(e,c+5,P-1),ot(e,c+10,$-4),c+=14,x=0;$>x;++x)ot(e,c+3*x,R[Xa[x]]);c+=3*$;for(var Ce=[w,E],Te=0;2>Te;++Te){var ae=Ce[Te];for(x=0;ae.length>x;++x)ot(e,c,_e[ve=31&ae[x]]),c+=R[ve],ve>15&&(ot(e,c,ae[x]>>>5&127),c+=ae[x]>>>12)}}else N=rp,J=Wt,W=ip,H=ri;for(x=0;a>x;++x)if(r[x]>255){var ve;Cs(e,c,N[257+(ve=r[x]>>>18&31)]),c+=J[ve+257],ve>7&&(ot(e,c,r[x]>>>23&31),c+=No[ve]);var ge=31&r[x];Cs(e,c,W[ge]),c+=H[ge],ge>3&&(Cs(e,c,r[x]>>>5&8191),c+=Lo[ge])}else Cs(e,c,N[r[x]]),c+=J[r[x]];return Cs(e,c,N[256]),c+J[256]},np=new gs([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),op=function(){for(var t=new gs(256),e=0;256>e;++e){for(var s=e,r=9;--r;)s=(1&s&&3988292384)^s>>>1;t[e]=s}return t}(),nn=function(t,e,s){for(;s;++e)t[e]=s,s>>>=8};function ap(t,e){e===void 0&&(e={});var s=function(){var d=4294967295;return{p(h){for(var f=d,p=0;h.length>p;++p)f=op[255&f^h[p]]^f>>>8;d=f},d(){return 4294967295^d}}}(),r=t.length;s.p(t);var i,n,o,a,l,u=(a=10+((i=e).filename&&i.filename.length+1||0),l=8,function(d,h,f,p,v,_){var m=d.length,w=new Ve(p+m+5*(1+Math.floor(m/7e3))+v),S=w.subarray(p,w.length-v),k=0;if(!h||8>m)for(var E=0;m>=E;E+=65535){var P=E+65535;m>P?k=Yn(S,k,d.subarray(E,P)):(S[E]=!0,k=Yn(S,k,d.subarray(E,m)))}else{for(var D=np[h-1],x=D>>>13,A=8191&D,R=(1<E;++E){var ve=W(E),ge=32767&E,Ye=$[ve];if(M[ge]=Ye,$[ve]=ge,E>=Te){var Pt=m-E;if((Ie>7e3||Ce>24576)&&Pt>423){k=tl(d,S,0,H,oe,pe,_e,Ce,ae,E-ae,k),Ce=Ie=_e=0,ae=E;for(var ue=0;286>ue;++ue)oe[ue]=0;for(ue=0;30>ue;++ue)pe[ue]=0}var Ge=2,Et=0,bs=A,De=ge-Ye&32767;if(Pt>2&&ve==W(E-De))for(var Fe=Math.min(x,Pt)-1,ar=Math.min(32767,E),lr=Math.min(258,Pt);ar>=De&&--bs&&ge!=Ye;){if(d[E+Ge]==d[E+Ge-De]){for(var Be=0;lr>Be&&d[E+Be]==d[E+Be-De];++Be);if(Be>Ge){if(Ge=Be,Et=De,Be>Fe)break;var cr=Math.min(De,Be-2),Jt=0;for(ue=0;cr>ue;++ue){var Yt=E-De+ue+32768&32767,Es=Yt-M[Yt]+32768&32767;Es>Jt&&(Jt=Es,Ye=Yt)}}}De+=(ge=Ye)-(Ye=M[ge])+32768&32767}if(Et){H[Ce++]=268435456|Kn[Ge]<<18|Qa[Et];var pa=31&Kn[Ge],fa=31&Qa[Et];_e+=No[pa]+Lo[fa],++oe[257+pa],++pe[fa],Te=E+Ge,++Ie}else H[Ce++]=d[E],++oe[d[E]]}}k=tl(d,S,!0,H,oe,pe,_e,Ce,ae,E-ae,k)}return yu(w,0,p+_u(k)+v)}(n=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(n.length)))):12+o.mem,a,l)),c=u.length;return function(d,h){var f=h.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>h.level?4:h.level==9?2:0,d[9]=3,h.mtime!=0&&nn(d,4,Math.floor(new Date(h.mtime||Date.now())/1e3)),f){d[3]=8;for(var p=0;f.length>=p;++p)d[p+10]=f.charCodeAt(p)}}(u,e),nn(u,c-8,s.d()),nn(u,c-4,r),u}var lp=!!yn||!!wo,wu="text/plain",Pr=!1,bu=(t,e)=>{var s=t.split("#"),r=s[1],i=s[0].split("?"),n=i[0],o=i[1];if(!o)return t;var a=o.split("&").filter(l=>l.split("=")[0]!==e).join("&");return n+(a?"?"+a:"")+(r?"#"+r:"")},Ei=function(t,e,s){var r;s===void 0&&(s=!0);var i=t.split("?"),n=i[0],o=i[1],a=b({},e),l=(r=o==null?void 0:o.split("&").map(c=>{var d,h=c.split("="),f=h[0],p=s&&(d=a[f])!==null&&d!==void 0?d:h[1];return delete a[f],f+"="+p}))!==null&&r!==void 0?r:[],u=function(c,d){var h,f;d===void 0&&(d="&");var p=[];return Z(c,function(v,_){I(v)||I(_)||_==="undefined"||(h=encodeURIComponent((m=>m instanceof File)(v)?v.name:v.toString()),f=encodeURIComponent(_),p[p.length]=f+"="+h)}),p.join(d)}(a);return u&&l.push(u),l.length>0?n+"?"+l.join("&"):n},on=t=>{if(t.Ji)return t.Ji;var e=t.data,s=t.compression;if(e){if(s===Se.GZipJS){var r=ap(function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new Ve(a.length+(a.length>>>1)),d=0,h=function(_){c[d++]=_},f=0;u>f;++f){if(d+5>c.length){var p=new Ve(d+8+(u-f<<1));p.set(c),c=p}var v=a.charCodeAt(f);128>v?h(v):2048>v?(h(192|v>>>6),h(128|63&v)):v>55295&&57344>v?(h(240|(v=65536+(1047552&v)|1023&a.charCodeAt(++f))>>>18),h(128|v>>>12&63),h(128|v>>>6&63),h(128|63&v)):(h(224|v>>>12),h(128|v>>>6&63),h(128|63&v))}return yu(c,0,d)}(ns(e)),{mtime:0});return{contentType:wu,body:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength),estimatedSize:r.byteLength}}if(s===Se.Base64){var i=function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,(l,u)=>String.fromCharCode(parseInt(u,16))))}(ns(e)),n=(a=>"data="+encodeURIComponent(typeof a=="string"?a:ns(a)))(i);return{contentType:"application/x-www-form-urlencoded",body:n,estimatedSize:new Blob([n]).size}}var o=ns(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},Eu=t=>{var e,s,r=()=>t.transport==="sendBeacon"?{url:Ei(t.url,{compression:Se.Base64}),encodedBody:on(b({},t,{compression:Se.Base64,Ji:void 0}))}:{url:bu(t.url,"compression"),encodedBody:on(b({},t,{compression:void 0,Ji:void 0}))};try{e=on(t)}catch(i){if(ba(t.compression,ps(t.url,"compression")))return C.error("Failed to gzip request body, sending uncompressed payload",i),r();throw i}return e&&ba(t.compression,ps(t.url,"compression"))&&!((s=e.body)instanceof ArrayBuffer?wn(new Uint8Array(s)):ArrayBuffer.isView(s)&&wn(new Uint8Array(s.buffer,s.byteOffset,s.byteLength)))?(Pr=!0,r()):{url:t.url,encodedBody:e}},Su=t=>{try{return Eu(t)}catch(e){return C.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},cp=function(){var t=X(function*(e){var s=ns(e.data),r=yield function(n,o,a){return bn.apply(this,arguments)}(s,Y.DEBUG,{rethrow:!0});if(!r)return e;var i=yield r.arrayBuffer();return b({},e,{Ji:{contentType:wu,body:i,estimatedSize:i.byteLength}})});return function(e){return t.apply(this,arguments)}}(),up=/Failed to fetch|NetworkError|Load failed/i,xu=t=>(t==null?void 0:t.name)==="TypeError"&&up.test((t==null?void 0:t.message)||""),ku=t=>{var e=Su(t);if(e){var s=e.url,r=e.encodedBody,i=r??{},n=i.contentType,o=i.body,a=i.estimatedSize,l=new Headers;Z(t.headers,function(p,v){l.append(v,p)}),n&&l.append("Content-Type",n);var u=null,c=!1;if(ga){var d=new ga;u={signal:d.signal,timeout:setTimeout(()=>{var p,v;c=!0,d.abort((p=t.timeout,(v=new Error("PostHog request timed out"+(p?" after "+p+"ms":""))).name="AbortError",v))},t.timeout)}}var h=p=>{c&&(p==null?void 0:p.name)==="AbortError"||xu(p)?C.warn(p):C.error(p),t.callback==null||t.callback({statusCode:0,error:p})};try{var f;wo(s,b({method:(t==null?void 0:t.method)||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(f=u)==null?void 0:f.signal},t.fetchOptions)).then(p=>p.text().then(v=>{var _={statusCode:p.status,text:v};if(p.status===200)try{_.json=JSON.parse(v)}catch(m){C.error(m)}t.callback==null||t.callback(_)})).catch(h).finally(()=>u?clearTimeout(u.timeout):null)}catch(p){u&&clearTimeout(u.timeout),h(p)}}},Zn=t=>{try{var e,s=Eu(t),r=s.url,i=s.encodedBody,n=i??{},o=n.body,a=n.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:n.contentType});if(xe.sendBeacon(r,l))return;var u=O(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(O(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=h=>O(t.data)?h:b({},t.data,{batch:h});return Zn(b({},t,{data:d(u.slice(0,c))})),void Zn(b({},t,{data:d(u.slice(c))}))}C.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),ku(b({},t,{Yi:!0}))}catch(h){C.warn("Beacon send failed",h)}},sl=(t,e,s,r)=>{var i=r==="query"?e==="POST"?"sent_at":"_":void 0;return Ei(s===Se.GZipJS?bu(t,"compression"):t,b({},i?{[i]:Date.now().toString()}:{},s===Se.GZipJS?{}:{compression:s}))},Ar=[];wo&&Ar.push({transport:"fetch",method:ku}),yn&&Ar.push({transport:"XHR",method(t){var e=Su(t);if(e){var s=new yn,r=e.encodedBody;s.open(t.method||"GET",e.url,!0);var i=r??{},n=i.contentType,o=i.body;Z(t.headers,function(a,l){s.setRequestHeader(l,a)}),n&&s.setRequestHeader("Content-Type",n),t.timeout&&(s.timeout=t.timeout),s.onreadystatechange=()=>{if(s.readyState===4){var a={statusCode:s.status,text:s.responseText};if(s.status===200)try{a.json=JSON.parse(s.responseText)}catch{}t.callback==null||t.callback(a)}},s.send(o)}}}),xe!=null&&xe.sendBeacon&&Ar.push({transport:"sendBeacon",method:Zn});var Xn=3e3;class dp{constructor(e,s){this.Xi=!0,this.tr=[],this.er=rt((s==null?void 0:s.flush_interval_ms)||Xn,250,5e3,C.createLogger("flush interval"),Xn),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},s=Object.values(e);[...s.filter(r=>r.url.indexOf("/e")===0),...s.filter(r=>r.url.indexOf("/e")!==0)].map(r=>{this.lr(b({},r,{transport:"sendBeacon"}))})}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout(()=>{if(this.sr(),this.tr.length>0){var s=this.ar(),r=function(){var n=s[i],o=new Date().getTime();n.data&&O(n.data)&&Z(n.data,a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp}),e.lr(n)};for(var i in s)r()}},this.er))}lr(e){try{this.ir(e)}catch(s){C.error(s)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return Z(this.tr,s=>{var r,i=s,n=(i?i.batchKey:null)||i.url;I(e[n])&&(e[n]=b({},i,{data:[]})),(r=e[n].data)==null||r.push(i.data)}),this.tr=[],e}}var hp=["retriesPerformedSoFar"];class pp{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!I(g)&&"onLine"in g.navigator&&(this.dr=g.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},ie(g,"online",this.vr),ie(g,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var s=e.retriesPerformedSoFar,r=Ql(e,hp);lt(s)&&(r.url=Ei(r.url,{retry_count:s})),this._instance._send_request(b({},r,{callback:i=>{if(i.statusCode!==200&&(400>i.statusCode||i.statusCode>=500)){if((i.statusCode===0?3:10)>(s??0))return void this.At(b({retriesPerformedSoFar:s},r));i.statusCode===0&&C.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(s??0)+" retries.")}r.callback==null||r.callback(i)}}))}At(e){var s=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=s+1;var r=function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))}(s),i=Date.now()+r;this.tr.push({retryAt:i,requestOptions:e});var n="Enqueued failed request for retry in "+r;navigator.onLine||(n+=" (Browser is offline)"),C.warn(n),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout(()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()},this.hr)}cr(){var e=Date.now(),s=[],r=this.tr.filter(n=>e>n.retryAt||(s.push(n),!1));if(this.tr=s,r.length>0)for(var i of r)this.retriableRequest(i.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,I(g)||(this.vr&&(g.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(g.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var s=e.requestOptions;try{this._instance._send_request(b({},s,{transport:"sendBeacon"}))}catch(r){C.error(r)}}this.tr=[]}}class fp{constructor(e){this.yr=()=>{var s,r,i,n;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+((o==null?void 0:o.clientHeight)||0),c=(o==null?void 0:o.scrollHeight)||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(s=this.br.maxScrollY)!==null&&s!==void 0?s:0),this.br.maxScrollHeight=Math.max(l,(r=this.br.maxScrollHeight)!==null&&r!==void 0?r:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(i=this.br.maxContentY)!==null&&i!==void 0?i:0),this.br.maxContentHeight=Math.max(c,(n=this.br.maxContentHeight)!==null&&n!==void 0?n:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){ie(g,"scroll",this.yr,{capture:!0}),ie(g,"scrollend",this.yr,{capture:!0}),ie(g,"resize",this.yr)}scrollElement(){if(!this._r)return g==null?void 0:g.document.documentElement;var e=O(this._r)?this._r:[this._r];for(var s of e){var r=g==null?void 0:g.document.querySelector(s);if(r)return r}}wr(e){var s=e==="y"?"scrollTop":"scrollLeft";if(this._r){var r=this.scrollElement();return r&&r[s]||0}return g?e==="y"?g.scrollY||g.pageYOffset||g.document.documentElement.scrollTop||0:g.scrollX||g.pageXOffset||g.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var gp=t=>du(t==null?void 0:t.config.mask_personal_data_properties,t==null?void 0:t.config.custom_personal_data_properties,t==null?void 0:t.config.disable_capture_url_hashes);class rl{constructor(e,s,r,i){this.kr=n=>{var o=this.Sr();if(!o||o.sessionId!==n){var a={sessionId:n,props:this.Cr(this._instance)};this.Mr.register({[Bn]:a})}},this._instance=e,this.Tr=s,this.Mr=r,this.Cr=i||gp,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[Bn]}getSetOnceProps(){var e,s=(e=this.Sr())==null?void 0:e.props;return s?"r"in s?hu(s,this._instance.config.disable_capture_url_hashes):{$referring_domain:s.referringDomain,$pathname:s.initialPathName,utm_source:s.utm_source,utm_campaign:s.utm_campaign,utm_medium:s.utm_medium,utm_content:s.utm_content,utm_term:s.utm_term}:{}}getSessionProps(){var e={};return Z(Ro(this.getSetOnceProps()),(s,r)=>{r==="$current_url"&&(r="url"),e["$session_entry_"+En(r)]=s}),e}}class Oo{on(e,s){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(s),()=>{this.Er[e]=this.Er[e].filter(r=>r!==s)}}emit(e,s){for(var r of this.Er[e]||[])r(s);for(var i of this.Er["*"]||[])i(e,s)}constructor(){this.Er={}}}var Ps=se("[SessionId]");class il{on(e,s){return this.Ir.on(e,s)}constructor(e,s,r){var i;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new Oo,this.Lr=(u,c)=>!(!lt(u)||!lt(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===ht)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=s||dt,this.Nr=r||dt;var n=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*rt(this.Ne.session_idle_timeout_seconds||1800,60,36e3,Ps.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+n+"_window_id",this.Br="ph_"+n+"_primary_window_exists",this.Hr()){var o=ce.H(this.jr),a=ce.H(this.Br);o&&!a?this.Or=o:ce.q(this.jr),ce.F(this.Br,!0)}if((i=this.Ne.bootstrap)!=null&&i.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){Ps.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return I(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter(s=>s!==e)}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&ce.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&ce.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?ce.H(this.jr):null}Zr(e){var s=this.Pr;return!Re(s)&&!Re(e)&&5e3>Math.abs(e-s)}Ur(e,s,r){var i=s!==this._sessionActivityTimestamp,n=!(e!==this.Dr||r!==this._sessionStartTimestamp);this._sessionStartTimestamp=r,this._sessionActivityTimestamp=s,this.Dr=e,n&&!i||n&&this.Zr(s)||(this.Pr=s,this.Mr.register({[is]:[s,e,r]}))}Gr(){var e,s=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return lt(s)&&s>0}Qr(){this.Gr()?this.Mr.refreshKey(is):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!Re(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var s=this.Jr();s[1]===this.Dr&&s[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[is]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],s=lt(e)?e:0,r=lt(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(s,r)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[is];return O(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&g&&(g.removeEventListener(Zr,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&ce.q(this.Br)},ie(g,Zr,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,s){if(e===void 0&&(e=!1),s===void 0&&(s=null),this.Ne.cookieless_mode===ht)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var r=s||new Date().getTime(),i=this.Jr(),n=i[1],o=i[2],a=this.Yr(),l=this.Vr(),u=lt(o)&&Math.abs(r-o)>864e5,c=!1,d=!1,h=!n,f=n,p=!h&&!e&&this.Lr(r,a);if(p){(p=this.Xr(r))||Ps.info("cross-tab refresh kept the session alive",{sessionId:n});var v=this.Jr();n=v[1],o=v[2]}h||p||u?(n=this.$r(),l=this.Nr(),Ps.info("new session ID generated",{sessionId:n,windowId:l,changeReason:{noSessionId:h,activityTimeout:p,sessionPastMaximumLength:u}}),o=r,c=!0):(l||(l=this.Nr(),c=!0),(d=n!==f)&&(Ps.info("adopted cross-tab session id",{sessionId:n,windowId:l}),c=!0));var _=lt(a)&&e&&!u?a:r,m=lt(o)?o:new Date().getTime();this.Wr(l),this.Ur(n,_,m),e||this.qr();var w={noSessionId:h,activityTimeout:p,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach(S=>S(n,l,w)),{sessionId:n,windowId:l,sessionStartTimestamp:m,changeReason:c?w:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout(()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()},1.1*this.sessionTimeoutMs))}}var Iu=function(t,e){if(!t)return!1;var s=t.userAgent;if(s&&Sa(s,e))return!0;try{var r=t==null?void 0:t.userAgentData;if(r!=null&&r.brands&&r.brands.some(i=>Sa(i==null?void 0:i.brand,e)))return!0}catch{}return!!t.webdriver};function Cu(){return(Cu=X(function*(){var t=xe==null?void 0:xe.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),s=e==null?void 0:e.model;return z(s)&&s.length>0?s:void 0}catch(r){return void C.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",r)}})).apply(this,arguments)}var ii=function(t,e){if(!function(s){try{new RegExp(s)}catch{return!1}return!0}(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function an(t,e,s){return ns({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:s})}var Fu={exact:(t,e)=>e.some(s=>t.some(r=>s===r)),is_not:(t,e)=>e.every(s=>t.every(r=>s!==r)),regex:(t,e)=>e.some(s=>t.some(r=>ii(s,r))),not_regex:(t,e)=>e.every(s=>t.every(r=>!ii(s,r))),icontains:(t,e)=>e.map(_r).some(s=>t.map(_r).some(r=>s.includes(r))),not_icontains:(t,e)=>e.map(_r).every(s=>t.map(_r).every(r=>!s.includes(r))),gt:(t,e)=>e.some(s=>{var r=parseFloat(s);return!isNaN(r)&&t.some(i=>r>parseFloat(i))}),lt:(t,e)=>e.some(s=>{var r=parseFloat(s);return!isNaN(r)&&t.some(i=>rt.toLowerCase();function Pu(t,e){return!t||Object.entries(t).every(s=>{var r=s[1],i=e==null?void 0:e[s[0]];if(I(i)||Re(i))return!1;var n=[String(i)],o=Fu[r.operator];return!!o&&o(r.values,n)})}var Qn="custom",nl="i.posthog.com",vp=/^\/static\//;class mp{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,s=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return s||(s=this.apiHost.replace("."+nl,".posthog.com")),s==="https://app.posthog.com"?"https://us.posthog.com":s}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":Qn),this.en[this.apiHost]}rn(e){if(vp.test(e)){var s=this.instance.config.asset_host;if(typeof s=="string")return s.trim().replace(/\/$/,"")||void 0}}endpointFor(e,s){if(s===void 0&&(s=""),s&&(s=s[0]==="/"?s:"/"+s),e==="ui")return this.uiHost+s;if(e==="flags")return this.flagsApiHost+s;if(e==="assets"){var r=this.rn(s);if(r)return""+r+s}if(this.region===Qn)return this.apiHost+s;var i=nl+s;switch(e){case"assets":return"https://"+this.region+"-assets."+i;case"api":return"https://"+this.region+"."+i}}}function Au(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var V=se("[Surveys]"),Ru="seenSurvey_",Tu=t=>{try{var e=(s=>((r,i)=>""+Ru+function(n){return n.current_iteration&&n.current_iteration>0?n.id+"_"+n.current_iteration:n.id}(i))(0,s))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(s){V.error("Failed to persist survey seen state",s)}},_p=[tn.Popover,tn.Widget,tn.API],yp={ignoreConditions:!1,ignoreDelay:!1,displayType:Gn.Popover},wp=se("[PostHog ExternalIntegrations]"),bp={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class Ep{constructor(e){this._instance=e}ai(e,s){var r;(r=T.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,e,i=>{if(i)return wp.error("failed to load script",i);s()})}startIfEnabledOrStop(){var e=this,s=function(){var n,o,a,l=r[0],u=r[1];!u||(n=T.__PosthogExtensions__)!=null&&(n=n.integrations)!=null&&n[l]||e.ai(bp[l],()=>{var c;(c=T.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)}),!u&&(o=T.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=T.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var r of Object.entries((i=this._instance.config.integrations)!==null&&i!==void 0?i:{})){var i;s()}}}class Sp{constructor(e,s){this.rt=e,this.nn=s,this.sn=new Map,this.an=!1}add(e){var s=this;return X(function*(){if(s.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(s.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');s.sn.set(e.name,e);try{var r=e.setup(s.nn);r&&(yield r)}catch(n){var i=s.sn.get(e.name)===e;i&&s.sn.delete(e.name),s.rt.error('Failed to set up browser extension "'+e.name+'"',n),i&&s.ln(e)}})()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var s of(this.sn.clear(),e))this.ln(s)}}ln(e){try{var s=e.dispose==null?void 0:e.dispose();s&&Ee(s.then)&&s.then(void 0,r=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',r)})}catch(r){this.rt.error('Failed to dispose browser extension "'+e.name+'"',r)}}}class xp{constructor(e){this._instance=e}initialize(){}get(e){var s=this._instance.persistence;if(typeof e=="string")return s==null?void 0:s.get_property(e);var r={};for(var i of e){var n=s==null?void 0:s.get_property(i);I(n)||(r[i]=n)}return r}set(e,s){var r;(r=this._instance.persistence)==null||r.register(typeof e=="string"?{[e]:s}:e)}remove(e){var s;(s=this._instance.persistence)==null||s.unregister(e)}}var ol="extensionsRemoteConfig";class kp{constructor(e){this.an=!1,this.instance=e,this.rt=C,this.un=e.hn,this.kv=new xp(e),this.onEvent=s=>mr(this.instance.on("eventCaptured",r=>{try{s({event:r.event,properties:r.properties})}catch(i){this.rt.error("Browser extension event listener failed",i)}})),this.onRemoteConfig=s=>{if(this.an)return mr(()=>{});var r=n=>{try{s(n)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},i=this.instance.dn.on(ol,r);return this.un&&r(this.un),mr(i)},this.vn=new Sp(C.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(Js))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(Js);return typeof e=="string"?e:void 0}get library(){return{name:Y.LIB_NAME,version:Y.LIB_VERSION}}get initialPersonProperties(){var e,s;return(e=(s=this.instance.persistence)==null?void 0:s.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,s,r,i,n=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(s=n==null?void 0:n.sessionId)!==null&&s!==void 0?s:"",windowId:(r=n==null?void 0:n.windowId)!==null&&r!==void 0?r:"",sessionStartTimestamp:(i=n==null?void 0:n.sessionStartTimestamp)!==null&&i!==void 0?i:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,s,r){var i=this;return X(function*(){r?i.instance.capture(e,s,{timestamp:r.timestamp,uuid:r.uuid,$set:r.set,$set_once:r.setOnce}):i.instance.capture(e,s)})()}registerDynamicEventProperties(e){return mr(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(ol,e))}sendRequest(e,s){var r=this;return X(function*(){var i;s===void 0&&(s={});var n=r.instance.requestRouter.endpointFor((i=s.target)!==null&&i!==void 0?i:"api",e),o={method:s.method,url:s.query?Ei(n,s.query):n,data:s.body,headers:s.headers,timeout:s.timeoutMs,fireCallbackOnDrop:!0,transport:s.transport,compression:s.compression,timestampMode:s.sentAt};return s.transport==="sendBeacon"?(r.instance._send_request(o),{statusCode:202}):new Promise(a=>{o.callback=a,r.instance._send_request(o)})})()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var qs={},ln=0,ni=()=>{},al='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',As="Surveys module not available",ll="sanitize_properties is deprecated. Use before_send instead",$u="Invalid value for property_denylist config: ",Ip=["token","distinct_id",jc],ss="posthog",Mu=!lp&&(Pe==null?void 0:Pe.indexOf("MSIE"))===-1&&(Pe==null?void 0:Pe.indexOf("Mozilla"))===-1,cn=t=>{var e;return b({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:Ch(F==null?void 0:F.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:ni,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:re&&z(re==null?void 0:re.search)&&re.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(g==null||(e=g.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(s){C.error("Bad HTTP status: "+s.statusCode+" "+s.text)},get_device_id:s=>s,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:zn,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:Xn},error_tracking:{},_onCapture:ni},(s=>({rageclick:s&&s>="2026-05-30"?{content_ignorelist:Bh,ignore_text_selection:!0}:!s||"2025-11-30">s||{content_ignorelist:!0},capture_pageview:!s||"2025-05-24">s||"history_change",session_recording:s&&s>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:s&&s>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:s&&s>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:s&&s>="2026-01-30"?"head":"body",internal_or_test_user_hostname:s&&s>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:s&&s>="2026-05-30"?250:0,split_storage:!(!s||"2026-05-30">s),detect_google_search_app:!(!s||"2026-05-30">s),disable_capture_url_hashes:!(!s||"2026-06-25">s)}))(t))},Cp=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],cl=t=>{var e={};for(var s of Cp){var r=s[0],i=s[1];I(t[r])||(e[i]=t[r])}var n=ee({},e,t),o=t.__preview_external_dependency_versioned_paths;return I(o)||(I(t.strict_script_versioning)&&(n.strict_script_versioning=!!o),z(o)&&I(t.asset_host)&&(n.asset_host=o)),O(t.property_blacklist)&&(I(t.property_denylist)?n.property_denylist=t.property_blacklist:O(t.property_denylist)?n.property_denylist=[...t.property_blacklist,...t.property_denylist]:C.error($u+t.property_denylist)),n};class Fp{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){C.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class $e{pn(e,s){if(e){var r=this.sn.indexOf(e);r!==-1&&this.sn.splice(r,1)}return this.sn.push(s),s.initialize==null||s.initialize(),s}gn(){return this.config.cookieless_mode===ht||this.config.cookieless_mode===Bt&&this.consent.isRejected()}get decideEndpointWasHit(){var e,s;return(e=(s=this.featureFlags)==null?void 0:s.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,s;return(e=(s=this.featureFlags)==null?void 0:s.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Fp,this.mn=!1,this.version=Y.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new Oo,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=cn(),this.SentryIntegration=Gh,this.sentryIntegration=r=>function(i,n){var o=iu(i,n);return{name:ru,processEvent:a=>o(a)}}(this,r),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new fp(this),this.pageViewManager=new Ka(this),this.rateLimiter=new sp(this),this.requestRouter=new mp(this),this.consent=new Mh(this),this.externalIntegrations=new Ep(this);var s=(e=$e.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=s.featureFlags&&new s.featureFlags(this),this.toolbar=s.toolbar&&new s.toolbar(this),this.surveys=s.surveys&&new s.surveys(this),this.conversations=s.conversations&&new s.conversations(this),this.logs=s.logs&&new s.logs(this),this.metrics=s.metrics&&new s.metrics(this),this.experiments=s.experiments&&new s.experiments(this),this.exceptions=s.exceptions&&new s.exceptions(this),this.people={set:(r,i,n)=>{var o=z(r)?{[r]:i}:r;this.setPersonProperties(o),n==null||n({})},set_once:(r,i,n)=>{var o=z(r)?{[r]:i}:r;this.setPersonProperties(void 0,o),n==null||n({})}},this.on("eventCaptured",r=>C.info('send "'+(r==null?void 0:r.event)+'"',r))}init(e,s,r){if(r&&r!==ss){var i,n=(i=qs[r])!==null&&i!==void 0?i:new $e;return n._init(e,s,r),qs[r]=n,qs[ss][r]=n,n}return this._init(e,s,r)}_init(e,s,r){var i,n;s===void 0&&(s={});var o,a=z(e)?e.trim():"";if(!a)return C.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=cn(s.defaults),s.debug=this.Cn(s.debug),this.Mn=s,this.Tn=[],s.person_profiles?this.xn=s.person_profiles:s.process_person&&(this.xn=s.process_person);var l=cn(s.defaults),u=cl(s),c=ee({},l,u,{name:r,token:a});te(l.rageclick)&&te(u.rageclick)&&(c.rageclick=ee({},l.rageclick,u.rageclick)),te(l.session_recording)&&te(u.session_recording)&&(c.session_recording=ee({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&C.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=s.disable_compression?void 0:Se.GZipJS;var d=this.En();if(this.persistence=new en(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new en(b({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&ce.N()){var h=ce.H(this.bn);O(h)&&h.forEach(P=>{z(P)&&this.yn.add(P)})}else ce.q(this.bn);var f=b({},this.persistence.props),p=b({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new dp(P=>this.Pn(P),this.config.request_queue_config),this.Rn=new pp(this),this.__request_queue=[];var v=this.gn();if(v||(this.sessionManager=new il(this),this.sessionPropsManager=new rl(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId((P,D,x)=>{(x!=null&&x.activityTimeout||x!=null&&x.sessionPastMaximumLength||x!=null&&x.crossTabAdoption)&&this.An()})),this.Fn(),this.config.__preview_deferred_init_extensions?(C.info("Deferring extension initialization to improve startup performance"),setTimeout(()=>{this.Ln(v)},0)):(C.info("Initializing extensions synchronously"),this.Ln(v)),Y.DEBUG=Y.DEBUG||this.config.debug,Y.DEBUG&&C.info("Starting in debug mode",{this:this,config:s,thisC:b({},this.config),p:f,s:p}),!this.config.identity_distinct_id||(i=s.bootstrap)!=null&&i.distinctID||(s.bootstrap=b({},s.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((n=s.bootstrap)==null?void 0:n.distinctID)!==void 0){var _=s.bootstrap.distinctID,m=this.get_distinct_id(),w=this.persistence.get_property(Ue);if(s.bootstrap.isIdentifiedID&&m!=null&&m!==_&&w===Zt)this.identify(_);else if(s.bootstrap.isIdentifiedID&&m!=null&&m!==_&&w===At)C.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var S=this.config.get_device_id(dt()),k=s.bootstrap.isIdentifiedID?S:_;this.persistence.set_property(Ue,s.bootstrap.isIdentifiedID?At:Zt),this.register({distinct_id:_,$device_id:k})}}if(v)this.register_once({distinct_id:hr,$device_id:null},"");else if(!this.get_distinct_id()){var E=this.config.get_device_id(dt());this.register_once({distinct_id:E,$device_id:E},""),this.persistence.set_property(Ue,Zt)}return ie(g,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),s.segment?function(P,D){var x=P.config.segment;if(!x)return D();(function(A,R){var M=A.config.segment;if(!M)return R();var $=J=>{var W=()=>J.anonymousId()||dt();A.config.get_device_id=W,J.id()&&(A.register({distinct_id:J.id(),$device_id:W()}),A.persistence.set_property(Ue,At)),R()},N=M.user();"then"in N&&Ee(N.then)?N.then($):$(N)})(P,()=>{x.register((A=>{typeof Promise<"u"&&Promise.resolve||Xi.warn("This browser does not have Promise support, and can not use the segment integration");var R=(M,$)=>{if(!$)return M;M.event.userId||M.event.anonymousId===A.get_distinct_id()||(Xi.info("No userId set, resetting PostHog"),A.reset()),M.event.userId&&M.event.userId!==A.get_distinct_id()&&(Xi.info("UserId set, identifying with PostHog"),A.identify(M.event.userId));var N=A.calculateEventProperties($,M.event.properties);return M.event.properties=Object.assign({},N,M.event.properties),M};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:M=>R(M,M.event.event),page:M=>R(M,ts),identify:M=>R(M,Ji),screen:M=>R(M,"$screen")}})(P)).then(()=>{D()})})}(this,()=>this.On()):this.On(),Ee(this.config._onCapture)&&this.config._onCapture!==ni&&(C.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",P=>this.config._onCapture(P.event,P))),this.config.ip&&C.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||function(){return Cu.apply(this,arguments)}().then(P=>{P&&this.register({[Gi]:P})}).catch(ni),this}Fn(){var e,s,r,i,n,o,a=(e=(s=this.config.__extensionClasses)==null?void 0:s.featureFlags)!==null&&e!==void 0?e:(r=$e.__defaultExtensionClasses)==null?void 0:r.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((i=this.Dn)==null||i.call(this),this.Dn=void 0,this.featureFlags=new a(this)),Ee(this.featureFlags.onReloading)&&Ee(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading(()=>{this.dn.emit("featureFlagsReloading",!0)}),this.$n().add(this.featureFlags)):(n=(o=this.featureFlags).initialize)==null||n.call(o))}Ln(e){var s,r,i,n,o,a,l,u=performance.now(),c=b({},$e.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(s=this.exceptions)!==null&&s!==void 0?s:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push(()=>{this.scrollManager.startMeasuringScrollPosition()}),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(r=this.surveys)!==null&&r!==void 0?r:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(i=this.logs)!==null&&i!==void 0?i:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(n=this.metrics)!==null&&n!==void 0?n:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,Vh)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach(h=>{h.initialize&&d.push(()=>{h.initialize==null||h.initialize()})}),d.push(()=>{if(this.Nn){var h=this.Nn;this.Nn=void 0,this.sn.forEach(f=>f.onRemoteConfig==null?void 0:f.onRemoteConfig(h))}}),this.qn(d,u)}qn(e,s){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-s>=30&&e.length>0)return void setTimeout(()=>{this.qn(e,s)},0);var r=e.shift();if(r)try{r()}catch(n){C.error("Error initializing extension:",n)}}var i=Math.round(performance.now()-s);this.register_for_session({[Uc]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Hc]:i}),this.config.__preview_deferred_init_extensions&&C.info("PostHog extensions initialized ("+i+"ms)")}Zi(e){var s;if(!F||!F.body)return C.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout(()=>{this.Zi(e)},500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var r,i=e.config;i.supportedCompression&&!this.config.disable_compression&&(this.compression=L(i.supportedCompression,Se.GZipJS)?Se.GZipJS:L(i.supportedCompression,Se.Base64)?Se.Base64:void 0),(r=i.analytics)!=null&&r.endpoint&&(this.analyticsDefaultEndpoint=i.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:zn}),(s=this.jn)==null||s.handleRemoteConfig(e),this.sn.forEach(n=>n.onRemoteConfig==null?void 0:n.onRemoteConfig(e))}On(){try{this.config.loaded(this)}catch(r){C.critical("`loaded` function failed",r)}if(this.Bn(),this.config.internal_or_test_user_hostname&&re!=null&&re.hostname){var e=re.hostname,s=this.config.internal_or_test_user_hostname;(typeof s=="string"?e===s:s.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout(()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()},1),this.Un=new fu(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&pr(this.__request_queue,e=>this.Pn(e)),this.__request_queue=[],this.Bn()}_handle_unload(){var e,s,r,i,n;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(s=this.metrics)==null||s.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(Ki),(r=this.logs)==null||r.flushLogs("sendBeacon"),(i=this.In)==null||i.unload(),(n=this.Rn)==null||n.unload()):this.zn()&&this.capture(Ki,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?Mu?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=b({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(I(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(s=>{var r,i,n,o=b({},s);o.timeout=o.timeout||6e4;var a,l,u,c,d,h=(r=o.transport)!==null&&r!==void 0?r:"fetch";h==="sendBeacon"&&I(o.compression)&&o.data&&(o.compression=Se.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=O(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d==null?void 0:d.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=function(_,m){return m===void 0&&(m=new Date().toISOString()),O(_)?_.map(w=>b({},w,{sent_at:m})):b({},_,{sent_at:m})}(o.data))),o.url=sl(o.url,o.method,o.compression,o.timestampMode);var f=Ar.filter(_=>!o.disableTransport||!_.transport||!o.disableTransport.includes(_.transport)),p=(i=(n=function(_,m){for(var w=0;_.length>w;w++)if(_[w].transport===h)return _[w]}(f))==null?void 0:n.method)!==null&&i!==void 0?i:f[0].method;if(!p)throw new Error("No available transport method");var v=_=>{try{p(_)}catch(m){xu(m)?C.warn(m):C.error(m),o.callback==null||o.callback({statusCode:0,error:m})}};h!=="sendBeacon"&&o.data&&o.compression===Se.GZipJS&&Pd&&typeof Promise<"u"&&!Pr?cp(o).then(_=>{v(_)}).catch(_=>{if(Ea(_))return Pr=!0,void v(b({},o,{compression:void 0,url:sl(s.url,s.method,void 0,s.timestampMode)}));(m=>{if(!m||typeof m!="object")return!1;var w="name"in m?String(m.name):"";return Ea(m)||w===ec})(_)&&(Pr=!0),v(o)}):p(o)})(b({},e,{callback:s=>{var r,i;this.rateLimiter.checkForLimiting(s),400>s.statusCode||(r=(i=this.config).on_request_error)==null||r.call(i,s),e.callback==null||e.callback(s)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){ln++;try{var s,r=[],i=[],n=[];pr(e,a=>{if(a)if(O(s=a[0]))n.push(a);else if(Ee(a))try{a.call(this)}catch(l){C.error("Error executing queued PostHog call",a,l)}else O(a)&&s==="alias"?r.push(a):O(a)&&s.indexOf("capture")!==-1&&Ee(this[s])?n.push(a):i.push(a)});var o=function(a,l){pr(a,function(u){try{if(O(u[0])){var c=l;Z(u,function(d){c=c[d[0]].apply(c,d.slice(1))})}else l[u[0]].apply(l,u.slice(1))}catch(d){C.error("Error executing queued PostHog call",u,d)}})};o(r,this),o(i,this),o(n,this)}finally{ln--}}push(e){if(ln>0&&O(e)&&z(e[0])){var s=$e.prototype[e[0]];Ee(s)&&s.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,s,r){var i,n,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!I(e)&&z(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=r!=null&&r.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){s!=null&&s.$current_url&&!z(s==null?void 0:s.$current_url)&&(C.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),s==null||delete s.$current_url),e!=="$exception"||r!=null&&r.Wn||C.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,h=(r==null?void 0:r.timestamp)||d,f=Ca(r==null?void 0:r.uuid,dt),p={uuid:f,event:e,properties:this.calculateEventProperties(e,s||{},h,f)};e===ts&&this.config.__preview_capture_bot_pageviews&&u&&(p.event="$bot_pageview",p.properties.$browser_type="bot"),c&&(p.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var v=e==="$feature_flag_called"&&p.properties.$feature_flag_has_experiment===!1&&this.get_property(Vr)===!0;r!=null&&r.$set&&!v&&(p.$set=r==null?void 0:r.$set);var _=r==null?void 0:r.$unset;_&&(p.$unset=_);var m,w,S,k=v?void 0:this.Vn(r==null?void 0:r.$set_once,e!==$a,e===Ji);if(k&&(p.$set_once=k),r!=null&&r._noTruncate||(n=this.config.properties_string_max_length,o=p,a=$=>z($)?$.slice(0,n):$,l=new Set,p=function $(N,J){if(N!==Object(N))return a?a(N):N;if(!l.has(N)){var W;if(l.add(N),O(N))W=[],pr(N,oe=>{W.push($(oe))});else{var H={};Z(N,(oe,pe)=>{l.has(oe)||(H[pe]=$(oe))}),W=H}return W}}(o)),p.timestamp=h,I(r==null?void 0:r.timestamp)||(p.properties.$event_time_override_provided=!0,p.properties.$event_time_override_system_time=d),v&&(p.properties=function($,N){N===void 0&&(N=[]);var J={},W=H=>{$[H]!==void 0&&(J[H]=$[H])};return Ad.forEach(W),N.forEach(W),J}(p.properties,Ip)),e===ft.DISMISSED||e===ft.SENT){var E=s==null?void 0:s[sn.SURVEY_ID],P=s==null?void 0:s[sn.SURVEY_ITERATION];Tu({id:E,current_iteration:P}),p.$set=b({},p.$set,{[(m={id:E,current_iteration:P},w=e===ft.SENT?"responded":"dismissed",S="$survey_"+w+"/"+m.id,m.current_iteration&&m.current_iteration>0&&(S="$survey_"+w+"/"+m.id+"/"+m.current_iteration),S)]:!0})}else e===ft.SHOWN&&(p.$set=b({},p.$set,{[sn.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===tp.SHOWN){var D=s==null?void 0:s[Ya.TOUR_TYPE];D&&(p.$set=b({},p.$set,{[Ya.TOUR_LAST_SEEN_DATE+"/"+D]:new Date().toISOString()}))}var x=b({},p.properties.$set,p.$set);if(vt(x)||this.setPersonPropertiesForFlags(x),!B(this.config.before_send)){var A=this.Pt(p);if(!A)return;(p=A).uuid=Ca(p.uuid,dt)}this.dn.emit("eventCaptured",p);var R=(i=r==null?void 0:r._url)!==null&&i!==void 0?i:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),M={method:"POST",url:R,data:p,compression:"best-available",timestampMode:(r==null?void 0:r._batchKey)==="recordings"||/\/s\/(?:\?|$)/.test(R)?"body":"capture-body",batchKey:r==null?void 0:r._batchKey,transport:r==null?void 0:r.transport};return!this.config.request_batching||r&&(r==null||!r._batchKey)||r!=null&&r.send_instantly?this.Pn(M):this.In.enqueue(M),p}C.critical("This capture call is ignored due to client rate limiting.")}}else C.error("No event name provided to posthog.capture")}else C.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",s=>e(s.event,s))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new kp(this)}cn(e){this._n.push(e);var s=!0;return()=>{if(s){s=!1;var r=this._n.indexOf(e);r!==-1&&this._n.splice(r,1)}}}calculateEventProperties(e,s,r,i,n){if(r=r||new Date,!this.persistence||!this.sessionPersistence)return s;var o=n?void 0:this.persistence.remove_event_timer(e),a=b({},s);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[jc]=!0),e==="$snapshot"){var l=b({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!z(a.distinct_id)&&!de(a.distinct_id)||Sn(a.distinct_id))&&C.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=function(E,P,D,x){var A,R,M,$;if(x===void 0&&(x=!1),!Pe)return{};var N,J=E?[...fs,...P||[]]:[],W=function(lr){for(var Be=0;ka.length>Be;Be++){var cr=ka[Be],Jt=cr[1],Yt=cr[0].exec(lr),Es=Yt&&(Ee(Jt)?Jt(Yt,lr):Jt);if(Es)return Es}return["",""]}(Pe),H=W[0],oe=W[1],pe=(N=typeof navigator<"u"?navigator:void 0)!=null&&N.brave?{brave:!0}:{},Ie={};I(D)||(Ie.detectGoogleSearchApp=D);var _e={},Ce=(A=navigator)==null||(A=A.userAgentData)==null?void 0:A.platform,Te=(R=navigator)==null?void 0:R.maxTouchPoints,ae=g==null||(M=g.screen)==null?void 0:M.width,ve=g==null||($=g.screen)==null?void 0:$.height,ge=g==null?void 0:g.devicePixelRatio;I(Ce)||(_e.userAgentDataPlatform=Ce),I(Te)||(_e.maxTouchPoints=Te),I(ae)||(_e.screenWidth=ae),I(ve)||(_e.screenHeight=ve),I(ge)||(_e.devicePixelRatio=ge);var Ye,Pt,ue,Ge,Et,bs,De,Fe,ar=ee(Ro({$os:H,$os_version:oe,$browser:kc(Pe,navigator.vendor,pe,Ie),$device:Ia(Pe),$device_type:(Pt=Pe,ue=_e,Fe=Ia(Pt),Fe===ac||Fe===oc||Fe==="Kobo"||Fe==="Kindle Fire"||Fe===wc?us:Fe===Gs||Fe===as||Fe===Ks||Fe===kn?"Console":Fe===cc?"Wearable":Fe?Le:(ue==null?void 0:ue.userAgentDataPlatform)==="Android"&&((Ge=ue==null?void 0:ue.maxTouchPoints)!==null&&Ge!==void 0?Ge:0)>0?600>Math.min((Et=ue==null?void 0:ue.screenWidth)!==null&&Et!==void 0?Et:0,(bs=ue==null?void 0:ue.screenHeight)!==null&&bs!==void 0?bs:0)/((De=ue==null?void 0:ue.devicePixelRatio)!==null&&De!==void 0?De:1)?Le:us:"Desktop"),$timezone:pu(),$timezone_offset:Xh()}),{$current_url:Zs(x?It(re==null?void 0:re.href):re==null?void 0:re.href,J,Xs),$host:re==null?void 0:re.host,$pathname:re==null?void 0:re.pathname,$raw_user_agent:Pe.length>1e3?Pe.substring(0,997)+"...":Pe,$browser_version:Jd(Pe,navigator.vendor,pe,Ie),$browser_language:Ja(),$browser_language_prefix:(Ye=Ja(),typeof Ye=="string"?Ye.split("-")[0]:void 0),$screen_height:g==null?void 0:g.screen.height,$screen_width:g==null?void 0:g.screen.width,$viewport_height:g==null?void 0:g.innerHeight,$viewport_width:g==null?void 0:g.innerWidth,$lib:Y.LIB_NAME,$lib_version:Y.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return Y.SDK_DIST_CHANNEL&&(ar.$sdk_dist_channel=Y.SDK_DIST_CHANNEL),ar}(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(n,r.getTime()),h=d.windowId;a.$session_id=d.sessionId,a.$window_id=h}this.sessionPropsManager&&ee(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&ee(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(f=this.Rn)==null?void 0:f.length}catch(E){a.$sdk_debug_error_capturing_properties=String(E)}if(this.requestRouter.region===Qn&&(a.$lib_custom_api_host=this.config.api_host),u=e!==ts||n?e!==Ki||n?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(r):this.pageViewManager.doPageView(r,i),a=ee(a,u),e===ts&&F&&(a.title=F.title),!I(o)){var p=r.getTime()-o;a.$duration=parseFloat((p/1e3).toFixed(3))}Pe&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var v=this.persistence.properties(),_=this.sessionPersistence.properties();Z(["$referrer","$referring_domain"],E=>{E in v&&delete _[E]});var m={};if(this._n.length>0)for(var w of this._n.slice())try{ee(m,w())}catch(E){C.error("Failed to produce browser extension event properties",E)}(a=ee({},c,v,_,b({},m,a))).$is_identified=this._isIdentified(),O(this.config.property_denylist)?Z(this.config.property_denylist,function(E){delete a[E]}):C.error($u+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var S=this.config.sanitize_properties;S&&(C.error(ll),a=S(a,e));var k=this.Zn();return a.$process_person_profile=k,k&&!n&&this.Gn("_calculate_event_properties"),a}Vn(e,s,r){var i;if(s===void 0&&(s=!0),r===void 0&&(r=!1),!this.persistence||!this.Zn()||this.mn&&!r)return e;var n=this.persistence.get_initial_props(),o=(i=this.sessionPropsManager)==null?void 0:i.getSetOnceProps(),a=ee({},n,o||{},e||{}),l=this.config.sanitize_properties;return l&&(C.error(ll),a=l(a,"$set_once")),s&&(this.mn=!0),vt(a)?void 0:a}register(e,s){var r;(r=this.persistence)==null||r.register(e,s)}register_once(e,s,r){var i;(i=this.persistence)==null||i.register_once(e,s,r)}register_for_session(e){var s;(s=this.sessionPersistence)==null||s.register(e),Object.keys(e).forEach(r=>this.yn.add(r)),this.Qn()}unregister(e){var s;(s=this.persistence)==null||s.unregister(e)}unregister_for_session(e){var s;(s=this.sessionPersistence)==null||s.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,s){this.register({[e]:s})}An(){this.yn.forEach(e=>{var s;(s=this.sessionPersistence)==null||s.unregister(e)}),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!ce.N())ce.q(this.bn);else{var s=[];this.yn.forEach(r=>s.push(r)),s.length>0?ce.F(this.bn,s):ce.q(this.bn)}}getFeatureFlag(e,s){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlag(e,s)}getFeatureFlagPayload(e){var s;return(s=this.featureFlags)==null?void 0:s.getFeatureFlagPayload(e)}getFeatureFlagResult(e,s){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlagResult(e,s)}getAllFeatureFlags(){var e,s;return(e=(s=this.featureFlags)==null?void 0:s.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,s){var r,i;return(r=(i=this.featureFlags)==null?void 0:i.isFeatureEnabled(e,s))!==null&&r!==void 0?r:s==null?void 0:s.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,s,r){var i;(i=this.featureFlags)==null||i.updateFlags(e,s,r)}updateEarlyAccessFeatureEnrollment(e,s,r){var i;(i=this.featureFlags)==null||i.updateEarlyAccessFeatureEnrollment(e,s,r)}getEarlyAccessFeatures(e,s,r){var i;return s===void 0&&(s=!1),(i=this.featureFlags)==null?void 0:i.getEarlyAccessFeatures(e,s,r)}on(e,s){return this.dn.on(e,s)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:As}),()=>{})}onSessionId(e){var s,r;return(s=(r=this.sessionManager)==null?void 0:r.onSessionId(e))!==null&&s!==void 0?s:()=>{}}getSurveys(e,s){s===void 0&&(s=!1),this.surveys?this.surveys.getSurveys(e,s):e([],{isLoaded:!1,error:As})}getActiveMatchingSurveys(e,s){s===void 0&&(s=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,s):e([],{isLoaded:!1,error:As})}renderSurvey(e,s){var r;(r=this.surveys)==null||r.renderSurvey(e,s)}displaySurvey(e,s){var r;s===void 0&&(s=yp),(r=this.surveys)==null||r.displaySurvey(e,s)}cancelPendingSurvey(e){var s;(s=this.surveys)==null||s.cancelPendingSurvey(e)}canRenderSurvey(e){var s,r;return(s=(r=this.surveys)==null?void 0:r.canRenderSurvey(e))!==null&&s!==void 0?s:{visible:!1,disabledReason:As}}canRenderSurveyAsync(e,s){var r,i;return s===void 0&&(s=!1),(r=(i=this.surveys)==null?void 0:i.canRenderSurveyAsync(e,s))!==null&&r!==void 0?r:Promise.resolve({visible:!1,disabledReason:As})}Jn(e){return!e||Sn(e)?(C.critical("Unique user id has not been set in posthog.identify"),!1):e===hr?(C.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(C.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,s,r){if(!this.__loaded||!this.persistence)return C.uninitializedWarning("posthog.identify");if(de(e)&&(e=e.toString(),C.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var i=this.get_distinct_id();this.register({$user_id:e}),this.get_property(Js)||this.register_once({$had_persisted_distinct_id:!0,$device_id:i},""),e!==i&&e!==this.get_property(Ms)&&(this.unregister(Ms),this.register({distinct_id:e}));var n,o=(this.persistence.get_property(Ue)||Zt)===Zt,a=e!==i,l=!a&&o;if(a&&o)this.persistence.set_property(Ue,At),this.setPersonPropertiesForFlags({$set:s||{},$set_once:r||{}},!1),this.capture(Ji,{distinct_id:e,$anon_distinct_id:i},{$set:s||{},$set_once:r||{}}),this.Sn=an(e,s,r),(n=this.featureFlags)==null||n.setAnonymousDistinctId(i);else if(l){this.persistence.set_property(Ue,At);var u=s||{},c=r||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=an(e,s,r)}else(s||r)&&this.setPersonProperties(s,r);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(jt)):l&&(s||r)&&this.reloadFeatureFlags()}}setPersonProperties(e,s){if((e||s)&&this.Gn("posthog.setPersonProperties")){var r=an(this.get_distinct_id(),e,s);this.Sn!==r?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:s||{}},!0),this.capture("$set",{$set:e||{},$set_once:s||{}}),this.Sn=r):C.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var s,r=(O(e)?e:[e]).filter(i=>z(i)&&i.length>0);r.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((s=this.featureFlags)==null||s.unsetPersonPropertiesForFlags(r,!0),this.capture("$set",{$unset:r}),this.Sn=null)}group(e,s,r){if(e&&s){var i=this.getGroups(),n=i[e]!==s;if(n&&this.resetGroupPropertiesForFlags(e),this.register({$groups:b({},i,{[e]:s})}),n||r){var o={$group_type:e,$group_key:s};r&&(o.$group_set=r),this.capture($a,o)}r&&this.setGroupPropertiesForFlags({[e]:r}),n&&!r&&this.reloadFeatureFlags()}else C.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,s){var r;s===void 0&&(s=!0),(r=this.featureFlags)==null||r.setPersonPropertiesForFlags(e,s)}resetPersonPropertiesForFlags(e){var s;e===void 0&&(e=!0),(s=this.featureFlags)==null||s.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,s){var r;s===void 0&&(s=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((r=this.featureFlags)==null||r.setGroupPropertiesForFlags(e,s))}resetGroupPropertiesForFlags(e){var s;(s=this.featureFlags)==null||s.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,s){var r,i,n,o,a,l,u,c,d,h;if(s===void 0&&(s=!1),C.info("reset"),!this.__loaded)return C.uninitializedWarning("posthog.reset");var f,p=this.get_property(Js),v=this.get_property(Gi),_=this.get_property(Ut),m=this.is_capturing();if(this.consent.reset(),s||!m||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(r=this.persistence)==null||r.clear(),(i=this.sessionPersistence)==null||i.clear(),this.yn.clear(),this.Qn(),I(_)||(f=this.persistence)==null||f.register({[Ut]:_}),(n=this.surveys)==null||n.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(Ue,Zt),(h=this.sessionManager)==null||h.resetSessionId(),this.Sn=null,this.config.cookieless_mode===ht)this.register_once({distinct_id:hr,$device_id:null},"");else{var w=this.config.get_device_id(dt());this.register_once({distinct_id:w,$device_id:e?w:p},""),e||I(v)||this.register({[Gi]:v})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var s=this;return X(function*(){var r,i,n,o,a,l,u;if(s.__loaded){(r=s.Un)==null||r.stop(),(i=s.jn)==null||i.dispose(),(n=s.sessionRecording)==null||n.dispose(),(o=s.logs)==null||o.flushLogs("sendBeacon"),(a=s.metrics)==null||a.flush("sendBeacon"),(l=s.In)==null||l.unload(),(u=s.Rn)==null||u.unload();try{var c;(c=s.featureFlags)==null||c.destroy()}catch(d){C.error("Error while destroying feature flags",d)}}else C.uninitializedWarning("posthog.shutdown")})()}setIdentity(e,s){var r;this.config.identity_distinct_id=e,this.config.identity_hash=s,this.alias(e),(r=this.conversations)==null||r.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,s;return(e=(s=this.sessionManager)==null?void 0:s.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var s=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=s.sessionStartTimestamp,i=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+s.sessionId);if(e!=null&&e.withTimestamp&&r){var n,o=(n=e.timestampLookBack)!==null&&n!==void 0?n:10;if(!r)return i;i+="?t="+Math.max(Math.floor((new Date().getTime()-r)/1e3)-o,0)}return i}alias(e,s){return e===this.get_property(Mc)?(C.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(I(s)&&(s=this.get_distinct_id()),e!==s?(this.Kn(Ms,e),this.capture("$create_alias",{alias:e,distinct_id:s})):(C.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var s=b({},this.config);if(te(e)){var r,i,n,o,a,l,u,c,d,h,f,p;ee(this.config,cl(e));var v=this.En();(r=this.persistence)==null||r.update_config(this.config,s,v),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new en(b({},this.config,{persistence:"sessionStorage"}),v,!1);var _=this.Cn(this.config.debug);Ke(_)&&(this.config.debug=_),Ke(this.config.debug)&&(this.config.debug?(Y.DEBUG=!0,Q.N()&&Q.F("ph_debug",!0),C.info("set_config",{config:e,oldConfig:s,newConfig:b({},this.config)})):(Y.DEBUG=!1,Q.N()&&Q.q("ph_debug"))),(i=this.featureFlags)==null||i.updateConfig==null||i.updateConfig(this.config,this.Qi()),(n=this.exceptionObserver)==null||n.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(h=this.deadClicksAutocapture)==null||h.startIfEnabledOrStop(),(f=this.surveys)==null||f.loadIfEnabled(),this.es(),(p=this.externalIntegrations)==null||p.startIfEnabledOrStop()}}_overrideSDKInfo(e,s){Y.LIB_NAME=e,Y.LIB_VERSION=s}startSessionRecording(e){var s,r,i,n,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((s=this.sessionManager)==null||s.checkAndGetSessionAndWindowId(),l.sampling&&((r=this.sessionRecording)==null||r.overrideSampling()),l.linked_flag&&((i=this.sessionRecording)==null||i.overrideLinkedFlag()),l.url_trigger&&((n=this.sessionRecording)==null||n.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,s){if(this.exceptions){var r=new Error("PostHog syntheticException"),i=this.exceptions.buildProperties(e,{handled:!0,syntheticException:r});return this.exceptions.sendExceptionEvent(b({},i,s))}}addExceptionStep(e,s){var r;(r=this.exceptions)==null||r.addExceptionStep(e,s)}captureLog(e){var s;(s=this.logs)==null||s.captureLog(e)}get logger(){var e,s;return(e=(s=this.logs)==null?void 0:s.logger)!==null&&e!==void 0?e:$e.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var s,r;return(s=(r=this.toolbar)==null?void 0:r.loadToolbar(e))!==null&&s!==void 0&&s}get_property(e){var s;return(s=this.persistence)==null?void 0:s.props[e]}getSessionProperty(e){var s;return(s=this.sessionPersistence)==null?void 0:s.props[e]}toString(){var e,s=(e=this.config.name)!==null&&e!==void 0?e:ss;return s!==ss&&(s=ss+"."+s),s}_isIdentified(){var e,s;return((e=this.persistence)==null?void 0:e.get_property(Ue))===At||((s=this.sessionPersistence)==null?void 0:s.get_property(Ue))===At}Zn(){var e,s;return!(this.config.person_profiles==="never"||this.config.person_profiles===zn&&!this._isIdentified()&&vt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[Ms])&&((s=this.persistence)==null||(s=s.props)==null||!s[Jr]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(C.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(Jr,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==Bt)}es(){var e,s,r,i,n=this.En();return((e=this.persistence)==null?void 0:e.xi)!==n&&((r=this.persistence)==null||r.set_disabled(n)),((s=this.sessionPersistence)==null?void 0:s.xi)!==n&&((i=this.sessionPersistence)==null||i.set_disabled(n)),n&&(this.yn.clear(),this.Qn()),n}opt_in_capturing(e){var s;if(this.config.cookieless_mode!==ht){if(this.gn()){var r,i,n,o,a;this.Yn(!0,!0),(r=this.sessionManager)==null||r.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=new il(this),this.pageViewManager=new Ka(this),this.persistence&&(this.sessionPropsManager=new rl(this,this.sessionManager,this.persistence));var l,u=(n=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&n!==void 0?n:(a=$e.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(s=this.sessionRecording)==null||s.startIfEnabledOrStop(),this.config.cookieless_mode==Bt&&((c=this.surveys)==null||c.loadIfEnabled()),(I(e==null?void 0:e.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e==null?void 0:e.captureEventName)!==null&&d!==void 0?d:"$opt_in",e==null?void 0:e.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else C.warn(al)}opt_out_capturing(){var e,s,r;this.config.cookieless_mode!==ht?(this.config.cookieless_mode===Bt&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===Bt&&(this.register({distinct_id:hr,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(s=this.sessionManager)==null||s.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):C.warn(al)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===ht||(this.config.cookieless_mode===Bt?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return xe?Iu(xe,this.config.custom_blocked_useragents):void 0}Hn(){F&&(F.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture(ts,{title:F.title},{send_instantly:!0}),this.kn&&(F.removeEventListener(Yr,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),ie(F,Yr,this.kn)))}debug(e){e===!1?(g==null||g.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(g==null||g.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(C.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):function(s,r,i,n,o){var a=r in s&&!B(s[r]),l=i in s&&!B(s[i]);return a?s[r]:!!l&&(o&&o.warn("Config field '"+i+"' is deprecated. Please use '"+r+"' instead. The old field will be removed in a future major version."),s[i])}(e,"advanced_disable_flags","advanced_disable_decide",0,C)}Pt(e){var s;if(B(this.config.before_send))return e;var r=Object.keys((s=e.properties)!==null&&s!==void 0?s:{}).filter(Od),i=O(this.config.before_send)?this.config.before_send:[this.config.before_send],n=e;for(var o of i){if(n=o(n),B(n)){var a="Event '"+e.event+"' was rejected in beforeSend function";return Ld(e.event)?C.warn(a+". This can cause unexpected behavior."):C.info(a),null}n.properties&&!vt(n.properties)||C.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of r)if(n.properties&&B(n.properties[l]))return C.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return n}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,s){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:s})}captureTraceMetric(e,s,r){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:s,$ai_metric_value:String(r)})}Cn(e){var s=Ke(e)&&!e,r=Q.N()&&Q.P("ph_debug")==="true";return!s&&(!!r||e)}}$e.__defaultExtensionClasses={},$e.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),function(t,e){for(var s=0;e.length>s;s++)t.prototype[e[s]]=kh(t.prototype[e[s]])}($e,["identify"]);class ul{constructor(e){this.disabled=e===!1;var s=te(e)?e:{};this.thresholdPx=s.threshold_px||30,this.timeoutMs=s.timeout_ms||1e3,this.clickCount=s.click_count||3,this.clicks=[]}isRageClick(e,s,r){if(this.disabled)return!1;var i=this.clicks[this.clicks.length-1];if(i&&Math.abs(e-i.x)+Math.abs(s-i.y)r-i.timestamp){if(this.clicks.push({x:e,y:s,timestamp:r}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:s,timestamp:r}];return!1}}var un="$copy_autocapture",dn=se("[AutoCapture]");function hn(t,e){return e.length>t?e.slice(0,t)+"...":e}function Pp(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!Ct(e));return e}function Ap(t,e){var s,r,i=e.e,n=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!Ct(t))return{props:{}};for(var c=[t],d=new Set([t]),h=t;h.parentNode&&!Me(h,"body")&&Yc>c.length;)if(Jc(h.parentNode)){var f=h.parentNode.host;if(d.has(f))break;d.add(f),c.push(f),h=f}else{if(!Ct(h.parentNode)||d.has(h.parentNode))break;d.add(h.parentNode),c.push(h.parentNode),h=h.parentNode}var p,v,_=[],m={},w=!1,S=!1;if(Z(c,x=>{var A=Vn(x);if(Me(x,"a")){var R=x.getAttribute("href");w=!!(A&&R&&zs(R))&&(u?It(R):R)}L(Qr(x),"ph-no-capture")&&(S=!0),_.push(function($,N,J,W,H){H===void 0&&(H=!1);var oe=$.tagName.toLowerCase(),pe={tag_name:oe};$o.indexOf(oe)>-1&&!J&&(pe.$el_text=oe.toLowerCase()==="a"||oe.toLowerCase()==="button"?hn(1024,qa($)):hn(1024,Ys($)));var Ie=Qr($);Ie.length>0&&(pe.classes=Ie.filter(function(ae){return ae!==""})),Z($.attributes,function(ae){var ve;if((!tu($)||["name","id","class","aria-label"].indexOf(ae.name)!==-1)&&(W==null||!W.includes(ae.name))&&!N&&zs(ae.value)&&(!z(ve=ae.name)||ve.substring(0,10)!=="_ngcontent"&&ve.substring(0,7)!=="_nghost")){var ge=ae.value;ae.name==="class"&&(ge=To(ge).join(" ")),pe["attr__"+ae.name]=hn(1024,ae.name==="href"&&H?It(ge):ge)}});for(var _e=1,Ce=1,Te=$;Te=Pp(Te);)_e++,Te.tagName===$.tagName&&Ce++;return pe.nth_child=_e,pe.nth_of_type=Ce,pe}(x,n,o,a,u));var M=function($){if(!Vn($))return{};var N={};return Z($.attributes,function(J){if(J.name&&J.name.indexOf("data-ph-capture-attribute")===0){var W=J.name.replace("data-ph-capture-attribute-",""),H=J.value;W&&H&&zs(H)&&(N[W]=H)}}),N}(x);ee(m,M)}),S)return{props:{},explicitNoCapture:S};if(o||(_[0].$el_text=Me(t,"a")||Me(t,"button")?qa(t):Ys(t)),w){var k,E;_[0].attr__href=w;var P=(k=ei(w))==null?void 0:k.host,D=g==null||(E=g.location)==null?void 0:E.host;P&&D&&P!==D&&(p=w)}return{props:ee({$event_type:i.type,$ce_version:1},l?{}:{$elements:_},{$elements_chain:(v=_,function(x){return x.map(A=>{var R,M,$="";if(A.tag_name&&($+=A.tag_name),A.attr_class)for(var N of(A.attr_class.sort(),A.attr_class))$+="."+N.replace(/"/g,"");var J=b({},A.text?{text:A.text}:{},{"nth-child":(R=A.nth_child)!==null&&R!==void 0?R:0,"nth-of-type":(M=A.nth_of_type)!==null&&M!==void 0?M:0},A.href?{href:A.href}:{},A.attr_id?{attr_id:A.attr_id}:{},A.attributes),W={};return Fr(J).sort((H,oe)=>H[0].localeCompare(oe[0])).forEach(H=>{var oe=H[1];return W[Va(H[0].toString())]=Va(oe.toString())}),($+=":")+Fr(W).map(H=>H[0]+'="'+H[1]+'"').join("")}).join(";")}(function(x){return x.map(A=>{var R,M,$={text:(R=A.$el_text)==null?void 0:R.slice(0,400),tag_name:A.tag_name,href:(M=A.attr__href)==null?void 0:M.slice(0,2048),attr_class:Wh(A),attr_id:A.attr__id,nth_child:A.nth_child,nth_of_type:A.nth_of_type,attributes:{}};return Fr(A).filter(N=>N[0].indexOf("attr__")===0).forEach(N=>$.attributes[N[0]]=N[1]),$})}(v)))},(s=_[0])!=null&&s.$el_text?{$el_text:(r=_[0])==null?void 0:r.$el_text}:{},p&&i.type==="click"?{$external_click_url:p}:{},m)}}var Rs=se("[ExceptionAutocapture]"),dl=()=>{},Rp=se("[TracingHeaders]"),$t=se("[Web Vitals]"),hl=9e5,pl="disabled",fl="lazy_loading",Ts="awaiting_config",yr="missing_config";se("[SessionRecording]"),se("[SessionRecording]");var eo="[SessionRecording]",at=se(eo),Tp=se("[Heatmaps]");function pn(t){return te(t)&&"clientX"in t&&"clientY"in t&&de(t.clientX)&&de(t.clientY)}var wr=se("[Product Tours]"),fn=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(Fo))},$p=["$set_once","$set"],Ze=se("[SiteApps]"),gl="Error while initializing PostHog app with config id ";function es(t,e,s){if(B(t))return!1;switch(s){case"exact":return t===e;case"contains":var r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(r,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class Mp{constructor(e){this.ns=new Oo,this.ss=(s,r)=>this.os(s,r)&&this.ls(s,r)&&this.us(s,r)&&this.hs(s,r),this.os=(s,r)=>r==null||!r.event||(s==null?void 0:s.event)===(r==null?void 0:r.event),this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,s;I((e=this._instance)==null?void 0:e._addCaptureHook)||(s=this._instance)==null||s._addCaptureHook((r,i)=>{this.on(r,i)})}register(e){var s,r;if(!I((s=this._instance)==null?void 0:s._addCaptureHook)&&(e.forEach(o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach(u=>{var c;(c=this.ds)==null||c.add((u==null?void 0:u.event)||"")})}),(r=this._instance)!=null&&r.autocapture)){var i,n=new Set;e.forEach(o=>{var a;(a=o.steps)==null||a.forEach(l=>{l!=null&&l.selector&&n.add(l==null?void 0:l.selector)})}),(i=this._instance)==null||i.autocapture.setElementSelectors(n)}}on(e,s){var r;s!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(s.event))&&this.vs&&((r=this.vs)==null?void 0:r.size)>0&&this.vs.forEach(i=>{this.cs(s,i)&&this.ns.emit("actionCaptured",i.name)})}fs(e){this.onAction("actionCaptured",s=>e(s))}cs(e,s){if((s==null?void 0:s.steps)==null)return!1;for(var r of s.steps)if(this.ss(e,r))return!0;return!1}onAction(e,s){return this.ns.on(e,s)}ls(e,s){if(s!=null&&s.url){var r,i=e==null||(r=e.properties)==null?void 0:r.$current_url;if(!i||typeof i!="string"||!es(i,s.url,s.url_matching||"contains"))return!1}return!0}us(e,s){return!!this.ps(e,s)&&!!this.gs(e,s)&&!!this.ys(e,s)}ps(e,s){var r;if(s==null||!s.href)return!0;var i=this.bs(e);if(i.length>0)return i.some(a=>es(a.href,s.href,s.href_matching||"exact"));var n,o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!o&&es((n=o.match(/(?::|")href="(.*?)"/))?n[1]:"",s.href,s.href_matching||"exact")}gs(e,s){var r;if(s==null||!s.text)return!0;var i=this.bs(e);if(i.length>0)return i.some(u=>es(u.text,s.text,s.text_matching||"exact")||es(u.$el_text,s.text,s.text_matching||"exact"));var n,o,a,l=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!l&&(n=function(u){for(var c,d=[],h=/(?::|")text="(.*?)"/g;!B(c=h.exec(u));)d.includes(c[1])||d.push(c[1]);return d}(l),o=s.text,a=s.text_matching||"exact",n.some(u=>es(u,o,a)))}ys(e,s){var r,i;if(s==null||!s.selector)return!0;var n=e==null||(r=e.properties)==null?void 0:r.$element_selectors;if(n!=null&&n.includes(s.selector))return!0;var o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";if(s.selector_regex&&o)try{return new RegExp(s.selector_regex).test(o)}catch{return!1}return!1}bs(e){var s;return(e==null||(s=e.properties)==null?void 0:s.$elements)==null?[]:e==null?void 0:e.properties.$elements}hs(e,s){return s==null||!s.properties||s.properties.length===0||Pu(s.properties.reduce((r,i)=>{var n=O(i.value)?i.value.map(String):i.value!=null?[String(i.value)]:[];return r[i.key]={values:n,operator:i.operator||"exact"},r},{}),e==null?void 0:e.properties)}}class Np{constructor(e){var s;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(s=this._instance)==null||s.onSessionId==null||s.onSessionId(r=>this.Ss(r))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,s){return!!e&&Pu(e.propertyFilters,s==null?void 0:s.properties)}Ps(e,s){var r=new Map;return e.forEach(i=>{var n;(n=i.conditions)==null||(n=n[s])==null||(n=n.values)==null||n.forEach(o=>{if(o!=null&&o.name){var a=r.get(o.name)||[];a.push(i.id),r.set(o.name,a)}})}),r}Rs(e,s,r){var i=(r===Is.Activation?this.ws:this.ks).get(e),n=[];return this.As(o=>{n=o.filter(a=>i==null?void 0:i.includes(a.id))}),n.filter(o=>{var a,l=(a=o.conditions)==null||(a=a[r])==null||(a=a.values)==null?void 0:a.find(u=>u.name===e);return this.Is(l,s)})}register(e){var s;I((s=this._instance)==null?void 0:s._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var s=e.filter(r=>{var i,n;return((i=r.conditions)==null?void 0:i.actions)&&((n=r.conditions)==null||(n=n.actions)==null||(n=n.values)==null?void 0:n.length)>0});s.length!==0&&(this.Os==null&&(this.Os=new Mp(this._instance),this.Os.init(),this.Os.fs(r=>{this.onAction(r)})),s.forEach(r=>{var i,n,o,a,l;r.conditions&&(i=r.conditions)!=null&&i.actions&&(n=r.conditions)!=null&&(n=n.actions)!=null&&n.values&&((o=r.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(r.conditions.actions.values),(l=r.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach(u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(r.id),this.xs.set(u.name,c||[r.id])}}))}))}Fs(e){var s,r=e.filter(n=>{var o,a;return((o=n.conditions)==null?void 0:o.events)&&((a=n.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0}),i=e.filter(n=>{var o,a;return((o=n.conditions)==null?void 0:o.cancelEvents)&&((a=n.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0});r.length===0&&i.length===0||((s=this._instance)==null||s._addCaptureHook((n,o)=>{this.onEvent(n,o)}),this.ws=this.Ps(e,Is.Activation),this.ks=this.Ps(e,Is.Cancellation))}onEvent(e,s){var r,i,n=this.Ds(),o=(s==null||(r=s.properties)==null?void 0:r.$survey_id)||(s==null||(i=s.properties)==null?void 0:i.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return n.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return n.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,s,Is.Cancellation);l.length>0&&(n.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map(c=>c.id)}),this.Ns(l.map(c=>c.id)),l.forEach(c=>this.Bs(c.id)))}if(this.ws.has(e)){n.info("event name matched",{event:e,eventPayload:s,items:this.ws.get(e)});var u=this.Rs(e,s,Is.Activation);this.Hs(u.map(c=>c.id))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var s;if(e.length!==0){var r=!((s=this._instance)==null||s.get_session_id==null||!s.get_session_id()),i=[];for(var n of e)r&&this.Cs(n)?this.qs(n)&&this.Us(n):i.push(n);i.length>0&&(this._s=[...new Set([...this._s,...i])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter(r=>r!==e);var s=this.zs();return!s.includes(e)&&(this.Ws([...s,e]),this.Vs(),!0)}Ns(e){var s=new Set(e);this._s=this._s.filter(n=>!s.has(n));var r=this.Zs(),i=r.filter(n=>!s.has(n));i.length!==r.length&&(this.Ws(i),i.length===0&&this.Gs()),this.js(e)}Qs(){var e,s=this.Ms();if(!s)return{};var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[s];return r&&typeof r=="object"?r:{}}Us(e){if(this.Ms()){var s=this.Qs();this.Ts(b({},s,{[e]:Date.now()}))}}js(e){if(this.Ms()){var s=this.Qs(),r={},i=!1;for(var n of Object.entries(s)){var o=n[0],a=n[1];e.includes(o)?i=!0:r[o]=a}i&&(vt(r)?this.Es():this.Ts(r))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var s=this.Qs()[e];return de(s)?s:void 0}}Zs(){var e,s=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[s])||[]}zs(){var e,s,r=this.Zs();if(r.length===0)return[];var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],n=(s=this._instance)==null||s.get_session_id==null?void 0:s.get_session_id();return n&&i===n?r:[]}Vs(){var e,s=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();s&&this.Xs(s)}Gs(){this.ta()}Ss(e){var s,r=(s=this._instance)==null||(s=s.persistence)==null?void 0:s.props[this.Ys()];if(r&&r!==e){var i=this.Zs(),n=this.Qs();i.length>0&&(this.Ws([]),i.filter(o=>de(n[o])).forEach(o=>this.Bs(o))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter(e=>!this.ea(e))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class Lp extends Np{constructor(e){super(e)}Js(){return Dn}Ys(){return kr}Ms(){return Ir}Ts(e){var s;(s=this._instance)==null||(s=s.persistence)==null||s.register({[Ir]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Ir)}Cs(e){var s,r;this.As(n=>{r=n.find(o=>o.id===e)});var i=(s=r)==null||(s=s.appearance)==null?void 0:s.surveyPopupDelaySeconds;return de(i)&&i>0}ra(){return ft.SHOWN}As(e){var s;(s=this._instance)==null||s.getSurveys(e)}Bs(e){var s;(s=this._instance)==null||s.cancelPendingSurvey(e)}Ds(){return V}Ws(e){var s;(s=this._instance)==null||(s=s.persistence)==null||s.register({[Dn]:e})}Xs(e){var s;(s=this._instance)==null||(s=s.persistence)==null||s.register({[kr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(kr)}ea(){return!1}$s(e,s){var r;this.As(n=>{r=n.find(o=>o.id===s)});var i=!r||function(n){var o;return Au(n)&&!((o=n.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||n.schedule==="always"}(r);return i?e===ft.SHOWN?"consume":"ignore":e===ft.SHOWN?"persist":e===ft.DISMISSED||e===ft.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var br="SDK is not enabled or survey functionality is not yet loaded",vl="Disabled. Not loading surveys.",Op=g!=null&&g.location?ti(g.location.hash,"__posthog")||ti(location.hash,"state"):null,ml="_postHogToolbarParams",_l=se("[Toolbar]"),yl=se("[FeatureFlags]");class Dp{constructor(e,s){s===void 0&&(s=!1),this.na=!1,this.update(e,s)}update(e,s){this.sa=((r,i)=>{var n,o,a,l;return{bootstrap:{featureFlags:(n=r.bootstrap)==null?void 0:n.featureFlags,featureFlagPayloads:(o=r.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:i,featureFlagsDisabled:!!r.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!r.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!r.advanced_feature_flags_dedup_per_session,cacheTtlMs:r.feature_flag_cache_ttl_ms,requestTimeoutMs:r.feature_flag_request_timeout_ms,compression:r.disable_compression?"none":"base64",evaluationContexts:(a=(l=r.evaluation_contexts)!==null&&l!==void 0?l:r.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:O(r.flag_keys)?r.flag_keys:void 0}})(e,s),!e.evaluation_environments||e.evaluation_contexts||this.na||(yl.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),I(e.flag_keys)||O(e.flag_keys)||yl.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var wl=se("[FeatureFlags]"),Mt=se("[FeatureFlags]",{debugEnabled:!0}),gn=`" failed. Feature flags didn't load in time.`,bl="connection_error",El=t=>{for(var e={},s=0;t.length>s;s++)e[t[s]]=!0;return e},Sl=t=>{var e={};for(var s of Fr(t||{})){var r=s[1];r&&(e[s[0]]=r)}return e},Xe=se("[Error tracking]"),xl="Refusing to render web experiment since the viewer is a likely bot",Bp={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>ii(e,t),not_regex:(t,e)=>!ii(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class ye{get Ne(){return this._instance.config}constructor(e){var s=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(r){r===void 0&&(r=!1),s.getWebExperiments(i=>{ye.aa("retrieved web experiments from the server"),s.oa=new Map,i.forEach(n=>{if(n.feature_flag_key){var o;s.oa&&(ye.aa("setting flag key ",n.feature_flag_key," to web experiment ",n),(o=s.oa)==null||o.set(n.feature_flag_key,n));var a=s._instance.getFeatureFlag(n.feature_flag_key);z(a)&&n.variants[a]&&s.la(n.name,a,n.variants[a].transforms)}else if(n.variants)for(var l in n.variants){var u=n.variants[l];ye.ua(u,s._instance)&&s.la(n.name,l,u.transforms)}})},r)},this._instance=e,this._instance.onFeatureFlags(r=>{this.onFeatureFlags(r)})}initialize(){}onFeatureFlags(e){if(this._is_bot())ye.aa(xl);else if(!this.Ne.disable_web_experiments){if(B(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();ye.aa("applying feature flags",e),e.forEach(s=>{var r;if(this.oa&&(r=this.oa)!=null&&r.has(s)){var i,n=this._instance.getFeatureFlag(s),o=(i=this.oa)==null?void 0:i.get(s);n&&o!=null&&o.variants[n]&&this.la(o.name,n,o.variants[n].transforms)}})}}previewWebExperiment(){var e=ye.getWindowLocation();if(e!=null&&e.search){var s=ps(e==null?void 0:e.search,"__experiment_id"),r=ps(e==null?void 0:e.search,"__experiment_variant");s&&r&&(ye.aa("previewing web experiments "+s+" && "+r),this.getWebExperiments(i=>{this.ha(parseInt(s),r,i)},!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,s,r){if(this.Ne.disable_web_experiments&&!r)return e([]);var i=this._instance.get_property("$web_experiments");if(i&&!s)return e(i);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:n=>e(n.statusCode===200&&n.json&&n.json.experiments||[])})}ha(e,s,r){var i=r.filter(n=>n.id===e);i&&i.length>0&&(ye.aa("Previewing web experiment ["+i[0].name+"] with variant ["+s+"]"),this.la(i[0].name,s,i[0].variants[s].transforms))}static ua(e,s){return!B(e.conditions)&&ye.da(e,s)&&ye.va(e)}static da(e,s){var r;if(B(e.conditions)||B((r=e.conditions)==null?void 0:r.url))return!0;var i=ye.getWindowLocation();if(i){var n,o,a,l=Vc(s,i.href);return(n=e.conditions)==null||!n.url||Bp[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return g==null?void 0:g.location}static va(e){var s;if(B(e.conditions)||B((s=e.conditions)==null?void 0:s.utm))return!0;var r=au();if(r.utm_source){var i,n,o,a,l,u,c,d,h=(i=e.conditions)==null||(i=i.utm)==null||!i.utm_campaign||((n=e.conditions)==null||(n=n.utm)==null?void 0:n.utm_campaign)==r.utm_campaign,f=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==r.utm_source,p=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==r.utm_medium,v=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==r.utm_term;return h&&p&&v&&f}return!1}static aa(e){for(var s=arguments.length,r=new Array(s>1?s-1:0),i=1;s>i;i++)r[i-1]=arguments[i];C.info("[WebExperiments] "+e,r)}la(e,s,r){this._is_bot()?ye.aa(xl):s!=="control"?r.forEach(i=>{if(i.selector){var n;ye.aa("applying transform of variant "+s+" for experiment "+e+" ",i);var o=(n=document)==null?void 0:n.querySelectorAll(i.selector);o==null||o.forEach(a=>{var l=a;i.html&&(l.innerHTML=i.html),i.css&&l.setAttribute("style",i.css)})}}):ye.aa("Control variants leave the page unmodified.")}_is_bot(){return xe&&this._instance?Iu(xe,this.Ne.custom_blocked_useragents):void 0}}var je=se("[Conversations]"),Nt="Conversations not available yet.",kl="console",Nu="__posthogHandledLogsRequestError",vn=(t,e)=>{var s=t instanceof Error?t:new Error(e);return s[Nu]=!0,s},Il=t=>!!t&&typeof t=="object"&&t[Nu]===!0,Si={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=wl,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Dp(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var s;(s=this.Ea)==null||s.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),s=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(s):s();var e,s}Pa(t){if(this.nn===t)return g&&ie(g,"online",this.Ca),this.Ra=t.registerDynamicEventProperties(()=>this.Aa()?this.fa:this.pa),this.Fa(),this.initialize()}destroy(){g==null||g.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],g==null||g.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da(()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)})}q(t){this.Da(()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)})}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[Ls,Os,xr,Qe]){var s=this.Oa(e);I(s)||(t[e]=s)}this.fa=t;var r=b({},t),i=this.Oa(Lt);if(i)for(var n of Object.entries(i))r["$feature/"+n[0]]=n[1];this.pa=r}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(Hs);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter(e=>{var s=e&&typeof e=="string"&&e.trim().length>0;return s||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),s}):[]}qa(){var t=this.Ne.flagKeys;if(!I(t))return t.filter(e=>{var s=e&&typeof e=="string"&&e.trim().length>0;return s||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),s})}initialize(){var t,e,s=this.Ne,r=(t=(e=s.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(r).length){var i,n,o=(i=(n=s.bootstrap)==null?void 0:n.featureFlagPayloads)!==null&&i!==void 0?i:{},a=Object.keys(r).filter(u=>!!r[u]).reduce((u,c)=>(u[c]=r[c]||!1,u),{}),l=Object.keys(o).filter(u=>a[u]).reduce((u,c)=>(o[c]&&(u[c]=o[c]),u),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,s){var r,i,n=s!=null&&s.merge&&(r=this.Oa(Lt))!==null&&r!==void 0?r:{},o=s!=null&&s.merge&&(i=this.Oa(Os))!==null&&i!==void 0?i:{},a=b({},n,t),l=b({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],h=c[1];u[d]={key:d,enabled:_a(h),variant:ya(h),reason:void 0,metadata:I(l==null?void 0:l[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(Ln),e=this.Oa(Qe),s=this.Oa(Ot);if(!s&&!e)return t||{};var r=ee({},t||{}),i=[...new Set([...Object.keys(s||{}),...Object.keys(e||{})])];for(var n of i){var o,a,l=r[n],u=e==null?void 0:e[n],c=I(u)?(o=l==null?void 0:l.enabled)!==null&&o!==void 0&&o:!!u,d=I(u)?l==null?void 0:l.variant:typeof u=="string"?u:void 0,h=s==null?void 0:s[n],f=b({},l,{enabled:c,variant:c?d??(l==null?void 0:l.variant):void 0});c!==(l==null?void 0:l.enabled)&&(f.original_enabled=l==null?void 0:l.enabled),d!==(l==null?void 0:l.variant)&&(f.original_variant=l==null?void 0:l.variant),h&&(f.metadata=b({},l==null?void 0:l.metadata,{payload:h,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),r[n]=f}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:s,finalDetails:r}),this.ca=!0),r}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map(s=>{var r=t[s];return{key:s,enabled:_a(r),variant:ya(r),payload:ma(e[s])}})}getFlagVariants(){var t=this.Oa(Lt),e=this.Oa(Qe);if(!e)return t||{};for(var s=ee({},t||{}),r=Object.keys(e),i=0;r.length>i;i++)s[r[i]]=e[r[i]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:s}),this.ca=!0),s}getFlagPayloads(){var t=this.Oa(Os),e=this.Oa(Ot);if(!e)return t||{};for(var s=ee({},t||{}),r=Object.keys(e),i=0;r.length>i;i++)s[r[i]]=e[r[i]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:s}),this.ca=!0),s}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach(t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}}),this.Ba=setTimeout(()=>{this.Ha()},5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter(e=>e!==t)}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(jt)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var s={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:b({},e.initialPersonProperties,this.Oa(ct)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(Dt),timezone:pu()};I(e.deviceId)||(s.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(s.disable_flags=!0);var r=this.Na();r.length&&(s.evaluation_contexts=r);var i=this.qa();I(i)||(s.flag_keys=i);var n=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(n?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[Cr]:[bl]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:s,compression:this.Ne.compression==="base64"?Se.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then(c=>{var d,h,f=(d=c.json)!==null&&d!==void 0?d:{},p=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),p||this.wa||(this.$anon_distinct_id=void 0),!s.disable_flags||this.wa){this.ka=!p;var v=[];c.error?v.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?bl:"unknown_error"):c.statusCode!==200&&v.push("api_error_"+c.statusCode),f.errorsWhileComputingFlags&&v.push("errors_while_computing_flags");var _=!((h=f.quotaLimited)==null||!h.includes("feature_flags"));_&&v.push("quota_limited"),this.F({[Cr]:v}),_?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):s.disable_flags||this.ja(f,p,{partialResponse:n}),l()}}else l()}).catch(u)}catch(c){u(c)}}}Ma(){return nu(this.Sa,3)}Ua(t){this.Sa=ou(t,this.Sa,3,()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes."))}getFeatureFlag(t,e){var s;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var r=this.getFeatureFlagResult(t,e);return(s=r==null?void 0:r.variant)!==null&&s!==void 0?s:r==null?void 0:r.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+gn)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e==null?void 0:e.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var s,r=this.getFlagVariants(),i=t in r,n=r[t],o=this.getFlagPayloads()[t],a=String(n),l=this.Oa(xr)||void 0,u=this.Oa(Hs)||void 0,c=this.Oa(jt)||{};if(this.Ne.deduplicateCallsPerSession){var d,h=(d=this.nn)==null?void 0:d.session.sessionId,f=this.Oa(Bs);h&&h!==f&&(c={},s=h)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))s&&this.F({[jt]:c,[Bs]:s});else{var p,v,_,m,w,S,k,E,P,D;O(c[t])?c[t].push(a):c[t]=[a],this.F(b({[jt]:c},s?{[Bs]:s}:{}));var x=this.getFeatureFlagDetails(t),A=[...(p=this.Oa(Cr))!==null&&p!==void 0?p:[]];I(n)&&A.push("flag_missing");var R={$feature_flag:t,$feature_flag_response:n,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((v=this.Ne.bootstrap)==null||(v=v.featureFlags)==null?void 0:v[t])||null,$feature_flag_bootstrapped_payload:((_=this.Ne.bootstrap)==null||(_=_.featureFlagPayloads)==null?void 0:_[t])||null,$used_bootstrap_value:!this.ka};I(x==null||(m=x.metadata)==null?void 0:m.has_experiment)||(R.$feature_flag_has_experiment=x.metadata.has_experiment),I(x==null||(w=x.metadata)==null?void 0:w.version)||(R.$feature_flag_version=x.metadata.version);var M,$=(S=x==null||(k=x.reason)==null?void 0:k.description)!==null&&S!==void 0?S:x==null||(E=x.reason)==null?void 0:E.code;$&&(R.$feature_flag_reason=$),x!=null&&(P=x.metadata)!=null&&P.id&&(R.$feature_flag_id=x.metadata.id),I(x==null?void 0:x.original_variant)&&I(x==null?void 0:x.original_enabled)||(R.$feature_flag_original_response=I(x.original_variant)?x.original_enabled:x.original_variant),x!=null&&(D=x.metadata)!=null&&D.original_payload&&(R.$feature_flag_original_payload=x==null||(M=x.metadata)==null?void 0:M.original_payload),A.length&&(R.$feature_flag_error=A.join(",")),this.za(R)}else s&&this.F({[jt]:c,[Bs]:s});if(i)return{key:t,enabled:!!n,variant:typeof n=="string"?n:void 0,payload:ma(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+gn)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch(s=>{this.rt.error("Failed to capture feature flag call",s)})}catch(s){this.rt.error("Failed to capture feature flag call",s)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var s=this;return X(function*(){var r=s.nn;if(r){var i={distinct_id:r.distinctId,token:r.projectToken,person_properties:{$lib:r.library.name,$lib_version:r.library.version}},n=s.Na();n.length&&(i.evaluation_contexts=n);var o,a=s.qa();I(a)||(i.flag_keys=a);try{var l,u=(l=(yield r.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:i,compression:s.Ne.compression==="base64"?Se.Base64:void 0,sentAt:"body",timeoutMs:s.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=(u==null?void 0:u[t])||void 0}catch(c){return void s.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){s.rt.error("Remote config feature flag callback failed",c)}}})()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+gn),e.defaultValue;var s=this.getFeatureFlag(t,e);return I(s)?e.defaultValue:!!s}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter(e=>e!==t)}receivedFeatureFlags(t,e,s){this.ja(t,e,s)}ja(t,e,s){if(this.nn){this.ma=!0;var r=function(i,n,o,a,l,u){n===void 0&&(n={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=wl);var c=((P,D)=>{var x=P.flags;return x?b({},P,{featureFlags:Object.fromEntries(Object.keys(x).map(A=>{var R;return[A,(R=x[A].variant)!==null&&R!==void 0?R:x[A].enabled]})),featureFlagPayloads:Object.fromEntries(Object.keys(x).filter(A=>x[A].enabled).filter(A=>{var R;return(R=x[A].metadata)==null?void 0:R.payload}).map(A=>{var R;return[A,(R=x[A].metadata)==null?void 0:R.payload]}))}):(P.featureFlags&&D.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),P)})(i,u),d=c.flags,h=c.featureFlags,f=c.featureFlagPayloads;if(h){var p=i.requestId,v=i.evaluatedAt;if(O(h)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var _={};if(h)for(var m=0;h.length>m;m++)_[h[m]]=!0;return{[Ls]:h,[Lt]:_,[Vr]:!1}}var w=h,S=f,k=d;if(l!=null&&l.partialResponse)w=b({},n,w),S=b({},o,S),k=b({},a,k);else if(i.errorsWhileComputingFlags)if(d){var E=new Set(Object.keys(d).filter(P=>{var D;return!((D=d[P])!=null&&D.failed)}));w=b({},n,Object.fromEntries(Object.entries(w).filter(P=>E.has(P[0])))),S=b({},o,Object.fromEntries(Object.entries(S||{}).filter(P=>E.has(P[0])))),k=b({},a,Object.fromEntries(Object.entries(k||{}).filter(P=>E.has(P[0]))))}else w=b({},n,w),S=b({},o,S),k=b({},a,k);return b({[Ls]:Object.keys(Sl(w)),[Lt]:w||{},[Os]:S||{},[Ln]:k||{},[Vr]:i.minimalFlagCalledEvents===!0},p?{[xr]:p}:{},v?{[Hs]:v}:{})}}(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),s,this.rt);r&&this.F(r),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([Qe,Ot]),this.Va(),void Mt.info("All overrides cleared");if(O(t))return this.F({[Qe]:El(t)}),this.Va(),void Mt.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,s=t;this.ca=!!((e=s.suppressWarning)!==null&&e!==void 0&&e);var r={},i=s.flags,n=s.payloads;return i&&(r[Qe]=O(i)?El(i):i),n&&(r[Ot]=n),Object.keys(r).length&&this.F(r),i===!1&&n===!1?this.q([Qe,Ot]):i===!1?this.q(Qe):n===!1&&this.q(Ot),this.Va(),i===!1?Mt.info("Flag overrides cleared"):i&&Mt.info("Flag overrides set",{flags:i}),void(n===!1?Mt.info("Payload overrides cleared"):n&&Mt.info("Payload overrides set",{payloads:n}))}if(t&&typeof t=="object")return this.F({[Qe]:t}),this.Va(),void Mt.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),s=e.flags,r=e.flagVariants;try{t(s,r)}catch(i){this.rt.error("Error while running feature flags callback",i)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,s){var r=(this.Oa(Sr)||[]).find(l=>l.flagKey===t),i={["$feature_enrollment/"+t]:e},n={$feature_flag:t,$feature_enrollment:e,$set:i};r&&(n.$early_access_feature_name=r.name),s&&(n.$feature_enrollment_stage=s);var o=b({},this.getFlagVariants(),{[t]:e});this.F({[Ls]:Object.keys(Sl(o)),[Lt]:o,[ct]:b({},this.Oa(ct)||{},i)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",n).catch(l=>{this.rt.error("Failed to capture early access feature enrollment",l)})}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,s){e===void 0&&(e=!1);var r=this.Oa(Sr);!r||e?this.Qa(t,s):t(r)}Qa(t,e){var s=this;return X(function*(){var r=s.nn;if(r){var i,n=e?"&"+e.map(a=>"stage="+a).join("&"):"";try{var o=yield r.sendRequest("/api/early_access_features/?token="+r.projectToken+n,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;s.F({[Sr]:i=o.json.earlyAccessFeatures})}catch(a){return void s.rt.error("Early access feature request failed",a)}try{t(i)}catch(a){s.rt.error("Early access feature callback failed",a)}}})()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter(s=>e[s]),flagVariants:Object.keys(e).filter(s=>e[s]).reduce((s,r)=>(s[r]=e[r],s),{})}}Va(t){this.Fa();var e=this.Ga(),s=e.flags,r=e.flagVariants;this.featureFlagEventHandlers.forEach(i=>{try{i(s,r,{errorsLoading:t})}catch(n){this.rt.error("Error while running feature flags callback",n)}})}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var s=this.Oa(ct)||{},r=(t==null?void 0:t.$set)||(t!=null&&t.$set_once?{}:t),i=t==null?void 0:t.$set_once,n={};if(i)for(var o in i)({}).hasOwnProperty.call(i,o)&&(o in s||(n[o]=i[o]));this.F({[ct]:b({},s,n,r)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var s=b({},this.Oa(ct)||{});t.forEach(r=>{delete s[r]}),this.F({[ct]:s}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(ct),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var s=this.Oa(Dt)||{},r=b({},s);for(var i of Object.keys(t))r[i]=b({},s[i],t[i]);this.F({[Dt]:r}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(Dt)||{};this.F({[Dt]:b({},e,{[t]:{}})})}else this.q(Dt)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},jp={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===Ts||this.Ya===yr?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=pl,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(F==null||!F.visibilityState||F.visibilityState==="visible")return!0;var s=g==null||(e=g.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(s!=null&&s.length)||s.some(r=>r.name==="visible")})(),this.Ie=()=>{var e;(F==null?void 0:F.visibilityState)==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw at.error("started without valid sessionManager"),new Error(eo+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===ht)throw new Error(eo+' cannot be used with cookieless_mode="always"');F!=null&&F.addEventListener&&ie(F,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,F==null||F.removeEventListener==null||F.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(Ut))==null||!t.enabled),s=!this.Ne.disable_session_recording,r=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return g&&e&&s&&!r}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var s=!I(Object.assign)&&!I(Array.from);this.ro&&s?(this.no(t),at.info("starting")):(this.Ya=pl,this.stopRecording())}}no(t){var e,s,r;this.ro&&(this.Ya!==Ts&&this.Ya!==yr&&(this.Ya=fl),T!=null&&(e=T.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(s=T.__PosthogExtensions__)!=null&&s.initSessionRecording?this.so(t):(r=T.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,this.ao,i=>{if(i)return at.error("could not load recorder",i);this.so(t)}))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(Po),(e=this.Mr)==null||e.unregister(Nc)}uo(t,e){if(B(t))return null;var s,r=de(t)?t:parseFloat(t);return typeof(s=r)!="number"||!Number.isFinite(s)||0>s||s>1?(at.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):r}ho(t){if(this.Mr){var e,s,r=this.Mr,i=()=>{var n,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((n=this.Ne.session_recording)==null?void 0:n.sampleRate,"session_recording.sampleRate"),l=this.uo(o==null?void 0:o.sampleRate,"remote config sampleRate"),u=a??l;B(u)&&this.lo();var c=o==null?void 0:o.minimumDurationMilliseconds;r.register({[Ut]:b({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:b({capturePerformance:t.capturePerformance},o==null?void 0:o.networkPayloadCapture),canvasRecording:{enabled:o==null?void 0:o.recordCanvas,fps:o==null?void 0:o.canvasFps,quality:o==null?void 0:o.canvasQuality},sampleRate:u,minimumDurationMilliseconds:I(c)?null:c,endpoint:o==null?void 0:o.endpoint,triggerMatchType:o==null?void 0:o.triggerMatchType,masking:o==null?void 0:o.masking,urlTriggers:o==null?void 0:o.urlTriggers,version:o==null?void 0:o.version,triggerGroups:o==null?void 0:o.triggerGroups})})};i(),(e=this.Xa)==null||e.call(this),this.Xa=(s=this._instance.sessionManager)==null?void 0:s.onSessionId(i)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===Ts&&(this.Ya=yr,at.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var s;e===void 0&&(e="log"),(s=this.Ja)!=null&&s.log?this.Ja.log(t,e):at.warn("log called before recorder was ready")}get ao(){var t,e,s=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(Ut);return(s==null||(e=s.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(Ut);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(s){return at.warn("persisted remote config for session recording is invalid and will be ignored",s),!1}return!B(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,s,r;if(!this.eo){if((e=T.__PosthogExtensions__)==null||!e.initSessionRecording)return at.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[zc]:!0});var i;if(this.Ja||(this.Ja=(i=T.__PosthogExtensions__)==null?void 0:i.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===yr||this.Ya===Ts?void 0:(this.Ya=Ts,at.info("persisted remote config is stale, requesting fresh config before starting"),void new fu(this._instance).load());this.Ya=fl,(s=(r=this.Ja).setDocumentWasEverVisible)==null||s.call(r,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Oc]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Lc]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,s;this.Ja||(s=this.Mr)==null||s.register({[t==="url"?Dc:Bc]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var s;return!((s=this.Ja)==null||!s.tryAddCustomEvent(t,e))}}},Up={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new ul(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,s=te(this.instance.config.autocapture)?this.instance.config.autocapture:{};return s.url_allowlist=(t=s.url_allowlist)==null?void 0:t.map(r=>new RegExp(r)),s.url_ignorelist=(e=s.url_ignorelist)==null?void 0:e.map(r=>new RegExp(r)),s}yo(){if(this.isBrowserSupported()){if(g&&F){var t=s=>{s=s||(g==null?void 0:g.event);try{this.bo(s)}catch(r){dn.error("Failed to capture event",r)}};if(ie(F,"submit",t,{capture:!0}),ie(F,"change",t,{capture:!0}),ie(F,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=s=>{s=s||(g==null?void 0:g.event);try{this.bo(s,un)}catch(r){dn.error("Failed to capture copy/cut event",r)}};ie(F,"copy",e,{capture:!0}),ie(F,"cut",e,{capture:!0})}}}else dn.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var s=e.autocapture_opt_out;Ke(s)&&(this.instance.persistence&&this.instance.persistence.register({[Pn]:s}),this.co=s),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,s=[];return(e=this.mo)==null||e.forEach(r=>{var i=F==null?void 0:F.querySelectorAll(r);i==null||i.forEach(n=>{t===n&&s.push(r)})}),s}get isEnabled(){var t,e,s=(t=this.instance.persistence)==null?void 0:t.props[Pn],r=this.co,i=this.instance.Qi()&&!this.fo;if(Re(r)&&!Ke(s)&&!i)return!1;var n=(e=this.co)!==null&&e!==void 0?e:!!s;return!!this.instance.config.autocapture&&!n}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var s,r=Zi(t);Kc(r)&&(r=r.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(s=this.rageclicks)!=null&&s.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&ja(r,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var i=e===un;if(r&&function(d,h,f,p,v,_){var m;if(!g||Mo(d)||f!=null&&f.url_allowlist&&!Oa(f.url_allowlist,_)||f!=null&&f.url_ignorelist&&Oa(f.url_ignorelist,_))return!1;if(f!=null&&f.dom_event_allowlist){var w=f.dom_event_allowlist;if(w&&!w.some(x=>h.type===x))return!1}var S=eu(d,p),k=S.parentIsUsefulElement,E=S.targetElementList;if(!function(x,A){var R=A==null?void 0:A.element_allowlist;if(I(R))return!0;var M,$=function(J){if(R.some(W=>J.tagName.toLowerCase()===W))return{v:!0}};for(var N of x)if(M=$(N))return M.v;return!1}(E,f)||!qn(E,f==null?void 0:f.css_selector_allowlist)||qn(E,(m=f==null?void 0:f.css_selector_ignorelist)!==null&&m!==void 0?m:Dh))return!1;try{var P=g.getComputedStyle(d);if(P&&P.getPropertyValue("cursor")==="pointer"&&h.type==="click")return!0}catch{}var D=d.tagName.toLowerCase();switch(D){case"html":return!1;case"form":return(v||["submit"]).indexOf(h.type)>=0;case"input":case"select":case"textarea":return(v||["change","click"]).indexOf(h.type)>=0;default:return k?(v||["click"]).indexOf(h.type)>=0:(v||["click"]).indexOf(h.type)>=0&&($o.indexOf(D)>-1||d.getAttribute("contenteditable")==="true")}}(r,t,this.Ne,i,i?["copy","cut"]:void 0,this.instance)){var n=Ap(r,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=n.props;if(n.explicitNoCapture)return!1;var a=this.getElementSelectors(r);if(a&&a.length>0&&(o.$element_selectors=a),e===un){var l,u=Zc(g==null||(l=g.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return Ee(F==null?void 0:F.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(g==null||(e=g.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(C.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,C.info("History API monitoring stopped")}monitorHistoryChanges(){g&&g.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(g&&((e=g.history[t])==null||!e.__posthog_wrapped__)){var s=this;(function(r,i,n){try{if(!(i in r))return dl;var o={next:r[i]},a=n(function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)});return Ee(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),r[i]=a,()=>{if(r[i]!==a)for(var l=r[i];Ee(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else r[i]=o.next}}catch{return dl}})(g.history,t,r=>function(i,n,o){r.call(this,i,n,o),s.So(t)})}}So(t){try{var e,s=g==null||(e=g.location)==null?void 0:e.pathname;if(!s)return;s!==this._o&&this.isEnabled&&this._instance.capture(ts,{navigation_type:t}),this._o=s}catch(r){C.error("Error capturing "+t+" pageview",r)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};ie(g,"popstate",t),this.wo=()=>{g&&g.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[An]),this.rageclicks=new ul(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return te(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return B(this.Ne.capture_heatmaps)?B(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Tp.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var s=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[An]:s}),this.Co=s,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){pn(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=(F==null?void 0:F.visibilityState)==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){g&&F&&(this.Po=this.cr.bind(this),ie(g,Zr,this.Po),this.Ro=t=>this.ke(t||(g==null?void 0:g.event)),ie(F,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||(g==null?void 0:g.event)),ie(F,"mousemove",this.Ao,{capture:!0}),this.Lo=new Ga(this.instance,qh,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),ie(F,Yr,this.Oo),this.vo=!0)}Eo(){var t;g&&F&&(this.Po&&g.removeEventListener(Zr,this.Po),this.Ro&&F.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&F.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&F.removeEventListener(Yr,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var s=this.instance.scrollManager.scrollY(),r=this.instance.scrollManager.scrollX(),i=this.instance.scrollManager.scrollElement(),n=function(o,a,l){for(var u=o;u&&Ct(u)&&!Me(u,"body");){if(u===l)return!1;var c=void 0;try{var d,h,f;c=(d=(h=(f=u.ownerDocument)==null?void 0:f.defaultView)!==null&&h!==void 0?h:g)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(L(a,c))return!0;u=Xc(u)}return!1}(Zi(t),["fixed","sticky"],i);return{x:t.clientX+(n?0:r),y:t.clientY+(n?0:s),target_fixed:n,type:e}}ke(t,e){var s;if(e===void 0&&(e="click"),!La(t.target)&&pn(t)){var r=this.$o(t,e);(s=this.rageclicks)!=null&&s.isRageClick(t.clientX,t.clientY,new Date().getTime())&&ja(Zi(t),this.instance.config.rageclick)&&this.Vt(b({},r,{type:"rageclick"})),this.Vt(r)}}Fo(t){!La(t.target)&&pn(t)&&(clearTimeout(this.Do),this.Do=setTimeout(()=>{this.Vt(this.$o(t,"mousemove"))},500))}Vt(t){if(g){var e=this.Ne.disable_capture_url_hashes?It(g.location.href):g.location.href,s=this.Ne.custom_personal_data_properties,r=this.Ne.mask_personal_data_properties?[...fs,...s||[]]:[],i=Zs(e,r,Xs);this.R=this.R||{},this.R[i]||(this.R[i]=[]),this.R[i].push(t)}}cr(){this.R&&!vt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:Ga,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",b({$current_url:this.R.url},this.R.metrics.reduce((s,r)=>b({},s,{["$web_vitals_"+r.name+"_event"]:b({},r),["$web_vitals_"+r.name+"_value"]:r.value}),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=s=>{var r;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},B(s==null?void 0:s.name)||B(s==null?void 0:s.value))$t.error("Invalid metric received",s);else{var i=typeof s.navigationURL=="string"?s.navigationURL:void 0,n=this.Bo(i);if(!I(n)){var o=de(s.navigationId)||typeof s.navigationId=="string"?"navigation:"+s.navigationId:"url:"+n;if(!this.Ho||this.Ho>s.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),I(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=n),this.R.firstMetricTimestamp=I(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,s.attribution&&s.attribution.interactionTargetElement&&(s.attribution.interactionTargetElement=void 0);var a=(r=this._instance.sessionManager)==null?void 0:r.checkAndGetSessionAndWindowId(!0),l=b({},s,i?{navigationURL:n}:{},{$current_url:n,timestamp:Date.now()});I(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else $t.error("Ignoring metric with value >= "+this.Ho,s)}}},this.Uo=()=>{if(!this.vo){var s,r,i,n,o=T.__PosthogExtensions__,a=o==null?void 0:o.postHogWebVitalsCallbacksByFlavor,l=(a==null?void 0:a[this.zo])||(this.zo==="web-vitals"&&I(a)?o==null?void 0:o.postHogWebVitalsCallbacks:void 0);if(I(l)||(s=l.onLCP,r=l.onCLS,i=l.onFCP,n=l.onINP),s&&r&&i&&n){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&s(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&n(this.jo.bind(this),u),this.vo=!0}else $t.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[Mn]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,s=te(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return B(s)?((e=this._instance.persistence)==null?void 0:e.props[Nn])||["CLS","FCP","INP","LCP"]:s}get flushToCaptureTimeoutMs(){return(te(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=te(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=te(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=te(this.Wo)&&de(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:hl;return t>0&&6e4>=t?hl:t}get isEnabled(){var t=re==null?void 0:re.protocol;if(t!=="http:"&&t!=="https:")return $t.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=te(this.Wo)?this.Wo.web_vitals:Ke(this.Wo)?this.Wo:void 0;return Ke(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&($t.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var s=te(e.capturePerformance)&&!!e.capturePerformance.web_vitals,r=te(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Mn]:s}),this._instance.persistence.register({[Nn]:r})),this.Co=s,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=T.__PosthogExtensions__,s=this.zo,r=e==null?void 0:e.postHogWebVitalsCallbacksByFlavor;r!=null&&r[s]||s==="web-vitals"&&I(r)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,s,i=>{i?$t.error("failed to load script",i):t()})}Bo(t){var e=t||(g==null?void 0:g.location.href);if(e){var s=this._instance.config.disable_capture_url_hashes?It(e):e,r=this._instance.config.custom_personal_data_properties,i=this._instance.config.mask_personal_data_properties?[...fs,...r||[]]:[];return Zs(s,i,Xs)}$t.error("Could not determine current URL")}}},Hp={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var s;if(g&&this.isEnabled&&(s=T.__PosthogExtensions__)!=null&&s.errorWrappingFunctions){var r=T.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,i=T.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,n=T.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=r(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=i(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=n(this.captureException.bind(this)))}catch(o){Rs.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[Rn]),this.Jo=new jd(b({},function(s){var r,i,n,o;return s===void 0&&(s={}),{refillRate:(r=(i=s.exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:s.__exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:1,bucketSize:(n=(o=s.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:s.__exceptionRateLimiterBucketSize)!==null&&n!==void 0?n:10}}(this._instance.config.error_tracking),{refillInterval:1e4,rt:Rs})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return te(t)?e=b({},e,t):(I(t)?this.Ko:t)&&(e=b({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Rs.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,s;(e=T.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(s=T.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"exception-autocapture",r=>{if(r)return Rs.error("failed to load script",r);t()})}Qo(){var t,e,s;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(s=this.Go)==null||s.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[Rn]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,s,r,i=(e=t==null||(s=t.$exception_list)==null||(s=s[0])==null?void 0:s.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(i)?Rs.info("Skipping exception capture because of client rate limiting.",{exception:i}):(r=this._instance.exceptions)==null||r.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,s;this.Xo=[],this.tl=new rh([new dh,new wh,new ph,new hh,new _h,new mh,new gh,new yh],function(r){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;i>o;o++)n[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` +`),d=l;c.length>d;d++){var h=c[d];if(1024>=h.length){var f=Ta.test(h)?h.replace(Ta,"$1"):h;if(!f.match(/\S*Error: /)){for(var p of n){var v=p(f,r);if(v){u.push(v);break}}if(u.length>=50)break}}}return function(_){if(!_.length)return[];var m=Array.from(_);return m.reverse(),m.slice(0,50).map(w=>{return b({},w,{filename:w.filename||(S=m,S[S.length-1]||{}).filename,function:w.function||hs});var S})}(u)}}("web:javascript",ah,uh)),this._instance=t,this.Xo=(e=(s=this._instance.persistence)==null?void 0:s.get_property(Tn))!==null&&e!==void 0?e:[],this.el=qr(this.il()),this.rl=new Eh(this.el)}onConfigChange(){this.el=qr(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,s,r;if(t.ok){var i=t.config;if("errorTracking"in i){var n=(e=(s=i.errorTracking)==null?void 0:s.suppressionRules)!==null&&e!==void 0?e:[],o=(r=i.errorTracking)==null?void 0:r.captureExtensionExceptions;this.Xo=n,this._instance.persistence&&this._instance.persistence.register({[Tn]:this.Xo,[$n]:o})}}}get nl(){var t,e=!!this._instance.get_property($n),s=this._instance.config.error_tracking.captureExtensionExceptions;return(t=s??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e==null?void 0:e.syntheticException,mechanism:{handled:e==null?void 0:e.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!z(t)||t.trim().length===0)return void Xe.warn("Ignoring exception step because message must be a non-empty string");var s=function(n){if(!n)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(n).reduce((a,l)=>bh.has(l)?(o.push(l),a):(a[l]=n[l],a),{}),droppedKeys:o}}(this.sl(e)),r=s.sanitizedProperties,i=s.droppedKeys;i.length>0&&Xe.warn("Ignoring reserved exception step fields",{droppedKeys:i}),this.rl.add(b({[zr]:t,[Wr]:new Date().toISOString()},r))}catch(n){Xe.error("Failed to add exception step. Ignoring breadcrumb.",n)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void Xe.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void Xe.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void Xe.info("Skipping exception capture because it was thrown by the PostHog SDK")}var s=this.el.enabled&&B(t.$exception_steps)?this.dl(t):t,r=typeof(n=globalThis._posthogReleaseId)=="string"&&n.length>0?n:void 0;r&&(s.$release_id=r);try{var i=this._instance.capture("$exception",s,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return i&&this.rl.clear(),i}catch(o){return Xe.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void Xe.error("Failed to process exception event. Ignoring this exception.",o)}var n}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:b({},t,{$exception_steps:e})}catch(s){return Xe.error("Failed to read buffered exception steps. Capturing exception without steps.",s),t}}ll(t){this.el.enabled&&this.rl.add({[zr]:t,[Wr]:new Date().toISOString()})}sl(t){return te(t)?b({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce((s,r)=>{var i=r.type,n=r.value;return z(i)&&i.length>0&&s.$exception_types.push(i),z(n)&&n.length>0&&s.$exception_values.push(n),s},{$exception_types:[],$exception_values:[]});return this.Xo.some(s=>{var r=s.values.map(i=>{var n=Fu[i.operator],o=e[i.key];if(!n||!o)return!1;var a=O(i.value)?i.value:[i.value];return a.length>0&&n(a,o)});return s.type==="OR"?r.some(Boolean):r.every(Boolean)})}catch(s){return Xe.warn("Failed to evaluate suppression rules. Capturing the exception.",s),!1}}ul(t){return t.flatMap(e=>{var s,r;return(s=(r=e.stacktrace)==null?void 0:r.frames)!==null&&s!==void 0?s:[]}).some(e=>e.filename&&e.filename.startsWith("chrome-extension://"))}hl(t){if(t.length>0){var e,s,r,i,n=(e=(s=t[0].stacktrace)==null?void 0:s.frames)!==null&&e!==void 0?e:[],o=n[n.length-1];return(r=o==null||(i=o.filename)==null?void 0:i.includes("posthog.com/static"))!==null&&r!==void 0&&r}return!1}al(t){return!B(t)&&O(t)}}},zp=b({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var s,r;if(this.Mr&&this.Mr.register({[Fo]:!!e.productTours}),!fn(this._instance))return!this.vl&&B((s=this.Mr)==null?void 0:s.props[Ds])||wr.info("product tours disabled; stopping and clearing cached tours"),(r=this.vl)==null||r.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&fn(this._instance)&&this.ai(()=>this.fl())}ai(t){var e,s;(e=T.__PosthogExtensions__)!=null&&e.generateProductTours?t():(s=T.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"product-tours",r=>{r?wr.error("Could not load product tours script",r):t()})}fl(){var t;!this.vl&&(t=T.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=T.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!O(this.cl)||e){var s=this.Mr;if(s){var r=s.props[Ds];if(O(r)&&!e)return this.cl=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:i=>{if(fn(this._instance)){var n=i.statusCode;if(n!==200||!i.json){var o="Product Tours API could not be loaded, status: "+n;return n===0?i.error||wr.warn(o):wr.error(o),void t([],{isLoaded:!1,error:o})}var a=O(i.json.product_tours)?i.json.product_tours:[];this.cl=a,s&&s.register({[Ds]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){B(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai(()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)})}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister(Ds)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},Si),Wp={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var s=this.globalsForEvent(e);this.gl.push(s),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=T._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,s,r,i,n,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var h=d[0];l[h]={id:u[h],type:h,properties:d[1]}}var f=t.$set_once,p=t.$set;return{event:b({},Ql(t,$p),{properties:b({},t.properties,p?{$set:b({},(e=(s=t.properties)==null?void 0:s.$set)!==null&&e!==void 0?e:{},p)}:{},f?{$set_once:b({},(r=(i=t.properties)==null?void 0:i.$set_once)!==null&&r!==void 0?r:{},f)}:{}),elements_chain:(n=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&n!==void 0?n:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,s=(e=t.tagName)==null?void 0:e.toLowerCase();return s==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(Ze.error("prepare_external_dependency_stylesheet returned null"),null):s==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(Ze.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,s,r,i,n,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=F==null?void 0:F.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,h=new WeakSet,f=(_,m,w)=>{if(_!=null&&_[m]){var S=_[m];_[m]=w(S),c.push(()=>{_[m]=S})}},p=_=>{if(h.has(_))return _;var m=d.bl(_);return m&&h.add(m),m},v=_=>_.map(m=>typeof m=="string"?m:p(m)).filter(m=>!Re(m));return f(u,"appendChild",_=>function(m){var w=p(m);return w?_.call(this,w):m}),f(u,"insertBefore",_=>function(m,w){var S=p(m);return S?_.call(this,S,w):m}),f(u,"replaceChild",_=>function(m,w){var S=p(m);return S?_.call(this,S,w):w}),[(e=l.Element)==null?void 0:e.prototype,(s=l.Document)==null?void 0:s.prototype,(r=l.DocumentFragment)==null?void 0:r.prototype].forEach(_=>{f(_,"append",m=>function(){for(var w=arguments.length,S=new Array(w),k=0;w>k;k++)S[k]=arguments[k];return m.apply(this,v(S))}),f(_,"prepend",m=>function(){for(var w=arguments.length,S=new Array(w),k=0;w>k;k++)S[k]=arguments[k];return m.apply(this,v(S))})}),[(i=l.Element)==null?void 0:i.prototype,(n=l.CharacterData)==null?void 0:n.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach(_=>{f(_,"before",m=>function(){for(var w=arguments.length,S=new Array(w),k=0;w>k;k++)S[k]=arguments[k];return m.apply(this,v(S))}),f(_,"after",m=>function(){for(var w=arguments.length,S=new Array(w),k=0;w>k;k++)S[k]=arguments[k];return m.apply(this,v(S))}),f(_,"replaceWith",m=>function(){for(var w=arguments.length,S=new Array(w),k=0;w>k;k++)S[k]=arguments[k];var E=v(S);return S.length&&!E.length?void 0:m.apply(this,E)})}),f((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",_=>function(m,w){var S=p(w);return S?_.call(this,m,S):null}),this.wl=()=>{c.forEach(_=>_()),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var s=this._l();try{var r=t(s);return e&&s(),r}catch(i){throw s(),i}}setupSiteApp(t){var e=this.apps[t.id],s=()=>{var o;!e.errored&&this.gl.length&&(Ze.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach(a=>this.xl(()=>e.processEvent==null?void 0:e.processEvent(a))),e.processedBuffer=!0),Object.values(this.apps).every(a=>a.processedBuffer||a.errored)&&((o=this.yl)==null||o.call(this))},r=!1,i=o=>{e.errored=!o,e.loaded=!0,Ze.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),r&&s()};try{var n=this.xl(o=>t.init({posthog:this._instance,callback(a){o(),i(a)}}),!1).processEvent;n&&(e.processEvent=n),r=!0}catch(o){Ze.error(gl+t.id,o),i(!1)}if(r&&e.loaded)try{s()}catch(o){Ze.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var s of t)this.setupSiteApp(s)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var s=this.globalsForEvent(t),r=function(n){try{e.xl(()=>n.processEvent==null?void 0:n.processEvent(s))}catch(o){Ze.error("Error while processing event "+t.event+" for site app "+n.id,o)}};for(var i of Object.values(this.apps))r(i)}}onRemoteConfig(t){var e,s,r,i=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",l=>this.Cl(l))):void Ze.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((s=this.yl)==null||s.call(this),t.ok){var n=t.config;if((r=n.siteApps)!=null&&r.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;T["__$$ph_site_app_"+u]=i._instance,(l=T.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(i._instance,c,d=>{if(d)return Ze.error(gl+u,d)})};for(var a of n.siteApps)o()}else Ze.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},qp={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,s,r=this.Il();r?(I(this.Ml)&&(this.Ml=(e=T.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(r,()=>this._instance.get_distinct_id(),this._instance.sessionManager)),I(this.Tl)&&(this.Tl=(s=T.__PosthogExtensions__)==null||(s=s.tracingHeadersPatchFns)==null?void 0:s._patchFetch(r,()=>this._instance.get_distinct_id(),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,s;(e=T.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(s=T.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"tracing-headers",r=>{if(r)return Rp.error("failed to load script",r);t()})}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return O(t)?(O(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(O(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},Vp=b({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return V.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(B(e))return V.warn("Flags not loaded yet. Not loading surveys.");var s=O(e);this.Rl=s?e.length>0:e,V.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],s=0;slocalStorage.removeItem(i))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)V.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)V.info(vl);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())V.info("Not loading surveys in cookieless mode without consent.");else{var t=T==null?void 0:T.__PosthogExtensions__;if(t){if(!I(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var s=t.generateSurveys;if(s)return void this.Dl(s,e);var r=t.loadExternalDependency;if(!r)return void this.$l(Ao);r(this._instance,"surveys",i=>{i||!t.generateSurveys?this.$l("Could not load surveys script",i):this.Dl(t.generateSurveys,e)})}catch(i){throw this.$l("Error initializing surveys",i),i}finally{this.Al=!1}}}else V.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new Lp(this._instance),V.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){V.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter(e=>e!==t)}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return V.info(vl),t([]);var s,r=this._instance.get_property(On);if(r&&!e)return t(r,{isLoaded:!0}),void(this.ql()&&this.getSurveys(()=>{},!0));typeof Promise<"u"&&this.Ll?this.Ll.then(i=>t(i.surveys,i.context)):(typeof Promise<"u"&&(this.Ll=new Promise(i=>{s=i})),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:i=>{var n;this.Ll=null;var o=i.statusCode;if(o!==200||!i.json){var a="Surveys API could not be loaded, status: "+o;o!==0?V.error(a):i.error||V.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(s==null||s({surveys:[],context:l}))}this.Ol=null;var u,c=i.json.surveys||[],d=c.filter(f=>function(p){return!(!p.start_date||p.end_date)}(f)&&(Au(f)||function(p){var v;return!((v=p.conditions)==null||(v=v.actions)==null||(v=v.values)==null||!v.length)}(f)));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(n=this._instance.persistence)==null||n.register({[On]:c,[Gr]:Date.now()});var h={isLoaded:!0};t(c,h),s==null||s({surveys:c,context:h})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(Gr);return de(t)&&Date.now()-t>3e5}Bl(){return de(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var s,r={id:t,current_iteration:(s=e==null?void 0:e.iteration)!==null&&s!==void 0?s:null};Tu(r);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(s){V.error("Error in survey callback",s)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!B(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);V.warn("init was not called")}Hl(t){var e=null;return this.getSurveys(s=>{var r;e=(r=s.find(i=>i.id===t))!==null&&r!==void 0?r:null}),e}Ul(t){if(B(this._surveyManager))return{eligible:!1,reason:br};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(B(this._surveyManager))return{eligible:!1,reason:br};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(B(this._surveyManager))return V.warn("init was not called"),{visible:!1,disabledReason:br};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return B(this._surveyManager)?(V.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:br})):new Promise(s=>{this.getSurveys(r=>{var i,n=(i=r.find(a=>a.id===t))!==null&&i!==void 0?i:null;if(n){var o=this.zl(n);s({visible:o.eligible,disabledReason:o.reason})}else s({visible:!1,disabledReason:"Survey not found"})},e)})}renderSurvey(t,e,s){var r;if(B(this._surveyManager))V.warn("init was not called");else{var i=typeof t=="string"?this.Hl(t):t;if(i!=null&&i.id)if(_p.includes(i.type)){var n=F==null?void 0:F.querySelector(e);if(n)return(r=i.appearance)!=null&&r.surveyPopupDelaySeconds?(V.info("Rendering survey "+i.id+" with delay of "+i.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout(()=>{var o,a;V.info("Rendering survey "+i.id+" with delay of "+((o=i.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(i,n,s),V.info("Survey "+i.id+" rendered")},1e3*i.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(i,n,s);V.warn("Survey element not found")}else V.warn("Surveys of type "+i.type+" cannot be rendered in the app");else V.warn("Survey not found")}}displaySurvey(t,e){var s;if(B(this._surveyManager))V.warn("init was not called");else{var r=this.Hl(t);if(r){var i=r;if((s=r.appearance)!=null&&s.surveyPopupDelaySeconds&&e.ignoreDelay&&(i=b({},r,{appearance:b({},r.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==Gn.Popover&&e.initialResponses&&V.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var n=this.Ul(r);if(!n.eligible)return void V.warn("Survey is not eligible to be displayed: ",n.reason)}e.displayType!==Gn.Inline?this._surveyManager.handlePopoverSurvey(i,e):this.renderSurvey(i,e.selector,e.properties)}else V.warn("Survey not found")}}cancelPendingSurvey(t){B(this._surveyManager)?V.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},Si),Gp={toolbar:class{constructor(t){this.instance=t}Wl(t){T.ph_toolbar_state=t}Vl(){var t;return(t=T.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,s){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),s===void 0&&(s=void 0),Wn(this.instance.config)||!g||!F)return!1;t=t??g.location,s=s??g.history;try{if(!e){try{g.localStorage.setItem("test","test"),g.localStorage.removeItem("test")}catch{return!1}e=g==null?void 0:g.localStorage}var r,i=Op||ti(t.hash,"__posthog")||ti(t.hash,"state"),n=i?Ma(()=>JSON.parse(atob(decodeURIComponent(i))))||Ma(()=>JSON.parse(decodeURIComponent(i))):null;return n&&n.action==="ph_authorize"?((r=n).source="url",r&&Object.keys(r).length>0&&(n.desiredHash?t.hash=n.desiredHash:s?s.replaceState(s.state,"",t.pathname+t.search):t.hash="")):((r=JSON.parse(e.getItem(ml)||"{}")).source="localstorage",delete r.userIntent),!(!r.token||this.instance.config.token!==r.token||(this.loadToolbar(r),0))}catch{return!1}}Zl(t){var e=T.ph_load_toolbar||T.ph_load_editor;!B(e)&&Ee(e)?e(t,this.instance):_l.warn("No toolbar load function found")}loadToolbar(t){var e=!(F==null||!F.getElementById(Gc));if(!g||e)return!1;var s=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,r=b({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},s?{instrument:!1}:{});if(g.localStorage.setItem(ml,JSON.stringify(b({},r,{source:void 0}))),this.Vl()===2)this.Zl(r);else if(this.Vl()===0){var i;this.Wl(1),(i=T.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"toolbar",n=>{if(n)return _l.error("[Toolbar] Failed to load",n),void this.Wl(0);this.Wl(2),this.Zl(r)}),ie(g,"turbolinks:load",()=>{this.Wl(0),this.loadToolbar(r)})}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,s){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),s===void 0&&(s=void 0),this.maybeLoadToolbar(t,e,s)}}},Kp=b({experiments:ye},Si),Jp={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;B(e)||(Ke(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||Wn(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=T==null?void 0:T.__PosthogExtensions__;if(t&&!I(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var s=t.loadExternalDependency;if(!s)return void this.eu(Ao);s(this._instance,"conversations",r=>{r||!t.initConversations?this.eu("Could not load conversations script",r):this.tu(t.initConversations),this.Kl=!1})}catch(r){this.eu("Error initializing conversations",r),this.Kl=!1}}else je.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,je.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else je.error("Cannot complete initialization: remote config is null")}eu(t,e){je.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():je.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!Re(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":Wn(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":I(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?B(this.Jl)||!this.Jl.token?"missing_token":T!=null&&T.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,s){var r=this;return X(function*(){return r._conversationsManager?r._conversationsManager.sendMessage(t,e,s):(je.warn(Nt),null)})()}getMessages(t,e){var s=this;return X(function*(){return s._conversationsManager?s._conversationsManager.getMessages(t,e):(je.warn(Nt),null)})()}markAsRead(t){var e=this;return X(function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(je.warn(Nt),null)})()}getTickets(t){var e=this;return X(function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(je.warn(Nt),null)})()}requestRestoreLink(t){var e=this;return X(function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(je.warn(Nt),null)})()}restoreFromToken(t){var e=this;return X(function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(je.warn(Nt),null)})()}restoreFromUrlToken(){var t=this;return X(function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(je.warn(Nt),null)})()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},Yp={logs:class{constructor(t){var e,s=this;this.iu=!1,this.ru=!1,this.rt=se("[logs]"),this.nu=b({},this.rt,{error(){for(var r=arguments.length,i=new Array(r),n=0;r>n;n++)i[n]=arguments[n];i.some(Il)||s.rt.error(...i)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var r,i;this.Sa=0,(r=this.ou)==null||r.onReconnect(),(i=this.lu)==null||i.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),g&&ie(g,"online",this.au)}uu(t,e,s,r){var i,n=function(o,a){var l,u,c,d,h,f,p,v=(l=o==null?void 0:o.flushIntervalMs)!==null&&l!==void 0?l:3e3,_=(u=o==null?void 0:o.maxBufferSize)!==null&&u!==void 0?u:100,m=a!=null&&a.consoleCapture?void 0:(c=o==null?void 0:o.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,w=I(m)?Math.max(_,2048):Math.max(_,m),S=o==null?void 0:o.resourceAttributes;return{serviceName:(d=(h=S==null?void 0:S["service.name"])!==null&&h!==void 0?h:o==null?void 0:o.serviceName)!==null&&d!==void 0?d:a==null?void 0:a.serviceNameDefault,serviceVersion:(f=S==null?void 0:S["service.version"])!==null&&f!==void 0?f:o==null?void 0:o.serviceVersion,environment:(p=S==null?void 0:S["deployment.environment"])!==null&&p!==void 0?p:o==null?void 0:o.environment,resourceAttributes:S,beforeSend:o==null?void 0:o.beforeSend,flushIntervalMs:v,maxBufferSize:_,maxQueueSize:w,maxBatchRecordsPerPost:100,rateCapWindowMs:v,maxLogsPerInterval:m,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}}((i=this._instance)==null||(i=i.config)==null?void 0:i.logs,s);return[new eh(this.hu(t,e),n,this.nu,()=>this.du(),o=>o(),void 0,r),n]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var s;(s=this.ou)==null||s.reset(),this.cu=e;var r=this.uu(()=>this.tr,i=>{this.tr=i});this.ou=r[0],this.fu=r[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var s;(s=this.lu)==null||s.reset(),this.gu=e;var r=this.uu(()=>this.su,i=>{this.su=i},{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},kl);this.lu=r[0],this.mu=r[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var s=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!B(s)&&s&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch(e=>this._u(e)),this.lu&&this.lu.flush().catch(e=>this._u(e)))}_u(t){Il(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=T==null?void 0:T.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",s=>{var r;s||(r=t.logs)==null||!r.initializeLogs?this.rt.error("Could not load logs script",s):(t.logs.initializeLogs(this._instance),this.ru=!0)}):this.rt.error(Ao)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var s=this._instance;return{get isDisabled(){return!1},get optedOut(){return!s.is_capturing()},getPersistedProperty:r=>r===ut.LogsQueue?t():void 0,setPersistedProperty(r,i){var n;r===ut.LogsQueue&&e((n=i)!==null&&n!==void 0?n:[])},Ot:r=>this.Ot(r),getLibraryId:()=>Y.LIB_NAME,getLibraryVersion:()=>Y.LIB_VERSION}}Ot(t){return new Promise(e=>{if(nu(this.Sa,3))e({kind:"fatal",error:vn(void 0,"logs endpoint is unreachable, dropping batch")});else{var s=!1,r=n=>{s||(s=!0,clearTimeout(i),e(n))},i=setTimeout(()=>{this.rt.warn("Logs request timed out before receiving a response"),r({kind:"retry-later",error:vn(void 0,"logs request timed out")})},9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:n=>{var o=n.statusCode;if(this.ku(o),o>=200&&300>o)r({kind:"ok"});else if(o===413)r({kind:"too-large"});else if(o!==0&&o!==429&&500>o)r({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(n.error||this.rt.warn("Logs request failed before receiving an HTTP response"),r({kind:"retry-later",error:vn(n.error,"logs request failed before receiving an HTTP response")})):r({kind:"retry-later",error:(a=n.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}})}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=ou(t,this.Sa,3,()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes.")))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,Y.LIB_NAME,e=>{this.tr=e}),this.su.length>0&&this.xu(t,this.su,this.mu,kl,e=>{this.su=e})}xu(t,e,s,r,i){if(e.length!==0){var n=e.map(a=>a.record);i([]);var o=Ac(n,Pc(s,Y.LIB_NAME,Y.LIB_VERSION),r,Y.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var s=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),r=s.windowId,i=s.sessionStartTimestamp,n=s.lastActivityTimestamp;e.sessionId=s.sessionId,e.windowId=r,B(i)||(e.sessionStartTimestamp=i),B(n)||(e.lastActivityTimestamp=n)}if(T!=null&&(t=T.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?It(T.location.href):T.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},Zp={metrics:class{constructor(t){this.rt=se("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,s=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===s||((e=this.ou)==null||e.reset(),this.cu=s,this.ou=new th(this.hu(),function(r){var i,n,o,a,l,u=r==null?void 0:r.resourceAttributes;return{serviceName:(i=u==null?void 0:u["service.name"])!==null&&i!==void 0?i:r==null?void 0:r.serviceName,serviceVersion:(n=u==null?void 0:u["service.version"])!==null&&n!==void 0?n:r==null?void 0:r.serviceVersion,environment:(o=u==null?void 0:u["deployment.environment"])!==null&&o!==void 0?o:r==null?void 0:r.environment,resourceAttributes:u,beforeSend:r==null?void 0:r.beforeSend,flushIntervalMs:(a=r==null?void 0:r.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=r==null?void 0:r.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}}(s),this.rt)),this.ou}count(t,e,s){e===void 0&&(e=1),this.vu().count(t,e,s)}gauge(t,e,s){this.vu().gauge(t,e,s)}histogram(t,e,s){this.vu().histogram(t,e,s)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch(s=>this.rt.error("PostHog metrics flush failed:",s))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:s=>e.Jt(s),getLibraryId:()=>Y.LIB_NAME,getLibraryVersion:()=>Y.LIB_VERSION}}Jt(t,e){return new Promise(s=>{var r=!1,i=o=>{r||(r=!0,clearTimeout(n),s(o))},n=setTimeout(()=>i({kind:"retry-later",error:new Error("metrics request timed out")}),9e4);this._instance._send_request(b({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)i({kind:"ok"});else if(a===413)i({kind:"too-large"});else if(a!==0&&a!==429&&500>a)i({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;i({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))})}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},Xp=b({},Si,jp,Up,Hp,zp,Wp,Vp,qp,Gp,Kp,Jp,Yp,Zp);$e.__defaultExtensionClasses=b({},Xp);var Lu=function(){Y.SDK_DIST_CHANNEL="npm";var t=qs[ss]=new $e;return function(){function e(){e.done||(e.done=!0,Mu=!1,Z(qs,function(s){s._dom_loaded()}))}F!=null&&F.addEventListener?F.readyState==="complete"?e():ie(F,"DOMContentLoaded",e,{capture:!1}):g&&C.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")}(),t}();const Ou="CustomWidget",Du="GeneratedWidget",Qp={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function kt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function to(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ef(t={},e=0){const s=to(t.artifactType||t.type||Ou),r=to(t.artifactName||t.name||t.fileName||`${Du}-${e+1}`);return`${s||"artifact"}-${r||e+1}`}function Bu(t={},e=0){const s=kt(t),r=s.artifactType||s.type||Ou,i=s.artifactName||s.name||Du,n=s.fileName||`${i}.dart`;return{id:to(s.id)||ef({...s,artifactType:r,artifactName:i,fileName:n},e),artifactType:r,artifactName:i,fileName:n,description:s.description||"",code:s.code||s.content||"",dependencies:ju(s.dependencies),imports:Array.isArray(s.imports)?s.imports:[],publicApi:Array.isArray(s.publicApi)?s.publicApi:[],relationships:Uu(s.relationships),deployStatus:s.deployStatus||"pending",review:s.review||null,metadata:kt(s.metadata),codeType:s.codeType||Qp[r]||"O"}}function ju(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const s=kt(e),r=s.name||s.package;return r?{name:r,version:s.version||null,inferred:!!s.inferred,...s.reason?{reason:s.reason}:{}}:null}).filter(Boolean):Object.entries(kt(t)).map(([e,s])=>({name:e,version:s||null,inferred:!1})):[]}function Uu(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const s=kt(e);return!s.from&&!s.to?null:{from:s.from||null,to:s.to||null,type:s.type||"uses",description:s.description||""}}).filter(Boolean):[]}function so(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const s=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!s)return null;try{return JSON.parse(s[1].trim())}catch{return null}}}function Qs(t,e={}){const s=[],r=typeof t=="string"?so(t):t,n=kt(r||{});!r&&typeof t=="string"&&s.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(n.artifacts)?n.artifacts:[{artifactType:n.artifactType||e.artifactType,artifactName:n.artifactName||e.artifactName,fileName:n.fileName||e.fileName,description:n.description,code:n.code||e.code||(typeof t=="string"?t:""),dependencies:n.dependencies||e.dependencies,relationships:n.relationships||e.relationships}],a=o.map((d,h)=>Bu(d,h)),l=new Map(o.map((d,h)=>{var f;return[kt(d).id,(f=a[h])==null?void 0:f.id]}).filter(([d,h])=>d&&h)),u=d=>l.get(d)||d,c=Uu(n.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:n.schemaVersion||e.schemaVersion||null,id:n.id||e.id||"bundle-current",title:n.title||n.name||e.title||"Generated artifact bundle",description:n.description||e.description||"",artifacts:a,dependencies:ju(n.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(n.deployOrder)?n.deployOrder.map(u):a.map(d=>d.id),warnings:[...s,...Array.isArray(n.warnings)?n.warnings:[]],metadata:kt(n.metadata)}}function oi(t){return Qs(t).artifacts[0]||Bu()}function yt(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function vs(t){return JSON.stringify(t,null,2)}function tf(t){return vs({task:"architect",userRequest:String(t??"")})}function sf(t){const e=yt(t);return e&&typeof e=="object"&&typeof e.task=="string"?vs(e):vs({task:"generate_bundle",bundleSpec:e})}function rf(t){return vs({task:"review_bundle",generatedBundle:yt(t),outputRequirements:{overall:["status","score","summary","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"]}})}function Do(t,e=null){const s={stage:t};return e!=null&&(s.bundle=yt(e)),s}function nf({bundleSpec:t,artifactBundle:e,bundleReview:s,artifactId:r,userFeedback:i}){return vs({task:"regenerate_artifact",artifactId:r,bundleSpec:yt(t),artifactBundle:yt(e),bundleReview:yt(s),userFeedback:String(i)})}function Hu({bundleSpec:t,artifactBundle:e,bundleReview:s,userFeedback:r}){return vs({task:"regenerate_bundle",bundleSpec:yt(t),artifactBundle:yt(e),bundleReview:yt(s),userFeedback:String(r??"")})}const Cl={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},of=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function Ne(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function af(t){return Ne(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||Ne(t.filterSummary)||Ne(t.filterResults):!1}function zu(t,e=0){if(!Ne(t)||e>3)return null;if(af(t))return t;for(const s of of){const r=t[s];if(Ne(r)){const i=zu(r,e+1);if(i)return i}}return null}function ai(t){return Array.isArray(t)?t.some(ai):Ne(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(ai):!1}function ro(t){return Array.isArray(t)?t.some(ro):Ne(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(ro):!1}function Wu(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function lf(t,e){if(Ne(t))for(const[s,r]of Object.entries(t)){if(!Ne(r))continue;const i=Ne(r.categories)?r.categories:{},n=Object.entries(i).filter(([,o])=>Ne(o)&&o.matched===!0).map(([o])=>o);n.length>0?n.forEach(o=>e.add(o)):r.matched===!0&&e.add(Wu(s))}}function cf(t,e){var r;if(!t)return;const s=Array.isArray(t)?t.flatMap(i=>Ne(i)?Object.entries(i):[]):Object.entries(t);for(const[i,n]of s){if(!ai(n))continue;const o=Wu(i),a=((r=n==null?void 0:n.raiFilterResult)==null?void 0:r.raiFilterTypeResults)||(o==="rai"?n==null?void 0:n.raiFilterTypeResults:null),l=Ne(a)?Object.entries(a).filter(([,u])=>ai(u)).map(([u])=>u):[];l.length>0?l.forEach(u=>e.add(u)):e.add(o)}}function uf(t){return Cl[t]?Cl[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function Fl(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function df(t){const e=zu(t);if(!e)return null;const s=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);lf(e.filterSummary,s),cf(e.filterResults,s);const r=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||s.size>0,i=e.invocationResult||null,n=ro(e.filterSummary||e.filterResults);return!r&&!n&&!["PARTIAL","FAILURE"].includes(i)?null:{kind:r?"blocked":"unavailable",invocationResult:i,matchedFilters:[...s]}}function hf(t,e){const s=df(t);if(!s)return null;const r=[...new Set(s.matchedFilters.map(uf))],i=s.kind==="blocked",n=new Error(i?`Safety screening blocked this pipeline step for ${Fl(r)}.`:"Safety screening could not be completed. Please try again.");return n.name="ModelArmorError",n.code=i?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",n.isModelArmor=!0,n.pipelineStep=e,n.userTitle=i?"Request blocked for safety":"Safety check unavailable",n.userMessage=i?`The safety check detected ${Fl(r)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",n.retryExplanation=i?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",n.matchedFilters=s.matchedFilters,n}const pf=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),Pl={CustomWidget:"custom_widgets/",CustomAction:"actions/",CustomFunction:"custom_functions/",CustomClass:"custom_code/",CodeFile:"custom_code/"},ff=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),gf=["Struct","Record"];function xt(t,e,s){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:s}}function qu(t){let e="",s=0;for(;s"&&(s--,s===0))return{inner:t.slice(e+1,r),end:r+1};return null}function mf(t){const e=[],s=t.matchAll(/\bFuture\b/g);for(const r of s){let i=r.index+6,n=null;const o=i;for(;io;if(t[i]==="<"){const u=vf(t,i);if(!u||(n=u.inner.replace(/\s+/g," ").trim(),i=u.end,!/\s/.test(t[i]||"")))continue;for(;iAl(o.functionName)===r);if(i)return i;const n=o=>!o.functionName.startsWith("_");return s.find(n)||s[0]}function xi(t=""){return Array.from(qu(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function _f(t="",e=""){var s;return((s=Vu(t,e))==null?void 0:s.returnType)||null}function Rl(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Gu(t,e){const s=xi(e);if(s.length===0)return null;const i=String(t||"").split("/").pop().replace(/\.dart$/,"");if(s.some(l=>Rl(l)===i))return null;const[o]=s,a=`${Rl(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow expects the file to be named "${a}" - rename the file (or the class) so they agree exactly.`}function yf(t="",e=""){return Vu(t,e)!==null}function wf(t,e=new Set){return((t==null?void 0:t.match(/[A-Za-z_]\w*/g))||[]).filter(r=>ff.has(r)?!1:!gf.some(n=>r.endsWith(n))||e.has(r))}function Ku(t,{functionName:e="",declaredTypes:s=new Set}={}){const r=_f(t,e),i=wf(r,s);if(i.length===0)return null;const[n]=i;let o;return s.has(n)?o=`uses Code File type "${n}", which FlutterFlow cannot process as an Action Return Value`:r===n?o="is not a FlutterFlow Action Return Value":o=`uses type "${n}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${r}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function bf(t,e={}){const s=[],r=t.fileName||"",i=t.code||"";if(pf.has(t.artifactType)||s.push(xt(t,"error",`Unsupported artifact type "${t.artifactType}".`)),r.endsWith(".dart")||s.push(xt(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!i.trim())return s.push(xt(t,"warning","Generated artifact has no Dart code yet.")),s;if(t.artifactType==="CustomWidget"&&!/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(i)&&s.push(xt(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget.")),t.artifactType==="CustomAction"&&!yf(i,t.artifactName)&&s.push(xt(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const n=e.declaredTypes||new Set(xi(i)),o=Ku(i,{functionName:t.artifactName,declaredTypes:n});o&&s.push(xt(t,"error",o))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(i)&&s.push(xt(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const n=Gu(r,i);n&&s.push(xt(t,"error",n))}return s}function Ef(t){const e=Array.isArray(t==null?void 0:t.artifacts)?t.artifacts:[],s=new Set(e.flatMap(n=>xi(n.code||""))),r=e.flatMap(n=>bf(n,{declaredTypes:s})),i=e.map(n=>({artifactId:n.id,fileName:n.fileName,pathHint:Pl[n.artifactType]||Pl.CodeFile}));return{valid:r.every(n=>n.severity!=="error"),findings:r,deployHints:i}}const Sf=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function xf(t){let e="",s=0;for(;s{const r=s.name||s.package;return!r||r==="flutter"||(e[r]=s.version||""),e},{})}function Ff(t){const e=new Map,s=new Map,r=[];for(const i of t)e.has(i.fileName)?r.push(`Duplicate deploy file name "${i.fileName}" for artifacts "${e.get(i.fileName)}" and "${i.artifactId}".`):e.set(i.fileName,i.artifactId),s.has(i.path)?r.push(`Duplicate deploy path "${i.path}" for artifacts "${s.get(i.path)}" and "${i.artifactId}".`):s.set(i.path,i.artifactId);return r}function Pf(t,e={}){const s=Array.isArray(t==null?void 0:t.artifacts)?t.artifacts:[],i=(e.selectedArtifactIds||(t==null?void 0:t.deployOrder)||s.map(d=>d.id)).map(d=>s.find(h=>h.id===d)).filter(Boolean),n=[...(t==null?void 0:t.warnings)||[]],o=[];i.forEach(d=>{const h=Cf(d),f=d.code||"",p=d.codeType||kf[d.artifactType]||ze.OTHER;f.trim()||n.push(`${d.artifactName||d.id} has no generated code.`),o.push({artifactId:d.id,artifactName:d.artifactName,artifactType:d.artifactType,fileName:h,content:f,type:p,path:If(h,p),deployMode:"customCodeSync"})});const a={...Tl(t==null?void 0:t.dependencies),...i.reduce((d,h)=>({...d,...Tl(h.dependencies)}),{})},l={};i.forEach(d=>{Ju(d.code||"").forEach(h=>{h in a||(l[h]="^1.0.0")})});const u={...l,...a};i.forEach(d=>{(d.dependencies||[]).forEach(h=>{const f=h.name||h.package;f&&!h.version&&n.push(`${d.artifactName||d.id} dependency "${f}" has no explicit version.`)})});const c=Ff(o);return{bundleId:(t==null?void 0:t.id)||"bundle-current",title:(t==null?void 0:t.title)||"Generated artifact bundle",fileEntries:o,dependencies:u,relationships:(t==null?void 0:t.relationships)||[],warnings:n,errors:c}}function Af(t){var e;return(e=String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/))==null?void 0:e[1]}function Rf(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Tf(t,e){const r=[Rf(t),Af(e.content),e.artifactName].find(i=>/^[A-Z][A-Za-z0-9_]*$/.test(String(i||"")));if(!r)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return r}function $f(t,e=new Map){const s=[];for(const[r,i]of t.entries())i.type!=="C"||e.has(i.path)||s.push({artifactId:i.artifactId||r,className:Tf(r,i),content:i.content,fileName:r,path:i.path});return s}function Mf(t,e){const s=new Set(e.map(r=>r.path));return new Map(Array.from(t.entries()).filter(([,r])=>!s.has(r.path)))}const $l={pass:0,warning:1,fail:2},Nf=["manualSteps","manualActions","requiredActions","flutterFlowSteps","flutterFlowActions","requiredUserActions","requiredFlutterFlowActions","flutterFlowSetup","userActions","nextSteps"];function Oe(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function gt(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const s=e.filter(r=>typeof r=="string").join(` +`);if(s)return s}}return""}function et(t){return t==null?[]:Array.isArray(t)?t:[t]}function Lf(t){const e=Oe(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const s=Number(e);if(Number.isFinite(s))return s;const r=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return r?Number(r[1]):null}function We(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Bo(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function io(...t){return t.filter(Boolean).reduce((e,s)=>$l[s]>$l[e]?s:e,"pass")}function Yu(t,e="warning",s="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:s};const r=Oe(t),i=gt(r.message,r.title,r.issue,r.description,r.summary);return i?{severity:Bo(r.severity||r.status||r.level)||e,message:i,suggestion:gt(r.suggestion,r.fix,r.recommendation,r.action),source:r.source||s}:null}function no(t,e="review"){const s=Oe(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([i,n])=>et(s[i]).map(o=>Yu(o,n,e)).filter(Boolean))}function Of(t,e,s=null){if(typeof t=="string")return{id:`${s||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:s,source:"Code Review"};const r=Oe(t),i=gt(r.title,r.action,r.step,r.message,r.name,r.description);return i?{id:r.id||`${s||"bundle"}-manual-${e+1}`,title:i,detail:gt(r.detail,r.instructions,r.description),location:gt(r.location,r.flutterFlowPath,r.path),timing:gt(r.timing,r.phase)||"unspecified",artifactId:s,source:gt(r.source)||"Code Review"}:null}function oo(t,e=null){const s=Oe(t);return Nf.flatMap(r=>et(s[r])).map((r,i)=>Of(r,i,e)).filter(Boolean)}function Df(t){let e=typeof t=="string"?so(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const s=Oe(e);typeof s.content=="string"&&(e=so(s.content)||e);const r=Oe(e),i=Oe(r.reviewResult||r.codeReview||r.result);return{rawText:"",root:Object.keys(i).length?i:r}}function Bf(t,e){const s=[e.id,e.fileName,e.artifactName].map(We);return t.find(r=>{const i=Oe(r);return[i.id,i.fileName,i.artifactName,i.name].map(We).some(n=>n&&s.includes(n))})||null}function jf(t,e){var i,n;const r=et((n=(i=t==null?void 0:t.metadata)==null?void 0:i.compatibility)==null?void 0:n.deployHints).find(o=>We(o==null?void 0:o.artifactId)===We(e.id)||We(o==null?void 0:o.fileName)===We(e.fileName));return(r==null?void 0:r.pathHint)||""}function Uf(t,e){return et(t==null?void 0:t.relationships).filter(s=>We(s==null?void 0:s.from)===We(e.id)||We(s==null?void 0:s.to)===We(e.id))}function Hf(t,e){var s,r;return et((r=(s=t==null?void 0:t.metadata)==null?void 0:s.compatibility)==null?void 0:r.findings).filter(i=>!(i!=null&&i.artifactId)||We(i.artifactId)===We(e.id)).map(i=>Yu(i,"warning","Compatibility check")).filter(Boolean)}function zf(t,e,s,r){const i=Bf(e,s),n=Oe((i==null?void 0:i.review)||i||s.review),o=Object.keys(n).length>0,a=[...no(n),...Hf(t,s)],l=oo(n,s.id),u=Bo(n.status||n.verdict||n.outcome||n.result),c=a.length?io(...a.map(h=>h.severity)):null,d=io(u,c,o?null:"warning");return{...s,index:r,status:d,statusReason:o?gt(n.summary,n.overview,n.assessment,n.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,pathHint:jf(t,s),relationships:Uf(t,s)}}function Wf({bundle:t,reviewResult:e}){var S;const s=Oe(t),r=et(s.artifacts),{root:i,rawText:n}=Df(e),o=[i.bundleReview,i.overallReview,i.overall,i.bundleSummary,i.summaryReview,i.review].map(Oe).find(k=>Object.keys(k).length)||{},a=et(i.artifacts||i.files||i.reviews),l=r.map((k,E)=>zf(s,a,k,E)),u=no(i),d=[...no(o),...u],h=[...oo(o),...oo(i),...l.flatMap(k=>k.manualSteps)].filter((k,E,P)=>P.findIndex(D=>D.title===k.title&&D.artifactId===k.artifactId)===E),f=Bo(o.status||o.verdict||o.overallStatus||i.status||i.verdict||i.overallStatus||i.outcome),p=io(f,...d.map(k=>k.severity),...l.map(k=>k.status)),v=o.score??i.score??i.overallScore??n,_=Lf(v),m=gt(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,i.overallSummary,i.headline,i.summary,i.executiveSummary,i.overview,i.assessment,i.conclusion,n,s.description)||"Code Review completed without an overarching written summary.",w=l.reduce((k,E)=>(k[E.status]+=1,k),{pass:0,warning:0,fail:0});return{title:s.title||"Generated artifact bundle",description:s.description||"",status:p,score:_,summary:m,findings:d,manualSteps:h,artifacts:l,counts:w,reviewCoverage:{reviewed:l.filter(k=>k.reviewComplete).length,total:l.length},deployOrder:et(s.deployOrder),relationships:et(s.relationships),warnings:et(s.warnings),compatibility:Oe((S=s.metadata)==null?void 0:S.compatibility)}}function Zu(t){if(typeof t=="string")return t;if(Array.isArray(t)){const e=t.map(s=>typeof s=="string"?s:s==null?void 0:s.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}function Ml(t,e){const s=`${t}${e}`.split(` +`),r=s.pop()??"",i=[];for(const n of s){const o=Xu(n);o&&i.push(o)}return{events:i,buffer:r}}function qf(t){const e=Xu(t);return e?[e]:[]}function Xu(t){const e=t.trim();if(!e)return null;try{const s=JSON.parse(e);return s&&typeof s=="object"&&!Array.isArray(s)?s:null}catch{return null}}async function Vf(t,e={}){var a;const{onPhase:s,onLog:r}=e;let i=null,n="";const o=l=>{if(l.event==="phase"){l.message&&s&&s(l.message);return}if(l.event==="log"){l.message&&r&&r(l.message);return}i=l};if((a=t.body)!=null&&a.getReader){const l=t.body.getReader(),u=new TextDecoder;for(;;){const{done:c,value:d}=await l.read();if(c)break;const h=Ml(n,u.decode(d,{stream:!0}));n=h.buffer,h.events.forEach(o)}}else{const l=Ml("",await t.text());n=l.buffer,l.events.forEach(o)}return qf(n).forEach(o),i?{...i,success:i.success===!0||i.success===void 0&&t.ok}:{success:!1,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}function Gf(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function Nl(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,s=[];for(const r of Gf(t).split(` +`)){if(!/^[A-Za-z_$]/.test(r)||e.test(r))continue;const i=r.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);i&&s.push(i[1])}return s}function Kf(t,e){const s=t.replace(/\.dart$/,"");if(e==="W")return s.replace(/(^|_)(\w)/g,(r,i,n)=>n.toUpperCase());if(e==="A"){const r=s.replace(/(^|_)(\w)/g,(i,n,o)=>o.toUpperCase());return r.charAt(0).toLowerCase()+r.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:s}async function Ll(t){const e=new TextEncoder().encode(String(t||"")),s=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(s),r=>r.toString(16).padStart(2,"0")).join("")}async function Jf(t,e=new Map){const s={},r=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=Kf(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await Ll(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await Ll(c)),s[o]=u,a.type==="F"){const d=Nl(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(f=>r.add(f))}}const i=new Set(Nl(e.get("lib/flutter_flow/custom_functions.dart")||"")),n={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(r).filter(o=>!i.has(o))};return{fileMapContents:JSON.stringify(s),functionsMapContents:JSON.stringify(n)}}const Yf=/^dependencies\s*:\s*(?:#.*)?$/,Zf=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function Xf(t){const e=t.match(Zf);return e?e[1]??e[2]??e[3]:null}function Qu(t){const e=t.trim();return e===""||e.startsWith("#")}function ed(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function jo(t){const e=t.findIndex(i=>Yf.test(i));if(e===-1)return null;let s=e,r=null;for(let i=e+1;iu&&u!=="flutter");if(r.length===0)return{yaml:s,added:[],alreadyPresent:[]};const i=s.split(` +`),n=new Set(td(s)),o=[],a=[];for(const[u,c]of r)n.has(u)?a.push(u):(o.push([u,c]),n.add(u));if(o.length===0)return{yaml:s,added:[],alreadyPresent:a};const l=jo(i);if(l){const u=o.map(([c,d])=>Ol(l.childIndent,c,d));i.splice(l.endIndex,0,...u)}else i.length>0&&i[i.length-1].trim()!==""&&i.push(""),i.push("dependencies:"),o.forEach(([u,c])=>{i.push(Ol(" ",u,c))});return{yaml:i.join(` +`),added:o.map(([u])=>u),alreadyPresent:a}}function sd(t){const e=String(t||""),s=[];return e.trim()?(/^name:\s*\S+/m.test(e)||s.push("pubspec.yaml missing name field"),jo(e.split(` +`))||s.push("pubspec.yaml missing dependencies section"),td(e).includes("flutter")||s.push("pubspec.yaml missing Flutter SDK dependency"),{valid:s.length===0,errors:s}):(s.push("pubspec.yaml is empty"),{valid:!1,errors:s})}const tg={"&":"&","<":"<",">":">",'"':""","'":"'"};function wt(t){return String(t??"").replace(/[&<>"']/g,e=>tg[e])}function j(t){return t?wt(t).replace(/\n/g,"
"):""}function zt(t){return wt(t).replace(/\r?\n/g," ")}function sg(t,e={}){const s=t==null?void 0:t.pipelineStep;if(s!=null&&e[s]!=null)return e[s];const r=(t==null?void 0:t.message)||"";return r.includes("Code Generator")?2:r.includes("Code Review")?3:1}function rg(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[s,r]of Object.entries(e))if(t.toLowerCase().includes(s.toLowerCase()))return r;return"📄"}function ig(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[s,r]of Object.entries(e))if(t.toLowerCase().includes(s.toLowerCase()))return r;return"📝"}function ng(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function ms(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,s=t.match(e);return s?s[1].trim():t.trim()}function Dl(t){return t=wt(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function rd(t,e="dart",s=globalThis.hljs){if(!t)return"";const r=ms(t);try{return s.highlight(r,{language:e}).value}catch(i){console.warn("Syntax highlighting failed:",i);try{return s.highlight(r,{language:"json"}).value}catch{return wt(r)}}}function ki(t,e={}){const{highlighter:s=globalThis.hljs}=e;let r='
';const i=String(t??"").split(` +`);let n=!1,o="";for(const a of i){if(a.startsWith("```")){if(n){const l=ng(o),u=rd(o.trim(),l,s);r+=`
+
${u}
+
`,o="",n=!1}else n=!0;continue}if(n){o+=a+` +`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();r+=`
+

+ ${rg(l)} + ${wt(l)} +

+
`;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();r+=`
+

+ ${ig(l)} + ${wt(l)} +

+
`;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();r+=`
+ + ${Dl(l)} +
`;continue}a.trim()!==""&&(r+=`

${Dl(a)}

`)}return r+="
",` +
+
+
+ Live Audit Report +
+ ${r} +
+ `}const og="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses",ag="phc_KoqpBJCIiWMW5I6HKBM092DVXZbMmE4KkPHqI518pF3",lg="https://us.i.posthog.com";Lu.init(ag,{api_host:lg,person_profiles:"identified_only"});function tt(t,e={}){try{Lu.capture(t,e)}catch(s){console.error("PostHog tracking failed",s)}}const Je="https://4tgke4.buildship.run",id={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},li="ccc_auth_session",Bl=new WeakSet;let q={email:null,sessionToken:null,isVerified:!1};function _s(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let fe=_s({isResolved:!0});const cg=`${Je}/service/runpipeline`,ug="bs_user_id",dg=`${Je}/authUserCheck`;let Rr={userId:null,status:null,resolved:!1};const ci={free:2,professional:50,power:2e3},ui="ccc_subscription",jl=3,hg=new Set(["active","trialing","paid"]),er="google/gemini-3.6-flash",Tr=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],pg={"google/gemini-3.6-flash":"Gemini 3.6 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function He(t){return pg[t]||t}const ls="ccc_usage",ao="google/gemini-3.6-flash",lo="google/gemini-3.6-flash",mn="google/gemini-3.6-flash",Ul={professional:11,power:49},co={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},$r={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let Mr={...$r};async function fg(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const s=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!s.ok)return;const r=await s.json();if(r.result!=="success"||!r.rates)return;const i=r.rates,n={AUD:1},o=new Set([...Object.keys($r),...Object.values(uo),...Object.values(co)]);for(const a of o)a!=="AUD"&&(typeof i[a]=="number"&&i[a]>0?n[a]=i[a]:$r[a]&&(n[a]=$r[a]));Mr=n}catch{}finally{clearTimeout(e)}}const uo={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function nd(){try{const n=Intl.DateTimeFormat().resolvedOptions().timeZone;if(n&&uo[n])return uo[n]}catch{}const e=(navigator.language||"en-US").replace("-","_"),s=co[e];if(s)return s;const r=e.split("_")[0],i=co[r];return i||"USD"}function Hl(t,e){const s=Mr[e]??Mr.USD,r=t*s,i=Math.round(r*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:i>=100||i%1===0?0:2}).format(i)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*Mr.USD)}}const st="ccc_api_key_",_t="ccc_session_api_key_",nt="ccc_encryption_key",tr="ccc_encryption_key_scope",gg="ccc_keystore",di="keys",sr="ccc_encryption_key_version";let ho=null,hi=null,rr=!1,pi=!1,zl=!1;class fi extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function Wl(){if(zl)return;zl=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&he(t,"warning")}function od(){return localStorage.getItem(sr)||""}function po(){var t;return((t=crypto.randomUUID)==null?void 0:t.call(crypto))||ld(crypto.getRandomValues(new Uint8Array(16)))}function vg(){const t=od();if(t)return t;const e=po();return localStorage.setItem(sr,e),e}function ys(){ho=null,hi=null,rr=!1,pi=!1}window.addEventListener("storage",t=>{t.key===sr&&ys()});function mg(){return new Promise((t,e)=>{const s=indexedDB.open(gg,1);s.onupgradeneeded=()=>{const r=s.result;r.objectStoreNames.contains(di)||r.createObjectStore(di)},s.onsuccess=()=>t(s.result),s.onerror=()=>e(s.error)})}async function Uo(t,e){const s=await mg();return new Promise((r,i)=>{const n=s.transaction(di,t);let o;try{o=e(n.objectStore(di))}catch(l){s.close(),i(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>i(o.error),n.oncomplete=()=>{s.close(),r(a)},n.onerror=()=>{s.close(),i(n.error||new Error("Encryption key transaction failed."))},n.onabort=()=>{s.close(),i(n.error||new Error("Encryption key transaction aborted."))}})}function _g(t){var e;return t instanceof CryptoKey&&((e=t.algorithm)==null?void 0:e.name)==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function yg(){const t=await Uo("readonly",e=>e.get(nt));return _g(t)?t:null}async function ad(t){await Uo("readwrite",e=>e.put(t,nt))}async function wg(){ys();try{await Uo("readwrite",t=>t.delete(nt))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function bg(){const t=sessionStorage.getItem(nt);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await ad(e),sessionStorage.removeItem(nt),sessionStorage.removeItem(tr),localStorage.removeItem(st+"salt"),e}async function ql(t){const e=sessionStorage.getItem(nt);if(e)return pi=sessionStorage.getItem(tr)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new fi;const s=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),r=await crypto.subtle.exportKey("jwk",s);return sessionStorage.setItem(nt,JSON.stringify(r)),sessionStorage.setItem(tr,"session"),pi=!1,crypto.subtle.importKey("jwk",r,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function Eg(t){if(sessionStorage.getItem(tr)==="session"&&sessionStorage.getItem(nt))return Wl(),rr=!0,ql(t);try{const e=await yg();if(e)return e;const s=await bg();if(s)return s;const r=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await ad(r),r}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),Wl(),rr=!0,ql(t)}}async function Ho(t={}){const{allowSessionFallbackCreation:e=!0}=t,s=vg();hi!==s&&ys();const r=ho||Eg(e);ho=r,hi=s;try{return await r}catch(i){throw ys(),i}}async function Sg(t){const e=await Ho(),s=hi,r=new TextEncoder,i=crypto.getRandomValues(new Uint8Array(12)),n=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},e,r.encode(t)),o=new Uint8Array(i.length+n.byteLength);return o.set(i),o.set(new Uint8Array(n),i.length),{ciphertext:ld(o),keyVersion:s,sessionFallback:rr}}async function xg(t,e={}){const{isSessionCredential:s=!1}=e;try{const r=await Ho({allowSessionFallbackCreation:!1});if(rr&&!s&&!pi)throw new fi;const i=kg(t),n=i.slice(0,12),o=i.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:n},r,o);return new TextDecoder().decode(a)}catch(r){if(r instanceof fi)throw r;return console.error("Decryption failed:",r),null}}function ld(t){const e=new Uint8Array(t);let s="";for(let r=0;r0}let ir="",gi="";async function zo(){sessionStorage.getItem(nt)&&await Ho(),ir=await ke("flutterflow"),gi=await ke("flutterflow_project_id"),Ag(),Kt()}function Wo(){document.getElementById("api-keys-modal").classList.add("open"),Vo(),ir&&hd(ir)}function cd(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&e.classList.remove("open");const s=document.getElementById("walkthrough-modal");s&&(qo(),s.classList.add("open"))}let bt=1;function ud(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ii(){const t=ud();t.length&&t.forEach((e,s)=>{const r=s+1;if(r===bt){e.classList.remove("opacity-60","bg-gray-50","border-gray-200"),e.classList.add("bg-blue-50","border-blue-200");const i=e.querySelector("div:first-child");i&&(i.classList.remove("bg-gray-400"),i.classList.add("bg-blue-500"),i.innerHTML=r)}else if(r0&&bt<=t&&(bt++,Ii())}function Cg(){const t=document.getElementById("walkthrough-modal");t&&(bt=1,Ii(),t.classList.add("open"))}function Fg(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&e.classList.remove("open");const s=document.getElementById("walkthrough-dont-show");s&&s.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function dd(){if(q.isVerified&&Vt()&&fe.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(bt=1,Ii(),e.classList.add("open"))}}async function Vo(){const t=document.getElementById("flutterflow-api-key-input");ir?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",Pg()}function Pg(){Gl("flutterflow","flutterflow-key-status"),Gl("flutterflow_project_id","flutterflow-project-status")}function Gl(t,e){const s=document.getElementById(e);if(!s)return;const r=s.querySelector(".key-status-dot"),i=s.querySelector("span");rs(t)?(r.className="key-status-dot configured",i.className="text-green-600",i.textContent="User key configured"):(r.className="key-status-dot missing",i.className="text-gray-500",i.textContent="Not configured")}function Kt(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff"),s=document.getElementById("btn-run-pipeline");s&&s.classList.remove("hidden"),e&&e.classList.toggle("hidden",!t)}function Ag(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),s=["flutterflow"];e.forEach((r,i)=>{const n=s[i];n==="flutterflow"?rs("flutterflow")&&rs("flutterflow_project_id")?(r.className="key-status-dot configured",r.title="FlutterFlow (Fully configured)"):rs("flutterflow")||rs("flutterflow_project_id")?(r.className="key-status-dot env",r.title="FlutterFlow (Partially configured)"):(r.className="key-status-dot missing",r.title="FlutterFlow (Not configured)"):rs(n)?(r.className="key-status-dot configured",r.title=n.charAt(0).toUpperCase()+n.slice(1)+" (User key)"):(r.className="key-status-dot missing",r.title=n.charAt(0).toUpperCase()+n.slice(1)+" (Not configured)")}),Kt()}async function Rg(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select");t.value.trim()&&await Vl("flutterflow",t.value);const s=(e==null?void 0:e.value.trim())||"";if(s){if(!Ci(s)){he("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await Vl("flutterflow_project_id",s)}await zo(),Vo();const r=document.querySelector("#api-keys-modal .bg-blue-500"),i=r.textContent;r.textContent="Saved!",r.classList.remove("bg-blue-500","hover:bg-blue-600"),r.classList.add("bg-green-500"),setTimeout(()=>{r.textContent=i,r.classList.remove("bg-green-500"),r.classList.add("bg-blue-500","hover:bg-blue-600"),cd()},1e3)}async function Tg(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(sr,po()),ys(),localStorage.removeItem(st+"flutterflow"),localStorage.removeItem(st+"flutterflow_project_id"),sessionStorage.removeItem(_t+"flutterflow"),sessionStorage.removeItem(_t+"flutterflow_project_id"),sessionStorage.removeItem(nt),sessionStorage.removeItem(tr),localStorage.removeItem(st+"salt"),await wg(),localStorage.setItem(sr,po()),localStorage.removeItem(st+"flutterflow"),localStorage.removeItem(st+"flutterflow_project_id"),sessionStorage.removeItem(_t+"flutterflow"),sessionStorage.removeItem(_t+"flutterflow_project_id"),await zo();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),Vo()}function Ci(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function $g(t,e){const s=document.getElementById(t);s&&(s.value?e?s.style.borderColor="#22c55e":s.style.borderColor="#ef4444":s.style.borderColor="")}function Mg(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const s=e.target.value.trim().length>0;$g("flutterflow-api-key-input",s)}),t.addEventListener("blur",Ng(async e=>{const s=e.target.value.trim();s&&await hd(s)},500)))}function Ng(t,e){let s;return function(...i){const n=()=>{clearTimeout(s),t(...i)};clearTimeout(s),s=setTimeout(n,e)}}async function hd(t){const e=document.getElementById("flutterflow-projects-select"),s=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',s&&s.classList.add("hidden");try{const i=await new Ai(t,"").listProjects();if(!i||i.length===0){e.innerHTML='';return}e.innerHTML='',i.forEach(n=>{const o=document.createElement("option");o.value=n.id||n.projectId||"",o.textContent=n.name||n.projectName||`Project ${n.id}`,e.appendChild(o)}),gi&&(e.value=gi)}catch(r){console.error("Failed to fetch projects:",r),e.innerHTML='',s&&(s.textContent=`Failed to load projects: ${r.message}`,s.classList.remove("hidden"))}}function Lg(t){const e=document.getElementById(t),r=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",r.innerHTML=` + + `):(e.type="password",r.innerHTML=` + + + `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1};function Og(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function Dg(){y.bundleSpec=Qs(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Fi(){var s,r,i,n;const t=oi(y.bundleSpec);y.artifactBundle=Qs(y.step2Result,{id:(s=y.bundleSpec)==null?void 0:s.id,title:(r=y.bundleSpec)==null?void 0:r.title,description:(i=y.bundleSpec)==null?void 0:i.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:(n=y.bundleSpec)==null?void 0:n.relationships,code:y.step2Result||""});const e=Ef(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(o=>o.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=oi(y.artifactBundle).id}function Pi(){var s,r,i,n,o,a,l,u;const t=Qs(y.step3Result,{id:(s=y.artifactBundle)==null?void 0:s.id,title:(r=y.artifactBundle)==null?void 0:r.title}),e=new Map(t.artifacts.map(c=>[c.id,c.review]));y.bundleReview=Qs({id:(i=y.artifactBundle)==null?void 0:i.id,title:(n=y.artifactBundle)==null?void 0:n.title,artifacts:((a=(o=y.artifactBundle)==null?void 0:o.artifacts)==null?void 0:a.map(c=>({...c,review:e.get(c.id)||c.review||y.step3Result||null})))||[],relationships:(l=y.artifactBundle)==null?void 0:l.relationships,warnings:(u=y.artifactBundle)==null?void 0:u.warnings})}function pd(){const t=Go();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget"}}function Go(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t==null?void 0:t.artifacts)?t.artifacts:[]).find(s=>s.id===y.selectedArtifactId)||oi(t)}function Ko(){return Go().code||y.step2Result||""}async function Bg(){try{await zo()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Nr={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};class Ai{constructor(e,s,r="main",i=Nr.production){this.apiKey=e,this.baseUrl=i,this._projectId=s,this._branchName=r,this._endpoint=i}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){var r;console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let s=null;for(const i of e)try{const n=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(i)});if(!n.ok){const l=await n.text();s=new Error(`Export failed: ${n.status} - ${l}`);continue}const o=await n.json(),a=((r=o==null?void 0:o.value)==null?void 0:r.project_zip)||(o==null?void 0:o.project_zip);if(!a){s=new Error("Export response did not include project source.");continue}return a}catch(n){s=n}throw s||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),s=await JSZip.loadAsync(e,{base64:!0}),r=Object.keys(s.files).filter(a=>!s.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!r)throw new Error("Export did not contain a pubspec.yaml.");const i=r.slice(0,r.length-12),n=new Map,o=Object.keys(s.files).filter(a=>{if(s.files[a].dir||!a.startsWith(i))return!1;const l=a.slice(i.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{n.set(a.slice(i.length),await s.files[a].async("string"))})),{pubspecYaml:await s.files[r].async("string"),files:n}}async pushCodeWithRetry(e,s=3){var n,o,a;const r=[Nr.production,Nr.staging],i=Math.max(0,r.indexOf(this._endpoint));for(let l=0;lsetTimeout(p,1e3*(l+1)));continue}return d}catch(d){console.warn(`Push to ${c} failed: ${d.message}, trying next...`),await new Promise(h=>setTimeout(h,1e3*(l+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}async listProjects(e={}){const{page:s=1,limit:r=100}=e;console.log("Listing projects for API key via V2 endpoint");try{const i=await fetch("https://api.flutterflow.io/v2/l/listProjects",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(!i.ok){const a=await i.text();throw new Error(`List projects failed: ${i.status} - ${a}`)}const n=await i.json();if(n.success&&typeof n.value=="string")try{const a=JSON.parse(n.value);if(a&&Array.isArray(a.entries))return a.entries.map(l=>{var u;return{id:l.id,name:((u=l.project)==null?void 0:u.name)||l.id}})}catch(a){console.error("Failed to parse stringified project value:",a)}const o=n.projects||n.items||n.entries||(Array.isArray(n)?n:[]);return Array.isArray(o)?o:[]}catch(i){throw console.error("Error listing projects:",i),i}}}async function Jo(t){const e=t.clone();let s;try{s=await t.json()}catch{const n=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:n||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${n}`)}if(!t.ok){let i=s.message||`HTTP ${t.status}`,n=new Map;if(s.errors)n=new Map(Object.entries(s.errors));else if(!s.message&&typeof s=="object"){const o=Object.keys(s).filter(a=>a.endsWith(".dart")&&Array.isArray(s[a]));o.length>0&&(n=new Map(Object.entries(s)),i=o.flatMap(l=>s[l].map(u=>`${l}: ${u.errorMessage}`)).join(` +`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:i,errorMap:n}}const r=s.value?JSON.parse(s.value):{};return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(r))}}function Yo(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const U={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},fd=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,gd=/extends\s+State<\w+>/;function jg(t,e=""){if(t==="pubspec.yaml")return U.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return U.OTHER;if(t==="custom_functions.dart")return U.FUNCTION;if(e){const s=fd.test(e),r=gd.test(e);if(s||r)return U.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return U.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return U.FUNCTION}return U.CODE_FILE}function vd(t,e){switch(e){case U.ACTION:return`lib/custom_code/actions/${t}`;case U.WIDGET:return`lib/custom_code/widgets/${t}`;case U.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case U.CODE_FILE:return`lib/custom_code/${t}`;case U.DEPENDENCIES:return"pubspec.yaml";case U.OTHER:return`lib/custom_code/${t}`;default:return t}}async function Zo(t,e=new Map){return Jf(t,e)}const fo=new Map;function md(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Ri(t){fo.delete(md(t))}async function Xo(t,e,s,r){const i=$f(e,s);if(i.length===0)return{remoteFiles:s,syncFileMap:e};console.log(`Provisioning ${i.length} new FlutterFlow custom code file(s) before sync.`),be.set("provision");const n=await fetch(og,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:r,customClasses:i,stream:!0})}),o=await Vf(n,{onPhase:a=>be.setSubstatus(a),onLog:a=>console.log(`[custom class deploy] ${a}`)});if(!o.success){const a=o.details?` ${o.details}`:"";throw new Error(`${o.error||"FlutterFlow custom class provisioning failed."}${a}`)}return Ri(t),{remoteFiles:s,syncFileMap:Mf(e,i)}}async function Qo(t,e={}){const s=md(t);let r=fo.get(s);if(r===void 0){try{r=await t.fetchProjectSource()}catch(n){throw new Error(`Could not read your project's pubspec.yaml (${n.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const i=sd(r.pubspecYaml);if(!i.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${i.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);fo.set(s,r)}return{...eg(r.pubspecYaml,e),remoteFiles:r.files}}function Ug(t){const e=[],s=[];t.content.length>5e4&&s.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const r=t.content.split(` +`).length;r>500&&s.push(`Code has ${r} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===U.ACTION&&s.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&s.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&s.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const i=t.content.match(/print\s*\(/g);return i&&i.length>3&&s.push(`Code contains ${i.length} print statements. Consider removing debug prints before committing.`),{canProceed:e.length===0,issues:e,warnings:s}}async function Hg(t,e){let s=` +
+
+

Commit Summary

+

+ File: ${t.fileName}
+ Type: ${t.artifactType}
+ Size: ${(t.content.length/1024).toFixed(1)} KB
+ Lines: ${t.content.split(` +`).length} +

+
+ `;return e.warnings.length>0&&(s+=` +
+

Warnings (${e.warnings.length})

+
    + ${e.warnings.map(r=>`
  • • ${r}
  • `).join("")} +
+
+ `),e.issues.length>0&&(s+=` +
+

Issues (${e.issues.length})

+
    + ${e.issues.map(r=>`
  • • ${r}
  • `).join("")} +
+
+ `),s+="
",console.log("Pre-commit summary:",s),e.canProceed?e.warnings.length>0?confirm(`Found ${e.warnings.length} warning(s). Proceed with commit? + +${e.warnings.join(` +`)}`):!0:!1}function _d(t,e={}){const{artifactType:s="CustomWidget",artifactName:r="GeneratedCode"}=e;let i=t.trim();i.startsWith("```dart")?i=i.replace(/^```dart\n/,""):i.startsWith("```")&&(i=i.replace(/^```\n/,"")),i.endsWith("```")&&(i=i.replace(/\n```$/,""));let n=r;n.endsWith(".dart")||(n+=".dart");let o=U.CODE_FILE;switch(s){case"CustomAction":o=U.ACTION;break;case"CustomWidget":o=U.WIDGET;break;case"CustomFunction":o=U.FUNCTION,n="custom_functions.dart";break;case"CustomClass":case"CodeFile":o=U.CODE_FILE;break}let a="";return o===U.WIDGET?a=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom widget code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:o===U.ACTION?a=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom action code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:o===U.FUNCTION&&(a=`// Automatic FlutterFlow imports +import 'dart:convert'; +import 'dart:math' as math; + +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:intl/intl.dart'; +import 'package:timeago/timeago.dart' as timeago; +import '/flutter_flow/lat_lng.dart'; +import '/flutter_flow/place.dart'; +import '/flutter_flow/uploaded_file.dart'; + +`),{content:a+i,fileName:n,codeType:o,artifactType:s,artifactName:r}}function zg(t){const e={};for(const s of Ju(t))e[s]="^1.0.0";return e}function Wg(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function qg(t,e,s,r=new Set,i=""){const n=[],o=fd.test(e),a=gd.test(e),l=[{pattern:/void\s+main\s*\(/,message:"Contains main() function - not allowed in FlutterFlow"},{pattern:/runApp\s*\(/,message:"Contains runApp() - not allowed in FlutterFlow"},{pattern:/MaterialApp\s*\(/,message:"Contains MaterialApp - not allowed in FlutterFlow"},{pattern:/Scaffold\s*\(/,message:"Contains Scaffold - usually not needed in FlutterFlow widgets"}],u=t.includes("custom_functions")||t.includes("functions"),c=/^\s*import\s+['"]([^'"]+)['"]/gm;let d;for(;(d=c.exec(e))!==null;){const h=d[1],f=h.startsWith("/flutter_flow/")||h.startsWith("/backend/")||h.startsWith("/custom_code/")||h==="index.dart"||h==="package:flutter/material.dart"||h==="package:flutter/services.dart",p=h.startsWith("dart:")||h.startsWith("package:");u?h.startsWith("dart:")||n.push(`Custom Functions cannot use '${h}' - only Dart SDK imports allowed`):!f&&!p&&n.push(`Unknown import '${h}' - use FlutterFlow managed imports`)}for(const{pattern:h,message:f}of l)h.test(e)&&n.push(f);if(s===U.WIDGET&&!o&&!a&&n.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),s===U.ACTION){const h=Ku(e,{functionName:i,declaredTypes:r});h&&n.push(h)}if(s===U.CODE_FILE){const h=Gu(t,e);h&&n.push(h)}return{valid:n.length===0,errors:n}}function Ti(t){const e=[],s=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:s};const r=new Set(Array.from(t.values()).flatMap(i=>xi(i.content||"")));for(const[i,n]of t.entries()){if((!n.content||n.content.trim().length===0)&&e.push(`File ${i} is empty`),n.content&&n.content.length>1e5&&s.push(`File ${i} is very large (>100KB)`),i.endsWith(".dart")){const o=qg(i,n.content,n.type,r,n.artifactName);o.valid||e.push(...o.errors.map(a=>`${i}: ${a}`))}if(i==="pubspec.yaml"){const o=sd(n.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:s}}const G={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},K={currentState:G.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=G.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(G).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===G.PREPARING&&(this.startTime=Date.now()),(t===G.SUCCESS||t===G.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(G.ERROR)},setSuccess(t){this.result=t,this.setState(G.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===G.PREPARING||this.currentState===G.VALIDATING||this.currentState===G.PUSHING}};async function Vg(t,e,s={}){let{codeType:r="W"}=s;const{pubspecDeps:i={},artifactName:n=e}=s;r==="CustomWidget"&&(r=U.WIDGET),r==="CustomAction"&&(r=U.ACTION),r==="CustomFunction"&&(r=U.FUNCTION),r==="CustomClass"&&(r=U.CODE_FILE),r==="CodeFile"&&(r=U.CODE_FILE),K.reset(),K.setState(G.PREPARING);try{const o=await ke("flutterflow"),a=await ke("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ci(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=or(),u=new Ai(o,a,"main",l);K.setState(G.VALIDATING);const c=new Map,d=r||jg(e,t),h=vd(e,d);c.set(e,{artifactName:n,content:t,type:d,path:h}),K.setProgress(0,c.size);const f=Ti(c);if(!f.valid)throw new Error(`Validation failed: +${f.errors.join(` +`)}`);const p=await Qo(u,i),v=p.yaml,_=await Xo(u,c,p.remoteFiles,`Provision ${n} custom class`),m=await Zo(_.syncFileMap,_.remoteFiles),w=new Map(_.syncFileMap);w.set("pubspec.yaml",{content:v,type:"D",path:"pubspec.yaml"}),be.set("package");const S=await ea(w),k={project_id:a,zipped_custom_code:S,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:v,file_map:m.fileMapContents,functions_map:m.functionsMapContents};K.setState(G.PUSHING),K.setProgress(1,c.size),Ri(u),be.set("push");const E=await u.pushCode(k),P=await Jo(E);if(P.success)K.setSuccess({fileCount:c.size,projectId:a,warnings:P.errorMap&&P.errorMap.size>0?Array.from(P.errorMap.entries()):[]});else{const D=P.errorMessage||Yo(P.responseCode);throw new Error(D)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:p.added,warnings:P.errorMap?Array.from(P.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),K.setError(o),{success:!1,error:o.message,state:K.currentState}}}async function ea(t){try{const e=new JSZip;for(const[r,i]of t.entries())e.file(r,i.content);return await e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}catch(e){return console.error("Error creating zip:",e),""}}async function yd(t,e={}){const{artifactType:s,artifactName:r,pipelineResult:i}=e;console.log(`Starting commit for ${r} (${s})`);try{K.setState(G.PREPARING);const n=_d(t,{artifactType:s,artifactName:r}),o=zg(n.content);console.log("Detected dependencies:",o),K.setState(G.VALIDATING);const a=await ke("flutterflow"),l=await ke("flutterflow_project_id");if(!a)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!l)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ci(l))throw new Error("Invalid FlutterFlow Project ID format.");const u=new Map;u.set(n.fileName,{artifactName:r,content:n.content,type:n.codeType,path:vd(n.fileName,n.codeType),functionName:n.codeType===U.FUNCTION?r:void 0}),K.setProgress(0,u.size);const c=Ti(u);if(!c.valid)throw new Error(`File validation failed: +${c.errors.join(` +`)}`);c.warnings.length>0&&console.warn("Validation warnings:",c.warnings),K.setState(G.PUSHING);const d=or(),h=new Ai(a,l,"main",d),f=await Qo(h,o),p=f.yaml,v=await Xo(h,u,f.remoteFiles,`Provision ${r} custom class`),_=await Zo(v.syncFileMap,v.remoteFiles),m=new Map(v.syncFileMap);m.set("pubspec.yaml",{content:p,type:U.DEPENDENCIES,path:"pubspec.yaml"}),be.set("package");const w=await ea(m),S={project_id:l,zipped_custom_code:w,uid:`web_${Date.now()}`,branch_name:h.branchName,serialized_yaml:p,file_map:_.fileMapContents,functions_map:_.functionsMapContents};K.setProgress(1,u.size),Ri(h),be.set("push");const k=await h.pushCode(S),E=await Jo(k);if(E.success){const P={...Wg(n,i),projectId:l};return K.setSuccess({...P,fileCount:u.size,warnings:E.errorMap?Array.from(E.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${n.fileName} to FlutterFlow`,metadata:P,addedDependencies:f.added,warnings:E.errorMap?Array.from(E.errorMap.entries()):[],elapsedTime:K.getElapsedTime()}}else{const P=E.errorMessage||Yo(E.responseCode),D=new Error(P);throw D.errorMap=E.errorMap,D}}catch(n){console.error("Commit execution failed:",n),K.setError(n);let o=new Map;if(n.errorMap)o=n.errorMap;else if(n.message&&n.message.includes("{"))try{const a=n.message.match(/\{[\s\S]*\}/);if(a){const l=JSON.parse(a[0]);o=new Map(Object.entries(l))}}catch(a){console.warn("Failed to parse error map from commit response:",a)}return{success:!1,error:n.message,errorMap:o,state:K.currentState,elapsedTime:K.getElapsedTime()}}}async function Gg(t,e={}){var r;const{pipelineResult:s}=e;try{if(K.setState(G.PREPARING),((r=t.errors)==null?void 0:r.length)>0)throw new Error(`Bundle validation failed: +${t.errors.join(` +`)}`);const i=new Map(t.fileEntries.map(E=>[E.fileName,{artifactId:E.artifactId,artifactName:E.artifactName,content:E.content,type:E.type,path:E.path,functionName:E.type===U.FUNCTION?E.artifactName:void 0}]));K.setProgress(0,i.size);const n=Ti(i);if(!n.valid)throw new Error(`File validation failed: +${n.errors.join(` +`)}`);K.setState(G.VALIDATING);const o=await ke("flutterflow"),a=await ke("flutterflow_project_id");if(!o)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!a)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ci(a))throw new Error("Invalid FlutterFlow Project ID format.");K.setState(G.PUSHING);const l=or(),u=new Ai(o,a,"main",l),c=await Qo(u,t.dependencies),d=c.yaml,h=await Xo(u,i,c.remoteFiles,`Provision ${t.title} custom classes`),f=await Zo(h.syncFileMap,h.remoteFiles),p=new Map(h.syncFileMap);p.set("pubspec.yaml",{content:d,type:U.DEPENDENCIES,path:"pubspec.yaml"}),be.set("package");const v=await ea(p),_={project_id:a,zipped_custom_code:v,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:d,file_map:f.fileMapContents,functions_map:f.functionsMapContents};K.setProgress(1,i.size),Ri(u),be.set("push");const m=await u.pushCode(_),w=await Jo(m);if(w.success){const E={...s,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((P,D)=>P+D.content.length,0),projectId:a};return K.setSuccess({...E,fileCount:i.size,warnings:w.errorMap?Array.from(w.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:E,addedDependencies:c.added,warnings:w.errorMap?Array.from(w.errorMap.entries()):[],elapsedTime:K.getElapsedTime()}}const S=w.errorMessage||Yo(w.responseCode),k=new Error(S);throw k.errorMap=w.errorMap,k}catch(i){return console.error("Bundle commit execution failed:",i),K.setError(i),{success:!1,error:i.message,errorMap:i.errorMap||new Map,state:K.currentState,elapsedTime:K.getElapsedTime()}}}async function Kg(t){try{return await vi("architect",ao,tf(t),Do("architect"))}catch(e){throw e.isModelArmor?e:new Error(`Prompt Architect failed: ${e.message}`)}}async function $i(t,e){const s=sf(t),r=Do("generator",y.bundleSpec);try{return await vi("generator",e,s,r)}catch(i){if(i.isModelArmor)throw i;if(e!==mn){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,i.message);try{return await vi("generator",mn,s,r)}catch(n){throw n.isModelArmor?n:new Error(`Code Generator failed: primary (${e}): ${i.message} | fallback (${mn}): ${n.message}`)}}throw new Error(`Code Generator failed: ${i.message}`)}}async function Mi(t,e=null){const s={...Do("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await vi("review",lo,rf(t),s)}catch(r){throw r.isModelArmor?r:new Error(`Code Review failed: ${r.message}`)}}function ta(t,e){return t.isModelArmor?`${t.userTitle}: ${t.userMessage}`:`${e}: ${t.message}`}function go(t,e){const s=document.getElementById(`step${t}-item`),r=document.getElementById(`step${t}-status`);!s||!r||(s.classList.remove("active","completed","error"),r.classList.remove("running","completed","error"),e==="active"?(s.classList.add("active"),r.classList.add("running"),r.innerHTML=` + + `):e==="completed"?(s.classList.add("completed"),r.classList.add("completed"),r.innerHTML=` + + `):e==="error"?(s.classList.add("error"),r.classList.add("error"),r.innerHTML=` + + `):r.innerHTML=` + + `)}function me(t,e){const s=document.getElementById(`step${t}-loading`),r=document.getElementById(`step${t}-result`);e?(s.classList.remove("hidden"),r.classList.add("hidden"),go(t,"active")):(s.classList.add("hidden"),r.classList.remove("hidden"),go(t,"completed"))}function Jg(t){const e=document.getElementById(`${t}-content`),s=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),s&&(s.style.transform="rotate(0deg)")):(e.classList.add("open"),s&&(s.style.transform="rotate(180deg)"))}function Yg(t){qe(parseInt(t.replace("step","")))}function qe(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Gt();const s=document.getElementById("ready-state");s&&s.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const r=document.getElementById(`step${t}-content`);r&&r.classList.remove("hidden");const i=document.getElementById("stage-title"),n={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};i&&(i.textContent=n[t]||"Active Workflow Stage")}function Zg(t){const e=document.getElementById(t);if(!e)return;const s=e.dataset.raw||e.textContent;navigator.clipboard.writeText(s).then(()=>{tt("Code Copied",{elementId:t});const r=e.closest(".code-container"),i=r==null?void 0:r.querySelector(".copy-btn");i&&(i.classList.add("copied"),i.innerHTML=' Copied!',setTimeout(()=>{i.classList.remove("copied"),i.innerHTML=' Copy'},2e3))}).catch(r=>{console.warn("Failed to copy to clipboard:",r)})}function vo(t){const e=document.getElementById("step1-model-label");e&&(e.textContent=He(ao));const s=_o(t),r=document.getElementById("step2-model-label");r&&(s!==t?r.textContent=`${He(t)} → ${He(s)} (Free Tier)`:r.textContent=He(t));const i=document.getElementById("step3-model-label");i&&(i.textContent=He(lo)),console.log(`Step 1 (Prompt Architect): ${He(ao)}`),console.log(s!==t?`Step 2 (Code Generator): ${He(t)} → ${He(s)} (Free Tier fallback)`:`Step 2 (Code Generator): ${He(t)}`),console.log(`Step 3 (Code Review): ${He(lo)}`)}async function Xg(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0,sa("standardRegenerate",y.step2Result,y.step1Result);const e=document.querySelectorAll(".btn-refine-action");e.forEach(s=>{s.disabled=!0,s.innerHTML=` + + + Refining...`});try{const s=Go(),r=nf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:s.id,userFeedback:"Fix the issues listed in the audit report."});Di(),it(2),qe(2),me(2,!0),y.step2Result=await $i(r,t),Fi();const i=document.getElementById("step2-output"),n=ms(y.step2Result);i.textContent=n,i.dataset.raw=n,me(2,!1),qe(3),it(3),me(3,!0),y.step3Result=await Mi(y.step2Result,y.step1Result),Pi();const o=document.getElementById("step3-output");o.textContent=y.step3Result,me(3,!1),Ft();const a=ki(y.step3Result);Bi(n,a)}catch(s){console.error("Refinement failed:",s),Ft(),he(ta(s,"Refinement failed"),"error")}finally{y.isRunning=!1,e.forEach(s=>{s.disabled=!1,s.textContent="Refine & Regenerate"}),Kt()}}async function sa(t,e,s){const r=`${Je}/connectFeedback`,i={type:t,code:e,input:s};try{const n=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!n.ok){const a=await n.text();return console.error(`callEndpoint failed: ${n.status} ${n.statusText}`,a),{success:!1,status:n.status,error:a}}const o=await n.json();return console.log("Telemetry success:",o),o}catch(n){return console.error("callEndpoint failed:",n),{success:!1,error:n.message}}}function Qg(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function ev(){var i;const t=document.getElementById("ff-error-paste-input"),e=(i=t==null?void 0:t.value)==null?void 0:i.trim();if(!e){t==null||t.focus(),t==null||t.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t==null?void 0:t.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){he("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const s=document.getElementById("code-generator-model").value;y.isRunning=!0,sa("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` + + Fixing…`);try{const n=Hu({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});Fd(),Di(),it(2),qe(2),me(2,!0),y.step2Result=await $i(n,s),Fi();const o=document.getElementById("step2-output"),a=ms(y.step2Result);o.textContent=a,o.dataset.raw=a,me(2,!1),qe(3),it(3),me(3,!0),y.step3Result=await Mi(y.step2Result,y.step1Result),Pi();const l=document.getElementById("step3-output");l.textContent=y.step3Result,me(3,!1),Ft();const u=ki(y.step3Result);Bi(a,u),t&&(t.value="")}catch(n){console.error("Fix from errors failed:",n),Ft(),he(ta(n,"Failed to fix errors"),"error")}finally{y.isRunning=!1,r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),Kt()}}async function mo(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value;if(!t.trim()){he("Please describe your FlutterFlow widget first.","warning");return}if(!await wv())return;const s=_o(e);tt("Pipeline Started",{selectedModel:e,effectiveModel:s,inputLength:t.length});const r=document.getElementById("btn-run-pipeline");y.isRunning=!0,Og(),r.disabled=!0,r.innerHTML=` + + + Running...`,vo(s);try{Gt();const i=document.getElementById("ready-state");i&&i.classList.add("hidden");const n=document.getElementById("paywall-exhausted");n&&n.classList.add("hidden"),Di(),qe(1),it(1),me(1,!0),y.step1Result=await Kg(t),Dg(),tt("Prompt Architect Completed");const o=document.getElementById("step1-output"),a=ms(y.step1Result);o.textContent=a,o.dataset.raw=a,me(1,!1),qe(2),it(2),me(2,!0),y.step2Result=await $i(y.step1Result,s),Fi(),tt("Code Generator Completed");const l=document.getElementById("step2-output"),u=ms(y.step2Result);l.textContent=u,l.dataset.raw=u,me(2,!1),qe(3),it(3),me(3,!0),y.step3Result=await Mi(y.step2Result,y.step1Result),Pi(),tt("Code Review Completed");const c=document.getElementById("step3-output");c.textContent=y.step3Result,me(3,!1),Ft();const d=ki(y.step3Result);Bi(u,d),gv(),Li()}catch(i){if(console.error("Pipeline failed:",i),Ft(),i.isUsageLimit){const{count:c}=Ni();ca(c,la(),{openModal:!0});return}tt("Pipeline Failed",{error:i.message,effectiveModel:_o(document.getElementById("code-generator-model").value)});const o=sg(i,{architect:1,generator:2,review:3});qe(o);const a=document.getElementById(`step${o}-result`),l=document.getElementById(`step${o}-loading`),u=document.getElementById(`step${o}-output`);if(l&&l.classList.add("hidden"),a&&a.classList.remove("hidden"),u)if(i.isModelArmor)u.innerHTML=``;else{let c=i.message;i.message.includes("image input")?c=`This model doesn't support image input. Please use ${He(er)} for image-based requests or remove image references from your prompt.`:(i.message.includes("Load failed")||i.message.includes("CORS"))&&(c="API connection failed. This might be due to CORS restrictions or network issues. Please check your API key and try again."),u.innerHTML=`
+

Connection Error

+

${j(c)}

+
+

Check if API key is valid

+

Try using a different model

+

Ensure network allows API calls

+
+
`}go(o,"error")}finally{y.isRunning=!1,r.disabled=!1,r.innerHTML=` + + + Run Pipeline`,Kt()}}function tv(){const t=document.getElementById("code-generator-model").value,e=[er,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(r=>r!==t),s=prompt(`Retry with different model? + +Current: ${t} + +Options: +1. ${e[0]} +2. ${e[1]} + +Enter 1 or 2:`);s==="1"?(document.getElementById("code-generator-model").value=e[0],mo()):s==="2"&&(document.getElementById("code-generator-model").value=e[1],mo())}async function sv(){var u,c,d;const t=Ko();if(!t){he("No code to commit. Please run the pipeline first.","warning");return}const e=await ke("flutterflow"),s=await ke("flutterflow_project_id");if(!e||!s){he("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Wo();return}if(((c=(u=y.artifactBundle)==null?void 0:u.artifacts)==null?void 0:c.length)>1){await rv();return}const{artifactType:r,artifactName:i}=pd(),n=_d(t,{artifactType:r,artifactName:i}),o=Ug(n);if(!await Hg(n,o)){console.log("User cancelled commit");return}da({withProvisioning:n.codeType===U.CODE_FILE}),tt("Deploy to FlutterFlow Started",{artifactType:r,artifactName:i});const l=await yd(t,{artifactType:r,artifactName:i,pipelineResult:{step1Result:y.step1Result,selectedModel:(d=document.getElementById("code-generator-model"))==null?void 0:d.value}});nr(),l.success?(tt("Deploy to FlutterFlow Success",{artifactType:r,artifactName:i}),_i(l)):(tt("Deploy to FlutterFlow Failed",{artifactType:r,artifactName:i,error:l.error}),yi(l))}async function rv(){const t=await ke("flutterflow"),e=await ke("flutterflow_project_id");if(!t||!e){he("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Wo();return}const s=Pf(y.artifactBundle);if(s.errors.length>0){he(`Bundle validation failed: ${s.errors.join("; ")}`,"error");return}const r=new Map(s.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),i=Ti(r),n={canProceed:i.valid&&s.errors.length===0,issues:[...s.errors,...i.errors],warnings:[...s.warnings,...i.warnings]};if(!n.canProceed){he(`Bundle validation failed: ${n.issues.join("; ")}`,"error");return}const o={content:s.fileEntries.map(a=>`// ${a.fileName} +${a.content}`).join(` + +`),fileName:`${s.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:s.title};Fv(o,n,s.dependencies,s)}function iv(t){var i;let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let s=`
+

FlutterFlow Commit Failed

+

${j(t.error)}

`;if(e&&e.size>0){s+=`
+

Errors:

+
    `;for(const[n,o]of e.entries()){const a=Zu(o);s+=`
  • + ${j(n)}: ${j(a)} +
  • `}s+="
"}s+="
",s+=`
+ +
`;const r=document.getElementById("step3-output");r&&(r.innerHTML=s,(i=document.getElementById("btn-regenerate-from-error"))==null||i.addEventListener("click",()=>{nv(t.error,e)}))}async function nv(t,e){if(y.isRunning)return;const s=document.getElementById("code-generator-model").value;y.isRunning=!0;const r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` + + Fixing...`);try{let i=`The previous code had the following errors when committing to FlutterFlow: + +`;if(e&&e.size>0)for(const[c,d]of e.entries()){const h=Zu(d);i+=`File: ${c} +Error: ${h} + +`}else i+=`${t} +`;const n=Hu({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:i});Di(),it(2),qe(2),me(2,!0),y.step2Result=await $i(n,s),Fi();const o=document.getElementById("step2-output"),a=ms(y.step2Result);o.textContent=a,o.dataset.raw=a,me(2,!1),qe(3),it(3),me(3,!0),y.step3Result=await Mi(y.step2Result,y.step1Result),Pi();const l=document.getElementById("step3-output");l.textContent=y.step3Result,me(3,!1),Ft();const u=ki(y.step3Result);Bi(a,u)}catch(i){console.error("Regeneration failed:",i),Ft(),he(ta(i,"Regeneration failed"),"error")}finally{y.isRunning=!1,r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),Kt()}}async function ov(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const s=await ke("flutterflow"),r=await ke("flutterflow_project_id");s&&r?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):s||r?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function av(t){try{const e=await fetch(`${Je}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function lv(t){try{const s=await(await fetch(`${Je}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(s.error||!s.email||!s.sessionToken)throw new Error(s.error||"Invalid or expired link");return s}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function cv(t){try{const e=await fetch(`${Je}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${Je}/auth/refresh-session`,status:e.status}),null;const s=await e.json();return s.error||!s.email||!s.sessionToken?(console.warn("refreshSession: validation failed",{error:s.error,hasEmail:!!s.email,hasToken:!!s.sessionToken}),null):s}catch(e){return console.error("refreshSession: fetch failed",{url:`${Je}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Kl(t,e){const s=wd(),r=(q.email||s.email)!==t;q.email=t,q.sessionToken=e,q.isVerified=!0,fe=_s({isLoading:!0}),localStorage.setItem(li,JSON.stringify({email:t,sessionToken:e})),r&&ua()}function ra(){q.email=null,q.sessionToken=null,q.isVerified=!1,fe=_s({isResolved:!0}),localStorage.removeItem(li),localStorage.removeItem(ui)}function wd(){try{const t=localStorage.getItem(li);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(li),{email:null,sessionToken:null}}}async function uv(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname);try{const{email:s,sessionToken:r}=await lv(e);Kl(s,r)}catch(s){he(s.message||"Sign-in link invalid or expired.","error")}}else{const{email:s,sessionToken:r}=wd();if(s&&r){const i=await cv(r);i?Kl(i.email,i.sessionToken):ra()}}na()}function ia(){const t=document.getElementById("signin-modal");t&&t.classList.add("open")}function dv(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&e.classList.remove("open")}async function hv(){var n;const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),s=document.getElementById("signin-message"),r=(n=t==null?void 0:t.value)==null?void 0:n.trim();if(!r||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(r)||r.length>254){s&&(s.textContent="Please enter a valid email address.");return}e&&(e.disabled=!0,e.textContent="Sending…"),s&&(s.textContent="");try{await av(r),t&&(t.value=""),s&&(s.textContent=`Check your email — we sent a link to ${r}`),e&&(e.textContent="Sent!")}catch(o){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:r,err:o}),s&&(s.textContent="Something went wrong. Please try again."),e&&(e.disabled=!1,e.textContent="Send Link")}}function pv(){ra(),ua(),na(),Oi()}function na(){const t=q.isVerified&&!!q.email,e=document.getElementById("auth-signedout"),s=document.getElementById("auth-signedin"),r=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),s&&s.classList.toggle("hidden",!t),r&&r.classList.toggle("hidden",t);const i=document.getElementById("auth-user-email");i&&(i.textContent=q.email||""),Lr(),Oi()}async function fv(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),s=e.visitorId,r=await fetch(dg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:s})});if(!r.ok)throw new Error(`Identity check HTTP ${r.status}`);const i=await r.json();if(Rr.userId=i.user_id,Rr.status=i.status,Rr.resolved=!0,sessionStorage.setItem(ug,i.user_id),i.usage_count!==void 0){const n=qt(),o=i.usage_month||n,a=o===n?i.usage_count:0,l=oa(),u=l.month===n?l.count:0;(a>=u||o>l.month)&&localStorage.setItem(ls,JSON.stringify({count:a,month:n})),Li()}console.log(`Identity resolved: ${i.status} (${i.user_id.slice(0,8)}...) usage: ${i.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}function oa(){const t=qt();try{const e=localStorage.getItem(ls);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:ls,month:t,err:e}),localStorage.removeItem(ls),{count:0,month:t}}}function qt(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function Ni(){const t=oa();return t.month!==qt()?{count:0,month:qt()}:t}function gv(){const e={count:Ni().count+1,month:qt()};return localStorage.setItem(ls,JSON.stringify(e)),e}function aa(){return!!fe.isLoading}function Vt(){return!!fe.isResolved}function vv(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(ci,e)?e:null}function mv(t){var e;return t&&((e=Object.entries(id).find(([,s])=>s===t))==null?void 0:e[0])||null}function Er(...t){return t.find(e=>e!=null&&e!=="")}function _v(...t){return t.find(e=>e&&typeof e=="object")||{}}function yv(t){var c,d,h,f,p,v,_,m,w,S,k,E,P,D,x,A,R,M,$,N;const e=t.data&&typeof t.data=="object"?t.data:t,s=_v(e.subscription,e.stripeSubscription,e.currentSubscription,(h=(d=(c=e.customer)==null?void 0:c.subscriptions)==null?void 0:d.data)==null?void 0:h[0],(p=(f=e.subscriptions)==null?void 0:f.data)==null?void 0:p[0],(v=e.subscriptions)==null?void 0:v[0]),r=e.metadata||s.metadata||((_=e.customer)==null?void 0:_.metadata)||{},i=Er(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,s.priceId,s.price_id,(m=s.plan)==null?void 0:m.id,(w=s.price)==null?void 0:w.id,(P=(E=(k=(S=s.items)==null?void 0:S.data)==null?void 0:k[0])==null?void 0:E.price)==null?void 0:P.id,(A=(x=(D=s.items)==null?void 0:D[0])==null?void 0:x.price)==null?void 0:A.id,(N=($=(M=(R=s.lines)==null?void 0:R.data)==null?void 0:M[0])==null?void 0:$.price)==null?void 0:N.id),n=Er(e.status,e.subscriptionStatus,e.subscription_status,s.status,"none"),o=vv(Er(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,s.tier,s.plan,r.tier,r.plan)),a=hg.has(String(n).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||mv(i)||(a||l?"professional":"free");return _s({tier:u,status:n,periodEnd:Er(e.periodEnd,e.currentPeriodEnd,e.current_period_end,s.current_period_end,s.periodEnd,null),isResolved:!0})}function la(){return ci[fe.tier]??ci.free}async function wv(){if(q.isVerified&&(!Vt()||aa())&&(await bd({force:!0}),Oi()),q.isVerified&&!Vt())return he("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=Ni(),e=la();if(t>=e)return ca(t,e,{openModal:!0}),!1;const s=Math.floor(e*.8);if(t>=s){const r=e-t;he(`${r} run${r===1?"":"s"} remaining this month.`,"warning")}return!0}function _n(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function ca(t,e,s={}){const r=document.getElementById("walkthrough-modal");r&&r.classList.remove("open");const i=document.getElementById("ready-state");i&&i.classList.add("hidden");const n=document.getElementById("preview-frame-container");n&&(n.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){he(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),mi();return}const c=document.getElementById("paywall-exhausted-text");if(c){const h=fe.tier;h==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${h} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",q.isVerified),u.classList.remove("hidden"),s.openModal&&mi()}function _o(t){return fe.tier==="free"&&Tr.includes(t)?er:t}function bv(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const s=fe.tier,i=!(q.isVerified&&!Vt())&&s==="free";Array.from(e.options).forEach(o=>{const a=He(o.value),l=Tr.includes(o.value);o.textContent=l&&i?`${a} (PRO)`:a,o.disabled=!1}),i&&Tr.includes(e.value)&&(e.value=er),e.disabled=!1,Bl.has(e)||(e.addEventListener("change",()=>{Vt()&&fe.tier==="free"&&Tr.includes(e.value)&&(e.value=er,mi()),vo(e.value)}),Bl.add(e));let n=document.getElementById("model-selector-free-notice");i?(n||(n=document.createElement("p"),n.id="model-selector-free-notice",n.className="text-xs text-gray-400 mt-1",t.appendChild(n)),n.innerHTML='Free plan — Gemini only. '):n&&n.remove(),vo(e.value)}function Li(){const t=document.getElementById("usage-counter");if(!t)return;if(q.isVerified&&aa()){t.textContent="Checking plan…",t.className="text-xs text-gray-500",Lr(),_n();return}if(q.isVerified&&!Vt()){t.textContent="Plan check failed",t.className="text-xs text-red-600 font-medium",Lr(),_n();return}const{count:e}=Ni(),s=la();t.textContent=`${e} / ${s} runs this month`;const r=s>0?e/s:0;t.className=r>=1?"text-xs text-red-600 font-medium":r>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500",Lr(),e>=s&&!y.isRunning?ca(e,s):_n()}function Lr(){const t=document.getElementById("guest-usage-text");if(!t)return;const e=oa(),s=e.month===qt()?e.count??0:0,r=ci.free;t.textContent=`${s} / ${r} generations used`}async function bd(t={}){const e=t.force===!0;if(!q.isVerified||!q.sessionToken){fe=_s({isResolved:!0});return}fe={...fe,isLoading:!0,error:null};const s=localStorage.getItem(ui);if(!e&&s)try{const{data:r,email:i,ts:n,version:o}=JSON.parse(s);if(o===jl&&i===q.email&&Date.now()-n<5*60*1e3){fe={...r,isLoading:!1,isResolved:r.isResolved!==!1};return}}catch(r){console.warn("Failed to parse subscription cache:",r,"| raw value:",s)}try{const i=await(await fetch(`${Je}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken,email:q.email})})).json();if(i.error){if(["unauthorized","invalid session","expired session"].some(o=>String(i.error).toLowerCase().includes(o))){ra(),na();return}fe=_s({isResolved:!1,error:i.error});return}fe=yv(i),localStorage.setItem(ui,JSON.stringify({version:jl,data:fe,email:q.email,ts:Date.now()}))}catch(r){console.error("fetchSubscription failed:",r),fe={...fe,isLoading:!1,isResolved:!1,error:r.message}}}function ua(){localStorage.removeItem(ui)}async function Ev(t){if(!q.isVerified||!q.sessionToken){Ed(),ia();return}if(!id[t]){he("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const r=await(await fetch(`${Je}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:q.sessionToken,currency:nd()})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to create checkout session");const{url:i}=r;window.location.href=i}catch(s){console.error("startCheckout failed:",s),e&&(e.disabled=!1,e.textContent="Subscribe"),he("Could not start checkout. Please try again.","error")}}async function Sv(){if(!q.isVerified||!q.sessionToken){ia();return}const t=document.getElementById("manage-billing-btn");t&&(t.disabled=!0,t.textContent="Loading…");try{const s=await(await fetch(`${Je}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken})})).json();if(s.error||!s.url)throw new Error(s.error||"Failed to open billing portal");const{url:r}=s;window.location.href=r}catch(e){console.error("openCustomerPortal failed:",e),t&&(t.disabled=!1,t.textContent="Manage billing"),he("Could not open billing portal. Please try again.","error")}}async function vi(t,e,s,r={}){const n=new AbortController,o=setTimeout(()=>n.abort(),12e4);try{const a=await fetch(cg,{method:"POST",headers:{"Content-Type":"application/json"},signal:n.signal,body:JSON.stringify({user_id:Rr.userId,step:t,model:e,prompt:s,context:r})}),l=await a.json();if(a.status===429){l.serverCount!==void 0&&(localStorage.setItem(ls,JSON.stringify({count:l.serverCount,month:qt()})),Li());const d=new Error(l.message||"Monthly usage limit reached. Upgrade to continue.");throw d.isUsageLimit=!0,d}const u=hf(l,t);if(u)throw u;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(l),"content type:",typeof l.content),!a.ok)throw new Error(`${l.message||l.error||"BuildShip pipeline error"} (HTTP ${a.status})`);let c=l.output||l.content;if(!c)throw new Error(`BuildShip returned no output for step "${t}"`);return Array.isArray(c)&&(c=c.map(d=>typeof d=="string"?d:d.text||"").join("")),typeof c!="string"&&(c=JSON.stringify(c)),c}catch(a){throw a.name==="AbortError"?new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`):a instanceof TypeError?new Error(`BuildShip unreachable: ${a.message}`):a}finally{clearTimeout(o)}}function xv(){const e=new URLSearchParams(window.location.search).get("checkout");e==="success"?(window.history.replaceState({},"",window.location.pathname),ua(),he("Subscription active! Welcome aboard.","success")):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname),he("Checkout cancelled.","info"))}function Oi(){const t=q.isVerified&&!!q.email,e=fe.tier,s=t&&aa(),r=!t||Vt(),i=document.getElementById("subscription-tier-badge");if(i){const a={free:"Free",professional:"Professional",power:"Power Developer"},l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};i.textContent=s?"Checking…":r?a[e]||"Free":"Plan unavailable",i.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${r?l[e]||l.free:l.unresolved}`}const n=document.getElementById("upgrade-prompt");n&&n.classList.toggle("hidden",!t||s||!r||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||s||r&&e==="free"),kv(r?e:null),bv(),Li()}function kv(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([i,{btnId:n,defaultText:o}])=>{const a=document.getElementById(n);a&&(i===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const r=document.getElementById("free-tier-current");r&&r.classList.toggle("hidden",t!=="free")}function yo(){const t=nd(),e=document.getElementById("pro-price"),s=document.getElementById("power-price"),r=document.getElementById("pro-price-note"),i=document.getElementById("power-price-note");e&&(e.textContent=Hl(Ul.professional,t)),s&&(s.textContent=Hl(Ul.power,t));const n="billed monthly";r&&(r.textContent=n),i&&(i.textContent=n)}function mi(){yo();const t=document.getElementById("pricing-modal");t&&t.classList.add("open"),fg().then(()=>yo())}function Ed(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&e.classList.remove("open")}function he(t,e="info"){const s={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},r=document.createElement("div");r.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${s[e]||s.info}`,r.textContent=t,document.body.appendChild(r),setTimeout(()=>{r.style.opacity="0",setTimeout(()=>r.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),Iv(),await uv(),xv(),await bd(),Oi(),yo(),await Bg(),Mg();const t=document.getElementById("flutterflow-endpoint-select");if(t){const s=or();t.value=s}dd(),fv();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{bt===2&&e.value.trim().length>0&&(qo(),Ii())}),e.addEventListener("blur",()=>{const s=document.getElementById("walkthrough-modal");bt===2&&s&&s.classList.add("open")}),e.addEventListener("keydown",s=>{if(s.key==="Tab"){const r=document.getElementById("walkthrough-modal");bt===2&&r&&setTimeout(()=>{r.classList.add("open")},100)}})),window.addEventListener("commitStateChange",s=>{const{state:r}=s.detail;r===G.PREPARING||r===G.VALIDATING||r===G.PUSHING?(be.phaseId||da(),Yl(r)):(r===G.SUCCESS||r===G.ERROR)&&(Yl(r),setTimeout(nr,1e3))})});function Iv(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function Cv(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Gt),document.addEventListener("keydown",Gt))}function Gt(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),s=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),s&&s.classList.remove("hidden");const r=document.getElementById("welcome-video-player");r&&r.removeEventListener("click",Gt),document.removeEventListener("keydown",Gt),dd()}let Vs=null;function Fv(t,e,s,r=null){Vs={codeInfo:t,checks:e,deps:s,bundlePlan:r},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=r?`${r.fileEntries.length} files`:t.content.split(` +`).length,ke("flutterflow_project_id").then(u=>{document.getElementById("confirm-project-id").textContent=u||"Not configured"});const i=document.getElementById("confirm-deps-list"),n=document.getElementById("confirm-deps-section");s&&Object.keys(s).length>0?(i.innerHTML=Object.entries(s).map(([u,c])=>`
  • • ${wt(u)}: ${wt(c)}
  • `).join(""),n.classList.remove("hidden")):n.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${wt(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&l.classList.add("open")}function Sd(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&e.classList.remove("open"),Vs=null}function Pv(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&e.classList.remove("open");const s=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const n of s){const o=document.getElementById(n);o&&(o.textContent="")}const r=document.getElementById("success-warnings-section");r&&r.classList.add("hidden");const i=document.getElementById("success-warnings-list");i&&(i.innerHTML="")}function _i(t){var f,p,v,_;const e=(m,w)=>{const S=document.getElementById(m);S&&(S.textContent=w||"")},s=((f=t.metadata)==null?void 0:f.fileName)||"",r=((p=t.metadata)==null?void 0:p.projectId)||"",i=((v=t.metadata)==null?void 0:v.artifactType)||"",n=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=(_=t.metadata)!=null&&_.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",r),e("success-file-name",s),e("success-artifact-type",i),e("success-time",n),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&r&&(u.href=`https://app.flutterflow.io/project/${r}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list");t.warnings&&t.warnings.length>0&&c&&d&&(d.innerHTML=t.warnings.map(([m,w])=>`
  • ${j(m)}: ${j(String(w))}
  • `).join(""),c.classList.remove("hidden"));const h=document.getElementById("commit-success-modal");h&&h.classList.add("open")}function yi(t){nr(),iv(t)}function Av(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Jl={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},Rv=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],be={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&e.classList.add("open"),this.set("prepare")},set(t,e=null){if(!(!Jl[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const s=this.sequence.indexOf("package");this.sequence.splice(s===-1?this.sequence.length:s,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Jl[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,s=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=Rv.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const r=this.sequence.indexOf(this.phaseId),n=[`Step ${r===-1?1:r+1} of ${this.sequence.length}`];e>=5&&n.push(Tv(e)),xd(this.phaseId==="done"?100:s,t.message,n.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&t.classList.remove("open")}};function Tv(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function da(t){be.start(t)}function nr(){be.stop()}function xd(t,e,s,r=null){const i=document.getElementById("commit-progress-bar"),n=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");i&&(i.style.width=`${Math.round(t*10)/10}%`),n&&(n.textContent=e),o&&(o.textContent=s),a&&(a.textContent=r||"",a.classList.toggle("hidden",!r))}function Yl(t){const e={[G.PREPARING]:"prepare",[G.VALIDATING]:"validate",[G.PUSHING]:"project",[G.SUCCESS]:"done"};if(t===G.ERROR){be.timer&&clearInterval(be.timer),be.timer=null,xd(100,"Failed","Error occurred");return}const s=e[t];s&&be.set(s)}function $v(t){var e;return t.bundlePlan?t.bundlePlan.fileEntries.some(s=>s.type===U.CODE_FILE):((e=t.codeInfo)==null?void 0:e.codeType)===U.CODE_FILE}async function Mv(){var n,o;if(!Vs){console.error("No pending commit data");return}const t=Vs;if(Sd(),da({withProvisioning:$v(t)}),t.bundlePlan){const a=await Gg(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:(n=document.getElementById("code-generator-model"))==null?void 0:n.value}});nr(),a.success?_i(a):yi(a);return}const{codeInfo:e}=t,{artifactType:s,artifactName:r}=pd(),i=await yd(e.content,{artifactType:s,artifactName:r,pipelineResult:{step1Result:y.step1Result,selectedModel:(o=document.getElementById("code-generator-model"))==null?void 0:o.value}});nr(),i.success?_i(i):yi(i),Vs=null}window.runThinkingPipeline=mo;window.toggleStep=Yg;window.toggleSection=Jg;window.selectWorkflowStep=qe;window.copyCode=Zg;window.retryWithDifferentModel=tv;window.openApiKeysModal=Wo;window.closeApiKeysModal=cd;window.closeWalkthroughModal=Fg;window.openWalkthroughModal=Cg;window.advanceWalkthrough=qo;window.commitToFlutterFlow=Vg;function Nv(){const t=document.getElementById("pipeline-input");t&&t.focus()}function Lv(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=Nv;window.openModelSelector=Lv;window.saveApiKeys=Rg;window.clearAllApiKeys=Tg;window.toggleKeyVisibility=Lg;window.handleWelcomeVideoEnd=Cv;window.dismissWelcomeVideo=Gt;window.initiateCommitToFlutterFlow=sv;window.updateFlutterFlowCredentialStatus=ov;window.closeCommitConfirmModal=Sd;window.closeCommitSuccessModal=Pv;window.showCommitSuccessModal=_i;window.showCommitFailureModal=yi;window.toggleCodePreview=Av;window.confirmCommitToFlutterFlow=Mv;window.runRefinement=Xg;window.regenerateFromPastedErrors=ev;window.clearErrorInput=Qg;window.setFlutterFlowEndpoint=Ig;window.getFlutterFlowEndpoint=or;window.commitProgress=be;window.openSignInModal=ia;window.closeSignInModal=dv;window.handleMagicLinkRequest=hv;window.handleSignOut=pv;window.startCheckout=Ev;window.openCustomerPortal=Sv;window.openPricingModal=mi;window.closePricingModal=Ed;let cs=null,kd=null;const Zl=120;function Di(){const t=document.getElementById("pipeline-progress"),e=document.getElementById("results-view"),s=document.getElementById("ready-state");s&&s.classList.add("hidden"),e&&e.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),t&&t.classList.add("visible"),kd=Date.now();for(let r=1;r<=3;r++){const i=document.getElementById(`pdot-${r}`);i&&(i.className="progress-dot")}it(1),Ov()}function it(t){const e={1:"Analyzing your prompt...",2:"Generating Dart code...",3:"Running code audit..."},s={1:"Step 1 of 3 — Prompt Architect",2:"Step 2 of 3 — Code Generator",3:"Step 3 of 3 — Code Review"},r=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text");r&&(r.textContent=e[t]||e[1]),i&&(i.textContent=s[t]||s[1]);for(let n=1;n<=3;n++){const o=document.getElementById(`pdot-${n}`);o&&(n{const t=(Date.now()-kd)/1e3,e=document.getElementById("progress-elapsed"),s=document.getElementById("pipeline-progress-fill");e&&(e.textContent=`${Math.floor(t)}s`);const r=t/Zl*100,i=Math.min(95,r*(1-Math.exp(-t/(Zl*.6)))*1.2);s&&(s.style.width=`${i}%`)},250)}function Ft(){cs&&(clearInterval(cs),cs=null);const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width="100%");for(let e=1;e<=3;e++){const s=document.getElementById(`pdot-${e}`);s&&(s.className="progress-dot completed")}setTimeout(()=>{const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function ws(t,e=""){const s={pass:'',warning:'',fail:''};return``}function Id(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function Dv(){return Wf({bundle:y.artifactBundle,reviewResult:y.step3Result})}function Bv(t){return` +
    + ${ws(t.severity)} +
    +
    ${j(t.message)}
    + ${t.suggestion?`
    ${j(t.suggestion)}
    `:""} + ${j(t.source)} +
    +
    + `}function jv(t){return` +
  • +
    + ${j(t.title)} + ${t.detail&&t.detail!==t.title?`

    ${j(t.detail)}

    `:""} +
    +
  • + `}function Uv(t){const e=document.getElementById("results-summary-detail"),s=document.getElementById("results-title");if(!e)return;s&&(s.textContent=t.title);const r=t.score,i=r==null?"neutral":r>=80?"pass":r>=60?"warning":"fail",n=r==null?"":r>=80?"Strong":r>=60?"Needs work":"High risk",o=t.findings.length?` +
      + ${t.findings.map(l=>` +
    • + ${ws(l.severity)} + + ${j(l.message)} + ${l.suggestion?`${j(l.suggestion)}`:""} + +
    • + `).join("")} +
    + `:"",a=t.manualSteps.length?` +
    +

    ${ws("warning")} Complete in FlutterFlow

    +
      + ${t.manualSteps.map(l=>` +
    • + ${j(l.title)} + ${l.detail&&l.detail!==l.title?`${j(l.detail)}`:""} +
    • + `).join("")} +
    +
    + `:"";e.innerHTML=` +
    +
    +

    ${j(t.summary)}

    + ${o} + ${a} +
    +
    + +
    + Is the generated code correct? +
    + + +
    +
    +
    +
    + `}function Hv(t){var l,u,c;const e=t.artifacts.find(d=>d.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const s={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],r=e.findings.length?e.findings.map(Bv).join(""):`
    ${ws(s.icon)} ${j(s.message)}
    `,i=(l=e.dependencies)!=null&&l.length?e.dependencies.map(d=>` +
  • ${j(d.name)}${d.version?` ${j(d.version)}`:""}${d.reason?`

    ${j(d.reason)}

    `:""}
  • + `).join(""):'
  • No external packages
  • ',n=(u=e.imports)!=null&&u.length?e.imports.map(d=>`${j(d)}`).join(""):'No imports returned',o=(c=e.publicApi)!=null&&c.length?e.publicApi.map(d=>`${j(d)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(d=>` +
  • ${j(d.from||"Bundle")} ${j(d.type)} ${j(d.to||"Bundle")}${d.description?`

    ${j(d.description)}

    `:""}
  • + `).join(""):'
  • No relationships for this file
  • ';return` +
    +
    + ${ws(e.status)} ${j(Id(e.status))} +

    ${j(e.artifactName)}

    + ${e.description?`

    ${j(e.description)}

    `:""} +
    +
    + ${j(e.artifactType)} + ${j(e.fileName)} +
    +
    +
    +

    Code Review findings

    + ${r} +
    + ${e.manualSteps.length?` +
    +

    Manual FlutterFlow steps for this file

    +
      ${e.manualSteps.map(jv).join("")}
    +
    + `:""} +
    + File details +
    +
    +

    Dependencies

    +
      ${i}
    +
    +
    +

    Deployment

    +
    +
    Status
    ${j(e.deployStatus||"pending")}
    +
    Order
    ${e.index+1} of ${t.artifacts.length}
    +
    Path hint
    ${j(e.pathHint||"Not returned")}
    +
    +
    +
    +
    +

    Public API

    +
    ${o}
    +
    +
    +

    Imports

    +
    ${n}
    +
    +
    +

    Relationships

    +
      ${a}
    +
    +
    + `}function zv(t){const e=document.getElementById("bundle-strip"),s=document.getElementById("results-summary-tab"),r=document.getElementById("artifact-tabs"),i=document.getElementById("results-file-count");if(s&&s.classList.toggle("active",y.resultsViewMode==="summary"),!t.artifacts.length){i&&(i.textContent="0 files"),e&&e.classList.remove("visible"),r&&(r.innerHTML="");return}if(i){const n=t.artifacts.length;i.textContent=`${n} ${n===1?"file":"files"}`}r&&(r.innerHTML=t.artifacts.map(n=>` + + `).join(""),r.onclick=n=>{var a;const o=n.target.closest(".artifact-tab");(a=o==null?void 0:o.dataset)!=null&&a.artifactId&&Cd(o.dataset.artifactId)}),e&&e.classList.add("visible")}function ha(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),s=document.getElementById("results-audit-output"),r=document.getElementById("results-summary-detail"),i=document.getElementById("artifact-results-split"),n=Dv(),o=Ko();if(Uv(n),zv(n),e&&(e.textContent=""),e){const a=rd(o);e.innerHTML=a}s&&(s.innerHTML=Hv(n)),r&&r.classList.toggle("hidden",y.resultsViewMode!=="summary"),i&&i.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function Bi(t,e){y.selectedArtifactId||(y.selectedArtifactId=oi(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const s=document.getElementById("step3-output");s&&(s.textContent=""),ha(),Kt();const r=document.getElementById("btn-feedback-up"),i=document.getElementById("btn-feedback-down");r&&(r.className="feedback-btn"),i&&(i.className="feedback-btn")}function Cd(t){y.selectedArtifactId=t,y.resultsViewMode="file",ha()}function Wv(){y.resultsViewMode="summary",ha()}function qv(){const t=document.getElementById("btn-copy-results"),e=Ko();navigator.clipboard.writeText(e).then(()=>{if(t){t.classList.add("copied");const s=t.querySelector("span");if(s){const r=s.textContent;s.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),s.textContent=r},2e3)}}})}function Vv(t){const e=document.getElementById("btn-feedback-up"),s=document.getElementById("btn-feedback-down");t==="up"?(e.classList.toggle("active-up"),s.classList.remove("active-down")):(s.classList.toggle("active-down"),e.classList.remove("active-up"));const r=t==="up"?"thumbsUp":"thumbsDown";sa(r,y.step2Result,y.step1Result),tt("Generation Feedback",{feedback:r})}function Gv(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function Fd(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}window.copyResultsCode=qv;window.selectArtifact=Cd;window.selectResultsSummary=Wv;window.submitResultsFeedback=Vv;window.showErrorInputPanel=Gv;window.hideErrorInputPanel=Fd; diff --git a/dist/assets/index-CqRheZeQ.js b/dist/assets/index-CqRheZeQ.js deleted file mode 100644 index 900b8e8..0000000 --- a/dist/assets/index-CqRheZeQ.js +++ /dev/null @@ -1,307 +0,0 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=t(r);fetch(r.href,i)}})();var h=typeof window<"u"?window:void 0,te=typeof globalThis<"u"?globalThis:h;typeof self>"u"&&(te.self=te),typeof File>"u"&&(te.File=function(){});var ga=Array.prototype,Wi=ga.forEach,zi=ga.indexOf,he=te==null?void 0:te.navigator,w=te==null?void 0:te.document,ee=te==null?void 0:te.location,cr=te==null?void 0:te.fetch,ur=te!=null&&te.XMLHttpRequest&&"withCredentials"in new te.XMLHttpRequest?te.XMLHttpRequest:void 0,Gi=te==null?void 0:te.AbortController,ue=he==null?void 0:he.userAgent,k=h??{},je={DEBUG:!1,LIB_VERSION:"1.353.0"};function Vi(n,e,t,s,r,i,o){try{var a=n[i](o),l=a.value}catch(c){return void t(c)}a.done?e(l):Promise.resolve(l).then(s,r)}function Ue(n){return function(){var e=this,t=arguments;return new Promise(function(s,r){var i=n.apply(e,t);function o(l){Vi(i,s,r,o,a,"next",l)}function a(l){Vi(i,s,r,o,a,"throw",l)}o(void 0)})}}function S(){return S=Object.assign?Object.assign.bind():function(n){for(var e=1;e{var r=s.toLowerCase();return t.indexOf(r)!==-1})};function $(n,e){return n.indexOf(e)!==-1}var Es=function(n){return n.trim()},dr=function(n){return n.replace(/^\$/,"")},Cc=Array.isArray,va=Object.prototype,_a=va.hasOwnProperty,Ss=va.toString,N=Cc||function(n){return Ss.call(n)==="[object Array]"},Ge=n=>typeof n=="function",Z=n=>n===Object(n)&&!N(n),Ft=n=>{if(Z(n)){for(var e in n)if(_a.call(n,e))return!1;return!0}return!1},b=n=>n===void 0,K=n=>Ss.call(n)=="[object String]",pr=n=>K(n)&&n.trim().length===0,ke=n=>n===null,O=n=>b(n)||ke(n),Xe=n=>Ss.call(n)=="[object Number]"&&n==n,Rt=n=>Xe(n)&&n>0,Ke=n=>Ss.call(n)==="[object Boolean]",xc=n=>n instanceof FormData,kc=n=>$(Sc,n);function fr(n){return n===null||typeof n!="object"}function qn(n,e){return Object.prototype.toString.call(n)==="[object "+e+"]"}function ya(n){return!b(Event)&&function(e,t){try{return e instanceof t}catch{return!1}}(n,Event)}var Tc=[!0,"true",1,"1","yes"],Ws=n=>$(Tc,n),Rc=[!1,"false",0,"0","no"];function Ne(n,e,t,s,r){return e>t&&(s.warn("min cannot be greater than max."),e=t),Xe(n)?n>t?(s.warn(" cannot be greater than max: "+t+". Using max value instead."),t):n0){var i=r*this.m;e.tokens=Math.min(e.tokens+i,this.o),e.lastAccess=e.lastAccess+r*this.$}}consumeRateLimit(e){var t,s=Date.now(),r=String(e),i=this.t[r];return i?this.S(i,s):(i={tokens:this.o,lastAccess:s},this.t[r]=i),i.tokens===0||(i.tokens--,i.tokens===0&&((t=this.i)==null||t.call(this,e)),i.tokens===0)}stop(){this.t={}}}var Ie="Mobile",Kn="iOS",Ve="Android",gn="Tablet",wa=Ve+" "+gn,ba="iPad",Ea="Apple",Sa=Ea+" Watch",mn="Safari",Dt="BlackBerry",Ia="Samsung",Ca=Ia+"Browser",xa=Ia+" Internet",vt="Chrome",Pc=vt+" OS",ka=vt+" "+Kn,Qr="Internet Explorer",Ta=Qr+" "+Ie,ei="Opera",Fc=ei+" Mini",ti="Edge",Ra="Microsoft "+ti,Mt="Firefox",Aa=Mt+" "+Kn,vn="Nintendo",_n="PlayStation",Ot="Xbox",Pa=Ve+" "+Ie,Fa=Ie+" "+mn,sn="Windows",hr=sn+" Phone",Ki="Nokia",gr="Ouya",$a="Generic",$c=$a+" "+Ie.toLowerCase(),Ma=$a+" "+gn.toLowerCase(),mr="Konqueror",le="(\\d+(\\.\\d+)?)",zs=new RegExp("Version/"+le),Mc=new RegExp(Ot,"i"),Oc=new RegExp(_n+" \\w+","i"),Nc=new RegExp(vn+" \\w+","i"),ni=new RegExp(Dt+"|PlayBook|BB10","i"),Lc={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},Fn,Yi,Gs,Dc=(n,e)=>e&&$(e,Ea)||function(t){return $(t,mn)&&!$(t,vt)&&!$(t,Ve)}(n),Oa=function(n,e){return e=e||"",$(n," OPR/")&&$(n,"Mini")?Fc:$(n," OPR/")?ei:ni.test(n)?Dt:$(n,"IE"+Ie)||$(n,"WPDesktop")?Ta:$(n,Ca)?xa:$(n,ti)||$(n,"Edg/")?Ra:$(n,"FBIOS")?"Facebook "+Ie:$(n,"UCWEB")||$(n,"UCBrowser")?"UC Browser":$(n,"CriOS")?ka:$(n,"CrMo")||$(n,vt)?vt:$(n,Ve)&&$(n,mn)?Pa:$(n,"FxiOS")?Aa:$(n.toLowerCase(),mr.toLowerCase())?mr:Dc(n,e)?$(n,Ie)?Fa:mn:$(n,Mt)?Mt:$(n,"MSIE")||$(n,"Trident/")?Qr:$(n,"Gecko")?Mt:""},Bc={[Ta]:[new RegExp("rv:"+le)],[Ra]:[new RegExp(ti+"?\\/"+le)],[vt]:[new RegExp("("+vt+"|CrMo)\\/"+le)],[ka]:[new RegExp("CriOS\\/"+le)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+le)],[mn]:[zs],[Fa]:[zs],[ei]:[new RegExp("(Opera|OPR)\\/"+le)],[Mt]:[new RegExp(Mt+"\\/"+le)],[Aa]:[new RegExp("FxiOS\\/"+le)],[mr]:[new RegExp("Konqueror[:/]?"+le,"i")],[Dt]:[new RegExp(Dt+" "+le),zs],[Pa]:[new RegExp("android\\s"+le,"i")],[xa]:[new RegExp(Ca+"\\/"+le)],[Qr]:[new RegExp("(rv:|MSIE )"+le)],Mozilla:[new RegExp("rv:"+le)]},jc=function(n,e){var t=Oa(n,e),s=Bc[t];if(b(s))return null;for(var r=0;r[Ot,n&&n[1]||""]],[new RegExp(vn,"i"),[vn,""]],[new RegExp(_n,"i"),[_n,""]],[ni,[Dt,""]],[new RegExp(sn,"i"),(n,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[hr,""];if(new RegExp(Ie).test(e)&&!/IEMobile\b/.test(e))return[sn+" "+Ie,""];var t=/Windows NT ([0-9.]+)/i.exec(e);if(t&&t[1]){var s=t[1],r=Lc[s]||"";return/arm/i.test(e)&&(r="RT"),[sn,r]}return[sn,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,n=>{if(n&&n[3]){var e=[n[3],n[4],n[5]||"0"];return[Kn,e.join(".")]}return[Kn,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,n=>{var e="";return n&&n.length>=3&&(e=b(n[2])?n[3]:n[2]),["watchOS",e]}],[new RegExp("("+Ve+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Ve+")","i"),n=>{if(n&&n[2]){var e=[n[2],n[3],n[4]||"0"];return[Ve,e.join(".")]}return[Ve,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,n=>{var e=["Mac OS X",""];if(n&&n[1]){var t=[n[1],n[2],n[3]||"0"];e[1]=t.join(".")}return e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Pc,""]],[/Linux|debian/i,["Linux",""]]],Zi=function(n){return Nc.test(n)?vn:Oc.test(n)?_n:Mc.test(n)?Ot:new RegExp(gr,"i").test(n)?gr:new RegExp("("+hr+"|WPDesktop)","i").test(n)?hr:/iPad/.test(n)?ba:/iPod/.test(n)?"iPod Touch":/iPhone/.test(n)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(n)?Sa:ni.test(n)?Dt:/(kobo)\s(ereader|touch)/i.test(n)?"Kobo":new RegExp(Ki,"i").test(n)?Ki:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(n)||/(kf[a-z]+)( bui|\)).+silk\//i.test(n)?"Kindle Fire":/(Android|ZTE)/i.test(n)?new RegExp(Ie).test(n)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(n)||/pixel[\daxl ]{1,6}/i.test(n)&&!/pixel c/i.test(n)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(n)||/lmy47v/i.test(n)&&!/QTAQZ3/i.test(n)?Ve:wa:new RegExp("(pda|"+Ie+")","i").test(n)?$c:new RegExp(gn,"i").test(n)&&!new RegExp(gn+" pc","i").test(n)?Ma:""},Uc=n=>n instanceof Error;function Hc(n){var e=globalThis._posthogChunkIds;if(e){var t=Object.keys(e);return Gs&&t.length===Yi||(Yi=t.length,Gs=t.reduce((s,r)=>{Fn||(Fn={});var i=Fn[r];if(i)s[i[0]]=i[1];else for(var o=n(r),a=o.length-1;a>=0;a--){var l=o[a],c=l==null?void 0:l.filename,u=e[r];if(c&&u){s[c]=u,Fn[r]=[c,u];break}}return s},{})),Gs}}class Wc{constructor(e,t,s){s===void 0&&(s=[]),this.coercers=e,this.stackParser=t,this.modifiers=s}buildFromUnknown(e,t){t===void 0&&(t={});var s=t&&t.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(s,t,0).apply(e),i=this.buildParsingContext(t),o=this.parseStacktrace(r,i);return{$exception_list:this.convertToExceptionList(o,s),$exception_level:"error"}}modifyFrames(e){var t=this;return Ue(function*(){for(var s of e)s.stacktrace&&s.stacktrace.frames&&N(s.stacktrace.frames)&&(s.stacktrace.frames=yield t.applyModifiers(s.stacktrace.frames));return e})()}coerceFallback(e){var t;return{type:"Error",value:"Unknown error",stack:(t=e.syntheticException)==null?void 0:t.stack,synthetic:!0}}parseStacktrace(e,t){var s,r;return e.cause!=null&&(s=this.parseStacktrace(e.cause,t)),e.stack!=""&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap)),S({},e,{cause:s,stack:r})}applyChunkIds(e,t){return e.map(s=>(s.filename&&t&&(s.chunk_id=t[s.filename]),s))}applyCoercers(e,t){for(var s of this.coercers)if(s.match(e))return s.coerce(e,t);return this.coerceFallback(t)}applyModifiers(e){var t=this;return Ue(function*(){var s=e;for(var r of t.modifiers)s=yield r(s);return s})()}convertToExceptionList(e,t){var s,r,i,o={type:e.type,value:e.value,mechanism:{type:(s=t.type)!==null&&s!==void 0?s:"generic",handled:(r=t.handled)===null||r===void 0||r,synthetic:(i=e.synthetic)!==null&&i!==void 0&&i}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,S({},t,{handled:!0}))),a}buildParsingContext(e){var t;return{chunkIdMap:Hc(this.stackParser),skipFirstLines:(t=e.skipFirstLines)!==null&&t!==void 0?t:1}}buildCoercingContext(e,t,s){s===void 0&&(s=0);var r=(i,o)=>{if(o<=4){var a=this.buildCoercingContext(e,t,o);return this.applyCoercers(i,a)}};return S({},t,{syntheticException:s==0?t.syntheticException:void 0,mechanism:e,apply:i=>r(i,s),next:i=>r(i,s+1)})}}var Bt="?";function vr(n,e,t,s,r){var i={platform:n,filename:e,function:t===""?Bt:t,in_app:!0};return b(s)||(i.lineno=s),b(r)||(i.colno=r),i}var Na=(n,e)=>{var t=n.indexOf("safari-extension")!==-1,s=n.indexOf("safari-web-extension")!==-1;return t||s?[n.indexOf("@")!==-1?n.split("@")[0]:Bt,t?"safari-extension:"+e:"safari-web-extension:"+e]:[n,e]},zc=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,Gc=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Vc=/\((\S*)(?::(\d+))(?::(\d+))\)/,qc=(n,e)=>{var t=zc.exec(n);if(t){var[,s,r,i]=t;return vr(e,s,Bt,+r,+i)}var o=Gc.exec(n);if(o){if(o[2]&&o[2].indexOf("eval")===0){var a=Vc.exec(o[2]);a&&(o[2]=a[1],o[3]=a[2],o[4]=a[3])}var[l,c]=Na(o[1]||Bt,o[2]);return vr(e,c,l,o[3]?+o[3]:void 0,o[4]?+o[4]:void 0)}},Kc=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Yc=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Jc=(n,e)=>{var t=Kc.exec(n);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){var s=Yc.exec(t[3]);s&&(t[1]=t[1]||"eval",t[3]=s[1],t[4]=s[2],t[5]="")}var r=t[3],i=t[1]||Bt;return[i,r]=Na(i,r),vr(e,r,i,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}},Xi=/\(error: (.*)\)/,Qi=50;function Zc(){return function(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),s=1;s1024)){var u=Xi.test(c)?c.replace(Xi,"$1"):c;if(!u.match(/\S*Error: /)){for(var d of t){var p=d(u,n);if(p){o.push(p);break}}if(o.length>=Qi)break}}}return function(f){if(!f.length)return[];var m=Array.from(f);return m.reverse(),m.slice(0,Qi).map(v=>{return S({},v,{filename:v.filename||(_=m,_[_.length-1]||{}).filename,function:v.function||Bt});var _})}(o)}}("web:javascript",qc,Jc)}class Xc{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,t){var s=K(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:s?e.stack:void 0,cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var t=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?t+": "+e.message:t}isDOMException(e){return qn(e,"DOMException")}isDOMError(e){return qn(e,"DOMError")}}class Qc{match(e){return(t=>t instanceof Error)(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){var s=e.message;return s.error&&typeof s.error.message=="string"?String(s.error.message):String(s)}getStack(e){return e.stacktrace||e.stack||void 0}}class eu{constructor(){}match(e){return qn(e,"ErrorEvent")&&e.error!=null}coerce(e,t){var s,r=t.apply(e.error);return r||{type:"ErrorEvent",value:e.message,stack:(s=t.syntheticException)==null?void 0:s.stack,synthetic:!0}}}var tu=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class nu{match(e){return typeof e=="string"}coerce(e,t){var s,[r,i]=this.getInfos(e);return{type:r??"Error",value:i??e,stack:(s=t.syntheticException)==null?void 0:s.stack,synthetic:!0}}getInfos(e){var t="Error",s=e,r=e.match(tu);return r&&(t=r[1],s=r[2]),[t,s]}}var su=["fatal","error","warning","log","info","debug"];function La(n,e){e===void 0&&(e=40);var t=Object.keys(n);if(t.sort(),!t.length)return"[object has no keys]";for(var s=t.length;s>0;s--){var r=t.slice(0,s).join(", ");if(!(r.length>e))return s===t.length||r.length<=e?r:r.slice(0,e)+"..."}return""}class ru{match(e){return typeof e=="object"&&e!==null}coerce(e,t){var s,r=this.getErrorPropertyFromObject(e);return r?t.apply(r):{type:this.getType(e),value:this.getValue(e),stack:(s=t.syntheticException)==null?void 0:s.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return ya(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var t="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(t+=" with message: '"+e.message+"'"),t}if("message"in e&&typeof e.message=="string")return e.message;var s=this.getObjectClassName(e);return(s&&s!=="Object"?"'"+s+"'":"Object")+" captured as exception with keys: "+La(e)}isSeverityLevel(e){return K(e)&&!pr(e)&&su.indexOf(e)>=0}getErrorPropertyFromObject(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var s=e[t];if(Uc(s))return s}}getObjectClassName(e){try{var t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{return}}}class iu{match(e){return ya(e)}coerce(e,t){var s,r=e.constructor.name;return{type:r,value:r+" captured as exception with keys: "+La(e),stack:(s=t.syntheticException)==null?void 0:s.stack,synthetic:!0}}}class ou{match(e){return fr(e)}coerce(e,t){var s;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(s=t.syntheticException)==null?void 0:s.stack,synthetic:!0}}}class au{match(e){return qn(e,"PromiseRejectionEvent")}coerce(e,t){var s,r=this.getUnhandledRejectionReason(e);return fr(r)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(r),stack:(s=t.syntheticException)==null?void 0:s.stack,synthetic:!0}:t.apply(r)}getUnhandledRejectionReason(e){if(fr(e))return e;try{if("reason"in e)return e.reason;if("detail"in e&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var Da=function(n,e){var{debugEnabled:t}=e===void 0?{}:e,s={k:function(r){if(h&&(je.DEBUG||k.POSTHOG_DEBUG||t)&&!b(h.console)&&h.console){for(var i=("__rrweb_original__"in h.console[r])?h.console[r].__rrweb_original__:h.console[r],o=arguments.length,a=new Array(o>1?o-1:0),l=1;l{s.error("You must initialize PostHog before calling "+r)},createLogger:(r,i)=>Da(n+" "+r,i)};return s},E=Da("[PostHog.js]"),z=E.createLogger,lu=z("[ExternalScriptsLoader]"),eo=(n,e,t)=>{if(n.config.disable_external_dependency_loading)return lu.warn(e+" was requested but loading of external scripts is disabled."),t("Loading of external scripts is disabled");var s=w==null?void 0:w.querySelectorAll("script");if(s){for(var r,i=function(){if(s[o].src===e){var l=s[o];return l.__posthog_loading_callback_fired?{v:t()}:(l.addEventListener("load",c=>{l.__posthog_loading_callback_fired=!0,t(void 0,c)}),l.onerror=c=>t(c),{v:void 0})}},o=0;o{if(!w)return t("document not found");var l=w.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,t(void 0,d)},l.onerror=d=>t(d),n.config.prepare_external_dependency_script&&(l=n.config.prepare_external_dependency_script(l)),!l)return t("prepare_external_dependency_script returned null");if(n.config.external_scripts_inject_target==="head")w.head.appendChild(l);else{var c,u=w.querySelectorAll("body > script");u.length>0?(c=u[0].parentNode)==null||c.insertBefore(l,u[0]):w.body.appendChild(l)}};w!=null&&w.body?a():w==null||w.addEventListener("DOMContentLoaded",a)};k.__PosthogExtensions__=k.__PosthogExtensions__||{},k.__PosthogExtensions__.loadExternalDependency=(n,e,t)=>{var s="/static/"+e+".js?v="+n.version;if(e==="remote-config"&&(s="/array/"+n.config.token+"/config.js"),e==="toolbar"){var r=3e5;s=s+"&t="+Math.floor(Date.now()/r)*r}var i=n.requestRouter.endpointFor("assets",s);eo(n,i,t)},k.__PosthogExtensions__.loadSiteApp=(n,e,t)=>{var s=n.requestRouter.endpointFor("api",e);eo(n,s,t)};var Yn={};function lt(n,e,t){if(N(n)){if(Wi&&n.forEach===Wi)n.forEach(e,t);else if("length"in n&&n.length===+n.length){for(var s=0,r=n.length;s1?e-1:0),s=1;s1?e-1:0),s=1;s0||Xe(t))&&(e[s]=t)}),e};function uu(n,e){return t=n,s=i=>K(i)&&!ke(e)?i.slice(0,e):i,r=new Set,function i(o,a){return o!==Object(o)?s?s(o,a):o:r.has(o)?void 0:(r.add(o),N(o)?(l=[],lt(o,c=>{l.push(i(c))})):(l={},U(o,(c,u)=>{r.has(c)||(l[u]=i(c,u))})),l);var l}(t);var t,s,r}var du=["herokuapp.com","vercel.app","netlify.app"];function pu(n){var e=n==null?void 0:n.hostname;if(!K(e))return!1;var t=e.split(".").slice(-2).join(".");for(var s of du)if(t===s)return!1;return!0}function Ba(n,e){for(var t=0;te.match(t)))}function es(n){var e="";switch(typeof n.className){case"string":e=n.className;break;case"object":e=(n.className&&"baseVal"in n.className?n.className.baseVal:null)||n.getAttribute("class")||"";break;default:e=""}return ri(e)}function qa(n){return O(n)?null:Es(n).split(/(\s+)/).filter(e=>yn(e)).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Tn(n){var e="";return kr(n)&&!Xa(n)&&n.childNodes&&n.childNodes.length&&U(n.childNodes,function(t){var s;Ga(t)&&t.textContent&&(e+=(s=qa(t.textContent))!==null&&s!==void 0?s:"")}),Es(e)}function Ka(n){return b(n.target)?n.srcElement||null:(e=n.target)!=null&&e.shadowRoot?n.composedPath()[0]||null:n.target||null;var e}var ii=["a","button","form","input","select","textarea","label"];function Ya(n,e){if(b(e))return!0;var t,s=function(i){if(e.some(o=>i.matches(o)))return{v:!0}};for(var r of n)if(t=s(r))return t.v;return!1}function Ja(n){var e=n.parentNode;return!(!e||!Is(e))&&e}var hu=["next","previous","prev",">","<"],uo=10,po=[".ph-no-rageclick",".ph-no-capture"];function gu(n,e){if(!h||oi(n))return!1;var t,s,r;if(Ke(e)?(t=!!e&&po,s=void 0):(t=(r=e==null?void 0:e.css_selector_ignorelist)!==null&&r!==void 0?r:po,s=e==null?void 0:e.content_ignorelist),t===!1)return!1;var{targetElementList:i}=Za(n,!1);return!function(o,a){if(o===!1||b(o))return!1;var l;if(o===!0)l=hu;else{if(!N(o))return!1;if(o.length>uo)return E.error("[PostHog] content_ignorelist array cannot exceed "+uo+" items. Use css_selector_ignorelist for more complex matching."),!1;l=o.map(c=>c.toLowerCase())}return a.some(c=>{var{safeText:u,ariaLabel:d}=c;return l.some(p=>u.includes(p)||d.includes(p))})}(s,i.map(o=>{var a;return{safeText:Tn(o).toLowerCase(),ariaLabel:((a=o.getAttribute("aria-label"))==null?void 0:a.toLowerCase().trim())||""}}))&&!Ya(i,t)}var oi=n=>!n||ct(n,"html")||!Is(n),Za=(n,e)=>{if(!h||oi(n))return{parentIsUsefulElement:!1,targetElementList:[]};for(var t=!1,s=[n],r=n;r.parentNode&&!ct(r,"body");)if(Va(r.parentNode))s.push(r.parentNode.host),r=r.parentNode.host;else{var i=Ja(r);if(!i)break;if(e||ii.indexOf(i.tagName.toLowerCase())>-1)t=!0;else{var o=h.getComputedStyle(i);o&&o.getPropertyValue("cursor")==="pointer"&&(t=!0)}s.push(i),r=i}return{parentIsUsefulElement:t,targetElementList:s}};function mu(n,e,t,s,r){var i,o,a,l;if(t===void 0&&(t=void 0),!h||oi(n)||(i=t)!=null&&i.url_allowlist&&!co(t.url_allowlist)||(o=t)!=null&&o.url_ignorelist&&co(t.url_ignorelist))return!1;if((a=t)!=null&&a.dom_event_allowlist){var c=t.dom_event_allowlist;if(c&&!c.some(m=>e.type===m))return!1}var{parentIsUsefulElement:u,targetElementList:d}=Za(n,s);if(!function(m,v){var _=v==null?void 0:v.element_allowlist;if(b(_))return!0;var x,I=function(C){if(_.some(y=>C.tagName.toLowerCase()===y))return{v:!0}};for(var T of m)if(x=I(T))return x.v;return!1}(d,t)||!Ya(d,(l=t)==null?void 0:l.css_selector_allowlist))return!1;var p=h.getComputedStyle(n);if(p&&p.getPropertyValue("cursor")==="pointer"&&e.type==="click")return!0;var f=n.tagName.toLowerCase();switch(f){case"html":return!1;case"form":return(r||["submit"]).indexOf(e.type)>=0;case"input":case"select":case"textarea":return(r||["change","click"]).indexOf(e.type)>=0;default:return u?(r||["click"]).indexOf(e.type)>=0:(r||["click"]).indexOf(e.type)>=0&&(ii.indexOf(f)>-1||n.getAttribute("contenteditable")==="true")}}function kr(n){for(var e=n;e.parentNode&&!ct(e,"body");e=e.parentNode){var t=es(e);if($(t,"ph-sensitive")||$(t,"ph-no-capture"))return!1}if($(es(n),"ph-include"))return!0;var s=n.type||"";if(K(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var r=n.name||n.id||"";return!(K(r)&&/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(r.replace(/[^a-zA-Z0-9]/g,"")))}function Xa(n){return!!(ct(n,"input")&&!["button","checkbox","submit","reset"].includes(n.type)||ct(n,"select")||ct(n,"textarea")||n.getAttribute("contenteditable")==="true")}var Qa="(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})",vu=new RegExp("^(?:"+Qa+")$"),_u=new RegExp(Qa),el="\\d{3}-?\\d{2}-?\\d{4}",yu=new RegExp("^("+el+")$"),wu=new RegExp("("+el+")");function yn(n,e){return e===void 0&&(e=!0),!(O(n)||K(n)&&(n=Es(n),(e?vu:_u).test((n||"").replace(/[- ]/g,""))||(e?yu:wu).test(n)))}function tl(n){var e=Tn(n);return yn(e=(e+" "+nl(n)).trim())?e:""}function nl(n){var e="";return n&&n.childNodes&&n.childNodes.length&&U(n.childNodes,function(t){var s;if(t&&((s=t.tagName)==null?void 0:s.toLowerCase())==="span")try{var r=Tn(t);e=(e+" "+r).trim(),t.childNodes&&t.childNodes.length&&(e=(e+" "+nl(t)).trim())}catch(i){E.error("[AutoCapture]",i)}}),e}function bu(n){return function(e){var t=e.map(s=>{var r,i,o="";if(s.tag_name&&(o+=s.tag_name),s.attr_class)for(var a of(s.attr_class.sort(),s.attr_class))o+="."+a.replace(/"/g,"");var l=S({},s.text?{text:s.text}:{},{"nth-child":(r=s.nth_child)!==null&&r!==void 0?r:0,"nth-of-type":(i=s.nth_of_type)!==null&&i!==void 0?i:0},s.href?{href:s.href}:{},s.attr_id?{attr_id:s.attr_id}:{},s.attributes),c={};return Bn(l).sort((u,d)=>{var[p]=u,[f]=d;return p.localeCompare(f)}).forEach(u=>{var[d,p]=u;return c[fo(d.toString())]=fo(p.toString())}),o+=":",o+=Bn(c).map(u=>{var[d,p]=u;return d+'="'+p+'"'}).join("")});return t.join(";")}(function(e){return e.map(t=>{var s,r,i={text:(s=t.$el_text)==null?void 0:s.slice(0,400),tag_name:t.tag_name,href:(r=t.attr__href)==null?void 0:r.slice(0,2048),attr_class:Eu(t),attr_id:t.attr__id,nth_child:t.nth_child,nth_of_type:t.nth_of_type,attributes:{}};return Bn(t).filter(o=>{var[a]=o;return a.indexOf("attr__")===0}).forEach(o=>{var[a,l]=o;return i.attributes[a]=l}),i})}(n))}function fo(n){return n.replace(/"|\\"/g,'\\"')}function Eu(n){var e=n.attr__class;return e?N(e)?e:ri(e):void 0}class sl{constructor(e){this.disabled=e===!1;var t=Z(e)?e:{};this.thresholdPx=t.threshold_px||30,this.timeoutMs=t.timeout_ms||1e3,this.clickCount=t.click_count||3,this.clicks=[]}isRageClick(e,t,s){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(e-r.x)+Math.abs(t-r.y){var e=w==null?void 0:w.createElement("a");return b(e)?null:(e.href=n,e)},Su=function(n,e){var t,s;e===void 0&&(e="&");var r=[];return U(n,function(i,o){b(i)||b(o)||o==="undefined"||(t=encodeURIComponent((a=>a instanceof File)(i)?i.name:i.toString()),s=encodeURIComponent(o),r[r.length]=s+"="+t)}),r.join(e)},ns=function(n,e){for(var t,s=((n.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),r=0;rn?e.slice(0,n)+"...":e}function Iu(n){if(n.previousElementSibling)return n.previousElementSibling;var e=n;do e=e.previousSibling;while(e&&!Is(e));return e}function Cu(n,e,t,s){var r=n.tagName.toLowerCase(),i={tag_name:r};ii.indexOf(r)>-1&&!t&&(r.toLowerCase()==="a"||r.toLowerCase()==="button"?i.$el_text=qs(1024,tl(n)):i.$el_text=qs(1024,Tn(n)));var o=es(n);o.length>0&&(i.classes=o.filter(function(u){return u!==""})),U(n.attributes,function(u){var d;if((!Xa(n)||["name","id","class","aria-label"].indexOf(u.name)!==-1)&&(s==null||!s.includes(u.name))&&!e&&yn(u.value)&&(d=u.name,!K(d)||d.substring(0,10)!=="_ngcontent"&&d.substring(0,7)!=="_nghost")){var p=u.value;u.name==="class"&&(p=ri(p).join(" ")),i["attr__"+u.name]=qs(1024,p)}});for(var a=1,l=1,c=n;c=Iu(c);)a++,c.tagName===n.tagName&&l++;return i.nth_child=a,i.nth_of_type=l,i}function xu(n,e){for(var t,s,{e:r,maskAllElementAttributes:i,maskAllText:o,elementAttributeIgnoreList:a,elementsChainAsString:l}=e,c=[n],u=n;u.parentNode&&!ct(u,"body");)Va(u.parentNode)?(c.push(u.parentNode.host),u=u.parentNode.host):(c.push(u.parentNode),u=u.parentNode);var d,p=[],f={},m=!1,v=!1;if(U(c,C=>{var y=kr(C);C.tagName.toLowerCase()==="a"&&(m=C.getAttribute("href"),m=y&&m&&yn(m)&&m),$(es(C),"ph-no-capture")&&(v=!0),p.push(Cu(C,i,o,a));var P=function(A){if(!kr(A))return{};var R={};return U(A.attributes,function(ne){if(ne.name&&ne.name.indexOf("data-ph-capture-attribute")===0){var J=ne.name.replace("data-ph-capture-attribute-",""),ie=ne.value;J&&ie&&yn(ie)&&(R[J]=ie)}}),R}(C);G(f,P)}),v)return{props:{},explicitNoCapture:v};if(o||(n.tagName.toLowerCase()==="a"||n.tagName.toLowerCase()==="button"?p[0].$el_text=tl(n):p[0].$el_text=Tn(n)),m){var _,x;p[0].attr__href=m;var I=(_=ts(m))==null?void 0:_.host,T=h==null||(x=h.location)==null?void 0:x.host;I&&T&&I!==T&&(d=m)}return{props:G({$event_type:r.type,$ce_version:1},l?{}:{$elements:p},{$elements_chain:bu(p)},(t=p[0])!=null&&t.$el_text?{$el_text:(s=p[0])==null?void 0:s.$el_text}:{},d&&r.type==="click"?{$external_click_url:d}:{},f)}}class ku{constructor(e){this.P=!1,this.T=null,this.I=!1,this.instance=e,this.rageclicks=new sl(e.config.rageclick),this.C=null}get R(){var e,t,s=Z(this.instance.config.autocapture)?this.instance.config.autocapture:{};return s.url_allowlist=(e=s.url_allowlist)==null?void 0:e.map(r=>new RegExp(r)),s.url_ignorelist=(t=s.url_ignorelist)==null?void 0:t.map(r=>new RegExp(r)),s}F(){if(this.isBrowserSupported()){if(h&&w){var e=s=>{s=s||(h==null?void 0:h.event);try{this.O(s)}catch(r){ho.error("Failed to capture event",r)}};if(Y(w,"submit",e,{capture:!0}),Y(w,"change",e,{capture:!0}),Y(w,"click",e,{capture:!0}),this.R.capture_copied_text){var t=s=>{s=s||(h==null?void 0:h.event),this.O(s,Vs)};Y(w,"copy",t,{capture:!0}),Y(w,"cut",t,{capture:!0})}}}else ho.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.P&&(this.F(),this.P=!0)}onRemoteConfig(e){e.elementsChainAsString&&(this.I=e.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[no]:!!e.autocapture_opt_out}),this.T=!!e.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(e){this.C=e}getElementSelectors(e){var t,s=[];return(t=this.C)==null||t.forEach(r=>{var i=w==null?void 0:w.querySelectorAll(r);i==null||i.forEach(o=>{e===o&&s.push(r)})}),s}get isEnabled(){var e,t,s=(e=this.instance.persistence)==null?void 0:e.props[no],r=this.T;if(ke(r)&&!Ke(s)&&!this.instance.M())return!1;var i=(t=this.T)!==null&&t!==void 0?t:!!s;return!!this.instance.config.autocapture&&!i}O(e,t){if(t===void 0&&(t="$autocapture"),this.isEnabled){var s,r=Ka(e);Ga(r)&&(r=r.parentNode||null),t==="$autocapture"&&e.type==="click"&&e instanceof MouseEvent&&this.instance.config.rageclick&&(s=this.rageclicks)!=null&&s.isRageClick(e.clientX,e.clientY,e.timeStamp||new Date().getTime())&&gu(r,this.instance.config.rageclick)&&this.O(e,"$rageclick");var i=t===Vs;if(r&&mu(r,e,this.R,i,i?["copy","cut"]:void 0)){var{props:o,explicitNoCapture:a}=xu(r,{e,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.R.element_attribute_ignorelist,elementsChainAsString:this.I});if(a)return!1;var l=this.getElementSelectors(r);if(l&&l.length>0&&(o.$element_selectors=l),t===Vs){var c,u=qa(h==null||(c=h.getSelection())==null?void 0:c.toString()),d=e.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=d}return this.instance.capture(t,o),!0}}}isBrowserSupported(){return Ge(w==null?void 0:w.querySelectorAll)}}Math.trunc||(Math.trunc=function(n){return n<0?Math.ceil(n):Math.floor(n)}),Number.isInteger||(Number.isInteger=function(n){return Xe(n)&&isFinite(n)&&Math.floor(n)===n});var go="0123456789abcdef";class rs{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,t,s,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(s)||!Number.isInteger(r)||e<0||t<0||s<0||r<0||e>0xffffffffffff||t>4095||s>1073741823||r>4294967295)throw new RangeError("invalid field value");var i=new Uint8Array(16);return i[0]=e/Math.pow(2,40),i[1]=e/Math.pow(2,32),i[2]=e/Math.pow(2,24),i[3]=e/Math.pow(2,16),i[4]=e/Math.pow(2,8),i[5]=e,i[6]=112|t>>>8,i[7]=t,i[8]=128|s>>>24,i[9]=s>>>16,i[10]=s>>>8,i[11]=s,i[12]=r>>>24,i[13]=r>>>16,i[14]=r>>>8,i[15]=r,new rs(i)}toString(){for(var e="",t=0;t>>4)+go.charAt(15&this.bytes[t]),t!==3&&t!==5&&t!==7&&t!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new rs(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var t=0;t<16;t++){var s=this.bytes[t]-e.bytes[t];if(s!==0)return Math.sign(s)}return 0}}class Tu{constructor(){this.A=0,this.j=0,this.D=new Ru}generate(){var e=this.generateOrAbort();if(b(e)){this.A=0;var t=this.generateOrAbort();if(b(t))throw new Error("Could not generate UUID after timestamp reset");return t}return e}generateOrAbort(){var e=Date.now();if(e>this.A)this.A=e,this.L();else{if(!(e+1e4>this.A))return;this.j++,this.j>4398046511103&&(this.A++,this.L())}return rs.fromFieldsV7(this.A,Math.trunc(this.j/Math.pow(2,30)),this.j&Math.pow(2,30)-1,this.D.nextUint32())}L(){this.j=1024*this.D.nextUint32()+(1023&this.D.nextUint32())}}var mo,rl=n=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;ecrypto.getRandomValues(n));class Ru{constructor(){this.N=new Uint32Array(8),this.U=1/0}nextUint32(){return this.U>=this.N.length&&(rl(this.N),this.U=0),this.N[this.U++]}}var at=()=>Au().toString(),Au=()=>(mo||(mo=new Tu)).generate(),Yt="",Pu=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i;function Fu(n,e){if(e){var t=function(r,i){if(i===void 0&&(i=w),Yt)return Yt;if(!i||["localhost","127.0.0.1"].includes(r))return"";for(var o=r.split("."),a=Math.min(o.length,8),l="dmn_chk_"+at();!Yt&&a--;){var c=o.slice(a).join("."),u=l+"=1;domain=."+c+";path=/";i.cookie=u+";max-age=3",i.cookie.includes(l)&&(i.cookie=u+";max-age=0",Yt=c)}return Yt}(n);if(!t){var s=(r=>{var i=r.match(Pu);return i?i[0]:""})(n);s!==t&&E.info("Warning: cookie subdomain discovery mismatch",s,t),t=s}return t?"; domain=."+t:""}return""}var Fe={H:()=>!!w,B:function(n){E.error("cookieStore error: "+n)},q:function(n){if(w){try{for(var e=n+"=",t=w.cookie.split(";").filter(i=>i.length),s=0;s3686.4&&E.warn("cookieStore warning: large cookie, len="+c.length),w.cookie=c,c}catch{return}},V:function(n,e){if(w!=null&&w.cookie)try{Fe.G(n,"",-1,e)}catch{return}}},Ks=null,W={H:function(){if(!ke(Ks))return Ks;var n=!0;if(b(h))n=!1;else try{var e="__mplssupport__";W.G(e,"xyz"),W.q(e)!=='"xyz"'&&(n=!1),W.V(e)}catch{n=!1}return n||E.error("localStorage unsupported; falling back to cookie store"),Ks=n,n},B:function(n){E.error("localStorage error: "+n)},q:function(n){try{return h==null?void 0:h.localStorage.getItem(n)}catch(e){W.B(e)}return null},W:function(n){try{return JSON.parse(W.q(n))||{}}catch{}return null},G:function(n,e){try{h==null||h.localStorage.setItem(n,JSON.stringify(e))}catch(t){W.B(t)}},V:function(n){try{h==null||h.localStorage.removeItem(n)}catch(e){W.B(e)}}},$u=["$device_id","distinct_id",Jn,Wa,Qn,Xn,Pe],Mn={},Mu={H:function(){return!0},B:function(n){E.error("memoryStorage error: "+n)},q:function(n){return Mn[n]||null},W:function(n){return Mn[n]||null},G:function(n,e){Mn[n]=e},V:function(n){delete Mn[n]}},ft=null,Q={H:function(){if(!ke(ft))return ft;if(ft=!0,b(h))ft=!1;else try{var n="__support__";Q.G(n,"xyz"),Q.q(n)!=='"xyz"'&&(ft=!1),Q.V(n)}catch{ft=!1}return ft},B:function(n){E.error("sessionStorage error: ",n)},q:function(n){try{return h==null?void 0:h.sessionStorage.getItem(n)}catch(e){Q.B(e)}return null},W:function(n){try{return JSON.parse(Q.q(n))||null}catch{}return null},G:function(n,e){try{h==null||h.sessionStorage.setItem(n,JSON.stringify(e))}catch(t){Q.B(t)}},V:function(n){try{h==null||h.sessionStorage.removeItem(n)}catch(e){Q.B(e)}}},He=function(n){return n[n.PENDING=-1]="PENDING",n[n.DENIED=0]="DENIED",n[n.GRANTED=1]="GRANTED",n}({});class Ou{constructor(e){this._instance=e}get R(){return this._instance.config}get consent(){return this.J()?He.DENIED:this.K}isOptedOut(){return this.R.cookieless_mode==="always"||this.consent===He.DENIED||this.consent===He.PENDING&&(this.R.opt_out_capturing_by_default||this.R.cookieless_mode==="on_reject")}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===He.DENIED}optInOut(e){this.Y.G(this.X,e?1:0,this.R.cookie_expiration,this.R.cross_subdomain_cookie,this.R.secure_cookie)}reset(){this.Y.V(this.X,this.R.cross_subdomain_cookie)}get X(){var{token:e,opt_out_capturing_cookie_prefix:t,consent_persistence_name:s}=this._instance.config;return s||(t?t+e:"__ph_opt_in_out_"+e)}get K(){var e=this.Y.q(this.X);return Ws(e)?He.GRANTED:$(Rc,e)?He.DENIED:He.PENDING}get Y(){if(!this.Z){var e=this.R.opt_out_capturing_persistence_type;this.Z=e==="localStorage"?W:Fe;var t=e==="localStorage"?Fe:W;t.q(this.X)&&(this.Z.q(this.X)||this.optInOut(Ws(t.q(this.X))),t.V(this.X,this.R.cross_subdomain_cookie))}return this.Z}J(){return!!this.R.respect_dnt&&!!Ba([he==null?void 0:he.doNotTrack,he==null?void 0:he.msDoNotTrack,k.doNotTrack],e=>Ws(e))}}var On=z("[Dead Clicks]"),Nu=()=>!0,Lu=n=>{var e,t=!((e=n.instance.persistence)==null||!e.get_property(Ha)),s=n.instance.config.capture_dead_clicks;return Ke(s)?s:!!Z(s)||t};class il{get lazyLoadedDeadClicksAutocapture(){return this.tt}constructor(e,t,s){this.instance=e,this.isEnabled=t,this.onCapture=s,this.startIfEnabledOrStop()}onRemoteConfig(e){"captureDeadClicks"in e&&(this.instance.persistence&&this.instance.persistence.register({[Ha]:e.captureDeadClicks}),this.startIfEnabledOrStop())}startIfEnabledOrStop(){this.isEnabled(this)?this.it(()=>{this.et()}):this.stop()}it(e){var t,s;(t=k.__PosthogExtensions__)!=null&&t.initDeadClicksAutocapture&&e(),(s=k.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this.instance,"dead-clicks-autocapture",r=>{r?On.error("failed to load script",r):e()})}et(){var e;if(w){if(!this.tt&&(e=k.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var t=Z(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};t.__onCapture=this.onCapture,this.tt=k.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,t),this.tt.start(w),On.info("starting...")}}else On.error("`document` not found. Cannot start.")}stop(){this.tt&&(this.tt.stop(),this.tt=void 0,On.info("stopping..."))}}var Jt=z("[ExceptionAutocapture]");class Du{constructor(e){var t,s,r;this.rt=()=>{var i;if(h&&this.isEnabled&&(i=k.__PosthogExtensions__)!=null&&i.errorWrappingFunctions){var o=k.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,a=k.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,l=k.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.st&&this.R.capture_unhandled_errors&&(this.st=o(this.captureException.bind(this))),!this.nt&&this.R.capture_unhandled_rejections&&(this.nt=a(this.captureException.bind(this))),!this.ot&&this.R.capture_console_errors&&(this.ot=l(this.captureException.bind(this)))}catch(c){Jt.error("failed to start",c),this.ut()}}},this._instance=e,this.ht=!((t=this._instance.persistence)==null||!t.props[so]),this.dt=new Ac({refillRate:(s=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)!==null&&s!==void 0?s:1,bucketSize:(r=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)!==null&&r!==void 0?r:10,refillInterval:1e4,h:Jt}),this.R=this.vt(),this.startIfEnabledOrStop()}vt(){var e=this._instance.config.capture_exceptions,t={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return Z(e)?t=S({},t,e):(b(e)?this.ht:e)&&(t=S({},t,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),t}get isEnabled(){return this.R.capture_console_errors||this.R.capture_unhandled_errors||this.R.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Jt.info("enabled"),this.ut(),this.it(this.rt)):this.ut()}it(e){var t,s;(t=k.__PosthogExtensions__)!=null&&t.errorWrappingFunctions&&e(),(s=k.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"exception-autocapture",r=>{if(r)return Jt.error("failed to load script",r);e()})}ut(){var e,t,s;(e=this.st)==null||e.call(this),this.st=void 0,(t=this.nt)==null||t.call(this),this.nt=void 0,(s=this.ot)==null||s.call(this),this.ot=void 0}onRemoteConfig(e){if("autocaptureExceptions"in e){var t=e.autocaptureExceptions;this.ht=!!t||!1,this._instance.persistence&&this._instance.persistence.register({[so]:this.ht}),this.R=this.vt(),this.startIfEnabledOrStop()}}onConfigChange(){this.R=this.vt()}captureException(e){var t,s,r=(t=e==null||(s=e.$exception_list)==null||(s=s[0])==null?void 0:s.type)!==null&&t!==void 0?t:"Exception";this.dt.consumeRateLimit(r)?Jt.info("Skipping exception capture because of client rate limiting.",{exception:r}):this._instance.exceptions.sendExceptionEvent(e)}}function vo(n,e,t){try{if(!(e in n))return()=>{};var s=n[e],r=t(s);return Ge(r)&&(r.prototype=r.prototype||{},Object.defineProperties(r,{__posthog_wrapped__:{enumerable:!1,value:!0}})),n[e]=r,()=>{n[e]=s}}catch{return()=>{}}}class Bu{constructor(e){var t;this._instance=e,this.ct=(h==null||(t=h.location)==null?void 0:t.pathname)||""}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(E.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.ft&&this.ft(),this.ft=void 0,E.info("History API monitoring stopped")}monitorHistoryChanges(){var e,t;if(h&&h.history){var s=this;(e=h.history.pushState)!=null&&e.__posthog_wrapped__||vo(h.history,"pushState",r=>function(i,o,a){r.call(this,i,o,a),s._t("pushState")}),(t=h.history.replaceState)!=null&&t.__posthog_wrapped__||vo(h.history,"replaceState",r=>function(i,o,a){r.call(this,i,o,a),s._t("replaceState")}),this.bt()}}_t(e){try{var t,s=h==null||(t=h.location)==null?void 0:t.pathname;if(!s)return;s!==this.ct&&this.isEnabled&&this._instance.capture("$pageview",{navigation_type:e}),this.ct=s}catch(r){E.error("Error capturing "+e+" pageview",r)}}bt(){if(!this.ft){var e=()=>{this._t("popstate")};Y(h,"popstate",e),this.ft=()=>{h&&h.removeEventListener("popstate",e)}}}}var Ys=z("[SegmentIntegration]");function ju(n,e){var t=n.config.segment;if(!t)return e();(function(s,r){var i=s.config.segment;if(!i)return r();var o=l=>{var c=()=>l.anonymousId()||at();s.config.get_device_id=c,l.id()&&(s.register({distinct_id:l.id(),$device_id:c()}),s.persistence.set_property(Pe,"identified")),r()},a=i.user();"then"in a&&Ge(a.then)?a.then(o):o(a)})(n,()=>{t.register((s=>{Promise&&Promise.resolve||Ys.warn("This browser does not have Promise support, and can not use the segment integration");var r=(i,o)=>{if(!o)return i;i.event.userId||i.event.anonymousId===s.get_distinct_id()||(Ys.info("No userId set, resetting PostHog"),s.reset()),i.event.userId&&i.event.userId!==s.get_distinct_id()&&(Ys.info("UserId set, identifying with PostHog"),s.identify(i.event.userId));var a=s.calculateEventProperties(o,i.event.properties);return i.event.properties=Object.assign({},a,i.event.properties),i};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:i=>r(i,i.event.event),page:i=>r(i,"$pageview"),identify:i=>r(i,"$identify"),screen:i=>r(i,"$screen")}})(n)).then(()=>{e()})})}var ol="posthog-js";function al(n,e){var{organization:t,projectId:s,prefix:r,severityAllowList:i=["error"],sendExceptionsToPostHog:o=!0}=e===void 0?{}:e;return a=>{var l,c,u,d,p;if(!(i==="*"||i.includes(a.level))||!n.__loaded)return a;a.tags||(a.tags={});var f=n.requestRouter.endpointFor("ui","/project/"+n.config.token+"/person/"+n.get_distinct_id());a.tags["PostHog Person URL"]=f,n.sessionRecordingStarted()&&(a.tags["PostHog Recording URL"]=n.get_session_replay_url({withTimestamp:!0}));var m=((l=a.exception)==null?void 0:l.values)||[],v=m.map(x=>S({},x,{stacktrace:x.stacktrace?S({},x.stacktrace,{type:"raw",frames:(x.stacktrace.frames||[]).map(I=>S({},I,{platform:"web:javascript"}))}):void 0})),_={$exception_message:((c=m[0])==null?void 0:c.value)||a.message,$exception_type:(u=m[0])==null?void 0:u.type,$exception_level:a.level,$exception_list:v,$sentry_event_id:a.event_id,$sentry_exception:a.exception,$sentry_exception_message:((d=m[0])==null?void 0:d.value)||a.message,$sentry_exception_type:(p=m[0])==null?void 0:p.type,$sentry_tags:a.tags};return t&&s&&(_.$sentry_url=(r||"https://sentry.io/organizations/")+t+"/issues/?project="+s+"&query="+a.event_id),o&&n.exceptions.sendExceptionEvent(_),a}}class Uu{constructor(e,t,s,r,i,o){this.name=ol,this.setupOnce=function(a){a(al(e,{organization:t,projectId:s,prefix:r,severityAllowList:i,sendExceptionsToPostHog:o==null||o}))}}}var Hu=h!=null&&h.location?ss(h.location.hash,"__posthog")||ss(location.hash,"state"):null,_o="_postHogToolbarParams",yo=z("[Toolbar]"),ot=function(n){return n[n.UNINITIALIZED=0]="UNINITIALIZED",n[n.LOADING=1]="LOADING",n[n.LOADED=2]="LOADED",n}(ot||{});class Wu{constructor(e){this.instance=e}yt(e){k.ph_toolbar_state=e}wt(){var e;return(e=k.ph_toolbar_state)!==null&&e!==void 0?e:ot.UNINITIALIZED}maybeLoadToolbar(e,t,s){if(e===void 0&&(e=void 0),t===void 0&&(t=void 0),s===void 0&&(s=void 0),ja(this.instance.config)||!h||!w)return!1;e=e??h.location,s=s??h.history;try{if(!t){try{h.localStorage.setItem("test","test"),h.localStorage.removeItem("test")}catch{return!1}t=h==null?void 0:h.localStorage}var r,i=Hu||ss(e.hash,"__posthog")||ss(e.hash,"state"),o=i?to(()=>JSON.parse(atob(decodeURIComponent(i))))||to(()=>JSON.parse(decodeURIComponent(i))):null;return o&&o.action==="ph_authorize"?((r=o).source="url",r&&Object.keys(r).length>0&&(o.desiredHash?e.hash=o.desiredHash:s?s.replaceState(s.state,"",e.pathname+e.search):e.hash="")):((r=JSON.parse(t.getItem(_o)||"{}")).source="localstorage",delete r.userIntent),!(!r.token||this.instance.config.token!==r.token)&&(this.loadToolbar(r),!0)}catch{return!1}}xt(e){var t=k.ph_load_toolbar||k.ph_load_editor;!O(t)&&Ge(t)?t(e,this.instance):yo.warn("No toolbar load function found")}loadToolbar(e){var t=!(w==null||!w.getElementById(za));if(!h||t)return!1;var s=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,r=S({token:this.instance.config.token},e,{apiURL:this.instance.requestRouter.endpointFor("ui")},s?{instrument:!1}:{});if(h.localStorage.setItem(_o,JSON.stringify(S({},r,{source:void 0}))),this.wt()===ot.LOADED)this.xt(r);else if(this.wt()===ot.UNINITIALIZED){var i;this.yt(ot.LOADING),(i=k.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"toolbar",o=>{if(o)return yo.error("[Toolbar] Failed to load",o),void this.yt(ot.UNINITIALIZED);this.yt(ot.LOADED),this.xt(r)}),Y(h,"turbolinks:load",()=>{this.yt(ot.UNINITIALIZED),this.loadToolbar(r)})}return!0}$t(e){return this.loadToolbar(e)}maybeLoadEditor(e,t,s){return e===void 0&&(e=void 0),t===void 0&&(t=void 0),s===void 0&&(s=void 0),this.maybeLoadToolbar(e,t,s)}}var zu=z("[TracingHeaders]");class Gu{constructor(e){this.Et=void 0,this.St=void 0,this.rt=()=>{var t,s;b(this.Et)&&((t=k.__PosthogExtensions__)==null||(t=t.tracingHeadersPatchFns)==null||t._patchXHR(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager)),b(this.St)&&((s=k.__PosthogExtensions__)==null||(s=s.tracingHeadersPatchFns)==null||s._patchFetch(this._instance.config.__add_tracing_headers||[],this._instance.get_distinct_id(),this._instance.sessionManager))},this._instance=e}it(e){var t,s;(t=k.__PosthogExtensions__)!=null&&t.tracingHeadersPatchFns&&e(),(s=k.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"tracing-headers",r=>{if(r)return zu.error("failed to load script",r);e()})}startIfEnabledOrStop(){var e,t;this._instance.config.__add_tracing_headers?this.it(this.rt):((e=this.Et)==null||e.call(this),(t=this.St)==null||t.call(this),this.Et=void 0,this.St=void 0)}}var Nn="https?://(.*)",qt=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Vu=Vt(["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid"],qt),An="",qu=["li_fat_id"];function ll(n,e,t){if(!w)return{};var s,r=e?Vt([],qt,t||[]):[],i=cl(Rn(w.URL,r,An),n),o=(s={},U(qu,function(a){var l=Fe.q(a);s[a]=l||null}),s);return G(o,i)}function cl(n,e){var t=Vu.concat(e||[]),s={};return U(t,function(r){var i=ns(n,r);s[r]=i||null}),s}function ul(n){var e=function(i){return i?i.search(Nn+"google.([^/?]*)")===0?"google":i.search(Nn+"bing.com")===0?"bing":i.search(Nn+"yahoo.com")===0?"yahoo":i.search(Nn+"duckduckgo.com")===0?"duckduckgo":null:null}(n),t=e!="yahoo"?"q":"p",s={};if(!ke(e)){s.$search_engine=e;var r=w?ns(w.referrer,t):"";r.length&&(s.ph_keyword=r)}return s}function wo(){return navigator.language||navigator.userLanguage}function dl(){return(w==null?void 0:w.referrer)||"$direct"}function pl(n,e){var t=n?Vt([],qt,e||[]):[],s=ee==null?void 0:ee.href.substring(0,1e3);return{r:dl().substring(0,1e3),u:s?Rn(s,t,An):void 0}}function fl(n){var e,{r:t,u:s}=n,r={$referrer:t,$referring_domain:t==null?void 0:t=="$direct"?"$direct":(e=ts(t))==null?void 0:e.host};if(s){r.$current_url=s;var i=ts(s);r.$host=i==null?void 0:i.host,r.$pathname=i==null?void 0:i.pathname;var o=cl(s);G(r,o)}if(t){var a=ul(t);G(r,a)}return r}function hl(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Ku(){try{return new Date().getTimezoneOffset()}catch{return}}function Yu(n,e){if(!ue)return{};var t,s,r,i=n?Vt([],qt,e||[]):[],[o,a]=function(l){for(var c=0;c1e3?ue.substring(0,997)+"...":ue,$browser_version:jc(ue,navigator.vendor),$browser_language:wo(),$browser_language_prefix:(t=wo(),typeof t=="string"?t.split("-")[0]:void 0),$screen_height:h==null?void 0:h.screen.height,$screen_width:h==null?void 0:h.screen.width,$viewport_height:h==null?void 0:h.innerHeight,$viewport_width:h==null?void 0:h.innerWidth,$lib:"web",$lib_version:je.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3})}var st=z("[Web Vitals]"),bo=9e5;class Ju{constructor(e){var t;this.kt=!1,this.P=!1,this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.Pt=()=>{clearTimeout(this.Tt),this.N.metrics.length!==0&&(this._instance.capture("$web_vitals",this.N.metrics.reduce((s,r)=>S({},s,{["$web_vitals_"+r.name+"_event"]:S({},r),["$web_vitals_"+r.name+"_value"]:r.value}),{})),this.N={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.It=s=>{var r,i=(r=this._instance.sessionManager)==null?void 0:r.checkAndGetSessionAndWindowId(!0);if(b(i))st.error("Could not read session ID. Dropping metrics!");else{this.N=this.N||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var o=this.Ct();b(o)||(O(s==null?void 0:s.name)||O(s==null?void 0:s.value)?st.error("Invalid metric received",s):this.Rt&&s.value>=this.Rt?st.error("Ignoring metric with value >= "+this.Rt,s):(this.N.url!==o&&(this.Pt(),this.Tt=setTimeout(this.Pt,this.flushToCaptureTimeoutMs)),b(this.N.url)&&(this.N.url=o),this.N.firstMetricTimestamp=b(this.N.firstMetricTimestamp)?Date.now():this.N.firstMetricTimestamp,s.attribution&&s.attribution.interactionTargetElement&&(s.attribution.interactionTargetElement=void 0),this.N.metrics.push(S({},s,{$current_url:o,$session_id:i.sessionId,$window_id:i.windowId,timestamp:Date.now()})),this.N.metrics.length===this.allowedMetrics.length&&this.Pt()))}},this.rt=()=>{if(!this.P){var s,r,i,o,a=k.__PosthogExtensions__;b(a)||b(a.postHogWebVitalsCallbacks)||({onLCP:s,onCLS:r,onFCP:i,onINP:o}=a.postHogWebVitalsCallbacks),s&&r&&i&&o?(this.allowedMetrics.indexOf("LCP")>-1&&s(this.It.bind(this)),this.allowedMetrics.indexOf("CLS")>-1&&r(this.It.bind(this)),this.allowedMetrics.indexOf("FCP")>-1&&i(this.It.bind(this)),this.allowedMetrics.indexOf("INP")>-1&&o(this.It.bind(this)),this.P=!0):st.error("web vitals callbacks not loaded - not starting")}},this._instance=e,this.kt=!((t=this._instance.persistence)==null||!t.props[io]),this.startIfEnabled()}get allowedMetrics(){var e,t,s=Z(this._instance.config.capture_performance)?(e=this._instance.config.capture_performance)==null?void 0:e.web_vitals_allowed_metrics:void 0;return O(s)?((t=this._instance.persistence)==null?void 0:t.props[ao])||["CLS","FCP","INP","LCP"]:s}get flushToCaptureTimeoutMs(){return(Z(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var e=Z(this._instance.config.capture_performance)?this._instance.config.capture_performance.web_vitals_attribution:void 0;return e!=null&&e}get Rt(){var e=Z(this._instance.config.capture_performance)&&Xe(this._instance.config.capture_performance.__web_vitals_max_value)?this._instance.config.capture_performance.__web_vitals_max_value:bo;return 0{i?st.error("failed to load script",i):e()})}}Ct(){var e=h?h.location.href:void 0;if(e){var t=this._instance.config.mask_personal_data_properties,s=this._instance.config.custom_personal_data_properties,r=t?Vt([],qt,s||[]):[];return Rn(e,r,An)}st.error("Could not determine current URL")}}var Zu=z("[Heatmaps]");function Eo(n){return Z(n)&&"clientX"in n&&"clientY"in n&&Xe(n.clientX)&&Xe(n.clientY)}class Xu{constructor(e){var t;this.kt=!1,this.P=!1,this.Ft=null,this.instance=e,this.kt=!((t=this.instance.persistence)==null||!t.props[_r]),this.rageclicks=new sl(e.config.rageclick)}get flushIntervalMilliseconds(){var e=5e3;return Z(this.instance.config.capture_heatmaps)&&this.instance.config.capture_heatmaps.flush_interval_milliseconds&&(e=this.instance.config.capture_heatmaps.flush_interval_milliseconds),e}get isEnabled(){return O(this.instance.config.capture_heatmaps)?O(this.instance.config.enable_heatmaps)?this.kt:this.instance.config.enable_heatmaps:this.instance.config.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.P)return;Zu.info("starting..."),this.Ot(),this.Mt()}else{var e;clearInterval((e=this.Ft)!==null&&e!==void 0?e:void 0),this.At(),this.getAndClearBuffer()}}onRemoteConfig(e){if("heatmaps"in e){var t=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[_r]:t}),this.kt=t,this.startIfEnabled()}}getAndClearBuffer(){var e=this.N;return this.N=void 0,e}jt(e){this.Dt(e.originalEvent,"deadclick")}Mt(){this.Ft&&clearInterval(this.Ft),this.Ft=function(e){return(e==null?void 0:e.visibilityState)==="visible"}(w)?setInterval(this.Lt.bind(this),this.flushIntervalMilliseconds):null}Ot(){h&&w&&(this.Nt=this.Lt.bind(this),Y(h,"beforeunload",this.Nt),this.Ut=e=>this.Dt(e||(h==null?void 0:h.event)),Y(w,"click",this.Ut,{capture:!0}),this.zt=e=>this.Ht(e||(h==null?void 0:h.event)),Y(w,"mousemove",this.zt,{capture:!0}),this.Bt=new il(this.instance,Nu,this.jt.bind(this)),this.Bt.startIfEnabledOrStop(),this.qt=this.Mt.bind(this),Y(w,"visibilitychange",this.qt),this.P=!0)}At(){var e;h&&w&&(this.Nt&&h.removeEventListener("beforeunload",this.Nt),this.Ut&&w.removeEventListener("click",this.Ut,{capture:!0}),this.zt&&w.removeEventListener("mousemove",this.zt,{capture:!0}),this.qt&&w.removeEventListener("visibilitychange",this.qt),clearTimeout(this.Wt),(e=this.Bt)==null||e.stop(),this.P=!1)}Gt(e,t){var s=this.instance.scrollManager.scrollY(),r=this.instance.scrollManager.scrollX(),i=this.instance.scrollManager.scrollElement(),o=function(a,l,c){for(var u=a;u&&Is(u)&&!ct(u,"body");){if(u===c)return!1;if($(l,h==null?void 0:h.getComputedStyle(u).position))return!0;u=Ja(u)}return!1}(Ka(e),["fixed","sticky"],i);return{x:e.clientX+(o?0:r),y:e.clientY+(o?0:s),target_fixed:o,type:t}}Dt(e,t){var s;if(t===void 0&&(t="click"),!lo(e.target)&&Eo(e)){var r=this.Gt(e,t);(s=this.rageclicks)!=null&&s.isRageClick(e.clientX,e.clientY,new Date().getTime())&&this.Vt(S({},r,{type:"rageclick"})),this.Vt(r)}}Ht(e){!lo(e.target)&&Eo(e)&&(clearTimeout(this.Wt),this.Wt=setTimeout(()=>{this.Vt(this.Gt(e,"mousemove"))},500))}Vt(e){if(h){var t=h.location.href,s=this.instance.config.mask_personal_data_properties,r=this.instance.config.custom_personal_data_properties,i=s?Vt([],qt,r||[]):[],o=Rn(t,i,An);this.N=this.N||{},this.N[o]||(this.N[o]=[]),this.N[o].push(e)}}Lt(){this.N&&!Ft(this.N)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}}class So{constructor(e){this.Jt=(t,s,r)=>{r&&(r.noSessionId||r.activityTimeout||r.sessionPastMaximumLength)&&(E.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:t,changeReason:r}),this.Kt=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.Yt()}Yt(){var e;this.Xt=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.Jt)}destroy(){var e;(e=this.Xt)==null||e.call(this),this.Xt=void 0}doPageView(e,t){var s,r=this.Qt(e,t);return this.Kt={pathname:(s=h==null?void 0:h.location.pathname)!==null&&s!==void 0?s:"",pageViewId:t,timestamp:e},this._instance.scrollManager.resetContext(),r}doPageLeave(e){var t;return this.Qt(e,(t=this.Kt)==null?void 0:t.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.Kt)==null?void 0:e.pageViewId}}Qt(e,t){var s=this.Kt;if(!s)return{$pageview_id:t};var r={$pageview_id:t,$prev_pageview_id:s.pageViewId},i=this._instance.scrollManager.getContext();if(i&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:o,lastScrollY:a,maxScrollY:l,maxContentHeight:c,lastContentY:u,maxContentY:d}=i;if(!(b(o)||b(a)||b(l)||b(c)||b(u)||b(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),c=Math.ceil(c),u=Math.ceil(u),d=Math.ceil(d);var p=o<=1?1:Ne(a/o,0,1,E),f=o<=1?1:Ne(l/o,0,1,E),m=c<=1?1:Ne(u/c,0,1,E),v=c<=1?1:Ne(d/c,0,1,E);r=G(r,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:p,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:f,$prev_pageview_last_content:u,$prev_pageview_last_content_percentage:m,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:v})}}return s.pathname&&(r.$prev_pageview_pathname=s.pathname),s.timestamp&&(r.$prev_pageview_duration=(e.getTime()-s.timestamp.getTime())/1e3),r}}var We=function(n){return n.GZipJS="gzip-js",n.Base64="base64",n}({}),Ce=Uint8Array,de=Uint16Array,jt=Uint32Array,ai=new Ce([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),li=new Ce([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Io=new Ce([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gl=function(n,e){for(var t=new de(31),s=0;s<31;++s)t[s]=e+=1<>>1|(21845&H)<<1;ht=(61680&(ht=(52428&ht)>>>2|(13107&ht)<<2))>>>4|(3855&ht)<<4,vl[H]=((65280&ht)>>>8|(255&ht)<<8)>>>1}var pn=function(n,e,t){for(var s=n.length,r=0,i=new de(e);r>>15-n[r];return o},_t=new Ce(288);for(H=0;H<144;++H)_t[H]=8;for(H=144;H<256;++H)_t[H]=9;for(H=256;H<280;++H)_t[H]=7;for(H=280;H<288;++H)_t[H]=8;var is=new Ce(32);for(H=0;H<32;++H)is[H]=5;var ed=pn(_t,9),td=pn(is,5),_l=function(n){return(n/8>>0)+(7&n&&1)},yl=function(n,e,t){(t==null||t>n.length)&&(t=n.length);var s=new(n instanceof de?de:n instanceof jt?jt:Ce)(t-e);return s.set(n.subarray(e,t)),s},Be=function(n,e,t){t<<=7&e;var s=e/8>>0;n[s]|=t,n[s+1]|=t>>>8},Zt=function(n,e,t){t<<=7&e;var s=e/8>>0;n[s]|=t,n[s+1]|=t>>>8,n[s+2]|=t>>>16},Js=function(n,e){for(var t=[],s=0;sp&&(p=i[s].s);var f=new de(p+1),m=Rr(t[u-1],f,0);if(m>e){s=0;var v=0,_=m-e,x=1<<_;for(i.sort(function(y,P){return f[P.s]-f[y.s]||y.f-P.f});se))break;v+=x-(1<>>=_;v>0;){var T=i[s].s;f[T]=0&&v;--s){var C=i[s].s;f[C]==e&&(--f[C],++v)}m=e}return[new Ce(f),m]},Rr=function(n,e,t){return n.s==-1?Math.max(Rr(n.l,e,t+1),Rr(n.r,e,t+1)):e[n.s]=t},xo=function(n){for(var e=n.length;e&&!n[--e];);for(var t=new de(++e),s=0,r=n[0],i=1,o=function(l){t[s++]=l},a=1;a<=e;++a)if(n[a]==r&&a!=e)++i;else{if(!r&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(r),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(r);i=1,r=n[a]}return[t.subarray(0,s),e]},Xt=function(n,e){for(var t=0,s=0;s>>8,n[r+2]=255^n[r],n[r+3]=255^n[r+1];for(var i=0;i4&&!J[Io[oe-1]];--oe);var ve,Te,Re,St,Qe=c+5<<3,pt=Xt(r,_t)+Xt(i,is)+o,Ae=Xt(r,p)+Xt(i,v)+o+14+3*oe+Xt(A,J)+(2*A[16]+3*A[17]+7*A[18]);if(Qe<=pt&&Qe<=Ae)return Ar(e,u,n.subarray(l,l+c));if(Be(e,u,1+(Ae15&&(Be(e,u,_e[R]>>>5&127),u+=_e[R]>>>12)}}}else ve=ed,Te=_t,Re=td,St=is;for(R=0;R255){pe=s[R]>>>18&31,Zt(e,u,ve[pe+257]),u+=Te[pe+257],pe>7&&(Be(e,u,s[R]>>>23&31),u+=ai[pe]);var Ct=31&s[R];Zt(e,u,Re[Ct]),u+=St[Ct],Ct>3&&(Zt(e,u,s[R]>>>5&8191),u+=li[Ct])}else Zt(e,u,ve[s[R]]),u+=Te[s[R]];return Zt(e,u,ve[256]),u+Te[256]},nd=new jt([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),sd=function(){for(var n=new jt(256),e=0;e<256;++e){for(var t=e,s=9;--s;)t=(1&t&&3988292384)^t>>>1;n[e]=t}return n}(),rd=function(n,e,t,s,r){return function(i,o,a,l,c,u){var d=i.length,p=new Ce(l+d+5*(1+Math.floor(d/7e3))+c),f=p.subarray(l,p.length-c),m=0;if(!o||d<8)for(var v=0;v<=d;v+=65535){var _=v+65535;_>>13,T=8191&x,C=(1<7e3||Re>24576)&&It>423){m=ko(i,f,0,J,ie,oe,Te,Re,Qe,v-Qe,m),Re=ve=Te=0,Qe=v;for(var ae=0;ae<286;++ae)ie[ae]=0;for(ae=0;ae<30;++ae)oe[ae]=0}var _e=2,pe=0,Ct=T,tt=Ae-et&32767;if(It>2&&pt==ne(v-tt))for(var yc=Math.min(I,It)-1,wc=Math.min(32767,v),bc=Math.min(258,It);tt<=wc&&--Ct&&Ae!=et;){if(i[v+_e]==i[v+_e-tt]){for(var nt=0;nt_e){if(_e=nt,pe=tt,nt>yc)break;var Ec=Math.min(tt,nt-2),Bi=0;for(ae=0;aeBi&&(Bi=ji,et=Us)}}}tt+=(Ae=et)-(et=y[Ae])+32768&32767}if(pe){J[Re++]=268435456|Tr[_e]<<18|Co[pe];var Ui=31&Tr[_e],Hi=31&Co[pe];Te+=ai[Ui]+li[Hi],++ie[257+Ui],++oe[Hi],St=v+_e,++ve}else J[Re++]=i[v],++ie[i[v]]}}m=ko(i,f,u,J,ie,oe,Te,Re,Qe,v-Qe,m)}return yl(p,0,l+_l(m)+c)}(n,e.level==null?6:e.level,e.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(n.length)))):12+e.mem,t,s,!0)},Zs=function(n,e,t){for(;t;++e)n[e]=t,t>>>=8};function id(n,e){e===void 0&&(e={});var t=function(){var a=4294967295;return{p:function(l){for(var c=a,u=0;u>>8;a=c},d:function(){return 4294967295^a}}}(),s=n.length;t.p(n);var r,i=rd(n,e,10+((r=e).filename&&r.filename.length+1||0),8),o=i.length;return function(a,l){var c=l.filename;if(a[0]=31,a[1]=139,a[2]=8,a[8]=l.level<2?4:l.level==9?2:0,a[9]=3,l.mtime!=0&&Zs(a,4,Math.floor(new Date(l.mtime||Date.now())/1e3)),c){a[3]=8;for(var u=0;u<=c.length;++u)a[u+10]=c.charCodeAt(u)}}(i,e),Zs(i,o-8,t.d()),Zs(i,o-4,s),i}var od=function(n){var e,t,s,r,i="";for(e=t=0,s=(n=(n+"").replace(/\r\n/g,` -`).replace(/\r/g,` -`)).length,r=0;r127&&o<2048?String.fromCharCode(o>>6|192,63&o|128):String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128),ke(a)||(t>e&&(i+=n.substring(e,t)),i+=a,e=t=r+1)}return t>e&&(i+=n.substring(e,n.length)),i},ad=!!ur||!!cr,To="text/plain",os=function(n,e,t){var s;t===void 0&&(t=!0);var[r,i]=n.split("?"),o=S({},e),a=(s=i==null?void 0:i.split("&").map(c=>{var u,[d,p]=c.split("="),f=t&&(u=o[d])!==null&&u!==void 0?u:p;return delete o[d],d+"="+f}))!==null&&s!==void 0?s:[],l=Su(o);return l&&a.push(l),r+"?"+a.join("&")},cn=(n,e)=>JSON.stringify(n,(t,s)=>typeof s=="bigint"?s.toString():s,e),Xs=n=>{var{data:e,compression:t}=n;if(e){if(t===We.GZipJS){var s=id(function(l,c){var u=l.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(l);for(var d=new Ce(l.length+(l.length>>>1)),p=0,f=function(x){d[p++]=x},m=0;md.length){var v=new Ce(p+8+(u-m<<1));v.set(d),d=v}var _=l.charCodeAt(m);_<128||c?f(_):_<2048?(f(192|_>>>6),f(128|63&_)):_>55295&&_<57344?(f(240|(_=65536+(1047552&_)|1023&l.charCodeAt(++m))>>>18),f(128|_>>>12&63),f(128|_>>>6&63),f(128|63&_)):(f(224|_>>>12),f(128|_>>>6&63),f(128|63&_))}return yl(d,0,p)}(cn(e)),{mtime:0}),r=new Blob([s],{type:To});return{contentType:To,body:r,estimatedSize:r.size}}if(t===We.Base64){var i=function(l){var c,u,d,p,f,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",v=0,_=0,x="",I=[];if(!l)return l;l=od(l);do c=(f=l.charCodeAt(v++)<<16|l.charCodeAt(v++)<<8|l.charCodeAt(v++))>>18&63,u=f>>12&63,d=f>>6&63,p=63&f,I[_++]=m.charAt(c)+m.charAt(u)+m.charAt(d)+m.charAt(p);while(v"data="+encodeURIComponent(typeof l=="string"?l:cn(l)))(i);return{contentType:"application/x-www-form-urlencoded",body:o,estimatedSize:new Blob([o]).size}}var a=cn(e);return{contentType:"application/json",body:a,estimatedSize:new Blob([a]).size}}},jn=[];cr&&jn.push({transport:"fetch",method:n=>{var e,t,{contentType:s,body:r,estimatedSize:i}=(e=Xs(n))!==null&&e!==void 0?e:{},o=new Headers;U(n.headers,function(u,d){o.append(d,u)}),s&&o.append("Content-Type",s);var a=n.url,l=null;if(Gi){var c=new Gi;l={signal:c.signal,timeout:setTimeout(()=>c.abort(),n.timeout)}}cr(a,S({method:(n==null?void 0:n.method)||"GET",headers:o,keepalive:n.method==="POST"&&(i||0)<52428.8,body:r,signal:(t=l)==null?void 0:t.signal},n.fetchOptions)).then(u=>u.text().then(d=>{var p={statusCode:u.status,text:d};if(u.status===200)try{p.json=JSON.parse(d)}catch(f){E.error(f)}n.callback==null||n.callback(p)})).catch(u=>{E.error(u),n.callback==null||n.callback({statusCode:0,error:u})}).finally(()=>l?clearTimeout(l.timeout):null)}}),ur&&jn.push({transport:"XHR",method:n=>{var e,t=new ur;t.open(n.method||"GET",n.url,!0);var{contentType:s,body:r}=(e=Xs(n))!==null&&e!==void 0?e:{};U(n.headers,function(i,o){t.setRequestHeader(o,i)}),s&&t.setRequestHeader("Content-Type",s),n.timeout&&(t.timeout=n.timeout),n.disableXHRCredentials||(t.withCredentials=!0),t.onreadystatechange=()=>{if(t.readyState===4){var i={statusCode:t.status,text:t.responseText};if(t.status===200)try{i.json=JSON.parse(t.responseText)}catch{}n.callback==null||n.callback(i)}},t.send(r)}}),he!=null&&he.sendBeacon&&jn.push({transport:"sendBeacon",method:n=>{var e=os(n.url,{beacon:"1"});try{var t,{contentType:s,body:r}=(t=Xs(n))!==null&&t!==void 0?t:{},i=typeof r=="string"?new Blob([r],{type:s}):r;he.sendBeacon(e,i)}catch{}}});var as=function(n,e){if(!function(t){try{new RegExp(t)}catch{return!1}return!0}(e))return!1;try{return new RegExp(e).test(n)}catch{return!1}};function Ro(n,e,t){return cn({distinct_id:n,userPropertiesToSet:e,userPropertiesToSetOnce:t})}var wl={exact:(n,e)=>e.some(t=>n.some(s=>t===s)),is_not:(n,e)=>e.every(t=>n.every(s=>t!==s)),regex:(n,e)=>e.some(t=>n.some(s=>as(t,s))),not_regex:(n,e)=>e.every(t=>n.every(s=>!as(t,s))),icontains:(n,e)=>e.map(Ln).some(t=>n.map(Ln).some(s=>t.includes(s))),not_icontains:(n,e)=>e.map(Ln).every(t=>n.map(Ln).every(s=>!t.includes(s))),gt:(n,e)=>e.some(t=>{var s=parseFloat(t);return!isNaN(s)&&n.some(r=>s>parseFloat(r))}),lt:(n,e)=>e.some(t=>{var s=parseFloat(t);return!isNaN(s)&&n.some(r=>sn.toLowerCase();function bl(n,e){return!n||Object.entries(n).every(t=>{var[s,r]=t,i=e==null?void 0:e[s];if(b(i)||ke(i))return!1;var o=[String(i)],a=wl[r.operator];return!!a&&a(r.values,o)})}var Qs=z("[Error tracking]");class ld{constructor(e){var t,s;this.Zt=[],this.ti=new Wc([new Xc,new au,new eu,new Qc,new iu,new ru,new nu,new ou],Zc()),this._instance=e,this.Zt=(t=(s=this._instance.persistence)==null?void 0:s.get_property(yr))!==null&&t!==void 0?t:[]}onRemoteConfig(e){var t,s,r;if("errorTracking"in e){var i=(t=(s=e.errorTracking)==null?void 0:s.suppressionRules)!==null&&t!==void 0?t:[],o=(r=e.errorTracking)==null?void 0:r.captureExtensionExceptions;this.Zt=i,this._instance.persistence&&this._instance.persistence.register({[yr]:this.Zt,[ro]:o})}}get ii(){var e,t=!!this._instance.get_property(ro),s=this._instance.config.error_tracking.captureExtensionExceptions;return(e=s??t)!==null&&e!==void 0&&e}buildProperties(e,t){return this.ti.buildFromUnknown(e,{syntheticException:t==null?void 0:t.syntheticException,mechanism:{handled:t==null?void 0:t.handled}})}sendExceptionEvent(e){var t=e.$exception_list;if(this.ei(t)){if(this.ri(t))return void Qs.info("Skipping exception capture because a suppression rule matched");if(!this.ii&&this.si(t))return void Qs.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.ni(t))return void Qs.info("Skipping exception capture because it was thrown by the PostHog SDK")}return this._instance.capture("$exception",e,{_noTruncate:!0,_batchKey:"exceptionEvent",oi:!0})}ri(e){if(e.length===0)return!1;var t=e.reduce((s,r)=>{var{type:i,value:o}=r;return K(i)&&i.length>0&&s.$exception_types.push(i),K(o)&&o.length>0&&s.$exception_values.push(o),s},{$exception_types:[],$exception_values:[]});return this.Zt.some(s=>{var r=s.values.map(i=>{var o,a=wl[i.operator],l=N(i.value)?i.value:[i.value],c=(o=t[i.key])!==null&&o!==void 0?o:[];return l.length>0&&a(l,c)});return s.type==="OR"?r.some(Boolean):r.every(Boolean)})}si(e){return e.flatMap(t=>{var s,r;return(s=(r=t.stacktrace)==null?void 0:r.frames)!==null&&s!==void 0?s:[]}).some(t=>t.filename&&t.filename.startsWith("chrome-extension://"))}ni(e){if(e.length>0){var t,s,r,i,o=(t=(s=e[0].stacktrace)==null?void 0:s.frames)!==null&&t!==void 0?t:[],a=o[o.length-1];return(r=a==null||(i=a.filename)==null?void 0:i.includes("posthog.com/static"))!==null&&r!==void 0&&r}return!1}ei(e){return!O(e)&&N(e)}}var fe=z("[FeatureFlags]"),Qt=z("[FeatureFlags]",{debugEnabled:!0}),cd="errors_while_computing_flags",ud="flag_missing",dd="quota_limited",pd="timeout",fd="connection_error",hd="unknown_error",gd=n=>"api_error_"+n,er="$active_feature_flags",xt="$override_feature_flags",Ao="$feature_flag_payloads",en="$override_feature_flag_payloads",Po="$feature_flag_request_id",Fo="$feature_flag_evaluated_at",$o=n=>{var e={};for(var[t,s]of Bn(n||{}))s&&(e[t]=s);return e},md=n=>{var e=n.flags;return e?(n.featureFlags=Object.fromEntries(Object.keys(e).map(t=>{var s;return[t,(s=e[t].variant)!==null&&s!==void 0?s:e[t].enabled]})),n.featureFlagPayloads=Object.fromEntries(Object.keys(e).filter(t=>e[t].enabled).filter(t=>{var s;return(s=e[t].metadata)==null?void 0:s.payload}).map(t=>{var s;return[t,(s=e[t].metadata)==null?void 0:s.payload]}))):fe.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),n},vd=function(n){return n.FeatureFlags="feature_flags",n.Recordings="recordings",n}({});class _d{constructor(e){this.ai=!1,this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.ci=!1,this._instance=e,this.featureFlagEventHandlers=[]}fi(){var e,t=(e=this._instance.config.evaluation_contexts)!==null&&e!==void 0?e:this._instance.config.evaluation_environments;return!this._instance.config.evaluation_environments||this._instance.config.evaluation_contexts||this.ci||(fe.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.ci=!0),t!=null&&t.length?t.filter(s=>{var r=s&&typeof s=="string"&&s.trim().length>0;return r||fe.error("Invalid evaluation context found:",s,"Expected non-empty string"),r}):[]}pi(){return this.fi().length>0}get hasLoadedFlags(){return this.li}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var e=this._instance.get_property(wr),t=this._instance.get_property(xt),s=this._instance.get_property(en);if(!s&&!t)return e||{};var r=G({},e||{}),i=[...new Set([...Object.keys(s||{}),...Object.keys(t||{})])];for(var o of i){var a,l,c=r[o],u=t==null?void 0:t[o],d=b(u)?(a=c==null?void 0:c.enabled)!==null&&a!==void 0&&a:!!u,p=b(u)?c.variant:typeof u=="string"?u:void 0,f=s==null?void 0:s[o],m=S({},c,{enabled:d,variant:d?p??(c==null?void 0:c.variant):void 0});d!==(c==null?void 0:c.enabled)&&(m.original_enabled=c==null?void 0:c.enabled),p!==(c==null?void 0:c.variant)&&(m.original_variant=c==null?void 0:c.variant),f&&(m.metadata=S({},c==null?void 0:c.metadata,{payload:f,original_payload:c==null||(l=c.metadata)==null?void 0:l.payload})),r[o]=m}return this.ai||(fe.warn(" Overriding feature flag details!",{flagDetails:e,overriddenPayloads:s,finalDetails:r}),this.ai=!0),r}getFlagVariants(){var e=this._instance.get_property($t),t=this._instance.get_property(xt);if(!t)return e||{};for(var s=G({},e),r=Object.keys(t),i=0;i{this.bi()},5))}yi(){clearTimeout(this.gi),this.gi=void 0}ensureFlagsLoaded(){this.li||this.ui||this.gi||this.reloadFeatureFlags()}setAnonymousDistinctId(e){this.$anon_distinct_id=e}setReloadingPaused(e){this.hi=e}bi(e){var t;if(this.yi(),!this._instance.M())if(this.ui)this.di=!0;else{var s=this._instance.config.token,r=this._instance.get_property("$device_id"),i={token:s,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:S({},((t=this._instance.persistence)==null?void 0:t.get_initial_props())||{},this._instance.get_property(ln)||{}),group_properties:this._instance.get_property(gt),timezone:hl()};ke(r)||b(r)||(i.$device_id=r),(e!=null&&e.disableFlags||this._instance.config.advanced_disable_feature_flags)&&(i.disable_flags=!0),this.pi()&&(i.evaluation_contexts=this.fi());var o=this._instance.config.advanced_only_evaluate_survey_feature_flags?"&only_evaluate_survey_feature_flags=true":"",a=this._instance.requestRouter.endpointFor("flags","/flags/?v=2"+o);this.ui=!0,this._instance._send_request({method:"POST",url:a,data:i,compression:this._instance.config.disable_compression?void 0:We.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:l=>{var c,u,d,p=!0;if(l.statusCode===200&&(this.di||(this.$anon_distinct_id=void 0),p=!1),this.ui=!1,!i.disable_flags||this.di){this.vi=!p;var f=[];l.error?l.error instanceof Error?f.push(l.error.name==="AbortError"?pd:fd):f.push(hd):l.statusCode!==200&&f.push(gd(l.statusCode)),(c=l.json)!=null&&c.errorsWhileComputingFlags&&f.push(cd);var m=!((u=l.json)==null||(u=u.quotaLimited)==null||!u.includes(vd.FeatureFlags));if(m&&f.push(dd),(d=this._instance.persistence)==null||d.register({[Er]:f}),m)fe.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more.");else{var v;i.disable_flags||this.receivedFeatureFlags((v=l.json)!==null&&v!==void 0?v:{},p),this.di&&(this.di=!1,this.bi())}}}})}}getFeatureFlag(e,t){var s;if(t===void 0&&(t={}),!t.fresh||this.vi){if(this.li||this.getFlags()&&this.getFlags().length>0){var r=this.getFeatureFlagResult(e,t);return(s=r==null?void 0:r.variant)!==null&&s!==void 0?s:r==null?void 0:r.enabled}fe.warn('getFeatureFlag for key "'+e+`" failed. Feature flags didn't load in time.`)}}getFeatureFlagDetails(e){return this.getFlagsWithDetails()[e]}getFeatureFlagPayload(e){var t=this.getFeatureFlagResult(e,{send_event:!1});return t==null?void 0:t.payload}getFeatureFlagResult(e,t){if(t===void 0&&(t={}),!t.fresh||this.vi)if(this.li||this.getFlags()&&this.getFlags().length>0){var s=this.getFlagVariants(),r=e in s,i=s[e],o=this.getFlagPayloads()[e],a=String(i),l=this._instance.get_property(Po)||void 0,c=this._instance.get_property(Fo)||void 0,u=this._instance.get_property(Zn)||{};if((t.send_event||!("send_event"in t))&&(!(e in u)||!u[e].includes(a))){var d,p,f,m,v,_,x,I,T,C;N(u[e])?u[e].push(a):u[e]=[a],(d=this._instance.persistence)==null||d.register({[Zn]:u});var y=this.getFeatureFlagDetails(e),P=[...(p=this._instance.get_property(Er))!==null&&p!==void 0?p:[]];b(i)&&P.push(ud);var A={$feature_flag:e,$feature_flag_response:i,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:c,$feature_flag_bootstrapped_response:((f=this._instance.config.bootstrap)==null||(f=f.featureFlags)==null?void 0:f[e])||null,$feature_flag_bootstrapped_payload:((m=this._instance.config.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[e])||null,$used_bootstrap_value:!this.vi};b(y==null||(v=y.metadata)==null?void 0:v.version)||(A.$feature_flag_version=y.metadata.version);var R,ne=(_=y==null||(x=y.reason)==null?void 0:x.description)!==null&&_!==void 0?_:y==null||(I=y.reason)==null?void 0:I.code;ne&&(A.$feature_flag_reason=ne),y!=null&&(T=y.metadata)!=null&&T.id&&(A.$feature_flag_id=y.metadata.id),b(y==null?void 0:y.original_variant)&&b(y==null?void 0:y.original_enabled)||(A.$feature_flag_original_response=b(y.original_variant)?y.original_enabled:y.original_variant),y!=null&&(C=y.metadata)!=null&&C.original_payload&&(A.$feature_flag_original_payload=y==null||(R=y.metadata)==null?void 0:R.original_payload),P.length&&(A.$feature_flag_error=P.join(",")),this._instance.capture("$feature_flag_called",A)}if(r){var J=o;if(!b(o))try{J=JSON.parse(o)}catch{}return{key:e,enabled:!!i,variant:typeof i=="string"?i:void 0,payload:J}}}else fe.warn('getFeatureFlagResult for key "'+e+`" failed. Feature flags didn't load in time.`)}getRemoteConfigPayload(e,t){var s=this._instance.config.token,r={distinct_id:this._instance.get_distinct_id(),token:s};this.pi()&&(r.evaluation_contexts=this.fi()),this._instance._send_request({method:"POST",url:this._instance.requestRouter.endpointFor("flags","/flags/?v=2"),data:r,compression:this._instance.config.disable_compression?void 0:We.Base64,timeout:this._instance.config.feature_flag_request_timeout_ms,callback:i=>{var o,a=(o=i.json)==null?void 0:o.featureFlagPayloads;t((a==null?void 0:a[e])||void 0)}})}isFeatureEnabled(e,t){if(t===void 0&&(t={}),!t.fresh||this.vi){if(this.li||this.getFlags()&&this.getFlags().length>0){var s=this.getFeatureFlag(e,t);return b(s)?void 0:!!s}fe.warn('isFeatureEnabled for key "'+e+`" failed. Feature flags didn't load in time.`)}}addFeatureFlagsHandler(e){this.featureFlagEventHandlers.push(e)}removeFeatureFlagsHandler(e){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter(t=>t!==e)}receivedFeatureFlags(e,t){if(this._instance.persistence){this.li=!0;var s=this.getFlagVariants(),r=this.getFlagPayloads(),i=this.getFlagsWithDetails();(function(o,a,l,c,u){l===void 0&&(l={}),c===void 0&&(c={}),u===void 0&&(u={});var d=md(o),p=d.flags,f=d.featureFlags,m=d.featureFlagPayloads;if(f){var v=o.requestId,_=o.evaluatedAt;if(N(f)){fe.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var x={};if(f)for(var I=0;I{var R;return!((R=p[A])!=null&&R.failed)}));T=S({},l,Object.fromEntries(Object.entries(T).filter(A=>{var[R]=A;return P.has(R)}))),C=S({},c,Object.fromEntries(Object.entries(C||{}).filter(A=>{var[R]=A;return P.has(R)}))),y=S({},u,Object.fromEntries(Object.entries(y||{}).filter(A=>{var[R]=A;return P.has(R)})))}else T=S({},l,T),C=S({},c,C),y=S({},u,y);a&&a.register(S({[er]:Object.keys($o(T)),[$t]:T||{},[Ao]:C||{},[wr]:y||{}},v?{[Po]:v}:{},_?{[Fo]:_}:{}))}}})(e,this._instance.persistence,s,r,i),this.wi(t)}}override(e,t){t===void 0&&(t=!1),fe.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:e,suppressWarning:t})}overrideFeatureFlags(e){if(!this._instance.__loaded||!this._instance.persistence)return fe.uninitializedWarning("posthog.featureFlags.overrideFeatureFlags");if(e===!1)return this._instance.persistence.unregister(xt),this._instance.persistence.unregister(en),this.wi(),Qt.info("All overrides cleared");if(e&&typeof e=="object"&&("flags"in e||"payloads"in e)){var t,s=e;if(this.ai=!!((t=s.suppressWarning)!==null&&t!==void 0&&t),"flags"in s){if(s.flags===!1)this._instance.persistence.unregister(xt),Qt.info("Flag overrides cleared");else if(s.flags){if(N(s.flags)){for(var r={},i=0;ithis.removeFeatureFlagsHandler(e)}updateEarlyAccessFeatureEnrollment(e,t,s){var r,i=(this._instance.get_property(an)||[]).find(c=>c.flagKey===e),o={["$feature_enrollment/"+e]:t},a={$feature_flag:e,$feature_enrollment:t,$set:o};i&&(a.$early_access_feature_name=i.name),s&&(a.$feature_enrollment_stage=s),this._instance.capture("$feature_enrollment_update",a),this.setPersonPropertiesForFlags(o,!1);var l=S({},this.getFlagVariants(),{[e]:t});(r=this._instance.persistence)==null||r.register({[er]:Object.keys($o(l)),[$t]:l}),this.wi()}getEarlyAccessFeatures(e,t,s){t===void 0&&(t=!1);var r=this._instance.get_property(an),i=s?"&"+s.map(o=>"stage="+o).join("&"):"";if(r&&!t)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/early_access_features/?token="+this._instance.config.token+i),method:"GET",callback:o=>{var a,l;if(o.json){var c=o.json.earlyAccessFeatures;return(a=this._instance.persistence)==null||a.unregister(an),(l=this._instance.persistence)==null||l.register({[an]:c}),e(c)}}})}xi(){var e=this.getFlags(),t=this.getFlagVariants();return{flags:e.filter(s=>t[s]),flagVariants:Object.keys(t).filter(s=>t[s]).reduce((s,r)=>(s[r]=t[r],s),{})}}wi(e){var{flags:t,flagVariants:s}=this.xi();this.featureFlagEventHandlers.forEach(r=>r(t,s,{errorsLoading:e}))}setPersonPropertiesForFlags(e,t){t===void 0&&(t=!0);var s=this._instance.get_property(ln)||{};this._instance.register({[ln]:S({},s,e)}),t&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(){this._instance.unregister(ln)}setGroupPropertiesForFlags(e,t){t===void 0&&(t=!0);var s=this._instance.get_property(gt)||{};Object.keys(s).length!==0&&Object.keys(s).forEach(r=>{s[r]=S({},s[r],e[r]),delete e[r]}),this._instance.register({[gt]:S({},s,e)}),t&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(e){if(e){var t=this._instance.get_property(gt)||{};this._instance.register({[gt]:S({},t,{[e]:{}})})}else this._instance.unregister(gt)}reset(){this.li=!1,this.ui=!1,this.hi=!1,this.di=!1,this.vi=!1,this.$anon_distinct_id=void 0,this.yi(),this.ai=!1}}var yd=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"];class tr{constructor(e,t){this.R=e,this.props={},this.$i=!1,this.Ei=(s=>{var r="";return s.token&&(r=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+r+"_posthog"})(e),this.Y=this.Si(e),this.load(),e.debug&&E.info("Persistence loaded",e.persistence,S({},this.props)),this.update_config(e,e,t),this.save()}isDisabled(){return!!this.ki}Si(e){yd.indexOf(e.persistence.toLowerCase())===-1&&(E.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var t=function(r){r===void 0&&(r=[]);var i=[...$u,...r];return S({},W,{W:function(o){try{var a={};try{a=Fe.W(o)||{}}catch{}var l=G(a,JSON.parse(W.q(o)||"{}"));return W.G(o,l),l}catch{}return null},G:function(o,a,l,c,u,d){try{W.G(o,a,void 0,void 0,d);var p={};i.forEach(f=>{a[f]&&(p[f]=a[f])}),Object.keys(p).length&&Fe.G(o,p,l,c,u,d)}catch(f){W.B(f)}},V:function(o,a){try{h==null||h.localStorage.removeItem(o),Fe.V(o,a)}catch(l){W.B(l)}}})}(e.cookie_persisted_properties||[]),s=e.persistence.toLowerCase();return s==="localstorage"&&W.H()?W:s==="localstorage+cookie"&&t.H()?t:s==="sessionstorage"&&Q.H()?Q:s==="memory"?Mu:s==="cookie"?Fe:t.H()?t:Fe}properties(){var e={};return U(this.props,function(t,s){if(s===$t&&Z(t))for(var r=Object.keys(t),i=0;i{this.props.hasOwnProperty(o)&&this.props[o]!==t||(this.props[o]=i,r=!0)}),r)return this.save(),!0}return!1}register(e,t){if(Z(e)){this.Pi=b(t)?this.Ci:t;var s=!1;if(U(e,(r,i)=>{e.hasOwnProperty(i)&&this.props[i]!==r&&(this.props[i]=r,s=!0)}),s)return this.save(),!0}return!1}unregister(e){e in this.props&&(delete this.props[e],this.save())}update_campaign_params(){if(!this.$i){var e=ll(this.R.custom_campaign_params,this.R.mask_personal_data_properties,this.R.custom_personal_data_properties);Ft(si(e))||this.register(e),this.$i=!0}}update_search_keyword(){var e;this.register((e=w==null?void 0:w.referrer)?ul(e):{})}update_referrer_info(){var e;this.register_once({$referrer:dl(),$referring_domain:w!=null&&w.referrer&&((e=ts(w.referrer))==null?void 0:e.host)||"$direct"},void 0)}set_initial_person_info(){this.props[Cr]||this.props[xr]||this.register_once({[Xn]:pl(this.R.mask_personal_data_properties,this.R.custom_personal_data_properties)},void 0)}get_initial_props(){var e={};U([xr,Cr],o=>{var a=this.props[o];a&&U(a,function(l,c){e["$initial_"+dr(c)]=l})});var t,s,r=this.props[Xn];if(r){var i=(t=fl(r),s={},U(t,function(o,a){s["$initial_"+dr(a)]=o}),s);G(e,i)}return e}safe_merge(e){return U(this.props,function(t,s){s in e||(e[s]=t)}),e}update_config(e,t,s){if(this.Ci=this.Pi=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!s),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie),e.persistence!==t.persistence||!((o,a)=>{if(o.length!==a.length)return!1;var l=[...o].sort(),c=[...a].sort();return l.every((u,d)=>u===c[d])})(e.cookie_persisted_properties||[],t.cookie_persisted_properties||[])){var r=this.Si(e),i=this.props;this.clear(),this.Y=r,this.props=i,this.save()}}set_disabled(e){this.ki=e,this.ki?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ti&&(this.Ti=e,this.remove(),this.save())}set_secure(e){e!==this.Ii&&(this.Ii=e,this.remove(),this.save())}set_event_timer(e,t){var s=this.props[on]||{};s[e]=t,this.props[on]=s,this.save()}remove_event_timer(e){var t=(this.props[on]||{})[e];return b(t)||(delete this.props[on][e],this.save()),t}get_property(e){return this.props[e]}set_property(e,t){this.props[e]=t,this.save()}}var Mo=z("[Product Tours]"),nr="ph_product_tours";class wd{constructor(e){this.Ri=null,this.Fi=null,this._instance=e}onRemoteConfig(e){"productTours"in e&&(this._instance.persistence&&this._instance.persistence.register({[oo]:!!e.productTours}),this.loadIfEnabled())}loadIfEnabled(){var e,t;this.Ri||(e=this._instance).config.disable_product_tours||(t=e.persistence)==null||!t.get_property(oo)||this.it(()=>this.Oi())}it(e){var t,s;(t=k.__PosthogExtensions__)!=null&&t.generateProductTours?e():(s=k.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,"product-tours",r=>{r?Mo.error("Could not load product tours script",r):e()})}Oi(){var e;!this.Ri&&(e=k.__PosthogExtensions__)!=null&&e.generateProductTours&&(this.Ri=k.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(e,t){if(t===void 0&&(t=!1),!N(this.Fi)||t){var s=this._instance.persistence;if(s){var r=s.props[nr];if(N(r)&&!t)return this.Fi=r,void e(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",callback:i=>{var o=i.statusCode;if(o!==200||!i.json){var a="Product Tours API could not be loaded, status: "+o;return Mo.error(a),void e([],{isLoaded:!1,error:a})}var l=N(i.json.product_tours)?i.json.product_tours:[];this.Fi=l,s&&s.register({[nr]:l}),e(l,{isLoaded:!0})}})}else e(this.Fi,{isLoaded:!0})}getActiveProductTours(e){O(this.Ri)?e([],{isLoaded:!1,error:"Product tours not loaded"}):this.Ri.getActiveProductTours(e)}showProductTour(e){var t;(t=this.Ri)==null||t.showTourById(e)}previewTour(e){this.Ri?this.Ri.previewTour(e):this.it(()=>{var t;this.Oi(),(t=this.Ri)==null||t.previewTour(e)})}dismissProductTour(){var e;(e=this.Ri)==null||e.dismissTour("user_clicked_skip")}nextStep(){var e;(e=this.Ri)==null||e.nextStep()}previousStep(){var e;(e=this.Ri)==null||e.previousStep()}clearCache(){var e;this.Fi=null,(e=this._instance.persistence)==null||e.unregister(nr)}resetTour(e){var t;(t=this.Ri)==null||t.resetTour(e)}resetAllTours(){var e;(e=this.Ri)==null||e.resetAllTours()}cancelPendingTour(e){var t;(t=this.Ri)==null||t.cancelPendingTour(e)}}var tn=function(n){return n.Activation="events",n.Cancellation="cancelEvents",n}({});(function(n){return n.Button="button",n.Tab="tab",n.Selector="selector",n})({});(function(n){return n.TopLeft="top_left",n.TopRight="top_right",n.TopCenter="top_center",n.MiddleLeft="middle_left",n.MiddleRight="middle_right",n.MiddleCenter="middle_center",n.Left="left",n.Center="center",n.Right="right",n.NextToTrigger="next_to_trigger",n})({});(function(n){return n.Top="top",n.Left="left",n.Right="right",n.Bottom="bottom",n})({});var sr=function(n){return n.Popover="popover",n.API="api",n.Widget="widget",n.ExternalSurvey="external_survey",n}({});(function(n){return n.Open="open",n.MultipleChoice="multiple_choice",n.SingleChoice="single_choice",n.Rating="rating",n.Link="link",n})({});(function(n){return n.NextQuestion="next_question",n.End="end",n.ResponseBased="response_based",n.SpecificQuestion="specific_question",n})({});(function(n){return n.Once="once",n.Recurring="recurring",n.Always="always",n})({});var un=function(n){return n.SHOWN="survey shown",n.DISMISSED="survey dismissed",n.SENT="survey sent",n.ABANDONED="survey abandoned",n}({}),rr=function(n){return n.SURVEY_ID="$survey_id",n.SURVEY_NAME="$survey_name",n.SURVEY_RESPONSE="$survey_response",n.SURVEY_ITERATION="$survey_iteration",n.SURVEY_ITERATION_START_DATE="$survey_iteration_start_date",n.SURVEY_PARTIALLY_COMPLETED="$survey_partially_completed",n.SURVEY_SUBMISSION_ID="$survey_submission_id",n.SURVEY_QUESTIONS="$survey_questions",n.SURVEY_COMPLETED="$survey_completed",n.PRODUCT_TOUR_ID="$product_tour_id",n.SURVEY_LAST_SEEN_DATE="$survey_last_seen_date",n}({}),Pr=function(n){return n.Popover="popover",n.Inline="inline",n}({}),j=z("[Surveys]"),El="seenSurvey_",bd=(n,e)=>{var t="$survey_"+e+"/"+n.id;return n.current_iteration&&n.current_iteration>0&&(t="$survey_"+e+"/"+n.id+"/"+n.current_iteration),t},Oo=n=>((e,t)=>{var s=""+e+t.id;return t.current_iteration&&t.current_iteration>0&&(s=""+e+t.id+"_"+t.current_iteration),s})(El,n),Ed=[sr.Popover,sr.Widget,sr.API],Sd={ignoreConditions:!1,ignoreDelay:!1,displayType:Pr.Popover};class ci{constructor(){this.Mi={},this.Mi={}}on(e,t){return this.Mi[e]||(this.Mi[e]=[]),this.Mi[e].push(t),()=>{this.Mi[e]=this.Mi[e].filter(s=>s!==t)}}emit(e,t){for(var s of this.Mi[e]||[])s(t);for(var r of this.Mi["*"]||[])r(e,t)}}function kt(n,e,t){if(O(n))return!1;switch(t){case"exact":return n===e;case"contains":var s=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(s,"i").test(n);case"regex":try{return new RegExp(e).test(n)}catch{return!1}default:return!1}}class Id{constructor(e){this.Ai=new ci,this.ji=(t,s)=>this.Di(t,s)&&this.Li(t,s)&&this.Ni(t,s)&&this.Ui(t,s),this.Di=(t,s)=>s==null||!s.event||(t==null?void 0:t.event)===(s==null?void 0:s.event),this._instance=e,this.zi=new Set,this.Hi=new Set}init(){var e;if(!b((e=this._instance)==null?void 0:e._addCaptureHook)){var t;(t=this._instance)==null||t._addCaptureHook((s,r)=>{this.on(s,r)})}}register(e){var t,s;if(!b((t=this._instance)==null?void 0:t._addCaptureHook)&&(e.forEach(o=>{var a,l;(a=this.Hi)==null||a.add(o),(l=o.steps)==null||l.forEach(c=>{var u;(u=this.zi)==null||u.add((c==null?void 0:c.event)||"")})}),(s=this._instance)!=null&&s.autocapture)){var r,i=new Set;e.forEach(o=>{var a;(a=o.steps)==null||a.forEach(l=>{l!=null&&l.selector&&i.add(l==null?void 0:l.selector)})}),(r=this._instance)==null||r.autocapture.setElementSelectors(i)}}on(e,t){var s;t!=null&&e.length!=0&&(this.zi.has(e)||this.zi.has(t==null?void 0:t.event))&&this.Hi&&((s=this.Hi)==null?void 0:s.size)>0&&this.Hi.forEach(r=>{this.Bi(t,r)&&this.Ai.emit("actionCaptured",r.name)})}qi(e){this.onAction("actionCaptured",t=>e(t))}Bi(e,t){if((t==null?void 0:t.steps)==null)return!1;for(var s of t.steps)if(this.ji(e,s))return!0;return!1}onAction(e,t){return this.Ai.on(e,t)}Li(e,t){if(t!=null&&t.url){var s,r=e==null||(s=e.properties)==null?void 0:s.$current_url;if(!r||typeof r!="string"||!kt(r,t.url,t.url_matching||"contains"))return!1}return!0}Ni(e,t){return!!this.Wi(e,t)&&!!this.Gi(e,t)&&!!this.Vi(e,t)}Wi(e,t){var s;if(t==null||!t.href)return!0;var r=this.Ji(e);if(r.length>0)return r.some(a=>kt(a.href,t.href,t.href_matching||"exact"));var i,o=(e==null||(s=e.properties)==null?void 0:s.$elements_chain)||"";return!!o&&kt((i=o.match(/(?::|")href="(.*?)"/))?i[1]:"",t.href,t.href_matching||"exact")}Gi(e,t){var s;if(t==null||!t.text)return!0;var r=this.Ji(e);if(r.length>0)return r.some(c=>kt(c.text,t.text,t.text_matching||"exact")||kt(c.$el_text,t.text,t.text_matching||"exact"));var i,o,a,l=(e==null||(s=e.properties)==null?void 0:s.$elements_chain)||"";return!!l&&(i=function(c){for(var u,d=[],p=/(?::|")text="(.*?)"/g;!O(u=p.exec(c));)d.includes(u[1])||d.push(u[1]);return d}(l),o=t.text,a=t.text_matching||"exact",i.some(c=>kt(c,o,a)))}Vi(e,t){var s,r;if(t==null||!t.selector)return!0;var i=e==null||(s=e.properties)==null?void 0:s.$element_selectors;if(i!=null&&i.includes(t.selector))return!0;var o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";if(t.selector_regex&&o)try{return new RegExp(t.selector_regex).test(o)}catch{return!1}return!1}Ji(e){var t;return(e==null||(t=e.properties)==null?void 0:t.$elements)==null?[]:e==null?void 0:e.properties.$elements}Ui(e,t){return t==null||!t.properties||t.properties.length===0||bl(t.properties.reduce((s,r)=>{var i=N(r.value)?r.value.map(String):r.value!=null?[String(r.value)]:[];return s[r.key]={values:i,operator:r.operator||"exact"},s},{}),e==null?void 0:e.properties)}}class Cd{constructor(e){this._instance=e,this.Ki=new Map,this.Yi=new Map,this.Xi=new Map}Qi(e,t){return!!e&&bl(e.propertyFilters,t==null?void 0:t.properties)}Zi(e,t){var s=new Map;return e.forEach(r=>{var i;(i=r.conditions)==null||(i=i[t])==null||(i=i.values)==null||i.forEach(o=>{if(o!=null&&o.name){var a=s.get(o.name)||[];a.push(r.id),s.set(o.name,a)}})}),s}te(e,t,s){var r=(s===tn.Activation?this.Ki:this.Yi).get(e),i=[];return this.ie(o=>{i=o.filter(a=>r==null?void 0:r.includes(a.id))}),i.filter(o=>{var a,l=(a=o.conditions)==null||(a=a[s])==null||(a=a.values)==null?void 0:a.find(c=>c.name===e);return this.Qi(l,t)})}register(e){var t;b((t=this._instance)==null?void 0:t._addCaptureHook)||(this.ee(e),this.re(e))}re(e){var t=e.filter(s=>{var r,i;return((r=s.conditions)==null?void 0:r.actions)&&((i=s.conditions)==null||(i=i.actions)==null||(i=i.values)==null?void 0:i.length)>0});t.length!==0&&(this.se==null&&(this.se=new Id(this._instance),this.se.init(),this.se.qi(s=>{this.onAction(s)})),t.forEach(s=>{var r,i,o,a,l;s.conditions&&(r=s.conditions)!=null&&r.actions&&(i=s.conditions)!=null&&(i=i.actions)!=null&&i.values&&((o=s.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.se)==null||a.register(s.conditions.actions.values),(l=s.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach(c=>{if(c&&c.name){var u=this.Xi.get(c.name);u&&u.push(s.id),this.Xi.set(c.name,u||[s.id])}}))}))}ee(e){var t,s=e.filter(i=>{var o,a;return((o=i.conditions)==null?void 0:o.events)&&((a=i.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0}),r=e.filter(i=>{var o,a;return((o=i.conditions)==null?void 0:o.cancelEvents)&&((a=i.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0});(s.length!==0||r.length!==0)&&((t=this._instance)==null||t._addCaptureHook((i,o)=>{this.onEvent(i,o)}),this.Ki=this.Zi(e,tn.Activation),this.Yi=this.Zi(e,tn.Cancellation))}onEvent(e,t){var s,r=this.ne(),i=this.oe(),o=this.ae(),a=((s=this._instance)==null||(s=s.persistence)==null?void 0:s.props[i])||[];if(o===e&&t&&a.length>0){var l,c;r.info("event matched, removing item from activated items",{event:e,eventPayload:t,existingActivatedItems:a});var u=(t==null||(l=t.properties)==null?void 0:l.$survey_id)||(t==null||(c=t.properties)==null?void 0:c.$product_tour_id);if(u){var d=a.indexOf(u);d>=0&&(a.splice(d,1),this.le(a))}}else{if(this.Yi.has(e)){var p=this.te(e,t,tn.Cancellation);p.length>0&&(r.info("cancel event matched, cancelling items",{event:e,itemsToCancel:p.map(m=>m.id)}),p.forEach(m=>{var v=a.indexOf(m.id);v>=0&&a.splice(v,1),this.ue(m.id)}),this.le(a))}if(this.Ki.has(e)){r.info("event name matched",{event:e,eventPayload:t,items:this.Ki.get(e)});var f=this.te(e,t,tn.Activation);this.le(a.concat(f.map(m=>m.id)||[]))}}}onAction(e){var t,s=this.oe(),r=((t=this._instance)==null||(t=t.persistence)==null?void 0:t.props[s])||[];this.Xi.has(e)&&this.le(r.concat(this.Xi.get(e)||[]))}le(e){var t,s=this.ne(),r=this.oe(),i=[...new Set(e)].filter(o=>!this.he(o));s.info("updating activated items",{activatedItems:i}),(t=this._instance)==null||(t=t.persistence)==null||t.register({[r]:i})}getActivatedIds(){var e,t=this.oe(),s=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[t];return s||[]}getEventToItemsMap(){return this.Ki}de(){return this.se}}class xd extends Cd{constructor(e){super(e)}oe(){return"$surveys_activated"}ae(){return un.SHOWN}ie(e){var t;(t=this._instance)==null||t.getSurveys(e)}ue(e){var t;(t=this._instance)==null||t.cancelPendingSurvey(e)}ne(){return j}he(){return!1}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}class kd{constructor(e){this.ve=void 0,this._surveyManager=null,this.ce=!1,this.fe=[],this.pe=null,this._instance=e,this._surveyEventReceiver=null}onRemoteConfig(e){if(!this._instance.config.disable_surveys){var t=e.surveys;if(O(t))return j.warn("Flags not loaded yet. Not loading surveys.");var s=N(t);this.ve=s?t.length>0:t,j.info("flags response received, isSurveysEnabled: "+this.ve),this.loadIfEnabled()}}reset(){localStorage.removeItem("lastSeenSurveyDate");for(var e=[],t=0;tlocalStorage.removeItem(r))}loadIfEnabled(){if(!this._surveyManager)if(this.ce)j.info("Already initializing surveys, skipping...");else if(this._instance.config.disable_surveys)j.info("Disabled. Not loading surveys.");else if(this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())j.info("Not loading surveys in cookieless mode without consent.");else{var e=k==null?void 0:k.__PosthogExtensions__;if(e){if(!b(this.ve)||this._instance.config.advanced_enable_surveys){var t=this.ve||this._instance.config.advanced_enable_surveys;this.ce=!0;try{var s=e.generateSurveys;if(s)return void this._e(s,t);var r=e.loadExternalDependency;if(!r)return void this.ge("PostHog loadExternalDependency extension not found.");r(this._instance,"surveys",i=>{i||!e.generateSurveys?this.ge("Could not load surveys script",i):this._e(e.generateSurveys,t)})}catch(i){throw this.ge("Error initializing surveys",i),i}finally{this.ce=!1}}}else j.error("PostHog Extensions not found.")}}_e(e,t){this._surveyManager=e(this._instance,t),this._surveyEventReceiver=new xd(this._instance),j.info("Surveys loaded successfully"),this.me({isLoaded:!0})}ge(e,t){j.error(e,t),this.me({isLoaded:!1,error:e})}onSurveysLoaded(e){return this.fe.push(e),this._surveyManager&&this.me({isLoaded:!0}),()=>{this.fe=this.fe.filter(t=>t!==e)}}getSurveys(e,t){if(t===void 0&&(t=!1),this._instance.config.disable_surveys)return j.info("Disabled. Not loading surveys."),e([]);var s,r=this._instance.get_property(br);if(r&&!t)return e(r,{isLoaded:!0});typeof Promise<"u"&&this.pe?this.pe.then(i=>{var{surveys:o,context:a}=i;return e(o,a)}):(typeof Promise<"u"&&(this.pe=new Promise(i=>{s=i})),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this._instance.config.token),method:"GET",timeout:this._instance.config.surveys_request_timeout_ms,callback:i=>{var o;this.pe=null;var a=i.statusCode;if(a!==200||!i.json){var l="Surveys API could not be loaded, status: "+a;j.error(l);var c={isLoaded:!1,error:l};return e([],c),void(s==null||s({surveys:[],context:c}))}var u,d=i.json.surveys||[],p=d.filter(m=>function(v){return!(!v.start_date||v.end_date)}(m)&&(function(v){var _;return!((_=v.conditions)==null||(_=_.events)==null||(_=_.values)==null||!_.length)}(m)||function(v){var _;return!((_=v.conditions)==null||(_=_.actions)==null||(_=_.values)==null||!_.length)}(m)));p.length>0&&((u=this._surveyEventReceiver)==null||u.register(p)),(o=this._instance.persistence)==null||o.register({[br]:d});var f={isLoaded:!0};e(d,f),s==null||s({surveys:d,context:f})}}))}me(e){for(var t of this.fe)try{if(!e.isLoaded)return t([],e);this.getSurveys(t)}catch(s){j.error("Error in survey callback",s)}}getActiveMatchingSurveys(e,t){if(t===void 0&&(t=!1),!O(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(e,t);j.warn("init was not called")}be(e){var t=null;return this.getSurveys(s=>{var r;t=(r=s.find(i=>i.id===e))!==null&&r!==void 0?r:null}),t}ye(e){if(O(this._surveyManager))return{eligible:!1,reason:"SDK is not enabled or survey functionality is not yet loaded"};var t=typeof e=="string"?this.be(e):e;return t?this._surveyManager.checkSurveyEligibility(t):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(e){if(O(this._surveyManager))return j.warn("init was not called"),{visible:!1,disabledReason:"SDK is not enabled or survey functionality is not yet loaded"};var t=this.ye(e);return{visible:t.eligible,disabledReason:t.reason}}canRenderSurveyAsync(e,t){return O(this._surveyManager)?(j.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:"SDK is not enabled or survey functionality is not yet loaded"})):new Promise(s=>{this.getSurveys(r=>{var i,o=(i=r.find(l=>l.id===e))!==null&&i!==void 0?i:null;if(o){var a=this.ye(o);s({visible:a.eligible,disabledReason:a.reason})}else s({visible:!1,disabledReason:"Survey not found"})},t)})}renderSurvey(e,t,s){var r;if(O(this._surveyManager))j.warn("init was not called");else{var i=typeof e=="string"?this.be(e):e;if(i!=null&&i.id)if(Ed.includes(i.type)){var o=w==null?void 0:w.querySelector(t);if(o)return(r=i.appearance)!=null&&r.surveyPopupDelaySeconds?(j.info("Rendering survey "+i.id+" with delay of "+i.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout(()=>{var a,l;j.info("Rendering survey "+i.id+" with delay of "+((a=i.appearance)==null?void 0:a.surveyPopupDelaySeconds)+" seconds"),(l=this._surveyManager)==null||l.renderSurvey(i,o,s),j.info("Survey "+i.id+" rendered")},1e3*i.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(i,o,s);j.warn("Survey element not found")}else j.warn("Surveys of type "+i.type+" cannot be rendered in the app");else j.warn("Survey not found")}}displaySurvey(e,t){var s;if(O(this._surveyManager))j.warn("init was not called");else{var r=this.be(e);if(r){var i=r;if((s=r.appearance)!=null&&s.surveyPopupDelaySeconds&&t.ignoreDelay&&(i=S({},r,{appearance:S({},r.appearance,{surveyPopupDelaySeconds:0})})),t.displayType!==Pr.Popover&&t.initialResponses&&j.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),t.ignoreConditions===!1){var o=this.canRenderSurvey(r);if(!o.visible)return void j.warn("Survey is not eligible to be displayed: ",o.disabledReason)}t.displayType!==Pr.Inline?this._surveyManager.handlePopoverSurvey(i,t):this.renderSurvey(i,t.selector,t.properties)}else j.warn("Survey not found")}}cancelPendingSurvey(e){O(this._surveyManager)?j.warn("init was not called"):this._surveyManager.cancelSurvey(e)}handlePageUnload(){var e;(e=this._surveyManager)==null||e.handlePageUnload()}}var ye=z("[Conversations]");class Td{constructor(e){this.we=void 0,this._conversationsManager=null,this.xe=!1,this.$e=null,this._instance=e}onRemoteConfig(e){if(!this._instance.config.disable_conversations){var t=e.conversations;O(t)||(Ke(t)?this.we=t:(this.we=t.enabled,this.$e=t),this.loadIfEnabled())}}reset(){var e;(e=this._conversationsManager)==null||e.reset(),this._conversationsManager=null,this.we=void 0,this.$e=null}loadIfEnabled(){if(!(this._conversationsManager||this.xe||this._instance.config.disable_conversations||ja(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var e=k==null?void 0:k.__PosthogExtensions__;if(e&&!b(this.we)&&this.we)if(this.$e&&this.$e.token){this.xe=!0;try{var t=e.initConversations;if(t)return this.Ee(t),void(this.xe=!1);var s=e.loadExternalDependency;if(!s)return void this.Se("PostHog loadExternalDependency extension not found.");s(this._instance,"conversations",r=>{r||!e.initConversations?this.Se("Could not load conversations script",r):this.Ee(e.initConversations),this.xe=!1})}catch(r){this.Se("Error initializing conversations",r),this.xe=!1}}else ye.error("Conversations enabled but missing token in remote config.")}}Ee(e){if(this.$e)try{this._conversationsManager=e(this.$e,this._instance),ye.info("Conversations loaded successfully")}catch(t){this.Se("Error completing conversations initialization",t)}else ye.error("Cannot complete initialization: remote config is null")}Se(e,t){ye.error(e,t),this._conversationsManager=null,this.xe=!1}show(){this._conversationsManager?this._conversationsManager.show():ye.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.we===!0&&!ke(this._conversationsManager)}isVisible(){var e,t;return(e=(t=this._conversationsManager)==null?void 0:t.isVisible())!==null&&e!==void 0&&e}sendMessage(e,t,s){var r=this;return Ue(function*(){return r._conversationsManager?r._conversationsManager.sendMessage(e,t,s):(ye.warn("Conversations not available yet."),null)})()}getMessages(e,t){var s=this;return Ue(function*(){return s._conversationsManager?s._conversationsManager.getMessages(e,t):(ye.warn("Conversations not available yet."),null)})()}markAsRead(e){var t=this;return Ue(function*(){return t._conversationsManager?t._conversationsManager.markAsRead(e):(ye.warn("Conversations not available yet."),null)})()}getTickets(e){var t=this;return Ue(function*(){return t._conversationsManager?t._conversationsManager.getTickets(e):(ye.warn("Conversations not available yet."),null)})()}requestRestoreLink(e){var t=this;return Ue(function*(){return t._conversationsManager?t._conversationsManager.requestRestoreLink(e):(ye.warn("Conversations not available yet."),null)})()}restoreFromToken(e){var t=this;return Ue(function*(){return t._conversationsManager?t._conversationsManager.restoreFromToken(e):(ye.warn("Conversations not available yet."),null)})()}restoreFromUrlToken(){var e=this;return Ue(function*(){return e._conversationsManager?e._conversationsManager.restoreFromUrlToken():(ye.warn("Conversations not available yet."),null)})()}getCurrentTicketId(){var e,t;return(e=(t=this._conversationsManager)==null?void 0:t.getCurrentTicketId())!==null&&e!==void 0?e:null}getWidgetSessionId(){var e,t;return(e=(t=this._conversationsManager)==null?void 0:t.getWidgetSessionId())!==null&&e!==void 0?e:null}}class Rd{constructor(e){var t;this.ke=!1,this.Pe=!1,this._instance=e,this._instance&&(t=this._instance.config.logs)!=null&&t.captureConsoleLogs&&(this.ke=!0)}onRemoteConfig(e){var t,s=(t=e.logs)==null?void 0:t.captureConsoleLogs;!O(s)&&s&&(this.ke=!0,this.loadIfEnabled())}reset(){}loadIfEnabled(){if(this.ke&&!this.Pe){var e=z("[logs]"),t=k==null?void 0:k.__PosthogExtensions__;if(t){var s=t.loadExternalDependency;s?s(this._instance,"logs",r=>{var i;r||(i=t.logs)==null||!i.initializeLogs?e.error("Could not load logs script",r):(t.logs.initializeLogs(this._instance),this.Pe=!0)}):e.error("PostHog loadExternalDependency extension not found.")}else e.error("PostHog Extensions not found.")}}}var No=z("[RateLimiter]");class Ad{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=t=>{var s=t.text;if(s&&s.length)try{(JSON.parse(s).quota_limited||[]).forEach(r=>{No.info((r||"events")+" is quota limited."),this.serverLimits[r]=new Date().getTime()+6e4})}catch(r){return void No.warn('could not rate limit - continuing. Error: "'+(r==null?void 0:r.message)+'"',{text:s})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var t,s,r;e===void 0&&(e=!1);var{captureEventsBurstLimit:i,captureEventsPerSecond:o}=this,a=new Date().getTime(),l=(t=(s=this.instance.persistence)==null?void 0:s.get_property(Ir))!==null&&t!==void 0?t:{tokens:i,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>i&&(l.tokens=i);var c=l.tokens<1;return c||e||(l.tokens=Math.max(0,l.tokens-1)),!c||this.lastEventRateLimited||e||this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited. Config is set to "+o+" events per second and "+i+" events burst limit."},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=c,(r=this.instance.persistence)==null||r.set_property(Ir,l),{isRateLimited:c,remainingTokens:l.tokens}}isServerRateLimited(e){var t=this.serverLimits[e||"events"]||!1;return t!==!1&&new Date().getTime()e(this.remoteConfig)):e()}Ie(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:t=>{e(t.json)}})}load(){try{if(this.remoteConfig)return nn.info("Using preloaded remote config",this.remoteConfig),this.Ce(this.remoteConfig),void this.Re();if(this._instance.M())return void nn.warn("Remote config is disabled. Falling back to local config.");this.Te(e=>{if(!e)return nn.info("No config found after loading remote JS config. Falling back to JSON."),void this.Ie(t=>{this.Ce(t),this.Re()});this.Ce(e),this.Re()})}catch(e){nn.error("Error loading remote config",e)}}stop(){this.Fe&&(clearInterval(this.Fe),this.Fe=void 0)}refresh(){this._instance.M()||(w==null?void 0:w.visibilityState)==="hidden"||this._instance.featureFlags.reloadFeatureFlags()}Re(){this.Fe||(this.Fe=setInterval(()=>{this.refresh()},3e5))}Ce(e){e||nn.error("Failed to fetch remote config from PostHog."),this._instance.Ce(e??{}),(e==null?void 0:e.hasFeatureFlags)!==!1&&(this._instance.config.advanced_disable_feature_flags_on_first_load||this._instance.featureFlags.ensureFlagsLoaded())}}var Fr=3e3;class Pd{constructor(e,t){this.Oe=!0,this.Me=[],this.Ae=Ne((t==null?void 0:t.flush_interval_ms)||Fr,250,5e3,E.createLogger("flush interval"),Fr),this.je=e}enqueue(e){this.Me.push(e),this.De||this.Le()}unload(){this.Ne();var e=this.Me.length>0?this.Ue():{},t=Object.values(e);[...t.filter(s=>s.url.indexOf("/e")===0),...t.filter(s=>s.url.indexOf("/e")!==0)].map(s=>{this.je(S({},s,{transport:"sendBeacon"}))})}enable(){this.Oe=!1,this.Le()}Le(){var e=this;this.Oe||(this.De=setTimeout(()=>{if(this.Ne(),this.Me.length>0){var t=this.Ue(),s=function(){var i=t[r],o=new Date().getTime();i.data&&N(i.data)&&U(i.data,a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp}),e.je(i)};for(var r in t)s()}},this.Ae))}Ne(){clearTimeout(this.De),this.De=void 0}Ue(){var e={};return U(this.Me,t=>{var s,r=t,i=(r?r.batchKey:null)||r.url;b(e[i])&&(e[i]=S({},r,{data:[]})),(s=e[i].data)==null||s.push(r.data)}),this.Me=[],e}}var Fd=["retriesPerformedSoFar"];class $d{constructor(e){this.ze=!1,this.He=3e3,this.Me=[],this._instance=e,this.Me=[],this.Be=!0,!b(h)&&"onLine"in h.navigator&&(this.Be=h.navigator.onLine,this.qe=()=>{this.Be=!0,this.Lt()},this.We=()=>{this.Be=!1},Y(h,"online",this.qe),Y(h,"offline",this.We))}get length(){return this.Me.length}retriableRequest(e){var{retriesPerformedSoFar:t}=e,s=ma(e,Fd);Rt(t)&&(s.url=os(s.url,{retry_count:t})),this._instance._send_request(S({},s,{callback:r=>{r.statusCode!==200&&(r.statusCode<400||r.statusCode>=500)&&(t??0)<10?this.Ge(S({retriesPerformedSoFar:t},s)):s.callback==null||s.callback(r)}}))}Ge(e){var t=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=t+1;var s=function(o){var a=3e3*Math.pow(2,o),l=a/2,c=Math.min(18e5,a),u=(Math.random()-.5)*(c-l);return Math.ceil(c+u)}(t),r=Date.now()+s;this.Me.push({retryAt:r,requestOptions:e});var i="Enqueued failed request for retry in "+s;navigator.onLine||(i+=" (Browser is offline)"),E.warn(i),this.ze||(this.ze=!0,this.Ve())}Ve(){if(this.Je&&clearTimeout(this.Je),this.Me.length===0)return this.ze=!1,void(this.Je=void 0);this.Je=setTimeout(()=>{this.Be&&this.Me.length>0&&this.Lt(),this.Ve()},this.He)}Lt(){var e=Date.now(),t=[],s=this.Me.filter(i=>i.retryAt0)for(var{requestOptions:r}of s)this.retriableRequest(r)}unload(){for(var{requestOptions:e}of(this.Je&&(clearTimeout(this.Je),this.Je=void 0),this.ze=!1,b(h)||(this.qe&&(h.removeEventListener("online",this.qe),this.qe=void 0),this.We&&(h.removeEventListener("offline",this.We),this.We=void 0)),this.Me))try{this._instance._send_request(S({},e,{transport:"sendBeacon"}))}catch(t){E.error(t)}this.Me=[]}}class Md{constructor(e){this.Ke=()=>{var t,s,r,i;this.Ye||(this.Ye={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,c=a+((o==null?void 0:o.clientHeight)||0),u=(o==null?void 0:o.scrollHeight)||0;this.Ye.lastScrollY=Math.ceil(a),this.Ye.maxScrollY=Math.max(a,(t=this.Ye.maxScrollY)!==null&&t!==void 0?t:0),this.Ye.maxScrollHeight=Math.max(l,(s=this.Ye.maxScrollHeight)!==null&&s!==void 0?s:0),this.Ye.lastContentY=c,this.Ye.maxContentY=Math.max(c,(r=this.Ye.maxContentY)!==null&&r!==void 0?r:0),this.Ye.maxContentHeight=Math.max(u,(i=this.Ye.maxContentHeight)!==null&&i!==void 0?i:0)},this._instance=e}getContext(){return this.Ye}resetContext(){var e=this.Ye;return setTimeout(this.Ke,0),e}startMeasuringScrollPosition(){Y(h,"scroll",this.Ke,{capture:!0}),Y(h,"scrollend",this.Ke,{capture:!0}),Y(h,"resize",this.Ke)}scrollElement(){if(!this._instance.config.scroll_root_selector)return h==null?void 0:h.document.documentElement;var e=N(this._instance.config.scroll_root_selector)?this._instance.config.scroll_root_selector:[this._instance.config.scroll_root_selector];for(var t of e){var s=h==null?void 0:h.document.querySelector(t);if(s)return s}}scrollY(){if(this._instance.config.scroll_root_selector){var e=this.scrollElement();return e&&e.scrollTop||0}return h&&(h.scrollY||h.pageYOffset||h.document.documentElement.scrollTop)||0}scrollX(){if(this._instance.config.scroll_root_selector){var e=this.scrollElement();return e&&e.scrollLeft||0}return h&&(h.scrollX||h.pageXOffset||h.document.documentElement.scrollLeft)||0}}var Od=n=>pl(n==null?void 0:n.config.mask_personal_data_properties,n==null?void 0:n.config.custom_personal_data_properties);class Lo{constructor(e,t,s,r){this.Xe=i=>{var o=this.Qe();if(!o||o.sessionId!==i){var a={sessionId:i,props:this.Ze(this._instance)};this.tr.register({[Sr]:a})}},this._instance=e,this.ir=t,this.tr=s,this.Ze=r||Od,this.ir.onSessionId(this.Xe)}Qe(){return this.tr.props[Sr]}getSetOnceProps(){var e,t=(e=this.Qe())==null?void 0:e.props;return t?"r"in t?fl(t):{$referring_domain:t.referringDomain,$pathname:t.initialPathName,utm_source:t.utm_source,utm_campaign:t.utm_campaign,utm_medium:t.utm_medium,utm_content:t.utm_content,utm_term:t.utm_term}:{}}getSessionProps(){var e={};return U(si(this.getSetOnceProps()),(t,s)=>{s==="$current_url"&&(s="url"),e["$session_entry_"+dr(s)]=t}),e}}var ir=z("[SessionId]");class Do{on(e,t){return this.er.on(e,t)}constructor(e,t,s){var r;if(this.rr=[],this.sr=void 0,this.er=new ci,this.nr=(u,d)=>!(!Rt(u)||!Rt(d))&&Math.abs(u-d)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode==="always")throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.R=e.config,this.tr=e.persistence,this.ar=void 0,this.lr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.ur=t||at,this.hr=s||at;var i=this.R.persistence_name||this.R.token,o=this.R.session_idle_timeout_seconds||1800;if(this._sessionTimeoutMs=1e3*Ne(o,60,36e3,ir.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.dr(),this.vr="ph_"+i+"_window_id",this.cr="ph_"+i+"_primary_window_exists",this.pr()){var a=Q.W(this.vr),l=Q.W(this.cr);a&&!l?this.ar=a:Q.V(this.vr),Q.G(this.cr,!0)}if((r=this.R.bootstrap)!=null&&r.sessionID)try{var c=(u=>{var d=u.replace(/-/g,"");if(d.length!==32)throw new Error("Not a valid UUID");if(d[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(d.substring(0,12),16)})(this.R.bootstrap.sessionID);this._r(this.R.bootstrap.sessionID,new Date().getTime(),c)}catch(u){ir.error("Invalid sessionID in bootstrap",u)}this.gr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return b(this.rr)&&(this.rr=[]),this.rr.push(e),this.lr&&e(this.lr,this.ar),()=>{this.rr=this.rr.filter(t=>t!==e)}}pr(){return this.R.persistence!=="memory"&&!this.tr.ki&&Q.H()}mr(e){e!==this.ar&&(this.ar=e,this.pr()&&Q.G(this.vr,e))}br(){return this.ar?this.ar:this.pr()?Q.W(this.vr):null}_r(e,t,s){e===this.lr&&t===this._sessionActivityTimestamp&&s===this._sessionStartTimestamp||(this._sessionStartTimestamp=s,this._sessionActivityTimestamp=t,this.lr=e,this.tr.register({[Jn]:[t,e,s]}))}yr(){var e=this.tr.props[Jn];return N(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this._r(null,null,null)}destroy(){clearTimeout(this.wr),this.wr=void 0,this.sr&&h&&(h.removeEventListener("beforeunload",this.sr,{capture:!1}),this.sr=void 0),this.rr=[]}gr(){this.sr=()=>{this.pr()&&Q.V(this.cr)},Y(h,"beforeunload",this.sr,{capture:!1})}checkAndGetSessionAndWindowId(e,t){if(e===void 0&&(e=!1),t===void 0&&(t=null),this.R.cookieless_mode==="always")throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var s=t||new Date().getTime(),[r,i,o]=this.yr(),a=this.br(),l=Rt(o)&&Math.abs(s-o)>864e5,c=!1,u=!i,d=!u&&!e&&this.nr(s,r);u||d||l?(i=this.ur(),a=this.hr(),ir.info("new session ID generated",{sessionId:i,windowId:a,changeReason:{noSessionId:u,activityTimeout:d,sessionPastMaximumLength:l}}),o=s,c=!0):a||(a=this.hr(),c=!0);var p=Rt(r)&&e&&!l?r:s,f=Rt(o)?o:new Date().getTime();return this.mr(a),this._r(i,p,f),e||this.dr(),c&&this.rr.forEach(m=>m(i,a,c?{noSessionId:u,activityTimeout:d,sessionPastMaximumLength:l}:void 0)),{sessionId:i,windowId:a,sessionStartTimestamp:f,changeReason:c?{noSessionId:u,activityTimeout:d,sessionPastMaximumLength:l}:void 0,lastActivityTimestamp:r}}dr(){clearTimeout(this.wr),this.wr=setTimeout(()=>{var[e]=this.yr();if(this.nr(new Date().getTime(),e)){var t=this.lr;this.resetSessionId(),this.er.emit("forcedIdleReset",{idleSessionId:t})}},1.1*this.sessionTimeoutMs)}}var Nd=["$set_once","$set"],rt=z("[SiteApps]");class Ld{constructor(e){this._instance=e,this.$r=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}Er(e,t){if(t){var s=this.globalsForEvent(t);this.$r.push(s),this.$r.length>1e3&&(this.$r=this.$r.slice(10))}}get siteAppLoaders(){var e;return(e=k._POSTHOG_REMOTE_CONFIG)==null||(e=e[this._instance.config.token])==null?void 0:e.siteApps}init(){if(this.isEnabled){var e=this._instance._addCaptureHook(this.Er.bind(this));this.Sr=()=>{e(),this.$r=[],this.Sr=void 0}}}globalsForEvent(e){var t,s,r,i,o,a,l;if(!e)throw new Error("Event payload is required");var c={},u=this._instance.get_property("$groups")||[],d=this._instance.get_property("$stored_group_properties")||{};for(var[p,f]of Object.entries(d))c[p]={id:u[p],type:p,properties:f};var{$set_once:m,$set:v}=e;return{event:S({},ma(e,Nd),{properties:S({},e.properties,v?{$set:S({},(t=(s=e.properties)==null?void 0:s.$set)!==null&&t!==void 0?t:{},v)}:{},m?{$set_once:S({},(r=(i=e.properties)==null?void 0:i.$set_once)!==null&&r!==void 0?r:{},m)}:{}),elements_chain:(o=(a=e.properties)==null?void 0:a.$elements_chain)!==null&&o!==void 0?o:"",distinct_id:(l=e.properties)==null?void 0:l.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:c}}setupSiteApp(e){var t=this.apps[e.id],s=()=>{var a;!t.errored&&this.$r.length&&(rt.info("Processing "+this.$r.length+" events for site app with id "+e.id),this.$r.forEach(l=>t.processEvent==null?void 0:t.processEvent(l)),t.processedBuffer=!0),Object.values(this.apps).every(l=>l.processedBuffer||l.errored)&&((a=this.Sr)==null||a.call(this))},r=!1,i=a=>{t.errored=!a,t.loaded=!0,rt.info("Site app with id "+e.id+" "+(a?"loaded":"errored")),r&&s()};try{var{processEvent:o}=e.init({posthog:this._instance,callback:a=>{i(a)}});o&&(t.processEvent=o),r=!0}catch(a){rt.error("Error while initializing PostHog app with config id "+e.id,a),i(!1)}if(r&&t.loaded)try{s()}catch(a){rt.error("Error while processing buffered events PostHog app with config id "+e.id,a),t.errored=!0}}kr(){var e=this.siteAppLoaders||[];for(var t of e)this.apps[t.id]={id:t.id,loaded:!1,errored:!1,processedBuffer:!1};for(var s of e)this.setupSiteApp(s)}Pr(e){if(Object.keys(this.apps).length!==0){var t=this.globalsForEvent(e);for(var s of Object.values(this.apps))try{s.processEvent==null||s.processEvent(t)}catch(r){rt.error("Error while processing event "+e.event+" for site app "+s.id,r)}}}onRemoteConfig(e){var t,s,r,i=this;if((t=this.siteAppLoaders)!=null&&t.length)return this.isEnabled?(this.kr(),void this._instance.on("eventCaptured",c=>this.Pr(c))):void rt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((s=this.Sr)==null||s.call(this),(r=e.siteApps)!=null&&r.length)if(this.isEnabled){var o=function(c){var u;k["__$$ph_site_app_"+c]=i._instance,(u=k.__PosthogExtensions__)==null||u.loadSiteApp==null||u.loadSiteApp(i._instance,l,d=>{if(d)return rt.error("Error while initializing PostHog app with config id "+c,d)})};for(var{id:a,url:l}of e.siteApps)o(a)}else rt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}var Il=function(n,e){if(!n)return!1;var t=n.userAgent;if(t&&qi(t,e))return!0;try{var s=n==null?void 0:n.userAgentData;if(s!=null&&s.brands&&s.brands.some(r=>qi(r==null?void 0:r.brand,e)))return!0}catch{}return!!n.webdriver},dn=function(n){return n.US="us",n.EU="eu",n.CUSTOM="custom",n}({}),Bo="i.posthog.com";class Dd{constructor(e){this.Tr={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,t=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return t||(t=this.apiHost.replace("."+Bo,".posthog.com")),t==="https://app.posthog.com"?"https://us.posthog.com":t}get region(){return this.Tr[this.apiHost]||(/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?this.Tr[this.apiHost]=dn.US:/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?this.Tr[this.apiHost]=dn.EU:this.Tr[this.apiHost]=dn.CUSTOM),this.Tr[this.apiHost]}endpointFor(e,t){if(t===void 0&&(t=""),t&&(t=t[0]==="/"?t:"/"+t),e==="ui")return this.uiHost+t;if(e==="flags")return this.flagsApiHost+t;if(this.region===dn.CUSTOM)return this.apiHost+t;var s=Bo+t;switch(e){case"assets":return"https://"+this.region+"-assets."+s;case"api":return"https://"+this.region+"."+s}}}var Bd={icontains:(n,e)=>!!h&&e.href.toLowerCase().indexOf(n.toLowerCase())>-1,not_icontains:(n,e)=>!!h&&e.href.toLowerCase().indexOf(n.toLowerCase())===-1,regex:(n,e)=>!!h&&as(e.href,n),not_regex:(n,e)=>!!h&&!as(e.href,n),exact:(n,e)=>e.href===n,is_not:(n,e)=>e.href!==n};class se{constructor(e){var t=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(s){s===void 0&&(s=!1),t.getWebExperiments(r=>{se.Ir("retrieved web experiments from the server"),t.Cr=new Map,r.forEach(i=>{if(i.feature_flag_key){var o;t.Cr&&(se.Ir("setting flag key ",i.feature_flag_key," to web experiment ",i),(o=t.Cr)==null||o.set(i.feature_flag_key,i));var a=t._instance.getFeatureFlag(i.feature_flag_key);K(a)&&i.variants[a]&&t.Rr(i.name,a,i.variants[a].transforms)}else if(i.variants)for(var l in i.variants){var c=i.variants[l];se.Fr(c)&&t.Rr(i.name,l,c.transforms)}})},s)},this._instance=e,this._instance.onFeatureFlags(s=>{this.onFeatureFlags(s)})}onFeatureFlags(e){if(this._is_bot())se.Ir("Refusing to render web experiment since the viewer is a likely bot");else if(!this._instance.config.disable_web_experiments){if(O(this.Cr))return this.Cr=new Map,this.loadIfEnabled(),void this.previewWebExperiment();se.Ir("applying feature flags",e),e.forEach(t=>{var s;if(this.Cr&&(s=this.Cr)!=null&&s.has(t)){var r,i=this._instance.getFeatureFlag(t),o=(r=this.Cr)==null?void 0:r.get(t);i&&o!=null&&o.variants[i]&&this.Rr(o.name,i,o.variants[i].transforms)}})}}previewWebExperiment(){var e=se.getWindowLocation();if(e!=null&&e.search){var t=ns(e==null?void 0:e.search,"__experiment_id"),s=ns(e==null?void 0:e.search,"__experiment_variant");t&&s&&(se.Ir("previewing web experiments "+t+" && "+s),this.getWebExperiments(r=>{this.Or(parseInt(t),s,r)},!1,!0))}}loadIfEnabled(){this._instance.config.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,t,s){if(this._instance.config.disable_web_experiments&&!s)return e([]);var r=this._instance.get_property("$web_experiments");if(r&&!t)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this._instance.config.token),method:"GET",callback:i=>{if(i.statusCode!==200||!i.json)return e([]);var o=i.json.experiments||[];return e(o)}})}Or(e,t,s){var r=s.filter(i=>i.id===e);r&&r.length>0&&(se.Ir("Previewing web experiment ["+r[0].name+"] with variant ["+t+"]"),this.Rr(r[0].name,t,r[0].variants[t].transforms))}static Fr(e){return!O(e.conditions)&&se.Mr(e)&&se.Ar(e)}static Mr(e){var t;if(O(e.conditions)||O((t=e.conditions)==null?void 0:t.url))return!0;var s,r,i,o=se.getWindowLocation();return!!o&&((s=e.conditions)==null||!s.url||Bd[(r=(i=e.conditions)==null?void 0:i.urlMatchType)!==null&&r!==void 0?r:"icontains"](e.conditions.url,o))}static getWindowLocation(){return h==null?void 0:h.location}static Ar(e){var t;if(O(e.conditions)||O((t=e.conditions)==null?void 0:t.utm))return!0;var s=ll();if(s.utm_source){var r,i,o,a,l,c,u,d,p=(r=e.conditions)==null||(r=r.utm)==null||!r.utm_campaign||((i=e.conditions)==null||(i=i.utm)==null?void 0:i.utm_campaign)==s.utm_campaign,f=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==s.utm_source,m=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((c=e.conditions)==null||(c=c.utm)==null?void 0:c.utm_medium)==s.utm_medium,v=(u=e.conditions)==null||(u=u.utm)==null||!u.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==s.utm_term;return p&&m&&v&&f}return!1}static Ir(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r{if(r.selector){var i;se.Ir("applying transform of variant "+t+" for experiment "+e+" ",r);var o=(i=document)==null?void 0:i.querySelectorAll(r.selector);o==null||o.forEach(a=>{var l=a;r.html&&(l.innerHTML=r.html),r.css&&l.setAttribute("style",r.css)})}}):se.Ir("Control variants leave the page unmodified.")}_is_bot(){return he&&this._instance?Il(he,this._instance.config.custom_blocked_useragents):void 0}}var jd=z("[PostHog ExternalIntegrations]"),Ud={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class Hd{constructor(e){this._instance=e}it(e,t){var s;(s=k.__PosthogExtensions__)==null||s.loadExternalDependency==null||s.loadExternalDependency(this._instance,e,r=>{if(r)return jd.error("failed to load script",r);t()})}startIfEnabledOrStop(){var e=this,t=function(o){var a,l,c;!r||(a=k.__PosthogExtensions__)!=null&&(a=a.integrations)!=null&&a[o]||e.it(Ud[o],()=>{var u;(u=k.__PosthogExtensions__)==null||(u=u.integrations)==null||(u=u[o])==null||u.start(e._instance)}),!r&&(l=k.__PosthogExtensions__)!=null&&(l=l.integrations)!=null&&l[o]&&((c=k.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[o])==null||c.stop())};for(var[s,r]of Object.entries((i=this._instance.config.integrations)!==null&&i!==void 0?i:{})){var i;t(s)}}}z("[SessionRecording]");var $r="[SessionRecording]",Tt=z($r);class jo{get started(){var e;return!((e=this.jr)==null||!e.isStarted)}get status(){return this.jr?this.jr.status:this.Dr&&!this.Lr?"disabled":"lazy_loading"}constructor(e){if(this._forceAllowLocalhostNetworkCapture=!1,this.Dr=!1,this.Nr=!1,this.Ur=void 0,this._instance=e,!this._instance.sessionManager)throw Tt.error("started without valid sessionManager"),new Error($r+" started without valid sessionManager. This is a bug.");if(this._instance.config.cookieless_mode==="always")throw new Error($r+' cannot be used with cookieless_mode="always"')}get Lr(){var e,t=!((e=this._instance.get_property($n))==null||!e.enabled),s=!this._instance.config.disable_session_recording,r=this._instance.config.disable_session_recording||this._instance.consent.isOptedOut();return h&&t&&s&&!r}startIfEnabledOrStop(e){var t;if(!this.Lr||(t=this.jr)==null||!t.isStarted){var s=!b(Object.assign)&&!b(Array.from);this.Lr&&s?(this.zr(e),Tt.info("starting")):this.stopRecording()}}zr(e){var t,s,r;this.Lr&&(k!=null&&(t=k.__PosthogExtensions__)!=null&&(t=t.rrweb)!=null&&t.record&&(s=k.__PosthogExtensions__)!=null&&s.initSessionRecording?this.Hr(e):(r=k.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,this.Br,i=>{if(i)return Tt.error("could not load recorder",i);this.Hr(e)}))}stopRecording(){var e,t;(e=this.Ur)==null||e.call(this),this.Ur=void 0,(t=this.jr)==null||t.stop()}qr(){var e;(e=this._instance.persistence)==null||e.unregister(Wa)}Wr(e){if(this._instance.persistence){var t,s,r=this._instance.persistence,i=()=>{var o=e.sessionRecording===!1?void 0:e.sessionRecording,a=o==null?void 0:o.sampleRate,l=O(a)?null:parseFloat(a);O(l)&&this.qr();var c=o==null?void 0:o.minimumDurationMilliseconds;r.register({[$n]:S({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:S({capturePerformance:e.capturePerformance},o==null?void 0:o.networkPayloadCapture),canvasRecording:{enabled:o==null?void 0:o.recordCanvas,fps:o==null?void 0:o.canvasFps,quality:o==null?void 0:o.canvasQuality},sampleRate:l,minimumDurationMilliseconds:b(c)?null:c,endpoint:o==null?void 0:o.endpoint,triggerMatchType:o==null?void 0:o.triggerMatchType,masking:o==null?void 0:o.masking,urlTriggers:o==null?void 0:o.urlTriggers})})};i(),(t=this.Ur)==null||t.call(this),this.Ur=(s=this._instance.sessionManager)==null?void 0:s.onSessionId(i)}}onRemoteConfig(e){"sessionRecording"in e?e.sessionRecording!==!1?(this.Nr=!1,this.Wr(e),this.Dr=!0,this.startIfEnabledOrStop()):this.Dr=!0:Tt.info("skipping remote config with no sessionRecording",e)}log(e,t){var s;t===void 0&&(t="log"),(s=this.jr)!=null&&s.log?this.jr.log(e,t):Tt.warn("log called before recorder was ready")}get Br(){var e,t,s=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.get_property($n);return(s==null||(t=s.scriptConfig)==null?void 0:t.script)||"lazy-recorder"}Gr(){var e,t=this._instance.get_property($n);if(!t)return!1;var s=(e=(typeof t=="object"?t:JSON.parse(t)).cache_timestamp)!==null&&e!==void 0?e:Date.now();return Date.now()-s<=3e5}Hr(e){var t,s;if((t=k.__PosthogExtensions__)==null||!t.initSessionRecording)throw Error("Called on script loaded before session recording is available");this.jr||(this.jr=(s=k.__PosthogExtensions__)==null?void 0:s.initSessionRecording(this._instance),this.jr._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),this.Gr()?this.jr.start(e):this.Nr||(this.Nr=!0,Tt.info("persisted remote config is stale, requesting fresh config before starting"),new Sl(this._instance).load())}onRRwebEmit(e){var t;(t=this.jr)==null||t.onRRwebEmit==null||t.onRRwebEmit(e)}overrideLinkedFlag(){var e,t;this.jr||(t=this._instance.persistence)==null||t.register({$replay_override_linked_flag:!0}),(e=this.jr)==null||e.overrideLinkedFlag()}overrideSampling(){var e,t;this.jr||(t=this._instance.persistence)==null||t.register({$replay_override_sampling:!0}),(e=this.jr)==null||e.overrideSampling()}overrideTrigger(e){var t,s;this.jr||(s=this._instance.persistence)==null||s.register({[e==="url"?"$replay_override_url_trigger":"$replay_override_event_trigger"]:!0}),(t=this.jr)==null||t.overrideTrigger(e)}get sdkDebugProperties(){var e;return((e=this.jr)==null?void 0:e.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(e,t){var s;return!((s=this.jr)==null||!s.tryAddCustomEvent(e,t))}}var fn={},or=0,Mr=()=>{},At="posthog",Cl=!ad&&(ue==null?void 0:ue.indexOf("MSIE"))===-1&&(ue==null?void 0:ue.indexOf("Mozilla"))===-1,Uo=n=>{var e;return S({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,token:"",autocapture:!0,cross_subdomain_cookie:pu(w==null?void 0:w.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:Mr,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:n??"unset",__preview_deferred_init_extensions:!1,debug:ee&&K(ee==null?void 0:ee.search)&&ee.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disable_external_dependency_loading:!1,enable_recording_console_log:void 0,secure_cookie:(h==null||(e=h.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error:t=>{var s="Bad HTTP status: "+t.statusCode+" "+t.text;E.error(s)},get_device_id:t=>t,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:"identified_only",before_send:void 0,request_queue_config:{flush_interval_ms:Fr},error_tracking:{},_onCapture:Mr,__preview_eager_load_replay:!1},(t=>({rageclick:!(t&&t>="2025-11-30")||{content_ignorelist:!0},capture_pageview:!(t&&t>="2025-05-24")||"history_change",session_recording:t&&t>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:t&&t>="2026-01-30"?"head":"body",internal_or_test_user_hostname:t&&t>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0}))(n))},Ho=n=>{var e={};b(n.process_person)||(e.person_profiles=n.process_person),b(n.xhr_headers)||(e.request_headers=n.xhr_headers),b(n.cookie_name)||(e.persistence_name=n.cookie_name),b(n.disable_cookie)||(e.disable_persistence=n.disable_cookie),b(n.store_google)||(e.save_campaign_params=n.store_google),b(n.verbose)||(e.debug=n.verbose);var t=G({},e,n);return N(n.property_blacklist)&&(b(n.property_denylist)?t.property_denylist=n.property_blacklist:N(n.property_denylist)?t.property_denylist=[...n.property_blacklist,...n.property_denylist]:E.error("Invalid value for property_denylist config: "+n.property_denylist)),t};class Wd{constructor(){this.__forceAllowLocalhost=!1}get Vr(){return this.__forceAllowLocalhost}set Vr(e){E.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class wn{get decideEndpointWasHit(){var e,t;return(e=(t=this.featureFlags)==null?void 0:t.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,t;return(e=(t=this.featureFlags)==null?void 0:t.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){this.webPerformance=new Wd,this.Jr=!1,this.version=je.LIB_VERSION,this.mi=new ci,this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=Uo(),this.SentryIntegration=Uu,this.sentryIntegration=e=>function(t,s){var r=al(t,s);return{name:ol,processEvent:i=>r(i)}}(this,e),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.Kr=!1,this.Yr=null,this.Xr=null,this.Qr=null,this.featureFlags=new _d(this),this.toolbar=new Wu(this),this.scrollManager=new Md(this),this.pageViewManager=new So(this),this.surveys=new kd(this),this.conversations=new Td(this),this.logs=new Rd(this),this.experiments=new se(this),this.exceptions=new ld(this),this.rateLimiter=new Ad(this),this.requestRouter=new Dd(this),this.consent=new Ou(this),this.externalIntegrations=new Hd(this),this.people={set:(e,t,s)=>{var r=K(e)?{[e]:t}:e;this.setPersonProperties(r),s==null||s({})},set_once:(e,t,s)=>{var r=K(e)?{[e]:t}:e;this.setPersonProperties(void 0,r),s==null||s({})}},this.on("eventCaptured",e=>E.info('send "'+(e==null?void 0:e.event)+'"',e))}init(e,t,s){if(s&&s!==At){var r,i=(r=fn[s])!==null&&r!==void 0?r:new wn;return i._init(e,t,s),fn[s]=i,fn[At][s]=i,i}return this._init(e,t,s)}_init(e,t,s){var r;if(t===void 0&&(t={}),b(e)||pr(e))return E.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config={},t.debug=this.Zr(t.debug),this.ts=t,this.es=[],t.person_profiles?this.Xr=t.person_profiles:t.process_person&&(this.Xr=t.process_person),this.set_config(G({},Uo(t.defaults),Ho(t),{name:s,token:e})),this.config.on_xhr_error&&E.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=t.disable_compression?void 0:We.GZipJS;var i=this.rs();this.persistence=new tr(this.config,i),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new tr(S({},this.config,{persistence:"sessionStorage"}),i);var o=S({},this.persistence.props),a=S({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.ss=new Pd(I=>this.ns(I),this.config.request_queue_config),this.os=new $d(this),this.__request_queue=[];var l=this.config.cookieless_mode==="always"||this.config.cookieless_mode==="on_reject"&&this.consent.isExplicitlyOptedOut();if(l||(this.sessionManager=new Do(this),this.sessionPropsManager=new Lo(this,this.sessionManager,this.persistence)),this.config.__preview_deferred_init_extensions?(E.info("Deferring extension initialization to improve startup performance"),setTimeout(()=>{this.ls(l)},0)):(E.info("Initializing extensions synchronously"),this.ls(l)),je.DEBUG=je.DEBUG||this.config.debug,je.DEBUG&&E.info("Starting in debug mode",{this:this,config:t,thisC:S({},this.config),p:o,s:a}),((r=t.bootstrap)==null?void 0:r.distinctID)!==void 0){var c,u,d=this.config.get_device_id(at()),p=(c=t.bootstrap)!=null&&c.isIdentifiedID?d:t.bootstrap.distinctID;this.persistence.set_property(Pe,(u=t.bootstrap)!=null&&u.isIdentifiedID?"identified":"anonymous"),this.register({distinct_id:t.bootstrap.distinctID,$device_id:p})}if(this.us()){var f,m,v=Object.keys(((f=t.bootstrap)==null?void 0:f.featureFlags)||{}).filter(I=>{var T;return!((T=t.bootstrap)==null||(T=T.featureFlags)==null||!T[I])}).reduce((I,T)=>{var C;return I[T]=((C=t.bootstrap)==null||(C=C.featureFlags)==null?void 0:C[T])||!1,I},{}),_=Object.keys(((m=t.bootstrap)==null?void 0:m.featureFlagPayloads)||{}).filter(I=>v[I]).reduce((I,T)=>{var C,y;return(C=t.bootstrap)!=null&&(C=C.featureFlagPayloads)!=null&&C[T]&&(I[T]=(y=t.bootstrap)==null||(y=y.featureFlagPayloads)==null?void 0:y[T]),I},{});this.featureFlags.receivedFeatureFlags({featureFlags:v,featureFlagPayloads:_})}if(l)this.register_once({distinct_id:Kt,$device_id:null},"");else if(!this.get_distinct_id()){var x=this.config.get_device_id(at());this.register_once({distinct_id:x,$device_id:x},""),this.persistence.set_property(Pe,"anonymous")}return Y(h,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),this.toolbar.maybeLoadToolbar(),t.segment?ju(this,()=>this.hs()):this.hs(),Ge(this.config._onCapture)&&this.config._onCapture!==Mr&&(E.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",I=>this.config._onCapture(I.event,I))),this.config.ip&&E.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this}ls(e){var t=performance.now();this.historyAutocapture=new Bu(this),this.historyAutocapture.startIfEnabled();var s=[];s.push(()=>{new Gu(this).startIfEnabledOrStop()}),s.push(()=>{var r;this.siteApps=new Ld(this),(r=this.siteApps)==null||r.init()}),e||s.push(()=>{this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop()}),this.config.disable_scroll_properties||s.push(()=>{this.scrollManager.startMeasuringScrollPosition()}),s.push(()=>{this.autocapture=new ku(this),this.autocapture.startIfEnabled()}),s.push(()=>{this.surveys.loadIfEnabled()}),s.push(()=>{this.logs.loadIfEnabled()}),s.push(()=>{this.conversations.loadIfEnabled()}),s.push(()=>{this.productTours=new wd(this),this.productTours.loadIfEnabled()}),s.push(()=>{this.heatmaps=new Xu(this),this.heatmaps.startIfEnabled()}),s.push(()=>{this.webVitalsAutocapture=new Ju(this)}),s.push(()=>{this.exceptionObserver=new Du(this),this.exceptionObserver.startIfEnabledOrStop()}),s.push(()=>{this.deadClicksAutocapture=new il(this,Lu),this.deadClicksAutocapture.startIfEnabledOrStop()}),s.push(()=>{if(this.ds){var r=this.ds;this.ds=void 0,this.Ce(r)}}),this.vs(s,t)}vs(e,t){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-t>=30&&e.length>0)return void setTimeout(()=>{this.vs(e,t)},0);var s=e.shift();if(s)try{s()}catch(i){E.error("Error initializing extension:",i)}}var r=Math.round(performance.now()-t);this.register_for_session({$sdk_debug_extensions_init_method:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",$sdk_debug_extensions_init_time_ms:r}),this.config.__preview_deferred_init_extensions&&E.info("PostHog extensions initialized ("+r+"ms)")}Ce(e){var t,s,r,i,o,a,l,c,u;if(!w||!w.body)return E.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout(()=>{this.Ce(e)},500);this.config.__preview_deferred_init_extensions&&(this.ds=e),this.compression=void 0,e.supportedCompression&&!this.config.disable_compression&&(this.compression=$(e.supportedCompression,We.GZipJS)?We.GZipJS:$(e.supportedCompression,We.Base64)?We.Base64:void 0),(t=e.analytics)!=null&&t.endpoint&&(this.analyticsDefaultEndpoint=e.analytics.endpoint),this.set_config({person_profiles:this.Xr?this.Xr:"identified_only"}),(s=this.siteApps)==null||s.onRemoteConfig(e),(r=this.sessionRecording)==null||r.onRemoteConfig(e),(i=this.autocapture)==null||i.onRemoteConfig(e),(o=this.heatmaps)==null||o.onRemoteConfig(e),this.surveys.onRemoteConfig(e),this.logs.onRemoteConfig(e),this.conversations.onRemoteConfig(e),(a=this.productTours)==null||a.onRemoteConfig(e),(l=this.webVitalsAutocapture)==null||l.onRemoteConfig(e),(c=this.exceptionObserver)==null||c.onRemoteConfig(e),this.exceptions.onRemoteConfig(e),(u=this.deadClicksAutocapture)==null||u.onRemoteConfig(e)}hs(){try{this.config.loaded(this)}catch(s){E.critical("`loaded` function failed",s)}if(this.cs(),this.config.internal_or_test_user_hostname&&ee!=null&&ee.hostname){var e=ee.hostname,t=this.config.internal_or_test_user_hostname;(typeof t=="string"?e===t:t.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout(()=>{(this.consent.isOptedIn()||this.config.cookieless_mode==="always")&&this.fs()},1),this.ps=new Sl(this),this.ps.load()}cs(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.ss)==null||e.enable())}_dom_loaded(){this.is_capturing()&<(this.__request_queue,e=>this.ns(e)),this.__request_queue=[],this.cs()}_handle_unload(){var e,t;this.surveys.handlePageUnload(),this.config.request_batching?(this._s()&&this.capture("$pageleave"),(e=this.ss)==null||e.unload(),(t=this.os)==null||t.unload()):this._s()&&this.capture("$pageleave",null,{transport:"sendBeacon"})}_send_request(e){this.__loaded&&(Cl?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)||(e.transport=e.transport||this.config.api_transport,e.url=os(e.url,{ip:this.config.ip?1:0}),e.headers=S({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,e.disableXHRCredentials=this.config.__preview_disable_xhr_credentials,this.config.__preview_disable_beacon&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(t=>{var s,r,i,o=S({},t);o.timeout=o.timeout||6e4,o.url=os(o.url,{_:new Date().getTime().toString(),ver:je.LIB_VERSION,compression:o.compression});var a=(s=o.transport)!==null&&s!==void 0?s:"fetch",l=jn.filter(u=>!o.disableTransport||!u.transport||!o.disableTransport.includes(u.transport)),c=(r=(i=Ba(l,u=>u.transport===a))==null?void 0:i.method)!==null&&r!==void 0?r:l[0].method;if(!c)throw new Error("No available transport method");c(o)})(S({},e,{callback:t=>{var s,r;this.rateLimiter.checkForLimiting(t),t.statusCode>=400&&((s=(r=this.config).on_request_error)==null||s.call(r,t)),e.callback==null||e.callback(t)}}))))}ns(e){this.os?this.os.retriableRequest(e):this._send_request(e)}_execute_array(e){or++;try{var t,s=[],r=[],i=[];lt(e,a=>{a&&(t=a[0],N(t)?i.push(a):Ge(a)?a.call(this):N(a)&&t==="alias"?s.push(a):N(a)&&t.indexOf("capture")!==-1&&Ge(this[t])?i.push(a):r.push(a))});var o=function(a,l){lt(a,function(c){if(N(c[0])){var u=l;U(c,function(d){u=u[d[0]].apply(u,d.slice(1))})}else this[c[0]].apply(this,c.slice(1))},l)};o(s,this),o(r,this),o(i,this)}finally{or--}}us(){var e,t;return((e=this.config.bootstrap)==null?void 0:e.featureFlags)&&Object.keys((t=this.config.bootstrap)==null?void 0:t.featureFlags).length>0||!1}push(e){if(or>0&&N(e)&&K(e[0])){var t=wn.prototype[e[0]];Ge(t)&&t.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,t,s){var r;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.ss){if(this.is_capturing())if(!b(e)&&K(e)){var i=!this.config.opt_out_useragent_filter&&this._is_bot();if(!(i&&!this.config.__preview_capture_bot_pageviews)){var o=s!=null&&s.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(o==null||!o.isRateLimited){t!=null&&t.$current_url&&!K(t==null?void 0:t.$current_url)&&(E.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),t==null||delete t.$current_url),e!=="$exception"||s!=null&&s.oi||E.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var a=new Date,l=(s==null?void 0:s.timestamp)||a,c=at(),u={uuid:c,event:e,properties:this.calculateEventProperties(e,t||{},l,c)};e==="$pageview"&&this.config.__preview_capture_bot_pageviews&&i&&(u.event="$bot_pageview",u.properties.$browser_type="bot"),o&&(u.properties.$lib_rate_limit_remaining_tokens=o.remainingTokens),s!=null&&s.$set&&(u.$set=s==null?void 0:s.$set);var d,p=e!=="$groupidentify",f=this.gs(s==null?void 0:s.$set_once,p);if(f&&(u.$set_once=f),(u=uu(u,s!=null&&s._noTruncate?null:this.config.properties_string_max_length)).timestamp=l,b(s==null?void 0:s.timestamp)||(u.properties.$event_time_override_provided=!0,u.properties.$event_time_override_system_time=a),e===un.DISMISSED||e===un.SENT){var m=t==null?void 0:t[rr.SURVEY_ID],v=t==null?void 0:t[rr.SURVEY_ITERATION];d={id:m,current_iteration:v},localStorage.getItem(Oo(d))||localStorage.setItem(Oo(d),"true"),u.$set=S({},u.$set,{[bd({id:m,current_iteration:v},e===un.SENT?"responded":"dismissed")]:!0})}else e===un.SHOWN&&(u.$set=S({},u.$set,{[rr.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));var _=S({},u.properties.$set,u.$set);if(Ft(_)||this.setPersonPropertiesForFlags(_),!O(this.config.before_send)){var x=this.bs(u);if(!x)return;u=x}this.mi.emit("eventCaptured",u);var I={method:"POST",url:(r=s==null?void 0:s._url)!==null&&r!==void 0?r:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),data:u,compression:"best-available",batchKey:s==null?void 0:s._batchKey};return!this.config.request_batching||s&&(s==null||!s._batchKey)||s!=null&&s.send_instantly?this.ns(I):this.ss.enqueue(I),u}E.critical("This capture call is ignored due to client rate limiting.")}}else E.error("No event name provided to posthog.capture")}else E.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",t=>e(t.event,t))}calculateEventProperties(e,t,s,r,i){if(s=s||new Date,!this.persistence||!this.sessionPersistence)return t;var o=i?void 0:this.persistence.remove_event_timer(e),a=S({},t);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,(this.config.cookieless_mode=="always"||this.config.cookieless_mode=="on_reject"&&this.consent.isExplicitlyOptedOut())&&(a.$cookieless_mode=!0),e==="$snapshot"){var l=S({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!K(a.distinct_id)&&!Xe(a.distinct_id)||pr(a.distinct_id))&&E.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var c,u=Yu(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties);if(this.sessionManager){var{sessionId:d,windowId:p}=this.sessionManager.checkAndGetSessionAndWindowId(i,s.getTime());a.$session_id=d,a.$window_id=p}this.sessionPropsManager&&G(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&G(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(f=this.os)==null?void 0:f.length}catch(x){a.$sdk_debug_error_capturing_properties=String(x)}if(this.requestRouter.region===dn.CUSTOM&&(a.$lib_custom_api_host=this.config.api_host),c=e!=="$pageview"||i?e!=="$pageleave"||i?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(s):this.pageViewManager.doPageView(s,r),a=G(a,c),e==="$pageview"&&w&&(a.title=w.title),!b(o)){var m=s.getTime()-o;a.$duration=parseFloat((m/1e3).toFixed(3))}ue&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser"),(a=G({},u,this.persistence.properties(),this.sessionPersistence.properties(),a)).$is_identified=this._isIdentified(),N(this.config.property_denylist)?U(this.config.property_denylist,function(x){delete a[x]}):E.error("Invalid value for property_denylist config: "+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var v=this.config.sanitize_properties;v&&(E.error("sanitize_properties is deprecated. Use before_send instead"),a=v(a,e));var _=this.ys();return a.$process_person_profile=_,_&&!i&&this.ws("_calculate_event_properties"),a}gs(e,t){var s;if(t===void 0&&(t=!0),!this.persistence||!this.ys()||this.Jr)return e;var r=this.persistence.get_initial_props(),i=(s=this.sessionPropsManager)==null?void 0:s.getSetOnceProps(),o=G({},r,i||{},e||{}),a=this.config.sanitize_properties;return a&&(E.error("sanitize_properties is deprecated. Use before_send instead"),o=a(o,"$set_once")),t&&(this.Jr=!0),Ft(o)?void 0:o}register(e,t){var s;(s=this.persistence)==null||s.register(e,t)}register_once(e,t,s){var r;(r=this.persistence)==null||r.register_once(e,t,s)}register_for_session(e){var t;(t=this.sessionPersistence)==null||t.register(e)}unregister(e){var t;(t=this.persistence)==null||t.unregister(e)}unregister_for_session(e){var t;(t=this.sessionPersistence)==null||t.unregister(e)}xs(e,t){this.register({[e]:t})}getFeatureFlag(e,t){return this.featureFlags.getFeatureFlag(e,t)}getFeatureFlagPayload(e){return this.featureFlags.getFeatureFlagPayload(e)}getFeatureFlagResult(e,t){return this.featureFlags.getFeatureFlagResult(e,t)}isFeatureEnabled(e,t){return this.featureFlags.isFeatureEnabled(e,t)}reloadFeatureFlags(){this.featureFlags.reloadFeatureFlags()}updateFlags(e,t,s){var r=s!=null&&s.merge?this.featureFlags.getFlagVariants():{},i=s!=null&&s.merge?this.featureFlags.getFlagPayloads():{},o=S({},r,e),a=S({},i,t),l={};for(var[c,u]of Object.entries(o)){var d=typeof u=="string";l[c]={key:c,enabled:!!d||!!u,variant:d?u:void 0,reason:void 0,metadata:b(a==null?void 0:a[c])?void 0:{id:0,version:void 0,description:void 0,payload:a[c]}}}this.featureFlags.receivedFeatureFlags({flags:l})}updateEarlyAccessFeatureEnrollment(e,t,s){this.featureFlags.updateEarlyAccessFeatureEnrollment(e,t,s)}getEarlyAccessFeatures(e,t,s){return t===void 0&&(t=!1),this.featureFlags.getEarlyAccessFeatures(e,t,s)}on(e,t){return this.mi.on(e,t)}onFeatureFlags(e){return this.featureFlags.onFeatureFlags(e)}onSurveysLoaded(e){return this.surveys.onSurveysLoaded(e)}onSessionId(e){var t,s;return(t=(s=this.sessionManager)==null?void 0:s.onSessionId(e))!==null&&t!==void 0?t:()=>{}}getSurveys(e,t){t===void 0&&(t=!1),this.surveys.getSurveys(e,t)}getActiveMatchingSurveys(e,t){t===void 0&&(t=!1),this.surveys.getActiveMatchingSurveys(e,t)}renderSurvey(e,t){this.surveys.renderSurvey(e,t)}displaySurvey(e,t){t===void 0&&(t=Sd),this.surveys.displaySurvey(e,t)}cancelPendingSurvey(e){this.surveys.cancelPendingSurvey(e)}canRenderSurvey(e){return this.surveys.canRenderSurvey(e)}canRenderSurveyAsync(e,t){return t===void 0&&(t=!1),this.surveys.canRenderSurveyAsync(e,t)}identify(e,t,s){if(!this.__loaded||!this.persistence)return E.uninitializedWarning("posthog.identify");if(Xe(e)&&(e=e.toString(),E.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),e)if(["distinct_id","distinctid"].includes(e.toLowerCase()))E.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.');else if(e!==Kt){if(this.ws("posthog.identify")){var r=this.get_distinct_id();if(this.register({$user_id:e}),!this.get_property("$device_id")){var i=r;this.register_once({$had_persisted_distinct_id:!0,$device_id:i},"")}e!==r&&e!==this.get_property(rn)&&(this.unregister(rn),this.register({distinct_id:e}));var o=(this.persistence.get_property(Pe)||"anonymous")==="anonymous";e!==r&&o?(this.persistence.set_property(Pe,"identified"),this.setPersonPropertiesForFlags(S({},s||{},t||{}),!1),this.capture("$identify",{distinct_id:e,$anon_distinct_id:r},{$set:t||{},$set_once:s||{}}),this.Qr=Ro(e,t,s),this.featureFlags.setAnonymousDistinctId(r)):(t||s)&&this.setPersonProperties(t,s),e!==r&&(this.reloadFeatureFlags(),this.unregister(Zn))}}else E.critical('The string "'+Kt+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.');else E.error("Unique user id has not been set in posthog.identify")}setPersonProperties(e,t){if((e||t)&&this.ws("posthog.setPersonProperties")){var s=Ro(this.get_distinct_id(),e,t);this.Qr!==s?(this.setPersonPropertiesForFlags(S({},t||{},e||{})),this.capture("$set",{$set:e||{},$set_once:t||{}}),this.Qr=s):E.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}group(e,t,s){if(e&&t){var r=this.getGroups();r[e]!==t&&this.resetGroupPropertiesForFlags(e),this.register({$groups:S({},r,{[e]:t})}),s&&(this.capture("$groupidentify",{$group_type:e,$group_key:t,$group_set:s}),this.setGroupPropertiesForFlags({[e]:s})),r[e]===t||s||this.reloadFeatureFlags()}else E.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,t){t===void 0&&(t=!0),this.featureFlags.setPersonPropertiesForFlags(e,t)}resetPersonPropertiesForFlags(){this.featureFlags.resetPersonPropertiesForFlags()}setGroupPropertiesForFlags(e,t){t===void 0&&(t=!0),this.ws("posthog.setGroupPropertiesForFlags")&&this.featureFlags.setGroupPropertiesForFlags(e,t)}resetGroupPropertiesForFlags(e){this.featureFlags.resetGroupPropertiesForFlags(e)}reset(e){var t,s,r,i,o;if(E.info("reset"),!this.__loaded)return E.uninitializedWarning("posthog.reset");var a=this.get_property("$device_id");if(this.consent.reset(),(t=this.persistence)==null||t.clear(),(s=this.sessionPersistence)==null||s.clear(),this.surveys.reset(),(r=this.ps)==null||r.stop(),this.featureFlags.reset(),(i=this.persistence)==null||i.set_property(Pe,"anonymous"),(o=this.sessionManager)==null||o.resetSessionId(),this.Qr=null,this.config.cookieless_mode==="always")this.register_once({distinct_id:Kt,$device_id:null},"");else{var l=this.config.get_device_id(at());this.register_once({distinct_id:l,$device_id:e?l:a},"")}this.register({$last_posthog_reset:new Date().toISOString()},1)}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,t;return(e=(t=this.sessionManager)==null?void 0:t.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var{sessionId:t,sessionStartTimestamp:s}=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+t);if(e!=null&&e.withTimestamp&&s){var i,o=(i=e.timestampLookBack)!==null&&i!==void 0?i:10;if(!s)return r;r+="?t="+Math.max(Math.floor((new Date().getTime()-s)/1e3)-o,0)}return r}alias(e,t){return e===this.get_property(Ua)?(E.critical("Attempting to create alias for existing People user - aborting."),-2):this.ws("posthog.alias")?(b(t)&&(t=this.get_distinct_id()),e!==t?(this.xs(rn,e),this.capture("$create_alias",{alias:e,distinct_id:t})):(E.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var t=S({},this.config);if(Z(e)){var s,r,i,o,a,l,c,u;G(this.config,Ho(e));var d=this.rs();(s=this.persistence)==null||s.update_config(this.config,t,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new tr(S({},this.config,{persistence:"sessionStorage"}),d);var p=this.Zr(this.config.debug);Ke(p)&&(this.config.debug=p),Ke(this.config.debug)&&(this.config.debug?(je.DEBUG=!0,W.H()&&W.G("ph_debug","true"),E.info("set_config",{config:e,oldConfig:t,newConfig:S({},this.config)})):(je.DEBUG=!1,W.H()&&W.V("ph_debug"))),(r=this.exceptionObserver)==null||r.onConfigChange(),(i=this.sessionRecording)==null||i.startIfEnabledOrStop(),(o=this.autocapture)==null||o.startIfEnabled(),(a=this.heatmaps)==null||a.startIfEnabled(),(l=this.exceptionObserver)==null||l.startIfEnabledOrStop(),(c=this.deadClicksAutocapture)==null||c.startIfEnabledOrStop(),this.surveys.loadIfEnabled(),this.$s(),(u=this.externalIntegrations)==null||u.startIfEnabledOrStop()}}startSessionRecording(e){var t=e===!0,s={sampling:t||!(e==null||!e.sampling),linked_flag:t||!(e==null||!e.linked_flag),url_trigger:t||!(e==null||!e.url_trigger),event_trigger:t||!(e==null||!e.event_trigger)};if(Object.values(s).some(Boolean)){var r,i,o,a,l;(r=this.sessionManager)==null||r.checkAndGetSessionAndWindowId(),s.sampling&&((i=this.sessionRecording)==null||i.overrideSampling()),s.linked_flag&&((o=this.sessionRecording)==null||o.overrideLinkedFlag()),s.url_trigger&&((a=this.sessionRecording)==null||a.overrideTrigger("url")),s.event_trigger&&((l=this.sessionRecording)==null||l.overrideTrigger("event"))}this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,t){var s=new Error("PostHog syntheticException"),r=this.exceptions.buildProperties(e,{handled:!0,syntheticException:s});return this.exceptions.sendExceptionEvent(S({},r,t))}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){return this.toolbar.loadToolbar(e)}get_property(e){var t;return(t=this.persistence)==null?void 0:t.props[e]}getSessionProperty(e){var t;return(t=this.sessionPersistence)==null?void 0:t.props[e]}toString(){var e,t=(e=this.config.name)!==null&&e!==void 0?e:At;return t!==At&&(t=At+"."+t),t}_isIdentified(){var e,t;return((e=this.persistence)==null?void 0:e.get_property(Pe))==="identified"||((t=this.sessionPersistence)==null?void 0:t.get_property(Pe))==="identified"}ys(){var e,t;return!(this.config.person_profiles==="never"||this.config.person_profiles==="identified_only"&&!this._isIdentified()&&Ft(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[rn])&&((t=this.persistence)==null||(t=t.props)==null||!t[Qn]))}_s(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.ys()||this.ws("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.ws("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}ws(e){return this.config.person_profiles==="never"?(E.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.xs(Qn,!0),!0)}rs(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut(),t=this.config.opt_out_persistence_by_default||this.config.cookieless_mode==="on_reject";return this.config.disable_persistence||e&&!!t}$s(){var e,t,s,r,i=this.rs();return((e=this.persistence)==null?void 0:e.ki)!==i&&((s=this.persistence)==null||s.set_disabled(i)),((t=this.sessionPersistence)==null?void 0:t.ki)!==i&&((r=this.sessionPersistence)==null||r.set_disabled(i)),i}opt_in_capturing(e){var t;if(this.config.cookieless_mode!=="always"){var s,r,i;this.config.cookieless_mode==="on_reject"&&this.consent.isExplicitlyOptedOut()&&(this.reset(!0),(s=this.sessionManager)==null||s.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=new Do(this),this.pageViewManager=new So(this),this.persistence&&(this.sessionPropsManager=new Lo(this,this.sessionManager,this.persistence)),this.sessionRecording=new jo(this),this.sessionRecording.startIfEnabledOrStop()),this.consent.optInOut(!0),this.$s(),this.cs(),(t=this.sessionRecording)==null||t.startIfEnabledOrStop(),this.config.cookieless_mode=="on_reject"&&this.surveys.loadIfEnabled(),(b(e==null?void 0:e.captureEventName)||e!=null&&e.captureEventName)&&this.capture((i=e==null?void 0:e.captureEventName)!==null&&i!==void 0?i:"$opt_in",e==null?void 0:e.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.fs()}else E.warn('Consent opt in/out is not valid with cookieless_mode="always" and will be ignored')}opt_out_capturing(){var e,t,s;this.config.cookieless_mode!=="always"?(this.config.cookieless_mode==="on_reject"&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this.$s(),this.config.cookieless_mode==="on_reject"&&(this.register({distinct_id:Kt,$device_id:null}),(e=this.sessionManager)==null||e.destroy(),(t=this.pageViewManager)==null||t.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,(s=this.sessionRecording)==null||s.stopRecording(),this.sessionRecording=void 0,this.fs())):E.warn('Consent opt in/out is not valid with cookieless_mode="always" and will be ignored')}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===He.GRANTED?"granted":e===He.DENIED?"denied":"pending"}is_capturing(){return this.config.cookieless_mode==="always"||(this.config.cookieless_mode==="on_reject"?this.consent.isExplicitlyOptedOut()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.$s()}_is_bot(){return he?Il(he,this.config.custom_blocked_useragents):void 0}fs(){w&&(w.visibilityState==="visible"?this.Kr||(this.Kr=!0,this.capture("$pageview",{title:w.title},{send_instantly:!0}),this.Yr&&(w.removeEventListener("visibilitychange",this.Yr),this.Yr=null)):this.Yr||(this.Yr=this.fs.bind(this),Y(w,"visibilitychange",this.Yr)))}debug(e){e===!1?(h==null||h.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(h==null||h.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}M(){var e,t,s,r,i,o,a,l=this.ts||{};return"advanced_disable_flags"in l?!!l.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(E.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(s="advanced_disable_decide",r=!1,i=E,o=(t="advanced_disable_flags")in(e=l)&&!O(e[t]),a=s in e&&!O(e[s]),o?e[t]:a?(i&&i.warn("Config field '"+s+"' is deprecated. Please use '"+t+"' instead. The old field will be removed in a future major version."),e[s]):r)}bs(e){if(O(this.config.before_send))return e;var t=N(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var r of t){if(s=r(s),O(s)){var i="Event '"+e.event+"' was rejected in beforeSend function";return kc(e.event)?E.warn(i+". This can cause unexpected behavior."):E.info(i),null}s.properties&&!Ft(s.properties)||E.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}return s}getPageViewId(){var e;return(e=this.pageViewManager.Kt)==null?void 0:e.pageViewId}captureTraceFeedback(e,t){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:t})}captureTraceMetric(e,t,s){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:t,$ai_metric_value:String(s)})}Zr(e){var t=Ke(e)&&!e,s=W.H()&&W.q("ph_debug")==="true";return!t&&(!!s||e)}}(function(n,e){for(var t=0;t{if(typeof e=="string")return{name:e,version:null,inferred:!1};const t=ut(e),s=t.name||t.package;return s?{name:s,version:t.version||null,inferred:!!t.inferred,...t.reason?{reason:t.reason}:{}}:null}).filter(Boolean):Object.entries(ut(n)).map(([e,t])=>({name:e,version:t||null,inferred:!1})):[]}function Pl(n){return n?(Array.isArray(n)?n:[n]).map(e=>{const t=ut(e);return!t.from&&!t.to?null:{from:t.from||null,to:t.to||null,type:t.type||"uses",description:t.description||""}}).filter(Boolean):[]}function Nr(n){if(typeof n!="string")return null;const e=n.trim();if(!e)return null;try{return JSON.parse(e)}catch{const t=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!t)return null;try{return JSON.parse(t[1].trim())}catch{return null}}}function bn(n,e={}){const t=[],s=typeof n=="string"?Nr(n):n,i=ut(s||{});!s&&typeof n=="string"&&t.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(i.artifacts)?i.artifacts:[{artifactType:i.artifactType||e.artifactType,artifactName:i.artifactName||e.artifactName,fileName:i.fileName||e.fileName,description:i.description,code:i.code||e.code||(typeof n=="string"?n:""),dependencies:i.dependencies||e.dependencies,relationships:i.relationships||e.relationships}],a=o.map((d,p)=>Rl(d,p)),l=new Map(o.map((d,p)=>{var f;return[ut(d).id,(f=a[p])==null?void 0:f.id]}).filter(([d,p])=>d&&p)),c=d=>l.get(d)||d,u=Pl(i.relationships||e.relationships).map(d=>({...d,from:d.from?c(d.from):d.from,to:d.to?c(d.to):d.to}));return{schemaVersion:i.schemaVersion||e.schemaVersion||null,id:i.id||e.id||"bundle-current",title:i.title||i.name||e.title||"Generated artifact bundle",description:i.description||e.description||"",artifacts:a,dependencies:Al(i.dependencies||e.dependencies),relationships:u,deployOrder:Array.isArray(i.deployOrder)?i.deployOrder.map(c):a.map(d=>d.id),warnings:[...t,...Array.isArray(i.warnings)?i.warnings:[]],metadata:ut(i.metadata)}}function ls(n){return bn(n).artifacts[0]||Rl()}function Ye(n){if(typeof n!="string")return n??"";const e=n.trim();if(!e)return"";try{return JSON.parse(e)}catch{return n}}function Ut(n){return JSON.stringify(n,null,2)}function Vd(n){return Ut({task:"architect",userRequest:String(n??"")})}function qd(n){const e=Ye(n);return e&&typeof e=="object"&&typeof e.task=="string"?Ut(e):Ut({task:"generate_bundle",bundleSpec:e})}function Kd(n){return Ut({task:"review_bundle",generatedBundle:Ye(n),outputRequirements:{overall:["status","score","summary","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"]}})}function ui(n,e=null){const t={stage:n};return e!=null&&(t.bundle=Ye(e)),t}function Yd({bundleSpec:n,artifactBundle:e,bundleReview:t,artifactId:s,userFeedback:r}){return Ut({task:"regenerate_artifact",artifactId:s,bundleSpec:Ye(n),artifactBundle:Ye(e),bundleReview:Ye(t),userFeedback:String(r)})}function Fl({bundleSpec:n,artifactBundle:e,bundleReview:t,userFeedback:s}){return Ut({task:"regenerate_bundle",bundleSpec:Ye(n),artifactBundle:Ye(e),bundleReview:Ye(t),userFeedback:String(s??"")})}const zo={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},Jd=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function ge(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Zd(n){return ge(n)?typeof n.filterMatchState=="string"||typeof n.invocationResult=="string"||Array.isArray(n.matchedFilters)||ge(n.filterSummary)||ge(n.filterResults):!1}function $l(n,e=0){if(!ge(n)||e>3)return null;if(Zd(n))return n;for(const t of Jd){const s=n[t];if(ge(s)){const r=$l(s,e+1);if(r)return r}}return null}function cs(n){return Array.isArray(n)?n.some(cs):ge(n)?n.matched===!0||n.matchState==="MATCH_FOUND"?!0:Object.values(n).some(cs):!1}function Lr(n){return Array.isArray(n)?n.some(Lr):ge(n)?typeof n.executionState=="string"&&n.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(n).some(Lr):!1}function Ml(n){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[n]||n}function Xd(n,e){if(ge(n))for(const[t,s]of Object.entries(n)){if(!ge(s))continue;const r=ge(s.categories)?s.categories:{},i=Object.entries(r).filter(([,o])=>ge(o)&&o.matched===!0).map(([o])=>o);i.length>0?i.forEach(o=>e.add(o)):s.matched===!0&&e.add(Ml(t))}}function Qd(n,e){var s;if(!n)return;const t=Array.isArray(n)?n.flatMap(r=>ge(r)?Object.entries(r):[]):Object.entries(n);for(const[r,i]of t){if(!cs(i))continue;const o=Ml(r),a=((s=i==null?void 0:i.raiFilterResult)==null?void 0:s.raiFilterTypeResults)||(o==="rai"?i==null?void 0:i.raiFilterTypeResults:null),l=ge(a)?Object.entries(a).filter(([,c])=>cs(c)).map(([c])=>c):[];l.length>0?l.forEach(c=>e.add(c)):e.add(o)}}function ep(n){return zo[n]?zo[n]:String(n).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function Go(n){return n.length<=1?n[0]||"content that did not pass":n.length===2?`${n[0]} and ${n[1]}`:`${n.slice(0,-1).join(", ")}, and ${n.at(-1)}`}function tp(n){const e=$l(n);if(!e)return null;const t=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);Xd(e.filterSummary,t),Qd(e.filterResults,t);const s=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||t.size>0,r=e.invocationResult||null,i=Lr(e.filterSummary||e.filterResults);return!s&&!i&&!["PARTIAL","FAILURE"].includes(r)?null:{kind:s?"blocked":"unavailable",invocationResult:r,matchedFilters:[...t]}}function np(n,e){const t=tp(n);if(!t)return null;const s=[...new Set(t.matchedFilters.map(ep))],r=t.kind==="blocked",i=new Error(r?`Safety screening blocked this pipeline step for ${Go(s)}.`:"Safety screening could not be completed. Please try again.");return i.name="ModelArmorError",i.code=r?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",i.isModelArmor=!0,i.pipelineStep=e,i.userTitle=r?"Request blocked for safety":"Safety check unavailable",i.userMessage=r?`The safety check detected ${Go(s)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",i.retryExplanation=r?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",i.matchedFilters=t.matchedFilters,i}const sp=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),Vo={CustomWidget:"custom_widgets/",CustomAction:"actions/",CustomFunction:"custom_functions/",CustomClass:"custom_code/",CodeFile:"custom_code/"},rp=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),ip=["Struct","Record"];function it(n,e,t){return{artifactId:n.id,artifactName:n.artifactName,artifactType:n.artifactType,severity:e,message:t}}function Ol(n){let e="",t=0;for(;t"&&(t--,t===0))return{inner:n.slice(e+1,s),end:s+1};return null}function ap(n){const e=[],t=n.matchAll(/\bFuture\b/g);for(const s of t){let r=s.index+6,i=null;const o=r;for(;ro;if(n[r]==="<"){const c=op(n,r);if(!c||(i=c.inner.replace(/\s+/g," ").trim(),r=c.end,!/\s/.test(n[r]||"")))continue;for(;rqo(o.functionName)===s);if(r)return r;const i=o=>!o.functionName.startsWith("_");return t.find(i)||t[0]}function Cs(n=""){return Array.from(Ol(n).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function lp(n="",e=""){var t;return((t=Nl(n,e))==null?void 0:t.returnType)||null}function Ko(n){return String(n||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Ll(n,e){const t=Cs(e);if(t.length===0)return null;const r=String(n||"").split("/").pop().replace(/\.dart$/,"");if(t.some(l=>Ko(l)===r))return null;const[o]=t,a=`${Ko(o)}.dart`;return`File name "${n}" does not match declared class "${o}". FlutterFlow expects the file to be named "${a}" - rename the file (or the class) so they agree exactly.`}function cp(n="",e=""){return Nl(n,e)!==null}function up(n,e=new Set){return((n==null?void 0:n.match(/[A-Za-z_]\w*/g))||[]).filter(s=>rp.has(s)?!1:!ip.some(i=>s.endsWith(i))||e.has(s))}function Dl(n,{functionName:e="",declaredTypes:t=new Set}={}){const s=lp(n,e),r=up(s,t);if(r.length===0)return null;const[i]=r;let o;return t.has(i)?o=`uses Code File type "${i}", which FlutterFlow cannot process as an Action Return Value`:s===i?o="is not a FlutterFlow Action Return Value":o=`uses type "${i}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${s}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function dp(n,e={}){const t=[],s=n.fileName||"",r=n.code||"";if(sp.has(n.artifactType)||t.push(it(n,"error",`Unsupported artifact type "${n.artifactType}".`)),s.endsWith(".dart")||t.push(it(n,"error","FlutterFlow custom code artifacts must use .dart files.")),!r.trim())return t.push(it(n,"warning","Generated artifact has no Dart code yet.")),t;if(n.artifactType==="CustomWidget"&&!/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&t.push(it(n,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget.")),n.artifactType==="CustomAction"&&!cp(r,n.artifactName)&&t.push(it(n,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),n.artifactType==="CustomAction"){const i=e.declaredTypes||new Set(Cs(r)),o=Dl(r,{functionName:n.artifactName,declaredTypes:i});o&&t.push(it(n,"error",o))}if(n.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&t.push(it(n,"warning","CustomFunction should be a callable function, not a widget class.")),n.artifactType==="CustomClass"||n.artifactType==="CodeFile"){const i=Ll(s,r);i&&t.push(it(n,"error",i))}return t}function pp(n){const e=Array.isArray(n==null?void 0:n.artifacts)?n.artifacts:[],t=new Set(e.flatMap(i=>Cs(i.code||""))),s=e.flatMap(i=>dp(i,{declaredTypes:t})),r=e.map(i=>({artifactId:i.id,fileName:i.fileName,pathHint:Vo[i.artifactType]||Vo.CodeFile}));return{valid:s.every(i=>i.severity!=="error"),findings:s,deployHints:r}}const fp=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function hp(n){let e="",t=0;for(;t{const s=t.name||t.package;return!s||s==="flutter"||(e[s]=t.version||""),e},{})}function _p(n){const e=new Map,t=new Map,s=[];for(const r of n)e.has(r.fileName)?s.push(`Duplicate deploy file name "${r.fileName}" for artifacts "${e.get(r.fileName)}" and "${r.artifactId}".`):e.set(r.fileName,r.artifactId),t.has(r.path)?s.push(`Duplicate deploy path "${r.path}" for artifacts "${t.get(r.path)}" and "${r.artifactId}".`):t.set(r.path,r.artifactId);return s}function yp(n,e={}){const t=Array.isArray(n==null?void 0:n.artifacts)?n.artifacts:[],r=(e.selectedArtifactIds||(n==null?void 0:n.deployOrder)||t.map(d=>d.id)).map(d=>t.find(p=>p.id===d)).filter(Boolean),i=[...(n==null?void 0:n.warnings)||[]],o=[];r.forEach(d=>{const p=vp(d),f=d.code||"",m=d.codeType||gp[d.artifactType]||be.OTHER;f.trim()||i.push(`${d.artifactName||d.id} has no generated code.`),o.push({artifactId:d.id,artifactName:d.artifactName,artifactType:d.artifactType,fileName:p,content:f,type:m,path:mp(p,m),deployMode:"customCodeSync"})});const a={...Yo(n==null?void 0:n.dependencies),...r.reduce((d,p)=>({...d,...Yo(p.dependencies)}),{})},l={};r.forEach(d=>{Bl(d.code||"").forEach(p=>{p in a||(l[p]="^1.0.0")})});const c={...l,...a};r.forEach(d=>{(d.dependencies||[]).forEach(p=>{const f=p.name||p.package;f&&!p.version&&i.push(`${d.artifactName||d.id} dependency "${f}" has no explicit version.`)})});const u=_p(o);return{bundleId:(n==null?void 0:n.id)||"bundle-current",title:(n==null?void 0:n.title)||"Generated artifact bundle",fileEntries:o,dependencies:c,relationships:(n==null?void 0:n.relationships)||[],warnings:i,errors:u}}function wp(n){var e;return(e=String(n||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/))==null?void 0:e[1]}function bp(n){return String(n||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Ep(n,e){const s=[bp(n),wp(e.content),e.artifactName].find(r=>/^[A-Z][A-Za-z0-9_]*$/.test(String(r||"")));if(!s)throw new Error(`Cannot derive a FlutterFlow custom class name for ${n}.`);return s}function Sp(n,e=new Map){const t=[];for(const[s,r]of n.entries())r.type!=="C"||e.has(r.path)||t.push({artifactId:r.artifactId||s,className:Ep(s,r),content:r.content,fileName:s,path:r.path});return t}function Ip(n,e){const t=new Set(e.map(s=>s.path));return new Map(Array.from(n.entries()).filter(([,s])=>!t.has(s.path)))}const Jo={pass:0,warning:1,fail:2},Cp=["manualSteps","manualActions","requiredActions","flutterFlowSteps","flutterFlowActions","requiredUserActions","requiredFlutterFlowActions","flutterFlowSetup","userActions","nextSteps"];function me(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function ze(...n){for(const e of n){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const t=e.filter(s=>typeof s=="string").join(` -`);if(t)return t}}return""}function $e(n){return n==null?[]:Array.isArray(n)?n:[n]}function xp(n){const e=me(n).value??n;if(e==null||typeof e=="string"&&e.trim()==="")return null;const t=Number(e);if(Number.isFinite(t))return t;const s=String(n||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return s?Number(s[1]):null}function Ee(n){return String(n||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function di(n){const e=String(n||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function Dr(...n){return n.filter(Boolean).reduce((e,t)=>Jo[t]>Jo[e]?t:e,"pass")}function jl(n,e="warning",t="review"){if(typeof n=="string")return{severity:e,message:n,suggestion:"",source:t};const s=me(n),r=ze(s.message,s.title,s.issue,s.description,s.summary);return r?{severity:di(s.severity||s.status||s.level)||e,message:r,suggestion:ze(s.suggestion,s.fix,s.recommendation,s.action),source:s.source||t}:null}function Br(n,e="review"){const t=me(n);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([r,i])=>$e(t[r]).map(o=>jl(o,i,e)).filter(Boolean))}function kp(n,e,t=null){if(typeof n=="string")return{id:`${t||"bundle"}-manual-${e+1}`,title:n,detail:"",location:"",timing:"unspecified",artifactId:t,source:"Code Review"};const s=me(n),r=ze(s.title,s.action,s.step,s.message,s.name,s.description);return r?{id:s.id||`${t||"bundle"}-manual-${e+1}`,title:r,detail:ze(s.detail,s.instructions,s.description),location:ze(s.location,s.flutterFlowPath,s.path),timing:ze(s.timing,s.phase)||"unspecified",artifactId:t,source:ze(s.source)||"Code Review"}:null}function jr(n,e=null){const t=me(n);return Cp.flatMap(s=>$e(t[s])).map((s,r)=>kp(s,r,e)).filter(Boolean)}function Tp(n){let e=typeof n=="string"?Nr(n):n;if(!e&&typeof n=="string")return{rawText:n,root:{}};const t=me(e);typeof t.content=="string"&&(e=Nr(t.content)||e);const s=me(e),r=me(s.reviewResult||s.codeReview||s.result);return{rawText:"",root:Object.keys(r).length?r:s}}function Rp(n,e){const t=[e.id,e.fileName,e.artifactName].map(Ee);return n.find(s=>{const r=me(s);return[r.id,r.fileName,r.artifactName,r.name].map(Ee).some(i=>i&&t.includes(i))})||null}function Ap(n,e){var r,i;const s=$e((i=(r=n==null?void 0:n.metadata)==null?void 0:r.compatibility)==null?void 0:i.deployHints).find(o=>Ee(o==null?void 0:o.artifactId)===Ee(e.id)||Ee(o==null?void 0:o.fileName)===Ee(e.fileName));return(s==null?void 0:s.pathHint)||""}function Pp(n,e){return $e(n==null?void 0:n.relationships).filter(t=>Ee(t==null?void 0:t.from)===Ee(e.id)||Ee(t==null?void 0:t.to)===Ee(e.id))}function Fp(n,e){var t,s;return $e((s=(t=n==null?void 0:n.metadata)==null?void 0:t.compatibility)==null?void 0:s.findings).filter(r=>!(r!=null&&r.artifactId)||Ee(r.artifactId)===Ee(e.id)).map(r=>jl(r,"warning","Compatibility check")).filter(Boolean)}function $p(n,e,t,s){const r=Rp(e,t),i=me((r==null?void 0:r.review)||r||t.review),o=Object.keys(i).length>0,a=[...Br(i),...Fp(n,t)],l=jr(i,t.id),c=di(i.status||i.verdict||i.outcome||i.result),u=a.length?Dr(...a.map(p=>p.severity)):null,d=Dr(c,u,o?null:"warning");return{...t,index:s,status:d,statusReason:o?ze(i.summary,i.overview,i.assessment,i.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,pathHint:Ap(n,t),relationships:Pp(n,t)}}function Mp({bundle:n,reviewResult:e}){var T;const t=me(n),s=$e(t.artifacts),{root:r,rawText:i}=Tp(e),o=[r.bundleReview,r.overallReview,r.overall,r.bundleSummary,r.summaryReview,r.review].map(me).find(C=>Object.keys(C).length)||{},a=$e(r.artifacts||r.files||r.reviews),l=s.map((C,y)=>$p(t,a,C,y)),c=Br(r),d=[...Br(o),...c],p=[...jr(o),...jr(r),...l.flatMap(C=>C.manualSteps)].filter((C,y,P)=>P.findIndex(A=>A.title===C.title&&A.artifactId===C.artifactId)===y),f=di(o.status||o.verdict||o.overallStatus||r.status||r.verdict||r.overallStatus||r.outcome),m=Dr(f,...d.map(C=>C.severity),...l.map(C=>C.status)),v=o.score??r.score??r.overallScore??i,_=xp(v),x=ze(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,r.overallSummary,r.headline,r.summary,r.executiveSummary,r.overview,r.assessment,r.conclusion,i,t.description)||"Code Review completed without an overarching written summary.",I=l.reduce((C,y)=>(C[y.status]+=1,C),{pass:0,warning:0,fail:0});return{title:t.title||"Generated artifact bundle",description:t.description||"",status:m,score:_,summary:x,findings:d,manualSteps:p,artifacts:l,counts:I,reviewCoverage:{reviewed:l.filter(C=>C.reviewComplete).length,total:l.length},deployOrder:$e(t.deployOrder),relationships:$e(t.relationships),warnings:$e(t.warnings),compatibility:me((T=t.metadata)==null?void 0:T.compatibility)}}function Ul(n){if(typeof n=="string")return n;if(Array.isArray(n)){const e=n.map(t=>typeof t=="string"?t:t==null?void 0:t.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(n)}return n&&typeof n=="object"?n.errorMessage||JSON.stringify(n):String(n??"")}function Zo(n,e){const t=`${n}${e}`.split(` -`),s=t.pop()??"",r=[];for(const i of t){const o=Hl(i);o&&r.push(o)}return{events:r,buffer:s}}function Op(n){const e=Hl(n);return e?[e]:[]}function Hl(n){const e=n.trim();if(!e)return null;try{const t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}async function Np(n,e={}){var a;const{onPhase:t,onLog:s}=e;let r=null,i="";const o=l=>{if(l.event==="phase"){l.message&&t&&t(l.message);return}if(l.event==="log"){l.message&&s&&s(l.message);return}r=l};if((a=n.body)!=null&&a.getReader){const l=n.body.getReader(),c=new TextDecoder;for(;;){const{done:u,value:d}=await l.read();if(u)break;const p=Zo(i,c.decode(d,{stream:!0}));i=p.buffer,p.events.forEach(o)}}else{const l=Zo("",await n.text());i=l.buffer,l.events.forEach(o)}return Op(i).forEach(o),r?{...r,success:r.success===!0||r.success===void 0&&n.ok}:{success:!1,error:n.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${n.status}).`}}function Lp(n){return String(n||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function Xo(n){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,t=[];for(const s of Lp(n).split(` -`)){if(!/^[A-Za-z_$]/.test(s)||e.test(s))continue;const r=s.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);r&&t.push(r[1])}return t}function Dp(n,e){const t=n.replace(/\.dart$/,"");if(e==="W")return t.replace(/(^|_)(\w)/g,(s,r,i)=>i.toUpperCase());if(e==="A"){const s=t.replace(/(^|_)(\w)/g,(r,i,o)=>o.toUpperCase());return s.charAt(0).toLowerCase()+s.slice(1)}return e==="F"?"CustomFunctions":e==="C"?n.endsWith(".dart")?n:`${n}.dart`:t}async function Qo(n){const e=new TextEncoder().encode(String(n||"")),t=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(t),s=>s.toString(16).padStart(2,"0")).join("")}async function Bp(n,e=new Map){const t={},s=new Set;for(const[o,a]of n.entries()){if(a.type==="D"||a.type==="O")continue;const l=Dp(o,a.type),c={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await Qo(a.content)},u=e.get(a.path);if(u!==void 0&&(c.original_checksum=await Qo(u)),t[o]=c,a.type==="F"){const d=Xo(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(f=>s.add(f))}}const r=new Set(Xo(e.get("lib/flutter_flow/custom_functions.dart")||"")),i={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(s).filter(o=>!r.has(o))};return{fileMapContents:JSON.stringify(t),functionsMapContents:JSON.stringify(i)}}const jp=/^dependencies\s*:\s*(?:#.*)?$/,Up=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function Hp(n){const e=n.match(Up);return e?e[1]??e[2]??e[3]:null}function Wl(n){const e=n.trim();return e===""||e.startsWith("#")}function zl(n){const e=n.match(/^(\s*)/);return e?e[1].length:0}function pi(n){const e=n.findIndex(r=>jp.test(r));if(e===-1)return null;let t=e,s=null;for(let r=e+1;rc&&c!=="flutter");if(s.length===0)return{yaml:t,added:[],alreadyPresent:[]};const r=t.split(` -`),i=new Set(Gl(t)),o=[],a=[];for(const[c,u]of s)i.has(c)?a.push(c):(o.push([c,u]),i.add(c));if(o.length===0)return{yaml:t,added:[],alreadyPresent:a};const l=pi(r);if(l){const c=o.map(([u,d])=>ea(l.childIndent,u,d));r.splice(l.endIndex,0,...c)}else r.length>0&&r[r.length-1].trim()!==""&&r.push(""),r.push("dependencies:"),o.forEach(([c,u])=>{r.push(ea(" ",c,u))});return{yaml:r.join(` -`),added:o.map(([c])=>c),alreadyPresent:a}}function Vl(n){const e=String(n||""),t=[];return e.trim()?(/^name:\s*\S+/m.test(e)||t.push("pubspec.yaml missing name field"),pi(e.split(` -`))||t.push("pubspec.yaml missing dependencies section"),Gl(e).includes("flutter")||t.push("pubspec.yaml missing Flutter SDK dependency"),{valid:t.length===0,errors:t}):(t.push("pubspec.yaml is empty"),{valid:!1,errors:t})}const Gp={"&":"&","<":"<",">":">",'"':""","'":"'"};function Je(n){return String(n??"").replace(/[&<>"']/g,e=>Gp[e])}function F(n){return n?Je(n).replace(/\n/g,"
    "):""}function mt(n){return Je(n).replace(/\r?\n/g," ")}function Vp(n,e={}){const t=n==null?void 0:n.pipelineStep;if(t!=null&&e[t]!=null)return e[t];const s=(n==null?void 0:n.message)||"";return s.includes("Code Generator")?2:s.includes("Code Review")?3:1}function qp(n){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[t,s]of Object.entries(e))if(n.toLowerCase().includes(t.toLowerCase()))return s;return"📄"}function Kp(n){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[t,s]of Object.entries(e))if(n.toLowerCase().includes(t.toLowerCase()))return s;return"📝"}function Yp(n){return n.includes("class ")&&n.includes("extends ")||n.includes("StatelessWidget")||n.includes("StatefulWidget")||n.includes("import 'package:flutter/")?"dart":n.includes("def ")||n.includes("import ")||n.includes("print(")?"python":n.includes("function ")||n.includes("const ")||n.includes("console.")?"javascript":"dart"}function Ht(n){if(!n)return"";if(typeof n!="string")return String(n);const e=/```(?:\w+)?\n?([\s\S]*?)```/,t=n.match(e);return t?t[1].trim():n.trim()}function ta(n){return n=Je(n),n=n.replace(/\*\*(.*?)\*\*/g,'$1'),n=n.replace(/\*(.*?)\*/g,'$1'),n=n.replace(/`(.*?)`/g,'$1'),n=n.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),n=n.replace(/\b(WARN|WARNING)\b/g,'$1'),n=n.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),n}function ql(n,e="dart",t=globalThis.hljs){if(!n)return"";const s=Ht(n);try{return t.highlight(s,{language:e}).value}catch(r){console.warn("Syntax highlighting failed:",r);try{return t.highlight(s,{language:"json"}).value}catch{return Je(s)}}}function xs(n,e={}){const{highlighter:t=globalThis.hljs}=e;let s='
    ';const r=String(n??"").split(` -`);let i=!1,o="";for(const a of r){if(a.startsWith("```")){if(i){const l=Yp(o),c=ql(o.trim(),l,t);s+=`
    -
    ${c}
    -
    `,o="",i=!1}else i=!0;continue}if(i){o+=a+` -`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();s+=`
    -

    - ${qp(l)} - ${Je(l)} -

    -
    `;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();s+=`
    -

    - ${Kp(l)} - ${Je(l)} -

    -
    `;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();s+=`
    - - ${ta(l)} -
    `;continue}a.trim()!==""&&(s+=`

    ${ta(a)}

    `)}return s+="
    ",` -
    -
    -
    - Live Audit Report -
    - ${s} -
    - `}const Jp="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses",Zp="phc_KoqpBJCIiWMW5I6HKBM092DVXZbMmE4KkPHqI518pF3",Xp="https://us.i.posthog.com";xl.init(Zp,{api_host:Xp,person_profiles:"identified_only"});function Me(n,e={}){try{xl.capture(n,e)}catch(t){console.error("PostHog tracking failed",t)}}const xe="https://4tgke4.buildship.run",Kl={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},us="ccc_auth_session",na=new WeakSet;let L={email:null,sessionToken:null,isVerified:!1};function Wt(n={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...n}}let q=Wt({isResolved:!0});const Qp=`${xe}/service/runpipeline`,ef="bs_user_id",tf=`${xe}/authUserCheck`;let Un={userId:null,status:null,resolved:!1};const ds={free:2,professional:50,power:2e3},ps="ccc_subscription",sa=3,nf=new Set(["active","trialing","paid"]),En="google/gemini-3.6-flash",Hn=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],sf={"google/gemini-3.6-flash":"Gemini 3.6 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function we(n){return sf[n]||n}const Nt="ccc_usage",Ur="google/gemini-3.6-flash",Hr="google/gemini-3.6-flash",ar="google/gemini-3.6-flash",ra={professional:11,power:49},Wr={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},Wn={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let zn={...Wn};async function rf(){const n=new AbortController,e=setTimeout(()=>n.abort(),5e3);try{const t=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:n.signal});if(!t.ok)return;const s=await t.json();if(s.result!=="success"||!s.rates)return;const r=s.rates,i={AUD:1},o=new Set([...Object.keys(Wn),...Object.values(zr),...Object.values(Wr)]);for(const a of o)a!=="AUD"&&(typeof r[a]=="number"&&r[a]>0?i[a]=r[a]:Wn[a]&&(i[a]=Wn[a]));zn=i}catch{}finally{clearTimeout(e)}}const zr={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function Yl(){try{const i=Intl.DateTimeFormat().resolvedOptions().timeZone;if(i&&zr[i])return zr[i]}catch{}const e=(navigator.language||"en-US").replace("-","_"),t=Wr[e];if(t)return t;const s=e.split("_")[0],r=Wr[s];return r||"USD"}function ia(n,e){const t=zn[e]??zn.USD,s=n*t,r=Math.round(s*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:r>=100||r%1===0?0:2}).format(r)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(n*zn.USD)}}const Oe="ccc_api_key_",qe="ccc_session_api_key_",De="ccc_encryption_key",Sn="ccc_encryption_key_scope",of="ccc_keystore",fs="keys",In="ccc_encryption_key_version";let Gr=null,hs=null,Cn=!1,gs=!1,oa=!1;class ms extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function aa(){if(oa)return;oa=!0;const n="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(n),document.body&&V(n,"warning")}function Jl(){return localStorage.getItem(In)||""}function Vr(){var n;return((n=crypto.randomUUID)==null?void 0:n.call(crypto))||Xl(crypto.getRandomValues(new Uint8Array(16)))}function af(){const n=Jl();if(n)return n;const e=Vr();return localStorage.setItem(In,e),e}function zt(){Gr=null,hs=null,Cn=!1,gs=!1}window.addEventListener("storage",n=>{n.key===In&&zt()});function lf(){return new Promise((n,e)=>{const t=indexedDB.open(of,1);t.onupgradeneeded=()=>{const s=t.result;s.objectStoreNames.contains(fs)||s.createObjectStore(fs)},t.onsuccess=()=>n(t.result),t.onerror=()=>e(t.error)})}async function fi(n,e){const t=await lf();return new Promise((s,r)=>{const i=t.transaction(fs,n);let o;try{o=e(i.objectStore(fs))}catch(l){t.close(),r(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>r(o.error),i.oncomplete=()=>{t.close(),s(a)},i.onerror=()=>{t.close(),r(i.error||new Error("Encryption key transaction failed."))},i.onabort=()=>{t.close(),r(i.error||new Error("Encryption key transaction aborted."))}})}function cf(n){var e;return n instanceof CryptoKey&&((e=n.algorithm)==null?void 0:e.name)==="AES-GCM"&&n.extractable===!1&&n.usages.includes("encrypt")&&n.usages.includes("decrypt")}async function uf(){const n=await fi("readonly",e=>e.get(De));return cf(n)?n:null}async function Zl(n){await fi("readwrite",e=>e.put(n,De))}async function df(){zt();try{await fi("readwrite",n=>n.delete(De))}catch(n){console.warn("Could not delete the stored encryption key:",n)}}async function pf(){const n=sessionStorage.getItem(De);if(!n)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(n),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await Zl(e),sessionStorage.removeItem(De),sessionStorage.removeItem(Sn),localStorage.removeItem(Oe+"salt"),e}async function la(n){const e=sessionStorage.getItem(De);if(e)return gs=sessionStorage.getItem(Sn)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!n)throw new ms;const t=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),s=await crypto.subtle.exportKey("jwk",t);return sessionStorage.setItem(De,JSON.stringify(s)),sessionStorage.setItem(Sn,"session"),gs=!1,crypto.subtle.importKey("jwk",s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function ff(n){if(sessionStorage.getItem(Sn)==="session"&&sessionStorage.getItem(De))return aa(),Cn=!0,la(n);try{const e=await uf();if(e)return e;const t=await pf();if(t)return t;const s=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await Zl(s),s}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),aa(),Cn=!0,la(n)}}async function hi(n={}){const{allowSessionFallbackCreation:e=!0}=n,t=af();hs!==t&&zt();const s=Gr||ff(e);Gr=s,hs=t;try{return await s}catch(r){throw zt(),r}}async function hf(n){const e=await hi(),t=hs,s=new TextEncoder,r=crypto.getRandomValues(new Uint8Array(12)),i=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},e,s.encode(n)),o=new Uint8Array(r.length+i.byteLength);return o.set(r),o.set(new Uint8Array(i),r.length),{ciphertext:Xl(o),keyVersion:t,sessionFallback:Cn}}async function gf(n,e={}){const{isSessionCredential:t=!1}=e;try{const s=await hi({allowSessionFallbackCreation:!1});if(Cn&&!t&&!gs)throw new ms;const r=mf(n),i=r.slice(0,12),o=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:i},s,o);return new TextDecoder().decode(a)}catch(s){if(s instanceof ms)throw s;return console.error("Decryption failed:",s),null}}function Xl(n){const e=new Uint8Array(n);let t="";for(let s=0;s0}let xn="",vs="";async function gi(){sessionStorage.getItem(De)&&await hi(),xn=await ce("flutterflow"),vs=await ce("flutterflow_project_id"),bf(),Et()}function mi(){document.getElementById("api-keys-modal").classList.add("open"),_i(),xn&&nc(xn)}function Ql(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&e.classList.remove("open");const t=document.getElementById("walkthrough-modal");t&&(vi(),t.classList.add("open"))}let Ze=1;function ec(){const n=document.querySelector(".wt-steps");return n?Array.from(n.querySelectorAll(".wt-step-card")):[]}function ks(){const n=ec();n.length&&n.forEach((e,t)=>{const s=t+1;if(s===Ze){e.classList.remove("opacity-60","bg-gray-50","border-gray-200"),e.classList.add("bg-blue-50","border-blue-200");const r=e.querySelector("div:first-child");r&&(r.classList.remove("bg-gray-400"),r.classList.add("bg-blue-500"),r.innerHTML=s)}else if(s0&&Ze<=n&&(Ze++,ks())}function _f(){const n=document.getElementById("walkthrough-modal");n&&(Ze=1,ks(),n.classList.add("open"))}function yf(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&e.classList.remove("open");const t=document.getElementById("walkthrough-dont-show");t&&t.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function tc(){if(L.isVerified&&wt()&&q.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(Ze=1,ks(),e.classList.add("open"))}}async function _i(){const n=document.getElementById("flutterflow-api-key-input");xn?(n.value="",n.placeholder="Key saved (enter new to replace)"):n.placeholder="Enter your FlutterFlow API key",wf()}function wf(){ua("flutterflow","flutterflow-key-status"),ua("flutterflow_project_id","flutterflow-project-status")}function ua(n,e){const t=document.getElementById(e);if(!t)return;const s=t.querySelector(".key-status-dot"),r=t.querySelector("span");Pt(n)?(s.className="key-status-dot configured",r.className="text-green-600",r.textContent="User key configured"):(s.className="key-status-dot missing",r.className="text-gray-500",r.textContent="Not configured")}function Et(){const n=g.step2Result&&g.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff"),t=document.getElementById("btn-run-pipeline");t&&t.classList.remove("hidden"),e&&e.classList.toggle("hidden",!n)}function bf(){const n=document.getElementById("api-keys-status");if(!n)return;const e=n.querySelectorAll(".key-status-dot"),t=["flutterflow"];e.forEach((s,r)=>{const i=t[r];i==="flutterflow"?Pt("flutterflow")&&Pt("flutterflow_project_id")?(s.className="key-status-dot configured",s.title="FlutterFlow (Fully configured)"):Pt("flutterflow")||Pt("flutterflow_project_id")?(s.className="key-status-dot env",s.title="FlutterFlow (Partially configured)"):(s.className="key-status-dot missing",s.title="FlutterFlow (Not configured)"):Pt(i)?(s.className="key-status-dot configured",s.title=i.charAt(0).toUpperCase()+i.slice(1)+" (User key)"):(s.className="key-status-dot missing",s.title=i.charAt(0).toUpperCase()+i.slice(1)+" (Not configured)")}),Et()}async function Ef(){const n=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select");n.value.trim()&&await ca("flutterflow",n.value);const t=(e==null?void 0:e.value.trim())||"";if(t){if(!Ts(t)){V("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await ca("flutterflow_project_id",t)}await gi(),_i();const s=document.querySelector("#api-keys-modal .bg-blue-500"),r=s.textContent;s.textContent="Saved!",s.classList.remove("bg-blue-500","hover:bg-blue-600"),s.classList.add("bg-green-500"),setTimeout(()=>{s.textContent=r,s.classList.remove("bg-green-500"),s.classList.add("bg-blue-500","hover:bg-blue-600"),Ql()},1e3)}async function Sf(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(In,Vr()),zt(),localStorage.removeItem(Oe+"flutterflow"),localStorage.removeItem(Oe+"flutterflow_project_id"),sessionStorage.removeItem(qe+"flutterflow"),sessionStorage.removeItem(qe+"flutterflow_project_id"),sessionStorage.removeItem(De),sessionStorage.removeItem(Sn),localStorage.removeItem(Oe+"salt"),await df(),localStorage.setItem(In,Vr()),localStorage.removeItem(Oe+"flutterflow"),localStorage.removeItem(Oe+"flutterflow_project_id"),sessionStorage.removeItem(qe+"flutterflow"),sessionStorage.removeItem(qe+"flutterflow_project_id"),await gi();const n=document.getElementById("flutterflow-projects-select");n&&(n.innerHTML=''),_i()}function Ts(n){return!n||n.trim().length<5||n.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(n)}function If(n,e){const t=document.getElementById(n);t&&(t.value?e?t.style.borderColor="#22c55e":t.style.borderColor="#ef4444":t.style.borderColor="")}function Cf(){const n=document.getElementById("flutterflow-api-key-input");n&&(n.addEventListener("input",e=>{const t=e.target.value.trim().length>0;If("flutterflow-api-key-input",t)}),n.addEventListener("blur",xf(async e=>{const t=e.target.value.trim();t&&await nc(t)},500)))}function xf(n,e){let t;return function(...r){const i=()=>{clearTimeout(t),n(...r)};clearTimeout(t),t=setTimeout(i,e)}}async function nc(n){const e=document.getElementById("flutterflow-projects-select"),t=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',t&&t.classList.add("hidden");try{const r=await new Ps(n,"").listProjects();if(!r||r.length===0){e.innerHTML='';return}e.innerHTML='',r.forEach(i=>{const o=document.createElement("option");o.value=i.id||i.projectId||"",o.textContent=i.name||i.projectName||`Project ${i.id}`,e.appendChild(o)}),vs&&(e.value=vs)}catch(s){console.error("Failed to fetch projects:",s),e.innerHTML='',t&&(t.textContent=`Failed to load projects: ${s.message}`,t.classList.remove("hidden"))}}function kf(n){const e=document.getElementById(n),s=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",s.innerHTML=` - - `):(e.type="password",s.innerHTML=` - - - `)}let g={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1};function Tf(){g.step1Result=null,g.step2Result=null,g.step3Result=null,g.bundleSpec=null,g.artifactBundle=null,g.bundleReview=null,g.selectedArtifactId=null,g.resultsViewMode="summary"}function Rf(){g.bundleSpec=bn(g.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Rs(){var t,s,r,i;const n=ls(g.bundleSpec);g.artifactBundle=bn(g.step2Result,{id:(t=g.bundleSpec)==null?void 0:t.id,title:(s=g.bundleSpec)==null?void 0:s.title,description:(r=g.bundleSpec)==null?void 0:r.description,artifactType:n.artifactType,artifactName:n.artifactName,fileName:n.fileName,dependencies:n.dependencies,relationships:(i=g.bundleSpec)==null?void 0:i.relationships,code:g.step2Result||""});const e=pp(g.artifactBundle);g.artifactBundle={...g.artifactBundle,warnings:[...g.artifactBundle.warnings,...e.findings.map(o=>o.message)],metadata:{...g.artifactBundle.metadata,compatibility:e}},g.selectedArtifactId=ls(g.artifactBundle).id}function As(){var t,s,r,i,o,a,l,c;const n=bn(g.step3Result,{id:(t=g.artifactBundle)==null?void 0:t.id,title:(s=g.artifactBundle)==null?void 0:s.title}),e=new Map(n.artifacts.map(u=>[u.id,u.review]));g.bundleReview=bn({id:(r=g.artifactBundle)==null?void 0:r.id,title:(i=g.artifactBundle)==null?void 0:i.title,artifacts:((a=(o=g.artifactBundle)==null?void 0:o.artifacts)==null?void 0:a.map(u=>({...u,review:e.get(u.id)||u.review||g.step3Result||null})))||[],relationships:(l=g.artifactBundle)==null?void 0:l.relationships,warnings:(c=g.artifactBundle)==null?void 0:c.warnings})}function sc(){const n=yi();return{artifactType:n.artifactType||"CustomWidget",artifactName:n.artifactName||"GeneratedWidget"}}function yi(){const n=g.artifactBundle||g.bundleSpec||null;return(Array.isArray(n==null?void 0:n.artifacts)?n.artifacts:[]).find(t=>t.id===g.selectedArtifactId)||ls(n)}function wi(){return yi().code||g.step2Result||""}async function Af(){try{await gi()}catch(n){return console.error("checkConnection: initializeApiKeys failed:",n),!1}return!0}const Gn={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};class Ps{constructor(e,t,s="main",r=Gn.production){this.apiKey=e,this.baseUrl=r,this._projectId=t,this._branchName=s,this._endpoint=r}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){var s;console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let t=null;for(const r of e)try{const i=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(r)});if(!i.ok){const l=await i.text();t=new Error(`Export failed: ${i.status} - ${l}`);continue}const o=await i.json(),a=((s=o==null?void 0:o.value)==null?void 0:s.project_zip)||(o==null?void 0:o.project_zip);if(!a){t=new Error("Export response did not include project source.");continue}return a}catch(i){t=i}throw t||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),t=await JSZip.loadAsync(e,{base64:!0}),s=Object.keys(t.files).filter(a=>!t.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!s)throw new Error("Export did not contain a pubspec.yaml.");const r=s.slice(0,s.length-12),i=new Map,o=Object.keys(t.files).filter(a=>{if(t.files[a].dir||!a.startsWith(r))return!1;const l=a.slice(r.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{i.set(a.slice(r.length),await t.files[a].async("string"))})),{pubspecYaml:await t.files[s].async("string"),files:i}}async pushCodeWithRetry(e,t=3){var i,o,a;const s=[Gn.production,Gn.staging],r=Math.max(0,s.indexOf(this._endpoint));for(let l=0;lsetTimeout(m,1e3*(l+1)));continue}return d}catch(d){console.warn(`Push to ${u} failed: ${d.message}, trying next...`),await new Promise(p=>setTimeout(p,1e3*(l+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}async listProjects(e={}){const{page:t=1,limit:s=100}=e;console.log("Listing projects for API key via V2 endpoint");try{const r=await fetch("https://api.flutterflow.io/v2/l/listProjects",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(!r.ok){const a=await r.text();throw new Error(`List projects failed: ${r.status} - ${a}`)}const i=await r.json();if(i.success&&typeof i.value=="string")try{const a=JSON.parse(i.value);if(a&&Array.isArray(a.entries))return a.entries.map(l=>{var c;return{id:l.id,name:((c=l.project)==null?void 0:c.name)||l.id}})}catch(a){console.error("Failed to parse stringified project value:",a)}const o=i.projects||i.items||i.entries||(Array.isArray(i)?i:[]);return Array.isArray(o)?o:[]}catch(r){throw console.error("Error listing projects:",r),r}}}async function bi(n){const e=n.clone();let t;try{t=await n.json()}catch{const i=await e.text();if(!n.ok)return{success:!1,responseCode:n.status,errorMessage:i||`HTTP ${n.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${i}`)}if(!n.ok){let r=t.message||`HTTP ${n.status}`,i=new Map;if(t.errors)i=new Map(Object.entries(t.errors));else if(!t.message&&typeof t=="object"){const o=Object.keys(t).filter(a=>a.endsWith(".dart")&&Array.isArray(t[a]));o.length>0&&(i=new Map(Object.entries(t)),r=o.flatMap(l=>t[l].map(c=>`${l}: ${c.errorMessage}`)).join(` -`)||`HTTP ${n.status}`)}return{success:!1,responseCode:n.status,errorMessage:r,errorMap:i}}const s=t.value?JSON.parse(t.value):{};return{success:!0,responseCode:n.status,errorMap:new Map(Object.entries(s))}}function Ei(n,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[n]||`FlutterFlow API error: ${`HTTP ${n}`}`}const M={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},rc=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,ic=/extends\s+State<\w+>/;function Pf(n,e=""){if(n==="pubspec.yaml")return M.DEPENDENCIES;if(!n.endsWith(".dart")||n.endsWith("index.dart"))return M.OTHER;if(n==="custom_functions.dart")return M.FUNCTION;if(e){const t=rc.test(e),s=ic.test(e);if(t||s)return M.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return M.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return M.FUNCTION}return M.CODE_FILE}function oc(n,e){switch(e){case M.ACTION:return`lib/custom_code/actions/${n}`;case M.WIDGET:return`lib/custom_code/widgets/${n}`;case M.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case M.CODE_FILE:return`lib/custom_code/${n}`;case M.DEPENDENCIES:return"pubspec.yaml";case M.OTHER:return`lib/custom_code/${n}`;default:return n}}async function Si(n,e=new Map){return Bp(n,e)}const qr=new Map;function ac(n){return`${n.baseUrl}|${n.projectId}|${n.branchName}`}function Fs(n){qr.delete(ac(n))}async function Ii(n,e,t,s){const r=Sp(e,t);if(r.length===0)return{remoteFiles:t,syncFileMap:e};console.log(`Provisioning ${r.length} new FlutterFlow custom code file(s) before sync.`),re.set("provision");const i=await fetch(Jp,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:n.apiKey,projectId:n.projectId,baseUrl:n.baseUrl,commitMessage:s,customClasses:r,stream:!0})}),o=await Np(i,{onPhase:a=>re.setSubstatus(a),onLog:a=>console.log(`[custom class deploy] ${a}`)});if(!o.success){const a=o.details?` ${o.details}`:"";throw new Error(`${o.error||"FlutterFlow custom class provisioning failed."}${a}`)}return Fs(n),{remoteFiles:t,syncFileMap:Ip(e,r)}}async function Ci(n,e={}){const t=ac(n);let s=qr.get(t);if(s===void 0){try{s=await n.fetchProjectSource()}catch(i){throw new Error(`Could not read your project's pubspec.yaml (${i.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const r=Vl(s.pubspecYaml);if(!r.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${r.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);qr.set(t,s)}return{...zp(s.pubspecYaml,e),remoteFiles:s.files}}function Ff(n){const e=[],t=[];n.content.length>5e4&&t.push("Code file is large (>50KB). This may take longer to commit."),n.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const s=n.content.split(` -`).length;s>500&&t.push(`Code has ${s} lines. Consider breaking it into smaller widgets.`),n.content.includes("setState")&&n.codeType===M.ACTION&&t.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),n.content.includes("dynamic")&&!n.content.includes("?")&&t.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),n.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&t.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const r=n.content.match(/print\s*\(/g);return r&&r.length>3&&t.push(`Code contains ${r.length} print statements. Consider removing debug prints before committing.`),{canProceed:e.length===0,issues:e,warnings:t}}async function $f(n,e){let t=` -
    -
    -

    Commit Summary

    -

    - File: ${n.fileName}
    - Type: ${n.artifactType}
    - Size: ${(n.content.length/1024).toFixed(1)} KB
    - Lines: ${n.content.split(` -`).length} -

    -
    - `;return e.warnings.length>0&&(t+=` -
    -

    Warnings (${e.warnings.length})

    -
      - ${e.warnings.map(s=>`
    • • ${s}
    • `).join("")} -
    -
    - `),e.issues.length>0&&(t+=` -
    -

    Issues (${e.issues.length})

    -
      - ${e.issues.map(s=>`
    • • ${s}
    • `).join("")} -
    -
    - `),t+="
    ",console.log("Pre-commit summary:",t),e.canProceed?e.warnings.length>0?confirm(`Found ${e.warnings.length} warning(s). Proceed with commit? - -${e.warnings.join(` -`)}`):!0:!1}function lc(n,e={}){const{artifactType:t="CustomWidget",artifactName:s="GeneratedCode"}=e;let r=n.trim();r.startsWith("```dart")?r=r.replace(/^```dart\n/,""):r.startsWith("```")&&(r=r.replace(/^```\n/,"")),r.endsWith("```")&&(r=r.replace(/\n```$/,""));let i=s;i.endsWith(".dart")||(i+=".dart");let o=M.CODE_FILE;switch(t){case"CustomAction":o=M.ACTION;break;case"CustomWidget":o=M.WIDGET;break;case"CustomFunction":o=M.FUNCTION,i="custom_functions.dart";break;case"CustomClass":case"CodeFile":o=M.CODE_FILE;break}let a="";return o===M.WIDGET?a=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom widget code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:o===M.ACTION?a=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom action code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:o===M.FUNCTION&&(a=`// Automatic FlutterFlow imports -import 'dart:convert'; -import 'dart:math' as math; - -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:intl/intl.dart'; -import 'package:timeago/timeago.dart' as timeago; -import '/flutter_flow/lat_lng.dart'; -import '/flutter_flow/place.dart'; -import '/flutter_flow/uploaded_file.dart'; - -`),{content:a+r,fileName:i,codeType:o,artifactType:t,artifactName:s}}function Mf(n){const e={};for(const t of Bl(n))e[t]="^1.0.0";return e}function Of(n,e={}){return{timestamp:new Date().toISOString(),artifactType:n.artifactType,artifactName:n.artifactName,codeType:n.codeType,fileName:n.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:n.content.length}}function Nf(n,e,t,s=new Set,r=""){const i=[],o=rc.test(e),a=ic.test(e),l=[{pattern:/void\s+main\s*\(/,message:"Contains main() function - not allowed in FlutterFlow"},{pattern:/runApp\s*\(/,message:"Contains runApp() - not allowed in FlutterFlow"},{pattern:/MaterialApp\s*\(/,message:"Contains MaterialApp - not allowed in FlutterFlow"},{pattern:/Scaffold\s*\(/,message:"Contains Scaffold - usually not needed in FlutterFlow widgets"}],c=n.includes("custom_functions")||n.includes("functions"),u=/^\s*import\s+['"]([^'"]+)['"]/gm;let d;for(;(d=u.exec(e))!==null;){const p=d[1],f=p.startsWith("/flutter_flow/")||p.startsWith("/backend/")||p.startsWith("/custom_code/")||p==="index.dart"||p==="package:flutter/material.dart"||p==="package:flutter/services.dart",m=p.startsWith("dart:")||p.startsWith("package:");c?p.startsWith("dart:")||i.push(`Custom Functions cannot use '${p}' - only Dart SDK imports allowed`):!f&&!m&&i.push(`Unknown import '${p}' - use FlutterFlow managed imports`)}for(const{pattern:p,message:f}of l)p.test(e)&&i.push(f);if(t===M.WIDGET&&!o&&!a&&i.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),t===M.ACTION){const p=Dl(e,{functionName:r,declaredTypes:s});p&&i.push(p)}if(t===M.CODE_FILE){const p=Ll(n,e);p&&i.push(p)}return{valid:i.length===0,errors:i}}function $s(n){const e=[],t=[];if(!n||n.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:t};const s=new Set(Array.from(n.values()).flatMap(r=>Cs(r.content||"")));for(const[r,i]of n.entries()){if((!i.content||i.content.trim().length===0)&&e.push(`File ${r} is empty`),i.content&&i.content.length>1e5&&t.push(`File ${r} is very large (>100KB)`),r.endsWith(".dart")){const o=Nf(r,i.content,i.type,s,i.artifactName);o.valid||e.push(...o.errors.map(a=>`${r}: ${a}`))}if(r==="pubspec.yaml"){const o=Vl(i.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:t}}const D={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},B={currentState:D.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=D.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(n){if(!Object.values(D).includes(n)){console.error(`Invalid commit state: ${n}`);return}this.currentState=n,n===D.PREPARING&&(this.startTime=Date.now()),(n===D.SUCCESS||n===D.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:n,commitState:this}})),console.log(`Commit state changed to: ${n}`)},setError(n){this.error=n,this.setState(D.ERROR)},setSuccess(n){this.result=n,this.setState(D.SUCCESS)},setProgress(n,e){this.filesProcessed=n,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===D.PREPARING||this.currentState===D.VALIDATING||this.currentState===D.PUSHING}};async function Lf(n,e,t={}){let{codeType:s="W"}=t;const{pubspecDeps:r={},artifactName:i=e}=t;s==="CustomWidget"&&(s=M.WIDGET),s==="CustomAction"&&(s=M.ACTION),s==="CustomFunction"&&(s=M.FUNCTION),s==="CustomClass"&&(s=M.CODE_FILE),s==="CodeFile"&&(s=M.CODE_FILE),B.reset(),B.setState(D.PREPARING);try{const o=await ce("flutterflow"),a=await ce("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ts(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=Pn(),c=new Ps(o,a,"main",l);B.setState(D.VALIDATING);const u=new Map,d=s||Pf(e,n),p=oc(e,d);u.set(e,{artifactName:i,content:n,type:d,path:p}),B.setProgress(0,u.size);const f=$s(u);if(!f.valid)throw new Error(`Validation failed: -${f.errors.join(` -`)}`);const m=await Ci(c,r),v=m.yaml,_=await Ii(c,u,m.remoteFiles,`Provision ${i} custom class`),x=await Si(_.syncFileMap,_.remoteFiles),I=new Map(_.syncFileMap);I.set("pubspec.yaml",{content:v,type:"D",path:"pubspec.yaml"}),re.set("package");const T=await xi(I),C={project_id:a,zipped_custom_code:T,uid:`web_${Date.now()}`,branch_name:c.branchName,serialized_yaml:v,file_map:x.fileMapContents,functions_map:x.functionsMapContents};B.setState(D.PUSHING),B.setProgress(1,u.size),Fs(c),re.set("push");const y=await c.pushCode(C),P=await bi(y);if(P.success)B.setSuccess({fileCount:u.size,projectId:a,warnings:P.errorMap&&P.errorMap.size>0?Array.from(P.errorMap.entries()):[]});else{const A=P.errorMessage||Ei(P.responseCode);throw new Error(A)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:m.added,warnings:P.errorMap?Array.from(P.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),B.setError(o),{success:!1,error:o.message,state:B.currentState}}}async function xi(n){try{const e=new JSZip;for(const[s,r]of n.entries())e.file(s,r.content);return await e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}catch(e){return console.error("Error creating zip:",e),""}}async function cc(n,e={}){const{artifactType:t,artifactName:s,pipelineResult:r}=e;console.log(`Starting commit for ${s} (${t})`);try{B.setState(D.PREPARING);const i=lc(n,{artifactType:t,artifactName:s}),o=Mf(i.content);console.log("Detected dependencies:",o),B.setState(D.VALIDATING);const a=await ce("flutterflow"),l=await ce("flutterflow_project_id");if(!a)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!l)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ts(l))throw new Error("Invalid FlutterFlow Project ID format.");const c=new Map;c.set(i.fileName,{artifactName:s,content:i.content,type:i.codeType,path:oc(i.fileName,i.codeType),functionName:i.codeType===M.FUNCTION?s:void 0}),B.setProgress(0,c.size);const u=$s(c);if(!u.valid)throw new Error(`File validation failed: -${u.errors.join(` -`)}`);u.warnings.length>0&&console.warn("Validation warnings:",u.warnings),B.setState(D.PUSHING);const d=Pn(),p=new Ps(a,l,"main",d),f=await Ci(p,o),m=f.yaml,v=await Ii(p,c,f.remoteFiles,`Provision ${s} custom class`),_=await Si(v.syncFileMap,v.remoteFiles),x=new Map(v.syncFileMap);x.set("pubspec.yaml",{content:m,type:M.DEPENDENCIES,path:"pubspec.yaml"}),re.set("package");const I=await xi(x),T={project_id:l,zipped_custom_code:I,uid:`web_${Date.now()}`,branch_name:p.branchName,serialized_yaml:m,file_map:_.fileMapContents,functions_map:_.functionsMapContents};B.setProgress(1,c.size),Fs(p),re.set("push");const C=await p.pushCode(T),y=await bi(C);if(y.success){const P={...Of(i,r),projectId:l};return B.setSuccess({...P,fileCount:c.size,warnings:y.errorMap?Array.from(y.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${i.fileName} to FlutterFlow`,metadata:P,addedDependencies:f.added,warnings:y.errorMap?Array.from(y.errorMap.entries()):[],elapsedTime:B.getElapsedTime()}}else{const P=y.errorMessage||Ei(y.responseCode),A=new Error(P);throw A.errorMap=y.errorMap,A}}catch(i){console.error("Commit execution failed:",i),B.setError(i);let o=new Map;if(i.errorMap)o=i.errorMap;else if(i.message&&i.message.includes("{"))try{const a=i.message.match(/\{[\s\S]*\}/);if(a){const l=JSON.parse(a[0]);o=new Map(Object.entries(l))}}catch(a){console.warn("Failed to parse error map from commit response:",a)}return{success:!1,error:i.message,errorMap:o,state:B.currentState,elapsedTime:B.getElapsedTime()}}}async function Df(n,e={}){var s;const{pipelineResult:t}=e;try{if(B.setState(D.PREPARING),((s=n.errors)==null?void 0:s.length)>0)throw new Error(`Bundle validation failed: -${n.errors.join(` -`)}`);const r=new Map(n.fileEntries.map(y=>[y.fileName,{artifactId:y.artifactId,artifactName:y.artifactName,content:y.content,type:y.type,path:y.path,functionName:y.type===M.FUNCTION?y.artifactName:void 0}]));B.setProgress(0,r.size);const i=$s(r);if(!i.valid)throw new Error(`File validation failed: -${i.errors.join(` -`)}`);B.setState(D.VALIDATING);const o=await ce("flutterflow"),a=await ce("flutterflow_project_id");if(!o)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!a)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ts(a))throw new Error("Invalid FlutterFlow Project ID format.");B.setState(D.PUSHING);const l=Pn(),c=new Ps(o,a,"main",l),u=await Ci(c,n.dependencies),d=u.yaml,p=await Ii(c,r,u.remoteFiles,`Provision ${n.title} custom classes`),f=await Si(p.syncFileMap,p.remoteFiles),m=new Map(p.syncFileMap);m.set("pubspec.yaml",{content:d,type:M.DEPENDENCIES,path:"pubspec.yaml"}),re.set("package");const v=await xi(m),_={project_id:a,zipped_custom_code:v,uid:`web_${Date.now()}`,branch_name:c.branchName,serialized_yaml:d,file_map:f.fileMapContents,functions_map:f.functionsMapContents};B.setProgress(1,r.size),Fs(c),re.set("push");const x=await c.pushCode(_),I=await bi(x);if(I.success){const y={...t,artifactType:"Bundle",artifactName:n.title,fileName:`${n.fileEntries.length} artifacts`,codeSize:n.fileEntries.reduce((P,A)=>P+A.content.length,0),projectId:a};return B.setSuccess({...y,fileCount:r.size,warnings:I.errorMap?Array.from(I.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${n.fileEntries.length} artifacts to FlutterFlow`,metadata:y,addedDependencies:u.added,warnings:I.errorMap?Array.from(I.errorMap.entries()):[],elapsedTime:B.getElapsedTime()}}const T=I.errorMessage||Ei(I.responseCode),C=new Error(T);throw C.errorMap=I.errorMap,C}catch(r){return console.error("Bundle commit execution failed:",r),B.setError(r),{success:!1,error:r.message,errorMap:r.errorMap||new Map,state:B.currentState,elapsedTime:B.getElapsedTime()}}}async function Bf(n){try{return await _s("architect",Ur,Vd(n),ui("architect"))}catch(e){throw e.isModelArmor?e:new Error(`Prompt Architect failed: ${e.message}`)}}async function Ms(n,e){const t=qd(n),s=ui("generator",g.bundleSpec);try{return await _s("generator",e,t,s)}catch(r){if(r.isModelArmor)throw r;if(e!==ar){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,r.message);try{return await _s("generator",ar,t,s)}catch(i){throw i.isModelArmor?i:new Error(`Code Generator failed: primary (${e}): ${r.message} | fallback (${ar}): ${i.message}`)}}throw new Error(`Code Generator failed: ${r.message}`)}}async function Os(n,e=null){const t={...ui("review",g.artifactBundle||g.bundleSpec),architect_output:e};try{return await _s("review",Hr,Kd(n),t)}catch(s){throw s.isModelArmor?s:new Error(`Code Review failed: ${s.message}`)}}function ki(n,e){return n.isModelArmor?`${n.userTitle}: ${n.userMessage}`:`${e}: ${n.message}`}function Kr(n,e){const t=document.getElementById(`step${n}-item`),s=document.getElementById(`step${n}-status`);!t||!s||(t.classList.remove("active","completed","error"),s.classList.remove("running","completed","error"),e==="active"?(t.classList.add("active"),s.classList.add("running"),s.innerHTML=` - - `):e==="completed"?(t.classList.add("completed"),s.classList.add("completed"),s.innerHTML=` - - `):e==="error"?(t.classList.add("error"),s.classList.add("error"),s.innerHTML=` - - `):s.innerHTML=` - - `)}function X(n,e){const t=document.getElementById(`step${n}-loading`),s=document.getElementById(`step${n}-result`);e?(t.classList.remove("hidden"),s.classList.add("hidden"),Kr(n,"active")):(t.classList.add("hidden"),s.classList.remove("hidden"),Kr(n,"completed"))}function jf(n){const e=document.getElementById(`${n}-content`),t=document.getElementById(`${n}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),t&&(t.style.transform="rotate(0deg)")):(e.classList.add("open"),t&&(t.style.transform="rotate(180deg)"))}function Uf(n){Se(parseInt(n.replace("step","")))}function Se(n){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${n}-item`);e&&e.classList.add("active"),bt();const t=document.getElementById("ready-state");t&&t.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const s=document.getElementById(`step${n}-content`);s&&s.classList.remove("hidden");const r=document.getElementById("stage-title"),i={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};r&&(r.textContent=i[n]||"Active Workflow Stage")}function Hf(n){const e=document.getElementById(n);if(!e)return;const t=e.dataset.raw||e.textContent;navigator.clipboard.writeText(t).then(()=>{Me("Code Copied",{elementId:n});const s=e.closest(".code-container"),r=s==null?void 0:s.querySelector(".copy-btn");r&&(r.classList.add("copied"),r.innerHTML=' Copied!',setTimeout(()=>{r.classList.remove("copied"),r.innerHTML=' Copy'},2e3))}).catch(s=>{console.warn("Failed to copy to clipboard:",s)})}function Yr(n){const e=document.getElementById("step1-model-label");e&&(e.textContent=we(Ur));const t=Zr(n),s=document.getElementById("step2-model-label");s&&(t!==n?s.textContent=`${we(n)} → ${we(t)} (Free Tier)`:s.textContent=we(n));const r=document.getElementById("step3-model-label");r&&(r.textContent=we(Hr)),console.log(`Step 1 (Prompt Architect): ${we(Ur)}`),console.log(t!==n?`Step 2 (Code Generator): ${we(n)} → ${we(t)} (Free Tier fallback)`:`Step 2 (Code Generator): ${we(n)}`),console.log(`Step 3 (Code Review): ${we(Hr)}`)}async function Wf(){if(console.log("runRefinement called"),g.isRunning)return;const n=document.getElementById("code-generator-model").value;g.isRunning=!0,Ti("standardRegenerate",g.step2Result,g.step1Result);const e=document.querySelectorAll(".btn-refine-action");e.forEach(t=>{t.disabled=!0,t.innerHTML=` - - - Refining...`});try{const t=yi(),s=Yd({bundleSpec:g.step1Result,artifactBundle:JSON.stringify(g.artifactBundle||g.step2Result),bundleReview:g.step3Result,artifactId:t.id,userFeedback:"Fix the issues listed in the audit report."});Bs(),Le(2),Se(2),X(2,!0),g.step2Result=await Ms(s,n),Rs();const r=document.getElementById("step2-output"),i=Ht(g.step2Result);r.textContent=i,r.dataset.raw=i,X(2,!1),Se(3),Le(3),X(3,!0),g.step3Result=await Os(g.step2Result,g.step1Result),As();const o=document.getElementById("step3-output");o.textContent=g.step3Result,X(3,!1),dt();const a=xs(g.step3Result);js(i,a)}catch(t){console.error("Refinement failed:",t),dt(),V(ki(t,"Refinement failed"),"error")}finally{g.isRunning=!1,e.forEach(t=>{t.disabled=!1,t.textContent="Refine & Regenerate"}),Et()}}async function Ti(n,e,t){const s=`${xe}/connectFeedback`,r={type:n,code:e,input:t};try{const i=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!i.ok){const a=await i.text();return console.error(`callEndpoint failed: ${i.status} ${i.statusText}`,a),{success:!1,status:i.status,error:a}}const o=await i.json();return console.log("Telemetry success:",o),o}catch(i){return console.error("callEndpoint failed:",i),{success:!1,error:i.message}}}function zf(){const n=document.getElementById("ff-error-paste-input");n&&(n.value="")}async function Gf(){var r;const n=document.getElementById("ff-error-paste-input"),e=(r=n==null?void 0:n.value)==null?void 0:r.trim();if(!e){n==null||n.focus(),n==null||n.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>n==null?void 0:n.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!g.step2Result){V("No generated code found. Please run the full pipeline first.","warning");return}if(g.isRunning)return;const t=document.getElementById("code-generator-model").value;g.isRunning=!0,Ti("flutterflowError",g.step2Result,e);const s=document.getElementById("btn-fix-from-errors");s&&(s.disabled=!0,s.innerHTML=` - - Fixing…`);try{const i=Fl({bundleSpec:g.step1Result,artifactBundle:JSON.stringify(g.artifactBundle||g.step2Result),bundleReview:g.step3Result,userFeedback:e});_c(),Bs(),Le(2),Se(2),X(2,!0),g.step2Result=await Ms(i,t),Rs();const o=document.getElementById("step2-output"),a=Ht(g.step2Result);o.textContent=a,o.dataset.raw=a,X(2,!1),Se(3),Le(3),X(3,!0),g.step3Result=await Os(g.step2Result,g.step1Result),As();const l=document.getElementById("step3-output");l.textContent=g.step3Result,X(3,!1),dt();const c=xs(g.step3Result);js(a,c),n&&(n.value="")}catch(i){console.error("Fix from errors failed:",i),dt(),V(ki(i,"Failed to fix errors"),"error")}finally{g.isRunning=!1,s&&(s.disabled=!1,s.textContent="Fix Errors & Regenerate"),Et()}}async function Jr(){if(console.log("runThinkingPipeline called"),g.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const n=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value;if(!n.trim()){V("Please describe your FlutterFlow widget first.","warning");return}if(!await dh())return;const t=Zr(e);Me("Pipeline Started",{selectedModel:e,effectiveModel:t,inputLength:n.length});const s=document.getElementById("btn-run-pipeline");g.isRunning=!0,Tf(),s.disabled=!0,s.innerHTML=` - - - Running...`,Yr(t);try{bt();const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const i=document.getElementById("paywall-exhausted");i&&i.classList.add("hidden"),Bs(),Se(1),Le(1),X(1,!0),g.step1Result=await Bf(n),Rf(),Me("Prompt Architect Completed");const o=document.getElementById("step1-output"),a=Ht(g.step1Result);o.textContent=a,o.dataset.raw=a,X(1,!1),Se(2),Le(2),X(2,!0),g.step2Result=await Ms(g.step1Result,t),Rs(),Me("Code Generator Completed");const l=document.getElementById("step2-output"),c=Ht(g.step2Result);l.textContent=c,l.dataset.raw=c,X(2,!1),Se(3),Le(3),X(3,!0),g.step3Result=await Os(g.step2Result,g.step1Result),As(),Me("Code Review Completed");const u=document.getElementById("step3-output");u.textContent=g.step3Result,X(3,!1),dt();const d=xs(g.step3Result);js(c,d),oh(),Ls()}catch(r){if(console.error("Pipeline failed:",r),dt(),r.isUsageLimit){const{count:u}=Ns();Oi(u,Mi(),{openModal:!0});return}Me("Pipeline Failed",{error:r.message,effectiveModel:Zr(document.getElementById("code-generator-model").value)});const o=Vp(r,{architect:1,generator:2,review:3});Se(o);const a=document.getElementById(`step${o}-result`),l=document.getElementById(`step${o}-loading`),c=document.getElementById(`step${o}-output`);if(l&&l.classList.add("hidden"),a&&a.classList.remove("hidden"),c)if(r.isModelArmor)c.innerHTML=``;else{let u=r.message;r.message.includes("image input")?u=`This model doesn't support image input. Please use ${we(En)} for image-based requests or remove image references from your prompt.`:(r.message.includes("Load failed")||r.message.includes("CORS"))&&(u="API connection failed. This might be due to CORS restrictions or network issues. Please check your API key and try again."),c.innerHTML=`
    -

    Connection Error

    -

    ${F(u)}

    -
    -

    Check if API key is valid

    -

    Try using a different model

    -

    Ensure network allows API calls

    -
    -
    `}Kr(o,"error")}finally{g.isRunning=!1,s.disabled=!1,s.innerHTML=` - - - Run Pipeline`,Et()}}function Vf(){const n=document.getElementById("code-generator-model").value,e=[En,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(s=>s!==n),t=prompt(`Retry with different model? - -Current: ${n} - -Options: -1. ${e[0]} -2. ${e[1]} - -Enter 1 or 2:`);t==="1"?(document.getElementById("code-generator-model").value=e[0],Jr()):t==="2"&&(document.getElementById("code-generator-model").value=e[1],Jr())}async function qf(){var c,u,d;const n=wi();if(!n){V("No code to commit. Please run the pipeline first.","warning");return}const e=await ce("flutterflow"),t=await ce("flutterflow_project_id");if(!e||!t){V("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),mi();return}if(((u=(c=g.artifactBundle)==null?void 0:c.artifacts)==null?void 0:u.length)>1){await Kf();return}const{artifactType:s,artifactName:r}=sc(),i=lc(n,{artifactType:s,artifactName:r}),o=Ff(i);if(!await $f(i,o)){console.log("User cancelled commit");return}Li({withProvisioning:i.codeType===M.CODE_FILE}),Me("Deploy to FlutterFlow Started",{artifactType:s,artifactName:r});const l=await cc(n,{artifactType:s,artifactName:r,pipelineResult:{step1Result:g.step1Result,selectedModel:(d=document.getElementById("code-generator-model"))==null?void 0:d.value}});kn(),l.success?(Me("Deploy to FlutterFlow Success",{artifactType:s,artifactName:r}),ws(l)):(Me("Deploy to FlutterFlow Failed",{artifactType:s,artifactName:r,error:l.error}),bs(l))}async function Kf(){const n=await ce("flutterflow"),e=await ce("flutterflow_project_id");if(!n||!e){V("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),mi();return}const t=yp(g.artifactBundle);if(t.errors.length>0){V(`Bundle validation failed: ${t.errors.join("; ")}`,"error");return}const s=new Map(t.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),r=$s(s),i={canProceed:r.valid&&t.errors.length===0,issues:[...t.errors,...r.errors],warnings:[...t.warnings,...r.warnings]};if(!i.canProceed){V(`Bundle validation failed: ${i.issues.join("; ")}`,"error");return}const o={content:t.fileEntries.map(a=>`// ${a.fileName} -${a.content}`).join(` - -`),fileName:`${t.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:t.title};yh(o,i,t.dependencies,t)}function Yf(n){var r;let e=n.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let t=`
    -

    FlutterFlow Commit Failed

    -

    ${F(n.error)}

    `;if(e&&e.size>0){t+=`
    -

    Errors:

    -
      `;for(const[i,o]of e.entries()){const a=Ul(o);t+=`
    • - ${F(i)}: ${F(a)} -
    • `}t+="
    "}t+="
    ",t+=`
    - -
    `;const s=document.getElementById("step3-output");s&&(s.innerHTML=t,(r=document.getElementById("btn-regenerate-from-error"))==null||r.addEventListener("click",()=>{Jf(n.error,e)}))}async function Jf(n,e){if(g.isRunning)return;const t=document.getElementById("code-generator-model").value;g.isRunning=!0;const s=document.getElementById("btn-regenerate-from-error");s&&(s.disabled=!0,s.innerHTML=` - - Fixing...`);try{let r=`The previous code had the following errors when committing to FlutterFlow: - -`;if(e&&e.size>0)for(const[u,d]of e.entries()){const p=Ul(d);r+=`File: ${u} -Error: ${p} - -`}else r+=`${n} -`;const i=Fl({bundleSpec:g.step1Result,artifactBundle:JSON.stringify(g.artifactBundle||g.step2Result),bundleReview:g.step3Result,userFeedback:r});Bs(),Le(2),Se(2),X(2,!0),g.step2Result=await Ms(i,t),Rs();const o=document.getElementById("step2-output"),a=Ht(g.step2Result);o.textContent=a,o.dataset.raw=a,X(2,!1),Se(3),Le(3),X(3,!0),g.step3Result=await Os(g.step2Result,g.step1Result),As();const l=document.getElementById("step3-output");l.textContent=g.step3Result,X(3,!1),dt();const c=xs(g.step3Result);js(a,c)}catch(r){console.error("Regeneration failed:",r),dt(),V(ki(r,"Regeneration failed"),"error")}finally{g.isRunning=!1,s&&(s.disabled=!1,s.textContent="Fix Errors & Regenerate"),Et()}}async function Zf(){const n=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!n||!e)return;const t=await ce("flutterflow"),s=await ce("flutterflow_project_id");t&&s?(n.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):t||s?(n.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(n.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function Xf(n){try{const e=await fetch(`${xe}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:n})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:n,message:e.message,stack:e.stack}),e}}async function Qf(n){try{const t=await(await fetch(`${xe}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();if(t.error||!t.email||!t.sessionToken)throw new Error(t.error||"Invalid or expired link");return t}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function eh(n){try{const e=await fetch(`${xe}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:n})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${xe}/auth/refresh-session`,status:e.status}),null;const t=await e.json();return t.error||!t.email||!t.sessionToken?(console.warn("refreshSession: validation failed",{error:t.error,hasEmail:!!t.email,hasToken:!!t.sessionToken}),null):t}catch(e){return console.error("refreshSession: fetch failed",{url:`${xe}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function da(n,e){const t=uc(),s=(L.email||t.email)!==n;L.email=n,L.sessionToken=e,L.isVerified=!0,q=Wt({isLoading:!0}),localStorage.setItem(us,JSON.stringify({email:n,sessionToken:e})),s&&Ni()}function Ri(){L.email=null,L.sessionToken=null,L.isVerified=!1,q=Wt({isResolved:!0}),localStorage.removeItem(us),localStorage.removeItem(ps)}function uc(){try{const n=localStorage.getItem(us);if(!n)return{email:null,sessionToken:null};const e=JSON.parse(n);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(n){return console.warn("getStoredSession: failed to parse auth session:",n),localStorage.removeItem(us),{email:null,sessionToken:null}}}async function th(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname);try{const{email:t,sessionToken:s}=await Qf(e);da(t,s)}catch(t){V(t.message||"Sign-in link invalid or expired.","error")}}else{const{email:t,sessionToken:s}=uc();if(t&&s){const r=await eh(s);r?da(r.email,r.sessionToken):Ri()}}Pi()}function Ai(){const n=document.getElementById("signin-modal");n&&n.classList.add("open")}function nh(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("signin-modal");e&&e.classList.remove("open")}async function sh(){var i;const n=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),t=document.getElementById("signin-message"),s=(i=n==null?void 0:n.value)==null?void 0:i.trim();if(!s||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(s)||s.length>254){t&&(t.textContent="Please enter a valid email address.");return}e&&(e.disabled=!0,e.textContent="Sending…"),t&&(t.textContent="");try{await Xf(s),n&&(n.value=""),t&&(t.textContent=`Check your email — we sent a link to ${s}`),e&&(e.textContent="Sent!")}catch(o){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:s,err:o}),t&&(t.textContent="Something went wrong. Please try again."),e&&(e.disabled=!1,e.textContent="Send Link")}}function rh(){Ri(),Ni(),Pi(),Ds()}function Pi(){const n=L.isVerified&&!!L.email,e=document.getElementById("auth-signedout"),t=document.getElementById("auth-signedin"),s=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",n),t&&t.classList.toggle("hidden",!n),s&&s.classList.toggle("hidden",n);const r=document.getElementById("auth-user-email");r&&(r.textContent=L.email||""),Vn(),Ds()}async function ih(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),t=e.visitorId,s=await fetch(tf,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:t})});if(!s.ok)throw new Error(`Identity check HTTP ${s.status}`);const r=await s.json();if(Un.userId=r.user_id,Un.status=r.status,Un.resolved=!0,sessionStorage.setItem(ef,r.user_id),r.usage_count!==void 0){const i=yt(),o=r.usage_month||i,a=o===i?r.usage_count:0,l=Fi(),c=l.month===i?l.count:0;(a>=c||o>l.month)&&localStorage.setItem(Nt,JSON.stringify({count:a,month:i})),Ls()}console.log(`Identity resolved: ${r.status} (${r.user_id.slice(0,8)}...) usage: ${r.usage_count??"n/a"}`)}catch(n){console.error("resolveIdentity failed:",n)}}function Fi(){const n=yt();try{const e=localStorage.getItem(Nt);return e?JSON.parse(e):{count:0,month:n}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:Nt,month:n,err:e}),localStorage.removeItem(Nt),{count:0,month:n}}}function yt(){const n=new Date;return`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,"0")}`}function Ns(){const n=Fi();return n.month!==yt()?{count:0,month:yt()}:n}function oh(){const e={count:Ns().count+1,month:yt()};return localStorage.setItem(Nt,JSON.stringify(e)),e}function $i(){return!!q.isLoading}function wt(){return!!q.isResolved}function ah(n){if(!n)return null;const e=String(n).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(ds,e)?e:null}function lh(n){var e;return n&&((e=Object.entries(Kl).find(([,t])=>t===n))==null?void 0:e[0])||null}function Dn(...n){return n.find(e=>e!=null&&e!=="")}function ch(...n){return n.find(e=>e&&typeof e=="object")||{}}function uh(n){var u,d,p,f,m,v,_,x,I,T,C,y,P,A,R,ne,J,ie,oe,ve;const e=n.data&&typeof n.data=="object"?n.data:n,t=ch(e.subscription,e.stripeSubscription,e.currentSubscription,(p=(d=(u=e.customer)==null?void 0:u.subscriptions)==null?void 0:d.data)==null?void 0:p[0],(m=(f=e.subscriptions)==null?void 0:f.data)==null?void 0:m[0],(v=e.subscriptions)==null?void 0:v[0]),s=e.metadata||t.metadata||((_=e.customer)==null?void 0:_.metadata)||{},r=Dn(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,t.priceId,t.price_id,(x=t.plan)==null?void 0:x.id,(I=t.price)==null?void 0:I.id,(P=(y=(C=(T=t.items)==null?void 0:T.data)==null?void 0:C[0])==null?void 0:y.price)==null?void 0:P.id,(ne=(R=(A=t.items)==null?void 0:A[0])==null?void 0:R.price)==null?void 0:ne.id,(ve=(oe=(ie=(J=t.lines)==null?void 0:J.data)==null?void 0:ie[0])==null?void 0:oe.price)==null?void 0:ve.id),i=Dn(e.status,e.subscriptionStatus,e.subscription_status,t.status,"none"),o=ah(Dn(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,t.tier,t.plan,s.tier,s.plan)),a=nf.has(String(i).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,c=o||lh(r)||(a||l?"professional":"free");return Wt({tier:c,status:i,periodEnd:Dn(e.periodEnd,e.currentPeriodEnd,e.current_period_end,t.current_period_end,t.periodEnd,null),isResolved:!0})}function Mi(){return ds[q.tier]??ds.free}async function dh(){if(L.isVerified&&(!wt()||$i())&&(await dc({force:!0}),Ds()),L.isVerified&&!wt())return V("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:n}=Ns(),e=Mi();if(n>=e)return Oi(n,e,{openModal:!0}),!1;const t=Math.floor(e*.8);if(n>=t){const s=e-n;V(`${s} run${s===1?"":"s"} remaining this month.`,"warning")}return!0}function lr(){const n=document.getElementById("paywall-exhausted");n&&n.classList.add("hidden")}function Oi(n,e,t={}){const s=document.getElementById("walkthrough-modal");s&&s.classList.remove("open");const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const i=document.getElementById("preview-frame-container");i&&(i.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const c=document.getElementById("paywall-exhausted");if(!c){V(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),ys();return}const u=document.getElementById("paywall-exhausted-text");if(u){const p=q.tier;p==="free"?u.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:u.textContent=`You've used all ${e} generations this month on your ${p} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",L.isVerified),c.classList.remove("hidden"),t.openModal&&ys()}function Zr(n){return q.tier==="free"&&Hn.includes(n)?En:n}function ph(){const n=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!n||!e)return;const t=q.tier,r=!(L.isVerified&&!wt())&&t==="free";Array.from(e.options).forEach(o=>{const a=we(o.value),l=Hn.includes(o.value);o.textContent=l&&r?`${a} (PRO)`:a,o.disabled=!1}),r&&Hn.includes(e.value)&&(e.value=En),e.disabled=!1,na.has(e)||(e.addEventListener("change",()=>{wt()&&q.tier==="free"&&Hn.includes(e.value)&&(e.value=En,ys()),Yr(e.value)}),na.add(e));let i=document.getElementById("model-selector-free-notice");r?(i||(i=document.createElement("p"),i.id="model-selector-free-notice",i.className="text-xs text-gray-400 mt-1",n.appendChild(i)),i.innerHTML='Free plan — Gemini only. '):i&&i.remove(),Yr(e.value)}function Ls(){const n=document.getElementById("usage-counter");if(!n)return;if(L.isVerified&&$i()){n.textContent="Checking plan…",n.className="text-xs text-gray-500",Vn(),lr();return}if(L.isVerified&&!wt()){n.textContent="Plan check failed",n.className="text-xs text-red-600 font-medium",Vn(),lr();return}const{count:e}=Ns(),t=Mi();n.textContent=`${e} / ${t} runs this month`;const s=t>0?e/t:0;n.className=s>=1?"text-xs text-red-600 font-medium":s>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500",Vn(),e>=t&&!g.isRunning?Oi(e,t):lr()}function Vn(){const n=document.getElementById("guest-usage-text");if(!n)return;const e=Fi(),t=e.month===yt()?e.count??0:0,s=ds.free;n.textContent=`${t} / ${s} generations used`}async function dc(n={}){const e=n.force===!0;if(!L.isVerified||!L.sessionToken){q=Wt({isResolved:!0});return}q={...q,isLoading:!0,error:null};const t=localStorage.getItem(ps);if(!e&&t)try{const{data:s,email:r,ts:i,version:o}=JSON.parse(t);if(o===sa&&r===L.email&&Date.now()-i<5*60*1e3){q={...s,isLoading:!1,isResolved:s.isResolved!==!1};return}}catch(s){console.warn("Failed to parse subscription cache:",s,"| raw value:",t)}try{const r=await(await fetch(`${xe}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:L.sessionToken,email:L.email})})).json();if(r.error){if(["unauthorized","invalid session","expired session"].some(o=>String(r.error).toLowerCase().includes(o))){Ri(),Pi();return}q=Wt({isResolved:!1,error:r.error});return}q=uh(r),localStorage.setItem(ps,JSON.stringify({version:sa,data:q,email:L.email,ts:Date.now()}))}catch(s){console.error("fetchSubscription failed:",s),q={...q,isLoading:!1,isResolved:!1,error:s.message}}}function Ni(){localStorage.removeItem(ps)}async function fh(n){if(!L.isVerified||!L.sessionToken){pc(),Ai();return}if(!Kl[n]){V("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${n}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const s=await(await fetch(`${xe}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:n,sessionToken:L.sessionToken,currency:Yl()})})).json();if(s.error||!s.url)throw new Error(s.error||"Failed to create checkout session");const{url:r}=s;window.location.href=r}catch(t){console.error("startCheckout failed:",t),e&&(e.disabled=!1,e.textContent="Subscribe"),V("Could not start checkout. Please try again.","error")}}async function hh(){if(!L.isVerified||!L.sessionToken){Ai();return}const n=document.getElementById("manage-billing-btn");n&&(n.disabled=!0,n.textContent="Loading…");try{const t=await(await fetch(`${xe}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:L.sessionToken})})).json();if(t.error||!t.url)throw new Error(t.error||"Failed to open billing portal");const{url:s}=t;window.location.href=s}catch(e){console.error("openCustomerPortal failed:",e),n&&(n.disabled=!1,n.textContent="Manage billing"),V("Could not open billing portal. Please try again.","error")}}async function _s(n,e,t,s={}){const i=new AbortController,o=setTimeout(()=>i.abort(),12e4);try{const a=await fetch(Qp,{method:"POST",headers:{"Content-Type":"application/json"},signal:i.signal,body:JSON.stringify({user_id:Un.userId,step:n,model:e,prompt:t,context:s})}),l=await a.json();if(a.status===429){l.serverCount!==void 0&&(localStorage.setItem(Nt,JSON.stringify({count:l.serverCount,month:yt()})),Ls());const d=new Error(l.message||"Monthly usage limit reached. Upgrade to continue.");throw d.isUsageLimit=!0,d}const c=np(l,n);if(c)throw c;if(console.log(`[BuildShip] ${n} response keys:`,Object.keys(l),"content type:",typeof l.content),!a.ok)throw new Error(`${l.message||l.error||"BuildShip pipeline error"} (HTTP ${a.status})`);let u=l.output||l.content;if(!u)throw new Error(`BuildShip returned no output for step "${n}"`);return Array.isArray(u)&&(u=u.map(d=>typeof d=="string"?d:d.text||"").join("")),typeof u!="string"&&(u=JSON.stringify(u)),u}catch(a){throw a.name==="AbortError"?new Error(`BuildShip ${n} timed out after ${12e4/1e3}s`):a instanceof TypeError?new Error(`BuildShip unreachable: ${a.message}`):a}finally{clearTimeout(o)}}function gh(){const e=new URLSearchParams(window.location.search).get("checkout");e==="success"?(window.history.replaceState({},"",window.location.pathname),Ni(),V("Subscription active! Welcome aboard.","success")):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname),V("Checkout cancelled.","info"))}function Ds(){const n=L.isVerified&&!!L.email,e=q.tier,t=n&&$i(),s=!n||wt(),r=document.getElementById("subscription-tier-badge");if(r){const a={free:"Free",professional:"Professional",power:"Power Developer"},l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};r.textContent=t?"Checking…":s?a[e]||"Free":"Plan unavailable",r.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${s?l[e]||l.free:l.unresolved}`}const i=document.getElementById("upgrade-prompt");i&&i.classList.toggle("hidden",!n||t||!s||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!n||t||s&&e==="free"),mh(s?e:null),ph(),Ls()}function mh(n){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([r,{btnId:i,defaultText:o}])=>{const a=document.getElementById(i);a&&(r===n?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const s=document.getElementById("free-tier-current");s&&s.classList.toggle("hidden",n!=="free")}function Xr(){const n=Yl(),e=document.getElementById("pro-price"),t=document.getElementById("power-price"),s=document.getElementById("pro-price-note"),r=document.getElementById("power-price-note");e&&(e.textContent=ia(ra.professional,n)),t&&(t.textContent=ia(ra.power,n));const i="billed monthly";s&&(s.textContent=i),r&&(r.textContent=i)}function ys(){Xr();const n=document.getElementById("pricing-modal");n&&n.classList.add("open"),rf().then(()=>Xr())}function pc(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("pricing-modal");e&&e.classList.remove("open")}function V(n,e="info"){const t={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},s=document.createElement("div");s.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${t[e]||t.info}`,s.textContent=n,document.body.appendChild(s),setTimeout(()=>{s.style.opacity="0",setTimeout(()=>s.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),vh(),await th(),gh(),await dc(),Ds(),Xr(),await Af(),Cf();const n=document.getElementById("flutterflow-endpoint-select");if(n){const t=Pn();n.value=t}tc(),ih();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{Ze===2&&e.value.trim().length>0&&(vi(),ks())}),e.addEventListener("blur",()=>{const t=document.getElementById("walkthrough-modal");Ze===2&&t&&t.classList.add("open")}),e.addEventListener("keydown",t=>{if(t.key==="Tab"){const s=document.getElementById("walkthrough-modal");Ze===2&&s&&setTimeout(()=>{s.classList.add("open")},100)}})),window.addEventListener("commitStateChange",t=>{const{state:s}=t.detail;s===D.PREPARING||s===D.VALIDATING||s===D.PUSHING?(re.phaseId||Li(),fa(s)):(s===D.SUCCESS||s===D.ERROR)&&(fa(s),setTimeout(kn,1e3))})});function vh(){const n=document.getElementById("preview-frame-container");n&&(n.style.display="")}function _h(){const n=document.getElementById("welcome-video-player");n&&(n.addEventListener("click",bt),document.addEventListener("keydown",bt))}function bt(){const n=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),t=document.getElementById("ready-state");n&&(n.style.display="none"),e&&e.classList.add("visible"),t&&t.classList.remove("hidden");const s=document.getElementById("welcome-video-player");s&&s.removeEventListener("click",bt),document.removeEventListener("keydown",bt),tc()}let hn=null;function yh(n,e,t,s=null){hn={codeInfo:n,checks:e,deps:t,bundlePlan:s},document.getElementById("confirm-file-name").textContent=n.fileName,document.getElementById("confirm-artifact-type").textContent=n.artifactType,document.getElementById("confirm-file-size").textContent=`${(n.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=s?`${s.fileEntries.length} files`:n.content.split(` -`).length,ce("flutterflow_project_id").then(c=>{document.getElementById("confirm-project-id").textContent=c||"Not configured"});const r=document.getElementById("confirm-deps-list"),i=document.getElementById("confirm-deps-section");t&&Object.keys(t).length>0?(r.innerHTML=Object.entries(t).map(([c,u])=>`
  • • ${Je(c)}: ${Je(u)}
  • `).join(""),i.classList.remove("hidden")):i.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(c=>`
  • • ${Je(c)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=n.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&l.classList.add("open")}function fc(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&e.classList.remove("open"),hn=null}function wh(n){if(n&&n.target!==n.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&e.classList.remove("open");const t=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const i of t){const o=document.getElementById(i);o&&(o.textContent="")}const s=document.getElementById("success-warnings-section");s&&s.classList.add("hidden");const r=document.getElementById("success-warnings-list");r&&(r.innerHTML="")}function ws(n){var f,m,v,_;const e=(x,I)=>{const T=document.getElementById(x);T&&(T.textContent=I||"")},t=((f=n.metadata)==null?void 0:f.fileName)||"",s=((m=n.metadata)==null?void 0:m.projectId)||"",r=((v=n.metadata)==null?void 0:v.artifactType)||"",i=n.elapsedTime?`${(n.elapsedTime/1e3).toFixed(1)}s`:"",o=(_=n.metadata)!=null&&_.codeSize?`${(n.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",n.message||"Code committed successfully!"),e("success-project-id",s),e("success-file-name",t),e("success-artifact-type",r),e("success-time",i),e("success-size",o);const a=n.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const c=document.getElementById("success-open-ff-link");c&&s&&(c.href=`https://app.flutterflow.io/project/${s}`);const u=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list");n.warnings&&n.warnings.length>0&&u&&d&&(d.innerHTML=n.warnings.map(([x,I])=>`
  • ${F(x)}: ${F(String(I))}
  • `).join(""),u.classList.remove("hidden"));const p=document.getElementById("commit-success-modal");p&&p.classList.add("open")}function bs(n){kn(),Yf(n)}function bh(){const n=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");n.classList.contains("hidden")?(n.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(n.classList.add("hidden"),e.style.transform="rotate(0deg)")}const pa={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},Eh=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],re={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:n=!1}={}){this.sequence=["prepare","validate","project"],n&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&e.classList.add("open"),this.set("prepare")},set(n,e=null){if(!(!pa[n]||n===this.phaseId)){if(!this.sequence.includes(n)){const t=this.sequence.indexOf("package");this.sequence.splice(t===-1?this.sequence.length:t,0,n)}this.phaseId=n,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),n!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(n){n&&(this.liveSubstatus=!0,this.substatus=n,this.render())},render(){const n=pa[this.phaseId];if(!n)return;const e=(Date.now()-this.phaseStartedAt)/1e3,t=n.start+(n.end-n.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=Eh.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const s=this.sequence.indexOf(this.phaseId),i=[`Step ${s===-1?1:s+1} of ${this.sequence.length}`];e>=5&&i.push(Sh(e)),hc(this.phaseId==="done"?100:t,n.message,i.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const n=document.getElementById("commit-progress-overlay");n&&n.classList.remove("open")}};function Sh(n){const e=Math.floor(n);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function Li(n){re.start(n)}function kn(){re.stop()}function hc(n,e,t,s=null){const r=document.getElementById("commit-progress-bar"),i=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");r&&(r.style.width=`${Math.round(n*10)/10}%`),i&&(i.textContent=e),o&&(o.textContent=t),a&&(a.textContent=s||"",a.classList.toggle("hidden",!s))}function fa(n){const e={[D.PREPARING]:"prepare",[D.VALIDATING]:"validate",[D.PUSHING]:"project",[D.SUCCESS]:"done"};if(n===D.ERROR){re.timer&&clearInterval(re.timer),re.timer=null,hc(100,"Failed","Error occurred");return}const t=e[n];t&&re.set(t)}function Ih(n){var e;return n.bundlePlan?n.bundlePlan.fileEntries.some(t=>t.type===M.CODE_FILE):((e=n.codeInfo)==null?void 0:e.codeType)===M.CODE_FILE}async function Ch(){var i,o;if(!hn){console.error("No pending commit data");return}const n=hn;if(fc(),Li({withProvisioning:Ih(n)}),n.bundlePlan){const a=await Df(n.bundlePlan,{pipelineResult:{step1Result:g.step1Result,selectedModel:(i=document.getElementById("code-generator-model"))==null?void 0:i.value}});kn(),a.success?ws(a):bs(a);return}const{codeInfo:e}=n,{artifactType:t,artifactName:s}=sc(),r=await cc(e.content,{artifactType:t,artifactName:s,pipelineResult:{step1Result:g.step1Result,selectedModel:(o=document.getElementById("code-generator-model"))==null?void 0:o.value}});kn(),r.success?ws(r):bs(r),hn=null}window.runThinkingPipeline=Jr;window.toggleStep=Uf;window.toggleSection=jf;window.selectWorkflowStep=Se;window.copyCode=Hf;window.retryWithDifferentModel=Vf;window.openApiKeysModal=mi;window.closeApiKeysModal=Ql;window.closeWalkthroughModal=yf;window.openWalkthroughModal=_f;window.advanceWalkthrough=vi;window.commitToFlutterFlow=Lf;function xh(){const n=document.getElementById("pipeline-input");n&&n.focus()}function kh(){const n=document.getElementById("advanced-settings");n&&(n.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=xh;window.openModelSelector=kh;window.saveApiKeys=Ef;window.clearAllApiKeys=Sf;window.toggleKeyVisibility=kf;window.handleWelcomeVideoEnd=_h;window.dismissWelcomeVideo=bt;window.initiateCommitToFlutterFlow=qf;window.updateFlutterFlowCredentialStatus=Zf;window.closeCommitConfirmModal=fc;window.closeCommitSuccessModal=wh;window.showCommitSuccessModal=ws;window.showCommitFailureModal=bs;window.toggleCodePreview=bh;window.confirmCommitToFlutterFlow=Ch;window.runRefinement=Wf;window.regenerateFromPastedErrors=Gf;window.clearErrorInput=zf;window.setFlutterFlowEndpoint=vf;window.getFlutterFlowEndpoint=Pn;window.commitProgress=re;window.openSignInModal=Ai;window.closeSignInModal=nh;window.handleMagicLinkRequest=sh;window.handleSignOut=rh;window.startCheckout=fh;window.openCustomerPortal=hh;window.openPricingModal=ys;window.closePricingModal=pc;let Lt=null,gc=null;const ha=120;function Bs(){const n=document.getElementById("pipeline-progress"),e=document.getElementById("results-view"),t=document.getElementById("ready-state");t&&t.classList.add("hidden"),e&&e.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),n&&n.classList.add("visible"),gc=Date.now();for(let s=1;s<=3;s++){const r=document.getElementById(`pdot-${s}`);r&&(r.className="progress-dot")}Le(1),Th()}function Le(n){const e={1:"Analyzing your prompt...",2:"Generating Dart code...",3:"Running code audit..."},t={1:"Step 1 of 3 — Prompt Architect",2:"Step 2 of 3 — Code Generator",3:"Step 3 of 3 — Code Review"},s=document.getElementById("progress-title-text"),r=document.getElementById("progress-substep-text");s&&(s.textContent=e[n]||e[1]),r&&(r.textContent=t[n]||t[1]);for(let i=1;i<=3;i++){const o=document.getElementById(`pdot-${i}`);o&&(i{const n=(Date.now()-gc)/1e3,e=document.getElementById("progress-elapsed"),t=document.getElementById("pipeline-progress-fill");e&&(e.textContent=`${Math.floor(n)}s`);const s=n/ha*100,r=Math.min(95,s*(1-Math.exp(-n/(ha*.6)))*1.2);t&&(t.style.width=`${r}%`)},250)}function dt(){Lt&&(clearInterval(Lt),Lt=null);const n=document.getElementById("pipeline-progress-fill");n&&(n.style.width="100%");for(let e=1;e<=3;e++){const t=document.getElementById(`pdot-${e}`);t&&(t.className="progress-dot completed")}setTimeout(()=>{const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),n&&(n.style.width="0%")},400)}function Gt(n,e=""){const t={pass:'',warning:'',fail:''};return``}function mc(n){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[n]||"Needs attention"}function Rh(){return Mp({bundle:g.artifactBundle,reviewResult:g.step3Result})}function Ah(n){return` -
    - ${Gt(n.severity)} -
    -
    ${F(n.message)}
    - ${n.suggestion?`
    ${F(n.suggestion)}
    `:""} - ${F(n.source)} -
    -
    - `}function Ph(n){return` -
  • -
    - ${F(n.title)} - ${n.detail&&n.detail!==n.title?`

    ${F(n.detail)}

    `:""} -
    -
  • - `}function Fh(n){const e=document.getElementById("results-summary-detail"),t=document.getElementById("results-title");if(!e)return;t&&(t.textContent=n.title);const s=n.score,r=s==null?"neutral":s>=80?"pass":s>=60?"warning":"fail",i=s==null?"":s>=80?"Strong":s>=60?"Needs work":"High risk",o=n.findings.length?` -
      - ${n.findings.map(l=>` -
    • - ${Gt(l.severity)} - - ${F(l.message)} - ${l.suggestion?`${F(l.suggestion)}`:""} - -
    • - `).join("")} -
    - `:"",a=n.manualSteps.length?` -
    -

    ${Gt("warning")} Complete in FlutterFlow

    -
      - ${n.manualSteps.map(l=>` -
    • - ${F(l.title)} - ${l.detail&&l.detail!==l.title?`${F(l.detail)}`:""} -
    • - `).join("")} -
    -
    - `:"";e.innerHTML=` -
    -
    -

    ${F(n.summary)}

    - ${o} - ${a} -
    -
    - -
    - Is the generated code correct? -
    - - -
    -
    -
    -
    - `}function $h(n){var l,c,u;const e=n.artifacts.find(d=>d.id===g.selectedArtifactId)||n.artifacts[0];if(!e)return"";const t={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],s=e.findings.length?e.findings.map(Ah).join(""):`
    ${Gt(t.icon)} ${F(t.message)}
    `,r=(l=e.dependencies)!=null&&l.length?e.dependencies.map(d=>` -
  • ${F(d.name)}${d.version?` ${F(d.version)}`:""}${d.reason?`

    ${F(d.reason)}

    `:""}
  • - `).join(""):'
  • No external packages
  • ',i=(c=e.imports)!=null&&c.length?e.imports.map(d=>`${F(d)}`).join(""):'No imports returned',o=(u=e.publicApi)!=null&&u.length?e.publicApi.map(d=>`${F(d)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(d=>` -
  • ${F(d.from||"Bundle")} ${F(d.type)} ${F(d.to||"Bundle")}${d.description?`

    ${F(d.description)}

    `:""}
  • - `).join(""):'
  • No relationships for this file
  • ';return` -
    -
    - ${Gt(e.status)} ${F(mc(e.status))} -

    ${F(e.artifactName)}

    - ${e.description?`

    ${F(e.description)}

    `:""} -
    -
    - ${F(e.artifactType)} - ${F(e.fileName)} -
    -
    -
    -

    Code Review findings

    - ${s} -
    - ${e.manualSteps.length?` -
    -

    Manual FlutterFlow steps for this file

    -
      ${e.manualSteps.map(Ph).join("")}
    -
    - `:""} -
    - File details -
    -
    -

    Dependencies

    -
      ${r}
    -
    -
    -

    Deployment

    -
    -
    Status
    ${F(e.deployStatus||"pending")}
    -
    Order
    ${e.index+1} of ${n.artifacts.length}
    -
    Path hint
    ${F(e.pathHint||"Not returned")}
    -
    -
    -
    -
    -

    Public API

    -
    ${o}
    -
    -
    -

    Imports

    -
    ${i}
    -
    -
    -

    Relationships

    -
      ${a}
    -
    -
    - `}function Mh(n){const e=document.getElementById("bundle-strip"),t=document.getElementById("results-summary-tab"),s=document.getElementById("artifact-tabs"),r=document.getElementById("results-file-count");if(t&&t.classList.toggle("active",g.resultsViewMode==="summary"),!n.artifacts.length){r&&(r.textContent="0 files"),e&&e.classList.remove("visible"),s&&(s.innerHTML="");return}if(r){const i=n.artifacts.length;r.textContent=`${i} ${i===1?"file":"files"}`}s&&(s.innerHTML=n.artifacts.map(i=>` - - `).join(""),s.onclick=i=>{var a;const o=i.target.closest(".artifact-tab");(a=o==null?void 0:o.dataset)!=null&&a.artifactId&&vc(o.dataset.artifactId)}),e&&e.classList.add("visible")}function Di(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const n=document.getElementById("results-view"),e=document.getElementById("results-code-output"),t=document.getElementById("results-audit-output"),s=document.getElementById("results-summary-detail"),r=document.getElementById("artifact-results-split"),i=Rh(),o=wi();if(Fh(i),Mh(i),e&&(e.textContent=""),e){const a=ql(o);e.innerHTML=a}t&&(t.innerHTML=$h(i)),s&&s.classList.toggle("hidden",g.resultsViewMode!=="summary"),r&&r.classList.toggle("hidden",g.resultsViewMode!=="file"),n&&n.classList.add("visible")}function js(n,e){g.selectedArtifactId||(g.selectedArtifactId=ls(g.artifactBundle).id),g.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const t=document.getElementById("step3-output");t&&(t.textContent=""),Di(),Et();const s=document.getElementById("btn-feedback-up"),r=document.getElementById("btn-feedback-down");s&&(s.className="feedback-btn"),r&&(r.className="feedback-btn")}function vc(n){g.selectedArtifactId=n,g.resultsViewMode="file",Di()}function Oh(){g.resultsViewMode="summary",Di()}function Nh(){const n=document.getElementById("btn-copy-results"),e=wi();navigator.clipboard.writeText(e).then(()=>{if(n){n.classList.add("copied");const t=n.querySelector("span");if(t){const s=t.textContent;t.textContent="Copied!",setTimeout(()=>{n.classList.remove("copied"),t.textContent=s},2e3)}}})}function Lh(n){const e=document.getElementById("btn-feedback-up"),t=document.getElementById("btn-feedback-down");n==="up"?(e.classList.toggle("active-up"),t.classList.remove("active-down")):(t.classList.toggle("active-down"),e.classList.remove("active-up"));const s=n==="up"?"thumbsUp":"thumbsDown";Ti(s,g.step2Result,g.step1Result),Me("Generation Feedback",{feedback:s})}function Dh(){const n=document.getElementById("error-input-panel");if(n){n.classList.remove("hidden"),n.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function _c(){const n=document.getElementById("error-input-panel");n&&(n.classList.add("hidden"),n.style.display="none")}window.copyResultsCode=Nh;window.selectArtifact=vc;window.selectResultsSummary=Oh;window.submitResultsFeedback=Lh;window.showErrorInputPanel=Dh;window.hideErrorInputPanel=_c; diff --git a/dist/favicon-brand-v2.svg b/dist/favicon-brand-v2.svg new file mode 100644 index 0000000..4a9a059 --- /dev/null +++ b/dist/favicon-brand-v2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/dist/index.html b/dist/index.html index 03e97f5..1edb941 100644 --- a/dist/index.html +++ b/dist/index.html @@ -2358,7 +2358,7 @@ .pm-cards { padding: 0 16px; } } - +
    diff --git a/dist/social-card.png b/dist/social-card.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd6c3726067cbe239650af0f5666f2d48fca226 GIT binary patch literal 221510 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 z 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

    OWOLDMlN7Qfk5wFtHqjak7SsHn* zsQYIizYp~$6Ly{djN)z2nAXi>5UF@0a(ya{l0lAvVn5&2^Ub*u2;1@e4A?+2HT92b25s zvf2CvW^vBd^mSX(mE~*ghN4DO=ifD6{c_m|?=^AG4EWo=NXp6Je-s&f?KgBDEQwC^7HLKoP7=yq~xVIP_XP%wY;0nYgoY)oN#Kynty>XKy3rV!Zev}zu=0DXq z66n4N5p-c#Ocu3jiw}uncT`v!J;57Z>yOV!WQg)ty&o zamps3bGZS=cU&;w;ALFpZh?awG1GcwgXHVZtINVe0vfKNOFoeks!1}G#c`1RCoD_t8I@NKW-+ddJBfBRAL-Au})%shFXBY8xXXiW{e%m)fx*Uu`i zTlFF@ivVXpBQz+`g(6mBozIL8X5jZ>X1t|qZm(`DdZym738G}`pC=8Blgfn)*3 z6CM*l#Wbh`t6SQnO`2b-E1@@-=7+hMZ=s?D6Si6u!P=_BH!dWYnX+x_L@DSeYi~)>cmT2DBL<5cQ_Z(BpZBpqx?L+F^>W= zS^dyHrCLI<(QwK`Zg!T}lPGKs4_nUrK<~k!9J|{GJ1IpxcOr{}bQe3k`9XKlrpwJ8 z#b4=SYk$Z?9Iv;Ak#{MS5Zbu#ok1?6h=LM9c^0>ydmMH)F%OioVo3n1>I)~V-nU?N z7J$0$!!r$GQpg8fyBt7l9-3j2(X@|_Eobix?`y(`JV4MUeV}0?MCx-Ud`4P;P(h?$ zJ42mNye^}8A2$gR9E8|MJLmtIs^Xjk9QI)sVnh&CrWKc9jm|4cO|S%NGQVYDqmT4+ z-->Qa_kPP|nQHJwLo5rmrHx=6BQT4r;&WydH`P7juK315;mCnxS|_-bOto0x?*(sN zD19e+v?w3*LSx%VEa{iampRO`h)(1;eqA@m)(UHhBdVGlly|YrCEt0QVS>jyhbC#d zjp(nW=s6i$-NFnbhne@>w?obuU~6~Yb~Q=lrhIca9)?4k)5L~Dd1dxfr5J<#7mMA~ zQBKZwQ=uhylN?z;gf@Bu-nXQIU&TAMAp}DH>SYzCMkXX8dA3PHM1pc&%Y}hE=P=qI z3t6KU9YEooGXgm-&I(1N?zqaRU ze?0r>Zd`S`Xg1Z9*C|>P3 zJUtHMuxOIZti(}A=|2;mRW^X$Cp{0o^I){kJ5j7LD&q|3C;oITv3dd`!bq?$d zaa{VTjpkn(U1?2vcHEQmzhY8DHH_;wcmD?R=R$H6+kJ|P+S{b84ISUs^VoM0V%Q0x zmlF6@edNu%O(9L8CAuvU($cu9K|py-<(#}cHhuo!T#qH+HO3V|bq_IFi^b`h~jRhrz>p zH5uzF^-xnlU8v@C=@LmacvtJ5KCk^An4KIn`?WFsx`vU)*0!@_mF4Zpa2KHfRAwvQ-`T598wzQPg zZ7*aQ>V9qoRcO;X2Z||8mqmfA)uSo2>5+XkH_CO7#J-vg#BRT`*mDf|H$5Yv;Vz< z;0^kf0fn~q?jquG!pMT>I*@Q7Bb|7|hFDiYv`!XnT#iX@?gMr84P%FU>`yZJxa3%n zFUU^He!7JE&DAIvf%?|apLmxW8&VXM%XtC>S{$rSM+&nl{i9pSjgdKQpAbGO391yN zso!t+Y2kHE;gaI|k}+M6=eEDR(VjU}6h{78wX{UnD@pR&6kUt~_euPhqkvjrEq)YAifcU{u{$n7k71 zGp0*Vb>Y0u+O^C5#soJyCM2x#I?g_J_O$4*Z>Jl;B>58$#Cxa#W#?t3y@DS8zL^AZ zKQxtwlY`__o0=1vWn1K{I5S7IDRH-Ol{D#3+TGvoNpJcxH?4_T?Y(G2>AKyt*zE0v z;;H!$J}aK9%yW@KC@kJt?>?ct!tP&eS4f$g)t+U&f4V+$Y>A(#i4>am+u=ZE5+LTOdT8jRNkZ-}ht^c}t6p&jm8TB<(S-)}G7d+saolWaKt_;(2YiIFC3J((< zcAVKZsP`>kQ-E&&g1)~=RNWA7Yxb`VO=LHn4il(peISJiIw9RQ+j*^>eQ%igr?<{$ zc`IicDjEvh&hAi@n;RZpnXEG0Y0?2bwkrEf#?SOxW9p#jyyl6lQ$|PJmJ90cMT*Lr zqLGsB^N(-PWEJVj>bC5u@={0HXU=l>5)6K*BGm-Tk69LoOs!kF`z|S%&q+yyjm-(W z6#ss+#}GFhHw;Fb9(~sqsoy!pxS{Fis}@A;jC|lumcRVKQHjryYs+a*NszmQnb*B^ zEs$4Eo;Xe3#YQ9@_@7b6lu~1|IM+SyF&||pIQLzm7h=T5t|DwaHLOXP6!p$Ab~@a= z#i$o+9;WfO&GH6?nvwtH;UD>HD2eL)a$)k?!ilz>Jg1l0j_wD3Sd_VhD z3J>pIqxKV3(Ez zK`1SL!Alx2XUVMJEVsq2M$AOIlU_R?O&9`YZk9mCr#5a9+@j#w$WGUYmvKH3r}*cs z2$zKcDv}Ul{(&^+FYmyx<&ZNz%OUDc{A0Jf59_J0jE`iX+rFEOk1f_TMTHd zoXwS~zv>TS{P{SkdBM+kZ@bV-dr}(U#)Sc%@n5@g&izE}4|KB+GQHC!MZD3PPRa zvxlb(Zi4E5d7l8ILBf=*QI$pn`*7MeMpP8y|8Gq)%JDh7ZW*p1G>ko~oU7D3kB)%i zq+mTjuct<8@B$qxUCnO9&gdG8r#SG!v8*7h{U?XBw1u)SYlKV;qt#2JT@YO@c0P-A zBkwkBTJsr-H^9<5$-&R;Q=Hk!xdk_>awBXzad~zKPxxNjCg$KM6iiyHK`8u`sD}(5 zd6o}j0W6!x36aRaemtOQG1Saa2tt7*Bz+GoFmYa4;atcx2YhJ|Jc>^FfVDmRdSpie zgP7l|#7~@cRo~cJSp?H(p>KYc(O(cmHC`W2z*Tlpe`^vMe^$ z&!h7W>WmZ&gi|qHCg0iQqfH&yC`k(t(nP*2kpgF~<8Ub++mxpEvR8UB3HC6!cmRj@%a+&9{N(p-vpj4l48v z)%*Vrj6=5{F8#yp@b=_rkX6zdjvHeBiUTzZPYj*={yMCGzinv0hz)VH8#tjBavQDr z9yZVr4g?mX$%KTkQp6Ul2Yf~a?@-D2ZDw>3B1M?f!p_|isAN#sA}H<-`Oqf!Uf1Xx zIBkEGds)Qb{(^l_rcAI&A(Ylbhyd{T^dFxZNuI-imDH_St%CYUJ#mnE_M1J|K56IL zLrOvl7j4tify9eW@t+JWU%0Yico52aP<6(hZgamuDh65Urb*`=mw)Ac#9?M1*#Q}e z`)}bI>Qq1Q5fcPsxaj4%4_=j){E=CSK%L9K%b%PYn3Qfjvv*YwG&7*2e|{}C_%}pZ z#SEhg%;xv-R139lSmVsY8_NN zk=QNDFFF4TEAR8M18QtNGhnwKkTL{=mbNzATST7jit~uj{l}%LUGgwe7$4G77(j|_ zp$9T8S2e}x0O>fQ%rie5B{;a^rwhfcSH5`NYhYoX^w|Z+PeR<#|AW~_*|%3epXY1q zt9Eezmi%nxSD4PSG1EeEH3nKY(|9x<|J&!-7=ayxGCi+Tq0nFoHgeXxCJn$&Jv0cR zu`$y6@Y>bY$0z7_K}%`rdjsTW+7^+(|+T6I3#Ed(dj83BXFFR(+*} zkg=7c3+cGj%>G=M^v@fd=!XqX0*)zqt`Liky@&02N&ke}YG1lm2`OLkYq<*C`GwyY zCLE65Ue@3YXiP*%p$FaoKit1=^C+~*9<8Qnk8`V8TQ@|7Mv5|Jf0i;mTGEkb;=z7q zG%*1_QlO!bSlO2*3Eip*w zr@>q#uX)_^W$P)gfJKH(gw!6PBb6_qC1&u5I(z~#W*tgxY#(1`oJn$K42MKgoIHh&NUrZ21S5n9xHhR%R!V^S$Y5bJ7BF) zg%vXM3m+CPqQa_~SJto+z)HKi0`o{@8{gzM5=CxhWNkhOWF0;F$+x)seRao?g zR9Mdj@9F?_H<;DkCP#){W~2~4G939Z44-6x2O_NYu~rB+jfoUre`Q5RSy6J>0;^Pk z)z;nXEOkg`kK`>|chywy6j+%qdrF$>bx!`NODuh(On--gT&jqZK zjF-DwRJ#OVrTx;%ZRNfFz^Yg+U{!~J73sb&U>RB0n+H}V23QhARhp#V1zcpI`F@Z# zhIAZ=`vZ8{@XFwdP3+`r6mN9cuvEac6L&C3=jfSc& zmKRu2$)-I7iP;w}7qG$|yd1oG`+$`fvED$1wP^{&s$R7UD+{ogSR2XOor)|fo@nPs z&GiG^U_U^p06F>D}MbqcKdCFzStpLx?bI(D%> zV=FA)5|;UcjdVFy)lo@8#Dc1Ue3Z?U4e8wJXVt>93Kwv{=>rw6CwZ6$7Jf)n)!-Z| z;CRQG3s`Q)y(p}1Uo^17yh?i-^Tb9ETImpXG9Iy(16Xx+k+afw!1`?ftEMI&rTZHO z7Q(33)0ag5E;XnKS$mwtxI)Tne6wvA1554haM#dKJyxxOp=|nzV#jXKWY@-nfV4T2 z9B6I7Q@wR^6wRxES6p1Zq8H{+SItV}3b4AXuo@NnE5yl*p(t(qhPy{b)TvKgulhCb zizV}ICmC3^`VA6P`A!J{7LAqA<(+DkD4iA_Wrn(CSG7AZ@qyK@OL0ZptTdSs7UPC_ zym-U&GW}T=M}f6_>A>=O?S>oaQXg2n5{ZODD;Kb=aIati!qLn-V7(>4f@|ek0~V*} zk-<~7bh7v?keyfqXQ{Ay8o-Kh*CizyoUEwRB<-qh8rT^!j-qBg>mRg3*_~Wq zY14gOoK*t%-}#%Cu7l6~7zP3D189?&Zo_sP#(l~w9(^+!E3*&8MIP&RP*zl2v@Sxd zC0AJP(O|6$j&z-YL3k)Qp=FjnHbVaYUY+$0Snq(fc7R3sd6o3dm2DxN1wy>=+4fJV z&u(^u&e!GfYD>@7tvzOOVuMkUsyi{-M-)YRS{(I;RCwOj7Dm?3kY0^`?*eO1aRpjE z<=p#0jOoA-Mvbdl6X{fI#TaQ1hUH%}o4`r9%-Hfuy=AzAb&~6=Y``*V549s;*Jk+n z@$7v$nT)RAX$?QvBiRR*YC;3QgW`3uz>15P*WnKoV3~V;Yxt#We+s!$kSpl!M zgcee-7*r0X7*#?mnKPszY4y%KP6N^)R(G2*T@YgFxgl)`EwG4KXt~ofl~zv)SNCYi zp&<5>82d?SVB_z>rF)#iAf7eM3J9rO{T2% z_qO$FTxi)&L_WkJh2u~BSzD|eJvA|_`?B@!qqMJB3ND4a;>)>lPgGG&oitt*Zc z(2TA{(8`%LG6#cNU+s@u7Ff9knd3^V0;k=T16U!Ee}q?wH@f1?vVs(f<#%gX5U#?> zT|3v$XDE|n`LtVF(_Ix@7Fhc{Ol=i5h}PA&t+AQGuVMBsFO+_iA}a(f zxC+`O9WGKNeFo(_V8y7CvWmU_*f#6hAUzEZ60T0m)9Ddx3I|5jh)-)Qb~?7e62a&! z?FH{Y6Id~@t}?Lbz2O1Tnq~v|1bLH!R}QWwwRvStO0_)?b1veQEncz%%M@DV6-5CV zP`{TNb1WxirP6lXEwJJo@bUy!aRgYoiIv?)RGDD~`&oIFAFzxnYl*;$lQpafVCj!^ zS%Bq3rh;$z1FJf?Ee%+HxmCR+U|CujKdmURj5_m;0V{(GlCDO4%L}WK#1|0DDXg{& zqg-BnD!T9MG7zm*6+HelvVs#A#4`)DqB@I#HK5L+#+sdcLjz#RM9wVp$^+J2({HyG z77DB}F0h=(A8Ub(nx z~r+`M_uF}sLX-^w1)qKek>6W2~0ch}%?&`c_Et2Ya*#a3AFfVCuG$;Oa<1hEm+ z?VrUJ1X>3V-WGqX+YBt=>KggIUjwRi!IRWNi*|?Cct<#*E`LzJlQ>=WghH&VPSc%` zHT(Gf{l5~V?pfakIw-sP~gTQjexdEhiz*@cvYXLa>2L@J=1r|NBTPtWBkki?v z!s^kk6+qRfylULcusV2jBF;H7@{I(sk!uU^EEl9kAA553Ab0tvO(YS3bb1wV^1rC7442uPQ5?Lqa_Z zG?dz-hFGS!B2$NNC70spxBS8hcfByYq6&-hjtN_)z`AyNXt>S#zI3&pYzL~^rNRQQ z?s5Oh0&8~m{{1O=3y4LV!n;?I&2_OAvNCekVqo1JWJBc6?lyM~!^AniDNI;T6sZhfrWO88>C-Rl6P&!esQ` zUlmxh3arPoTwlS%56DtrVIq+FSL6gZHadD$hJWB6gWE9tX4=|>R-MCi>sFy^JGPSb z8BG#`v1T#P_QiZt11!j^JS3hLUOA{Tx=|S>WZh^kV3m1F_mHLM!hls9vc^;l{vBG&jUN-P4__Z*>0&NOuH zH)ezC#TbjmpE)lT+ruGbfibnrG?0ko6MW62!K@72pNi)L7VPh(BNV8kgDZby5~Yd~ zOZ^y%VwIyZs~A@$#ei(tfR%~>OJC>fw=_>+)#j+cmIACdS7*IxVA)Ujrh%0uLg%*& ztV{qb_-x|zi*|!rUXf10lIo~g5A5xz;S{a2eY%hgO{}_g;_UgeTw*b|F5}3M>ML%* zE3fE`kb)tYR+Mki!n*qX_Zs`m7FwemtSWu0?oP2E zr7a?>u!cquVK}VJ0f14W>*JdcJ+WA68ai)ke}wmls%- zZx&d_e=D6Iuu9(nD^g*tUshn%$Stp|=Qj&1XHSzyg++G-CH3_*M_9q9gBlYm2Y-f7 zh^3I_)K*+xaapBH>MJg-UdT&SVO_o^^Eo7U0IhCtHdwFr+$AUwMG_s|QBaNptXXYi z{RIWq9NkULNsaaNnT$bWu^!6+i#LA4Dit^w@hH1+4U5b{I62nrEV6w_q={I8DMnm{ zg_gSv=g?!jd|NYz&&wyE31}l4UofzW#XwNTIq9SP4dW7kl@5UAP7{@zR3CdrxHf?G zhM1KdSjo2tSlQ~U>cx4wuPm_E%?~WM!YV-JfZlZl1FM6k0UewC7d?4$U|%np?)@`$AUYl(KvKj!)B_n<^fhQ#|ud=MWxUxSeSv% z6IjK;lp>E;8`S^|1Jfm9*{~pBg~DvI01L;0c&gmSi(cAqPB#s(a%DK@pw&BIEibS* z_QtoDSq5P3+EtTdt#x3TlfnXZYDmNJsiIs?2anypt+X;_6fz1GO{lR9!#rH^%eVAd z+V6e5A-sJ0vJJI2(W`>1E-9~Q9J%=-tJVWxO>wVXP6&xsb3`k%cpjQrMlW$Y3nDJg zh*n%pV~S8`2oXumIj=aC9Kg1bY)PShHyIUtnAp_b+*+3%SOu_MCkoWn;Sry#Y~JRu zN=;^bU{&P+R!D+i&i?D5@vN^e;Pi()?HLMUfE8#)l~>YnuOwOttK1alU^$BdFmrRtbFRW`Zva?Z@&{Jz zVt*6|S7~?Qm{5L6SJfo|tU_|`qjvkAgW#30XzyP0#~}+Qx5pl{P+`$K5v@o@`oN`? z!By|D`nqd@)y&~J0G4bCuile%uUXZ)&&@ra3okNvmp^Bxp55i6zc!1jXKL2R`Kppi z-NwKoQt`$R)~Ck)R91IWLu+Z33#?+t(XXJun6k1wpt2mCQj7P71~_*#>=c`s{T5gb zv265VgjQm%m(jL=DR`CPkE}ITG4lYc7{74rfM1CjM>ZmN8GTIf<;cP-<<&Ov9SnHI z%y1tYnd~Cc+Po=dt(iUXRbH}&6_jYjlvsg2#VE0SiglSiuh;9dl}EGb zH%W1kpZ<_VDax$M4lDtKs$BQ)Ct!W>!HykjJV?MYtiod=At+(4#+$SfxqSSJhj$Hy%59`v4sY60dIEIwXr=Ws!BuR#<1VFKhbK zY%@4uO<_4Z%;gI#tMm*itinYAYip#y+LvSH1FRf@&knF??0CLyUoK$P<^wDm$|1!l z{=-|*zakX_ctybaPS!`V2v}TVd5x{T@yL<_i~3;X-|#K*N(@MOb0!r}5U1J2wR^Gt+|L|?y1#+q{6#xJL07*qoM6N<$f+H^z3IG5A literal 0 HcmV?d00001 From 76c8b1aa352f1c2d0e3ae0ef31c23f092c2fd2be Mon Sep 17 00:00:00 2001 From: Stuart Date: Wed, 12 Aug 2026 21:47:44 +1000 Subject: [PATCH 2/5] fix: refuse to deploy an uncommitted dist/ The FTP mirror pushes whatever is on disk, so an uncommitted build was silently putting the live site ahead of git (main pointed at the old assets/index-CqRheZeQ.js while the web served index-BZ-fNYow.js). deploy_ftp.py now verifies dist/ is clean against HEAD and refuses to upload otherwise, keeping the deployed artifact reproducible from the repo. --allow-dirty remains as an explicit emergency override. Co-Authored-By: Claude --- scripts/deploy_ftp.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/scripts/deploy_ftp.py b/scripts/deploy_ftp.py index f51fe07..c15b47b 100755 --- a/scripts/deploy_ftp.py +++ b/scripts/deploy_ftp.py @@ -157,17 +157,51 @@ def prune_stale_files(ftp, local_files, local_dirs, dry_run): return removed, failed +def ensure_dist_committed(allow_dirty): + """Refuse to deploy a dist/ the repo cannot reproduce. + + The FTP mirror pushes whatever is on disk, so an uncommitted build silently + puts the live site ahead of git. Guard that: the deployed artifact must be + exactly what a fresh checkout would build, so the web stays reproducible. + """ + if allow_dirty: + return + result = subprocess.run( + ["git", "status", "--porcelain", "--", "dist/"], + capture_output=True, text=True, cwd=REPO_ROOT, + ) + if result.returncode != 0: + sys.exit( + "Could not validate git state; refusing to deploy.\n" + f"{result.stderr.strip() or result.stdout.strip()}" + ) + if result.stdout.strip(): + sys.exit( + "Refusing to deploy: dist/ has uncommitted changes and the live site " + "must be reproducible from git.\n" + "Commit the build first, e.g.:\n" + f" git add dist/ && git commit -m \"build: rebuild dist\"\n" + 'Or override for an emergency push with `--allow-dirty` (not recommended).' + ) + + def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( "--dry-run", action="store_true", help="Show what would be uploaded and deleted without changing the server", ) + parser.add_argument( + "--allow-dirty", action="store_true", + help="Allow deploying an uncommitted dist/ (not recommended)", + ) args = parser.parse_args() if not DIST.is_dir(): sys.exit(f"{DIST} does not exist. Run `npm run build` first.") + ensure_dist_committed(args.allow_dirty) + local_files, local_dirs = local_files_and_dirs(DIST) if not local_files: sys.exit(f"{DIST} has no files to deploy.") From 096ec0e93202432f740437ee3e245a0dab4615bf Mon Sep 17 00:00:00 2001 From: Stuart Date: Wed, 12 Aug 2026 21:56:29 +1000 Subject: [PATCH 3/5] chore: bump posthog-js to ^1.415.7 Uncommitted dependency bump that shipped inside the deployed bundle; fold it in so the repo fully reproduces the live build. Co-Authored-By: Claude --- package-lock.json | 494 ++++++---------------------------------------- package.json | 2 +- 2 files changed, 59 insertions(+), 437 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41fe4a8..b6dc6e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "dreamflow-command-dashboard", "version": "1.0.0", "dependencies": { - "posthog-js": "^1.353.0" + "posthog-js": "^1.415.7" }, "devDependencies": { "playwright": "^1.58.2", @@ -909,331 +909,31 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", - "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", - "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", - "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-exporter-base": "0.208.0", - "@opentelemetry/otlp-transformer": "0.208.0", - "@opentelemetry/sdk-logs": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", - "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/otlp-transformer": "0.208.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", - "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/sdk-logs": "0.208.0", - "@opentelemetry/sdk-metrics": "2.2.0", - "@opentelemetry/sdk-trace-base": "2.2.0", - "protobufjs": "^7.3.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.1.tgz", - "integrity": "sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.5.1", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.1.tgz", - "integrity": "sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.208.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", - "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.208.0", - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", - "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", - "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/resources": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", - "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", - "license": "Apache-2.0", + "node_modules/@posthog/browser-common": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@posthog/browser-common/-/browser-common-0.5.0.tgz", + "integrity": "sha512-8DaxVZS1bQPbA514RePurLNbYjei3P4jhnC206DwVv5XThmZM3QdlsXenI2ujE3pLbgQ79hYn9o1Kda8I3WK/Q==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "2.2.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", - "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "@posthog/core": "^1.47.0", + "@posthog/types": "^1.402.2" } }, "node_modules/@posthog/core": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.23.1.tgz", - "integrity": "sha512-GViD5mOv/mcbZcyzz3z9CS0R79JzxVaqEz4sP5Dsea178M/j3ZWe6gaHDZB9yuyGfcmIMQ/8K14yv+7QrK4sQQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.47.0.tgz", + "integrity": "sha512-LW62V+9yx7G7mLd+EYpwW0PiaPZI8XRJ1tLuhw+9fXHpugLp8XQD5JuCQ2kIXvoUfyx1DpKfGQY3dUnzMOIn7Q==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6" + "@posthog/types": "^1.402.2" } }, "node_modules/@posthog/types": { - "version": "1.353.0", - "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.353.0.tgz", - "integrity": "sha512-wG5zMdr80QNV+0XkJFCX5ZxcpdER1TtYe21YlLAuI4i0G1wjQDi/FDCjh4b0QGiV8KljQMHfC2xPZ/SXnPBlBQ==", + "version": "1.402.3", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.402.3.tgz", + "integrity": "sha512-nnqKIGUqggeNbCZg6of/hYN+4shYZUoPFkILIIpYq0p9HDX8PgOrnrtBAUH8kr1MOmDh2nm+fY5Ceks7A5y6BQ==", "license": "MIT" }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.55.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz", @@ -1595,6 +1295,7 @@ "version": "22.19.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz", "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -1608,11 +1309,14 @@ "optional": true }, "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.50.0.tgz", + "integrity": "sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==", "hasInstallScript": true, "license": "MIT", + "engines": { + "node": "*" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -1625,20 +1329,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -1650,9 +1340,9 @@ } }, "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.13.tgz", + "integrity": "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -1762,12 +1452,6 @@ "dev": true, "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -1791,12 +1475,6 @@ "immediate": "~3.0.5" } }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "license": "Apache-2.0" - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -1823,15 +1501,6 @@ "dev": true, "license": "(MIT AND Zlib)" }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1916,24 +1585,21 @@ } }, "node_modules/posthog-js": { - "version": "1.353.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.353.0.tgz", - "integrity": "sha512-1ifN9CDMavZwRvm+6UYAaEbvzJPvC6q0warmNGyqUcmtDe3SZh4PfvftSJrucH5Oeh6r+ihWtLS7ESIUS0pYuw==", - "license": "SEE LICENSE IN LICENSE", + "version": "1.415.7", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.415.7.tgz", + "integrity": "sha512-wczdBPDh6vr/Knft0HaJ+naO5NXVaML9Zk9ufoeejO16WrA0TeiX3yqv160eoqWVnWOU5tniYs8hMcxMLmpz2Q==", + "license": "(Apache-2.0 AND MIT)", "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.208.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", - "@opentelemetry/resources": "^2.2.0", - "@opentelemetry/sdk-logs": "^0.208.0", - "@posthog/core": "1.23.1", - "@posthog/types": "1.353.0", - "core-js": "^3.38.1", - "dompurify": "^3.3.1", + "@posthog/browser-common": "^0.5.0", + "@posthog/core": "^1.47.0", + "@posthog/types": "^1.402.3", + "core-js": "^3.49.0", + "dompurify": "^3.4.13", "fflate": "^0.4.8", - "preact": "^10.28.2", + "preact": "^10.29.3", "query-selector-shadow-dom": "^1.0.1", - "web-vitals": "^5.1.0" + "web-vitals": "^5.3.0", + "web-vitals-soft-navs": "npm:web-vitals@6.0.0" } }, "node_modules/pptxgenjs": { @@ -1950,13 +1616,21 @@ } }, "node_modules/preact": { - "version": "10.28.4", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.4.tgz", - "integrity": "sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==", + "version": "10.29.8", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.8.tgz", + "integrity": "sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact-render-to-string": ">=5" + }, + "peerDependenciesMeta": { + "preact-render-to-string": { + "optional": true + } } }, "node_modules/process-nextick-args": { @@ -1966,30 +1640,6 @@ "dev": true, "license": "MIT" }, - "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/query-selector-shadow-dom": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", @@ -2139,27 +1789,6 @@ "@img/sharp-win32-x64": "0.34.5" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -2192,6 +1821,7 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, "license": "MIT" }, "node_modules/util-deprecate": { @@ -2262,25 +1892,17 @@ } }, "node_modules/web-vitals": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz", - "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.3.0.tgz", + "integrity": "sha512-q6LWsLatGYZp5VGBIOvbTj6JBV2nOmC8KvWztXBmwJcfFAzhwKwbOxhUH306XY3CcaZDUlSmSuNPBsCn0bFu+g==", "license": "Apache-2.0" }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "node_modules/web-vitals-soft-navs": { + "name": "web-vitals", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-6.0.0.tgz", + "integrity": "sha512-Guaibvy/+uNtL6Bsu4jmMJGzuSl91oeRH5iO9pPRbYftnFUr3yqT1TUNX/OE4o9HexuEMU3Kb/Wg7iKhlffZUA==", + "license": "Apache-2.0" } } } diff --git a/package.json b/package.json index 21fd288..2603fc2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,6 @@ "vite": "^5.0.0" }, "dependencies": { - "posthog-js": "^1.353.0" + "posthog-js": "^1.415.7" } } From 2ea54a82f3934ec9790e417ab91ee7bfdfdc6392 Mon Sep 17 00:00:00 2001 From: Stuart Date: Wed, 12 Aug 2026 21:59:19 +1000 Subject: [PATCH 4/5] fix: guard the ignored dist/assets/ path, not just tracked files The FTP uploader ships whatever is on disk, but git ignores dist/assets/. A new content-hashed bundle there never appears in the porcelain status, so the previous status-only check passed clean while the uncommitted file still went over FTP. The guard now requires every file it will upload to exist at HEAD, closing the gap between the filesystem artifact set and the committed one. Co-Authored-By: Claude --- scripts/deploy_ftp.py | 54 ++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/scripts/deploy_ftp.py b/scripts/deploy_ftp.py index c15b47b..ff9dc18 100755 --- a/scripts/deploy_ftp.py +++ b/scripts/deploy_ftp.py @@ -157,33 +157,61 @@ def prune_stale_files(ftp, local_files, local_dirs, dry_run): return removed, failed +def _git(args): + return subprocess.run( + ["git", *args], capture_output=True, text=True, cwd=REPO_ROOT, + ) + + def ensure_dist_committed(allow_dirty): """Refuse to deploy a dist/ the repo cannot reproduce. - The FTP mirror pushes whatever is on disk, so an uncommitted build silently - puts the live site ahead of git. Guard that: the deployed artifact must be - exactly what a fresh checkout would build, so the web stays reproducible. + The FTP mirror pushes whatever is on disk, so the deployed artifact must be + exactly what a fresh checkout would build. Two checks: + - no uncommitted changes to tracked files under dist/ + - every file that will be uploaded exists at HEAD. git ignores + dist/assets/, so a new content-hashed bundle there never shows up in + the porcelain status yet would still ship over FTP — checking status + alone can't see it. """ if allow_dirty: return - result = subprocess.run( - ["git", "status", "--porcelain", "--", "dist/"], - capture_output=True, text=True, cwd=REPO_ROOT, - ) - if result.returncode != 0: + + status = _git(["status", "--porcelain", "--", "dist/"]) + if status.returncode != 0: sys.exit( "Could not validate git state; refusing to deploy.\n" - f"{result.stderr.strip() or result.stdout.strip()}" + f"{status.stderr.strip() or status.stdout.strip()}" ) - if result.stdout.strip(): + if status.stdout.strip(): sys.exit( - "Refusing to deploy: dist/ has uncommitted changes and the live site " - "must be reproducible from git.\n" + "Refusing to deploy: tracked files under dist/ have uncommitted " + "changes and the live site must be reproducible from git.\n" "Commit the build first, e.g.:\n" - f" git add dist/ && git commit -m \"build: rebuild dist\"\n" + f' git add -f dist/ && git commit -m "build: rebuild dist"\n' 'Or override for an emergency push with `--allow-dirty` (not recommended).' ) + tracked = _git(["ls-tree", "-r", "--name-only", "HEAD", "--", "dist/"]) + if tracked.returncode != 0: + sys.exit( + "Could not enumerate committed dist files; refusing to deploy.\n" + f"{tracked.stderr.strip() or tracked.stdout.strip()}" + ) + committed = set(tracked.stdout.split()) + + local_files, _ = local_files_and_dirs(DIST) + for rel in local_files: + git_path = f"dist/{rel}" + if git_path not in committed: + sys.exit( + f"Refusing to deploy: {git_path} is not committed at HEAD. " + "git ignores dist/assets/, so new content-hashed build output " + "never appears in the porcelain status; commit the build first:\n" + ' git add -f dist/ && git commit -m "build: rebuild dist"\n' + 'Or override for an emergency push with `--allow-dirty` (not recommended).' + ) + def main(): parser = argparse.ArgumentParser(description=__doc__) From f725edaef63e88f597bbeecf466f1e8458a7ebdb Mon Sep 17 00:00:00 2001 From: Stuart Date: Wed, 12 Aug 2026 22:13:41 +1000 Subject: [PATCH 5/5] fix: block the deploy on a widget FlutterFlow cannot construct The widget conformance rules ran only in validateBundleCompatibility, whose findings land in bundle.metadata.compatibility - a presentation surface. Every deploy path gates on validateFileMap -> validateDartFile, which never saw them, so a widget with `required this.value` was labelled BLOCKING in the review and deployed anyway. The sibling rules added alongside these - the CustomAction return type and the CodeFile name match - are wired into both places. The widget rules only got the review half. Adds getBlockingWidgetErrors() and calls it from validateDartFile for CodeType.WIDGET, so all three deploy paths refuse the file. Errors only: asset-without-anchor stays a warning and still deploys, since a broken image path is a defect on device, not a file the project cannot compile. Co-Authored-By: Claude Opus 5 --- app.js | 8 ++++++ src/flutterFlowArtifactValidation.js | 13 +++++++++ src/flutterFlowArtifactValidation.test.js | 35 +++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/app.js b/app.js index 461eff0..02af908 100644 --- a/app.js +++ b/app.js @@ -13,6 +13,7 @@ import { } from "./src/pipelineContracts.js"; import { createModelArmorError } from "./src/modelArmorResponse.js"; import { + getBlockingWidgetErrors, getCustomActionReturnTypeError, getCustomClassFileNameError, getDeclaredDartTypes, @@ -2282,6 +2283,13 @@ function validateDartFile( ); } + // A widget FlutterFlow cannot construct from an unset Define Parameters + // panel is reported as blocking in the review, so it has to block here too - + // otherwise the deploy lands code the project cannot compile. + if (codeType === CodeType.WIDGET) { + errors.push(...getBlockingWidgetErrors(content)); + } + if (codeType === CodeType.ACTION) { const returnTypeError = getCustomActionReturnTypeError(content, { functionName: artifactName, diff --git a/src/flutterFlowArtifactValidation.js b/src/flutterFlowArtifactValidation.js index 1f8fcf8..027e305 100644 --- a/src/flutterFlowArtifactValidation.js +++ b/src/flutterFlowArtifactValidation.js @@ -274,6 +274,19 @@ export function getWidgetRuleFindings(code = "") { .map(({ id, severity, message }) => ({ id, severity, message })); } +/** + * The CustomWidget rule messages that must stop a deploy - the defects that + * make FlutterFlow's generated constructor call fail to compile, so the widget + * cannot be placed at all. Warnings (a broken asset path, say) still deploy. + * @param {string} code - Dart source + * @returns {string[]} Blocking messages, empty when the widget is placeable + */ +export function getBlockingWidgetErrors(code = "") { + return getWidgetRuleFindings(code) + .filter((finding) => finding.severity === "error") + .map((finding) => finding.message); +} + /** * Finds every `Future<...> name(` signature in already-stripped Dart source. * @param {string} code - Source with comments and strings removed diff --git a/src/flutterFlowArtifactValidation.test.js b/src/flutterFlowArtifactValidation.test.js index 339dbaa..9989c6b 100644 --- a/src/flutterFlowArtifactValidation.test.js +++ b/src/flutterFlowArtifactValidation.test.js @@ -2,6 +2,7 @@ import assert from "node:assert/strict"; import test from "node:test"; import { calibrateWidgetRules, + getBlockingWidgetErrors, getCustomActionReturnType, getWidgetRuleFindings, validateArtifactCompatibility, @@ -643,3 +644,37 @@ test("required in one public widget is flagged even when a sibling is clean", () "required-public-param", ]); }); + +test("a widget FlutterFlow cannot construct blocks the deploy, not just the review", () => { + // The reported case: one placeable widget and one with `required this.value` + // in the same file. The review called it blocking while the deploy gate, + // which reads these errors, still let the file through. + const errors = getBlockingWidgetErrors(` + class BrandBadge extends StatelessWidget { + const BrandBadge({super.key, this.width, this.value = 0.0}); + final double? width; + final double value; + } + class BrandBanner extends StatelessWidget { + const BrandBanner({super.key, this.width, required this.value}); + final double? width; + final double value; + } + `); + + assert.equal(errors.length, 2); + assert.ok(errors.every((message) => typeof message === "string" && message.length > 0)); +}); + +test("a placeable widget carrying only a warning still deploys", () => { + const errors = getBlockingWidgetErrors(` + class Banner extends StatelessWidget { + const Banner({super.key, this.imagePath}); + final String? imagePath; + @override + Widget build(BuildContext context) => Image.asset(imagePath ?? ""); + } + `); + + assert.deepEqual(errors, []); +});