@ainyc/canonry 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/agent-workspace/skills/canonry/references/canonry-cli.md +1 -0
- package/assets/assets/{AuditHistoryPanel-D0H5TtxC.js → AuditHistoryPanel-D5cOFMKE.js} +1 -1
- package/assets/assets/{BacklinksPage-DRihwG5O.js → BacklinksPage-BiOj8ztV.js} +1 -1
- package/assets/assets/{HistoryPage-BQ2nEXly.js → HistoryPage-DDBCwooU.js} +1 -1
- package/assets/assets/MeasurementPropertyPage-CMoU2yA_.js +1 -0
- package/assets/assets/ProjectPage-CrFybBls.js +8 -0
- package/assets/assets/{RunRow-Bo_Adiy0.js → RunRow-BLBAwIot.js} +1 -1
- package/assets/assets/{RunsPage-CDkbzjuo.js → RunsPage-BVgBbE1M.js} +1 -1
- package/assets/assets/{SettingsPage-CF4i_EzR.js → SettingsPage-DYtN-1_-.js} +1 -1
- package/assets/assets/{SiteHealthSection-BrzBV7dt.js → SiteHealthSection-ElUwcAS4.js} +3 -3
- package/assets/assets/{TrafficPage-BHSz1N4P.js → TrafficPage-D6QT_2hU.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DzHLwhpy.js → TrafficSourceDetailPage-BnLzF82w.js} +1 -1
- package/assets/assets/{extract-error-message-WHM24Sai.js → extract-error-message-DIzjGZxl.js} +1 -1
- package/assets/assets/{index-5W4ZZnwg.js → index-CoQVOsWw.js} +16 -16
- package/assets/assets/{react-sigma_core.esm.min-BB2Lcq4W.js → react-sigma_core.esm.min-DTbIcdn4.js} +1 -1
- package/assets/assets/v2-overview-adapter-B_N4ilQV.js +1 -0
- package/assets/assets/{vendor-lucide-D_WBzb76.js → vendor-lucide-nVpYViBH.js} +1 -1
- package/assets/index.html +2 -2
- package/dist/{chunk-CW2KPN3L.js → chunk-HOOU4NS2.js} +194 -56
- package/dist/{chunk-5VONCLVQ.js → chunk-MNUFMEAX.js} +1 -1
- package/dist/{chunk-YQNKULAD.js → chunk-QAGZWYPI.js} +815 -366
- package/dist/cli.js +6 -6
- package/dist/{demo-server-BIPT53EY.js → demo-server-Y7YWLPU7.js} +2 -2
- package/dist/index.js +3 -3
- package/dist/{intelligence-service-SJO5E7WN.js → intelligence-service-PR6T6JKY.js} +1 -1
- package/package.json +12 -12
- package/assets/assets/MeasurementPropertyPage-Bp6EURzJ.js +0 -1
- package/assets/assets/ProjectPage-Cd03Phwx.js +0 -8
- package/assets/assets/v2-overview-adapter-ebrNjcUG.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-
|
|
2
|
-
import{c as M4,d as I4,r as T,j as c,Q as V4,M as L4,q as pe,e as Dl,L as tt,a as U4,t as Io,u as Et,f as G4,h as da,k as Hs,l as Dx,m as $4,n as Ox,O as hh,o as ns,p as K4,s as St,v as qx,x as as,y as H4,z as Q4,A as F4}from"./vendor-tanstack-ZXXkndVj.js";import{S as Z4,O as Zh,P as Bx,C as Yh,a as Px,T as Xh,D as Mx,R as Ix}from"./vendor-radix-twS1M3FF.js";import{c as Vx}from"./vendor-recharts-D-cUuLZo.js";import{A as Y4,X as sr,S as X4,a as J4,G as Lx,C as Xu,L as Zo,R as du,b as Ux,M as W4,c as eA,d as tA,e as Jh,T as Gx,W as nA,f as Wh,g as $x,h as aA,i as iA,P as sA,H as oA,j as rA,k as lA,l as cA,m as uA,B as dA,F as mA,n as pA,o as hA,p as fA,q as sb,E as gA}from"./vendor-lucide-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-ElUwcAS4.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-nVpYViBH.js","./ChartPrimitives-Bxa_vFmq.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-CrFybBls.js","./v2-overview-adapter-B_N4ilQV.js","./vendor-markdown-B-Oq2NYq.js","./RunRow-BLBAwIot.js","./extract-error-message-DIzjGZxl.js","./AuditHistoryPanel-D5cOFMKE.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-BVgBbE1M.js","./HistoryPage-DDBCwooU.js","./SettingsPage-DYtN-1_-.js","./BacklinksPage-BiOj8ztV.js","./TrafficPage-D6QT_2hU.js","./TrafficSourceDetailPage-BnLzF82w.js","./MeasurementPropertyPage-CMoU2yA_.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as M4,d as I4,r as T,j as c,Q as V4,M as L4,q as pe,e as Dl,L as tt,a as U4,t as Io,u as Et,f as G4,h as da,k as Hs,l as Dx,m as $4,n as Ox,O as hh,o as ns,p as K4,s as St,v as qx,x as as,y as H4,z as Q4,A as F4}from"./vendor-tanstack-ZXXkndVj.js";import{S as Z4,O as Zh,P as Bx,C as Yh,a as Px,T as Xh,D as Mx,R as Ix}from"./vendor-radix-twS1M3FF.js";import{c as Vx}from"./vendor-recharts-D-cUuLZo.js";import{A as Y4,X as sr,S as X4,a as J4,G as Lx,C as Xu,L as Zo,R as du,b as Ux,M as W4,c as eA,d as tA,e as Jh,T as Gx,W as nA,f as Wh,g as $x,h as aA,i as iA,P as sA,H as oA,j as rA,k as lA,l as cA,m as uA,B as dA,F as mA,n as pA,o as hA,p as fA,q as sb,E as gA}from"./vendor-lucide-nVpYViBH.js";import{M as yA}from"./vendor-markdown-B-Oq2NYq.js";import{p as bA}from"./vendor-yaml-GWJz5H2G.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))r(u);new MutationObserver(u=>{for(const f of u)if(f.type==="childList")for(const g of f.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&r(g)}).observe(document,{childList:!0,subtree:!0});function s(u){const f={};return u.integrity&&(f.integrity=u.integrity),u.referrerPolicy&&(f.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?f.credentials="include":u.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function r(u){if(u.ep)return;u.ep=!0;const f=s(u);fetch(u.href,f)}})();var Mp={exports:{}},dl={},Ip={exports:{}},Vp={};var ob;function vA(){return ob||(ob=1,(function(e){function a(P,ae){var he=P.length;P.push(ae);e:for(;0<he;){var je=he-1>>>1,X=P[je];if(0<u(X,ae))P[je]=ae,P[he]=X,he=je;else break e}}function s(P){return P.length===0?null:P[0]}function r(P){if(P.length===0)return null;var ae=P[0],he=P.pop();if(he!==ae){P[0]=he;e:for(var je=0,X=P.length,Ie=X>>>1;je<Ie;){var Ne=2*(je+1)-1,Ae=P[Ne],ne=Ne+1,V=P[ne];if(0>u(Ae,he))ne<X&&0>u(V,Ae)?(P[je]=V,P[ne]=he,je=ne):(P[je]=Ae,P[Ne]=he,je=Ne);else if(ne<X&&0>u(V,he))P[je]=V,P[ne]=he,je=ne;else break e}}return ae}function u(P,ae){var he=P.sortIndex-ae.sortIndex;return he!==0?he:P.id-ae.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;e.unstable_now=function(){return f.now()}}else{var g=Date,b=g.now();e.unstable_now=function(){return g.now()-b}}var v=[],k=[],S=1,A=null,N=3,E=!1,Z=!1,_=!1,G=!1,K=typeof setTimeout=="function"?setTimeout:null,te=typeof clearTimeout=="function"?clearTimeout:null,Q=typeof setImmediate<"u"?setImmediate:null;function re(P){for(var ae=s(k);ae!==null;){if(ae.callback===null)r(k);else if(ae.startTime<=P)r(k),ae.sortIndex=ae.expirationTime,a(v,ae);else break;ae=s(k)}}function W(P){if(_=!1,re(P),!Z)if(s(v)!==null)Z=!0,oe||(oe=!0,Re());else{var ae=s(k);ae!==null&&be(W,ae.startTime-P)}}var oe=!1,H=-1,$=5,Te=-1;function Ke(){return G?!0:!(e.unstable_now()-Te<$)}function Fe(){if(G=!1,oe){var P=e.unstable_now();Te=P;var ae=!0;try{e:{Z=!1,_&&(_=!1,te(H),H=-1),E=!0;var he=N;try{t:{for(re(P),A=s(v);A!==null&&!(A.expirationTime>P&&Ke());){var je=A.callback;if(typeof je=="function"){A.callback=null,N=A.priorityLevel;var X=je(A.expirationTime<=P);if(P=e.unstable_now(),typeof X=="function"){A.callback=X,re(P),ae=!0;break t}A===s(v)&&r(v),re(P)}else r(v);A=s(v)}if(A!==null)ae=!0;else{var Ie=s(k);Ie!==null&&be(W,Ie.startTime-P),ae=!1}}break e}finally{A=null,N=he,E=!1}ae=void 0}}finally{ae?Re():oe=!1}}}var Re;if(typeof Q=="function")Re=function(){Q(Fe)};else if(typeof MessageChannel<"u"){var ve=new MessageChannel,Ue=ve.port2;ve.port1.onmessage=Fe,Re=function(){Ue.postMessage(null)}}else Re=function(){K(Fe,0)};function be(P,ae){H=K(function(){P(e.unstable_now())},ae)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(P){P.callback=null},e.unstable_forceFrameRate=function(P){0>P||125<P?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):$=0<P?Math.floor(1e3/P):5},e.unstable_getCurrentPriorityLevel=function(){return N},e.unstable_next=function(P){switch(N){case 1:case 2:case 3:var ae=3;break;default:ae=N}var he=N;N=ae;try{return P()}finally{N=he}},e.unstable_requestPaint=function(){G=!0},e.unstable_runWithPriority=function(P,ae){switch(P){case 1:case 2:case 3:case 4:case 5:break;default:P=3}var he=N;N=P;try{return ae()}finally{N=he}},e.unstable_scheduleCallback=function(P,ae,he){var je=e.unstable_now();switch(typeof he=="object"&&he!==null?(he=he.delay,he=typeof he=="number"&&0<he?je+he:je):he=je,P){case 1:var X=-1;break;case 2:X=250;break;case 5:X=1073741823;break;case 4:X=1e4;break;default:X=5e3}return X=he+X,P={id:S++,callback:ae,priorityLevel:P,startTime:he,expirationTime:X,sortIndex:-1},he>je?(P.sortIndex=he,a(k,P),s(v)===null&&P===s(k)&&(_?(te(H),H=-1):_=!0,be(W,he-je))):(P.sortIndex=X,a(v,P),Z||E||(Z=!0,oe||(oe=!0,Re()))),P},e.unstable_shouldYield=Ke,e.unstable_wrapCallback=function(P){var ae=N;return function(){var he=N;N=ae;try{return P.apply(this,arguments)}finally{N=he}}}})(Vp)),Vp}var rb;function xA(){return rb||(rb=1,Ip.exports=vA()),Ip.exports}var lb;function kA(){if(lb)return dl;lb=1;var e=xA(),a=M4(),s=I4();function r(t){var n="https://react.dev/errors/"+t;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)n+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function f(t){var n=t,i=t;if(t.alternate)for(;n.return;)n=n.return;else{t=n;do n=t,(n.flags&4098)!==0&&(i=n.return),t=n.return;while(t)}return n.tag===3?i:null}function g(t){if(t.tag===13){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function b(t){if(t.tag===31){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function v(t){if(f(t)!==t)throw Error(r(188))}function k(t){var n=t.alternate;if(!n){if(n=f(t),n===null)throw Error(r(188));return n!==t?null:t}for(var i=t,l=n;;){var p=i.return;if(p===null)break;var h=p.alternate;if(h===null){if(l=p.return,l!==null){i=l;continue}break}if(p.child===h.child){for(h=p.child;h;){if(h===i)return v(p),t;if(h===l)return v(p),n;h=h.sibling}throw Error(r(188))}if(i.return!==l.return)i=p,l=h;else{for(var x=!1,w=p.child;w;){if(w===i){x=!0,i=p,l=h;break}if(w===l){x=!0,l=p,i=h;break}w=w.sibling}if(!x){for(w=h.child;w;){if(w===i){x=!0,i=h,l=p;break}if(w===l){x=!0,l=h,i=p;break}w=w.sibling}if(!x)throw Error(r(189))}}if(i.alternate!==l)throw Error(r(190))}if(i.tag!==3)throw Error(r(188));return i.stateNode.current===i?t:n}function S(t){var n=t.tag;if(n===5||n===26||n===27||n===6)return t;for(t=t.child;t!==null;){if(n=S(t),n!==null)return n;t=t.sibling}return null}var A=Object.assign,N=Symbol.for("react.element"),E=Symbol.for("react.transitional.element"),Z=Symbol.for("react.portal"),_=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),K=Symbol.for("react.profiler"),te=Symbol.for("react.consumer"),Q=Symbol.for("react.context"),re=Symbol.for("react.forward_ref"),W=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),H=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),Te=Symbol.for("react.activity"),Ke=Symbol.for("react.memo_cache_sentinel"),Fe=Symbol.iterator;function Re(t){return t===null||typeof t!="object"?null:(t=Fe&&t[Fe]||t["@@iterator"],typeof t=="function"?t:null)}var ve=Symbol.for("react.client.reference");function Ue(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===ve?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case _:return"Fragment";case K:return"Profiler";case G:return"StrictMode";case W:return"Suspense";case oe:return"SuspenseList";case Te:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case Z:return"Portal";case Q:return t.displayName||"Context";case te:return(t._context.displayName||"Context")+".Consumer";case re:var n=t.render;return t=t.displayName,t||(t=n.displayName||n.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case H:return n=t.displayName||null,n!==null?n:Ue(t.type)||"Memo";case $:n=t._payload,t=t._init;try{return Ue(t(n))}catch{}}return null}var be=Array.isArray,P=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae=s.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,he={pending:!1,data:null,method:null,action:null},je=[],X=-1;function Ie(t){return{current:t}}function Ne(t){0>X||(t.current=je[X],je[X]=null,X--)}function Ae(t,n){X++,je[X]=t.current,t.current=n}var ne=Ie(null),V=Ie(null),q=Ie(null),le=Ie(null);function De(t,n){switch(Ae(q,n),Ae(V,t),Ae(ne,null),n.nodeType){case 9:case 11:t=(t=n.documentElement)&&(t=t.namespaceURI)?_y(t):0;break;default:if(t=n.tagName,n=n.namespaceURI)n=_y(n),t=zy(n,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}Ne(ne),Ae(ne,t)}function ye(){Ne(ne),Ne(V),Ne(q)}function Je(t){t.memoizedState!==null&&Ae(le,t);var n=ne.current,i=zy(n,t.type);n!==i&&(Ae(V,t),Ae(ne,i))}function Ge(t){V.current===t&&(Ne(ne),Ne(V)),le.current===t&&(Ne(le),rl._currentValue=he)}var Be,de;function Me(t){if(Be===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);Be=n&&n[1]||"",de=-1<i.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Be+t+de}var $t=!1;function Sn(t,n){if(!t||$t)return"";$t=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(n){var ie=function(){throw Error()};if(Object.defineProperty(ie.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ie,[])}catch(F){var L=F}Reflect.construct(t,[],ie)}else{try{ie.call()}catch(F){L=F}t.call(ie.prototype)}}else{try{throw Error()}catch(F){L=F}(ie=t())&&typeof ie.catch=="function"&&ie.catch(function(){})}}catch(F){if(F&&L&&typeof F.stack=="string")return[F.stack,L.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=l.DetermineComponentFrameRoot(),x=h[0],w=h[1];if(x&&w){var z=x.split(`
|
|
5
5
|
`),I=w.split(`
|
|
@@ -45,23 +45,23 @@ Error generating stack: `+l.message+`
|
|
|
45
45
|
|
|
46
46
|
`)}E.write("payload.value = newResult;"),E.write("return payload;");const te=E.compile();return(Q,re)=>te(N,Q,re)};let f;const g=Cl,b=!Hx.jitless,k=b&&CA.value,S=a.catchall;let A;e._zod.parse=(N,E)=>{A??(A=r.value);const Z=N.value;return g(Z)?b&&k&&E?.async===!1&&E.jitless!==!0?(f||(f=u(a.shape)),N=f(N,E),S?c2([],Z,N,E,A,e):N):s(N,E):(N.issues.push({expected:"object",code:"invalid_type",input:Z,inst:e}),N)}});function hb(e,a,s,r){for(const f of e)if(f.issues.length===0)return a.value=f.value,a;const u=e.filter(f=>!Go(f));return u.length===1?(a.value=u[0].value,u[0]):(a.issues.push({code:"invalid_union",input:a.value,inst:s,errors:e.map(f=>f.issues.map(g=>es(g,r,Wi())))}),a)}const u2=J("$ZodUnion",(e,a)=>{Ct.init(e,a),dt(e._zod,"optin",()=>a.options.some(u=>u._zod.optin==="optional")?"optional":void 0),dt(e._zod,"optout",()=>a.options.some(u=>u._zod.optout==="optional")?"optional":void 0),dt(e._zod,"values",()=>{if(a.options.every(u=>u._zod.values))return new Set(a.options.flatMap(u=>Array.from(u._zod.values)))}),dt(e._zod,"pattern",()=>{if(a.options.every(u=>u._zod.pattern)){const u=a.options.map(f=>f._zod.pattern);return new RegExp(`^(${u.map(f=>t0(f.source)).join("|")})$`)}});const s=a.options.length===1,r=a.options[0]._zod.run;e._zod.parse=(u,f)=>{if(s)return r(u,f);let g=!1;const b=[];for(const v of a.options){const k=v._zod.run({value:u.value,issues:[]},f);if(k instanceof Promise)b.push(k),g=!0;else{if(k.issues.length===0)return k;b.push(k)}}return g?Promise.all(b).then(v=>hb(v,u,e,f)):hb(b,u,e,f)}}),hC=J("$ZodDiscriminatedUnion",(e,a)=>{a.inclusive=!1,u2.init(e,a);const s=e._zod.parse;dt(e._zod,"propValues",()=>{const u={};for(const f of a.options){const g=f._zod.propValues;if(!g||Object.keys(g).length===0)throw new Error(`Invalid discriminated union option at index "${a.options.indexOf(f)}"`);for(const[b,v]of Object.entries(g)){u[b]||(u[b]=new Set);for(const k of v)u[b].add(k)}}return u});const r=Ju(()=>{const u=a.options,f=new Map;for(const g of u){const b=g._zod.propValues?.[a.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${a.options.indexOf(g)}"`);for(const v of b){if(f.has(v))throw new Error(`Duplicate discriminator value "${String(v)}"`);f.set(v,g)}}return f});e._zod.parse=(u,f)=>{const g=u.value;if(!Cl(g))return u.issues.push({code:"invalid_type",expected:"object",input:g,inst:e}),u;const b=r.value.get(g?.[a.discriminator]);return b?b._zod.run(u,f):a.unionFallback?s(u,f):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:a.discriminator,input:g,path:[a.discriminator],inst:e}),u)}}),fC=J("$ZodIntersection",(e,a)=>{Ct.init(e,a),e._zod.parse=(s,r)=>{const u=s.value,f=a.left._zod.run({value:u,issues:[]},r),g=a.right._zod.run({value:u,issues:[]},r);return f instanceof Promise||g instanceof Promise?Promise.all([f,g]).then(([v,k])=>fb(s,v,k)):fb(s,f,g)}});function gh(e,a){if(e===a)return{valid:!0,data:e};if(e instanceof Date&&a instanceof Date&&+e==+a)return{valid:!0,data:e};if(Yo(e)&&Yo(a)){const s=Object.keys(a),r=Object.keys(e).filter(f=>s.indexOf(f)!==-1),u={...e,...a};for(const f of r){const g=gh(e[f],a[f]);if(!g.valid)return{valid:!1,mergeErrorPath:[f,...g.mergeErrorPath]};u[f]=g.data}return{valid:!0,data:u}}if(Array.isArray(e)&&Array.isArray(a)){if(e.length!==a.length)return{valid:!1,mergeErrorPath:[]};const s=[];for(let r=0;r<e.length;r++){const u=e[r],f=a[r],g=gh(u,f);if(!g.valid)return{valid:!1,mergeErrorPath:[r,...g.mergeErrorPath]};s.push(g.data)}return{valid:!0,data:s}}return{valid:!1,mergeErrorPath:[]}}function fb(e,a,s){const r=new Map;let u;for(const b of a.issues)if(b.code==="unrecognized_keys"){u??(u=b);for(const v of b.keys)r.has(v)||r.set(v,{}),r.get(v).l=!0}else e.issues.push(b);for(const b of s.issues)if(b.code==="unrecognized_keys")for(const v of b.keys)r.has(v)||r.set(v,{}),r.get(v).r=!0;else e.issues.push(b);const f=[...r].filter(([,b])=>b.l&&b.r).map(([b])=>b);if(f.length&&u&&e.issues.push({...u,keys:f}),Go(e))return e;const g=gh(a.value,s.value);if(!g.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(g.mergeErrorPath)}`);return e.value=g.data,e}const gC=J("$ZodRecord",(e,a)=>{Ct.init(e,a),e._zod.parse=(s,r)=>{const u=s.value;if(!Yo(u))return s.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),s;const f=[],g=a.keyType._zod.values;if(g){s.value={};const b=new Set;for(const k of g)if(typeof k=="string"||typeof k=="number"||typeof k=="symbol"){b.add(typeof k=="number"?k.toString():k);const S=a.valueType._zod.run({value:u[k],issues:[]},r);S instanceof Promise?f.push(S.then(A=>{A.issues.length&&s.issues.push(...$o(k,A.issues)),s.value[k]=A.value})):(S.issues.length&&s.issues.push(...$o(k,S.issues)),s.value[k]=S.value)}let v;for(const k in u)b.has(k)||(v=v??[],v.push(k));v&&v.length>0&&s.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:v})}else{s.value={};for(const b of Reflect.ownKeys(u)){if(b==="__proto__")continue;let v=a.keyType._zod.run({value:b,issues:[]},r);if(v instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof b=="string"&&n2.test(b)&&v.issues.length){const A=a.keyType._zod.run({value:Number(b),issues:[]},r);if(A instanceof Promise)throw new Error("Async schemas not supported in object keys currently");A.issues.length===0&&(v=A)}if(v.issues.length){a.mode==="loose"?s.value[b]=u[b]:s.issues.push({code:"invalid_key",origin:"record",issues:v.issues.map(A=>es(A,r,Wi())),input:b,path:[b],inst:e});continue}const S=a.valueType._zod.run({value:u[b],issues:[]},r);S instanceof Promise?f.push(S.then(A=>{A.issues.length&&s.issues.push(...$o(b,A.issues)),s.value[v.value]=A.value})):(S.issues.length&&s.issues.push(...$o(b,S.issues)),s.value[v.value]=S.value)}}return f.length?Promise.all(f).then(()=>s):s}}),yC=J("$ZodEnum",(e,a)=>{Ct.init(e,a);const s=Qx(a.entries),r=new Set(s);e._zod.values=r,e._zod.pattern=new RegExp(`^(${s.filter(u=>NA.has(typeof u)).map(u=>typeof u=="string"?Xo(u):u.toString()).join("|")})$`),e._zod.parse=(u,f)=>{const g=u.value;return r.has(g)||u.issues.push({code:"invalid_value",values:s,input:g,inst:e}),u}}),bC=J("$ZodLiteral",(e,a)=>{if(Ct.init(e,a),a.values.length===0)throw new Error("Cannot create literal schema with no valid values");const s=new Set(a.values);e._zod.values=s,e._zod.pattern=new RegExp(`^(${a.values.map(r=>typeof r=="string"?Xo(r):r?Xo(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,u)=>{const f=r.value;return s.has(f)||r.issues.push({code:"invalid_value",values:a.values,input:f,inst:e}),r}}),vC=J("$ZodTransform",(e,a)=>{Ct.init(e,a),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Kx(e.constructor.name);const u=a.transform(s.value,s);if(r.async)return(u instanceof Promise?u:Promise.resolve(u)).then(g=>(s.value=g,s));if(u instanceof Promise)throw new Ho;return s.value=u,s}});function gb(e,a){return e.issues.length&&a===void 0?{issues:[],value:void 0}:e}const d2=J("$ZodOptional",(e,a)=>{Ct.init(e,a),e._zod.optin="optional",e._zod.optout="optional",dt(e._zod,"values",()=>a.innerType._zod.values?new Set([...a.innerType._zod.values,void 0]):void 0),dt(e._zod,"pattern",()=>{const s=a.innerType._zod.pattern;return s?new RegExp(`^(${t0(s.source)})?$`):void 0}),e._zod.parse=(s,r)=>{if(a.innerType._zod.optin==="optional"){const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>gb(f,s.value)):gb(u,s.value)}return s.value===void 0?s:a.innerType._zod.run(s,r)}}),xC=J("$ZodExactOptional",(e,a)=>{d2.init(e,a),dt(e._zod,"values",()=>a.innerType._zod.values),dt(e._zod,"pattern",()=>a.innerType._zod.pattern),e._zod.parse=(s,r)=>a.innerType._zod.run(s,r)}),kC=J("$ZodNullable",(e,a)=>{Ct.init(e,a),dt(e._zod,"optin",()=>a.innerType._zod.optin),dt(e._zod,"optout",()=>a.innerType._zod.optout),dt(e._zod,"pattern",()=>{const s=a.innerType._zod.pattern;return s?new RegExp(`^(${t0(s.source)}|null)$`):void 0}),dt(e._zod,"values",()=>a.innerType._zod.values?new Set([...a.innerType._zod.values,null]):void 0),e._zod.parse=(s,r)=>s.value===null?s:a.innerType._zod.run(s,r)}),wC=J("$ZodDefault",(e,a)=>{Ct.init(e,a),e._zod.optin="optional",dt(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);if(s.value===void 0)return s.value=a.defaultValue,s;const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>yb(f,a)):yb(u,a)}});function yb(e,a){return e.value===void 0&&(e.value=a.defaultValue),e}const SC=J("$ZodPrefault",(e,a)=>{Ct.init(e,a),e._zod.optin="optional",dt(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>(r.direction==="backward"||s.value===void 0&&(s.value=a.defaultValue),a.innerType._zod.run(s,r))}),jC=J("$ZodNonOptional",(e,a)=>{Ct.init(e,a),dt(e._zod,"values",()=>{const s=a.innerType._zod.values;return s?new Set([...s].filter(r=>r!==void 0)):void 0}),e._zod.parse=(s,r)=>{const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>bb(f,e)):bb(u,e)}});function bb(e,a){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:a}),e}const AC=J("$ZodCatch",(e,a)=>{Ct.init(e,a),dt(e._zod,"optin",()=>a.innerType._zod.optin),dt(e._zod,"optout",()=>a.innerType._zod.optout),dt(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>(s.value=f.value,f.issues.length&&(s.value=a.catchValue({...s,error:{issues:f.issues.map(g=>es(g,r,Wi()))},input:s.value}),s.issues=[]),s)):(s.value=u.value,u.issues.length&&(s.value=a.catchValue({...s,error:{issues:u.issues.map(f=>es(f,r,Wi()))},input:s.value}),s.issues=[]),s)}}),CC=J("$ZodPipe",(e,a)=>{Ct.init(e,a),dt(e._zod,"values",()=>a.in._zod.values),dt(e._zod,"optin",()=>a.in._zod.optin),dt(e._zod,"optout",()=>a.out._zod.optout),dt(e._zod,"propValues",()=>a.in._zod.propValues),e._zod.parse=(s,r)=>{if(r.direction==="backward"){const f=a.out._zod.run(s,r);return f instanceof Promise?f.then(g=>pu(g,a.in,r)):pu(f,a.in,r)}const u=a.in._zod.run(s,r);return u instanceof Promise?u.then(f=>pu(f,a.out,r)):pu(u,a.out,r)}});function pu(e,a,s){return e.issues.length?(e.aborted=!0,e):a._zod.run({value:e.value,issues:e.issues},s)}const NC=J("$ZodReadonly",(e,a)=>{Ct.init(e,a),dt(e._zod,"propValues",()=>a.innerType._zod.propValues),dt(e._zod,"values",()=>a.innerType._zod.values),dt(e._zod,"optin",()=>a.innerType?._zod?.optin),dt(e._zod,"optout",()=>a.innerType?._zod?.optout),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(vb):vb(u)}});function vb(e){return e.value=Object.freeze(e.value),e}const _C=J("$ZodCustom",(e,a)=>{Bn.init(e,a),Ct.init(e,a),e._zod.parse=(s,r)=>s,e._zod.check=s=>{const r=s.value,u=a.fn(r);if(u instanceof Promise)return u.then(f=>xb(f,s,r,e));xb(u,s,r,e)}});function xb(e,a,s,r){if(!e){const u={code:"custom",input:s,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(u.params=r._zod.def.params),a.issues.push(Nl(u))}}var kb;class zC{constructor(){this._map=new WeakMap,this._idmap=new Map}add(a,...s){const r=s[0];return this._map.set(a,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,a),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(a){const s=this._map.get(a);return s&&typeof s=="object"&&"id"in s&&this._idmap.delete(s.id),this._map.delete(a),this}get(a){const s=a._zod.parent;if(s){const r={...this.get(s)??{}};delete r.id;const u={...r,...this._map.get(a)};return Object.keys(u).length?u:void 0}return this._map.get(a)}has(a){return this._map.has(a)}}function EC(){return new zC}(kb=globalThis).__zod_globalRegistry??(kb.__zod_globalRegistry=EC());const vl=globalThis.__zod_globalRegistry;function TC(e,a){return new e({type:"string",..._e(a)})}function RC(e,a){return new e({type:"string",format:"email",check:"string_format",abort:!1,..._e(a)})}function wb(e,a){return new e({type:"string",format:"guid",check:"string_format",abort:!1,..._e(a)})}function DC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,..._e(a)})}function OC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",..._e(a)})}function qC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",..._e(a)})}function BC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",..._e(a)})}function PC(e,a){return new e({type:"string",format:"url",check:"string_format",abort:!1,..._e(a)})}function MC(e,a){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,..._e(a)})}function IC(e,a){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,..._e(a)})}function VC(e,a){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,..._e(a)})}function LC(e,a){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,..._e(a)})}function UC(e,a){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,..._e(a)})}function GC(e,a){return new e({type:"string",format:"xid",check:"string_format",abort:!1,..._e(a)})}function $C(e,a){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,..._e(a)})}function KC(e,a){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,..._e(a)})}function HC(e,a){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,..._e(a)})}function QC(e,a){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,..._e(a)})}function FC(e,a){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,..._e(a)})}function ZC(e,a){return new e({type:"string",format:"base64",check:"string_format",abort:!1,..._e(a)})}function YC(e,a){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,..._e(a)})}function XC(e,a){return new e({type:"string",format:"e164",check:"string_format",abort:!1,..._e(a)})}function JC(e,a){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,..._e(a)})}function WC(e,a){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,..._e(a)})}function e6(e,a){return new e({type:"string",format:"date",check:"string_format",..._e(a)})}function t6(e,a){return new e({type:"string",format:"time",check:"string_format",precision:null,..._e(a)})}function n6(e,a){return new e({type:"string",format:"duration",check:"string_format",..._e(a)})}function a6(e,a){return new e({type:"number",checks:[],..._e(a)})}function i6(e,a){return new e({type:"number",coerce:!0,checks:[],..._e(a)})}function s6(e,a){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",..._e(a)})}function o6(e,a){return new e({type:"boolean",..._e(a)})}function r6(e,a){return new e({type:"null",..._e(a)})}function l6(e){return new e({type:"unknown"})}function c6(e,a){return new e({type:"never",..._e(a)})}function Sb(e,a){return new i2({check:"less_than",..._e(a),value:e,inclusive:!1})}function Lp(e,a){return new i2({check:"less_than",..._e(a),value:e,inclusive:!0})}function jb(e,a){return new s2({check:"greater_than",..._e(a),value:e,inclusive:!1})}function Up(e,a){return new s2({check:"greater_than",..._e(a),value:e,inclusive:!0})}function Ab(e,a){return new k5({check:"multiple_of",..._e(a),value:e})}function m2(e,a){return new S5({check:"max_length",..._e(a),maximum:e})}function Du(e,a){return new j5({check:"min_length",..._e(a),minimum:e})}function p2(e,a){return new A5({check:"length_equals",..._e(a),length:e})}function u6(e,a){return new C5({check:"string_format",format:"regex",..._e(a),pattern:e})}function d6(e){return new N5({check:"string_format",format:"lowercase",..._e(e)})}function m6(e){return new _5({check:"string_format",format:"uppercase",..._e(e)})}function p6(e,a){return new z5({check:"string_format",format:"includes",..._e(a),includes:e})}function h6(e,a){return new E5({check:"string_format",format:"starts_with",..._e(a),prefix:e})}function f6(e,a){return new T5({check:"string_format",format:"ends_with",..._e(a),suffix:e})}function or(e){return new R5({check:"overwrite",tx:e})}function g6(e){return or(a=>a.normalize(e))}function y6(){return or(e=>e.trim())}function b6(){return or(e=>e.toLowerCase())}function v6(){return or(e=>e.toUpperCase())}function x6(){return or(e=>AA(e))}function k6(e,a,s){return new e({type:"array",element:a,..._e(s)})}function w6(e,a,s){return new e({type:"custom",check:"custom",fn:a,..._e(s)})}function S6(e){const a=j6(s=>(s.addIssue=r=>{if(typeof r=="string")s.issues.push(Nl(r,s.value,a._zod.def));else{const u=r;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=s.value),u.inst??(u.inst=a),u.continue??(u.continue=!a._zod.def.abort),s.issues.push(Nl(u))}},e(s.value,s)));return a}function j6(e,a){const s=new Bn({check:"custom",..._e(a)});return s._zod.check=e,s}function h2(e){let a=e?.target??"draft-2020-12";return a==="draft-4"&&(a="draft-04"),a==="draft-7"&&(a="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??vl,target:a,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function Gt(e,a,s={path:[],schemaPath:[]}){var r;const u=e._zod.def,f=a.seen.get(e);if(f)return f.count++,s.schemaPath.includes(e)&&(f.cycle=s.path),f.schema;const g={schema:{},count:1,cycle:void 0,path:s.path};a.seen.set(e,g);const b=e._zod.toJSONSchema?.();if(b)g.schema=b;else{const S={...s,schemaPath:[...s.schemaPath,e],path:s.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(a,g.schema,S);else{const N=g.schema,E=a.processors[u.type];if(!E)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);E(e,a,N,S)}const A=e._zod.parent;A&&(g.ref||(g.ref=A),Gt(A,a,S),a.seen.get(A).isParent=!0)}const v=a.metadataRegistry.get(e);return v&&Object.assign(g.schema,v),a.io==="input"&&vn(e)&&(delete g.schema.examples,delete g.schema.default),a.io==="input"&&g.schema._prefault&&((r=g.schema).default??(r.default=g.schema._prefault)),delete g.schema._prefault,a.seen.get(e).schema}function f2(e,a){const s=e.seen.get(a);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const g of e.seen.entries()){const b=e.metadataRegistry.get(g[0])?.id;if(b){const v=r.get(b);if(v&&v!==g[0])throw new Error(`Duplicate schema id "${b}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(b,g[0])}}const u=g=>{const b=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const A=e.external.registry.get(g[0])?.id,N=e.external.uri??(Z=>Z);if(A)return{ref:N(A)};const E=g[1].defId??g[1].schema.id??`schema${e.counter++}`;return g[1].defId=E,{defId:E,ref:`${N("__shared")}#/${b}/${E}`}}if(g[1]===s)return{ref:"#"};const k=`#/${b}/`,S=g[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:k+S}},f=g=>{if(g[1].schema.$ref)return;const b=g[1],{ref:v,defId:k}=u(g);b.def={...b.schema},k&&(b.defId=k);const S=b.schema;for(const A in S)delete S[A];S.$ref=v};if(e.cycles==="throw")for(const g of e.seen.entries()){const b=g[1];if(b.cycle)throw new Error(`Cycle detected: #/${b.cycle?.join("/")}/<root>
|
|
47
47
|
|
|
48
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(a===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(a!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function g2(e,a){const s=e.seen.get(a);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const v=b.def??b.schema,k={...v},S=b.ref;if(b.ref=null,S){r(S);const N=e.seen.get(S),E=N.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(E)):Object.assign(v,E),Object.assign(v,k),g._zod.parent===S)for(const _ in v)_==="$ref"||_==="allOf"||_ in k||delete v[_];if(E.$ref&&N.def)for(const _ in v)_==="$ref"||_==="allOf"||_ in N.def&&JSON.stringify(v[_])===JSON.stringify(N.def[_])&&delete v[_]}const A=g._zod.parent;if(A&&A!==S){r(A);const N=e.seen.get(A);if(N?.schema.$ref&&(v.$ref=N.schema.$ref,N.def))for(const E in v)E==="$ref"||E==="allOf"||E in N.def&&JSON.stringify(v[E])===JSON.stringify(N.def[E])&&delete v[E]}e.override({zodSchema:g,jsonSchema:v,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(a)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...a["~standard"],jsonSchema:{input:Ou(a,"input",e.processors),output:Ou(a,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function vn(e,a){const s=a??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return vn(r.element,s);if(r.type==="set")return vn(r.valueType,s);if(r.type==="lazy")return vn(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return vn(r.innerType,s);if(r.type==="intersection")return vn(r.left,s)||vn(r.right,s);if(r.type==="record"||r.type==="map")return vn(r.keyType,s)||vn(r.valueType,s);if(r.type==="pipe")return vn(r.in,s)||vn(r.out,s);if(r.type==="object"){for(const u in r.shape)if(vn(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(vn(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(vn(u,s))return!0;return!!(r.rest&&vn(r.rest,s))}return!1}const A6=(e,a={})=>s=>{const r=h2({...s,processors:a});return Gt(e,r),f2(r,e),g2(r,e)},Ou=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=h2({...u??{},target:f,io:a,processors:s});return Gt(e,g),f2(g,e),g2(g,e)},C6={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},N6=(e,a,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:v,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=C6[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),v&&v.size>0){const S=[...v];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(A=>({...a.target==="draft-07"||a.target==="draft-04"||a.target==="openapi-3.0"?{type:"string"}:{},pattern:A.source}))])}},_6=(e,a,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:v,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&a.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&a.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},z6=(e,a,s,r)=>{s.type="boolean"},E6=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},T6=(e,a,s,r)=>{s.not={}},R6=(e,a,s,r)=>{},D6=(e,a,s,r)=>{const u=e._zod.def,f=Qx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},O6=(e,a,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(a.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(a.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,a.target==="draft-04"||a.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},q6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},B6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},P6=(e,a,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Gt(f.element,a,{...r,path:[...r.path,"items"]})},M6=(e,a,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Gt(g[k],a,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),v=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return a.io==="input"?S.optin===void 0:S.optout===void 0}));v.size>0&&(u.required=Array.from(v)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Gt(f.catchall,a,{...r,path:[...r.path,"additionalProperties"]})):a.io==="output"&&(u.additionalProperties=!1)},I6=(e,a,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,v)=>Gt(b,a,{...r,path:[...r.path,f?"oneOf":"anyOf",v]}));f?s.oneOf=g:s.anyOf=g},V6=(e,a,s,r)=>{const u=e._zod.def,f=Gt(u.left,a,{...r,path:[...r.path,"allOf",0]}),g=Gt(u.right,a,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,v=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=v},L6=(e,a,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,v=g._zod.bag?.patterns;if(f.mode==="loose"&&v&&v.size>0){const S=Gt(f.valueType,a,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const A of v)u.patternProperties[A.source]=S}else(a.target==="draft-07"||a.target==="draft-2020-12")&&(u.propertyNames=Gt(f.keyType,a,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Gt(f.valueType,a,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(A=>typeof A=="string"||typeof A=="number");S.length>0&&(u.required=S)}},U6=(e,a,s,r)=>{const u=e._zod.def,f=Gt(u.innerType,a,r),g=a.seen.get(e);a.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},G6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},$6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},K6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,a.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},H6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},Q6=(e,a,s,r)=>{const u=e._zod.def,f=a.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Gt(f,a,r);const g=a.seen.get(e);g.ref=f},F6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.readOnly=!0},y2=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},Z6=J("ZodISODateTime",(e,a)=>{H5.init(e,a),Tt.init(e,a)});function b2(e){return WC(Z6,e)}const Y6=J("ZodISODate",(e,a)=>{Q5.init(e,a),Tt.init(e,a)});function v2(e){return e6(Y6,e)}const X6=J("ZodISOTime",(e,a)=>{F5.init(e,a),Tt.init(e,a)});function J6(e){return t6(X6,e)}const W6=J("ZodISODuration",(e,a)=>{Z5.init(e,a),Tt.init(e,a)});function eN(e){return n6(W6,e)}const tN=(e,a)=>{Xx.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>MA(e,s)},flatten:{value:s=>PA(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,fh,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,fh,2)}},isEmpty:{get(){return e.issues.length===0}}})},ma=J("ZodError",tN,{Parent:Error}),nN=a0(ma),aN=i0(ma),iN=Wu(ma),sN=ed(ma),oN=LA(ma),rN=UA(ma),lN=GA(ma),cN=$A(ma),uN=KA(ma),dN=HA(ma),mN=QA(ma),pN=FA(ma),_t=J("ZodType",(e,a)=>(Ct.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:Ou(e,"input"),output:Ou(e,"output")}}),e.toJSONSchema=A6(e,{}),e.def=a,e.type=a.type,Object.defineProperty(e,"_def",{value:a}),e.check=(...s)=>e.clone(is(a,{checks:[...a.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>ss(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>nN(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>iN(e,s,r),e.parseAsync=async(s,r)=>aN(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>sN(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>oN(e,s,r),e.decode=(s,r)=>rN(e,s,r),e.encodeAsync=async(s,r)=>lN(e,s,r),e.decodeAsync=async(s,r)=>cN(e,s,r),e.safeEncode=(s,r)=>uN(e,s,r),e.safeDecode=(s,r)=>dN(e,s,r),e.safeEncodeAsync=async(s,r)=>mN(e,s,r),e.safeDecodeAsync=async(s,r)=>pN(e,s,r),e.refine=(s,r)=>e.check(o_(s,r)),e.superRefine=s=>e.check(r_(s)),e.overwrite=s=>e.check(or(s)),e.optional=()=>_b(e),e.exactOptional=()=>QN(e),e.nullable=()=>zb(e),e.nullish=()=>_b(zb(e)),e.nonoptional=s=>WN(e,s),e.array=()=>y(e),e.or=s=>Qe([e,s]),e.and=s=>UN(e,s),e.transform=s=>bh(e,w2(s)),e.default=s=>YN(e,s),e.prefault=s=>JN(e,s),e.catch=s=>t_(e,s),e.pipe=s=>bh(e,s),e.readonly=()=>i_(e),e.describe=s=>{const r=e.clone();return vl.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return vl.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return vl.get(e);const r=e.clone();return vl.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),x2=J("_ZodString",(e,a)=>{s0.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>N6(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(u6(...r)),e.includes=(...r)=>e.check(p6(...r)),e.startsWith=(...r)=>e.check(h6(...r)),e.endsWith=(...r)=>e.check(f6(...r)),e.min=(...r)=>e.check(Du(...r)),e.max=(...r)=>e.check(m2(...r)),e.length=(...r)=>e.check(p2(...r)),e.nonempty=(...r)=>e.check(Du(1,...r)),e.lowercase=r=>e.check(d6(r)),e.uppercase=r=>e.check(m6(r)),e.trim=()=>e.check(y6()),e.normalize=(...r)=>e.check(g6(...r)),e.toLowerCase=()=>e.check(b6()),e.toUpperCase=()=>e.check(v6()),e.slugify=()=>e.check(x6())}),hN=J("ZodString",(e,a)=>{s0.init(e,a),x2.init(e,a),e.email=s=>e.check(RC(fN,s)),e.url=s=>e.check(PC(gN,s)),e.jwt=s=>e.check(JC(TN,s)),e.emoji=s=>e.check(MC(yN,s)),e.guid=s=>e.check(wb(Cb,s)),e.uuid=s=>e.check(DC(hu,s)),e.uuidv4=s=>e.check(OC(hu,s)),e.uuidv6=s=>e.check(qC(hu,s)),e.uuidv7=s=>e.check(BC(hu,s)),e.nanoid=s=>e.check(IC(bN,s)),e.guid=s=>e.check(wb(Cb,s)),e.cuid=s=>e.check(VC(vN,s)),e.cuid2=s=>e.check(LC(xN,s)),e.ulid=s=>e.check(UC(kN,s)),e.base64=s=>e.check(ZC(_N,s)),e.base64url=s=>e.check(YC(zN,s)),e.xid=s=>e.check(GC(wN,s)),e.ksuid=s=>e.check($C(SN,s)),e.ipv4=s=>e.check(KC(jN,s)),e.ipv6=s=>e.check(HC(AN,s)),e.cidrv4=s=>e.check(QC(CN,s)),e.cidrv6=s=>e.check(FC(NN,s)),e.e164=s=>e.check(XC(EN,s)),e.datetime=s=>e.check(b2(s)),e.date=s=>e.check(v2(s)),e.time=s=>e.check(J6(s)),e.duration=s=>e.check(eN(s))});function o(e){return TC(hN,e)}const Tt=J("ZodStringFormat",(e,a)=>{Nt.init(e,a),x2.init(e,a)}),fN=J("ZodEmail",(e,a)=>{P5.init(e,a),Tt.init(e,a)}),Cb=J("ZodGUID",(e,a)=>{q5.init(e,a),Tt.init(e,a)}),hu=J("ZodUUID",(e,a)=>{B5.init(e,a),Tt.init(e,a)}),gN=J("ZodURL",(e,a)=>{M5.init(e,a),Tt.init(e,a)}),yN=J("ZodEmoji",(e,a)=>{I5.init(e,a),Tt.init(e,a)}),bN=J("ZodNanoID",(e,a)=>{V5.init(e,a),Tt.init(e,a)}),vN=J("ZodCUID",(e,a)=>{L5.init(e,a),Tt.init(e,a)}),xN=J("ZodCUID2",(e,a)=>{U5.init(e,a),Tt.init(e,a)}),kN=J("ZodULID",(e,a)=>{G5.init(e,a),Tt.init(e,a)}),wN=J("ZodXID",(e,a)=>{$5.init(e,a),Tt.init(e,a)}),SN=J("ZodKSUID",(e,a)=>{K5.init(e,a),Tt.init(e,a)}),jN=J("ZodIPv4",(e,a)=>{Y5.init(e,a),Tt.init(e,a)}),AN=J("ZodIPv6",(e,a)=>{X5.init(e,a),Tt.init(e,a)}),CN=J("ZodCIDRv4",(e,a)=>{J5.init(e,a),Tt.init(e,a)}),NN=J("ZodCIDRv6",(e,a)=>{W5.init(e,a),Tt.init(e,a)}),_N=J("ZodBase64",(e,a)=>{eC.init(e,a),Tt.init(e,a)}),zN=J("ZodBase64URL",(e,a)=>{nC.init(e,a),Tt.init(e,a)}),EN=J("ZodE164",(e,a)=>{aC.init(e,a),Tt.init(e,a)}),TN=J("ZodJWT",(e,a)=>{sC.init(e,a),Tt.init(e,a)}),o0=J("ZodNumber",(e,a)=>{r2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>_6(e,r,u),e.gt=(r,u)=>e.check(jb(r,u)),e.gte=(r,u)=>e.check(Up(r,u)),e.min=(r,u)=>e.check(Up(r,u)),e.lt=(r,u)=>e.check(Sb(r,u)),e.lte=(r,u)=>e.check(Lp(r,u)),e.max=(r,u)=>e.check(Lp(r,u)),e.int=r=>e.check(Nb(r)),e.safe=r=>e.check(Nb(r)),e.positive=r=>e.check(jb(0,r)),e.nonnegative=r=>e.check(Up(0,r)),e.negative=r=>e.check(Sb(0,r)),e.nonpositive=r=>e.check(Lp(0,r)),e.multipleOf=(r,u)=>e.check(Ab(r,u)),e.step=(r,u)=>e.check(Ab(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function d(e){return a6(o0,e)}const RN=J("ZodNumberFormat",(e,a)=>{oC.init(e,a),o0.init(e,a)});function Nb(e){return s6(RN,e)}const DN=J("ZodBoolean",(e,a)=>{rC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z6(e,s,r)});function C(e){return o6(DN,e)}const ON=J("ZodNull",(e,a)=>{lC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>E6(e,s,r)});function ce(e){return r6(ON,e)}const qN=J("ZodUnknown",(e,a)=>{cC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R6()});function qn(){return l6(qN)}const BN=J("ZodNever",(e,a)=>{uC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T6(e,s,r)});function PN(e){return c6(BN,e)}const MN=J("ZodArray",(e,a)=>{dC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>P6(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(Du(s,r)),e.nonempty=s=>e.check(Du(1,s)),e.max=(s,r)=>e.check(m2(s,r)),e.length=(s,r)=>e.check(p2(s,r)),e.unwrap=()=>e.element});function y(e,a){return k6(MN,e,a)}const IN=J("ZodObject",(e,a)=>{pC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>M6(e,s,r,u),dt(e,"shape",()=>a.shape),e.keyof=()=>j(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:qn()}),e.loose=()=>e.clone({...e._zod.def,catchall:qn()}),e.strict=()=>e.clone({...e._zod.def,catchall:PN()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>RA(e,s),e.safeExtend=s=>DA(e,s),e.merge=s=>OA(e,s),e.pick=s=>EA(e,s),e.omit=s=>TA(e,s),e.partial=(...s)=>qA(S2,e,s[0]),e.required=(...s)=>BA(j2,e,s[0])});function m(e,a){const s={type:"object",shape:e??{},..._e(a)};return new IN(s)}const k2=J("ZodUnion",(e,a)=>{u2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>I6(e,s,r,u),e.options=a.options});function Qe(e,a){return new k2({type:"union",options:e,..._e(a)})}const VN=J("ZodDiscriminatedUnion",(e,a)=>{k2.init(e,a),hC.init(e,a)});function qe(e,a,s){return new VN({type:"union",options:a,discriminator:e,..._e(s)})}const LN=J("ZodIntersection",(e,a)=>{fC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>V6(e,s,r,u)});function UN(e,a){return new LN({type:"intersection",left:e,right:a})}const GN=J("ZodRecord",(e,a)=>{gC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>L6(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Le(e,a,s){return new GN({type:"record",keyType:e,valueType:a,..._e(s)})}const yh=J("ZodEnum",(e,a)=>{yC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>D6(e,r,u),e.enum=a.entries,e.options=Object.values(a.entries);const s=new Set(Object.keys(a.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=a.entries[g];else throw new Error(`Key ${g} not found in enum`);return new yh({...a,checks:[],..._e(u),entries:f})},e.exclude=(r,u)=>{const f={...a.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new yh({...a,checks:[],..._e(u),entries:f})}});function j(e,a){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new yh({type:"enum",entries:s,..._e(a)})}const $N=J("ZodLiteral",(e,a)=>{bC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>O6(e,s,r),e.values=new Set(a.values),Object.defineProperty(e,"value",{get(){if(a.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return a.values[0]}})});function D(e,a){return new $N({type:"literal",values:Array.isArray(e)?e:[e],..._e(a)})}const KN=J("ZodTransform",(e,a)=>{vC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>B6(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Kx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Nl(f,s.value,a));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Nl(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function w2(e){return new KN({type:"transform",transform:e})}const S2=J("ZodOptional",(e,a)=>{d2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function _b(e){return new S2({type:"optional",innerType:e})}const HN=J("ZodExactOptional",(e,a)=>{xC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function QN(e){return new HN({type:"optional",innerType:e})}const FN=J("ZodNullable",(e,a)=>{kC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>U6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function zb(e){return new FN({type:"nullable",innerType:e})}const ZN=J("ZodDefault",(e,a)=>{wC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>$6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function YN(e,a){return new ZN({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():Zx(a)}})}const XN=J("ZodPrefault",(e,a)=>{SC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>K6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function JN(e,a){return new XN({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():Zx(a)}})}const j2=J("ZodNonOptional",(e,a)=>{jC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>G6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function WN(e,a){return new j2({type:"nonoptional",innerType:e,..._e(a)})}const e_=J("ZodCatch",(e,a)=>{AC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>H6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function t_(e,a){return new e_({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const n_=J("ZodPipe",(e,a)=>{CC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Q6(e,s,r,u),e.in=a.in,e.out=a.out});function bh(e,a){return new n_({type:"pipe",in:e,out:a})}const a_=J("ZodReadonly",(e,a)=>{NC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>F6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function i_(e){return new a_({type:"readonly",innerType:e})}const s_=J("ZodCustom",(e,a)=>{_C.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>q6(e,s)});function o_(e,a={}){return w6(s_,e,a)}function r_(e){return S6(e)}function r0(e,a){return bh(w2(e),a)}const Se={custom:"custom"};function l0(e){return i6(o0,e)}const A2=m({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:C(),operator:C().optional(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});m({keys:y(A2)});m({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});A2.extend({key:o()});const l_=m({maxConcurrency:d().int().positive(),maxRequestsPerMinute:d().int().positive(),maxRequestsPerDay:d().int().positive()}),ht=o().min(1),c0=Le(o(),o().trim().min(1));o().min(1);const Yt=m({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),u0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);u0.enum;const d0=m({everyDays:d().int().min(1).max(3650),startDate:o().date(),time:o().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();m({id:o(),projectId:o(),kind:u0,cronExpr:o(),recurrence:d0.nullable().optional(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:C().default(!0),providers:y(ht).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});const c_=o().datetime();m({kind:u0.optional(),preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:d0.optional(),timezone:o().optional().default("UTC"),enabled:C().optional().default(!0),providers:y(ht).optional().default([]),sourceId:o().optional(),expectedUpdatedAt:c_.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(a=>a!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const m0=j(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);m({id:o(),projectId:o(),channel:D("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(m0),enabled:C().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});m({channel:D("webhook"),url:o().url(),events:y(m0).min(1),source:o().optional()});class u_ extends Error{code;statusCode;details;constructor(a,s,r,u){super(s),this.name="AppError",this.code=a,this.statusCode=r,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function Eb(e,a){return new u_("VALIDATION_ERROR",e,400,a)}function d_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const a=JSON.stringify(e);if(a!==void 0)return a}catch{}try{return String(e)}catch{return"unknown error"}}function Gp(e,a=!1){const s=new Set,r=[];for(const u of e){const f=a?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Tb(e){try{const a=e.includes("://"),s=new URL(a?e:`https://${e}`);if(!a&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const m_=o().trim().min(1).refine(e=>Tb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Tb(e)??e),p_=o().trim().min(1),h_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),p0=m({marketingHosts:y(m_).overwrite(e=>Gp(e,!0)),brandTerms:y(p_).overwrite(e=>Gp(e,!0)),leadEventNames:y(h_).overwrite(e=>Gp(e))});function f_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const $p=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),C2=()=>f_(),Rb=j(["never-synced","ready","error"]),g_=j(["landing-page","channel"]),y_=j(["30d","60d","90d"]),b_=j(["marketing","all"]),xl=v2(),Ol=m({label:j(["earliest","middle","previous","latest"]),startDate:xl,endDate:xl}),Kp=Ol.extend({sessions:d().int().nonnegative()}),Db=Ol.extend({eventCount:d().int().nonnegative()}),Ob=Ol.extend({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),v_=Ol.extend({propertyClicks:d().int().nonnegative(),propertyImpressions:d().int().nonnegative(),reportedQueryClicks:d().int().nonnegative(),reportedQueryImpressions:d().int().nonnegative(),brandedClicks:d().int().nonnegative(),brandedImpressions:d().int().nonnegative(),nonBrandedClicks:d().int().nonnegative(),nonBrandedImpressions:d().int().nonnegative(),unreportedClicks:d().int().nonnegative(),unreportedImpressions:d().int().nonnegative()}),x_=Ol.extend({sessions:d().int().nonnegative(),engagementRate:d().min(0).max(1).nullable(),dailyTotalUsers:d().int().nonnegative().nullable(),dailyNewUsers:d().int().nonnegative().nullable(),metricsAvailable:C(),daysInPeriod:d().int().nonnegative(),daysWithEngagementRate:d().int().nonnegative(),daysWithUserSplit:d().int().nonnegative()}),k_=m({window:y_,bucketDays:D(30),filters:m({hostScope:b_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:D("property")}),acquisition:m({status:Rb,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(Kp),channels:y(m({channelGroup:o(),periods:y(Kp)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Kp)}))}),leads:m({status:Rb,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:g_.nullable(),hostAndPathFiltersApplied:C(),periods:y(Db),channels:y(m({channelGroup:o(),periods:y(Db)}))}),engagement:m({status:j(["ready","unavailable"]),availableFromDate:xl.nullable(),latestDate:xl.nullable(),periods:y(x_)}),searchDemand:m({status:j(["ready","unavailable"]),periods:y(v_),queries:y(m({query:o(),classification:j(["branded","non-branded"]),periods:y(Ob)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Ob)})),latestDate:xl.nullable()})}),w_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,S_=/[\0-\x1F\x7F-\x9F]/,j_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,A_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var C_=class{src_Any=w_.source;src_Cc=S_.source;src_Z=A_.source;src_P=j_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,a,s=4){const r=this.escapeRE(e),u=this.escapeRE(a),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",a=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${a}|::(?:${e}:){5}${a}|(?:${e})?::(?:${e}:){4}${a}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${a}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${a}|(?:(?:${e}:){0,3}${e})?::${e}:${a}|(?:(?:${e}:){0,4}${e})?::${a}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},Hp={validate:(e,a,s)=>{const r=s.re.get_http_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)},N_={"http:":Hp,"https:":Hp,"ftp:":Hp,"//":{validate:function(e,a,s){const r=s.re.get_relative_proto_validator();r.lastIndex=a;const u=r.exec(e);return u?a>=3&&e[a-3]===":"||a>=3&&e[a-3]==="/"?0:u[0].length:0},normalize:(e,a)=>a.normalize(e)},"mailto:":{validate:function(e,a,s){const r=s.re.get_mailto_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)}},__="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",z_="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function E_(){const e=z_.split("|");return __.split("|").forEach(a=>{const s=a.indexOf(":"),r=a.slice(0,s);for(const u of a.slice(s+1))e.push(r+u)}),e}var T_={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:E_(),urlAuth:!1,maxLength:1e4},qb=class{schema;index;lastIndex;raw;text;url;constructor(e,a,s,r){const u=e.slice(s,r);this.schema=a.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},R_=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...T_,...s},this.__schemas__={...N_},this.re=a||new C_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,a=null){if(!a)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...a};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let a,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(a=s.exec(e))!==null;)if(this.testSchemaAt(e,a[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(a=r.exec(e))!==null;){const f=e.slice(Math.max(0,a.index-65),a.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,a,s){return this.__schemas__[a.toLowerCase()]?this.__schemas__[a.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const a=[],s=this.re.get_schema_search();let r,u,f,g,b,v,k=!1,S=!1,A=!1,N=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(N-1,0);if(u&&f&&!A&&(!b||b.index<N))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){A=!0,b=void 0;break}const Q=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(Q){if(b={schema:"mailto:",index:te.index-Q[1].length,lastIndex:te.index+te[0].length},b.index>=N)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<N))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=N)break;r.lastIndex<E&&(r.lastIndex=E)}let Z=b;(!Z||g&&(g.index<Z.index||g.index===Z.index&&g.lastIndex>Z.lastIndex))&&(Z=g);let _;if(!k)for(;;){if(!v){s.lastIndex<E&&(s.lastIndex=E);const re=s.exec(e);if(!re){k=!0;break}v={schema:re[2],index:re.index+re[1].length,lastIndex:re.index+re[0].length}}if(v.index<N){v=void 0;continue}if(Z&&v.index>Z.index)break;const te=v;v=void 0;const Q=this.testSchemaAt(e,te.schema,te.lastIndex);if(Q){_={schema:te.schema,index:te.index,lastIndex:te.lastIndex+Q};break}}let G=_;if((!G||b&&(b.index<G.index||b.index===G.index&&b.lastIndex>G.lastIndex))&&(G=b),(!G||g&&(g.index<G.index||g.index===G.index&&g.lastIndex>G.lastIndex))&&(G=g),!G)break;G===b?b=void 0:G===g&&(g=void 0);const K=new qb(e,G.schema,G.index,G.lastIndex);K.schema?this.__schemas__[K.schema].normalize(K,this):this.normalize(K),a.push(K),N=G.lastIndex}return a.length?a:null}matchAtStart(e){if(!e.length)return null;const a=this.re.get_schema_at_start().exec(e);if(!a)return null;const s=this.testSchemaAt(e,a[2],a[0].length);if(!s)return null;const r=new qb(e,a[2],a.index+a[1].length,a.index+a[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,a=!1){return e=Array.isArray(e)?e:[e],a?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const D_=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function O_(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function q_(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function B_(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(O_(a,f))return f}let r=0;if(a.startsWith("."))for(;r<a.length&&a[r]===".";)r+=1;return e.length===a.length-r?null:q_(a,e)}function P_(e,a){return e.slice(0,-a.length-1)}const Qp=/[\t\n\r]/g;let vh=!1;function Bb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Pb(e,a,s){const r=s-a,u=e.charCodeAt(a)|32;if(r===2)return u===119&&(e.charCodeAt(a+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+2)|32,b=e.charCodeAt(a+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(a+1)|32)===116&&(e.charCodeAt(a+2)|32)===116&&(e.charCodeAt(a+3)|32)===112&&(e.charCodeAt(a+4)|32)===115?1:0;return 0}function kl(e,a,s=!1){let r=0,u=e.length,f=!1,g=!1;if(vh=!1,!a){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const G=e.indexOf(":/",r);if(G!==-1){const K=Pb(e,r,G);if(K===1)for(g=!0,r=G+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(K===2){g=!0,r=G+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<G;te+=1){const Q=e.charCodeAt(te)|32;if(!(Q>=97&&Q<=122||Q>=48&&Q<=57||Q===46||Q===45||Q===43)){const re=e.charCodeAt(te);return re===9||re===10||re===13?kl(e.replace(Qp,""),a,s):null}}if(e.charCodeAt(G+2)===47)r=G+3;else return null}}else if(e.charCodeAt(r)!==91){let K=-1;for(let te=r;te<u;te+=1){const Q=e.charCodeAt(te);if(Q===9||Q===10||Q===13)return kl(e.replace(Qp,""),a,s);if(Q===58){K=te;break}if(Q===47||Q===92||Q===63||Q===35)break}if(K!==-1){let te=!1;for(let Q=K+1;Q<u;Q+=1){const re=e.charCodeAt(Q);if(re===47||re===92||re===63||re===35)break;if(re===64){te=!0;break}}if(!te){let Q=!0,re=K+1;for(;re<u;re+=1){const W=e.charCodeAt(re);if(W===47||W===92||W===63||W===35)break;if(W<48||W>57){Q=!1;break}}if(re===K+1&&(Q=!1),!Q){const W=Pb(e,r,K);if(W===0){let oe=!1;for(let H=K+1;H<u;H+=1){const $=e.charCodeAt(H);if($===47||$===92||$===63||$===35)break;if($===58){oe=!0;break}}if(!oe)return null}else if(g=!0,r=K+1,W===2){let oe=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&oe<2;)r+=1,oe+=1;if(oe<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let v=-1,k=-1,S=-1,A=-1,N=!1,E=s,Z=r-1,_=-1;if(s&&r<u){const G=e.charCodeAt(r);(!(Bb(G)||G===46||G===95)||G===45)&&(E=!1)}for(let G=r;G<u;G+=1){const K=e.charCodeAt(G);if(K<64)if(K===47||K===35||K===63){u=G;break}else K===58?(A===-1&&(A=G),S=G):K===9||K===10||K===13?N=!0:s&&(K===46?((G-Z>64||_===46||_===45)&&(E=!1),Z=G):(K<48||K>57)&&(K!==45||_===46)&&(E=!1));else if(g&&K===92){u=G;break}else K===64?(v=G,A=-1):K===93?k=G:K>=65&&K<=90?f=!0:s&&!Bb(K)&&(E=!1);s&&(_=K)}if(N)return kl(e.replace(Qp,""),a,s);if(v!==-1&&v>=r&&v<u&&(r=v+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&A===S&&(u=S),r>=u)return null;s&&E&&v===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-Z-1<=63&&_!==45&&(vh=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function M_(e){if(e.length<7||e.length>15)return!1;let a=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)a+=1;else if(r<48||r>57)return!1}return a===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function I_(e){if(e.length<3)return!1;let a=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-a>39)return!1;let r=!1;for(;a<s;a+=1){const u=e.charCodeAt(a);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function V_(e){return I_(e)||M_(e)}const L_=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function U_(e){for(const a of L_)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function Mb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Ib(e){if(e.length>255||e.length===0||!Mb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let a=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-a>64||s===46||s===45)return!1;a=u}else if(!(Mb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function N2({allowIcannDomains:e=!0,allowPrivateDomains:a=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:a,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const G_=N2({});function $_(e){return e===void 0?G_:N2(e)}function K_(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function H_(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function _2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function z2(e,a,s,r,u){const f=$_(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=Ib(e),u.hostname=kl(e,g,f.validateHostname)):u.hostname=kl(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=V_(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!vh&&!Ib(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=U_(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=B_(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=K_(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=P_(u.domain,u.publicSuffix)),u)}function Q_(e,a,s){if(!a.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const Vs=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),qu=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),Bu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),Vb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),xh="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",F_=621,Z_=625,E2=Vs.length,T2=Bu.length,R2=new Uint32Array(T2),_u=new Uint32Array(T2),kh=new Int32Array(E2).fill(-1);for(let e=0,a=0;e<E2;e+=1)for(let s=qu[e];s<qu[e+1];s+=1){R2[s]=a;const r=a+Bu[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^xh.charCodeAt(f);_u[s]=u>>>0,Bu[s]===1&&xh.charCodeAt(a)===42&&(kh[e]=s),a=r}let pi=-1,wh=0,Sh=0;function Lb(e,a,s,r){if(Bu[e]!==r)return!1;const u=R2[e];for(let f=0;f<r;f+=1)if(xh.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function Ub(e,a,s,r,u){let f=qu[e],g=qu[e+1];for(;f<g;){const b=f+g>>>1,v=_u[b];if(v<a)f=b+1;else if(v>a)g=b;else{for(let k=b;k>=f&&_u[k]===a;k-=1)if(Lb(k,s,r,u))return k;for(let k=b+1;k<g&&_u[k]===a;k+=1)if(Lb(k,s,r,u))return k;return-1}}return-1}function Gb(e,a,s){let r=a,u=e.length,f=5381;pi=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const k=b+1;let S=Ub(r,f>>>0,e,k,u-k);if(S===-1&&(S=kh[r]),S===-1)return pi!==-1;r=Vb[S],(Vs[r]&s)!==0&&(pi=r,wh=k,Sh=u),u=b,f=5381}else f=f*33^v}let g=Ub(r,f>>>0,e,0,u);return g===-1&&(g=kh[r]),g!==-1&&(r=Vb[g],(Vs[r]&s)!==0&&(pi=r,wh=0,Sh=u)),pi!==-1}function D2(e,a,s){if(Q_(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(Gb(e,Z_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(Sh+1);return}if(Gb(e,F_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(wh);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const Pu=H_();function Y_(e,a){return _2(Pu),z2(e,0,D2,a,Pu).hostname}function X_(e,a){return _2(Pu),z2(e,5,D2,a,Pu).domainWithoutSuffix}const J_={allowPrivateDomains:!0};new R_({fuzzyLink:!0,fuzzyEmail:!1}).tlds(D_);function ql(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Y_(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function O2(e){return e==null||e.trim()===""?"":X_(e,J_)?.toLowerCase()??""}const W_=new Intl.Segmenter("en",{granularity:"word"}),e8=/[^\p{L}\p{N}]+/gu,t8=/[\p{L}\p{N}]+/gu,n8=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,a8=new RegExp("\\P{ASCII}","u");function i8(e){if(!a8.test(e))return e;let a="";for(const s of e){if(s.charCodeAt(0)<128){a+=s;continue}const r=s.normalize("NFD"),u=r[0];a+=r.length>1&&n8.test(u)?u:s}return a}function q2(e){return i8(e.normalize("NFKC")).toLocaleLowerCase("en")}function B2(e){const a=[];for(const s of W_.segment(e))if(s.isWordLike)for(const r of s.segment.match(t8)??[])a.push(r);return a}function s8(e){return B2(q2(e))}function Ca(e){return s8(e).join("")}const $b=new WeakMap;function o8(e){if(!e)return null;const a=q2(e);return{normalized:a,stripped:a.replace(e8,"")}}function r8(e){const a=$b.get(e);if(a)return a;const s=B2(e.normalized);return $b.set(e,s),s}function l8(e){const a=new Set;let s=0;for(const r of e){if(!r)continue;const u=Ca(r);u&&(a.add(u),u.length>s&&(s=u.length))}return{keys:a,longest:s}}function c8(e,a){if(!a||e.keys.size===0)return!1;const s=typeof a=="string"?o8(a):a;if(!s)return!1;let r=!1;for(const f of e.keys)if(s.stripped.includes(f)){r=!0;break}if(!r)return!1;const u=r8(s);for(let f=0;f<u.length;f++){let g="";for(let b=f;b<u.length;b++){if(g+=u[b],e.keys.has(g))return!0;if(g.length>=e.longest)break}}return!1}const u8=4,P2=j(["cli","api","config-file"]);function d8(e){const a=new Set,s=new Set;for(const r of e){if(a.has(r.label)){s.add(r.label);continue}a.add(r.label)}return[...s]}function m8(e,a){return a?e.some(s=>s.label===a):!0}const p8=m({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Le(o(),o()).optional(),providers:y(ht).optional(),providerModels:c0.optional(),locations:y(Yt).optional(),defaultLocation:o().nullable().optional(),measurement:p0.optional(),autoExtractBacklinks:C().optional(),configSource:P2.optional()});p8.extend({name:o().trim().min(1).max(120)});const h8=m({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Le(o(),o()).default({}),providers:y(o()).default([]),providerModels:c0.default({}),locations:y(Yt).default([]),defaultLocation:o().nullable().optional(),measurement:p0.default(C2),autoExtractBacklinks:C().default(!1),configSource:P2.default("cli"),configRevision:d().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});m({id:o(),query:o(),createdAt:o()});m({id:o(),keyword:o(),createdAt:o()});m({queries:y(o().trim().min(1)).min(1)});m({keywords:y(o().trim().min(1)).min(1)});m({provider:ht,count:d().int().min(1).max(20).optional()});m({id:o(),domain:o(),createdAt:o()});m({competitors:y(o().trim().min(1)).min(1)});function Mu(e){return ql(e)??e.trim().toLowerCase().replace(/^www\./,"")}function M2(e){const a=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of a){const f=u.trim();if(!f)continue;const g=Mu(f);s.has(g)||(s.add(g),r.push(f))}return r}function f8(e,a){if(!a||a.length===0)return[];const s=e?.trim().toLowerCase()??"",r=new Set,u=[];for(const f of a){const g=f.trim();if(!g)continue;const b=g.toLowerCase();b!==s&&(r.has(b)||(r.add(b),u.push(g)))}return u}function g8(e){const a=[],s=new Set,r=f=>{const g=Ca(f);!g||s.has(g)||(s.add(g),a.push(f))},u=e.displayName?.trim()??"";u&&r(u);for(const f of f8(e.displayName,e.aliases))r(f);for(const f of M2({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const g=O2(f);if(Ca(g).length>=u8)r(g);else{const b=Mu(f);b.includes(".")&&r(b)}}return a}const y8=m({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Le(o(),o()).optional().default({})}),b8=m({preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:d0.optional(),timezone:o().optional().default("UTC"),providers:y(ht).optional().default([]),enabled:C().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(a=>a!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'}).optional(),v8=m({channel:D("webhook"),url:o().url(),events:y(m0).min(1)}),x8=m({gsc:m({propertyUrl:o()}).optional(),syncSchedule:m({preset:o().optional(),cron:o().optional()}).optional()}).optional(),Kb=y(o().min(1)),k8=m({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:Kb.optional(),keywords:Kb.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:c0.optional().default({}),locations:y(Yt).optional().default([]),defaultLocation:o().optional(),measurement:p0.optional().default(C2),schedule:b8,notifications:y(v8).optional().default([]),google:x8,autoExtractBacklinks:C().optional().default(!1)}).superRefine((e,a)=>{e.queries!==void 0&&e.keywords!==void 0&&a.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=d8(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),m8(e.locations,e.defaultLocation)||a.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});m({apiVersion:D("canonry/v1"),kind:D("Project"),metadata:y8,spec:k8});const w8=["branded","non-brand"],rr=j(w8),S8=j(["all","branded","non-brand"]);function j8(e){const a=e.filter(r=>Ca(r).length>0);if(a.length===0)return null;const s=l8(a);return s.keys.size===0?null:{matcher:s,classify(r){return c8(s,r)?"branded":"non-brand"}}}const A8=2,C8=o().regex(/^[a-f0-9]{64}$/),nd=o().trim().min(1).max(256),Hb=j(["sensitive","insensitive"]),me=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),N8=o().trim().min(1).refine(e=>ql(e)!==null,"A competitor domain must be a valid hostname"),_8=qe("kind",[m({kind:D("exact"),url:o().min(1),pathCase:Hb}).strict(),m({kind:D("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:Hb}).strict(),m({kind:D("host"),host:o().min(1)}).strict()]),z8=m({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),E8=m({projectBrand:z8}).strict(),T8=m({stableKey:me,label:o().trim().min(1),aliases:y(o().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(_8),mentionNotApplicable:C(),discoveryIdentity:o().min(1).nullable()}).strict(),I2=m({stableKey:me,label:o().trim().min(1),domain:N8,aliases:y(o().min(1))}).strict(),R8=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(I2)}).strict(),D8=j(["manual","query-set","template","discovery","research"]),O8=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),template:o().trim().min(1).max(4e3),bindings:Le(o().trim().min(1).max(128),o().trim().min(1).max(128)),output:o().trim().min(1).max(4e3)}).strict(),V2=m({source:D8,sourceId:o().min(1).nullable(),capturedAt:o().datetime(),template:O8.optional()}).strict(),q8=m({queryId:nd,queryText:o().min(1),provenance:V2}).strict(),ad=m({providers:y(ht).min(1),models:Le(ht,o().min(1)),location:Yt.nullable()}).strict(),B8=m({stableKey:o().min(1),queryId:nd,queryText:o().min(1),context:ad,expectedSnapshots:d().int().nonnegative()}).strict(),h0=rr,P8=m({targetKey:me,queryId:nd,queryClass:h0,classificationSource:j(["server","operator"]).optional(),executionNodeKey:o().min(1)}).strict(),f0=m({executionNodeKey:o().min(1),targetKey:me,queryId:nd}).strict(),L2=m({stableKey:me,label:o().trim().min(1),kind:D("market"),groupKey:me.optional(),usageEdges:y(f0)}).strict();function Qb(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const id=m({schemaVersion:D(A8),identities:E8,targets:y(T8),groups:y(R8),querySnapshots:y(q8),assignments:y(P8),executionNodes:y(B8),usageEdges:y(f0),reportingScopes:y(L2).optional(),compiledChecksum:C8}).strict().superRefine((e,a)=>{const s=new Set;for(const b of e.executionNodes)s.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),s.add(b.stableKey);const r=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{s.has(b.executionNodeKey)||a.addIssue({code:Se.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),r.has(b.targetKey)||a.addIssue({code:Se.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(Qb)),f=new Set;e.reportingScopes?.forEach((b,v)=>{if(f.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),f.add(b.stableKey),b.groupKey!==void 0){const S=e.groups.find(A=>A.stableKey===b.groupKey);(!S||b.usageEdges.some(A=>!S.targetKeys.includes(A.targetKey)))&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const k=new Set;b.usageEdges.forEach((S,A)=>{const N=Qb(S);u.has(N)||a.addIssue({code:Se.custom,path:["reportingScopes",v,"usageEdges",A],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),k.has(N)&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"usageEdges",A],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),k.add(N)})}),e.assignments.forEach((b,v)=>{r.has(b.targetKey)||a.addIssue({code:Se.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const g=new Map;e.groups.forEach((b,v)=>{g.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),g.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const k=b.parentGroupKey;if(k===void 0)return;if(k===b.stableKey){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const S=g.get(k);if(!S){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+k});return}const A=new Set(S.targetKeys);b.targetKeys.forEach((Z,_)=>{A.has(Z)||a.addIssue({code:Se.custom,path:["groups",v,"targetKeys",_],message:"Group target membership must be a subset of its parent."})});const N=new Set([b.stableKey]);let E=S;for(;E.parentGroupKey!==void 0;){if(N.has(E.stableKey)){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}N.add(E.stableKey);const Z=g.get(E.parentGroupKey);if(!Z)break;E=Z}});for(const b of e.groups)for(const v of b.targetKeys)r.has(v)||a.addIssue({code:Se.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),g0=100;function Jo(e){return m({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:d().int().nonnegative().optional()}).strict()}const sd=j(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),zt=qe("state",[m({state:D("available"),value:d(),numerator:d().int().nonnegative().optional(),denominator:d().int().positive().optional()}).strict(),m({state:D("unavailable"),reason:sd}).strict()]),y0=j(["all","group","property"]),Ea=S8,M8=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),b0=j(["not_measured","queued","running","complete","partial","failed"]),I8=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);m({scope:y0,groupKey:me.optional(),targetKey:me.optional(),queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:M8.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();const V8=m({provider:ht,mentionCoverage:zt,citationCoverage:zt}).strict(),L8=m({bothSignals:d().int().nonnegative(),mentionedOnly:d().int().nonnegative(),citedOnly:d().int().nonnegative(),neither:d().int().nonnegative(),notMeasured:d().int().nonnegative(),total:d().int().nonnegative()}).strict(),U8=m({targetKey:me,label:o().min(1),mentionCoverage:zt,citationCoverage:zt,providers:y(V8),flags:d().int().nonnegative()}).strict(),G8=m({kind:j(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:d().int().nonnegative(),share:d().min(0).max(1)}).strict(),$8=m({groupKey:me,queryClass:D("non-brand"),denominator:d().int().positive(),entries:y(G8)}).strict();m({mode:j(["active-v1","active-v2"]),scope:m({kind:y0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:b0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:d().int().nonnegative(),expected:d().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:C().optional()}).strict(),nextAction:m({kind:I8,count:d().int().nonnegative().optional()}).strict(),metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt,brandPresence:zt,sov:zt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Jo(U8),outcomes:L8,flags:m({total:d().int().nonnegative()}).strict(),namedShareOfVoice:$8.optional()}).strict();const U2=j(["sources","answers"]),K8=U2.enum;K8.sources;m({targetKey:me,queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:U2.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();const G2=1,Bl=d().int().positive(),Zt=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Pl=o().trim().min(1).max(256),Fb=j(["sensitive","insensitive"]);function Iu(e){const a=ql(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function H8(e){const a=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||a.push(u),s=!0):(a.push(u),s=!1)}for(;a.length>1&&a.at(-1)==="/";)a.pop();return a.length?a.join(""):"/"}function Zb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function $2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return H8(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function jh(e){const a=e.trim();if(!a||a.includes("?")||a.includes("#")||a.includes("://")||a.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=a.startsWith("/")?a:`/${a}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return $2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function Q8(e){const a=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!a)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(a[0].length).split(/[?#]/,1)[0]||"/"}function Yb(e){const a=e.trim();if(!a||a.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(a)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=Iu(s.hostname),u=jh(Q8(a));return`https://${r}${u}`}const _l=o().trim().min(1).refine(e=>{try{return Iu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>Iu(e)),F8=o().trim().min(1).refine(e=>{try{return jh(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>jh(e)),Z8=o().trim().min(1).refine(e=>{try{return Yb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Yb(e)),Y8=qe("kind",[m({kind:D("exact"),url:Z8,pathCase:Fb}).strict(),m({kind:D("prefix"),host:_l,pathPrefix:F8,pathCase:Fb}).strict(),m({kind:D("host"),host:_l}).strict()]),K2=o().trim().min(1).max(256).refine(e=>Ca(e).length>0,"A target alias must contain mention text"),X8=Le(o().trim().min(1),o()),J8=_l,H2=m({stableKey:Zt,label:o().trim().min(1),urls:y(Y8).min(1),aliases:y(K2),metadata:X8.optional()}).strict(),v0=m({stableKey:Zt,label:o().trim().min(1),targetKeys:y(Zt).min(1),competitors:y(J8).optional()}).strict(),Q2=m({targetKey:Zt,queryIds:y(Pl).min(1),context:Yt.nullable().optional()}).strict();function W8(e,a){return e<a?-1:e>a?1:0}function e7(e,a=s=>s){const s=new Set,r=new Set;for(const u of e){const f=a(u);s.has(f)&&r.add(f),s.add(f)}return r}function Fp(e,a,s,r,u){for(const f of e7(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Xb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const a=new URL(e.url);return{host:Iu(a.hostname),pathname:$2(a.pathname||"/")}}function t7(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&Zb(e)===Zb(s)}function n7(e,a){if(e.kind!==a.kind)return!1;const s=Xb(e),r=Xb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:t7(s.pathname,e.pathCase,r.pathname,a.pathCase)}function a7(e){const a=new Set;return[...e].sort(W8).filter(s=>{const r=Ca(s);return a.has(r)?!1:(a.add(r),!0)})}const F2=m({schemaVersion:D(G2),targets:y(H2).min(1),groups:y(v0).optional(),targetQuerySelections:y(Q2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];Fp(a,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Fp(a,s.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),f=new Set(s.map(v=>v.stableKey));for(const v of u)f.has(v)&&a.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const g=new Map,b=[];e.targets.forEach((v,k)=>{for(const S of a7(v.aliases)){const A=Ca(S),N=g.get(A);N&&N!==v.stableKey&&a.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${N}: ${S}`}),g.set(A,v.stableKey)}v.urls.forEach((S,A)=>{b.find(E=>E.targetKey!==v.stableKey&&n7(E.matcher,S))&&a.addIssue({code:"custom",path:["targets",k,"urls",A],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:S})})}),s.forEach((v,k)=>{Fp(a,v.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<v.targetKeys.length;S++){const A=v.targetKeys[S];u.has(A)||a.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${A}`})}}),r.forEach((v,k)=>{u.has(v.targetKey)||a.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});F2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));m({expectedActiveRevision:Bl.nullable(),plan:F2}).strict();const i7=m({queryId:Pl,queryText:o().min(1)}).strict(),x0=m({stableKey:o().min(1),queryText:o().min(1),context:Yt.nullable(),expectedSnapshots:d().int().nonnegative()}).strict(),s7=m({kind:D("baseline"),executionNodeKey:o().min(1),queryId:Pl}).strict(),o7=m({kind:D("target"),executionNodeKey:o().min(1),queryId:Pl,targetKey:Zt}).strict(),Ah=qe("kind",[s7,o7]),Z2=m({code:D("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Zt).min(1),aliases:y(o().min(1)).min(1)}).strict(),Y2=H2.extend({mentionNotApplicable:C()}),X2=m({schemaVersion:D(G2),defaultContext:Yt.nullable(),effectiveOwnedHosts:y(_l),projectCanonicalHost:_l,projectBrandNames:y(K2),targets:y(Y2),groups:y(v0),targetQuerySelections:y(Q2),querySnapshots:y(i7),executionNodes:y(x0),usageEdges:y(Ah),warnings:y(Z2)}).strict(),r7=X2,J2=qe("schemaVersion",[X2,id]),k0=o().regex(/^[a-f0-9]{64}$/),w0=o().datetime(),W2=m({schemaVersion:D(1),providers:y(o().min(1)).min(1),models:Le(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),l7=m({groups:y(Zt).optional(),targets:y(Zt).optional()}).strict(),c7=m({groups:y(Zt),targets:y(Zt),queries:y(o().min(1)),resolvedTargets:y(Zt)}).strict().superRefine((e,a)=>{e.resolvedTargets.length===0&&e.queries.length===0&&a.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});m({stableKey:Zt,retiredAt:o().datetime()});m({active:m({revision:Bl,checksum:k0,createdAt:w0,plan:J2}).nullable()});m({versions:y(m({revision:Bl,checksum:k0,createdAt:w0,active:C()}))});m({version:m({revision:Bl,checksum:k0,createdAt:w0,active:C(),plan:J2})});const zu=m({targets:d().int(),groups:d().int(),queries:d().int(),executionNodes:d().int(),usageEdges:d().int(),baselineEdges:d().int(),targetEdges:d().int(),dedupSavings:d().int()}).strict(),u7=j(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),ek=m({id:u7,severity:j(["fail","warn"]),message:o().min(1),path:y(Qe([o(),d().int()]))}).strict(),d7=m({baseline:d().int().nonnegative(),target:d().int().nonnegative()}).strict(),tk=m({ok:D(!0),checks:y(ek),executionNodes:y(x0),dedupSaved:d().int().nonnegative(),usageEdges:d7,estCostUsd:ce(),plan:r7,warnings:y(Z2),counts:zu}).strict(),nk=m({ok:D(!1),checks:y(ek).min(1),executionNodes:y(x0).length(0),dedupSaved:D(0),usageEdges:m({baseline:D(0),target:D(0)}).strict(),estCostUsd:ce()}).strict();qe("ok",[tk,nk]);const fu=m({targetKey:Zt,context:Yt.nullable(),queryIds:y(Pl)}).strict();function Jb(e){return m({added:y(e),removed:y(e),changed:y(m({stableKey:Zt,before:e,after:e}).strict()),unchanged:y(Zt)}).strict()}const m7=tk.extend({diff:m({activeRevision:Bl.nullable(),targets:Jb(Y2),groups:Jb(v0),querySelections:m({added:y(fu),removed:y(fu),changed:y(m({targetKey:Zt,before:fu,after:fu}).strict()),unchanged:y(m({targetKey:Zt,context:Yt.nullable()}).strict())}).strict(),execution:m({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Ah),removedUsageEdges:y(Ah),counts:m({before:zu.nullable(),after:zu,delta:zu.nullable()}).strict()}).strict()}).strict()}).strict(),p7=nk.extend({diff:ce()}).strict();qe("ok",[m7,p7]);const h7=1,f7=o().refine(e=>e.trim().length>0,{message:"Must not be blank"}),ak=m({displayName:o(),aliases:y(o()),canonicalDomain:o(),ownedDomains:y(o())}).strict(),ik=m({provider:ht.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:o().nullable()}).strict(),sk=m({domain:o(),label:o(),aliases:y(o())}).strict(),ok=m({queryId:f7,queryText:o(),provenance:o().nullable()}).strict(),g7=ok.extend({queryClass:rr.nullable()}).strict();function rk(e,a){const s=new Set;e.engines.forEach((f,g)=>{const b=f.provider.trim().toLocaleLowerCase("en");s.has(b)&&a.addIssue({code:Se.custom,path:["engines",g,"provider"],message:`Duplicate engine provider "${f.provider}"`}),s.add(b)});const r=new Set;e.queries.forEach((f,g)=>{r.has(f.queryId)&&a.addIssue({code:Se.custom,path:["queries",g,"queryId"],message:`Duplicate query id "${f.queryId}"`}),r.add(f.queryId)});const u=new Set;e.competitors?.forEach((f,g)=>{const b=f.domain;u.has(b)&&a.addIssue({code:Se.custom,path:["competitors",g,"domain"],message:`Duplicate competitor domain "${f.domain}"`}),u.add(b)})}m({capturedAt:o().datetime(),identity:ak,country:o(),language:o(),location:Yt.nullable(),engines:y(ik).min(1),competitors:y(sk).optional(),queries:y(ok)}).strict().superRefine(rk);m({schemaVersion:D(h7),capturedAt:o().datetime(),identity:ak,country:o(),language:o(),location:Yt.nullable(),engines:y(ik).min(1),competitors:y(sk).optional(),queries:y(g7)}).strict().superRefine(rk);const y7=j(["auto","simple","advanced"]),b7=j(["simple","advanced"]),lk=j(["branded","non-brand","unknown","all"]),v7=j(["branded","non-brand","unknown"]),ck=j(["project","group","market","property"]),uk=qe("kind",[m({kind:D("all")}).strict(),m({kind:D("none")}).strict(),m({kind:D("exact"),value:o().trim().min(1)}).strict()]);function x7(e){if(e===void 0||e==="")return{kind:"all"};const a=e.normalize("NFKC").trim();return a===""?{kind:"all"}:a.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:a}}const bt=o().trim().min(1),Us=o().datetime(),k7={mode:y7.default("auto"),queryClass:lk.default("non-brand"),scope:ck.default("project"),scopeKey:bt.optional(),marketKey:bt.optional(),provider:bt.optional(),model:bt.optional(),location:o().trim().min(1).optional(),from:Us.optional(),to:Us.optional(),revision:d().int().positive().optional(),runId:bt.optional(),queryKey:bt.optional(),queryId:bt.optional(),search:o().trim().min(1).optional(),cursor:bt.optional(),limit:d().int().min(1).max(100).default(50)},w7=m(k7).strict().superRefine((e,a)=>{e.scope!=="project"&&e.scopeKey===void 0&&a.addIssue({code:Se.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&a.addIssue({code:Se.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&a.addIssue({code:Se.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&a.addIssue({code:Se.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&a.addIssue({code:Se.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});w7.transform(e=>({...e,location:x7(e.location)}));const Aa=m({numerator:d().int().nonnegative().nullable(),denominator:d().int().nonnegative().nullable(),rate:d().min(0).max(1).nullable(),reason:j(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional()}).strict().superRefine((e,a)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&a.addIssue({code:Se.custom,message:"Unavailable rates require null values and a reason"});return}e.reason!==void 0&&a.addIssue({code:Se.custom,message:"Available rates cannot carry a reason"});const{numerator:r,denominator:u}=e;u===null||r===null||(u===0&&a.addIssue({code:Se.custom,path:["denominator"],message:"Available rates require a positive denominator"}),r>u&&a.addIssue({code:Se.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),dk=qe("kind",[m({kind:D("frozen-simple"),definitionRevision:ce()}).strict(),m({kind:D("legacy-simple"),definitionRevision:ce()}).strict(),m({kind:D("frozen-advanced"),definitionRevision:d().int().positive()}).strict(),m({kind:D("unsupported-advanced-v1"),definitionRevision:d().int().positive()}).strict()]),Ch=m({id:bt,label:o().trim().min(1),kind:ck,targetCount:d().int().nonnegative(),parentGroupIds:y(bt).optional(),marketKeys:y(bt).optional()}).strict(),S7=m({provider:bt,model:bt}).strict(),j7=m({providers:y(bt),models:y(S7),locations:y(uk)}).strict(),A7=m({queryCount:d().int().nonnegative(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa,propertyReach:Aa,outcomes:m({bothSignals:d().int().nonnegative(),mentionedOnly:d().int().nonnegative(),citedOnly:d().int().nonnegative(),neither:d().int().nonnegative(),notMeasured:d().int().nonnegative(),total:d().int().nonnegative()}).strict().superRefine((e,a)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&a.addIssue({code:Se.custom,message:"Outcome partition must sum to total"})})}).strict(),C7=m({runId:bt,createdAt:Us,revision:d().int().positive().nullable(),provenance:dk,queryCount:d().int().nonnegative(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa,continuity:m({state:j(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:o().nullable()}).strict()}).strict(),N7=m({queryKey:bt,queryId:o().nullable(),query:o(),provider:bt,model:o().nullable(),location:o().nullable(),targetKeys:y(bt),marketKeys:y(bt).optional(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),_7=m({answerId:bt,runId:bt,queryKey:bt,query:o(),provider:bt,model:o().nullable(),location:o().nullable(),targetKeys:y(bt),mentioned:C().nullable(),mentionUnavailableReason:D("identity-ambiguous").optional(),cited:C().nullable(),answerText:o().nullable(),createdAt:Us,sources:y(o()),observedCompetitors:y(bt)}).strict(),z7=m({domain:bt,answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),E7=m({name:bt,answerCount:d().int().nonnegative()}).strict(),T7=qe("state",[m({state:D("available")}).strict(),m({state:D("unavailable"),reason:D("frozen-competitor-identity-missing")}).strict()]),Wb=m({id:bt,label:o().trim().min(1),queryCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict();function ev(e){return m({items:y(e),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict()}const mk=m({queryClass:v7,summary:A7,trend:y(C7),queries:ev(N7),evidence:ev(_7),competitorAvailability:T7,competitors:y(z7),observedCompetitors:y(E7),breakdown:m({properties:y(Wb),groups:y(Wb)}).strict()}).strict(),R7=j(["measured","not-measured","partial"]),D7=m({state:R7,activeRevision:d().int().positive().nullable(),measuredRevision:d().int().positive().nullable(),awaitingSweep:C(),pendingAssignmentCount:d().int().nonnegative(),completedAt:Us.nullable()}).strict(),pk=m({mode:b7,queryClass:lk,scope:Ch,market:Ch.optional(),provider:o().nullable(),model:o().nullable(),location:uk,time:m({from:Us.nullable(),to:Us.nullable()}).strict(),revision:d().int().positive().nullable(),run:m({id:o().nullable(),explicit:C()}).strict(),provenance:dk,measurement:D7,availability:qe("state",[m({state:D("available")}).strict(),m({state:D("unsupported"),reason:D("advanced-v1")}).strict()])}).strict();m({selection:pk,scopeOptions:y(Ch),filterOptions:j7,populations:y(mk).min(1)}).strict().superRefine((e,a)=>{const s=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],r=e.populations.map(u=>u.queryClass);(r.length!==s.length||r.some((u,f)=>u!==s[f]))&&a.addIssue({code:Se.custom,path:["populations"],message:"Populations must exactly match the selected query class order"})});function O7(e,a){let s=e;for(const[r,u]of Object.entries(a))s=s.split(`{${r}}`).join(u);return s.trim()}const S0=o().regex(/^[a-f0-9]{64}$/),Fn=o().trim().min(1).max(256),Na=o().trim().min(1).max(4e3),j0=o().datetime(),od=o().regex(/^qtw_[a-f0-9]{64}$/),hk=o().regex(/^qtp_[a-f0-9]{64}$/),A0=j(["simple","advanced"]),fk=m({templateId:Fn,templateVersion:o().trim().min(1).max(256),template:Na,bindings:Le(o().trim().min(1).max(128),o().trim().min(1).max(128)),output:Na}).strict(),q7=m({source:j(["manual","query-set","template","research","discovery"]),sourceId:Fn.nullable(),capturedAt:o().datetime(),template:fk.optional()}).strict().superRefine((e,a)=>{e.source==="template"&&e.template===void 0&&a.addIssue({code:Se.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&a.addIssue({code:Se.custom,path:["template"],message:"Only a template query may carry template provenance."})}),B7=qe("source",[m({source:D("manual"),text:Na}).strict(),m({source:D("template"),templateId:Fn,templateVersion:o().trim().min(1).max(256),template:Na}).strict(),m({source:D("research"),researchRunQueryId:Fn}).strict(),m({source:D("discovery"),discoveryProbeId:Fn}).strict()]),C0=m({targetKeys:y(me).optional(),groupKeys:y(me).optional(),marketKeys:y(me).optional()}).strict(),P7=m({providers:y(ht).min(1),models:Le(ht,o().trim().min(1)),location:o().trim().min(1).nullable()}).strict(),M7=m({input:B7,audience:C0.optional(),contexts:y(P7).min(1).optional(),queryClass:rr.optional()}).strict(),I7=m({queryId:Fn.optional(),queryText:Na.optional(),audience:C0.optional()}).strict().superRefine((e,a)=>{e.queryId===void 0==(e.queryText===void 0)&&a.addIssue({code:Se.custom,message:"Provide exactly one of queryId or queryText."})}),V7=m({queryId:Fn,audience:C0.optional(),text:Na.optional(),queryClass:Qe([rr,ce()]).optional()}).strict().superRefine((e,a)=>{e.text===void 0&&e.queryClass===void 0&&a.addIssue({code:Se.custom,message:"Provide query text or a classification change."})}),L7=m({additions:y(M7),removals:y(I7),edits:y(V7).optional()}).strict(),U7=L7.extend({expectedWorkspaceVersion:od}).strict();U7.extend({previewToken:hk,reviewedAt:j0}).strict();const G7=m({stableKey:me,label:o().trim().min(1)}).strict(),$7=m({stableKey:me,parentGroupKey:me.optional(),label:o().trim().min(1),targetKeys:y(me)}).strict(),K7=m({stableKey:me,groupKey:me.optional(),label:o().trim().min(1),usageEdges:y(f0)}).strict(),H7=m({targetKey:me,groupKeys:y(me),marketKeys:y(me),queryClass:rr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(ad).min(1)}).strict(),gk=m({queryId:Fn,queryText:Na,normalizedText:Na,provenance:q7.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:o().datetime().nullable(),assignments:y(H7)}).strict(),Q7=m({researchRunId:Fn,researchRunQueryId:Fn,queryText:Na,createdAt:o().datetime()}).strict(),F7=m({discoverySessionId:Fn,discoveryProbeId:Fn,queryText:Na,createdAt:o().datetime()}).strict();m({mode:A0,workspaceVersion:od,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),defaultContexts:y(ad),targets:y(G7),groups:y($7),markets:y(K7),tracked:y(gk),savedSources:m({research:y(Q7),discovery:y(F7)}).strict()}).strict();const gu=m({queryId:Fn,queryText:Na,assignmentCount:d().int().nonnegative()}).strict(),yk=m({added:y(gu),removed:y(gu),reused:y(gu),unchanged:y(gu),noOp:C()}).strict(),bk=m({existingNodes:d().int().nonnegative(),existingProviderCalls:d().int().nonnegative(),nextSweepNodes:d().int().nonnegative(),nextSweepProviderCalls:d().int().nonnegative(),addedNodes:d().int().nonnegative(),addedProviderCalls:d().int().nonnegative(),removedNodes:d().int().nonnegative(),removedProviderCalls:d().int().nonnegative()}).strict();m({mode:A0,workspaceVersion:od,previewToken:hk,reviewedAt:j0,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),tracked:y(gk),diff:yk,workload:bk}).strict();m({committed:C(),mode:A0,workspaceVersion:od,reviewedAt:j0,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),diff:yk,workload:bk}).strict();const rd=j(["complete","partial","failed","unsupported"]);rd.enum;j(["proposed","alias","shared","unmatched","excluded"]);j(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const Z7=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Y7=m({kind:j(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),tv=m({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),N0=m({primary:tv,aliases:y(tv).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Y7).optional()}).strict();m({sitemapUrl:o().url().refine(e=>{try{const a=new URL(e).protocol;return a==="http:"||a==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:N0,maxUrls:d().int().positive().max(1e4).optional()}).strict();const Zp=m({url:o(),canonicalUrl:o().nullable(),classification:j(["shared","unmatched","excluded"]),reason:j(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,a)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||a.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),X7=m({classification:D("proposed"),reason:D("primary-match"),stableKey:Zt,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),J7=m({classification:D("alias"),reason:D("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Zt}).strict(),W7=m({kind:Z7,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();m({proposed:y(X7),aliases:y(J7),shared:y(Zp),unmatched:y(Zp),excluded:y(Zp),diagnostics:y(W7)}).strict().superRefine((e,a)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||a.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const _0=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),vk=j(["baseline","target"]),xk=j(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),Gs=Qe([m({numerator:d().int().nonnegative(),denominator:d().int().positive(),rate:d().min(0).max(1)}).strict(),m({numerator:ce(),denominator:ce(),rate:ce(),reason:xk}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),ez=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),tz=m({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:ez,context:Yt.nullable(),requestedModel:o().trim().min(1).optional()}).strict();m({schemaVersion:D(1),expectedSlots:y(tz)}).strict().superRefine((e,a)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&a.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const ld=m({executed:d().int().nonnegative(),expected:d().int().nonnegative(),complete:C(),sourceComplete:C(),sourceCompleteObservations:d().int().nonnegative(),answerComplete:C()}).strict(),nv=Qe([m({domain:o().trim().min(1),own:C(),presentIn:d().int().nonnegative(),of:d().int().positive()}).strict(),m({domain:o().trim().min(1),own:C(),presentIn:ce(),of:ce(),reason:xk}).strict()]),nz=m({domains:y(nv),providers:y(m({provider:ht,domains:y(nv)}).strict())}).strict(),az=m({provider:ht,completeness:ld,answerCoverage:Gs}).strict(),iz=m({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:ld,answerCoverage:Gs,targetCoverage:Gs,sov:nz,providers:y(az)}).strict(),sz=m({provider:ht,completeness:ld,citationCoverage:Gs,mentionCoverage:Gs}).strict(),oz=m({id:o().trim().min(1),label:o().trim().min(1),completeness:ld,citationCoverage:Gs,mentionCoverage:Gs,providers:y(sz)}).strict(),kk=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:vk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:C(),historical:C(),evidenceComplete:C(),classification:_0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),rz=m({sourceUrl:o(),normalizedUrl:o().nullable(),classification:_0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),lz=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:vk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),queryClass:Qe([j(["branded","non-brand"]),ce()]),mentioned:C().nullable(),cited:C().nullable(),sources:y(rz),sourceCount:d().int().nonnegative(),sourcesTruncated:C(),bridged:C(),historical:C(),evidenceComplete:C()}).strict(),cz=m({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),uz=m({id:o().trim().min(1),status:j(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();m({revision:d().int().positive(),run:uz.nullable(),groups:y(iz),targets:y(oz),evidence:y(kk),diagnostics:cz}).strict();m({property:m({targetKey:me,label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:b0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:Jo(kk).optional(),answers:Jo(lz).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const z0=j(["used","not-used","unknown","not-applicable"]);z0.enum;const E0=j(["native-auto-v1","search-required-v1"]);E0.enum;const _a=o().trim().min(1),Ml=o().trim().min(1),dz=o().trim().min(1),ot=d().int().nonnegative(),Il=m({state:b0,displayedRunId:_a.nullable(),planRevision:d().int().positive(),completedAt:o().datetime().nullable()}).strict(),Ji=m({targetKey:me,label:Ml}).strict(),Zn={runId:_a.optional(),provider:ht.optional(),location:dz.optional()},zl=o().trim().min(1);m({runId:Zn.runId,groupKey:me.optional(),queryClass:Ea.default("non-brand"),provider:Zn.provider,location:Zn.location,limit:d().int().positive().max(50).optional()}).strict();const mz=Ji.extend({mentionCoverage:zt,citationCoverage:zt,flags:ot,recommendedInstead:y(m({name:zl,occurrences:ot}).strict()).max(5),recommendedInsteadTotal:ot,recommendedInsteadTruncated:C()}).strict().superRefine((e,a)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&a.addIssue({code:Se.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&a.addIssue({code:Se.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),pz=m({groupKey:me,label:Ml,propertyCount:ot,propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),hz=m({eligiblePropertyCount:ot,strongest:y(Ji.extend({mentionCoverage:zt.options[0],citationCoverage:zt}).strict()).max(50),weakest:y(Ji.extend({mentionCoverage:zt.options[0],citationCoverage:zt}).strict()).max(50),excluded:y(Ji.extend({reason:sd}).strict()),truncated:C()}).strict();m({portfolio:m({groupKey:me.nullable(),label:Ml.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),measurement:Il,queryClass:Ea,metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),weakestProperties:y(mz),mentionRanking:hz,markets:y(pz),totalProperties:ot,truncated:C()}).strict();m({targetKey:me,runId:Zn.runId,provider:Zn.provider,location:Zn.location,queryClass:Ea.optional(),offset:d().int().nonnegative().optional(),limit:d().int().positive().max(100).optional()}).strict();j(["answered","missing"]);const Nh={queryId:_a,text:Ml,class:h0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},fz=qe("status",[m({resultId:_a,...Nh,status:D("answered"),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(zl),answerExcerpt:o().nullable()}).strict(),m({resultId:ce(),...Nh,status:D("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(zl).length(0),answerExcerpt:ce()}).strict()]);m({property:Ji,measurement:Il,queryClass:Ea,questions:y(fz),total:ot,truncated:C()}).strict();m({targetKey:me,resultId:_a}).strict();const gz=m({url:_a,classification:_0,matchedTargetKeys:y(me),assigned:C(),historical:C(),evidenceComplete:C()}).strict().superRefine((e,a)=>{e.assigned!==(e.classification==="assigned")&&a.addIssue({code:Se.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});m({property:Ji,measurement:Il,question:m({resultId:_a,...Nh,status:D("answered")}).strict(),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(zl),answer:o().nullable(),sources:y(gz),captureStatus:Qe([rd,ce()]),retrievalStatus:Qe([z0,ce()]),retrievalContract:Qe([E0,ce()])}).strict();m({targetKey:me,runId:Zn.runId,provider:Zn.provider,location:Zn.location,queryClass:Ea.optional(),limit:d().int().positive().max(50).optional()}).strict();const yz=qe("state",[m({state:D("available"),answeredResults:ot,targetMissResults:ot,recommendationOccurrences:ot}).strict(),m({state:D("unavailable"),reason:sd}).strict()]),bz=m({name:zl,occurrences:ot,providers:y(ht).max(5),providerTotal:ot,providersTruncated:C(),questions:y(Ml).max(5),questionTotal:ot,questionsTruncated:C()}).strict().superRefine((e,a)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&a.addIssue({code:Se.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&a.addIssue({code:Se.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&a.addIssue({code:Se.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});m({property:Ji,measurement:Il,queryClass:Ea,basis:yz,competitors:y(bz),total:ot,truncated:C()}).strict();m({runId:Zn.runId,scope:y0.default("all"),groupKey:me.optional(),targetKey:me.optional(),queryClass:Ea.default("all"),provider:Zn.provider,location:Zn.location,limit:d().int().positive().max(50).optional()}).strict().superRefine((e,a)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&a.addIssue({code:Se.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&a.addIssue({code:Se.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&a.addIssue({code:Se.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const wk=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),Sk=Il.extend({executionIdentity:_a.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),ml=qe("state",[m({state:D("available"),previous:zt,current:zt,delta:d()}).strict().superRefine((e,a)=>{if(e.previous.state!=="available"||e.current.state!=="available"){a.addIssue({code:Se.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&a.addIssue({code:Se.custom,path:["delta"],message:"Delta must equal current minus previous"})}),m({state:D("unavailable"),reason:sd}).strict()]);m({current:Sk,comparison:qe("state",[m({state:D("available"),previous:m({displayedRunId:_a,planRevision:d().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:_a,measurementScope:j(["full","spot_check"])}).strict(),metrics:m({propertiesMentioned:ml,mentionCoverage:ml,citationCoverage:ml}).strict(),changedProperties:y(Ji.extend({mentionCoverage:ml,citationCoverage:ml,flags:ot}).strict()),totalProperties:ot,truncated:C()}).strict(),m({state:D("unavailable"),reason:wk}).strict()])}).strict().superRefine((e,a)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){a.addIssue({code:Se.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&a.addIssue({code:Se.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&a.addIssue({code:Se.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});m({runId:Zn.runId}).strict();const vz=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),cd=m({state:D("unavailable"),reason:vz}).strict(),xz=m({state:D("available"),expected:ot,executed:ot,answered:ot,missing:ot}).strict(),kz=qe("state",[xz,cd]).superRefine((e,a)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&a.addIssue({code:Se.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&a.addIssue({code:Se.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),wz=m({state:D("available"),complete:ot,partial:ot,failed:ot,unsupported:ot,notRecorded:ot}).strict(),Sz=qe("state",[wz,cd]),jz=m({state:D("available"),used:ot,notUsed:ot,unknown:ot,notApplicable:ot,notRecorded:ot}).strict(),Az=qe("state",[jz,cd]),Cz=m({state:D("available"),expectedQuestions:ot,answeredQuestions:ot,missingQuestions:ot}).strict(),Nz=qe("state",[Cz,cd]).superRefine((e,a)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&a.addIssue({code:Se.custom,message:"Expected questions must equal answered plus missing"})});m({run:Sk,completeness:kz,capture:Sz,retrieval:Az,population:Nz,comparison:qe("state",[m({state:D("available"),previousDisplayedRunId:_a}).strict(),m({state:D("unavailable"),reason:wk}).strict()])}).strict().superRefine((e,a)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&a.addIssue({code:Se.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&a.addIssue({code:Se.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Wo=o().regex(/^[a-f0-9]{64}$/),za=o().trim().min(1).max(256),Ga=d().int().positive(),av=m({kind:j(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),_z=j(["proposed","included","excluded"]),zz=j(["manual","sitemap"]),T0=m({stableKey:me,label:o().trim().min(1),status:_z,aliases:y(o().trim().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(o().trim().min(1)),source:zz,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),ud=m({providers:y(ht).optional(),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),Ez=j(["branded","non-brand","unclassified"]),Tz=j(["rule","operator"]),jk=m({targetKey:me,queryId:za,contextOverride:ud.optional(),executionContexts:y(ad.extend({executionNodeKey:o().min(1).optional()})).min(1).optional(),queryProvenance:V2.optional(),queryClass:Ez,classificationSource:Tz}).strict().superRefine((e,a)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&a.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),dd=I2,Ak=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(dd)}).strict(),Rz=m({sitemapUrl:o().url(),rule:N0,exclusions:y(o().trim().min(1)),inputChecksum:Wo,reviewedAt:o().datetime().optional()}).strict(),Dz=m({providers:y(ht),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),Ck=L2,Oz=m({defaultContext:Dz,targets:y(T0),assignments:y(jk),groups:y(Ak),reportingScopes:y(Ck).optional(),discovery:Rz.optional()}).strict(),qz=m({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:D(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:Ga.nullable(),authoring:Oz,createdBy:av,updatedBy:av,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),R0=m({targets:d().int().nonnegative(),includedTargets:d().int().nonnegative(),assignments:d().int().nonnegative(),unclassifiedAssignments:d().int().nonnegative(),groups:d().int().nonnegative(),competitors:d().int().nonnegative()}).strict(),Bz=m({code:o().trim().min(1),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict(),Nk=m({etag:o().trim().min(1),changed:C(),warnings:y(Bz),counts:R0}).strict();m({draft:qz.nullable(),etag:o().trim().min(1).nullable()}).strict();Jo(T0);Jo(jk);Jo(Ak);m({search:o().optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();m({expectedActiveRevision:Ga.nullable()}).strict();m({sitemapUrl:o().url(),rule:N0,exclusions:y(o().trim().min(1)).optional()}).strict();const Pz=m({discoveryIdentity:o().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:me.optional(),label:o().trim().min(1).optional()}).strict();m({selections:y(Pz),selectedTargetKeys:y(me).optional()}).strict().superRefine((e,a)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&a.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&a.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});m({target:T0}).strict();m({targetKey:me,label:o().trim().min(1)}).strict();m({targetKey:me,mergedKeys:y(me).min(1)}).strict();m({targetKey:me,cleanup:D("assignments-and-group-memberships").optional()}).strict();m({targetKey:me,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const _k={targetKeys:y(me).optional(),groupKeys:y(me).optional()};function zk(e,a){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&a.addIssue({code:"custom",message:"At least one Target or group selector is required."})}m(_k).strict().superRefine(zk);const Mz=m({..._k,queryIds:y(za).min(1),contextOverride:ud.optional()}).strict().superRefine(zk);Qe([m({targetKey:me,queryIds:y(za).min(1),contextOverride:ud.optional()}).strict(),Mz]);const Iz=m({groupKey:me,label:o().trim().min(1),memberCount:d().int().positive()}).strict();m({draftEtag:o().trim().min(1),groups:y(Iz),resolvedTargetKeys:y(me),overlapCount:d().int().nonnegative(),assignments:m({requested:d().int().nonnegative(),added:d().int().nonnegative(),alreadyPresent:d().int().nonnegative()}).strict(),execution:m({addedNodes:d().int().nonnegative(),addedProviderCalls:d().int().nonnegative(),fullRunNodes:d().int().nonnegative(),fullRunProviderCalls:d().int().nonnegative()}).strict()}).strict();m({pairs:y(m({targetKey:me,queryId:za}).strict()).min(1),contextOverride:ud.optional()}).strict();Qe([m({targetKey:me,queryId:za}).strict(),m({targetKeys:y(me).min(1),queryId:za}).strict()]);m({targetKey:me}).strict();m({queryClass:h0,assignments:y(m({targetKey:me,queryId:za}).strict()).min(1)}).strict();m({group:m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.nullable().optional(),targetKeys:y(me),competitors:y(dd).optional()}).strict()}).strict();m({market:Ck}).strict();m({groupKey:me}).strict();m({groupKey:me,competitor:dd}).strict();m({expectedActiveRevision:Ga,groupKey:me,domain:o().trim().min(1).refine(e=>ql(e)!==null,"A competitor domain must be a valid hostname"),label:o().trim().min(1).optional(),aliases:y(o().trim().min(1)).optional()}).strict();Nk.extend({groupKey:me,competitor:dd,draftCreated:C(),published:m({revision:Ga,competitorsChanged:D(!1)}).strict()}).strict();m({groupKey:me,competitorKey:me}).strict();const Vu=m({ruleId:o().trim().min(1),severity:j(["fail","warn"]),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict();qe("ok",[m({ok:D(!0),compiledChecksum:Wo,checks:y(Vu),counts:R0,plan:id}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Vu).min(1)}).strict()]);const iv=m({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),Vz=m({activeRevision:Ga.nullable(),targets:iv,groups:iv,assignments:m({added:d().int().nonnegative(),removed:d().int().nonnegative(),reclassified:d().int().nonnegative()}).strict(),execution:m({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();qe("ok",[m({ok:D(!0),compiledChecksum:Wo,checks:y(Vu),counts:R0,plan:id,diff:Vz}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Vu).min(1),diff:ce()}).strict()]);m({expectedActiveRevision:Ga.nullable(),expectedCompiledChecksum:Wo}).strict();m({published:C(),active:m({revision:Ga,checksum:Wo,compiledChecksum:Wo,createdAt:o().datetime(),plan:id}).strict()}).strict();m({discarded:C()}).strict();m({expectedActiveRevision:Ga}).strict();m({deactivated:C(),previousRevision:Ga.nullable()}).strict();const Lz=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),Uz=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),Gz=j(["simple","draft-only","active-v1","active-v2"]);m({state:Lz,nextAction:Uz,mode:Gz,answerVisibilityProviderReady:C(),activeRevision:Ga.nullable(),activeSchemaVersion:Qe([D(1),D(2)]).nullable(),draft:m({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const Ek=m({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:d().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$z=m({queryId:za,queryText:o().min(1),position:d().int().nonnegative()}).strict();Ek.extend({items:y($z)}).strict();m({querySets:y(Ek)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(za)}).strict();const Kz=m({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();m({templates:y(Kz)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();m({bindings:y(Le(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();m({created:y(m({queryId:za,queryText:o().min(1)}).strict()),existing:y(m({queryId:za,queryText:o().min(1)}).strict())}).strict();const Lu=o().regex(/^[a-f0-9]{64}$/),md=d().int().positive();m({stableKey:me,kind:j(["target","group"]),retiredAt:o().datetime().nullable()}).strict();m({csv:o()}).strict();j(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const Hz=j(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),_h=m({dataRow:md,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),pl=_h.extend({reason:Hz}),Qz=m({source:j(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:me,kind:j(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),Fz=m({proposedGroupKey:me,evidence:y(Qz).min(1)}).strict(),Zz=qe("status",[_h.extend({status:D("matched"),targetKey:me,groupKey:me}).strict(),pl.extend({status:D("ambiguous"),candidateTargetKeys:y(me).min(1).optional(),candidateGroupKeys:y(me).min(1).optional()}).strict(),pl.extend({status:D("unmatched")}).strict(),pl.extend({status:D("invalid"),groupKeyConflict:Fz.optional()}).strict(),_h.extend({status:D("duplicate"),duplicateOfRow:md,targetKey:me,groupKey:me}).strict(),pl.extend({status:D("proposed"),targetKey:me}).strict(),pl.extend({status:D("excluded"),targetKey:me}).strict()]),Yz=m({normalizedGroupLabel:o(),groupKey:me,label:o().trim().min(1),action:j(["create","extend"]),matchedRows:y(md),targetKeys:y(me),addedTargetKeys:y(me),unchangedTargetKeys:y(me)}).strict(),Xz=m({dataRows:d().int().nonnegative(),matchedRows:d().int().nonnegative(),ambiguousRows:d().int().nonnegative(),unmatchedRows:d().int().nonnegative(),invalidRows:d().int().nonnegative(),duplicateRows:d().int().nonnegative(),proposedRows:d().int().nonnegative(),excludedRows:d().int().nonnegative(),needsAttention:d().int().nonnegative(),groupsReady:d().int().nonnegative(),groupsToCreate:d().int().nonnegative(),groupsToExtend:d().int().nonnegative(),membershipsReady:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();m({draftEtag:o().trim().min(1),sourceChecksum:Lu,previewChecksum:Lu,rows:y(Zz),groupChanges:y(Yz),counts:Xz}).strict();m({csv:o(),sourceChecksum:Lu,previewChecksum:Lu,acceptedRows:y(md).min(1)}).strict().superRefine((e,a)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&a.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});Nk.extend({appliedRows:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();const Tk=j(["introduced","repointed","retired"]),Jz=Tk.enum;m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:Tk,confirmed:C(),sourceUrl:o().url(),note:o().min(1)});const Wz=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];Jz.repointed;new Set(Wz.map(e=>e.modelId.toLowerCase()));const eE=j(["not-exposed","no-known-change","known-change"]);eE.enum;const tE=m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:C(),sourceUrl:o().url()}),nE=m({status:j(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(tE),changeCount:d().int().nonnegative(),unverifiedChangeCount:d().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:C()}),aE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function iE(e){const a=e.trim().toLowerCase();return aE[a]??e.charAt(0).toUpperCase()+e.slice(1)}function Yp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function hl(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Xp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function sE(e,a){const s=iE(e),r=Array.isArray(a.changes)?a.changes:[],u=Yp(a.changeCount)||r.length,f=Math.min(u,Yp(a.unverifiedChangeCount)||Yp(a.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=hl(a.knownGoodAsOf),b=a.checkedThroughPeriodEnd!==!1,v={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...v,confirmedDates:Xp(r.filter(S=>S.confirmed!==!1).map(S=>hl(S.date))),unconfirmedDates:Xp(r.filter(S=>S.confirmed===!1).map(S=>hl(S.date)))};const k=Xp([hl(a.firstChangeDate),hl(a.lastChangeDate)]);return u===0?{...v,confirmedDates:[],unconfirmedDates:[]}:f===0?{...v,confirmedDates:k,unconfirmedDates:[]}:v.confirmedCount===0?{...v,confirmedDates:[],unconfirmedDates:k}:{...v,confirmedDates:[],unconfirmedDates:[]}}function oE(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function sv(e,a){return e.length===0?null:e.length===1&&a<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function rE(e){const a=sv(e.confirmedDates,e.confirmedCount),s=sv(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return a?`${r} was updated ${a}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(a&&s)return`${r} was updated ${a}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function ov(e){const a=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return a.length===0?null:`We last checked for model updates on ${a.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function TH(e){const a=Object.entries(e??{}).map(([v,k])=>sE(v,k??{})).sort((v,k)=>v.engine.localeCompare(k.engine));if(a.length===0)return null;const s=a.filter(v=>v.confirmedCount+v.unconfirmedCount>0);if(s.length===0){const v=[...new Set(a.map(E=>E.engine))],k=v.length>1,S=ov(a),A=[...new Set(a.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),N=S??(A.length>0?`We last checked for model updates on ${A[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${oE(v)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${N?` ${N}`:""}`}}const r=s.reduce((v,k)=>v+k.confirmedCount+k.unconfirmedCount,0),u=s.some(v=>v.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=ov(a);return{kind:"change",text:`${s.map(rE).join(" ")} ${g}${b?` ${b}`:""}`}}const Ls=m({slope:d(),intercept:d(),r2:d(),start:d(),end:d(),n:d(),startIndex:d(),endIndex:d()}),lE=j(["gsc","ga4","gbp"]);m({id:o(),domain:o(),connectionType:lE,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const cE=m({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:d(),impressions:d(),ctr:d(),position:d()});j(["clicks","impressions","date"]);m({rows:y(cE),totalMatching:d(),truncated:C(),latestAvailableDate:o().nullable()});const uE=m({date:o(),clicks:d(),impressions:d(),ctr:d(),position:d().nullable()}),dE=m({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:d().nullable()}),mE=m({clicks:Ls.nullable(),impressions:Ls.nullable(),ctr:Ls.nullable(),position:Ls.nullable()}),rv=m({startDate:o(),endDate:o(),clicks:d(),impressions:d(),ctr:d().nullable(),position:d().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),pE=m({days:d(),basis:j(["prior-window","split-window"]).optional(),prior:rv,trailing:rv,comparable:C(),change:m({clicks:d().nullable(),impressions:d().nullable(),ctr:d().nullable(),position:d().nullable()})});m({totals:m({clicks:d(),impressions:d(),ctr:d(),position:d().nullable(),positionDays:d(),days:d()}),daily:y(uE),window:dE.optional(),trends:mE.optional(),periodComparison:pE.nullable().optional()});const hE=m({page:o(),clicks:d(),impressions:d(),ctr:d()});m({rows:y(hE),totals:m({clicks:d(),impressions:d(),ctr:d(),days:d(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:C()}).nullable(),totalsSource:D("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const zh=m({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:C().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});j(["stable","reindexed","deindexed","still-missing","new"]);const fE=m({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),gE=m({reason:o(),count:d(),urls:y(zh).default([])});m({summary:m({total:d(),indexed:d(),notIndexed:d(),deindexed:d(),percentage:d()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(zh).default([]),notIndexed:y(zh).default([]),deindexed:y(fE).default([]),reasonGroups:y(gE).default([])});m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const yE=m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:j(["success","error"]),error:o().optional()});m({summary:m({total:d().int().nonnegative(),succeeded:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(yE).default([])});m({date:o(),indexed:d(),notIndexed:d(),unknownPages:d().default(0),verifiedByInspection:d().default(0),derivedFromImpressions:d().default(0),reasonBreakdown:Le(o(),d()).default({})});const bE=m({siteUrl:o(),permissionLevel:o()});m({sites:y(bE).default([])});const vE=m({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),Rk=m({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:C().optional(),isSitemapsIndex:C().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(vE).optional()});m({sitemaps:y(Rk).default([]),summary:m({total:d().int().nonnegative(),indexes:d().int().nonnegative(),files:d().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});m({sitemapUrls:y(o().url().refine(e=>{const a=new URL(e).protocol;return a==="http:"||a==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const xE=m({sitemapUrl:o(),status:j(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});m({summary:m({total:d().int().nonnegative(),accepted:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(xE)});m({sitemaps:y(Rk),primarySitemapUrl:o(),run:m({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const at=o().trim().min(1),lv=o().regex(/^[a-f0-9]{64}$/i);function kE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const a=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(a.getTime())&&a.toISOString().slice(0,10)===e}const Ua=o().refine(kE,{message:"Expected a calendar date as YYYY-MM-DD."});function wE(e,a){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${a}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const SE=j(["not-connected","selection-required","connected","stale"]),yu=SE.enum,Dk=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);Dk.enum;const D0=j(["enabled","paused","removed","unknown"]);D0.enum;const Ok=j(["enabled","hidden","removed","unknown"]);Ok.enum;const O0=j(["customer","campaign"]);O0.enum;const qk=j(["customer-goal","campaign-goal","custom-goal"]);qk.enum;const Bk=m({loginCustomerId:at.nullable(),customerId:at.nullable(),selectedAt:o().nullable()}).strict(),Jp=m({id:at,projectId:at,scopes:y(o()).default([]),selection:Bk,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Eh=m({resourceName:at,customerId:at,parentCustomerId:at.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:C(),hidden:C(),testAccount:C(),level:d().int().nonnegative(),status:Dk}).strict(),jE=m({customers:y(Eh),totalAccessible:d().int().nonnegative(),truncated:C(),selection:Bk,fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(yu["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(yu["selection-required"]),connection:Jp,selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(yu.connected),connection:Jp,selectedCustomer:Eh}).strict(),m({connected:D(!0),status:D(yu.stale),connection:Jp,selectedCustomer:Eh}).strict()]);const AE=m({id:at,resourceName:at,name:o(),status:D0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),CE=m({id:at,resourceName:at,name:o(),status:Ok,category:o(),origin:o(),primaryForGoal:C(),includeInConversionsMetric:C()}).strict(),NE=m({category:o(),origin:o(),biddable:C()}).strict(),_E=m({campaignId:at,category:o(),origin:o(),biddable:C()}).strict(),zE=m({id:at,name:o(),conversionActionIds:y(at)}).strict(),EE=m({campaignId:at,goalConfigLevel:O0,customGoalId:at.nullable()}).strict(),TE=m({customerId:at,fetchedAt:o(),campaigns:y(AE),conversionActions:y(CE),customerConversionGoals:y(NE),campaignConversionGoals:y(_E),campaignConversionGoalsComplete:C().optional(),customConversionGoals:y(zE),campaignGoalConfigurations:y(EE)}).strict(),RE=m({source:qk,category:o().nullable(),origin:o().nullable(),customGoalId:at.nullable(),biddable:C().nullable(),conversionActionIds:y(at),primaryConversionActionIds:y(at),secondaryConversionActionIds:y(at),missingConversionActionIds:y(at)}).strict(),DE=m({campaignId:at,goalConfigLevel:O0,customGoalId:at.nullable(),missingCustomGoalId:at.nullable(),goals:y(RE)}).strict();m({customerId:at,derivedAt:o(),campaigns:y(DE)}).strict();const Pk=50,Th=31,OE=Pk*Th,qE=m({campaignIds:y(at).min(1).max(Pk),startDate:Ua,endDate:Ua}).strict().superRefine((e,a)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&a.addIssue({code:Se.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){a.addIssue({code:Se.custom,path:["endDate"],message:"endDate must not precede startDate."});return}wE(e.startDate,e.endDate)>Th&&a.addIssue({code:Se.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Th} calendar days.`})}),BE=m({campaignId:at,date:Ua,impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),conversionValueMicros:d().int().nonnegative().nullable()}).strict(),PE=m({query:qE,rows:y(BE).max(OE),truncated:C(),fetchedAt:o()}).strict(),Mk=j(["accessible-customers","inventory","campaign-metrics"]),Wp=Mk.enum,q0=m({id:at,projectId:at,connectionId:at,runId:at,kind:Mk,customerId:at.nullable(),payloadChecksum:lv,rawPayloadSha256:lv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),ME=qe("kind",[m({kind:D(Wp["accessible-customers"]),data:jE}).strict(),m({kind:D(Wp.inventory),data:TE}).strict(),m({kind:D(Wp["campaign-metrics"]),data:PE}).strict()]),IE=m({metadata:q0,payload:ME}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Se.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),VE=j(["7d","14d","30d"]),B0=m({impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),conversionValueMicros:d().int().nonnegative().nullable(),ctr:d().nullable(),cpcMicros:d().int().nonnegative().nullable(),conversionRate:d().nullable(),costPerConversionMicros:d().int().nonnegative().nullable()}),LE=m({date:Ua,origin:j(["provider","filled"]),impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),ctr:d().nullable()}),UE=m({campaignId:at,name:o().nullable(),status:D0,totals:B0}),GE=m({snapshotId:at,capturedAt:o(),customerId:at,currencyCode:o().nullable(),timeZone:o().nullable(),asOfDate:Ua,openDate:Ua.nullable(),truncated:C(),campaignsQueried:d().int().nonnegative(),campaignsInInventory:d().int().nonnegative()}),$E=m({startDate:Ua,endDate:Ua,days:d().int().positive(),totals:B0}),KE=m({days:d().int().positive(),prior:$E,change:m({impressions:d().nullable(),clicks:d().nullable(),costMicros:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),conversionRate:d().nullable()})});m({window:VE,startDate:Ua,endDate:Ua,days:d().int().positive(),totals:B0,daily:y(LE),campaigns:y(UE),comparison:KE.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:GE.nullable()});const nt=o().trim().min(1),cv=o().regex(/^[a-f0-9]{64}$/i),HE=j(["not-connected","selection-required","connected","stale"]),bu=HE.enum,QE=j(["live","draft"]),Ik=QE.enum,Eu=m({accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),selectedAt:o().nullable()}).strict(),eh=m({id:nt,projectId:nt,scopes:y(o()).default([]),selection:Eu,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Vk=m({id:nt,path:o(),name:o(),shareData:C().nullable()}).strict(),Lk=m({accountId:nt,id:nt,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),P0=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),FE=m({accounts:y(Vk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containers:y(Lk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containerId:nt,workspaces:y(P0),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();const ZE=m({id:nt,name:o(),type:o(),paused:C(),firingTriggerIds:y(nt),blockingTriggerIds:y(nt),referencedVariableIds:y(nt),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),YE=m({id:nt,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),XE=m({id:nt,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),Uk=j(["recognized","unknown"]),uv=Uk.enum,JE=j(["literal","variable-ref","absent","unknown"]),pd=JE.enum,WE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),lr=m({source:D(pd.absent),literal:ce(),variableRef:ce()}).strict(),cr=m({source:D(pd.unknown),literal:ce(),variableRef:ce()}).strict(),ur=m({source:D(pd["variable-ref"]),literal:ce(),variableRef:WE}).strict();function Vl(e){return m({source:D(pd.literal),literal:e,variableRef:ce()}).strict()}const eT=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tT=o().trim().min(1).max(128).regex(/^[\w-]+$/),nT=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[Vl(o().trim().min(1).max(256)),ur,lr,cr]);const iT=qe("source",[Vl(eT),ur,lr,cr]),sT=qe("source",[Vl(tT),ur,lr,cr]),oT=qe("source",[Vl(nT),ur,lr,cr]),rT=qe("source",[ur,lr,cr]),lT=qe("source",[Vl(aT),ur,lr,cr]),Gk=j(["all-pages","custom-event","filtered","unknown"]);Gk.enum;const dv=m({operator:o().trim().min(1).max(64),value:o().max(2048),negated:C(),ignoreCase:C()}).strict(),cT=m({triggerId:nt,triggerType:o(),eventPredicates:y(dv),hostnamePredicates:y(dv),unsupportedConditionCount:d().int().nonnegative()}).strict(),$k=j(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);$k.enum;const uT=m({tagId:nt,tagType:o(),recognition:Uk,recognitionReason:o().nullable(),conversionId:iT,conversionLabel:sT,value:oT,transactionId:rT,currency:lT,triggerStrategy:Gk,triggerIds:y(nt),triggerPredicates:y(cT),reviewReasons:y($k)}).strict().superRefine((e,a)=>{e.recognition===uv.recognized&&e.recognitionReason!==null&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===uv.unknown&&!e.recognitionReason&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Kk=m({accountId:nt,containerId:nt,workspaceId:nt.nullable(),tags:y(ZE),triggers:y(YE),variables:y(XE),googleAdsTagAssessments:y(uT).default([])}).strict(),dT=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:C()}).strict(),Hk=m({source:D(Ik.live),version:dT,graph:Kk,fetchedAt:o()}).strict(),Qk=m({source:D(Ik.draft),workspace:P0,graph:Kk,conflictCount:d().int().nonnegative(),fetchedAt:o()}).strict(),mT=m({account:Vk,container:Lk,workspaces:y(P0),live:Hk.nullable(),draft:Qk.nullable(),fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(bu["not-connected"]),connection:ce(),selection:ce()}).strict(),m({connected:D(!0),status:D(bu["selection-required"]),connection:eh,selection:Eu}).strict(),m({connected:D(!0),status:D(bu.connected),connection:eh,selection:Eu}).strict(),m({connected:D(!0),status:D(bu.stale),connection:eh,selection:Eu}).strict()]);const Fk=j(["accounts","container","live","draft"]),vu=Fk.enum,M0=m({id:nt,projectId:nt,connectionId:nt,runId:nt,kind:Fk,accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),payloadChecksum:cv,rawPayloadSha256:cv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),pT=qe("kind",[m({kind:D(vu.accounts),data:FE}).strict(),m({kind:D(vu.container),data:mT}).strict(),m({kind:D(vu.live),data:Hk}).strict(),m({kind:D(vu.draft),data:Qk}).strict()]),hT=m({metadata:M0,payload:pT}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Se.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),On=o().trim().min(1),fT=o().trim().min(1).refine(e=>ql(e)!==null,"Expected a hostname or http(s) URL."),I0=j(["configured","statically-consistent","runtime-unverified","observed"]);I0.enum;const Zk=j(["pass","fail","unknown"]);Zk.enum;const Yk=j(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);Yk.enum;const Xk=m({id:On,projectId:On,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:m({customerId:On,conversionActionId:On,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(On).max(50).default([]),requireBiddableGoal:C().default(!0),requirePrimaryAction:C().default(!0)}).strict(),gtm:m({accountId:On,containerId:On,tagId:On,triggerIds:y(On).default([]),variableIds:y(On).default([])}).strict(),runtime:m({verificationRequired:C().default(!0),requireTransactionId:C().default(!0),requireValue:C().default(!0),requireCurrency:C().default(!0),productionHosts:y(fT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();Xk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const Jk=j(["not-run","consistent","inconsistent"]);Jk.enum;const Wk=j(["not-run","not-observed","observed"]);Wk.enum;m({staticCheck:Jk,runtimeVerificationRequired:C(),runtimeObservation:Wk}).strict();const gT=m({code:Yk,subject:o().trim().min(1),outcome:Zk,status:I0,evidenceIds:y(On).default([])}).strict(),yT=m({contract:Xk,status:I0,findings:y(gT),evaluatedAt:o()}).strict(),mv=m({id:On,name:o(),detail:o(),active:C()});m({googleAds:m({customerId:On.nullable(),syncedAt:o().nullable(),conversionActions:y(mv)}),gtm:m({containerId:On.nullable(),syncedAt:o().nullable(),tags:y(mv)})});const wl=o().trim().min(1);function pv(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const bT=/^[\w-]+$/;function V0(e){const a=e.trim();return bT.test(a)?a:null}function vT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??V0(a)}function xT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:V0(s)}function kT(e,a,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===a&&u[2]===s?u[3]:null:V0(r)}function wT(e){const a=pv(e.customerId);if(!a)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:a};if(e.loginCustomerId===void 0)return{customerId:a};const s=pv(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function ST(e){const a=vT(e.accountId);if(!a)return null;const s=xT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=kT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const hd=j(["google-ads","gtm"]);hd.enum;m({provider:hd,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();m({provider:hd,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();m({loginCustomerId:wl.nullable().optional(),customerId:wl}).strict().superRefine((e,a)=>{wT(e)||a.addIssue({code:Se.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});m({accountId:wl,containerId:wl,workspaceId:wl.optional()}).strict().superRefine((e,a)=>{ST(e)||a.addIssue({code:Se.custom,message:"GTM resource paths must match the selected account and container."})});m({provider:hd,disconnected:C()}).strict();const ew=100;m({snapshots:y(q0).max(ew),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:IE}).strict();m({snapshots:y(M0).max(ew),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:hT}).strict();m({assessment:yT,googleAdsSnapshot:q0.nullable(),gtmSnapshot:M0.nullable()}).strict();const jT=m({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});m({accounts:y(jT),total:d().int().nonnegative()});const AT=m({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Le(o(),qn()).nullable(),regularHours:Le(o(),qn()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:C(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});m({locations:y(AT),totalDiscovered:d().int().nonnegative(),totalSelected:d().int().nonnegative()});m({selectAllNew:C().default(!0),accountName:o().optional(),switchAccount:C().default(!1)});m({selected:C()});m({locationNames:y(o()).optional(),daysOfMetrics:d().int().positive().max(540).optional(),monthsOfKeywords:d().int().positive().max(18).optional()});m({runId:o(),status:o()});const CT=m({locationName:o(),date:o(),metric:o(),value:d().int()});m({metrics:y(CT),total:d().int().nonnegative()});const NT=m({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:d().int().nullable(),valueThreshold:d().int().nullable()});m({keywords:y(NT),total:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)});const _T=m({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:C(),providerType:o().nullable()});m({placeActions:y(_T),total:d().int().nonnegative()});const zT=m({locationName:o(),populatedGroupCount:d().int().nonnegative(),syncedAt:o(),attributes:Le(o(),qn())});m({lodging:y(zT),total:d().int().nonnegative()});const ET=m({name:o(),valueType:o(),values:y(Qe([C(),o()])),unsetValues:y(o()),uris:y(o())}),TT=m({locationName:o(),attributeCount:d().int().nonnegative(),syncedAt:o(),attributes:y(ET)});m({attributes:y(TT),total:d().int().nonnegative()});const RT=m({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Le(o(),qn())});m({places:y(RT),total:d().int().nonnegative()});m({scope:m({locationName:o().nullable(),locationCount:d().int().nonnegative()}),performance:m({totals:Le(o(),d()),recent7d:Le(o(),d()),prior7d:Le(o(),d()),deltaPct:Le(o(),d().nullable())}),freshness:m({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:d().int().nonnegative()}),timeseries:y(m({date:o(),pending:C(),metrics:Le(o(),d())})),keywords:m({total:d().int().nonnegative(),thresholdedCount:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)}),placeActions:m({total:d().int().nonnegative(),hasReservationCta:C(),hasBookingCta:C(),hasDirectMerchantCta:C()}),lodging:m({lodgingLocationCount:d().int().nonnegative(),populatedLodgingCount:d().int().nonnegative(),emptyLodgingCount:d().int().nonnegative()}),profileCompleteness:m({locationCount:d().int().nonnegative(),withSecondaryCategories:d().int().nonnegative(),secondaryCategoryTotal:d().int().nonnegative(),withDescription:d().int().nonnegative(),withServiceArea:d().int().nonnegative(),withHours:d().int().nonnegative(),withPrimaryPhone:d().int().nonnegative(),permanentlyClosed:d().int().nonnegative(),temporarilyClosed:d().int().nonnegative()})});const DT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function OT(e){const a=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(a.length===0)return e;const s=a.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function RH(e){return DT[e]??OT(e)}const qT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],BT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function DH(e){return qT.includes(e)?"conversion":BT.includes(e)?"reach":"other"}m({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const th=m({id:o(),url:o(),httpCode:d().nullable().optional(),inIndex:C().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:d().nullable().optional(),anchorCount:d().nullable().optional(),discoveryDate:o().nullable().optional()});m({summary:m({total:d(),indexed:d(),notIndexed:d(),unknown:d().optional(),percentage:d()}),lastInspectedAt:o().nullable(),indexed:y(th).default([]),notIndexed:y(th).default([]),unknown:y(th).default([]).optional()});m({query:o(),impressions:d(),clicks:d(),ctr:d(),averagePosition:d()});m({date:o(),indexed:d(),notIndexed:d(),unknown:d()});const PT=m({url:o(),status:j(["success","error"]),submittedAt:o(),error:o().optional()});m({summary:m({total:d().int().nonnegative(),succeeded:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(PT).default([])});const tw=m({url:o(),verified:C()});m({sites:y(tw).default([])});m({connected:C(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});m({connected:C(),domain:o(),siteUrl:o().nullable(),availableSites:y(tw).default([])});m({siteUrl:o()});const MT=m({name:o(),alive:C(),lastUsed:o().nullable()});m({connected:C(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(MT).default([])});const dr=j(["live","staging"]);m({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:dr,createdAt:o(),updatedAt:o()});const hv=m({url:o(),reachable:C(),pageCount:d().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:m({id:d(),slug:o()}).nullable().optional()});m({connected:C(),projectName:o(),defaultEnv:dr,live:hv.nullable(),staging:hv.nullable(),adminUrl:o().nullable().optional()});const IT=m({id:d(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),nw=m({title:o().nullable(),description:o().nullable(),noindex:C().nullable(),writable:C().default(!1),writeTargets:y(o()).default([])}),VT=m({type:o(),json:Le(o(),qn())}),LT=IT.extend({env:dr,content:o(),seo:nw,schemaBlocks:y(VT).default([])}),fv=LT.extend({contentHash:o(),contentSnippet:o()}),aw=m({manualRequired:D(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),UT=m({slug:o(),severity:j(["high","medium","low"]),code:j(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});m({slug:o(),title:o(),status:o(),wordCount:d(),seo:nw,schemaPresent:C(),issues:y(UT).default([])});const GT=m({slug:o(),status:j(["applied","skipped","manual"]),error:o().optional(),manualAssist:aw.optional()});m({env:dr,strategy:j(["plugin","manual"]),results:y(GT)});const $T=m({slug:o(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:aw.optional(),error:o().optional()});m({env:dr,results:y($T)});const KT=m({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:C()});m({env:dr,pages:y(KT)});const HT=m({name:o(),status:j(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});m({projectName:o(),steps:y(HT)});m({slug:o(),live:fv,staging:fv,hasDifferences:C(),differences:m({title:C(),slug:C(),content:C(),seoTitle:C(),seoDescription:C(),noindex:C(),schema:C()})});const QT=m({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:C(),quota:l_.optional(),vertexConfigured:C().optional()}),FT=m({name:o(),displayName:o(),mode:j(["api","browser"]),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o(),tier:j(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:m({source:o(),flags:o()}),modelValidationHint:o()}),gv=m({configured:C()});m({providers:y(QT).default([]),providerCatalog:y(FT).default([]),google:gv,bing:gv});const pa=j(["queued","running","completed","partial","failed","cancelled"]),xn=pa.enum,L0=j(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),ze=L0.enum;m({kind:L0.optional(),status:pa.optional()});const U0=j(["manual","scheduled","config-apply","backfill","probe"]),Qo=U0.enum,fi=j(["cited","not-cited"]),Uu=fi.enum,Gu=j(["visible","not-visible"]);Gu.enum;const El=j(["mentioned","not-mentioned"]);El.enum;const iw=j(["new","cited","lost","emerging","not-cited"]);iw.enum;const ZT=j(["new","mentioned","lost","emerging","not-mentioned"]);ZT.enum;const YT=j([Qo.manual,Qo.probe]);m({kind:D(ze["answer-visibility"]).optional(),trigger:YT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:l7.optional(),location:o().min(1).optional(),allLocations:C().optional(),noLocation:C().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const XT=m({message:o(),raw:qn().optional()}),JT=m({message:o().optional(),providers:Le(o(),XT).optional()}),WT=m({id:o(),projectId:o(),kind:L0,status:pa,trigger:U0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Le(o(),qn()).nullable().optional(),measurementScope:c7.nullable().optional(),measurementExecutionIdentity:W2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:JT.nullable().optional(),queryBasketRevision:d().int().nullable().optional(),createdAt:o()});function G0(e){if(e.providers){const a=Object.entries(e.providers);if(a.length===1){const[s,r]=a[0];return`${s}: ${r.message}`}if(a.length>1)return a.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const fd=m({uri:o(),title:o()}),e9=m({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:Yt.nullable().optional()}),sw=m({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:fi,answerMentioned:C().optional(),visibilityState:Gu.optional(),mentionState:El.optional(),transition:iw.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Qe([rd,ce()]).default(null),sourceCount:d().int().nonnegative().nullable().default(null),resolvedCount:d().int().nonnegative().nullable().default(null),captureVersion:d().int().positive().nullable().default(null),retrievalStatus:Qe([z0,ce()]).default(null),retrievalContract:Qe([E0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(fd).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:Yt.nullable().optional(),supportedContext:e9.nullable().optional(),createdAt:o()});m({snapshots:y(sw),total:d().int().nonnegative()});const t9=m({queryId:o().nullable(),query:o().nullable(),run1State:fi.nullable(),run2State:fi.nullable(),run1AnswerMentioned:C().nullable(),run2AnswerMentioned:C().nullable(),run1VisibilityState:Gu.nullable(),run2VisibilityState:Gu.nullable(),run1MentionState:El.nullable().optional(),run2MentionState:El.nullable().optional(),changed:C(),visibilityChanged:C()});m({run1:o(),run2:o(),diff:y(t9)});const n9=WT.extend({snapshots:y(sw).optional()}),a9=m({totalRuns:d().int().nonnegative(),run:n9.nullable()});m({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:qn().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),requestId:o().nullable().optional(),credentialId:o().nullable().optional(),createdAt:o()});const ow=j(["all","api","browser"]);ow.enum;const i9=j(["yes","no","unknown","not-mentioned"]),yv=y(o().min(1)),bv=m({companyName:o().min(1),domain:o().min(1),queries:yv.optional(),phrases:yv.optional(),competitors:y(o().min(1)).optional(),providers:y(o().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:ow.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).superRefine((e,a)=>{e.queries!==void 0&&e.phrases!==void 0&&a.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});bv.safeExtend({competitors:bv.shape.competitors.default([])});const s9=m({name:o(),count:d().int().nonnegative()}),o9=m({id:o(),name:o(),weight:d(),score:d(),findings:y(m({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),r9=m({url:o(),finalUrl:o(),auditedAt:o(),overallScore:d(),summary:o(),factors:y(o9).default([])}),l9=m({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),c9=m({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:C(),cited:C(),describedAccurately:i9,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(fd).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),u9=m({query:o(),providerResults:y(c9).default([])}),d9=m({totalQueries:d().int().nonnegative(),totalProviders:d().int().nonnegative(),totalComparisons:d().int().nonnegative(),mentionCount:d().int().nonnegative(),citationCount:d().int().nonnegative(),topCompetitors:y(s9).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});m({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:l9,audit:r9,queryResults:y(u9).default([]),summary:d9});const rw=Qe([pa,ce()]),$0=j(["pass","partial","fail"]);$0.enum;const lw=j(["up","down","flat"]);lw.enum;const m9=m({id:o(),name:o(),weight:d(),avgScore:d(),status:$0,pagesPassing:d().int().nonnegative(),pagesPartial:d().int().nonnegative(),pagesFailing:d().int().nonnegative()}),p9=m({factorId:o(),factorName:o(),avgScore:d(),affectedPages:d().int().nonnegative(),totalPages:d().int().nonnegative(),affectedPct:d().int().nonnegative(),topRecommendations:y(o()).default([])});m({project:o(),hasData:C(),runId:o().nullable(),runStatus:rw,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:d(),pagesDiscovered:d().int().nonnegative(),pagesAudited:d().int().nonnegative(),pagesSkipped:d().int().nonnegative(),pagesErrored:d().int().nonnegative(),deltaScore:d().nullable(),trend:Qe([lw,ce()]),previousScore:d().nullable(),previousAuditedAt:o().nullable(),factors:y(m9).default([]),crossCuttingIssues:y(p9).default([]),prioritizedFixes:y(o()).default([])});const cw=m({id:o(),name:o(),weight:d(),score:d()}),h9=m({url:o(),overallScore:d(),status:j(["success","error"]),error:o().nullable().optional(),factors:y(cw).default([])});m({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:d().int().nonnegative(),pages:y(h9).default([])});const f9=m({runId:o(),auditedAt:o(),aggregateScore:d(),pagesAudited:d().int().nonnegative()});m({project:o(),points:y(f9).default([])});const g9=j(["disabled","complete","partial","unavailable"]);g9.enum;const y9=m({pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),edges:d().int().nonnegative(),findings:d().int().nonnegative()}),b9=qe("state",[m({state:D("unavailable")}),m({state:D("disabled")}),m({state:D("complete"),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative()}),m({state:D("partial"),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative()})]);m({project:o(),hasCrawlData:C(),legacyAuditAvailable:C(),runId:o().nullable(),runStatus:rw,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Le(o(),qn()).default({}),complete:C(),termination:o().nullable(),detailsAvailable:C(),counts:y9,deadLinks:b9});j(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const gd=j(["eligible","hidden","resource","redirect","failed","unchecked"]),OH=gd.enum,qH=gd.options,Vo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},xu={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},v9={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function x9(e){return e.indexabilityReasons?.some(a=>a===v9.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function BH(e){switch(e.fetchState){case Vo.fetchError:return"failed";case Vo.discovered:return"unchecked";case Vo.nonHtml:return"resource";case Vo.redirect:return"redirect";case Vo.robotsBlocked:return"hidden";case Vo.html:break;default:return"unchecked"}if(x9(e))return"hidden";switch(e.indexabilityState){case xu.indexable:return"eligible";case xu.noindex:case xu.blocked:return"hidden";case xu.unknown:default:return"unchecked"}}const PH=15,k9=j(["navigation","content","unknown"]);k9.enum;const w9=m({navigation:d().int().nonnegative(),content:d().int().nonnegative(),unknown:d().int().nonnegative()}),uw=j(["placement","ubiquity","unmeasured"]);uw.enum;const yd=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);yd.enum;function MH(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const bd=j(["all","content","template"]);bd.enum;const S9=j(["anchor","redirect","canonical","link"]);S9.enum;const Tl=m({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:d().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:d().nullable(),inventoryEligible:C(),depth:d().int().nullable(),inboundUniqueEdges:d().int().nonnegative(),outboundUniqueEdges:d().int().nonnegative(),inboundOccurrences:d().int().nonnegative(),outboundOccurrences:d().int().nonnegative(),linkScoreRaw:d().nullable(),linkScoreNormalized:d().nullable(),healthState:gd}),j9=m({type:j(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),vv=cw.extend({status:$0,applicable:C().nullable(),findings:y(j9).default([]),recommendations:y(o()).default([])}),xv=m({id:o().min(1),severity:j(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),ku=m({project:o(),runId:o(),complete:C(),termination:o().nullable()}),kv=m({nodeKey:o(),url:o(),auditState:o()});qe("state",[m({state:D("no-crawl"),project:o(),runId:ce()}),ku.extend({state:D("details-unavailable")}),ku.extend({state:D("not-found")}),ku.merge(kv).extend({state:D("not-audited"),auditScore:ce(),factors:y(vv).length(0).default([]),criticalDefects:y(xv).length(0).default([])}),ku.merge(kv).extend({state:D("ready"),auditScore:d(),evidenceState:j(["complete","scores-only"]),factors:y(vv).default([]),criticalDefects:y(xv).default([])})]);const A9=j(["applied","unavailable-legacy-scan"]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Qe([A9,ce()]).default(null),pages:y(Tl).default([])});const C9=m({path:o(),url:o().nullable(),hasPage:C(),pageCount:d().int().positive(),inventoryEligibleCount:d().int().nonnegative(),fetchedCount:d().int().nonnegative()});m({project:o(),hasCrawlData:C(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(C9).default([])});const $s=m({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:C(),followable:C(),occurrences:d().int().positive(),followableOccurrences:d().int().nonnegative(),nofollowOccurrences:d().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Qe([C(),ce()]),templateRatio:Qe([d(),ce()]),templateSource:uw,placementOccurrences:Qe([w9,ce()])}),N9=m({nodeKey:o(),url:o(),path:o(),depth:d().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:d().nullable(),inventoryEligible:C(),inboundUniqueEdges:d().int().nonnegative(),outboundUniqueEdges:d().int().nonnegative(),linkScoreNormalized:d().nullable(),healthState:gd,x:d(),y:d()}),_9=m({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:C(),occurrences:d().int().positive(),isTemplate:C()}),z9=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),E9=qe("state",[m({state:D("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:C()}),m({state:D("unavailable"),version:ce(),reason:z9})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:E9,templateDetection:yd,linkKind:bd,totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),totalTemplateEdges:d().int().nonnegative(),totalContentEdges:d().int().nonnegative(),nodes:y(N9).default([]),edges:y(_9).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),sampled:C()});const IH=2e4,VH=5e4,T9=j(["focus","inbound","outbound","both","transitive"]),R9=Tl.extend({distance:d().int().nonnegative(),relationToFocus:T9});m({project:o(),hasCrawlData:C(),runId:o().nullable(),complete:C(),termination:o().nullable(),state:j(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:d().int().min(0).max(3),totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),nodes:y(R9).default([]),edges:y($s).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:C()});const wv=m({nodeKey:o(),url:o(),path:o()});m({project:o(),runId:o().nullable(),complete:C(),termination:o().nullable(),state:j(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:wv.nullable(),to:wv.nullable(),maxDepth:d().int().positive(),visitedNodes:d().int().nonnegative(),nodes:y(Tl).default([]),edges:y($s).default([])});const dw=j(["added","removed","changed"]),D9=m({entity:D("page"),change:dw,key:o(),changedFields:y(o()).default([]),before:Tl.nullable(),after:Tl.nullable()}),O9=m({entity:D("link"),change:dw,key:o(),changedFields:y(o()).default([]),before:$s.nullable(),after:$s.nullable()}),q9=qe("entity",[D9,O9]),Sv=m({added:d().int().nonnegative(),removed:d().int().nonnegative(),changed:d().int().nonnegative()}),B9=m({scope:j(["all","pages","links"]),change:j(["all","added","removed","changed"])});qe("state",[m({project:o(),state:D("unavailable"),reason:j(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),m({project:o(),state:D("incompatible"),reason:D("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),m({project:o(),state:D("ready"),fromRunId:o(),toRunId:o(),versions:m({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:B9,summaryState:j(["exact","omitted-on-continuation"]),summary:m({pages:Sv,links:Sv}).nullable(),total:d().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(q9).default([])})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),templateDetection:yd,linkKind:bd,edges:y($s).default([])});m({project:o(),hasCrawlData:C(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:yd,linkKind:bd,inbound:y($s).default([]),outbound:y($s).default([]),inboundTruncated:C(),outboundTruncated:C()});const jv=m({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Le(o(),qn()).default({})});qe("state",[m({project:o(),runId:o().nullable(),state:D("unavailable"),legacyAuditAvailable:C()}),m({project:o(),runId:o(),state:D("disabled"),checkDeadLinks:D(!1)}),m({project:o(),runId:o(),state:D("complete"),checkDeadLinks:D(!0),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative(),total:d().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(jv).default([])}),m({project:o(),runId:o(),state:D("partial"),checkDeadLinks:D(!0),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative(),total:d().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(jv).default([])})]);m({sitemapUrl:o().url().optional(),limit:d().int().positive().max(2e3).optional(),maxPages:d().int().positive().max(5e4).optional(),maxEdges:d().int().positive().max(1e6).optional(),maxDepth:d().int().min(0).max(100).optional(),checkDeadLinks:C().default(!1)});m({runId:o(),status:pa});const P9=m({runId:o(),status:pa,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:C()});m({project:o(),scans:y(P9).default([])});const M9=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),I9=m({state:j(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),V9=m({id:o(),state:o(),pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),pagesErrored:d().int().nonnegative(),edgesDiscovered:d().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});m({project:o(),runId:o(),status:pa,phase:M9,attempt:V9.nullable(),layout:I9,error:o().nullable()});const L9=j(["waiting","collecting","terminal"]),U9=m({nodeKey:o(),url:o(),auditScore:d(),checksNeedingAttention:d().int().nonnegative()});m({project:o(),runId:o(),status:pa,state:L9,attemptId:o().nullable(),pagesAudited:d().int().nonnegative(),updatedAt:o().nullable(),examples:y(U9).max(12).default([])});const G9=m({basis:j(["tracked","observed"]).nullable(),availability:j(["measured","not-measured","unavailable"]),reason:j(["select-query-class","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),K0=G9.partial().shape;function LH(e){switch(e){case"select-query-class":return"Select a query class.";case"no-competitors":return"No competitors configured.";case"insufficient-observed":return"Requires 3 observed competitors mentioned in at least 3 answers each.";case"no-answers":return"No answer text in scope.";case"no-mentions":return"No brands mentioned in scope.";case"unavailable":return"Competitor evidence is unavailable.";default:return""}}function $9(e,a){const s=a?.availability==="unavailable"?"Unavailable":a?.availability==="not-measured"||e===null?"Not measured":`${e.toFixed(1)}%`;return a?.basis?`${s} · ${a.basis} competitors`:s}function UH(e,a,s){return`Share of voice · ${a} queries: ${$9(e,s)}${s?.measurementScope==="all-markets"?" · all markets":""}`}const H0=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);H0.enum;const Q0=j(["cited","aspirational","wasted-surface"]),Av=Q0.enum;Av.cited,Av.aspirational;const vd=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),K9=vd.enum;K9["direct-competitor"];const xd=j(["queued","seeding","probing","completed","failed"]);xd.enum;const mw=m({domain:o().min(1),hits:d().int().positive(),competitorType:vd.default("unknown")}),H9=m({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:Q0.nullable().default(null),citationState:fi,citedDomains:y(o()).default([]),answerMentioned:C().nullable().default(null),createdAt:o()}),Q9=m({id:o(),projectId:o(),status:xd,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:d().int().nullable().optional(),seedCount:d().int().nullable().optional(),seedFromAnswerCount:d().int().nullable().optional(),seedFromGroundingCount:d().int().nullable().optional(),seedBrandFilteredCount:d().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(Yt).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(d()).nullable().optional(),dedupBandPairFraction:d().nullable().optional(),dedupPairsTotal:d().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Le(o(),d().int()).nullable().optional(),canonicalCount:d().int().nullable().optional(),dedupThreshold:d().nullable().optional(),probeCount:d().int().nullable().optional(),citedCount:d().int().nullable().default(null),aspirationalCount:d().int().nullable().default(null),wastedCount:d().int().nullable().default(null),competitorMap:y(mw).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});Q9.extend({probes:y(H9).default([])});const F9=500,Z9=8,Y9=["gemini","openai"],X9=j(Y9);m({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(X9).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:d().min(0).max(1).optional(),maxProbes:d().int().positive().max(F9).optional(),probeConcurrency:d().int().min(1).max(Z9).optional(),locations:y(o().min(1)).optional()});m({buckets:y(Q0).min(1).optional(),includeCompetitors:C().optional(),competitorTypes:y(vd).min(1).optional()});m({sessionId:o(),projectId:o(),status:xd,queriesByBucket:m({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(mw)});m({sessionId:o(),projectId:o(),promoted:m({queries:y(o()),competitors:y(o())}),skipped:m({queries:y(o()),competitors:y(o())})});Qe([D("cli"),o().regex(/^discovery:.+$/)]);const J9=m({query:o().min(1),probeHits:d().int().positive()}),W9=m({rawCandidates:d().int().nonnegative(),admitted:d().int().nonnegative(),rejected:m({belowFloor:d().int().nonnegative(),length:d().int().nonnegative(),navigational:d().int().nonnegative(),duplicate:d().int().nonnegative(),offAnchor:d().int().nonnegative(),semanticDuplicate:d().int().nonnegative()})});m({sessionId:o(),projectId:o(),provider:o(),status:xd,minProbeHits:d().int().positive(),anchorApplied:C(),semanticNoveltyApplied:C(),candidates:y(J9),stats:W9});const F0=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);F0.enum;const kd=j(["7d","30d","90d","all"]),Cv=j(["improving","declining","stable"]),eR=j(["mentioned","cited"]);eR.enum;const Rh=m({citationRate:d(),cited:d().int(),total:d().int(),mentionRate:d(),mentionedCount:d().int()}),mr=o().trim().min(1),tR=y(mr).min(1).superRefine((e,a)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&a.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),Ks=qe("status",[m({status:D("known"),model:mr}),m({status:D("unknown")}),m({status:D("mixed"),models:tR,includesUnknown:C()})]),nR=m({observedAt:o(),bucketStartDate:o(),from:Ks,to:Ks,fromPreWindowAnchor:C().optional(),anchorObservedAt:o().optional()}),pw=m({latestObservation:m({observedAt:o(),state:Ks}),events:y(nR),eventTotal:d().int().nonnegative().optional(),anchorUnavailable:C().optional()}),aR=Le(o(),pw),iR=pw.extend({latestServedModelIds:y(mr).default([])}),sR=Le(o(),iR),oR=m({observedAt:o(),configured:Ks,served:Ks}),rR=m({scope:j(["non-brand","pooled"]),rate:d().nullable(),projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative()}),lR=m({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:d().int().nonnegative(),citationRate:d(),cited:d().int(),total:d().int(),queryCount:d().int(),mentionRate:d(),mentionedCount:d().int(),mentionShare:rR,byProvider:Le(o(),Rh),modelEvidenceByProvider:Le(o(),Ks).default({}),basketRevision:d().int().nullable().default(null)}),cR=m({revision:d().int(),at:o(),added:y(o()),removed:y(o())}),uR=m({date:o(),delta:d().int(),label:o()}),dR=m({at:o(),identity:W2});m({window:kd,mentionShareScope:j(["non-brand","pooled"]),buckets:y(lR),overall:Rh,byProvider:Le(o(),Rh),trend:Cv,mentionTrend:Cv,queryChanges:y(uR),basketChanges:y(cR).default([]),executionIdentityChanges:y(dR).default([]),referenceBasketRevision:d().int().nullable().default(null),modelAttribution:aR.default({}),servedModelAttribution:sR.default({}),modelServiceMismatch:Le(o(),oR).default({}),modelPointerChanges:Le(o(),nE).default({})});const Nv=m({category:H0,label:o(),count:d().int(),percentage:d(),topDomains:y(m({domain:o(),count:d().int()}))}),mR=m({domain:o(),count:d().int(),percentage:d(),category:H0,label:o(),surfaceClass:F0}),pR=m({surfaceClass:F0,label:o(),count:d().int(),percentage:d(),domainCount:d().int()}),_v=m({totalCitedSlots:d().int(),domainTotal:d().int(),entries:y(mR),truncatedDomainCount:d().int(),truncatedCitedSlots:d().int(),bySurfaceClass:y(pR)});m({overall:y(Nv),byQuery:Le(o(),y(Nv)),ranked:_v,byProvider:Le(o(),_v),runId:o(),window:kd,limit:d().int().nullable()});const hR=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),fR=qe("kind",[m({kind:D("project")}).strict(),m({kind:D("group"),groupKey:o().trim().min(1)}).strict(),m({kind:D("all-markets")}).strict()]),hw=j(["all","branded","non-brand"]),fw=j(["project","all-markets"]);m({window:kd.optional(),groupKey:o().trim().min(1).optional(),scope:fw.optional(),provider:o().trim().min(1).optional(),model:mr.optional(),groupBy:D("model").optional(),queryClass:hw.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional()}).strict().superRefine((e,a)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&a.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&a.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Xi=m({domain:o().trim().min(1),label:o().trim().min(1),surfaceClass:hR,pinned:C(),mentionCount:d().int().nonnegative(),shareOfVoice:d().min(0).max(100).nullable(),citationCount:d().int().nonnegative(),answeredResults:d().int().nonnegative(),firstSeenAt:o().datetime().nullable(),lastSeenAt:o().datetime().nullable(),sampleUrls:y(o().url()).max(3)}).strict(),gw=m({answeredResults:d().int().nonnegative(),sourceResults:d().int().nonnegative(),missingAnswerTextResults:d().int().nonnegative(),mentionCredits:d().int().nonnegative(),incompleteSourceResults:d().int().nonnegative(),excludedProbeResults:d().int().nonnegative(),excludedNonCompletedResults:d().int().nonnegative()}).strict(),gR=50,yR=m({...K0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),provider:o().trim().min(1),model:mr.nullable(),servedModels:Ks,snapshotCount:d().int().positive(),project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:gw,truncated:C()}).strict(),bR=m({basis:D("requested-model"),groups:y(yR).max(gR),totalGroups:d().int().nonnegative(),truncated:C()}).strict();m({...K0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),window:kd,scope:fR,project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:gw,modelComparison:bR.optional(),marketState:m({activeRevision:d().int().positive(),draft:m({etag:o().trim().min(1),pendingCompetitorDomains:y(o().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:m({scope:fw,groupKey:o().nullable(),provider:o().nullable(),model:mr.optional(),groupBy:D("model").optional(),queryClass:hw,location:o().nullable(),runId:o().nullable()}).strict(),truncated:C()}).strict();const Z0=m({total:d().int(),checked:d().int(),mentioned:d().int(),cited:d().int(),mentionRate:d().nullable(),citedRate:d().nullable()}),yw=Z0.extend({provider:o(),firstObserved:o(),lastObserved:o()}),vR=Z0.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(yw).optional()}),xR=m({since:o().nullable(),until:o().nullable(),lastRuns:d().int().nullable(),runCount:d().int()}),kR=j(["provider"]),Dh=m({domain:o(),mentions:d().int()}),bw=m({...K0,measurementScope:j(["project","all-markets"]).optional(),queryClass:j(["branded","non-brand","pooled"]),percent:d().nullable(),competitorCount:d().int().nonnegative(),projectMentions:d().int(),competitorMentions:d().int(),snapshotsWithAnswerText:d().int(),perCompetitor:y(Dh)});m({project:o(),groupBy:kR.optional(),window:xR,totals:Z0,byProvider:y(yw).optional(),queries:y(vR),shareOfVoice:bw.optional()});const wR=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),SR=j(["up","down","flat"]),zv=m({availability:j(["available","no-observations","no-competitive-frame"]),point:d().nullable(),ciLow:d().nullable(),ciHigh:d().nullable(),numerator:d().int(),denominator:d().int()}),jR=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),AR=m({key:jR,label:o(),queryClass:j(["all","non-brand","pooled"]),driftRobust:C(),from:zv,to:zv,rateRatio:d().nullable(),direction:Qe([SR,ce()]),verdict:wR}),Ev=m({month:o(),since:o(),until:o(),runCount:d().int(),lowRunCount:C()}),CR=m({queryCount:d().int(),excludedFromOnly:d().int(),excludedToOnly:d().int(),providers:y(o()),excludedProviders:y(o())}),NR=m({provider:o(),fromModels:y(o()),toModels:y(o())}),_R=j(["included","model-discontinuous","model-unknown"]),zR=m({provider:o(),status:_R,fromModels:y(o()),toModels:y(o())}),ER=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),TR=m({status:ER,comparedProviders:y(o()),providers:y(zR)}),RR=m({provider:o(),from:m({checked:d().int(),mentioned:d().int(),cited:d().int()}),to:m({checked:d().int(),mentioned:d().int(),cited:d().int()})}),DR=m({from:m({count:d().int(),of:d().int()}),to:m({count:d().int(),of:d().int()})});m({project:o(),from:Ev,to:Ev,basket:CR,metrics:y(AR),queriesMentioned:DR,byProvider:y(RR),modelChanges:y(NR),continuity:TR,competitors:m({from:y(Dh),to:y(Dh)})});j(["json","csv"]);const OR=m({runId:o(),runKind:D("answer-visibility"),runStatus:pa,runTrigger:U0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:fi,cited:C(),answerMentioned:C().nullable(),mentionState:Qe([El,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Qe([rd,ce()]),sourceCount:d().int().nonnegative().nullable(),resolvedCount:d().int().nonnegative().nullable(),captureVersion:d().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(fd),searchQueries:y(o())}),qR=m({since:o().nullable(),until:o().nullable(),includeProbes:C()});m({schemaVersion:D("canonry.results-export/v1"),generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:qR,recordCount:d().int().nonnegative(),records:y(OR)});m({runIds:y(o().trim().min(1)).max(100).default([]),researchRunIds:y(o().trim().min(1)).max(100).default([]),confirm:C().default(!1)}).strict().superRefine((e,a)=>{e.runIds.length+e.researchRunIds.length===0&&a.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&a.addIssue({code:"custom",message:"Run IDs must be unique."})});m({dryRun:C(),runIds:y(o()),researchRunIds:y(o()),querySnapshots:d().int().nonnegative(),researchQueries:d().int().nonnegative(),insights:d().int().nonnegative(),healthSnapshots:d().int().nonnegative()});const wd=j(["organic","paid"]);wd.enum;m({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:C(),createdAt:o(),updatedAt:o()});m({date:o(),landingPage:o(),sessions:d(),organicSessions:d(),users:d()});const Y0=j(["session","first_user","manual_utm"]),BR=m({source:o(),medium:o(),trafficClass:wd,sessions:d(),users:d().optional(),sourceDimension:Y0}),PR=m({source:o(),medium:o(),trafficClass:wd,sourceDimension:Y0,landingPage:o(),sessions:d(),users:d().optional()}),MR=m({source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()}),fl=m({sessions:d(),sharePct:d(),sharePctDisplay:o()}),IR=m({organic:fl,social:fl,direct:fl,ai:fl,other:fl});m({totalSessions:d(),totalOrganicSessions:d(),totalDirectSessions:d(),totalUsers:d().nullable(),topPages:y(m({landingPage:o(),sessions:d(),organicSessions:d(),directSessions:d(),users:d()})),aiReferrals:y(BR),aiReferralLandingPages:y(PR),aiSessionsDeduped:d(),aiUsersDeduped:d().optional(),paidAiSessionsDeduped:d(),paidAiUsersDeduped:d().optional(),organicAiSessionsDeduped:d(),organicAiUsersDeduped:d().optional(),aiSessionsBySession:d(),aiUsersBySession:d().optional(),paidAiSessionsBySession:d(),paidAiUsersBySession:d().optional(),organicAiSessionsBySession:d(),organicAiUsersBySession:d().optional(),socialReferrals:y(MR),socialSessions:d(),socialUsers:d().optional(),channelBreakdown:IR,organicSharePct:d(),aiSharePct:d(),aiSharePctBySession:d(),paidAiSharePct:d(),paidAiSharePctBySession:d(),organicAiSharePct:d(),organicAiSharePctBySession:d(),directSharePct:d(),socialSharePct:d(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:d(),otherSharePct:d(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});m({connected:C(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:j(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const VR=m({propertyId:o(),displayName:o(),accountName:o()});m({properties:y(VR)});m({synced:C(),rowCount:d().int().nonnegative(),aiReferralCount:d().int().nonnegative(),socialReferralCount:d().int().nonnegative(),days:d().int().nonnegative(),requestedDays:d().int().nonnegative(),clamped:C(),syncedAt:o(),measurement:m({acquisition:m({days:d().int().nonnegative(),status:j(["ready","error"]),rowCount:d().int().nonnegative(),error:o().optional()}),leads:m({days:d().int().nonnegative(),status:j(["ready","error","not-configured"]),rowCount:d().int().nonnegative(),attributionScope:j(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});m({date:o(),source:o(),medium:o(),trafficClass:wd,landingPage:o(),sessions:d(),users:d(),sourceDimension:Y0});const LR=m({source:o(),sessions:d(),paidSessions:d(),organicSessions:d()}),UR=m({date:o(),sessions:d(),paidSessions:d(),organicSessions:d(),bySource:y(LR)});m({days:y(UR),sources:y(o()),totalSessions:d(),totalPaidSessions:d(),totalOrganicSessions:d()});m({date:o(),source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()});m({date:o(),sessions:d(),organicSessions:d(),users:d(),usersSource:j(["deduplicated","landing-page-sum"])});m({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:d(),overallMentionRate:d(),totalPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),providerBreakdown:Le(o(),m({citedRate:d(),mentionRate:d(),cited:d().int().nonnegative(),mentioned:d().int().nonnegative(),total:d().int().nonnegative()})),createdAt:o(),status:j(["ready","no-data"]),reason:D("no-runs-yet").optional()});const vw=j(["claude","openai","gemini","zai","deepinfra"]),GR=m({id:vw,label:o(),defaultModel:o(),configured:C(),keySource:j(["config","env"]).nullable()});m({providers:y(GR).default([]),defaultProvider:vw.nullable()});const $R=j(["aero","user","compaction"]);$R.enum;const xw=128;m({key:o().min(1).max(xw),value:o().min(1)});m({key:o().min(1).max(xw)});const pr=j(["commoncrawl","bing-webmaster"]);pr.enum;const X0=j(["queued","downloading","querying","ready","failed"]);X0.enum;m({id:o(),release:o(),status:X0,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:d().int().nullable().optional(),edgesBytes:d().int().nullable().optional(),projectsProcessed:d().int().nullable().optional(),domainsDiscovered:d().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const KR=m({linkingDomain:o(),numHosts:d().int(),source:pr}),HR=m({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr,excludedLinkingDomains:d().int().optional(),excludedHosts:d().int().optional()});m({source:pr,summary:HR.nullable(),total:d().int(),rows:y(KR)});m({release:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr});const QR=m({source:pr,connected:C(),hasData:C(),latestRelease:o().nullable(),totalLinkingDomains:d().int(),lastSyncedAt:o().nullable()});m({projectId:o(),targetDomain:o(),sources:y(QR),anyConnected:C(),anyData:C()});m({duckdbInstalled:C(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});m({installed:C(),version:o(),path:o(),alreadyPresent:C()});m({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:d().int().nullable(),edgesBytes:d().int().nullable(),lastModified:o().nullable()});m({release:o(),syncStatus:X0.nullable(),bytes:d().int(),lastUsedAt:o().nullable()});const J0=j(["positive","caution","negative","neutral"]),Yi=m({label:o(),value:o(),delta:o(),tone:J0,description:o(),tooltip:o().optional(),trend:y(d()),progress:d().optional(),providerCoverage:o().optional()}),Tv=m({projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative(),perCompetitor:y(m({domain:o(),mentionSnapshots:d().int().nonnegative(),shareOfCompetitiveTotal:d()})),snapshotsWithAnswerText:d().int().nonnegative(),snapshotsTotal:d().int().nonnegative(),score:d().int().min(0).max(100).nullable()}),FR=Yi.extend({breakdown:Tv,scope:j(["non-brand","pooled"]),branded:Tv}),nh=m({gained:d().int().nonnegative(),lost:d().int().nonnegative(),tone:J0,hasPreviousRun:C(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),ZR=m({hasPreviousRun:C(),comparable:C(),querySetChanged:C(),previousRunAt:o().nullable(),currentQueryCount:d().int().nonnegative(),previousQueryCount:d().int().nonnegative(),comparableQueryCount:d().int().nonnegative(),addedQueryCount:d().int().nonnegative(),removedQueryCount:d().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),YR=m({id:o(),projectId:o(),runId:o().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:m({action:o(),target:o().optional(),reason:o()}).optional(),cause:m({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:C(),createdAt:o()}),XR=m({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:d(),overallMentionRate:d(),totalPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),providerBreakdown:Le(o(),m({citedRate:d(),mentionRate:d(),cited:d().int().nonnegative(),mentioned:d().int().nonnegative(),total:d().int().nonnegative()})),createdAt:o(),status:j(["ready","no-data"]),reason:D("no-runs-yet").optional()});m({project:h8,latestRun:a9,health:XR.nullable(),topInsights:y(YR),queryCounts:m({totalQueries:d().int().nonnegative(),citedQueries:d().int().nonnegative(),notCitedQueries:d().int().nonnegative(),citedRate:d(),mentionedQueries:d().int().nonnegative(),notMentionedQueries:d().int().nonnegative(),mentionRate:d()}),providers:y(m({provider:o(),citedRate:d(),cited:d().int().nonnegative(),total:d().int().nonnegative()})),transitions:m({since:o().nullable(),gained:d().int().nonnegative(),lost:d().int().nonnegative(),emerging:d().int().nonnegative()}),scores:m({mention:Yi,visibility:Yi,mentionShare:FR,gapQueries:Yi,mentionGaps:Yi,indexCoverage:Yi,competitorPressure:Yi,runStatus:Yi}),movementSummary:nh,citationMovement:nh,mentionMovement:nh,movementComparison:ZR,competitors:y(m({id:o(),domain:o(),citationCount:d().int().nonnegative(),totalQueries:d().int().nonnegative(),pressureLabel:j(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(m({provider:o(),model:o().nullable(),score:d(),cited:d().int().nonnegative(),total:d().int().nonnegative(),trend:y(d()).optional()})),attentionItems:y(m({id:o(),tone:J0,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(m({runId:o(),createdAt:o(),citedCount:d().int().nonnegative(),totalCount:d().int().nonnegative(),citationRate:d(),mentionedCount:d().int().nonnegative(),mentionRate:d(),status:o()})),suggestedQueries:m({rows:y(m({query:o(),impressions:d(),clicks:d(),avgPosition:d(),reason:o()})),totalCandidates:d().int().nonnegative(),skippedAlreadyTracked:d().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});j(["snapshot","insight"]);const JR=m({kind:D("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:fi,matchedField:j(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),WR=m({kind:D("insight"),id:o(),runId:o().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:j(["title","query","recommendation","cause"]),snippet:o(),dismissed:C(),createdAt:o()}),eD=qe("kind",[JR,WR]);m({query:o(),totalHits:d().int().nonnegative(),truncated:C(),hits:y(eD)});const kw=j(["create","expand","refresh","add-schema"]);kw.enum;function GH(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const ww=j(["gsc","competitor-evidence","both"]);ww.enum;const Sw=j(["high","medium","low"]);Sw.enum;const tD=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);tD.enum;const jw=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jw.enum;const W0=j(["ownable","ceded"]);W0.enum;const nD=m({url:o(),gscImpressions:d().nonnegative(),gscClicks:d().nonnegative(),gscAvgPosition:d().nonnegative().nullable(),organicSessions:d().nonnegative()}),aD=m({domain:o(),url:o(),title:o(),citationCount:d().int().nonnegative()}),iD=m({demand:d(),competitor:d(),absence:d(),gapSeverity:d()}),sD=m({actionId:o(),state:jw,lastUpdated:o()}),Aw=m({targetRef:o(),query:o(),action:kw,ourBestPage:nD.nullable(),winningCompetitor:aD.nullable(),score:d(),scoreBreakdown:iD,drivers:y(o()),demandSource:ww,actionConfidence:Sw,existingAction:sD.nullable(),winnabilityClass:W0,winnability:d().min(0).max(1).nullable()});m({targets:y(Aw),contextMetrics:m({totalAiReferralSessions:d().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const oD=m({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});m({dismissals:y(oD)});m({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});m({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:d().int().nonnegative(),generatedAt:o()});m({provider:o().optional(),model:o().optional(),forceRefresh:C().optional()});const rD=m({targetQuery:o().trim().min(1),winnabilityClass:W0,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});m({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:rD,costMillicents:d().int().nonnegative(),generatedAt:o()});const lD=m({domain:o(),competitorType:vd,hits:d().int().nonnegative(),updatedAt:o()});m({classifications:y(lD)});const cD=m({uri:o(),title:o(),domain:o(),isOurDomain:C(),isCompetitor:C(),citationCount:d().int().nonnegative(),providers:y(ht)}),Cw=m({query:o(),groundingSources:y(cD)});m({sources:y(Cw),latestRunId:o()});const Nw=m({query:o(),competitorDomains:y(o()),competitorCount:d().int().nonnegative(),missRate:d().min(0).max(1),lastSeenInRunId:o()});m({gaps:y(Nw),latestRunId:o()});const _w=j(["ok","warn","fail","skipped"]);_w.enum;const ef=j(["global","project"]);ef.enum;const zw=j(["auth","config","providers","integrations","database","schedules","agent"]);zw.enum;const uD=m({id:o(),category:zw,scope:ef,title:o(),status:_w,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Le(o(),qn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:d().int().nonnegative().describe("How long the check took to execute.")});m({scope:ef,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:d().int().nonnegative(),summary:m({total:d().int().nonnegative(),ok:d().int().nonnegative(),warn:d().int().nonnegative(),fail:d().int().nonnegative(),skipped:d().int().nonnegative()}),checks:y(uD)});function dD(e){return e.trim().toLowerCase()}const mD=m({provider:o(),citationState:fi,cited:C(),mentioned:C(),runId:o(),runCreatedAt:o()}),pD=m({queryId:o(),query:o(),providers:y(mD),citedCount:d().int().nonnegative(),mentionedCount:d().int().nonnegative(),totalProviders:d().int().nonnegative()}),hD=m({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),fD=m({providersConfigured:d().int().nonnegative(),providersCiting:d().int().nonnegative(),providersMentioning:d().int().nonnegative(),totalQueries:d().int().nonnegative(),queriesCitedAndMentioned:d().int().nonnegative(),queriesCitedOnly:d().int().nonnegative(),queriesMentionedOnly:d().int().nonnegative(),queriesInvisible:d().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});m({summary:fD,byQuery:y(pD),competitorGaps:y(hD),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const gD=m({selection:pk,historyWindow:m({from:o().datetime(),to:o().datetime()}).optional(),populations:y(mk.pick({queryClass:!0,summary:!0,trend:!0}))}),on={title:"AI visibility",description:"Each answer is counted once for its assigned properties. Branded and non-brand queries are measured separately.",simpleDescription:"Each saved answer is counted once. Branded and non-brand queries are measured separately.",queryType:"Query type",queries:"Queries measured",answers:"Answers measured",mentioned:"Mentioned",cited:"Cited",history:"Measurement history",latestMeasurement:"Latest measurement",allLocations:"All measured locations",noLocation:"No provider location",location:"Location",previousOutsideWindow:"Previous measurement outside this period",date:"Date",comparison:"Comparison",notMeasured:"Not measured",incomplete:"Evidence incomplete",ambiguous:"Property identity unverified",noPopulation:"No measured answers",notApplicable:"Not applicable",comparable:"Comparable",baseline:"Baseline",changed:"Measurement changed",unknownHistory:"Comparison unavailable"};function $H(e){return{branded:"Branded","non-brand":"Non-brand",unknown:"Unclassified"}[e]}function KH(e){return e.rate===null?on.notMeasured:`${Number((e.rate*100).toFixed(1))}%`}function HH(e){if(e.numerator!==null&&e.denominator!==null)return`${e.numerator} of ${e.denominator} answers`;switch(e.reason){case"no-population":return on.noPopulation;case"not-applicable":return on.notApplicable;case"identity-ambiguous":return on.ambiguous;default:return on.incomplete}}function QH(e,a=!1){const s=e==="first"?on.baseline:e==="comparable"?on.comparable:e==="legacy-unknown"?on.unknownHistory:on.changed;return a?`${s} · ${on.previousOutsideWindow}`:s}function FH(e){const a=e.selection.measurement.completedAt?.slice(0,10)??on.notMeasured;return`${on.latestMeasurement}: ${a}`}function ZH(e){const a=e.historyWindow;return a===void 0?on.history:`${on.history} (${a.from.slice(0,10)} – ${a.to.slice(0,10)})`}function YH(e){const a=e.selection.location;return a.kind==="all"?on.allLocations:a.kind==="none"?on.noLocation:`${on.location}: ${a.value}`}const XH=[7,14,30,90],JH=30;Qe([D(7),D(14),D(30),D(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const yD=j(["prompt","request-param","browser-geo","ignored"]),bD=m({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),vD=m({provider:o(),treatment:yD,description:o()}),xD=m({generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:bD.nullable(),providerLocationHandling:y(vD),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:d().int().positive()}),kD=m({visibilityBasis:j(["legacy-project-queries","frozen-populations"]).optional(),citationRate:d().nullable(),citedQueryCount:d().nullable(),totalQueryCount:d().nullable(),mentionRate:d().nullable(),mentionedQueryCount:d().nullable(),trend:j(["up","down","flat","unknown"]),queryCount:d(),competitorCount:d(),providerCount:d(),gsc:m({clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),periodStart:o(),periodEnd:o()}).nullable(),ga:m({sessions:d(),users:d(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(m({title:o(),detail:o(),tone:j(["positive","caution","negative","neutral"])}))}),wD=m({citationState:j(["cited","not-cited","pending"]),answerMentioned:C().nullable(),model:o().nullable()}),SD=m({queries:y(o()),providers:y(o()),matrix:y(y(wD.nullable())),providerRates:y(m({provider:o(),citedCount:d(),mentionedCount:d(),totalCount:d(),citationRate:d(),mentionRate:d()}))}),jD=m({domain:o(),citationCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:d(),theirCitedPages:y(m({url:o(),citedFor:y(o())}))}),AD=m({projectCitationCount:d(),competitors:y(jD)}),CD=m({domain:o(),mentionCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:d().nullable()}),ah=m({shareOfVoice:bw.optional(),projectMentionCount:d(),totalAnswerSnapshots:d(),competitors:y(CD)}),ND=ah.extend({scope:j(["non-brand","pooled"]),nonBrand:ah,branded:ah}),_D=m({category:o(),label:o(),count:d(),sharePct:d()}),zD=m({categories:y(_D),topDomains:y(m({domain:o(),count:d(),isCompetitor:C()}))}),ED=m({query:o(),clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),category:j(["brand","lead-gen","industry","other"])}),TD=m({periodStart:o(),periodEnd:o(),totalClicks:d(),totalImpressions:d(),ctr:d(),avgPosition:d(),topQueries:y(ED),categoryBreakdown:y(m({category:j(["brand","lead-gen","industry","other"]),clicks:d(),impressions:d(),sharePct:d()})),trend:y(m({date:o(),clicks:d(),impressions:d()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),RD=m({totalSessions:d(),totalUsers:d(),totalOrganicSessions:d(),periodStart:o(),periodEnd:o(),topLandingPages:y(m({page:o(),sessions:d(),users:d().optional(),organicSessions:d()})),channelBreakdown:y(m({channel:o(),sessions:d(),sharePct:d()}))}),DD=m({totalSessions:d(),organicSessions:d(),paidSessions:d(),channels:y(m({channelGroup:o(),sessions:d(),sharePct:d()})),topCampaigns:y(m({source:o(),medium:o(),sessions:d()}))}),OD=m({totalSessions:d(),paidSessions:d(),organicSessions:d(),totalUsers:d().optional(),paidUsers:d().optional(),organicUsers:d().optional(),bySource:y(m({source:o(),sessions:d(),users:d().optional(),paidSessions:d(),organicSessions:d(),sharePct:d()})),trend:y(m({date:o(),sessions:d()})),topLandingPages:y(m({page:o(),sessions:d(),users:d().optional()}))}),qD=m({windowStart:o(),windowEnd:o(),hasData:C(),verifiedCrawlerHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),unverifiedCrawlerHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),aiUserFetchHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),referralArrivals:m({current:d(),prior:d(),deltaPct:d().nullable()}),referralRedirects:d().int().nonnegative(),referralArrivalsByClass:m({paid:m({current:d(),prior:d(),deltaPct:d().nullable()}),organic:m({current:d(),prior:d(),deltaPct:d().nullable()}),unclassified:m({current:d(),prior:d(),deltaPct:d().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(m({operator:o(),verifiedHits:d(),unverifiedHits:d(),userFetchHits:d(),referralArrivals:d(),deltaPct:d().nullable()})),topCrawledPaths:y(m({path:o(),verifiedHits:d(),unverifiedHits:d().default(0),distinctOperators:d()})),referralProducts:y(m({product:o(),arrivals:d(),distinctLandingPaths:d()})),dailyTrend:y(m({date:o(),verifiedCrawlerHits:d(),unverifiedCrawlerHits:d().default(0),userFetchHits:d(),referralArrivals:d()})),topReferralLandingPaths:y(m({path:o(),arrivals:d(),distinctProducts:d()}))}),BD=m({provider:j(["google","bing"]).nullable(),total:d(),indexed:d(),notIndexed:d(),deindexed:d(),unknown:d(),indexedPct:d()}),PD=m({runId:o(),date:o(),citationRate:d(),citedQueryCount:d(),totalQueryCount:d(),mentionRate:d(),mentionedQueryCount:d(),providerRates:y(m({provider:o(),citationRate:d(),mentionRate:d()}))}),Oh=m({id:o(),type:j(["regression","gain","opportunity"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:d()}),MD=m({horizon:j(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),Lo=m({current:d(),prior:d(),deltaAbs:d(),deltaPct:d().nullable(),direction:j(["up","down","flat"]),window:d().optional()}),ID=m({provider:o(),current:d(),prior:d(),deltaAbs:d(),direction:j(["up","down","flat"])}),VD=m({enoughHistory:C(),headline:o(),citationRate:Lo.nullable(),mentionRate:Lo.nullable(),citedQueryCount:Lo.nullable(),mentionedQueryCount:Lo.nullable(),gscClicksDelta:Lo.nullable(),aiReferralsDelta:Lo.nullable(),comparisonWindowDays:d().int().positive(),providerMovements:y(ID),wins:y(Oh),regressions:y(Oh)});j(["agency","client"]);const LD=j(["agency","client","both"]),UD=j(["immediate","short-term","medium-term"]),GD=j(["high","medium","low"]);j(["positive","caution","negative","neutral"]);const $D=j(["content","competitors","provider","search-demand","indexing","location","monitoring"]),tf=m({audience:LD,priority:d(),horizon:UD,category:$D,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:GD,targetRef:o().optional()}),KD=m({headline:o(),overview:o(),actionItems:y(tf),confidenceNotes:y(o())}),HD=m({title:o(),detail:o(),severity:j(["positive","caution","negative","neutral"]),evidence:y(o())}),QD=m({priorities:y(tf),diagnostics:y(HD)});function WH(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function eQ(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function tQ(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function nQ(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function aQ(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}m({visibility:gD.optional(),meta:xD,executiveSummary:kD,citationScorecard:SD,competitorLandscape:AD,mentionLandscape:ND,aiSourceOrigin:zD,gsc:TD.nullable(),ga:RD.nullable(),socialReferrals:DD.nullable(),aiReferrals:OD.nullable(),serverActivity:qD.nullable(),indexingHealth:BD.nullable(),citationsTrend:y(PD),whatsChanged:VD,insights:y(Oh),recommendedNextSteps:y(MD),actionPlan:y(tf),clientSummary:KD,agencyDiagnostics:QD,contentOpportunities:y(Aw),contentGaps:y(Nw),groundingSources:y(Cw)});const FD=Qe([D(60),D(90)]),ZD=j(["earliest","middle","prior","latest"]),Uo=m({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),Ew=m({name:ZD,startDate:o(),endDate:o()}),YD=Ew.extend({totals:Uo}),XD=Ew.extend({organicSessions:d().int().nonnegative()}),ih=m({startDate:o(),endDate:o(),observedDays:d().int().nonnegative()}),wu=m({verified:d().int().nonnegative(),claimedUnverified:d().int().nonnegative(),unknownAiLike:d().int().nonnegative()}),Rv=m({total:d().int().nonnegative(),paid:d().int().nonnegative(),organic:d().int().nonnegative(),unknown:d().int().nonnegative()});m({contractVersion:D("organic-evidence/v1"),periodDays:FD,asOfDate:o().nullable(),coverage:m({gsc:C(),ga4:C(),server:C(),visibility:C()}),sourceCoverage:m({gsc:ih.nullable(),ga4:ih.nullable(),server:ih.nullable(),visibility:m({completedAt:o(),ageDays:d().nonnegative()}).nullable()}),gsc:m({propertyTotals:Uo,namedBrand:Uo,namedNonBrand:Uo,suppressedOrUnreportedResidual:Uo,cohorts:y(YD)}).nullable(),ga4:m({organicSessions:d().int().nonnegative(),cohorts:y(XD)}).nullable(),gaAiReferrals:m({paidSessions:d().int().nonnegative(),organicSessions:d().int().nonnegative()}).nullable(),server:m({crawlerHits:wu,userFetchHits:wu,referralSessions:Rv}).nullable(),visibility:m({runId:o(),completedAt:o(),ageDays:d().nonnegative(),answerPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative()}).nullable(),measurement:k_,pages:y(m({path:o(),gsc:Uo,ga4OrganicSessions:d().int().nonnegative(),server:m({crawlerHits:wu,userFetchHits:wu,referralSessions:Rv})})),findings:y(m({tone:j(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(m({code:o(),detail:o()}))});const JD=j(["claude","codex"]);JD.enum;const WD=j(["claude","codex","all"]);WD.enum;const Tw=m({content:d().int().nonnegative(),sitemap:d().int().nonnegative(),robots:d().int().nonnegative(),asset:d().int().nonnegative(),other:d().int().nonnegative()}),eO=j(["content","sitemap","robots","asset","other"]),nf=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);nf.enum;const tO=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);tO.enum;const nO=j(["raw-request","aggregate-bucket"]),aO=nO.enum,iO=j(["observed","provider-aggregated","inferred"]),sO=iO.enum,oO=m({type:o().nullable(),labels:Le(o(),o())}),rO=m({sourceType:nf,evidenceKind:D(aO["raw-request"]),confidence:D(sO.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:d().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:d().nullable(),requestSizeBytes:d().int().nullable(),responseSizeBytes:d().int().nullable(),providerResource:oO,providerLabels:Le(o(),o())});m({events:y(rO),rawEntryCount:d().int().nonnegative(),skippedEntryCount:d().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Rw=j(["connected","paused","error","archived"]),iQ=Rw.enum,Dw=j(["oauth","service-account"]);Dw.enum;const lO=j(["verified","claimed_unverified","unknown_ai_like"]),sQ=lO.enum,cO=m({id:o().min(1),source:o().min(1),version:o().min(1)}),Ow=m({manifestId:o().min(1),manifest:cO.nullable(),hits:d().int().nonnegative()});m({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Dw});m({baseUrl:o().url(),username:o().min(1)});const af=j(["production","preview"]);af.enum;m({projectId:o().min(1),teamId:o().min(1),environment:af});const qw=m({id:o(),projectId:o(),sourceType:nf,displayName:o(),status:Rw,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:d().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Le(o(),qn()),createdAt:o(),updatedAt:o()});m({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});m({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});m({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:af.optional(),displayName:o().min(1).optional()});const uO=j(["direct-push","queue-pull"]),hr=uO.enum,sf=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),Bw=m({schemaVersion:D(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),dO=Bw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().nullable()}),mO=Bw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600)});function Pw(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}r0(Pw,qe("deliveryMode",[dO,mO]));const Mw=m({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),pO=Mw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().min(1).optional()}),hO=Mw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600),apiToken:o().min(1)});r0(Pw,qe("deliveryMode",[pO,hO]));const Iw=m({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),fO=Iw.extend({deliveryMode:D(hr["direct-push"]),activationRequired:C().default(!1)}),gO=Iw.extend({deliveryMode:D(hr["queue-pull"]),activationRequired:C().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600)});qe("deliveryMode",[fO,gO]);const yO=m({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:d().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:m({verifiedBot:C().nullable(),botScore:d().int().nullable(),country:o().nullable(),asn:d().int().nullable(),asOrganization:o().nullable()}).nullable()});m({schemaVersion:D(1),workerVersion:o().min(1),events:y(yO).min(1).max(100)});m({acceptedEvents:d().int(),droppedEvents:d().int(),workerVersionAck:o(),crawlerBucketRows:d().int(),aiUserFetchBucketRows:d().int(),aiReferralBucketRows:d().int(),sampleRows:d().int()});m({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:d().int().nonnegative(),selfTrafficExcluded:d().int().nonnegative(),crawlerHits:d().int().nonnegative(),aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),unknownHits:d().int().nonnegative(),crawlerBucketRows:d().int().nonnegative(),aiUserFetchBucketRows:d().int().nonnegative(),aiReferralBucketRows:d().int().nonnegative(),sampleRows:d().int().nonnegative(),remainingBacklogCount:d().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});m({days:d().int().positive().optional()});m({advanceToNow:D(!0)});m({sourceId:o(),runId:o(),status:pa,windowStart:o(),windowEnd:o(),daysRequested:d().int().positive(),daysApplied:d().int().positive()});const bO=m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:Tw,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),sampleCount:d().int().nonnegative()});m({sources:y(qw)});const vO=qw.extend({totals24h:bO,latestRun:m({runId:o(),status:pa,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});m({sources:y(vO)});const xO=j(["crawler","ai-user-fetch","ai-referral"]),of=xO.enum,Vw=j(["hour","day"]);Vw.enum;const kO=m({bucket:o(),crawlerHits:d().int().nonnegative(),aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),measured:C()}),wO=m({kind:D(of.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ow).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),pathClass:eO,status:d().int(),hits:d().int().nonnegative()}),SO=m({kind:D(of["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ow).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),status:d().int(),hits:d().int().nonnegative()}),jO=m({kind:D(of["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:d().int(),hits:d().int().nonnegative(),paidHits:d().int().nonnegative(),organicHits:d().int().nonnegative(),unknownHits:d().int().nonnegative()}),AO=qe("kind",[wO,SO,jO]);m({windowStart:o(),windowEnd:o(),series:m({granularity:Vw,points:y(kO),coverageStart:o().nullable(),trends:m({crawlerContentHits:Ls.nullable(),aiUserFetchHits:Ls.nullable(),aiReferralLandedHits:Ls.nullable()})}),totals:m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:Tw,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),aiReferralPaidHits:d().int().nonnegative(),aiReferralOrganicHits:d().int().nonnegative(),aiReferralUnknownHits:d().int().nonnegative()}),eventRows:m({total:d().int().nonnegative(),returned:d().int().nonnegative(),truncated:C()}),events:y(AO)});const rf=j(["admin","viewer"]),CO=/^[a-z\d][\w.-]{0,63}$/i,NO=o().regex(CO,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Dv=12,_O=o().min(Dv,`A password must be at least ${Dv} characters.`),Lw=m({id:o(),name:o(),role:rf,createdAt:o(),lastLoginAt:o().nullable()});m({users:y(Lw)});m({name:NO,password:_O,role:rf});m({name:o().min(1),password:o().min(1)});m({authRequired:C(),user:Lw.pick({name:!0,role:!0}).nullable()});const Uw=j(["queued","running","completed","partial","failed"]),oQ=Uw.enum,Gw=j(["queued","running","completed","failed"]),rQ=Gw.enum,zO=20,EO=20,qh=50,$w=m({kind:j(["market","property"]),key:me,expectedPlanRevision:d().int().positive().optional()}).strict(),TO=m({kind:j(["market","property"]),key:me,label:o().trim().min(1),planRevision:d().int().positive()}).strict(),Kw=o().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function lQ(e){const a=new Set;return e.filter(s=>{const r=dD(s);return!r||a.has(r)?!1:(a.add(r),!0)})}function RO(e,a){const s=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return a?{...s,location:a.label}:s}function cQ(e,a,s){const r=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(k=>k[1]),f=[...new Set(u.filter(k=>!r.has(k)))];if(f.length)throw Eb("The selected research template contains undeclared placeholders: "+f.join(", "));const g=RO(a,s),b=e.variables.filter(k=>g[k]===void 0);if(b.length)throw Eb("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(k=>[k,g[k]]));return{bindings:v,output:O7(e.pattern,v)}}const Hw=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),bindingLocation:Yt.nullable().optional()}).strict();m({queries:y(Kw).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:Yt.nullable().optional(),scope:$w.optional(),template:Hw.optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,a)=>{e.model&&!e.provider&&a.addIssue({code:Se.custom,path:["provider"],message:"provider is required when model is supplied"})});const DO=$w.extend({expectedPlanRevision:d().int().positive()}).strict(),OO=m({queries:y(Kw).min(1).max(qh),provider:o().trim().min(1),model:o().trim().min(1).max(200),location:Yt.nullable(),scope:DO.optional(),template:Hw.optional()}).strict();m({idempotencyKey:o().trim().min(1).max(128),runs:y(OO).min(1).max(EO)}).strict().superRefine((e,a)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>qh&&a.addIssue({code:Se.custom,path:["runs"],message:`A research batch may contain at most ${qh} concrete queries across all destinations`})});const qO=m({kind:j(["api-key","user"]),id:o(),name:o(),role:rf.nullable(),limited:C().optional()}),Qw=m({id:o(),projectId:o(),status:Uw,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:Yt.nullable(),scope:TO.nullable().optional(),template:fk.nullable().optional(),totalQueries:d().int(),completedQueries:d().int(),failedQueries:d().int(),error:o().nullable(),initiatedBy:qO.nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),BO=m({id:o(),position:d().int(),query:o(),queryClass:rr.nullable().optional(),status:Gw,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(fd),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:C().nullable(),citationState:fi.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),PO=Qw.extend({queries:y(BO)});m({runs:y(PO)});const MO=m({name:o(),displayName:o(),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o()}))});m({runs:y(Qw),nextCursor:o().nullable().optional(),providers:y(MO).optional(),access:m({canRun:C(),dailyRunLimit:d().int().positive().nullable()}).optional()});m({apiKey:o().min(1)});m({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});m({q:o().trim().min(1).max(200),limit:d().int().min(1).max(100).default(20)});const IO=m({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});m({count:d().int().nonnegative(),query:o(),results:y(IO)});const VO=m({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});m({pixels:y(VO)});const LO=m({id:o(),name:o().optional()}),UO=m({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:d().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(LO).optional(),archived:C().optional(),version:d().int().nonnegative().optional()});m({eventSettings:y(UO)});m({connected:C(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:C().optional()});m({disconnected:C()});m({runId:o(),status:o()});const GO=m({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),Ll=j(["impressions","clicks"]);Ll.enum;const Ul=j(["impression","click"]);Ul.enum;const $O=m({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:GO.nullable().optional(),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),KO=m({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Qe([Ul,ce()]).optional(),maxBidMicros:d().int().nullable().optional(),contextHints:y(o()).default([]),ads:y($O).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),HO=m({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:d().int().nullable().optional(),endTime:d().int().nullable().optional(),biddingType:Qe([Ll,ce()]).optional(),dailySpendLimitMicros:d().int().nullable().optional(),lifetimeSpendLimitMicros:d().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(KO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()});m({campaigns:y(HO)});const Fw=j(["campaign","ad_group"]);Fw.enum;const QO=m({level:Fw,entityId:o(),date:o(),impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int(),ctr:d().nullable(),cpcMicros:d().int().nullable(),inProgress:C()});m({rows:y(QO),currencyCode:o().nullable().optional()});const Zw=m({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Yw=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int(),ctr:d().nullable(),cpcMicros:d().int().nullable()});m({connected:C(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:d().int(),adGroupCount:d().int(),adCount:d().int(),window:Zw,totals:Yw});const Xw=j(["unavailable","partial","complete"]);Xw.enum;const Jw=j(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Jw.enum;const Ww=j(["unavailable","reported"]);Ww.enum;const FO={storedSnapshot:"stored_ads_snapshot"},eS=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);eS.enum;const ZO=m({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),YO=m({id:o(),name:o(),status:o(),billingEventType:Qe([Ul,ce()]),maxBidMicros:d().int().nullable(),contextHints:y(o()),ads:y(ZO)}),XO=m({id:o(),name:o(),status:o(),biddingType:Qe([Ll,ce()]),dailySpendLimitMicros:d().int().nullable(),lifetimeSpendLimitMicros:d().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(YO)});m({snapshot:m({status:Xw,issue:Qe([Jw,ce()]),lastSyncedAt:o().nullable(),campaignCount:d().int().nonnegative(),adGroupCount:d().int().nonnegative(),adCount:d().int().nonnegative(),sourceSync:m({runId:o(),status:pa}).nullable()}),historicalCampaignRollups:m({status:Ww,window:Zw,totals:Yw.nullable()}),storedConfiguration:m({basis:D(FO.storedSnapshot),connection:m({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:C()}).nullable(),campaigns:y(XO)}),assessment:m({state:eS})});const $a=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),At=o().min(1).max(200),Fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),er=d().int().min(946684800).max(4102444800),tr=d().int().positive().max(Number.MAX_SAFE_INTEGER),lf=o().regex(/^[a-f0-9]{64}$/),tS=y(At).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),nS=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),aS=j(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);aS.enum;const iS=j(["pending","reconciling","succeeded","failed","unknown"]),Fo=iS.enum,sS=j(["known_entity","create_fingerprint","manual_only"]);sS.enum;const oS=j([Fo.pending,Fo.unknown,Fo.reconciling]);oS.enum;const rS=j(["active","paused","archived"]);rS.enum;const lS=j(["file","campaign","ad_group","ad"]);lS.enum;const cS=j(["campaign","ad_group","ad"]);cS.enum;const cf=m({id:At,expectedUpdatedAt:d().int().nonnegative()}).strict(),JO=cf,$u=1e3;function WO(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const eq=cf.extend({ads:y(JO).min(1).max($u-1)}).strict(),tq=cf.extend({adGroups:y(eq).min(1).max($u-1)}).strict();function nq(e,a){return e<a?-1:e>a?1:0}function Ov(e,a,s){for(let r=1;r<e.length;r+=1)if(nq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:a,message:"Activation manifest entities must be uniquely sorted by id"});return}}const uS=m({campaign:tq}).strict().superRefine((e,a)=>{WO(e)>$u&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${$u} entities`}),Ov(e.campaign.adGroups,["campaign","adGroups"],a);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Ov(f.ads,["campaign","adGroups",u,"ads"],a);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&a.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),dS=lf,aq=j(["approved","executing","consumed","revoked","expired","unknown"]),hi=aq.enum,iq=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),os=iq.enum,sq=m({name:Fs.optional(),description:o().max(4e3).nullable().optional(),status:rS.optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).max(100).optional(),biddingType:Ll.optional(),conversionEventSettingIds:tS.optional(),campaignId:At.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:tr.max(1e8).optional(),billingEventType:Ul.optional(),adGroupId:At.optional(),creativeFingerprint:lf.optional()}).strict();m({operationKey:$a,imageUrl:nS});m({operationKey:$a,name:Fs,description:o().max(4e3).optional(),startTime:er.optional(),endTime:er.optional(),lifetimeSpendLimitMicros:tr.min(1e6),locationIds:y(At).min(1).max(100),biddingType:Ll.optional(),conversionEventSettingIds:tS.optional()}).superRefine((e,a)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&a.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"})});m({operationKey:$a,campaignId:At,name:Fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:tr.max(1e8),billingEventType:Ul.optional()});const mS=m({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:nS,fileId:At});m({operationKey:$a,adGroupId:At,name:Fs,creative:mS});function uf(e){return Object.keys(e).some(a=>a!=="operationKey"&&a!=="expectedUpdatedAt")}m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),description:o().max(4e3).nullable().optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).min(1).max(100).optional()}).refine(uf,{message:"At least one campaign field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:tr.max(1e8).optional()}).refine(uf,{message:"At least one ad group field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),creative:mS.optional()}).refine(uf,{message:"At least one ad field must be updated"});m({operationKey:$a});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative()});const Sd=m({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:aS,state:iS,entityType:Qe([lS,ce()]),entityId:o().nullable(),upstreamUpdatedAt:d().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Qe([sS,ce()]),reconcileParentId:At.nullable(),reconcileFingerprint:lf.nullable(),reconcileFields:sq.nullable(),reconcileAttempts:d().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});m({operation:Sd,replayed:C()});const xt=b2({offset:!0}),fr={id:At,projectId:At,adAccountId:At,manifestHash:dS,manifest:uS,executorApiKeyId:At,approverApiKeyId:At,expiresAt:xt,approvedAt:xt,createdAt:xt,updatedAt:xt,revocationRequestedAt:xt.nullable()},oq=m({...fr,state:D(hi.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),rq=m({...fr,state:D(hi.executing),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),lq=m({...fr,state:D(hi.consumed),operationId:At,executionStartedAt:xt,consumedAt:xt,revokedAt:ce(),expiredAt:ce()}).strict(),cq=m({...fr,state:D(hi.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:xt,expiredAt:ce()}).strict(),uq=m({...fr,state:D(hi.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:xt}).strict(),dq=m({...fr,state:D(hi.unknown),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),pS=qe("state",[oq,rq,lq,cq,uq,dq]).superRefine((e,a)=>{e.executorApiKeyId===e.approverApiKeyId&&a.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==hi.executing&&e.state!==hi.unknown&&e.state!==hi.consumed&&a.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),rs={id:At,operationId:At,ordinal:d().int().nonnegative(),entityType:cS,entityId:At,expectedUpdatedAt:d().int().nonnegative(),createdAt:xt,updatedAt:xt},Gl={errorCode:ce(),errorMessage:ce()},df={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},mq=m({...rs,...Gl,state:D(os.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),pq=m({...rs,...Gl,state:D(os.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:xt,finishedAt:ce()}).strict(),hq=m({...rs,...Gl,state:D(os.active),providerUpdatedAt:d().int().nonnegative(),remediation:ce(),startedAt:xt,finishedAt:xt}).strict(),fq=m({...rs,...df,state:D(os.failed),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),gq=m({...rs,...Gl,state:D(os.rollback_executing),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:ce()}).strict(),yq=m({...rs,...Gl,state:D(os.rolled_back),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:xt}).strict(),bq=m({...rs,...df,state:D(os.rollback_failed),providerUpdatedAt:d().int().nonnegative(),startedAt:xt,finishedAt:xt}).strict(),vq=m({...rs,...df,state:D(os.unknown),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),xq=qe("state",[mq,pq,hq,fq,gq,yq,bq,vq]),Bh={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},kq=j([Bh.exact,Bh.refreshSemanticallyUnchanged]);m({manifest:uS,executorApiKeyId:At,expiresAt:xt,versionPolicy:kq.default(Bh.exact)}).strict();m({grant:pS}).strict();m({}).strict();m({operationKey:$a,grantId:At,manifestHash:dS}).strict();m({grant:pS,operation:Sd,steps:y(xq)}).strict();const wq=[Fo.pending,Fo.unknown,Fo.reconciling];function Sq(e){if(e===void 0||e==="")return wq;if(Array.isArray(e)){const a=[];for(const s of e)typeof s=="string"?a.push(...s.split(",")):a.push(s);return a}return typeof e=="string"?e.split(",").filter(Boolean):e}m({state:r0(Sq,y(oS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:l0().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});m({operations:y(Sd),count:d().int().nonnegative(),nextCursor:o().nullable()});m({}).strict();m({operation:Sd,resolved:C()});m({campaignId:o().min(1).max(200).optional(),lookbackDays:l0().int().min(1).max(30).default(7)});const hS=j(["campaign","ad_group","ad"]);hS.enum;const fS=j(["both","live-only","stored-only"]);fS.enum;const jq=D("live-provider-read"),Aq=m({date:o().nullable(),startTime:d().nullable(),endTime:d().nullable(),impressions:d().nullable(),clicks:d().nullable(),spend:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),cpc:d().nullable(),cpm:d().nullable()}),qv=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int()}),Cq=m({date:o(),live:qv.nullable(),stored:qv.nullable(),drifted:C()}),Nq=m({field:o(),live:o().nullable(),stored:o().nullable()}),_q=m({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:d().nullable()}),zq=m({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:d().nullable(),syncedAt:o()}),Eq=m({entityType:hS,id:o(),parentId:o().nullable(),presence:fS,live:_q.nullable(),stored:zq.nullable(),fieldDeltas:y(Nq),liveMetrics:y(Aq).nullable(),metricDeltas:y(Cq).nullable(),drifted:C()}),Tq=m({surface:o(),entityId:o().nullable(),upstreamStatus:d().int().nullable()});m({basis:jq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:m({lookbackDays:d().int().positive()}),bounds:m({maxCampaigns:d().int().positive(),maxAdGroupsPerCampaign:d().int().positive(),maxAdsPerAdGroup:d().int().positive(),maxReaderCalls:d().int().positive(),readerCalls:d().int().nonnegative(),maxPagesPerReaderCall:d().int().positive(),maxUpstreamHttpRequests:d().int().positive(),truncated:C()}),entities:y(Eq),drift:m({entitiesCompared:d().int().nonnegative(),driftedEntities:d().int().nonnegative(),statusDrifted:d().int().nonnegative(),metricsDrifted:d().int().nonnegative()}),errors:y(Tq)});const Rq=m({status:j(["available","unavailable","not-supported"])}),Bv="*",Dq=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),Oq=j(["server","local"]);m({enabled:C(),configuredEnabled:C(),reason:Dq,anonymousId:o().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:Oq.optional()}).strict();const st=1,sh=j(["system","project","queries","competitors","run"]),oh=j(["0","1","2-3","4-5","6-10","11+"]);function La(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Pv=j(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","rate_limited","provider_auth","network","unknown"]),qq=j(["wizard","platform","site_health"]),Su=m({eventId:o().uuid(),flowVersion:D(st),onboardingSessionId:o().uuid(),surface:qq.optional()});qe("event",[Su.extend({event:D("onboarding.started"),step:sh,resumed:C()}).strict(),Su.extend({event:D("onboarding.step_completed"),step:sh,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:oh.optional()}).strict(),Su.extend({event:D("onboarding.blocked"),step:sh,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Pv}).strict(),Su.extend({event:D("run.requested"),origin:D("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:oh,queryCountBucket:oh,reasonCode:Pv.optional()}).strict()]);m({accepted:C()});j(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const Bq=4;function Pq(e){return e.length<Bq}const gS=j(["trace","debug","info","warn","error","fatal"]),Mq=m({runId:o().min(1).max(256).optional(),projectId:o().min(1).max(256).optional(),requestId:o().min(1).max(256).optional(),actor:o().min(1).max(512).optional(),credentialId:o().min(1).max(512).optional(),userAgent:o().min(1).max(512).optional(),actorSession:o().min(1).max(512).optional(),method:o().min(1).max(16).optional(),route:o().min(1).max(256).optional(),operationId:o().min(1).max(256).optional(),jobId:o().min(1).max(256).optional(),taskId:o().min(1).max(256).optional(),traceId:o().min(1).max(256).optional(),errorCode:o().min(1).max(128).optional(),attempt:d().finite().optional(),count:d().finite().optional(),total:d().finite().optional(),progress:d().finite().optional(),httpStatus:d().finite().optional(),statusCode:d().finite().optional(),durationMs:d().finite().optional(),bytes:d().finite().optional(),retryAfterMs:d().finite().optional(),retriable:C().optional(),retrying:C().optional(),cancelled:C().optional(),success:C().optional()}).strict(),Iq=m({cursor:o().min(1).max(512),ts:o().datetime(),level:gS,module:o().min(1).max(256),action:o().min(1).max(256),message:o().max(4096).optional(),runId:o().min(1).max(256).optional(),projectId:o().min(1).max(256).optional(),context:Mq}).strict();m({level:gS.optional(),module:o().trim().min(1).max(256).optional(),runId:o().trim().min(1).max(256).optional(),projectId:o().trim().min(1).max(256).optional(),actor:o().trim().min(1).max(512).optional(),requestId:o().trim().min(1).max(256).optional(),since:o().datetime().optional(),until:o().datetime().optional(),limit:l0().int().min(1).max(200).default(100),cursor:o().trim().min(1).max(512).optional()}).strict().superRefine((e,a)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&a.addIssue({code:Se.custom,path:["until"],message:'"until" must be on or after "since".'})});m({entries:y(Iq),nextCursor:o().min(1).max(512).nullable(),truncated:d().int().nonnegative(),dropped:d().int().nonnegative(),retention:j(["process","durable"]),retentionPolicy:m({maxEntries:d().int().positive(),maxAgeSeconds:d().int().positive()}).strict().optional(),captureErrors:d().int().nonnegative().optional(),observedAt:o().datetime()}).strict();const Vq={bodySerializer:e=>JSON.stringify(e,(a,s)=>typeof s=="bigint"?s.toString():s)},Lq=({onRequest:e,onSseError:a,onSseEvent:s,responseTransformer:r,responseValidator:u,sseDefaultRetryDelay:f,sseMaxRetryAttempts:g,sseMaxRetryDelay:b,sseSleepFn:v,url:k,...S})=>{let A;const N=v??(_=>new Promise(G=>setTimeout(G,_)));return{stream:async function*(){let _=f??3e3,G=0;const K=S.signal??new AbortController().signal;for(;!K.aborted;){G++;const te=S.headers instanceof Headers?S.headers:new Headers(S.headers);A!==void 0&&te.set("Last-Event-ID",A);try{const Q={redirect:"follow",...S,body:S.serializedBody,headers:te,signal:K};let re=new Request(k,Q);e&&(re=await e(k,Q));const oe=await(S.fetch??globalThis.fetch)(re);if(!oe.ok)throw new Error(`SSE failed: ${oe.status} ${oe.statusText}`);if(!oe.body)throw new Error("No body in SSE response");const H=oe.body.pipeThrough(new TextDecoderStream).getReader();let $="";const Te=()=>{try{H.cancel()}catch{}};K.addEventListener("abort",Te);try{for(;;){const{done:Ke,value:Fe}=await H.read();if(Ke)break;$+=Fe;const Re=$.split(`
|
|
48
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(a===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(a!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function g2(e,a){const s=e.seen.get(a);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const v=b.def??b.schema,k={...v},S=b.ref;if(b.ref=null,S){r(S);const N=e.seen.get(S),E=N.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(E)):Object.assign(v,E),Object.assign(v,k),g._zod.parent===S)for(const _ in v)_==="$ref"||_==="allOf"||_ in k||delete v[_];if(E.$ref&&N.def)for(const _ in v)_==="$ref"||_==="allOf"||_ in N.def&&JSON.stringify(v[_])===JSON.stringify(N.def[_])&&delete v[_]}const A=g._zod.parent;if(A&&A!==S){r(A);const N=e.seen.get(A);if(N?.schema.$ref&&(v.$ref=N.schema.$ref,N.def))for(const E in v)E==="$ref"||E==="allOf"||E in N.def&&JSON.stringify(v[E])===JSON.stringify(N.def[E])&&delete v[E]}e.override({zodSchema:g,jsonSchema:v,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(a)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...a["~standard"],jsonSchema:{input:Ou(a,"input",e.processors),output:Ou(a,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function vn(e,a){const s=a??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return vn(r.element,s);if(r.type==="set")return vn(r.valueType,s);if(r.type==="lazy")return vn(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return vn(r.innerType,s);if(r.type==="intersection")return vn(r.left,s)||vn(r.right,s);if(r.type==="record"||r.type==="map")return vn(r.keyType,s)||vn(r.valueType,s);if(r.type==="pipe")return vn(r.in,s)||vn(r.out,s);if(r.type==="object"){for(const u in r.shape)if(vn(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(vn(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(vn(u,s))return!0;return!!(r.rest&&vn(r.rest,s))}return!1}const A6=(e,a={})=>s=>{const r=h2({...s,processors:a});return Gt(e,r),f2(r,e),g2(r,e)},Ou=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=h2({...u??{},target:f,io:a,processors:s});return Gt(e,g),f2(g,e),g2(g,e)},C6={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},N6=(e,a,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:v,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=C6[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),v&&v.size>0){const S=[...v];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(A=>({...a.target==="draft-07"||a.target==="draft-04"||a.target==="openapi-3.0"?{type:"string"}:{},pattern:A.source}))])}},_6=(e,a,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:v,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&a.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&a.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},z6=(e,a,s,r)=>{s.type="boolean"},E6=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},T6=(e,a,s,r)=>{s.not={}},R6=(e,a,s,r)=>{},D6=(e,a,s,r)=>{const u=e._zod.def,f=Qx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},O6=(e,a,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(a.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(a.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,a.target==="draft-04"||a.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},q6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},B6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},P6=(e,a,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Gt(f.element,a,{...r,path:[...r.path,"items"]})},M6=(e,a,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Gt(g[k],a,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),v=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return a.io==="input"?S.optin===void 0:S.optout===void 0}));v.size>0&&(u.required=Array.from(v)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Gt(f.catchall,a,{...r,path:[...r.path,"additionalProperties"]})):a.io==="output"&&(u.additionalProperties=!1)},I6=(e,a,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,v)=>Gt(b,a,{...r,path:[...r.path,f?"oneOf":"anyOf",v]}));f?s.oneOf=g:s.anyOf=g},V6=(e,a,s,r)=>{const u=e._zod.def,f=Gt(u.left,a,{...r,path:[...r.path,"allOf",0]}),g=Gt(u.right,a,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,v=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=v},L6=(e,a,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,v=g._zod.bag?.patterns;if(f.mode==="loose"&&v&&v.size>0){const S=Gt(f.valueType,a,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const A of v)u.patternProperties[A.source]=S}else(a.target==="draft-07"||a.target==="draft-2020-12")&&(u.propertyNames=Gt(f.keyType,a,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Gt(f.valueType,a,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(A=>typeof A=="string"||typeof A=="number");S.length>0&&(u.required=S)}},U6=(e,a,s,r)=>{const u=e._zod.def,f=Gt(u.innerType,a,r),g=a.seen.get(e);a.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},G6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},$6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},K6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,a.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},H6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},Q6=(e,a,s,r)=>{const u=e._zod.def,f=a.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Gt(f,a,r);const g=a.seen.get(e);g.ref=f},F6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.readOnly=!0},y2=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},Z6=J("ZodISODateTime",(e,a)=>{H5.init(e,a),Tt.init(e,a)});function b2(e){return WC(Z6,e)}const Y6=J("ZodISODate",(e,a)=>{Q5.init(e,a),Tt.init(e,a)});function v2(e){return e6(Y6,e)}const X6=J("ZodISOTime",(e,a)=>{F5.init(e,a),Tt.init(e,a)});function J6(e){return t6(X6,e)}const W6=J("ZodISODuration",(e,a)=>{Z5.init(e,a),Tt.init(e,a)});function eN(e){return n6(W6,e)}const tN=(e,a)=>{Xx.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>MA(e,s)},flatten:{value:s=>PA(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,fh,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,fh,2)}},isEmpty:{get(){return e.issues.length===0}}})},ma=J("ZodError",tN,{Parent:Error}),nN=a0(ma),aN=i0(ma),iN=Wu(ma),sN=ed(ma),oN=LA(ma),rN=UA(ma),lN=GA(ma),cN=$A(ma),uN=KA(ma),dN=HA(ma),mN=QA(ma),pN=FA(ma),_t=J("ZodType",(e,a)=>(Ct.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:Ou(e,"input"),output:Ou(e,"output")}}),e.toJSONSchema=A6(e,{}),e.def=a,e.type=a.type,Object.defineProperty(e,"_def",{value:a}),e.check=(...s)=>e.clone(is(a,{checks:[...a.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>ss(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>nN(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>iN(e,s,r),e.parseAsync=async(s,r)=>aN(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>sN(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>oN(e,s,r),e.decode=(s,r)=>rN(e,s,r),e.encodeAsync=async(s,r)=>lN(e,s,r),e.decodeAsync=async(s,r)=>cN(e,s,r),e.safeEncode=(s,r)=>uN(e,s,r),e.safeDecode=(s,r)=>dN(e,s,r),e.safeEncodeAsync=async(s,r)=>mN(e,s,r),e.safeDecodeAsync=async(s,r)=>pN(e,s,r),e.refine=(s,r)=>e.check(o_(s,r)),e.superRefine=s=>e.check(r_(s)),e.overwrite=s=>e.check(or(s)),e.optional=()=>_b(e),e.exactOptional=()=>QN(e),e.nullable=()=>zb(e),e.nullish=()=>_b(zb(e)),e.nonoptional=s=>WN(e,s),e.array=()=>y(e),e.or=s=>Qe([e,s]),e.and=s=>UN(e,s),e.transform=s=>bh(e,w2(s)),e.default=s=>YN(e,s),e.prefault=s=>JN(e,s),e.catch=s=>t_(e,s),e.pipe=s=>bh(e,s),e.readonly=()=>i_(e),e.describe=s=>{const r=e.clone();return vl.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return vl.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return vl.get(e);const r=e.clone();return vl.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),x2=J("_ZodString",(e,a)=>{s0.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>N6(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(u6(...r)),e.includes=(...r)=>e.check(p6(...r)),e.startsWith=(...r)=>e.check(h6(...r)),e.endsWith=(...r)=>e.check(f6(...r)),e.min=(...r)=>e.check(Du(...r)),e.max=(...r)=>e.check(m2(...r)),e.length=(...r)=>e.check(p2(...r)),e.nonempty=(...r)=>e.check(Du(1,...r)),e.lowercase=r=>e.check(d6(r)),e.uppercase=r=>e.check(m6(r)),e.trim=()=>e.check(y6()),e.normalize=(...r)=>e.check(g6(...r)),e.toLowerCase=()=>e.check(b6()),e.toUpperCase=()=>e.check(v6()),e.slugify=()=>e.check(x6())}),hN=J("ZodString",(e,a)=>{s0.init(e,a),x2.init(e,a),e.email=s=>e.check(RC(fN,s)),e.url=s=>e.check(PC(gN,s)),e.jwt=s=>e.check(JC(TN,s)),e.emoji=s=>e.check(MC(yN,s)),e.guid=s=>e.check(wb(Cb,s)),e.uuid=s=>e.check(DC(hu,s)),e.uuidv4=s=>e.check(OC(hu,s)),e.uuidv6=s=>e.check(qC(hu,s)),e.uuidv7=s=>e.check(BC(hu,s)),e.nanoid=s=>e.check(IC(bN,s)),e.guid=s=>e.check(wb(Cb,s)),e.cuid=s=>e.check(VC(vN,s)),e.cuid2=s=>e.check(LC(xN,s)),e.ulid=s=>e.check(UC(kN,s)),e.base64=s=>e.check(ZC(_N,s)),e.base64url=s=>e.check(YC(zN,s)),e.xid=s=>e.check(GC(wN,s)),e.ksuid=s=>e.check($C(SN,s)),e.ipv4=s=>e.check(KC(jN,s)),e.ipv6=s=>e.check(HC(AN,s)),e.cidrv4=s=>e.check(QC(CN,s)),e.cidrv6=s=>e.check(FC(NN,s)),e.e164=s=>e.check(XC(EN,s)),e.datetime=s=>e.check(b2(s)),e.date=s=>e.check(v2(s)),e.time=s=>e.check(J6(s)),e.duration=s=>e.check(eN(s))});function o(e){return TC(hN,e)}const Tt=J("ZodStringFormat",(e,a)=>{Nt.init(e,a),x2.init(e,a)}),fN=J("ZodEmail",(e,a)=>{P5.init(e,a),Tt.init(e,a)}),Cb=J("ZodGUID",(e,a)=>{q5.init(e,a),Tt.init(e,a)}),hu=J("ZodUUID",(e,a)=>{B5.init(e,a),Tt.init(e,a)}),gN=J("ZodURL",(e,a)=>{M5.init(e,a),Tt.init(e,a)}),yN=J("ZodEmoji",(e,a)=>{I5.init(e,a),Tt.init(e,a)}),bN=J("ZodNanoID",(e,a)=>{V5.init(e,a),Tt.init(e,a)}),vN=J("ZodCUID",(e,a)=>{L5.init(e,a),Tt.init(e,a)}),xN=J("ZodCUID2",(e,a)=>{U5.init(e,a),Tt.init(e,a)}),kN=J("ZodULID",(e,a)=>{G5.init(e,a),Tt.init(e,a)}),wN=J("ZodXID",(e,a)=>{$5.init(e,a),Tt.init(e,a)}),SN=J("ZodKSUID",(e,a)=>{K5.init(e,a),Tt.init(e,a)}),jN=J("ZodIPv4",(e,a)=>{Y5.init(e,a),Tt.init(e,a)}),AN=J("ZodIPv6",(e,a)=>{X5.init(e,a),Tt.init(e,a)}),CN=J("ZodCIDRv4",(e,a)=>{J5.init(e,a),Tt.init(e,a)}),NN=J("ZodCIDRv6",(e,a)=>{W5.init(e,a),Tt.init(e,a)}),_N=J("ZodBase64",(e,a)=>{eC.init(e,a),Tt.init(e,a)}),zN=J("ZodBase64URL",(e,a)=>{nC.init(e,a),Tt.init(e,a)}),EN=J("ZodE164",(e,a)=>{aC.init(e,a),Tt.init(e,a)}),TN=J("ZodJWT",(e,a)=>{sC.init(e,a),Tt.init(e,a)}),o0=J("ZodNumber",(e,a)=>{r2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>_6(e,r,u),e.gt=(r,u)=>e.check(jb(r,u)),e.gte=(r,u)=>e.check(Up(r,u)),e.min=(r,u)=>e.check(Up(r,u)),e.lt=(r,u)=>e.check(Sb(r,u)),e.lte=(r,u)=>e.check(Lp(r,u)),e.max=(r,u)=>e.check(Lp(r,u)),e.int=r=>e.check(Nb(r)),e.safe=r=>e.check(Nb(r)),e.positive=r=>e.check(jb(0,r)),e.nonnegative=r=>e.check(Up(0,r)),e.negative=r=>e.check(Sb(0,r)),e.nonpositive=r=>e.check(Lp(0,r)),e.multipleOf=(r,u)=>e.check(Ab(r,u)),e.step=(r,u)=>e.check(Ab(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function d(e){return a6(o0,e)}const RN=J("ZodNumberFormat",(e,a)=>{oC.init(e,a),o0.init(e,a)});function Nb(e){return s6(RN,e)}const DN=J("ZodBoolean",(e,a)=>{rC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z6(e,s,r)});function C(e){return o6(DN,e)}const ON=J("ZodNull",(e,a)=>{lC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>E6(e,s,r)});function ce(e){return r6(ON,e)}const qN=J("ZodUnknown",(e,a)=>{cC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R6()});function qn(){return l6(qN)}const BN=J("ZodNever",(e,a)=>{uC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T6(e,s,r)});function PN(e){return c6(BN,e)}const MN=J("ZodArray",(e,a)=>{dC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>P6(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(Du(s,r)),e.nonempty=s=>e.check(Du(1,s)),e.max=(s,r)=>e.check(m2(s,r)),e.length=(s,r)=>e.check(p2(s,r)),e.unwrap=()=>e.element});function y(e,a){return k6(MN,e,a)}const IN=J("ZodObject",(e,a)=>{pC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>M6(e,s,r,u),dt(e,"shape",()=>a.shape),e.keyof=()=>j(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:qn()}),e.loose=()=>e.clone({...e._zod.def,catchall:qn()}),e.strict=()=>e.clone({...e._zod.def,catchall:PN()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>RA(e,s),e.safeExtend=s=>DA(e,s),e.merge=s=>OA(e,s),e.pick=s=>EA(e,s),e.omit=s=>TA(e,s),e.partial=(...s)=>qA(S2,e,s[0]),e.required=(...s)=>BA(j2,e,s[0])});function m(e,a){const s={type:"object",shape:e??{},..._e(a)};return new IN(s)}const k2=J("ZodUnion",(e,a)=>{u2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>I6(e,s,r,u),e.options=a.options});function Qe(e,a){return new k2({type:"union",options:e,..._e(a)})}const VN=J("ZodDiscriminatedUnion",(e,a)=>{k2.init(e,a),hC.init(e,a)});function qe(e,a,s){return new VN({type:"union",options:a,discriminator:e,..._e(s)})}const LN=J("ZodIntersection",(e,a)=>{fC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>V6(e,s,r,u)});function UN(e,a){return new LN({type:"intersection",left:e,right:a})}const GN=J("ZodRecord",(e,a)=>{gC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>L6(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Le(e,a,s){return new GN({type:"record",keyType:e,valueType:a,..._e(s)})}const yh=J("ZodEnum",(e,a)=>{yC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>D6(e,r,u),e.enum=a.entries,e.options=Object.values(a.entries);const s=new Set(Object.keys(a.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=a.entries[g];else throw new Error(`Key ${g} not found in enum`);return new yh({...a,checks:[],..._e(u),entries:f})},e.exclude=(r,u)=>{const f={...a.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new yh({...a,checks:[],..._e(u),entries:f})}});function j(e,a){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new yh({type:"enum",entries:s,..._e(a)})}const $N=J("ZodLiteral",(e,a)=>{bC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>O6(e,s,r),e.values=new Set(a.values),Object.defineProperty(e,"value",{get(){if(a.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return a.values[0]}})});function D(e,a){return new $N({type:"literal",values:Array.isArray(e)?e:[e],..._e(a)})}const KN=J("ZodTransform",(e,a)=>{vC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>B6(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Kx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Nl(f,s.value,a));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Nl(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function w2(e){return new KN({type:"transform",transform:e})}const S2=J("ZodOptional",(e,a)=>{d2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function _b(e){return new S2({type:"optional",innerType:e})}const HN=J("ZodExactOptional",(e,a)=>{xC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function QN(e){return new HN({type:"optional",innerType:e})}const FN=J("ZodNullable",(e,a)=>{kC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>U6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function zb(e){return new FN({type:"nullable",innerType:e})}const ZN=J("ZodDefault",(e,a)=>{wC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>$6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function YN(e,a){return new ZN({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():Zx(a)}})}const XN=J("ZodPrefault",(e,a)=>{SC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>K6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function JN(e,a){return new XN({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():Zx(a)}})}const j2=J("ZodNonOptional",(e,a)=>{jC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>G6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function WN(e,a){return new j2({type:"nonoptional",innerType:e,..._e(a)})}const e_=J("ZodCatch",(e,a)=>{AC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>H6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function t_(e,a){return new e_({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const n_=J("ZodPipe",(e,a)=>{CC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Q6(e,s,r,u),e.in=a.in,e.out=a.out});function bh(e,a){return new n_({type:"pipe",in:e,out:a})}const a_=J("ZodReadonly",(e,a)=>{NC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>F6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function i_(e){return new a_({type:"readonly",innerType:e})}const s_=J("ZodCustom",(e,a)=>{_C.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>q6(e,s)});function o_(e,a={}){return w6(s_,e,a)}function r_(e){return S6(e)}function r0(e,a){return bh(w2(e),a)}const Se={custom:"custom"};function l0(e){return i6(o0,e)}const A2=m({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:C(),operator:C().optional(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});m({keys:y(A2)});m({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});A2.extend({key:o()});const l_=m({maxConcurrency:d().int().positive(),maxRequestsPerMinute:d().int().positive(),maxRequestsPerDay:d().int().positive()}),ht=o().min(1),c0=Le(o(),o().trim().min(1));o().min(1);const Yt=m({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),u0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);u0.enum;const d0=m({everyDays:d().int().min(1).max(3650),startDate:o().date(),time:o().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();m({id:o(),projectId:o(),kind:u0,cronExpr:o(),recurrence:d0.nullable().optional(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:C().default(!0),providers:y(ht).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});const c_=o().datetime();m({kind:u0.optional(),preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:d0.optional(),timezone:o().optional().default("UTC"),enabled:C().optional().default(!0),providers:y(ht).optional().default([]),sourceId:o().optional(),expectedUpdatedAt:c_.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(a=>a!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const m0=j(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);m({id:o(),projectId:o(),channel:D("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(m0),enabled:C().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});m({channel:D("webhook"),url:o().url(),events:y(m0).min(1),source:o().optional()});class u_ extends Error{code;statusCode;details;constructor(a,s,r,u){super(s),this.name="AppError",this.code=a,this.statusCode=r,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function Eb(e,a){return new u_("VALIDATION_ERROR",e,400,a)}function d_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const a=JSON.stringify(e);if(a!==void 0)return a}catch{}try{return String(e)}catch{return"unknown error"}}function Gp(e,a=!1){const s=new Set,r=[];for(const u of e){const f=a?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Tb(e){try{const a=e.includes("://"),s=new URL(a?e:`https://${e}`);if(!a&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const m_=o().trim().min(1).refine(e=>Tb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Tb(e)??e),p_=o().trim().min(1),h_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),p0=m({marketingHosts:y(m_).overwrite(e=>Gp(e,!0)),brandTerms:y(p_).overwrite(e=>Gp(e,!0)),leadEventNames:y(h_).overwrite(e=>Gp(e))});function f_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const $p=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),C2=()=>f_(),Rb=j(["never-synced","ready","error"]),g_=j(["landing-page","channel"]),y_=j(["30d","60d","90d"]),b_=j(["marketing","all"]),xl=v2(),Ol=m({label:j(["earliest","middle","previous","latest"]),startDate:xl,endDate:xl}),Kp=Ol.extend({sessions:d().int().nonnegative()}),Db=Ol.extend({eventCount:d().int().nonnegative()}),Ob=Ol.extend({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),v_=Ol.extend({propertyClicks:d().int().nonnegative(),propertyImpressions:d().int().nonnegative(),reportedQueryClicks:d().int().nonnegative(),reportedQueryImpressions:d().int().nonnegative(),brandedClicks:d().int().nonnegative(),brandedImpressions:d().int().nonnegative(),nonBrandedClicks:d().int().nonnegative(),nonBrandedImpressions:d().int().nonnegative(),unreportedClicks:d().int().nonnegative(),unreportedImpressions:d().int().nonnegative()}),x_=Ol.extend({sessions:d().int().nonnegative(),engagementRate:d().min(0).max(1).nullable(),dailyTotalUsers:d().int().nonnegative().nullable(),dailyNewUsers:d().int().nonnegative().nullable(),metricsAvailable:C(),daysInPeriod:d().int().nonnegative(),daysWithEngagementRate:d().int().nonnegative(),daysWithUserSplit:d().int().nonnegative()}),k_=m({window:y_,bucketDays:D(30),filters:m({hostScope:b_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:D("property")}),acquisition:m({status:Rb,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(Kp),channels:y(m({channelGroup:o(),periods:y(Kp)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Kp)}))}),leads:m({status:Rb,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:g_.nullable(),hostAndPathFiltersApplied:C(),periods:y(Db),channels:y(m({channelGroup:o(),periods:y(Db)}))}),engagement:m({status:j(["ready","unavailable"]),availableFromDate:xl.nullable(),latestDate:xl.nullable(),periods:y(x_)}),searchDemand:m({status:j(["ready","unavailable"]),periods:y(v_),queries:y(m({query:o(),classification:j(["branded","non-branded"]),periods:y(Ob)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Ob)})),latestDate:xl.nullable()})}),w_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,S_=/[\0-\x1F\x7F-\x9F]/,j_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,A_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var C_=class{src_Any=w_.source;src_Cc=S_.source;src_Z=A_.source;src_P=j_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,a,s=4){const r=this.escapeRE(e),u=this.escapeRE(a),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",a=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${a}|::(?:${e}:){5}${a}|(?:${e})?::(?:${e}:){4}${a}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${a}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${a}|(?:(?:${e}:){0,3}${e})?::${e}:${a}|(?:(?:${e}:){0,4}${e})?::${a}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},Hp={validate:(e,a,s)=>{const r=s.re.get_http_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)},N_={"http:":Hp,"https:":Hp,"ftp:":Hp,"//":{validate:function(e,a,s){const r=s.re.get_relative_proto_validator();r.lastIndex=a;const u=r.exec(e);return u?a>=3&&e[a-3]===":"||a>=3&&e[a-3]==="/"?0:u[0].length:0},normalize:(e,a)=>a.normalize(e)},"mailto:":{validate:function(e,a,s){const r=s.re.get_mailto_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)}},__="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",z_="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function E_(){const e=z_.split("|");return __.split("|").forEach(a=>{const s=a.indexOf(":"),r=a.slice(0,s);for(const u of a.slice(s+1))e.push(r+u)}),e}var T_={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:E_(),urlAuth:!1,maxLength:1e4},qb=class{schema;index;lastIndex;raw;text;url;constructor(e,a,s,r){const u=e.slice(s,r);this.schema=a.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},R_=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...T_,...s},this.__schemas__={...N_},this.re=a||new C_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,a=null){if(!a)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...a};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let a,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(a=s.exec(e))!==null;)if(this.testSchemaAt(e,a[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(a=r.exec(e))!==null;){const f=e.slice(Math.max(0,a.index-65),a.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,a,s){return this.__schemas__[a.toLowerCase()]?this.__schemas__[a.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const a=[],s=this.re.get_schema_search();let r,u,f,g,b,v,k=!1,S=!1,A=!1,N=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(N-1,0);if(u&&f&&!A&&(!b||b.index<N))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){A=!0,b=void 0;break}const Q=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(Q){if(b={schema:"mailto:",index:te.index-Q[1].length,lastIndex:te.index+te[0].length},b.index>=N)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<N))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=N)break;r.lastIndex<E&&(r.lastIndex=E)}let Z=b;(!Z||g&&(g.index<Z.index||g.index===Z.index&&g.lastIndex>Z.lastIndex))&&(Z=g);let _;if(!k)for(;;){if(!v){s.lastIndex<E&&(s.lastIndex=E);const re=s.exec(e);if(!re){k=!0;break}v={schema:re[2],index:re.index+re[1].length,lastIndex:re.index+re[0].length}}if(v.index<N){v=void 0;continue}if(Z&&v.index>Z.index)break;const te=v;v=void 0;const Q=this.testSchemaAt(e,te.schema,te.lastIndex);if(Q){_={schema:te.schema,index:te.index,lastIndex:te.lastIndex+Q};break}}let G=_;if((!G||b&&(b.index<G.index||b.index===G.index&&b.lastIndex>G.lastIndex))&&(G=b),(!G||g&&(g.index<G.index||g.index===G.index&&g.lastIndex>G.lastIndex))&&(G=g),!G)break;G===b?b=void 0:G===g&&(g=void 0);const K=new qb(e,G.schema,G.index,G.lastIndex);K.schema?this.__schemas__[K.schema].normalize(K,this):this.normalize(K),a.push(K),N=G.lastIndex}return a.length?a:null}matchAtStart(e){if(!e.length)return null;const a=this.re.get_schema_at_start().exec(e);if(!a)return null;const s=this.testSchemaAt(e,a[2],a[0].length);if(!s)return null;const r=new qb(e,a[2],a.index+a[1].length,a.index+a[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,a=!1){return e=Array.isArray(e)?e:[e],a?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const D_=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function O_(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function q_(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function B_(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(O_(a,f))return f}let r=0;if(a.startsWith("."))for(;r<a.length&&a[r]===".";)r+=1;return e.length===a.length-r?null:q_(a,e)}function P_(e,a){return e.slice(0,-a.length-1)}const Qp=/[\t\n\r]/g;let vh=!1;function Bb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Pb(e,a,s){const r=s-a,u=e.charCodeAt(a)|32;if(r===2)return u===119&&(e.charCodeAt(a+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+2)|32,b=e.charCodeAt(a+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(a+1)|32)===116&&(e.charCodeAt(a+2)|32)===116&&(e.charCodeAt(a+3)|32)===112&&(e.charCodeAt(a+4)|32)===115?1:0;return 0}function kl(e,a,s=!1){let r=0,u=e.length,f=!1,g=!1;if(vh=!1,!a){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const G=e.indexOf(":/",r);if(G!==-1){const K=Pb(e,r,G);if(K===1)for(g=!0,r=G+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(K===2){g=!0,r=G+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<G;te+=1){const Q=e.charCodeAt(te)|32;if(!(Q>=97&&Q<=122||Q>=48&&Q<=57||Q===46||Q===45||Q===43)){const re=e.charCodeAt(te);return re===9||re===10||re===13?kl(e.replace(Qp,""),a,s):null}}if(e.charCodeAt(G+2)===47)r=G+3;else return null}}else if(e.charCodeAt(r)!==91){let K=-1;for(let te=r;te<u;te+=1){const Q=e.charCodeAt(te);if(Q===9||Q===10||Q===13)return kl(e.replace(Qp,""),a,s);if(Q===58){K=te;break}if(Q===47||Q===92||Q===63||Q===35)break}if(K!==-1){let te=!1;for(let Q=K+1;Q<u;Q+=1){const re=e.charCodeAt(Q);if(re===47||re===92||re===63||re===35)break;if(re===64){te=!0;break}}if(!te){let Q=!0,re=K+1;for(;re<u;re+=1){const W=e.charCodeAt(re);if(W===47||W===92||W===63||W===35)break;if(W<48||W>57){Q=!1;break}}if(re===K+1&&(Q=!1),!Q){const W=Pb(e,r,K);if(W===0){let oe=!1;for(let H=K+1;H<u;H+=1){const $=e.charCodeAt(H);if($===47||$===92||$===63||$===35)break;if($===58){oe=!0;break}}if(!oe)return null}else if(g=!0,r=K+1,W===2){let oe=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&oe<2;)r+=1,oe+=1;if(oe<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let v=-1,k=-1,S=-1,A=-1,N=!1,E=s,Z=r-1,_=-1;if(s&&r<u){const G=e.charCodeAt(r);(!(Bb(G)||G===46||G===95)||G===45)&&(E=!1)}for(let G=r;G<u;G+=1){const K=e.charCodeAt(G);if(K<64)if(K===47||K===35||K===63){u=G;break}else K===58?(A===-1&&(A=G),S=G):K===9||K===10||K===13?N=!0:s&&(K===46?((G-Z>64||_===46||_===45)&&(E=!1),Z=G):(K<48||K>57)&&(K!==45||_===46)&&(E=!1));else if(g&&K===92){u=G;break}else K===64?(v=G,A=-1):K===93?k=G:K>=65&&K<=90?f=!0:s&&!Bb(K)&&(E=!1);s&&(_=K)}if(N)return kl(e.replace(Qp,""),a,s);if(v!==-1&&v>=r&&v<u&&(r=v+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&A===S&&(u=S),r>=u)return null;s&&E&&v===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-Z-1<=63&&_!==45&&(vh=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function M_(e){if(e.length<7||e.length>15)return!1;let a=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)a+=1;else if(r<48||r>57)return!1}return a===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function I_(e){if(e.length<3)return!1;let a=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-a>39)return!1;let r=!1;for(;a<s;a+=1){const u=e.charCodeAt(a);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function V_(e){return I_(e)||M_(e)}const L_=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function U_(e){for(const a of L_)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function Mb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Ib(e){if(e.length>255||e.length===0||!Mb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let a=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-a>64||s===46||s===45)return!1;a=u}else if(!(Mb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function N2({allowIcannDomains:e=!0,allowPrivateDomains:a=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:a,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const G_=N2({});function $_(e){return e===void 0?G_:N2(e)}function K_(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function H_(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function _2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function z2(e,a,s,r,u){const f=$_(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=Ib(e),u.hostname=kl(e,g,f.validateHostname)):u.hostname=kl(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=V_(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!vh&&!Ib(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=U_(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=B_(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=K_(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=P_(u.domain,u.publicSuffix)),u)}function Q_(e,a,s){if(!a.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const Vs=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),qu=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),Bu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),Vb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),xh="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",F_=621,Z_=625,E2=Vs.length,T2=Bu.length,R2=new Uint32Array(T2),_u=new Uint32Array(T2),kh=new Int32Array(E2).fill(-1);for(let e=0,a=0;e<E2;e+=1)for(let s=qu[e];s<qu[e+1];s+=1){R2[s]=a;const r=a+Bu[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^xh.charCodeAt(f);_u[s]=u>>>0,Bu[s]===1&&xh.charCodeAt(a)===42&&(kh[e]=s),a=r}let pi=-1,wh=0,Sh=0;function Lb(e,a,s,r){if(Bu[e]!==r)return!1;const u=R2[e];for(let f=0;f<r;f+=1)if(xh.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function Ub(e,a,s,r,u){let f=qu[e],g=qu[e+1];for(;f<g;){const b=f+g>>>1,v=_u[b];if(v<a)f=b+1;else if(v>a)g=b;else{for(let k=b;k>=f&&_u[k]===a;k-=1)if(Lb(k,s,r,u))return k;for(let k=b+1;k<g&&_u[k]===a;k+=1)if(Lb(k,s,r,u))return k;return-1}}return-1}function Gb(e,a,s){let r=a,u=e.length,f=5381;pi=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const k=b+1;let S=Ub(r,f>>>0,e,k,u-k);if(S===-1&&(S=kh[r]),S===-1)return pi!==-1;r=Vb[S],(Vs[r]&s)!==0&&(pi=r,wh=k,Sh=u),u=b,f=5381}else f=f*33^v}let g=Ub(r,f>>>0,e,0,u);return g===-1&&(g=kh[r]),g!==-1&&(r=Vb[g],(Vs[r]&s)!==0&&(pi=r,wh=0,Sh=u)),pi!==-1}function D2(e,a,s){if(Q_(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(Gb(e,Z_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(Sh+1);return}if(Gb(e,F_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(wh);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const Pu=H_();function Y_(e,a){return _2(Pu),z2(e,0,D2,a,Pu).hostname}function X_(e,a){return _2(Pu),z2(e,5,D2,a,Pu).domainWithoutSuffix}const J_={allowPrivateDomains:!0};new R_({fuzzyLink:!0,fuzzyEmail:!1}).tlds(D_);function ql(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Y_(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function O2(e){return e==null||e.trim()===""?"":X_(e,J_)?.toLowerCase()??""}const W_=new Intl.Segmenter("en",{granularity:"word"}),e8=/[^\p{L}\p{N}]+/gu,t8=/[\p{L}\p{N}]+/gu,n8=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,a8=new RegExp("\\P{ASCII}","u");function i8(e){if(!a8.test(e))return e;let a="";for(const s of e){if(s.charCodeAt(0)<128){a+=s;continue}const r=s.normalize("NFD"),u=r[0];a+=r.length>1&&n8.test(u)?u:s}return a}function q2(e){return i8(e.normalize("NFKC")).toLocaleLowerCase("en")}function B2(e){const a=[];for(const s of W_.segment(e))if(s.isWordLike)for(const r of s.segment.match(t8)??[])a.push(r);return a}function s8(e){return B2(q2(e))}function Ca(e){return s8(e).join("")}const $b=new WeakMap;function o8(e){if(!e)return null;const a=q2(e);return{normalized:a,stripped:a.replace(e8,"")}}function r8(e){const a=$b.get(e);if(a)return a;const s=B2(e.normalized);return $b.set(e,s),s}function l8(e){const a=new Set;let s=0;for(const r of e){if(!r)continue;const u=Ca(r);u&&(a.add(u),u.length>s&&(s=u.length))}return{keys:a,longest:s}}function c8(e,a){if(!a||e.keys.size===0)return!1;const s=typeof a=="string"?o8(a):a;if(!s)return!1;let r=!1;for(const f of e.keys)if(s.stripped.includes(f)){r=!0;break}if(!r)return!1;const u=r8(s);for(let f=0;f<u.length;f++){let g="";for(let b=f;b<u.length;b++){if(g+=u[b],e.keys.has(g))return!0;if(g.length>=e.longest)break}}return!1}const u8=4,P2=j(["cli","api","config-file"]);function d8(e){const a=new Set,s=new Set;for(const r of e){if(a.has(r.label)){s.add(r.label);continue}a.add(r.label)}return[...s]}function m8(e,a){return a?e.some(s=>s.label===a):!0}const p8=m({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Le(o(),o()).optional(),providers:y(ht).optional(),providerModels:c0.optional(),locations:y(Yt).optional(),defaultLocation:o().nullable().optional(),measurement:p0.optional(),autoExtractBacklinks:C().optional(),configSource:P2.optional()});p8.extend({name:o().trim().min(1).max(120)});const h8=m({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Le(o(),o()).default({}),providers:y(o()).default([]),providerModels:c0.default({}),locations:y(Yt).default([]),defaultLocation:o().nullable().optional(),measurement:p0.default(C2),autoExtractBacklinks:C().default(!1),configSource:P2.default("cli"),configRevision:d().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});m({id:o(),query:o(),createdAt:o()});m({id:o(),keyword:o(),createdAt:o()});m({queries:y(o().trim().min(1)).min(1)});m({keywords:y(o().trim().min(1)).min(1)});m({provider:ht,count:d().int().min(1).max(20).optional()});m({id:o(),domain:o(),createdAt:o()});m({competitors:y(o().trim().min(1)).min(1)});function Mu(e){return ql(e)??e.trim().toLowerCase().replace(/^www\./,"")}function M2(e){const a=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of a){const f=u.trim();if(!f)continue;const g=Mu(f);s.has(g)||(s.add(g),r.push(f))}return r}function f8(e,a){if(!a||a.length===0)return[];const s=e?.trim().toLowerCase()??"",r=new Set,u=[];for(const f of a){const g=f.trim();if(!g)continue;const b=g.toLowerCase();b!==s&&(r.has(b)||(r.add(b),u.push(g)))}return u}function g8(e){const a=[],s=new Set,r=f=>{const g=Ca(f);!g||s.has(g)||(s.add(g),a.push(f))},u=e.displayName?.trim()??"";u&&r(u);for(const f of f8(e.displayName,e.aliases))r(f);for(const f of M2({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const g=O2(f);if(Ca(g).length>=u8)r(g);else{const b=Mu(f);b.includes(".")&&r(b)}}return a}const y8=m({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Le(o(),o()).optional().default({})}),b8=m({preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:d0.optional(),timezone:o().optional().default("UTC"),providers:y(ht).optional().default([]),enabled:C().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(a=>a!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'}).optional(),v8=m({channel:D("webhook"),url:o().url(),events:y(m0).min(1)}),x8=m({gsc:m({propertyUrl:o()}).optional(),syncSchedule:m({preset:o().optional(),cron:o().optional()}).optional()}).optional(),Kb=y(o().min(1)),k8=m({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:Kb.optional(),keywords:Kb.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:c0.optional().default({}),locations:y(Yt).optional().default([]),defaultLocation:o().optional(),measurement:p0.optional().default(C2),schedule:b8,notifications:y(v8).optional().default([]),google:x8,autoExtractBacklinks:C().optional().default(!1)}).superRefine((e,a)=>{e.queries!==void 0&&e.keywords!==void 0&&a.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=d8(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),m8(e.locations,e.defaultLocation)||a.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});m({apiVersion:D("canonry/v1"),kind:D("Project"),metadata:y8,spec:k8});const w8=["branded","non-brand"],rr=j(w8),S8=j(["all","branded","non-brand"]);function j8(e){const a=e.filter(r=>Ca(r).length>0);if(a.length===0)return null;const s=l8(a);return s.keys.size===0?null:{matcher:s,classify(r){return c8(s,r)?"branded":"non-brand"}}}const A8=2,C8=o().regex(/^[a-f0-9]{64}$/),nd=o().trim().min(1).max(256),Hb=j(["sensitive","insensitive"]),me=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),N8=o().trim().min(1).refine(e=>ql(e)!==null,"A competitor domain must be a valid hostname"),_8=qe("kind",[m({kind:D("exact"),url:o().min(1),pathCase:Hb}).strict(),m({kind:D("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:Hb}).strict(),m({kind:D("host"),host:o().min(1)}).strict()]),z8=m({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),E8=m({projectBrand:z8}).strict(),T8=m({stableKey:me,label:o().trim().min(1),aliases:y(o().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(_8),mentionNotApplicable:C(),discoveryIdentity:o().min(1).nullable()}).strict(),I2=m({stableKey:me,label:o().trim().min(1),domain:N8,aliases:y(o().min(1))}).strict(),R8=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(I2)}).strict(),D8=j(["manual","query-set","template","discovery","research"]),O8=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),template:o().trim().min(1).max(4e3),bindings:Le(o().trim().min(1).max(128),o().trim().min(1).max(128)),output:o().trim().min(1).max(4e3)}).strict(),V2=m({source:D8,sourceId:o().min(1).nullable(),capturedAt:o().datetime(),template:O8.optional()}).strict(),q8=m({queryId:nd,queryText:o().min(1),provenance:V2}).strict(),ad=m({providers:y(ht).min(1),models:Le(ht,o().min(1)),location:Yt.nullable()}).strict(),B8=m({stableKey:o().min(1),queryId:nd,queryText:o().min(1),context:ad,expectedSnapshots:d().int().nonnegative()}).strict(),h0=rr,P8=m({targetKey:me,queryId:nd,queryClass:h0,classificationSource:j(["server","operator"]).optional(),executionNodeKey:o().min(1)}).strict(),f0=m({executionNodeKey:o().min(1),targetKey:me,queryId:nd}).strict(),L2=m({stableKey:me,label:o().trim().min(1),kind:D("market"),groupKey:me.optional(),usageEdges:y(f0)}).strict();function Qb(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const id=m({schemaVersion:D(A8),identities:E8,targets:y(T8),groups:y(R8),querySnapshots:y(q8),assignments:y(P8),executionNodes:y(B8),usageEdges:y(f0),reportingScopes:y(L2).optional(),compiledChecksum:C8}).strict().superRefine((e,a)=>{const s=new Set;for(const b of e.executionNodes)s.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),s.add(b.stableKey);const r=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{s.has(b.executionNodeKey)||a.addIssue({code:Se.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),r.has(b.targetKey)||a.addIssue({code:Se.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(Qb)),f=new Set;e.reportingScopes?.forEach((b,v)=>{if(f.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),f.add(b.stableKey),b.groupKey!==void 0){const S=e.groups.find(A=>A.stableKey===b.groupKey);(!S||b.usageEdges.some(A=>!S.targetKeys.includes(A.targetKey)))&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const k=new Set;b.usageEdges.forEach((S,A)=>{const N=Qb(S);u.has(N)||a.addIssue({code:Se.custom,path:["reportingScopes",v,"usageEdges",A],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),k.has(N)&&a.addIssue({code:Se.custom,path:["reportingScopes",v,"usageEdges",A],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),k.add(N)})}),e.assignments.forEach((b,v)=>{r.has(b.targetKey)||a.addIssue({code:Se.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const g=new Map;e.groups.forEach((b,v)=>{g.has(b.stableKey)&&a.addIssue({code:Se.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),g.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const k=b.parentGroupKey;if(k===void 0)return;if(k===b.stableKey){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const S=g.get(k);if(!S){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+k});return}const A=new Set(S.targetKeys);b.targetKeys.forEach((Z,_)=>{A.has(Z)||a.addIssue({code:Se.custom,path:["groups",v,"targetKeys",_],message:"Group target membership must be a subset of its parent."})});const N=new Set([b.stableKey]);let E=S;for(;E.parentGroupKey!==void 0;){if(N.has(E.stableKey)){a.addIssue({code:Se.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}N.add(E.stableKey);const Z=g.get(E.parentGroupKey);if(!Z)break;E=Z}});for(const b of e.groups)for(const v of b.targetKeys)r.has(v)||a.addIssue({code:Se.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),g0=100;function Jo(e){return m({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:d().int().nonnegative().optional()}).strict()}const sd=j(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),zt=qe("state",[m({state:D("available"),value:d(),numerator:d().int().nonnegative().optional(),denominator:d().int().positive().optional()}).strict(),m({state:D("unavailable"),reason:sd}).strict()]),y0=j(["all","group","property"]),Ea=S8,M8=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),b0=j(["not_measured","queued","running","complete","partial","failed"]),I8=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);m({scope:y0,groupKey:me.optional(),targetKey:me.optional(),queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:M8.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();const V8=m({provider:ht,mentionCoverage:zt,citationCoverage:zt}).strict(),L8=m({bothSignals:d().int().nonnegative(),mentionedOnly:d().int().nonnegative(),citedOnly:d().int().nonnegative(),neither:d().int().nonnegative(),notMeasured:d().int().nonnegative(),total:d().int().nonnegative()}).strict(),U8=m({targetKey:me,label:o().min(1),mentionCoverage:zt,citationCoverage:zt,providers:y(V8),flags:d().int().nonnegative()}).strict(),G8=m({kind:j(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:d().int().nonnegative(),share:d().min(0).max(1)}).strict(),$8=m({groupKey:me,queryClass:D("non-brand"),denominator:d().int().positive(),entries:y(G8)}).strict();m({mode:j(["active-v1","active-v2"]),scope:m({kind:y0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:b0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:d().int().nonnegative(),expected:d().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:C().optional()}).strict(),nextAction:m({kind:I8,count:d().int().nonnegative().optional()}).strict(),metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt,brandPresence:zt,sov:zt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Jo(U8),outcomes:L8,flags:m({total:d().int().nonnegative()}).strict(),namedShareOfVoice:$8.optional()}).strict();const U2=j(["sources","answers"]),K8=U2.enum;K8.sources;m({targetKey:me,queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:U2.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();const G2=1,Bl=d().int().positive(),Zt=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Pl=o().trim().min(1).max(256),Fb=j(["sensitive","insensitive"]);function Iu(e){const a=ql(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function H8(e){const a=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||a.push(u),s=!0):(a.push(u),s=!1)}for(;a.length>1&&a.at(-1)==="/";)a.pop();return a.length?a.join(""):"/"}function Zb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function $2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return H8(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function jh(e){const a=e.trim();if(!a||a.includes("?")||a.includes("#")||a.includes("://")||a.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=a.startsWith("/")?a:`/${a}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return $2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function Q8(e){const a=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!a)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(a[0].length).split(/[?#]/,1)[0]||"/"}function Yb(e){const a=e.trim();if(!a||a.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(a)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=Iu(s.hostname),u=jh(Q8(a));return`https://${r}${u}`}const _l=o().trim().min(1).refine(e=>{try{return Iu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>Iu(e)),F8=o().trim().min(1).refine(e=>{try{return jh(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>jh(e)),Z8=o().trim().min(1).refine(e=>{try{return Yb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Yb(e)),Y8=qe("kind",[m({kind:D("exact"),url:Z8,pathCase:Fb}).strict(),m({kind:D("prefix"),host:_l,pathPrefix:F8,pathCase:Fb}).strict(),m({kind:D("host"),host:_l}).strict()]),K2=o().trim().min(1).max(256).refine(e=>Ca(e).length>0,"A target alias must contain mention text"),X8=Le(o().trim().min(1),o()),J8=_l,H2=m({stableKey:Zt,label:o().trim().min(1),urls:y(Y8).min(1),aliases:y(K2),metadata:X8.optional()}).strict(),v0=m({stableKey:Zt,label:o().trim().min(1),targetKeys:y(Zt).min(1),competitors:y(J8).optional()}).strict(),Q2=m({targetKey:Zt,queryIds:y(Pl).min(1),context:Yt.nullable().optional()}).strict();function W8(e,a){return e<a?-1:e>a?1:0}function e7(e,a=s=>s){const s=new Set,r=new Set;for(const u of e){const f=a(u);s.has(f)&&r.add(f),s.add(f)}return r}function Fp(e,a,s,r,u){for(const f of e7(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Xb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const a=new URL(e.url);return{host:Iu(a.hostname),pathname:$2(a.pathname||"/")}}function t7(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&Zb(e)===Zb(s)}function n7(e,a){if(e.kind!==a.kind)return!1;const s=Xb(e),r=Xb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:t7(s.pathname,e.pathCase,r.pathname,a.pathCase)}function a7(e){const a=new Set;return[...e].sort(W8).filter(s=>{const r=Ca(s);return a.has(r)?!1:(a.add(r),!0)})}const F2=m({schemaVersion:D(G2),targets:y(H2).min(1),groups:y(v0).optional(),targetQuerySelections:y(Q2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];Fp(a,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Fp(a,s.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),f=new Set(s.map(v=>v.stableKey));for(const v of u)f.has(v)&&a.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const g=new Map,b=[];e.targets.forEach((v,k)=>{for(const S of a7(v.aliases)){const A=Ca(S),N=g.get(A);N&&N!==v.stableKey&&a.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${N}: ${S}`}),g.set(A,v.stableKey)}v.urls.forEach((S,A)=>{b.find(E=>E.targetKey!==v.stableKey&&n7(E.matcher,S))&&a.addIssue({code:"custom",path:["targets",k,"urls",A],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:S})})}),s.forEach((v,k)=>{Fp(a,v.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<v.targetKeys.length;S++){const A=v.targetKeys[S];u.has(A)||a.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${A}`})}}),r.forEach((v,k)=>{u.has(v.targetKey)||a.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});F2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));m({expectedActiveRevision:Bl.nullable(),plan:F2}).strict();const i7=m({queryId:Pl,queryText:o().min(1)}).strict(),x0=m({stableKey:o().min(1),queryText:o().min(1),context:Yt.nullable(),expectedSnapshots:d().int().nonnegative()}).strict(),s7=m({kind:D("baseline"),executionNodeKey:o().min(1),queryId:Pl}).strict(),o7=m({kind:D("target"),executionNodeKey:o().min(1),queryId:Pl,targetKey:Zt}).strict(),Ah=qe("kind",[s7,o7]),Z2=m({code:D("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Zt).min(1),aliases:y(o().min(1)).min(1)}).strict(),Y2=H2.extend({mentionNotApplicable:C()}),X2=m({schemaVersion:D(G2),defaultContext:Yt.nullable(),effectiveOwnedHosts:y(_l),projectCanonicalHost:_l,projectBrandNames:y(K2),targets:y(Y2),groups:y(v0),targetQuerySelections:y(Q2),querySnapshots:y(i7),executionNodes:y(x0),usageEdges:y(Ah),warnings:y(Z2)}).strict(),r7=X2,J2=qe("schemaVersion",[X2,id]),k0=o().regex(/^[a-f0-9]{64}$/),w0=o().datetime(),W2=m({schemaVersion:D(1),providers:y(o().min(1)).min(1),models:Le(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),l7=m({groups:y(Zt).optional(),targets:y(Zt).optional()}).strict(),c7=m({groups:y(Zt),targets:y(Zt),queries:y(o().min(1)),resolvedTargets:y(Zt)}).strict().superRefine((e,a)=>{e.resolvedTargets.length===0&&e.queries.length===0&&a.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});m({stableKey:Zt,retiredAt:o().datetime()});m({active:m({revision:Bl,checksum:k0,createdAt:w0,plan:J2}).nullable()});m({versions:y(m({revision:Bl,checksum:k0,createdAt:w0,active:C()}))});m({version:m({revision:Bl,checksum:k0,createdAt:w0,active:C(),plan:J2})});const zu=m({targets:d().int(),groups:d().int(),queries:d().int(),executionNodes:d().int(),usageEdges:d().int(),baselineEdges:d().int(),targetEdges:d().int(),dedupSavings:d().int()}).strict(),u7=j(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),ek=m({id:u7,severity:j(["fail","warn"]),message:o().min(1),path:y(Qe([o(),d().int()]))}).strict(),d7=m({baseline:d().int().nonnegative(),target:d().int().nonnegative()}).strict(),tk=m({ok:D(!0),checks:y(ek),executionNodes:y(x0),dedupSaved:d().int().nonnegative(),usageEdges:d7,estCostUsd:ce(),plan:r7,warnings:y(Z2),counts:zu}).strict(),nk=m({ok:D(!1),checks:y(ek).min(1),executionNodes:y(x0).length(0),dedupSaved:D(0),usageEdges:m({baseline:D(0),target:D(0)}).strict(),estCostUsd:ce()}).strict();qe("ok",[tk,nk]);const fu=m({targetKey:Zt,context:Yt.nullable(),queryIds:y(Pl)}).strict();function Jb(e){return m({added:y(e),removed:y(e),changed:y(m({stableKey:Zt,before:e,after:e}).strict()),unchanged:y(Zt)}).strict()}const m7=tk.extend({diff:m({activeRevision:Bl.nullable(),targets:Jb(Y2),groups:Jb(v0),querySelections:m({added:y(fu),removed:y(fu),changed:y(m({targetKey:Zt,before:fu,after:fu}).strict()),unchanged:y(m({targetKey:Zt,context:Yt.nullable()}).strict())}).strict(),execution:m({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Ah),removedUsageEdges:y(Ah),counts:m({before:zu.nullable(),after:zu,delta:zu.nullable()}).strict()}).strict()}).strict()}).strict(),p7=nk.extend({diff:ce()}).strict();qe("ok",[m7,p7]);const h7=1,f7=o().refine(e=>e.trim().length>0,{message:"Must not be blank"}),ak=m({displayName:o(),aliases:y(o()),canonicalDomain:o(),ownedDomains:y(o())}).strict(),ik=m({provider:ht.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:o().nullable()}).strict(),sk=m({domain:o(),label:o(),aliases:y(o())}).strict(),ok=m({queryId:f7,queryText:o(),provenance:o().nullable()}).strict(),g7=ok.extend({queryClass:rr.nullable()}).strict();function rk(e,a){const s=new Set;e.engines.forEach((f,g)=>{const b=f.provider.trim().toLocaleLowerCase("en");s.has(b)&&a.addIssue({code:Se.custom,path:["engines",g,"provider"],message:`Duplicate engine provider "${f.provider}"`}),s.add(b)});const r=new Set;e.queries.forEach((f,g)=>{r.has(f.queryId)&&a.addIssue({code:Se.custom,path:["queries",g,"queryId"],message:`Duplicate query id "${f.queryId}"`}),r.add(f.queryId)});const u=new Set;e.competitors?.forEach((f,g)=>{const b=f.domain;u.has(b)&&a.addIssue({code:Se.custom,path:["competitors",g,"domain"],message:`Duplicate competitor domain "${f.domain}"`}),u.add(b)})}m({capturedAt:o().datetime(),identity:ak,country:o(),language:o(),location:Yt.nullable(),engines:y(ik).min(1),competitors:y(sk).optional(),queries:y(ok)}).strict().superRefine(rk);m({schemaVersion:D(h7),capturedAt:o().datetime(),identity:ak,country:o(),language:o(),location:Yt.nullable(),engines:y(ik).min(1),competitors:y(sk).optional(),queries:y(g7)}).strict().superRefine(rk);const y7=j(["auto","simple","advanced"]),b7=j(["simple","advanced"]),lk=j(["branded","non-brand","unknown","all"]),v7=j(["branded","non-brand","unknown"]),ck=j(["project","group","market","property"]),uk=qe("kind",[m({kind:D("all")}).strict(),m({kind:D("none")}).strict(),m({kind:D("exact"),value:o().trim().min(1)}).strict()]);function x7(e){if(e===void 0||e==="")return{kind:"all"};const a=e.normalize("NFKC").trim();return a===""?{kind:"all"}:a.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:a}}const bt=o().trim().min(1),Us=o().datetime(),k7={mode:y7.default("auto"),queryClass:lk.default("non-brand"),scope:ck.default("project"),scopeKey:bt.optional(),marketKey:bt.optional(),provider:bt.optional(),model:bt.optional(),location:o().trim().min(1).optional(),from:Us.optional(),to:Us.optional(),revision:d().int().positive().optional(),runId:bt.optional(),queryKey:bt.optional(),queryId:bt.optional(),search:o().trim().min(1).optional(),cursor:bt.optional(),limit:d().int().min(1).max(100).default(50)},w7=m(k7).strict().superRefine((e,a)=>{e.scope!=="project"&&e.scopeKey===void 0&&a.addIssue({code:Se.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&a.addIssue({code:Se.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&a.addIssue({code:Se.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&a.addIssue({code:Se.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&a.addIssue({code:Se.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});w7.transform(e=>({...e,location:x7(e.location)}));const Aa=m({numerator:d().int().nonnegative().nullable(),denominator:d().int().nonnegative().nullable(),rate:d().min(0).max(1).nullable(),reason:j(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional()}).strict().superRefine((e,a)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&a.addIssue({code:Se.custom,message:"Unavailable rates require null values and a reason"});return}e.reason!==void 0&&a.addIssue({code:Se.custom,message:"Available rates cannot carry a reason"});const{numerator:r,denominator:u}=e;u===null||r===null||(u===0&&a.addIssue({code:Se.custom,path:["denominator"],message:"Available rates require a positive denominator"}),r>u&&a.addIssue({code:Se.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),dk=qe("kind",[m({kind:D("frozen-simple"),definitionRevision:ce()}).strict(),m({kind:D("legacy-simple"),definitionRevision:ce()}).strict(),m({kind:D("frozen-advanced"),definitionRevision:d().int().positive()}).strict(),m({kind:D("unsupported-advanced-v1"),definitionRevision:d().int().positive()}).strict()]),Ch=m({id:bt,label:o().trim().min(1),kind:ck,targetCount:d().int().nonnegative(),parentGroupIds:y(bt).optional(),marketKeys:y(bt).optional()}).strict(),S7=m({provider:bt,model:bt}).strict(),j7=m({providers:y(bt),models:y(S7),locations:y(uk)}).strict(),A7=m({queryCount:d().int().nonnegative(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa,propertyReach:Aa,outcomes:m({bothSignals:d().int().nonnegative(),mentionedOnly:d().int().nonnegative(),citedOnly:d().int().nonnegative(),neither:d().int().nonnegative(),notMeasured:d().int().nonnegative(),total:d().int().nonnegative()}).strict().superRefine((e,a)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&a.addIssue({code:Se.custom,message:"Outcome partition must sum to total"})})}).strict(),C7=m({runId:bt,createdAt:Us,revision:d().int().positive().nullable(),provenance:dk,queryCount:d().int().nonnegative(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa,continuity:m({state:j(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:o().nullable()}).strict()}).strict(),N7=m({queryKey:bt,queryId:o().nullable(),query:o(),provider:bt,model:o().nullable(),location:o().nullable(),targetKeys:y(bt),marketKeys:y(bt).optional(),answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),_7=m({answerId:bt,runId:bt,queryKey:bt,query:o(),provider:bt,model:o().nullable(),location:o().nullable(),targetKeys:y(bt),mentioned:C().nullable(),mentionUnavailableReason:D("identity-ambiguous").optional(),cited:C().nullable(),answerText:o().nullable(),createdAt:Us,sources:y(o()),observedCompetitors:y(bt)}).strict(),z7=m({domain:bt,answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),E7=m({name:bt,answerCount:d().int().nonnegative()}).strict(),T7=qe("state",[m({state:D("available")}).strict(),m({state:D("unavailable"),reason:D("frozen-competitor-identity-missing")}).strict()]),Wb=m({id:bt,label:o().trim().min(1),queryCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict();function ev(e){return m({items:y(e),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict()}const mk=m({queryClass:v7,summary:A7,trend:y(C7),queries:ev(N7),evidence:ev(_7),competitorAvailability:T7,competitors:y(z7),observedCompetitors:y(E7),breakdown:m({properties:y(Wb),groups:y(Wb)}).strict()}).strict(),R7=j(["measured","not-measured","partial"]),D7=m({state:R7,activeRevision:d().int().positive().nullable(),measuredRevision:d().int().positive().nullable(),awaitingSweep:C(),pendingAssignmentCount:d().int().nonnegative(),completedAt:Us.nullable()}).strict(),pk=m({mode:b7,queryClass:lk,scope:Ch,market:Ch.optional(),provider:o().nullable(),model:o().nullable(),location:uk,time:m({from:Us.nullable(),to:Us.nullable()}).strict(),revision:d().int().positive().nullable(),run:m({id:o().nullable(),explicit:C()}).strict(),provenance:dk,measurement:D7,availability:qe("state",[m({state:D("available")}).strict(),m({state:D("unsupported"),reason:D("advanced-v1")}).strict()])}).strict();m({selection:pk,scopeOptions:y(Ch),filterOptions:j7,populations:y(mk).min(1)}).strict().superRefine((e,a)=>{const s=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],r=e.populations.map(u=>u.queryClass);(r.length!==s.length||r.some((u,f)=>u!==s[f]))&&a.addIssue({code:Se.custom,path:["populations"],message:"Populations must exactly match the selected query class order"})});function O7(e,a){let s=e;for(const[r,u]of Object.entries(a))s=s.split(`{${r}}`).join(u);return s.trim()}const S0=o().regex(/^[a-f0-9]{64}$/),Fn=o().trim().min(1).max(256),Na=o().trim().min(1).max(4e3),j0=o().datetime(),od=o().regex(/^qtw_[a-f0-9]{64}$/),hk=o().regex(/^qtp_[a-f0-9]{64}$/),A0=j(["simple","advanced"]),fk=m({templateId:Fn,templateVersion:o().trim().min(1).max(256),template:Na,bindings:Le(o().trim().min(1).max(128),o().trim().min(1).max(128)),output:Na}).strict(),q7=m({source:j(["manual","query-set","template","research","discovery"]),sourceId:Fn.nullable(),capturedAt:o().datetime(),template:fk.optional()}).strict().superRefine((e,a)=>{e.source==="template"&&e.template===void 0&&a.addIssue({code:Se.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&a.addIssue({code:Se.custom,path:["template"],message:"Only a template query may carry template provenance."})}),B7=qe("source",[m({source:D("manual"),text:Na}).strict(),m({source:D("template"),templateId:Fn,templateVersion:o().trim().min(1).max(256),template:Na}).strict(),m({source:D("research"),researchRunQueryId:Fn}).strict(),m({source:D("discovery"),discoveryProbeId:Fn}).strict()]),C0=m({targetKeys:y(me).optional(),groupKeys:y(me).optional(),marketKeys:y(me).optional()}).strict(),P7=m({providers:y(ht).min(1),models:Le(ht,o().trim().min(1)),location:o().trim().min(1).nullable()}).strict(),M7=m({input:B7,audience:C0.optional(),contexts:y(P7).min(1).optional(),queryClass:rr.optional()}).strict(),I7=m({queryId:Fn.optional(),queryText:Na.optional(),audience:C0.optional()}).strict().superRefine((e,a)=>{e.queryId===void 0==(e.queryText===void 0)&&a.addIssue({code:Se.custom,message:"Provide exactly one of queryId or queryText."})}),V7=m({queryId:Fn,audience:C0.optional(),text:Na.optional(),queryClass:Qe([rr,ce()]).optional()}).strict().superRefine((e,a)=>{e.text===void 0&&e.queryClass===void 0&&a.addIssue({code:Se.custom,message:"Provide query text or a classification change."})}),L7=m({additions:y(M7),removals:y(I7),edits:y(V7).optional()}).strict(),U7=L7.extend({expectedWorkspaceVersion:od}).strict();U7.extend({previewToken:hk,reviewedAt:j0}).strict();const G7=m({stableKey:me,label:o().trim().min(1)}).strict(),$7=m({stableKey:me,parentGroupKey:me.optional(),label:o().trim().min(1),targetKeys:y(me)}).strict(),K7=m({stableKey:me,groupKey:me.optional(),label:o().trim().min(1),usageEdges:y(f0)}).strict(),H7=m({targetKey:me,groupKeys:y(me),marketKeys:y(me),queryClass:rr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(ad).min(1)}).strict(),gk=m({queryId:Fn,queryText:Na,normalizedText:Na,provenance:q7.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:o().datetime().nullable(),assignments:y(H7)}).strict(),Q7=m({researchRunId:Fn,researchRunQueryId:Fn,queryText:Na,createdAt:o().datetime()}).strict(),F7=m({discoverySessionId:Fn,discoveryProbeId:Fn,queryText:Na,createdAt:o().datetime()}).strict();m({mode:A0,workspaceVersion:od,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),defaultContexts:y(ad),targets:y(G7),groups:y($7),markets:y(K7),tracked:y(gk),savedSources:m({research:y(Q7),discovery:y(F7)}).strict()}).strict();const gu=m({queryId:Fn,queryText:Na,assignmentCount:d().int().nonnegative()}).strict(),yk=m({added:y(gu),removed:y(gu),reused:y(gu),unchanged:y(gu),noOp:C()}).strict(),bk=m({existingNodes:d().int().nonnegative(),existingProviderCalls:d().int().nonnegative(),nextSweepNodes:d().int().nonnegative(),nextSweepProviderCalls:d().int().nonnegative(),addedNodes:d().int().nonnegative(),addedProviderCalls:d().int().nonnegative(),removedNodes:d().int().nonnegative(),removedProviderCalls:d().int().nonnegative()}).strict();m({mode:A0,workspaceVersion:od,previewToken:hk,reviewedAt:j0,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),tracked:y(gk),diff:yk,workload:bk}).strict();m({committed:C(),mode:A0,workspaceVersion:od,reviewedAt:j0,active:m({revision:d().int().positive(),compiledChecksum:S0}).strict().nullable(),diff:yk,workload:bk}).strict();const rd=j(["complete","partial","failed","unsupported"]);rd.enum;j(["proposed","alias","shared","unmatched","excluded"]);j(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const Z7=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Y7=m({kind:j(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),tv=m({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),N0=m({primary:tv,aliases:y(tv).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Y7).optional()}).strict();m({sitemapUrl:o().url().refine(e=>{try{const a=new URL(e).protocol;return a==="http:"||a==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:N0,maxUrls:d().int().positive().max(1e4).optional()}).strict();const Zp=m({url:o(),canonicalUrl:o().nullable(),classification:j(["shared","unmatched","excluded"]),reason:j(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,a)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||a.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),X7=m({classification:D("proposed"),reason:D("primary-match"),stableKey:Zt,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),J7=m({classification:D("alias"),reason:D("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Zt}).strict(),W7=m({kind:Z7,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();m({proposed:y(X7),aliases:y(J7),shared:y(Zp),unmatched:y(Zp),excluded:y(Zp),diagnostics:y(W7)}).strict().superRefine((e,a)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||a.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const _0=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),vk=j(["baseline","target"]),xk=j(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),Gs=Qe([m({numerator:d().int().nonnegative(),denominator:d().int().positive(),rate:d().min(0).max(1)}).strict(),m({numerator:ce(),denominator:ce(),rate:ce(),reason:xk}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),ez=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),tz=m({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:ez,context:Yt.nullable(),requestedModel:o().trim().min(1).optional()}).strict();m({schemaVersion:D(1),expectedSlots:y(tz)}).strict().superRefine((e,a)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&a.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const ld=m({executed:d().int().nonnegative(),expected:d().int().nonnegative(),complete:C(),sourceComplete:C(),sourceCompleteObservations:d().int().nonnegative(),answerComplete:C()}).strict(),nv=Qe([m({domain:o().trim().min(1),own:C(),presentIn:d().int().nonnegative(),of:d().int().positive()}).strict(),m({domain:o().trim().min(1),own:C(),presentIn:ce(),of:ce(),reason:xk}).strict()]),nz=m({domains:y(nv),providers:y(m({provider:ht,domains:y(nv)}).strict())}).strict(),az=m({provider:ht,completeness:ld,answerCoverage:Gs}).strict(),iz=m({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:ld,answerCoverage:Gs,targetCoverage:Gs,sov:nz,providers:y(az)}).strict(),sz=m({provider:ht,completeness:ld,citationCoverage:Gs,mentionCoverage:Gs}).strict(),oz=m({id:o().trim().min(1),label:o().trim().min(1),completeness:ld,citationCoverage:Gs,mentionCoverage:Gs,providers:y(sz)}).strict(),kk=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:vk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:C(),historical:C(),evidenceComplete:C(),classification:_0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),rz=m({sourceUrl:o(),normalizedUrl:o().nullable(),classification:_0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),lz=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:vk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),queryClass:Qe([j(["branded","non-brand"]),ce()]),mentioned:C().nullable(),cited:C().nullable(),sources:y(rz),sourceCount:d().int().nonnegative(),sourcesTruncated:C(),bridged:C(),historical:C(),evidenceComplete:C()}).strict(),cz=m({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),uz=m({id:o().trim().min(1),status:j(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();m({revision:d().int().positive(),run:uz.nullable(),groups:y(iz),targets:y(oz),evidence:y(kk),diagnostics:cz}).strict();m({property:m({targetKey:me,label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:b0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:Jo(kk).optional(),answers:Jo(lz).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const z0=j(["used","not-used","unknown","not-applicable"]);z0.enum;const E0=j(["native-auto-v1","search-required-v1"]);E0.enum;const _a=o().trim().min(1),Ml=o().trim().min(1),dz=o().trim().min(1),ot=d().int().nonnegative(),Il=m({state:b0,displayedRunId:_a.nullable(),planRevision:d().int().positive(),completedAt:o().datetime().nullable()}).strict(),Ji=m({targetKey:me,label:Ml}).strict(),Zn={runId:_a.optional(),provider:ht.optional(),location:dz.optional()},zl=o().trim().min(1);m({runId:Zn.runId,groupKey:me.optional(),queryClass:Ea.default("non-brand"),provider:Zn.provider,location:Zn.location,limit:d().int().positive().max(50).optional()}).strict();const mz=Ji.extend({mentionCoverage:zt,citationCoverage:zt,flags:ot,recommendedInstead:y(m({name:zl,occurrences:ot}).strict()).max(5),recommendedInsteadTotal:ot,recommendedInsteadTruncated:C()}).strict().superRefine((e,a)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&a.addIssue({code:Se.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&a.addIssue({code:Se.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),pz=m({groupKey:me,label:Ml,propertyCount:ot,propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),hz=m({eligiblePropertyCount:ot,strongest:y(Ji.extend({mentionCoverage:zt.options[0],citationCoverage:zt}).strict()).max(50),weakest:y(Ji.extend({mentionCoverage:zt.options[0],citationCoverage:zt}).strict()).max(50),excluded:y(Ji.extend({reason:sd}).strict()),truncated:C()}).strict();m({portfolio:m({groupKey:me.nullable(),label:Ml.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),measurement:Il,queryClass:Ea,metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),weakestProperties:y(mz),mentionRanking:hz,markets:y(pz),totalProperties:ot,truncated:C()}).strict();m({targetKey:me,runId:Zn.runId,provider:Zn.provider,location:Zn.location,queryClass:Ea.optional(),offset:d().int().nonnegative().optional(),limit:d().int().positive().max(100).optional()}).strict();j(["answered","missing"]);const Nh={queryId:_a,text:Ml,class:h0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},fz=qe("status",[m({resultId:_a,...Nh,status:D("answered"),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(zl),answerExcerpt:o().nullable()}).strict(),m({resultId:ce(),...Nh,status:D("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(zl).length(0),answerExcerpt:ce()}).strict()]);m({property:Ji,measurement:Il,queryClass:Ea,questions:y(fz),total:ot,truncated:C()}).strict();m({targetKey:me,resultId:_a}).strict();const gz=m({url:_a,classification:_0,matchedTargetKeys:y(me),assigned:C(),historical:C(),evidenceComplete:C()}).strict().superRefine((e,a)=>{e.assigned!==(e.classification==="assigned")&&a.addIssue({code:Se.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});m({property:Ji,measurement:Il,question:m({resultId:_a,...Nh,status:D("answered")}).strict(),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(zl),answer:o().nullable(),sources:y(gz),captureStatus:Qe([rd,ce()]),retrievalStatus:Qe([z0,ce()]),retrievalContract:Qe([E0,ce()])}).strict();m({targetKey:me,runId:Zn.runId,provider:Zn.provider,location:Zn.location,queryClass:Ea.optional(),limit:d().int().positive().max(50).optional()}).strict();const yz=qe("state",[m({state:D("available"),answeredResults:ot,targetMissResults:ot,recommendationOccurrences:ot}).strict(),m({state:D("unavailable"),reason:sd}).strict()]),bz=m({name:zl,occurrences:ot,providers:y(ht).max(5),providerTotal:ot,providersTruncated:C(),questions:y(Ml).max(5),questionTotal:ot,questionsTruncated:C()}).strict().superRefine((e,a)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&a.addIssue({code:Se.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&a.addIssue({code:Se.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&a.addIssue({code:Se.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});m({property:Ji,measurement:Il,queryClass:Ea,basis:yz,competitors:y(bz),total:ot,truncated:C()}).strict();m({runId:Zn.runId,scope:y0.default("all"),groupKey:me.optional(),targetKey:me.optional(),queryClass:Ea.default("all"),provider:Zn.provider,location:Zn.location,limit:d().int().positive().max(50).optional()}).strict().superRefine((e,a)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&a.addIssue({code:Se.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&a.addIssue({code:Se.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&a.addIssue({code:Se.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const wk=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),Sk=Il.extend({executionIdentity:_a.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),ml=qe("state",[m({state:D("available"),previous:zt,current:zt,delta:d()}).strict().superRefine((e,a)=>{if(e.previous.state!=="available"||e.current.state!=="available"){a.addIssue({code:Se.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&a.addIssue({code:Se.custom,path:["delta"],message:"Delta must equal current minus previous"})}),m({state:D("unavailable"),reason:sd}).strict()]);m({current:Sk,comparison:qe("state",[m({state:D("available"),previous:m({displayedRunId:_a,planRevision:d().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:_a,measurementScope:j(["full","spot_check"])}).strict(),metrics:m({propertiesMentioned:ml,mentionCoverage:ml,citationCoverage:ml}).strict(),changedProperties:y(Ji.extend({mentionCoverage:ml,citationCoverage:ml,flags:ot}).strict()),totalProperties:ot,truncated:C()}).strict(),m({state:D("unavailable"),reason:wk}).strict()])}).strict().superRefine((e,a)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){a.addIssue({code:Se.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&a.addIssue({code:Se.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&a.addIssue({code:Se.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});m({runId:Zn.runId}).strict();const vz=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),cd=m({state:D("unavailable"),reason:vz}).strict(),xz=m({state:D("available"),expected:ot,executed:ot,answered:ot,missing:ot}).strict(),kz=qe("state",[xz,cd]).superRefine((e,a)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&a.addIssue({code:Se.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&a.addIssue({code:Se.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),wz=m({state:D("available"),complete:ot,partial:ot,failed:ot,unsupported:ot,notRecorded:ot}).strict(),Sz=qe("state",[wz,cd]),jz=m({state:D("available"),used:ot,notUsed:ot,unknown:ot,notApplicable:ot,notRecorded:ot}).strict(),Az=qe("state",[jz,cd]),Cz=m({state:D("available"),expectedQuestions:ot,answeredQuestions:ot,missingQuestions:ot}).strict(),Nz=qe("state",[Cz,cd]).superRefine((e,a)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&a.addIssue({code:Se.custom,message:"Expected questions must equal answered plus missing"})});m({run:Sk,completeness:kz,capture:Sz,retrieval:Az,population:Nz,comparison:qe("state",[m({state:D("available"),previousDisplayedRunId:_a}).strict(),m({state:D("unavailable"),reason:wk}).strict()])}).strict().superRefine((e,a)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&a.addIssue({code:Se.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&a.addIssue({code:Se.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Wo=o().regex(/^[a-f0-9]{64}$/),za=o().trim().min(1).max(256),Ga=d().int().positive(),av=m({kind:j(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),_z=j(["proposed","included","excluded"]),zz=j(["manual","sitemap"]),T0=m({stableKey:me,label:o().trim().min(1),status:_z,aliases:y(o().trim().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(o().trim().min(1)),source:zz,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),ud=m({providers:y(ht).optional(),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),Ez=j(["branded","non-brand","unclassified"]),Tz=j(["rule","operator"]),jk=m({targetKey:me,queryId:za,contextOverride:ud.optional(),executionContexts:y(ad.extend({executionNodeKey:o().min(1).optional()})).min(1).optional(),queryProvenance:V2.optional(),queryClass:Ez,classificationSource:Tz}).strict().superRefine((e,a)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&a.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),dd=I2,Ak=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(dd)}).strict(),Rz=m({sitemapUrl:o().url(),rule:N0,exclusions:y(o().trim().min(1)),inputChecksum:Wo,reviewedAt:o().datetime().optional()}).strict(),Dz=m({providers:y(ht),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),Ck=L2,Oz=m({defaultContext:Dz,targets:y(T0),assignments:y(jk),groups:y(Ak),reportingScopes:y(Ck).optional(),discovery:Rz.optional()}).strict(),qz=m({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:D(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:Ga.nullable(),authoring:Oz,createdBy:av,updatedBy:av,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),R0=m({targets:d().int().nonnegative(),includedTargets:d().int().nonnegative(),assignments:d().int().nonnegative(),unclassifiedAssignments:d().int().nonnegative(),groups:d().int().nonnegative(),competitors:d().int().nonnegative()}).strict(),Bz=m({code:o().trim().min(1),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict(),Nk=m({etag:o().trim().min(1),changed:C(),warnings:y(Bz),counts:R0}).strict();m({draft:qz.nullable(),etag:o().trim().min(1).nullable()}).strict();Jo(T0);Jo(jk);Jo(Ak);m({search:o().optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(g0).optional()}).strict();m({expectedActiveRevision:Ga.nullable()}).strict();m({sitemapUrl:o().url(),rule:N0,exclusions:y(o().trim().min(1)).optional()}).strict();const Pz=m({discoveryIdentity:o().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:me.optional(),label:o().trim().min(1).optional()}).strict();m({selections:y(Pz),selectedTargetKeys:y(me).optional()}).strict().superRefine((e,a)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&a.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&a.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});m({target:T0}).strict();m({targetKey:me,label:o().trim().min(1)}).strict();m({targetKey:me,mergedKeys:y(me).min(1)}).strict();m({targetKey:me,cleanup:D("assignments-and-group-memberships").optional()}).strict();m({targetKey:me,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const _k={targetKeys:y(me).optional(),groupKeys:y(me).optional()};function zk(e,a){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&a.addIssue({code:"custom",message:"At least one Target or group selector is required."})}m(_k).strict().superRefine(zk);const Mz=m({..._k,queryIds:y(za).min(1),contextOverride:ud.optional()}).strict().superRefine(zk);Qe([m({targetKey:me,queryIds:y(za).min(1),contextOverride:ud.optional()}).strict(),Mz]);const Iz=m({groupKey:me,label:o().trim().min(1),memberCount:d().int().positive()}).strict();m({draftEtag:o().trim().min(1),groups:y(Iz),resolvedTargetKeys:y(me),overlapCount:d().int().nonnegative(),assignments:m({requested:d().int().nonnegative(),added:d().int().nonnegative(),alreadyPresent:d().int().nonnegative()}).strict(),execution:m({addedNodes:d().int().nonnegative(),addedProviderCalls:d().int().nonnegative(),fullRunNodes:d().int().nonnegative(),fullRunProviderCalls:d().int().nonnegative()}).strict()}).strict();m({pairs:y(m({targetKey:me,queryId:za}).strict()).min(1),contextOverride:ud.optional()}).strict();Qe([m({targetKey:me,queryId:za}).strict(),m({targetKeys:y(me).min(1),queryId:za}).strict()]);m({targetKey:me}).strict();m({queryClass:h0,assignments:y(m({targetKey:me,queryId:za}).strict()).min(1)}).strict();m({group:m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.nullable().optional(),targetKeys:y(me),competitors:y(dd).optional()}).strict()}).strict();m({market:Ck}).strict();m({groupKey:me}).strict();m({groupKey:me,competitor:dd}).strict();m({expectedActiveRevision:Ga,groupKey:me,domain:o().trim().min(1).refine(e=>ql(e)!==null,"A competitor domain must be a valid hostname"),label:o().trim().min(1).optional(),aliases:y(o().trim().min(1)).optional()}).strict();Nk.extend({groupKey:me,competitor:dd,draftCreated:C(),published:m({revision:Ga,competitorsChanged:D(!1)}).strict()}).strict();m({groupKey:me,competitorKey:me}).strict();const Vu=m({ruleId:o().trim().min(1),severity:j(["fail","warn"]),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict();qe("ok",[m({ok:D(!0),compiledChecksum:Wo,checks:y(Vu),counts:R0,plan:id}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Vu).min(1)}).strict()]);const iv=m({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),Vz=m({activeRevision:Ga.nullable(),targets:iv,groups:iv,assignments:m({added:d().int().nonnegative(),removed:d().int().nonnegative(),reclassified:d().int().nonnegative()}).strict(),execution:m({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();qe("ok",[m({ok:D(!0),compiledChecksum:Wo,checks:y(Vu),counts:R0,plan:id,diff:Vz}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Vu).min(1),diff:ce()}).strict()]);m({expectedActiveRevision:Ga.nullable(),expectedCompiledChecksum:Wo}).strict();m({published:C(),active:m({revision:Ga,checksum:Wo,compiledChecksum:Wo,createdAt:o().datetime(),plan:id}).strict()}).strict();m({discarded:C()}).strict();m({expectedActiveRevision:Ga}).strict();m({deactivated:C(),previousRevision:Ga.nullable()}).strict();const Lz=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),Uz=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),Gz=j(["simple","draft-only","active-v1","active-v2"]);m({state:Lz,nextAction:Uz,mode:Gz,answerVisibilityProviderReady:C(),activeRevision:Ga.nullable(),activeSchemaVersion:Qe([D(1),D(2)]).nullable(),draft:m({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const Ek=m({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:d().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$z=m({queryId:za,queryText:o().min(1),position:d().int().nonnegative()}).strict();Ek.extend({items:y($z)}).strict();m({querySets:y(Ek)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(za)}).strict();const Kz=m({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();m({templates:y(Kz)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();m({bindings:y(Le(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();m({created:y(m({queryId:za,queryText:o().min(1)}).strict()),existing:y(m({queryId:za,queryText:o().min(1)}).strict())}).strict();const Lu=o().regex(/^[a-f0-9]{64}$/),md=d().int().positive();m({stableKey:me,kind:j(["target","group"]),retiredAt:o().datetime().nullable()}).strict();m({csv:o()}).strict();j(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const Hz=j(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),_h=m({dataRow:md,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),pl=_h.extend({reason:Hz}),Qz=m({source:j(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:me,kind:j(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),Fz=m({proposedGroupKey:me,evidence:y(Qz).min(1)}).strict(),Zz=qe("status",[_h.extend({status:D("matched"),targetKey:me,groupKey:me}).strict(),pl.extend({status:D("ambiguous"),candidateTargetKeys:y(me).min(1).optional(),candidateGroupKeys:y(me).min(1).optional()}).strict(),pl.extend({status:D("unmatched")}).strict(),pl.extend({status:D("invalid"),groupKeyConflict:Fz.optional()}).strict(),_h.extend({status:D("duplicate"),duplicateOfRow:md,targetKey:me,groupKey:me}).strict(),pl.extend({status:D("proposed"),targetKey:me}).strict(),pl.extend({status:D("excluded"),targetKey:me}).strict()]),Yz=m({normalizedGroupLabel:o(),groupKey:me,label:o().trim().min(1),action:j(["create","extend"]),matchedRows:y(md),targetKeys:y(me),addedTargetKeys:y(me),unchangedTargetKeys:y(me)}).strict(),Xz=m({dataRows:d().int().nonnegative(),matchedRows:d().int().nonnegative(),ambiguousRows:d().int().nonnegative(),unmatchedRows:d().int().nonnegative(),invalidRows:d().int().nonnegative(),duplicateRows:d().int().nonnegative(),proposedRows:d().int().nonnegative(),excludedRows:d().int().nonnegative(),needsAttention:d().int().nonnegative(),groupsReady:d().int().nonnegative(),groupsToCreate:d().int().nonnegative(),groupsToExtend:d().int().nonnegative(),membershipsReady:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();m({draftEtag:o().trim().min(1),sourceChecksum:Lu,previewChecksum:Lu,rows:y(Zz),groupChanges:y(Yz),counts:Xz}).strict();m({csv:o(),sourceChecksum:Lu,previewChecksum:Lu,acceptedRows:y(md).min(1)}).strict().superRefine((e,a)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&a.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});Nk.extend({appliedRows:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();const Tk=j(["introduced","repointed","retired"]),Jz=Tk.enum;m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:Tk,confirmed:C(),sourceUrl:o().url(),note:o().min(1)});const Wz=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];Jz.repointed;new Set(Wz.map(e=>e.modelId.toLowerCase()));const eE=j(["not-exposed","no-known-change","known-change"]);eE.enum;const tE=m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:C(),sourceUrl:o().url()}),nE=m({status:j(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(tE),changeCount:d().int().nonnegative(),unverifiedChangeCount:d().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:C()}),aE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function iE(e){const a=e.trim().toLowerCase();return aE[a]??e.charAt(0).toUpperCase()+e.slice(1)}function Yp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function hl(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Xp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function sE(e,a){const s=iE(e),r=Array.isArray(a.changes)?a.changes:[],u=Yp(a.changeCount)||r.length,f=Math.min(u,Yp(a.unverifiedChangeCount)||Yp(a.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=hl(a.knownGoodAsOf),b=a.checkedThroughPeriodEnd!==!1,v={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...v,confirmedDates:Xp(r.filter(S=>S.confirmed!==!1).map(S=>hl(S.date))),unconfirmedDates:Xp(r.filter(S=>S.confirmed===!1).map(S=>hl(S.date)))};const k=Xp([hl(a.firstChangeDate),hl(a.lastChangeDate)]);return u===0?{...v,confirmedDates:[],unconfirmedDates:[]}:f===0?{...v,confirmedDates:k,unconfirmedDates:[]}:v.confirmedCount===0?{...v,confirmedDates:[],unconfirmedDates:k}:{...v,confirmedDates:[],unconfirmedDates:[]}}function oE(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function sv(e,a){return e.length===0?null:e.length===1&&a<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function rE(e){const a=sv(e.confirmedDates,e.confirmedCount),s=sv(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return a?`${r} was updated ${a}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(a&&s)return`${r} was updated ${a}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function ov(e){const a=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return a.length===0?null:`We last checked for model updates on ${a.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function RH(e){const a=Object.entries(e??{}).map(([v,k])=>sE(v,k??{})).sort((v,k)=>v.engine.localeCompare(k.engine));if(a.length===0)return null;const s=a.filter(v=>v.confirmedCount+v.unconfirmedCount>0);if(s.length===0){const v=[...new Set(a.map(E=>E.engine))],k=v.length>1,S=ov(a),A=[...new Set(a.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),N=S??(A.length>0?`We last checked for model updates on ${A[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${oE(v)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${N?` ${N}`:""}`}}const r=s.reduce((v,k)=>v+k.confirmedCount+k.unconfirmedCount,0),u=s.some(v=>v.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=ov(a);return{kind:"change",text:`${s.map(rE).join(" ")} ${g}${b?` ${b}`:""}`}}const Ls=m({slope:d(),intercept:d(),r2:d(),start:d(),end:d(),n:d(),startIndex:d(),endIndex:d()}),lE=j(["gsc","ga4","gbp"]);m({id:o(),domain:o(),connectionType:lE,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const cE=m({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:d(),impressions:d(),ctr:d(),position:d()});j(["clicks","impressions","date"]);m({rows:y(cE),totalMatching:d(),truncated:C(),latestAvailableDate:o().nullable()});const uE=m({date:o(),clicks:d(),impressions:d(),ctr:d(),position:d().nullable()}),dE=m({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:d().nullable()}),mE=m({clicks:Ls.nullable(),impressions:Ls.nullable(),ctr:Ls.nullable(),position:Ls.nullable()}),rv=m({startDate:o(),endDate:o(),clicks:d(),impressions:d(),ctr:d().nullable(),position:d().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),pE=m({days:d(),basis:j(["prior-window","split-window"]).optional(),prior:rv,trailing:rv,comparable:C(),change:m({clicks:d().nullable(),impressions:d().nullable(),ctr:d().nullable(),position:d().nullable()})});m({totals:m({clicks:d(),impressions:d(),ctr:d(),position:d().nullable(),positionDays:d(),days:d()}),daily:y(uE),window:dE.optional(),trends:mE.optional(),periodComparison:pE.nullable().optional()});const hE=m({page:o(),clicks:d(),impressions:d(),ctr:d()});m({rows:y(hE),totals:m({clicks:d(),impressions:d(),ctr:d(),days:d(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:C()}).nullable(),totalsSource:D("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const zh=m({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:C().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});j(["stable","reindexed","deindexed","still-missing","new"]);const fE=m({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),gE=m({reason:o(),count:d(),urls:y(zh).default([])});m({summary:m({total:d(),indexed:d(),notIndexed:d(),deindexed:d(),percentage:d()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(zh).default([]),notIndexed:y(zh).default([]),deindexed:y(fE).default([]),reasonGroups:y(gE).default([])});m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const yE=m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:j(["success","error"]),error:o().optional()});m({summary:m({total:d().int().nonnegative(),succeeded:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(yE).default([])});m({date:o(),indexed:d(),notIndexed:d(),unknownPages:d().default(0),verifiedByInspection:d().default(0),derivedFromImpressions:d().default(0),reasonBreakdown:Le(o(),d()).default({})});const bE=m({siteUrl:o(),permissionLevel:o()});m({sites:y(bE).default([])});const vE=m({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),Rk=m({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:C().optional(),isSitemapsIndex:C().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(vE).optional()});m({sitemaps:y(Rk).default([]),summary:m({total:d().int().nonnegative(),indexes:d().int().nonnegative(),files:d().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});m({sitemapUrls:y(o().url().refine(e=>{const a=new URL(e).protocol;return a==="http:"||a==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const xE=m({sitemapUrl:o(),status:j(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});m({summary:m({total:d().int().nonnegative(),accepted:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(xE)});m({sitemaps:y(Rk),primarySitemapUrl:o(),run:m({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const at=o().trim().min(1),lv=o().regex(/^[a-f0-9]{64}$/i);function kE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const a=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(a.getTime())&&a.toISOString().slice(0,10)===e}const Ua=o().refine(kE,{message:"Expected a calendar date as YYYY-MM-DD."});function wE(e,a){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${a}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const SE=j(["not-connected","selection-required","connected","stale"]),yu=SE.enum,Dk=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);Dk.enum;const D0=j(["enabled","paused","removed","unknown"]);D0.enum;const Ok=j(["enabled","hidden","removed","unknown"]);Ok.enum;const O0=j(["customer","campaign"]);O0.enum;const qk=j(["customer-goal","campaign-goal","custom-goal"]);qk.enum;const Bk=m({loginCustomerId:at.nullable(),customerId:at.nullable(),selectedAt:o().nullable()}).strict(),Jp=m({id:at,projectId:at,scopes:y(o()).default([]),selection:Bk,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Eh=m({resourceName:at,customerId:at,parentCustomerId:at.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:C(),hidden:C(),testAccount:C(),level:d().int().nonnegative(),status:Dk}).strict(),jE=m({customers:y(Eh),totalAccessible:d().int().nonnegative(),truncated:C(),selection:Bk,fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(yu["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(yu["selection-required"]),connection:Jp,selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(yu.connected),connection:Jp,selectedCustomer:Eh}).strict(),m({connected:D(!0),status:D(yu.stale),connection:Jp,selectedCustomer:Eh}).strict()]);const AE=m({id:at,resourceName:at,name:o(),status:D0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),CE=m({id:at,resourceName:at,name:o(),status:Ok,category:o(),origin:o(),primaryForGoal:C(),includeInConversionsMetric:C()}).strict(),NE=m({category:o(),origin:o(),biddable:C()}).strict(),_E=m({campaignId:at,category:o(),origin:o(),biddable:C()}).strict(),zE=m({id:at,name:o(),conversionActionIds:y(at)}).strict(),EE=m({campaignId:at,goalConfigLevel:O0,customGoalId:at.nullable()}).strict(),TE=m({customerId:at,fetchedAt:o(),campaigns:y(AE),conversionActions:y(CE),customerConversionGoals:y(NE),campaignConversionGoals:y(_E),campaignConversionGoalsComplete:C().optional(),customConversionGoals:y(zE),campaignGoalConfigurations:y(EE)}).strict(),RE=m({source:qk,category:o().nullable(),origin:o().nullable(),customGoalId:at.nullable(),biddable:C().nullable(),conversionActionIds:y(at),primaryConversionActionIds:y(at),secondaryConversionActionIds:y(at),missingConversionActionIds:y(at)}).strict(),DE=m({campaignId:at,goalConfigLevel:O0,customGoalId:at.nullable(),missingCustomGoalId:at.nullable(),goals:y(RE)}).strict();m({customerId:at,derivedAt:o(),campaigns:y(DE)}).strict();const Pk=50,Th=31,OE=Pk*Th,qE=m({campaignIds:y(at).min(1).max(Pk),startDate:Ua,endDate:Ua}).strict().superRefine((e,a)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&a.addIssue({code:Se.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){a.addIssue({code:Se.custom,path:["endDate"],message:"endDate must not precede startDate."});return}wE(e.startDate,e.endDate)>Th&&a.addIssue({code:Se.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Th} calendar days.`})}),BE=m({campaignId:at,date:Ua,impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),conversionValueMicros:d().int().nonnegative().nullable()}).strict(),PE=m({query:qE,rows:y(BE).max(OE),truncated:C(),fetchedAt:o()}).strict(),Mk=j(["accessible-customers","inventory","campaign-metrics"]),Wp=Mk.enum,q0=m({id:at,projectId:at,connectionId:at,runId:at,kind:Mk,customerId:at.nullable(),payloadChecksum:lv,rawPayloadSha256:lv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),ME=qe("kind",[m({kind:D(Wp["accessible-customers"]),data:jE}).strict(),m({kind:D(Wp.inventory),data:TE}).strict(),m({kind:D(Wp["campaign-metrics"]),data:PE}).strict()]),IE=m({metadata:q0,payload:ME}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Se.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),VE=j(["7d","14d","30d"]),B0=m({impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),conversionValueMicros:d().int().nonnegative().nullable(),ctr:d().nullable(),cpcMicros:d().int().nonnegative().nullable(),conversionRate:d().nullable(),costPerConversionMicros:d().int().nonnegative().nullable()}),LE=m({date:Ua,origin:j(["provider","filled"]),impressions:d().int().nonnegative(),clicks:d().int().nonnegative(),costMicros:d().int().nonnegative(),conversions:d().nonnegative(),ctr:d().nullable()}),UE=m({campaignId:at,name:o().nullable(),status:D0,totals:B0}),GE=m({snapshotId:at,capturedAt:o(),customerId:at,currencyCode:o().nullable(),timeZone:o().nullable(),asOfDate:Ua,openDate:Ua.nullable(),truncated:C(),campaignsQueried:d().int().nonnegative(),campaignsInInventory:d().int().nonnegative()}),$E=m({startDate:Ua,endDate:Ua,days:d().int().positive(),totals:B0}),KE=m({days:d().int().positive(),prior:$E,change:m({impressions:d().nullable(),clicks:d().nullable(),costMicros:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),conversionRate:d().nullable()})});m({window:VE,startDate:Ua,endDate:Ua,days:d().int().positive(),totals:B0,daily:y(LE),campaigns:y(UE),comparison:KE.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:GE.nullable()});const nt=o().trim().min(1),cv=o().regex(/^[a-f0-9]{64}$/i),HE=j(["not-connected","selection-required","connected","stale"]),bu=HE.enum,QE=j(["live","draft"]),Ik=QE.enum,Eu=m({accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),selectedAt:o().nullable()}).strict(),eh=m({id:nt,projectId:nt,scopes:y(o()).default([]),selection:Eu,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Vk=m({id:nt,path:o(),name:o(),shareData:C().nullable()}).strict(),Lk=m({accountId:nt,id:nt,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),P0=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),FE=m({accounts:y(Vk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containers:y(Lk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containerId:nt,workspaces:y(P0),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();const ZE=m({id:nt,name:o(),type:o(),paused:C(),firingTriggerIds:y(nt),blockingTriggerIds:y(nt),referencedVariableIds:y(nt),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),YE=m({id:nt,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),XE=m({id:nt,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),Uk=j(["recognized","unknown"]),uv=Uk.enum,JE=j(["literal","variable-ref","absent","unknown"]),pd=JE.enum,WE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),lr=m({source:D(pd.absent),literal:ce(),variableRef:ce()}).strict(),cr=m({source:D(pd.unknown),literal:ce(),variableRef:ce()}).strict(),ur=m({source:D(pd["variable-ref"]),literal:ce(),variableRef:WE}).strict();function Vl(e){return m({source:D(pd.literal),literal:e,variableRef:ce()}).strict()}const eT=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tT=o().trim().min(1).max(128).regex(/^[\w-]+$/),nT=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[Vl(o().trim().min(1).max(256)),ur,lr,cr]);const iT=qe("source",[Vl(eT),ur,lr,cr]),sT=qe("source",[Vl(tT),ur,lr,cr]),oT=qe("source",[Vl(nT),ur,lr,cr]),rT=qe("source",[ur,lr,cr]),lT=qe("source",[Vl(aT),ur,lr,cr]),Gk=j(["all-pages","custom-event","filtered","unknown"]);Gk.enum;const dv=m({operator:o().trim().min(1).max(64),value:o().max(2048),negated:C(),ignoreCase:C()}).strict(),cT=m({triggerId:nt,triggerType:o(),eventPredicates:y(dv),hostnamePredicates:y(dv),unsupportedConditionCount:d().int().nonnegative()}).strict(),$k=j(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);$k.enum;const uT=m({tagId:nt,tagType:o(),recognition:Uk,recognitionReason:o().nullable(),conversionId:iT,conversionLabel:sT,value:oT,transactionId:rT,currency:lT,triggerStrategy:Gk,triggerIds:y(nt),triggerPredicates:y(cT),reviewReasons:y($k)}).strict().superRefine((e,a)=>{e.recognition===uv.recognized&&e.recognitionReason!==null&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===uv.unknown&&!e.recognitionReason&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Kk=m({accountId:nt,containerId:nt,workspaceId:nt.nullable(),tags:y(ZE),triggers:y(YE),variables:y(XE),googleAdsTagAssessments:y(uT).default([])}).strict(),dT=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:C()}).strict(),Hk=m({source:D(Ik.live),version:dT,graph:Kk,fetchedAt:o()}).strict(),Qk=m({source:D(Ik.draft),workspace:P0,graph:Kk,conflictCount:d().int().nonnegative(),fetchedAt:o()}).strict(),mT=m({account:Vk,container:Lk,workspaces:y(P0),live:Hk.nullable(),draft:Qk.nullable(),fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(bu["not-connected"]),connection:ce(),selection:ce()}).strict(),m({connected:D(!0),status:D(bu["selection-required"]),connection:eh,selection:Eu}).strict(),m({connected:D(!0),status:D(bu.connected),connection:eh,selection:Eu}).strict(),m({connected:D(!0),status:D(bu.stale),connection:eh,selection:Eu}).strict()]);const Fk=j(["accounts","container","live","draft"]),vu=Fk.enum,M0=m({id:nt,projectId:nt,connectionId:nt,runId:nt,kind:Fk,accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),payloadChecksum:cv,rawPayloadSha256:cv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),pT=qe("kind",[m({kind:D(vu.accounts),data:FE}).strict(),m({kind:D(vu.container),data:mT}).strict(),m({kind:D(vu.live),data:Hk}).strict(),m({kind:D(vu.draft),data:Qk}).strict()]),hT=m({metadata:M0,payload:pT}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Se.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),On=o().trim().min(1),fT=o().trim().min(1).refine(e=>ql(e)!==null,"Expected a hostname or http(s) URL."),I0=j(["configured","statically-consistent","runtime-unverified","observed"]);I0.enum;const Zk=j(["pass","fail","unknown"]);Zk.enum;const Yk=j(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);Yk.enum;const Xk=m({id:On,projectId:On,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:m({customerId:On,conversionActionId:On,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(On).max(50).default([]),requireBiddableGoal:C().default(!0),requirePrimaryAction:C().default(!0)}).strict(),gtm:m({accountId:On,containerId:On,tagId:On,triggerIds:y(On).default([]),variableIds:y(On).default([])}).strict(),runtime:m({verificationRequired:C().default(!0),requireTransactionId:C().default(!0),requireValue:C().default(!0),requireCurrency:C().default(!0),productionHosts:y(fT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();Xk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const Jk=j(["not-run","consistent","inconsistent"]);Jk.enum;const Wk=j(["not-run","not-observed","observed"]);Wk.enum;m({staticCheck:Jk,runtimeVerificationRequired:C(),runtimeObservation:Wk}).strict();const gT=m({code:Yk,subject:o().trim().min(1),outcome:Zk,status:I0,evidenceIds:y(On).default([])}).strict(),yT=m({contract:Xk,status:I0,findings:y(gT),evaluatedAt:o()}).strict(),mv=m({id:On,name:o(),detail:o(),active:C()});m({googleAds:m({customerId:On.nullable(),syncedAt:o().nullable(),conversionActions:y(mv)}),gtm:m({containerId:On.nullable(),syncedAt:o().nullable(),tags:y(mv)})});const wl=o().trim().min(1);function pv(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const bT=/^[\w-]+$/;function V0(e){const a=e.trim();return bT.test(a)?a:null}function vT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??V0(a)}function xT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:V0(s)}function kT(e,a,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===a&&u[2]===s?u[3]:null:V0(r)}function wT(e){const a=pv(e.customerId);if(!a)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:a};if(e.loginCustomerId===void 0)return{customerId:a};const s=pv(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function ST(e){const a=vT(e.accountId);if(!a)return null;const s=xT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=kT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const hd=j(["google-ads","gtm"]);hd.enum;m({provider:hd,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();m({provider:hd,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();m({loginCustomerId:wl.nullable().optional(),customerId:wl}).strict().superRefine((e,a)=>{wT(e)||a.addIssue({code:Se.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});m({accountId:wl,containerId:wl,workspaceId:wl.optional()}).strict().superRefine((e,a)=>{ST(e)||a.addIssue({code:Se.custom,message:"GTM resource paths must match the selected account and container."})});m({provider:hd,disconnected:C()}).strict();const ew=100;m({snapshots:y(q0).max(ew),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:IE}).strict();m({snapshots:y(M0).max(ew),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:hT}).strict();m({assessment:yT,googleAdsSnapshot:q0.nullable(),gtmSnapshot:M0.nullable()}).strict();const jT=m({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});m({accounts:y(jT),total:d().int().nonnegative()});const AT=m({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Le(o(),qn()).nullable(),regularHours:Le(o(),qn()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:C(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});m({locations:y(AT),totalDiscovered:d().int().nonnegative(),totalSelected:d().int().nonnegative()});m({selectAllNew:C().default(!0),accountName:o().optional(),switchAccount:C().default(!1)});m({selected:C()});m({locationNames:y(o()).optional(),daysOfMetrics:d().int().positive().max(540).optional(),monthsOfKeywords:d().int().positive().max(18).optional()});m({runId:o(),status:o()});const CT=m({locationName:o(),date:o(),metric:o(),value:d().int()});m({metrics:y(CT),total:d().int().nonnegative()});const NT=m({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:d().int().nullable(),valueThreshold:d().int().nullable()});m({keywords:y(NT),total:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)});const _T=m({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:C(),providerType:o().nullable()});m({placeActions:y(_T),total:d().int().nonnegative()});const zT=m({locationName:o(),populatedGroupCount:d().int().nonnegative(),syncedAt:o(),attributes:Le(o(),qn())});m({lodging:y(zT),total:d().int().nonnegative()});const ET=m({name:o(),valueType:o(),values:y(Qe([C(),o()])),unsetValues:y(o()),uris:y(o())}),TT=m({locationName:o(),attributeCount:d().int().nonnegative(),syncedAt:o(),attributes:y(ET)});m({attributes:y(TT),total:d().int().nonnegative()});const RT=m({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Le(o(),qn())});m({places:y(RT),total:d().int().nonnegative()});m({scope:m({locationName:o().nullable(),locationCount:d().int().nonnegative()}),performance:m({totals:Le(o(),d()),recent7d:Le(o(),d()),prior7d:Le(o(),d()),deltaPct:Le(o(),d().nullable())}),freshness:m({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:d().int().nonnegative()}),timeseries:y(m({date:o(),pending:C(),metrics:Le(o(),d())})),keywords:m({total:d().int().nonnegative(),thresholdedCount:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)}),placeActions:m({total:d().int().nonnegative(),hasReservationCta:C(),hasBookingCta:C(),hasDirectMerchantCta:C()}),lodging:m({lodgingLocationCount:d().int().nonnegative(),populatedLodgingCount:d().int().nonnegative(),emptyLodgingCount:d().int().nonnegative()}),profileCompleteness:m({locationCount:d().int().nonnegative(),withSecondaryCategories:d().int().nonnegative(),secondaryCategoryTotal:d().int().nonnegative(),withDescription:d().int().nonnegative(),withServiceArea:d().int().nonnegative(),withHours:d().int().nonnegative(),withPrimaryPhone:d().int().nonnegative(),permanentlyClosed:d().int().nonnegative(),temporarilyClosed:d().int().nonnegative()})});const DT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function OT(e){const a=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(a.length===0)return e;const s=a.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function DH(e){return DT[e]??OT(e)}const qT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],BT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function OH(e){return qT.includes(e)?"conversion":BT.includes(e)?"reach":"other"}m({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const th=m({id:o(),url:o(),httpCode:d().nullable().optional(),inIndex:C().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:d().nullable().optional(),anchorCount:d().nullable().optional(),discoveryDate:o().nullable().optional()});m({summary:m({total:d(),indexed:d(),notIndexed:d(),unknown:d().optional(),percentage:d()}),lastInspectedAt:o().nullable(),indexed:y(th).default([]),notIndexed:y(th).default([]),unknown:y(th).default([]).optional()});m({query:o(),impressions:d(),clicks:d(),ctr:d(),averagePosition:d()});m({date:o(),indexed:d(),notIndexed:d(),unknown:d()});const PT=m({url:o(),status:j(["success","error"]),submittedAt:o(),error:o().optional()});m({summary:m({total:d().int().nonnegative(),succeeded:d().int().nonnegative(),failed:d().int().nonnegative()}),results:y(PT).default([])});const tw=m({url:o(),verified:C()});m({sites:y(tw).default([])});m({connected:C(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});m({connected:C(),domain:o(),siteUrl:o().nullable(),availableSites:y(tw).default([])});m({siteUrl:o()});const MT=m({name:o(),alive:C(),lastUsed:o().nullable()});m({connected:C(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(MT).default([])});const dr=j(["live","staging"]);m({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:dr,createdAt:o(),updatedAt:o()});const hv=m({url:o(),reachable:C(),pageCount:d().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:m({id:d(),slug:o()}).nullable().optional()});m({connected:C(),projectName:o(),defaultEnv:dr,live:hv.nullable(),staging:hv.nullable(),adminUrl:o().nullable().optional()});const IT=m({id:d(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),nw=m({title:o().nullable(),description:o().nullable(),noindex:C().nullable(),writable:C().default(!1),writeTargets:y(o()).default([])}),VT=m({type:o(),json:Le(o(),qn())}),LT=IT.extend({env:dr,content:o(),seo:nw,schemaBlocks:y(VT).default([])}),fv=LT.extend({contentHash:o(),contentSnippet:o()}),aw=m({manualRequired:D(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),UT=m({slug:o(),severity:j(["high","medium","low"]),code:j(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});m({slug:o(),title:o(),status:o(),wordCount:d(),seo:nw,schemaPresent:C(),issues:y(UT).default([])});const GT=m({slug:o(),status:j(["applied","skipped","manual"]),error:o().optional(),manualAssist:aw.optional()});m({env:dr,strategy:j(["plugin","manual"]),results:y(GT)});const $T=m({slug:o(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:aw.optional(),error:o().optional()});m({env:dr,results:y($T)});const KT=m({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:C()});m({env:dr,pages:y(KT)});const HT=m({name:o(),status:j(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});m({projectName:o(),steps:y(HT)});m({slug:o(),live:fv,staging:fv,hasDifferences:C(),differences:m({title:C(),slug:C(),content:C(),seoTitle:C(),seoDescription:C(),noindex:C(),schema:C()})});const QT=m({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:C(),quota:l_.optional(),vertexConfigured:C().optional()}),FT=m({name:o(),displayName:o(),mode:j(["api","browser"]),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o(),tier:j(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:m({source:o(),flags:o()}),modelValidationHint:o()}),gv=m({configured:C()});m({providers:y(QT).default([]),providerCatalog:y(FT).default([]),google:gv,bing:gv});const pa=j(["queued","running","completed","partial","failed","cancelled"]),xn=pa.enum,L0=j(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),ze=L0.enum;m({kind:L0.optional(),status:pa.optional()});const U0=j(["manual","scheduled","config-apply","backfill","probe"]),Qo=U0.enum,fi=j(["cited","not-cited"]),Uu=fi.enum,Gu=j(["visible","not-visible"]);Gu.enum;const El=j(["mentioned","not-mentioned"]);El.enum;const iw=j(["new","cited","lost","emerging","not-cited"]);iw.enum;const ZT=j(["new","mentioned","lost","emerging","not-mentioned"]);ZT.enum;const YT=j([Qo.manual,Qo.probe]);m({kind:D(ze["answer-visibility"]).optional(),trigger:YT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:l7.optional(),location:o().min(1).optional(),allLocations:C().optional(),noLocation:C().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const XT=m({message:o(),raw:qn().optional()}),JT=m({message:o().optional(),providers:Le(o(),XT).optional()}),WT=m({id:o(),projectId:o(),kind:L0,status:pa,trigger:U0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Le(o(),qn()).nullable().optional(),measurementScope:c7.nullable().optional(),measurementExecutionIdentity:W2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:JT.nullable().optional(),queryBasketRevision:d().int().nullable().optional(),createdAt:o()});function G0(e){if(e.providers){const a=Object.entries(e.providers);if(a.length===1){const[s,r]=a[0];return`${s}: ${r.message}`}if(a.length>1)return a.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const fd=m({uri:o(),title:o()}),e9=m({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:Yt.nullable().optional()}),sw=m({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:fi,answerMentioned:C().optional(),visibilityState:Gu.optional(),mentionState:El.optional(),transition:iw.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Qe([rd,ce()]).default(null),sourceCount:d().int().nonnegative().nullable().default(null),resolvedCount:d().int().nonnegative().nullable().default(null),captureVersion:d().int().positive().nullable().default(null),retrievalStatus:Qe([z0,ce()]).default(null),retrievalContract:Qe([E0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(fd).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:Yt.nullable().optional(),supportedContext:e9.nullable().optional(),createdAt:o()});m({snapshots:y(sw),total:d().int().nonnegative()});const t9=m({queryId:o().nullable(),query:o().nullable(),run1State:fi.nullable(),run2State:fi.nullable(),run1AnswerMentioned:C().nullable(),run2AnswerMentioned:C().nullable(),run1VisibilityState:Gu.nullable(),run2VisibilityState:Gu.nullable(),run1MentionState:El.nullable().optional(),run2MentionState:El.nullable().optional(),changed:C(),visibilityChanged:C()});m({run1:o(),run2:o(),diff:y(t9)});const n9=WT.extend({snapshots:y(sw).optional()}),a9=m({totalRuns:d().int().nonnegative(),run:n9.nullable()});m({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:qn().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),requestId:o().nullable().optional(),credentialId:o().nullable().optional(),createdAt:o()});const ow=j(["all","api","browser"]);ow.enum;const i9=j(["yes","no","unknown","not-mentioned"]),yv=y(o().min(1)),bv=m({companyName:o().min(1),domain:o().min(1),queries:yv.optional(),phrases:yv.optional(),competitors:y(o().min(1)).optional(),providers:y(o().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:ow.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).superRefine((e,a)=>{e.queries!==void 0&&e.phrases!==void 0&&a.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});bv.safeExtend({competitors:bv.shape.competitors.default([])});const s9=m({name:o(),count:d().int().nonnegative()}),o9=m({id:o(),name:o(),weight:d(),score:d(),findings:y(m({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),r9=m({url:o(),finalUrl:o(),auditedAt:o(),overallScore:d(),summary:o(),factors:y(o9).default([])}),l9=m({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),c9=m({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:C(),cited:C(),describedAccurately:i9,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(fd).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),u9=m({query:o(),providerResults:y(c9).default([])}),d9=m({totalQueries:d().int().nonnegative(),totalProviders:d().int().nonnegative(),totalComparisons:d().int().nonnegative(),mentionCount:d().int().nonnegative(),citationCount:d().int().nonnegative(),topCompetitors:y(s9).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});m({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:l9,audit:r9,queryResults:y(u9).default([]),summary:d9});const rw=Qe([pa,ce()]),$0=j(["pass","partial","fail"]);$0.enum;const lw=j(["up","down","flat"]);lw.enum;const m9=m({id:o(),name:o(),weight:d(),avgScore:d(),status:$0,pagesPassing:d().int().nonnegative(),pagesPartial:d().int().nonnegative(),pagesFailing:d().int().nonnegative()}),p9=m({factorId:o(),factorName:o(),avgScore:d(),affectedPages:d().int().nonnegative(),totalPages:d().int().nonnegative(),affectedPct:d().int().nonnegative(),topRecommendations:y(o()).default([])});m({project:o(),hasData:C(),runId:o().nullable(),runStatus:rw,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:d(),pagesDiscovered:d().int().nonnegative(),pagesAudited:d().int().nonnegative(),pagesSkipped:d().int().nonnegative(),pagesErrored:d().int().nonnegative(),deltaScore:d().nullable(),trend:Qe([lw,ce()]),previousScore:d().nullable(),previousAuditedAt:o().nullable(),factors:y(m9).default([]),crossCuttingIssues:y(p9).default([]),prioritizedFixes:y(o()).default([])});const cw=m({id:o(),name:o(),weight:d(),score:d()}),h9=m({url:o(),overallScore:d(),status:j(["success","error"]),error:o().nullable().optional(),factors:y(cw).default([])});m({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:d().int().nonnegative(),pages:y(h9).default([])});const f9=m({runId:o(),auditedAt:o(),aggregateScore:d(),pagesAudited:d().int().nonnegative()});m({project:o(),points:y(f9).default([])});const g9=j(["disabled","complete","partial","unavailable"]);g9.enum;const y9=m({pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),edges:d().int().nonnegative(),findings:d().int().nonnegative()}),b9=qe("state",[m({state:D("unavailable")}),m({state:D("disabled")}),m({state:D("complete"),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative()}),m({state:D("partial"),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative()})]);m({project:o(),hasCrawlData:C(),legacyAuditAvailable:C(),runId:o().nullable(),runStatus:rw,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Le(o(),qn()).default({}),complete:C(),termination:o().nullable(),detailsAvailable:C(),counts:y9,deadLinks:b9});j(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const gd=j(["eligible","hidden","resource","redirect","failed","unchecked"]),qH=gd.enum,BH=gd.options,Vo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},xu={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},v9={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function x9(e){return e.indexabilityReasons?.some(a=>a===v9.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function PH(e){switch(e.fetchState){case Vo.fetchError:return"failed";case Vo.discovered:return"unchecked";case Vo.nonHtml:return"resource";case Vo.redirect:return"redirect";case Vo.robotsBlocked:return"hidden";case Vo.html:break;default:return"unchecked"}if(x9(e))return"hidden";switch(e.indexabilityState){case xu.indexable:return"eligible";case xu.noindex:case xu.blocked:return"hidden";case xu.unknown:default:return"unchecked"}}const MH=15,k9=j(["navigation","content","unknown"]);k9.enum;const w9=m({navigation:d().int().nonnegative(),content:d().int().nonnegative(),unknown:d().int().nonnegative()}),uw=j(["placement","ubiquity","unmeasured"]);uw.enum;const yd=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);yd.enum;function IH(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const bd=j(["all","content","template"]);bd.enum;const S9=j(["anchor","redirect","canonical","link"]);S9.enum;const Tl=m({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:d().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:d().nullable(),inventoryEligible:C(),depth:d().int().nullable(),inboundUniqueEdges:d().int().nonnegative(),outboundUniqueEdges:d().int().nonnegative(),inboundOccurrences:d().int().nonnegative(),outboundOccurrences:d().int().nonnegative(),linkScoreRaw:d().nullable(),linkScoreNormalized:d().nullable(),healthState:gd}),j9=m({type:j(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),vv=cw.extend({status:$0,applicable:C().nullable(),findings:y(j9).default([]),recommendations:y(o()).default([])}),xv=m({id:o().min(1),severity:j(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),ku=m({project:o(),runId:o(),complete:C(),termination:o().nullable()}),kv=m({nodeKey:o(),url:o(),auditState:o()});qe("state",[m({state:D("no-crawl"),project:o(),runId:ce()}),ku.extend({state:D("details-unavailable")}),ku.extend({state:D("not-found")}),ku.merge(kv).extend({state:D("not-audited"),auditScore:ce(),factors:y(vv).length(0).default([]),criticalDefects:y(xv).length(0).default([])}),ku.merge(kv).extend({state:D("ready"),auditScore:d(),evidenceState:j(["complete","scores-only"]),factors:y(vv).default([]),criticalDefects:y(xv).default([])})]);const A9=j(["applied","unavailable-legacy-scan"]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Qe([A9,ce()]).default(null),pages:y(Tl).default([])});const C9=m({path:o(),url:o().nullable(),hasPage:C(),pageCount:d().int().positive(),inventoryEligibleCount:d().int().nonnegative(),fetchedCount:d().int().nonnegative()});m({project:o(),hasCrawlData:C(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(C9).default([])});const $s=m({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:C(),followable:C(),occurrences:d().int().positive(),followableOccurrences:d().int().nonnegative(),nofollowOccurrences:d().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Qe([C(),ce()]),templateRatio:Qe([d(),ce()]),templateSource:uw,placementOccurrences:Qe([w9,ce()])}),N9=m({nodeKey:o(),url:o(),path:o(),depth:d().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:d().nullable(),inventoryEligible:C(),inboundUniqueEdges:d().int().nonnegative(),outboundUniqueEdges:d().int().nonnegative(),linkScoreNormalized:d().nullable(),healthState:gd,x:d(),y:d()}),_9=m({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:C(),occurrences:d().int().positive(),isTemplate:C()}),z9=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),E9=qe("state",[m({state:D("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:C()}),m({state:D("unavailable"),version:ce(),reason:z9})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:E9,templateDetection:yd,linkKind:bd,totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),totalTemplateEdges:d().int().nonnegative(),totalContentEdges:d().int().nonnegative(),nodes:y(N9).default([]),edges:y(_9).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),sampled:C()});const VH=2e4,LH=5e4,T9=j(["focus","inbound","outbound","both","transitive"]),R9=Tl.extend({distance:d().int().nonnegative(),relationToFocus:T9});m({project:o(),hasCrawlData:C(),runId:o().nullable(),complete:C(),termination:o().nullable(),state:j(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:d().int().min(0).max(3),totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),nodes:y(R9).default([]),edges:y($s).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:C()});const wv=m({nodeKey:o(),url:o(),path:o()});m({project:o(),runId:o().nullable(),complete:C(),termination:o().nullable(),state:j(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:wv.nullable(),to:wv.nullable(),maxDepth:d().int().positive(),visitedNodes:d().int().nonnegative(),nodes:y(Tl).default([]),edges:y($s).default([])});const dw=j(["added","removed","changed"]),D9=m({entity:D("page"),change:dw,key:o(),changedFields:y(o()).default([]),before:Tl.nullable(),after:Tl.nullable()}),O9=m({entity:D("link"),change:dw,key:o(),changedFields:y(o()).default([]),before:$s.nullable(),after:$s.nullable()}),q9=qe("entity",[D9,O9]),Sv=m({added:d().int().nonnegative(),removed:d().int().nonnegative(),changed:d().int().nonnegative()}),B9=m({scope:j(["all","pages","links"]),change:j(["all","added","removed","changed"])});qe("state",[m({project:o(),state:D("unavailable"),reason:j(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),m({project:o(),state:D("incompatible"),reason:D("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),m({project:o(),state:D("ready"),fromRunId:o(),toRunId:o(),versions:m({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:B9,summaryState:j(["exact","omitted-on-continuation"]),summary:m({pages:Sv,links:Sv}).nullable(),total:d().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(q9).default([])})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),templateDetection:yd,linkKind:bd,edges:y($s).default([])});m({project:o(),hasCrawlData:C(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:yd,linkKind:bd,inbound:y($s).default([]),outbound:y($s).default([]),inboundTruncated:C(),outboundTruncated:C()});const jv=m({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Le(o(),qn()).default({})});qe("state",[m({project:o(),runId:o().nullable(),state:D("unavailable"),legacyAuditAvailable:C()}),m({project:o(),runId:o(),state:D("disabled"),checkDeadLinks:D(!1)}),m({project:o(),runId:o(),state:D("complete"),checkDeadLinks:D(!0),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative(),total:d().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(jv).default([])}),m({project:o(),runId:o(),state:D("partial"),checkDeadLinks:D(!0),checked:d().int().nonnegative(),found:d().int().nonnegative(),unverified:d().int().nonnegative(),total:d().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(jv).default([])})]);m({sitemapUrl:o().url().optional(),limit:d().int().positive().max(2e3).optional(),maxPages:d().int().positive().max(5e4).optional(),maxEdges:d().int().positive().max(1e6).optional(),maxDepth:d().int().min(0).max(100).optional(),checkDeadLinks:C().default(!1)});m({runId:o(),status:pa});const P9=m({runId:o(),status:pa,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:C()});m({project:o(),scans:y(P9).default([])});const M9=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),I9=m({state:j(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),V9=m({id:o(),state:o(),pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),pagesErrored:d().int().nonnegative(),edgesDiscovered:d().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});m({project:o(),runId:o(),status:pa,phase:M9,attempt:V9.nullable(),layout:I9,error:o().nullable()});const L9=j(["waiting","collecting","terminal"]),U9=m({nodeKey:o(),url:o(),auditScore:d(),checksNeedingAttention:d().int().nonnegative()});m({project:o(),runId:o(),status:pa,state:L9,attemptId:o().nullable(),pagesAudited:d().int().nonnegative(),updatedAt:o().nullable(),examples:y(U9).max(12).default([])});const G9=m({basis:j(["tracked","observed"]).nullable(),availability:j(["measured","not-measured","unavailable"]),reason:j(["select-query-class","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),K0=G9.partial().shape;function UH(e){switch(e){case"select-query-class":return"Select a query class.";case"no-competitors":return"No competitors configured.";case"insufficient-observed":return"Requires 3 observed competitors mentioned in at least 3 answers each.";case"no-answers":return"No answer text in scope.";case"no-mentions":return"No brands mentioned in scope.";case"unavailable":return"Competitor evidence is unavailable.";default:return""}}function $9(e,a){const s=a?.availability==="unavailable"?"Unavailable":a?.availability==="not-measured"||e===null?"Not measured":`${e.toFixed(1)}%`;return a?.basis?`${s} · ${a.basis} competitors`:s}function GH(e,a,s){return`Share of voice · ${a} queries: ${$9(e,s)}${s?.measurementScope==="all-markets"?" · all markets":""}`}const H0=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);H0.enum;const Q0=j(["cited","aspirational","wasted-surface"]),Av=Q0.enum;Av.cited,Av.aspirational;const vd=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),K9=vd.enum;K9["direct-competitor"];const xd=j(["queued","seeding","probing","completed","failed"]);xd.enum;const mw=m({domain:o().min(1),hits:d().int().positive(),competitorType:vd.default("unknown")}),H9=m({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:Q0.nullable().default(null),citationState:fi,citedDomains:y(o()).default([]),answerMentioned:C().nullable().default(null),createdAt:o()}),Q9=m({id:o(),projectId:o(),status:xd,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:d().int().nullable().optional(),seedCount:d().int().nullable().optional(),seedFromAnswerCount:d().int().nullable().optional(),seedFromGroundingCount:d().int().nullable().optional(),seedBrandFilteredCount:d().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(Yt).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(d()).nullable().optional(),dedupBandPairFraction:d().nullable().optional(),dedupPairsTotal:d().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Le(o(),d().int()).nullable().optional(),canonicalCount:d().int().nullable().optional(),dedupThreshold:d().nullable().optional(),probeCount:d().int().nullable().optional(),citedCount:d().int().nullable().default(null),aspirationalCount:d().int().nullable().default(null),wastedCount:d().int().nullable().default(null),competitorMap:y(mw).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});Q9.extend({probes:y(H9).default([])});const F9=500,Z9=8,Y9=["gemini","openai"],X9=j(Y9);m({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(X9).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:d().min(0).max(1).optional(),maxProbes:d().int().positive().max(F9).optional(),probeConcurrency:d().int().min(1).max(Z9).optional(),locations:y(o().min(1)).optional()});m({buckets:y(Q0).min(1).optional(),includeCompetitors:C().optional(),competitorTypes:y(vd).min(1).optional()});m({sessionId:o(),projectId:o(),status:xd,queriesByBucket:m({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(mw)});m({sessionId:o(),projectId:o(),promoted:m({queries:y(o()),competitors:y(o())}),skipped:m({queries:y(o()),competitors:y(o())})});Qe([D("cli"),o().regex(/^discovery:.+$/)]);const J9=m({query:o().min(1),probeHits:d().int().positive()}),W9=m({rawCandidates:d().int().nonnegative(),admitted:d().int().nonnegative(),rejected:m({belowFloor:d().int().nonnegative(),length:d().int().nonnegative(),navigational:d().int().nonnegative(),duplicate:d().int().nonnegative(),offAnchor:d().int().nonnegative(),semanticDuplicate:d().int().nonnegative()})});m({sessionId:o(),projectId:o(),provider:o(),status:xd,minProbeHits:d().int().positive(),anchorApplied:C(),semanticNoveltyApplied:C(),candidates:y(J9),stats:W9});const F0=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);F0.enum;const kd=j(["7d","30d","90d","all"]),Cv=j(["improving","declining","stable"]),eR=j(["mentioned","cited"]);eR.enum;const Rh=m({citationRate:d(),cited:d().int(),total:d().int(),mentionRate:d(),mentionedCount:d().int()}),mr=o().trim().min(1),tR=y(mr).min(1).superRefine((e,a)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&a.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),Ks=qe("status",[m({status:D("known"),model:mr}),m({status:D("unknown")}),m({status:D("mixed"),models:tR,includesUnknown:C()})]),nR=m({observedAt:o(),bucketStartDate:o(),from:Ks,to:Ks,fromPreWindowAnchor:C().optional(),anchorObservedAt:o().optional()}),pw=m({latestObservation:m({observedAt:o(),state:Ks}),events:y(nR),eventTotal:d().int().nonnegative().optional(),anchorUnavailable:C().optional()}),aR=Le(o(),pw),iR=pw.extend({latestServedModelIds:y(mr).default([])}),sR=Le(o(),iR),oR=m({observedAt:o(),configured:Ks,served:Ks}),rR=m({scope:j(["non-brand","pooled"]),rate:d().nullable(),projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative()}),lR=m({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:d().int().nonnegative(),citationRate:d(),cited:d().int(),total:d().int(),queryCount:d().int(),mentionRate:d(),mentionedCount:d().int(),mentionShare:rR,byProvider:Le(o(),Rh),modelEvidenceByProvider:Le(o(),Ks).default({}),basketRevision:d().int().nullable().default(null)}),cR=m({revision:d().int(),at:o(),added:y(o()),removed:y(o())}),uR=m({date:o(),delta:d().int(),label:o()}),dR=m({at:o(),identity:W2});m({window:kd,mentionShareScope:j(["non-brand","pooled"]),buckets:y(lR),overall:Rh,byProvider:Le(o(),Rh),trend:Cv,mentionTrend:Cv,queryChanges:y(uR),basketChanges:y(cR).default([]),executionIdentityChanges:y(dR).default([]),referenceBasketRevision:d().int().nullable().default(null),modelAttribution:aR.default({}),servedModelAttribution:sR.default({}),modelServiceMismatch:Le(o(),oR).default({}),modelPointerChanges:Le(o(),nE).default({})});const Nv=m({category:H0,label:o(),count:d().int(),percentage:d(),topDomains:y(m({domain:o(),count:d().int()}))}),mR=m({domain:o(),count:d().int(),percentage:d(),category:H0,label:o(),surfaceClass:F0}),pR=m({surfaceClass:F0,label:o(),count:d().int(),percentage:d(),domainCount:d().int()}),_v=m({totalCitedSlots:d().int(),domainTotal:d().int(),entries:y(mR),truncatedDomainCount:d().int(),truncatedCitedSlots:d().int(),bySurfaceClass:y(pR)});m({overall:y(Nv),byQuery:Le(o(),y(Nv)),ranked:_v,byProvider:Le(o(),_v),runId:o(),window:kd,limit:d().int().nullable()});const hR=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),fR=qe("kind",[m({kind:D("project")}).strict(),m({kind:D("group"),groupKey:o().trim().min(1)}).strict(),m({kind:D("all-markets")}).strict()]),hw=j(["all","branded","non-brand"]),fw=j(["project","all-markets"]);m({window:kd.optional(),groupKey:o().trim().min(1).optional(),scope:fw.optional(),provider:o().trim().min(1).optional(),model:mr.optional(),groupBy:D("model").optional(),queryClass:hw.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional()}).strict().superRefine((e,a)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&a.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&a.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Xi=m({domain:o().trim().min(1),label:o().trim().min(1),surfaceClass:hR,pinned:C(),mentionCount:d().int().nonnegative(),shareOfVoice:d().min(0).max(100).nullable(),citationCount:d().int().nonnegative(),answeredResults:d().int().nonnegative(),firstSeenAt:o().datetime().nullable(),lastSeenAt:o().datetime().nullable(),sampleUrls:y(o().url()).max(3)}).strict(),gw=m({answeredResults:d().int().nonnegative(),sourceResults:d().int().nonnegative(),missingAnswerTextResults:d().int().nonnegative(),mentionCredits:d().int().nonnegative(),incompleteSourceResults:d().int().nonnegative(),excludedProbeResults:d().int().nonnegative(),excludedNonCompletedResults:d().int().nonnegative()}).strict(),gR=50,yR=m({...K0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),provider:o().trim().min(1),model:mr.nullable(),servedModels:Ks,snapshotCount:d().int().positive(),project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:gw,truncated:C()}).strict(),bR=m({basis:D("requested-model"),groups:y(yR).max(gR),totalGroups:d().int().nonnegative(),truncated:C()}).strict();m({...K0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),window:kd,scope:fR,project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:gw,modelComparison:bR.optional(),marketState:m({activeRevision:d().int().positive(),draft:m({etag:o().trim().min(1),pendingCompetitorDomains:y(o().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:m({scope:fw,groupKey:o().nullable(),provider:o().nullable(),model:mr.optional(),groupBy:D("model").optional(),queryClass:hw,location:o().nullable(),runId:o().nullable()}).strict(),truncated:C()}).strict();const Z0=m({total:d().int(),checked:d().int(),mentioned:d().int(),cited:d().int(),mentionRate:d().nullable(),citedRate:d().nullable()}),yw=Z0.extend({provider:o(),firstObserved:o(),lastObserved:o()}),vR=Z0.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(yw).optional()}),xR=m({since:o().nullable(),until:o().nullable(),lastRuns:d().int().nullable(),runCount:d().int()}),kR=j(["provider"]),Dh=m({domain:o(),mentions:d().int()}),bw=m({...K0,measurementScope:j(["project","all-markets"]).optional(),queryClass:j(["branded","non-brand","pooled"]),percent:d().nullable(),competitorCount:d().int().nonnegative(),projectMentions:d().int(),competitorMentions:d().int(),snapshotsWithAnswerText:d().int(),perCompetitor:y(Dh)});m({project:o(),groupBy:kR.optional(),window:xR,totals:Z0,byProvider:y(yw).optional(),queries:y(vR),shareOfVoice:bw.optional()});const wR=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),SR=j(["up","down","flat"]),zv=m({availability:j(["available","no-observations","no-competitive-frame"]),point:d().nullable(),ciLow:d().nullable(),ciHigh:d().nullable(),numerator:d().int(),denominator:d().int()}),jR=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),AR=m({key:jR,label:o(),queryClass:j(["all","non-brand","pooled"]),driftRobust:C(),from:zv,to:zv,rateRatio:d().nullable(),direction:Qe([SR,ce()]),verdict:wR}),Ev=m({month:o(),since:o(),until:o(),runCount:d().int(),lowRunCount:C()}),CR=m({queryCount:d().int(),excludedFromOnly:d().int(),excludedToOnly:d().int(),providers:y(o()),excludedProviders:y(o())}),NR=m({provider:o(),fromModels:y(o()),toModels:y(o())}),_R=j(["included","model-discontinuous","model-unknown"]),zR=m({provider:o(),status:_R,fromModels:y(o()),toModels:y(o())}),ER=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),TR=m({status:ER,comparedProviders:y(o()),providers:y(zR)}),RR=m({provider:o(),from:m({checked:d().int(),mentioned:d().int(),cited:d().int()}),to:m({checked:d().int(),mentioned:d().int(),cited:d().int()})}),DR=m({from:m({count:d().int(),of:d().int()}),to:m({count:d().int(),of:d().int()})});m({project:o(),from:Ev,to:Ev,basket:CR,metrics:y(AR),queriesMentioned:DR,byProvider:y(RR),modelChanges:y(NR),continuity:TR,competitors:m({from:y(Dh),to:y(Dh)})});j(["json","csv"]);const OR=m({runId:o(),runKind:D("answer-visibility"),runStatus:pa,runTrigger:U0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:fi,cited:C(),answerMentioned:C().nullable(),mentionState:Qe([El,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Qe([rd,ce()]),sourceCount:d().int().nonnegative().nullable(),resolvedCount:d().int().nonnegative().nullable(),captureVersion:d().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(fd),searchQueries:y(o())}),qR=m({since:o().nullable(),until:o().nullable(),includeProbes:C()});m({schemaVersion:D("canonry.results-export/v1"),generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:qR,recordCount:d().int().nonnegative(),records:y(OR)});m({runIds:y(o().trim().min(1)).max(100).default([]),researchRunIds:y(o().trim().min(1)).max(100).default([]),confirm:C().default(!1)}).strict().superRefine((e,a)=>{e.runIds.length+e.researchRunIds.length===0&&a.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&a.addIssue({code:"custom",message:"Run IDs must be unique."})});m({dryRun:C(),runIds:y(o()),researchRunIds:y(o()),querySnapshots:d().int().nonnegative(),researchQueries:d().int().nonnegative(),insights:d().int().nonnegative(),healthSnapshots:d().int().nonnegative()});const wd=j(["organic","paid"]);wd.enum;m({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:C(),createdAt:o(),updatedAt:o()});m({date:o(),landingPage:o(),sessions:d(),organicSessions:d(),users:d()});const Y0=j(["session","first_user","manual_utm"]),BR=m({source:o(),medium:o(),trafficClass:wd,sessions:d(),users:d().optional(),sourceDimension:Y0}),PR=m({source:o(),medium:o(),trafficClass:wd,sourceDimension:Y0,landingPage:o(),sessions:d(),users:d().optional()}),MR=m({source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()}),fl=m({sessions:d(),sharePct:d(),sharePctDisplay:o()}),IR=m({organic:fl,social:fl,direct:fl,ai:fl,other:fl});m({totalSessions:d(),totalOrganicSessions:d(),totalDirectSessions:d(),totalUsers:d().nullable(),topPages:y(m({landingPage:o(),sessions:d(),organicSessions:d(),directSessions:d(),users:d()})),aiReferrals:y(BR),aiReferralLandingPages:y(PR),aiSessionsDeduped:d(),aiUsersDeduped:d().optional(),paidAiSessionsDeduped:d(),paidAiUsersDeduped:d().optional(),organicAiSessionsDeduped:d(),organicAiUsersDeduped:d().optional(),aiSessionsBySession:d(),aiUsersBySession:d().optional(),paidAiSessionsBySession:d(),paidAiUsersBySession:d().optional(),organicAiSessionsBySession:d(),organicAiUsersBySession:d().optional(),socialReferrals:y(MR),socialSessions:d(),socialUsers:d().optional(),channelBreakdown:IR,organicSharePct:d(),aiSharePct:d(),aiSharePctBySession:d(),paidAiSharePct:d(),paidAiSharePctBySession:d(),organicAiSharePct:d(),organicAiSharePctBySession:d(),directSharePct:d(),socialSharePct:d(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:d(),otherSharePct:d(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});m({connected:C(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:j(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const VR=m({propertyId:o(),displayName:o(),accountName:o()});m({properties:y(VR)});m({synced:C(),rowCount:d().int().nonnegative(),aiReferralCount:d().int().nonnegative(),socialReferralCount:d().int().nonnegative(),days:d().int().nonnegative(),requestedDays:d().int().nonnegative(),clamped:C(),syncedAt:o(),measurement:m({acquisition:m({days:d().int().nonnegative(),status:j(["ready","error"]),rowCount:d().int().nonnegative(),error:o().optional()}),leads:m({days:d().int().nonnegative(),status:j(["ready","error","not-configured"]),rowCount:d().int().nonnegative(),attributionScope:j(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});m({date:o(),source:o(),medium:o(),trafficClass:wd,landingPage:o(),sessions:d(),users:d(),sourceDimension:Y0});const LR=m({source:o(),sessions:d(),paidSessions:d(),organicSessions:d()}),UR=m({date:o(),sessions:d(),paidSessions:d(),organicSessions:d(),bySource:y(LR)});m({days:y(UR),sources:y(o()),totalSessions:d(),totalPaidSessions:d(),totalOrganicSessions:d()});m({date:o(),source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()});m({date:o(),sessions:d(),organicSessions:d(),users:d(),usersSource:j(["deduplicated","landing-page-sum"])});m({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:d(),overallMentionRate:d(),totalPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),providerBreakdown:Le(o(),m({citedRate:d(),mentionRate:d(),cited:d().int().nonnegative(),mentioned:d().int().nonnegative(),total:d().int().nonnegative()})),createdAt:o(),status:j(["ready","no-data"]),reason:D("no-runs-yet").optional()});const vw=j(["claude","openai","gemini","zai","deepinfra"]),GR=m({id:vw,label:o(),defaultModel:o(),configured:C(),keySource:j(["config","env"]).nullable()});m({providers:y(GR).default([]),defaultProvider:vw.nullable()});const $R=j(["aero","user","compaction"]);$R.enum;const xw=128;m({key:o().min(1).max(xw),value:o().min(1)});m({key:o().min(1).max(xw)});const pr=j(["commoncrawl","bing-webmaster"]);pr.enum;const X0=j(["queued","downloading","querying","ready","failed"]);X0.enum;m({id:o(),release:o(),status:X0,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:d().int().nullable().optional(),edgesBytes:d().int().nullable().optional(),projectsProcessed:d().int().nullable().optional(),domainsDiscovered:d().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const KR=m({linkingDomain:o(),numHosts:d().int(),source:pr}),HR=m({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr,excludedLinkingDomains:d().int().optional(),excludedHosts:d().int().optional()});m({source:pr,summary:HR.nullable(),total:d().int(),rows:y(KR)});m({release:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr});const QR=m({source:pr,connected:C(),hasData:C(),latestRelease:o().nullable(),totalLinkingDomains:d().int(),lastSyncedAt:o().nullable()});m({projectId:o(),targetDomain:o(),sources:y(QR),anyConnected:C(),anyData:C()});m({duckdbInstalled:C(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});m({installed:C(),version:o(),path:o(),alreadyPresent:C()});m({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:d().int().nullable(),edgesBytes:d().int().nullable(),lastModified:o().nullable()});m({release:o(),syncStatus:X0.nullable(),bytes:d().int(),lastUsedAt:o().nullable()});const J0=j(["positive","caution","negative","neutral"]),Yi=m({label:o(),value:o(),delta:o(),tone:J0,description:o(),tooltip:o().optional(),trend:y(d()),progress:d().optional(),providerCoverage:o().optional()}),Tv=m({projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative(),perCompetitor:y(m({domain:o(),mentionSnapshots:d().int().nonnegative(),shareOfCompetitiveTotal:d()})),snapshotsWithAnswerText:d().int().nonnegative(),snapshotsTotal:d().int().nonnegative(),score:d().int().min(0).max(100).nullable()}),FR=Yi.extend({breakdown:Tv,scope:j(["non-brand","pooled"]),branded:Tv}),nh=m({gained:d().int().nonnegative(),lost:d().int().nonnegative(),tone:J0,hasPreviousRun:C(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),ZR=m({hasPreviousRun:C(),comparable:C(),querySetChanged:C(),previousRunAt:o().nullable(),currentQueryCount:d().int().nonnegative(),previousQueryCount:d().int().nonnegative(),comparableQueryCount:d().int().nonnegative(),addedQueryCount:d().int().nonnegative(),removedQueryCount:d().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),YR=m({id:o(),projectId:o(),runId:o().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:m({action:o(),target:o().optional(),reason:o()}).optional(),cause:m({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:C(),createdAt:o()}),XR=m({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:d(),overallMentionRate:d(),totalPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),providerBreakdown:Le(o(),m({citedRate:d(),mentionRate:d(),cited:d().int().nonnegative(),mentioned:d().int().nonnegative(),total:d().int().nonnegative()})),createdAt:o(),status:j(["ready","no-data"]),reason:D("no-runs-yet").optional()});m({project:h8,latestRun:a9,health:XR.nullable(),topInsights:y(YR),queryCounts:m({totalQueries:d().int().nonnegative(),citedQueries:d().int().nonnegative(),notCitedQueries:d().int().nonnegative(),citedRate:d(),mentionedQueries:d().int().nonnegative(),notMentionedQueries:d().int().nonnegative(),mentionRate:d()}),providers:y(m({provider:o(),citedRate:d(),cited:d().int().nonnegative(),total:d().int().nonnegative()})),transitions:m({since:o().nullable(),gained:d().int().nonnegative(),lost:d().int().nonnegative(),emerging:d().int().nonnegative()}),scores:m({mention:Yi,visibility:Yi,mentionShare:FR,gapQueries:Yi,mentionGaps:Yi,indexCoverage:Yi,competitorPressure:Yi,runStatus:Yi}),movementSummary:nh,citationMovement:nh,mentionMovement:nh,movementComparison:ZR,competitors:y(m({id:o(),domain:o(),citationCount:d().int().nonnegative(),totalQueries:d().int().nonnegative(),pressureLabel:j(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(m({provider:o(),model:o().nullable(),score:d(),cited:d().int().nonnegative(),total:d().int().nonnegative(),trend:y(d()).optional()})),attentionItems:y(m({id:o(),tone:J0,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(m({runId:o(),createdAt:o(),citedCount:d().int().nonnegative(),totalCount:d().int().nonnegative(),citationRate:d(),mentionedCount:d().int().nonnegative(),mentionRate:d(),status:o()})),suggestedQueries:m({rows:y(m({query:o(),impressions:d(),clicks:d(),avgPosition:d(),reason:o()})),totalCandidates:d().int().nonnegative(),skippedAlreadyTracked:d().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});j(["snapshot","insight"]);const JR=m({kind:D("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:fi,matchedField:j(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),WR=m({kind:D("insight"),id:o(),runId:o().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:j(["title","query","recommendation","cause"]),snippet:o(),dismissed:C(),createdAt:o()}),eD=qe("kind",[JR,WR]);m({query:o(),totalHits:d().int().nonnegative(),truncated:C(),hits:y(eD)});const kw=j(["create","expand","refresh","add-schema"]);kw.enum;function $H(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const ww=j(["gsc","competitor-evidence","both"]);ww.enum;const Sw=j(["high","medium","low"]);Sw.enum;const tD=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);tD.enum;const jw=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jw.enum;const W0=j(["ownable","ceded"]);W0.enum;const nD=m({url:o(),gscImpressions:d().nonnegative(),gscClicks:d().nonnegative(),gscAvgPosition:d().nonnegative().nullable(),organicSessions:d().nonnegative()}),aD=m({domain:o(),url:o(),title:o(),citationCount:d().int().nonnegative()}),iD=m({demand:d(),competitor:d(),absence:d(),gapSeverity:d()}),sD=m({actionId:o(),state:jw,lastUpdated:o()}),Aw=m({targetRef:o(),query:o(),action:kw,ourBestPage:nD.nullable(),winningCompetitor:aD.nullable(),score:d(),scoreBreakdown:iD,drivers:y(o()),demandSource:ww,actionConfidence:Sw,existingAction:sD.nullable(),winnabilityClass:W0,winnability:d().min(0).max(1).nullable()});m({targets:y(Aw),contextMetrics:m({totalAiReferralSessions:d().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const oD=m({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});m({dismissals:y(oD)});m({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});m({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:d().int().nonnegative(),generatedAt:o()});m({provider:o().optional(),model:o().optional(),forceRefresh:C().optional()});const rD=m({targetQuery:o().trim().min(1),winnabilityClass:W0,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});m({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:rD,costMillicents:d().int().nonnegative(),generatedAt:o()});const lD=m({domain:o(),competitorType:vd,hits:d().int().nonnegative(),updatedAt:o()});m({classifications:y(lD)});const cD=m({uri:o(),title:o(),domain:o(),isOurDomain:C(),isCompetitor:C(),citationCount:d().int().nonnegative(),providers:y(ht)}),Cw=m({query:o(),groundingSources:y(cD)});m({sources:y(Cw),latestRunId:o()});const Nw=m({query:o(),competitorDomains:y(o()),competitorCount:d().int().nonnegative(),missRate:d().min(0).max(1),lastSeenInRunId:o()});m({gaps:y(Nw),latestRunId:o()});const _w=j(["ok","warn","fail","skipped"]);_w.enum;const ef=j(["global","project"]);ef.enum;const zw=j(["auth","config","providers","integrations","database","schedules","agent"]);zw.enum;const uD=m({id:o(),category:zw,scope:ef,title:o(),status:_w,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Le(o(),qn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:d().int().nonnegative().describe("How long the check took to execute.")});m({scope:ef,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:d().int().nonnegative(),summary:m({total:d().int().nonnegative(),ok:d().int().nonnegative(),warn:d().int().nonnegative(),fail:d().int().nonnegative(),skipped:d().int().nonnegative()}),checks:y(uD)});function dD(e){return e.trim().toLowerCase()}const mD=m({provider:o(),citationState:fi,cited:C(),mentioned:C(),runId:o(),runCreatedAt:o()}),pD=m({queryId:o(),query:o(),providers:y(mD),citedCount:d().int().nonnegative(),mentionedCount:d().int().nonnegative(),totalProviders:d().int().nonnegative()}),hD=m({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),fD=m({providersConfigured:d().int().nonnegative(),providersCiting:d().int().nonnegative(),providersMentioning:d().int().nonnegative(),totalQueries:d().int().nonnegative(),queriesCitedAndMentioned:d().int().nonnegative(),queriesCitedOnly:d().int().nonnegative(),queriesMentionedOnly:d().int().nonnegative(),queriesInvisible:d().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});m({summary:fD,byQuery:y(pD),competitorGaps:y(hD),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const gD=m({selection:pk,historyWindow:m({from:o().datetime(),to:o().datetime()}).optional(),populations:y(mk.pick({queryClass:!0,summary:!0,trend:!0}))}),on={title:"AI visibility",description:"Each answer is counted once for its assigned properties. Branded and non-brand queries are measured separately.",simpleDescription:"Each saved answer is counted once. Branded and non-brand queries are measured separately.",queryType:"Query type",queries:"Queries measured",answers:"Answers measured",mentioned:"Mentioned",cited:"Cited",history:"Measurement history",latestMeasurement:"Latest measurement",allLocations:"All measured locations",noLocation:"No provider location",location:"Location",previousOutsideWindow:"Previous measurement outside this period",date:"Date",comparison:"Comparison",notMeasured:"Not measured",incomplete:"Evidence incomplete",ambiguous:"Property identity unverified",noPopulation:"No measured answers",notApplicable:"Not applicable",comparable:"Comparable",baseline:"Baseline",changed:"Measurement changed",unknownHistory:"Comparison unavailable"};function KH(e){return{branded:"Branded","non-brand":"Non-brand",unknown:"Unclassified"}[e]}function HH(e){return e.rate===null?on.notMeasured:`${Number((e.rate*100).toFixed(1))}%`}function QH(e){if(e.numerator!==null&&e.denominator!==null)return`${e.numerator} of ${e.denominator} answers`;switch(e.reason){case"no-population":return on.noPopulation;case"not-applicable":return on.notApplicable;case"identity-ambiguous":return on.ambiguous;default:return on.incomplete}}function FH(e,a=!1){const s=e==="first"?on.baseline:e==="comparable"?on.comparable:e==="legacy-unknown"?on.unknownHistory:on.changed;return a?`${s} · ${on.previousOutsideWindow}`:s}function ZH(e){const a=e.selection.measurement.completedAt?.slice(0,10)??on.notMeasured;return`${on.latestMeasurement}: ${a}`}function YH(e){const a=e.historyWindow;return a===void 0?on.history:`${on.history} (${a.from.slice(0,10)} – ${a.to.slice(0,10)})`}function XH(e){const a=e.selection.location;return a.kind==="all"?on.allLocations:a.kind==="none"?on.noLocation:`${on.location}: ${a.value}`}const JH=[7,14,30,90],WH=30;Qe([D(7),D(14),D(30),D(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const yD=j(["prompt","request-param","browser-geo","ignored"]),bD=m({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),vD=m({provider:o(),treatment:yD,description:o()}),xD=m({generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:bD.nullable(),providerLocationHandling:y(vD),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:d().int().positive()}),kD=m({visibilityBasis:j(["legacy-project-queries","frozen-populations"]).optional(),citationRate:d().nullable(),citedQueryCount:d().nullable(),totalQueryCount:d().nullable(),mentionRate:d().nullable(),mentionedQueryCount:d().nullable(),trend:j(["up","down","flat","unknown"]),queryCount:d(),competitorCount:d(),providerCount:d(),gsc:m({clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),periodStart:o(),periodEnd:o()}).nullable(),ga:m({sessions:d(),users:d(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(m({title:o(),detail:o(),tone:j(["positive","caution","negative","neutral"])}))}),wD=m({citationState:j(["cited","not-cited","pending"]),answerMentioned:C().nullable(),model:o().nullable()}),SD=m({queries:y(o()),providers:y(o()),matrix:y(y(wD.nullable())),providerRates:y(m({provider:o(),citedCount:d(),mentionedCount:d(),totalCount:d(),citationRate:d(),mentionRate:d()}))}),jD=m({domain:o(),citationCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:d(),theirCitedPages:y(m({url:o(),citedFor:y(o())}))}),AD=m({projectCitationCount:d(),competitors:y(jD)}),CD=m({domain:o(),mentionCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:d().nullable()}),ah=m({shareOfVoice:bw.optional(),projectMentionCount:d(),totalAnswerSnapshots:d(),competitors:y(CD)}),ND=ah.extend({scope:j(["non-brand","pooled"]),nonBrand:ah,branded:ah}),_D=m({category:o(),label:o(),count:d(),sharePct:d()}),zD=m({categories:y(_D),topDomains:y(m({domain:o(),count:d(),isCompetitor:C()}))}),ED=m({query:o(),clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),category:j(["brand","lead-gen","industry","other"])}),TD=m({periodStart:o(),periodEnd:o(),totalClicks:d(),totalImpressions:d(),ctr:d(),avgPosition:d(),topQueries:y(ED),categoryBreakdown:y(m({category:j(["brand","lead-gen","industry","other"]),clicks:d(),impressions:d(),sharePct:d()})),trend:y(m({date:o(),clicks:d(),impressions:d()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),RD=m({totalSessions:d(),totalUsers:d(),totalOrganicSessions:d(),periodStart:o(),periodEnd:o(),topLandingPages:y(m({page:o(),sessions:d(),users:d().optional(),organicSessions:d()})),channelBreakdown:y(m({channel:o(),sessions:d(),sharePct:d()}))}),DD=m({totalSessions:d(),organicSessions:d(),paidSessions:d(),channels:y(m({channelGroup:o(),sessions:d(),sharePct:d()})),topCampaigns:y(m({source:o(),medium:o(),sessions:d()}))}),OD=m({totalSessions:d(),paidSessions:d(),organicSessions:d(),totalUsers:d().optional(),paidUsers:d().optional(),organicUsers:d().optional(),bySource:y(m({source:o(),sessions:d(),users:d().optional(),paidSessions:d(),organicSessions:d(),sharePct:d()})),trend:y(m({date:o(),sessions:d()})),topLandingPages:y(m({page:o(),sessions:d(),users:d().optional()}))}),qD=m({windowStart:o(),windowEnd:o(),hasData:C(),verifiedCrawlerHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),unverifiedCrawlerHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),aiUserFetchHits:m({current:d(),prior:d(),deltaPct:d().nullable()}),referralArrivals:m({current:d(),prior:d(),deltaPct:d().nullable()}),referralRedirects:d().int().nonnegative(),referralArrivalsByClass:m({paid:m({current:d(),prior:d(),deltaPct:d().nullable()}),organic:m({current:d(),prior:d(),deltaPct:d().nullable()}),unclassified:m({current:d(),prior:d(),deltaPct:d().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(m({operator:o(),verifiedHits:d(),unverifiedHits:d(),userFetchHits:d(),referralArrivals:d(),deltaPct:d().nullable()})),topCrawledPaths:y(m({path:o(),verifiedHits:d(),unverifiedHits:d().default(0),distinctOperators:d()})),referralProducts:y(m({product:o(),arrivals:d(),distinctLandingPaths:d()})),dailyTrend:y(m({date:o(),verifiedCrawlerHits:d(),unverifiedCrawlerHits:d().default(0),userFetchHits:d(),referralArrivals:d()})),topReferralLandingPaths:y(m({path:o(),arrivals:d(),distinctProducts:d()}))}),BD=m({provider:j(["google","bing"]).nullable(),total:d(),indexed:d(),notIndexed:d(),deindexed:d(),unknown:d(),indexedPct:d()}),PD=m({runId:o(),date:o(),citationRate:d(),citedQueryCount:d(),totalQueryCount:d(),mentionRate:d(),mentionedQueryCount:d(),providerRates:y(m({provider:o(),citationRate:d(),mentionRate:d()}))}),Oh=m({id:o(),type:j(["regression","gain","opportunity"]),severity:j(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:d()}),MD=m({horizon:j(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),Lo=m({current:d(),prior:d(),deltaAbs:d(),deltaPct:d().nullable(),direction:j(["up","down","flat"]),window:d().optional()}),ID=m({provider:o(),current:d(),prior:d(),deltaAbs:d(),direction:j(["up","down","flat"])}),VD=m({enoughHistory:C(),headline:o(),citationRate:Lo.nullable(),mentionRate:Lo.nullable(),citedQueryCount:Lo.nullable(),mentionedQueryCount:Lo.nullable(),gscClicksDelta:Lo.nullable(),aiReferralsDelta:Lo.nullable(),comparisonWindowDays:d().int().positive(),providerMovements:y(ID),wins:y(Oh),regressions:y(Oh)});j(["agency","client"]);const LD=j(["agency","client","both"]),UD=j(["immediate","short-term","medium-term"]),GD=j(["high","medium","low"]);j(["positive","caution","negative","neutral"]);const $D=j(["content","competitors","provider","search-demand","indexing","location","monitoring"]),tf=m({audience:LD,priority:d(),horizon:UD,category:$D,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:GD,targetRef:o().optional()}),KD=m({headline:o(),overview:o(),actionItems:y(tf),confidenceNotes:y(o())}),HD=m({title:o(),detail:o(),severity:j(["positive","caution","negative","neutral"]),evidence:y(o())}),QD=m({priorities:y(tf),diagnostics:y(HD)});function eQ(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function tQ(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function nQ(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function aQ(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function iQ(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}m({visibility:gD.optional(),meta:xD,executiveSummary:kD,citationScorecard:SD,competitorLandscape:AD,mentionLandscape:ND,aiSourceOrigin:zD,gsc:TD.nullable(),ga:RD.nullable(),socialReferrals:DD.nullable(),aiReferrals:OD.nullable(),serverActivity:qD.nullable(),indexingHealth:BD.nullable(),citationsTrend:y(PD),whatsChanged:VD,insights:y(Oh),recommendedNextSteps:y(MD),actionPlan:y(tf),clientSummary:KD,agencyDiagnostics:QD,contentOpportunities:y(Aw),contentGaps:y(Nw),groundingSources:y(Cw)});const FD=Qe([D(60),D(90)]),ZD=j(["earliest","middle","prior","latest"]),Uo=m({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),Ew=m({name:ZD,startDate:o(),endDate:o()}),YD=Ew.extend({totals:Uo}),XD=Ew.extend({organicSessions:d().int().nonnegative()}),ih=m({startDate:o(),endDate:o(),observedDays:d().int().nonnegative()}),wu=m({verified:d().int().nonnegative(),claimedUnverified:d().int().nonnegative(),unknownAiLike:d().int().nonnegative()}),Rv=m({total:d().int().nonnegative(),paid:d().int().nonnegative(),organic:d().int().nonnegative(),unknown:d().int().nonnegative()});m({contractVersion:D("organic-evidence/v1"),periodDays:FD,asOfDate:o().nullable(),coverage:m({gsc:C(),ga4:C(),server:C(),visibility:C()}),sourceCoverage:m({gsc:ih.nullable(),ga4:ih.nullable(),server:ih.nullable(),visibility:m({completedAt:o(),ageDays:d().nonnegative()}).nullable()}),gsc:m({propertyTotals:Uo,namedBrand:Uo,namedNonBrand:Uo,suppressedOrUnreportedResidual:Uo,cohorts:y(YD)}).nullable(),ga4:m({organicSessions:d().int().nonnegative(),cohorts:y(XD)}).nullable(),gaAiReferrals:m({paidSessions:d().int().nonnegative(),organicSessions:d().int().nonnegative()}).nullable(),server:m({crawlerHits:wu,userFetchHits:wu,referralSessions:Rv}).nullable(),visibility:m({runId:o(),completedAt:o(),ageDays:d().nonnegative(),answerPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative()}).nullable(),measurement:k_,pages:y(m({path:o(),gsc:Uo,ga4OrganicSessions:d().int().nonnegative(),server:m({crawlerHits:wu,userFetchHits:wu,referralSessions:Rv})})),findings:y(m({tone:j(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(m({code:o(),detail:o()}))});const JD=j(["claude","codex"]);JD.enum;const WD=j(["claude","codex","all"]);WD.enum;const Tw=m({content:d().int().nonnegative(),sitemap:d().int().nonnegative(),robots:d().int().nonnegative(),asset:d().int().nonnegative(),other:d().int().nonnegative()}),eO=j(["content","sitemap","robots","asset","other"]),nf=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);nf.enum;const tO=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);tO.enum;const nO=j(["raw-request","aggregate-bucket"]),aO=nO.enum,iO=j(["observed","provider-aggregated","inferred"]),sO=iO.enum,oO=m({type:o().nullable(),labels:Le(o(),o())}),rO=m({sourceType:nf,evidenceKind:D(aO["raw-request"]),confidence:D(sO.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:d().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:d().nullable(),requestSizeBytes:d().int().nullable(),responseSizeBytes:d().int().nullable(),providerResource:oO,providerLabels:Le(o(),o())});m({events:y(rO),rawEntryCount:d().int().nonnegative(),skippedEntryCount:d().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Rw=j(["connected","paused","error","archived"]),sQ=Rw.enum,Dw=j(["oauth","service-account"]);Dw.enum;const lO=j(["verified","claimed_unverified","unknown_ai_like"]),oQ=lO.enum,cO=m({id:o().min(1),source:o().min(1),version:o().min(1)}),Ow=m({manifestId:o().min(1),manifest:cO.nullable(),hits:d().int().nonnegative()});m({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Dw});m({baseUrl:o().url(),username:o().min(1)});const af=j(["production","preview"]);af.enum;m({projectId:o().min(1),teamId:o().min(1),environment:af});const qw=m({id:o(),projectId:o(),sourceType:nf,displayName:o(),status:Rw,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:d().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Le(o(),qn()),createdAt:o(),updatedAt:o()});m({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});m({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});m({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:af.optional(),displayName:o().min(1).optional()});const uO=j(["direct-push","queue-pull"]),hr=uO.enum,sf=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),Bw=m({schemaVersion:D(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),dO=Bw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().nullable()}),mO=Bw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600)});function Pw(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}r0(Pw,qe("deliveryMode",[dO,mO]));const Mw=m({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),pO=Mw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().min(1).optional()}),hO=Mw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600),apiToken:o().min(1)});r0(Pw,qe("deliveryMode",[pO,hO]));const Iw=m({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),fO=Iw.extend({deliveryMode:D(hr["direct-push"]),activationRequired:C().default(!1)}),gO=Iw.extend({deliveryMode:D(hr["queue-pull"]),activationRequired:C().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:sf,retentionSeconds:d().int().min(60).max(1209600)});qe("deliveryMode",[fO,gO]);const yO=m({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:d().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:m({verifiedBot:C().nullable(),botScore:d().int().nullable(),country:o().nullable(),asn:d().int().nullable(),asOrganization:o().nullable()}).nullable()});m({schemaVersion:D(1),workerVersion:o().min(1),events:y(yO).min(1).max(100)});m({acceptedEvents:d().int(),droppedEvents:d().int(),workerVersionAck:o(),crawlerBucketRows:d().int(),aiUserFetchBucketRows:d().int(),aiReferralBucketRows:d().int(),sampleRows:d().int()});m({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:d().int().nonnegative(),selfTrafficExcluded:d().int().nonnegative(),crawlerHits:d().int().nonnegative(),aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),unknownHits:d().int().nonnegative(),crawlerBucketRows:d().int().nonnegative(),aiUserFetchBucketRows:d().int().nonnegative(),aiReferralBucketRows:d().int().nonnegative(),sampleRows:d().int().nonnegative(),remainingBacklogCount:d().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});m({days:d().int().positive().optional()});m({advanceToNow:D(!0)});m({sourceId:o(),runId:o(),status:pa,windowStart:o(),windowEnd:o(),daysRequested:d().int().positive(),daysApplied:d().int().positive()});const bO=m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:Tw,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),sampleCount:d().int().nonnegative()});m({sources:y(qw)});const vO=qw.extend({totals24h:bO,latestRun:m({runId:o(),status:pa,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});m({sources:y(vO)});const xO=j(["crawler","ai-user-fetch","ai-referral"]),of=xO.enum,Vw=j(["hour","day"]);Vw.enum;const kO=m({bucket:o(),crawlerHits:d().int().nonnegative(),aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),measured:C()}),wO=m({kind:D(of.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ow).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),pathClass:eO,status:d().int(),hits:d().int().nonnegative()}),SO=m({kind:D(of["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ow).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),status:d().int(),hits:d().int().nonnegative()}),jO=m({kind:D(of["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:d().int(),hits:d().int().nonnegative(),paidHits:d().int().nonnegative(),organicHits:d().int().nonnegative(),unknownHits:d().int().nonnegative()}),AO=qe("kind",[wO,SO,jO]);m({windowStart:o(),windowEnd:o(),series:m({granularity:Vw,points:y(kO),coverageStart:o().nullable(),trends:m({crawlerContentHits:Ls.nullable(),aiUserFetchHits:Ls.nullable(),aiReferralLandedHits:Ls.nullable()})}),totals:m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:Tw,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),aiReferralPaidHits:d().int().nonnegative(),aiReferralOrganicHits:d().int().nonnegative(),aiReferralUnknownHits:d().int().nonnegative()}),eventRows:m({total:d().int().nonnegative(),returned:d().int().nonnegative(),truncated:C()}),events:y(AO)});const rf=j(["admin","viewer"]),CO=/^[a-z\d][\w.-]{0,63}$/i,NO=o().regex(CO,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Dv=12,_O=o().min(Dv,`A password must be at least ${Dv} characters.`),Lw=m({id:o(),name:o(),role:rf,createdAt:o(),lastLoginAt:o().nullable()});m({users:y(Lw)});m({name:NO,password:_O,role:rf});m({name:o().min(1),password:o().min(1)});m({authRequired:C(),user:Lw.pick({name:!0,role:!0}).nullable()});const Uw=j(["queued","running","completed","partial","failed"]),rQ=Uw.enum,Gw=j(["queued","running","completed","failed"]),lQ=Gw.enum,zO=20,EO=20,qh=50,$w=m({kind:j(["market","property"]),key:me,expectedPlanRevision:d().int().positive().optional()}).strict(),TO=m({kind:j(["market","property"]),key:me,label:o().trim().min(1),planRevision:d().int().positive()}).strict(),Kw=o().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function cQ(e){const a=new Set;return e.filter(s=>{const r=dD(s);return!r||a.has(r)?!1:(a.add(r),!0)})}function RO(e,a){const s=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return a?{...s,location:a.label}:s}function uQ(e,a,s){const r=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(k=>k[1]),f=[...new Set(u.filter(k=>!r.has(k)))];if(f.length)throw Eb("The selected research template contains undeclared placeholders: "+f.join(", "));const g=RO(a,s),b=e.variables.filter(k=>g[k]===void 0);if(b.length)throw Eb("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(k=>[k,g[k]]));return{bindings:v,output:O7(e.pattern,v)}}const Hw=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),bindingLocation:Yt.nullable().optional()}).strict();m({queries:y(Kw).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:Yt.nullable().optional(),scope:$w.optional(),template:Hw.optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,a)=>{e.model&&!e.provider&&a.addIssue({code:Se.custom,path:["provider"],message:"provider is required when model is supplied"})});const DO=$w.extend({expectedPlanRevision:d().int().positive()}).strict(),OO=m({queries:y(Kw).min(1).max(qh),provider:o().trim().min(1),model:o().trim().min(1).max(200),location:Yt.nullable(),scope:DO.optional(),template:Hw.optional()}).strict();m({idempotencyKey:o().trim().min(1).max(128),runs:y(OO).min(1).max(EO)}).strict().superRefine((e,a)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>qh&&a.addIssue({code:Se.custom,path:["runs"],message:`A research batch may contain at most ${qh} concrete queries across all destinations`})});const qO=m({kind:j(["api-key","user"]),id:o(),name:o(),role:rf.nullable(),limited:C().optional()}),Qw=m({id:o(),projectId:o(),status:Uw,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:Yt.nullable(),scope:TO.nullable().optional(),template:fk.nullable().optional(),totalQueries:d().int(),completedQueries:d().int(),failedQueries:d().int(),error:o().nullable(),initiatedBy:qO.nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),BO=m({id:o(),position:d().int(),query:o(),queryClass:rr.nullable().optional(),status:Gw,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(fd),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:C().nullable(),citationState:fi.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),PO=Qw.extend({queries:y(BO)});m({runs:y(PO)});const MO=m({name:o(),displayName:o(),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o()}))});m({runs:y(Qw),nextCursor:o().nullable().optional(),providers:y(MO).optional(),access:m({canRun:C(),dailyRunLimit:d().int().positive().nullable()}).optional()});m({apiKey:o().min(1)});m({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});m({q:o().trim().min(1).max(200),limit:d().int().min(1).max(100).default(20)});const IO=m({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});m({count:d().int().nonnegative(),query:o(),results:y(IO)});const VO=m({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});m({pixels:y(VO)});const LO=m({id:o(),name:o().optional()}),UO=m({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:d().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(LO).optional(),archived:C().optional(),version:d().int().nonnegative().optional()});m({eventSettings:y(UO)});m({connected:C(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:C().optional()});m({disconnected:C()});m({runId:o(),status:o()});const GO=m({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),Ll=j(["impressions","clicks"]);Ll.enum;const Ul=j(["impression","click"]);Ul.enum;const $O=m({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:GO.nullable().optional(),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),KO=m({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Qe([Ul,ce()]).optional(),maxBidMicros:d().int().nullable().optional(),contextHints:y(o()).default([]),ads:y($O).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),HO=m({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:d().int().nullable().optional(),endTime:d().int().nullable().optional(),biddingType:Qe([Ll,ce()]).optional(),dailySpendLimitMicros:d().int().nullable().optional(),lifetimeSpendLimitMicros:d().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(KO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()});m({campaigns:y(HO)});const Fw=j(["campaign","ad_group"]);Fw.enum;const QO=m({level:Fw,entityId:o(),date:o(),impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int(),ctr:d().nullable(),cpcMicros:d().int().nullable(),inProgress:C()});m({rows:y(QO),currencyCode:o().nullable().optional()});const Zw=m({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Yw=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int(),ctr:d().nullable(),cpcMicros:d().int().nullable()});m({connected:C(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:d().int(),adGroupCount:d().int(),adCount:d().int(),window:Zw,totals:Yw});const Xw=j(["unavailable","partial","complete"]);Xw.enum;const Jw=j(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Jw.enum;const Ww=j(["unavailable","reported"]);Ww.enum;const FO={storedSnapshot:"stored_ads_snapshot"},eS=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);eS.enum;const ZO=m({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),YO=m({id:o(),name:o(),status:o(),billingEventType:Qe([Ul,ce()]),maxBidMicros:d().int().nullable(),contextHints:y(o()),ads:y(ZO)}),XO=m({id:o(),name:o(),status:o(),biddingType:Qe([Ll,ce()]),dailySpendLimitMicros:d().int().nullable(),lifetimeSpendLimitMicros:d().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(YO)});m({snapshot:m({status:Xw,issue:Qe([Jw,ce()]),lastSyncedAt:o().nullable(),campaignCount:d().int().nonnegative(),adGroupCount:d().int().nonnegative(),adCount:d().int().nonnegative(),sourceSync:m({runId:o(),status:pa}).nullable()}),historicalCampaignRollups:m({status:Ww,window:Zw,totals:Yw.nullable()}),storedConfiguration:m({basis:D(FO.storedSnapshot),connection:m({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:C()}).nullable(),campaigns:y(XO)}),assessment:m({state:eS})});const $a=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),At=o().min(1).max(200),Fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),er=d().int().min(946684800).max(4102444800),tr=d().int().positive().max(Number.MAX_SAFE_INTEGER),lf=o().regex(/^[a-f0-9]{64}$/),tS=y(At).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),nS=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),aS=j(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);aS.enum;const iS=j(["pending","reconciling","succeeded","failed","unknown"]),Fo=iS.enum,sS=j(["known_entity","create_fingerprint","manual_only"]);sS.enum;const oS=j([Fo.pending,Fo.unknown,Fo.reconciling]);oS.enum;const rS=j(["active","paused","archived"]);rS.enum;const lS=j(["file","campaign","ad_group","ad"]);lS.enum;const cS=j(["campaign","ad_group","ad"]);cS.enum;const cf=m({id:At,expectedUpdatedAt:d().int().nonnegative()}).strict(),JO=cf,$u=1e3;function WO(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const eq=cf.extend({ads:y(JO).min(1).max($u-1)}).strict(),tq=cf.extend({adGroups:y(eq).min(1).max($u-1)}).strict();function nq(e,a){return e<a?-1:e>a?1:0}function Ov(e,a,s){for(let r=1;r<e.length;r+=1)if(nq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:a,message:"Activation manifest entities must be uniquely sorted by id"});return}}const uS=m({campaign:tq}).strict().superRefine((e,a)=>{WO(e)>$u&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${$u} entities`}),Ov(e.campaign.adGroups,["campaign","adGroups"],a);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Ov(f.ads,["campaign","adGroups",u,"ads"],a);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&a.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),dS=lf,aq=j(["approved","executing","consumed","revoked","expired","unknown"]),hi=aq.enum,iq=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),os=iq.enum,sq=m({name:Fs.optional(),description:o().max(4e3).nullable().optional(),status:rS.optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).max(100).optional(),biddingType:Ll.optional(),conversionEventSettingIds:tS.optional(),campaignId:At.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:tr.max(1e8).optional(),billingEventType:Ul.optional(),adGroupId:At.optional(),creativeFingerprint:lf.optional()}).strict();m({operationKey:$a,imageUrl:nS});m({operationKey:$a,name:Fs,description:o().max(4e3).optional(),startTime:er.optional(),endTime:er.optional(),lifetimeSpendLimitMicros:tr.min(1e6),locationIds:y(At).min(1).max(100),biddingType:Ll.optional(),conversionEventSettingIds:tS.optional()}).superRefine((e,a)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&a.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"})});m({operationKey:$a,campaignId:At,name:Fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:tr.max(1e8),billingEventType:Ul.optional()});const mS=m({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:nS,fileId:At});m({operationKey:$a,adGroupId:At,name:Fs,creative:mS});function uf(e){return Object.keys(e).some(a=>a!=="operationKey"&&a!=="expectedUpdatedAt")}m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),description:o().max(4e3).nullable().optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).min(1).max(100).optional()}).refine(uf,{message:"At least one campaign field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:tr.max(1e8).optional()}).refine(uf,{message:"At least one ad group field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),creative:mS.optional()}).refine(uf,{message:"At least one ad field must be updated"});m({operationKey:$a});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative()});const Sd=m({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:aS,state:iS,entityType:Qe([lS,ce()]),entityId:o().nullable(),upstreamUpdatedAt:d().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Qe([sS,ce()]),reconcileParentId:At.nullable(),reconcileFingerprint:lf.nullable(),reconcileFields:sq.nullable(),reconcileAttempts:d().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});m({operation:Sd,replayed:C()});const xt=b2({offset:!0}),fr={id:At,projectId:At,adAccountId:At,manifestHash:dS,manifest:uS,executorApiKeyId:At,approverApiKeyId:At,expiresAt:xt,approvedAt:xt,createdAt:xt,updatedAt:xt,revocationRequestedAt:xt.nullable()},oq=m({...fr,state:D(hi.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),rq=m({...fr,state:D(hi.executing),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),lq=m({...fr,state:D(hi.consumed),operationId:At,executionStartedAt:xt,consumedAt:xt,revokedAt:ce(),expiredAt:ce()}).strict(),cq=m({...fr,state:D(hi.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:xt,expiredAt:ce()}).strict(),uq=m({...fr,state:D(hi.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:xt}).strict(),dq=m({...fr,state:D(hi.unknown),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),pS=qe("state",[oq,rq,lq,cq,uq,dq]).superRefine((e,a)=>{e.executorApiKeyId===e.approverApiKeyId&&a.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==hi.executing&&e.state!==hi.unknown&&e.state!==hi.consumed&&a.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),rs={id:At,operationId:At,ordinal:d().int().nonnegative(),entityType:cS,entityId:At,expectedUpdatedAt:d().int().nonnegative(),createdAt:xt,updatedAt:xt},Gl={errorCode:ce(),errorMessage:ce()},df={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},mq=m({...rs,...Gl,state:D(os.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),pq=m({...rs,...Gl,state:D(os.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:xt,finishedAt:ce()}).strict(),hq=m({...rs,...Gl,state:D(os.active),providerUpdatedAt:d().int().nonnegative(),remediation:ce(),startedAt:xt,finishedAt:xt}).strict(),fq=m({...rs,...df,state:D(os.failed),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),gq=m({...rs,...Gl,state:D(os.rollback_executing),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:ce()}).strict(),yq=m({...rs,...Gl,state:D(os.rolled_back),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:xt}).strict(),bq=m({...rs,...df,state:D(os.rollback_failed),providerUpdatedAt:d().int().nonnegative(),startedAt:xt,finishedAt:xt}).strict(),vq=m({...rs,...df,state:D(os.unknown),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),xq=qe("state",[mq,pq,hq,fq,gq,yq,bq,vq]),Bh={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},kq=j([Bh.exact,Bh.refreshSemanticallyUnchanged]);m({manifest:uS,executorApiKeyId:At,expiresAt:xt,versionPolicy:kq.default(Bh.exact)}).strict();m({grant:pS}).strict();m({}).strict();m({operationKey:$a,grantId:At,manifestHash:dS}).strict();m({grant:pS,operation:Sd,steps:y(xq)}).strict();const wq=[Fo.pending,Fo.unknown,Fo.reconciling];function Sq(e){if(e===void 0||e==="")return wq;if(Array.isArray(e)){const a=[];for(const s of e)typeof s=="string"?a.push(...s.split(",")):a.push(s);return a}return typeof e=="string"?e.split(",").filter(Boolean):e}m({state:r0(Sq,y(oS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:l0().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});m({operations:y(Sd),count:d().int().nonnegative(),nextCursor:o().nullable()});m({}).strict();m({operation:Sd,resolved:C()});m({campaignId:o().min(1).max(200).optional(),lookbackDays:l0().int().min(1).max(30).default(7)});const hS=j(["campaign","ad_group","ad"]);hS.enum;const fS=j(["both","live-only","stored-only"]);fS.enum;const jq=D("live-provider-read"),Aq=m({date:o().nullable(),startTime:d().nullable(),endTime:d().nullable(),impressions:d().nullable(),clicks:d().nullable(),spend:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),cpc:d().nullable(),cpm:d().nullable()}),qv=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int()}),Cq=m({date:o(),live:qv.nullable(),stored:qv.nullable(),drifted:C()}),Nq=m({field:o(),live:o().nullable(),stored:o().nullable()}),_q=m({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:d().nullable()}),zq=m({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:d().nullable(),syncedAt:o()}),Eq=m({entityType:hS,id:o(),parentId:o().nullable(),presence:fS,live:_q.nullable(),stored:zq.nullable(),fieldDeltas:y(Nq),liveMetrics:y(Aq).nullable(),metricDeltas:y(Cq).nullable(),drifted:C()}),Tq=m({surface:o(),entityId:o().nullable(),upstreamStatus:d().int().nullable()});m({basis:jq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:m({lookbackDays:d().int().positive()}),bounds:m({maxCampaigns:d().int().positive(),maxAdGroupsPerCampaign:d().int().positive(),maxAdsPerAdGroup:d().int().positive(),maxReaderCalls:d().int().positive(),readerCalls:d().int().nonnegative(),maxPagesPerReaderCall:d().int().positive(),maxUpstreamHttpRequests:d().int().positive(),truncated:C()}),entities:y(Eq),drift:m({entitiesCompared:d().int().nonnegative(),driftedEntities:d().int().nonnegative(),statusDrifted:d().int().nonnegative(),metricsDrifted:d().int().nonnegative()}),errors:y(Tq)});const Rq=m({status:j(["available","unavailable","not-supported"])}),Bv="*",Dq=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),Oq=j(["server","local"]);m({enabled:C(),configuredEnabled:C(),reason:Dq,anonymousId:o().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:Oq.optional()}).strict();const st=1,sh=j(["system","project","queries","competitors","run"]),oh=j(["0","1","2-3","4-5","6-10","11+"]);function La(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Pv=j(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","rate_limited","provider_auth","network","unknown"]),qq=j(["wizard","platform","site_health"]),Su=m({eventId:o().uuid(),flowVersion:D(st),onboardingSessionId:o().uuid(),surface:qq.optional()});qe("event",[Su.extend({event:D("onboarding.started"),step:sh,resumed:C()}).strict(),Su.extend({event:D("onboarding.step_completed"),step:sh,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:oh.optional()}).strict(),Su.extend({event:D("onboarding.blocked"),step:sh,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Pv}).strict(),Su.extend({event:D("run.requested"),origin:D("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:oh,queryCountBucket:oh,reasonCode:Pv.optional()}).strict()]);m({accepted:C()});j(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const Bq=4;function Pq(e){return e.length<Bq}const gS=j(["trace","debug","info","warn","error","fatal"]),Mq=m({runId:o().min(1).max(256).optional(),projectId:o().min(1).max(256).optional(),requestId:o().min(1).max(256).optional(),actor:o().min(1).max(512).optional(),credentialId:o().min(1).max(512).optional(),userAgent:o().min(1).max(512).optional(),actorSession:o().min(1).max(512).optional(),method:o().min(1).max(16).optional(),route:o().min(1).max(256).optional(),operationId:o().min(1).max(256).optional(),jobId:o().min(1).max(256).optional(),taskId:o().min(1).max(256).optional(),traceId:o().min(1).max(256).optional(),errorCode:o().min(1).max(128).optional(),attempt:d().finite().optional(),count:d().finite().optional(),total:d().finite().optional(),progress:d().finite().optional(),httpStatus:d().finite().optional(),statusCode:d().finite().optional(),durationMs:d().finite().optional(),bytes:d().finite().optional(),retryAfterMs:d().finite().optional(),retriable:C().optional(),retrying:C().optional(),cancelled:C().optional(),success:C().optional()}).strict(),Iq=m({cursor:o().min(1).max(512),ts:o().datetime(),level:gS,module:o().min(1).max(256),action:o().min(1).max(256),message:o().max(4096).optional(),runId:o().min(1).max(256).optional(),projectId:o().min(1).max(256).optional(),context:Mq}).strict();m({level:gS.optional(),module:o().trim().min(1).max(256).optional(),runId:o().trim().min(1).max(256).optional(),projectId:o().trim().min(1).max(256).optional(),actor:o().trim().min(1).max(512).optional(),requestId:o().trim().min(1).max(256).optional(),since:o().datetime().optional(),until:o().datetime().optional(),limit:l0().int().min(1).max(200).default(100),cursor:o().trim().min(1).max(512).optional()}).strict().superRefine((e,a)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&a.addIssue({code:Se.custom,path:["until"],message:'"until" must be on or after "since".'})});m({entries:y(Iq),nextCursor:o().min(1).max(512).nullable(),truncated:d().int().nonnegative(),dropped:d().int().nonnegative(),retention:j(["process","durable"]),retentionPolicy:m({maxEntries:d().int().positive(),maxAgeSeconds:d().int().positive()}).strict().optional(),captureErrors:d().int().nonnegative().optional(),observedAt:o().datetime()}).strict();const Vq={bodySerializer:e=>JSON.stringify(e,(a,s)=>typeof s=="bigint"?s.toString():s)},Lq=({onRequest:e,onSseError:a,onSseEvent:s,responseTransformer:r,responseValidator:u,sseDefaultRetryDelay:f,sseMaxRetryAttempts:g,sseMaxRetryDelay:b,sseSleepFn:v,url:k,...S})=>{let A;const N=v??(_=>new Promise(G=>setTimeout(G,_)));return{stream:async function*(){let _=f??3e3,G=0;const K=S.signal??new AbortController().signal;for(;!K.aborted;){G++;const te=S.headers instanceof Headers?S.headers:new Headers(S.headers);A!==void 0&&te.set("Last-Event-ID",A);try{const Q={redirect:"follow",...S,body:S.serializedBody,headers:te,signal:K};let re=new Request(k,Q);e&&(re=await e(k,Q));const oe=await(S.fetch??globalThis.fetch)(re);if(!oe.ok)throw new Error(`SSE failed: ${oe.status} ${oe.statusText}`);if(!oe.body)throw new Error("No body in SSE response");const H=oe.body.pipeThrough(new TextDecoderStream).getReader();let $="";const Te=()=>{try{H.cancel()}catch{}};K.addEventListener("abort",Te);try{for(;;){const{done:Ke,value:Fe}=await H.read();if(Ke)break;$+=Fe;const Re=$.split(`
|
|
49
49
|
|
|
50
50
|
`);$=Re.pop()??"";for(const ve of Re){const Ue=ve.split(`
|
|
51
51
|
`),be=[];let P;for(const je of Ue)if(je.startsWith("data:"))be.push(je.replace(/^data:\s*/,""));else if(je.startsWith("event:"))P=je.replace(/^event:\s*/,"");else if(je.startsWith("id:"))A=je.replace(/^id:\s*/,"");else if(je.startsWith("retry:")){const X=Number.parseInt(je.replace(/^retry:\s*/,""),10);Number.isNaN(X)||(_=X)}let ae,he=!1;if(be.length){const je=be.join(`
|
|
52
|
-
`);try{ae=JSON.parse(je),he=!0}catch{ae=je}}he&&(u&&await u(ae),r&&(ae=await r(ae))),s?.({data:ae,event:P,id:A,retry:_}),be.length&&(yield ae)}}}finally{K.removeEventListener("abort",Te),H.releaseLock()}break}catch(Q){if(a?.(Q),g!==void 0&&G>=g)break;const re=Math.min(_*2**(G-1),b??3e4);await N(re)}}}()}},Uq=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Gq=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},$q=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},yS=({allowReserved:e,explode:a,name:s,style:r,value:u})=>{if(!a){const b=(e?u:u.map(v=>encodeURIComponent(v))).join(Gq(r));switch(r){case"label":return`.${b}`;case"matrix":return`;${s}=${b}`;case"simple":return b;default:return`${s}=${b}`}}const f=Uq(r),g=u.map(b=>r==="label"||r==="simple"?e?b:encodeURIComponent(b):jd({allowReserved:e,name:s,value:b})).join(f);return r==="label"||r==="matrix"?f+g:g},jd=({allowReserved:e,name:a,value:s})=>{if(s==null)return"";if(typeof s=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${a}=${e?s:encodeURIComponent(s)}`},bS=({allowReserved:e,explode:a,name:s,style:r,value:u,valueOnly:f})=>{if(u instanceof Date)return f?u.toISOString():`${s}=${u.toISOString()}`;if(r!=="deepObject"&&!a){let v=[];Object.entries(u).forEach(([S,A])=>{v=[...v,S,e?A:encodeURIComponent(A)]});const k=v.join(",");switch(r){case"form":return`${s}=${k}`;case"label":return`.${k}`;case"matrix":return`;${s}=${k}`;default:return k}}const g=$q(r),b=Object.entries(u).map(([v,k])=>jd({allowReserved:e,name:r==="deepObject"?`${s}[${v}]`:v,value:k})).join(g);return r==="label"||r==="matrix"?g+b:b},Kq=/\{[^{}]+\}/g,Hq=({path:e,url:a})=>{let s=a;const r=a.match(Kq);if(r)for(const u of r){let f=!1,g=u.substring(1,u.length-1),b="simple";g.endsWith("*")&&(f=!0,g=g.substring(0,g.length-1)),g.startsWith(".")?(g=g.substring(1),b="label"):g.startsWith(";")&&(g=g.substring(1),b="matrix");const v=e[g];if(v==null)continue;if(Array.isArray(v)){s=s.replace(u,yS({explode:f,name:g,style:b,value:v}));continue}if(typeof v=="object"){s=s.replace(u,bS({explode:f,name:g,style:b,value:v,valueOnly:!0}));continue}if(b==="matrix"){s=s.replace(u,`;${jd({name:g,value:v})}`);continue}const k=encodeURIComponent(b==="label"?`.${v}`:v);s=s.replace(u,k)}return s},Qq=({baseUrl:e,path:a,query:s,querySerializer:r,url:u})=>{const f=u.startsWith("/")?u:`/${u}`;let g=(e??"")+f;a&&(g=Hq({path:a,url:g}));let b=s?r(s):"";return b.startsWith("?")&&(b=b.substring(1)),b&&(g+=`?${b}`),g};function Fq(e){const a=e.body!==void 0;if(a&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(a)return e.body}const Zq=async(e,a)=>{const s=typeof a=="function"?await a(e):a;if(s)return e.scheme==="bearer"?`Bearer ${s}`:e.scheme==="basic"?`Basic ${btoa(s)}`:s},vS=({allowReserved:e,array:a,object:s}={})=>u=>{const f=[];if(u&&typeof u=="object")for(const g in u){const b=u[g];if(b!=null)if(Array.isArray(b)){const v=yS({allowReserved:e,explode:!0,name:g,style:"form",value:b,...a});v&&f.push(v)}else if(typeof b=="object"){const v=bS({allowReserved:e,explode:!0,name:g,style:"deepObject",value:b,...s});v&&f.push(v)}else{const v=jd({allowReserved:e,name:g,value:b});v&&f.push(v)}}return f.join("&")},Yq=e=>{if(!e)return"stream";const a=e.split(";")[0]?.trim();if(a){if(a.startsWith("application/json")||a.endsWith("+json"))return"json";if(a==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>a.startsWith(s)))return"blob";if(a.startsWith("text/"))return"text"}},Xq=(e,a)=>a?!!(e.headers.has(a)||e.query?.[a]||e.headers.get("Cookie")?.includes(`${a}=`)):!1,Jq=async({security:e,...a})=>{for(const s of e){if(Xq(a,s.name))continue;const r=await Zq(s,a.auth);if(!r)continue;const u=s.name??"Authorization";switch(s.in){case"query":a.query||(a.query={}),a.query[u]=r;break;case"cookie":a.headers.append("Cookie",`${u}=${r}`);break;default:a.headers.set(u,r);break}}},Mv=e=>Qq({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:vS(e.querySerializer),url:e.url}),Iv=(e,a)=>{const s={...e,...a};return s.baseUrl?.endsWith("/")&&(s.baseUrl=s.baseUrl.substring(0,s.baseUrl.length-1)),s.headers=xS(e.headers,a.headers),s},Wq=e=>{const a=[];return e.forEach((s,r)=>{a.push([r,s])}),a},xS=(...e)=>{const a=new Headers;for(const s of e){if(!s)continue;const r=s instanceof Headers?Wq(s):Object.entries(s);for(const[u,f]of r)if(f===null)a.delete(u);else if(Array.isArray(f))for(const g of f)a.append(u,g);else f!==void 0&&a.set(u,typeof f=="object"?JSON.stringify(f):f)}return a};class rh{fns=[];clear(){this.fns=[]}eject(a){const s=this.getInterceptorIndex(a);this.fns[s]&&(this.fns[s]=null)}exists(a){const s=this.getInterceptorIndex(a);return!!this.fns[s]}getInterceptorIndex(a){return typeof a=="number"?this.fns[a]?a:-1:this.fns.indexOf(a)}update(a,s){const r=this.getInterceptorIndex(a);return this.fns[r]?(this.fns[r]=s,a):!1}use(a){return this.fns.push(a),this.fns.length-1}}const eB=()=>({error:new rh,request:new rh,response:new rh}),tB=vS({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),nB={"Content-Type":"application/json"},kS=(e={})=>({...Vq,headers:nB,parseAs:"auto",querySerializer:tB,...e}),wS=(e={})=>{let a=Iv(kS(),e);const s=()=>({...a}),r=k=>(a=Iv(a,k),s()),u=eB(),f=async k=>{const S={...a,...k,fetch:k.fetch??a.fetch??globalThis.fetch,headers:xS(a.headers,k.headers),serializedBody:void 0};S.security&&await Jq({...S,security:S.security}),S.requestValidator&&await S.requestValidator(S),S.body!==void 0&&S.bodySerializer&&(S.serializedBody=S.bodySerializer(S.body)),(S.body===void 0||S.serializedBody==="")&&S.headers.delete("Content-Type");const A=Mv(S);return{opts:S,url:A}},g=async k=>{const{opts:S,url:A}=await f(k),N={redirect:"follow",...S,body:Fq(S)};let E=new Request(A,N);for(const W of u.request.fns)W&&(E=await W(E,S));const Z=S.fetch;let _=await Z(E);for(const W of u.response.fns)W&&(_=await W(_,E,S));const G={request:E,response:_};if(_.ok){const W=(S.parseAs==="auto"?Yq(_.headers.get("Content-Type")):S.parseAs)??"json";if(_.status===204||_.headers.get("Content-Length")==="0"){let H;switch(W){case"arrayBuffer":case"blob":case"text":H=await _[W]();break;case"formData":H=new FormData;break;case"stream":H=_.body;break;default:H={};break}return S.responseStyle==="data"?H:{data:H,...G}}let oe;switch(W){case"arrayBuffer":case"blob":case"formData":case"json":case"text":oe=await _[W]();break;case"stream":return S.responseStyle==="data"?_.body:{data:_.body,...G}}return W==="json"&&(S.responseValidator&&await S.responseValidator(oe),S.responseTransformer&&(oe=await S.responseTransformer(oe))),S.responseStyle==="data"?oe:{data:oe,...G}}const K=await _.text();let te;try{te=JSON.parse(K)}catch{}const Q=te??K;let re=Q;for(const W of u.error.fns)W&&(re=await W(Q,_,E,S));if(re=re||{},S.throwOnError)throw re;return S.responseStyle==="data"?void 0:{error:re,...G}},b=k=>S=>g({...S,method:k}),v=k=>async S=>{const{opts:A,url:N}=await f(S);return Lq({...A,body:A.body,headers:A.headers,method:k,onRequest:async(E,Z)=>{let _=new Request(E,Z);for(const G of u.request.fns)G&&(_=await G(_,A));return _},url:N})};return{buildUrl:Mv,connect:b("CONNECT"),delete:b("DELETE"),get:b("GET"),getConfig:s,head:b("HEAD"),interceptors:u,options:b("OPTIONS"),patch:b("PATCH"),post:b("POST"),put:b("PUT"),request:g,setConfig:r,sse:{connect:v("CONNECT"),delete:v("DELETE"),get:v("GET"),head:v("HEAD"),options:v("OPTIONS"),patch:v("PATCH"),post:v("POST"),put:v("PUT"),trace:v("TRACE")},trace:b("TRACE")}},O=wS(kS()),aB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),iB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),sB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e,headers:{"Content-Type":"application/json",...e.headers}}),oB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),SS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),rB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),lB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),cB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),uB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-setup",...e}),uQ=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft",...e}),dQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/create",...e,headers:{"Content-Type":"application/json",...e.headers}}),mQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),pQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),hQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),fQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),gQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),yQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),bQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),vQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-paired-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),xQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",...e,headers:{"Content-Type":"application/json",...e.headers}}),kQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),wQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),SQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),jQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),AQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),dB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/pin-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),CQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),NQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",...e}),_Q=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",...e}),zQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/publish",...e,headers:{"Content-Type":"application/json",...e.headers}}),EQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/discard",...e}),jS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-overview",...e}),mB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/visibility-report",...e}),pB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-evidence",...e}),hB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-question-result",...e}),fB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-competitors",...e}),gB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-query-templates",...e}),yB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-query-templates/{templateId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),bB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),vB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/batches",...e,headers:{"Content-Type":"application/json",...e.headers}}),xB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking",...e}),kB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking/preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),wB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking/commit",...e,headers:{"Content-Type":"application/json",...e.headers}}),SB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),jB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),AB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),CB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),NB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),AS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),_B=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),zB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),EB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),TB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),RB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),DB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),OB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/competitors",...e}),CS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),qB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),BB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),PB=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),NS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),MB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),IB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),VB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),LB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),UB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),GB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),_S=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),$B=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),KB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),HB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/keys/self",...e}),QB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),FB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),ZB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),YB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),XB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),JB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedules",...e}),WB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),eP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),tP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),nP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),aP=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry",...e}),iP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry",...e,headers:{"Content-Type":"application/json",...e.headers}}),sP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),zS=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),oP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/status",...e}),rP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),lP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/customers",...e}),cP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),uP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/sync",...e}),dP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/performance",...e}),mP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/snapshots",...e}),pP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/connection",...e}),hP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/status",...e}),fP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),gP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts",...e}),yP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers",...e}),bP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers/{containerId}/workspaces",...e}),vP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),xP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/sync",...e}),kP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/snapshots",...e}),wP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/connection",...e}),SP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/options",...e}),jP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e}),AP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e,headers:{"Content-Type":"application/json",...e.headers}}),CP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}/integrity",...e}),NP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),_P=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),zP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),EP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),TP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),RP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),DP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),OP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),qP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),BP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),PP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),MP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),IP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),VP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),LP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),UP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),GP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),$P=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),KP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),HP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),QP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),FP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),ZP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),YP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),XP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),JP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),WP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),eM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),tM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),nM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),aM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),iM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),sM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),oM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),rM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),lM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),cM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),uM=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),dM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),mM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),pM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),hM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),fM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),gM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),yM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),bM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),vM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),xM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),kM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),wM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),SM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),jM=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),AM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),CM=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),NM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),_M=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),zM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),EM=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),TM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),RM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),DM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),OM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),qM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),BM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),PM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),MM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),IM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),VM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),LM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),UM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),GM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),$M=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),KM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),HM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),QM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),FM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),ZM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),YM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl",...e}),XM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/graph",...e}),JM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages/audit",...e}),ES=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages",...e}),WM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/structure",...e}),eI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/internal-links/neighbors",...e}),tI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/dead-links",...e}),nI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e}),aI=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),iI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/progress",...e}),sI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/page-health-preview",...e}),oI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function rI(e){const a={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return wS(a)}class fn extends Error{code;statusCode;details;constructor(a,s,r,u){super(a),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=s,this.details=u}}function Sl(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function lI(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function cI(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function mf(e){const a=cI();if(!a)return e;let s;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{s=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(s.origin!==u)return e;const g=`${Ad().replace(/\/$/,"")}/api/v1`;return s.pathname!==g&&!s.pathname.startsWith(`${g}/`)?e:(s.searchParams.set("token",a),/^[a-z][a-z\d+.-]*:/i.test(e)?s.toString():`${s.pathname}${s.search}${s.hash}`)}function uI(e,a){const s={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(s.body=e.body,s.duplex="half"),new Request(a,s)}function TS(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function dI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function mI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function pI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function Ps(){return hI(ze["answer-visibility"])}function hI(e){if(typeof window>"u")return!1;const a=window.__CANONRY_CONFIG__?.dashboard;return a?.managedRunKinds!==void 0?a.managedRunKinds.includes(e):e===ze["answer-visibility"]&&a?.managedSweeps===!0}function fI(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const a=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(a)&&(a??0)>0?a:zO}}function Vv(){return fI()?"Analyst":"View only"}function gI(){return TS()!==null}function yI(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const pf=yI();function bI(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function Ad(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function vI(e){const a=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return a==="localhost"||a==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(a)}function xI(e,a){if(e.protocol!=="http:"&&e.protocol!=="https:"||!vI(e.hostname))return;const s=e.port?`:${e.port}`:"",r=a?a.replace(/\/$/,""):"";return`${e.protocol}//localhost${s}${r}`}function TQ(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function RQ(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function kI(){if(!(typeof window>"u"))return xI(window.location,Ad())}function wI(e){return`${Ad()}${e}`}function SI(e,a){if(a===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function jI(){return""}function AI(){return!!jI()}let RS=null;function Lv(e){RS=e}function hf(){RS?.()}const se=rI({baseUrl:bI()});se.interceptors.response.use((e,a)=>(e.status===401&&!a.url.includes("/api/v1/session")&&hf(),e));se.interceptors.request.use(e=>{const a=mf(e.url);return a===e.url?e:uI(e,a)});async function ge(e){const a=await e();if(a.error!==void 0&&a.error!==null){const s=a.response.status;let r=`API ${s}: ${a.response.statusText}`,u,f;if(typeof a.error=="object"&&a.error!==null){const g=a.error.error;if(typeof g=="string")r=g;else if(g&&typeof g=="object"){const b=g;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}else{const b=a.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}}else typeof a.error=="string"&&(r=a.error);throw new fn(r,s,u,f)}if(a.response.status!==204)return a.data}async function ls(e,a){const s=a?.body!=null,r=await fetch(mf(`${pf}${e}`),{...a,credentials:a?.credentials??"same-origin",headers:{...s?{"Content-Type":"application/json"}:{},...a?.headers}});if(!r.ok){const u=await r.text();let f=`API ${r.status}: ${r.statusText}`,g,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?f=v.error:v.error?.message?(f=v.error.message,g=v.error.code,b=v.error.details):v.message&&(f=v.message)}catch{f=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&hf(),new fn(f,r.status,g,b)}if(r.status!==204)return r.json()}function CI(e){return ge(()=>SS({client:se,path:{name:e}}))}function DQ(e){return ge(()=>CS({client:se,path:{name:e}}))}function Ph(e){return ge(()=>NS({client:se,path:{id:e}}))}function DS(e){return ge(()=>AS({client:se,path:{name:e}}))}function NI(e,a,s){return ge(()=>LB({client:se,path:{name:e},query:{location:a,limit:s}}))}function OS(e,a){return ge(()=>wM({client:se,path:{name:e},query:{location:a?.location,since:a?.since}}))}function qS(e,a){return ge(()=>rB({client:se,path:{name:e},body:a}))}function _I(e){return ge(()=>sB({client:se,body:e}))}function zI(e,a){return ge(()=>zB({client:se,path:{name:e},body:{queries:a}}))}function EI(e,a){return ge(()=>_B({client:se,path:{name:e},body:{queries:a}}))}function OQ(e,a){return ge(()=>NB({client:se,path:{name:e},body:{queries:a}}))}function TI(e,a){return ge(()=>kM({client:se,path:{name:e},body:a}))}function RI(e,a){return ge(()=>RB({client:se,path:{name:e},body:{competitors:a}}))}function qQ(e,a){return ge(()=>TB({client:se,path:{name:e},body:{competitors:a}}))}function BQ(e,a){return ge(()=>DB({client:se,path:{name:e,id:a}}))}async function PQ(e,a){const s=await CI(e);return qS(e,{displayName:a.displayName??s.displayName??s.name,canonicalDomain:a.canonicalDomain??s.canonicalDomain,ownedDomains:a.ownedDomains??s.ownedDomains,aliases:a.aliases??s.aliases,country:a.country??s.country,language:a.language??s.language,tags:s.tags,labels:s.labels,providers:a.providers??s.providers,providerModels:a.providerModels??s.providerModels??{},locations:a.locations??s.locations,defaultLocation:a.defaultLocation!==void 0?a.defaultLocation:s.defaultLocation,autoExtractBacklinks:s.autoExtractBacklinks})}function DI(e,a){const s={};return a?.location&&(s.location=a.location),a?.allLocations&&(s.allLocations=!0),a?.noLocation&&(s.noLocation=!0),ge(()=>qB({client:se,path:{name:e},body:s}))}function MQ(e,a){return ge(()=>jB({client:se,path:{name:e},body:a}))}async function IQ(e,a){await ge(()=>AB({client:se,path:{name:e,label:a}}))}function VQ(e,a){return ge(()=>CB({client:se,path:{name:e},body:{label:a}}))}async function LQ(e){await ge(()=>oB({client:se,path:{name:e}}))}function UQ(){return ge(()=>_S({client:se}))}function Uv(){return ls("/session")}function OI(e){return ls("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function qI(e){return ls("/session",{method:"POST",body:JSON.stringify({password:e})})}function BI(e){return ls("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function PI(){return ls("/session",{method:"DELETE"})}function lh(){return ge(()=>HB({client:se}))}function Gv(){return ls("/auth/session")}function MI(e,a){return ls("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:a})})}function $v(){return ls("/auth/logout",{method:"POST"})}function BS(e,a){return ge(()=>$B({client:se,path:{name:e},body:a}))}async function PS(e){for(let a=0;a<2;a+=1)try{await ge(()=>sP({client:se,body:e}));return}catch(s){if(!(!(s instanceof fn)||s.statusCode>=500)||a===1)return}}function GQ(e){return ge(()=>KB({client:se,body:e}))}function $Q(e,a){return ge(()=>XB({client:se,path:{name:e},body:a}))}async function KQ(e,a){await ge(()=>ZB({client:se,path:{name:e},query:a===void 0?void 0:{expectedUpdatedAt:a}}))}function HQ(e){return ge(()=>WB({client:se,path:{name:e}}))}function QQ(e,a){return ge(()=>eP({client:se,path:{name:e},body:a}))}async function FQ(e,a){await ge(()=>tP({client:se,path:{name:e,id:a}}))}function ZQ(e,a){return ge(()=>nP({client:se,path:{name:e,id:a}}))}function II(e,a,s){return ge(()=>EB({client:se,path:{name:e},body:{provider:a,count:s}}))}function VI(e){return ge(()=>MB({client:se,body:e}))}function LI(e){return ge(()=>PB({client:se,body:e??{}}))}function YQ(e,a){const s=kI();return ge(()=>_P({client:se,path:{name:e},body:{type:a,...s?{publicUrl:s}:{}}}))}function XQ(e,a){return ge(()=>zP({client:se,path:{name:e,type:a}}))}function JQ(e,a,s){return ge(()=>TP({client:se,path:{name:e,type:a},body:{propertyId:s}}))}function WQ(e,a,s){return ge(()=>RP({client:se,path:{name:e,type:a},body:{sitemapUrl:s}}))}function UI(e,a){return ge(()=>DP({client:se,path:{name:e},body:a??{}}))}function eF(e,a){const s={};return a&&a!=="all"&&(s.window=a),ge(()=>UB({client:se,path:{name:e},query:s}))}function tF(e,a){return ge(()=>BP({client:se,path:{name:e},body:{url:a}}))}function GI(e,a){return ge(()=>UP({client:se,path:{name:e},body:a??{}}))}function nF(e,a){return ge(()=>LP({client:se,path:{name:e},query:a?{sitemapIndex:a}:void 0}))}function aF(e,a){return ge(()=>aB({client:se,path:{name:e},body:{sitemapUrls:a}}))}function $I(e,a){return ge(()=>aI({client:se,path:{name:e},body:a??{}}))}function iF(e,a){return ge(()=>$M({client:se,path:{name:e},body:a??{}}))}function sF(){return ge(()=>zS({client:se}))}function oF(e,a){return ge(()=>FB({client:se,body:{host:e,port:a}}))}function rF(e,a){return ge(()=>GP({client:se,path:{name:e},body:a}))}function lF(e,a){return ge(()=>JP({client:se,path:{name:e},body:{apiKey:a}}))}function cF(e){return ge(()=>WP({client:se,path:{name:e}}))}function uF(e,a){return ge(()=>nM({client:se,path:{name:e},body:{siteUrl:a}}))}function dF(e,a){return ge(()=>sM({client:se,path:{name:e},body:{url:a}}))}function mF(e,a){return ge(()=>oM({client:se,path:{name:e},body:{}}))}function pF(e,a){return ge(()=>rM({client:se,path:{name:e},body:a}))}function hF(e){return ge(()=>QB({client:se,body:{apiKey:e}}))}function MS(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function fF(e,a="agency",s){const r=new URLSearchParams({audience:a});s!==void 0&&r.set("period",String(s));const u=await fetch(mf(`${pf}/projects/${encodeURIComponent(e)}/report.html?${r.toString()}`),{credentials:"same-origin",headers:{}});if(!u.ok)throw new fn(`Failed to download report: ${u.status}`,u.status);const f=await u.blob(),g=URL.createObjectURL(f),b=MS(u.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,v=document.createElement("a");v.href=g,v.download=b,document.body.appendChild(v),v.click(),document.body.removeChild(v),URL.revokeObjectURL(g)}async function gF(e,a){const s=await fetch(`${pf}/projects/${encodeURIComponent(e)}/results/export?format=${a}`,{credentials:"same-origin",headers:{}});if(!s.ok)throw new fn(`Failed to download results: ${s.status}`,s.status);const r=await s.blob(),u=URL.createObjectURL(r),f=MS(s.headers.get("Content-Disposition"))??`canonry-results-${e}.${a}`,g=document.createElement("a");g.href=u,g.download=f,document.body.appendChild(g),g.click(),document.body.removeChild(g),URL.revokeObjectURL(u)}function yF(e,a){return ge(()=>mM({client:se,path:{name:e},body:{}}))}function bF(e,a){return ge(()=>cM({client:se,path:{name:e},body:a}))}function vF(e){return ge(()=>uM({client:se,path:{name:e}}))}function xF(e,a){return ge(()=>qM({client:se,path:{name:e},body:a}))}function kF(e,a){return ge(()=>BM({client:se,path:{name:e},body:a}))}function wF(e,a){return ge(()=>PM({client:se,path:{name:e},body:a}))}function SF(e,a,s){return ge(()=>MM({client:se,path:{name:e,id:a},body:s??{}}))}function jF(e,a,s){return ge(()=>IM({client:se,path:{name:e,id:a},body:{}}))}function AF(e,a){return ge(()=>yM({client:se,path:{name:e},query:{runId:a}}))}function KI(e){if(!e||typeof e!="object")return;const a=e;if(!(typeof a.current!="string"||typeof a.latest!="string"||typeof a.url!="string"||typeof a.upgradeCommand!="string"))return{current:a.current,latest:a.latest,url:a.url,upgradeCommand:a.upgradeCommand}}async function HI(e,a){const s=wI(e);try{const r=await fetch(s,{credentials:"same-origin"});if(!r.ok)return{label:a,state:"error",detail:`${a} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:SI(e,r.status)};const u=await r.json(),f=typeof u.version=="string"?u.version:"unknown",g=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=KI(u.updateAvailable),k=Rq.safeParse(u.mcp),S=[f,g===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:a,state:"ok",detail:S,version:f,databaseConfigured:g,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...k.success?{mcp:k.data}:{}}}catch(r){return{label:a,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${s}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function CF(){return ge(()=>SM({client:se}))}function NF(){return ge(()=>jM({client:se}))}function _F(){return ge(()=>NM({client:se}))}function zF(){return ge(()=>AM({client:se}))}function EF(e){return ge(()=>CM({client:se,body:e?{release:e}:{}}))}function TF(){return ge(()=>_M({client:se}))}function RF(){return ge(()=>zM({client:se}))}function DF(e){return ge(()=>EM({client:se,path:{release:e}}))}function OF(e,a={}){return ge(()=>RM({client:se,path:{name:e},query:{release:a.release,excludeCrawlers:a.excludeCrawlers?"1":void 0,source:a.source}}))}function qF(e,a={}){return ge(()=>DM({client:se,path:{name:e},query:{limit:a.limit!==void 0?String(a.limit):void 0,offset:a.offset!==void 0?String(a.offset):void 0,release:a.release,excludeCrawlers:a.excludeCrawlers?"1":void 0,source:a.source}}))}function BF(e,a={}){return ge(()=>OM({client:se,path:{name:e},query:{source:a.source}}))}function PF(e,a){return ge(()=>TM({client:se,path:{name:e},body:{release:void 0}}))}const IS={account:null,canWrite:!0,isAdmin:!0},QI={account:null,canWrite:!1,isAdmin:!1};function FI(e){const a=e.scopes.includes(Bv);return{account:null,canWrite:!e.readOnly&&a,isAdmin:e.projectId===null&&e.scopes.includes(Bv)}}const VS=T.createContext(IS);function ZI({account:e,apiKey:a,apiKeyPending:s=!1,children:r}){const u=s?QI:a?FI(a):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:IS;return c.jsx(VS.Provider,{value:u,children:r})}function ha(){return T.useContext(VS)}const LS="View only — your account cannot change this.";function Ft(e){return(...a)=>{e(...a)}}const YI=6e3,XI=5,JI=180;let hn=[],WI=0;const Mh=new Set,Ih=new Map,Vh=new Map;function Ku(){const e=[...hn];for(const a of Mh)a(e)}function ff(e){const a=Ih.get(e);a&&(clearTimeout(a),Ih.delete(e));const s=Vh.get(e);s&&(clearTimeout(s),Vh.delete(e))}function US(e){ff(e);const a=hn.length;hn=hn.filter(s=>s.id!==e),hn.length!==a&&Ku()}function Kv(e){ff(e.id),Ih.set(e.id,setTimeout(()=>{Lh(e.id)},e.durationMs))}function eV(e,a,s){return typeof e=="string"?{title:e,tone:a,durationMs:s}:e}function rn(e,a="negative",s=YI){const r=eV(e,a,s),u={id:String(++WI),title:r.title,detail:r.detail,tone:r.tone??a,durationMs:r.durationMs??s,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const f=hn.find(g=>g.dedupeKey===r.dedupeKey);if(f){if((r.dedupeMode??"drop")==="drop")return f.id;const g={...f,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return hn=hn.map(b=>b.id===f.id?g:b),Ku(),Kv(g),f.id}}return hn.length>=XI&&US(hn[0].id),hn=[...hn,u],Ku(),Kv(u),u.id}function Lh(e){const a=hn.find(s=>s.id===e);!a||a.state==="closing"||(ff(e),hn=hn.map(s=>s.id===e?{...s,state:"closing"}:s),Ku(),Vh.set(e,setTimeout(()=>{US(e)},JI)))}function tV(e){return Mh.add(e),()=>{Mh.delete(e)}}function Hv(){return hn}const nV=5*6e4,Tu=30*6e4,MF=3e4,IF=6e4,nr=3e4,aV=2e3,iV=3e4;function sV(){return new V4({defaultOptions:{queries:{staleTime:nV,retry:1,refetchOnWindowFocus:!1}},mutationCache:new L4({onError:(a,s,r,u)=>{u.meta?.skipGlobalErrorToast||rn({title:a instanceof Error?a.message:"An unexpected error occurred",tone:"negative"})}})})}const oV="modulepreload",rV=function(e,a){return new URL(e,a).href},Qv={},yi=function(a,s,r){let u=Promise.resolve();if(s&&s.length>0){let k=function(S){return Promise.all(S.map(A=>Promise.resolve(A).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};const g=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=k(s.map(S=>{if(S=rV(S,r),S in Qv)return;Qv[S]=!0;const A=S.endsWith(".css"),N=A?'[rel="stylesheet"]':"";if(r)for(let Z=g.length-1;Z>=0;Z--){const _=g[Z];if(_.href===S&&(!A||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${N}`))return;const E=document.createElement("link");if(E.rel=A?"stylesheet":oV,A||(E.as="script"),E.crossOrigin="",E.href=S,v&&E.setAttribute("nonce",v),document.head.appendChild(E),A)return new Promise((Z,_)=>{E.addEventListener("load",Z),E.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${S}`)))})}))}function f(g){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=g,window.dispatchEvent(b),!b.defaultPrevented)throw g}return u.then(g=>{for(const b of g||[])b.status==="rejected"&&f(b.reason);return a().catch(f)})};var lV=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(lV||{});const VF={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},LF={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},cV=G0;function uV(e){const a=[];if(e.message&&a.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?a.push(`${u}
|
|
52
|
+
`);try{ae=JSON.parse(je),he=!0}catch{ae=je}}he&&(u&&await u(ae),r&&(ae=await r(ae))),s?.({data:ae,event:P,id:A,retry:_}),be.length&&(yield ae)}}}finally{K.removeEventListener("abort",Te),H.releaseLock()}break}catch(Q){if(a?.(Q),g!==void 0&&G>=g)break;const re=Math.min(_*2**(G-1),b??3e4);await N(re)}}}()}},Uq=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Gq=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},$q=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},yS=({allowReserved:e,explode:a,name:s,style:r,value:u})=>{if(!a){const b=(e?u:u.map(v=>encodeURIComponent(v))).join(Gq(r));switch(r){case"label":return`.${b}`;case"matrix":return`;${s}=${b}`;case"simple":return b;default:return`${s}=${b}`}}const f=Uq(r),g=u.map(b=>r==="label"||r==="simple"?e?b:encodeURIComponent(b):jd({allowReserved:e,name:s,value:b})).join(f);return r==="label"||r==="matrix"?f+g:g},jd=({allowReserved:e,name:a,value:s})=>{if(s==null)return"";if(typeof s=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${a}=${e?s:encodeURIComponent(s)}`},bS=({allowReserved:e,explode:a,name:s,style:r,value:u,valueOnly:f})=>{if(u instanceof Date)return f?u.toISOString():`${s}=${u.toISOString()}`;if(r!=="deepObject"&&!a){let v=[];Object.entries(u).forEach(([S,A])=>{v=[...v,S,e?A:encodeURIComponent(A)]});const k=v.join(",");switch(r){case"form":return`${s}=${k}`;case"label":return`.${k}`;case"matrix":return`;${s}=${k}`;default:return k}}const g=$q(r),b=Object.entries(u).map(([v,k])=>jd({allowReserved:e,name:r==="deepObject"?`${s}[${v}]`:v,value:k})).join(g);return r==="label"||r==="matrix"?g+b:b},Kq=/\{[^{}]+\}/g,Hq=({path:e,url:a})=>{let s=a;const r=a.match(Kq);if(r)for(const u of r){let f=!1,g=u.substring(1,u.length-1),b="simple";g.endsWith("*")&&(f=!0,g=g.substring(0,g.length-1)),g.startsWith(".")?(g=g.substring(1),b="label"):g.startsWith(";")&&(g=g.substring(1),b="matrix");const v=e[g];if(v==null)continue;if(Array.isArray(v)){s=s.replace(u,yS({explode:f,name:g,style:b,value:v}));continue}if(typeof v=="object"){s=s.replace(u,bS({explode:f,name:g,style:b,value:v,valueOnly:!0}));continue}if(b==="matrix"){s=s.replace(u,`;${jd({name:g,value:v})}`);continue}const k=encodeURIComponent(b==="label"?`.${v}`:v);s=s.replace(u,k)}return s},Qq=({baseUrl:e,path:a,query:s,querySerializer:r,url:u})=>{const f=u.startsWith("/")?u:`/${u}`;let g=(e??"")+f;a&&(g=Hq({path:a,url:g}));let b=s?r(s):"";return b.startsWith("?")&&(b=b.substring(1)),b&&(g+=`?${b}`),g};function Fq(e){const a=e.body!==void 0;if(a&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(a)return e.body}const Zq=async(e,a)=>{const s=typeof a=="function"?await a(e):a;if(s)return e.scheme==="bearer"?`Bearer ${s}`:e.scheme==="basic"?`Basic ${btoa(s)}`:s},vS=({allowReserved:e,array:a,object:s}={})=>u=>{const f=[];if(u&&typeof u=="object")for(const g in u){const b=u[g];if(b!=null)if(Array.isArray(b)){const v=yS({allowReserved:e,explode:!0,name:g,style:"form",value:b,...a});v&&f.push(v)}else if(typeof b=="object"){const v=bS({allowReserved:e,explode:!0,name:g,style:"deepObject",value:b,...s});v&&f.push(v)}else{const v=jd({allowReserved:e,name:g,value:b});v&&f.push(v)}}return f.join("&")},Yq=e=>{if(!e)return"stream";const a=e.split(";")[0]?.trim();if(a){if(a.startsWith("application/json")||a.endsWith("+json"))return"json";if(a==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>a.startsWith(s)))return"blob";if(a.startsWith("text/"))return"text"}},Xq=(e,a)=>a?!!(e.headers.has(a)||e.query?.[a]||e.headers.get("Cookie")?.includes(`${a}=`)):!1,Jq=async({security:e,...a})=>{for(const s of e){if(Xq(a,s.name))continue;const r=await Zq(s,a.auth);if(!r)continue;const u=s.name??"Authorization";switch(s.in){case"query":a.query||(a.query={}),a.query[u]=r;break;case"cookie":a.headers.append("Cookie",`${u}=${r}`);break;default:a.headers.set(u,r);break}}},Mv=e=>Qq({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:vS(e.querySerializer),url:e.url}),Iv=(e,a)=>{const s={...e,...a};return s.baseUrl?.endsWith("/")&&(s.baseUrl=s.baseUrl.substring(0,s.baseUrl.length-1)),s.headers=xS(e.headers,a.headers),s},Wq=e=>{const a=[];return e.forEach((s,r)=>{a.push([r,s])}),a},xS=(...e)=>{const a=new Headers;for(const s of e){if(!s)continue;const r=s instanceof Headers?Wq(s):Object.entries(s);for(const[u,f]of r)if(f===null)a.delete(u);else if(Array.isArray(f))for(const g of f)a.append(u,g);else f!==void 0&&a.set(u,typeof f=="object"?JSON.stringify(f):f)}return a};class rh{fns=[];clear(){this.fns=[]}eject(a){const s=this.getInterceptorIndex(a);this.fns[s]&&(this.fns[s]=null)}exists(a){const s=this.getInterceptorIndex(a);return!!this.fns[s]}getInterceptorIndex(a){return typeof a=="number"?this.fns[a]?a:-1:this.fns.indexOf(a)}update(a,s){const r=this.getInterceptorIndex(a);return this.fns[r]?(this.fns[r]=s,a):!1}use(a){return this.fns.push(a),this.fns.length-1}}const eB=()=>({error:new rh,request:new rh,response:new rh}),tB=vS({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),nB={"Content-Type":"application/json"},kS=(e={})=>({...Vq,headers:nB,parseAs:"auto",querySerializer:tB,...e}),wS=(e={})=>{let a=Iv(kS(),e);const s=()=>({...a}),r=k=>(a=Iv(a,k),s()),u=eB(),f=async k=>{const S={...a,...k,fetch:k.fetch??a.fetch??globalThis.fetch,headers:xS(a.headers,k.headers),serializedBody:void 0};S.security&&await Jq({...S,security:S.security}),S.requestValidator&&await S.requestValidator(S),S.body!==void 0&&S.bodySerializer&&(S.serializedBody=S.bodySerializer(S.body)),(S.body===void 0||S.serializedBody==="")&&S.headers.delete("Content-Type");const A=Mv(S);return{opts:S,url:A}},g=async k=>{const{opts:S,url:A}=await f(k),N={redirect:"follow",...S,body:Fq(S)};let E=new Request(A,N);for(const W of u.request.fns)W&&(E=await W(E,S));const Z=S.fetch;let _=await Z(E);for(const W of u.response.fns)W&&(_=await W(_,E,S));const G={request:E,response:_};if(_.ok){const W=(S.parseAs==="auto"?Yq(_.headers.get("Content-Type")):S.parseAs)??"json";if(_.status===204||_.headers.get("Content-Length")==="0"){let H;switch(W){case"arrayBuffer":case"blob":case"text":H=await _[W]();break;case"formData":H=new FormData;break;case"stream":H=_.body;break;default:H={};break}return S.responseStyle==="data"?H:{data:H,...G}}let oe;switch(W){case"arrayBuffer":case"blob":case"formData":case"json":case"text":oe=await _[W]();break;case"stream":return S.responseStyle==="data"?_.body:{data:_.body,...G}}return W==="json"&&(S.responseValidator&&await S.responseValidator(oe),S.responseTransformer&&(oe=await S.responseTransformer(oe))),S.responseStyle==="data"?oe:{data:oe,...G}}const K=await _.text();let te;try{te=JSON.parse(K)}catch{}const Q=te??K;let re=Q;for(const W of u.error.fns)W&&(re=await W(Q,_,E,S));if(re=re||{},S.throwOnError)throw re;return S.responseStyle==="data"?void 0:{error:re,...G}},b=k=>S=>g({...S,method:k}),v=k=>async S=>{const{opts:A,url:N}=await f(S);return Lq({...A,body:A.body,headers:A.headers,method:k,onRequest:async(E,Z)=>{let _=new Request(E,Z);for(const G of u.request.fns)G&&(_=await G(_,A));return _},url:N})};return{buildUrl:Mv,connect:b("CONNECT"),delete:b("DELETE"),get:b("GET"),getConfig:s,head:b("HEAD"),interceptors:u,options:b("OPTIONS"),patch:b("PATCH"),post:b("POST"),put:b("PUT"),request:g,setConfig:r,sse:{connect:v("CONNECT"),delete:v("DELETE"),get:v("GET"),head:v("HEAD"),options:v("OPTIONS"),patch:v("PATCH"),post:v("POST"),put:v("PUT"),trace:v("TRACE")},trace:b("TRACE")}},O=wS(kS()),aB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),iB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),sB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e,headers:{"Content-Type":"application/json",...e.headers}}),oB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),SS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),rB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),lB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),cB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),uB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-setup",...e}),dQ=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft",...e}),mQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/create",...e,headers:{"Content-Type":"application/json",...e.headers}}),pQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),hQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),fQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),gQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",...e,headers:{"Content-Type":"application/json",...e.headers}}),yQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),bQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),vQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/replace-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),xQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-paired-assignments",...e,headers:{"Content-Type":"application/json",...e.headers}}),kQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",...e,headers:{"Content-Type":"application/json",...e.headers}}),wQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),SQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",...e,headers:{"Content-Type":"application/json",...e.headers}}),jQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/preview-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),AQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/apply-group-membership",...e,headers:{"Content-Type":"application/json",...e.headers}}),CQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),dB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/pin-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),NQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",...e,headers:{"Content-Type":"application/json",...e.headers}}),_Q=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",...e}),zQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",...e}),EQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/publish",...e,headers:{"Content-Type":"application/json",...e.headers}}),TQ=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/draft/actions/discard",...e}),jS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-overview",...e}),mB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/visibility-report",...e}),pB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-evidence",...e}),hB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-question-result",...e}),fB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-property-competitors",...e}),gB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-query-templates",...e}),yB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-query-templates/{templateId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),bB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),vB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/batches",...e,headers:{"Content-Type":"application/json",...e.headers}}),xB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking",...e}),kB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking/preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),wB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/query-tracking/commit",...e,headers:{"Content-Type":"application/json",...e.headers}}),SB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),jB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),AB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),CB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),NB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),AS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),_B=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),zB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),EB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),TB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),RB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),DB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),OB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/competitors",...e}),CS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),qB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),BB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),PB=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),NS=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),MB=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),IB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),VB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),LB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),UB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),GB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),_S=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),$B=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),KB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),HB=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/keys/self",...e}),QB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),FB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),ZB=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),YB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),XB=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),JB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedules",...e}),WB=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),eP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),tP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),nP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),aP=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry",...e}),iP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry",...e,headers:{"Content-Type":"application/json",...e.headers}}),sP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),zS=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),oP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/status",...e}),rP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),lP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/customers",...e}),cP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),uP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/sync",...e}),dP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/performance",...e}),mP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/snapshots",...e}),pP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google-ads/connection",...e}),hP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/status",...e}),fP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/oauth/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),gP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts",...e}),yP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers",...e}),bP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/accounts/{accountId}/containers/{containerId}/workspaces",...e}),vP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),xP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/sync",...e}),kP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/snapshots",...e}),wP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gtm/connection",...e}),SP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/options",...e}),jP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e}),AP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts",...e,headers:{"Content-Type":"application/json",...e.headers}}),CP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/conversion-tracking/contracts/{contractId}/integrity",...e}),NP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),_P=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),zP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),EP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),TP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),RP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),DP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),OP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),qP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),BP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),PP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),MP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),IP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),VP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),LP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),UP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),GP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),$P=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),KP=e=>(e.client??O).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),HP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),QP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),FP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),ZP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),YP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),XP=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),JP=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),WP=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),eM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),tM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),nM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),aM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),iM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),sM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),oM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),rM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),lM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),cM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),uM=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),dM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),mM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),pM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),hM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),fM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),gM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),yM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),bM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),vM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),xM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),kM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),wM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),SM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),jM=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),AM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),CM=e=>(e?.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),NM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),_M=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),zM=e=>(e?.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),EM=e=>(e.client??O).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),TM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),RM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),DM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),OM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),qM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),BM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),PM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),MM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),IM=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),VM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),LM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),UM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),GM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),$M=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),KM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),HM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),QM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),FM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),ZM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),YM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl",...e}),XM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/graph",...e}),JM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages/audit",...e}),ES=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/crawl/pages",...e}),WM=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/structure",...e}),eI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/internal-links/neighbors",...e}),tI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/dead-links",...e}),nI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e}),aI=e=>(e.client??O).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),iI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/progress",...e}),sI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs/{runId}/page-health-preview",...e}),oI=e=>(e.client??O).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function rI(e){const a={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return wS(a)}class fn extends Error{code;statusCode;details;constructor(a,s,r,u){super(a),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=s,this.details=u}}function Sl(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function lI(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function cI(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function mf(e){const a=cI();if(!a)return e;let s;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{s=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(s.origin!==u)return e;const g=`${Ad().replace(/\/$/,"")}/api/v1`;return s.pathname!==g&&!s.pathname.startsWith(`${g}/`)?e:(s.searchParams.set("token",a),/^[a-z][a-z\d+.-]*:/i.test(e)?s.toString():`${s.pathname}${s.search}${s.hash}`)}function uI(e,a){const s={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(s.body=e.body,s.duplex="half"),new Request(a,s)}function TS(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function dI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function mI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function pI(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function Ps(){return hI(ze["answer-visibility"])}function hI(e){if(typeof window>"u")return!1;const a=window.__CANONRY_CONFIG__?.dashboard;return a?.managedRunKinds!==void 0?a.managedRunKinds.includes(e):e===ze["answer-visibility"]&&a?.managedSweeps===!0}function fI(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const a=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(a)&&(a??0)>0?a:zO}}function Vv(){return fI()?"Analyst":"View only"}function gI(){return TS()!==null}function yI(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const pf=yI();function bI(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function Ad(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function vI(e){const a=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return a==="localhost"||a==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(a)}function xI(e,a){if(e.protocol!=="http:"&&e.protocol!=="https:"||!vI(e.hostname))return;const s=e.port?`:${e.port}`:"",r=a?a.replace(/\/$/,""):"";return`${e.protocol}//localhost${s}${r}`}function RQ(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function DQ(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function kI(){if(!(typeof window>"u"))return xI(window.location,Ad())}function wI(e){return`${Ad()}${e}`}function SI(e,a){if(a===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function jI(){return""}function AI(){return!!jI()}let RS=null;function Lv(e){RS=e}function hf(){RS?.()}const se=rI({baseUrl:bI()});se.interceptors.response.use((e,a)=>(e.status===401&&!a.url.includes("/api/v1/session")&&hf(),e));se.interceptors.request.use(e=>{const a=mf(e.url);return a===e.url?e:uI(e,a)});async function ge(e){const a=await e();if(a.error!==void 0&&a.error!==null){const s=a.response.status;let r=`API ${s}: ${a.response.statusText}`,u,f;if(typeof a.error=="object"&&a.error!==null){const g=a.error.error;if(typeof g=="string")r=g;else if(g&&typeof g=="object"){const b=g;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}else{const b=a.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(f=b.details)}}else typeof a.error=="string"&&(r=a.error);throw new fn(r,s,u,f)}if(a.response.status!==204)return a.data}async function ls(e,a){const s=a?.body!=null,r=await fetch(mf(`${pf}${e}`),{...a,credentials:a?.credentials??"same-origin",headers:{...s?{"Content-Type":"application/json"}:{},...a?.headers}});if(!r.ok){const u=await r.text();let f=`API ${r.status}: ${r.statusText}`,g,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?f=v.error:v.error?.message?(f=v.error.message,g=v.error.code,b=v.error.details):v.message&&(f=v.message)}catch{f=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&hf(),new fn(f,r.status,g,b)}if(r.status!==204)return r.json()}function CI(e){return ge(()=>SS({client:se,path:{name:e}}))}function OQ(e){return ge(()=>CS({client:se,path:{name:e}}))}function Ph(e){return ge(()=>NS({client:se,path:{id:e}}))}function DS(e){return ge(()=>AS({client:se,path:{name:e}}))}function NI(e,a,s){return ge(()=>LB({client:se,path:{name:e},query:{location:a,limit:s}}))}function OS(e,a){return ge(()=>wM({client:se,path:{name:e},query:{location:a?.location,since:a?.since}}))}function qS(e,a){return ge(()=>rB({client:se,path:{name:e},body:a}))}function _I(e){return ge(()=>sB({client:se,body:e}))}function zI(e,a){return ge(()=>zB({client:se,path:{name:e},body:{queries:a}}))}function EI(e,a){return ge(()=>_B({client:se,path:{name:e},body:{queries:a}}))}function qQ(e,a){return ge(()=>NB({client:se,path:{name:e},body:{queries:a}}))}function TI(e,a){return ge(()=>kM({client:se,path:{name:e},body:a}))}function RI(e,a){return ge(()=>RB({client:se,path:{name:e},body:{competitors:a}}))}function BQ(e,a){return ge(()=>TB({client:se,path:{name:e},body:{competitors:a}}))}function PQ(e,a){return ge(()=>DB({client:se,path:{name:e,id:a}}))}async function MQ(e,a){const s=await CI(e);return qS(e,{displayName:a.displayName??s.displayName??s.name,canonicalDomain:a.canonicalDomain??s.canonicalDomain,ownedDomains:a.ownedDomains??s.ownedDomains,aliases:a.aliases??s.aliases,country:a.country??s.country,language:a.language??s.language,tags:s.tags,labels:s.labels,providers:a.providers??s.providers,providerModels:a.providerModels??s.providerModels??{},locations:a.locations??s.locations,defaultLocation:a.defaultLocation!==void 0?a.defaultLocation:s.defaultLocation,autoExtractBacklinks:s.autoExtractBacklinks})}function DI(e,a){const s={};return a?.location&&(s.location=a.location),a?.allLocations&&(s.allLocations=!0),a?.noLocation&&(s.noLocation=!0),ge(()=>qB({client:se,path:{name:e},body:s}))}function IQ(e,a){return ge(()=>jB({client:se,path:{name:e},body:a}))}async function VQ(e,a){await ge(()=>AB({client:se,path:{name:e,label:a}}))}function LQ(e,a){return ge(()=>CB({client:se,path:{name:e},body:{label:a}}))}async function UQ(e){await ge(()=>oB({client:se,path:{name:e}}))}function GQ(){return ge(()=>_S({client:se}))}function Uv(){return ls("/session")}function OI(e){return ls("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function qI(e){return ls("/session",{method:"POST",body:JSON.stringify({password:e})})}function BI(e){return ls("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function PI(){return ls("/session",{method:"DELETE"})}function lh(){return ge(()=>HB({client:se}))}function Gv(){return ls("/auth/session")}function MI(e,a){return ls("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:a})})}function $v(){return ls("/auth/logout",{method:"POST"})}function BS(e,a){return ge(()=>$B({client:se,path:{name:e},body:a}))}async function PS(e){for(let a=0;a<2;a+=1)try{await ge(()=>sP({client:se,body:e}));return}catch(s){if(!(!(s instanceof fn)||s.statusCode>=500)||a===1)return}}function $Q(e){return ge(()=>KB({client:se,body:e}))}function KQ(e,a){return ge(()=>XB({client:se,path:{name:e},body:a}))}async function HQ(e,a){await ge(()=>ZB({client:se,path:{name:e},query:a===void 0?void 0:{expectedUpdatedAt:a}}))}function QQ(e){return ge(()=>WB({client:se,path:{name:e}}))}function FQ(e,a){return ge(()=>eP({client:se,path:{name:e},body:a}))}async function ZQ(e,a){await ge(()=>tP({client:se,path:{name:e,id:a}}))}function YQ(e,a){return ge(()=>nP({client:se,path:{name:e,id:a}}))}function II(e,a,s){return ge(()=>EB({client:se,path:{name:e},body:{provider:a,count:s}}))}function VI(e){return ge(()=>MB({client:se,body:e}))}function LI(e){return ge(()=>PB({client:se,body:e??{}}))}function XQ(e,a){const s=kI();return ge(()=>_P({client:se,path:{name:e},body:{type:a,...s?{publicUrl:s}:{}}}))}function JQ(e,a){return ge(()=>zP({client:se,path:{name:e,type:a}}))}function WQ(e,a,s){return ge(()=>TP({client:se,path:{name:e,type:a},body:{propertyId:s}}))}function eF(e,a,s){return ge(()=>RP({client:se,path:{name:e,type:a},body:{sitemapUrl:s}}))}function UI(e,a){return ge(()=>DP({client:se,path:{name:e},body:a??{}}))}function tF(e,a){const s={};return a&&a!=="all"&&(s.window=a),ge(()=>UB({client:se,path:{name:e},query:s}))}function nF(e,a){return ge(()=>BP({client:se,path:{name:e},body:{url:a}}))}function GI(e,a){return ge(()=>UP({client:se,path:{name:e},body:a??{}}))}function aF(e,a){return ge(()=>LP({client:se,path:{name:e},query:a?{sitemapIndex:a}:void 0}))}function iF(e,a){return ge(()=>aB({client:se,path:{name:e},body:{sitemapUrls:a}}))}function $I(e,a){return ge(()=>aI({client:se,path:{name:e},body:a??{}}))}function sF(e,a){return ge(()=>$M({client:se,path:{name:e},body:a??{}}))}function oF(){return ge(()=>zS({client:se}))}function rF(e,a){return ge(()=>FB({client:se,body:{host:e,port:a}}))}function lF(e,a){return ge(()=>GP({client:se,path:{name:e},body:a}))}function cF(e,a){return ge(()=>JP({client:se,path:{name:e},body:{apiKey:a}}))}function uF(e){return ge(()=>WP({client:se,path:{name:e}}))}function dF(e,a){return ge(()=>nM({client:se,path:{name:e},body:{siteUrl:a}}))}function mF(e,a){return ge(()=>sM({client:se,path:{name:e},body:{url:a}}))}function pF(e,a){return ge(()=>oM({client:se,path:{name:e},body:{}}))}function hF(e,a){return ge(()=>rM({client:se,path:{name:e},body:a}))}function fF(e){return ge(()=>QB({client:se,body:{apiKey:e}}))}function MS(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function gF(e,a="agency",s){const r=new URLSearchParams({audience:a});s!==void 0&&r.set("period",String(s));const u=await fetch(mf(`${pf}/projects/${encodeURIComponent(e)}/report.html?${r.toString()}`),{credentials:"same-origin",headers:{}});if(!u.ok)throw new fn(`Failed to download report: ${u.status}`,u.status);const f=await u.blob(),g=URL.createObjectURL(f),b=MS(u.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,v=document.createElement("a");v.href=g,v.download=b,document.body.appendChild(v),v.click(),document.body.removeChild(v),URL.revokeObjectURL(g)}async function yF(e,a){const s=await fetch(`${pf}/projects/${encodeURIComponent(e)}/results/export?format=${a}`,{credentials:"same-origin",headers:{}});if(!s.ok)throw new fn(`Failed to download results: ${s.status}`,s.status);const r=await s.blob(),u=URL.createObjectURL(r),f=MS(s.headers.get("Content-Disposition"))??`canonry-results-${e}.${a}`,g=document.createElement("a");g.href=u,g.download=f,document.body.appendChild(g),g.click(),document.body.removeChild(g),URL.revokeObjectURL(u)}function bF(e,a){return ge(()=>mM({client:se,path:{name:e},body:{}}))}function vF(e,a){return ge(()=>cM({client:se,path:{name:e},body:a}))}function xF(e){return ge(()=>uM({client:se,path:{name:e}}))}function kF(e,a){return ge(()=>qM({client:se,path:{name:e},body:a}))}function wF(e,a){return ge(()=>BM({client:se,path:{name:e},body:a}))}function SF(e,a){return ge(()=>PM({client:se,path:{name:e},body:a}))}function jF(e,a,s){return ge(()=>MM({client:se,path:{name:e,id:a},body:s??{}}))}function AF(e,a,s){return ge(()=>IM({client:se,path:{name:e,id:a},body:{}}))}function CF(e,a){return ge(()=>yM({client:se,path:{name:e},query:{runId:a}}))}function KI(e){if(!e||typeof e!="object")return;const a=e;if(!(typeof a.current!="string"||typeof a.latest!="string"||typeof a.url!="string"||typeof a.upgradeCommand!="string"))return{current:a.current,latest:a.latest,url:a.url,upgradeCommand:a.upgradeCommand}}async function HI(e,a){const s=wI(e);try{const r=await fetch(s,{credentials:"same-origin"});if(!r.ok)return{label:a,state:"error",detail:`${a} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:SI(e,r.status)};const u=await r.json(),f=typeof u.version=="string"?u.version:"unknown",g=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=KI(u.updateAvailable),k=Rq.safeParse(u.mcp),S=[f,g===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:a,state:"ok",detail:S,version:f,databaseConfigured:g,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...k.success?{mcp:k.data}:{}}}catch(r){return{label:a,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${s}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function NF(){return ge(()=>SM({client:se}))}function _F(){return ge(()=>jM({client:se}))}function zF(){return ge(()=>NM({client:se}))}function EF(){return ge(()=>AM({client:se}))}function TF(e){return ge(()=>CM({client:se,body:e?{release:e}:{}}))}function RF(){return ge(()=>_M({client:se}))}function DF(){return ge(()=>zM({client:se}))}function OF(e){return ge(()=>EM({client:se,path:{release:e}}))}function qF(e,a={}){return ge(()=>RM({client:se,path:{name:e},query:{release:a.release,excludeCrawlers:a.excludeCrawlers?"1":void 0,source:a.source}}))}function BF(e,a={}){return ge(()=>DM({client:se,path:{name:e},query:{limit:a.limit!==void 0?String(a.limit):void 0,offset:a.offset!==void 0?String(a.offset):void 0,release:a.release,excludeCrawlers:a.excludeCrawlers?"1":void 0,source:a.source}}))}function PF(e,a={}){return ge(()=>OM({client:se,path:{name:e},query:{source:a.source}}))}function MF(e,a){return ge(()=>TM({client:se,path:{name:e},body:{release:void 0}}))}const IS={account:null,canWrite:!0,isAdmin:!0},QI={account:null,canWrite:!1,isAdmin:!1};function FI(e){const a=e.scopes.includes(Bv);return{account:null,canWrite:!e.readOnly&&a,isAdmin:e.projectId===null&&e.scopes.includes(Bv)}}const VS=T.createContext(IS);function ZI({account:e,apiKey:a,apiKeyPending:s=!1,children:r}){const u=s?QI:a?FI(a):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:IS;return c.jsx(VS.Provider,{value:u,children:r})}function ha(){return T.useContext(VS)}const LS="View only — your account cannot change this.";function Ft(e){return(...a)=>{e(...a)}}const YI=6e3,XI=5,JI=180;let hn=[],WI=0;const Mh=new Set,Ih=new Map,Vh=new Map;function Ku(){const e=[...hn];for(const a of Mh)a(e)}function ff(e){const a=Ih.get(e);a&&(clearTimeout(a),Ih.delete(e));const s=Vh.get(e);s&&(clearTimeout(s),Vh.delete(e))}function US(e){ff(e);const a=hn.length;hn=hn.filter(s=>s.id!==e),hn.length!==a&&Ku()}function Kv(e){ff(e.id),Ih.set(e.id,setTimeout(()=>{Lh(e.id)},e.durationMs))}function eV(e,a,s){return typeof e=="string"?{title:e,tone:a,durationMs:s}:e}function rn(e,a="negative",s=YI){const r=eV(e,a,s),u={id:String(++WI),title:r.title,detail:r.detail,tone:r.tone??a,durationMs:r.durationMs??s,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const f=hn.find(g=>g.dedupeKey===r.dedupeKey);if(f){if((r.dedupeMode??"drop")==="drop")return f.id;const g={...f,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return hn=hn.map(b=>b.id===f.id?g:b),Ku(),Kv(g),f.id}}return hn.length>=XI&&US(hn[0].id),hn=[...hn,u],Ku(),Kv(u),u.id}function Lh(e){const a=hn.find(s=>s.id===e);!a||a.state==="closing"||(ff(e),hn=hn.map(s=>s.id===e?{...s,state:"closing"}:s),Ku(),Vh.set(e,setTimeout(()=>{US(e)},JI)))}function tV(e){return Mh.add(e),()=>{Mh.delete(e)}}function Hv(){return hn}const nV=5*6e4,Tu=30*6e4,IF=3e4,VF=6e4,nr=3e4,aV=2e3,iV=3e4;function sV(){return new V4({defaultOptions:{queries:{staleTime:nV,retry:1,refetchOnWindowFocus:!1}},mutationCache:new L4({onError:(a,s,r,u)=>{u.meta?.skipGlobalErrorToast||rn({title:a instanceof Error?a.message:"An unexpected error occurred",tone:"negative"})}})})}const oV="modulepreload",rV=function(e,a){return new URL(e,a).href},Qv={},yi=function(a,s,r){let u=Promise.resolve();if(s&&s.length>0){let k=function(S){return Promise.all(S.map(A=>Promise.resolve(A).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};const g=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=k(s.map(S=>{if(S=rV(S,r),S in Qv)return;Qv[S]=!0;const A=S.endsWith(".css"),N=A?'[rel="stylesheet"]':"";if(r)for(let Z=g.length-1;Z>=0;Z--){const _=g[Z];if(_.href===S&&(!A||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${N}`))return;const E=document.createElement("link");if(E.rel=A?"stylesheet":oV,A||(E.as="script"),E.crossOrigin="",E.href=S,v&&E.setAttribute("nonce",v),document.head.appendChild(E),A)return new Promise((Z,_)=>{E.addEventListener("load",Z),E.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${S}`)))})}))}function f(g){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=g,window.dispatchEvent(b),!b.defaultPrevented)throw g}return u.then(g=>{for(const b of g||[])b.status==="rejected"&&f(b.reason);return a().catch(f)})};var lV=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(lV||{});const LF={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},UF={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},cV=G0;function uV(e){const a=[];if(e.message&&a.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?a.push(`${u}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(r.raw,null,2)}`):a.push(u)}return a.length>0?a.join(`
|
|
55
55
|
|
|
56
|
-
`):"Run failed."}function dV(e){return e.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")}function UF(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function GF(e){return e===null?"Unknown":e?"Pass":"Fail"}function Fv(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function $F(e,a){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${a}`:`daily@${a}`}function KF(e,a){if(!e)return{freq:"custom",hour:6,customCron:a};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const s=e.match(/^daily(?:@(\d+))?$/);if(s)return{freq:"daily",hour:s[1]?parseInt(s[1]):6,customCron:""};const r=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return r?{freq:r[1],hour:r[2]?parseInt(r[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:a}}function HF(e,a,s){const r=s==="UTC"?"UTC":s.split("/").pop()?.replace(/_/g," ")??s;if(!e)return`Custom: ${a} · ${r}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${r}`;const u=e.match(/^daily(?:@(\d+))?$/);if(u){const g=u[1]?parseInt(u[1]):6;return`Every day at ${Fv(g)} · ${r}`}const f=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(f){const g={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},b=f[2]?parseInt(f[2]):6;return`Every ${g[f[1]]} at ${Fv(b)} · ${r}`}return`${e} · ${r}`}function mV(e,a){return a&&a!==e?`${e} · ${a}`:e}function QF(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,a=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(s=>s.type==="timeZoneName")?.value;return mV(e,a)}function pV(e){const a=e.replace(/\/+$/,"")||"/";return a==="/"?"overview":a==="/projects"?"projects":a.startsWith("/projects/")?"project":a==="/runs"?"runs":a==="/traffic"||a.startsWith("/traffic/")?"traffic":a==="/backlinks"?"backlinks":a==="/settings"?"settings":a==="/setup"?"setup":"other"}function hV(e,a){return!a||a.includes(e)}const GS=["overview","search-console","local","report","activity","backlinks","technical-aeo","history","settings"],fV=new Set(GS);function FF(e){const a=e??GS,s=[...new Set(a.filter(r=>fV.has(r)))];return s.length>0?s:["overview"]}function ZF(e,a){return hV(e,a)||!a?e:a.includes("overview")?"overview":a[0]??"overview"}const Zv={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},gV=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i;function yV(e){const a=e?.mode?.trim();return a==="light"||a==="dark"?a:void 0}function bV(e){if(!e)return{};const a={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(Zv,s)?Zv[s]:void 0;if(!u||typeof r!="string")continue;const f=r.trim();gV.test(f)&&(a[u]=f)}return a}const ue=(e,a,s,r)=>{const u={_id:e,baseUrl:a?.baseUrl||(a?.client??O).getConfig().baseUrl};return s&&(u._infinite=s),a?.body&&(u.body=a.body),a?.headers&&(u.headers=a.headers),a?.path&&(u.path=a.path),a?.query&&(u.query=a.query),[u]},ts=e=>ue("getApiV1Projects",e),Zs=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ts(e)}),vV=e=>ue("getApiV1ProjectsByName",e),xV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:vV(e)}),kV=e=>ue("getApiV1ProjectsByNameMeasurementPlan",e),YF=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:kV(e)}),wV=e=>ue("getApiV1ProjectsByNameMeasurementReport",e),XF=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await cB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:wV(e)}),SV=e=>ue("getApiV1ProjectsByNameMeasurementSetup",e),jV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await uB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:SV(e)}),$l=(e,a)=>{const s={...e[0]};return a.body&&(s.body={...e[0].body,...a.body}),a.headers&&(s.headers={...e[0].headers,...a.headers}),a.path&&(s.path={...e[0].path,...a.path}),a.query&&(s.query={...e[0].query,...a.query}),s},JF=e=>({mutationFn:async s=>{const{data:r}=await dB({...e,...s,throwOnError:!0});return r}}),AV=e=>ue("getApiV1ProjectsByNameMeasurementOverview",e),WF=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await jS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:AV(e)}),CV=e=>ue("getApiV1ProjectsByNameMeasurementOverview",e,!0),eZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await jS({...e,...f,signal:r,throwOnError:!0});return g},queryKey:CV(e)}),NV=e=>ue("getApiV1ProjectsByNameVisibilityReport",e),tZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await mB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:NV(e)}),_V=e=>ue("getApiV1ProjectsByNameMeasurementPropertyEvidence",e,!0),nZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await pB({...e,...f,signal:r,throwOnError:!0});return g},queryKey:_V(e)}),zV=e=>ue("getApiV1ProjectsByNameMeasurementQuestionResult",e),aZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:zV(e)}),EV=e=>ue("getApiV1ProjectsByNameMeasurementPropertyCompetitors",e),iZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await fB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:EV(e)}),TV=e=>ue("getApiV1ProjectsByNameMeasurementQueryTemplates",e),sZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:TV(e)}),oZ=e=>({mutationFn:async s=>{const{data:r}=await yB({...e,...s,throwOnError:!0});return r}}),RV=e=>ue("getApiV1ProjectsByNameResearchRuns",e,!0),rZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await bB({...e,...f,signal:r,throwOnError:!0});return g},queryKey:RV(e)}),lZ=e=>({mutationFn:async s=>{const{data:r}=await vB({...e,...s,throwOnError:!0});return r}}),DV=e=>ue("getApiV1ProjectsByNameQueryTracking",e),cZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await xB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:DV(e)}),uZ=e=>({mutationFn:async s=>{const{data:r}=await kB({...e,...s,throwOnError:!0});return r}}),dZ=e=>({mutationFn:async s=>{const{data:r}=await wB({...e,...s,throwOnError:!0});return r}}),OV=e=>ue("getApiV1ProjectsByNameResearchRunsByRunId",e),mZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:OV(e)}),$S=e=>ue("getApiV1ProjectsByNameQueries",e),pZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await AS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:$S(e)}),qV=e=>ue("getApiV1ProjectsByNameAnalyticsCompetitors",e),hZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await OB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:qV(e)}),BV=e=>ue("getApiV1ProjectsByNameRuns",e),PV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await CS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:BV(e)}),gf=e=>ue("getApiV1Runs",e),yf=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await BB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:gf(e)}),MV=e=>ue("getApiV1RunsById",e),bf=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await NS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:MV(e)}),IV=e=>ue("getApiV1ProjectsByNameHistory",e),fZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await IB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:IV(e)}),VV=e=>ue("getApiV1History",e),gZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:VV(e)}),LV=e=>ue("getApiV1ProjectsByNameSnapshotsDiff",e),yZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await GB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:LV(e)}),UV=e=>ue("getApiV1Settings",e),GV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await _S({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:UV(e)}),$V=e=>ue("getApiV1ProjectsByNameSchedule",e),KV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:$V(e)}),HV=e=>ue("getApiV1ProjectsByNameSchedules",e),bZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await JB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:HV(e)}),KS=e=>ue("getApiV1Telemetry",e),QV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await aP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:KS(e)}),FV=e=>({mutationFn:async s=>{const{data:r}=await iP({...e,...s,throwOnError:!0});return r}}),ZV=e=>ue("getApiV1CdpStatus",e),YV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await zS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ZV(e)}),XV=e=>ue("getApiV1ProjectsByNameGoogleAdsStatus",e),vZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await oP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:XV(e)}),xZ=e=>({mutationFn:async s=>{const{data:r}=await rP({...e,...s,throwOnError:!0});return r}}),JV=e=>ue("getApiV1ProjectsByNameGoogleAdsCustomers",e),kZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:JV(e)}),wZ=e=>({mutationFn:async s=>{const{data:r}=await cP({...e,...s,throwOnError:!0});return r}}),SZ=e=>({mutationFn:async s=>{const{data:r}=await uP({...e,...s,throwOnError:!0});return r}}),WV=e=>ue("getApiV1ProjectsByNameGoogleAdsPerformance",e),jZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await dP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:WV(e)}),eL=e=>ue("getApiV1ProjectsByNameGoogleAdsSnapshots",e),AZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await mP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:eL(e)}),CZ=e=>({mutationFn:async s=>{const{data:r}=await pP({...e,...s,throwOnError:!0});return r}}),tL=e=>ue("getApiV1ProjectsByNameGtmStatus",e),NZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:tL(e)}),_Z=e=>({mutationFn:async s=>{const{data:r}=await fP({...e,...s,throwOnError:!0});return r}}),nL=e=>ue("getApiV1ProjectsByNameGtmAccounts",e),zZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:nL(e)}),aL=e=>ue("getApiV1ProjectsByNameGtmAccountsByAccountIdContainers",e),EZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await yP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:aL(e)}),iL=e=>ue("getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces",e),TZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await bP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:iL(e)}),RZ=e=>({mutationFn:async s=>{const{data:r}=await vP({...e,...s,throwOnError:!0});return r}}),DZ=e=>({mutationFn:async s=>{const{data:r}=await xP({...e,...s,throwOnError:!0});return r}}),sL=e=>ue("getApiV1ProjectsByNameGtmSnapshots",e),OZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await kP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:sL(e)}),qZ=e=>({mutationFn:async s=>{const{data:r}=await wP({...e,...s,throwOnError:!0});return r}}),oL=e=>ue("getApiV1ProjectsByNameConversionTrackingOptions",e),BZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:oL(e)}),rL=e=>ue("getApiV1ProjectsByNameConversionTrackingContracts",e),PZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await jP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:rL(e)}),MZ=e=>({mutationFn:async s=>{const{data:r}=await AP({...e,...s,throwOnError:!0});return r}}),lL=e=>ue("getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity",e),IZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await CP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:lL(e)}),cL=e=>ue("getApiV1ProjectsByNameGoogleConnections",e),VZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await NP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:cL(e)}),uL=e=>ue("getApiV1ProjectsByNameGoogleProperties",e),LZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await EP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:uL(e)}),dL=e=>ue("getApiV1ProjectsByNameGoogleGscPerformance",e),UZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await OP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:dL(e)}),mL=e=>ue("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),GZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await qP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:mL(e)}),pL=e=>ue("getApiV1ProjectsByNameGoogleGscInspections",e),$Z=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await PP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:pL(e)}),hL=e=>ue("getApiV1ProjectsByNameGoogleGscDeindexed",e),KZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await MP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:hL(e)}),fL=e=>ue("getApiV1ProjectsByNameGoogleGscCoverage",e),HZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await IP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:fL(e)}),gL=e=>ue("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),QZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:gL(e)}),FZ=e=>ue("getApiV1ProjectsByNameGoogleGscSitemaps",e),yL=e=>ue("getApiV1ProjectsByNameGbpLocations",e),ZZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await $P({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:yL(e)}),YZ=e=>({mutationFn:async s=>{const{data:r}=await KP({...e,...s,throwOnError:!0});return r}}),XZ=e=>({mutationFn:async s=>{const{data:r}=await HP({...e,...s,throwOnError:!0});return r}}),bL=e=>ue("getApiV1ProjectsByNameGbpKeywords",e),JZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await QP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:bL(e)}),vL=e=>ue("getApiV1ProjectsByNameGbpPlaceActions",e),WZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await FP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:vL(e)}),xL=e=>ue("getApiV1ProjectsByNameGbpLodging",e),eY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ZP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:xL(e)}),kL=e=>ue("getApiV1ProjectsByNameGbpPlaces",e),tY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:kL(e)}),wL=e=>ue("getApiV1ProjectsByNameGbpSummary",e),nY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await XP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:wL(e)}),SL=e=>ue("getApiV1ProjectsByNameBingStatus",e),aY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await eM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:SL(e)}),jL=e=>ue("getApiV1ProjectsByNameBingSites",e),iY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await tM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:jL(e)}),AL=e=>ue("getApiV1ProjectsByNameBingCoverage",e),sY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await aM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:AL(e)}),CL=e=>ue("getApiV1ProjectsByNameBingInspections",e),oY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:CL(e)}),NL=e=>ue("getApiV1ProjectsByNameBingPerformance",e),rY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:NL(e)}),_L=e=>ue("getApiV1ProjectsByNameGaStatus",e),lY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await dM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:_L(e)}),zL=e=>ue("getApiV1ProjectsByNameGaTraffic",e),cY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await pM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:zL(e)}),EL=e=>ue("getApiV1ProjectsByNameGaAiReferralDaily",e),uY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:EL(e)}),TL=e=>ue("getApiV1ProjectsByNameGaSocialReferralHistory",e),dY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await fM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:TL(e)}),RL=e=>ue("getApiV1ProjectsByNameGaSessionHistory",e),mY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:RL(e)}),DL=e=>ue("getApiV1ProjectsByNameReport",e),pY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await bM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:DL(e)}),OL=e=>ue("getApiV1ProjectsByNameHealthHistory",e),hY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await vM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:OL(e)}),qL=e=>ue("getApiV1ProjectsByNameCitationsVisibility",e),fY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await xM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:qL(e)}),BL=e=>ue("getApiV1ProjectsByNameTrafficSources",e),gY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:BL(e)}),PL=e=>ue("getApiV1ProjectsByNameTrafficStatus",e),yY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await LM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:PL(e)}),ML=e=>ue("getApiV1ProjectsByNameTrafficSourcesById",e),bY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await UM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ML(e)}),IL=e=>ue("getApiV1ProjectsByNameTrafficEvents",e),vY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await GM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:IL(e)}),VL=e=>ue("getApiV1ProjectsByNameDiscoverSessions",e),xY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await KM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:VL(e)}),LL=e=>ue("getApiV1ProjectsByNameDiscoverSessionsById",e),kY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await HM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:LL(e)}),UL=e=>ue("getApiV1ProjectsByNameTechnicalAeo",e),wY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await QM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:UL(e)}),GL=e=>ue("getApiV1ProjectsByNameTechnicalAeoPages",e),SY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await FM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:GL(e)}),$L=e=>ue("getApiV1ProjectsByNameTechnicalAeoTrend",e),jY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ZM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:$L(e)}),KL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawl",e),AY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:KL(e)}),HL=e=>ue("getApiV1ProjectsByNameTechnicalAeoGraph",e),CY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await XM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:HL(e)}),QL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPagesAudit",e),NY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await JM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:QL(e)}),FL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e),_Y=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ES({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:FL(e)}),ZL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e,!0),zY=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await ES({...e,...f,signal:r,throwOnError:!0});return g},queryKey:ZL(e)}),YL=e=>ue("getApiV1ProjectsByNameTechnicalAeoStructure",e,!0),EY=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await WM({...e,...f,signal:r,throwOnError:!0});return g},queryKey:YL(e)}),XL=e=>ue("getApiV1ProjectsByNameTechnicalAeoInternalLinksNeighbors",e),TY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await eI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:XL(e)}),JL=e=>ue("getApiV1ProjectsByNameTechnicalAeoDeadLinks",e),RY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await tI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:JL(e)}),WL=e=>ue("getApiV1ProjectsByNameTechnicalAeoRuns",e),DY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await nI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:WL(e)}),eU=e=>ue("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdProgress",e),OY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:eU(e)}),tU=e=>ue("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdPageHealthPreview",e),qY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await sI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:tU(e)}),nU=e=>ue("getApiV1ProjectsByNameAgentProviders",e),aU=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await oI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:nU(e)});function Yv(e){return e.state==="ok"?"positive":e.state==="checking"||e.state==="disabled"?"neutral":"negative"}function HS(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function BY(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}const PY={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function iU(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function ar(e){const a=[e.detail,e.hint].filter(Boolean);return a.length>0?a.join(`
|
|
57
|
-
`):void 0}function sU(e,a,s){const r=e.filter(g=>g.id!=="mcp").map(g=>{if(g.id==="api")return{...g,tone:Yv(a.apiStatus),detail:a.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:a.apiStatus.detail};if(g.id==="worker")return{...g,tone:Yv(a.workerStatus),detail:a.workerStatus.state==="ok"?"Healthy":a.workerStatus.state==="disabled"?"Disabled":"Needs attention",meta:a.workerStatus.detail};const b=s.providerStatuses.filter(A=>A.state==="ready").length,v=s.providerStatuses.length,k=b>0,S=s.providerStatuses.filter(A=>A.state==="ready").map(A=>iU(A)).join(" · ");return{...g,label:"Providers",tone:k?"positive":"caution",detail:`${b} of ${v} configured`,meta:S||"None configured"}}),u=a.apiStatus.mcp,f={id:"mcp",label:"MCP",tone:"neutral",detail:"Unknown",meta:"MCP status is not available from this server."};return a.apiStatus.state==="checking"?(f.detail="Checking",f.meta="Checking MCP availability."):a.apiStatus.state==="ok"&&u&&(u.status==="available"?(f.tone="positive",f.detail="Available",f.meta="MCP is available for agent connections. This checks the server transport, not an individual client connection."):u.status==="unavailable"?(f.tone="negative",f.detail="Unavailable",f.meta="The MCP transport is not fully available. Contact your Canonry team."):(f.detail="Not enabled",f.meta="This server does not provide an MCP endpoint.")),r.splice(Math.max(0,r.findIndex(g=>g.id==="api")+1),0,f),r}function oU(e,a){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!a.providerStatuses.some(s=>s.state==="ready"))return"Launch is blocked until at least one provider is configured."}function rU(e,a,s){const r=oU(a,s),u=structuredClone(e);return u.healthChecks=u.healthChecks.map(f=>{if(f.id==="api")return{...f,detail:a.apiStatus.detail,state:a.apiStatus.state==="ok"?"ready":"attention"};if(f.id==="worker")return{...f,detail:a.workerStatus.detail,state:a.workerStatus.state==="ok"?"ready":"attention"};const g=s.providerStatuses.some(b=>b.state==="ready");return{...f,detail:g?"At least one provider configured.":"No providers configured.",state:g?"ready":"attention"}}),u.launchState.enabled=r===void 0,u.launchState.blockedReason=r,u.launchState.summary=r??"Queue a visibility sweep first, then follow with a site audit to explain movement.",u}const QS="canonry.run-tracker",Uh=new Set;let Xv=!1,lU=0,Cd={runs:{},batches:{}};function cU(){const e=gi();for(const a of Uh)a(e)}function uU(e){if(!e)return{runs:{},batches:{}};try{const a=JSON.parse(e);return{runs:a.runs??{},batches:a.batches??{}}}catch{return{runs:{},batches:{}}}}function dU(){typeof window>"u"||window.sessionStorage.setItem(QS,JSON.stringify(Cd))}function FS(){Xv||(Xv=!0,!(typeof window>"u")&&(Cd=uU(window.sessionStorage.getItem(QS))))}function Nd(e){Cd=e,dU(),cU()}function gi(){return FS(),Cd}function ZS(e){return FS(),Uh.add(e),()=>{Uh.delete(e)}}function vf(e){const a=gi();Nd({...a,runs:{...a.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function ch(e){const a=gi();if(!a.runs[e])return;const{[e]:s,...r}=a.runs;Nd({...a,runs:r})}function mU(e){const a=gi(),s=`batch_${Date.now()}_${++lU}`;return Nd({...a,batches:{...a.batches,[s]:{batchId:s,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),s}function pU(e){const a=gi();if(!a.batches[e])return;const{[e]:s,...r}=a.batches;Nd({...a,batches:r})}function hU(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const fU=10*6e4;function gU(e,a,s,r){return e.filter(u=>!a.has(u.runId)&&s-(u.trackedAt??0)>=r)}function yU(e,a){let s=0,r=0,u=0,f=0,g=0;for(const b of e){const v=a[b]?.status;v==="completed"?s+=1:v==="partial"?r+=1:v==="failed"?u+=1:v==="cancelled"?f+=1:g+=1}return{completed:s,partial:r,failed:u,cancelled:f,pending:g,finished:g===0}}const Jv=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Wv=Vx,YS=(e,a)=>s=>{var r;if(a?.variants==null)return Wv(e,s?.class,s?.className);const{variants:u,defaultVariants:f}=a,g=Object.keys(u).map(k=>{const S=s?.[k],A=f?.[k];if(S===null)return null;const N=Jv(S)||Jv(A);return u[k][N]}),b=s&&Object.entries(s).reduce((k,S)=>{let[A,N]=S;return N===void 0||(k[A]=N),k},{}),v=a==null||(r=a.compoundVariants)===null||r===void 0?void 0:r.reduce((k,S)=>{let{class:A,className:N,...E}=S;return Object.entries(E).every(Z=>{let[_,G]=Z;return Array.isArray(G)?G.includes({...f,...b}[_]):{...f,...b}[_]===G})?[...k,A,N]:k},[]);return Wv(e,g,v,s?.class,s?.className)},bU=(e,a)=>{const s=new Array(e.length+a.length);for(let r=0;r<e.length;r++)s[r]=e[r];for(let r=0;r<a.length;r++)s[e.length+r]=a[r];return s},vU=(e,a)=>({classGroupId:e,validator:a}),XS=(e=new Map,a=null,s)=>({nextPart:e,validators:a,classGroupId:s}),Hu="-",ex=[],xU="arbitrary..",kU=e=>{const a=SU(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:g=>{if(g.startsWith("[")&&g.endsWith("]"))return wU(g);const b=g.split(Hu),v=b[0]===""&&b.length>1?1:0;return JS(b,v,a)},getConflictingClassGroupIds:(g,b)=>{if(b){const v=r[g],k=s[g];return v?k?bU(k,v):v:k||ex}return s[g]||ex}}},JS=(e,a,s)=>{if(e.length-a===0)return s.classGroupId;const u=e[a],f=s.nextPart.get(u);if(f){const k=JS(e,a+1,f);if(k)return k}const g=s.validators;if(g===null)return;const b=a===0?e.join(Hu):e.slice(a).join(Hu),v=g.length;for(let k=0;k<v;k++){const S=g[k];if(S.validator(b))return S.classGroupId}},wU=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=e.slice(1,-1),s=a.indexOf(":"),r=a.slice(0,s);return r?xU+r:void 0})(),SU=e=>{const{theme:a,classGroups:s}=e;return jU(s,a)},jU=(e,a)=>{const s=XS();for(const r in e){const u=e[r];xf(u,s,r,a)}return s},xf=(e,a,s,r)=>{const u=e.length;for(let f=0;f<u;f++){const g=e[f];AU(g,a,s,r)}},AU=(e,a,s,r)=>{if(typeof e=="string"){CU(e,a,s);return}if(typeof e=="function"){NU(e,a,s,r);return}_U(e,a,s,r)},CU=(e,a,s)=>{const r=e===""?a:WS(a,e);r.classGroupId=s},NU=(e,a,s,r)=>{if(zU(e)){xf(e(r),a,s,r);return}a.validators===null&&(a.validators=[]),a.validators.push(vU(s,e))},_U=(e,a,s,r)=>{const u=Object.entries(e),f=u.length;for(let g=0;g<f;g++){const[b,v]=u[g];xf(v,WS(a,b),s,r)}},WS=(e,a)=>{let s=e;const r=a.split(Hu),u=r.length;for(let f=0;f<u;f++){const g=r[f];let b=s.nextPart.get(g);b||(b=XS(),s.nextPart.set(g,b)),s=b}return s},zU=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,EU=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,s=Object.create(null),r=Object.create(null);const u=(f,g)=>{s[f]=g,a++,a>e&&(a=0,r=s,s=Object.create(null))};return{get(f){let g=s[f];if(g!==void 0)return g;if((g=r[f])!==void 0)return u(f,g),g},set(f,g){f in s?s[f]=g:u(f,g)}}},Gh="!",tx=":",TU=[],nx=(e,a,s,r,u)=>({modifiers:e,hasImportantModifier:a,baseClassName:s,maybePostfixModifierPosition:r,isExternal:u}),RU=e=>{const{prefix:a,experimentalParseClassName:s}=e;let r=u=>{const f=[];let g=0,b=0,v=0,k;const S=u.length;for(let _=0;_<S;_++){const G=u[_];if(g===0&&b===0){if(G===tx){f.push(u.slice(v,_)),v=_+1;continue}if(G==="/"){k=_;continue}}G==="["?g++:G==="]"?g--:G==="("?b++:G===")"&&b--}const A=f.length===0?u:u.slice(v);let N=A,E=!1;A.endsWith(Gh)?(N=A.slice(0,-1),E=!0):A.startsWith(Gh)&&(N=A.slice(1),E=!0);const Z=k&&k>v?k-v:void 0;return nx(f,E,N,Z)};if(a){const u=a+tx,f=r;r=g=>g.startsWith(u)?f(g.slice(u.length)):nx(TU,!1,g,void 0,!0)}if(s){const u=r;r=f=>s({className:f,parseClassName:u})}return r},DU=e=>{const a=new Map;return e.orderSensitiveModifiers.forEach((s,r)=>{a.set(s,1e6+r)}),s=>{const r=[];let u=[];for(let f=0;f<s.length;f++){const g=s[f],b=g[0]==="[",v=a.has(g);b||v?(u.length>0&&(u.sort(),r.push(...u),u=[]),r.push(g)):u.push(g)}return u.length>0&&(u.sort(),r.push(...u)),r}},OU=e=>({cache:EU(e.cacheSize),parseClassName:RU(e),sortModifiers:DU(e),...kU(e)}),qU=/\s+/,BU=(e,a)=>{const{parseClassName:s,getClassGroupId:r,getConflictingClassGroupIds:u,sortModifiers:f}=a,g=[],b=e.trim().split(qU);let v="";for(let k=b.length-1;k>=0;k-=1){const S=b[k],{isExternal:A,modifiers:N,hasImportantModifier:E,baseClassName:Z,maybePostfixModifierPosition:_}=s(S);if(A){v=S+(v.length>0?" "+v:v);continue}let G=!!_,K=r(G?Z.substring(0,_):Z);if(!K){if(!G){v=S+(v.length>0?" "+v:v);continue}if(K=r(Z),!K){v=S+(v.length>0?" "+v:v);continue}G=!1}const te=N.length===0?"":N.length===1?N[0]:f(N).join(":"),Q=E?te+Gh:te,re=Q+K;if(g.indexOf(re)>-1)continue;g.push(re);const W=u(K,G);for(let oe=0;oe<W.length;++oe){const H=W[oe];g.push(Q+H)}v=S+(v.length>0?" "+v:v)}return v},PU=(...e)=>{let a=0,s,r,u="";for(;a<e.length;)(s=e[a++])&&(r=e3(s))&&(u&&(u+=" "),u+=r);return u},e3=e=>{if(typeof e=="string")return e;let a,s="";for(let r=0;r<e.length;r++)e[r]&&(a=e3(e[r]))&&(s&&(s+=" "),s+=a);return s},MU=(e,...a)=>{let s,r,u,f;const g=v=>{const k=a.reduce((S,A)=>A(S),e());return s=OU(k),r=s.cache.get,u=s.cache.set,f=b,b(v)},b=v=>{const k=r(v);if(k)return k;const S=BU(v,s);return u(v,S),S};return f=g,(...v)=>f(PU(...v))},IU=[],Qt=e=>{const a=s=>s[e]||IU;return a.isThemeGetter=!0,a},t3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,n3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,VU=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,LU=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,UU=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,GU=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,$U=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,KU=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Fi=e=>VU.test(e),Ze=e=>!!e&&!Number.isNaN(Number(e)),Zi=e=>!!e&&Number.isInteger(Number(e)),uh=e=>e.endsWith("%")&&Ze(e.slice(0,-1)),mi=e=>LU.test(e),a3=()=>!0,HU=e=>UU.test(e)&&!GU.test(e),kf=()=>!1,QU=e=>$U.test(e),FU=e=>KU.test(e),ZU=e=>!ke(e)&&!we(e),YU=e=>cs(e,o3,kf),ke=e=>t3.test(e),Bs=e=>cs(e,r3,HU),ax=e=>cs(e,iG,Ze),XU=e=>cs(e,c3,a3),JU=e=>cs(e,l3,kf),ix=e=>cs(e,i3,kf),WU=e=>cs(e,s3,FU),ju=e=>cs(e,u3,QU),we=e=>n3.test(e),gl=e=>Ys(e,r3),eG=e=>Ys(e,l3),sx=e=>Ys(e,i3),tG=e=>Ys(e,o3),nG=e=>Ys(e,s3),Au=e=>Ys(e,u3,!0),aG=e=>Ys(e,c3,!0),cs=(e,a,s)=>{const r=t3.exec(e);return r?r[1]?a(r[1]):s(r[2]):!1},Ys=(e,a,s=!1)=>{const r=n3.exec(e);return r?r[1]?a(r[1]):s:!1},i3=e=>e==="position"||e==="percentage",s3=e=>e==="image"||e==="url",o3=e=>e==="length"||e==="size"||e==="bg-size",r3=e=>e==="length",iG=e=>e==="number",l3=e=>e==="family-name",c3=e=>e==="number"||e==="weight",u3=e=>e==="shadow",sG=()=>{const e=Qt("color"),a=Qt("font"),s=Qt("text"),r=Qt("font-weight"),u=Qt("tracking"),f=Qt("leading"),g=Qt("breakpoint"),b=Qt("container"),v=Qt("spacing"),k=Qt("radius"),S=Qt("shadow"),A=Qt("inset-shadow"),N=Qt("text-shadow"),E=Qt("drop-shadow"),Z=Qt("blur"),_=Qt("perspective"),G=Qt("aspect"),K=Qt("ease"),te=Qt("animate"),Q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],re=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],W=()=>[...re(),we,ke],oe=()=>["auto","hidden","clip","visible","scroll"],H=()=>["auto","contain","none"],$=()=>[we,ke,v],Te=()=>[Fi,"full","auto",...$()],Ke=()=>[Zi,"none","subgrid",we,ke],Fe=()=>["auto",{span:["full",Zi,we,ke]},Zi,we,ke],Re=()=>[Zi,"auto",we,ke],ve=()=>["auto","min","max","fr",we,ke],Ue=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],be=()=>["start","end","center","stretch","center-safe","end-safe"],P=()=>["auto",...$()],ae=()=>[Fi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...$()],he=()=>[Fi,"screen","full","dvw","lvw","svw","min","max","fit",...$()],je=()=>[Fi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...$()],X=()=>[e,we,ke],Ie=()=>[...re(),sx,ix,{position:[we,ke]}],Ne=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ae=()=>["auto","cover","contain",tG,YU,{size:[we,ke]}],ne=()=>[uh,gl,Bs],V=()=>["","none","full",k,we,ke],q=()=>["",Ze,gl,Bs],le=()=>["solid","dashed","dotted","double"],De=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[Ze,uh,sx,ix],Je=()=>["","none",Z,we,ke],Ge=()=>["none",Ze,we,ke],Be=()=>["none",Ze,we,ke],de=()=>[Ze,we,ke],Me=()=>[Fi,"full",...$()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[mi],breakpoint:[mi],color:[a3],container:[mi],"drop-shadow":[mi],ease:["in","out","in-out"],font:[ZU],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[mi],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[mi],shadow:[mi],spacing:["px",Ze],text:[mi],"text-shadow":[mi],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Fi,ke,we,G]}],container:["container"],columns:[{columns:[Ze,ke,we,b]}],"break-after":[{"break-after":Q()}],"break-before":[{"break-before":Q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:W()}],overflow:[{overflow:oe()}],"overflow-x":[{"overflow-x":oe()}],"overflow-y":[{"overflow-y":oe()}],overscroll:[{overscroll:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Te()}],"inset-x":[{"inset-x":Te()}],"inset-y":[{"inset-y":Te()}],start:[{"inset-s":Te(),start:Te()}],end:[{"inset-e":Te(),end:Te()}],"inset-bs":[{"inset-bs":Te()}],"inset-be":[{"inset-be":Te()}],top:[{top:Te()}],right:[{right:Te()}],bottom:[{bottom:Te()}],left:[{left:Te()}],visibility:["visible","invisible","collapse"],z:[{z:[Zi,"auto",we,ke]}],basis:[{basis:[Fi,"full","auto",b,...$()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ze,Fi,"auto","initial","none",ke]}],grow:[{grow:["",Ze,we,ke]}],shrink:[{shrink:["",Ze,we,ke]}],order:[{order:[Zi,"first","last","none",we,ke]}],"grid-cols":[{"grid-cols":Ke()}],"col-start-end":[{col:Fe()}],"col-start":[{"col-start":Re()}],"col-end":[{"col-end":Re()}],"grid-rows":[{"grid-rows":Ke()}],"row-start-end":[{row:Fe()}],"row-start":[{"row-start":Re()}],"row-end":[{"row-end":Re()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ve()}],"auto-rows":[{"auto-rows":ve()}],gap:[{gap:$()}],"gap-x":[{"gap-x":$()}],"gap-y":[{"gap-y":$()}],"justify-content":[{justify:[...Ue(),"normal"]}],"justify-items":[{"justify-items":[...be(),"normal"]}],"justify-self":[{"justify-self":["auto",...be()]}],"align-content":[{content:["normal",...Ue()]}],"align-items":[{items:[...be(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...be(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ue()}],"place-items":[{"place-items":[...be(),"baseline"]}],"place-self":[{"place-self":["auto",...be()]}],p:[{p:$()}],px:[{px:$()}],py:[{py:$()}],ps:[{ps:$()}],pe:[{pe:$()}],pbs:[{pbs:$()}],pbe:[{pbe:$()}],pt:[{pt:$()}],pr:[{pr:$()}],pb:[{pb:$()}],pl:[{pl:$()}],m:[{m:P()}],mx:[{mx:P()}],my:[{my:P()}],ms:[{ms:P()}],me:[{me:P()}],mbs:[{mbs:P()}],mbe:[{mbe:P()}],mt:[{mt:P()}],mr:[{mr:P()}],mb:[{mb:P()}],ml:[{ml:P()}],"space-x":[{"space-x":$()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":$()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...he()]}],"min-inline-size":[{"min-inline":["auto",...he()]}],"max-inline-size":[{"max-inline":["none",...he()]}],"block-size":[{block:["auto",...je()]}],"min-block-size":[{"min-block":["auto",...je()]}],"max-block-size":[{"max-block":["none",...je()]}],w:[{w:[b,"screen",...ae()]}],"min-w":[{"min-w":[b,"screen","none",...ae()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",s,gl,Bs]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,aG,XU]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",uh,ke]}],"font-family":[{font:[eG,JU,a]}],"font-features":[{"font-features":[ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,we,ke]}],"line-clamp":[{"line-clamp":[Ze,"none",we,ax]}],leading:[{leading:[f,...$()]}],"list-image":[{"list-image":["none",we,ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",we,ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:X()}],"text-color":[{text:X()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...le(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ze,"from-font","auto",we,Bs]}],"text-decoration-color":[{decoration:X()}],"underline-offset":[{"underline-offset":[Ze,"auto",we,ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:$()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",we,ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",we,ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ie()}],"bg-repeat":[{bg:Ne()}],"bg-size":[{bg:Ae()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Zi,we,ke],radial:["",we,ke],conic:[Zi,we,ke]},nG,WU]}],"bg-color":[{bg:X()}],"gradient-from-pos":[{from:ne()}],"gradient-via-pos":[{via:ne()}],"gradient-to-pos":[{to:ne()}],"gradient-from":[{from:X()}],"gradient-via":[{via:X()}],"gradient-to":[{to:X()}],rounded:[{rounded:V()}],"rounded-s":[{"rounded-s":V()}],"rounded-e":[{"rounded-e":V()}],"rounded-t":[{"rounded-t":V()}],"rounded-r":[{"rounded-r":V()}],"rounded-b":[{"rounded-b":V()}],"rounded-l":[{"rounded-l":V()}],"rounded-ss":[{"rounded-ss":V()}],"rounded-se":[{"rounded-se":V()}],"rounded-ee":[{"rounded-ee":V()}],"rounded-es":[{"rounded-es":V()}],"rounded-tl":[{"rounded-tl":V()}],"rounded-tr":[{"rounded-tr":V()}],"rounded-br":[{"rounded-br":V()}],"rounded-bl":[{"rounded-bl":V()}],"border-w":[{border:q()}],"border-w-x":[{"border-x":q()}],"border-w-y":[{"border-y":q()}],"border-w-s":[{"border-s":q()}],"border-w-e":[{"border-e":q()}],"border-w-bs":[{"border-bs":q()}],"border-w-be":[{"border-be":q()}],"border-w-t":[{"border-t":q()}],"border-w-r":[{"border-r":q()}],"border-w-b":[{"border-b":q()}],"border-w-l":[{"border-l":q()}],"divide-x":[{"divide-x":q()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":q()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...le(),"hidden","none"]}],"divide-style":[{divide:[...le(),"hidden","none"]}],"border-color":[{border:X()}],"border-color-x":[{"border-x":X()}],"border-color-y":[{"border-y":X()}],"border-color-s":[{"border-s":X()}],"border-color-e":[{"border-e":X()}],"border-color-bs":[{"border-bs":X()}],"border-color-be":[{"border-be":X()}],"border-color-t":[{"border-t":X()}],"border-color-r":[{"border-r":X()}],"border-color-b":[{"border-b":X()}],"border-color-l":[{"border-l":X()}],"divide-color":[{divide:X()}],"outline-style":[{outline:[...le(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ze,we,ke]}],"outline-w":[{outline:["",Ze,gl,Bs]}],"outline-color":[{outline:X()}],shadow:[{shadow:["","none",S,Au,ju]}],"shadow-color":[{shadow:X()}],"inset-shadow":[{"inset-shadow":["none",A,Au,ju]}],"inset-shadow-color":[{"inset-shadow":X()}],"ring-w":[{ring:q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:X()}],"ring-offset-w":[{"ring-offset":[Ze,Bs]}],"ring-offset-color":[{"ring-offset":X()}],"inset-ring-w":[{"inset-ring":q()}],"inset-ring-color":[{"inset-ring":X()}],"text-shadow":[{"text-shadow":["none",N,Au,ju]}],"text-shadow-color":[{"text-shadow":X()}],opacity:[{opacity:[Ze,we,ke]}],"mix-blend":[{"mix-blend":[...De(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":De()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ze]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":X()}],"mask-image-linear-to-color":[{"mask-linear-to":X()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":X()}],"mask-image-t-to-color":[{"mask-t-to":X()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":X()}],"mask-image-r-to-color":[{"mask-r-to":X()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":X()}],"mask-image-b-to-color":[{"mask-b-to":X()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":X()}],"mask-image-l-to-color":[{"mask-l-to":X()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":X()}],"mask-image-x-to-color":[{"mask-x-to":X()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":X()}],"mask-image-y-to-color":[{"mask-y-to":X()}],"mask-image-radial":[{"mask-radial":[we,ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":X()}],"mask-image-radial-to-color":[{"mask-radial-to":X()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":re()}],"mask-image-conic-pos":[{"mask-conic":[Ze]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":X()}],"mask-image-conic-to-color":[{"mask-conic-to":X()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ie()}],"mask-repeat":[{mask:Ne()}],"mask-size":[{mask:Ae()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",we,ke]}],filter:[{filter:["","none",we,ke]}],blur:[{blur:Je()}],brightness:[{brightness:[Ze,we,ke]}],contrast:[{contrast:[Ze,we,ke]}],"drop-shadow":[{"drop-shadow":["","none",E,Au,ju]}],"drop-shadow-color":[{"drop-shadow":X()}],grayscale:[{grayscale:["",Ze,we,ke]}],"hue-rotate":[{"hue-rotate":[Ze,we,ke]}],invert:[{invert:["",Ze,we,ke]}],saturate:[{saturate:[Ze,we,ke]}],sepia:[{sepia:["",Ze,we,ke]}],"backdrop-filter":[{"backdrop-filter":["","none",we,ke]}],"backdrop-blur":[{"backdrop-blur":Je()}],"backdrop-brightness":[{"backdrop-brightness":[Ze,we,ke]}],"backdrop-contrast":[{"backdrop-contrast":[Ze,we,ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ze,we,ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ze,we,ke]}],"backdrop-invert":[{"backdrop-invert":["",Ze,we,ke]}],"backdrop-opacity":[{"backdrop-opacity":[Ze,we,ke]}],"backdrop-saturate":[{"backdrop-saturate":[Ze,we,ke]}],"backdrop-sepia":[{"backdrop-sepia":["",Ze,we,ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":$()}],"border-spacing-x":[{"border-spacing-x":$()}],"border-spacing-y":[{"border-spacing-y":$()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",we,ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ze,"initial",we,ke]}],ease:[{ease:["linear","initial",K,we,ke]}],delay:[{delay:[Ze,we,ke]}],animate:[{animate:["none",te,we,ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[_,we,ke]}],"perspective-origin":[{"perspective-origin":W()}],rotate:[{rotate:Ge()}],"rotate-x":[{"rotate-x":Ge()}],"rotate-y":[{"rotate-y":Ge()}],"rotate-z":[{"rotate-z":Ge()}],scale:[{scale:Be()}],"scale-x":[{"scale-x":Be()}],"scale-y":[{"scale-y":Be()}],"scale-z":[{"scale-z":Be()}],"scale-3d":["scale-3d"],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[we,ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:W()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Me()}],"translate-x":[{"translate-x":Me()}],"translate-y":[{"translate-y":Me()}],"translate-z":[{"translate-z":Me()}],"translate-none":["translate-none"],accent:[{accent:X()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:X()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",we,ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":$()}],"scroll-mx":[{"scroll-mx":$()}],"scroll-my":[{"scroll-my":$()}],"scroll-ms":[{"scroll-ms":$()}],"scroll-me":[{"scroll-me":$()}],"scroll-mbs":[{"scroll-mbs":$()}],"scroll-mbe":[{"scroll-mbe":$()}],"scroll-mt":[{"scroll-mt":$()}],"scroll-mr":[{"scroll-mr":$()}],"scroll-mb":[{"scroll-mb":$()}],"scroll-ml":[{"scroll-ml":$()}],"scroll-p":[{"scroll-p":$()}],"scroll-px":[{"scroll-px":$()}],"scroll-py":[{"scroll-py":$()}],"scroll-ps":[{"scroll-ps":$()}],"scroll-pe":[{"scroll-pe":$()}],"scroll-pbs":[{"scroll-pbs":$()}],"scroll-pbe":[{"scroll-pbe":$()}],"scroll-pt":[{"scroll-pt":$()}],"scroll-pr":[{"scroll-pr":$()}],"scroll-pb":[{"scroll-pb":$()}],"scroll-pl":[{"scroll-pl":$()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",we,ke]}],fill:[{fill:["none",...X()]}],"stroke-w":[{stroke:[Ze,gl,Bs,ax]}],stroke:[{stroke:["none",...X()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},oG=MU(sG);function fa(...e){return oG(Vx(e))}const rG=YS("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),fe=T.forwardRef(({className:e,variant:a,size:s,asChild:r=!1,...u},f)=>{const g=r?Z4:"button";return c.jsx(g,{ref:f,className:fa(rG({variant:a,size:s,className:e})),...u})});fe.displayName="Button";const lG=YS("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function d3({className:e,variant:a,...s}){return c.jsx("div",{className:fa(lG({variant:a}),e),...s})}const cG=220;function ox({compact:e=!1,version:a,updateAvailable:s,onDismissUpdate:r}){const u=!e&&a&&a!=="unknown",[f,g]=T.useState(!1),b=!e&&s&&r,v=()=>{g(!0),window.setTimeout(()=>{r?.(),g(!1)},cG)};return e?c.jsxs(tt,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"brand-copy",children:c.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):c.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[c.jsx(tt,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx(tt,{to:"/",className:"brand-mark",children:"Canonry"}),!b&&u?c.jsxs("span",{className:"brand-version",children:["v",a]}):null]}),b?c.jsxs("span",{className:`brand-update-bubble ${f?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[c.jsxs("a",{className:"brand-update-bubble-link",href:s.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${s.upgradeCommand}`,"aria-label":`New version v${s.latest} available — open release page`,children:[c.jsxs("span",{className:"brand-update-bubble-from",children:["v",s.current]}),c.jsx(Y4,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),c.jsxs("span",{className:"brand-update-bubble-to",children:["v",s.latest]})]}),c.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:v,"aria-label":`Dismiss update notification for v${s.latest}`,children:c.jsx(sr,{className:"size-3","aria-hidden":"true"})})]}):null]})}function uG({provider:e}){const a={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},r=Object.hasOwn(a,e)?`provider-badge--${e} ${a[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return c.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r}`,children:e})}function pn({tone:e,children:a,...s}){const r=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return c.jsx(d3,{variant:r,...s,children:a})}function wf({status:e}){return c.jsx(pn,{tone:HS(e),children:dV(e)})}const dG=Ix,mG=Bx,m3=T.forwardRef(({className:e,...a},s)=>c.jsx(Zh,{ref:s,className:fa("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...a}));m3.displayName=Zh.displayName;const pG=400,hG=1200,fG=720,p3=T.forwardRef(({className:e,children:a,...s},r)=>{const[u,f]=T.useState(fG),g=T.useRef(!1),b=T.useRef(0),v=T.useRef(0),k=T.useCallback(N=>{g.current=!0,b.current=N.clientX,v.current=u,N.target.setPointerCapture(N.pointerId),N.preventDefault()},[u]),S=T.useCallback(N=>{if(!g.current)return;const E=b.current-N.clientX,Z=Math.min(hG,Math.max(pG,v.current+E));f(Z)},[]),A=T.useCallback(()=>{g.current=!1},[]);return c.jsxs(mG,{children:[c.jsx(m3,{}),c.jsxs(Yh,{ref:r,className:fa("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${u}px, 100vw)`},...s,children:[c.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:k,onPointerMove:S,onPointerUp:A}),a,c.jsxs(Px,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[c.jsx(sr,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});p3.displayName=Yh.displayName;const gG=({className:e,...a})=>c.jsx("div",{className:fa("flex flex-col gap-1.5 pr-10",e),...a}),h3=T.forwardRef(({className:e,...a},s)=>c.jsx(Xh,{ref:s,className:fa("text-lg font-medium text-primary",e),...a}));h3.displayName=Xh.displayName;const f3=T.forwardRef(({className:e,...a},s)=>c.jsx(Mx,{ref:s,className:fa("text-sm text-muted",e),...a}));f3.displayName=Mx.displayName;function Cu({title:e,subtitle:a,children:s,open:r,onClose:u}){return c.jsx(dG,{open:r,onOpenChange:f=>f?void 0:u(),children:c.jsxs(p3,{children:[c.jsxs(gG,{className:"drawer-head",children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:a}),c.jsx(h3,{id:"drawer-title",children:e}),c.jsx(f3,{className:"sr-only",children:a})]}),c.jsx("div",{className:"drawer-body",children:s})]})})}function yl({text:e}){const[a,s]=T.useState(null),r=T.useRef(null),u=T.useCallback(()=>{if(!r.current)return;const b=r.current.getBoundingClientRect();s({top:b.top,left:b.left+b.width/2})},[]),f=T.useCallback(()=>s(null),[]),g=T.useCallback(()=>{a===null?u():f()},[a,u,f]);return c.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:u,onMouseLeave:f,children:[c.jsx("button",{ref:r,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":a!==null,onFocus:u,onBlur:f,onClick:g,onKeyDown:b=>{b.key==="Escape"&&f()},children:c.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),a!==null&&U4.createPortal(c.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:a.top,left:a.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const yG=/[\s\-_]+/;function bG(e){const a=e.split(yG).filter(Boolean);return a.length===0?null:a.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function rx(e,a){const s=vG(a),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(k=>k.startsWith("**")&&k.endsWith("**")?{type:"bold",value:k.slice(2,-2)}:{type:"text",value:k}),u=s.flatMap(k=>k.terms).filter(k=>k.trim().length>1);if(u.length===0)return r.map((k,S)=>k.type==="bold"?Io.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const g=[...u].sort((k,S)=>S.length-k.length).map(bG).filter(k=>!!k);if(g.length===0)return r.map((k,S)=>k.type==="bold"?Io.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const b=new RegExp(`(${g.join("|")})`,"gi"),v=new Map;for(const k of s)for(const S of k.terms){const A=Ca(S);A&&!v.has(A)&&v.set(A,k.className)}return r.flatMap((k,S)=>k.value.split(b).map((N,E)=>{if(!N)return null;if(E%2===1){const _=v.get(Ca(N))??"answer-highlight";return k.type==="bold"?Io.createElement("mark",{key:`hl-${S}-${E}`,className:_},Io.createElement("strong",{className:"text-strong font-semibold"},N)):Io.createElement("mark",{key:`hl-${S}-${E}`,className:_},N)}return k.type==="bold"?Io.createElement("strong",{key:`b-${S}-${E}`,className:"text-strong font-semibold"},N):N})).filter(Boolean)}function vG(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function $h(e){const a=(e??"").trim();return a&&(a.startsWith("/")||/^https?:\/\//i.test(a)||/^mailto:/i.test(a))?a:null}function dh(e,a){return{citedCompetitorDomains:[...e.citedCompetitorDomains??a?.citedCompetitorDomains??[]],mentionedCompetitorDomains:[...e.mentionedCompetitorDomains??a?.mentionedCompetitorDomains??[]]}}function mh(e,a){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return a==="mentioned"||a==="visible"?"Mentioned in latest run":a==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function xG({evidence:e,project:a,onClose:s}){const[r,u]=T.useState(!1),[f,g]=T.useState("mentions"),[b,v]=T.useState(-1),[k,S]=T.useState(null),[A,N]=T.useState(!1),[E,Z]=T.useState({}),_=M2(a.project),G=new Set(_.map(Mu)),K=e.runHistory,te=K.length>1,[Q,re]=T.useState(null),W=T.useRef(!1);T.useEffect(()=>{if(W.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ne=K.at(-1);ne&&(W.current=!0,Ph(ne.runId).then(V=>{const q=V.snapshots?.find(le=>le.query===e.query&&le.provider===e.provider);q&&re({citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:ne.visibilityTransition,provider:q.provider,model:q.model??e.model,answerSnippet:q.answerText??e.answerSnippet,citedDomains:q.citedDomains??e.citedDomains,...dh(q,e),recommendedCompetitors:q.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:q.matchedTerms??e.matchedTerms??[],groundingSources:q.groundingSources??e.groundingSources,searchQueries:q.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,K]);const oe=b>=0&&k!==null,H=oe?k:Q||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:K.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,...dh(e),recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},$=H.visibilityState==="pending"||H.citationState==="pending",Te=$?!1:H.visibilityState!=null?H.visibilityState==="visible":H.answerMentioned!=null?H.answerMentioned:H.citationState===Uu.cited||H.citationState==="emerging",Ke=H.answerMentioned!=null||H.visibilityState!=null||H.mentionedCompetitorDomains.length>0||H.recommendedCompetitors.length>0,Fe=H.citedDomains.length>0||H.citedCompetitorDomains.length>0||H.groundingSources.length>0||H.evidenceUrls.length>0,Re=a.project.displayName||a.project.name,ve=[..._.map(Mu),Re,Re.split(" ").slice(0,2).join(" "),...H.matchedTerms].filter(ne=>ne.trim().length>2),Ue=[...H.mentionedCompetitorDomains.flatMap(ne=>{const V=O2(ne);return V.length>=4?[V]:[]}),...H.recommendedCompetitors].filter(ne=>ne.trim().length>2),be=[{terms:ve,className:"answer-highlight-brand"},...Ue.length>0?[{terms:Ue,className:"answer-highlight-competitor"}]:[]],P=$?"pending":H.visibilityTransition==="lost"?"lost":Te?"mentioned":"not-mentioned",ae=T.useRef(0),he=T.useCallback(async ne=>{const V=++ae.current;if(ne===-1||ne===K.length-1){v(-1),S(null),u(!1);return}v(ne),u(!1);const q=K[ne],le=`${q.runId}::${e.query}::${e.provider}`;if(E[le]){S(E[le]);return}N(!0);try{const De=await Ph(q.runId);if(V!==ae.current)return;const ye=De.snapshots?.find(Ge=>Ge.query===e.query&&Ge.provider===e.provider)??De.snapshots?.find(Ge=>Ge.query===e.query),Je=ye?{citationState:ye.citationState,answerMentioned:ye.answerMentioned,visibilityState:ye.visibilityState,visibilityTransition:q.visibilityTransition,provider:ye.provider,model:ye.model??null,answerSnippet:ye.answerText??"",citedDomains:ye.citedDomains,...dh(ye),recommendedCompetitors:ye.recommendedCompetitors??[],matchedTerms:ye.matchedTerms??[],groundingSources:ye.groundingSources,searchQueries:ye.searchQueries,evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:""}:{citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:q.visibilityTransition,provider:e.provider,model:q.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:"Snapshot data not available for this run."};Z(Ge=>({...Ge,[le]:Je})),S(Je)}catch{if(V!==ae.current)return;S({citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:q.visibilityTransition,provider:e.provider,model:q.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:"Failed to load historical run data."})}finally{V===ae.current&&N(!1)}},[K,e.query,e.provider,E]),X=(oe||e.historyScope!=="provider")&&H.model?`${H.provider} (${H.model}) · ${H.changeLabel.toLowerCase()}`:`${H.provider} · ${H.changeLabel.toLowerCase()}`,Ie=!oe&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",Ne=Te?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:X}:H.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:X}:$?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:X},Ae=()=>{if(!H.answerSnippet)return null;const ne=H.answerSnippet.split(`
|
|
58
|
-
`),V=[];let q=[],le=0;const De=()=>{if(q.length===0)return;const ye=q.join(" ").trim();ye&&V.push(c.jsx("p",{className:V.length>0?"mt-2.5":"",children:rx(ye,be)},le++)),q=[]};for(const ye of ne){const Je=ye.trim();if(/^[-\u2013\u2014]{3,}$/.test(Je)){De(),V.push(c.jsx("hr",{className:"border-default my-3"},le++));continue}const Ge=Je.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){De();const Be=Ge[1].length,de=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Me=Be===1?"text-[13px] font-semibold text-heading mt-4 mb-1":Be===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";V.push(c.jsx("p",{className:Me,children:rx(de,be)},le++));continue}if(Je===""){De();continue}q.push(Je)}return De(),V};return c.jsx(Ix,{open:!0,onOpenChange:ne=>{ne||s()},children:c.jsxs(Bx,{children:[c.jsx(Zh,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),c.jsxs(Yh,{className:"evidence-modal","aria-describedby":void 0,children:[c.jsxs("div",{className:"evidence-modal-header",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("p",{className:"eyebrow eyebrow-soft",children:[a.project.name," ","·"," ",H.provider||"All providers"]}),c.jsx(Xh,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),c.jsxs(Px,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[c.jsx(sr,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]}),te&&c.jsxs("div",{className:"evidence-modal-timeline",children:[c.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),c.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:K.map((ne,V)=>{const q=b===-1&&V===K.length-1||b===V,le=ne.visibilityState??(ne.answerMentioned?"visible":"not-visible"),De=ne.visibilityTransition??le,ye=le==="visible"?"bg-positive-400":De==="emerging"?"bg-caution-400":De==="lost"?"bg-negative-400":"bg-mono-600",Ge=new Date(ne.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Be=!!(ne.model&&V>0&&K[V-1]?.model&&K[V-1].model!==ne.model);return c.jsxs("button",{type:"button",className:`evidence-run-dot ${q?"evidence-run-dot--selected":""}`,onClick:()=>{he(V===K.length-1?-1:V)},"aria-label":[`Run ${Ge}: ${le}`,ne.model?`model ${ne.model}`:null,Be?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":q,children:[c.jsx("span",{className:`size-2 rounded-full ${ye} ${Be?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),c.jsx("span",{className:"text-[10px] text-muted",children:Ge})]},V)})}),b>=0&&b<K.length&&c.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(K[b].createdAt).toLocaleString()," ","—"," ",c.jsx("span",{className:"capitalize",children:K[b].visibilityState??(K[b].answerMentioned?"visible":"not-visible")}),c.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{he(-1)},children:["←"," Back to latest"]})]}),!oe&&(e.modelTransitions?.length??0)>0&&c.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ne=>c.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ne.fromModel??"unknown"} -> ${ne.toModel??"unknown"} on ${new Date(ne.createdAt).toLocaleDateString()}`},`${ne.runId}:${ne.toModel??"unknown"}`))})]}),c.jsxs("div",{className:"evidence-modal-body",children:[A&&c.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!A&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"evidence-modal-main",children:[c.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${P}`,children:[c.jsx("p",{className:`evidence-position-label evidence-position-label--${P}`,children:Ne.label}),c.jsx("p",{className:`evidence-position-title evidence-position-title--${P}`,children:Ne.title}),c.jsx("p",{className:"evidence-position-meta",children:Ne.meta}),Ie&&c.jsx("p",{className:"mt-1 text-[11px] text-muted",children:Ie})]}),H.answerSnippet&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),c.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:Ae()}),H.answerSnippet.length>280&&c.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>u(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!H.answerSnippet&&!A&&c.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),H.searchQueries.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Web searches the model ran"}),c.jsx(yl,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated your query — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),c.jsx("ul",{className:"grid gap-1",children:H.searchQueries.map((ne,V)=>c.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[c.jsx(X4,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),c.jsx("span",{className:"break-words",children:ne})]},`${V}-${ne}`))})]}),!oe&&e.relatedTechnicalSignals.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:Te?"Why you're visible":"What to fix"}),c.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ne,V)=>c.jsxs("div",{className:"action-item",children:[c.jsx("svg",{className:`action-item-icon ${Te?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:Te?c.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):c.jsxs(c.Fragment,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),c.jsx("span",{className:"action-item-text",children:ne})]},V))})]}),H.summary&&c.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:H.summary})]}),c.jsxs("div",{className:"evidence-modal-sidebar",children:[(Ke||Fe)&&c.jsxs("div",{className:"sidebar-tabs",children:[c.jsx("button",{className:`sidebar-tab ${f==="mentions"?"sidebar-tab--active":""}`,onClick:()=>g("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),c.jsx("button",{className:`sidebar-tab ${f==="sources"?"sidebar-tab--active":""}`,onClick:()=>g("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),f==="mentions"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Mention in answer"}),c.jsx(yl,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),c.jsxs("div",{className:`mention-status mention-status--${Te?"mentioned":"not-mentioned"}`,children:[c.jsx("span",{className:"mention-status-icon",children:$?"…":Te?"✓":"—"}),c.jsx("span",{className:"mention-status-label",children:$?"Pending":Te?"Mentioned":"Not mentioned"})]}),H.matchedTerms.length>0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:H.matchedTerms.map(ne=>c.jsx("span",{className:"mention-chip mention-chip--brand",children:ne},ne))})]}),!$&&!Te&&H.matchedTerms.length===0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:ve.map(ne=>c.jsx("span",{className:"mention-chip mention-chip--muted",children:ne},ne))}),c.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(H.recommendedCompetitors.length>0||H.mentionedCompetitorDomains.length>0)&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Competitors in answer"}),c.jsx(yl,{text:"Competitors detected in the answer text. Includes tracked competitor brands and names extracted by Canonry; source-link competitors stay in the Sources tab."})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ne=H.mentionedCompetitorDomains.map(le=>le.replace(/^www\./,"")),V=new Set(ne.map(le=>Ca(le.replace(/\.[^.]+$/,""))));return[...H.recommendedCompetitors.filter(le=>!V.has(Ca(le))),...ne].map(le=>c.jsx("span",{className:"mention-chip mention-chip--competitor",children:le},le))})()})]})]}),f==="sources"&&c.jsxs(c.Fragment,{children:[H.citedDomains.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Domains from source links"}),c.jsx(yl,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),c.jsx("div",{className:"citation-leaderboard",children:H.citedDomains.map((ne,V)=>{const q=ne.toLowerCase().replace(/^www\./,""),le=G.has(q),De=!le&&H.citedCompetitorDomains.some(Je=>Je.toLowerCase().replace(/^www\./,"")===q),ye=le?"you":De?"competitor":"other";return c.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${ye}`,children:[c.jsxs("span",{className:"citation-leaderboard-rank",children:["#",V+1]}),c.jsx("span",{className:"citation-leaderboard-domain",children:ne}),le&&c.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),De&&c.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ne)})})]}),H.groundingSources.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsxs("span",{children:["Grounding source links (",H.groundingSources.length,")"]}),c.jsx(yl,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),c.jsx("ul",{className:"grid gap-0.5",children:H.groundingSources.map((ne,V)=>{const q=$h(ne.uri),le=ne.title||ne.uri;return c.jsx("li",{className:"truncate text-sm",children:q?c.jsx("a",{href:q,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:le}):c.jsx("span",{className:"text-secondary",children:le})},V)})})]}),H.evidenceUrls.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),c.jsx("ul",{className:"grid gap-1",children:H.evidenceUrls.map(ne=>{const V=$h(ne);return c.jsx("li",{className:"truncate text-sm",children:V?c.jsx("a",{href:V,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ne}):c.jsx("span",{className:"text-secondary",children:ne})},ne)})})]}),H.citedDomains.length===0&&H.groundingSources.length===0&&H.evidenceUrls.length===0&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",oe?"for this run":"yet"]})]}),!Ke&&!Fe&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",oe?"for this run":"yet"]})]})]})]})]})]})})}function kG(e){const a=e.match(/^\/projects\/([^/]+)/);if(!a)return null;try{return decodeURIComponent(a[1])}catch{return a[1]}}function wG(e,a){return e?a?.projects.find(r=>r.project.name===e||r.project.id===e)?.project.name??e:null}function SG(e,a){return wG(kG(e),a)}function ja(e){const a=new Date("2026-02-20");return e.map((s,r)=>({runId:`run_mock_${r+1}`,citationState:s,createdAt:new Date(a.getTime()+r*2*24*60*60*1e3).toISOString()}))}const ph=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function _d(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const jG=_d({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),AG=_d({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),CG=_d({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),NG=_d({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),_G=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:ja(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:ja(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:ja(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];ph[0],Math.round(1/9*100),Math.round(2/9*100),ph[1],ja(["cited","cited","cited","cited","cited"]),ph[2],Math.round(2/7*100),Math.round(3/7*100),ja(["not-cited","not-cited","not-cited","cited"]);function zG(e,a){return e.runs.find(s=>s.id===a)}function EG(e,a){for(const s of e.projects){const r=s.visibilityEvidence.find(u=>u.id===a);if(r)return{project:s,evidence:r}}}function TG(e,a,s){if(e){const r=e.visibilityEvidence.find(u=>u.id===s);if(r)return{project:e,evidence:r}}if(a)return EG(a,s)}const RG={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},DG={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},OG={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},qG={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function BG(e){return{id:e.id,tone:RG[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??qG[e.type],actionGroup:DG[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:OG[e.type]}]}}function PG(e){return e.filter(a=>!a.dismissed).map(BG)}function g3(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function lx(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function MG(e,a){if(!e)return"Waiting";if(!a)return"Running";const s=new Date(a).getTime()-new Date(e).getTime();if(s<1e3)return"<1s";const r=Math.floor(s/1e3);if(r<60)return`${r}s`;const u=Math.floor(r/60),f=r%60;return`${u}m ${f}s`}function y3(e){switch(e){case ze["answer-visibility"]:return"Answer visibility sweep";case ze["gsc-sync"]:return"GSC sync";case ze["inspect-sitemap"]:return"Sitemap inspection";case ze["ga-sync"]:return"GA sync";case ze["traffic-sync"]:return"Traffic sync";case ze["bing-inspect"]:return"Bing URL inspection";case ze["bing-inspect-sitemap"]:return"Bing sitemap inspection";case ze["site-audit"]:return"Site audit";case ze["backlink-extract"]:return"Backlink extract";case ze["aeo-discover-seed"]:return"Discovery (seed phase)";case ze["aeo-discover-probe"]:return"Discovery (probe phase)";case ze["gbp-sync"]:return"Business Profile sync";case ze["ads-sync"]:return"ChatGPT ads sync";case ze["google-ads-sync"]:return"Google Ads sync";case ze["gtm-sync"]:return"Tag Manager sync"}}function IG(e){return e===Qo.manual?"Manual":e===Qo.scheduled?"Scheduled":e===Qo["config-apply"]?"Config apply":e}function zd(e,a){return{id:e.id,projectId:e.projectId,projectName:a,kind:e.kind,kindLabel:y3(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?lx(e.startedAt):lx(e.createdAt),duration:MG(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?b3(e.error):VG(e),summary:LG(e),triggerLabel:IG(e.trigger)}}function b3(e){const a=G0(e);return a.length>200?a.slice(0,200)+"…":a}function VG(e){switch(e.status){case xn.queued:return"Waiting for execution slot.";case xn.running:return"Provider queries in progress.";case xn.completed:return"All queries checked.";case xn.partial:return"Run completed with some queries skipped.";case xn.failed:return e.error?b3(e.error):"Run failed.";case xn.cancelled:return"Run was cancelled.";default:return""}}function LG(e){const a=y3(e.kind);switch(e.status){case xn.queued:return`${a} queued`;case xn.running:return`${a} in progress`;case xn.completed:return`${a} completed`;case xn.partial:return`${a} partially completed`;case xn.failed:return`${a} failed`;case xn.cancelled:return`${a} cancelled`;default:return e.status}}function UG(e,a,s,r,u){const f=[];let g=0;const b=new Set;if(s.length>0){const v=s.flatMap(_=>_.snapshots??[]),k=new Map;for(const _ of v)if(_.query){const G=`${_.query}::${_.provider}::${_.location??""}`;k.set(G,_)}const S=new Set(v.map(_=>_.location??null));S.size===0&&S.add(null);const A=new Set(v.map(_=>_.provider)),N=new Set(a.flatMap(_=>Object.keys(_.providerRuns??{}))),E=[...new Set([...A,...N])].sort(),Z=E.length>0?E:["gemini"];for(const _ of a){if(_.runs.length===0)continue;b.add(_.query);const G=_.runs.at(-1),K=G?.transition??"not-cited";for(const te of Z){const Q=[...S].filter(oe=>k.has(`${_.query}::${te}::${oe??""}`)),re=(_.providerRuns?.[te]?.length??0)>0,W=Q.length>0?Q:re?[null]:[];for(const oe of W){const H=oe??"",$=k.get(`${_.query}::${te}::${H}`),Te=$?.model??null,Ke=Te?`${te}:${Te}`:null,Fe=_.providerRuns?.[te],Re=Ke?_.modelRuns?.[Ke]:void 0,ve=Me=>Me?.filter($t=>($t.location??null)===oe),Ue=Q.length>0?ve(Fe):Fe,be=Q.length>0?ve(Re):Re,P=(Ue?.length?Ue:null)??(be?.length?be:null),ae=Ue?.length?"provider":be?.length?"model":"query",he=P?P.at(-1).transition:K,je=P?P.at(-1).visibilityTransition??(P.at(-1).visibilityState==="visible"?"visible":"not-visible"):G?.visibilityTransition??(G?.visibilityState==="visible"?"visible":"not-visible"),X=P?.at(-1)?.citationState,Ie=P?.at(-1)?.visibilityState,Ne=$?he==="lost"?"lost":he==="emerging"?"emerging":$.citationState===Uu.cited?"cited":"not-cited":X===Uu.cited?"cited":"not-cited",Ae=$?.visibilityState??(Ie==="visible"?"visible":Ie==="pending"?"pending":"not-visible"),ne=cx(P||_.runs),V=ux(P||_.runs),q=GG(_,te),le=(P??_.runs).map(Me=>({runId:Me.runId,citationState:Me.citationState,createdAt:Me.createdAt,model:q.get(Me.runId)??null,answerMentioned:Me.answerMentioned,visibilityState:Me.visibilityState,visibilityTransition:Me.visibilityTransition,mentionState:Me.mentionState,mentionTransition:Me.mentionTransition})),De=$G(le),ye=ae==="provider"&&De.length<=1?"model":ae,Je=KG(le),Ge=$?.citedCompetitorDomains??[],Be=$?.mentionedCompetitorDomains??[],de=[...new Set([...Ge,...Be,...$?.competitorOverlap??[]])];f.push({id:`evidence_${e}_${g++}`,query:_.query,queryClass:u?.classify(_.query)??null,provider:$?.provider??te,model:$?.model??null,location:$?.location??oe,citationState:Ne,answerMentioned:$?.answerMentioned,visibilityState:Ae,visibilityChangeLabel:dx(je,V,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:dx(he,ne),answerSnippet:$?.answerText??"",citedDomains:$?.citedDomains??[],evidenceUrls:[],citedCompetitorDomains:Ge,mentionedCompetitorDomains:Be,competitorDomains:de,recommendedCompetitors:$?.recommendedCompetitors??[],matchedTerms:$?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:$?.groundingSources??[],searchQueries:$?.searchQueries??[],summary:HG(Ae,je,_.query),runHistory:le,historyScope:ye,modelsSeen:De,modelTransitions:Je})}}}}for(const v of r)b.has(v.query)||f.push({id:`evidence_${e}_${g++}`,query:v.query,queryClass:u?.classify(v.query)??null,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${v.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return f}function GG(e,a){const s=new Map,r=`${a}:`;for(const[u,f]of Object.entries(e.modelRuns??{})){if(!u.startsWith(r))continue;const g=u.slice(r.length),b=g==="unknown"?null:g;for(const v of f)s.set(v.runId,b)}return s}function $G(e){const a=new Set;for(const s of e)s.model&&a.add(s.model);return[...a]}function KG(e){const a=[];let s=null;for(const r of e){const u=r.model??null;u!==s&&s!==null&&a.push({runId:r.runId,createdAt:r.createdAt,fromModel:s,toModel:u}),s=u}return a}function cx(e){if(e.length===0)return 0;const a=e[e.length-1].citationState;let s=0;for(let r=e.length-1;r>=0&&e[r].citationState===a;r--)s++;return s}function ux(e){if(e.length===0)return 0;const a=e[e.length-1].visibilityState??"not-visible";let s=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===a;r--)s++;return s}function dx(e,a,s){const r={positive:s?.positive??"cited",negative:s?.negative??"not cited",first:s?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return a<=1?`${bl(r.positive)} in latest run`:`${bl(r.positive)} for ${a} runs`;case"lost":return"Lost since last run";case"emerging":return bl(r.first);case"not-cited":case"not-visible":return a<=1?`${bl(r.negative)} in latest run`:`${bl(r.negative)} across ${a} runs`;default:return e}}function bl(e){return e.charAt(0).toUpperCase()+e.slice(1)}function HG(e,a,s){switch(a){case"lost":return`Mention was lost for "${s}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${s}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${s}".`;case"pending":return`"${s}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${s}".`}}function v3(e){const a=g3(e.project),s=j8(g8(e.project)),r=UG(a.name,e.timeline,e.latestRunDetails,e.queries,s),f=[...e.runs].sort((g,b)=>b.createdAt.localeCompare(g.createdAt)).map(g=>zd(g,e.project.displayName||e.project.name));return e.overview?QG(a,e.overview,r,f):FG(a,r,f)}function QG(e,a,s,r){const u=PG(a.topInsights);for(const f of a.attentionItems)f.id.startsWith("insight_")||u.push({id:f.id,tone:f.tone,title:f.title,detail:f.detail,actionLabel:f.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:a.dateRangeLabel,contextLabel:a.contextLabel,mentionSummary:a.scores.mention,visibilitySummary:a.scores.visibility,mentionShareSummary:a.scores.mentionShare,queryCounts:{cited:a.queryCounts.citedQueries,total:a.queryCounts.totalQueries},gapQueries:a.scores.gapQueries,mentionGaps:a.scores.mentionGaps,indexCoverage:a.scores.indexCoverage,providerScores:a.providerScores,competitorPressure:a.scores.competitorPressure,runStatus:a.scores.runStatus,citationMovement:a.citationMovement,mentionMovement:a.mentionMovement,movementComparison:a.movementComparison,insights:u,visibilityEvidence:s,competitors:a.competitors.map(f=>({id:f.id,domain:f.domain,citationCount:f.citationCount,totalQueries:f.totalQueries,pressureLabel:f.pressureLabel,citedQueries:f.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:a.suggestedQueries}}function mx(){return{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0,score:null}}function FG(e,a,s){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",scope:"non-brand",unavailable:!0,breakdown:mx(),branded:mx()},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:a,competitors:[],recentRuns:s.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function ZG(e){const a=g3(e.project),s=[...e.runs].sort((N,E)=>E.createdAt.localeCompare(N.createdAt)),r=s.find(N=>N.kind===ze["answer-visibility"])??s[0]??e.overview?.latestRun?.run??void 0,u=e.project.displayName||e.project.name,f=r?zd(r,u):YG(e.project.id,u),g=e.overview;if(!g)return{project:a,hasMeasurement:!1,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:f,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const b=g.scores.mention,v=b.progress??0,k=g.queryCounts.mentionedQueries,S=g.queryCounts.totalQueries,A=g.providers.length;return{project:a,hasMeasurement:S>0&&b.progress!=null,mentionScore:v,mentionDelta:S>0?`${k} of ${S} queries`:"No data",mentionTone:b.tone,providerCoverage:b.providerCoverage,lastRun:f,insight:S>0?`${k} of ${S} queries mentioned across ${A} provider${A===1?"":"s"}.`:"No runs completed yet.",trend:b.trend??[],competitorPressureLabel:g.scores.competitorPressure.value}}function YG(e,a){return{id:"none",projectId:e,projectName:a,kind:ze["answer-visibility"],kindLabel:"No runs yet",status:xn.queued,trigger:Qo.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function XG(e,a){const s=[],r=[],u=[];for(const g of e){r.push(v3(g)),u.push(ZG(g));const b=[...g.runs].sort((v,k)=>k.createdAt.localeCompare(v.createdAt));for(const v of b)s.push(zd(v,g.project.displayName||g.project.name))}s.sort((g,b)=>b.createdAt.localeCompare(g.createdAt));const f=e.length>0;return{portfolioOverview:{projects:u,attentionItems:f?JG(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:s.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],...f?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:s,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:f,ctaLabel:f?"Trigger run":"Create a project first",summary:f?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(a?.providers??[]).map(g=>({name:g.name,displayName:g.displayName,keyUrl:g.keyUrl,modelHint:g.modelHint,model:g.model,defaultModel:g.defaultModel,state:g.configured?"ready":"needs-config",detail:g.configured?"Provider is configured.":g.name.toLowerCase()==="local"?"Base URL is missing.":"API key is missing.",quota:g.quota})),google:{state:a?.google?.configured?"ready":"needs-config",detail:a?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:a?.bing?.configured?"ready":"needs-config",detail:a?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function JG(e){const a=[];for(const s of e){const r=s.visibilityEvidence.filter(f=>f.citationState==="lost");r.length>0&&a.push({id:`attention_${s.project.id}_lost`,tone:"negative",title:`${s.project.displayName||s.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(s.project.name)}`});const u=s.recentRuns.filter(f=>f.status===xn.running||f.status===xn.queued);u.length>0&&a.push({id:`attention_${s.project.id}_active`,tone:"neutral",title:`${s.project.displayName||s.project.name} has active runs`,detail:`${u.length} run${u.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return a.length===0&&a.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),a}const x3=T.createContext(null);x3.Provider;function Kl(){return T.useContext(x3)}function Ed(e,a={}){const r=Kl()?.dashboard??null,u=a.includeSettings??!0,f=a.includeOverviews??!0,g=a.pauseProjectPolling??!1,{isAdmin:b}=ha(),v=Et({...yf({client:se,query:{kind:"answer-visibility"}}),enabled:!r,staleTime:nr,refetchInterval:Q=>Q.state.data?.some(oe=>oe.status==="running"||oe.status==="queued")?3e3:nr}),k=Et({...Zs({client:se}),enabled:!r,refetchInterval:g?!1:Q=>{const re=Q.state.data,W=v.data?.some(H=>H.status==="running"||H.status==="queued");return(re?.length??0)===0||!!W?aV:iV}}),S=Et({...GV({client:se}),enabled:!r&&u&&b}),A=k.data??[],N=v.data??[],E=G4({queries:A.map(Q=>{const re=N.filter(H=>H.projectId===Q.id),W=re.filter(H=>(H.status==="completed"||H.status==="partial")&&H.kind==="answer-visibility"&&H.trigger!=="probe").sort((H,$)=>$.createdAt.localeCompare(H.createdAt)),oe=W.length>0?W[0].id:"no-run";return{queryKey:["project-overview-slim",Q.id,oe],queryFn:async()=>{const H=await OS(Q.name).catch(()=>null);return{project:Q,runs:re,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:H}},enabled:!r&&f&&k.isSuccess&&v.isSuccess,staleTime:Tu}})}),Z=!f||E.every(Q=>Q.isSuccess),_=T.useMemo(()=>{if(r)return r;if(!k.data||!v.data||A.length>0&&!Z)return null;const Q=f?E.map(re=>re.data?{...re.data,runs:N.filter(W=>W.projectId===re.data.project.id)}:null).filter(re=>re!=null):A.map((re,W)=>{const oe=E[W]?.data;return{project:re,runs:N.filter(H=>H.projectId===re.id),queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:oe?.overview??null}});return XG(Q,S.data??null)},[r,k.data,v.data,S.data,f,Z,E,A,N]),G=!r&&(k.isError||v.isError),K=!r&&!_&&!G,te=T.useCallback(async()=>{const Q=[k.refetch(),v.refetch(),...f?E.map(re=>re.refetch()):[]];u&&Q.push(S.refetch()),await Promise.all(Q)},[u,f,E,k.refetch,v.refetch,S.refetch]);return{dashboard:_,isLoading:K,isError:G,refetch:te}}function WG(e){return JSON.stringify(e.filter(a=>a.kind==="answer-visibility"&&a.trigger!=="probe"&&(a.status==="completed"||a.status==="partial")).map(a=>[a.id,a.status]).sort(([a],[s])=>a.localeCompare(s)))}async function Kh(e,a,s="active"){const r=u=>{const f=u.queryKey[0];return f?._id==="getApiV1ProjectsByNameAnalyticsCompetitors"&&f.path?.name===a};return s==="active"&&await e.cancelQueries({predicate:r}),e.invalidateQueries({predicate:r,refetchType:s})}function MY(e,a,s){const r=da(),u=T.useRef({projectName:e,revision:a,enabled:s});T.useEffect(()=>{const f=u.current;u.current={projectName:e,revision:a,enabled:s},!(!s||!f.enabled||f.projectName!==e||f.revision===a)&&Kh(r,e)},[s,e,r,a])}const e$=20;function t$(e,a={}){const s=da(),r=Kl(),u=T.useMemo(()=>!r||!e?null:r.dashboard.projects.find(W=>W.project.name===e)??null,[r,e]),f=Et({...xV({client:se,path:{name:e??""}}),enabled:!!e&&!u,staleTime:Tu,refetchOnWindowFocus:"always"}),g=Et({...PV({client:se,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:nr,refetchOnWindowFocus:"always",refetchInterval:W=>W.state.data?.some($=>$.projectId===f.data?.id&&($.status==="running"||$.status==="queued"))?3e3:nr}),b=f.data??null,v=T.useMemo(()=>b?(g.data??[]).filter(W=>W.projectId===b.id):[],[b,g.data]),{latestRunIds:k,latestRunIdsKey:S,latestVisibilityRevision:A}=T.useMemo(()=>{const W=v.filter($=>($.status==="completed"||$.status==="partial")&&$.kind==="answer-visibility"&&$.trigger!=="probe").sort(($,Te)=>Te.createdAt.localeCompare($.createdAt)),oe=W[0]?.createdAt??null,H=oe?W.filter($=>$.createdAt===oe).map($=>$.id):[];return{latestRunIds:H,latestRunIdsKey:[...H].sort().join(","),latestVisibilityRevision:oe?`${oe}:${[...H].sort().join(",")}`:"none"}},[v]),N=!!b&&!!e&&g.isSuccess,E=Et({queryKey:["project-dashboard-full",b?.id??null,S||"none","overview"],queryFn:async()=>({project:b,overview:await OS(e)}),enabled:N&&a.overview===!0,staleTime:Tu,refetchOnWindowFocus:"always"}),Z=Et({queryKey:["project-dashboard-full",b?.id??null,S||"none","evidence"],queryFn:async()=>{const[W,oe,H]=await Promise.all([DS(e),NI(e,void 0,e$),Promise.all(k.map($=>Ph($)))]);return{project:b,queries:W,timeline:oe,latestRunDetails:H}},enabled:N&&a.evidence===!0,staleTime:Tu,refetchOnWindowFocus:"always"}),_=T.useMemo(()=>{if(!b||!g.data)return u;const W=a.evidence?Z.data:void 0,oe={project:b,runs:v,queries:W?.queries??[],timeline:W?.timeline??[],latestRunDetails:W?.latestRunDetails??[],overview:a.overview?E.data?.overview??null:null},H=v3(oe);return u&&!(a.overview&&E.data)?{...u,project:H.project,recentRuns:g.data?H.recentRuns:u.recentRuns,visibilityEvidence:W?H.visibilityEvidence:u.visibilityEvidence}:H},[b,v,Z.data,E.data,u,a.evidence,a.overview,g.data]),G=T.useCallback(async()=>{await Promise.all([f.refetch(),g.refetch(),s.invalidateQueries({queryKey:["project-dashboard-full",b?.id??null]})])},[f.refetch,g.refetch,s,b?.id]),K=f.isError||g.isError,te=!u&&(f.isLoading||g.isLoading),Q=!!e&&a.overview===!0&&!u&&!K&&E.isPending,re=!!e&&a.evidence===!0&&!u&&!K&&Z.isPending;return{commandCenter:_,project:b,isLoading:te,isError:K,overviewLoading:Q,overviewError:a.overview===!0&&E.isError&&!E.data,evidenceLoading:re,evidenceError:a.evidence===!0&&Z.isError&&!Z.data,latestVisibilityRevision:A,competitorHistoryRevision:WG(v),refetch:G}}const n$=["health"];async function a$(){const e=await HI("/health","API"),a=Sl()&&e.state==="ok"?{label:"Worker",state:"disabled",detail:"Background execution is disabled in this public demo."}:e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:a}}function Sf(e,a){return Et({queryKey:n$,queryFn:a$,enabled:e,refetchInterval:15e3,initialData:a})}function i$(e){return Et({...bf({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:a=>{const s=a.state.data?.status;return s==="running"||s==="queued"?3e3:!1}})}function jf(){const e=Hs(),a=Dx({strict:!1}),s=$4({select:v=>v.location.pathname}),r=a.runId??null,u=a.evidenceId??null;return{runId:r,evidenceId:u,openRun:v=>{e({to:s,from:kn.to,search:k=>({...k,runId:v,evidenceId:void 0})})},openEvidence:v=>{e({to:s,from:kn.to,search:k=>({...k,evidenceId:v,runId:void 0})})},closeDrawer:()=>{e({to:s,from:kn.to,search:v=>({...v,runId:void 0,evidenceId:void 0})})}}}const s$={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function o$(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function r$(){const e=T.useSyncExternalStore(tV,Hv,Hv),a=Hs(),{openRun:s}=jf(),r=T.useCallback(f=>{Lh(f)},[]),u=T.useCallback(f=>{f.cta&&(f.cta.intent==="open-run-drawer"?s(f.cta.runId):a({to:"/runs"}),Lh(f.id))},[a,s]);return e.length===0?null:c.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(f=>c.jsxs("section",{role:f.tone==="negative"?"alert":"status","aria-live":f.tone==="negative"?"assertive":"polite","data-state":f.state,className:`toast-card ${s$[f.tone]}`,children:[c.jsxs("div",{className:"toast-copy",children:[c.jsx("p",{className:"toast-title",children:f.title}),f.detail?c.jsx("p",{className:"toast-detail",children:f.detail}):null,f.cta?c.jsx("button",{type:"button",className:"toast-action",onClick:()=>u(f),"aria-label":o$(f),children:f.cta.label}):null]}),c.jsx("button",{type:"button",onClick:()=>r(f.id),className:"toast-dismiss","aria-label":"Dismiss",children:c.jsx(sr,{className:"size-3.5"})})]},f.id))})}const l$="https://github.com/Canonry/canonry",c$="https://canonry.ai",px="Run it from your agent with the MCP server, API, CLI, and plugins for Claude Code and Codex.",u$=[{title:"Visibility",links:[["AI visibility","/projects/summit-roofing"],["Search engines","/projects/summit-roofing/search-console"],["Traffic & conversions","/projects/summit-roofing/conversions"],["Reports","/projects/harbor-resorts/report"]]},{title:"Portfolio",links:[["Properties & markets","/projects/harbor-resorts"],["Queries & research","/projects/harbor-resorts/queries"],["Activity","/projects/harbor-resorts/activity"]]},{title:"Website",links:[["Site health","/projects/summit-roofing/technical-aeo"],["Local presence","/projects/summit-roofing/local"],["Backlinks","/projects/summit-roofing/backlinks"]]}];function d$(){const e=T.useId();if(!Sl())return null;const a=Ad(),s=`${e}-new-tab`,r={target:"_blank",rel:"noopener noreferrer","aria-describedby":s};return c.jsxs("aside",{className:"demo-banner","aria-label":"Public demo",children:[c.jsx("p",{className:"demo-banner-name",children:"Canonry demo"}),c.jsx("p",{className:"demo-banner-facts",children:"No sign-in. View only. Fictional data."}),c.jsx("p",{className:"demo-banner-agent",children:px}),c.jsxs("div",{className:"demo-banner-actions",children:[c.jsxs("a",{className:"demo-banner-primary",href:c$,...r,children:["canonry.ai",c.jsx(J4,{"aria-hidden":"true",size:14})]}),c.jsxs("a",{className:"demo-banner-secondary",href:l$,...r,children:[c.jsx(Lx,{"aria-hidden":"true",size:15}),"GitHub"]}),c.jsxs("details",{onKeyDown:u=>{u.key==="Escape"&&(u.currentTarget.open=!1,u.currentTarget.querySelector("summary")?.focus())},children:[c.jsxs("summary",{children:["Explore ",c.jsx(Xu,{"aria-hidden":"true",size:14})]}),c.jsxs("div",{className:"demo-banner-panel",children:[c.jsx("p",{className:"demo-banner-panel-agent",children:px}),c.jsxs("nav",{className:"demo-banner-examples","aria-label":"Demo examples",children:[c.jsx("a",{href:`${a}/projects/summit-roofing`,children:"Standard business"}),c.jsx("a",{href:`${a}/projects/harbor-resorts`,children:"Property portfolio"})]}),c.jsx("nav",{className:"demo-banner-features","aria-label":"Demo feature directory",children:u$.map(({title:u,links:f})=>c.jsxs("section",{"aria-label":u,children:[c.jsx("h2",{children:u}),c.jsx("ul",{children:f.map(([g,b])=>c.jsx("li",{children:c.jsx("a",{href:`${a}${b}`,children:g})},b))})]},u))})]})]})]}),c.jsx("span",{id:s,hidden:!0,children:"Opens in a new tab"})]})}function jl(e){switch(e){case ze["answer-visibility"]:return"Visibility sweep";case ze["gsc-sync"]:return"GSC sync";case ze["inspect-sitemap"]:return"Sitemap inspection";case ze["ga-sync"]:return"GA sync";case ze["traffic-sync"]:return"Traffic sync";case ze["bing-inspect"]:return"Bing URL inspection";case ze["bing-inspect-sitemap"]:return"Bing sitemap inspection";case ze["site-audit"]:return"Technical audit";case ze["backlink-extract"]:return"Backlink extract";case ze["aeo-discover-seed"]:return"Discovery (seed phase)";case ze["aeo-discover-probe"]:return"Discovery (probe phase)";case ze["gbp-sync"]:return"Business Profile sync";case ze["ads-sync"]:return"ChatGPT ads sync";case ze["google-ads-sync"]:return"Google Ads sync";case ze["gtm-sync"]:return"Tag Manager sync"}}function hx(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function m$(){const e=T.useSyncExternalStore(ZS,gi,gi),a=T.useMemo(()=>Object.values(e.runs),[e.runs]),s=a.length>0,r=Et({...yf({client:se}),enabled:s,staleTime:nr}),u=T.useMemo(()=>new Map((r.data??[]).map(b=>[b.id,b.status])),[r.data]);if(!s)return null;const f=a.map(b=>({...b,status:u.get(b.runId)??b.lastAnnouncedStatus})),g=f.length===1?jl(f[0].kind):`${f.length} active tasks`;return c.jsxs("div",{className:"task-center",children:[c.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[f.length," active ",f.length===1?"task":"tasks","."," ",f.map(b=>`${jl(b.kind)} ${hx(b.status)}`).join(". "),"."]}),c.jsxs("details",{className:"task-center-details",children:[c.jsxs("summary",{className:"task-center-trigger",children:[c.jsx(Zo,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),c.jsx("span",{className:"task-center-summary",children:g}),c.jsx("span",{className:"task-center-count","aria-hidden":"true",children:f.length}),c.jsx(Xu,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),c.jsxs("div",{className:"task-center-panel",children:[c.jsxs("div",{className:"task-center-heading",children:[c.jsx("span",{children:"Active tasks"}),c.jsx("span",{className:"tabular-nums text-faint",children:f.length})]}),c.jsx("ul",{className:"task-center-list",children:f.map(b=>c.jsxs("li",{className:"task-center-item",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:jl(b.kind)}),c.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:b.projectLabel??b.projectId})]}),c.jsx(pn,{tone:b.status==="failed"?"negative":b.status==="partial"?"caution":"neutral",children:hx(b.status)})]},b.runId))}),c.jsx(tt,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function p$(e,a={}){const{threshold:s=80}=a,r=T.useRef(null),u=T.useRef({scrollHeight:0,wasAtEnd:!0});function f(v){return v.scrollHeight-v.scrollTop-v.clientHeight}function g(){const v=r.current;return v?f(v)<=s:!0}function b(){const v=r.current;v&&(v.scrollTop=v.scrollHeight,u.current.wasAtEnd=!0,u.current.scrollHeight=v.scrollHeight)}return T.useEffect(()=>{const v=r.current;if(!v)return;const k=()=>{u.current.wasAtEnd=f(v)<=s};return v.addEventListener("scroll",k,{passive:!0}),()=>v.removeEventListener("scroll",k)},[s]),T.useLayoutEffect(()=>{const v=r.current;if(!v)return;const k=v.scrollHeight;k>u.current.scrollHeight&&u.current.wasAtEnd&&(v.scrollTop=k),u.current.scrollHeight=k},e),T.useEffect(()=>{const v=r.current;if(!v||typeof ResizeObserver>"u")return;const k=new ResizeObserver(()=>{const S=v.scrollHeight;S>u.current.scrollHeight&&u.current.wasAtEnd&&(v.scrollTop=S),u.current.scrollHeight=S});return k.observe(v),v.firstElementChild&&k.observe(v.firstElementChild),()=>k.disconnect()},[]),{ref:r,scrollToEnd:b,isAtEnd:g}}const Hh="Sweeps are run by your Canonry team",h$="Scans are run by your Canonry team",fx="Next sweep unavailable",f$="Sweep running…",g$="Next sweep:";function y$(e,a){try{return new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",timeZone:a??"UTC"}).format(new Date(e))}catch{return null}}function b$({projectName:e,kind:a=ze["answer-visibility"],running:s=!1,loadSchedule:r=!0}){const u=a===ze["site-audit"],f=Et({...KV({client:se,path:{name:e},query:{kind:a}}),enabled:r&&!!e,retry:!1,refetchInterval:6e4}),g=f.isError?void 0:f.data,b=g?.enabled&&g.nextRunAt?new Date(g.nextRunAt):null,v=b&&Number.isFinite(b.getTime())?u?b.toLocaleString("en-GB",{weekday:"long",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",timeZone:"UTC",hourCycle:"h23"}):y$(b.toISOString(),g?.timezone):null,S=(f.error instanceof fn?f.error.code:f.error?.error?.code)==="NOT_FOUND",A=!v||S||!g?.enabled;return c.jsx("p",{className:"text-sm text-secondary",role:"status",children:u?c.jsxs(c.Fragment,{children:[s&&c.jsx("span",{className:"text-neutral",children:"Scan running… · "}),v&&b?c.jsxs(c.Fragment,{children:["Next scan ",c.jsxs("time",{dateTime:b.toISOString(),children:[v," UTC"]})," · managed by your Canonry team"]}):h$]}):s?f$:A?fx:v&&b?c.jsxs(c.Fragment,{children:[g$," ",c.jsx("time",{dateTime:b.toISOString(),children:v})]}):fx})}async function Af(e){try{return await e.json()}catch{return{}}}function v$(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Cf=v$();function Nf(e){e===401&&hf()}async function gx(e){const a=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!a.ok){Nf(a.status);const s=await Af(a);throw new fn(s.error?.message??`transcript fetch failed: ${a.status}`,a.status,s.error?.code)}return await a.json()}async function x$(e){const a=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!a.ok){Nf(a.status);const s=await Af(a);throw new fn(s.error?.message??`reset failed: ${a.status}`,a.status,s.error?.code)}}async function k$({project:e,prompt:a,provider:s,modelId:r,scope:u,profile:f,signal:g,onEvent:b}){const v={prompt:a};s&&(v.provider=s),r&&(v.modelId=r),u&&(v.scope=u),f&&(v.profile=f);const k=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(v),signal:g});if(!k.ok||!k.body){Nf(k.status);const Z=await Af(k);throw new fn(Z.error?.message??`prompt failed: ${k.status}`,k.status,Z.error?.code)}const S=k.body.getReader(),A=new TextDecoder;let N="";const E=()=>{S.cancel().catch(()=>{})};g?.addEventListener("abort",E,{once:!0});try{for(;;){const{value:Z,done:_}=await S.read();if(_)break;N+=A.decode(Z,{stream:!0});let G=N.indexOf(`
|
|
56
|
+
`):"Run failed."}function dV(e){return e.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")}function GF(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function $F(e){return e===null?"Unknown":e?"Pass":"Fail"}function Fv(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function KF(e,a){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${a}`:`daily@${a}`}function HF(e,a){if(!e)return{freq:"custom",hour:6,customCron:a};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const s=e.match(/^daily(?:@(\d+))?$/);if(s)return{freq:"daily",hour:s[1]?parseInt(s[1]):6,customCron:""};const r=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return r?{freq:r[1],hour:r[2]?parseInt(r[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:a}}function QF(e,a,s){const r=s==="UTC"?"UTC":s.split("/").pop()?.replace(/_/g," ")??s;if(!e)return`Custom: ${a} · ${r}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${r}`;const u=e.match(/^daily(?:@(\d+))?$/);if(u){const g=u[1]?parseInt(u[1]):6;return`Every day at ${Fv(g)} · ${r}`}const f=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(f){const g={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},b=f[2]?parseInt(f[2]):6;return`Every ${g[f[1]]} at ${Fv(b)} · ${r}`}return`${e} · ${r}`}function mV(e,a){return a&&a!==e?`${e} · ${a}`:e}function FF(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,a=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(s=>s.type==="timeZoneName")?.value;return mV(e,a)}function pV(e){const a=e.replace(/\/+$/,"")||"/";return a==="/"?"overview":a==="/projects"?"projects":a.startsWith("/projects/")?"project":a==="/runs"?"runs":a==="/traffic"||a.startsWith("/traffic/")?"traffic":a==="/backlinks"?"backlinks":a==="/settings"?"settings":a==="/setup"?"setup":"other"}function hV(e,a){return!a||a.includes(e)}const GS=["overview","search-console","local","report","activity","backlinks","technical-aeo","history","settings"],fV=new Set(GS);function gV(e){const a=e??GS,s=[...new Set(a.filter(r=>fV.has(r)))];return s.length>0?s:["overview"]}function ZF(e){return e?gV(e.projectTabs):void 0}function YF(e,a){return hV(e,a)||!a?e:a.includes("overview")?"overview":a[0]??"overview"}const Zv={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},yV=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i;function bV(e){const a=e?.mode?.trim();return a==="light"||a==="dark"?a:void 0}function vV(e){if(!e)return{};const a={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(Zv,s)?Zv[s]:void 0;if(!u||typeof r!="string")continue;const f=r.trim();yV.test(f)&&(a[u]=f)}return a}const ue=(e,a,s,r)=>{const u={_id:e,baseUrl:a?.baseUrl||(a?.client??O).getConfig().baseUrl};return s&&(u._infinite=s),a?.body&&(u.body=a.body),a?.headers&&(u.headers=a.headers),a?.path&&(u.path=a.path),a?.query&&(u.query=a.query),[u]},ts=e=>ue("getApiV1Projects",e),Zs=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ts(e)}),xV=e=>ue("getApiV1ProjectsByName",e),kV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:xV(e)}),wV=e=>ue("getApiV1ProjectsByNameMeasurementPlan",e),XF=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:wV(e)}),SV=e=>ue("getApiV1ProjectsByNameMeasurementReport",e),JF=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await cB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:SV(e)}),jV=e=>ue("getApiV1ProjectsByNameMeasurementSetup",e),AV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await uB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:jV(e)}),$l=(e,a)=>{const s={...e[0]};return a.body&&(s.body={...e[0].body,...a.body}),a.headers&&(s.headers={...e[0].headers,...a.headers}),a.path&&(s.path={...e[0].path,...a.path}),a.query&&(s.query={...e[0].query,...a.query}),s},WF=e=>({mutationFn:async s=>{const{data:r}=await dB({...e,...s,throwOnError:!0});return r}}),CV=e=>ue("getApiV1ProjectsByNameMeasurementOverview",e),eZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await jS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:CV(e)}),NV=e=>ue("getApiV1ProjectsByNameMeasurementOverview",e,!0),tZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await jS({...e,...f,signal:r,throwOnError:!0});return g},queryKey:NV(e)}),_V=e=>ue("getApiV1ProjectsByNameVisibilityReport",e),nZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await mB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:_V(e)}),zV=e=>ue("getApiV1ProjectsByNameMeasurementPropertyEvidence",e,!0),aZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await pB({...e,...f,signal:r,throwOnError:!0});return g},queryKey:zV(e)}),EV=e=>ue("getApiV1ProjectsByNameMeasurementQuestionResult",e),iZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:EV(e)}),TV=e=>ue("getApiV1ProjectsByNameMeasurementPropertyCompetitors",e),sZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await fB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:TV(e)}),RV=e=>ue("getApiV1ProjectsByNameMeasurementQueryTemplates",e),oZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:RV(e)}),rZ=e=>({mutationFn:async s=>{const{data:r}=await yB({...e,...s,throwOnError:!0});return r}}),DV=e=>ue("getApiV1ProjectsByNameResearchRuns",e,!0),lZ=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await bB({...e,...f,signal:r,throwOnError:!0});return g},queryKey:DV(e)}),cZ=e=>({mutationFn:async s=>{const{data:r}=await vB({...e,...s,throwOnError:!0});return r}}),OV=e=>ue("getApiV1ProjectsByNameQueryTracking",e),uZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await xB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:OV(e)}),dZ=e=>({mutationFn:async s=>{const{data:r}=await kB({...e,...s,throwOnError:!0});return r}}),mZ=e=>({mutationFn:async s=>{const{data:r}=await wB({...e,...s,throwOnError:!0});return r}}),qV=e=>ue("getApiV1ProjectsByNameResearchRunsByRunId",e),pZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:qV(e)}),$S=e=>ue("getApiV1ProjectsByNameQueries",e),hZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await AS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:$S(e)}),BV=e=>ue("getApiV1ProjectsByNameAnalyticsCompetitors",e),fZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await OB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:BV(e)}),PV=e=>ue("getApiV1ProjectsByNameRuns",e),MV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await CS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:PV(e)}),gf=e=>ue("getApiV1Runs",e),yf=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await BB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:gf(e)}),IV=e=>ue("getApiV1RunsById",e),bf=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await NS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:IV(e)}),VV=e=>ue("getApiV1ProjectsByNameHistory",e),gZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await IB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:VV(e)}),LV=e=>ue("getApiV1History",e),yZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:LV(e)}),UV=e=>ue("getApiV1ProjectsByNameSnapshotsDiff",e),bZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await GB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:UV(e)}),GV=e=>ue("getApiV1Settings",e),$V=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await _S({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:GV(e)}),KV=e=>ue("getApiV1ProjectsByNameSchedule",e),HV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:KV(e)}),QV=e=>ue("getApiV1ProjectsByNameSchedules",e),vZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await JB({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:QV(e)}),KS=e=>ue("getApiV1Telemetry",e),FV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await aP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:KS(e)}),ZV=e=>({mutationFn:async s=>{const{data:r}=await iP({...e,...s,throwOnError:!0});return r}}),YV=e=>ue("getApiV1CdpStatus",e),XV=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await zS({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:YV(e)}),JV=e=>ue("getApiV1ProjectsByNameGoogleAdsStatus",e),xZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await oP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:JV(e)}),kZ=e=>({mutationFn:async s=>{const{data:r}=await rP({...e,...s,throwOnError:!0});return r}}),WV=e=>ue("getApiV1ProjectsByNameGoogleAdsCustomers",e),wZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:WV(e)}),SZ=e=>({mutationFn:async s=>{const{data:r}=await cP({...e,...s,throwOnError:!0});return r}}),jZ=e=>({mutationFn:async s=>{const{data:r}=await uP({...e,...s,throwOnError:!0});return r}}),eL=e=>ue("getApiV1ProjectsByNameGoogleAdsPerformance",e),AZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await dP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:eL(e)}),tL=e=>ue("getApiV1ProjectsByNameGoogleAdsSnapshots",e),CZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await mP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:tL(e)}),NZ=e=>({mutationFn:async s=>{const{data:r}=await pP({...e,...s,throwOnError:!0});return r}}),nL=e=>ue("getApiV1ProjectsByNameGtmStatus",e),_Z=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:nL(e)}),zZ=e=>({mutationFn:async s=>{const{data:r}=await fP({...e,...s,throwOnError:!0});return r}}),aL=e=>ue("getApiV1ProjectsByNameGtmAccounts",e),EZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:aL(e)}),iL=e=>ue("getApiV1ProjectsByNameGtmAccountsByAccountIdContainers",e),TZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await yP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:iL(e)}),sL=e=>ue("getApiV1ProjectsByNameGtmAccountsByAccountIdContainersByContainerIdWorkspaces",e),RZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await bP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:sL(e)}),DZ=e=>({mutationFn:async s=>{const{data:r}=await vP({...e,...s,throwOnError:!0});return r}}),OZ=e=>({mutationFn:async s=>{const{data:r}=await xP({...e,...s,throwOnError:!0});return r}}),oL=e=>ue("getApiV1ProjectsByNameGtmSnapshots",e),qZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await kP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:oL(e)}),BZ=e=>({mutationFn:async s=>{const{data:r}=await wP({...e,...s,throwOnError:!0});return r}}),rL=e=>ue("getApiV1ProjectsByNameConversionTrackingOptions",e),PZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await SP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:rL(e)}),lL=e=>ue("getApiV1ProjectsByNameConversionTrackingContracts",e),MZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await jP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:lL(e)}),IZ=e=>({mutationFn:async s=>{const{data:r}=await AP({...e,...s,throwOnError:!0});return r}}),cL=e=>ue("getApiV1ProjectsByNameConversionTrackingContractsByContractIdIntegrity",e),VZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await CP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:cL(e)}),uL=e=>ue("getApiV1ProjectsByNameGoogleConnections",e),LZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await NP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:uL(e)}),dL=e=>ue("getApiV1ProjectsByNameGoogleProperties",e),UZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await EP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:dL(e)}),mL=e=>ue("getApiV1ProjectsByNameGoogleGscPerformance",e),GZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await OP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:mL(e)}),pL=e=>ue("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),$Z=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await qP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:pL(e)}),hL=e=>ue("getApiV1ProjectsByNameGoogleGscInspections",e),KZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await PP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:hL(e)}),fL=e=>ue("getApiV1ProjectsByNameGoogleGscDeindexed",e),HZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await MP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:fL(e)}),gL=e=>ue("getApiV1ProjectsByNameGoogleGscCoverage",e),QZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await IP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:gL(e)}),yL=e=>ue("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),FZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:yL(e)}),ZZ=e=>ue("getApiV1ProjectsByNameGoogleGscSitemaps",e),bL=e=>ue("getApiV1ProjectsByNameGbpLocations",e),YZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await $P({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:bL(e)}),XZ=e=>({mutationFn:async s=>{const{data:r}=await KP({...e,...s,throwOnError:!0});return r}}),JZ=e=>({mutationFn:async s=>{const{data:r}=await HP({...e,...s,throwOnError:!0});return r}}),vL=e=>ue("getApiV1ProjectsByNameGbpKeywords",e),WZ=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await QP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:vL(e)}),xL=e=>ue("getApiV1ProjectsByNameGbpPlaceActions",e),eY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await FP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:xL(e)}),kL=e=>ue("getApiV1ProjectsByNameGbpLodging",e),tY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ZP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:kL(e)}),wL=e=>ue("getApiV1ProjectsByNameGbpPlaces",e),nY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:wL(e)}),SL=e=>ue("getApiV1ProjectsByNameGbpSummary",e),aY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await XP({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:SL(e)}),jL=e=>ue("getApiV1ProjectsByNameBingStatus",e),iY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await eM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:jL(e)}),AL=e=>ue("getApiV1ProjectsByNameBingSites",e),sY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await tM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:AL(e)}),CL=e=>ue("getApiV1ProjectsByNameBingCoverage",e),oY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await aM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:CL(e)}),NL=e=>ue("getApiV1ProjectsByNameBingInspections",e),rY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:NL(e)}),_L=e=>ue("getApiV1ProjectsByNameBingPerformance",e),lY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await lM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:_L(e)}),zL=e=>ue("getApiV1ProjectsByNameGaStatus",e),cY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await dM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:zL(e)}),EL=e=>ue("getApiV1ProjectsByNameGaTraffic",e),uY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await pM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:EL(e)}),TL=e=>ue("getApiV1ProjectsByNameGaAiReferralDaily",e),dY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await hM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:TL(e)}),RL=e=>ue("getApiV1ProjectsByNameGaSocialReferralHistory",e),mY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await fM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:RL(e)}),DL=e=>ue("getApiV1ProjectsByNameGaSessionHistory",e),pY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await gM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:DL(e)}),OL=e=>ue("getApiV1ProjectsByNameReport",e),hY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await bM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:OL(e)}),qL=e=>ue("getApiV1ProjectsByNameHealthHistory",e),fY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await vM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:qL(e)}),BL=e=>ue("getApiV1ProjectsByNameCitationsVisibility",e),gY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await xM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:BL(e)}),PL=e=>ue("getApiV1ProjectsByNameTrafficSources",e),yY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await VM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:PL(e)}),ML=e=>ue("getApiV1ProjectsByNameTrafficStatus",e),bY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await LM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ML(e)}),IL=e=>ue("getApiV1ProjectsByNameTrafficSourcesById",e),vY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await UM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:IL(e)}),VL=e=>ue("getApiV1ProjectsByNameTrafficEvents",e),xY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await GM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:VL(e)}),LL=e=>ue("getApiV1ProjectsByNameDiscoverSessions",e),kY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await KM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:LL(e)}),UL=e=>ue("getApiV1ProjectsByNameDiscoverSessionsById",e),wY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await HM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:UL(e)}),GL=e=>ue("getApiV1ProjectsByNameTechnicalAeo",e),SY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await QM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:GL(e)}),$L=e=>ue("getApiV1ProjectsByNameTechnicalAeoPages",e),jY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await FM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:$L(e)}),KL=e=>ue("getApiV1ProjectsByNameTechnicalAeoTrend",e),AY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ZM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:KL(e)}),HL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawl",e),CY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await YM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:HL(e)}),QL=e=>ue("getApiV1ProjectsByNameTechnicalAeoGraph",e),NY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await XM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:QL(e)}),FL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPagesAudit",e),_Y=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await JM({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:FL(e)}),ZL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e),zY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await ES({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:ZL(e)}),YL=e=>ue("getApiV1ProjectsByNameTechnicalAeoCrawlPages",e,!0),EY=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await ES({...e,...f,signal:r,throwOnError:!0});return g},queryKey:YL(e)}),XL=e=>ue("getApiV1ProjectsByNameTechnicalAeoStructure",e,!0),TY=e=>Dl({queryFn:async({pageParam:a,queryKey:s,signal:r})=>{const f=$l(s,typeof a=="object"?a:{query:{cursor:a}}),{data:g}=await WM({...e,...f,signal:r,throwOnError:!0});return g},queryKey:XL(e)}),JL=e=>ue("getApiV1ProjectsByNameTechnicalAeoInternalLinksNeighbors",e),RY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await eI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:JL(e)}),WL=e=>ue("getApiV1ProjectsByNameTechnicalAeoDeadLinks",e),DY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await tI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:WL(e)}),eU=e=>ue("getApiV1ProjectsByNameTechnicalAeoRuns",e),OY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await nI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:eU(e)}),tU=e=>ue("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdProgress",e),qY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await iI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:tU(e)}),nU=e=>ue("getApiV1ProjectsByNameTechnicalAeoRunsByRunIdPageHealthPreview",e),BY=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await sI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:nU(e)}),aU=e=>ue("getApiV1ProjectsByNameAgentProviders",e),iU=e=>pe({queryFn:async({queryKey:a,signal:s})=>{const{data:r}=await oI({...e,...a[0],signal:s,throwOnError:!0});return r},queryKey:aU(e)});function Yv(e){return e.state==="ok"?"positive":e.state==="checking"||e.state==="disabled"?"neutral":"negative"}function HS(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function PY(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}const MY={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function sU(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function ar(e){const a=[e.detail,e.hint].filter(Boolean);return a.length>0?a.join(`
|
|
57
|
+
`):void 0}function oU(e,a,s){const r=e.filter(g=>g.id!=="mcp").map(g=>{if(g.id==="api")return{...g,tone:Yv(a.apiStatus),detail:a.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:a.apiStatus.detail};if(g.id==="worker")return{...g,tone:Yv(a.workerStatus),detail:a.workerStatus.state==="ok"?"Healthy":a.workerStatus.state==="disabled"?"Disabled":"Needs attention",meta:a.workerStatus.detail};const b=s.providerStatuses.filter(A=>A.state==="ready").length,v=s.providerStatuses.length,k=b>0,S=s.providerStatuses.filter(A=>A.state==="ready").map(A=>sU(A)).join(" · ");return{...g,label:"Providers",tone:k?"positive":"caution",detail:`${b} of ${v} configured`,meta:S||"None configured"}}),u=a.apiStatus.mcp,f={id:"mcp",label:"MCP",tone:"neutral",detail:"Unknown",meta:"MCP status is not available from this server."};return a.apiStatus.state==="checking"?(f.detail="Checking",f.meta="Checking MCP availability."):a.apiStatus.state==="ok"&&u&&(u.status==="available"?(f.tone="positive",f.detail="Available",f.meta="MCP is available for agent connections. This checks the server transport, not an individual client connection."):u.status==="unavailable"?(f.tone="negative",f.detail="Unavailable",f.meta="The MCP transport is not fully available. Contact your Canonry team."):(f.detail="Not enabled",f.meta="This server does not provide an MCP endpoint.")),r.splice(Math.max(0,r.findIndex(g=>g.id==="api")+1),0,f),r}function rU(e,a){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!a.providerStatuses.some(s=>s.state==="ready"))return"Launch is blocked until at least one provider is configured."}function lU(e,a,s){const r=rU(a,s),u=structuredClone(e);return u.healthChecks=u.healthChecks.map(f=>{if(f.id==="api")return{...f,detail:a.apiStatus.detail,state:a.apiStatus.state==="ok"?"ready":"attention"};if(f.id==="worker")return{...f,detail:a.workerStatus.detail,state:a.workerStatus.state==="ok"?"ready":"attention"};const g=s.providerStatuses.some(b=>b.state==="ready");return{...f,detail:g?"At least one provider configured.":"No providers configured.",state:g?"ready":"attention"}}),u.launchState.enabled=r===void 0,u.launchState.blockedReason=r,u.launchState.summary=r??"Queue a visibility sweep first, then follow with a site audit to explain movement.",u}const QS="canonry.run-tracker",Uh=new Set;let Xv=!1,cU=0,Cd={runs:{},batches:{}};function uU(){const e=gi();for(const a of Uh)a(e)}function dU(e){if(!e)return{runs:{},batches:{}};try{const a=JSON.parse(e);return{runs:a.runs??{},batches:a.batches??{}}}catch{return{runs:{},batches:{}}}}function mU(){typeof window>"u"||window.sessionStorage.setItem(QS,JSON.stringify(Cd))}function FS(){Xv||(Xv=!0,!(typeof window>"u")&&(Cd=dU(window.sessionStorage.getItem(QS))))}function Nd(e){Cd=e,mU(),uU()}function gi(){return FS(),Cd}function ZS(e){return FS(),Uh.add(e),()=>{Uh.delete(e)}}function vf(e){const a=gi();Nd({...a,runs:{...a.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function ch(e){const a=gi();if(!a.runs[e])return;const{[e]:s,...r}=a.runs;Nd({...a,runs:r})}function pU(e){const a=gi(),s=`batch_${Date.now()}_${++cU}`;return Nd({...a,batches:{...a.batches,[s]:{batchId:s,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),s}function hU(e){const a=gi();if(!a.batches[e])return;const{[e]:s,...r}=a.batches;Nd({...a,batches:r})}function fU(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const gU=10*6e4;function yU(e,a,s,r){return e.filter(u=>!a.has(u.runId)&&s-(u.trackedAt??0)>=r)}function bU(e,a){let s=0,r=0,u=0,f=0,g=0;for(const b of e){const v=a[b]?.status;v==="completed"?s+=1:v==="partial"?r+=1:v==="failed"?u+=1:v==="cancelled"?f+=1:g+=1}return{completed:s,partial:r,failed:u,cancelled:f,pending:g,finished:g===0}}const Jv=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Wv=Vx,YS=(e,a)=>s=>{var r;if(a?.variants==null)return Wv(e,s?.class,s?.className);const{variants:u,defaultVariants:f}=a,g=Object.keys(u).map(k=>{const S=s?.[k],A=f?.[k];if(S===null)return null;const N=Jv(S)||Jv(A);return u[k][N]}),b=s&&Object.entries(s).reduce((k,S)=>{let[A,N]=S;return N===void 0||(k[A]=N),k},{}),v=a==null||(r=a.compoundVariants)===null||r===void 0?void 0:r.reduce((k,S)=>{let{class:A,className:N,...E}=S;return Object.entries(E).every(Z=>{let[_,G]=Z;return Array.isArray(G)?G.includes({...f,...b}[_]):{...f,...b}[_]===G})?[...k,A,N]:k},[]);return Wv(e,g,v,s?.class,s?.className)},vU=(e,a)=>{const s=new Array(e.length+a.length);for(let r=0;r<e.length;r++)s[r]=e[r];for(let r=0;r<a.length;r++)s[e.length+r]=a[r];return s},xU=(e,a)=>({classGroupId:e,validator:a}),XS=(e=new Map,a=null,s)=>({nextPart:e,validators:a,classGroupId:s}),Hu="-",ex=[],kU="arbitrary..",wU=e=>{const a=jU(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:g=>{if(g.startsWith("[")&&g.endsWith("]"))return SU(g);const b=g.split(Hu),v=b[0]===""&&b.length>1?1:0;return JS(b,v,a)},getConflictingClassGroupIds:(g,b)=>{if(b){const v=r[g],k=s[g];return v?k?vU(k,v):v:k||ex}return s[g]||ex}}},JS=(e,a,s)=>{if(e.length-a===0)return s.classGroupId;const u=e[a],f=s.nextPart.get(u);if(f){const k=JS(e,a+1,f);if(k)return k}const g=s.validators;if(g===null)return;const b=a===0?e.join(Hu):e.slice(a).join(Hu),v=g.length;for(let k=0;k<v;k++){const S=g[k];if(S.validator(b))return S.classGroupId}},SU=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=e.slice(1,-1),s=a.indexOf(":"),r=a.slice(0,s);return r?kU+r:void 0})(),jU=e=>{const{theme:a,classGroups:s}=e;return AU(s,a)},AU=(e,a)=>{const s=XS();for(const r in e){const u=e[r];xf(u,s,r,a)}return s},xf=(e,a,s,r)=>{const u=e.length;for(let f=0;f<u;f++){const g=e[f];CU(g,a,s,r)}},CU=(e,a,s,r)=>{if(typeof e=="string"){NU(e,a,s);return}if(typeof e=="function"){_U(e,a,s,r);return}zU(e,a,s,r)},NU=(e,a,s)=>{const r=e===""?a:WS(a,e);r.classGroupId=s},_U=(e,a,s,r)=>{if(EU(e)){xf(e(r),a,s,r);return}a.validators===null&&(a.validators=[]),a.validators.push(xU(s,e))},zU=(e,a,s,r)=>{const u=Object.entries(e),f=u.length;for(let g=0;g<f;g++){const[b,v]=u[g];xf(v,WS(a,b),s,r)}},WS=(e,a)=>{let s=e;const r=a.split(Hu),u=r.length;for(let f=0;f<u;f++){const g=r[f];let b=s.nextPart.get(g);b||(b=XS(),s.nextPart.set(g,b)),s=b}return s},EU=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,TU=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,s=Object.create(null),r=Object.create(null);const u=(f,g)=>{s[f]=g,a++,a>e&&(a=0,r=s,s=Object.create(null))};return{get(f){let g=s[f];if(g!==void 0)return g;if((g=r[f])!==void 0)return u(f,g),g},set(f,g){f in s?s[f]=g:u(f,g)}}},Gh="!",tx=":",RU=[],nx=(e,a,s,r,u)=>({modifiers:e,hasImportantModifier:a,baseClassName:s,maybePostfixModifierPosition:r,isExternal:u}),DU=e=>{const{prefix:a,experimentalParseClassName:s}=e;let r=u=>{const f=[];let g=0,b=0,v=0,k;const S=u.length;for(let _=0;_<S;_++){const G=u[_];if(g===0&&b===0){if(G===tx){f.push(u.slice(v,_)),v=_+1;continue}if(G==="/"){k=_;continue}}G==="["?g++:G==="]"?g--:G==="("?b++:G===")"&&b--}const A=f.length===0?u:u.slice(v);let N=A,E=!1;A.endsWith(Gh)?(N=A.slice(0,-1),E=!0):A.startsWith(Gh)&&(N=A.slice(1),E=!0);const Z=k&&k>v?k-v:void 0;return nx(f,E,N,Z)};if(a){const u=a+tx,f=r;r=g=>g.startsWith(u)?f(g.slice(u.length)):nx(RU,!1,g,void 0,!0)}if(s){const u=r;r=f=>s({className:f,parseClassName:u})}return r},OU=e=>{const a=new Map;return e.orderSensitiveModifiers.forEach((s,r)=>{a.set(s,1e6+r)}),s=>{const r=[];let u=[];for(let f=0;f<s.length;f++){const g=s[f],b=g[0]==="[",v=a.has(g);b||v?(u.length>0&&(u.sort(),r.push(...u),u=[]),r.push(g)):u.push(g)}return u.length>0&&(u.sort(),r.push(...u)),r}},qU=e=>({cache:TU(e.cacheSize),parseClassName:DU(e),sortModifiers:OU(e),...wU(e)}),BU=/\s+/,PU=(e,a)=>{const{parseClassName:s,getClassGroupId:r,getConflictingClassGroupIds:u,sortModifiers:f}=a,g=[],b=e.trim().split(BU);let v="";for(let k=b.length-1;k>=0;k-=1){const S=b[k],{isExternal:A,modifiers:N,hasImportantModifier:E,baseClassName:Z,maybePostfixModifierPosition:_}=s(S);if(A){v=S+(v.length>0?" "+v:v);continue}let G=!!_,K=r(G?Z.substring(0,_):Z);if(!K){if(!G){v=S+(v.length>0?" "+v:v);continue}if(K=r(Z),!K){v=S+(v.length>0?" "+v:v);continue}G=!1}const te=N.length===0?"":N.length===1?N[0]:f(N).join(":"),Q=E?te+Gh:te,re=Q+K;if(g.indexOf(re)>-1)continue;g.push(re);const W=u(K,G);for(let oe=0;oe<W.length;++oe){const H=W[oe];g.push(Q+H)}v=S+(v.length>0?" "+v:v)}return v},MU=(...e)=>{let a=0,s,r,u="";for(;a<e.length;)(s=e[a++])&&(r=e3(s))&&(u&&(u+=" "),u+=r);return u},e3=e=>{if(typeof e=="string")return e;let a,s="";for(let r=0;r<e.length;r++)e[r]&&(a=e3(e[r]))&&(s&&(s+=" "),s+=a);return s},IU=(e,...a)=>{let s,r,u,f;const g=v=>{const k=a.reduce((S,A)=>A(S),e());return s=qU(k),r=s.cache.get,u=s.cache.set,f=b,b(v)},b=v=>{const k=r(v);if(k)return k;const S=PU(v,s);return u(v,S),S};return f=g,(...v)=>f(MU(...v))},VU=[],Qt=e=>{const a=s=>s[e]||VU;return a.isThemeGetter=!0,a},t3=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,n3=/^\((?:(\w[\w-]*):)?(.+)\)$/i,LU=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,UU=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,GU=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,$U=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,KU=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,HU=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Fi=e=>LU.test(e),Ze=e=>!!e&&!Number.isNaN(Number(e)),Zi=e=>!!e&&Number.isInteger(Number(e)),uh=e=>e.endsWith("%")&&Ze(e.slice(0,-1)),mi=e=>UU.test(e),a3=()=>!0,QU=e=>GU.test(e)&&!$U.test(e),kf=()=>!1,FU=e=>KU.test(e),ZU=e=>HU.test(e),YU=e=>!ke(e)&&!we(e),XU=e=>cs(e,o3,kf),ke=e=>t3.test(e),Bs=e=>cs(e,r3,QU),ax=e=>cs(e,sG,Ze),JU=e=>cs(e,c3,a3),WU=e=>cs(e,l3,kf),ix=e=>cs(e,i3,kf),eG=e=>cs(e,s3,ZU),ju=e=>cs(e,u3,FU),we=e=>n3.test(e),gl=e=>Ys(e,r3),tG=e=>Ys(e,l3),sx=e=>Ys(e,i3),nG=e=>Ys(e,o3),aG=e=>Ys(e,s3),Au=e=>Ys(e,u3,!0),iG=e=>Ys(e,c3,!0),cs=(e,a,s)=>{const r=t3.exec(e);return r?r[1]?a(r[1]):s(r[2]):!1},Ys=(e,a,s=!1)=>{const r=n3.exec(e);return r?r[1]?a(r[1]):s:!1},i3=e=>e==="position"||e==="percentage",s3=e=>e==="image"||e==="url",o3=e=>e==="length"||e==="size"||e==="bg-size",r3=e=>e==="length",sG=e=>e==="number",l3=e=>e==="family-name",c3=e=>e==="number"||e==="weight",u3=e=>e==="shadow",oG=()=>{const e=Qt("color"),a=Qt("font"),s=Qt("text"),r=Qt("font-weight"),u=Qt("tracking"),f=Qt("leading"),g=Qt("breakpoint"),b=Qt("container"),v=Qt("spacing"),k=Qt("radius"),S=Qt("shadow"),A=Qt("inset-shadow"),N=Qt("text-shadow"),E=Qt("drop-shadow"),Z=Qt("blur"),_=Qt("perspective"),G=Qt("aspect"),K=Qt("ease"),te=Qt("animate"),Q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],re=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],W=()=>[...re(),we,ke],oe=()=>["auto","hidden","clip","visible","scroll"],H=()=>["auto","contain","none"],$=()=>[we,ke,v],Te=()=>[Fi,"full","auto",...$()],Ke=()=>[Zi,"none","subgrid",we,ke],Fe=()=>["auto",{span:["full",Zi,we,ke]},Zi,we,ke],Re=()=>[Zi,"auto",we,ke],ve=()=>["auto","min","max","fr",we,ke],Ue=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],be=()=>["start","end","center","stretch","center-safe","end-safe"],P=()=>["auto",...$()],ae=()=>[Fi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...$()],he=()=>[Fi,"screen","full","dvw","lvw","svw","min","max","fit",...$()],je=()=>[Fi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...$()],X=()=>[e,we,ke],Ie=()=>[...re(),sx,ix,{position:[we,ke]}],Ne=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ae=()=>["auto","cover","contain",nG,XU,{size:[we,ke]}],ne=()=>[uh,gl,Bs],V=()=>["","none","full",k,we,ke],q=()=>["",Ze,gl,Bs],le=()=>["solid","dashed","dotted","double"],De=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ye=()=>[Ze,uh,sx,ix],Je=()=>["","none",Z,we,ke],Ge=()=>["none",Ze,we,ke],Be=()=>["none",Ze,we,ke],de=()=>[Ze,we,ke],Me=()=>[Fi,"full",...$()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[mi],breakpoint:[mi],color:[a3],container:[mi],"drop-shadow":[mi],ease:["in","out","in-out"],font:[YU],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[mi],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[mi],shadow:[mi],spacing:["px",Ze],text:[mi],"text-shadow":[mi],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Fi,ke,we,G]}],container:["container"],columns:[{columns:[Ze,ke,we,b]}],"break-after":[{"break-after":Q()}],"break-before":[{"break-before":Q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:W()}],overflow:[{overflow:oe()}],"overflow-x":[{"overflow-x":oe()}],"overflow-y":[{"overflow-y":oe()}],overscroll:[{overscroll:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Te()}],"inset-x":[{"inset-x":Te()}],"inset-y":[{"inset-y":Te()}],start:[{"inset-s":Te(),start:Te()}],end:[{"inset-e":Te(),end:Te()}],"inset-bs":[{"inset-bs":Te()}],"inset-be":[{"inset-be":Te()}],top:[{top:Te()}],right:[{right:Te()}],bottom:[{bottom:Te()}],left:[{left:Te()}],visibility:["visible","invisible","collapse"],z:[{z:[Zi,"auto",we,ke]}],basis:[{basis:[Fi,"full","auto",b,...$()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ze,Fi,"auto","initial","none",ke]}],grow:[{grow:["",Ze,we,ke]}],shrink:[{shrink:["",Ze,we,ke]}],order:[{order:[Zi,"first","last","none",we,ke]}],"grid-cols":[{"grid-cols":Ke()}],"col-start-end":[{col:Fe()}],"col-start":[{"col-start":Re()}],"col-end":[{"col-end":Re()}],"grid-rows":[{"grid-rows":Ke()}],"row-start-end":[{row:Fe()}],"row-start":[{"row-start":Re()}],"row-end":[{"row-end":Re()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ve()}],"auto-rows":[{"auto-rows":ve()}],gap:[{gap:$()}],"gap-x":[{"gap-x":$()}],"gap-y":[{"gap-y":$()}],"justify-content":[{justify:[...Ue(),"normal"]}],"justify-items":[{"justify-items":[...be(),"normal"]}],"justify-self":[{"justify-self":["auto",...be()]}],"align-content":[{content:["normal",...Ue()]}],"align-items":[{items:[...be(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...be(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ue()}],"place-items":[{"place-items":[...be(),"baseline"]}],"place-self":[{"place-self":["auto",...be()]}],p:[{p:$()}],px:[{px:$()}],py:[{py:$()}],ps:[{ps:$()}],pe:[{pe:$()}],pbs:[{pbs:$()}],pbe:[{pbe:$()}],pt:[{pt:$()}],pr:[{pr:$()}],pb:[{pb:$()}],pl:[{pl:$()}],m:[{m:P()}],mx:[{mx:P()}],my:[{my:P()}],ms:[{ms:P()}],me:[{me:P()}],mbs:[{mbs:P()}],mbe:[{mbe:P()}],mt:[{mt:P()}],mr:[{mr:P()}],mb:[{mb:P()}],ml:[{ml:P()}],"space-x":[{"space-x":$()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":$()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...he()]}],"min-inline-size":[{"min-inline":["auto",...he()]}],"max-inline-size":[{"max-inline":["none",...he()]}],"block-size":[{block:["auto",...je()]}],"min-block-size":[{"min-block":["auto",...je()]}],"max-block-size":[{"max-block":["none",...je()]}],w:[{w:[b,"screen",...ae()]}],"min-w":[{"min-w":[b,"screen","none",...ae()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",s,gl,Bs]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,iG,JU]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",uh,ke]}],"font-family":[{font:[tG,WU,a]}],"font-features":[{"font-features":[ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,we,ke]}],"line-clamp":[{"line-clamp":[Ze,"none",we,ax]}],leading:[{leading:[f,...$()]}],"list-image":[{"list-image":["none",we,ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",we,ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:X()}],"text-color":[{text:X()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...le(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ze,"from-font","auto",we,Bs]}],"text-decoration-color":[{decoration:X()}],"underline-offset":[{"underline-offset":[Ze,"auto",we,ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:$()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",we,ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",we,ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ie()}],"bg-repeat":[{bg:Ne()}],"bg-size":[{bg:Ae()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Zi,we,ke],radial:["",we,ke],conic:[Zi,we,ke]},aG,eG]}],"bg-color":[{bg:X()}],"gradient-from-pos":[{from:ne()}],"gradient-via-pos":[{via:ne()}],"gradient-to-pos":[{to:ne()}],"gradient-from":[{from:X()}],"gradient-via":[{via:X()}],"gradient-to":[{to:X()}],rounded:[{rounded:V()}],"rounded-s":[{"rounded-s":V()}],"rounded-e":[{"rounded-e":V()}],"rounded-t":[{"rounded-t":V()}],"rounded-r":[{"rounded-r":V()}],"rounded-b":[{"rounded-b":V()}],"rounded-l":[{"rounded-l":V()}],"rounded-ss":[{"rounded-ss":V()}],"rounded-se":[{"rounded-se":V()}],"rounded-ee":[{"rounded-ee":V()}],"rounded-es":[{"rounded-es":V()}],"rounded-tl":[{"rounded-tl":V()}],"rounded-tr":[{"rounded-tr":V()}],"rounded-br":[{"rounded-br":V()}],"rounded-bl":[{"rounded-bl":V()}],"border-w":[{border:q()}],"border-w-x":[{"border-x":q()}],"border-w-y":[{"border-y":q()}],"border-w-s":[{"border-s":q()}],"border-w-e":[{"border-e":q()}],"border-w-bs":[{"border-bs":q()}],"border-w-be":[{"border-be":q()}],"border-w-t":[{"border-t":q()}],"border-w-r":[{"border-r":q()}],"border-w-b":[{"border-b":q()}],"border-w-l":[{"border-l":q()}],"divide-x":[{"divide-x":q()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":q()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...le(),"hidden","none"]}],"divide-style":[{divide:[...le(),"hidden","none"]}],"border-color":[{border:X()}],"border-color-x":[{"border-x":X()}],"border-color-y":[{"border-y":X()}],"border-color-s":[{"border-s":X()}],"border-color-e":[{"border-e":X()}],"border-color-bs":[{"border-bs":X()}],"border-color-be":[{"border-be":X()}],"border-color-t":[{"border-t":X()}],"border-color-r":[{"border-r":X()}],"border-color-b":[{"border-b":X()}],"border-color-l":[{"border-l":X()}],"divide-color":[{divide:X()}],"outline-style":[{outline:[...le(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ze,we,ke]}],"outline-w":[{outline:["",Ze,gl,Bs]}],"outline-color":[{outline:X()}],shadow:[{shadow:["","none",S,Au,ju]}],"shadow-color":[{shadow:X()}],"inset-shadow":[{"inset-shadow":["none",A,Au,ju]}],"inset-shadow-color":[{"inset-shadow":X()}],"ring-w":[{ring:q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:X()}],"ring-offset-w":[{"ring-offset":[Ze,Bs]}],"ring-offset-color":[{"ring-offset":X()}],"inset-ring-w":[{"inset-ring":q()}],"inset-ring-color":[{"inset-ring":X()}],"text-shadow":[{"text-shadow":["none",N,Au,ju]}],"text-shadow-color":[{"text-shadow":X()}],opacity:[{opacity:[Ze,we,ke]}],"mix-blend":[{"mix-blend":[...De(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":De()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ze]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":X()}],"mask-image-linear-to-color":[{"mask-linear-to":X()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":X()}],"mask-image-t-to-color":[{"mask-t-to":X()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":X()}],"mask-image-r-to-color":[{"mask-r-to":X()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":X()}],"mask-image-b-to-color":[{"mask-b-to":X()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":X()}],"mask-image-l-to-color":[{"mask-l-to":X()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":X()}],"mask-image-x-to-color":[{"mask-x-to":X()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":X()}],"mask-image-y-to-color":[{"mask-y-to":X()}],"mask-image-radial":[{"mask-radial":[we,ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":X()}],"mask-image-radial-to-color":[{"mask-radial-to":X()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":re()}],"mask-image-conic-pos":[{"mask-conic":[Ze]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":X()}],"mask-image-conic-to-color":[{"mask-conic-to":X()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ie()}],"mask-repeat":[{mask:Ne()}],"mask-size":[{mask:Ae()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",we,ke]}],filter:[{filter:["","none",we,ke]}],blur:[{blur:Je()}],brightness:[{brightness:[Ze,we,ke]}],contrast:[{contrast:[Ze,we,ke]}],"drop-shadow":[{"drop-shadow":["","none",E,Au,ju]}],"drop-shadow-color":[{"drop-shadow":X()}],grayscale:[{grayscale:["",Ze,we,ke]}],"hue-rotate":[{"hue-rotate":[Ze,we,ke]}],invert:[{invert:["",Ze,we,ke]}],saturate:[{saturate:[Ze,we,ke]}],sepia:[{sepia:["",Ze,we,ke]}],"backdrop-filter":[{"backdrop-filter":["","none",we,ke]}],"backdrop-blur":[{"backdrop-blur":Je()}],"backdrop-brightness":[{"backdrop-brightness":[Ze,we,ke]}],"backdrop-contrast":[{"backdrop-contrast":[Ze,we,ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ze,we,ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ze,we,ke]}],"backdrop-invert":[{"backdrop-invert":["",Ze,we,ke]}],"backdrop-opacity":[{"backdrop-opacity":[Ze,we,ke]}],"backdrop-saturate":[{"backdrop-saturate":[Ze,we,ke]}],"backdrop-sepia":[{"backdrop-sepia":["",Ze,we,ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":$()}],"border-spacing-x":[{"border-spacing-x":$()}],"border-spacing-y":[{"border-spacing-y":$()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",we,ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ze,"initial",we,ke]}],ease:[{ease:["linear","initial",K,we,ke]}],delay:[{delay:[Ze,we,ke]}],animate:[{animate:["none",te,we,ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[_,we,ke]}],"perspective-origin":[{"perspective-origin":W()}],rotate:[{rotate:Ge()}],"rotate-x":[{"rotate-x":Ge()}],"rotate-y":[{"rotate-y":Ge()}],"rotate-z":[{"rotate-z":Ge()}],scale:[{scale:Be()}],"scale-x":[{"scale-x":Be()}],"scale-y":[{"scale-y":Be()}],"scale-z":[{"scale-z":Be()}],"scale-3d":["scale-3d"],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[we,ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:W()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Me()}],"translate-x":[{"translate-x":Me()}],"translate-y":[{"translate-y":Me()}],"translate-z":[{"translate-z":Me()}],"translate-none":["translate-none"],accent:[{accent:X()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:X()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",we,ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":$()}],"scroll-mx":[{"scroll-mx":$()}],"scroll-my":[{"scroll-my":$()}],"scroll-ms":[{"scroll-ms":$()}],"scroll-me":[{"scroll-me":$()}],"scroll-mbs":[{"scroll-mbs":$()}],"scroll-mbe":[{"scroll-mbe":$()}],"scroll-mt":[{"scroll-mt":$()}],"scroll-mr":[{"scroll-mr":$()}],"scroll-mb":[{"scroll-mb":$()}],"scroll-ml":[{"scroll-ml":$()}],"scroll-p":[{"scroll-p":$()}],"scroll-px":[{"scroll-px":$()}],"scroll-py":[{"scroll-py":$()}],"scroll-ps":[{"scroll-ps":$()}],"scroll-pe":[{"scroll-pe":$()}],"scroll-pbs":[{"scroll-pbs":$()}],"scroll-pbe":[{"scroll-pbe":$()}],"scroll-pt":[{"scroll-pt":$()}],"scroll-pr":[{"scroll-pr":$()}],"scroll-pb":[{"scroll-pb":$()}],"scroll-pl":[{"scroll-pl":$()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",we,ke]}],fill:[{fill:["none",...X()]}],"stroke-w":[{stroke:[Ze,gl,Bs,ax]}],stroke:[{stroke:["none",...X()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},rG=IU(oG);function fa(...e){return rG(Vx(e))}const lG=YS("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),fe=T.forwardRef(({className:e,variant:a,size:s,asChild:r=!1,...u},f)=>{const g=r?Z4:"button";return c.jsx(g,{ref:f,className:fa(lG({variant:a,size:s,className:e})),...u})});fe.displayName="Button";const cG=YS("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function d3({className:e,variant:a,...s}){return c.jsx("div",{className:fa(cG({variant:a}),e),...s})}const uG=220;function ox({compact:e=!1,version:a,updateAvailable:s,onDismissUpdate:r}){const u=!e&&a&&a!=="unknown",[f,g]=T.useState(!1),b=!e&&s&&r,v=()=>{g(!0),window.setTimeout(()=>{r?.(),g(!1)},uG)};return e?c.jsxs(tt,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"brand-copy",children:c.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):c.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[c.jsx(tt,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:c.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx(tt,{to:"/",className:"brand-mark",children:"Canonry"}),!b&&u?c.jsxs("span",{className:"brand-version",children:["v",a]}):null]}),b?c.jsxs("span",{className:`brand-update-bubble ${f?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[c.jsxs("a",{className:"brand-update-bubble-link",href:s.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${s.upgradeCommand}`,"aria-label":`New version v${s.latest} available — open release page`,children:[c.jsxs("span",{className:"brand-update-bubble-from",children:["v",s.current]}),c.jsx(Y4,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),c.jsxs("span",{className:"brand-update-bubble-to",children:["v",s.latest]})]}),c.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:v,"aria-label":`Dismiss update notification for v${s.latest}`,children:c.jsx(sr,{className:"size-3","aria-hidden":"true"})})]}):null]})}function dG({provider:e}){const a={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},r=Object.hasOwn(a,e)?`provider-badge--${e} ${a[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return c.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r}`,children:e})}function pn({tone:e,children:a,...s}){const r=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return c.jsx(d3,{variant:r,...s,children:a})}function wf({status:e}){return c.jsx(pn,{tone:HS(e),children:dV(e)})}const mG=Ix,pG=Bx,m3=T.forwardRef(({className:e,...a},s)=>c.jsx(Zh,{ref:s,className:fa("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...a}));m3.displayName=Zh.displayName;const hG=400,fG=1200,gG=720,p3=T.forwardRef(({className:e,children:a,...s},r)=>{const[u,f]=T.useState(gG),g=T.useRef(!1),b=T.useRef(0),v=T.useRef(0),k=T.useCallback(N=>{g.current=!0,b.current=N.clientX,v.current=u,N.target.setPointerCapture(N.pointerId),N.preventDefault()},[u]),S=T.useCallback(N=>{if(!g.current)return;const E=b.current-N.clientX,Z=Math.min(fG,Math.max(hG,v.current+E));f(Z)},[]),A=T.useCallback(()=>{g.current=!1},[]);return c.jsxs(pG,{children:[c.jsx(m3,{}),c.jsxs(Yh,{ref:r,className:fa("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${u}px, 100vw)`},...s,children:[c.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:k,onPointerMove:S,onPointerUp:A}),a,c.jsxs(Px,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[c.jsx(sr,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});p3.displayName=Yh.displayName;const yG=({className:e,...a})=>c.jsx("div",{className:fa("flex flex-col gap-1.5 pr-10",e),...a}),h3=T.forwardRef(({className:e,...a},s)=>c.jsx(Xh,{ref:s,className:fa("text-lg font-medium text-primary",e),...a}));h3.displayName=Xh.displayName;const f3=T.forwardRef(({className:e,...a},s)=>c.jsx(Mx,{ref:s,className:fa("text-sm text-muted",e),...a}));f3.displayName=Mx.displayName;function Cu({title:e,subtitle:a,children:s,open:r,onClose:u}){return c.jsx(mG,{open:r,onOpenChange:f=>f?void 0:u(),children:c.jsxs(p3,{children:[c.jsxs(yG,{className:"drawer-head",children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:a}),c.jsx(h3,{id:"drawer-title",children:e}),c.jsx(f3,{className:"sr-only",children:a})]}),c.jsx("div",{className:"drawer-body",children:s})]})})}function yl({text:e}){const[a,s]=T.useState(null),r=T.useRef(null),u=T.useCallback(()=>{if(!r.current)return;const b=r.current.getBoundingClientRect();s({top:b.top,left:b.left+b.width/2})},[]),f=T.useCallback(()=>s(null),[]),g=T.useCallback(()=>{a===null?u():f()},[a,u,f]);return c.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:u,onMouseLeave:f,children:[c.jsx("button",{ref:r,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":a!==null,onFocus:u,onBlur:f,onClick:g,onKeyDown:b=>{b.key==="Escape"&&f()},children:c.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),a!==null&&U4.createPortal(c.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:a.top,left:a.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const bG=/[\s\-_]+/;function vG(e){const a=e.split(bG).filter(Boolean);return a.length===0?null:a.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function rx(e,a){const s=xG(a),r=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(k=>k.startsWith("**")&&k.endsWith("**")?{type:"bold",value:k.slice(2,-2)}:{type:"text",value:k}),u=s.flatMap(k=>k.terms).filter(k=>k.trim().length>1);if(u.length===0)return r.map((k,S)=>k.type==="bold"?Io.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const g=[...u].sort((k,S)=>S.length-k.length).map(vG).filter(k=>!!k);if(g.length===0)return r.map((k,S)=>k.type==="bold"?Io.createElement("strong",{key:`b-${S}`,className:"text-strong font-semibold"},k.value):k.value).filter(Boolean);const b=new RegExp(`(${g.join("|")})`,"gi"),v=new Map;for(const k of s)for(const S of k.terms){const A=Ca(S);A&&!v.has(A)&&v.set(A,k.className)}return r.flatMap((k,S)=>k.value.split(b).map((N,E)=>{if(!N)return null;if(E%2===1){const _=v.get(Ca(N))??"answer-highlight";return k.type==="bold"?Io.createElement("mark",{key:`hl-${S}-${E}`,className:_},Io.createElement("strong",{className:"text-strong font-semibold"},N)):Io.createElement("mark",{key:`hl-${S}-${E}`,className:_},N)}return k.type==="bold"?Io.createElement("strong",{key:`b-${S}-${E}`,className:"text-strong font-semibold"},N):N})).filter(Boolean)}function xG(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function $h(e){const a=(e??"").trim();return a&&(a.startsWith("/")||/^https?:\/\//i.test(a)||/^mailto:/i.test(a))?a:null}function dh(e,a){return{citedCompetitorDomains:[...e.citedCompetitorDomains??a?.citedCompetitorDomains??[]],mentionedCompetitorDomains:[...e.mentionedCompetitorDomains??a?.mentionedCompetitorDomains??[]]}}function mh(e,a){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return a==="mentioned"||a==="visible"?"Mentioned in latest run":a==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function kG({evidence:e,project:a,onClose:s}){const[r,u]=T.useState(!1),[f,g]=T.useState("mentions"),[b,v]=T.useState(-1),[k,S]=T.useState(null),[A,N]=T.useState(!1),[E,Z]=T.useState({}),_=M2(a.project),G=new Set(_.map(Mu)),K=e.runHistory,te=K.length>1,[Q,re]=T.useState(null),W=T.useRef(!1);T.useEffect(()=>{if(W.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ne=K.at(-1);ne&&(W.current=!0,Ph(ne.runId).then(V=>{const q=V.snapshots?.find(le=>le.query===e.query&&le.provider===e.provider);q&&re({citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:ne.visibilityTransition,provider:q.provider,model:q.model??e.model,answerSnippet:q.answerText??e.answerSnippet,citedDomains:q.citedDomains??e.citedDomains,...dh(q,e),recommendedCompetitors:q.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:q.matchedTerms??e.matchedTerms??[],groundingSources:q.groundingSources??e.groundingSources,searchQueries:q.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,K]);const oe=b>=0&&k!==null,H=oe?k:Q||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:K.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,...dh(e),recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},$=H.visibilityState==="pending"||H.citationState==="pending",Te=$?!1:H.visibilityState!=null?H.visibilityState==="visible":H.answerMentioned!=null?H.answerMentioned:H.citationState===Uu.cited||H.citationState==="emerging",Ke=H.answerMentioned!=null||H.visibilityState!=null||H.mentionedCompetitorDomains.length>0||H.recommendedCompetitors.length>0,Fe=H.citedDomains.length>0||H.citedCompetitorDomains.length>0||H.groundingSources.length>0||H.evidenceUrls.length>0,Re=a.project.displayName||a.project.name,ve=[..._.map(Mu),Re,Re.split(" ").slice(0,2).join(" "),...H.matchedTerms].filter(ne=>ne.trim().length>2),Ue=[...H.mentionedCompetitorDomains.flatMap(ne=>{const V=O2(ne);return V.length>=4?[V]:[]}),...H.recommendedCompetitors].filter(ne=>ne.trim().length>2),be=[{terms:ve,className:"answer-highlight-brand"},...Ue.length>0?[{terms:Ue,className:"answer-highlight-competitor"}]:[]],P=$?"pending":H.visibilityTransition==="lost"?"lost":Te?"mentioned":"not-mentioned",ae=T.useRef(0),he=T.useCallback(async ne=>{const V=++ae.current;if(ne===-1||ne===K.length-1){v(-1),S(null),u(!1);return}v(ne),u(!1);const q=K[ne],le=`${q.runId}::${e.query}::${e.provider}`;if(E[le]){S(E[le]);return}N(!0);try{const De=await Ph(q.runId);if(V!==ae.current)return;const ye=De.snapshots?.find(Ge=>Ge.query===e.query&&Ge.provider===e.provider)??De.snapshots?.find(Ge=>Ge.query===e.query),Je=ye?{citationState:ye.citationState,answerMentioned:ye.answerMentioned,visibilityState:ye.visibilityState,visibilityTransition:q.visibilityTransition,provider:ye.provider,model:ye.model??null,answerSnippet:ye.answerText??"",citedDomains:ye.citedDomains,...dh(ye),recommendedCompetitors:ye.recommendedCompetitors??[],matchedTerms:ye.matchedTerms??[],groundingSources:ye.groundingSources,searchQueries:ye.searchQueries,evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:""}:{citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:q.visibilityTransition,provider:e.provider,model:q.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:"Snapshot data not available for this run."};Z(Ge=>({...Ge,[le]:Je})),S(Je)}catch{if(V!==ae.current)return;S({citationState:q.citationState,answerMentioned:q.answerMentioned,visibilityState:q.visibilityState,visibilityTransition:q.visibilityTransition,provider:e.provider,model:q.model??null,answerSnippet:"",citedDomains:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:mh(q.mentionTransition??q.visibilityTransition,q.mentionState??q.visibilityState),summary:"Failed to load historical run data."})}finally{V===ae.current&&N(!1)}},[K,e.query,e.provider,E]),X=(oe||e.historyScope!=="provider")&&H.model?`${H.provider} (${H.model}) · ${H.changeLabel.toLowerCase()}`:`${H.provider} · ${H.changeLabel.toLowerCase()}`,Ie=!oe&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",Ne=Te?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:X}:H.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:X}:$?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:X},Ae=()=>{if(!H.answerSnippet)return null;const ne=H.answerSnippet.split(`
|
|
58
|
+
`),V=[];let q=[],le=0;const De=()=>{if(q.length===0)return;const ye=q.join(" ").trim();ye&&V.push(c.jsx("p",{className:V.length>0?"mt-2.5":"",children:rx(ye,be)},le++)),q=[]};for(const ye of ne){const Je=ye.trim();if(/^[-\u2013\u2014]{3,}$/.test(Je)){De(),V.push(c.jsx("hr",{className:"border-default my-3"},le++));continue}const Ge=Je.match(/^(#{1,3})\s+(\S.*)$/);if(Ge){De();const Be=Ge[1].length,de=Ge[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ge[2],Me=Be===1?"text-[13px] font-semibold text-heading mt-4 mb-1":Be===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";V.push(c.jsx("p",{className:Me,children:rx(de,be)},le++));continue}if(Je===""){De();continue}q.push(Je)}return De(),V};return c.jsx(Ix,{open:!0,onOpenChange:ne=>{ne||s()},children:c.jsxs(Bx,{children:[c.jsx(Zh,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),c.jsxs(Yh,{className:"evidence-modal","aria-describedby":void 0,children:[c.jsxs("div",{className:"evidence-modal-header",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("p",{className:"eyebrow eyebrow-soft",children:[a.project.name," ","·"," ",H.provider||"All providers"]}),c.jsx(Xh,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),c.jsxs(Px,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[c.jsx(sr,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]})]}),te&&c.jsxs("div",{className:"evidence-modal-timeline",children:[c.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),c.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:K.map((ne,V)=>{const q=b===-1&&V===K.length-1||b===V,le=ne.visibilityState??(ne.answerMentioned?"visible":"not-visible"),De=ne.visibilityTransition??le,ye=le==="visible"?"bg-positive-400":De==="emerging"?"bg-caution-400":De==="lost"?"bg-negative-400":"bg-mono-600",Ge=new Date(ne.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),Be=!!(ne.model&&V>0&&K[V-1]?.model&&K[V-1].model!==ne.model);return c.jsxs("button",{type:"button",className:`evidence-run-dot ${q?"evidence-run-dot--selected":""}`,onClick:()=>{he(V===K.length-1?-1:V)},"aria-label":[`Run ${Ge}: ${le}`,ne.model?`model ${ne.model}`:null,Be?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":q,children:[c.jsx("span",{className:`size-2 rounded-full ${ye} ${Be?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),c.jsx("span",{className:"text-[10px] text-muted",children:Ge})]},V)})}),b>=0&&b<K.length&&c.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(K[b].createdAt).toLocaleString()," ","—"," ",c.jsx("span",{className:"capitalize",children:K[b].visibilityState??(K[b].answerMentioned?"visible":"not-visible")}),c.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{he(-1)},children:["←"," Back to latest"]})]}),!oe&&(e.modelTransitions?.length??0)>0&&c.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ne=>c.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ne.fromModel??"unknown"} -> ${ne.toModel??"unknown"} on ${new Date(ne.createdAt).toLocaleDateString()}`},`${ne.runId}:${ne.toModel??"unknown"}`))})]}),c.jsxs("div",{className:"evidence-modal-body",children:[A&&c.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!A&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"evidence-modal-main",children:[c.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${P}`,children:[c.jsx("p",{className:`evidence-position-label evidence-position-label--${P}`,children:Ne.label}),c.jsx("p",{className:`evidence-position-title evidence-position-title--${P}`,children:Ne.title}),c.jsx("p",{className:"evidence-position-meta",children:Ne.meta}),Ie&&c.jsx("p",{className:"mt-1 text-[11px] text-muted",children:Ie})]}),H.answerSnippet&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),c.jsx("div",{className:`answer-snippet-block ${r?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:Ae()}),H.answerSnippet.length>280&&c.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>u(!r),children:r?"↑ Collapse":"↓ Show full answer"})]}),!H.answerSnippet&&!A&&c.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),H.searchQueries.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Web searches the model ran"}),c.jsx(yl,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated your query — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),c.jsx("ul",{className:"grid gap-1",children:H.searchQueries.map((ne,V)=>c.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[c.jsx(X4,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),c.jsx("span",{className:"break-words",children:ne})]},`${V}-${ne}`))})]}),!oe&&e.relatedTechnicalSignals.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:Te?"Why you're visible":"What to fix"}),c.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ne,V)=>c.jsxs("div",{className:"action-item",children:[c.jsx("svg",{className:`action-item-icon ${Te?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:Te?c.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):c.jsxs(c.Fragment,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),c.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),c.jsx("span",{className:"action-item-text",children:ne})]},V))})]}),H.summary&&c.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:H.summary})]}),c.jsxs("div",{className:"evidence-modal-sidebar",children:[(Ke||Fe)&&c.jsxs("div",{className:"sidebar-tabs",children:[c.jsx("button",{className:`sidebar-tab ${f==="mentions"?"sidebar-tab--active":""}`,onClick:()=>g("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),c.jsx("button",{className:`sidebar-tab ${f==="sources"?"sidebar-tab--active":""}`,onClick:()=>g("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),f==="mentions"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Mention in answer"}),c.jsx(yl,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),c.jsxs("div",{className:`mention-status mention-status--${Te?"mentioned":"not-mentioned"}`,children:[c.jsx("span",{className:"mention-status-icon",children:$?"…":Te?"✓":"—"}),c.jsx("span",{className:"mention-status-label",children:$?"Pending":Te?"Mentioned":"Not mentioned"})]}),H.matchedTerms.length>0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:H.matchedTerms.map(ne=>c.jsx("span",{className:"mention-chip mention-chip--brand",children:ne},ne))})]}),!$&&!Te&&H.matchedTerms.length===0&&c.jsxs("div",{className:"mt-2",children:[c.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:ve.map(ne=>c.jsx("span",{className:"mention-chip mention-chip--muted",children:ne},ne))}),c.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(H.recommendedCompetitors.length>0||H.mentionedCompetitorDomains.length>0)&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Competitors in answer"}),c.jsx(yl,{text:"Competitors detected in the answer text. Includes tracked competitor brands and names extracted by Canonry; source-link competitors stay in the Sources tab."})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ne=H.mentionedCompetitorDomains.map(le=>le.replace(/^www\./,"")),V=new Set(ne.map(le=>Ca(le.replace(/\.[^.]+$/,""))));return[...H.recommendedCompetitors.filter(le=>!V.has(Ca(le))),...ne].map(le=>c.jsx("span",{className:"mention-chip mention-chip--competitor",children:le},le))})()})]})]}),f==="sources"&&c.jsxs(c.Fragment,{children:[H.citedDomains.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsx("span",{children:"Domains from source links"}),c.jsx(yl,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),c.jsx("div",{className:"citation-leaderboard",children:H.citedDomains.map((ne,V)=>{const q=ne.toLowerCase().replace(/^www\./,""),le=G.has(q),De=!le&&H.citedCompetitorDomains.some(Je=>Je.toLowerCase().replace(/^www\./,"")===q),ye=le?"you":De?"competitor":"other";return c.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${ye}`,children:[c.jsxs("span",{className:"citation-leaderboard-rank",children:["#",V+1]}),c.jsx("span",{className:"citation-leaderboard-domain",children:ne}),le&&c.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),De&&c.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ne)})})]}),H.groundingSources.length>0&&c.jsxs("div",{children:[c.jsxs("div",{className:"drawer-section-label flex items-center",children:[c.jsxs("span",{children:["Grounding source links (",H.groundingSources.length,")"]}),c.jsx(yl,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),c.jsx("ul",{className:"grid gap-0.5",children:H.groundingSources.map((ne,V)=>{const q=$h(ne.uri),le=ne.title||ne.uri;return c.jsx("li",{className:"truncate text-sm",children:q?c.jsx("a",{href:q,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:le}):c.jsx("span",{className:"text-secondary",children:le})},V)})})]}),H.evidenceUrls.length>0&&c.jsxs("div",{children:[c.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),c.jsx("ul",{className:"grid gap-1",children:H.evidenceUrls.map(ne=>{const V=$h(ne);return c.jsx("li",{className:"truncate text-sm",children:V?c.jsx("a",{href:V,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ne}):c.jsx("span",{className:"text-secondary",children:ne})},ne)})})]}),H.citedDomains.length===0&&H.groundingSources.length===0&&H.evidenceUrls.length===0&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",oe?"for this run":"yet"]})]}),!Ke&&!Fe&&c.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",oe?"for this run":"yet"]})]})]})]})]})]})})}function wG(e){const a=e.match(/^\/projects\/([^/]+)/);if(!a)return null;try{return decodeURIComponent(a[1])}catch{return a[1]}}function SG(e,a){return e?a?.projects.find(r=>r.project.name===e||r.project.id===e)?.project.name??e:null}function jG(e,a){return SG(wG(e),a)}function ja(e){const a=new Date("2026-02-20");return e.map((s,r)=>({runId:`run_mock_${r+1}`,citationState:s,createdAt:new Date(a.getTime()+r*2*24*60*60*1e3).toISOString()}))}const ph=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:$p,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function _d(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const AG=_d({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),CG=_d({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),NG=_d({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),_G=_d({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),zG=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:ja(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:ja(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:ja(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:ja(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];ph[0],Math.round(1/9*100),Math.round(2/9*100),ph[1],ja(["cited","cited","cited","cited","cited"]),ph[2],Math.round(2/7*100),Math.round(3/7*100),ja(["not-cited","not-cited","not-cited","cited"]);function EG(e,a){return e.runs.find(s=>s.id===a)}function TG(e,a){for(const s of e.projects){const r=s.visibilityEvidence.find(u=>u.id===a);if(r)return{project:s,evidence:r}}}function RG(e,a,s){if(e){const r=e.visibilityEvidence.find(u=>u.id===s);if(r)return{project:e,evidence:r}}if(a)return TG(a,s)}const DG={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},OG={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},qG={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},BG={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function PG(e){return{id:e.id,tone:DG[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??BG[e.type],actionGroup:OG[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:qG[e.type]}]}}function MG(e){return e.filter(a=>!a.dismissed).map(PG)}function g3(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function lx(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function IG(e,a){if(!e)return"Waiting";if(!a)return"Running";const s=new Date(a).getTime()-new Date(e).getTime();if(s<1e3)return"<1s";const r=Math.floor(s/1e3);if(r<60)return`${r}s`;const u=Math.floor(r/60),f=r%60;return`${u}m ${f}s`}function y3(e){switch(e){case ze["answer-visibility"]:return"Answer visibility sweep";case ze["gsc-sync"]:return"GSC sync";case ze["inspect-sitemap"]:return"Sitemap inspection";case ze["ga-sync"]:return"GA sync";case ze["traffic-sync"]:return"Traffic sync";case ze["bing-inspect"]:return"Bing URL inspection";case ze["bing-inspect-sitemap"]:return"Bing sitemap inspection";case ze["site-audit"]:return"Site audit";case ze["backlink-extract"]:return"Backlink extract";case ze["aeo-discover-seed"]:return"Discovery (seed phase)";case ze["aeo-discover-probe"]:return"Discovery (probe phase)";case ze["gbp-sync"]:return"Business Profile sync";case ze["ads-sync"]:return"ChatGPT ads sync";case ze["google-ads-sync"]:return"Google Ads sync";case ze["gtm-sync"]:return"Tag Manager sync"}}function VG(e){return e===Qo.manual?"Manual":e===Qo.scheduled?"Scheduled":e===Qo["config-apply"]?"Config apply":e}function zd(e,a){return{id:e.id,projectId:e.projectId,projectName:a,kind:e.kind,kindLabel:y3(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?lx(e.startedAt):lx(e.createdAt),duration:IG(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?b3(e.error):LG(e),summary:UG(e),triggerLabel:VG(e.trigger)}}function b3(e){const a=G0(e);return a.length>200?a.slice(0,200)+"…":a}function LG(e){switch(e.status){case xn.queued:return"Waiting for execution slot.";case xn.running:return"Provider queries in progress.";case xn.completed:return"All queries checked.";case xn.partial:return"Run completed with some queries skipped.";case xn.failed:return e.error?b3(e.error):"Run failed.";case xn.cancelled:return"Run was cancelled.";default:return""}}function UG(e){const a=y3(e.kind);switch(e.status){case xn.queued:return`${a} queued`;case xn.running:return`${a} in progress`;case xn.completed:return`${a} completed`;case xn.partial:return`${a} partially completed`;case xn.failed:return`${a} failed`;case xn.cancelled:return`${a} cancelled`;default:return e.status}}function GG(e,a,s,r,u){const f=[];let g=0;const b=new Set;if(s.length>0){const v=s.flatMap(_=>_.snapshots??[]),k=new Map;for(const _ of v)if(_.query){const G=`${_.query}::${_.provider}::${_.location??""}`;k.set(G,_)}const S=new Set(v.map(_=>_.location??null));S.size===0&&S.add(null);const A=new Set(v.map(_=>_.provider)),N=new Set(a.flatMap(_=>Object.keys(_.providerRuns??{}))),E=[...new Set([...A,...N])].sort(),Z=E.length>0?E:["gemini"];for(const _ of a){if(_.runs.length===0)continue;b.add(_.query);const G=_.runs.at(-1),K=G?.transition??"not-cited";for(const te of Z){const Q=[...S].filter(oe=>k.has(`${_.query}::${te}::${oe??""}`)),re=(_.providerRuns?.[te]?.length??0)>0,W=Q.length>0?Q:re?[null]:[];for(const oe of W){const H=oe??"",$=k.get(`${_.query}::${te}::${H}`),Te=$?.model??null,Ke=Te?`${te}:${Te}`:null,Fe=_.providerRuns?.[te],Re=Ke?_.modelRuns?.[Ke]:void 0,ve=Me=>Me?.filter($t=>($t.location??null)===oe),Ue=Q.length>0?ve(Fe):Fe,be=Q.length>0?ve(Re):Re,P=(Ue?.length?Ue:null)??(be?.length?be:null),ae=Ue?.length?"provider":be?.length?"model":"query",he=P?P.at(-1).transition:K,je=P?P.at(-1).visibilityTransition??(P.at(-1).visibilityState==="visible"?"visible":"not-visible"):G?.visibilityTransition??(G?.visibilityState==="visible"?"visible":"not-visible"),X=P?.at(-1)?.citationState,Ie=P?.at(-1)?.visibilityState,Ne=$?he==="lost"?"lost":he==="emerging"?"emerging":$.citationState===Uu.cited?"cited":"not-cited":X===Uu.cited?"cited":"not-cited",Ae=$?.visibilityState??(Ie==="visible"?"visible":Ie==="pending"?"pending":"not-visible"),ne=cx(P||_.runs),V=ux(P||_.runs),q=$G(_,te),le=(P??_.runs).map(Me=>({runId:Me.runId,citationState:Me.citationState,createdAt:Me.createdAt,model:q.get(Me.runId)??null,answerMentioned:Me.answerMentioned,visibilityState:Me.visibilityState,visibilityTransition:Me.visibilityTransition,mentionState:Me.mentionState,mentionTransition:Me.mentionTransition})),De=KG(le),ye=ae==="provider"&&De.length<=1?"model":ae,Je=HG(le),Ge=$?.citedCompetitorDomains??[],Be=$?.mentionedCompetitorDomains??[],de=[...new Set([...Ge,...Be,...$?.competitorOverlap??[]])];f.push({id:`evidence_${e}_${g++}`,query:_.query,queryClass:u?.classify(_.query)??null,provider:$?.provider??te,model:$?.model??null,location:$?.location??oe,citationState:Ne,answerMentioned:$?.answerMentioned,visibilityState:Ae,visibilityChangeLabel:dx(je,V,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:dx(he,ne),answerSnippet:$?.answerText??"",citedDomains:$?.citedDomains??[],evidenceUrls:[],citedCompetitorDomains:Ge,mentionedCompetitorDomains:Be,competitorDomains:de,recommendedCompetitors:$?.recommendedCompetitors??[],matchedTerms:$?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:$?.groundingSources??[],searchQueries:$?.searchQueries??[],summary:QG(Ae,je,_.query),runHistory:le,historyScope:ye,modelsSeen:De,modelTransitions:Je})}}}}for(const v of r)b.has(v.query)||f.push({id:`evidence_${e}_${g++}`,query:v.query,queryClass:u?.classify(v.query)??null,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],citedCompetitorDomains:[],mentionedCompetitorDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${v.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return f}function $G(e,a){const s=new Map,r=`${a}:`;for(const[u,f]of Object.entries(e.modelRuns??{})){if(!u.startsWith(r))continue;const g=u.slice(r.length),b=g==="unknown"?null:g;for(const v of f)s.set(v.runId,b)}return s}function KG(e){const a=new Set;for(const s of e)s.model&&a.add(s.model);return[...a]}function HG(e){const a=[];let s=null;for(const r of e){const u=r.model??null;u!==s&&s!==null&&a.push({runId:r.runId,createdAt:r.createdAt,fromModel:s,toModel:u}),s=u}return a}function cx(e){if(e.length===0)return 0;const a=e[e.length-1].citationState;let s=0;for(let r=e.length-1;r>=0&&e[r].citationState===a;r--)s++;return s}function ux(e){if(e.length===0)return 0;const a=e[e.length-1].visibilityState??"not-visible";let s=0;for(let r=e.length-1;r>=0&&(e[r].visibilityState??"not-visible")===a;r--)s++;return s}function dx(e,a,s){const r={positive:s?.positive??"cited",negative:s?.negative??"not cited",first:s?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return a<=1?`${bl(r.positive)} in latest run`:`${bl(r.positive)} for ${a} runs`;case"lost":return"Lost since last run";case"emerging":return bl(r.first);case"not-cited":case"not-visible":return a<=1?`${bl(r.negative)} in latest run`:`${bl(r.negative)} across ${a} runs`;default:return e}}function bl(e){return e.charAt(0).toUpperCase()+e.slice(1)}function QG(e,a,s){switch(a){case"lost":return`Mention was lost for "${s}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${s}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${s}".`;case"pending":return`"${s}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${s}".`}}function v3(e){const a=g3(e.project),s=j8(g8(e.project)),r=GG(a.name,e.timeline,e.latestRunDetails,e.queries,s),f=[...e.runs].sort((g,b)=>b.createdAt.localeCompare(g.createdAt)).map(g=>zd(g,e.project.displayName||e.project.name));return e.overview?FG(a,e.overview,r,f):ZG(a,r,f)}function FG(e,a,s,r){const u=MG(a.topInsights);for(const f of a.attentionItems)f.id.startsWith("insight_")||u.push({id:f.id,tone:f.tone,title:f.title,detail:f.detail,actionLabel:f.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:a.dateRangeLabel,contextLabel:a.contextLabel,mentionSummary:a.scores.mention,visibilitySummary:a.scores.visibility,mentionShareSummary:a.scores.mentionShare,queryCounts:{cited:a.queryCounts.citedQueries,total:a.queryCounts.totalQueries},gapQueries:a.scores.gapQueries,mentionGaps:a.scores.mentionGaps,indexCoverage:a.scores.indexCoverage,providerScores:a.providerScores,competitorPressure:a.scores.competitorPressure,runStatus:a.scores.runStatus,citationMovement:a.citationMovement,mentionMovement:a.mentionMovement,movementComparison:a.movementComparison,insights:u,visibilityEvidence:s,competitors:a.competitors.map(f=>({id:f.id,domain:f.domain,citationCount:f.citationCount,totalQueries:f.totalQueries,pressureLabel:f.pressureLabel,citedQueries:f.citedQueries,movement:"",notes:""})),recentRuns:r.slice(0,5),suggestedQueries:a.suggestedQueries}}function mx(){return{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0,score:null}}function ZG(e,a,s){const r={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...r,label:"Mention Coverage"},visibilitySummary:{...r,label:"Citation Coverage"},mentionShareSummary:{...r,label:"Mention Share",scope:"non-brand",unavailable:!0,breakdown:mx(),branded:mx()},queryCounts:{cited:0,total:0},gapQueries:{...r,label:"Citation Gaps"},mentionGaps:{...r,label:"Mention Gaps"},indexCoverage:{...r,label:"Index Coverage"},providerScores:[],competitorPressure:{...r,label:"Competitor Pressure"},runStatus:{...r,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:a,competitors:[],recentRuns:s.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function YG(e){const a=g3(e.project),s=[...e.runs].sort((N,E)=>E.createdAt.localeCompare(N.createdAt)),r=s.find(N=>N.kind===ze["answer-visibility"])??s[0]??e.overview?.latestRun?.run??void 0,u=e.project.displayName||e.project.name,f=r?zd(r,u):XG(e.project.id,u),g=e.overview;if(!g)return{project:a,hasMeasurement:!1,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:f,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const b=g.scores.mention,v=b.progress??0,k=g.queryCounts.mentionedQueries,S=g.queryCounts.totalQueries,A=g.providers.length;return{project:a,hasMeasurement:S>0&&b.progress!=null,mentionScore:v,mentionDelta:S>0?`${k} of ${S} queries`:"No data",mentionTone:b.tone,providerCoverage:b.providerCoverage,lastRun:f,insight:S>0?`${k} of ${S} queries mentioned across ${A} provider${A===1?"":"s"}.`:"No runs completed yet.",trend:b.trend??[],competitorPressureLabel:g.scores.competitorPressure.value}}function XG(e,a){return{id:"none",projectId:e,projectName:a,kind:ze["answer-visibility"],kindLabel:"No runs yet",status:xn.queued,trigger:Qo.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function JG(e,a){const s=[],r=[],u=[];for(const g of e){r.push(v3(g)),u.push(YG(g));const b=[...g.runs].sort((v,k)=>k.createdAt.localeCompare(v.createdAt));for(const v of b)s.push(zd(v,g.project.displayName||g.project.name))}s.sort((g,b)=>b.createdAt.localeCompare(g.createdAt));const f=e.length>0;return{portfolioOverview:{projects:u,attentionItems:f?WG(r):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:s.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],...f?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:r,runs:s,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:f,ctaLabel:f?"Trigger run":"Create a project first",summary:f?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(a?.providers??[]).map(g=>({name:g.name,displayName:g.displayName,keyUrl:g.keyUrl,modelHint:g.modelHint,model:g.model,defaultModel:g.defaultModel,state:g.configured?"ready":"needs-config",detail:g.configured?"Provider is configured.":g.name.toLowerCase()==="local"?"Base URL is missing.":"API key is missing.",quota:g.quota})),google:{state:a?.google?.configured?"ready":"needs-config",detail:a?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:a?.bing?.configured?"ready":"needs-config",detail:a?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function WG(e){const a=[];for(const s of e){const r=s.visibilityEvidence.filter(f=>f.citationState==="lost");r.length>0&&a.push({id:`attention_${s.project.id}_lost`,tone:"negative",title:`${s.project.displayName||s.project.name} lost citations`,detail:`${r.length} quer${r.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(s.project.name)}`});const u=s.recentRuns.filter(f=>f.status===xn.running||f.status===xn.queued);u.length>0&&a.push({id:`attention_${s.project.id}_active`,tone:"neutral",title:`${s.project.displayName||s.project.name} has active runs`,detail:`${u.length} run${u.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return a.length===0&&a.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),a}const x3=T.createContext(null);x3.Provider;function Kl(){return T.useContext(x3)}function Ed(e,a={}){const r=Kl()?.dashboard??null,u=a.includeSettings??!0,f=a.includeOverviews??!0,g=a.pauseProjectPolling??!1,{isAdmin:b}=ha(),v=Et({...yf({client:se,query:{kind:"answer-visibility"}}),enabled:!r,staleTime:nr,refetchInterval:Q=>Q.state.data?.some(oe=>oe.status==="running"||oe.status==="queued")?3e3:nr}),k=Et({...Zs({client:se}),enabled:!r,refetchInterval:g?!1:Q=>{const re=Q.state.data,W=v.data?.some(H=>H.status==="running"||H.status==="queued");return(re?.length??0)===0||!!W?aV:iV}}),S=Et({...$V({client:se}),enabled:!r&&u&&b}),A=k.data??[],N=v.data??[],E=G4({queries:A.map(Q=>{const re=N.filter(H=>H.projectId===Q.id),W=re.filter(H=>(H.status==="completed"||H.status==="partial")&&H.kind==="answer-visibility"&&H.trigger!=="probe").sort((H,$)=>$.createdAt.localeCompare(H.createdAt)),oe=W.length>0?W[0].id:"no-run";return{queryKey:["project-overview-slim",Q.id,oe],queryFn:async()=>{const H=await OS(Q.name).catch(()=>null);return{project:Q,runs:re,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:H}},enabled:!r&&f&&k.isSuccess&&v.isSuccess,staleTime:Tu}})}),Z=!f||E.every(Q=>Q.isSuccess),_=T.useMemo(()=>{if(r)return r;if(!k.data||!v.data||A.length>0&&!Z)return null;const Q=f?E.map(re=>re.data?{...re.data,runs:N.filter(W=>W.projectId===re.data.project.id)}:null).filter(re=>re!=null):A.map((re,W)=>{const oe=E[W]?.data;return{project:re,runs:N.filter(H=>H.projectId===re.id),queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:oe?.overview??null}});return JG(Q,S.data??null)},[r,k.data,v.data,S.data,f,Z,E,A,N]),G=!r&&(k.isError||v.isError),K=!r&&!_&&!G,te=T.useCallback(async()=>{const Q=[k.refetch(),v.refetch(),...f?E.map(re=>re.refetch()):[]];u&&Q.push(S.refetch()),await Promise.all(Q)},[u,f,E,k.refetch,v.refetch,S.refetch]);return{dashboard:_,isLoading:K,isError:G,refetch:te}}function e$(e){return JSON.stringify(e.filter(a=>a.kind==="answer-visibility"&&a.trigger!=="probe"&&(a.status==="completed"||a.status==="partial")).map(a=>[a.id,a.status]).sort(([a],[s])=>a.localeCompare(s)))}async function Kh(e,a,s="active"){const r=u=>{const f=u.queryKey[0];return f?._id==="getApiV1ProjectsByNameAnalyticsCompetitors"&&f.path?.name===a};return s==="active"&&await e.cancelQueries({predicate:r}),e.invalidateQueries({predicate:r,refetchType:s})}function IY(e,a,s){const r=da(),u=T.useRef({projectName:e,revision:a,enabled:s});T.useEffect(()=>{const f=u.current;u.current={projectName:e,revision:a,enabled:s},!(!s||!f.enabled||f.projectName!==e||f.revision===a)&&Kh(r,e)},[s,e,r,a])}const t$=20;function n$(e,a={}){const s=da(),r=Kl(),u=T.useMemo(()=>!r||!e?null:r.dashboard.projects.find(W=>W.project.name===e)??null,[r,e]),f=Et({...kV({client:se,path:{name:e??""}}),enabled:!!e&&!u,staleTime:Tu,refetchOnWindowFocus:"always"}),g=Et({...MV({client:se,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:nr,refetchOnWindowFocus:"always",refetchInterval:W=>W.state.data?.some($=>$.projectId===f.data?.id&&($.status==="running"||$.status==="queued"))?3e3:nr}),b=f.data??null,v=T.useMemo(()=>b?(g.data??[]).filter(W=>W.projectId===b.id):[],[b,g.data]),{latestRunIds:k,latestRunIdsKey:S,latestVisibilityRevision:A}=T.useMemo(()=>{const W=v.filter($=>($.status==="completed"||$.status==="partial")&&$.kind==="answer-visibility"&&$.trigger!=="probe").sort(($,Te)=>Te.createdAt.localeCompare($.createdAt)),oe=W[0]?.createdAt??null,H=oe?W.filter($=>$.createdAt===oe).map($=>$.id):[];return{latestRunIds:H,latestRunIdsKey:[...H].sort().join(","),latestVisibilityRevision:oe?`${oe}:${[...H].sort().join(",")}`:"none"}},[v]),N=!!b&&!!e&&g.isSuccess,E=Et({queryKey:["project-dashboard-full",b?.id??null,S||"none","overview"],queryFn:async()=>({project:b,overview:await OS(e)}),enabled:N&&a.overview===!0,staleTime:Tu,refetchOnWindowFocus:"always"}),Z=Et({queryKey:["project-dashboard-full",b?.id??null,S||"none","evidence"],queryFn:async()=>{const[W,oe,H]=await Promise.all([DS(e),NI(e,void 0,t$),Promise.all(k.map($=>Ph($)))]);return{project:b,queries:W,timeline:oe,latestRunDetails:H}},enabled:N&&a.evidence===!0,staleTime:Tu,refetchOnWindowFocus:"always"}),_=T.useMemo(()=>{if(!b||!g.data)return u;const W=a.evidence?Z.data:void 0,oe={project:b,runs:v,queries:W?.queries??[],timeline:W?.timeline??[],latestRunDetails:W?.latestRunDetails??[],overview:a.overview?E.data?.overview??null:null},H=v3(oe);return u&&!(a.overview&&E.data)?{...u,project:H.project,recentRuns:g.data?H.recentRuns:u.recentRuns,visibilityEvidence:W?H.visibilityEvidence:u.visibilityEvidence}:H},[b,v,Z.data,E.data,u,a.evidence,a.overview,g.data]),G=T.useCallback(async()=>{await Promise.all([f.refetch(),g.refetch(),s.invalidateQueries({queryKey:["project-dashboard-full",b?.id??null]})])},[f.refetch,g.refetch,s,b?.id]),K=f.isError||g.isError,te=!u&&(f.isLoading||g.isLoading),Q=!!e&&a.overview===!0&&!u&&!K&&E.isPending,re=!!e&&a.evidence===!0&&!u&&!K&&Z.isPending;return{commandCenter:_,project:b,isLoading:te,isError:K,overviewLoading:Q,overviewError:a.overview===!0&&E.isError&&!E.data,evidenceLoading:re,evidenceError:a.evidence===!0&&Z.isError&&!Z.data,latestVisibilityRevision:A,competitorHistoryRevision:e$(v),refetch:G}}const a$=["health"];async function i$(){const e=await HI("/health","API"),a=Sl()&&e.state==="ok"?{label:"Worker",state:"disabled",detail:"Background execution is disabled in this public demo."}:e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:a}}function Sf(e,a){return Et({queryKey:a$,queryFn:i$,enabled:e,refetchInterval:15e3,initialData:a})}function s$(e){return Et({...bf({client:se,path:{id:e??""}}),enabled:!!e,refetchInterval:a=>{const s=a.state.data?.status;return s==="running"||s==="queued"?3e3:!1}})}function jf(){const e=Hs(),a=Dx({strict:!1}),s=$4({select:v=>v.location.pathname}),r=a.runId??null,u=a.evidenceId??null;return{runId:r,evidenceId:u,openRun:v=>{e({to:s,from:kn.to,search:k=>({...k,runId:v,evidenceId:void 0})})},openEvidence:v=>{e({to:s,from:kn.to,search:k=>({...k,evidenceId:v,runId:void 0})})},closeDrawer:()=>{e({to:s,from:kn.to,search:v=>({...v,runId:void 0,evidenceId:void 0})})}}}const o$={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function r$(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function l$(){const e=T.useSyncExternalStore(tV,Hv,Hv),a=Hs(),{openRun:s}=jf(),r=T.useCallback(f=>{Lh(f)},[]),u=T.useCallback(f=>{f.cta&&(f.cta.intent==="open-run-drawer"?s(f.cta.runId):a({to:"/runs"}),Lh(f.id))},[a,s]);return e.length===0?null:c.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(f=>c.jsxs("section",{role:f.tone==="negative"?"alert":"status","aria-live":f.tone==="negative"?"assertive":"polite","data-state":f.state,className:`toast-card ${o$[f.tone]}`,children:[c.jsxs("div",{className:"toast-copy",children:[c.jsx("p",{className:"toast-title",children:f.title}),f.detail?c.jsx("p",{className:"toast-detail",children:f.detail}):null,f.cta?c.jsx("button",{type:"button",className:"toast-action",onClick:()=>u(f),"aria-label":r$(f),children:f.cta.label}):null]}),c.jsx("button",{type:"button",onClick:()=>r(f.id),className:"toast-dismiss","aria-label":"Dismiss",children:c.jsx(sr,{className:"size-3.5"})})]},f.id))})}const c$="https://github.com/Canonry/canonry",u$="https://canonry.ai",px="Run it from your agent with the MCP server, API, CLI, and plugins for Claude Code and Codex.",d$=[{title:"Visibility",links:[["AI visibility","/projects/summit-roofing"],["Search engines","/projects/summit-roofing/search-console"],["Traffic & conversions","/projects/summit-roofing/conversions"],["Reports","/projects/harbor-resorts/report"]]},{title:"Portfolio",links:[["Properties & markets","/projects/harbor-resorts"],["Queries & research","/projects/harbor-resorts/queries"],["Activity","/projects/harbor-resorts/activity"]]},{title:"Website",links:[["Site health","/projects/summit-roofing/technical-aeo"],["Local presence","/projects/summit-roofing/local"],["Backlinks","/projects/summit-roofing/backlinks"]]}];function m$(){const e=T.useId();if(!Sl())return null;const a=Ad(),s=`${e}-new-tab`,r={target:"_blank",rel:"noopener noreferrer","aria-describedby":s};return c.jsxs("aside",{className:"demo-banner","aria-label":"Public demo",children:[c.jsx("p",{className:"demo-banner-name",children:"Canonry demo"}),c.jsx("p",{className:"demo-banner-facts",children:"No sign-in. View only. Fictional data."}),c.jsx("p",{className:"demo-banner-agent",children:px}),c.jsxs("div",{className:"demo-banner-actions",children:[c.jsxs("a",{className:"demo-banner-primary",href:u$,...r,children:["canonry.ai",c.jsx(J4,{"aria-hidden":"true",size:14})]}),c.jsxs("a",{className:"demo-banner-secondary",href:c$,...r,children:[c.jsx(Lx,{"aria-hidden":"true",size:15}),"GitHub"]}),c.jsxs("details",{onKeyDown:u=>{u.key==="Escape"&&(u.currentTarget.open=!1,u.currentTarget.querySelector("summary")?.focus())},children:[c.jsxs("summary",{children:["Explore ",c.jsx(Xu,{"aria-hidden":"true",size:14})]}),c.jsxs("div",{className:"demo-banner-panel",children:[c.jsx("p",{className:"demo-banner-panel-agent",children:px}),c.jsxs("nav",{className:"demo-banner-examples","aria-label":"Demo examples",children:[c.jsx("a",{href:`${a}/projects/summit-roofing`,children:"Standard business"}),c.jsx("a",{href:`${a}/projects/harbor-resorts`,children:"Property portfolio"})]}),c.jsx("nav",{className:"demo-banner-features","aria-label":"Demo feature directory",children:d$.map(({title:u,links:f})=>c.jsxs("section",{"aria-label":u,children:[c.jsx("h2",{children:u}),c.jsx("ul",{children:f.map(([g,b])=>c.jsx("li",{children:c.jsx("a",{href:`${a}${b}`,children:g})},b))})]},u))})]})]})]}),c.jsx("span",{id:s,hidden:!0,children:"Opens in a new tab"})]})}function jl(e){switch(e){case ze["answer-visibility"]:return"Visibility sweep";case ze["gsc-sync"]:return"GSC sync";case ze["inspect-sitemap"]:return"Sitemap inspection";case ze["ga-sync"]:return"GA sync";case ze["traffic-sync"]:return"Traffic sync";case ze["bing-inspect"]:return"Bing URL inspection";case ze["bing-inspect-sitemap"]:return"Bing sitemap inspection";case ze["site-audit"]:return"Technical audit";case ze["backlink-extract"]:return"Backlink extract";case ze["aeo-discover-seed"]:return"Discovery (seed phase)";case ze["aeo-discover-probe"]:return"Discovery (probe phase)";case ze["gbp-sync"]:return"Business Profile sync";case ze["ads-sync"]:return"ChatGPT ads sync";case ze["google-ads-sync"]:return"Google Ads sync";case ze["gtm-sync"]:return"Tag Manager sync"}}function hx(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function p$(){const e=T.useSyncExternalStore(ZS,gi,gi),a=T.useMemo(()=>Object.values(e.runs),[e.runs]),s=a.length>0,r=Et({...yf({client:se}),enabled:s,staleTime:nr}),u=T.useMemo(()=>new Map((r.data??[]).map(b=>[b.id,b.status])),[r.data]);if(!s)return null;const f=a.map(b=>({...b,status:u.get(b.runId)??b.lastAnnouncedStatus})),g=f.length===1?jl(f[0].kind):`${f.length} active tasks`;return c.jsxs("div",{className:"task-center",children:[c.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[f.length," active ",f.length===1?"task":"tasks","."," ",f.map(b=>`${jl(b.kind)} ${hx(b.status)}`).join(". "),"."]}),c.jsxs("details",{className:"task-center-details",children:[c.jsxs("summary",{className:"task-center-trigger",children:[c.jsx(Zo,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),c.jsx("span",{className:"task-center-summary",children:g}),c.jsx("span",{className:"task-center-count","aria-hidden":"true",children:f.length}),c.jsx(Xu,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),c.jsxs("div",{className:"task-center-panel",children:[c.jsxs("div",{className:"task-center-heading",children:[c.jsx("span",{children:"Active tasks"}),c.jsx("span",{className:"tabular-nums text-faint",children:f.length})]}),c.jsx("ul",{className:"task-center-list",children:f.map(b=>c.jsxs("li",{className:"task-center-item",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:jl(b.kind)}),c.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:b.projectLabel??b.projectId})]}),c.jsx(pn,{tone:b.status==="failed"?"negative":b.status==="partial"?"caution":"neutral",children:hx(b.status)})]},b.runId))}),c.jsx(tt,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function h$(e,a={}){const{threshold:s=80}=a,r=T.useRef(null),u=T.useRef({scrollHeight:0,wasAtEnd:!0});function f(v){return v.scrollHeight-v.scrollTop-v.clientHeight}function g(){const v=r.current;return v?f(v)<=s:!0}function b(){const v=r.current;v&&(v.scrollTop=v.scrollHeight,u.current.wasAtEnd=!0,u.current.scrollHeight=v.scrollHeight)}return T.useEffect(()=>{const v=r.current;if(!v)return;const k=()=>{u.current.wasAtEnd=f(v)<=s};return v.addEventListener("scroll",k,{passive:!0}),()=>v.removeEventListener("scroll",k)},[s]),T.useLayoutEffect(()=>{const v=r.current;if(!v)return;const k=v.scrollHeight;k>u.current.scrollHeight&&u.current.wasAtEnd&&(v.scrollTop=k),u.current.scrollHeight=k},e),T.useEffect(()=>{const v=r.current;if(!v||typeof ResizeObserver>"u")return;const k=new ResizeObserver(()=>{const S=v.scrollHeight;S>u.current.scrollHeight&&u.current.wasAtEnd&&(v.scrollTop=S),u.current.scrollHeight=S});return k.observe(v),v.firstElementChild&&k.observe(v.firstElementChild),()=>k.disconnect()},[]),{ref:r,scrollToEnd:b,isAtEnd:g}}const Hh="Sweeps are run by your Canonry team",f$="Scans are run by your Canonry team",fx="Next sweep unavailable",g$="Sweep running…",y$="Next sweep:";function b$(e,a){try{return new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",timeZone:a??"UTC"}).format(new Date(e))}catch{return null}}function v$({projectName:e,kind:a=ze["answer-visibility"],running:s=!1,loadSchedule:r=!0}){const u=a===ze["site-audit"],f=Et({...HV({client:se,path:{name:e},query:{kind:a}}),enabled:r&&!!e,retry:!1,refetchInterval:6e4}),g=f.isError?void 0:f.data,b=g?.enabled&&g.nextRunAt?new Date(g.nextRunAt):null,v=b&&Number.isFinite(b.getTime())?u?b.toLocaleString("en-GB",{weekday:"long",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit",timeZone:"UTC",hourCycle:"h23"}):b$(b.toISOString(),g?.timezone):null,S=(f.error instanceof fn?f.error.code:f.error?.error?.code)==="NOT_FOUND",A=!v||S||!g?.enabled;return c.jsx("p",{className:"text-sm text-secondary",role:"status",children:u?c.jsxs(c.Fragment,{children:[s&&c.jsx("span",{className:"text-neutral",children:"Scan running… · "}),v&&b?c.jsxs(c.Fragment,{children:["Next scan ",c.jsxs("time",{dateTime:b.toISOString(),children:[v," UTC"]})," · managed by your Canonry team"]}):f$]}):s?g$:A?fx:v&&b?c.jsxs(c.Fragment,{children:[y$," ",c.jsx("time",{dateTime:b.toISOString(),children:v})]}):fx})}async function Af(e){try{return await e.json()}catch{return{}}}function x$(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Cf=x$();function Nf(e){e===401&&hf()}async function gx(e){const a=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!a.ok){Nf(a.status);const s=await Af(a);throw new fn(s.error?.message??`transcript fetch failed: ${a.status}`,a.status,s.error?.code)}return await a.json()}async function k$(e){const a=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!a.ok){Nf(a.status);const s=await Af(a);throw new fn(s.error?.message??`reset failed: ${a.status}`,a.status,s.error?.code)}}async function w$({project:e,prompt:a,provider:s,modelId:r,scope:u,profile:f,signal:g,onEvent:b}){const v={prompt:a};s&&(v.provider=s),r&&(v.modelId=r),u&&(v.scope=u),f&&(v.profile=f);const k=await fetch(`${Cf}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(v),signal:g});if(!k.ok||!k.body){Nf(k.status);const Z=await Af(k);throw new fn(Z.error?.message??`prompt failed: ${k.status}`,k.status,Z.error?.code)}const S=k.body.getReader(),A=new TextDecoder;let N="";const E=()=>{S.cancel().catch(()=>{})};g?.addEventListener("abort",E,{once:!0});try{for(;;){const{value:Z,done:_}=await S.read();if(_)break;N+=A.decode(Z,{stream:!0});let G=N.indexOf(`
|
|
59
59
|
|
|
60
60
|
`);for(;G!==-1;){const K=N.slice(0,G);N=N.slice(G+2);for(const te of K.split(`
|
|
61
61
|
`)){if(!te.startsWith("data:"))continue;const Q=te.slice(5).trim();if(Q)try{b(JSON.parse(Q))}catch{}}G=N.indexOf(`
|
|
62
62
|
|
|
63
|
-
`)}}}finally{g?.removeEventListener("abort",E);try{S.releaseLock()}catch{}}}function k3(e){return!e||e.role!=="assistant"?"":e.content.filter(a=>a.type==="text").map(a=>a.text).join("")}const w$=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],S$=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],Nu=e=>`canonry:aero:provider:${e}`,yx=e=>`canonry:aero:scope:${e}`;function bx(e){if(typeof window>"u")return null;try{return window.localStorage.getItem(e)}catch{return null}}function vx(e,a){if(!(typeof window>"u"))try{window.localStorage.setItem(e,a)}catch{}}function xx(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(e)}catch{}}function j$({projectName:e}){const a=Ps(),{canWrite:s}=ha(),[r,u]=T.useState(!1),[f,g]=T.useState(!1),[b,v]=T.useState([]),[k,S]=T.useState(""),[A,N]=T.useState(!1),[E,Z]=T.useState([]),[_,G]=T.useState(""),[K,te]=T.useState(null),[Q,re]=T.useState(()=>bx(Nu(e))??null),[W,oe]=T.useState(()=>bx(yx(e))==="all"?"all":"read-only"),H=a?"read-only":W,$=T.useRef(null),{ref:Te}=p$([b,_,E]),Ke=T.useRef(null),[Fe,Re]=T.useState(0),ve=T.useMemo(()=>{const V=k.trimStart();if(!V.startsWith("/"))return[];if(/\s/.test(V))return[];const q=V.toLowerCase();return S$.filter(le=>(!a||le.command!=="/run-sweep")&&(le.command.startsWith(q)||le.label.toLowerCase().includes(q.slice(1))))},[k,a]);T.useEffect(()=>{Re(V=>ve.length===0?0:Math.min(V,ve.length-1))},[ve.length]);const Ue=Et({...aU({client:se,path:{name:e}}),staleTime:6e4}),be=T.useMemo(()=>{const V=Ue.data?.providers??[];if(Q){const le=V.find(De=>De.id===Q&&De.configured);if(le)return le}const q=Ue.data?.defaultProvider;return q?V.find(le=>le.id===q)??null:null},[Q,Ue.data]);T.useEffect(()=>{if(!Ue.data||!Q)return;Ue.data.providers.find(q=>q.id===Q&&q.configured)||(re(null),xx(Nu(e)))},[Ue.data,Q,e]);const P=T.useCallback(V=>{re(V),V?vx(Nu(e),V):xx(Nu(e))},[e]),ae=T.useCallback(()=>{a||oe(V=>{const q=V==="all"?"read-only":"all";return vx(yx(e),q),q})},[e,a]);T.useEffect(()=>{if(!r)return;const V=q=>{q.key==="Escape"&&(f?g(!1):u(!1))};return window.addEventListener("keydown",V),()=>window.removeEventListener("keydown",V)},[r,f]),T.useEffect(()=>{if(!r||!be)return;let V=!1;te(null);const q=()=>{V||A||gx(e).then(ye=>{V||v(ye.messages)}).catch(ye=>{V||te(ye instanceof Error?ye.message:"Failed to load transcript")})};q();const De=window.setInterval(q,15e3);return()=>{V=!0,window.clearInterval(De)}},[r,e,A,be]),T.useEffect(()=>()=>{$.current?.abort()},[e]);async function he(V){const q=V.trim();if(!q||A||!be)return;if(a&&/^\/run-sweep(?:\s|$)/i.test(q)){te(Hh);return}te(null),S(""),N(!0),G(""),Z([]);const le={role:"user",content:q,timestamp:Date.now()};v(ye=>[...ye,le]);const De=new AbortController;$.current=De;try{await k$({project:e,prompt:q,provider:Q??void 0,scope:H,signal:De.signal,onEvent:je});const ye=await gx(e);v(ye.messages)}catch(ye){ye.name!=="AbortError"&&te(ye instanceof Error?ye.message:"Prompt failed")}finally{N(!1),G(""),$.current=null}}function je(V){switch(V.type){case"message_update":G(k3(V.message));break;case"message_end":V.message.role==="assistant"&&G("");break;case"tool_execution_start":Z(q=>[...q,{id:V.toolCallId,name:V.toolName,args:V.args,startedAt:Date.now()}]);break;case"tool_execution_end":Z(q=>q.map(le=>le.id===V.toolCallId?{...le,endedAt:Date.now(),isError:V.isError,result:V.result}:le));break;case"error":te(V.message);break}}async function X(){$.current?.abort();try{await x$(e),v([]),te(null)}catch(V){te(V instanceof Error?V.message:"Reset failed")}}const Ie=b.length===0;if(Ue.isPending)return null;if(Ue.isError)return c.jsx("div",{className:"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",children:c.jsxs("div",{role:"status",className:"flex w-full max-w-3xl flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-base bg-bg/95 px-4 py-2 text-sm shadow-lg",children:[c.jsx(du,{className:"h-4 w-4 text-muted","aria-hidden":"true"}),c.jsx("span",{className:"font-medium text-strong",children:"Aero could not check provider availability."}),c.jsx(fe,{variant:"outline",size:"sm",className:"pointer-events-auto ml-auto",onClick:()=>{Ue.refetch()},children:"Try again"})]})});if(!be)return c.jsx("div",{className:"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",children:c.jsxs("div",{role:"status",className:"flex w-full max-w-3xl flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-base bg-bg/95 px-4 py-2 text-sm shadow-lg",children:[c.jsx(du,{className:"h-4 w-4 text-muted","aria-hidden":"true"}),c.jsx("span",{className:"font-medium text-strong",children:"Aero needs an agent provider."}),s?c.jsx(fe,{asChild:!0,variant:"outline",size:"sm",className:"pointer-events-auto ml-auto",children:c.jsx(tt,{to:"/settings",children:"Open Settings"})}):c.jsx("span",{className:"ml-auto text-secondary",children:"Ask an administrator to configure one."})]})});const Ne=r&&f?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",Ae=f?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",ne=f?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return c.jsx("div",{className:Ne,onClick:V=>{f&&V.target===V.currentTarget&&g(!1)},children:c.jsx("div",{className:Ae,children:r?c.jsxs("div",{className:f?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(du,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),c.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:A?"working…":e})]}),c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(A$,{providers:Ue.data?.providers??[],active:be,override:Q,onPick:P,disabled:A}),c.jsx("button",{type:"button",onClick:Ft(X),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:c.jsx(Ux,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>g(V=>!V),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":f?"Collapse":"Expand",title:f?"Collapse":"Expand",children:f?c.jsx(W4,{className:"h-3.5 w-3.5","aria-hidden":"true"}):c.jsx(eA,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>{g(!1),u(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:c.jsx(sr,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),c.jsxs("div",{ref:Te,className:ne,children:[K&&c.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:K}),Ie&&!A&&c.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[c.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",c.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:w$.map(V=>c.jsx("button",{type:"button",onClick:()=>{he(V.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:V.label},V.label))})]}),E$(b,e,Q,H),E.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:E.map(V=>c.jsx(w3,{trail:V},V.id))}),A&&_&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(S3,{content:_})]}),A&&!_&&E.every(V=>V.endedAt!==void 0)&&c.jsx(O$,{})]}),c.jsx(C$,{projectName:e,activeProvider:be,scope:H,onToggleScope:ae,scopeLocked:a,disabled:A}),c.jsxs("div",{className:"relative",children:[ve.length>0&&c.jsx(N$,{matches:ve,selectedIndex:Fe,onHover:Re,onPick:V=>{S(""),Ke.current?.focus(),V.action==="clear"?X():he(V.prompt)}}),c.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:V=>{if(V.preventDefault(),ve.length>0){const q=ve[Fe];S(""),q.action==="clear"?X():he(q.prompt);return}he(k)},children:[c.jsx("textarea",{ref:Ke,value:k,onChange:V=>S(V.target.value),onKeyDown:V=>{if(ve.length>0){if(V.key==="ArrowDown"){V.preventDefault(),Re(q=>(q+1)%ve.length);return}if(V.key==="ArrowUp"){V.preventDefault(),Re(q=>(q-1+ve.length)%ve.length);return}if(V.key==="Tab"){V.preventDefault();const q=ve[Fe];S(`${q.command} `);return}if(V.key==="Escape"){V.preventDefault(),S("");return}}if(V.key==="Enter"&&!V.shiftKey)if(V.preventDefault(),ve.length>0){const q=ve[Fe];S(""),q.action==="clear"?X():he(q.prompt)}else he(k)},placeholder:"Ask Aero, or / for commands…",disabled:A,rows:f?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),c.jsx("button",{type:"submit",disabled:A||!k.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:c.jsx(tA,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):c.jsx("button",{type:"button",onClick:()=>u(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(du,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function A$({providers:e,active:a,override:s,onPick:r,disabled:u}){const[f,g]=T.useState(!1),b=T.useRef(null);if(T.useEffect(()=>{if(!f)return;const k=A=>{b.current?.contains(A.target)||g(!1)},S=A=>{A.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",k),window.addEventListener("keydown",S),()=>{window.removeEventListener("mousedown",k),window.removeEventListener("keydown",S)}},[f]),e.length===0)return null;const v=a?.label.replace(/\s+\(.+\)$/,"")??"No provider";return c.jsxs("div",{ref:b,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>g(k=>!k),disabled:u,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":f,title:a?`${a.label} · ${a.defaultModel}`:"Pick a provider",children:[c.jsx("span",{className:"font-medium text-strong",children:v}),c.jsx(Xu,{className:"h-3 w-3","aria-hidden":"true"})]}),f&&c.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),c.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(k=>{const S=a?.id===k.id,A=s===k.id;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":S,disabled:!k.configured,onClick:()=>{k.configured&&(r(A?null:k.id),g(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:k.configured?k.defaultModel:`Add ${_$(k.id)} in Settings or your environment`,children:[c.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:S?c.jsx(Jh,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:k.label.replace(/\s+\(.+\)$/,"")}),A&&c.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!k.configured&&c.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},k.id)})}),s&&c.jsx("button",{type:"button",onClick:()=>{r(null),g(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function C$({projectName:e,activeProvider:a,scope:s,onToggleScope:r,scopeLocked:u,disabled:f}){const g=a?.label.replace(/\s+\(.+\)$/,"")??null,b=s==="all";return c.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[c.jsx("span",{className:"font-medium text-strong",children:e}),g&&c.jsxs(c.Fragment,{children:[c.jsx("span",{"aria-hidden":"true",children:"·"}),c.jsx("span",{children:g})]}),u?c.jsx("span",{className:"ml-auto",children:"Read only"}):c.jsx("button",{type:"button",onClick:r,disabled:f,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${b?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:b?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:b?"Can make changes":"Read only"})]})}function N$({matches:e,selectedIndex:a,onHover:s,onPick:r}){return c.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),c.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((u,f)=>{const g=f===a;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":g,onMouseEnter:()=>s(f),onClick:()=>r(u),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${g?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[c.jsx("span",{className:"font-medium",children:u.label}),c.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:u.command})]})},u.command)})})]})}function _$(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function z$(e,a){const s=e.timestamp??0;return`${e.role}:${s}:${a}`}function E$(e,a,s,r){const u=[];for(let f=0;f<e.length;f++){const g=e[f],b=z$(g,f);if(g.role==="user"){const v=typeof g.content=="string"?g.content:JSON.stringify(g.content);if(v.startsWith("[system]"))continue;u.push(c.jsx(T$,{text:v,projectName:a,providerOverride:s,scope:r},b));continue}if(g.role==="assistant"){const v=new Map;let k=f+1;for(;k<e.length&&e[k].role==="toolResult";){const N=e[k];v.set(N.toolCallId,N),k++}const S=D$(g,v,g.timestamp??0),A=k3(g);u.push(c.jsxs(T.Fragment,{children:[S.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(N=>c.jsx(w3,{trail:N},N.id))}),A.trim()&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(S3,{content:A})]})]},b)),f=k-1;continue}}return u}function T$({text:e,projectName:a,providerOverride:s,scope:r}){const[u,f]=T.useState(!1),g=T.useMemo(()=>R$(a,e,s,r),[a,e,s,r]);async function b(){try{await navigator.clipboard.writeText(g),f(!0),window.setTimeout(()=>f(!1),1500)}catch{}}return c.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),c.jsx("button",{type:"button",onClick:Ft(b),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:g,children:u?c.jsxs(c.Fragment,{children:[c.jsx(Jh,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):c.jsxs(c.Fragment,{children:[c.jsx($x,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),c.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function R$(e,a,s,r){const u=["canonry","agent","ask",kx(e),kx(a)];return s&&u.push("--provider",s),r==="read-only"&&u.push("--scope","read-only"),u.join(" ")}function kx(e){return`'${e.replace(/'/g,"'\\''")}'`}function D$(e,a,s){const r=[];for(const u of e.content){if(u.type!=="toolCall")continue;const f=u,g=a.get(f.id);r.push({id:f.id,name:f.name,args:f.arguments,startedAt:s,endedAt:g?.timestamp,isError:g?.isError,result:g?.content})}return r}function w3({trail:e}){const[a,s]=T.useState(!1),r=e.endedAt===void 0,u=!r&&e.isError===!0,f=e.endedAt!=null?e.endedAt-e.startedAt:null,g=f==null||f<0?null:f<1e3?`${f}ms`:`${(f/1e3).toFixed(1)}s`,b=u?"border-negative-800/50":r?"border-positive-800/50":"border-mono-800/70",v=u?"bg-negative-950/20":r?"bg-positive-950/20":"bg-surface-hover";return c.jsxs("div",{className:`rounded-md border ${b} ${v} font-mono`,children:[c.jsxs("button",{type:"button",onClick:()=>s(k=>!k),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":a,children:[c.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?c.jsx(Zo,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):u?c.jsx(Gx,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):c.jsx(nA,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),c.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),c.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[r?c.jsx("span",{className:"text-positive-400",children:"running…"}):c.jsxs(c.Fragment,{children:[c.jsx("span",{children:u?"failed":"ok"}),g&&c.jsx("span",{children:g})]}),c.jsx(Wh,{className:`h-3 w-3 transition-transform ${a?"rotate-90":""}`,"aria-hidden":"true"})]})]}),a&&c.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),c.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:wx(e.args)}),!r&&e.result!==void 0&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:u?"Error":"Result"}),c.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:wx(e.result)})]})]})]})}function wx(e){try{const a=typeof e=="string"?e:JSON.stringify(e,null,2);return a.length>2e3?`${a.slice(0,2e3)}
|
|
64
|
-
… (${a.length-2e3} more chars)`:a}catch{return String(e)}}function S3({content:e}){return c.jsx("div",{className:"text-heading",children:c.jsx(yA,{components:{h1:a=>c.jsx("h1",{...a,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:a=>c.jsx("h2",{...a,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:a=>c.jsx("h3",{...a,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:a=>c.jsx("h4",{...a,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:a=>c.jsx("p",{...a,className:"mb-2 leading-relaxed"}),ul:a=>c.jsx("ul",{...a,className:"mb-2 ml-4 list-disc space-y-1"}),ol:a=>c.jsx("ol",{...a,className:"mb-2 ml-4 list-decimal space-y-1"}),li:a=>c.jsx("li",{...a,className:"marker:text-mono-600"}),strong:a=>c.jsx("strong",{...a,className:"font-semibold text-primary"}),em:a=>c.jsx("em",{...a,className:"text-strong"}),code:({children:a,...s})=>c.jsx("code",{...s,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:a}),pre:a=>c.jsx("pre",{...a,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:a=>c.jsx("a",{...a,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:a=>c.jsx("div",{className:"mb-2 overflow-x-auto",children:c.jsx("table",{...a,className:"w-full border-collapse text-xs"})}),thead:a=>c.jsx("thead",{...a,className:"border-b border-base"}),th:a=>c.jsx("th",{...a,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:a=>c.jsx("tr",{...a,className:"border-b border-mono-900"}),td:a=>c.jsx("td",{...a,className:"px-2 py-1 text-strong"}),blockquote:a=>c.jsx("blockquote",{...a,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>c.jsx("hr",{className:"my-3 border-base"})},children:e})})}function O$(){return c.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[c.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),c.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),c.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function q$(){const e=Ox(),a=/^\/projects\/([^/]+)/.exec(e.pathname),s=a?decodeURIComponent(a[1]):null,r=Et({...Zs({client:se}),enabled:s!==null,staleTime:6e4});if(!s)return null;const u=r.data??[],f=u.find(g=>g.id===s)??u.find(g=>g.name===s);return f?c.jsx(j$,{projectName:f.name},f.name):null}const Qh={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",googleAds:"getApiV1ProjectsByNameGoogleAds",gtm:"getApiV1ProjectsByNameGtm",conversionTracking:"getApiV1ProjectsByNameConversionTracking",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",visibilityReport:"getApiV1ProjectsByNameVisibilityReport",queryTracking:"getApiV1ProjectsByNameQueryTracking",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function mn(e,a){const s=Qh[a];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(s)}})}function IY(e,a){return e.invalidateQueries({predicate:s=>{const r=s.queryKey[0];return r?.path?.name!==a||typeof r._id!="string"?!1:r._id.startsWith("getApiV1ProjectsByNameMeasurement")||r._id===Qh.queryTracking||r._id===Qh.visibilityReport||r._id==="getApiV1ProjectsByNameQueries"||r._id==="getApiV1ProjectsByName"}})}function Rl(e,a,s){switch(e.invalidateQueries({queryKey:gf({client:se})}),e.invalidateQueries({queryKey:ts({client:se})}),mn(e,"runs"),a){case ze["answer-visibility"]:Kh(e,s,"none"),mn(e,"visibilityReport"),mn(e,"queryTracking");return;case ze["backlink-extract"]:return;case ze["site-audit"]:mn(e,"technicalAeo");return;case ze["gsc-sync"]:case ze["inspect-sitemap"]:mn(e,"gsc");return;case ze["ga-sync"]:mn(e,"ga");return;case ze["traffic-sync"]:mn(e,"ga"),mn(e,"traffic");return;case ze["bing-inspect"]:case ze["bing-inspect-sitemap"]:mn(e,"bing");return;case ze["aeo-discover-seed"]:case ze["aeo-discover-probe"]:Kh(e,s);return;case ze["gbp-sync"]:mn(e,"gbp");return;case ze["ads-sync"]:mn(e,"ads");return;case ze["google-ads-sync"]:mn(e,"googleAds"),mn(e,"conversionTracking");return;case ze["gtm-sync"]:mn(e,"gtm"),mn(e,"conversionTracking");return;default:return a}}const Sx=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:Lx},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:dA},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:mA}],jx=e=>({label:e,state:"checking",detail:"Checking service health"}),B$={apiStatus:jx("API"),workerStatus:jx("Worker")};function P$(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function M$(e){const a=jl(e.kind);return e.status==="completed"?`${a} completed`:e.status==="partial"?`${a} completed with partial results`:e.status==="cancelled"?`${a} cancelled`:`${a} failed`}function I$(e,a){return e.error?`${a}: ${G0(e.error)}`:e.location?`${a} · ${e.location}`:a}function Ax(e,a,s){if(a)return a;const r=s.find(u=>u.id===e);return r?.displayName||r?.name||e}function V$(e,a){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,a>0?`${a} skipped at queue time`:null].filter(Boolean).join(", ")}function L$(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function U$(){const e=da(),a=T.useSyncExternalStore(ZS,gi,gi),s=Object.keys(a.runs).length>0||Object.keys(a.batches).length>0,r=Et({...yf({client:se}),enabled:s,staleTime:nr,refetchInterval:3e3}),u=Et({...Zs({client:se}),enabled:s}),f=T.useRef({}),g=T.useCallback(()=>{r.refetch()},[r.refetch]);return T.useEffect(()=>{s&&g()},[s,g]),T.useEffect(()=>{if(!s||typeof window>"u")return;const b=()=>{document.visibilityState==="visible"&&g()};return window.addEventListener("focus",g),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",g),document.removeEventListener("visibilitychange",b)}},[s,g]),T.useEffect(()=>{const b=r.data??[],v=u.data??[],k=Object.fromEntries(b.map(A=>[A.id,A])),S=Object.fromEntries(b.map(A=>[A.id,A.status]));for(const A of Object.values(a.runs)){const N=k[A.runId];if(!N||!hU(N.status)||(f.current[N.id]??A.lastAnnouncedStatus)===N.status)continue;const Z=v.find(G=>G.id===N.projectId);if(Z&&Rl(e,N.kind,Z.name),A.sourceAction==="run-all"){ch(N.id);continue}const _=Ax(N.projectId,A.projectLabel,v);rn({title:M$(N),detail:I$(N,_),tone:P$(N.status),dedupeKey:`run:${N.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:N.id}}),ch(N.id)}if(r.data!==void 0){const A=new Set(b.map(E=>E.id)),N=gU(Object.values(a.runs),A,Date.now(),fU);for(const E of N){const Z=v.find(_=>_.id===E.projectId);Z&&Rl(e,E.kind,Z.name),E.sourceAction!=="run-all"&&rn({title:`${jl(E.kind)} status unavailable`,detail:Ax(E.projectId,E.projectLabel,v),tone:"neutral",dedupeKey:`run-stale:${E.runId}`,dedupeMode:"replace"}),ch(E.runId)}}for(const A of Object.values(a.batches)){const N=yU(A.runIds,k);N.finished&&(rn({title:"Run-all batch finished",detail:V$(N,A.skippedCount),tone:L$(N),dedupeKey:`batch:${A.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),pU(A.batchId))}f.current=S},[u.data,r.data,a,e]),null}function G$(){const{account:e,isAdmin:a}=ha(),s=Kl(),r=T.useMemo(()=>TS(),[]),u=T.useMemo(dI,[]),f=T.useMemo(mI,[]),g=T.useMemo(pI,[]),b=Ox(),{dashboard:v,isLoading:k,refetch:S}=Ed(void 0,{includeSettings:!r,includeOverviews:!1,pauseProjectPolling:b.pathname==="/setup"}),E=Sf(!s,s?.health).data??s?.health??B$,{runId:Z,evidenceId:_,closeDrawer:G}=jf(),[K,te]=T.useState(!1),[Q,re]=T.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[W,oe]=T.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[H]=T.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),$=H?{current:E.apiStatus.version??"0.0.0",latest:H,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:E.apiStatus.updateAvailable,Te=g&&$&&$.latest!==W,Ke=()=>{if($){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",$.latest)}catch{}oe($.latest)}},Fe=()=>{const de=!Q;try{de?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}re(de)},Re=i$(Z),ve=Re.data??null,Ue=Re.isLoading;T.useEffect(()=>{ve&&ve.status!=="running"&&ve.status!=="queued"&&S()},[ve?.status,S]),T.useEffect(()=>{te(!1)},[b.pathname]),T.useEffect(()=>{if(typeof window>"u"||!Z&&!_)return;const de=Me=>{Me.key==="Escape"&&G()};return window.addEventListener("keydown",de),()=>{window.removeEventListener("keydown",de)}},[Z,_,G]);const be=v??s?.dashboard??null,P=b.pathname==="/setup",ae=P&&be!==null&&be.portfolioOverview.projects.length===0,he=P&&(b.search.onboarding==="site-health"||b.search.onboarding==="first-run"),[je,X]=T.useState(ae);T.useEffect(()=>{P?ae&&X(!0):X(!1)},[ae,P]);const Ne=P&&(he||ae||je||P&&be===null),Ae=Ne?"app-shell-focus":Q?"app-shell-sidebar-hidden":"",ne=Z?(be?zG(be,Z):void 0)??(ve?zd(ve,be?.projects.find(de=>de.project.id===ve.projectId)?.project.displayName??be?.projects.find(de=>de.project.id===ve.projectId)?.project.name??"Unknown project"):void 0):void 0,V=T.useMemo(()=>SG(b.pathname,be),[b.pathname,be]),{commandCenter:q,evidenceLoading:le,evidenceError:De,isError:ye,refetch:Je}=t$(_?V:null,{evidence:!0}),Ge=T.useMemo(()=>{if(_)return TG(q,be,_)},[_,q,be]),Be=(()=>{const de=b.pathname;if(de==="/")return"Portfolio";if(de==="/projects")return"Projects";if(de==="/runs")return"Runs";if(de==="/history")return"History";if(de==="/settings")return"Settings";if(de==="/setup")return"Setup";if(de==="/backlinks")return"Backlink data";if(de==="/traffic"||de.startsWith("/traffic/"))return"Traffic sources";if(de.startsWith("/projects/")){const $t=de.split("/").filter(Boolean)[1];if($t&&be){const Sn=be.projects.find(ga=>ga.project.id===$t);if(Sn)return Sn.project.name}return"Project"}return"Not found"})();if(r){const de=!r.views||r.views.includes(pV(b.pathname));return c.jsxs("div",{className:"app-shell app-shell-embed","data-theme":yV(r.theme),style:bV(r.theme),children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx("main",{id:"content",className:"page-shell",children:de?c.jsx(hh,{}):c.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return c.jsxs(c.Fragment,{children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx(d$,{}),c.jsxs("div",{className:`app-shell ${Ae}${Sl()?" app-shell-demo":""}`,children:[!Ne&&!Q&&c.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[c.jsx("div",{className:"sidebar-brand",children:c.jsx(ox,{version:E.apiStatus.version,updateAvailable:Te?$:null,onDismissUpdate:Ke})}),c.jsxs("nav",{className:"sidebar-nav",children:[c.jsxs(tt,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(aA,{className:"sidebar-icon"}),c.jsx("span",{children:"Portfolio"})]}),c.jsxs(tt,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(iA,{className:"sidebar-icon"}),c.jsx("span",{children:"Projects"})]}),c.jsxs(tt,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(sA,{className:"sidebar-icon"}),c.jsx("span",{children:"Runs"})]}),c.jsxs(tt,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(oA,{className:"sidebar-icon"}),c.jsx("span",{children:"History"})]}),c.jsxs(tt,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(rA,{className:"sidebar-icon"}),c.jsx("span",{children:"Traffic sources"})]}),!Sl()&&c.jsxs(tt,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(lA,{className:"sidebar-icon"}),c.jsx("span",{children:"Backlink data"})]}),a&&c.jsxs(tt,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(cA,{className:"sidebar-icon"}),c.jsx("span",{children:"Settings"})]}),k?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(de=>c.jsxs("div",{className:"sidebar-skeleton-item",children:[c.jsx("span",{className:"skeleton-circle size-2"}),c.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+de*15}%`}})]},de))]}):be&&be.projects.length>0?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),be.projects.map(de=>{const Me=de.visibilitySummary.tone;return c.jsxs(tt,{to:"/projects/$projectName",params:{projectName:de.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[c.jsx("span",{className:`sidebar-dot sidebar-dot-${Me}`}),c.jsx("span",{children:de.project.displayName||de.project.name})]},de.project.id)})]}):k?null:c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Resources"}),a&&c.jsxs(tt,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(uA,{className:"sidebar-icon"}),c.jsx("span",{children:"Setup"})]})]})]}),e&&c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:Vv()}):null]}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm",onClick:Ft(async()=>{await $v(),window.location.reload()}),children:"Sign out"})]}),u?c.jsx("div",{className:"sidebar-footer",children:Sx.map(({label:de,href:Me,Icon:$t})=>c.jsx("a",{className:"sidebar-footer-icon",href:Me,target:"_blank",rel:"noopener noreferrer",title:de,"aria-label":de,children:c.jsx($t,{className:"size-4"})},Me))}):null]}),c.jsxs("div",{className:"main-area",children:[c.jsxs("header",{className:"topbar",children:[c.jsxs("div",{className:"topbar-left",children:[!Ne&&c.jsx(fe,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":Q?"Show sidebar":"Hide sidebar","aria-controls":Q?void 0:"desktop-sidebar","aria-expanded":!Q,title:Q?"Show sidebar":"Hide sidebar",onClick:Fe,children:Q?c.jsx(pA,{className:"size-4"}):c.jsx(hA,{className:"size-4"})}),c.jsx("div",{className:"topbar-brand-mobile",children:c.jsx(ox,{compact:!0})}),c.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[c.jsx(tt,{to:"/",children:"Home"}),c.jsx(Wh,{className:"breadcrumb-sep size-3"}),c.jsx("span",{className:"breadcrumb-current",children:Be})]})]}),c.jsxs("div",{className:"topbar-actions",children:[c.jsx(m$,{}),c.jsxs("div",{className:"health-pill-row",children:[c.jsxs("span",{className:`health-pill health-pill-${E.apiStatus.state}`,title:ar(E.apiStatus),children:["API ",E.apiStatus.state==="ok"?"ok":E.apiStatus.state]}),c.jsx("span",{className:`health-pill health-pill-${E.workerStatus.state}`,title:ar(E.workerStatus),children:`Worker ${E.workerStatus.state==="ok"?"ok":E.workerStatus.state}`})]}),Ne?null:c.jsxs(fe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":K,"aria-controls":"mobile-nav",onClick:()=>te(de=>!de),children:[c.jsx(fA,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),Ne?null:c.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${K?"mobile-nav-open":""}`,children:[c.jsxs(fe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>te(!1),children:[c.jsx(sr,{className:"size-5"}),c.jsx("span",{className:"sr-only",children:"Close navigation"})]}),c.jsx(tt,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),c.jsx(tt,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),c.jsx(tt,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),c.jsx(tt,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),c.jsx(tt,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),!Sl()&&c.jsx(tt,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),a&&c.jsx(tt,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),be&&be.projects.length>0?c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),be.projects.map(de=>c.jsx(tt,{to:"/projects/$projectName",params:{projectName:de.project.name},className:"mobile-nav-link",children:de.project.name},de.project.id))]}):null,e&&c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:Vv()}):null]}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:Ft(async()=>{await $v(),window.location.reload()}),children:"Sign out"})]})]})]}),c.jsx("main",{id:"content",className:`page-shell ${f&&V?"pb-20":""}`.trim(),children:k&&!s?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-40"}),c.jsx("div",{className:"skeleton-text-sm w-72"})]}),c.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(de=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text w-full"}),c.jsx("div",{className:"skeleton-text-sm w-3/4"})]},de))}),c.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(de=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-20"}),c.jsx("div",{className:"space-y-2",children:[1,2,3].map(Me=>c.jsx("div",{className:"skeleton-text-sm w-full"},Me))})]},de))})]}):c.jsx(hh,{})}),c.jsxs("footer",{className:"footer",children:[c.jsxs("span",{className:"footer-brand",children:[c.jsx("span",{children:c.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),E.apiStatus.version&&E.apiStatus.version!=="unknown"?c.jsxs("span",{className:"footer-version",children:["v",E.apiStatus.version]}):null]}),u?c.jsx("div",{className:"footer-links",children:Sx.map(({label:de,href:Me,Icon:$t})=>c.jsx("a",{href:Me,target:"_blank",rel:"noopener noreferrer",title:de,"aria-label":de,className:"footer-icon",children:c.jsx($t,{className:"size-3.5"})},Me))}):null]})]}),Z&&!ne&&Ue?c.jsx(Cu,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:G,children:c.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,Z&&!ne&&Re.isError?c.jsx(Cu,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:G,children:c.jsx("p",{className:"text-sm text-negative",children:Re.error instanceof Error?Re.error.message:"Run details are unavailable."})}):null,ne?c.jsxs(Cu,{open:!0,title:ne.summary,subtitle:`${ne.projectName} · ${ne.kindLabel}`,onClose:G,children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[c.jsx(wf,{status:ne.status}),c.jsx("span",{className:"text-secondary",children:ne.startedAt}),c.jsx("span",{className:"text-muted",children:ne.duration}),c.jsx("span",{className:"text-faint",children:ne.triggerLabel})]}),ne.status==="failed"&&ne.statusDetail&&c.jsx("p",{className:"mt-2 text-sm text-negative",children:ne.statusDetail}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Ue?c.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):ve?.snapshots&&ve.snapshots.length>0?c.jsxs("div",{className:"space-y-2",children:[ve.snapshots.map(de=>c.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[c.jsx("p",{className:"text-sm font-medium text-strong truncate",children:de.query??"Unknown query"}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx(uG,{provider:de.provider}),c.jsx(d3,{variant:de.citationState===Uu.cited?"success":"neutral",children:de.citationState})]})]}),de.model&&c.jsx("p",{className:"text-[11px] text-muted font-mono",children:de.model}),de.citedDomains.length>0&&c.jsxs("p",{className:"text-xs text-muted mt-1",children:[c.jsx("span",{className:"text-secondary",children:"Sources:"})," ",de.citedDomains.join(", ")]}),de.citedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",de.citedCompetitorDomains.join(", ")]}),de.mentionedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor mentioned: ",de.mentionedCompetitorDomains.join(", ")]}),de.groundingSources&&de.groundingSources.length>0&&c.jsxs("details",{className:"mt-2",children:[c.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[de.groundingSources.length," grounding source",de.groundingSources.length!==1?"s":""]}),c.jsx("ul",{className:"mt-1 space-y-0.5",children:de.groundingSources.map((Me,$t)=>{const Sn=$h(Me.uri),ga=Me.title||Me.uri;return c.jsx("li",{className:"text-xs text-muted truncate",children:Sn?c.jsx("a",{href:Sn,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:ga}):c.jsx("span",{children:ga})},$t)})})]}),de.answerText&&c.jsxs("details",{className:"mt-1",children:[c.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),c.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:de.answerText})]})]},de.id)),ve.status==="running"&&c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):ve&&ve.status==="running"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):ve&&ve.status==="queued"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):ve&&ve.error?c.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[c.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:uV(ve.error)})]}):c.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,_&&!Ge?c.jsx(Cu,{open:!0,title:le?"Loading answer":"Answer unavailable",subtitle:"Query evidence",onClose:G,children:le?c.jsx("p",{role:"status",className:"text-sm text-secondary",children:"Loading answer…"}):c.jsxs(c.Fragment,{children:[c.jsx("p",{role:"alert",className:"text-sm text-secondary",children:De||ye?"Could not load this answer.":"This answer is not in the available query evidence."}),c.jsx(fe,{type:"button",variant:"outline",onClick:()=>{Je()},children:"Retry"})]})}):null,Ge?c.jsx(xG,{evidence:Ge.evidence,project:Ge.project,onClose:G}):null,c.jsx(U$,{}),c.jsx(r$,{}),f?c.jsx(q$,{}):null]})]})}class $$ extends T.Component{state={error:null};static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,s){console.error("[ErrorBoundary]",a,s.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?c.jsx("div",{className:"page-container",children:c.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[c.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:c.jsx(Gx,{className:"size-6 text-negative-400"})}),c.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),c.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),c.jsxs("div",{className:"flex gap-3 mt-2",children:[c.jsxs(fe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[c.jsx(Ux,{className:"size-3.5 mr-1.5"}),"Try again"]}),c.jsx(fe,{variant:"secondary",size:"sm",onClick:()=>{const a=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=a||"/"},children:"Go home"})]})]})}):this.props.children}}const ua=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...a}));ua.displayName="Card";const Ko=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("flex flex-col gap-1.5 p-5",e),...a}));Ko.displayName="CardHeader";const j3=T.forwardRef(({className:e,...a},s)=>c.jsx("h3",{ref:s,className:fa("font-medium tracking-tight text-primary",e),...a}));j3.displayName="CardTitle";const Qu=T.forwardRef(({className:e,...a},s)=>c.jsx("p",{ref:s,className:fa("text-sm text-muted",e),...a}));Qu.displayName="CardDescription";const Ms=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("p-5 pt-0",e),...a}));Ms.displayName="CardContent";const K$=20,H$=6;function Q$({points:e,tone:a}){const s=T.useId();if(e.length===0)return null;const r=42,u=132,f=5,g=u-f*2,b=r-f*2,v=b-H$,k=G=>f+G/Math.max(e.length-1,1)*g,S=Pq(e),A=Math.min(...e),N=Math.max(...e),E=Math.max(N-A,K$),Z=(N+A)/2-E/2,_=e.map((G,K)=>({x:k(K),y:f+(1-(G-Z)/E)*v}));return c.jsxs("svg",{className:`sparkline sparkline-${a}${S?" sparkline-provisional":""}`,viewBox:`0 0 ${u} ${r}`,"aria-hidden":"true",children:[c.jsx("defs",{children:c.jsx("clipPath",{id:s,children:c.jsx("rect",{x:f,y:f,width:g,height:b,rx:"8"})})}),c.jsx("line",{className:"sparkline-guide",x1:f,x2:u-f,y1:r-f,y2:r-f}),_.length===1?c.jsx("circle",{className:"sparkline-point",cx:_[0].x,cy:_[0].y,r:"3"}):c.jsx("polyline",{clipPath:`url(#${s})`,points:_.map(G=>`${G.x},${G.y}`).join(" "),vectorEffect:"non-scaling-stroke"})]})}function F$({project:e}){return c.jsxs(tt,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[c.jsx("div",{className:"project-row-chart",children:c.jsx(Q$,{points:e.trend,tone:HS(e.lastRun.status)})}),c.jsxs("div",{className:"project-row-primary",children:[c.jsxs("div",{children:[c.jsx("p",{className:"project-name",children:e.project.name}),c.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),c.jsx("p",{className:"project-insight",children:e.insight})]}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),c.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.hasMeasurement===!1?"Not measured":e.mentionScore}),c.jsx("p",{className:`metric-inline-caption${e.providerCoverage?" text-caution":""}`,title:e.providerCoverage,children:e.providerCoverage?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"sr-only",children:"Partial sweep: "}),e.providerCoverage]}):e.mentionDelta})]})}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsxs("p",{className:"metric-inline-label",children:[c.jsx("span",{"aria-hidden":"true",children:"Pressure"}),c.jsx("span",{className:"sr-only",children:"Competitor pressure"})]}),c.jsx("p",{className:"metric-inline-value",children:e.hasMeasurement===!1?"Not measured":e.competitorPressureLabel}),c.jsx("p",{className:"metric-inline-caption","aria-hidden":"true"})]})}),c.jsx("span",{className:"project-row-link",children:c.jsx(Wh,{className:"h-4 w-4 text-muted"})})]})}function Z$(){const{isAdmin:e}=ha(),a=Kl(),{dashboard:s,isLoading:r,isError:u,refetch:f}=Ed(),g=s??a?.dashboard,v=Sf(!a,a?.health),{openRun:k}=jf();if(u&&!g)return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio unavailable"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project list."})]})}),c.jsxs("div",{className:"max-w-xl rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Your projects have not been changed."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",variant:"secondary",className:"mt-4",onClick:()=>{f()},children:"Retry loading portfolio"})]})]});if(!g||r)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-32"}),c.jsx("div",{className:"skeleton-text-sm w-64"})]}),c.jsx("div",{className:"space-y-3",children:[1,2,3].map(_=>c.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-2",children:[c.jsx("div",{className:"skeleton-text w-36"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},_))})]});const S=g.portfolioOverview,A=S.projects.length>0&&S.projects.every(_=>_.hasMeasurement===!1),N=S.attentionItems.map(_=>A&&_.id==="attention_stable"?{..._,tone:"neutral",title:"Awaiting first measurement",detail:"Visibility results will appear after the first sweep."}:_),E=v.data??a?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},Z=sU(S.systemHealth.filter(_=>e||_.id==="api"||_.id==="worker"),E,g.settings);return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio"}),c.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]})}),S.projects.length>0?c.jsx("div",{className:"project-list project-list-scrollable",children:S.projects.map(_=>c.jsx(F$,{project:_},_.project.id))}):c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h3",{children:S.emptyState?.title??"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:S.emptyState?.detail}),c.jsx(fe,{size:"sm",asChild:!0,children:c.jsx(tt,{to:S.emptyState?.ctaHref==="/setup"||!S.emptyState?.ctaHref?"/setup":"/",children:S.emptyState?.ctaLabel??"Launch setup"})})]}),c.jsxs("div",{className:"overview-secondary-grid",children:[N.length>0&&c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),c.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),c.jsx("div",{className:"attention-list attention-list-scrollable",children:N.map(_=>_.href?c.jsxs(tt,{to:_.href,className:`attention-item attention-item-${_.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:_.title}),c.jsx("p",{className:"attention-detail",children:_.detail})]}),_.actionLabel&&c.jsx("span",{className:"attention-action",children:_.actionLabel})]},_.id):c.jsxs("div",{className:`attention-item attention-item-static attention-item-${_.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:_.title}),c.jsx("p",{className:"attention-detail",children:_.detail})]}),_.actionLabel&&c.jsx("span",{className:"attention-action",children:_.actionLabel})]},_.id))})]}),c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),c.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),c.jsx("div",{className:"compact-stack compact-stack-scrollable",children:S.recentRuns.length>0?S.recentRuns.map(_=>c.jsxs("button",{className:"compact-run",type:"button",onClick:()=>k(_.id),children:[c.jsxs("div",{children:[c.jsx("p",{className:"compact-run-title",children:_.projectName}),c.jsx("p",{className:"compact-run-detail",children:_.summary})]}),c.jsx(wf,{status:_.status})]},_.id)):c.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),c.jsxs("section",{className:"page-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),c.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),c.jsx("div",{className:"divide-y divide-default border-y border-default",children:Z.map(_=>{const G=_.id==="api"?E.apiStatus:_.id==="worker"?E.workerStatus:void 0,K=G?G.state==="ok"?void 0:ar(G):_.tone==="positive"?void 0:_.meta;return c.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:_.label}),K&&c.jsx("p",{className:"mt-1 text-sm text-secondary",children:K})]}),c.jsx(pn,{tone:_.tone,title:G?ar(G):_.meta,children:_.detail})]},_.id)})})]})]})}const Y$='a, button, input, select, textarea, label, [role="button"], [role="link"], [role="checkbox"], [role="menuitem"]';function X$(e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return!1;const a=e.target;if(a&&typeof a.closest=="function"&&a.closest(Y$))return!1;const s=typeof window<"u"?window.getSelection():null;return!(s&&!s.isCollapsed&&s.toString().trim()!=="")}function J$({onApplied:e}){const{canWrite:a}=ha(),[s,r]=T.useState(""),[u,f]=T.useState(!1),[g,b]=T.useState([]),[v,k]=T.useState([]);if(gI()||!a)return null;const S=async()=>{if(!s.trim())return;f(!0),b([]),k([]);const A=bA(s),N=[],E=[];for(let Z=0;Z<A.length;Z++){const _=A[Z];if(_.errors.length>0){N.push(`Document ${Z+1}: ${_.errors[0]?.message}`);continue}const G=_.toJSON();if(!(!G||typeof G!="object"))try{const K=await VI(G);E.push(`Applied "${K.displayName||K.name}" (revision ${K.configRevision})`)}catch(K){N.push(`Document ${Z+1}: ${d_(K)}`)}}b(E),k(N),f(!1),E.length>0&&(rn({title:"YAML applied",detail:`Applied ${E.length} document${E.length===1?"":"s"} successfully.`,tone:N.length>0?"caution":"positive",dedupeKey:"yaml:apply",dedupeMode:"replace"}),e())};return c.jsxs("section",{className:"mt-8",children:[c.jsx("div",{className:"page-section-divider"}),c.jsx("div",{className:"section-head mt-6",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Config as code"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Apply YAML"})]})}),c.jsxs("p",{className:"text-muted text-sm mb-3",children:["Paste a ",c.jsx("code",{className:"text-secondary",children:"canonry.yaml"})," config (multi-document YAML with ",c.jsx("code",{className:"text-secondary",children:"---"})," separators supported)."]}),c.jsx("textarea",{className:"setup-input w-full font-mono text-xs",rows:10,placeholder:`apiVersion: canonry/v1
|
|
63
|
+
`)}}}finally{g?.removeEventListener("abort",E);try{S.releaseLock()}catch{}}}function k3(e){return!e||e.role!=="assistant"?"":e.content.filter(a=>a.type==="text").map(a=>a.text).join("")}const S$=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],j$=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],Nu=e=>`canonry:aero:provider:${e}`,yx=e=>`canonry:aero:scope:${e}`;function bx(e){if(typeof window>"u")return null;try{return window.localStorage.getItem(e)}catch{return null}}function vx(e,a){if(!(typeof window>"u"))try{window.localStorage.setItem(e,a)}catch{}}function xx(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(e)}catch{}}function A$({projectName:e}){const a=Ps(),{canWrite:s}=ha(),[r,u]=T.useState(!1),[f,g]=T.useState(!1),[b,v]=T.useState([]),[k,S]=T.useState(""),[A,N]=T.useState(!1),[E,Z]=T.useState([]),[_,G]=T.useState(""),[K,te]=T.useState(null),[Q,re]=T.useState(()=>bx(Nu(e))??null),[W,oe]=T.useState(()=>bx(yx(e))==="all"?"all":"read-only"),H=a?"read-only":W,$=T.useRef(null),{ref:Te}=h$([b,_,E]),Ke=T.useRef(null),[Fe,Re]=T.useState(0),ve=T.useMemo(()=>{const V=k.trimStart();if(!V.startsWith("/"))return[];if(/\s/.test(V))return[];const q=V.toLowerCase();return j$.filter(le=>(!a||le.command!=="/run-sweep")&&(le.command.startsWith(q)||le.label.toLowerCase().includes(q.slice(1))))},[k,a]);T.useEffect(()=>{Re(V=>ve.length===0?0:Math.min(V,ve.length-1))},[ve.length]);const Ue=Et({...iU({client:se,path:{name:e}}),staleTime:6e4}),be=T.useMemo(()=>{const V=Ue.data?.providers??[];if(Q){const le=V.find(De=>De.id===Q&&De.configured);if(le)return le}const q=Ue.data?.defaultProvider;return q?V.find(le=>le.id===q)??null:null},[Q,Ue.data]);T.useEffect(()=>{if(!Ue.data||!Q)return;Ue.data.providers.find(q=>q.id===Q&&q.configured)||(re(null),xx(Nu(e)))},[Ue.data,Q,e]);const P=T.useCallback(V=>{re(V),V?vx(Nu(e),V):xx(Nu(e))},[e]),ae=T.useCallback(()=>{a||oe(V=>{const q=V==="all"?"read-only":"all";return vx(yx(e),q),q})},[e,a]);T.useEffect(()=>{if(!r)return;const V=q=>{q.key==="Escape"&&(f?g(!1):u(!1))};return window.addEventListener("keydown",V),()=>window.removeEventListener("keydown",V)},[r,f]),T.useEffect(()=>{if(!r||!be)return;let V=!1;te(null);const q=()=>{V||A||gx(e).then(ye=>{V||v(ye.messages)}).catch(ye=>{V||te(ye instanceof Error?ye.message:"Failed to load transcript")})};q();const De=window.setInterval(q,15e3);return()=>{V=!0,window.clearInterval(De)}},[r,e,A,be]),T.useEffect(()=>()=>{$.current?.abort()},[e]);async function he(V){const q=V.trim();if(!q||A||!be)return;if(a&&/^\/run-sweep(?:\s|$)/i.test(q)){te(Hh);return}te(null),S(""),N(!0),G(""),Z([]);const le={role:"user",content:q,timestamp:Date.now()};v(ye=>[...ye,le]);const De=new AbortController;$.current=De;try{await w$({project:e,prompt:q,provider:Q??void 0,scope:H,signal:De.signal,onEvent:je});const ye=await gx(e);v(ye.messages)}catch(ye){ye.name!=="AbortError"&&te(ye instanceof Error?ye.message:"Prompt failed")}finally{N(!1),G(""),$.current=null}}function je(V){switch(V.type){case"message_update":G(k3(V.message));break;case"message_end":V.message.role==="assistant"&&G("");break;case"tool_execution_start":Z(q=>[...q,{id:V.toolCallId,name:V.toolName,args:V.args,startedAt:Date.now()}]);break;case"tool_execution_end":Z(q=>q.map(le=>le.id===V.toolCallId?{...le,endedAt:Date.now(),isError:V.isError,result:V.result}:le));break;case"error":te(V.message);break}}async function X(){$.current?.abort();try{await k$(e),v([]),te(null)}catch(V){te(V instanceof Error?V.message:"Reset failed")}}const Ie=b.length===0;if(Ue.isPending)return null;if(Ue.isError)return c.jsx("div",{className:"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",children:c.jsxs("div",{role:"status",className:"flex w-full max-w-3xl flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-base bg-bg/95 px-4 py-2 text-sm shadow-lg",children:[c.jsx(du,{className:"h-4 w-4 text-muted","aria-hidden":"true"}),c.jsx("span",{className:"font-medium text-strong",children:"Aero could not check provider availability."}),c.jsx(fe,{variant:"outline",size:"sm",className:"pointer-events-auto ml-auto",onClick:()=>{Ue.refetch()},children:"Try again"})]})});if(!be)return c.jsx("div",{className:"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",children:c.jsxs("div",{role:"status",className:"flex w-full max-w-3xl flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-base bg-bg/95 px-4 py-2 text-sm shadow-lg",children:[c.jsx(du,{className:"h-4 w-4 text-muted","aria-hidden":"true"}),c.jsx("span",{className:"font-medium text-strong",children:"Aero needs an agent provider."}),s?c.jsx(fe,{asChild:!0,variant:"outline",size:"sm",className:"pointer-events-auto ml-auto",children:c.jsx(tt,{to:"/settings",children:"Open Settings"})}):c.jsx("span",{className:"ml-auto text-secondary",children:"Ask an administrator to configure one."})]})});const Ne=r&&f?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",Ae=f?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",ne=f?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return c.jsx("div",{className:Ne,onClick:V=>{f&&V.target===V.currentTarget&&g(!1)},children:c.jsx("div",{className:Ae,children:r?c.jsxs("div",{className:f?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(du,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),c.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),c.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:A?"working…":e})]}),c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(C$,{providers:Ue.data?.providers??[],active:be,override:Q,onPick:P,disabled:A}),c.jsx("button",{type:"button",onClick:Ft(X),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:c.jsx(Ux,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>g(V=>!V),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":f?"Collapse":"Expand",title:f?"Collapse":"Expand",children:f?c.jsx(W4,{className:"h-3.5 w-3.5","aria-hidden":"true"}):c.jsx(eA,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),c.jsx("button",{type:"button",onClick:()=>{g(!1),u(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:c.jsx(sr,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),c.jsxs("div",{ref:Te,className:ne,children:[K&&c.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:K}),Ie&&!A&&c.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[c.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",c.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:S$.map(V=>c.jsx("button",{type:"button",onClick:()=>{he(V.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:V.label},V.label))})]}),T$(b,e,Q,H),E.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:E.map(V=>c.jsx(w3,{trail:V},V.id))}),A&&_&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(S3,{content:_})]}),A&&!_&&E.every(V=>V.endedAt!==void 0)&&c.jsx(q$,{})]}),c.jsx(N$,{projectName:e,activeProvider:be,scope:H,onToggleScope:ae,scopeLocked:a,disabled:A}),c.jsxs("div",{className:"relative",children:[ve.length>0&&c.jsx(_$,{matches:ve,selectedIndex:Fe,onHover:Re,onPick:V=>{S(""),Ke.current?.focus(),V.action==="clear"?X():he(V.prompt)}}),c.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:V=>{if(V.preventDefault(),ve.length>0){const q=ve[Fe];S(""),q.action==="clear"?X():he(q.prompt);return}he(k)},children:[c.jsx("textarea",{ref:Ke,value:k,onChange:V=>S(V.target.value),onKeyDown:V=>{if(ve.length>0){if(V.key==="ArrowDown"){V.preventDefault(),Re(q=>(q+1)%ve.length);return}if(V.key==="ArrowUp"){V.preventDefault(),Re(q=>(q-1+ve.length)%ve.length);return}if(V.key==="Tab"){V.preventDefault();const q=ve[Fe];S(`${q.command} `);return}if(V.key==="Escape"){V.preventDefault(),S("");return}}if(V.key==="Enter"&&!V.shiftKey)if(V.preventDefault(),ve.length>0){const q=ve[Fe];S(""),q.action==="clear"?X():he(q.prompt)}else he(k)},placeholder:"Ask Aero, or / for commands…",disabled:A,rows:f?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),c.jsx("button",{type:"submit",disabled:A||!k.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:c.jsx(tA,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):c.jsx("button",{type:"button",onClick:()=>u(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(du,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function C$({providers:e,active:a,override:s,onPick:r,disabled:u}){const[f,g]=T.useState(!1),b=T.useRef(null);if(T.useEffect(()=>{if(!f)return;const k=A=>{b.current?.contains(A.target)||g(!1)},S=A=>{A.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",k),window.addEventListener("keydown",S),()=>{window.removeEventListener("mousedown",k),window.removeEventListener("keydown",S)}},[f]),e.length===0)return null;const v=a?.label.replace(/\s+\(.+\)$/,"")??"No provider";return c.jsxs("div",{ref:b,className:"relative",children:[c.jsxs("button",{type:"button",onClick:()=>g(k=>!k),disabled:u,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":f,title:a?`${a.label} · ${a.defaultModel}`:"Pick a provider",children:[c.jsx("span",{className:"font-medium text-strong",children:v}),c.jsx(Xu,{className:"h-3 w-3","aria-hidden":"true"})]}),f&&c.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),c.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(k=>{const S=a?.id===k.id,A=s===k.id;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":S,disabled:!k.configured,onClick:()=>{k.configured&&(r(A?null:k.id),g(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:k.configured?k.defaultModel:`Add ${z$(k.id)} in Settings or your environment`,children:[c.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:S?c.jsx(Jh,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:k.label.replace(/\s+\(.+\)$/,"")}),A&&c.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!k.configured&&c.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},k.id)})}),s&&c.jsx("button",{type:"button",onClick:()=>{r(null),g(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function N$({projectName:e,activeProvider:a,scope:s,onToggleScope:r,scopeLocked:u,disabled:f}){const g=a?.label.replace(/\s+\(.+\)$/,"")??null,b=s==="all";return c.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[c.jsx("span",{className:"font-medium text-strong",children:e}),g&&c.jsxs(c.Fragment,{children:[c.jsx("span",{"aria-hidden":"true",children:"·"}),c.jsx("span",{children:g})]}),u?c.jsx("span",{className:"ml-auto",children:"Read only"}):c.jsx("button",{type:"button",onClick:r,disabled:f,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${b?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:b?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:b?"Can make changes":"Read only"})]})}function _$({matches:e,selectedIndex:a,onHover:s,onPick:r}){return c.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[c.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),c.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((u,f)=>{const g=f===a;return c.jsx("li",{children:c.jsxs("button",{type:"button",role:"option","aria-selected":g,onMouseEnter:()=>s(f),onClick:()=>r(u),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${g?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[c.jsx("span",{className:"font-medium",children:u.label}),c.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:u.command})]})},u.command)})})]})}function z$(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function E$(e,a){const s=e.timestamp??0;return`${e.role}:${s}:${a}`}function T$(e,a,s,r){const u=[];for(let f=0;f<e.length;f++){const g=e[f],b=E$(g,f);if(g.role==="user"){const v=typeof g.content=="string"?g.content:JSON.stringify(g.content);if(v.startsWith("[system]"))continue;u.push(c.jsx(R$,{text:v,projectName:a,providerOverride:s,scope:r},b));continue}if(g.role==="assistant"){const v=new Map;let k=f+1;for(;k<e.length&&e[k].role==="toolResult";){const N=e[k];v.set(N.toolCallId,N),k++}const S=O$(g,v,g.timestamp??0),A=k3(g);u.push(c.jsxs(T.Fragment,{children:[S.length>0&&c.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(N=>c.jsx(w3,{trail:N},N.id))}),A.trim()&&c.jsxs("div",{className:"mt-3",children:[c.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsx(S3,{content:A})]})]},b)),f=k-1;continue}}return u}function R$({text:e,projectName:a,providerOverride:s,scope:r}){const[u,f]=T.useState(!1),g=T.useMemo(()=>D$(a,e,s,r),[a,e,s,r]);async function b(){try{await navigator.clipboard.writeText(g),f(!0),window.setTimeout(()=>f(!1),1500)}catch{}}return c.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),c.jsx("button",{type:"button",onClick:Ft(b),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:g,children:u?c.jsxs(c.Fragment,{children:[c.jsx(Jh,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):c.jsxs(c.Fragment,{children:[c.jsx($x,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),c.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function D$(e,a,s,r){const u=["canonry","agent","ask",kx(e),kx(a)];return s&&u.push("--provider",s),r==="read-only"&&u.push("--scope","read-only"),u.join(" ")}function kx(e){return`'${e.replace(/'/g,"'\\''")}'`}function O$(e,a,s){const r=[];for(const u of e.content){if(u.type!=="toolCall")continue;const f=u,g=a.get(f.id);r.push({id:f.id,name:f.name,args:f.arguments,startedAt:s,endedAt:g?.timestamp,isError:g?.isError,result:g?.content})}return r}function w3({trail:e}){const[a,s]=T.useState(!1),r=e.endedAt===void 0,u=!r&&e.isError===!0,f=e.endedAt!=null?e.endedAt-e.startedAt:null,g=f==null||f<0?null:f<1e3?`${f}ms`:`${(f/1e3).toFixed(1)}s`,b=u?"border-negative-800/50":r?"border-positive-800/50":"border-mono-800/70",v=u?"bg-negative-950/20":r?"bg-positive-950/20":"bg-surface-hover";return c.jsxs("div",{className:`rounded-md border ${b} ${v} font-mono`,children:[c.jsxs("button",{type:"button",onClick:()=>s(k=>!k),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":a,children:[c.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:r?c.jsx(Zo,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):u?c.jsx(Gx,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):c.jsx(nA,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),c.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),c.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[r?c.jsx("span",{className:"text-positive-400",children:"running…"}):c.jsxs(c.Fragment,{children:[c.jsx("span",{children:u?"failed":"ok"}),g&&c.jsx("span",{children:g})]}),c.jsx(Wh,{className:`h-3 w-3 transition-transform ${a?"rotate-90":""}`,"aria-hidden":"true"})]})]}),a&&c.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),c.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:wx(e.args)}),!r&&e.result!==void 0&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:u?"Error":"Result"}),c.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:wx(e.result)})]})]})]})}function wx(e){try{const a=typeof e=="string"?e:JSON.stringify(e,null,2);return a.length>2e3?`${a.slice(0,2e3)}
|
|
64
|
+
… (${a.length-2e3} more chars)`:a}catch{return String(e)}}function S3({content:e}){return c.jsx("div",{className:"text-heading",children:c.jsx(yA,{components:{h1:a=>c.jsx("h1",{...a,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:a=>c.jsx("h2",{...a,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:a=>c.jsx("h3",{...a,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:a=>c.jsx("h4",{...a,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:a=>c.jsx("p",{...a,className:"mb-2 leading-relaxed"}),ul:a=>c.jsx("ul",{...a,className:"mb-2 ml-4 list-disc space-y-1"}),ol:a=>c.jsx("ol",{...a,className:"mb-2 ml-4 list-decimal space-y-1"}),li:a=>c.jsx("li",{...a,className:"marker:text-mono-600"}),strong:a=>c.jsx("strong",{...a,className:"font-semibold text-primary"}),em:a=>c.jsx("em",{...a,className:"text-strong"}),code:({children:a,...s})=>c.jsx("code",{...s,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:a}),pre:a=>c.jsx("pre",{...a,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:a=>c.jsx("a",{...a,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:a=>c.jsx("div",{className:"mb-2 overflow-x-auto",children:c.jsx("table",{...a,className:"w-full border-collapse text-xs"})}),thead:a=>c.jsx("thead",{...a,className:"border-b border-base"}),th:a=>c.jsx("th",{...a,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:a=>c.jsx("tr",{...a,className:"border-b border-mono-900"}),td:a=>c.jsx("td",{...a,className:"px-2 py-1 text-strong"}),blockquote:a=>c.jsx("blockquote",{...a,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>c.jsx("hr",{className:"my-3 border-base"})},children:e})})}function q$(){return c.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[c.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),c.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[c.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),c.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),c.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function B$(){const e=Ox(),a=/^\/projects\/([^/]+)/.exec(e.pathname),s=a?decodeURIComponent(a[1]):null,r=Et({...Zs({client:se}),enabled:s!==null,staleTime:6e4});if(!s)return null;const u=r.data??[],f=u.find(g=>g.id===s)??u.find(g=>g.name===s);return f?c.jsx(A$,{projectName:f.name},f.name):null}const Qh={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",googleAds:"getApiV1ProjectsByNameGoogleAds",gtm:"getApiV1ProjectsByNameGtm",conversionTracking:"getApiV1ProjectsByNameConversionTracking",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",visibilityReport:"getApiV1ProjectsByNameVisibilityReport",queryTracking:"getApiV1ProjectsByNameQueryTracking",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function mn(e,a){const s=Qh[a];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(s)}})}function VY(e,a){return e.invalidateQueries({predicate:s=>{const r=s.queryKey[0];return r?.path?.name!==a||typeof r._id!="string"?!1:r._id.startsWith("getApiV1ProjectsByNameMeasurement")||r._id===Qh.queryTracking||r._id===Qh.visibilityReport||r._id==="getApiV1ProjectsByNameQueries"||r._id==="getApiV1ProjectsByName"}})}function Rl(e,a,s){switch(e.invalidateQueries({queryKey:gf({client:se})}),e.invalidateQueries({queryKey:ts({client:se})}),mn(e,"runs"),a){case ze["answer-visibility"]:Kh(e,s,"none"),mn(e,"visibilityReport"),mn(e,"queryTracking");return;case ze["backlink-extract"]:return;case ze["site-audit"]:mn(e,"technicalAeo");return;case ze["gsc-sync"]:case ze["inspect-sitemap"]:mn(e,"gsc");return;case ze["ga-sync"]:mn(e,"ga");return;case ze["traffic-sync"]:mn(e,"ga"),mn(e,"traffic");return;case ze["bing-inspect"]:case ze["bing-inspect-sitemap"]:mn(e,"bing");return;case ze["aeo-discover-seed"]:case ze["aeo-discover-probe"]:Kh(e,s);return;case ze["gbp-sync"]:mn(e,"gbp");return;case ze["ads-sync"]:mn(e,"ads");return;case ze["google-ads-sync"]:mn(e,"googleAds"),mn(e,"conversionTracking");return;case ze["gtm-sync"]:mn(e,"gtm"),mn(e,"conversionTracking");return;default:return a}}const Sx=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:Lx},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:dA},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:mA}],jx=e=>({label:e,state:"checking",detail:"Checking service health"}),P$={apiStatus:jx("API"),workerStatus:jx("Worker")};function M$(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function I$(e){const a=jl(e.kind);return e.status==="completed"?`${a} completed`:e.status==="partial"?`${a} completed with partial results`:e.status==="cancelled"?`${a} cancelled`:`${a} failed`}function V$(e,a){return e.error?`${a}: ${G0(e.error)}`:e.location?`${a} · ${e.location}`:a}function Ax(e,a,s){if(a)return a;const r=s.find(u=>u.id===e);return r?.displayName||r?.name||e}function L$(e,a){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,a>0?`${a} skipped at queue time`:null].filter(Boolean).join(", ")}function U$(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function G$(){const e=da(),a=T.useSyncExternalStore(ZS,gi,gi),s=Object.keys(a.runs).length>0||Object.keys(a.batches).length>0,r=Et({...yf({client:se}),enabled:s,staleTime:nr,refetchInterval:3e3}),u=Et({...Zs({client:se}),enabled:s}),f=T.useRef({}),g=T.useCallback(()=>{r.refetch()},[r.refetch]);return T.useEffect(()=>{s&&g()},[s,g]),T.useEffect(()=>{if(!s||typeof window>"u")return;const b=()=>{document.visibilityState==="visible"&&g()};return window.addEventListener("focus",g),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",g),document.removeEventListener("visibilitychange",b)}},[s,g]),T.useEffect(()=>{const b=r.data??[],v=u.data??[],k=Object.fromEntries(b.map(A=>[A.id,A])),S=Object.fromEntries(b.map(A=>[A.id,A.status]));for(const A of Object.values(a.runs)){const N=k[A.runId];if(!N||!fU(N.status)||(f.current[N.id]??A.lastAnnouncedStatus)===N.status)continue;const Z=v.find(G=>G.id===N.projectId);if(Z&&Rl(e,N.kind,Z.name),A.sourceAction==="run-all"){ch(N.id);continue}const _=Ax(N.projectId,A.projectLabel,v);rn({title:I$(N),detail:V$(N,_),tone:M$(N.status),dedupeKey:`run:${N.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:N.id}}),ch(N.id)}if(r.data!==void 0){const A=new Set(b.map(E=>E.id)),N=yU(Object.values(a.runs),A,Date.now(),gU);for(const E of N){const Z=v.find(_=>_.id===E.projectId);Z&&Rl(e,E.kind,Z.name),E.sourceAction!=="run-all"&&rn({title:`${jl(E.kind)} status unavailable`,detail:Ax(E.projectId,E.projectLabel,v),tone:"neutral",dedupeKey:`run-stale:${E.runId}`,dedupeMode:"replace"}),ch(E.runId)}}for(const A of Object.values(a.batches)){const N=bU(A.runIds,k);N.finished&&(rn({title:"Run-all batch finished",detail:L$(N,A.skippedCount),tone:U$(N),dedupeKey:`batch:${A.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),hU(A.batchId))}f.current=S},[u.data,r.data,a,e]),null}function $$(){const{account:e,isAdmin:a}=ha(),s=Kl(),r=T.useMemo(()=>TS(),[]),u=T.useMemo(dI,[]),f=T.useMemo(mI,[]),g=T.useMemo(pI,[]),b=Ox(),{dashboard:v,isLoading:k,refetch:S}=Ed(void 0,{includeSettings:!r,includeOverviews:!1,pauseProjectPolling:b.pathname==="/setup"}),E=Sf(!s,s?.health).data??s?.health??P$,{runId:Z,evidenceId:_,closeDrawer:G}=jf(),[K,te]=T.useState(!1),[Q,re]=T.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[W,oe]=T.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[H]=T.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),$=H?{current:E.apiStatus.version??"0.0.0",latest:H,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:E.apiStatus.updateAvailable,Te=g&&$&&$.latest!==W,Ke=()=>{if($){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",$.latest)}catch{}oe($.latest)}},Fe=()=>{const de=!Q;try{de?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}re(de)},Re=s$(Z),ve=Re.data??null,Ue=Re.isLoading;T.useEffect(()=>{ve&&ve.status!=="running"&&ve.status!=="queued"&&S()},[ve?.status,S]),T.useEffect(()=>{te(!1)},[b.pathname]),T.useEffect(()=>{if(typeof window>"u"||!Z&&!_)return;const de=Me=>{Me.key==="Escape"&&G()};return window.addEventListener("keydown",de),()=>{window.removeEventListener("keydown",de)}},[Z,_,G]);const be=v??s?.dashboard??null,P=b.pathname==="/setup",ae=P&&be!==null&&be.portfolioOverview.projects.length===0,he=P&&(b.search.onboarding==="site-health"||b.search.onboarding==="first-run"),[je,X]=T.useState(ae);T.useEffect(()=>{P?ae&&X(!0):X(!1)},[ae,P]);const Ne=P&&(he||ae||je||P&&be===null),Ae=Ne?"app-shell-focus":Q?"app-shell-sidebar-hidden":"",ne=Z?(be?EG(be,Z):void 0)??(ve?zd(ve,be?.projects.find(de=>de.project.id===ve.projectId)?.project.displayName??be?.projects.find(de=>de.project.id===ve.projectId)?.project.name??"Unknown project"):void 0):void 0,V=T.useMemo(()=>jG(b.pathname,be),[b.pathname,be]),{commandCenter:q,evidenceLoading:le,evidenceError:De,isError:ye,refetch:Je}=n$(_?V:null,{evidence:!0}),Ge=T.useMemo(()=>{if(_)return RG(q,be,_)},[_,q,be]),Be=(()=>{const de=b.pathname;if(de==="/")return"Portfolio";if(de==="/projects")return"Projects";if(de==="/runs")return"Runs";if(de==="/history")return"History";if(de==="/settings")return"Settings";if(de==="/setup")return"Setup";if(de==="/backlinks")return"Backlink data";if(de==="/traffic"||de.startsWith("/traffic/"))return"Traffic sources";if(de.startsWith("/projects/")){const $t=de.split("/").filter(Boolean)[1];if($t&&be){const Sn=be.projects.find(ga=>ga.project.id===$t);if(Sn)return Sn.project.name}return"Project"}return"Not found"})();if(r){const de=!r.views||r.views.includes(pV(b.pathname));return c.jsxs("div",{className:"app-shell app-shell-embed","data-theme":bV(r.theme),style:vV(r.theme),children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx("main",{id:"content",className:"page-shell",children:de?c.jsx(hh,{}):c.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return c.jsxs(c.Fragment,{children:[c.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),c.jsx(m$,{}),c.jsxs("div",{className:`app-shell ${Ae}${Sl()?" app-shell-demo":""}`,children:[!Ne&&!Q&&c.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[c.jsx("div",{className:"sidebar-brand",children:c.jsx(ox,{version:E.apiStatus.version,updateAvailable:Te?$:null,onDismissUpdate:Ke})}),c.jsxs("nav",{className:"sidebar-nav",children:[c.jsxs(tt,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(aA,{className:"sidebar-icon"}),c.jsx("span",{children:"Portfolio"})]}),c.jsxs(tt,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(iA,{className:"sidebar-icon"}),c.jsx("span",{children:"Projects"})]}),c.jsxs(tt,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(sA,{className:"sidebar-icon"}),c.jsx("span",{children:"Runs"})]}),c.jsxs(tt,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(oA,{className:"sidebar-icon"}),c.jsx("span",{children:"History"})]}),c.jsxs(tt,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[c.jsx(rA,{className:"sidebar-icon"}),c.jsx("span",{children:"Traffic sources"})]}),!Sl()&&c.jsxs(tt,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(lA,{className:"sidebar-icon"}),c.jsx("span",{children:"Backlink data"})]}),a&&c.jsxs(tt,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(cA,{className:"sidebar-icon"}),c.jsx("span",{children:"Settings"})]}),k?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(de=>c.jsxs("div",{className:"sidebar-skeleton-item",children:[c.jsx("span",{className:"skeleton-circle size-2"}),c.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+de*15}%`}})]},de))]}):be&&be.projects.length>0?c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),be.projects.map(de=>{const Me=de.visibilitySummary.tone;return c.jsxs(tt,{to:"/projects/$projectName",params:{projectName:de.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[c.jsx("span",{className:`sidebar-dot sidebar-dot-${Me}`}),c.jsx("span",{children:de.project.displayName||de.project.name})]},de.project.id)})]}):k?null:c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"sidebar-section-title",children:"Resources"}),a&&c.jsxs(tt,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[c.jsx(uA,{className:"sidebar-icon"}),c.jsx("span",{children:"Setup"})]})]})]}),e&&c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:Vv()}):null]}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm",onClick:Ft(async()=>{await $v(),window.location.reload()}),children:"Sign out"})]}),u?c.jsx("div",{className:"sidebar-footer",children:Sx.map(({label:de,href:Me,Icon:$t})=>c.jsx("a",{className:"sidebar-footer-icon",href:Me,target:"_blank",rel:"noopener noreferrer",title:de,"aria-label":de,children:c.jsx($t,{className:"size-4"})},Me))}):null]}),c.jsxs("div",{className:"main-area",children:[c.jsxs("header",{className:"topbar",children:[c.jsxs("div",{className:"topbar-left",children:[!Ne&&c.jsx(fe,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":Q?"Show sidebar":"Hide sidebar","aria-controls":Q?void 0:"desktop-sidebar","aria-expanded":!Q,title:Q?"Show sidebar":"Hide sidebar",onClick:Fe,children:Q?c.jsx(pA,{className:"size-4"}):c.jsx(hA,{className:"size-4"})}),c.jsx("div",{className:"topbar-brand-mobile",children:c.jsx(ox,{compact:!0})}),c.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[c.jsx(tt,{to:"/",children:"Home"}),c.jsx(Wh,{className:"breadcrumb-sep size-3"}),c.jsx("span",{className:"breadcrumb-current",children:Be})]})]}),c.jsxs("div",{className:"topbar-actions",children:[c.jsx(p$,{}),c.jsxs("div",{className:"health-pill-row",children:[c.jsxs("span",{className:`health-pill health-pill-${E.apiStatus.state}`,title:ar(E.apiStatus),children:["API ",E.apiStatus.state==="ok"?"ok":E.apiStatus.state]}),c.jsx("span",{className:`health-pill health-pill-${E.workerStatus.state}`,title:ar(E.workerStatus),children:`Worker ${E.workerStatus.state==="ok"?"ok":E.workerStatus.state}`})]}),Ne?null:c.jsxs(fe,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":K,"aria-controls":"mobile-nav",onClick:()=>te(de=>!de),children:[c.jsx(fA,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),Ne?null:c.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${K?"mobile-nav-open":""}`,children:[c.jsxs(fe,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>te(!1),children:[c.jsx(sr,{className:"size-5"}),c.jsx("span",{className:"sr-only",children:"Close navigation"})]}),c.jsx(tt,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),c.jsx(tt,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),c.jsx(tt,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),c.jsx(tt,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),c.jsx(tt,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),!Sl()&&c.jsx(tt,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),a&&c.jsx(tt,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),be&&be.projects.length>0?c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),be.projects.map(de=>c.jsx(tt,{to:"/projects/$projectName",params:{projectName:de.project.name},className:"mobile-nav-link",children:de.project.name},de.project.id))]}):null,e&&c.jsxs("div",{className:"mobile-nav-section",children:[c.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),c.jsxs("div",{className:"sidebar-account",children:[c.jsxs("div",{className:"sidebar-account-identity",children:[c.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?c.jsx("span",{className:"sidebar-account-role",children:Vv()}):null]}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:Ft(async()=>{await $v(),window.location.reload()}),children:"Sign out"})]})]})]}),c.jsx("main",{id:"content",className:`page-shell ${f&&V?"pb-20":""}`.trim(),children:k&&!s?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-40"}),c.jsx("div",{className:"skeleton-text-sm w-72"})]}),c.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(de=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text w-full"}),c.jsx("div",{className:"skeleton-text-sm w-3/4"})]},de))}),c.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(de=>c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-20"}),c.jsx("div",{className:"space-y-2",children:[1,2,3].map(Me=>c.jsx("div",{className:"skeleton-text-sm w-full"},Me))})]},de))})]}):c.jsx(hh,{})}),c.jsxs("footer",{className:"footer",children:[c.jsxs("span",{className:"footer-brand",children:[c.jsx("span",{children:c.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),E.apiStatus.version&&E.apiStatus.version!=="unknown"?c.jsxs("span",{className:"footer-version",children:["v",E.apiStatus.version]}):null]}),u?c.jsx("div",{className:"footer-links",children:Sx.map(({label:de,href:Me,Icon:$t})=>c.jsx("a",{href:Me,target:"_blank",rel:"noopener noreferrer",title:de,"aria-label":de,className:"footer-icon",children:c.jsx($t,{className:"size-3.5"})},Me))}):null]})]}),Z&&!ne&&Ue?c.jsx(Cu,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:G,children:c.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,Z&&!ne&&Re.isError?c.jsx(Cu,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:G,children:c.jsx("p",{className:"text-sm text-negative",children:Re.error instanceof Error?Re.error.message:"Run details are unavailable."})}):null,ne?c.jsxs(Cu,{open:!0,title:ne.summary,subtitle:`${ne.projectName} · ${ne.kindLabel}`,onClose:G,children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[c.jsx(wf,{status:ne.status}),c.jsx("span",{className:"text-secondary",children:ne.startedAt}),c.jsx("span",{className:"text-muted",children:ne.duration}),c.jsx("span",{className:"text-faint",children:ne.triggerLabel})]}),ne.status==="failed"&&ne.statusDetail&&c.jsx("p",{className:"mt-2 text-sm text-negative",children:ne.statusDetail}),c.jsxs("div",{className:"mt-4",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Ue?c.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):ve?.snapshots&&ve.snapshots.length>0?c.jsxs("div",{className:"space-y-2",children:[ve.snapshots.map(de=>c.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[c.jsx("p",{className:"text-sm font-medium text-strong truncate",children:de.query??"Unknown query"}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx(dG,{provider:de.provider}),c.jsx(d3,{variant:de.citationState===Uu.cited?"success":"neutral",children:de.citationState})]})]}),de.model&&c.jsx("p",{className:"text-[11px] text-muted font-mono",children:de.model}),de.citedDomains.length>0&&c.jsxs("p",{className:"text-xs text-muted mt-1",children:[c.jsx("span",{className:"text-secondary",children:"Sources:"})," ",de.citedDomains.join(", ")]}),de.citedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",de.citedCompetitorDomains.join(", ")]}),de.mentionedCompetitorDomains.length>0&&c.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor mentioned: ",de.mentionedCompetitorDomains.join(", ")]}),de.groundingSources&&de.groundingSources.length>0&&c.jsxs("details",{className:"mt-2",children:[c.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[de.groundingSources.length," grounding source",de.groundingSources.length!==1?"s":""]}),c.jsx("ul",{className:"mt-1 space-y-0.5",children:de.groundingSources.map((Me,$t)=>{const Sn=$h(Me.uri),ga=Me.title||Me.uri;return c.jsx("li",{className:"text-xs text-muted truncate",children:Sn?c.jsx("a",{href:Sn,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:ga}):c.jsx("span",{children:ga})},$t)})})]}),de.answerText&&c.jsxs("details",{className:"mt-1",children:[c.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),c.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:de.answerText})]})]},de.id)),ve.status==="running"&&c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):ve&&ve.status==="running"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):ve&&ve.status==="queued"?c.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[c.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):ve&&ve.error?c.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[c.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:uV(ve.error)})]}):c.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,_&&!Ge?c.jsx(Cu,{open:!0,title:le?"Loading answer":"Answer unavailable",subtitle:"Query evidence",onClose:G,children:le?c.jsx("p",{role:"status",className:"text-sm text-secondary",children:"Loading answer…"}):c.jsxs(c.Fragment,{children:[c.jsx("p",{role:"alert",className:"text-sm text-secondary",children:De||ye?"Could not load this answer.":"This answer is not in the available query evidence."}),c.jsx(fe,{type:"button",variant:"outline",onClick:()=>{Je()},children:"Retry"})]})}):null,Ge?c.jsx(kG,{evidence:Ge.evidence,project:Ge.project,onClose:G}):null,c.jsx(G$,{}),c.jsx(l$,{}),f?c.jsx(B$,{}):null]})]})}class K$ extends T.Component{state={error:null};static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,s){console.error("[ErrorBoundary]",a,s.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?c.jsx("div",{className:"page-container",children:c.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[c.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:c.jsx(Gx,{className:"size-6 text-negative-400"})}),c.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),c.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),c.jsxs("div",{className:"flex gap-3 mt-2",children:[c.jsxs(fe,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[c.jsx(Ux,{className:"size-3.5 mr-1.5"}),"Try again"]}),c.jsx(fe,{variant:"secondary",size:"sm",onClick:()=>{const a=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=a||"/"},children:"Go home"})]})]})}):this.props.children}}const ua=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...a}));ua.displayName="Card";const Ko=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("flex flex-col gap-1.5 p-5",e),...a}));Ko.displayName="CardHeader";const j3=T.forwardRef(({className:e,...a},s)=>c.jsx("h3",{ref:s,className:fa("font-medium tracking-tight text-primary",e),...a}));j3.displayName="CardTitle";const Qu=T.forwardRef(({className:e,...a},s)=>c.jsx("p",{ref:s,className:fa("text-sm text-muted",e),...a}));Qu.displayName="CardDescription";const Ms=T.forwardRef(({className:e,...a},s)=>c.jsx("div",{ref:s,className:fa("p-5 pt-0",e),...a}));Ms.displayName="CardContent";const H$=20,Q$=6;function F$({points:e,tone:a}){const s=T.useId();if(e.length===0)return null;const r=42,u=132,f=5,g=u-f*2,b=r-f*2,v=b-Q$,k=G=>f+G/Math.max(e.length-1,1)*g,S=Pq(e),A=Math.min(...e),N=Math.max(...e),E=Math.max(N-A,H$),Z=(N+A)/2-E/2,_=e.map((G,K)=>({x:k(K),y:f+(1-(G-Z)/E)*v}));return c.jsxs("svg",{className:`sparkline sparkline-${a}${S?" sparkline-provisional":""}`,viewBox:`0 0 ${u} ${r}`,"aria-hidden":"true",children:[c.jsx("defs",{children:c.jsx("clipPath",{id:s,children:c.jsx("rect",{x:f,y:f,width:g,height:b,rx:"8"})})}),c.jsx("line",{className:"sparkline-guide",x1:f,x2:u-f,y1:r-f,y2:r-f}),_.length===1?c.jsx("circle",{className:"sparkline-point",cx:_[0].x,cy:_[0].y,r:"3"}):c.jsx("polyline",{clipPath:`url(#${s})`,points:_.map(G=>`${G.x},${G.y}`).join(" "),vectorEffect:"non-scaling-stroke"})]})}function Z$({project:e}){return c.jsxs(tt,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[c.jsx("div",{className:"project-row-chart",children:c.jsx(F$,{points:e.trend,tone:HS(e.lastRun.status)})}),c.jsxs("div",{className:"project-row-primary",children:[c.jsxs("div",{children:[c.jsx("p",{className:"project-name",children:e.project.name}),c.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),c.jsx("p",{className:"project-insight",children:e.insight})]}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),c.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.hasMeasurement===!1?"Not measured":e.mentionScore}),c.jsx("p",{className:`metric-inline-caption${e.providerCoverage?" text-caution":""}`,title:e.providerCoverage,children:e.providerCoverage?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"sr-only",children:"Partial sweep: "}),e.providerCoverage]}):e.mentionDelta})]})}),c.jsx("div",{className:"project-row-stat",children:c.jsxs("div",{className:"metric-inline-block",children:[c.jsxs("p",{className:"metric-inline-label",children:[c.jsx("span",{"aria-hidden":"true",children:"Pressure"}),c.jsx("span",{className:"sr-only",children:"Competitor pressure"})]}),c.jsx("p",{className:"metric-inline-value",children:e.hasMeasurement===!1?"Not measured":e.competitorPressureLabel}),c.jsx("p",{className:"metric-inline-caption","aria-hidden":"true"})]})}),c.jsx("span",{className:"project-row-link",children:c.jsx(Wh,{className:"h-4 w-4 text-muted"})})]})}function Y$(){const{isAdmin:e}=ha(),a=Kl(),{dashboard:s,isLoading:r,isError:u,refetch:f}=Ed(),g=s??a?.dashboard,v=Sf(!a,a?.health),{openRun:k}=jf();if(u&&!g)return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio unavailable"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project list."})]})}),c.jsxs("div",{className:"max-w-xl rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Your projects have not been changed."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",variant:"secondary",className:"mt-4",onClick:()=>{f()},children:"Retry loading portfolio"})]})]});if(!g||r)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-32"}),c.jsx("div",{className:"skeleton-text-sm w-64"})]}),c.jsx("div",{className:"space-y-3",children:[1,2,3].map(_=>c.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[c.jsxs("div",{className:"flex-1 space-y-2",children:[c.jsx("div",{className:"skeleton-text w-36"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton-text w-16"}),c.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},_))})]});const S=g.portfolioOverview,A=S.projects.length>0&&S.projects.every(_=>_.hasMeasurement===!1),N=S.attentionItems.map(_=>A&&_.id==="attention_stable"?{..._,tone:"neutral",title:"Awaiting first measurement",detail:"Visibility results will appear after the first sweep."}:_),E=v.data??a?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},Z=oU(S.systemHealth.filter(_=>e||_.id==="api"||_.id==="worker"),E,g.settings);return c.jsxs("div",{className:"page-container",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Portfolio"}),c.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]})}),S.projects.length>0?c.jsx("div",{className:"project-list project-list-scrollable",children:S.projects.map(_=>c.jsx(Z$,{project:_},_.project.id))}):c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h3",{children:S.emptyState?.title??"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:S.emptyState?.detail}),c.jsx(fe,{size:"sm",asChild:!0,children:c.jsx(tt,{to:S.emptyState?.ctaHref==="/setup"||!S.emptyState?.ctaHref?"/setup":"/",children:S.emptyState?.ctaLabel??"Launch setup"})})]}),c.jsxs("div",{className:"overview-secondary-grid",children:[N.length>0&&c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),c.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),c.jsx("div",{className:"attention-list attention-list-scrollable",children:N.map(_=>_.href?c.jsxs(tt,{to:_.href,className:`attention-item attention-item-${_.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:_.title}),c.jsx("p",{className:"attention-detail",children:_.detail})]}),_.actionLabel&&c.jsx("span",{className:"attention-action",children:_.actionLabel})]},_.id):c.jsxs("div",{className:`attention-item attention-item-static attention-item-${_.tone}`,children:[c.jsxs("div",{children:[c.jsx("p",{className:"attention-title",children:_.title}),c.jsx("p",{className:"attention-detail",children:_.detail})]}),_.actionLabel&&c.jsx("span",{className:"attention-action",children:_.actionLabel})]},_.id))})]}),c.jsxs("section",{className:"overview-secondary-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),c.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),c.jsx("div",{className:"compact-stack compact-stack-scrollable",children:S.recentRuns.length>0?S.recentRuns.map(_=>c.jsxs("button",{className:"compact-run",type:"button",onClick:()=>k(_.id),children:[c.jsxs("div",{children:[c.jsx("p",{className:"compact-run-title",children:_.projectName}),c.jsx("p",{className:"compact-run-detail",children:_.summary})]}),c.jsx(wf,{status:_.status})]},_.id)):c.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),c.jsxs("section",{className:"page-section",children:[c.jsx("div",{className:"section-head section-head-inline",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),c.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),c.jsx("div",{className:"divide-y divide-default border-y border-default",children:Z.map(_=>{const G=_.id==="api"?E.apiStatus:_.id==="worker"?E.workerStatus:void 0,K=G?G.state==="ok"?void 0:ar(G):_.tone==="positive"?void 0:_.meta;return c.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:_.label}),K&&c.jsx("p",{className:"mt-1 text-sm text-secondary",children:K})]}),c.jsx(pn,{tone:_.tone,title:G?ar(G):_.meta,children:_.detail})]},_.id)})})]})]})}const X$='a, button, input, select, textarea, label, [role="button"], [role="link"], [role="checkbox"], [role="menuitem"]';function J$(e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return!1;const a=e.target;if(a&&typeof a.closest=="function"&&a.closest(X$))return!1;const s=typeof window<"u"?window.getSelection():null;return!(s&&!s.isCollapsed&&s.toString().trim()!=="")}function W$({onApplied:e}){const{canWrite:a}=ha(),[s,r]=T.useState(""),[u,f]=T.useState(!1),[g,b]=T.useState([]),[v,k]=T.useState([]);if(gI()||!a)return null;const S=async()=>{if(!s.trim())return;f(!0),b([]),k([]);const A=bA(s),N=[],E=[];for(let Z=0;Z<A.length;Z++){const _=A[Z];if(_.errors.length>0){N.push(`Document ${Z+1}: ${_.errors[0]?.message}`);continue}const G=_.toJSON();if(!(!G||typeof G!="object"))try{const K=await VI(G);E.push(`Applied "${K.displayName||K.name}" (revision ${K.configRevision})`)}catch(K){N.push(`Document ${Z+1}: ${d_(K)}`)}}b(E),k(N),f(!1),E.length>0&&(rn({title:"YAML applied",detail:`Applied ${E.length} document${E.length===1?"":"s"} successfully.`,tone:N.length>0?"caution":"positive",dedupeKey:"yaml:apply",dedupeMode:"replace"}),e())};return c.jsxs("section",{className:"mt-8",children:[c.jsx("div",{className:"page-section-divider"}),c.jsx("div",{className:"section-head mt-6",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Config as code"}),c.jsx("h2",{className:"text-sm font-medium text-strong",children:"Apply YAML"})]})}),c.jsxs("p",{className:"text-muted text-sm mb-3",children:["Paste a ",c.jsx("code",{className:"text-secondary",children:"canonry.yaml"})," config (multi-document YAML with ",c.jsx("code",{className:"text-secondary",children:"---"})," separators supported)."]}),c.jsx("textarea",{className:"setup-input w-full font-mono text-xs",rows:10,placeholder:`apiVersion: canonry/v1
|
|
65
65
|
kind: Project
|
|
66
66
|
metadata:
|
|
67
67
|
name: my-project
|
|
@@ -69,18 +69,18 @@ spec:
|
|
|
69
69
|
canonicalDomain: example.com
|
|
70
70
|
country: US
|
|
71
71
|
language: en
|
|
72
|
-
queries: []`,value:s,onChange:A=>r(A.target.value)}),g.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:g.map((A,N)=>c.jsx("li",{className:"text-positive-400 text-sm",children:A},N))}),v.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:v.map((A,N)=>c.jsx("li",{className:"text-negative-400 text-sm",children:A},N))}),c.jsx("div",{className:"mt-3",children:c.jsx(fe,{type:"button",disabled:!s.trim()||u,onClick:Ft(S),children:u?"Applying...":"Apply"})})]})}function W$(){const{dashboard:e,isLoading:a,refetch:s}=Ed(),{canWrite:r,isAdmin:u}=ha(),f=Hs();if(!e||a)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-28"}),c.jsx("div",{className:"skeleton-text-sm w-40"})]}),c.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[c.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(b=>c.jsx("div",{className:"skeleton-text-sm w-16"},b))}),[1,2,3].map(b=>c.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[c.jsxs("div",{className:"flex-1 space-y-1",children:[c.jsx("div",{className:"skeleton-text w-28"}),c.jsx("div",{className:"skeleton-text-sm w-16"})]}),c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),c.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),c.jsx("div",{className:"skeleton-text-sm w-8"})]},b))]})]});const g=e.projects;return c.jsxs("div",{className:"page-container",children:[c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Projects"}),c.jsxs("p",{className:"page-subtitle",children:[g.length," project",g.length!==1?"s":""," tracked"]})]}),u?c.jsx("div",{className:"page-header-right",children:c.jsxs(fe,{type:"button",onClick:()=>{f({to:"/setup",search:{experience:"platform"}})},children:[c.jsx(sb,{className:"size-4 mr-1.5"}),g.length===0?"Map a site":"Add project"]})}):null]}),g.length>0?c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Name"}),c.jsx("th",{children:"Domain"}),c.jsx("th",{children:"Mentions"}),c.jsx("th",{children:"Last run"}),c.jsx("th",{className:"text-right",children:"Country"})]})}),c.jsx("tbody",{children:g.map(b=>{const v=b.recentRuns[0];return c.jsxs("tr",{className:"cursor-pointer",onClick:k=>{X$(k)&&f({to:"/projects/$projectName",params:{projectName:b.project.name}})},children:[c.jsxs("td",{children:[c.jsx(tt,{to:"/projects/$projectName",params:{projectName:b.project.name},className:"text-heading font-medium hover:underline",children:b.project.displayName||b.project.name}),c.jsx("p",{className:"text-[11px] text-muted",children:b.project.name})]}),c.jsx("td",{className:"text-secondary",children:b.project.canonicalDomain}),c.jsx("td",{children:c.jsx(pn,{tone:b.mentionSummary.tone,children:b.mentionSummary.value})}),c.jsx("td",{className:"text-muted text-sm",children:v?c.jsx(wf,{status:v.status}):c.jsx("span",{className:"text-faint",children:"No runs"})}),c.jsx("td",{className:"text-right text-muted",children:b.project.country})]},b.project.id)})})]})}):c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h3",{children:"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:"Map a public site to capture its Page Health baseline and exact fixes."}),u?c.jsxs(fe,{type:"button",onClick:()=>{f({to:"/setup",search:{experience:"platform"}})},children:[c.jsx(sb,{className:"size-4 mr-1.5"}),"Map a site"]}):null]}),r?c.jsx(J$,{onApplied:()=>{s()}}):null]})}const Cx="canonry.onboarding-session.v1",Fu="canonry.onboarding-launched-run.v1",eK=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,tK=["system","project","queries","competitors","run"];function nK(e){return tK[e]??"system"}function aK(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function iK(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const sK={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function Al(e,a){const s=e&&typeof e=="object"&&"code"in e?String(e.code):"";return sK[s]??a}function A3(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Cx):null;if(e&&eK.test(e))return e;const a=Fh();return typeof window<"u"&&window.sessionStorage.setItem(Cx,a),a}catch{return Fh()}}function C3(){return Fh()}function N3(e){if(!e||typeof e!="object")return!1;const a=e;return typeof a.projectName=="string"&&a.projectName.length>0&&typeof a.runId=="string"&&a.runId.length>0&&typeof a.handled=="boolean"}function _3(e,a){try{typeof window<"u"&&window.sessionStorage.setItem(Fu,JSON.stringify({projectName:e,runId:a,handled:!1}))}catch{}}function z3(e){if(!e)return null;try{if(typeof window>"u")return null;const a=window.sessionStorage.getItem(Fu);if(!a)return null;const s=JSON.parse(a);return!N3(s)||s.projectName!==e||s.handled?null:s}catch{return null}}function Zu(e){try{if(typeof window>"u")return;const a=window.sessionStorage.getItem(Fu);if(!a)return;const s=JSON.parse(a);if(!N3(s)||s.runId!==e)return;window.sessionStorage.setItem(Fu,JSON.stringify({...s,handled:!0}))}catch{}}function Fh(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const a=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(a);else for(let r=0;r<a.length;r+=1)a[r]=Math.floor(Math.random()*256);a[6]=a[6]&15|64,a[8]=a[8]&63|128;const s=[...a].map(r=>r.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`}class oK extends Error{constructor(){super(LS),this.name="ViewOnlyError"}}function rK(e){if(!e.canWrite)throw new oK}function E3(e){e.invalidateQueries({queryKey:gf({client:se})}),e.invalidateQueries({queryKey:ts({client:se})})}function Xs(){const e=ha();return()=>{rK(e)}}function lK(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function cK(e,a){const s=e??"Project";return a==="gsc-sync"?`${s} will refresh after the sync completes.`:a==="inspect-sitemap"?`${s} will notify you when sitemap inspection finishes.`:`${s} will notify you when the run finishes.`}function _f(e,a){vf({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:a.projectLabel,sourceAction:a.sourceAction,lastAnnouncedStatus:"queued"}),rn({title:lK(e.kind),detail:cK(a.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function uK(e){const a=e.filter(g=>g.status!=="conflict"&&g.status!=="error"),s=e.filter(g=>g.status==="conflict"),r=e.filter(g=>g.status==="error"),u=s.length+r.length;if(a.length===0){const g=[r.length>0?`${r.length} need provider or query setup`:null,s.length>0?`${s.length} already have an active run`:null].filter(b=>b!==null);rn({title:"No runs queued",detail:g.length>0?`${g.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const g of a)vf({id:g.id,projectId:g.projectId,kind:g.kind,projectLabel:g.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const f=mU({runIds:a.map(g=>g.id),queuedCount:a.length,skippedCount:u});rn({title:"Run-all batch queued",detail:u>0?`${a.length} project${a.length===1?"":"s"} queued; ${u} need attention or already have an active run.`:`${a.length} project${a.length===1?"":"s"} queued.`,tone:u>0?"caution":"neutral",dedupeKey:`batch:${f}`,dedupeMode:"replace"})}function Td(e,a){if(e instanceof fn&&e.code==="RUN_IN_PROGRESS"){rn({title:"Run already in progress",detail:a?.projectLabel?`${a.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${a?.projectKey??"project"}:${a?.sourceAction??"run"}`,dedupeMode:"replace"});return}rn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function dK(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>DI(s,r),onSuccess:(s,r)=>{E3(a),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})},onError:(s,r)=>{r.sourceAction!=="setup-launch"&&Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})}})}function VY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:s=>LI(s),onSuccess:s=>{E3(a),uK(s)},onError:s=>{rn({title:s instanceof Error?s.message:"Failed to queue runs",tone:"negative"})}})}function mK(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,body:r})=>$I(s,r),onSuccess:(s,r)=>{Rl(a,ze["site-audit"],r.projectName),vf({id:s.runId,projectId:r.projectId,kind:ze["site-audit"],projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit",lastAnnouncedStatus:s.status}),rn({title:s.status==="running"?"Site Health scan already running":"Site Health scan queued",detail:`${r.projectLabel??r.projectName} will refresh automatically when the scan finishes.`,tone:"neutral",dedupeKey:`run:${s.runId}`,dedupeMode:"replace"})},onError:(s,r)=>{r.suppressErrorToast||Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit"})}})}function LY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>UI(s,r),onSuccess:(s,r)=>{Rl(a,ze["gsc-sync"],r.projectName),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})},onError:(s,r)=>{Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})}})}function UY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>GI(s,r),onSuccess:(s,r)=>{Rl(a,ze["inspect-sitemap"],r.projectName),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})},onError:(s,r)=>{Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})}})}function zf(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const a=e.queryKey[0];return a==="projects"||a==="project-dashboard-full"}function GY(){const e=Xs(),a=da();return ns({onMutate:e,mutationFn:({projectName:s,queries:r})=>EI(s,r),onSuccess:()=>{a.invalidateQueries({queryKey:ts({client:se})}),a.invalidateQueries({predicate:zf})}})}function $Y(){const e=Xs(),a=da();return ns({onMutate:e,mutationFn:({projectName:s,body:r})=>TI(s,r),onSuccess:()=>{mn(a,"project"),a.invalidateQueries({predicate:zf})}})}function KY({disabled:e,title:a,...s}){const{canWrite:r}=ha();return r?c.jsx(fe,{disabled:e,title:a,...s}):c.jsx(fe,{...s,disabled:!0,title:LS})}function Ef({title:e,children:a}){const{isAdmin:s}=ha();return s?c.jsx(c.Fragment,{children:a}):c.jsxs(ua,{className:"surface-card mx-auto mt-8 max-w-lg",children:[c.jsxs(Ko,{children:[c.jsxs(j3,{children:[e," is for administrators"]}),c.jsx(Qu,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),c.jsx(Ms,{children:c.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}const Nx=[{id:"site",label:"Site audit",optional:!1},{id:"fixes",label:"Page health",optional:!1},{id:"visibility",label:"AI Visibility",optional:!0}];function ir({current:e}){const a=Nx.findIndex(s=>s.id===e);return c.jsx("ol",{"aria-label":"Onboarding progress",className:"grid border-y border-default sm:grid-cols-3 sm:divide-x sm:divide-default",children:Nx.map((s,r)=>{const u=r<a,f=r===a;return c.jsxs("li",{"aria-current":f?"step":void 0,className:"flex min-h-12 items-center gap-3 py-2 sm:px-3 sm:first:pl-0 sm:last:pr-0",children:[c.jsx("span",{"aria-hidden":"true",className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums ${f?"border-accent bg-accent text-on-inverse":u?"border-positive bg-positive-soft text-positive":"border-default bg-surface-subtle text-muted"}`,children:u?"✓":r+1}),c.jsxs("span",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2",children:[c.jsx("span",{className:`text-sm font-medium ${f||u?"text-heading":"text-secondary"}`,children:s.label}),s.optional?c.jsx("span",{className:"text-[13px] text-secondary",children:"Optional"}):null,u?c.jsx("span",{className:"sr-only",children:"Complete"}):null]})]},s.id)})})}function pK({providerName:e,keyUrl:a,modelHint:s,compact:r=!1,leadingField:u,secondaryActions:f,onSaved:g}){const b=e.toLowerCase()==="local",v=r&&e.toLowerCase()==="gemini"&&!!a,[k,S]=T.useState(""),[A,N]=T.useState(""),[E,Z]=T.useState(""),[_,G]=T.useState(""),[K,te]=T.useState(""),[Q,re]=T.useState(""),[W,oe]=T.useState(!1),[H,$]=T.useState(null),[Te,Ke]=T.useState(!1),Fe=b?A.trim().length>0:k.trim().length>0;async function Re(){if(Fe){oe(!0),$(null),Ke(!1);try{const X=V=>{const q=parseInt(V.trim(),10);return Number.isFinite(q)&&q>0?q:void 0},Ie={},Ne=X(_);Ne!==void 0&&(Ie.maxConcurrency=Ne);const Ae=X(K);Ae!==void 0&&(Ie.maxRequestsPerMinute=Ae);const ne=X(Q);ne!==void 0&&(Ie.maxRequestsPerDay=ne),await BS(e.toLowerCase(),{...k.trim()?{apiKey:k.trim()}:{},...A.trim()?{baseUrl:A.trim()}:{},...E.trim()?{model:E.trim()}:{},...Object.keys(Ie).length>0?{quota:Ie}:{}}),S(""),N(""),Z(""),G(""),te(""),re(""),Ke(!0),rn({title:"Provider updated",detail:`${e} configuration saved.`,tone:"positive",dedupeKey:`settings:provider:${e}`,dedupeMode:"replace"}),g()}catch(X){$(X instanceof Error?X.message:"Failed to update provider")}finally{oe(!1)}}}const ve=s??"Use default model",Ue=r?"block text-sm font-medium text-secondary":"text-sm text-secondary",be=r?"setup-input min-h-11 w-full":"mt-0.5 w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",P=c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:r?"space-y-1.5":void 0,children:[c.jsx("label",{className:Ue,htmlFor:`model-${e}`,children:"Model (optional)"}),c.jsx("input",{id:`model-${e}`,type:"text",className:be,placeholder:ve,value:E,onChange:X=>Z(X.target.value)})]}),c.jsxs("div",{children:[c.jsx("label",{className:Ue,children:"Quota (optional)"}),c.jsxs("div",{className:"mt-0.5 grid grid-cols-3 gap-1.5",children:[c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"Concurrent",value:_,onChange:X=>G(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Max concurrent"})]}),c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"/min",value:K,onChange:X=>te(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Per minute"})]}),c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"/day",value:Q,onChange:X=>re(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Per day"})]})]})]})]}),ae=b?c.jsxs("div",{className:r?"space-y-1.5":void 0,children:[c.jsx("label",{className:Ue,htmlFor:`base-url-${e}`,children:"Base URL"}),c.jsx("input",{id:`base-url-${e}`,type:"text",className:be,placeholder:"http://localhost:11434/v1",value:A,onChange:X=>N(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Use any OpenAI-compatible endpoint, such as Ollama or vLLM."})]}):null,he=c.jsxs("div",{className:r?"min-w-0 space-y-1.5":void 0,children:[c.jsxs("div",{className:r?"flex items-center justify-between gap-3":"flex items-center justify-between",children:[c.jsxs("label",{className:Ue,htmlFor:`api-key-${e}`,children:["API key",b?" (optional)":""]}),a&&!v&&c.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-secondary hover:text-neutral underline underline-offset-2",children:["Get API key ","↗"]})]}),c.jsx("input",{id:`api-key-${e}`,type:"password",autoComplete:"new-password",autoCapitalize:"none",spellCheck:!1,className:be,placeholder:b?"Optional. Most local servers do not need one.":`Enter ${e} API key`,value:k,onChange:X=>S(X.target.value)})]}),je=c.jsx(fe,{type:"button",size:r?"default":"sm",className:r?"min-h-11":void 0,disabled:!Fe||W,onClick:Ft(Re),children:W?"Saving...":r?"Save connection":"Save"});return c.jsxs("div",{className:r?"space-y-3":"mt-3 rounded-lg border border-base bg-bg-elevated/40 p-3 space-y-2",children:[v&&c.jsxs("div",{className:"flex flex-wrap items-start gap-x-6 gap-y-3 pb-2",children:[c.jsxs("div",{className:"min-w-0 flex-1 basis-72 space-y-1",children:[c.jsx("h3",{className:"text-base font-semibold text-heading",children:"Start with Gemini’s free tier"}),c.jsxs("p",{className:"max-w-prose text-sm text-secondary",children:["Get a key in Google AI Studio, then paste it below. Free usage has model and rate limits; paid usage is billed by Google."," ",c.jsx("a",{href:"https://ai.google.dev/gemini-api/docs/pricing",target:"_blank",rel:"noopener noreferrer",className:"text-link underline underline-offset-2 focus-visible:outline-2 focus-visible:outline-offset-2",children:"Pricing and limits"})]})]}),c.jsx(fe,{variant:"outline",className:"min-h-11",asChild:!0,children:c.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",children:["Get a free Gemini API key ","↗"]})})]}),r?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:u?"grid items-start gap-3 sm:grid-cols-[minmax(0,0.7fr)_minmax(0,1.3fr)]":void 0,children:[u,he]}),ae]}):c.jsxs(c.Fragment,{children:[ae,he]}),r?c.jsxs("details",{children:[c.jsx("summary",{className:"min-h-11 cursor-pointer text-sm text-secondary py-3",children:"Advanced provider settings"}),c.jsx("div",{className:"space-y-3 pt-2",children:P})]}):P,H&&c.jsx("p",{role:"alert",className:"text-sm text-negative-400",children:H}),Te&&c.jsx("p",{className:"text-sm text-positive-400",children:"Provider updated."}),r?c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[je,f]}):je]})}const Yu="cdp:chatgpt";function Is(e){return e.trim().toLowerCase()}function hK({projectProviders:e,configuredApiProviders:a,cdpConfigured:s}){const r=e.map(Is),u=new Set(r),f=r.length===0||r.some(k=>k!==Yu),g=r.length===0||u.has(Yu);if(f&&a!==void 0&&a.map(Is).some(S=>r.length===0||u.has(S))||g&&s===!0)return!0;if(!(f&&a===void 0||g&&s===void 0))return!1}const fK=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}],gK=[{label:"Queries"},{label:"First sweep"}];function _x(e,a){return(e==="completed"||e==="partial")&&a>0}function zx(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function T3(e){return e.queryCounts.total>0}function yK(e,a){return a?e.find(s=>s.project.name===a)??null:e.find(s=>!T3(s))??e.at(0)??null}function bK({current:e,labels:a}){return c.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:a.map((s,r)=>{const u=r<e,f=r===e;return c.jsxs("div",{className:`setup-step ${u?"setup-step-done":""} ${f?"setup-step-active":""}`,role:"listitem","aria-current":f?"step":void 0,children:[c.jsx("span",{className:"setup-step-number",children:u?"✓":r+1}),c.jsx("span",{children:s.label})]},s.label)})})}function vK({visibilityProjectName:e,siteHealthOnboarding:a=!1}={}){const{canWrite:s}=ha();return e&&s?c.jsx(Ex,{visibilityProjectName:e,siteHealthOnboarding:a}):c.jsx(Ef,{title:e?"Set up AI Visibility":"Setup",children:c.jsx(Ex,{visibilityProjectName:e,siteHealthOnboarding:a})})}function Ex({visibilityProjectName:e,siteHealthOnboarding:a}){const s=Kl(),{isAdmin:r}=ha(),{dashboard:u,isLoading:f,refetch:g}=Ed(void 0,{pauseProjectPolling:!0,includeSettings:r}),b=u??s?.dashboard,v=Hs(),k=T.useCallback(A=>{A&&e&&A.focus()},[e]),S=()=>{if(!e){v({to:"/",replace:!0});return}v({to:a?"/projects/$projectName/technical-aeo":"/projects/$projectName",params:{projectName:e},replace:!0})};return!b||f?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-24"}),c.jsx("div",{className:"skeleton-text-sm w-80"})]}),c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-32"}),c.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(A=>c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"space-y-1 flex-1",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},A))})]})]}):e&&!b.projects.some(A=>A.project.name===e)?c.jsxs("div",{className:"page-container",children:[a?c.jsx(ir,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:k,tabIndex:-1,className:"page-title",children:"Set up AI Visibility"}),c.jsx("p",{className:"page-subtitle",children:"Choose what to track, then run your first visibility sweep."})]}),a?c.jsx("div",{className:"page-header-right",children:c.jsx(fe,{type:"button",variant:"outline",onClick:S,children:"Skip AI Visibility"})}):null]}),c.jsxs(ua,{role:"alert",className:"compact-stack",children:[c.jsx("h2",{children:"Project not found"}),c.jsx("p",{className:"text-secondary",children:"Canonry could not find the project handed off from Site Health. Refresh the project list or choose a project to continue."}),c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:()=>{g()},children:"Retry"}),c.jsx(fe,{type:"button",asChild:!0,children:c.jsx(tt,{to:"/projects",children:"View projects"})})]})]})]}):c.jsx(xK,{dashboard:b,initialHealth:s?.health,enableLiveStatus:!s,refetch:g,visibilityProjectName:e,visibilityHeadingRef:k,siteHealthOnboarding:a})}function xK({dashboard:e,initialHealth:a,enableLiveStatus:s,refetch:r,visibilityProjectName:u,visibilityHeadingRef:f,siteHealthOnboarding:g}){const b=e.settings,{isAdmin:v}=ha(),S=Sf(s,a).data??a??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},A=rU(e.setup,S,b),N=!!u,E=Hs(),Z=da(),_=T.useRef(A3()).current,G=T.useRef(new Set),K=T.useCallback((U,Pe)=>{if(Pe){if(G.current.has(Pe))return;G.current.add(Pe)}PS({surface:"wizard",...U,eventId:C3()})},[]),te=yK(e.projects,u),Q=te?e.runs.filter(U=>U.projectId===te.project.id).sort((U,Pe)=>Pe.createdAt.localeCompare(U.createdAt)):[],re=te?.queryCounts.total??0,W=te?.project.name,oe=Et({queryKey:["setup","resume-queries",W],queryFn:()=>W?DS(W):Promise.resolve([]),enabled:!!W}),H=oe.data??[],$=oe.data?.length??re,Te=te?.competitors.map(U=>U.domain)??[],Ke=Q.at(0)??null,Fe=!!te&&T3(te),Re=!!te&&oe.isPending,ve=N?2:zx({launchReady:A.launchState.enabled,hasProject:!!te,queryCount:$,competitorCount:Te.length,hasRunAttempt:Q.length>0||Fe}),Ue=zx({launchReady:!0,hasProject:!!te,queryCount:$,competitorCount:Te.length,hasRunAttempt:Q.length>0||Fe}),[be,P]=T.useState(ve),[ae,he]=T.useState(!Re),je=N&&(Re||!ae),[X,Ie]=T.useState(te?.project.name??""),[Ne,Ae]=T.useState(te?.project.displayName??""),[ne,V]=T.useState(te?.project.canonicalDomain??""),[q,le]=T.useState(te?.project.country??"US"),[De,ye]=T.useState(te?.project.language??"en"),[Je,Ge]=T.useState(te?.project.autoExtractBacklinks??!1),[Be,de]=T.useState(te?.project.name??null),[Me,$t]=T.useState(null),[Sn,ga]=T.useState(!1),ln=()=>{if(!Be){E({to:"/",replace:!!u});return}E({to:g?"/projects/$projectName/technical-aeo":"/projects/$projectName",params:{projectName:Be},replace:!!u})},[Ve,ut]=T.useState(H.map(U=>U.query).join(`
|
|
73
|
-
`)),[Jt,us]=T.useState($>0),[Hl,cn]=T.useState(null),[Ql,gr]=T.useState(!1),[Fl,Js]=T.useState(!1),Zl=b.providerStatuses.filter(U=>U.state==="ready"),Xn=te?.project.providers.map(Is)??[],Pn=Zl.filter(U=>Xn.length===0||Xn.includes(Is(U.name))),Rd=Zl.map(U=>Is(U.name)),ds=Pn.length>0,Wt=Xn.length===0||Xn.includes(Yu),un=N&&!v,Rt=Et({...
|
|
72
|
+
queries: []`,value:s,onChange:A=>r(A.target.value)}),g.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:g.map((A,N)=>c.jsx("li",{className:"text-positive-400 text-sm",children:A},N))}),v.length>0&&c.jsx("ul",{className:"mt-2 space-y-1",children:v.map((A,N)=>c.jsx("li",{className:"text-negative-400 text-sm",children:A},N))}),c.jsx("div",{className:"mt-3",children:c.jsx(fe,{type:"button",disabled:!s.trim()||u,onClick:Ft(S),children:u?"Applying...":"Apply"})})]})}function eK(){const{dashboard:e,isLoading:a,refetch:s}=Ed(),{canWrite:r,isAdmin:u}=ha(),f=Hs();if(!e||a)return c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-28"}),c.jsx("div",{className:"skeleton-text-sm w-40"})]}),c.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[c.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(b=>c.jsx("div",{className:"skeleton-text-sm w-16"},b))}),[1,2,3].map(b=>c.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[c.jsxs("div",{className:"flex-1 space-y-1",children:[c.jsx("div",{className:"skeleton-text w-28"}),c.jsx("div",{className:"skeleton-text-sm w-16"})]}),c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),c.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),c.jsx("div",{className:"skeleton-text-sm w-8"})]},b))]})]});const g=e.projects;return c.jsxs("div",{className:"page-container",children:[c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Projects"}),c.jsxs("p",{className:"page-subtitle",children:[g.length," project",g.length!==1?"s":""," tracked"]})]}),u?c.jsx("div",{className:"page-header-right",children:c.jsxs(fe,{type:"button",onClick:()=>{f({to:"/setup",search:{experience:"platform"}})},children:[c.jsx(sb,{className:"size-4 mr-1.5"}),g.length===0?"Map a site":"Add project"]})}):null]}),g.length>0?c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Name"}),c.jsx("th",{children:"Domain"}),c.jsx("th",{children:"Mentions"}),c.jsx("th",{children:"Last run"}),c.jsx("th",{className:"text-right",children:"Country"})]})}),c.jsx("tbody",{children:g.map(b=>{const v=b.recentRuns[0];return c.jsxs("tr",{className:"cursor-pointer",onClick:k=>{J$(k)&&f({to:"/projects/$projectName",params:{projectName:b.project.name}})},children:[c.jsxs("td",{children:[c.jsx(tt,{to:"/projects/$projectName",params:{projectName:b.project.name},className:"text-heading font-medium hover:underline",children:b.project.displayName||b.project.name}),c.jsx("p",{className:"text-[11px] text-muted",children:b.project.name})]}),c.jsx("td",{className:"text-secondary",children:b.project.canonicalDomain}),c.jsx("td",{children:c.jsx(pn,{tone:b.mentionSummary.tone,children:b.mentionSummary.value})}),c.jsx("td",{className:"text-muted text-sm",children:v?c.jsx(wf,{status:v.status}):c.jsx("span",{className:"text-faint",children:"No runs"})}),c.jsx("td",{className:"text-right text-muted",children:b.project.country})]},b.project.id)})})]})}):c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h3",{children:"No projects yet"}),c.jsx("p",{className:"supporting-copy",children:"Map a public site to capture its Page Health baseline and exact fixes."}),u?c.jsxs(fe,{type:"button",onClick:()=>{f({to:"/setup",search:{experience:"platform"}})},children:[c.jsx(sb,{className:"size-4 mr-1.5"}),"Map a site"]}):null]}),r?c.jsx(W$,{onApplied:()=>{s()}}):null]})}const Cx="canonry.onboarding-session.v1",Fu="canonry.onboarding-launched-run.v1",tK=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,nK=["system","project","queries","competitors","run"];function aK(e){return nK[e]??"system"}function iK(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function sK(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const oK={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function Al(e,a){const s=e&&typeof e=="object"&&"code"in e?String(e.code):"";return oK[s]??a}function A3(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Cx):null;if(e&&tK.test(e))return e;const a=Fh();return typeof window<"u"&&window.sessionStorage.setItem(Cx,a),a}catch{return Fh()}}function C3(){return Fh()}function N3(e){if(!e||typeof e!="object")return!1;const a=e;return typeof a.projectName=="string"&&a.projectName.length>0&&typeof a.runId=="string"&&a.runId.length>0&&typeof a.handled=="boolean"}function _3(e,a){try{typeof window<"u"&&window.sessionStorage.setItem(Fu,JSON.stringify({projectName:e,runId:a,handled:!1}))}catch{}}function z3(e){if(!e)return null;try{if(typeof window>"u")return null;const a=window.sessionStorage.getItem(Fu);if(!a)return null;const s=JSON.parse(a);return!N3(s)||s.projectName!==e||s.handled?null:s}catch{return null}}function Zu(e){try{if(typeof window>"u")return;const a=window.sessionStorage.getItem(Fu);if(!a)return;const s=JSON.parse(a);if(!N3(s)||s.runId!==e)return;window.sessionStorage.setItem(Fu,JSON.stringify({...s,handled:!0}))}catch{}}function Fh(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const a=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(a);else for(let r=0;r<a.length;r+=1)a[r]=Math.floor(Math.random()*256);a[6]=a[6]&15|64,a[8]=a[8]&63|128;const s=[...a].map(r=>r.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`}class rK extends Error{constructor(){super(LS),this.name="ViewOnlyError"}}function lK(e){if(!e.canWrite)throw new rK}function E3(e){e.invalidateQueries({queryKey:gf({client:se})}),e.invalidateQueries({queryKey:ts({client:se})})}function Xs(){const e=ha();return()=>{lK(e)}}function cK(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function uK(e,a){const s=e??"Project";return a==="gsc-sync"?`${s} will refresh after the sync completes.`:a==="inspect-sitemap"?`${s} will notify you when sitemap inspection finishes.`:`${s} will notify you when the run finishes.`}function _f(e,a){vf({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:a.projectLabel,sourceAction:a.sourceAction,lastAnnouncedStatus:"queued"}),rn({title:cK(e.kind),detail:uK(a.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function dK(e){const a=e.filter(g=>g.status!=="conflict"&&g.status!=="error"),s=e.filter(g=>g.status==="conflict"),r=e.filter(g=>g.status==="error"),u=s.length+r.length;if(a.length===0){const g=[r.length>0?`${r.length} need provider or query setup`:null,s.length>0?`${s.length} already have an active run`:null].filter(b=>b!==null);rn({title:"No runs queued",detail:g.length>0?`${g.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const g of a)vf({id:g.id,projectId:g.projectId,kind:g.kind,projectLabel:g.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const f=pU({runIds:a.map(g=>g.id),queuedCount:a.length,skippedCount:u});rn({title:"Run-all batch queued",detail:u>0?`${a.length} project${a.length===1?"":"s"} queued; ${u} need attention or already have an active run.`:`${a.length} project${a.length===1?"":"s"} queued.`,tone:u>0?"caution":"neutral",dedupeKey:`batch:${f}`,dedupeMode:"replace"})}function Td(e,a){if(e instanceof fn&&e.code==="RUN_IN_PROGRESS"){rn({title:"Run already in progress",detail:a?.projectLabel?`${a.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${a?.projectKey??"project"}:${a?.sourceAction??"run"}`,dedupeMode:"replace"});return}rn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function mK(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>DI(s,r),onSuccess:(s,r)=>{E3(a),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})},onError:(s,r)=>{r.sourceAction!=="setup-launch"&&Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:r.sourceAction})}})}function LY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:s=>LI(s),onSuccess:s=>{E3(a),dK(s)},onError:s=>{rn({title:s instanceof Error?s.message:"Failed to queue runs",tone:"negative"})}})}function pK(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,body:r})=>$I(s,r),onSuccess:(s,r)=>{Rl(a,ze["site-audit"],r.projectName),vf({id:s.runId,projectId:r.projectId,kind:ze["site-audit"],projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit",lastAnnouncedStatus:s.status}),rn({title:s.status==="running"?"Site Health scan already running":"Site Health scan queued",detail:`${r.projectLabel??r.projectName} will refresh automatically when the scan finishes.`,tone:"neutral",dedupeKey:`run:${s.runId}`,dedupeMode:"replace"})},onError:(s,r)=>{r.suppressErrorToast||Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"site-audit"})}})}function UY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>UI(s,r),onSuccess:(s,r)=>{Rl(a,ze["gsc-sync"],r.projectName),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})},onError:(s,r)=>{Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"gsc-sync"})}})}function GY(){const e=Xs(),a=da();return ns({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:s,opts:r})=>GI(s,r),onSuccess:(s,r)=>{Rl(a,ze["inspect-sitemap"],r.projectName),_f(s,{projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})},onError:(s,r)=>{Td(s,{projectKey:r.projectName,projectLabel:r.projectLabel??r.projectName,sourceAction:"inspect-sitemap"})}})}function zf(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const a=e.queryKey[0];return a==="projects"||a==="project-dashboard-full"}function $Y(){const e=Xs(),a=da();return ns({onMutate:e,mutationFn:({projectName:s,queries:r})=>EI(s,r),onSuccess:()=>{a.invalidateQueries({queryKey:ts({client:se})}),a.invalidateQueries({predicate:zf})}})}function KY(){const e=Xs(),a=da();return ns({onMutate:e,mutationFn:({projectName:s,body:r})=>TI(s,r),onSuccess:()=>{mn(a,"project"),a.invalidateQueries({predicate:zf})}})}function HY({disabled:e,title:a,...s}){const{canWrite:r}=ha();return r?c.jsx(fe,{disabled:e,title:a,...s}):c.jsx(fe,{...s,disabled:!0,title:LS})}function Ef({title:e,children:a}){const{isAdmin:s}=ha();return s?c.jsx(c.Fragment,{children:a}):c.jsxs(ua,{className:"surface-card mx-auto mt-8 max-w-lg",children:[c.jsxs(Ko,{children:[c.jsxs(j3,{children:[e," is for administrators"]}),c.jsx(Qu,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),c.jsx(Ms,{children:c.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}const Nx=[{id:"site",label:"Site audit",optional:!1},{id:"fixes",label:"Page health",optional:!1},{id:"visibility",label:"AI Visibility",optional:!0}];function ir({current:e}){const a=Nx.findIndex(s=>s.id===e);return c.jsx("ol",{"aria-label":"Onboarding progress",className:"grid border-y border-default sm:grid-cols-3 sm:divide-x sm:divide-default",children:Nx.map((s,r)=>{const u=r<a,f=r===a;return c.jsxs("li",{"aria-current":f?"step":void 0,className:"flex min-h-12 items-center gap-3 py-2 sm:px-3 sm:first:pl-0 sm:last:pr-0",children:[c.jsx("span",{"aria-hidden":"true",className:`flex size-6 shrink-0 items-center justify-center rounded-full border text-xs font-semibold tabular-nums ${f?"border-accent bg-accent text-on-inverse":u?"border-positive bg-positive-soft text-positive":"border-default bg-surface-subtle text-muted"}`,children:u?"✓":r+1}),c.jsxs("span",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2",children:[c.jsx("span",{className:`text-sm font-medium ${f||u?"text-heading":"text-secondary"}`,children:s.label}),s.optional?c.jsx("span",{className:"text-[13px] text-secondary",children:"Optional"}):null,u?c.jsx("span",{className:"sr-only",children:"Complete"}):null]})]},s.id)})})}function hK({providerName:e,keyUrl:a,modelHint:s,compact:r=!1,leadingField:u,secondaryActions:f,onSaved:g}){const b=e.toLowerCase()==="local",v=r&&e.toLowerCase()==="gemini"&&!!a,[k,S]=T.useState(""),[A,N]=T.useState(""),[E,Z]=T.useState(""),[_,G]=T.useState(""),[K,te]=T.useState(""),[Q,re]=T.useState(""),[W,oe]=T.useState(!1),[H,$]=T.useState(null),[Te,Ke]=T.useState(!1),Fe=b?A.trim().length>0:k.trim().length>0;async function Re(){if(Fe){oe(!0),$(null),Ke(!1);try{const X=V=>{const q=parseInt(V.trim(),10);return Number.isFinite(q)&&q>0?q:void 0},Ie={},Ne=X(_);Ne!==void 0&&(Ie.maxConcurrency=Ne);const Ae=X(K);Ae!==void 0&&(Ie.maxRequestsPerMinute=Ae);const ne=X(Q);ne!==void 0&&(Ie.maxRequestsPerDay=ne),await BS(e.toLowerCase(),{...k.trim()?{apiKey:k.trim()}:{},...A.trim()?{baseUrl:A.trim()}:{},...E.trim()?{model:E.trim()}:{},...Object.keys(Ie).length>0?{quota:Ie}:{}}),S(""),N(""),Z(""),G(""),te(""),re(""),Ke(!0),rn({title:"Provider updated",detail:`${e} configuration saved.`,tone:"positive",dedupeKey:`settings:provider:${e}`,dedupeMode:"replace"}),g()}catch(X){$(X instanceof Error?X.message:"Failed to update provider")}finally{oe(!1)}}}const ve=s??"Use default model",Ue=r?"block text-sm font-medium text-secondary":"text-sm text-secondary",be=r?"setup-input min-h-11 w-full":"mt-0.5 w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",P=c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:r?"space-y-1.5":void 0,children:[c.jsx("label",{className:Ue,htmlFor:`model-${e}`,children:"Model (optional)"}),c.jsx("input",{id:`model-${e}`,type:"text",className:be,placeholder:ve,value:E,onChange:X=>Z(X.target.value)})]}),c.jsxs("div",{children:[c.jsx("label",{className:Ue,children:"Quota (optional)"}),c.jsxs("div",{className:"mt-0.5 grid grid-cols-3 gap-1.5",children:[c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"Concurrent",value:_,onChange:X=>G(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Max concurrent"})]}),c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"/min",value:K,onChange:X=>te(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Per minute"})]}),c.jsxs("div",{children:[c.jsx("input",{type:"number",min:"1",className:r?"setup-input min-h-11 w-full":"w-full rounded border border-strong bg-transparent px-2 py-1.5 text-sm text-strong placeholder-mono-600 focus:border-mono-500 focus:outline-none",placeholder:"/day",value:Q,onChange:X=>re(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Per day"})]})]})]})]}),ae=b?c.jsxs("div",{className:r?"space-y-1.5":void 0,children:[c.jsx("label",{className:Ue,htmlFor:`base-url-${e}`,children:"Base URL"}),c.jsx("input",{id:`base-url-${e}`,type:"text",className:be,placeholder:"http://localhost:11434/v1",value:A,onChange:X=>N(X.target.value)}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Use any OpenAI-compatible endpoint, such as Ollama or vLLM."})]}):null,he=c.jsxs("div",{className:r?"min-w-0 space-y-1.5":void 0,children:[c.jsxs("div",{className:r?"flex items-center justify-between gap-3":"flex items-center justify-between",children:[c.jsxs("label",{className:Ue,htmlFor:`api-key-${e}`,children:["API key",b?" (optional)":""]}),a&&!v&&c.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-secondary hover:text-neutral underline underline-offset-2",children:["Get API key ","↗"]})]}),c.jsx("input",{id:`api-key-${e}`,type:"password",autoComplete:"new-password",autoCapitalize:"none",spellCheck:!1,className:be,placeholder:b?"Optional. Most local servers do not need one.":`Enter ${e} API key`,value:k,onChange:X=>S(X.target.value)})]}),je=c.jsx(fe,{type:"button",size:r?"default":"sm",className:r?"min-h-11":void 0,disabled:!Fe||W,onClick:Ft(Re),children:W?"Saving...":r?"Save connection":"Save"});return c.jsxs("div",{className:r?"space-y-3":"mt-3 rounded-lg border border-base bg-bg-elevated/40 p-3 space-y-2",children:[v&&c.jsxs("div",{className:"flex flex-wrap items-start gap-x-6 gap-y-3 pb-2",children:[c.jsxs("div",{className:"min-w-0 flex-1 basis-72 space-y-1",children:[c.jsx("h3",{className:"text-base font-semibold text-heading",children:"Start with Gemini’s free tier"}),c.jsxs("p",{className:"max-w-prose text-sm text-secondary",children:["Get a key in Google AI Studio, then paste it below. Free usage has model and rate limits; paid usage is billed by Google."," ",c.jsx("a",{href:"https://ai.google.dev/gemini-api/docs/pricing",target:"_blank",rel:"noopener noreferrer",className:"text-link underline underline-offset-2 focus-visible:outline-2 focus-visible:outline-offset-2",children:"Pricing and limits"})]})]}),c.jsx(fe,{variant:"outline",className:"min-h-11",asChild:!0,children:c.jsxs("a",{href:a,target:"_blank",rel:"noopener noreferrer",children:["Get a free Gemini API key ","↗"]})})]}),r?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:u?"grid items-start gap-3 sm:grid-cols-[minmax(0,0.7fr)_minmax(0,1.3fr)]":void 0,children:[u,he]}),ae]}):c.jsxs(c.Fragment,{children:[ae,he]}),r?c.jsxs("details",{children:[c.jsx("summary",{className:"min-h-11 cursor-pointer text-sm text-secondary py-3",children:"Advanced provider settings"}),c.jsx("div",{className:"space-y-3 pt-2",children:P})]}):P,H&&c.jsx("p",{role:"alert",className:"text-sm text-negative-400",children:H}),Te&&c.jsx("p",{className:"text-sm text-positive-400",children:"Provider updated."}),r?c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[je,f]}):je]})}const Yu="cdp:chatgpt";function Is(e){return e.trim().toLowerCase()}function fK({projectProviders:e,configuredApiProviders:a,cdpConfigured:s}){const r=e.map(Is),u=new Set(r),f=r.length===0||r.some(k=>k!==Yu),g=r.length===0||u.has(Yu);if(f&&a!==void 0&&a.map(Is).some(S=>r.length===0||u.has(S))||g&&s===!0)return!0;if(!(f&&a===void 0||g&&s===void 0))return!1}const gK=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}],yK=[{label:"Queries"},{label:"First sweep"}];function _x(e,a){return(e==="completed"||e==="partial")&&a>0}function zx(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function T3(e){return e.queryCounts.total>0}function bK(e,a){return a?e.find(s=>s.project.name===a)??null:e.find(s=>!T3(s))??e.at(0)??null}function vK({current:e,labels:a}){return c.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:a.map((s,r)=>{const u=r<e,f=r===e;return c.jsxs("div",{className:`setup-step ${u?"setup-step-done":""} ${f?"setup-step-active":""}`,role:"listitem","aria-current":f?"step":void 0,children:[c.jsx("span",{className:"setup-step-number",children:u?"✓":r+1}),c.jsx("span",{children:s.label})]},s.label)})})}function xK({visibilityProjectName:e,siteHealthOnboarding:a=!1}={}){const{canWrite:s}=ha();return e&&s?c.jsx(Ex,{visibilityProjectName:e,siteHealthOnboarding:a}):c.jsx(Ef,{title:e?"Set up AI Visibility":"Setup",children:c.jsx(Ex,{visibilityProjectName:e,siteHealthOnboarding:a})})}function Ex({visibilityProjectName:e,siteHealthOnboarding:a}){const s=Kl(),{isAdmin:r}=ha(),{dashboard:u,isLoading:f,refetch:g}=Ed(void 0,{pauseProjectPolling:!0,includeSettings:r}),b=u??s?.dashboard,v=Hs(),k=T.useCallback(A=>{A&&e&&A.focus()},[e]),S=()=>{if(!e){v({to:"/",replace:!0});return}v({to:a?"/projects/$projectName/technical-aeo":"/projects/$projectName",params:{projectName:e},replace:!0})};return!b||f?c.jsxs("div",{className:"page-skeleton",children:[c.jsxs("div",{className:"page-skeleton-header",children:[c.jsx("div",{className:"skeleton-text h-6 w-24"}),c.jsx("div",{className:"skeleton-text-sm w-80"})]}),c.jsxs("div",{className:"page-skeleton-card",children:[c.jsx("div",{className:"skeleton-text w-32"}),c.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(A=>c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"space-y-1 flex-1",children:[c.jsx("div",{className:"skeleton-text w-24"}),c.jsx("div",{className:"skeleton-text-sm w-48"})]}),c.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},A))})]})]}):e&&!b.projects.some(A=>A.project.name===e)?c.jsxs("div",{className:"page-container",children:[a?c.jsx(ir,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:k,tabIndex:-1,className:"page-title",children:"Set up AI Visibility"}),c.jsx("p",{className:"page-subtitle",children:"Choose what to track, then run your first visibility sweep."})]}),a?c.jsx("div",{className:"page-header-right",children:c.jsx(fe,{type:"button",variant:"outline",onClick:S,children:"Skip AI Visibility"})}):null]}),c.jsxs(ua,{role:"alert",className:"compact-stack",children:[c.jsx("h2",{children:"Project not found"}),c.jsx("p",{className:"text-secondary",children:"Canonry could not find the project handed off from Site Health. Refresh the project list or choose a project to continue."}),c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:()=>{g()},children:"Retry"}),c.jsx(fe,{type:"button",asChild:!0,children:c.jsx(tt,{to:"/projects",children:"View projects"})})]})]})]}):c.jsx(kK,{dashboard:b,initialHealth:s?.health,enableLiveStatus:!s,refetch:g,visibilityProjectName:e,visibilityHeadingRef:k,siteHealthOnboarding:a})}function kK({dashboard:e,initialHealth:a,enableLiveStatus:s,refetch:r,visibilityProjectName:u,visibilityHeadingRef:f,siteHealthOnboarding:g}){const b=e.settings,{isAdmin:v}=ha(),S=Sf(s,a).data??a??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},A=lU(e.setup,S,b),N=!!u,E=Hs(),Z=da(),_=T.useRef(A3()).current,G=T.useRef(new Set),K=T.useCallback((U,Pe)=>{if(Pe){if(G.current.has(Pe))return;G.current.add(Pe)}PS({surface:"wizard",...U,eventId:C3()})},[]),te=bK(e.projects,u),Q=te?e.runs.filter(U=>U.projectId===te.project.id).sort((U,Pe)=>Pe.createdAt.localeCompare(U.createdAt)):[],re=te?.queryCounts.total??0,W=te?.project.name,oe=Et({queryKey:["setup","resume-queries",W],queryFn:()=>W?DS(W):Promise.resolve([]),enabled:!!W}),H=oe.data??[],$=oe.data?.length??re,Te=te?.competitors.map(U=>U.domain)??[],Ke=Q.at(0)??null,Fe=!!te&&T3(te),Re=!!te&&oe.isPending,ve=N?2:zx({launchReady:A.launchState.enabled,hasProject:!!te,queryCount:$,competitorCount:Te.length,hasRunAttempt:Q.length>0||Fe}),Ue=zx({launchReady:!0,hasProject:!!te,queryCount:$,competitorCount:Te.length,hasRunAttempt:Q.length>0||Fe}),[be,P]=T.useState(ve),[ae,he]=T.useState(!Re),je=N&&(Re||!ae),[X,Ie]=T.useState(te?.project.name??""),[Ne,Ae]=T.useState(te?.project.displayName??""),[ne,V]=T.useState(te?.project.canonicalDomain??""),[q,le]=T.useState(te?.project.country??"US"),[De,ye]=T.useState(te?.project.language??"en"),[Je,Ge]=T.useState(te?.project.autoExtractBacklinks??!1),[Be,de]=T.useState(te?.project.name??null),[Me,$t]=T.useState(null),[Sn,ga]=T.useState(!1),ln=()=>{if(!Be){E({to:"/",replace:!!u});return}E({to:g?"/projects/$projectName/technical-aeo":"/projects/$projectName",params:{projectName:Be},replace:!!u})},[Ve,ut]=T.useState(H.map(U=>U.query).join(`
|
|
73
|
+
`)),[Jt,us]=T.useState($>0),[Hl,cn]=T.useState(null),[Ql,gr]=T.useState(!1),[Fl,Js]=T.useState(!1),Zl=b.providerStatuses.filter(U=>U.state==="ready"),Xn=te?.project.providers.map(Is)??[],Pn=Zl.filter(U=>Xn.length===0||Xn.includes(Is(U.name))),Rd=Zl.map(U=>Is(U.name)),ds=Pn.length>0,Wt=Xn.length===0||Xn.includes(Yu),un=N&&!v,Rt=Et({...AV({client:se,path:{name:W??""}}),enabled:un&&!!W,staleTime:0,refetchOnMount:"always",refetchOnWindowFocus:"always",retry:!1}),Yl=Rt.data?.answerVisibilityProviderReady,yr=un&&(Rt.isError||Rt.isSuccess&&typeof Yl!="boolean"),Ws=Et({...XV({client:se}),enabled:!un&&Wt&&!ds,staleTime:6e4,retry:!1}),Ka=Wt?Ws.isSuccess?typeof Ws.data.browserVersion=="string":Ws.isError?!1:void 0:!1,Kt=un?Rt.isSuccess&&Rt.isFetchedAfterMount&&!Rt.isFetching?Yl:void 0:fK({projectProviders:Xn,configuredApiProviders:Rd,cdpConfigured:Ka}),bi=Pn.length+(Ka===!0?1:0),[jn,Ha]=T.useState(Pn[0]?.name??""),[vi,Dd]=T.useState(5),[br,eo]=T.useState(!1),[xi,Xl]=T.useState(null),[Jl,Wl]=T.useState(""),to=T.useRef(!1),vr=T.useCallback(U=>{!U||!to.current||(to.current=!1,U.focus({preventScroll:!0}))},[]),[ms,xr]=T.useState(!1),[ec,Ta]=T.useState(!1),[Mt,en]=T.useState(!1),ya=b.providerStatuses.filter(U=>Is(U.name)!==Yu&&(Xn.length===0||Xn.includes(Is(U.name)))),An=ya.find(U=>U.name===Jl)??ya.find(U=>U.state!=="ready")??ya.at(0),tc=`Help me choose AI Visibility queries for Canonry project ${JSON.stringify(Be??X)} (${ne}).
|
|
74
74
|
1. Read the project, its existing tracked queries, and Site Health findings. Ask about my customers, services, and locations if needed, then propose relevant customer queries.
|
|
75
75
|
2. Check the configured connection's capabilities, then use Canonry's Research flow to test a small approved batch. Retrieve saved answers and any available sources. Compare brand mentions separately from site citations; unavailable citation evidence is not a "not cited" result. Text-only routes can inform query research but cannot establish an AI Visibility baseline. Research does not add queries to tracking. If more candidates are needed, propose ICP Discovery separately.
|
|
76
76
|
3. Recommend a short list with reasons. Ask before provider usage. Once I approve, preserve existing queries and return the combined list, one query per line, for me to paste into setup. Do not change tracked queries or launch a visibility sweep.`,Od=async()=>{en(!1);try{await navigator.clipboard.writeText(tc),Ta(!0)}catch{en(!0)}},[kr,ps]=T.useState(Te.join(`
|
|
77
|
-
`)),[no,ki]=T.useState(Te.length>0),[Qa,wi]=T.useState(null),[Fa,qt]=T.useState(!1),ao=T.useRef(z3(W)).current?.runId??null,Ra=T.useRef(ao),[Cn,Bd]=T.useState(!!ao||!!Ke&&!Fe),[hs,wr]=T.useState(!1),[Za,Si]=T.useState(null),[Da,ba]=T.useState(ao??(Fe?null:Ke?.id??null)),Nn=
|
|
77
|
+
`)),[no,ki]=T.useState(Te.length>0),[Qa,wi]=T.useState(null),[Fa,qt]=T.useState(!1),ao=T.useRef(z3(W)).current?.runId??null,Ra=T.useRef(ao),[Cn,Bd]=T.useState(!!ao||!!Ke&&!Fe),[hs,wr]=T.useState(!1),[Za,Si]=T.useState(null),[Da,ba]=T.useState(ao??(Fe?null:Ke?.id??null)),Nn=mK(),Oa=Et({...bf({client:se,path:{id:Da??""}}),enabled:!!Da,refetchInterval:({state:U})=>{const Pe=U.data?.status;return Pe==="completed"||Pe==="partial"||Pe==="failed"||Pe==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}),[Sr,io]=T.useState(""),[so,fs]=T.useState(!1),[nc,gn]=T.useState(null),va=X.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),Mn=Ve.split(`
|
|
78
78
|
`).map(U=>U.trim()).filter(Boolean),qa=kr.split(`
|
|
79
|
-
`).map(U=>U.trim()).filter(Boolean),Jn=Math.max($,Jt?Mn.length:0),In=
|
|
80
|
-
`)),us(!0)),he(!0))},[H,ve,N,ae,Re]),T.useEffect(()=>{if(Pn.length===0){Ha("");return}Pn.some(U=>U.name===jn)||Ha(Pn[0].name)},[Pn,jn]),T.useEffect(()=>{ae&&(K({flowVersion:st,onboardingSessionId:_,event:"onboarding.started",step:
|
|
79
|
+
`).map(U=>U.trim()).filter(Boolean),Jn=Math.max($,Jt?Mn.length:0),In=iK({apiReady:S.apiStatus.state==="ok",databaseConfigured:S.apiStatus.databaseConfigured,workerReady:S.workerStatus.state==="ok",providerReady:Kt!==!1}),_n=(In&&In!=="no_provider"?A.launchState.blockedReason:yr?"Provider readiness could not be checked. Try again.":Kt===void 0?"Checking provider readiness before launch.":In==="no_provider"?"Launch is blocked until a provider allowed by this project is configured.":void 0)??(Be?Jn===0?"Add at least one query before launching the first sweep.":void 0:"Create a project before launching the first sweep.");T.useEffect(()=>{ae||Re||(N||P(ve),H.length>0&&(ut(H.map(U=>U.query).join(`
|
|
80
|
+
`)),us(!0)),he(!0))},[H,ve,N,ae,Re]),T.useEffect(()=>{if(Pn.length===0){Ha("");return}Pn.some(U=>U.name===jn)||Ha(Pn[0].name)},[Pn,jn]),T.useEffect(()=>{ae&&(K({flowVersion:st,onboardingSessionId:_,event:"onboarding.started",step:aK(ve),resumed:!!te},"onboarding.started"),!te&&ve>0&&K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"))},[K,ve,_,ae,te]),T.useEffect(()=>{N||!sK(S)||!In||K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"system",action:In==="no_provider"?"configure_provider":"continue",reasonCode:In},`onboarding.blocked:system:${In}`)},[K,S,N,_,In]);const Ya=Oa.data?.status,gs=Oa.data?.snapshots?.length??0;T.useEffect(()=>{if(!Cn||!Ya)return;const U=Ra.current;if(!U||U!==Da)return;if(_x(Ya,gs)){K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"run",method:"automatic",countBucket:La(gs)},"onboarding.step_completed:run"),Zu(U);return}const Pe=Ya==="cancelled"?"run_cancelled":Ya==="failed"||(Ya==="completed"||Ya==="partial")&&gs===0?"run_failed":void 0;Pe&&(K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Pe},`onboarding.blocked:run:${Pe}`),Zu(U))},[K,Da,_,Ya,gs,Cn]);const ac=async()=>{if(!(!va||!ne)){ga(!0),$t(null);try{const U=await qS(va,{displayName:Ne||X,canonicalDomain:ne,country:q,language:De,autoExtractBacklinks:Je});de(va),rn({title:"Project created",detail:`${U.displayName||U.name} is ready for setup.`,tone:"positive",dedupeKey:`project:create:${U.name}`,dedupeMode:"drop"}),await r(),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),P(2)}catch(U){$t(U instanceof Error?U.message:"Failed to create project"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"project",action:"save",reasonCode:"project_create_failed"},"onboarding.blocked:project:project_create_failed")}finally{ga(!1)}}},jr=async()=>{if(!Be)return;const U=Mn;if(U.length!==0){gr(!0),cn(null);try{await zI(Be,U),us(!0),N?await Promise.all([Z.invalidateQueries({queryKey:$S({client:se,path:{name:Be}})}),Z.invalidateQueries({predicate:zf}),Z.invalidateQueries({queryKey:["setup","resume-queries",Be]})]):await r(),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"queries",method:Fl?"generated":"manual",countBucket:La(U.length)},"onboarding.step_completed:queries"),P(N?4:3)}catch(Pe){cn(Pe instanceof Error?Pe.message:"Failed to save queries"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"queries",action:"save",reasonCode:"query_save_failed"},"onboarding.blocked:queries:query_save_failed")}finally{gr(!1)}}},Md=async()=>{if(!(!Be||!jn)){eo(!0),Xl(null);try{const U=await II(Be,jn,vi);if(U.queries.length>0){const Pe=Ve?Ve.trimEnd()+`
|
|
81
81
|
`+U.queries.join(`
|
|
82
82
|
`):U.queries.join(`
|
|
83
|
-
`);ut(Pe),Js(!0)}}catch(U){Xl(U instanceof Error?U.message:"Failed to generate queries"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Al(U,"unknown")},"onboarding.blocked:queries:generate")}finally{eo(!1)}}},Id=async()=>{if(!Be)return;const U=qa;if(U.length!==0){qt(!0),wi(null);try{await RI(Be,U),ki(!0),await r(),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:La(U.length)},"onboarding.step_completed:competitors"),P(4)}catch(Pe){wi(Pe instanceof Error?Pe.message:"Failed to save competitors"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{qt(!1)}}},oo=async()=>{const U=Sr.trim();if(U){fs(!0),gn(null);try{await BS("gemini",{apiKey:U}),rn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),io(""),await r(),Ha(b.providerStatuses.find(Pe=>Pe.name.toLowerCase()==="gemini")?.name??"gemini"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Pe){gn(Pe instanceof Error?Pe.message:"Failed to save Gemini key"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{fs(!1)}}},Wn=async()=>{if(!Ps()){if(!Be||_n){Si(_n??"Complete setup before launching the first sweep.");const U=In??(Be?Jn===0?"no_queries":"run_rejected":"unknown");un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:La(bi),queryCountBucket:La(Jn),reasonCode:U});return}wr(!0),Si(null);try{const U=await Nn.mutateAsync({projectName:Be,projectLabel:Ne||X||Be,sourceAction:"setup-launch"});ba(U.id),Bd(!0),_3(Be,U.id),Ra.current=U.id,un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:La(bi),queryCountBucket:La(Jn)}),await r()}catch(U){Si(U instanceof Error?U.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:La(bi),queryCountBucket:La(Jn),reasonCode:Al(U,"run_rejected")})}finally{wr(!1)}}},ea=()=>P(U=>N?2:Math.max(0,U-1)),ys=(U,Pe,yn)=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:U,method:"existing",...yn===void 0?{}:{countBucket:La(yn)}},`onboarding.step_completed:${U}`),P(Pe)},ji=()=>{if(K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),N){ln();return}P(3)},Ai=()=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),P(4)},ic=N?"section":ua,ro=Kt!==!0||Ka===!0?c.jsx(fe,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",onClick:()=>{r(),Wt&&Ws.refetch()},children:"Check again"}):null,sc=(Kt===!1||ms)&&!!An,bs=N&&(be===2||be===4)?v?c.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-3 border-b border-default pb-6 mb-6",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[c.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:Kt===!1?"Connect a provider":"Answer engine provider"}),c.jsx(pn,{tone:Kt===!0?"positive":"neutral",children:Kt===!0?"Configured":Kt===!1?"Not connected":"Checking"})]}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:Kt===!0?Pn.length>0?`${Pn.map(U=>U.displayName??U.name).join(", ")} available for this project. Research and sweeps use your provider account.`:"ChatGPT in Chrome is configured for sweeps. Query Research needs an API provider.":Kt===!1?"An answer engine is required for visibility sweeps. You can save queries now and connect later.":"Checking available providers. You can choose queries while this finishes."}),Kt===!1||ms?An?c.jsx("div",{children:c.jsx(pK,{compact:!0,leadingField:c.jsxs("div",{className:"min-w-0 space-y-1.5",children:[c.jsx("label",{className:"block text-sm font-medium text-secondary",htmlFor:"setup-provider",children:"Provider to connect"}),c.jsx("select",{ref:vr,id:"setup-provider",className:"setup-input",value:An.name,onChange:U=>{U.target.value!==An.name&&(to.current=document.activeElement===U.currentTarget,Wl(U.target.value))},children:ya.map(U=>c.jsx("option",{value:U.name,children:U.displayName??U.name},U.name))})]}),secondaryActions:ro,providerName:An.name,keyUrl:An.keyUrl,modelHint:An.modelHint,onSaved:()=>{xr(!1),r()}},An.name)}):c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:Xn.length>0?`This project's provider selection is ${Xn.join(", ")}. Configure an allowed provider in Settings, or change the selection in project Settings.`:"Provider configuration is unavailable here. Open Settings to connect an answer engine, then check again."}):null,c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[Kt===!0&&!ms&&An?c.jsx(fe,{type:"button",variant:"outline",size:"sm",onClick:()=>xr(!0),children:"Configure a provider"}):null,!An||Ka===!0?c.jsx(fe,{type:"button",variant:"outline",size:"sm",asChild:!0,children:c.jsx(tt,{to:"/settings",target:"_blank",rel:"noopener noreferrer",children:"Open provider settings"})}):null,sc?null:ro]})]}):c.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-2 border-b border-default pb-6 mb-6",children:[c.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:"Answer engine provider"}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Provider settings are managed by an administrator."}),yr?c.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Provider readiness could not be checked. Try again."}):c.jsx("p",{className:"max-w-prose text-sm text-secondary",role:"status",children:Kt===!0?"An answer engine is available for this project.":Kt===!1?"Ask an administrator to connect an answer engine for this project. You can save queries now.":"Checking provider readiness. You can save queries now."}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",disabled:Rt.isFetching,onClick:()=>{Rt.refetch()},children:yr?"Retry provider check":"Check again"})]}):null,xa=(()=>{switch(be){case 0:return c.jsxs(ua,{className:"surface-card step-card",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),c.jsx("h2",{children:"System check"})]})}),c.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),c.jsx("div",{className:"compact-stack",children:A.healthChecks.map(U=>c.jsxs("div",{className:"health-check-row",children:[c.jsxs("div",{children:[c.jsx("p",{className:"run-row-title",children:U.label}),c.jsx("p",{className:"supporting-copy",children:U.detail}),U.id==="provider"&&U.state!=="ready"&&c.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[c.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",c.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("input",{type:"password",value:Sr,onChange:Pe=>io(Pe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:so}),c.jsx(fe,{type:"button",size:"sm",disabled:so||!Sr.trim(),onClick:Ft(oo),children:so?"Saving...":"Save"})]}),nc&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:nc}),c.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),c.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",c.jsx(tt,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),c.jsx(pn,{tone:U.state==="ready"?"positive":"caution",title:U.id==="api"?ar(S.apiStatus):U.id==="worker"?ar(S.workerStatus):U.detail,children:U.state==="ready"?"Ready":"Attention"})]},U.id))}),c.jsxs("div",{className:"setup-nav",children:[A.launchState.blockedReason?c.jsx("p",{role:"status",className:"supporting-copy text-negative",children:A.launchState.blockedReason}):c.jsx("span",{}),c.jsx(fe,{type:"button",disabled:!A.launchState.enabled,title:A.launchState.blockedReason,onClick:()=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),P(Ue)},children:"Continue"})]})]});case 1:return c.jsxs(ua,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),c.jsx("h2",{children:"Create project"})]}),Be?c.jsx(pn,{tone:"positive",children:"Created"}):null]}),Be?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Project ",c.jsx("span",{className:"text-heading font-medium",children:Be})," created successfully."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",onClick:()=>ys("project",2),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),c.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:X,onChange:U=>Ie(U.target.value)}),va&&va!==X?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",va]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),c.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:Ne,onChange:U=>Ae(U.target.value)})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),c.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:ne,onChange:U=>V(U.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),c.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:q,onChange:U=>le(U.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),c.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:De,onChange:U=>ye(U.target.value.toLowerCase())})]})]}),c.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[c.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:Je,onChange:U=>Ge(U.target.checked)}),c.jsxs("span",{className:"flex-1",children:[c.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),c.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",c.jsx(tt,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),Me?c.jsx("p",{className:"text-negative-400 text-sm",children:Me}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",disabled:!va||!ne||Sn,onClick:Ft(ac),children:Sn?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(ic,{className:N?"visibility-setup-section step-card":"surface-card step-card","aria-labelledby":"setup-queries-heading",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:N?"Step 1 of 2":"Step 3 of 5"}),c.jsx("h2",{id:"setup-queries-heading",children:"Add queries"})]}),je?c.jsx(pn,{tone:"neutral",children:"Loading"}):oe.isError?c.jsx(pn,{tone:"negative",children:"Load failed"}):Jt?c.jsxs(pn,{tone:"positive",children:[Mn.length," saved"]}):c.jsxs(pn,{tone:"neutral",children:[Mn.length," quer",Mn.length!==1?"ies":"y"]})]}),c.jsx("p",{className:"supporting-copy",children:"Add the queries your customers use, one per line. You can refine your list later."}),c.jsxs("div",{className:"space-y-2 border-b border-default pb-4",children:[c.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[c.jsxs("div",{className:"min-w-0 space-y-1",children:[c.jsx("h3",{className:"text-sm font-semibold text-heading",children:"Research queries with your agent"}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Ask your agent to compare answers and available sources with Canonry Research, then recommend queries. Research does not change your tracked queries."})]}),c.jsx(fe,{type:"button",variant:"outline",size:"sm",className:"min-h-11 shrink-0 self-start",onClick:Ft(Od),children:ec?"Research prompt copied":"Copy research prompt"})]}),c.jsxs("details",{open:Mt||void 0,className:"text-sm text-secondary",children:[c.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-link",children:"View agent prompt"}),c.jsx("textarea",{"aria-label":"Agent query research prompt",readOnly:!0,className:"setup-textarea mt-2 w-full",rows:8,value:tc})]}),Mt?c.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Could not copy. Select and copy the prompt above."}):null]}),je?c.jsx("div",{className:"rounded-md border border-default bg-bg-elevated/40 p-4 text-sm text-secondary",role:"status",children:"Loading saved queries…"}):oe.isError?c.jsxs("div",{className:"compact-stack",children:[c.jsx("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:"Saved queries could not be loaded. Retry before changing the query basket."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:N?ln:ea,children:"Back"}),c.jsx(fe,{type:"button",onClick:()=>{oe.refetch()},children:"Retry loading queries"})]})]}):Jt?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:Mn.map(U=>c.jsx("li",{children:U},U))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:N?ln:ea,children:"Back"}),c.jsx(fe,{type:"button",variant:"outline",onClick:()=>us(!1),children:"Edit queries"}),c.jsx(fe,{type:"button",onClick:()=>ys("queries",N?4:3,Mn.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[Pn.length>0?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"flex items-end gap-2",children:[c.jsxs("div",{className:"setup-field flex-1",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),c.jsx("select",{id:"gen-provider",className:"setup-input",value:jn,onChange:U=>Ha(U.target.value),children:Pn.map(U=>c.jsxs("option",{value:U.name,children:[U.displayName??U.name,U.model?` (${U.model})`:""]},U.name))})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),c.jsx("select",{id:"gen-count",className:"setup-input",value:vi,onChange:U=>Dd(Number(U.target.value)),children:[3,5,10,15,20].map(U=>c.jsx("option",{value:U,children:U},U))})]}),c.jsx(fe,{type:"button",variant:"outline",disabled:br||!jn,onClick:Ft(Md),children:br?"Analyzing site...":"Generate"})]}),xi?c.jsx("p",{className:"text-negative-400 text-sm",children:xi}):null]}):null,N?null:c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),c.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
83
|
+
`);ut(Pe),Js(!0)}}catch(U){Xl(U instanceof Error?U.message:"Failed to generate queries"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Al(U,"unknown")},"onboarding.blocked:queries:generate")}finally{eo(!1)}}},Id=async()=>{if(!Be)return;const U=qa;if(U.length!==0){qt(!0),wi(null);try{await RI(Be,U),ki(!0),await r(),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:La(U.length)},"onboarding.step_completed:competitors"),P(4)}catch(Pe){wi(Pe instanceof Error?Pe.message:"Failed to save competitors"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{qt(!1)}}},oo=async()=>{const U=Sr.trim();if(U){fs(!0),gn(null);try{await BS("gemini",{apiKey:U}),rn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),io(""),await r(),Ha(b.providerStatuses.find(Pe=>Pe.name.toLowerCase()==="gemini")?.name??"gemini"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Pe){gn(Pe instanceof Error?Pe.message:"Failed to save Gemini key"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{fs(!1)}}},Wn=async()=>{if(!Ps()){if(!Be||_n){Si(_n??"Complete setup before launching the first sweep.");const U=In??(Be?Jn===0?"no_queries":"run_rejected":"unknown");un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:La(bi),queryCountBucket:La(Jn),reasonCode:U});return}wr(!0),Si(null);try{const U=await Nn.mutateAsync({projectName:Be,projectLabel:Ne||X||Be,sourceAction:"setup-launch"});ba(U.id),Bd(!0),_3(Be,U.id),Ra.current=U.id,un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:La(bi),queryCountBucket:La(Jn)}),await r()}catch(U){Si(U instanceof Error?U.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),un||K({flowVersion:st,onboardingSessionId:_,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:La(bi),queryCountBucket:La(Jn),reasonCode:Al(U,"run_rejected")})}finally{wr(!1)}}},ea=()=>P(U=>N?2:Math.max(0,U-1)),ys=(U,Pe,yn)=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:U,method:"existing",...yn===void 0?{}:{countBucket:La(yn)}},`onboarding.step_completed:${U}`),P(Pe)},ji=()=>{if(K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),N){ln();return}P(3)},Ai=()=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),P(4)},ic=N?"section":ua,ro=Kt!==!0||Ka===!0?c.jsx(fe,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",onClick:()=>{r(),Wt&&Ws.refetch()},children:"Check again"}):null,sc=(Kt===!1||ms)&&!!An,bs=N&&(be===2||be===4)?v?c.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-3 border-b border-default pb-6 mb-6",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[c.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:Kt===!1?"Connect a provider":"Answer engine provider"}),c.jsx(pn,{tone:Kt===!0?"positive":"neutral",children:Kt===!0?"Configured":Kt===!1?"Not connected":"Checking"})]}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:Kt===!0?Pn.length>0?`${Pn.map(U=>U.displayName??U.name).join(", ")} available for this project. Research and sweeps use your provider account.`:"ChatGPT in Chrome is configured for sweeps. Query Research needs an API provider.":Kt===!1?"An answer engine is required for visibility sweeps. You can save queries now and connect later.":"Checking available providers. You can choose queries while this finishes."}),Kt===!1||ms?An?c.jsx("div",{children:c.jsx(hK,{compact:!0,leadingField:c.jsxs("div",{className:"min-w-0 space-y-1.5",children:[c.jsx("label",{className:"block text-sm font-medium text-secondary",htmlFor:"setup-provider",children:"Provider to connect"}),c.jsx("select",{ref:vr,id:"setup-provider",className:"setup-input",value:An.name,onChange:U=>{U.target.value!==An.name&&(to.current=document.activeElement===U.currentTarget,Wl(U.target.value))},children:ya.map(U=>c.jsx("option",{value:U.name,children:U.displayName??U.name},U.name))})]}),secondaryActions:ro,providerName:An.name,keyUrl:An.keyUrl,modelHint:An.modelHint,onSaved:()=>{xr(!1),r()}},An.name)}):c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:Xn.length>0?`This project's provider selection is ${Xn.join(", ")}. Configure an allowed provider in Settings, or change the selection in project Settings.`:"Provider configuration is unavailable here. Open Settings to connect an answer engine, then check again."}):null,c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[Kt===!0&&!ms&&An?c.jsx(fe,{type:"button",variant:"outline",size:"sm",onClick:()=>xr(!0),children:"Configure a provider"}):null,!An||Ka===!0?c.jsx(fe,{type:"button",variant:"outline",size:"sm",asChild:!0,children:c.jsx(tt,{to:"/settings",target:"_blank",rel:"noopener noreferrer",children:"Open provider settings"})}):null,sc?null:ro]})]}):c.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-2 border-b border-default pb-6 mb-6",children:[c.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:"Answer engine provider"}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Provider settings are managed by an administrator."}),yr?c.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Provider readiness could not be checked. Try again."}):c.jsx("p",{className:"max-w-prose text-sm text-secondary",role:"status",children:Kt===!0?"An answer engine is available for this project.":Kt===!1?"Ask an administrator to connect an answer engine for this project. You can save queries now.":"Checking provider readiness. You can save queries now."}),c.jsx(fe,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",disabled:Rt.isFetching,onClick:()=>{Rt.refetch()},children:yr?"Retry provider check":"Check again"})]}):null,xa=(()=>{switch(be){case 0:return c.jsxs(ua,{className:"surface-card step-card",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),c.jsx("h2",{children:"System check"})]})}),c.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),c.jsx("div",{className:"compact-stack",children:A.healthChecks.map(U=>c.jsxs("div",{className:"health-check-row",children:[c.jsxs("div",{children:[c.jsx("p",{className:"run-row-title",children:U.label}),c.jsx("p",{className:"supporting-copy",children:U.detail}),U.id==="provider"&&U.state!=="ready"&&c.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[c.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",c.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("input",{type:"password",value:Sr,onChange:Pe=>io(Pe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:so}),c.jsx(fe,{type:"button",size:"sm",disabled:so||!Sr.trim(),onClick:Ft(oo),children:so?"Saving...":"Save"})]}),nc&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:nc}),c.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),c.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",c.jsx(tt,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),c.jsx(pn,{tone:U.state==="ready"?"positive":"caution",title:U.id==="api"?ar(S.apiStatus):U.id==="worker"?ar(S.workerStatus):U.detail,children:U.state==="ready"?"Ready":"Attention"})]},U.id))}),c.jsxs("div",{className:"setup-nav",children:[A.launchState.blockedReason?c.jsx("p",{role:"status",className:"supporting-copy text-negative",children:A.launchState.blockedReason}):c.jsx("span",{}),c.jsx(fe,{type:"button",disabled:!A.launchState.enabled,title:A.launchState.blockedReason,onClick:()=>{K({flowVersion:st,onboardingSessionId:_,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),P(Ue)},children:"Continue"})]})]});case 1:return c.jsxs(ua,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),c.jsx("h2",{children:"Create project"})]}),Be?c.jsx(pn,{tone:"positive",children:"Created"}):null]}),Be?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Project ",c.jsx("span",{className:"text-heading font-medium",children:Be})," created successfully."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",onClick:()=>ys("project",2),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),c.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:X,onChange:U=>Ie(U.target.value)}),va&&va!==X?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",va]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),c.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:Ne,onChange:U=>Ae(U.target.value)})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),c.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:ne,onChange:U=>V(U.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),c.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:q,onChange:U=>le(U.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),c.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:De,onChange:U=>ye(U.target.value.toLowerCase())})]})]}),c.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[c.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:Je,onChange:U=>Ge(U.target.checked)}),c.jsxs("span",{className:"flex-1",children:[c.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),c.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",c.jsx(tt,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),Me?c.jsx("p",{className:"text-negative-400 text-sm",children:Me}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",disabled:!va||!ne||Sn,onClick:Ft(ac),children:Sn?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(ic,{className:N?"visibility-setup-section step-card":"surface-card step-card","aria-labelledby":"setup-queries-heading",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:N?"Step 1 of 2":"Step 3 of 5"}),c.jsx("h2",{id:"setup-queries-heading",children:"Add queries"})]}),je?c.jsx(pn,{tone:"neutral",children:"Loading"}):oe.isError?c.jsx(pn,{tone:"negative",children:"Load failed"}):Jt?c.jsxs(pn,{tone:"positive",children:[Mn.length," saved"]}):c.jsxs(pn,{tone:"neutral",children:[Mn.length," quer",Mn.length!==1?"ies":"y"]})]}),c.jsx("p",{className:"supporting-copy",children:"Add the queries your customers use, one per line. You can refine your list later."}),c.jsxs("div",{className:"space-y-2 border-b border-default pb-4",children:[c.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[c.jsxs("div",{className:"min-w-0 space-y-1",children:[c.jsx("h3",{className:"text-sm font-semibold text-heading",children:"Research queries with your agent"}),c.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Ask your agent to compare answers and available sources with Canonry Research, then recommend queries. Research does not change your tracked queries."})]}),c.jsx(fe,{type:"button",variant:"outline",size:"sm",className:"min-h-11 shrink-0 self-start",onClick:Ft(Od),children:ec?"Research prompt copied":"Copy research prompt"})]}),c.jsxs("details",{open:Mt||void 0,className:"text-sm text-secondary",children:[c.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-link",children:"View agent prompt"}),c.jsx("textarea",{"aria-label":"Agent query research prompt",readOnly:!0,className:"setup-textarea mt-2 w-full",rows:8,value:tc})]}),Mt?c.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Could not copy. Select and copy the prompt above."}):null]}),je?c.jsx("div",{className:"rounded-md border border-default bg-bg-elevated/40 p-4 text-sm text-secondary",role:"status",children:"Loading saved queries…"}):oe.isError?c.jsxs("div",{className:"compact-stack",children:[c.jsx("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:"Saved queries could not be loaded. Retry before changing the query basket."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:N?ln:ea,children:"Back"}),c.jsx(fe,{type:"button",onClick:()=>{oe.refetch()},children:"Retry loading queries"})]})]}):Jt?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:Mn.map(U=>c.jsx("li",{children:U},U))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:N?ln:ea,children:"Back"}),c.jsx(fe,{type:"button",variant:"outline",onClick:()=>us(!1),children:"Edit queries"}),c.jsx(fe,{type:"button",onClick:()=>ys("queries",N?4:3,Mn.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[Pn.length>0?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"flex items-end gap-2",children:[c.jsxs("div",{className:"setup-field flex-1",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),c.jsx("select",{id:"gen-provider",className:"setup-input",value:jn,onChange:U=>Ha(U.target.value),children:Pn.map(U=>c.jsxs("option",{value:U.name,children:[U.displayName??U.name,U.model?` (${U.model})`:""]},U.name))})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),c.jsx("select",{id:"gen-count",className:"setup-input",value:vi,onChange:U=>Dd(Number(U.target.value)),children:[3,5,10,15,20].map(U=>c.jsx("option",{value:U,children:U},U))})]}),c.jsx(fe,{type:"button",variant:"outline",disabled:br||!jn,onClick:Ft(Md),children:br?"Analyzing site...":"Generate"})]}),xi?c.jsx("p",{className:"text-negative-400 text-sm",children:xi}):null]}):null,N?null:c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),c.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
84
84
|
best invisalign downtown brooklyn
|
|
85
85
|
pediatric dentist brooklyn heights`,value:Ve,onChange:U=>ut(U.target.value)})]}),Hl?c.jsx("p",{className:"text-negative-400 text-sm",children:Hl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:N?ln:ea,children:"Back"}),c.jsx(fe,{type:"button",variant:"ghost",onClick:ji,children:N?"Finish without AI Visibility":"Skip for now"}),c.jsx(fe,{type:"button",disabled:Mn.length===0||Ql,onClick:Ft(jr),children:Ql?"Saving...":`Save ${Mn.length} quer${Mn.length!==1?"ies":"y"}`})]})]})]});case 3:return c.jsxs(ua,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),c.jsx("h2",{children:"Add competitors"})]}),no?c.jsx(pn,{tone:"positive",children:"Saved"}):null]}),c.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),no?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:qa.map(U=>c.jsx("li",{children:U},U))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",onClick:()=>ys("competitors",4,qa.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),c.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
86
|
-
competitor2.com`,value:kr,onChange:U=>ps(U.target.value)})]}),Qa?c.jsx("p",{className:"text-negative-400 text-sm",children:Qa}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:Ai,children:"Skip"}),c.jsx(fe,{type:"button",disabled:qa.length===0||Fa,onClick:Ft(Id),children:Fa?"Saving...":`Save ${qa.length} competitor${qa.length!==1?"s":""}`})]})]})]})]});case 4:{const U=Oa.data,Pe=U?.status??(Da===Ke?.id?Ke.status:void 0),yn=Pe==="completed"||Pe==="partial"||Pe==="failed"||Pe==="cancelled",Ba=U?.snapshots??[],lo=Ba.filter(ta=>ta.citationState==="cited").length,oc=Ba.filter(ta=>ta.answerMentioned===!0).length,vs=new Set(Ba.map(ta=>ta.query).filter(ta=>!!ta)).size,xs=Pe?_x(Pe,Ba.length):!1,Ar=Fe&&!Cn,dn=Za??(U?.error?cV(U.error):Pe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Pe==="completed"||Pe==="partial")&&Ba.length===0?"The sweep finished without producing any snapshots.":Ke?.statusDetail||"The sweep did not produce a baseline.");let Vn=null;return Ar||xs?Vn=c.jsx(pn,{tone:"positive",children:"Complete"}):Za&&!Cn?Vn=c.jsx(pn,{tone:"negative",children:"Failed"}):yn?Vn=c.jsx(pn,{tone:"negative",children:Pe==="cancelled"?"Cancelled":"Failed"}):Cn&&(Vn=c.jsx(pn,{tone:"caution",children:"Running"})),c.jsxs(ua,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:N?"Step 2 of 2":"Step 5 of 5"}),c.jsx("h2",{children:Ps()?"AI Visibility":"Launch first run"})]}),Vn]}),Ar?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Be})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:g?"Finish and open project":"Open project dashboard →"})]})]}):!Cn&&Ps()?c.jsxs("div",{className:"compact-stack",children:[Be?c.jsx(b$,{projectName:Be}):c.jsx("p",{className:"text-sm text-secondary",children:Hh}),Za&&c.jsx("p",{role:"alert",className:"text-sm text-negative",children:Za}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:"Open project dashboard →"})]})]}):Cn?yn?xs?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Be}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[oc,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",vs]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[lo,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",vs]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Ba.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:dn}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:Ps()?Hh:v?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),c.jsxs("div",{className:"setup-nav",children:[v&&!Ps()?c.jsx(fe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(tt,{to:"/settings",children:"Configure providers"})}):c.jsx("span",{}),Ps()||!v?c.jsx(fe,{type:"button",onClick:ln,children:"Open project dashboard →"}):c.jsx(fe,{type:"button",disabled:hs||!!_n,onClick:Ft(Wn),children:hs?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:Pe??"queued"})]})}),Oa.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Oa.error instanceof Error?Oa.error.message:"Could not refresh the sweep status."}),c.jsx(fe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Oa.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",variant:"outline",onClick:ln,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Be}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(_n||Za)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Za??_n}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",variant:"ghost",onClick:ln,children:"Finish without running"}),In==="no_provider"&&!N?c.jsx(fe,{type:"button",asChild:!0,children:c.jsx(tt,{to:"/settings",children:"Configure a provider"})}):c.jsx(fe,{type:"button",disabled:hs||!!_n,title:_n,onClick:Ft(Wn),children:hs?"Launching...":Za?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:N?"page-container visibility-setup":"page-container",children:[g?c.jsx(ir,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(fe,{type:"button",variant:"outline",className:"min-h-11",onClick:ln,children:"Skip AI Visibility"})}):null]}),g?null:c.jsx(bK,{current:N?be===4?1:0:be,labels:N?gK:fK}),c.jsxs("section",{className:"setup-wizard",children:[bs,xa]})]})}const kK=T.lazy(async()=>({default:(await yi(()=>import("./SiteHealthSection-BrzBV7dt.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),wK=1800,SK="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",jK="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry bootstrap` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry bootstrap` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function AK(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}const R3=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],D3=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function CK(e,a){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=a?r.of(a.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(a||"Language")}`}catch{return`${e||"Country"} · ${a||"Language"}`}}function NK(e,a){const s=e.trim().toUpperCase(),r=a.trim().toLowerCase();return{countryValid:R3.some(u=>u.value===s),languageValid:D3.some(u=>u.value===r)}}function _K(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function zK(e){const a=e.trim();if(!a)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`https://${a}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||_K(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function EK(e,a=wK){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),a)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function TK(e,a){e.catch(()=>{rn({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${a}`})})}function O3(e){const a=T.useRef(A3()).current,s=T.useRef(new Set),r=T.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}PS({...u,surface:e,eventId:C3()})},[e]);return{onboardingSessionId:a,emit:r}}function Tx(e,a){return e instanceof fn&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:a}function RK(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function DK({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function OK({projectName:e,initialRunId:a}){return c.jsx(Ef,{title:"Site Health setup",children:c.jsx(qK,{projectName:e,initialRunId:a})})}function qK({projectName:e,initialRunId:a}){const s=Hs(),r=Et({...Zs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=O3("site_health");T.useEffect(()=>{e&&f({flowVersion:st,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!a},"onboarding.started")},[f,a,u,e]),T.useEffect(()=>{!e||!a||z3(e)?.runId!==a&&_3(e,a)},[a,e]);const b=Et({...bf({client:se,path:{id:a??""}}),enabled:!!a,refetchInterval:({state:N})=>{const E=N.data?.status;return E==="completed"||E==="partial"||E==="failed"||E==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(T.useEffect(()=>{if(!e||!a||!b)return;if(b==="completed"||b==="partial"){f({flowVersion:st,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),Zu(a);return}if(b!=="failed"&&b!=="cancelled")return;const N=b==="cancelled"?"run_cancelled":"run_failed";f({flowVersion:st,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:N},`onboarding.blocked:run:${N}`),Zu(a)},[f,a,u,e,b]),!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(ir,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const v=r.data.find(N=>N.name===e);if(!v)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const k=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:v.name},replace:!0})},S=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:v.name},replace:!0})},A=()=>{f({flowVersion:st,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),s({to:"/projects/$projectName/technical-aeo",params:{projectName:v.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(T.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(ir,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(kK,{projectName:v.name,projectId:v.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:A})})]})}function BK(){const e=Dx({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=lI(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":r,[f,g]=T.useState(!1),b=Et({...Zs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),v=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;T.useEffect(()=>{v&&g(!0)},[v]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||v?"platform":AK(u,k);return a||s?c.jsx(OK,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(vK,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(RK,{}):S==="retry"?c.jsx(DK,{onRetry:()=>{b.refetch()}}):c.jsx(PK,{onActivationStarted:()=>g(!0),skipSiteScan:e.siteScan==="skip"})}function PK({onActivationStarted:e,skipSiteScan:a}){return c.jsx(Ef,{title:"Site Health setup",children:c.jsx(MK,{onActivationStarted:e,skipSiteScan:a})})}function MK({onActivationStarted:e,skipSiteScan:a}){const s=Hs(),r=da(),u=mK(),f=Et({...QV({client:se}),retry:!1}),g=ns(FV()),[b,v]=T.useState(""),[k,S]=T.useState(""),[A,N]=T.useState(""),[E,Z]=T.useState("US"),[_,G]=T.useState("en"),[K,te]=T.useState(!1),[Q,re]=T.useState("idle"),[W,oe]=T.useState(null),[H,$]=T.useState(null),[Te,Ke]=T.useState(!1),[Fe,Re]=T.useState(null),[ve,Ue]=T.useState(!1),be=f.isError?void 0:f.data,P=typeof be?.enabled=="boolean"?be.enabled:null,ae=g.isPending?g.variables.body.enabled:P,[he,je]=T.useState(null),X=T.useRef(null),{onboardingSessionId:Ie,emit:Ne}=O3("platform");T.useEffect(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Ne,Ie]);const Ae=zK(b),ne=k||Ae?.projectName||"",V=A||Ae?.displayName||"",q=Q==="creating"||Q==="dispatching",le=H??Fe,De=CK(E,_),{countryValid:ye,languageValid:Je}=NK(E,_),Ge=ye&&Je;T.useEffect(()=>{le&&X.current?.focus()},[le]);const Be=(Ve,ut)=>s({to:"/setup",search:{...ut?{siteHealthRunId:ut}:{},onboarding:"site-health",setupProject:Ve.name},replace:!0}),de=async Ve=>{re("dispatching"),Re(null);try{const ut=u.mutateAsync({projectName:Ve.name,projectId:Ve.id,projectLabel:Ve.displayName||Ve.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Jt=await EK(ut);if(Jt.state==="queued"){Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),await Be(Ve,Jt.run.runId);return}ut.then(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},us=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Al(us,"run_rejected")})}),TK(ut,Ve.id),await Be(Ve)}catch(ut){re("recovery"),Re(Tx(ut,"The project was created, but the Site Health scan could not be started."));const Jt=Al(ut,"run_rejected");Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Jt}),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Jt},`onboarding.blocked:run:${Jt}`)}},Me=async Ve=>{if(Ve.preventDefault(),!(!Ae||!a&&!K||!Ge||q)){re("creating"),$(null),Ke(!1),Re(null);try{const ut=await _I({name:ne,displayName:V,canonicalDomain:Ae.canonicalDomain,country:E,language:_});if(e(),oe(ut),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await r.invalidateQueries({queryKey:ts({client:se})}),a){await s({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ut.name},replace:!0});return}await de(ut)}catch(ut){re("idle");const Jt=ut instanceof fn&&ut.statusCode===409;Ke(Jt),$(Tx(ut,"Could not create the project. Try again.")),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"project",action:"save",reasonCode:Al(ut,"project_create_failed")},"onboarding.blocked:project"),Jt&&(e(),r.invalidateQueries({queryKey:ts({client:se})}))}}},$t=()=>{W&&!q&&de(W)},Sn=()=>{q||s({to:"/projects"})},ga=async()=>{try{await navigator.clipboard.writeText(jK),Ue(!0)}catch{rn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},ln=async Ve=>{je(null);try{const ut=await g.mutateAsync({client:se,body:{enabled:Ve}});r.setQueryData(KS({client:se}),ut),ut.enabled!==Ve&&je(`The server kept telemetry ${ut.enabled?"on":"off"}. Check its telemetry settings.`)}catch{je("Could not update telemetry. Try again.")}};return W&&Q==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(ir,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[W.displayName||W.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:X,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:Fe}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(fe,{type:"button",onClick:$t,children:"Retry Site Health scan"}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{Be(W)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[a?null:c.jsx(ir,{current:"site"}),c.jsxs("header",{className:`mb-8 ${a?"":"mt-8"}`,children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:a?"Create a project":"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:a?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:Ft(Me),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(b&&!Ae),"aria-describedby":b&&!Ae?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:Ve=>{v(Ve.target.value),$(null),Ke(!1)}}),c.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:a?c.jsxs(c.Fragment,{children:["A public domain is still required."," ",c.jsx(tt,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):c.jsxs(c.Fragment,{children:["Only public pages are scanned."," ",c.jsx(tt,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!Ae?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[De,c.jsx(Xu,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[Ae?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:ne,onChange:Ve=>S(Ve.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:V,onChange:Ve=>N(Ve.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:E,onChange:Ve=>Z(Ve.target.value),children:R3.map(Ve=>c.jsx("option",{value:Ve.value,children:Ve.label},Ve.value))})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:_,onChange:Ve=>G(Ve.target.value),children:D3.map(Ve=>c.jsx("option",{value:Ve.value,children:Ve.label},Ve.value))})]})]})]})]})]}),a?null:c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:K,onChange:Ve=>te(Ve.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),le?c.jsxs("div",{ref:X,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:le}),Te?c.jsx(fe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:Sn,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(fe,{className:"h-11 w-full",type:"submit",disabled:!Ae||!a&&!K||!Ge||q,children:Q==="creating"||Q==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",a?"Creating project…":"Mapping site…"]}):a?"Create project":"Map site"}),Q==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(fe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:Ft(ga),children:[ve?c.jsx(Jh,{className:"size-3.5","aria-hidden":"true"}):c.jsx($x,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:ve?"Copied setup request":"Copy setup request"})]}),c.jsx(fe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:SK,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(gA,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),P!==null?c.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[c.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${g.isPending?"cursor-wait":"cursor-pointer"}`,children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:ae??!1,disabled:g.isPending,onChange:Ve=>{ln(Ve.target.checked)},"aria-describedby":"telemetry-detail"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),c.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),g.isPending?c.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,he?c.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:he}):null]}):null]})}function IK(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(fe,{asChild:!0,children:c.jsx(tt,{to:"/",children:"Return to overview"})})]})})})}const Yn=as(()=>yi(()=>import("./ProjectPage-Cd03Phwx.js"),__vite__mapDeps([5,1,2,6,0,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),VK=as(()=>yi(()=>import("./RunsPage-CDkbzjuo.js"),__vite__mapDeps([13,1,6,11,4,2,9,12]),import.meta.url),"RunsPage"),LK=as(()=>yi(()=>import("./HistoryPage-BQ2nEXly.js"),__vite__mapDeps([14,1,10,11,4,2,9,12]),import.meta.url),"HistoryPage"),UK=as(()=>yi(()=>import("./SettingsPage-CF4i_EzR.js"),__vite__mapDeps([15,1,11,4,2,9,12]),import.meta.url),"SettingsPage"),GK=as(()=>yi(()=>import("./BacklinksPage-DRihwG5O.js"),__vite__mapDeps([16,1,2,11,4,9,12]),import.meta.url),"BacklinksPage"),$K=as(()=>yi(()=>import("./TrafficPage-BHSz1N4P.js"),__vite__mapDeps([17,1,7,2,11,4,9,12]),import.meta.url),"TrafficPage"),KK=as(()=>yi(()=>import("./TrafficSourceDetailPage-DzHLwhpy.js"),__vite__mapDeps([18,1,7,3,4,2,11,9,12]),import.meta.url),"TrafficSourceDetailPage"),HK=as(()=>yi(()=>import("./MeasurementPropertyPage-Bp6EURzJ.js"),__vite__mapDeps([19,1,3,4,8,9,2,11,12]),import.meta.url),"MeasurementPropertyPage");function QK(){return c.jsx($$,{children:c.jsx(G$,{})})}const kn=K4()({component:QK,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"||e.onboarding==="first-run"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(a=>[a,typeof e[a]=="string"?e[a]:void 0]))})}),FK=St({getParentRoute:()=>kn,path:"/",component:Z$,beforeLoad:async({context:e})=>{let a=e.queryClient.getQueryData(ts({client:se}));if(a===void 0)try{a=await e.queryClient.ensureQueryData(Zs({client:se}))}catch{return}if(a.length===0)throw qx({to:"/setup"})}}),ZK=St({getParentRoute:()=>kn,path:"/projects",component:W$}),YK=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,wn=St({getParentRoute:()=>kn,path:"/projects/$projectName",component:()=>c.jsx(hh,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!YK.test(r))return;let u=e.queryClient.getQueryData(ts({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(Zs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw qx({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),XK=St({getParentRoute:()=>wn,path:"/",component:()=>c.jsx(Yn,{tab:"overview"})}),JK=St({getParentRoute:()=>wn,path:"/portfolio",component:()=>c.jsx(Yn,{tab:"portfolio"})}),WK=St({getParentRoute:()=>wn,path:"/search-console",component:()=>c.jsx(Yn,{tab:"search-console"})}),eH=St({getParentRoute:()=>wn,path:"/conversions",component:()=>c.jsx(Yn,{tab:"conversions"})}),tH=St({getParentRoute:()=>wn,path:"/local",component:()=>c.jsx(Yn,{tab:"local"})}),nH=St({getParentRoute:()=>wn,path:"/discovery",component:()=>c.jsx(Yn,{tab:"discovery"})}),aH=St({getParentRoute:()=>wn,path:"/queries",component:()=>c.jsx(Yn,{tab:"queries"})}),iH=St({getParentRoute:()=>wn,path:"/properties/$targetKey",component:()=>c.jsx(HK,{})}),sH=St({getParentRoute:()=>wn,path:"/report",component:()=>c.jsx(Yn,{tab:"report"})}),oH=St({getParentRoute:()=>wn,path:"/activity",component:()=>c.jsx(Yn,{tab:"activity"})}),rH=St({getParentRoute:()=>wn,path:"/backlinks",component:()=>c.jsx(Yn,{tab:"backlinks"})}),lH=St({getParentRoute:()=>wn,path:"/technical-aeo",component:()=>c.jsx(Yn,{tab:"technical-aeo"})}),cH=St({getParentRoute:()=>wn,path:"/history",component:()=>c.jsx(Yn,{tab:"history"})}),uH=St({getParentRoute:()=>wn,path:"/settings",component:()=>c.jsx(Yn,{tab:"settings"})}),dH=St({getParentRoute:()=>kn,path:"/runs",component:VK}),mH=St({getParentRoute:()=>kn,path:"/history",component:LK}),pH=St({getParentRoute:()=>kn,path:"/settings",component:UK,beforeLoad:({context:e})=>{}}),hH=St({getParentRoute:()=>kn,path:"/setup",component:BK}),fH=St({getParentRoute:()=>kn,path:"/backlinks",component:GK}),gH=St({getParentRoute:()=>kn,path:"/traffic",component:$K}),yH=St({getParentRoute:()=>kn,path:"/traffic/$projectName/$sourceId",component:KK}),bH=St({getParentRoute:()=>kn,path:"*",component:IK}),vH=kn.addChildren([FK,ZK,wn.addChildren([XK,JK,WK,eH,tH,nH,aH,iH,sH,oH,rH,lH,cH,uH]),dH,mH,pH,hH,fH,gH,yH,bH]);function xH(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Rx=xH(),kH=Rx==="/"?"":Rx.replace(/\/$/,"");function wH(e,a){return H4({routeTree:vH,basepath:kH||"/",context:{queryClient:e},...a?.initialEntries})}const SH=6e4;function jH(){const e=T.useRef(AI()).current,[a,s]=T.useState(e?"ready":"checking"),[r,u]=T.useState(null),[f,g]=T.useState(null),[b,v]=T.useState(e),[k,S]=T.useState(!1),[A,N]=T.useState(""),[E,Z]=T.useState(""),[_,G]=T.useState(""),[K,te]=T.useState(!1),[Q,re]=T.useState("password"),[W,oe]=T.useState(null),[H,$]=T.useState(!1),[Te,Ke]=T.useState(!1),Fe=T.useRef(null),Re=T.useRef(null),ve=T.useRef(null),Ue=()=>{const q=r?`${r.name}:${r.role}`:e?"api-key:explicit":f?`api-key:${f.id}`:"no-accounts";if(!Fe.current||ve.current!==q){Re.current?.clear();const le=sV();Re.current=le,Fe.current=wH(le),ve.current=q}return{queryClient:Re.current,router:Fe.current}},be=q=>q.authRequired?(S(!0),u(q.user),g(null),v(!1),s(q.user?"ready":"account-login"),!0):!1;T.useEffect(()=>{let q=!1;const le=async(De,ye=!1)=>{try{const Je=await lh();if(q)return;g(Je),v(!1),s("ready")}catch(Je){if(q)return;if(ye&&Je instanceof fn&&Je.statusCode===401)return PI().then(()=>{q||(oe(null),g(null),v(!1),Ke(!0),s("login"))}).catch(Ge=>{q||(oe(Ge instanceof Error?Ge.message:"Could not clear the invalid session"),s(De))});oe(Je instanceof Error?Je.message:"Could not verify API key access"),s(De)}};return e?(le("api-key-error"),()=>{q=!0}):(Promise.allSettled([Gv(),Uv()]).then(([De,ye])=>{if(q||De.status==="fulfilled"&&be(De.value))return;if(ye.status==="rejected"){const Ge=ye.reason;oe(Ge instanceof Error?Ge.message:"Failed to reach the Canonry API"),s("login");return}const Je=ye.value;Je.authenticated?(v(!0),le("api-key-error",!0)):(g(null),v(!1),s(Je.setupRequired?"setup":"login"))}),()=>{q=!0})},[]),T.useEffect(()=>{if(a!=="ready"||e)return;const q=setInterval(()=>{if(k){Gv().then(le=>{le.authRequired&&!le.user&&(Ke(!0),u(null),g(null),s("account-login"))}).catch(()=>{});return}Uv().then(le=>{le.authenticated||(Ke(!0),g(null),s(le.setupRequired?"setup":"login"))}).catch(()=>{})},SH);return Lv(()=>{Ke(!0),u(null),g(null),v(!1),s(k?"account-login":"login")}),()=>{clearInterval(q),Lv(null)}},[a,k,e]);const P=async q=>{if(q.preventDefault(),!E.trim()||E.trim().length<8){oe("Password must be at least 8 characters");return}if(E!==_){oe("Passwords do not match");return}$(!0),oe(null);try{if(!(await OI(E.trim())).authenticated){oe("Setup failed");return}Z(""),G(""),te(!1),Ke(!1),g(null),v(!0),s("checking");try{const De=await lh();g(De),v(!1),s("ready")}catch(De){oe(De instanceof Error?De.message:"Could not verify API key access"),s("api-key-error")}}catch(le){oe(le instanceof fn||le instanceof Error?le.message:"Setup failed")}finally{$(!1)}},ae=q=>{Z(q),oe(null)},he=q=>{G(q),oe(null)},je=async q=>{if(q.preventDefault(),!!E.trim()){$(!0),oe(null);try{if(!(Q==="api-key"?await BI(E.trim()):await qI(E.trim())).authenticated){oe(Q==="api-key"?"Invalid API key":"Incorrect password");return}const De=await lh();g(De),v(!1),Z(""),te(!1),Ke(!1),s("ready")}catch(le){oe(le instanceof fn||le instanceof Error?le.message:"Authentication failed")}finally{$(!1)}}},X=q=>{re(q),Z(""),te(!1),oe(null)},Ie=async q=>{if(q.preventDefault(),!(!A.trim()||!E)){$(!0),oe(null);try{const le=await MI(A.trim(),E);if(!le.user){oe("Incorrect name or password.");return}Z(""),Ke(!1),u(le.user),g(null),v(!1),s("ready")}catch(le){oe(le instanceof fn?le.message:"Incorrect name or password.")}finally{$(!1)}}};if(a==="ready"){const{queryClient:q,router:le}=Ue();return c.jsx(ZI,{account:r,apiKey:f,apiKeyPending:b,children:c.jsx(Q4,{client:q,children:c.jsx(F4,{router:le})})})}const Ne=E.trim(),Ae=E.length>0&&Ne.length<8,ne=_.length>0&&E!==_,V=Ne.length>=8&&E===_;return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(ua,{className:"surface-card w-full",children:a==="checking"?c.jsx(Ms,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):a==="api-key-error"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),c.jsxs(Ms,{className:"space-y-4",children:[c.jsx("p",{className:"supporting-copy",children:W??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),c.jsx(fe,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):a==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),c.jsxs(Ms,{children:[Te?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:Ft(Ie),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",name:"username",autoComplete:"username",value:A,onChange:q=>{N(q.target.value),oe(null)},"aria-invalid":!!W,"aria-describedby":W?"account-login-error":void 0})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",name:"password",autoComplete:"current-password",value:E,onChange:q=>ae(q.target.value),"aria-invalid":!!W,"aria-describedby":W?"account-login-error":void 0})]}),W?c.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!A.trim()||!E,children:H?"Signing in…":"Sign in"})]})]})]}):a==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),c.jsx(Qu,{children:"Stored on this Canonry install as a salted, one-way hash. Canonry cannot recover it."})]}),c.jsx(Ms,{children:c.jsxs("form",{className:"space-y-4",onSubmit:Ft(P),children:[c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),c.jsx("input",{autoFocus:!0,id:"dashboard-password-new",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:E,onChange:q=>ae(q.target.value),"aria-invalid":Ae,"aria-describedby":"dashboard-password-new-help"}),c.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:Ae?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ae?"Enter at least 8 characters.":"Use at least 8 characters."})]}),c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),c.jsx("input",{id:"dashboard-password-confirm",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:_,onChange:q=>he(q.target.value),"aria-invalid":ne,"aria-describedby":"dashboard-password-confirm-help"}),c.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:ne?"block text-sm text-negative-400":"block text-sm text-secondary",children:ne?"Passwords do not match.":"Enter the same password again."})]}),c.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[c.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:K,onChange:q=>te(q.target.checked)}),"Show passwords"]}),W?c.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!V,children:H?"Creating password…":"Create password and continue"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),c.jsx(Qu,{children:Q==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),c.jsxs(Ms,{children:[Te?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:Ft(je),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:Q==="api-key"?"Canonry API key":"Password"}),c.jsx("input",{autoFocus:!0,id:"dashboard-password-current",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:Q==="api-key"?"apiKey":"password",autoComplete:Q==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:E,onChange:q=>ae(q.target.value),"aria-invalid":!!W,"aria-describedby":W?"dashboard-password-login-error":void 0})]}),c.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[c.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:K,onChange:q=>te(q.target.checked)}),Q==="api-key"?"Show API key":"Show password"]}),W?c.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!E.trim(),children:H?"Signing in…":"Open dashboard"}),c.jsx(fe,{type:"button",variant:"ghost",onClick:()=>X(Q==="api-key"?"password":"api-key"),children:Q==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const q3=document.getElementById("root");if(!q3)throw new Error("Expected #root element for web app bootstrap.");SA.createRoot(q3).render(c.jsx(T.StrictMode,{children:c.jsx(jH,{})}));export{KZ as $,UF as A,fe as B,Uu as C,VF as D,GF as E,UQ as F,IF as G,VZ as H,yl as I,GZ as J,UZ as K,XQ as L,PY as M,YQ as N,rF as O,uG as P,rn as Q,HZ as R,lV as S,pn as T,QZ as U,nF as V,FZ as W,aF as X,WQ as Y,tF as Z,$Z as _,BY as a,iF as a$,LZ as a0,JQ as a1,ZZ as a2,nY as a3,JZ as a4,eY as a5,WZ as a6,tY as a7,AF as a8,vf as a9,TH as aA,nV as aB,tZ as aC,on as aD,xV as aE,GV as aF,rZ as aG,mZ as aH,lZ as aI,oQ as aJ,lQ as aK,EO as aL,cQ as aM,TV as aN,oZ as aO,RO as aP,qh as aQ,rQ as aR,fI as aS,cZ as aT,sZ as aU,DV as aV,uZ as aW,IY as aX,dZ as aY,xY as aZ,kY as a_,ze as aa,XZ as ab,ZS as ac,gi as ad,YZ as ae,KY as af,qT as ag,BT as ah,DH as ai,RH as aj,_F as ak,OF as al,qF as am,fn as an,BF as ao,DQ as ap,cV as aq,hU as ar,Ph as as,PF as at,Tu as au,fY as av,d_ as aw,Hh as ax,Ps as ay,eF as az,$9 as b,WH as b$,gf as b0,hY as b1,PV as b2,yZ as b3,vZ as b4,NZ as b5,PZ as b6,BZ as b7,AZ as b8,OZ as b9,kQ as bA,hQ as bB,fQ as bC,xQ as bD,vQ as bE,bQ as bF,gQ as bG,yQ as bH,pQ as bI,mQ as bJ,dQ as bK,uQ as bL,uB as bM,FH as bN,$H as bO,KH as bP,HH as bQ,ZH as bR,QH as bS,JH as bT,pY as bU,YH as bV,XH as bW,fF as bX,UH as bY,$Y as bZ,tQ as b_,IZ as ba,kZ as bb,zZ as bc,EZ as bd,TZ as be,xZ as bf,_Z as bg,wZ as bh,RZ as bi,SZ as bj,DZ as bk,CZ as bl,qZ as bm,MZ as bn,rK as bo,jZ as bp,ge as bq,EQ as br,zQ as bs,_Q as bt,NQ as bu,jQ as bv,SQ as bw,CQ as bx,AQ as by,wQ as bz,O2 as c,rY as c$,nQ as c0,aQ as c1,GH as c2,eQ as c3,VQ as c4,IQ as c5,MQ as c6,gF as c7,HV as c8,bZ as c9,GY as cA,dK as cB,pZ as cC,YF as cD,eZ as cE,XF as cF,hZ as cG,MY as cH,JF as cI,xn as cJ,NI as cK,hV as cL,b$ as cM,OQ as cN,EI as cO,qQ as cP,BQ as cQ,PQ as cR,ts as cS,vV as cT,SV as cU,LQ as cV,aY as cW,UI as cX,mF as cY,sY as cZ,oY as c_,HF as ca,Fv as cb,$Q as cc,KQ as cd,$F as ce,KF as cf,HQ as cg,QQ as ch,ZQ as ci,FQ as cj,Kl as ck,Zs as cl,TS as cm,ZF as cn,FF as co,t$ as cp,dG as cq,p3 as cr,gG as cs,h3 as ct,f3 as cu,jV as cv,Is as cw,Yu as cx,YV as cy,hK as cz,MF as d,NY as d$,iY as d0,LF as d1,lF as d2,cF as d3,uF as d4,pF as d5,dF as d6,nr as d7,yf as d8,VY as d9,bY as dA,X$ as dB,sQ as dC,of as dD,QF as dE,gY as dF,vY as dG,SF as dH,iQ as dI,kF as dJ,wF as dK,xF as dL,yY as dM,K8 as dN,nZ as dO,WF as dP,iZ as dQ,aZ as dR,BH as dS,yi as dT,fa as dU,qH as dV,hI as dW,wY as dX,jY as dY,SY as dZ,mK as d_,zd as da,wf as db,fZ as dc,gZ as dd,xI as de,TQ as df,RQ as dg,GQ as dh,sF as di,oF as dj,Ef as dk,Ed as dl,Sf as dm,pK as dn,hF as dp,ar as dq,Yv as dr,CF as ds,zF as dt,TF as du,RF as dv,NF as dw,EF as dx,DF as dy,jF as dz,uY as e,h$ as e0,PH as e1,DY as e2,OY as e3,qY as e4,AY as e5,CY as e6,OH as e7,zY as e8,RY as e9,_Y as ea,TY as eb,ir as ec,MH as ed,EY as ee,v9 as ef,VH as eg,IH as eh,ua as f,lY as g,rx as h,se as i,gI as j,Sl as k,mn as l,Ft as m,cY as n,mY as o,dY as p,yF as q,vF as r,LH as s,dV as t,jf as u,bF as v,ha as w,LY as x,UY as y,$h as z};
|
|
86
|
+
competitor2.com`,value:kr,onChange:U=>ps(U.target.value)})]}),Qa?c.jsx("p",{className:"text-negative-400 text-sm",children:Qa}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:Ai,children:"Skip"}),c.jsx(fe,{type:"button",disabled:qa.length===0||Fa,onClick:Ft(Id),children:Fa?"Saving...":`Save ${qa.length} competitor${qa.length!==1?"s":""}`})]})]})]})]});case 4:{const U=Oa.data,Pe=U?.status??(Da===Ke?.id?Ke.status:void 0),yn=Pe==="completed"||Pe==="partial"||Pe==="failed"||Pe==="cancelled",Ba=U?.snapshots??[],lo=Ba.filter(ta=>ta.citationState==="cited").length,oc=Ba.filter(ta=>ta.answerMentioned===!0).length,vs=new Set(Ba.map(ta=>ta.query).filter(ta=>!!ta)).size,xs=Pe?_x(Pe,Ba.length):!1,Ar=Fe&&!Cn,dn=Za??(U?.error?cV(U.error):Pe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Pe==="completed"||Pe==="partial")&&Ba.length===0?"The sweep finished without producing any snapshots.":Ke?.statusDetail||"The sweep did not produce a baseline.");let Vn=null;return Ar||xs?Vn=c.jsx(pn,{tone:"positive",children:"Complete"}):Za&&!Cn?Vn=c.jsx(pn,{tone:"negative",children:"Failed"}):yn?Vn=c.jsx(pn,{tone:"negative",children:Pe==="cancelled"?"Cancelled":"Failed"}):Cn&&(Vn=c.jsx(pn,{tone:"caution",children:"Running"})),c.jsxs(ua,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:N?"Step 2 of 2":"Step 5 of 5"}),c.jsx("h2",{children:Ps()?"AI Visibility":"Launch first run"})]}),Vn]}),Ar?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Be})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:g?"Finish and open project":"Open project dashboard →"})]})]}):!Cn&&Ps()?c.jsxs("div",{className:"compact-stack",children:[Be?c.jsx(v$,{projectName:Be}):c.jsx("p",{className:"text-sm text-secondary",children:Hh}),Za&&c.jsx("p",{role:"alert",className:"text-sm text-negative",children:Za}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:"Open project dashboard →"})]})]}):Cn?yn?xs?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Be}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[oc,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",vs]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[lo,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",vs]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Ba.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",onClick:ln,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:dn}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:Ps()?Hh:v?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),c.jsxs("div",{className:"setup-nav",children:[v&&!Ps()?c.jsx(fe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(tt,{to:"/settings",children:"Configure providers"})}):c.jsx("span",{}),Ps()||!v?c.jsx(fe,{type:"button",onClick:ln,children:"Open project dashboard →"}):c.jsx(fe,{type:"button",disabled:hs||!!_n,onClick:Ft(Wn),children:hs?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:Pe??"queued"})]})}),Oa.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Oa.error instanceof Error?Oa.error.message:"Could not refresh the sweep status."}),c.jsx(fe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Oa.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(fe,{type:"button",variant:"outline",onClick:ln,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Be}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(_n||Za)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Za??_n}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(fe,{type:"button",variant:"outline",onClick:ea,children:"Back"}),c.jsx(fe,{type:"button",variant:"ghost",onClick:ln,children:"Finish without running"}),In==="no_provider"&&!N?c.jsx(fe,{type:"button",asChild:!0,children:c.jsx(tt,{to:"/settings",children:"Configure a provider"})}):c.jsx(fe,{type:"button",disabled:hs||!!_n,title:_n,onClick:Ft(Wn),children:hs?"Launching...":Za?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:N?"page-container visibility-setup":"page-container",children:[g?c.jsx(ir,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(fe,{type:"button",variant:"outline",className:"min-h-11",onClick:ln,children:"Skip AI Visibility"})}):null]}),g?null:c.jsx(vK,{current:N?be===4?1:0:be,labels:N?yK:gK}),c.jsxs("section",{className:"setup-wizard",children:[bs,xa]})]})}const wK=T.lazy(async()=>({default:(await yi(()=>import("./SiteHealthSection-ElUwcAS4.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),SK=1800,jK="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",AK="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry bootstrap` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry bootstrap` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function CK(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}const R3=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],D3=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function NK(e,a){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=a?r.of(a.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(a||"Language")}`}catch{return`${e||"Country"} · ${a||"Language"}`}}function _K(e,a){const s=e.trim().toUpperCase(),r=a.trim().toLowerCase();return{countryValid:R3.some(u=>u.value===s),languageValid:D3.some(u=>u.value===r)}}function zK(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function EK(e){const a=e.trim();if(!a)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`https://${a}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||zK(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function TK(e,a=SK){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),a)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function RK(e,a){e.catch(()=>{rn({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${a}`})})}function O3(e){const a=T.useRef(A3()).current,s=T.useRef(new Set),r=T.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}PS({...u,surface:e,eventId:C3()})},[e]);return{onboardingSessionId:a,emit:r}}function Tx(e,a){return e instanceof fn&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:a}function DK(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function OK({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function qK({projectName:e,initialRunId:a}){return c.jsx(Ef,{title:"Site Health setup",children:c.jsx(BK,{projectName:e,initialRunId:a})})}function BK({projectName:e,initialRunId:a}){const s=Hs(),r=Et({...Zs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=O3("site_health");T.useEffect(()=>{e&&f({flowVersion:st,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!a},"onboarding.started")},[f,a,u,e]),T.useEffect(()=>{!e||!a||z3(e)?.runId!==a&&_3(e,a)},[a,e]);const b=Et({...bf({client:se,path:{id:a??""}}),enabled:!!a,refetchInterval:({state:N})=>{const E=N.data?.status;return E==="completed"||E==="partial"||E==="failed"||E==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(T.useEffect(()=>{if(!e||!a||!b)return;if(b==="completed"||b==="partial"){f({flowVersion:st,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),Zu(a);return}if(b!=="failed"&&b!=="cancelled")return;const N=b==="cancelled"?"run_cancelled":"run_failed";f({flowVersion:st,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:N},`onboarding.blocked:run:${N}`),Zu(a)},[f,a,u,e,b]),!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(ir,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(fe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const v=r.data.find(N=>N.name===e);if(!v)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const k=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:v.name},replace:!0})},S=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:v.name},replace:!0})},A=()=>{f({flowVersion:st,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),s({to:"/projects/$projectName/technical-aeo",params:{projectName:v.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(T.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(ir,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(wK,{projectName:v.name,projectId:v.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:A})})]})}function PK(){const e=Dx({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=lI(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":r,[f,g]=T.useState(!1),b=Et({...Zs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),v=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;T.useEffect(()=>{v&&g(!0)},[v]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||v?"platform":CK(u,k);return a||s?c.jsx(qK,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(xK,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(DK,{}):S==="retry"?c.jsx(OK,{onRetry:()=>{b.refetch()}}):c.jsx(MK,{onActivationStarted:()=>g(!0),skipSiteScan:e.siteScan==="skip"})}function MK({onActivationStarted:e,skipSiteScan:a}){return c.jsx(Ef,{title:"Site Health setup",children:c.jsx(IK,{onActivationStarted:e,skipSiteScan:a})})}function IK({onActivationStarted:e,skipSiteScan:a}){const s=Hs(),r=da(),u=pK(),f=Et({...FV({client:se}),retry:!1}),g=ns(ZV()),[b,v]=T.useState(""),[k,S]=T.useState(""),[A,N]=T.useState(""),[E,Z]=T.useState("US"),[_,G]=T.useState("en"),[K,te]=T.useState(!1),[Q,re]=T.useState("idle"),[W,oe]=T.useState(null),[H,$]=T.useState(null),[Te,Ke]=T.useState(!1),[Fe,Re]=T.useState(null),[ve,Ue]=T.useState(!1),be=f.isError?void 0:f.data,P=typeof be?.enabled=="boolean"?be.enabled:null,ae=g.isPending?g.variables.body.enabled:P,[he,je]=T.useState(null),X=T.useRef(null),{onboardingSessionId:Ie,emit:Ne}=O3("platform");T.useEffect(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Ne,Ie]);const Ae=EK(b),ne=k||Ae?.projectName||"",V=A||Ae?.displayName||"",q=Q==="creating"||Q==="dispatching",le=H??Fe,De=NK(E,_),{countryValid:ye,languageValid:Je}=_K(E,_),Ge=ye&&Je;T.useEffect(()=>{le&&X.current?.focus()},[le]);const Be=(Ve,ut)=>s({to:"/setup",search:{...ut?{siteHealthRunId:ut}:{},onboarding:"site-health",setupProject:Ve.name},replace:!0}),de=async Ve=>{re("dispatching"),Re(null);try{const ut=u.mutateAsync({projectName:Ve.name,projectId:Ve.id,projectLabel:Ve.displayName||Ve.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Jt=await TK(ut);if(Jt.state==="queued"){Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),await Be(Ve,Jt.run.runId);return}ut.then(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},us=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Al(us,"run_rejected")})}),RK(ut,Ve.id),await Be(Ve)}catch(ut){re("recovery"),Re(Tx(ut,"The project was created, but the Site Health scan could not be started."));const Jt=Al(ut,"run_rejected");Ne({flowVersion:st,onboardingSessionId:Ie,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Jt}),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Jt},`onboarding.blocked:run:${Jt}`)}},Me=async Ve=>{if(Ve.preventDefault(),!(!Ae||!a&&!K||!Ge||q)){re("creating"),$(null),Ke(!1),Re(null);try{const ut=await _I({name:ne,displayName:V,canonicalDomain:Ae.canonicalDomain,country:E,language:_});if(e(),oe(ut),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await r.invalidateQueries({queryKey:ts({client:se})}),a){await s({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ut.name},replace:!0});return}await de(ut)}catch(ut){re("idle");const Jt=ut instanceof fn&&ut.statusCode===409;Ke(Jt),$(Tx(ut,"Could not create the project. Try again.")),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"project",action:"save",reasonCode:Al(ut,"project_create_failed")},"onboarding.blocked:project"),Jt&&(e(),r.invalidateQueries({queryKey:ts({client:se})}))}}},$t=()=>{W&&!q&&de(W)},Sn=()=>{q||s({to:"/projects"})},ga=async()=>{try{await navigator.clipboard.writeText(AK),Ue(!0)}catch{rn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},ln=async Ve=>{je(null);try{const ut=await g.mutateAsync({client:se,body:{enabled:Ve}});r.setQueryData(KS({client:se}),ut),ut.enabled!==Ve&&je(`The server kept telemetry ${ut.enabled?"on":"off"}. Check its telemetry settings.`)}catch{je("Could not update telemetry. Try again.")}};return W&&Q==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(ir,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[W.displayName||W.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:X,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:Fe}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(fe,{type:"button",onClick:$t,children:"Retry Site Health scan"}),c.jsx(fe,{type:"button",variant:"secondary",onClick:()=>{Be(W)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[a?null:c.jsx(ir,{current:"site"}),c.jsxs("header",{className:`mb-8 ${a?"":"mt-8"}`,children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:a?"Create a project":"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:a?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:Ft(Me),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(b&&!Ae),"aria-describedby":b&&!Ae?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:Ve=>{v(Ve.target.value),$(null),Ke(!1)}}),c.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:a?c.jsxs(c.Fragment,{children:["A public domain is still required."," ",c.jsx(tt,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):c.jsxs(c.Fragment,{children:["Only public pages are scanned."," ",c.jsx(tt,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!Ae?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[De,c.jsx(Xu,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[Ae?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:ne,onChange:Ve=>S(Ve.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:V,onChange:Ve=>N(Ve.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:E,onChange:Ve=>Z(Ve.target.value),children:R3.map(Ve=>c.jsx("option",{value:Ve.value,children:Ve.label},Ve.value))})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:_,onChange:Ve=>G(Ve.target.value),children:D3.map(Ve=>c.jsx("option",{value:Ve.value,children:Ve.label},Ve.value))})]})]})]})]})]}),a?null:c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:K,onChange:Ve=>te(Ve.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),le?c.jsxs("div",{ref:X,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:le}),Te?c.jsx(fe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:Sn,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(fe,{className:"h-11 w-full",type:"submit",disabled:!Ae||!a&&!K||!Ge||q,children:Q==="creating"||Q==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(Zo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",a?"Creating project…":"Mapping site…"]}):a?"Create project":"Map site"}),Q==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(fe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:Ft(ga),children:[ve?c.jsx(Jh,{className:"size-3.5","aria-hidden":"true"}):c.jsx($x,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:ve?"Copied setup request":"Copy setup request"})]}),c.jsx(fe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:jK,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(gA,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),P!==null?c.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[c.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${g.isPending?"cursor-wait":"cursor-pointer"}`,children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:ae??!1,disabled:g.isPending,onChange:Ve=>{ln(Ve.target.checked)},"aria-describedby":"telemetry-detail"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),c.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),g.isPending?c.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,he?c.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:he}):null]}):null]})}function VK(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(ua,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(fe,{asChild:!0,children:c.jsx(tt,{to:"/",children:"Return to overview"})})]})})})}const Yn=as(()=>yi(()=>import("./ProjectPage-CrFybBls.js"),__vite__mapDeps([5,1,6,2,7,8,0,3,4,9,10,11,12]),import.meta.url),"ProjectPage"),LK=as(()=>yi(()=>import("./RunsPage-BVgBbE1M.js"),__vite__mapDeps([13,1,8,11,4,2,7,12]),import.meta.url),"RunsPage"),UK=as(()=>yi(()=>import("./HistoryPage-DDBCwooU.js"),__vite__mapDeps([14,1,10,11,4,2,7,12]),import.meta.url),"HistoryPage"),GK=as(()=>yi(()=>import("./SettingsPage-DYtN-1_-.js"),__vite__mapDeps([15,1,11,4,2,7,12]),import.meta.url),"SettingsPage"),$K=as(()=>yi(()=>import("./BacklinksPage-BiOj8ztV.js"),__vite__mapDeps([16,1,2,11,4,7,12]),import.meta.url),"BacklinksPage"),KK=as(()=>yi(()=>import("./TrafficPage-D6QT_2hU.js"),__vite__mapDeps([17,1,9,2,11,4,7,12]),import.meta.url),"TrafficPage"),HK=as(()=>yi(()=>import("./TrafficSourceDetailPage-BnLzF82w.js"),__vite__mapDeps([18,1,9,3,4,2,11,7,12]),import.meta.url),"TrafficSourceDetailPage"),QK=as(()=>yi(()=>import("./MeasurementPropertyPage-CMoU2yA_.js"),__vite__mapDeps([19,1,3,4,6,2,7,11,12]),import.meta.url),"MeasurementPropertyPage");function FK(){return c.jsx(K$,{children:c.jsx($$,{})})}const kn=K4()({component:FK,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"||e.onboarding==="first-run"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(a=>[a,typeof e[a]=="string"?e[a]:void 0]))})}),ZK=St({getParentRoute:()=>kn,path:"/",component:Y$,beforeLoad:async({context:e})=>{let a=e.queryClient.getQueryData(ts({client:se}));if(a===void 0)try{a=await e.queryClient.ensureQueryData(Zs({client:se}))}catch{return}if(a.length===0)throw qx({to:"/setup"})}}),YK=St({getParentRoute:()=>kn,path:"/projects",component:eK}),XK=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,wn=St({getParentRoute:()=>kn,path:"/projects/$projectName",component:()=>c.jsx(hh,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!XK.test(r))return;let u=e.queryClient.getQueryData(ts({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(Zs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw qx({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),JK=St({getParentRoute:()=>wn,path:"/",component:()=>c.jsx(Yn,{tab:"overview"})}),WK=St({getParentRoute:()=>wn,path:"/portfolio",component:()=>c.jsx(Yn,{tab:"portfolio"})}),eH=St({getParentRoute:()=>wn,path:"/search-console",component:()=>c.jsx(Yn,{tab:"search-console"})}),tH=St({getParentRoute:()=>wn,path:"/conversions",component:()=>c.jsx(Yn,{tab:"conversions"})}),nH=St({getParentRoute:()=>wn,path:"/local",component:()=>c.jsx(Yn,{tab:"local"})}),aH=St({getParentRoute:()=>wn,path:"/discovery",component:()=>c.jsx(Yn,{tab:"discovery"})}),iH=St({getParentRoute:()=>wn,path:"/queries",component:()=>c.jsx(Yn,{tab:"queries"})}),sH=St({getParentRoute:()=>wn,path:"/properties/$targetKey",component:()=>c.jsx(QK,{})}),oH=St({getParentRoute:()=>wn,path:"/report",component:()=>c.jsx(Yn,{tab:"report"})}),rH=St({getParentRoute:()=>wn,path:"/activity",component:()=>c.jsx(Yn,{tab:"activity"})}),lH=St({getParentRoute:()=>wn,path:"/backlinks",component:()=>c.jsx(Yn,{tab:"backlinks"})}),cH=St({getParentRoute:()=>wn,path:"/technical-aeo",component:()=>c.jsx(Yn,{tab:"technical-aeo"})}),uH=St({getParentRoute:()=>wn,path:"/history",component:()=>c.jsx(Yn,{tab:"history"})}),dH=St({getParentRoute:()=>wn,path:"/settings",component:()=>c.jsx(Yn,{tab:"settings"})}),mH=St({getParentRoute:()=>kn,path:"/runs",component:LK}),pH=St({getParentRoute:()=>kn,path:"/history",component:UK}),hH=St({getParentRoute:()=>kn,path:"/settings",component:GK,beforeLoad:({context:e})=>{}}),fH=St({getParentRoute:()=>kn,path:"/setup",component:PK}),gH=St({getParentRoute:()=>kn,path:"/backlinks",component:$K}),yH=St({getParentRoute:()=>kn,path:"/traffic",component:KK}),bH=St({getParentRoute:()=>kn,path:"/traffic/$projectName/$sourceId",component:HK}),vH=St({getParentRoute:()=>kn,path:"*",component:VK}),xH=kn.addChildren([ZK,YK,wn.addChildren([JK,WK,eH,tH,nH,aH,iH,sH,oH,rH,lH,cH,uH,dH]),mH,pH,hH,fH,gH,yH,bH,vH]);function kH(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Rx=kH(),wH=Rx==="/"?"":Rx.replace(/\/$/,"");function SH(e,a){return H4({routeTree:xH,basepath:wH||"/",context:{queryClient:e},...a?.initialEntries})}const jH=6e4;function AH(){const e=T.useRef(AI()).current,[a,s]=T.useState(e?"ready":"checking"),[r,u]=T.useState(null),[f,g]=T.useState(null),[b,v]=T.useState(e),[k,S]=T.useState(!1),[A,N]=T.useState(""),[E,Z]=T.useState(""),[_,G]=T.useState(""),[K,te]=T.useState(!1),[Q,re]=T.useState("password"),[W,oe]=T.useState(null),[H,$]=T.useState(!1),[Te,Ke]=T.useState(!1),Fe=T.useRef(null),Re=T.useRef(null),ve=T.useRef(null),Ue=()=>{const q=r?`${r.name}:${r.role}`:e?"api-key:explicit":f?`api-key:${f.id}`:"no-accounts";if(!Fe.current||ve.current!==q){Re.current?.clear();const le=sV();Re.current=le,Fe.current=SH(le),ve.current=q}return{queryClient:Re.current,router:Fe.current}},be=q=>q.authRequired?(S(!0),u(q.user),g(null),v(!1),s(q.user?"ready":"account-login"),!0):!1;T.useEffect(()=>{let q=!1;const le=async(De,ye=!1)=>{try{const Je=await lh();if(q)return;g(Je),v(!1),s("ready")}catch(Je){if(q)return;if(ye&&Je instanceof fn&&Je.statusCode===401)return PI().then(()=>{q||(oe(null),g(null),v(!1),Ke(!0),s("login"))}).catch(Ge=>{q||(oe(Ge instanceof Error?Ge.message:"Could not clear the invalid session"),s(De))});oe(Je instanceof Error?Je.message:"Could not verify API key access"),s(De)}};return e?(le("api-key-error"),()=>{q=!0}):(Promise.allSettled([Gv(),Uv()]).then(([De,ye])=>{if(q||De.status==="fulfilled"&&be(De.value))return;if(ye.status==="rejected"){const Ge=ye.reason;oe(Ge instanceof Error?Ge.message:"Failed to reach the Canonry API"),s("login");return}const Je=ye.value;Je.authenticated?(v(!0),le("api-key-error",!0)):(g(null),v(!1),s(Je.setupRequired?"setup":"login"))}),()=>{q=!0})},[]),T.useEffect(()=>{if(a!=="ready"||e)return;const q=setInterval(()=>{if(k){Gv().then(le=>{le.authRequired&&!le.user&&(Ke(!0),u(null),g(null),s("account-login"))}).catch(()=>{});return}Uv().then(le=>{le.authenticated||(Ke(!0),g(null),s(le.setupRequired?"setup":"login"))}).catch(()=>{})},jH);return Lv(()=>{Ke(!0),u(null),g(null),v(!1),s(k?"account-login":"login")}),()=>{clearInterval(q),Lv(null)}},[a,k,e]);const P=async q=>{if(q.preventDefault(),!E.trim()||E.trim().length<8){oe("Password must be at least 8 characters");return}if(E!==_){oe("Passwords do not match");return}$(!0),oe(null);try{if(!(await OI(E.trim())).authenticated){oe("Setup failed");return}Z(""),G(""),te(!1),Ke(!1),g(null),v(!0),s("checking");try{const De=await lh();g(De),v(!1),s("ready")}catch(De){oe(De instanceof Error?De.message:"Could not verify API key access"),s("api-key-error")}}catch(le){oe(le instanceof fn||le instanceof Error?le.message:"Setup failed")}finally{$(!1)}},ae=q=>{Z(q),oe(null)},he=q=>{G(q),oe(null)},je=async q=>{if(q.preventDefault(),!!E.trim()){$(!0),oe(null);try{if(!(Q==="api-key"?await BI(E.trim()):await qI(E.trim())).authenticated){oe(Q==="api-key"?"Invalid API key":"Incorrect password");return}const De=await lh();g(De),v(!1),Z(""),te(!1),Ke(!1),s("ready")}catch(le){oe(le instanceof fn||le instanceof Error?le.message:"Authentication failed")}finally{$(!1)}}},X=q=>{re(q),Z(""),te(!1),oe(null)},Ie=async q=>{if(q.preventDefault(),!(!A.trim()||!E)){$(!0),oe(null);try{const le=await MI(A.trim(),E);if(!le.user){oe("Incorrect name or password.");return}Z(""),Ke(!1),u(le.user),g(null),v(!1),s("ready")}catch(le){oe(le instanceof fn?le.message:"Incorrect name or password.")}finally{$(!1)}}};if(a==="ready"){const{queryClient:q,router:le}=Ue();return c.jsx(ZI,{account:r,apiKey:f,apiKeyPending:b,children:c.jsx(Q4,{client:q,children:c.jsx(F4,{router:le})})})}const Ne=E.trim(),Ae=E.length>0&&Ne.length<8,ne=_.length>0&&E!==_,V=Ne.length>=8&&E===_;return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(ua,{className:"surface-card w-full",children:a==="checking"?c.jsx(Ms,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):a==="api-key-error"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),c.jsxs(Ms,{className:"space-y-4",children:[c.jsx("p",{className:"supporting-copy",children:W??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),c.jsx(fe,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):a==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),c.jsxs(Ms,{children:[Te?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:Ft(Ie),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",name:"username",autoComplete:"username",value:A,onChange:q=>{N(q.target.value),oe(null)},"aria-invalid":!!W,"aria-describedby":W?"account-login-error":void 0})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",name:"password",autoComplete:"current-password",value:E,onChange:q=>ae(q.target.value),"aria-invalid":!!W,"aria-describedby":W?"account-login-error":void 0})]}),W?c.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!A.trim()||!E,children:H?"Signing in…":"Sign in"})]})]})]}):a==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),c.jsx(Qu,{children:"Stored on this Canonry install as a salted, one-way hash. Canonry cannot recover it."})]}),c.jsx(Ms,{children:c.jsxs("form",{className:"space-y-4",onSubmit:Ft(P),children:[c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),c.jsx("input",{autoFocus:!0,id:"dashboard-password-new",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:E,onChange:q=>ae(q.target.value),"aria-invalid":Ae,"aria-describedby":"dashboard-password-new-help"}),c.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:Ae?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ae?"Enter at least 8 characters.":"Use at least 8 characters."})]}),c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),c.jsx("input",{id:"dashboard-password-confirm",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:_,onChange:q=>he(q.target.value),"aria-invalid":ne,"aria-describedby":"dashboard-password-confirm-help"}),c.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:ne?"block text-sm text-negative-400":"block text-sm text-secondary",children:ne?"Passwords do not match.":"Enter the same password again."})]}),c.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[c.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:K,onChange:q=>te(q.target.checked)}),"Show passwords"]}),W?c.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!V,children:H?"Creating password…":"Create password and continue"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Ko,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),c.jsx(Qu,{children:Q==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),c.jsxs(Ms,{children:[Te?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:Ft(je),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:Q==="api-key"?"Canonry API key":"Password"}),c.jsx("input",{autoFocus:!0,id:"dashboard-password-current",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:K?"text":"password",name:Q==="api-key"?"apiKey":"password",autoComplete:Q==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:E,onChange:q=>ae(q.target.value),"aria-invalid":!!W,"aria-describedby":W?"dashboard-password-login-error":void 0})]}),c.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[c.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:K,onChange:q=>te(q.target.checked)}),Q==="api-key"?"Show API key":"Show password"]}),W?c.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:W}):null,c.jsx(fe,{type:"submit",disabled:H||!E.trim(),children:H?"Signing in…":"Open dashboard"}),c.jsx(fe,{type:"button",variant:"ghost",onClick:()=>X(Q==="api-key"?"password":"api-key"),children:Q==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const q3=document.getElementById("root");if(!q3)throw new Error("Expected #root element for web app bootstrap.");SA.createRoot(q3).render(c.jsx(T.StrictMode,{children:c.jsx(AH,{})}));export{HZ as $,GF as A,fe as B,Uu as C,LF as D,$F as E,GQ as F,VF as G,LZ as H,yl as I,$Z as J,GZ as K,JQ as L,MY as M,XQ as N,lF as O,dG as P,rn as Q,QZ as R,lV as S,pn as T,FZ as U,aF as V,ZZ as W,iF as X,eF as Y,nF as Z,KZ as _,PY as a,sF as a$,UZ as a0,WQ as a1,YZ as a2,aY as a3,WZ as a4,tY as a5,eY as a6,nY as a7,CF as a8,vf as a9,RH as aA,nV as aB,nZ as aC,on as aD,kV as aE,$V as aF,lZ as aG,pZ as aH,cZ as aI,rQ as aJ,cQ as aK,EO as aL,uQ as aM,RV as aN,rZ as aO,RO as aP,qh as aQ,lQ as aR,fI as aS,uZ as aT,oZ as aU,OV as aV,dZ as aW,VY as aX,mZ as aY,kY as aZ,wY as a_,ze as aa,JZ as ab,ZS as ac,gi as ad,XZ as ae,HY as af,qT as ag,BT as ah,OH as ai,DH as aj,zF as ak,qF as al,BF as am,fn as an,PF as ao,OQ as ap,cV as aq,fU as ar,Ph as as,MF as at,Tu as au,gY as av,d_ as aw,Hh as ax,Ps as ay,tF as az,$9 as b,eQ as b$,gf as b0,fY as b1,MV as b2,bZ as b3,xZ as b4,_Z as b5,MZ as b6,PZ as b7,CZ as b8,qZ as b9,wQ as bA,fQ as bB,gQ as bC,kQ as bD,xQ as bE,vQ as bF,yQ as bG,bQ as bH,hQ as bI,pQ as bJ,mQ as bK,dQ as bL,uB as bM,ZH as bN,KH as bO,HH as bP,QH as bQ,YH as bR,FH as bS,WH as bT,hY as bU,XH as bV,JH as bW,gF as bX,GH as bY,KY as bZ,nQ as b_,VZ as ba,wZ as bb,EZ as bc,TZ as bd,RZ as be,kZ as bf,zZ as bg,SZ as bh,DZ as bi,jZ as bj,OZ as bk,NZ as bl,BZ as bm,IZ as bn,lK as bo,AZ as bp,ge as bq,TQ as br,EQ as bs,zQ as bt,_Q as bu,AQ as bv,jQ as bw,NQ as bx,CQ as by,SQ as bz,O2 as c,lY as c$,aQ as c0,iQ as c1,$H as c2,tQ as c3,LQ as c4,VQ as c5,IQ as c6,yF as c7,QV as c8,vZ as c9,$Y as cA,mK as cB,hZ as cC,XF as cD,tZ as cE,JF as cF,fZ as cG,IY as cH,WF as cI,xn as cJ,NI as cK,hV as cL,v$ as cM,qQ as cN,EI as cO,BQ as cP,PQ as cQ,MQ as cR,ts as cS,xV as cT,jV as cU,UQ as cV,iY as cW,UI as cX,pF as cY,oY as cZ,rY as c_,QF as ca,Fv as cb,KQ as cc,HQ as cd,KF as ce,HF as cf,QQ as cg,FQ as ch,YQ as ci,ZQ as cj,Kl as ck,Zs as cl,TS as cm,YF as cn,ZF as co,n$ as cp,mG as cq,p3 as cr,yG as cs,h3 as ct,f3 as cu,AV as cv,Is as cw,Yu as cx,XV as cy,fK as cz,IF as d,_Y as d$,sY as d0,UF as d1,cF as d2,uF as d3,dF as d4,hF as d5,mF as d6,nr as d7,yf as d8,LY as d9,vY as dA,J$ as dB,oQ as dC,of as dD,FF as dE,yY as dF,xY as dG,jF as dH,sQ as dI,wF as dJ,SF as dK,kF as dL,bY as dM,K8 as dN,aZ as dO,eZ as dP,sZ as dQ,iZ as dR,PH as dS,yi as dT,fa as dU,BH as dV,hI as dW,SY as dX,AY as dY,jY as dZ,pK as d_,zd as da,wf as db,gZ as dc,yZ as dd,xI as de,RQ as df,DQ as dg,$Q as dh,oF as di,rF as dj,Ef as dk,Ed as dl,Sf as dm,hK as dn,fF as dp,ar as dq,Yv as dr,NF as ds,EF as dt,RF as du,DF as dv,_F as dw,TF as dx,OF as dy,AF as dz,dY as e,f$ as e0,MH as e1,OY as e2,qY as e3,BY as e4,CY as e5,NY as e6,qH as e7,EY as e8,DY as e9,zY as ea,RY as eb,ir as ec,IH as ed,TY as ee,v9 as ef,LH as eg,VH as eh,ua as f,cY as g,rx as h,se as i,gI as j,Sl as k,mn as l,Ft as m,uY as n,pY as o,mY as p,bF as q,xF as r,UH as s,dV as t,jf as u,vF as v,ha as w,UY as x,GY as y,$h as z};
|