@ainyc/canonry 5.0.0 → 5.1.1

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.
Files changed (28) hide show
  1. package/README.md +1 -1
  2. package/assets/agent-workspace/skills/canonry/SKILL.md +24 -5
  3. package/assets/assets/{AuditHistoryPanel-vWUtVXOI.js → AuditHistoryPanel-9F_74jKS.js} +1 -1
  4. package/assets/assets/{BacklinksPage-CSzuMEuv.js → BacklinksPage-DmF2rbwy.js} +1 -1
  5. package/assets/assets/{HistoryPage-DtCTQ7CQ.js → HistoryPage-DKopwAjo.js} +1 -1
  6. package/assets/assets/{MeasurementPropertyPage-B7gTMWNs.js → MeasurementPropertyPage-Dpd_DYQv.js} +1 -1
  7. package/assets/assets/{ProjectPage-Bsm0_jUY.js → ProjectPage-b1-57SzP.js} +1 -1
  8. package/assets/assets/{RunRow-D5k4Rdo4.js → RunRow-BjrSRp6X.js} +1 -1
  9. package/assets/assets/{RunsPage-DIXBB2Om.js → RunsPage-BFrymZ7D.js} +1 -1
  10. package/assets/assets/{SettingsPage-wYhBm6Az.js → SettingsPage-DdVa6pLK.js} +1 -1
  11. package/assets/assets/{SiteHealthSection-YebzsgDh.js → SiteHealthSection-CizmiBjA.js} +3 -3
  12. package/assets/assets/{TrafficPage-DtnSRFO8.js → TrafficPage-N7sZgb9x.js} +1 -1
  13. package/assets/assets/{TrafficSourceDetailPage-DYQ6mpYq.js → TrafficSourceDetailPage-BNQmMJ5D.js} +1 -1
  14. package/assets/assets/{extract-error-message-BdChrkmo.js → extract-error-message-Bh9mRIz9.js} +1 -1
  15. package/assets/assets/{index-C_E2NRYY.js → index-BnR1Tu9j.js} +3 -3
  16. package/assets/assets/{react-sigma_core.esm.min-sKWUk_tG.js → react-sigma_core.esm.min-DGaYwjLZ.js} +1 -1
  17. package/assets/assets/{v2-overview-adapter-CkPt-sRK.js → v2-overview-adapter-eqN-8OK5.js} +1 -1
  18. package/assets/index.html +1 -1
  19. package/dist/{chunk-3WODA4JF.js → chunk-3DL3KV6C.js} +2 -0
  20. package/dist/{chunk-LJKAB4CX.js → chunk-66KGNC4U.js} +2 -2
  21. package/dist/{chunk-UMU3IBXM.js → chunk-LHHJVGH7.js} +39 -26
  22. package/dist/{chunk-B2XM6AQ6.js → chunk-MEQGGODM.js} +21 -9
  23. package/dist/{chunk-67NX4KVE.js → chunk-ZWVXUPLP.js} +128 -8
  24. package/dist/cli.js +6 -5
  25. package/dist/index.js +4 -4
  26. package/dist/{intelligence-service-MGQRJW4V.js → intelligence-service-7XX5ZRYE.js} +2 -2
  27. package/dist/mcp.js +6 -7
  28. package/package.json +26 -11
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-YebzsgDh.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-CW2qe0uH.js","./ChartPrimitives-Bxa_vFmq.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-Bsm0_jUY.js","./RunRow-D5k4Rdo4.js","./extract-error-message-BdChrkmo.js","./v2-overview-adapter-CkPt-sRK.js","./vendor-markdown-B-Oq2NYq.js","./AuditHistoryPanel-vWUtVXOI.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-DIXBB2Om.js","./HistoryPage-DtCTQ7CQ.js","./SettingsPage-wYhBm6Az.js","./BacklinksPage-CSzuMEuv.js","./TrafficPage-DtnSRFO8.js","./TrafficSourceDetailPage-DYQ6mpYq.js","./MeasurementPropertyPage-B7gTMWNs.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-CizmiBjA.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-CW2qe0uH.js","./ChartPrimitives-Bxa_vFmq.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-b1-57SzP.js","./RunRow-BjrSRp6X.js","./extract-error-message-Bh9mRIz9.js","./v2-overview-adapter-eqN-8OK5.js","./vendor-markdown-B-Oq2NYq.js","./AuditHistoryPanel-9F_74jKS.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-BFrymZ7D.js","./HistoryPage-DKopwAjo.js","./SettingsPage-DdVa6pLK.js","./BacklinksPage-DmF2rbwy.js","./TrafficPage-N7sZgb9x.js","./TrafficSourceDetailPage-BNQmMJ5D.js","./MeasurementPropertyPage-Dpd_DYQv.js"])))=>i.map(i=>d[i]);
2
2
  import{c as q4,d as B4,r as T,j as c,Q as P4,M as M4,q as pe,e as Rl,L as tt,a as I4,t as Io,u as Et,f as V4,h as da,k as Hs,l as Tx,m as L4,n as Rx,O as dh,o as ns,p as U4,s as St,v as Dx,x as as,y as G4,z as $4,A as K4}from"./vendor-tanstack-ZXXkndVj.js";import{S as H4,O as Hh,P as Ox,C as Qh,a as qx,T as Fh,D as Bx,R as Px}from"./vendor-radix-twS1M3FF.js";import{c as Mx}from"./vendor-recharts-D-cUuLZo.js";import{A as Q4,X as sr,S as F4,L as Zo,C as Zh,R as uu,a as Ix,M as Z4,b as Y4,c as X4,d as Yh,T as Vx,W as J4,e as Xh,f as Lx,g as W4,G as eA,P as tA,H as nA,h as aA,i as iA,j as sA,k as oA,l as rA,B as lA,F as cA,m as uA,n as dA,o as mA,p as ib,E as pA}from"./vendor-lucide-CW2qe0uH.js";import{M as hA}from"./vendor-markdown-B-Oq2NYq.js";import{p as fA}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 qp={exports:{}},dl={},Bp={exports:{}},Pp={};var sb;function gA(){return sb||(sb=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}}}})(Pp)),Pp}var ob;function yA(){return ob||(ob=1,Bp.exports=gA()),Bp.exports}var rb;function bA(){if(rb)return dl;rb=1;var e=yA(),a=q4(),s=B4();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)?Ny(t):0;break;default:if(t=n.tagName,n=n.namespaceURI)n=Ny(n),t=_y(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=_y(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(`
@@ -45,7 +45,7 @@ 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=Al,b=!Gx.jitless,k=b&&SA.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?o2([],Z,N,E,A,e):N):s(N,E):(N.issues.push({expected:"object",code:"invalid_type",input:Z,inst:e}),N)}});function pb(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 r2=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=>Wh(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=>pb(v,u,e,f)):pb(b,u,e,f)}}),dC=J("$ZodDiscriminatedUnion",(e,a)=>{a.inclusive=!1,r2.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=Yu(()=>{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(!Al(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)}}),mC=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])=>hb(s,v,k)):hb(s,f,g)}});function ph(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=ph(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=ph(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 hb(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=ph(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 pC=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"&&Wx.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}}),hC=J("$ZodEnum",(e,a)=>{Ct.init(e,a);const s=$x(a.entries),r=new Set(s);e._zod.values=r,e._zod.pattern=new RegExp(`^(${s.filter(u=>jA.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}}),fC=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}}),gC=J("$ZodTransform",(e,a)=>{Ct.init(e,a),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Ux(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 fb(e,a){return e.issues.length&&a===void 0?{issues:[],value:void 0}:e}const l2=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(`^(${Wh(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=>fb(f,s.value)):fb(u,s.value)}return s.value===void 0?s:a.innerType._zod.run(s,r)}}),yC=J("$ZodExactOptional",(e,a)=>{l2.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)}),bC=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(`^(${Wh(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)}),vC=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=>gb(f,a)):gb(u,a)}});function gb(e,a){return e.value===void 0&&(e.value=a.defaultValue),e}const xC=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))}),kC=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=>yb(f,e)):yb(u,e)}});function yb(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 wC=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)}}),SC=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=>mu(g,a.in,r)):mu(f,a.in,r)}const u=a.in._zod.run(s,r);return u instanceof Promise?u.then(f=>mu(f,a.out,r)):mu(u,a.out,r)}});function mu(e,a,s){return e.issues.length?(e.aborted=!0,e):a._zod.run({value:e.value,issues:e.issues},s)}const jC=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(bb):bb(u)}});function bb(e){return e.value=Object.freeze(e.value),e}const AC=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=>vb(f,s,r,e));vb(u,s,r,e)}});function vb(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(Cl(u))}}var xb;class CC{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 NC(){return new CC}(xb=globalThis).__zod_globalRegistry??(xb.__zod_globalRegistry=NC());const vl=globalThis.__zod_globalRegistry;function _C(e,a){return new e({type:"string",..._e(a)})}function zC(e,a){return new e({type:"string",format:"email",check:"string_format",abort:!1,..._e(a)})}function kb(e,a){return new e({type:"string",format:"guid",check:"string_format",abort:!1,..._e(a)})}function EC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,..._e(a)})}function TC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",..._e(a)})}function RC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",..._e(a)})}function DC(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",..._e(a)})}function OC(e,a){return new e({type:"string",format:"url",check:"string_format",abort:!1,..._e(a)})}function qC(e,a){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,..._e(a)})}function BC(e,a){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,..._e(a)})}function PC(e,a){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,..._e(a)})}function MC(e,a){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,..._e(a)})}function IC(e,a){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,..._e(a)})}function VC(e,a){return new e({type:"string",format:"xid",check:"string_format",abort:!1,..._e(a)})}function LC(e,a){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,..._e(a)})}function UC(e,a){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,..._e(a)})}function GC(e,a){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,..._e(a)})}function $C(e,a){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,..._e(a)})}function KC(e,a){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,..._e(a)})}function HC(e,a){return new e({type:"string",format:"base64",check:"string_format",abort:!1,..._e(a)})}function QC(e,a){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,..._e(a)})}function FC(e,a){return new e({type:"string",format:"e164",check:"string_format",abort:!1,..._e(a)})}function ZC(e,a){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,..._e(a)})}function YC(e,a){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,..._e(a)})}function XC(e,a){return new e({type:"string",format:"date",check:"string_format",..._e(a)})}function JC(e,a){return new e({type:"string",format:"time",check:"string_format",precision:null,..._e(a)})}function WC(e,a){return new e({type:"string",format:"duration",check:"string_format",..._e(a)})}function e6(e,a){return new e({type:"number",checks:[],..._e(a)})}function t6(e,a){return new e({type:"number",coerce:!0,checks:[],..._e(a)})}function n6(e,a){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",..._e(a)})}function a6(e,a){return new e({type:"boolean",..._e(a)})}function i6(e,a){return new e({type:"null",..._e(a)})}function s6(e){return new e({type:"unknown"})}function o6(e,a){return new e({type:"never",..._e(a)})}function wb(e,a){return new t2({check:"less_than",..._e(a),value:e,inclusive:!1})}function Mp(e,a){return new t2({check:"less_than",..._e(a),value:e,inclusive:!0})}function Sb(e,a){return new n2({check:"greater_than",..._e(a),value:e,inclusive:!1})}function Ip(e,a){return new n2({check:"greater_than",..._e(a),value:e,inclusive:!0})}function jb(e,a){return new b5({check:"multiple_of",..._e(a),value:e})}function c2(e,a){return new x5({check:"max_length",..._e(a),maximum:e})}function Ru(e,a){return new k5({check:"min_length",..._e(a),minimum:e})}function u2(e,a){return new w5({check:"length_equals",..._e(a),length:e})}function r6(e,a){return new S5({check:"string_format",format:"regex",..._e(a),pattern:e})}function l6(e){return new j5({check:"string_format",format:"lowercase",..._e(e)})}function c6(e){return new A5({check:"string_format",format:"uppercase",..._e(e)})}function u6(e,a){return new C5({check:"string_format",format:"includes",..._e(a),includes:e})}function d6(e,a){return new N5({check:"string_format",format:"starts_with",..._e(a),prefix:e})}function m6(e,a){return new _5({check:"string_format",format:"ends_with",..._e(a),suffix:e})}function or(e){return new z5({check:"overwrite",tx:e})}function p6(e){return or(a=>a.normalize(e))}function h6(){return or(e=>e.trim())}function f6(){return or(e=>e.toLowerCase())}function g6(){return or(e=>e.toUpperCase())}function y6(){return or(e=>wA(e))}function b6(e,a,s){return new e({type:"array",element:a,..._e(s)})}function v6(e,a,s){return new e({type:"custom",check:"custom",fn:a,..._e(s)})}function x6(e){const a=k6(s=>(s.addIssue=r=>{if(typeof r=="string")s.issues.push(Cl(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(Cl(u))}},e(s.value,s)));return a}function k6(e,a){const s=new Bn({check:"custom",..._e(a)});return s._zod.check=e,s}function d2(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 m2(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 p2(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:Du(a,"input",e.processors),output:Du(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 w6=(e,a={})=>s=>{const r=d2({...s,processors:a});return Gt(e,r),m2(r,e),p2(r,e)},Du=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=d2({...u??{},target:f,io:a,processors:s});return Gt(e,g),m2(g,e),p2(g,e)},S6={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},j6=(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=S6[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}))])}},A6=(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)},C6=(e,a,s,r)=>{s.type="boolean"},N6=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},_6=(e,a,s,r)=>{s.not={}},z6=(e,a,s,r)=>{},E6=(e,a,s,r)=>{const u=e._zod.def,f=$x(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},T6=(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},R6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},D6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},O6=(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"]})},q6=(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)},B6=(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},P6=(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},M6=(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)}},I6=(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"}]},V6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},L6=(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))},U6=(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)))},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;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},$6=(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},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,s.readOnly=!0},h2=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},H6=J("ZodISODateTime",(e,a)=>{G5.init(e,a),Tt.init(e,a)});function f2(e){return YC(H6,e)}const Q6=J("ZodISODate",(e,a)=>{$5.init(e,a),Tt.init(e,a)});function g2(e){return XC(Q6,e)}const F6=J("ZodISOTime",(e,a)=>{K5.init(e,a),Tt.init(e,a)});function Z6(e){return JC(F6,e)}const Y6=J("ZodISODuration",(e,a)=>{H5.init(e,a),Tt.init(e,a)});function X6(e){return WC(Y6,e)}const J6=(e,a)=>{Fx.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>qA(e,s)},flatten:{value:s=>OA(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,mh,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,mh,2)}},isEmpty:{get(){return e.issues.length===0}}})},ma=J("ZodError",J6,{Parent:Error}),W6=t0(ma),eN=n0(ma),tN=Xu(ma),nN=Ju(ma),aN=MA(ma),iN=IA(ma),sN=VA(ma),oN=LA(ma),rN=UA(ma),lN=GA(ma),cN=$A(ma),uN=KA(ma),_t=J("ZodType",(e,a)=>(Ct.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:Du(e,"input"),output:Du(e,"output")}}),e.toJSONSchema=w6(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)=>W6(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>tN(e,s,r),e.parseAsync=async(s,r)=>eN(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>nN(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>aN(e,s,r),e.decode=(s,r)=>iN(e,s,r),e.encodeAsync=async(s,r)=>sN(e,s,r),e.decodeAsync=async(s,r)=>oN(e,s,r),e.safeEncode=(s,r)=>rN(e,s,r),e.safeDecode=(s,r)=>lN(e,s,r),e.safeEncodeAsync=async(s,r)=>cN(e,s,r),e.safeDecodeAsync=async(s,r)=>uN(e,s,r),e.refine=(s,r)=>e.check(a_(s,r)),e.superRefine=s=>e.check(i_(s)),e.overwrite=s=>e.check(or(s)),e.optional=()=>Nb(e),e.exactOptional=()=>$N(e),e.nullable=()=>_b(e),e.nullish=()=>Nb(_b(e)),e.nonoptional=s=>YN(e,s),e.array=()=>y(e),e.or=s=>Qe([e,s]),e.and=s=>IN(e,s),e.transform=s=>fh(e,v2(s)),e.default=s=>QN(e,s),e.prefault=s=>ZN(e,s),e.catch=s=>JN(e,s),e.pipe=s=>fh(e,s),e.readonly=()=>t_(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)),y2=J("_ZodString",(e,a)=>{a0.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>j6(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(r6(...r)),e.includes=(...r)=>e.check(u6(...r)),e.startsWith=(...r)=>e.check(d6(...r)),e.endsWith=(...r)=>e.check(m6(...r)),e.min=(...r)=>e.check(Ru(...r)),e.max=(...r)=>e.check(c2(...r)),e.length=(...r)=>e.check(u2(...r)),e.nonempty=(...r)=>e.check(Ru(1,...r)),e.lowercase=r=>e.check(l6(r)),e.uppercase=r=>e.check(c6(r)),e.trim=()=>e.check(h6()),e.normalize=(...r)=>e.check(p6(...r)),e.toLowerCase=()=>e.check(f6()),e.toUpperCase=()=>e.check(g6()),e.slugify=()=>e.check(y6())}),dN=J("ZodString",(e,a)=>{a0.init(e,a),y2.init(e,a),e.email=s=>e.check(zC(mN,s)),e.url=s=>e.check(OC(pN,s)),e.jwt=s=>e.check(ZC(_N,s)),e.emoji=s=>e.check(qC(hN,s)),e.guid=s=>e.check(kb(Ab,s)),e.uuid=s=>e.check(EC(pu,s)),e.uuidv4=s=>e.check(TC(pu,s)),e.uuidv6=s=>e.check(RC(pu,s)),e.uuidv7=s=>e.check(DC(pu,s)),e.nanoid=s=>e.check(BC(fN,s)),e.guid=s=>e.check(kb(Ab,s)),e.cuid=s=>e.check(PC(gN,s)),e.cuid2=s=>e.check(MC(yN,s)),e.ulid=s=>e.check(IC(bN,s)),e.base64=s=>e.check(HC(AN,s)),e.base64url=s=>e.check(QC(CN,s)),e.xid=s=>e.check(VC(vN,s)),e.ksuid=s=>e.check(LC(xN,s)),e.ipv4=s=>e.check(UC(kN,s)),e.ipv6=s=>e.check(GC(wN,s)),e.cidrv4=s=>e.check($C(SN,s)),e.cidrv6=s=>e.check(KC(jN,s)),e.e164=s=>e.check(FC(NN,s)),e.datetime=s=>e.check(f2(s)),e.date=s=>e.check(g2(s)),e.time=s=>e.check(Z6(s)),e.duration=s=>e.check(X6(s))});function o(e){return _C(dN,e)}const Tt=J("ZodStringFormat",(e,a)=>{Nt.init(e,a),y2.init(e,a)}),mN=J("ZodEmail",(e,a)=>{O5.init(e,a),Tt.init(e,a)}),Ab=J("ZodGUID",(e,a)=>{R5.init(e,a),Tt.init(e,a)}),pu=J("ZodUUID",(e,a)=>{D5.init(e,a),Tt.init(e,a)}),pN=J("ZodURL",(e,a)=>{q5.init(e,a),Tt.init(e,a)}),hN=J("ZodEmoji",(e,a)=>{B5.init(e,a),Tt.init(e,a)}),fN=J("ZodNanoID",(e,a)=>{P5.init(e,a),Tt.init(e,a)}),gN=J("ZodCUID",(e,a)=>{M5.init(e,a),Tt.init(e,a)}),yN=J("ZodCUID2",(e,a)=>{I5.init(e,a),Tt.init(e,a)}),bN=J("ZodULID",(e,a)=>{V5.init(e,a),Tt.init(e,a)}),vN=J("ZodXID",(e,a)=>{L5.init(e,a),Tt.init(e,a)}),xN=J("ZodKSUID",(e,a)=>{U5.init(e,a),Tt.init(e,a)}),kN=J("ZodIPv4",(e,a)=>{Q5.init(e,a),Tt.init(e,a)}),wN=J("ZodIPv6",(e,a)=>{F5.init(e,a),Tt.init(e,a)}),SN=J("ZodCIDRv4",(e,a)=>{Z5.init(e,a),Tt.init(e,a)}),jN=J("ZodCIDRv6",(e,a)=>{Y5.init(e,a),Tt.init(e,a)}),AN=J("ZodBase64",(e,a)=>{X5.init(e,a),Tt.init(e,a)}),CN=J("ZodBase64URL",(e,a)=>{W5.init(e,a),Tt.init(e,a)}),NN=J("ZodE164",(e,a)=>{eC.init(e,a),Tt.init(e,a)}),_N=J("ZodJWT",(e,a)=>{nC.init(e,a),Tt.init(e,a)}),i0=J("ZodNumber",(e,a)=>{i2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>A6(e,r,u),e.gt=(r,u)=>e.check(Sb(r,u)),e.gte=(r,u)=>e.check(Ip(r,u)),e.min=(r,u)=>e.check(Ip(r,u)),e.lt=(r,u)=>e.check(wb(r,u)),e.lte=(r,u)=>e.check(Mp(r,u)),e.max=(r,u)=>e.check(Mp(r,u)),e.int=r=>e.check(Cb(r)),e.safe=r=>e.check(Cb(r)),e.positive=r=>e.check(Sb(0,r)),e.nonnegative=r=>e.check(Ip(0,r)),e.negative=r=>e.check(wb(0,r)),e.nonpositive=r=>e.check(Mp(0,r)),e.multipleOf=(r,u)=>e.check(jb(r,u)),e.step=(r,u)=>e.check(jb(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 e6(i0,e)}const zN=J("ZodNumberFormat",(e,a)=>{aC.init(e,a),i0.init(e,a)});function Cb(e){return n6(zN,e)}const EN=J("ZodBoolean",(e,a)=>{iC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>C6(e,s,r)});function C(e){return a6(EN,e)}const TN=J("ZodNull",(e,a)=>{sC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>N6(e,s,r)});function ce(e){return i6(TN,e)}const RN=J("ZodUnknown",(e,a)=>{oC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z6()});function qn(){return s6(RN)}const DN=J("ZodNever",(e,a)=>{rC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>_6(e,s,r)});function ON(e){return o6(DN,e)}const qN=J("ZodArray",(e,a)=>{lC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>O6(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(Ru(s,r)),e.nonempty=s=>e.check(Ru(1,s)),e.max=(s,r)=>e.check(c2(s,r)),e.length=(s,r)=>e.check(u2(s,r)),e.unwrap=()=>e.element});function y(e,a){return b6(qN,e,a)}const BN=J("ZodObject",(e,a)=>{uC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>q6(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:ON()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>zA(e,s),e.safeExtend=s=>EA(e,s),e.merge=s=>TA(e,s),e.pick=s=>NA(e,s),e.omit=s=>_A(e,s),e.partial=(...s)=>RA(x2,e,s[0]),e.required=(...s)=>DA(k2,e,s[0])});function m(e,a){const s={type:"object",shape:e??{},..._e(a)};return new BN(s)}const b2=J("ZodUnion",(e,a)=>{r2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>B6(e,s,r,u),e.options=a.options});function Qe(e,a){return new b2({type:"union",options:e,..._e(a)})}const PN=J("ZodDiscriminatedUnion",(e,a)=>{b2.init(e,a),dC.init(e,a)});function qe(e,a,s){return new PN({type:"union",options:a,discriminator:e,..._e(s)})}const MN=J("ZodIntersection",(e,a)=>{mC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>P6(e,s,r,u)});function IN(e,a){return new MN({type:"intersection",left:e,right:a})}const VN=J("ZodRecord",(e,a)=>{pC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>M6(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Le(e,a,s){return new VN({type:"record",keyType:e,valueType:a,..._e(s)})}const hh=J("ZodEnum",(e,a)=>{hC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>E6(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 hh({...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 hh({...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 hh({type:"enum",entries:s,..._e(a)})}const LN=J("ZodLiteral",(e,a)=>{fC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T6(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 LN({type:"literal",values:Array.isArray(e)?e:[e],..._e(a)})}const UN=J("ZodTransform",(e,a)=>{gC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>D6(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Ux(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Cl(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(Cl(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function v2(e){return new UN({type:"transform",transform:e})}const x2=J("ZodOptional",(e,a)=>{l2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Nb(e){return new x2({type:"optional",innerType:e})}const GN=J("ZodExactOptional",(e,a)=>{yC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function $N(e){return new GN({type:"optional",innerType:e})}const KN=J("ZodNullable",(e,a)=>{bC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>I6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function _b(e){return new KN({type:"nullable",innerType:e})}const HN=J("ZodDefault",(e,a)=>{vC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>L6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function QN(e,a){return new HN({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():Hx(a)}})}const FN=J("ZodPrefault",(e,a)=>{xC.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 ZN(e,a){return new FN({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():Hx(a)}})}const k2=J("ZodNonOptional",(e,a)=>{kC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>V6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function YN(e,a){return new k2({type:"nonoptional",innerType:e,..._e(a)})}const XN=J("ZodCatch",(e,a)=>{wC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>G6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function JN(e,a){return new XN({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const WN=J("ZodPipe",(e,a)=>{SC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>$6(e,s,r,u),e.in=a.in,e.out=a.out});function fh(e,a){return new WN({type:"pipe",in:e,out:a})}const e_=J("ZodReadonly",(e,a)=>{jC.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 t_(e){return new e_({type:"readonly",innerType:e})}const n_=J("ZodCustom",(e,a)=>{AC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R6(e,s)});function a_(e,a={}){return v6(n_,e,a)}function i_(e){return x6(e)}function s0(e,a){return fh(v2(e),a)}const Se={custom:"custom"};function o0(e){return t6(i0,e)}const w2=m({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:C(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});m({keys:y(w2)});m({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});w2.extend({key:o()});const s_=m({maxConcurrency:d().int().positive(),maxRequestsPerMinute:d().int().positive(),maxRequestsPerDay:d().int().positive()}),ht=o().min(1),r0=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()}),l0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);l0.enum;const c0=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:l0,cronExpr:o(),recurrence:c0.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 o_=o().datetime();m({kind:l0.optional(),preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:c0.optional(),timezone:o().optional().default("UTC"),enabled:C().optional().default(!0),providers:y(ht).optional().default([]),sourceId:o().optional(),expectedUpdatedAt:o_.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 u0=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(u0),enabled:C().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});m({channel:D("webhook"),url:o().url(),events:y(u0).min(1),source:o().optional()});class r_ 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 zb(e,a){return new r_("VALIDATION_ERROR",e,400,a)}function l_(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 Vp(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 Eb(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 c_=o().trim().min(1).refine(e=>Eb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Eb(e)??e),u_=o().trim().min(1),d_=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"}),d0=m({marketingHosts:y(c_).overwrite(e=>Vp(e,!0)),brandTerms:y(u_).overwrite(e=>Vp(e,!0)),leadEventNames:y(d_).overwrite(e=>Vp(e))});function m_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const Lp=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),S2=()=>m_(),Tb=j(["never-synced","ready","error"]),p_=j(["landing-page","channel"]),h_=j(["30d","60d","90d"]),f_=j(["marketing","all"]),xl=g2(),Dl=m({label:j(["earliest","middle","previous","latest"]),startDate:xl,endDate:xl}),Up=Dl.extend({sessions:d().int().nonnegative()}),Rb=Dl.extend({eventCount:d().int().nonnegative()}),Db=Dl.extend({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),g_=Dl.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()}),y_=Dl.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()}),b_=m({window:h_,bucketDays:D(30),filters:m({hostScope:f_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:D("property")}),acquisition:m({status:Tb,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(Up),channels:y(m({channelGroup:o(),periods:y(Up)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Up)}))}),leads:m({status:Tb,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:p_.nullable(),hostAndPathFiltersApplied:C(),periods:y(Rb),channels:y(m({channelGroup:o(),periods:y(Rb)}))}),engagement:m({status:j(["ready","unavailable"]),availableFromDate:xl.nullable(),latestDate:xl.nullable(),periods:y(y_)}),searchDemand:m({status:j(["ready","unavailable"]),periods:y(g_),queries:y(m({query:o(),classification:j(["branded","non-branded"]),periods:y(Db)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Db)})),latestDate:xl.nullable()})}),v_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,x_=/[\0-\x1F\x7F-\x9F]/,k_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,w_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var S_=class{src_Any=v_.source;src_Cc=x_.source;src_Z=w_.source;src_P=k_.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")}},Gp={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)},j_={"http:":Gp,"https:":Gp,"ftp:":Gp,"//":{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_="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",C_="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function N_(){const e=C_.split("|");return A_.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 __={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:N_(),urlAuth:!1,maxLength:1e4},Ob=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}},z_=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...__,...s},this.__schemas__={...j_},this.re=a||new S_,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 Ob(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 Ob(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 E_=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 T_(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function R_(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function D_(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(T_(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:R_(a,e)}function O_(e,a){return e.slice(0,-a.length-1)}const $p=/[\t\n\r]/g;let gh=!1;function qb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Bb(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(gh=!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=Bb(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($p,""),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($p,""),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=Bb(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);(!(qb(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&&!qb(K)&&(E=!1);s&&(_=K)}if(N)return kl(e.replace($p,""),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&&(gh=!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 q_(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 B_(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 P_(e){return B_(e)||q_(e)}const M_=["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 I_(e){for(const a of M_)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function Pb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Mb(e){if(e.length>255||e.length===0||!Pb(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(!(Pb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function j2({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 V_=j2({});function L_(e){return e===void 0?V_:j2(e)}function U_(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function G_(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function A2(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 C2(e,a,s,r,u){const f=L_(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=Mb(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=P_(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!gh&&!Mb(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=I_(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=D_(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=U_(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=O_(u.domain,u.publicSuffix)),u)}function $_(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]),Ou=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]),qu=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]),Ib=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]),yh="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",K_=621,H_=625,N2=Vs.length,_2=qu.length,z2=new Uint32Array(_2),Nu=new Uint32Array(_2),bh=new Int32Array(N2).fill(-1);for(let e=0,a=0;e<N2;e+=1)for(let s=Ou[e];s<Ou[e+1];s+=1){z2[s]=a;const r=a+qu[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^yh.charCodeAt(f);Nu[s]=u>>>0,qu[s]===1&&yh.charCodeAt(a)===42&&(bh[e]=s),a=r}let pi=-1,vh=0,xh=0;function Vb(e,a,s,r){if(qu[e]!==r)return!1;const u=z2[e];for(let f=0;f<r;f+=1)if(yh.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function Lb(e,a,s,r,u){let f=Ou[e],g=Ou[e+1];for(;f<g;){const b=f+g>>>1,v=Nu[b];if(v<a)f=b+1;else if(v>a)g=b;else{for(let k=b;k>=f&&Nu[k]===a;k-=1)if(Vb(k,s,r,u))return k;for(let k=b+1;k<g&&Nu[k]===a;k+=1)if(Vb(k,s,r,u))return k;return-1}}return-1}function Ub(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=Lb(r,f>>>0,e,k,u-k);if(S===-1&&(S=bh[r]),S===-1)return pi!==-1;r=Ib[S],(Vs[r]&s)!==0&&(pi=r,vh=k,xh=u),u=b,f=5381}else f=f*33^v}let g=Lb(r,f>>>0,e,0,u);return g===-1&&(g=bh[r]),g!==-1&&(r=Ib[g],(Vs[r]&s)!==0&&(pi=r,vh=0,xh=u)),pi!==-1}function E2(e,a,s){if($_(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(Ub(e,H_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(xh+1);return}if(Ub(e,K_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(vh);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const Bu=G_();function Q_(e,a){return A2(Bu),C2(e,0,E2,a,Bu).hostname}function F_(e,a){return A2(Bu),C2(e,5,E2,a,Bu).domainWithoutSuffix}const Z_={allowPrivateDomains:!0};new z_({fuzzyLink:!0,fuzzyEmail:!1}).tlds(E_);function Ol(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Q_(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function T2(e){return e==null||e.trim()===""?"":F_(e,Z_)?.toLowerCase()??""}const Y_=new Intl.Segmenter("en",{granularity:"word"}),X_=/[^\p{L}\p{N}]+/gu,J_=/[\p{L}\p{N}]+/gu,W_=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,e8=new RegExp("\\P{ASCII}","u");function t8(e){if(!e8.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&&W_.test(u)?u:s}return a}function R2(e){return t8(e.normalize("NFKC")).toLocaleLowerCase("en")}function D2(e){const a=[];for(const s of Y_.segment(e))if(s.isWordLike)for(const r of s.segment.match(J_)??[])a.push(r);return a}function n8(e){return D2(R2(e))}function Ca(e){return n8(e).join("")}const Gb=new WeakMap;function a8(e){if(!e)return null;const a=R2(e);return{normalized:a,stripped:a.replace(X_,"")}}function i8(e){const a=Gb.get(e);if(a)return a;const s=D2(e.normalized);return Gb.set(e,s),s}function s8(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 o8(e,a){if(!a||e.keys.size===0)return!1;const s=typeof a=="string"?a8(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=i8(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 r8=4,O2=j(["cli","api","config-file"]);function l8(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 c8(e,a){return a?e.some(s=>s.label===a):!0}const u8=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:r0.optional(),locations:y(Yt).optional(),defaultLocation:o().nullable().optional(),measurement:d0.optional(),autoExtractBacklinks:C().optional(),configSource:O2.optional()});u8.extend({name:o().trim().min(1).max(120)});const d8=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:r0.default({}),locations:y(Yt).default([]),defaultLocation:o().nullable().optional(),measurement:d0.default(S2),autoExtractBacklinks:C().default(!1),configSource:O2.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 Pu(e){return Ol(e)??e.trim().toLowerCase().replace(/^www\./,"")}function q2(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=Pu(f);s.has(g)||(s.add(g),r.push(f))}return r}function m8(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 p8(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 m8(e.displayName,e.aliases))r(f);for(const f of q2({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const g=T2(f);if(Ca(g).length>=r8)r(g);else{const b=Pu(f);b.includes(".")&&r(b)}}return a}const h8=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({})}),f8=m({preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:c0.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(),g8=m({channel:D("webhook"),url:o().url(),events:y(u0).min(1)}),y8=m({gsc:m({propertyUrl:o()}).optional(),syncSchedule:m({preset:o().optional(),cron:o().optional()}).optional()}).optional(),$b=y(o().min(1)),b8=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:$b.optional(),keywords:$b.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:r0.optional().default({}),locations:y(Yt).optional().default([]),defaultLocation:o().optional(),measurement:d0.optional().default(S2),schedule:f8,notifications:y(g8).optional().default([]),google:y8,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=l8(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),c8(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:h8,spec:b8});const v8=["branded","non-brand"],rr=j(v8),x8=j(["all","branded","non-brand"]);function k8(e){const a=e.filter(r=>Ca(r).length>0);if(a.length===0)return null;const s=s8(a);return s.keys.size===0?null:{matcher:s,classify(r){return o8(s,r)?"branded":"non-brand"}}}const w8=2,S8=o().regex(/^[a-f0-9]{64}$/),ed=o().trim().min(1).max(256),Kb=j(["sensitive","insensitive"]),me=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),j8=o().trim().min(1).refine(e=>Ol(e)!==null,"A competitor domain must be a valid hostname"),A8=qe("kind",[m({kind:D("exact"),url:o().min(1),pathCase:Kb}).strict(),m({kind:D("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:Kb}).strict(),m({kind:D("host"),host:o().min(1)}).strict()]),C8=m({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),N8=m({projectBrand:C8}).strict(),_8=m({stableKey:me,label:o().trim().min(1),aliases:y(o().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(A8),mentionNotApplicable:C(),discoveryIdentity:o().min(1).nullable()}).strict(),B2=m({stableKey:me,label:o().trim().min(1),domain:j8,aliases:y(o().min(1))}).strict(),z8=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(B2)}).strict(),E8=j(["manual","query-set","template","discovery","research"]),T8=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(),P2=m({source:E8,sourceId:o().min(1).nullable(),capturedAt:o().datetime(),template:T8.optional()}).strict(),R8=m({queryId:ed,queryText:o().min(1),provenance:P2}).strict(),td=m({providers:y(ht).min(1),models:Le(ht,o().min(1)),location:Yt.nullable()}).strict(),D8=m({stableKey:o().min(1),queryId:ed,queryText:o().min(1),context:td,expectedSnapshots:d().int().nonnegative()}).strict(),m0=rr,O8=m({targetKey:me,queryId:ed,queryClass:m0,classificationSource:j(["server","operator"]).optional(),executionNodeKey:o().min(1)}).strict(),p0=m({executionNodeKey:o().min(1),targetKey:me,queryId:ed}).strict(),M2=m({stableKey:me,label:o().trim().min(1),kind:D("market"),groupKey:me.optional(),usageEdges:y(p0)}).strict();function Hb(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const nd=m({schemaVersion:D(w8),identities:N8,targets:y(_8),groups:y(z8),querySnapshots:y(R8),assignments:y(O8),executionNodes:y(D8),usageEdges:y(p0),reportingScopes:y(M2).optional(),compiledChecksum:S8}).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(Hb)),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=Hb(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}"`})}),h0=100;function Jo(e){return m({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:d().int().nonnegative().optional()}).strict()}const ad=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:ad}).strict()]),f0=j(["all","group","property"]),Ea=x8,q8=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),g0=j(["not_measured","queued","running","complete","partial","failed"]),B8=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);m({scope:f0,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:q8.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();const P8=m({provider:ht,mentionCoverage:zt,citationCoverage:zt}).strict(),M8=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(),I8=m({targetKey:me,label:o().min(1),mentionCoverage:zt,citationCoverage:zt,providers:y(P8),flags:d().int().nonnegative()}).strict(),V8=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(),L8=m({groupKey:me,queryClass:D("non-brand"),denominator:d().int().positive(),entries:y(V8)}).strict();m({mode:j(["active-v1","active-v2"]),scope:m({kind:f0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:g0,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:B8,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(I8),outcomes:M8,flags:m({total:d().int().nonnegative()}).strict(),namedShareOfVoice:L8.optional()}).strict();const I2=j(["sources","answers"]),U8=I2.enum;U8.sources;m({targetKey:me,queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:I2.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();const V2=1,ql=d().int().positive(),Zt=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Bl=o().trim().min(1).max(256),Qb=j(["sensitive","insensitive"]);function Mu(e){const a=Ol(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function G8(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 Fb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function L2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return G8(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function kh(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 L2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function $8(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 Zb(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=Mu(s.hostname),u=kh($8(a));return`https://${r}${u}`}const Nl=o().trim().min(1).refine(e=>{try{return Mu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>Mu(e)),K8=o().trim().min(1).refine(e=>{try{return kh(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>kh(e)),H8=o().trim().min(1).refine(e=>{try{return Zb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Zb(e)),Q8=qe("kind",[m({kind:D("exact"),url:H8,pathCase:Qb}).strict(),m({kind:D("prefix"),host:Nl,pathPrefix:K8,pathCase:Qb}).strict(),m({kind:D("host"),host:Nl}).strict()]),U2=o().trim().min(1).max(256).refine(e=>Ca(e).length>0,"A target alias must contain mention text"),F8=Le(o().trim().min(1),o()),Z8=Nl,G2=m({stableKey:Zt,label:o().trim().min(1),urls:y(Q8).min(1),aliases:y(U2),metadata:F8.optional()}).strict(),y0=m({stableKey:Zt,label:o().trim().min(1),targetKeys:y(Zt).min(1),competitors:y(Z8).optional()}).strict(),$2=m({targetKey:Zt,queryIds:y(Bl).min(1),context:Yt.nullable().optional()}).strict();function Y8(e,a){return e<a?-1:e>a?1:0}function X8(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 Kp(e,a,s,r,u){for(const f of X8(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Yb(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:Mu(a.hostname),pathname:L2(a.pathname||"/")}}function J8(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&Fb(e)===Fb(s)}function W8(e,a){if(e.kind!==a.kind)return!1;const s=Yb(e),r=Yb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:J8(s.pathname,e.pathCase,r.pathname,a.pathCase)}function e7(e){const a=new Set;return[...e].sort(Y8).filter(s=>{const r=Ca(s);return a.has(r)?!1:(a.add(r),!0)})}const K2=m({schemaVersion:D(V2),targets:y(G2).min(1),groups:y(y0).optional(),targetQuerySelections:y($2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];Kp(a,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Kp(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 e7(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&&W8(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)=>{Kp(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}`})})});K2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));m({expectedActiveRevision:ql.nullable(),plan:K2}).strict();const t7=m({queryId:Bl,queryText:o().min(1)}).strict(),b0=m({stableKey:o().min(1),queryText:o().min(1),context:Yt.nullable(),expectedSnapshots:d().int().nonnegative()}).strict(),n7=m({kind:D("baseline"),executionNodeKey:o().min(1),queryId:Bl}).strict(),a7=m({kind:D("target"),executionNodeKey:o().min(1),queryId:Bl,targetKey:Zt}).strict(),wh=qe("kind",[n7,a7]),H2=m({code:D("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Zt).min(1),aliases:y(o().min(1)).min(1)}).strict(),Q2=G2.extend({mentionNotApplicable:C()}),F2=m({schemaVersion:D(V2),defaultContext:Yt.nullable(),effectiveOwnedHosts:y(Nl),projectCanonicalHost:Nl,projectBrandNames:y(U2),targets:y(Q2),groups:y(y0),targetQuerySelections:y($2),querySnapshots:y(t7),executionNodes:y(b0),usageEdges:y(wh),warnings:y(H2)}).strict(),i7=F2,Z2=qe("schemaVersion",[F2,nd]),v0=o().regex(/^[a-f0-9]{64}$/),x0=o().datetime(),Y2=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(),s7=m({groups:y(Zt).optional(),targets:y(Zt).optional()}).strict(),o7=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:ql,checksum:v0,createdAt:x0,plan:Z2}).nullable()});m({versions:y(m({revision:ql,checksum:v0,createdAt:x0,active:C()}))});m({version:m({revision:ql,checksum:v0,createdAt:x0,active:C(),plan:Z2})});const _u=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(),r7=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"]),X2=m({id:r7,severity:j(["fail","warn"]),message:o().min(1),path:y(Qe([o(),d().int()]))}).strict(),l7=m({baseline:d().int().nonnegative(),target:d().int().nonnegative()}).strict(),J2=m({ok:D(!0),checks:y(X2),executionNodes:y(b0),dedupSaved:d().int().nonnegative(),usageEdges:l7,estCostUsd:ce(),plan:i7,warnings:y(H2),counts:_u}).strict(),W2=m({ok:D(!1),checks:y(X2).min(1),executionNodes:y(b0).length(0),dedupSaved:D(0),usageEdges:m({baseline:D(0),target:D(0)}).strict(),estCostUsd:ce()}).strict();qe("ok",[J2,W2]);const hu=m({targetKey:Zt,context:Yt.nullable(),queryIds:y(Bl)}).strict();function Xb(e){return m({added:y(e),removed:y(e),changed:y(m({stableKey:Zt,before:e,after:e}).strict()),unchanged:y(Zt)}).strict()}const c7=J2.extend({diff:m({activeRevision:ql.nullable(),targets:Xb(Q2),groups:Xb(y0),querySelections:m({added:y(hu),removed:y(hu),changed:y(m({targetKey:Zt,before:hu,after:hu}).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(wh),removedUsageEdges:y(wh),counts:m({before:_u.nullable(),after:_u,delta:_u.nullable()}).strict()}).strict()}).strict()}).strict(),u7=W2.extend({diff:ce()}).strict();qe("ok",[c7,u7]);const d7=1,m7=o().refine(e=>e.trim().length>0,{message:"Must not be blank"}),ek=m({displayName:o(),aliases:y(o()),canonicalDomain:o(),ownedDomains:y(o())}).strict(),tk=m({provider:ht.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:o().nullable()}).strict(),nk=m({domain:o(),label:o(),aliases:y(o())}).strict(),ak=m({queryId:m7,queryText:o(),provenance:o().nullable()}).strict(),p7=ak.extend({queryClass:rr.nullable()}).strict();function ik(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:ek,country:o(),language:o(),location:Yt.nullable(),engines:y(tk).min(1),competitors:y(nk).optional(),queries:y(ak)}).strict().superRefine(ik);m({schemaVersion:D(d7),capturedAt:o().datetime(),identity:ek,country:o(),language:o(),location:Yt.nullable(),engines:y(tk).min(1),competitors:y(nk).optional(),queries:y(p7)}).strict().superRefine(ik);const h7=j(["auto","simple","advanced"]),f7=j(["simple","advanced"]),sk=j(["branded","non-brand","unknown","all"]),g7=j(["branded","non-brand","unknown"]),ok=j(["project","group","market","property"]),rk=qe("kind",[m({kind:D("all")}).strict(),m({kind:D("none")}).strict(),m({kind:D("exact"),value:o().trim().min(1)}).strict()]);function y7(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(),b7={mode:h7.default("auto"),queryClass:sk.default("non-brand"),scope:ok.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)},v7=m(b7).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"})});v7.transform(e=>({...e,location:y7(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"}))}),lk=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()]),Sh=m({id:bt,label:o().trim().min(1),kind:ok,targetCount:d().int().nonnegative(),parentGroupIds:y(bt).optional(),marketKeys:y(bt).optional()}).strict(),x7=m({provider:bt,model:bt}).strict(),k7=m({providers:y(bt),models:y(x7),locations:y(rk)}).strict(),w7=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(),S7=m({runId:bt,createdAt:Us,revision:d().int().positive().nullable(),provenance:lk,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(),j7=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(),A7=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(),C7=m({domain:bt,answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),N7=m({name:bt,answerCount:d().int().nonnegative()}).strict(),_7=qe("state",[m({state:D("available")}).strict(),m({state:D("unavailable"),reason:D("frozen-competitor-identity-missing")}).strict()]),Jb=m({id:bt,label:o().trim().min(1),queryCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict();function Wb(e){return m({items:y(e),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict()}const ck=m({queryClass:g7,summary:w7,trend:y(S7),queries:Wb(j7),evidence:Wb(A7),competitorAvailability:_7,competitors:y(C7),observedCompetitors:y(N7),breakdown:m({properties:y(Jb),groups:y(Jb)}).strict()}).strict(),z7=j(["measured","not-measured","partial"]),E7=m({state:z7,activeRevision:d().int().positive().nullable(),measuredRevision:d().int().positive().nullable(),awaitingSweep:C(),pendingAssignmentCount:d().int().nonnegative(),completedAt:Us.nullable()}).strict(),uk=m({mode:f7,queryClass:sk,scope:Sh,market:Sh.optional(),provider:o().nullable(),model:o().nullable(),location:rk,time:m({from:Us.nullable(),to:Us.nullable()}).strict(),revision:d().int().positive().nullable(),run:m({id:o().nullable(),explicit:C()}).strict(),provenance:lk,measurement:E7,availability:qe("state",[m({state:D("available")}).strict(),m({state:D("unsupported"),reason:D("advanced-v1")}).strict()])}).strict();m({selection:uk,scopeOptions:y(Sh),filterOptions:k7,populations:y(ck).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 T7(e,a){let s=e;for(const[r,u]of Object.entries(a))s=s.split(`{${r}}`).join(u);return s.trim()}const k0=o().regex(/^[a-f0-9]{64}$/),Fn=o().trim().min(1).max(256),Na=o().trim().min(1).max(4e3),w0=o().datetime(),id=o().regex(/^qtw_[a-f0-9]{64}$/),dk=o().regex(/^qtp_[a-f0-9]{64}$/),S0=j(["simple","advanced"]),mk=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(),R7=m({source:j(["manual","query-set","template","research","discovery"]),sourceId:Fn.nullable(),capturedAt:o().datetime(),template:mk.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."})}),D7=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()]),j0=m({targetKeys:y(me).optional(),groupKeys:y(me).optional(),marketKeys:y(me).optional()}).strict(),O7=m({providers:y(ht).min(1),models:Le(ht,o().trim().min(1)),location:o().trim().min(1).nullable()}).strict(),q7=m({input:D7,audience:j0.optional(),contexts:y(O7).min(1).optional(),queryClass:rr.optional()}).strict(),B7=m({queryId:Fn.optional(),queryText:Na.optional(),audience:j0.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."})}),P7=m({queryId:Fn,audience:j0.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."})}),M7=m({additions:y(q7),removals:y(B7),edits:y(P7).optional()}).strict(),I7=M7.extend({expectedWorkspaceVersion:id}).strict();I7.extend({previewToken:dk,reviewedAt:w0}).strict();const V7=m({stableKey:me,label:o().trim().min(1)}).strict(),L7=m({stableKey:me,parentGroupKey:me.optional(),label:o().trim().min(1),targetKeys:y(me)}).strict(),U7=m({stableKey:me,groupKey:me.optional(),label:o().trim().min(1),usageEdges:y(p0)}).strict(),G7=m({targetKey:me,groupKeys:y(me),marketKeys:y(me),queryClass:rr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(td).min(1)}).strict(),pk=m({queryId:Fn,queryText:Na,normalizedText:Na,provenance:R7.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:o().datetime().nullable(),assignments:y(G7)}).strict(),$7=m({researchRunId:Fn,researchRunQueryId:Fn,queryText:Na,createdAt:o().datetime()}).strict(),K7=m({discoverySessionId:Fn,discoveryProbeId:Fn,queryText:Na,createdAt:o().datetime()}).strict();m({mode:S0,workspaceVersion:id,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),defaultContexts:y(td),targets:y(V7),groups:y(L7),markets:y(U7),tracked:y(pk),savedSources:m({research:y($7),discovery:y(K7)}).strict()}).strict();const fu=m({queryId:Fn,queryText:Na,assignmentCount:d().int().nonnegative()}).strict(),hk=m({added:y(fu),removed:y(fu),reused:y(fu),unchanged:y(fu),noOp:C()}).strict(),fk=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:S0,workspaceVersion:id,previewToken:dk,reviewedAt:w0,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),tracked:y(pk),diff:hk,workload:fk}).strict();m({committed:C(),mode:S0,workspaceVersion:id,reviewedAt:w0,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),diff:hk,workload:fk}).strict();const sd=j(["complete","partial","failed","unsupported"]);sd.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 H7=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Q7=m({kind:j(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),ev=m({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),A0=m({primary:ev,aliases:y(ev).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Q7).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:A0,maxUrls:d().int().positive().max(1e4).optional()}).strict();const Hp=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"})}),F7=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(),Z7=m({classification:D("alias"),reason:D("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Zt}).strict(),Y7=m({kind:H7,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();m({proposed:y(F7),aliases:y(Z7),shared:y(Hp),unmatched:y(Hp),excluded:y(Hp),diagnostics:y(Y7)}).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 C0=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),gk=j(["baseline","target"]),yk=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:yk}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),X7=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),J7=m({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:X7,context:Yt.nullable(),requestedModel:o().trim().min(1).optional()}).strict();m({schemaVersion:D(1),expectedSlots:y(J7)}).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 od=m({executed:d().int().nonnegative(),expected:d().int().nonnegative(),complete:C(),sourceComplete:C(),sourceCompleteObservations:d().int().nonnegative(),answerComplete:C()}).strict(),tv=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:yk}).strict()]),W7=m({domains:y(tv),providers:y(m({provider:ht,domains:y(tv)}).strict())}).strict(),ez=m({provider:ht,completeness:od,answerCoverage:Gs}).strict(),tz=m({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:od,answerCoverage:Gs,targetCoverage:Gs,sov:W7,providers:y(ez)}).strict(),nz=m({provider:ht,completeness:od,citationCoverage:Gs,mentionCoverage:Gs}).strict(),az=m({id:o().trim().min(1),label:o().trim().min(1),completeness:od,citationCoverage:Gs,mentionCoverage:Gs,providers:y(nz)}).strict(),bk=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:gk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:C(),historical:C(),evidenceComplete:C(),classification:C0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),iz=m({sourceUrl:o(),normalizedUrl:o().nullable(),classification:C0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),sz=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:gk,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(iz),sourceCount:d().int().nonnegative(),sourcesTruncated:C(),bridged:C(),historical:C(),evidenceComplete:C()}).strict(),oz=m({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),rz=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:rz.nullable(),groups:y(tz),targets:y(az),evidence:y(bk),diagnostics:oz}).strict();m({property:m({targetKey:me,label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:g0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:Jo(bk).optional(),answers:Jo(sz).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 N0=j(["used","not-used","unknown","not-applicable"]);N0.enum;const _0=j(["native-auto-v1","search-required-v1"]);_0.enum;const _a=o().trim().min(1),Pl=o().trim().min(1),lz=o().trim().min(1),ot=d().int().nonnegative(),Ml=m({state:g0,displayedRunId:_a.nullable(),planRevision:d().int().positive(),completedAt:o().datetime().nullable()}).strict(),Ji=m({targetKey:me,label:Pl}).strict(),Zn={runId:_a.optional(),provider:ht.optional(),location:lz.optional()},_l=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 cz=Ji.extend({mentionCoverage:zt,citationCoverage:zt,flags:ot,recommendedInstead:y(m({name:_l,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"})}),uz=m({groupKey:me,label:Pl,propertyCount:ot,propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),dz=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:ad}).strict()),truncated:C()}).strict();m({portfolio:m({groupKey:me.nullable(),label:Pl.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),measurement:Ml,queryClass:Ea,metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),weakestProperties:y(cz),mentionRanking:dz,markets:y(uz),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 jh={queryId:_a,text:Pl,class:m0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},mz=qe("status",[m({resultId:_a,...jh,status:D("answered"),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(_l),answerExcerpt:o().nullable()}).strict(),m({resultId:ce(),...jh,status:D("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(_l).length(0),answerExcerpt:ce()}).strict()]);m({property:Ji,measurement:Ml,queryClass:Ea,questions:y(mz),total:ot,truncated:C()}).strict();m({targetKey:me,resultId:_a}).strict();const pz=m({url:_a,classification:C0,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:Ml,question:m({resultId:_a,...jh,status:D("answered")}).strict(),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(_l),answer:o().nullable(),sources:y(pz),captureStatus:Qe([sd,ce()]),retrievalStatus:Qe([N0,ce()]),retrievalContract:Qe([_0,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 hz=qe("state",[m({state:D("available"),answeredResults:ot,targetMissResults:ot,recommendationOccurrences:ot}).strict(),m({state:D("unavailable"),reason:ad}).strict()]),fz=m({name:_l,occurrences:ot,providers:y(ht).max(5),providerTotal:ot,providersTruncated:C(),questions:y(Pl).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:Ml,queryClass:Ea,basis:hz,competitors:y(fz),total:ot,truncated:C()}).strict();m({runId:Zn.runId,scope:f0.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 vk=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),xk=Ml.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:ad}).strict()]);m({current:xk,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:vk}).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 gz=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),rd=m({state:D("unavailable"),reason:gz}).strict(),yz=m({state:D("available"),expected:ot,executed:ot,answered:ot,missing:ot}).strict(),bz=qe("state",[yz,rd]).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"}))}),vz=m({state:D("available"),complete:ot,partial:ot,failed:ot,unsupported:ot,notRecorded:ot}).strict(),xz=qe("state",[vz,rd]),kz=m({state:D("available"),used:ot,notUsed:ot,unknown:ot,notApplicable:ot,notRecorded:ot}).strict(),wz=qe("state",[kz,rd]),Sz=m({state:D("available"),expectedQuestions:ot,answeredQuestions:ot,missingQuestions:ot}).strict(),jz=qe("state",[Sz,rd]).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:xk,completeness:bz,capture:xz,retrieval:wz,population:jz,comparison:qe("state",[m({state:D("available"),previousDisplayedRunId:_a}).strict(),m({state:D("unavailable"),reason:vk}).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(),nv=m({kind:j(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),Az=j(["proposed","included","excluded"]),Cz=j(["manual","sitemap"]),z0=m({stableKey:me,label:o().trim().min(1),status:Az,aliases:y(o().trim().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(o().trim().min(1)),source:Cz,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),ld=m({providers:y(ht).optional(),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),Nz=j(["branded","non-brand","unclassified"]),_z=j(["rule","operator"]),kk=m({targetKey:me,queryId:za,contextOverride:ld.optional(),executionContexts:y(td.extend({executionNodeKey:o().min(1).optional()})).min(1).optional(),queryProvenance:P2.optional(),queryClass:Nz,classificationSource:_z}).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."})}),cd=B2,wk=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(cd)}).strict(),zz=m({sitemapUrl:o().url(),rule:A0,exclusions:y(o().trim().min(1)),inputChecksum:Wo,reviewedAt:o().datetime().optional()}).strict(),Ez=m({providers:y(ht),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),Sk=M2,Tz=m({defaultContext:Ez,targets:y(z0),assignments:y(kk),groups:y(wk),reportingScopes:y(Sk).optional(),discovery:zz.optional()}).strict(),Rz=m({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:D(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:Ga.nullable(),authoring:Tz,createdBy:nv,updatedBy:nv,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),E0=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(),Dz=m({code:o().trim().min(1),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict(),jk=m({etag:o().trim().min(1),changed:C(),warnings:y(Dz),counts:E0}).strict();m({draft:Rz.nullable(),etag:o().trim().min(1).nullable()}).strict();Jo(z0);Jo(kk);Jo(wk);m({search:o().optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();m({expectedActiveRevision:Ga.nullable()}).strict();m({sitemapUrl:o().url(),rule:A0,exclusions:y(o().trim().min(1)).optional()}).strict();const Oz=m({discoveryIdentity:o().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:me.optional(),label:o().trim().min(1).optional()}).strict();m({selections:y(Oz),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:z0}).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 Ak={targetKeys:y(me).optional(),groupKeys:y(me).optional()};function Ck(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(Ak).strict().superRefine(Ck);const qz=m({...Ak,queryIds:y(za).min(1),contextOverride:ld.optional()}).strict().superRefine(Ck);Qe([m({targetKey:me,queryIds:y(za).min(1),contextOverride:ld.optional()}).strict(),qz]);const Bz=m({groupKey:me,label:o().trim().min(1),memberCount:d().int().positive()}).strict();m({draftEtag:o().trim().min(1),groups:y(Bz),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:ld.optional()}).strict();Qe([m({targetKey:me,queryId:za}).strict(),m({targetKeys:y(me).min(1),queryId:za}).strict()]);m({targetKey:me}).strict();m({queryClass:m0,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(cd).optional()}).strict()}).strict();m({market:Sk}).strict();m({groupKey:me}).strict();m({groupKey:me,competitor:cd}).strict();m({expectedActiveRevision:Ga,groupKey:me,domain:o().trim().min(1).refine(e=>Ol(e)!==null,"A competitor domain must be a valid hostname"),label:o().trim().min(1).optional(),aliases:y(o().trim().min(1)).optional()}).strict();jk.extend({groupKey:me,competitor:cd,draftCreated:C(),published:m({revision:Ga,competitorsChanged:D(!1)}).strict()}).strict();m({groupKey:me,competitorKey:me}).strict();const Iu=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(Iu),counts:E0,plan:nd}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Iu).min(1)}).strict()]);const av=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(),Pz=m({activeRevision:Ga.nullable(),targets:av,groups:av,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(Iu),counts:E0,plan:nd,diff:Pz}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Iu).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:nd}).strict()}).strict();m({discarded:C()}).strict();m({expectedActiveRevision:Ga}).strict();m({deactivated:C(),previousRevision:Ga.nullable()}).strict();const Mz=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),Iz=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),Vz=j(["simple","draft-only","active-v1","active-v2"]);m({state:Mz,nextAction:Iz,mode:Vz,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 Nk=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(),Lz=m({queryId:za,queryText:o().min(1),position:d().int().nonnegative()}).strict();Nk.extend({items:y(Lz)}).strict();m({querySets:y(Nk)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(za)}).strict();const Uz=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(Uz)}).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 Vu=o().regex(/^[a-f0-9]{64}$/),ud=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 Gz=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"]),Ah=m({dataRow:ud,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),pl=Ah.extend({reason:Gz}),$z=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(),Kz=m({proposedGroupKey:me,evidence:y($z).min(1)}).strict(),Hz=qe("status",[Ah.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:Kz.optional()}).strict(),Ah.extend({status:D("duplicate"),duplicateOfRow:ud,targetKey:me,groupKey:me}).strict(),pl.extend({status:D("proposed"),targetKey:me}).strict(),pl.extend({status:D("excluded"),targetKey:me}).strict()]),Qz=m({normalizedGroupLabel:o(),groupKey:me,label:o().trim().min(1),action:j(["create","extend"]),matchedRows:y(ud),targetKeys:y(me),addedTargetKeys:y(me),unchangedTargetKeys:y(me)}).strict(),Fz=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:Vu,previewChecksum:Vu,rows:y(Hz),groupChanges:y(Qz),counts:Fz}).strict();m({csv:o(),sourceChecksum:Vu,previewChecksum:Vu,acceptedRows:y(ud).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."})});jk.extend({appliedRows:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();const _k=j(["introduced","repointed","retired"]),Zz=_k.enum;m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:_k,confirmed:C(),sourceUrl:o().url(),note:o().min(1)});const Yz=[{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.'}];Zz.repointed;new Set(Yz.map(e=>e.modelId.toLowerCase()));const Xz=j(["not-exposed","no-known-change","known-change"]);Xz.enum;const Jz=m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:C(),sourceUrl:o().url()}),Wz=m({status:j(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(Jz),changeCount:d().int().nonnegative(),unverifiedChangeCount:d().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:C()}),eE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function tE(e){const a=e.trim().toLowerCase();return eE[a]??e.charAt(0).toUpperCase()+e.slice(1)}function Qp(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 Fp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function nE(e,a){const s=tE(e),r=Array.isArray(a.changes)?a.changes:[],u=Qp(a.changeCount)||r.length,f=Math.min(u,Qp(a.unverifiedChangeCount)||Qp(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:Fp(r.filter(S=>S.confirmed!==!1).map(S=>hl(S.date))),unconfirmedDates:Fp(r.filter(S=>S.confirmed===!1).map(S=>hl(S.date)))};const k=Fp([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 aE(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 iv(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 iE(e){const a=iv(e.confirmedDates,e.confirmedCount),s=iv(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 sv(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 jH(e){const a=Object.entries(e??{}).map(([v,k])=>nE(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=sv(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 ${aE(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=sv(a);return{kind:"change",text:`${s.map(iE).join(" ")} ${g}${b?` ${b}`:""}`}}const Ls=m({slope:d(),intercept:d(),r2:d(),start:d(),end:d(),n:d(),startIndex:d(),endIndex:d()}),sE=j(["gsc","ga4","gbp"]);m({id:o(),domain:o(),connectionType:sE,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const oE=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(oE),totalMatching:d(),truncated:C(),latestAvailableDate:o().nullable()});const rE=m({date:o(),clicks:d(),impressions:d(),ctr:d(),position:d().nullable()}),lE=m({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:d().nullable()}),cE=m({clicks:Ls.nullable(),impressions:Ls.nullable(),ctr:Ls.nullable(),position:Ls.nullable()}),ov=m({startDate:o(),endDate:o(),clicks:d(),impressions:d(),ctr:d().nullable(),position:d().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),uE=m({days:d(),basis:j(["prior-window","split-window"]).optional(),prior:ov,trailing:ov,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(rE),window:lE.optional(),trends:cE.optional(),periodComparison:uE.nullable().optional()});const dE=m({page:o(),clicks:d(),impressions:d(),ctr:d()});m({rows:y(dE),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 Ch=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 mE=m({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),pE=m({reason:o(),count:d(),urls:y(Ch).default([])});m({summary:m({total:d(),indexed:d(),notIndexed:d(),deindexed:d(),percentage:d()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Ch).default([]),notIndexed:y(Ch).default([]),deindexed:y(mE).default([]),reasonGroups:y(pE).default([])});m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const hE=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(hE).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 fE=m({siteUrl:o(),permissionLevel:o()});m({sites:y(fE).default([])});const gE=m({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),zk=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(gE).optional()});m({sitemaps:y(zk).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 yE=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(yE)});m({sitemaps:y(zk),primarySitemapUrl:o(),run:m({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const at=o().trim().min(1),rv=o().regex(/^[a-f0-9]{64}$/i);function bE(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(bE,{message:"Expected a calendar date as YYYY-MM-DD."});function vE(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 xE=j(["not-connected","selection-required","connected","stale"]),gu=xE.enum,Ek=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);Ek.enum;const T0=j(["enabled","paused","removed","unknown"]);T0.enum;const Tk=j(["enabled","hidden","removed","unknown"]);Tk.enum;const R0=j(["customer","campaign"]);R0.enum;const Rk=j(["customer-goal","campaign-goal","custom-goal"]);Rk.enum;const Dk=m({loginCustomerId:at.nullable(),customerId:at.nullable(),selectedAt:o().nullable()}).strict(),Zp=m({id:at,projectId:at,scopes:y(o()).default([]),selection:Dk,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Nh=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:Ek}).strict(),kE=m({customers:y(Nh),totalAccessible:d().int().nonnegative(),truncated:C(),selection:Dk,fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(gu["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(gu["selection-required"]),connection:Zp,selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(gu.connected),connection:Zp,selectedCustomer:Nh}).strict(),m({connected:D(!0),status:D(gu.stale),connection:Zp,selectedCustomer:Nh}).strict()]);const wE=m({id:at,resourceName:at,name:o(),status:T0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),SE=m({id:at,resourceName:at,name:o(),status:Tk,category:o(),origin:o(),primaryForGoal:C(),includeInConversionsMetric:C()}).strict(),jE=m({category:o(),origin:o(),biddable:C()}).strict(),AE=m({campaignId:at,category:o(),origin:o(),biddable:C()}).strict(),CE=m({id:at,name:o(),conversionActionIds:y(at)}).strict(),NE=m({campaignId:at,goalConfigLevel:R0,customGoalId:at.nullable()}).strict(),_E=m({customerId:at,fetchedAt:o(),campaigns:y(wE),conversionActions:y(SE),customerConversionGoals:y(jE),campaignConversionGoals:y(AE),campaignConversionGoalsComplete:C().optional(),customConversionGoals:y(CE),campaignGoalConfigurations:y(NE)}).strict(),zE=m({source:Rk,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(),EE=m({campaignId:at,goalConfigLevel:R0,customGoalId:at.nullable(),missingCustomGoalId:at.nullable(),goals:y(zE)}).strict();m({customerId:at,derivedAt:o(),campaigns:y(EE)}).strict();const Ok=50,_h=31,TE=Ok*_h,RE=m({campaignIds:y(at).min(1).max(Ok),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}vE(e.startDate,e.endDate)>_h&&a.addIssue({code:Se.custom,path:["endDate"],message:`Campaign metrics may cover at most ${_h} calendar days.`})}),DE=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(),OE=m({query:RE,rows:y(DE).max(TE),truncated:C(),fetchedAt:o()}).strict(),qk=j(["accessible-customers","inventory","campaign-metrics"]),Yp=qk.enum,D0=m({id:at,projectId:at,connectionId:at,runId:at,kind:qk,customerId:at.nullable(),payloadChecksum:rv,rawPayloadSha256:rv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),qE=qe("kind",[m({kind:D(Yp["accessible-customers"]),data:kE}).strict(),m({kind:D(Yp.inventory),data:_E}).strict(),m({kind:D(Yp["campaign-metrics"]),data:OE}).strict()]),BE=m({metadata:D0,payload:qE}).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."})}),PE=j(["7d","14d","30d"]),O0=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()}),ME=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()}),IE=m({campaignId:at,name:o().nullable(),status:T0,totals:O0}),VE=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()}),LE=m({startDate:Ua,endDate:Ua,days:d().int().positive(),totals:O0}),UE=m({days:d().int().positive(),prior:LE,change:m({impressions:d().nullable(),clicks:d().nullable(),costMicros:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),conversionRate:d().nullable()})});m({window:PE,startDate:Ua,endDate:Ua,days:d().int().positive(),totals:O0,daily:y(ME),campaigns:y(IE),comparison:UE.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:VE.nullable()});const nt=o().trim().min(1),lv=o().regex(/^[a-f0-9]{64}$/i),GE=j(["not-connected","selection-required","connected","stale"]),yu=GE.enum,$E=j(["live","draft"]),Bk=$E.enum,zu=m({accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),selectedAt:o().nullable()}).strict(),Xp=m({id:nt,projectId:nt,scopes:y(o()).default([]),selection:zu,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Pk=m({id:nt,path:o(),name:o(),shareData:C().nullable()}).strict(),Mk=m({accountId:nt,id:nt,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),q0=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),KE=m({accounts:y(Pk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containers:y(Mk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containerId:nt,workspaces:y(q0),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();const HE=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(),QE=m({id:nt,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),FE=m({id:nt,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),Ik=j(["recognized","unknown"]),cv=Ik.enum,ZE=j(["literal","variable-ref","absent","unknown"]),dd=ZE.enum,YE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),lr=m({source:D(dd.absent),literal:ce(),variableRef:ce()}).strict(),cr=m({source:D(dd.unknown),literal:ce(),variableRef:ce()}).strict(),ur=m({source:D(dd["variable-ref"]),literal:ce(),variableRef:YE}).strict();function Il(e){return m({source:D(dd.literal),literal:e,variableRef:ce()}).strict()}const XE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),JE=o().trim().min(1).max(128).regex(/^[\w-]+$/),WE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),eT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[Il(o().trim().min(1).max(256)),ur,lr,cr]);const tT=qe("source",[Il(XE),ur,lr,cr]),nT=qe("source",[Il(JE),ur,lr,cr]),aT=qe("source",[Il(WE),ur,lr,cr]),iT=qe("source",[ur,lr,cr]),sT=qe("source",[Il(eT),ur,lr,cr]),Vk=j(["all-pages","custom-event","filtered","unknown"]);Vk.enum;const uv=m({operator:o().trim().min(1).max(64),value:o().max(2048),negated:C(),ignoreCase:C()}).strict(),oT=m({triggerId:nt,triggerType:o(),eventPredicates:y(uv),hostnamePredicates:y(uv),unsupportedConditionCount:d().int().nonnegative()}).strict(),Lk=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"]);Lk.enum;const rT=m({tagId:nt,tagType:o(),recognition:Ik,recognitionReason:o().nullable(),conversionId:tT,conversionLabel:nT,value:aT,transactionId:iT,currency:sT,triggerStrategy:Vk,triggerIds:y(nt),triggerPredicates:y(oT),reviewReasons:y(Lk)}).strict().superRefine((e,a)=>{e.recognition===cv.recognized&&e.recognitionReason!==null&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===cv.unknown&&!e.recognitionReason&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Uk=m({accountId:nt,containerId:nt,workspaceId:nt.nullable(),tags:y(HE),triggers:y(QE),variables:y(FE),googleAdsTagAssessments:y(rT).default([])}).strict(),lT=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:C()}).strict(),Gk=m({source:D(Bk.live),version:lT,graph:Uk,fetchedAt:o()}).strict(),$k=m({source:D(Bk.draft),workspace:q0,graph:Uk,conflictCount:d().int().nonnegative(),fetchedAt:o()}).strict(),cT=m({account:Pk,container:Mk,workspaces:y(q0),live:Gk.nullable(),draft:$k.nullable(),fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(yu["not-connected"]),connection:ce(),selection:ce()}).strict(),m({connected:D(!0),status:D(yu["selection-required"]),connection:Xp,selection:zu}).strict(),m({connected:D(!0),status:D(yu.connected),connection:Xp,selection:zu}).strict(),m({connected:D(!0),status:D(yu.stale),connection:Xp,selection:zu}).strict()]);const Kk=j(["accounts","container","live","draft"]),bu=Kk.enum,B0=m({id:nt,projectId:nt,connectionId:nt,runId:nt,kind:Kk,accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),payloadChecksum:lv,rawPayloadSha256:lv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),uT=qe("kind",[m({kind:D(bu.accounts),data:KE}).strict(),m({kind:D(bu.container),data:cT}).strict(),m({kind:D(bu.live),data:Gk}).strict(),m({kind:D(bu.draft),data:$k}).strict()]),dT=m({metadata:B0,payload:uT}).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),mT=o().trim().min(1).refine(e=>Ol(e)!==null,"Expected a hostname or http(s) URL."),P0=j(["configured","statically-consistent","runtime-unverified","observed"]);P0.enum;const Hk=j(["pass","fail","unknown"]);Hk.enum;const Qk=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"]);Qk.enum;const Fk=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(mT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();Fk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const Zk=j(["not-run","consistent","inconsistent"]);Zk.enum;const Yk=j(["not-run","not-observed","observed"]);Yk.enum;m({staticCheck:Zk,runtimeVerificationRequired:C(),runtimeObservation:Yk}).strict();const pT=m({code:Qk,subject:o().trim().min(1),outcome:Hk,status:P0,evidenceIds:y(On).default([])}).strict(),hT=m({contract:Fk,status:P0,findings:y(pT),evaluatedAt:o()}).strict(),dv=m({id:On,name:o(),detail:o(),active:C()});m({googleAds:m({customerId:On.nullable(),syncedAt:o().nullable(),conversionActions:y(dv)}),gtm:m({containerId:On.nullable(),syncedAt:o().nullable(),tags:y(dv)})});const wl=o().trim().min(1);function mv(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const fT=/^[\w-]+$/;function M0(e){const a=e.trim();return fT.test(a)?a:null}function gT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??M0(a)}function yT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:M0(s)}function bT(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:M0(r)}function vT(e){const a=mv(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=mv(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function xT(e){const a=gT(e.accountId);if(!a)return null;const s=yT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=bT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const md=j(["google-ads","gtm"]);md.enum;m({provider:md,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();m({provider:md,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();m({loginCustomerId:wl.nullable().optional(),customerId:wl}).strict().superRefine((e,a)=>{vT(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)=>{xT(e)||a.addIssue({code:Se.custom,message:"GTM resource paths must match the selected account and container."})});m({provider:md,disconnected:C()}).strict();const Xk=100;m({snapshots:y(D0).max(Xk),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:BE}).strict();m({snapshots:y(B0).max(Xk),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:dT}).strict();m({assessment:hT,googleAdsSnapshot:D0.nullable(),gtmSnapshot:B0.nullable()}).strict();const kT=m({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});m({accounts:y(kT),total:d().int().nonnegative()});const wT=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(wT),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 ST=m({locationName:o(),date:o(),metric:o(),value:d().int()});m({metrics:y(ST),total:d().int().nonnegative()});const jT=m({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:d().int().nullable(),valueThreshold:d().int().nullable()});m({keywords:y(jT),total:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)});const AT=m({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:C(),providerType:o().nullable()});m({placeActions:y(AT),total:d().int().nonnegative()});const CT=m({locationName:o(),populatedGroupCount:d().int().nonnegative(),syncedAt:o(),attributes:Le(o(),qn())});m({lodging:y(CT),total:d().int().nonnegative()});const NT=m({name:o(),valueType:o(),values:y(Qe([C(),o()])),unsetValues:y(o()),uris:y(o())}),_T=m({locationName:o(),attributeCount:d().int().nonnegative(),syncedAt:o(),attributes:y(NT)});m({attributes:y(_T),total:d().int().nonnegative()});const zT=m({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Le(o(),qn())});m({places:y(zT),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 ET={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 TT(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 AH(e){return ET[e]??TT(e)}const RT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],DT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function CH(e){return RT.includes(e)?"conversion":DT.includes(e)?"reach":"other"}m({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const Jp=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(Jp).default([]),notIndexed:y(Jp).default([]),unknown:y(Jp).default([]).optional()});m({query:o(),impressions:d(),clicks:d(),ctr:d(),averagePosition:d()});m({date:o(),indexed:d(),notIndexed:d(),unknown:d()});const OT=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(OT).default([])});const Jk=m({url:o(),verified:C()});m({sites:y(Jk).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(Jk).default([])});m({siteUrl:o()});const qT=m({name:o(),alive:C(),lastUsed:o().nullable()});m({connected:C(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(qT).default([])});const dr=j(["live","staging"]);m({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:dr,createdAt:o(),updatedAt:o()});const pv=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:pv.nullable(),staging:pv.nullable(),adminUrl:o().nullable().optional()});const BT=m({id:d(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),Wk=m({title:o().nullable(),description:o().nullable(),noindex:C().nullable(),writable:C().default(!1),writeTargets:y(o()).default([])}),PT=m({type:o(),json:Le(o(),qn())}),MT=BT.extend({env:dr,content:o(),seo:Wk,schemaBlocks:y(PT).default([])}),hv=MT.extend({contentHash:o(),contentSnippet:o()}),ew=m({manualRequired:D(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),IT=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:Wk,schemaPresent:C(),issues:y(IT).default([])});const VT=m({slug:o(),status:j(["applied","skipped","manual"]),error:o().optional(),manualAssist:ew.optional()});m({env:dr,strategy:j(["plugin","manual"]),results:y(VT)});const LT=m({slug:o(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ew.optional(),error:o().optional()});m({env:dr,results:y(LT)});const UT=m({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:C()});m({env:dr,pages:y(UT)});const GT=m({name:o(),status:j(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});m({projectName:o(),steps:y(GT)});m({slug:o(),live:hv,staging:hv,hasDifferences:C(),differences:m({title:C(),slug:C(),content:C(),seoTitle:C(),seoDescription:C(),noindex:C(),schema:C()})});const $T=m({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:C(),quota:s_.optional(),vertexConfigured:C().optional()}),KT=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()}),fv=m({configured:C()});m({providers:y($T).default([]),providerCatalog:y(KT).default([]),google:fv,bing:fv});const pa=j(["queued","running","completed","partial","failed","cancelled"]),xn=pa.enum,I0=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=I0.enum;m({kind:I0.optional(),status:pa.optional()});const V0=j(["manual","scheduled","config-apply","backfill","probe"]),Qo=V0.enum,fi=j(["cited","not-cited"]),Lu=fi.enum,Uu=j(["visible","not-visible"]);Uu.enum;const zl=j(["mentioned","not-mentioned"]);zl.enum;const tw=j(["new","cited","lost","emerging","not-cited"]);tw.enum;const HT=j(["new","mentioned","lost","emerging","not-mentioned"]);HT.enum;const QT=j([Qo.manual,Qo.probe]);m({kind:D(ze["answer-visibility"]).optional(),trigger:QT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:s7.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 FT=m({message:o(),raw:qn().optional()}),ZT=m({message:o().optional(),providers:Le(o(),FT).optional()}),YT=m({id:o(),projectId:o(),kind:I0,status:pa,trigger:V0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Le(o(),qn()).nullable().optional(),measurementScope:o7.nullable().optional(),measurementExecutionIdentity:Y2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:ZT.nullable().optional(),queryBasketRevision:d().int().nullable().optional(),createdAt:o()});function L0(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 pd=m({uri:o(),title:o()}),XT=m({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:Yt.nullable().optional()}),nw=m({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:fi,answerMentioned:C().optional(),visibilityState:Uu.optional(),mentionState:zl.optional(),transition:tw.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Qe([sd,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([N0,ce()]).default(null),retrievalContract:Qe([_0,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(pd).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:Yt.nullable().optional(),supportedContext:XT.nullable().optional(),createdAt:o()});m({snapshots:y(nw),total:d().int().nonnegative()});const JT=m({queryId:o().nullable(),query:o().nullable(),run1State:fi.nullable(),run2State:fi.nullable(),run1AnswerMentioned:C().nullable(),run2AnswerMentioned:C().nullable(),run1VisibilityState:Uu.nullable(),run2VisibilityState:Uu.nullable(),run1MentionState:zl.nullable().optional(),run2MentionState:zl.nullable().optional(),changed:C(),visibilityChanged:C()});m({run1:o(),run2:o(),diff:y(JT)});const WT=YT.extend({snapshots:y(nw).optional()}),e9=m({totalRuns:d().int().nonnegative(),run:WT.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 aw=j(["all","api","browser"]);aw.enum;const t9=j(["yes","no","unknown","not-mentioned"]),gv=y(o().min(1)),yv=m({companyName:o().min(1),domain:o().min(1),queries:gv.optional(),phrases:gv.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:aw.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"]})});yv.safeExtend({competitors:yv.shape.competitors.default([])});const n9=m({name:o(),count:d().int().nonnegative()}),a9=m({id:o(),name:o(),weight:d(),score:d(),findings:y(m({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),i9=m({url:o(),finalUrl:o(),auditedAt:o(),overallScore:d(),summary:o(),factors:y(a9).default([])}),s9=m({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),o9=m({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:C(),cited:C(),describedAccurately:t9,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(pd).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),r9=m({query:o(),providerResults:y(o9).default([])}),l9=m({totalQueries:d().int().nonnegative(),totalProviders:d().int().nonnegative(),totalComparisons:d().int().nonnegative(),mentionCount:d().int().nonnegative(),citationCount:d().int().nonnegative(),topCompetitors:y(n9).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:s9,audit:i9,queryResults:y(r9).default([]),summary:l9});const iw=Qe([pa,ce()]),U0=j(["pass","partial","fail"]);U0.enum;const sw=j(["up","down","flat"]);sw.enum;const c9=m({id:o(),name:o(),weight:d(),avgScore:d(),status:U0,pagesPassing:d().int().nonnegative(),pagesPartial:d().int().nonnegative(),pagesFailing:d().int().nonnegative()}),u9=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:iw,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([sw,ce()]),previousScore:d().nullable(),previousAuditedAt:o().nullable(),factors:y(c9).default([]),crossCuttingIssues:y(u9).default([]),prioritizedFixes:y(o()).default([])});const ow=m({id:o(),name:o(),weight:d(),score:d()}),d9=m({url:o(),overallScore:d(),status:j(["success","error"]),error:o().nullable().optional(),factors:y(ow).default([])});m({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:d().int().nonnegative(),pages:y(d9).default([])});const m9=m({runId:o(),auditedAt:o(),aggregateScore:d(),pagesAudited:d().int().nonnegative()});m({project:o(),points:y(m9).default([])});const p9=j(["disabled","complete","partial","unavailable"]);p9.enum;const h9=m({pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),edges:d().int().nonnegative(),findings:d().int().nonnegative()}),f9=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:iw,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:h9,deadLinks:f9});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 hd=j(["eligible","hidden","resource","redirect","failed","unchecked"]),NH=hd.enum,_H=hd.options,Vo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},vu={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},g9={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function y9(e){return e.indexabilityReasons?.some(a=>a===g9.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function zH(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(y9(e))return"hidden";switch(e.indexabilityState){case vu.indexable:return"eligible";case vu.noindex:case vu.blocked:return"hidden";case vu.unknown:default:return"unchecked"}}const EH=15,b9=j(["navigation","content","unknown"]);b9.enum;const v9=m({navigation:d().int().nonnegative(),content:d().int().nonnegative(),unknown:d().int().nonnegative()}),rw=j(["placement","ubiquity","unmeasured"]);rw.enum;const fd=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);fd.enum;function TH(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 gd=j(["all","content","template"]);gd.enum;const x9=j(["anchor","redirect","canonical","link"]);x9.enum;const El=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:hd}),k9=m({type:j(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),bv=ow.extend({status:U0,applicable:C().nullable(),findings:y(k9).default([]),recommendations:y(o()).default([])}),vv=m({id:o().min(1),severity:j(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),xu=m({project:o(),runId:o(),complete:C(),termination:o().nullable()}),xv=m({nodeKey:o(),url:o(),auditState:o()});qe("state",[m({state:D("no-crawl"),project:o(),runId:ce()}),xu.extend({state:D("details-unavailable")}),xu.extend({state:D("not-found")}),xu.merge(xv).extend({state:D("not-audited"),auditScore:ce(),factors:y(bv).length(0).default([]),criticalDefects:y(vv).length(0).default([])}),xu.merge(xv).extend({state:D("ready"),auditScore:d(),evidenceState:j(["complete","scores-only"]),factors:y(bv).default([]),criticalDefects:y(vv).default([])})]);const w9=j(["applied","unavailable-legacy-scan"]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Qe([w9,ce()]).default(null),pages:y(El).default([])});const S9=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(S9).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:rw,placementOccurrences:Qe([v9,ce()])}),j9=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:hd,x:d(),y:d()}),A9=m({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:C(),occurrences:d().int().positive(),isTemplate:C()}),C9=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),N9=qe("state",[m({state:D("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:C()}),m({state:D("unavailable"),version:ce(),reason:C9})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:N9,templateDetection:fd,linkKind:gd,totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),totalTemplateEdges:d().int().nonnegative(),totalContentEdges:d().int().nonnegative(),nodes:y(j9).default([]),edges:y(A9).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),sampled:C()});const RH=2e4,DH=5e4,_9=j(["focus","inbound","outbound","both","transitive"]),z9=El.extend({distance:d().int().nonnegative(),relationToFocus:_9});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(z9).default([]),edges:y($s).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:C()});const kv=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:kv.nullable(),to:kv.nullable(),maxDepth:d().int().positive(),visitedNodes:d().int().nonnegative(),nodes:y(El).default([]),edges:y($s).default([])});const lw=j(["added","removed","changed"]),E9=m({entity:D("page"),change:lw,key:o(),changedFields:y(o()).default([]),before:El.nullable(),after:El.nullable()}),T9=m({entity:D("link"),change:lw,key:o(),changedFields:y(o()).default([]),before:$s.nullable(),after:$s.nullable()}),R9=qe("entity",[E9,T9]),wv=m({added:d().int().nonnegative(),removed:d().int().nonnegative(),changed:d().int().nonnegative()}),D9=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:D9,summaryState:j(["exact","omitted-on-continuation"]),summary:m({pages:wv,links:wv}).nullable(),total:d().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(R9).default([])})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),templateDetection:fd,linkKind:gd,edges:y($s).default([])});m({project:o(),hasCrawlData:C(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:fd,linkKind:gd,inbound:y($s).default([]),outbound:y($s).default([]),inboundTruncated:C(),outboundTruncated:C()});const Sv=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(Sv).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(Sv).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 O9=m({runId:o(),status:pa,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:C()});m({project:o(),scans:y(O9).default([])});const q9=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),B9=m({state:j(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),P9=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:q9,attempt:P9.nullable(),layout:B9,error:o().nullable()});const M9=j(["waiting","collecting","terminal"]),I9=m({nodeKey:o(),url:o(),auditScore:d(),checksNeedingAttention:d().int().nonnegative()});m({project:o(),runId:o(),status:pa,state:M9,attemptId:o().nullable(),pagesAudited:d().int().nonnegative(),updatedAt:o().nullable(),examples:y(I9).max(12).default([])});const V9=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()}),G0=V9.partial().shape;function OH(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 L9(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 qH(e,a,s){return`Share of voice · ${a} queries: ${L9(e,s)}${s?.measurementScope==="all-markets"?" · all markets":""}`}const $0=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);$0.enum;const K0=j(["cited","aspirational","wasted-surface"]),jv=K0.enum;jv.cited,jv.aspirational;const yd=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),U9=yd.enum;U9["direct-competitor"];const bd=j(["queued","seeding","probing","completed","failed"]);bd.enum;const cw=m({domain:o().min(1),hits:d().int().positive(),competitorType:yd.default("unknown")}),G9=m({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:K0.nullable().default(null),citationState:fi,citedDomains:y(o()).default([]),answerMentioned:C().nullable().default(null),createdAt:o()}),$9=m({id:o(),projectId:o(),status:bd,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(cw).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});$9.extend({probes:y(G9).default([])});const K9=500,H9=8,Q9=["gemini","openai"],F9=j(Q9);m({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(F9).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:d().min(0).max(1).optional(),maxProbes:d().int().positive().max(K9).optional(),probeConcurrency:d().int().min(1).max(H9).optional(),locations:y(o().min(1)).optional()});m({buckets:y(K0).min(1).optional(),includeCompetitors:C().optional(),competitorTypes:y(yd).min(1).optional()});m({sessionId:o(),projectId:o(),status:bd,queriesByBucket:m({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(cw)});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 Z9=m({query:o().min(1),probeHits:d().int().positive()}),Y9=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:bd,minProbeHits:d().int().positive(),anchorApplied:C(),semanticNoveltyApplied:C(),candidates:y(Z9),stats:Y9});const H0=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);H0.enum;const vd=j(["7d","30d","90d","all"]),Av=j(["improving","declining","stable"]),X9=j(["mentioned","cited"]);X9.enum;const zh=m({citationRate:d(),cited:d().int(),total:d().int(),mentionRate:d(),mentionedCount:d().int()}),mr=o().trim().min(1),J9=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:J9,includesUnknown:C()})]),W9=m({observedAt:o(),bucketStartDate:o(),from:Ks,to:Ks,fromPreWindowAnchor:C().optional(),anchorObservedAt:o().optional()}),uw=m({latestObservation:m({observedAt:o(),state:Ks}),events:y(W9),eventTotal:d().int().nonnegative().optional(),anchorUnavailable:C().optional()}),eR=Le(o(),uw),tR=uw.extend({latestServedModelIds:y(mr).default([])}),nR=Le(o(),tR),aR=m({observedAt:o(),configured:Ks,served:Ks}),iR=m({scope:j(["non-brand","pooled"]),rate:d().nullable(),projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative()}),sR=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:iR,byProvider:Le(o(),zh),modelEvidenceByProvider:Le(o(),Ks).default({}),basketRevision:d().int().nullable().default(null)}),oR=m({revision:d().int(),at:o(),added:y(o()),removed:y(o())}),rR=m({date:o(),delta:d().int(),label:o()}),lR=m({at:o(),identity:Y2});m({window:vd,mentionShareScope:j(["non-brand","pooled"]),buckets:y(sR),overall:zh,byProvider:Le(o(),zh),trend:Av,mentionTrend:Av,queryChanges:y(rR),basketChanges:y(oR).default([]),executionIdentityChanges:y(lR).default([]),referenceBasketRevision:d().int().nullable().default(null),modelAttribution:eR.default({}),servedModelAttribution:nR.default({}),modelServiceMismatch:Le(o(),aR).default({}),modelPointerChanges:Le(o(),Wz).default({})});const Cv=m({category:$0,label:o(),count:d().int(),percentage:d(),topDomains:y(m({domain:o(),count:d().int()}))}),cR=m({domain:o(),count:d().int(),percentage:d(),category:$0,label:o(),surfaceClass:H0}),uR=m({surfaceClass:H0,label:o(),count:d().int(),percentage:d(),domainCount:d().int()}),Nv=m({totalCitedSlots:d().int(),domainTotal:d().int(),entries:y(cR),truncatedDomainCount:d().int(),truncatedCitedSlots:d().int(),bySurfaceClass:y(uR)});m({overall:y(Cv),byQuery:Le(o(),y(Cv)),ranked:Nv,byProvider:Le(o(),Nv),runId:o(),window:vd,limit:d().int().nullable()});const dR=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),mR=qe("kind",[m({kind:D("project")}).strict(),m({kind:D("group"),groupKey:o().trim().min(1)}).strict(),m({kind:D("all-markets")}).strict()]),dw=j(["all","branded","non-brand"]),mw=j(["project","all-markets"]);m({window:vd.optional(),groupKey:o().trim().min(1).optional(),scope:mw.optional(),provider:o().trim().min(1).optional(),model:mr.optional(),groupBy:D("model").optional(),queryClass:dw.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:dR,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(),pw=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(),pR=50,hR=m({...G0,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:pw,truncated:C()}).strict(),fR=m({basis:D("requested-model"),groups:y(hR).max(pR),totalGroups:d().int().nonnegative(),truncated:C()}).strict();m({...G0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),window:vd,scope:mR,project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:pw,modelComparison:fR.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:mw,groupKey:o().nullable(),provider:o().nullable(),model:mr.optional(),groupBy:D("model").optional(),queryClass:dw,location:o().nullable(),runId:o().nullable()}).strict(),truncated:C()}).strict();const Q0=m({total:d().int(),checked:d().int(),mentioned:d().int(),cited:d().int(),mentionRate:d().nullable(),citedRate:d().nullable()}),hw=Q0.extend({provider:o(),firstObserved:o(),lastObserved:o()}),gR=Q0.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(hw).optional()}),yR=m({since:o().nullable(),until:o().nullable(),lastRuns:d().int().nullable(),runCount:d().int()}),bR=j(["provider"]),Eh=m({domain:o(),mentions:d().int()}),fw=m({...G0,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(Eh)});m({project:o(),groupBy:bR.optional(),window:yR,totals:Q0,byProvider:y(hw).optional(),queries:y(gR),shareOfVoice:fw.optional()});const vR=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),xR=j(["up","down","flat"]),_v=m({availability:j(["available","no-observations","no-competitive-frame"]),point:d().nullable(),ciLow:d().nullable(),ciHigh:d().nullable(),numerator:d().int(),denominator:d().int()}),kR=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),wR=m({key:kR,label:o(),queryClass:j(["all","non-brand","pooled"]),driftRobust:C(),from:_v,to:_v,rateRatio:d().nullable(),direction:Qe([xR,ce()]),verdict:vR}),zv=m({month:o(),since:o(),until:o(),runCount:d().int(),lowRunCount:C()}),SR=m({queryCount:d().int(),excludedFromOnly:d().int(),excludedToOnly:d().int(),providers:y(o()),excludedProviders:y(o())}),jR=m({provider:o(),fromModels:y(o()),toModels:y(o())}),AR=j(["included","model-discontinuous","model-unknown"]),CR=m({provider:o(),status:AR,fromModels:y(o()),toModels:y(o())}),NR=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),_R=m({status:NR,comparedProviders:y(o()),providers:y(CR)}),zR=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()})}),ER=m({from:m({count:d().int(),of:d().int()}),to:m({count:d().int(),of:d().int()})});m({project:o(),from:zv,to:zv,basket:SR,metrics:y(wR),queriesMentioned:ER,byProvider:y(zR),modelChanges:y(jR),continuity:_R,competitors:m({from:y(Eh),to:y(Eh)})});j(["json","csv"]);const TR=m({runId:o(),runKind:D("answer-visibility"),runStatus:pa,runTrigger:V0,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([zl,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Qe([sd,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(pd),searchQueries:y(o())}),RR=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:RR,recordCount:d().int().nonnegative(),records:y(TR)});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 xd=j(["organic","paid"]);xd.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 F0=j(["session","first_user","manual_utm"]),DR=m({source:o(),medium:o(),trafficClass:xd,sessions:d(),users:d().optional(),sourceDimension:F0}),OR=m({source:o(),medium:o(),trafficClass:xd,sourceDimension:F0,landingPage:o(),sessions:d(),users:d().optional()}),qR=m({source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()}),fl=m({sessions:d(),sharePct:d(),sharePctDisplay:o()}),BR=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(DR),aiReferralLandingPages:y(OR),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(qR),socialSessions:d(),socialUsers:d().optional(),channelBreakdown:BR,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 PR=m({propertyId:o(),displayName:o(),accountName:o()});m({properties:y(PR)});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:xd,landingPage:o(),sessions:d(),users:d(),sourceDimension:F0});const MR=m({source:o(),sessions:d(),paidSessions:d(),organicSessions:d()}),IR=m({date:o(),sessions:d(),paidSessions:d(),organicSessions:d(),bySource:y(MR)});m({days:y(IR),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 gw=j(["claude","openai","gemini","zai","deepinfra"]),VR=m({id:gw,label:o(),defaultModel:o(),configured:C(),keySource:j(["config","env"]).nullable()});m({providers:y(VR).default([]),defaultProvider:gw.nullable()});const LR=j(["aero","user","compaction"]);LR.enum;const yw=128;m({key:o().min(1).max(yw),value:o().min(1)});m({key:o().min(1).max(yw)});const pr=j(["commoncrawl","bing-webmaster"]);pr.enum;const Z0=j(["queued","downloading","querying","ready","failed"]);Z0.enum;m({id:o(),release:o(),status:Z0,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 UR=m({linkingDomain:o(),numHosts:d().int(),source:pr}),GR=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:GR.nullable(),total:d().int(),rows:y(UR)});m({release:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr});const $R=m({source:pr,connected:C(),hasData:C(),latestRelease:o().nullable(),totalLinkingDomains:d().int(),lastSyncedAt:o().nullable()});m({projectId:o(),targetDomain:o(),sources:y($R),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:Z0.nullable(),bytes:d().int(),lastUsedAt:o().nullable()});const Y0=j(["positive","caution","negative","neutral"]),Yi=m({label:o(),value:o(),delta:o(),tone:Y0,description:o(),tooltip:o().optional(),trend:y(d()),progress:d().optional(),providerCoverage:o().optional()}),Ev=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()}),KR=Yi.extend({breakdown:Ev,scope:j(["non-brand","pooled"]),branded:Ev}),Wp=m({gained:d().int().nonnegative(),lost:d().int().nonnegative(),tone:Y0,hasPreviousRun:C(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),HR=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())}),QR=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()}),FR=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:d8,latestRun:e9,health:FR.nullable(),topInsights:y(QR),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:KR,gapQueries:Yi,mentionGaps:Yi,indexCoverage:Yi,competitorPressure:Yi,runStatus:Yi}),movementSummary:Wp,citationMovement:Wp,mentionMovement:Wp,movementComparison:HR,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:Y0,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 ZR=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()}),YR=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()}),XR=qe("kind",[ZR,YR]);m({query:o(),totalHits:d().int().nonnegative(),truncated:C(),hits:y(XR)});const bw=j(["create","expand","refresh","add-schema"]);bw.enum;function BH(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const vw=j(["gsc","competitor-evidence","both"]);vw.enum;const xw=j(["high","medium","low"]);xw.enum;const JR=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);JR.enum;const kw=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);kw.enum;const X0=j(["ownable","ceded"]);X0.enum;const WR=m({url:o(),gscImpressions:d().nonnegative(),gscClicks:d().nonnegative(),gscAvgPosition:d().nonnegative().nullable(),organicSessions:d().nonnegative()}),eD=m({domain:o(),url:o(),title:o(),citationCount:d().int().nonnegative()}),tD=m({demand:d(),competitor:d(),absence:d(),gapSeverity:d()}),nD=m({actionId:o(),state:kw,lastUpdated:o()}),ww=m({targetRef:o(),query:o(),action:bw,ourBestPage:WR.nullable(),winningCompetitor:eD.nullable(),score:d(),scoreBreakdown:tD,drivers:y(o()),demandSource:vw,actionConfidence:xw,existingAction:nD.nullable(),winnabilityClass:X0,winnability:d().min(0).max(1).nullable()});m({targets:y(ww),contextMetrics:m({totalAiReferralSessions:d().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const aD=m({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});m({dismissals:y(aD)});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 iD=m({targetQuery:o().trim().min(1),winnabilityClass:X0,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:iD,costMillicents:d().int().nonnegative(),generatedAt:o()});const sD=m({domain:o(),competitorType:yd,hits:d().int().nonnegative(),updatedAt:o()});m({classifications:y(sD)});const oD=m({uri:o(),title:o(),domain:o(),isOurDomain:C(),isCompetitor:C(),citationCount:d().int().nonnegative(),providers:y(ht)}),Sw=m({query:o(),groundingSources:y(oD)});m({sources:y(Sw),latestRunId:o()});const jw=m({query:o(),competitorDomains:y(o()),competitorCount:d().int().nonnegative(),missRate:d().min(0).max(1),lastSeenInRunId:o()});m({gaps:y(jw),latestRunId:o()});const Aw=j(["ok","warn","fail","skipped"]);Aw.enum;const J0=j(["global","project"]);J0.enum;const Cw=j(["auth","config","providers","integrations","database","schedules","agent"]);Cw.enum;const rD=m({id:o(),category:Cw,scope:J0,title:o(),status:Aw,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:J0,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(rD)});function lD(e){return e.trim().toLowerCase()}const cD=m({provider:o(),citationState:fi,cited:C(),mentioned:C(),runId:o(),runCreatedAt:o()}),uD=m({queryId:o(),query:o(),providers:y(cD),citedCount:d().int().nonnegative(),mentionedCount:d().int().nonnegative(),totalProviders:d().int().nonnegative()}),dD=m({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),mD=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:mD,byQuery:y(uD),competitorGaps:y(dD),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const pD=m({selection:uk,historyWindow:m({from:o().datetime(),to:o().datetime()}).optional(),populations:y(ck.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 PH(e){return{branded:"Branded","non-brand":"Non-brand",unknown:"Unclassified"}[e]}function MH(e){return e.rate===null?on.notMeasured:`${Number((e.rate*100).toFixed(1))}%`}function IH(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 VH(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 LH(e){const a=e.selection.measurement.completedAt?.slice(0,10)??on.notMeasured;return`${on.latestMeasurement}: ${a}`}function UH(e){const a=e.historyWindow;return a===void 0?on.history:`${on.history} (${a.from.slice(0,10)} – ${a.to.slice(0,10)})`}function GH(e){const a=e.selection.location;return a.kind==="all"?on.allLocations:a.kind==="none"?on.noLocation:`${on.location}: ${a.value}`}const $H=[7,14,30,90],KH=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 hD=j(["prompt","request-param","browser-geo","ignored"]),fD=m({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),gD=m({provider:o(),treatment:hD,description:o()}),yD=m({generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:fD.nullable(),providerLocationHandling:y(gD),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:d().int().positive()}),bD=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"])}))}),vD=m({citationState:j(["cited","not-cited","pending"]),answerMentioned:C().nullable(),model:o().nullable()}),xD=m({queries:y(o()),providers:y(o()),matrix:y(y(vD.nullable())),providerRates:y(m({provider:o(),citedCount:d(),mentionedCount:d(),totalCount:d(),citationRate:d(),mentionRate:d()}))}),kD=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())}))}),wD=m({projectCitationCount:d(),competitors:y(kD)}),SD=m({domain:o(),mentionCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:d().nullable()}),eh=m({shareOfVoice:fw.optional(),projectMentionCount:d(),totalAnswerSnapshots:d(),competitors:y(SD)}),jD=eh.extend({scope:j(["non-brand","pooled"]),nonBrand:eh,branded:eh}),AD=m({category:o(),label:o(),count:d(),sharePct:d()}),CD=m({categories:y(AD),topDomains:y(m({domain:o(),count:d(),isCompetitor:C()}))}),ND=m({query:o(),clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),category:j(["brand","lead-gen","industry","other"])}),_D=m({periodStart:o(),periodEnd:o(),totalClicks:d(),totalImpressions:d(),ctr:d(),avgPosition:d(),topQueries:y(ND),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())}),zD=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()}))}),ED=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()}))}),TD=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()}))}),RD=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()}))}),DD=m({provider:j(["google","bing"]).nullable(),total:d(),indexed:d(),notIndexed:d(),deindexed:d(),unknown:d(),indexedPct:d()}),OD=m({runId:o(),date:o(),citationRate:d(),citedQueryCount:d(),totalQueryCount:d(),mentionRate:d(),mentionedQueryCount:d(),providerRates:y(m({provider:o(),citationRate:d(),mentionRate:d()}))}),Th=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()}),qD=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()}),BD=m({provider:o(),current:d(),prior:d(),deltaAbs:d(),direction:j(["up","down","flat"])}),PD=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(BD),wins:y(Th),regressions:y(Th)});j(["agency","client"]);const MD=j(["agency","client","both"]),ID=j(["immediate","short-term","medium-term"]),VD=j(["high","medium","low"]);j(["positive","caution","negative","neutral"]);const LD=j(["content","competitors","provider","search-demand","indexing","location","monitoring"]),W0=m({audience:MD,priority:d(),horizon:ID,category:LD,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:VD,targetRef:o().optional()}),UD=m({headline:o(),overview:o(),actionItems:y(W0),confidenceNotes:y(o())}),GD=m({title:o(),detail:o(),severity:j(["positive","caution","negative","neutral"]),evidence:y(o())}),$D=m({priorities:y(W0),diagnostics:y(GD)});function HH(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function QH(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function FH(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function ZH(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 YH(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}m({visibility:pD.optional(),meta:yD,executiveSummary:bD,citationScorecard:xD,competitorLandscape:wD,mentionLandscape:jD,aiSourceOrigin:CD,gsc:_D.nullable(),ga:zD.nullable(),socialReferrals:ED.nullable(),aiReferrals:TD.nullable(),serverActivity:RD.nullable(),indexingHealth:DD.nullable(),citationsTrend:y(OD),whatsChanged:PD,insights:y(Th),recommendedNextSteps:y(qD),actionPlan:y(W0),clientSummary:UD,agencyDiagnostics:$D,contentOpportunities:y(ww),contentGaps:y(jw),groundingSources:y(Sw)});const KD=Qe([D(60),D(90)]),HD=j(["earliest","middle","prior","latest"]),Uo=m({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),Nw=m({name:HD,startDate:o(),endDate:o()}),QD=Nw.extend({totals:Uo}),FD=Nw.extend({organicSessions:d().int().nonnegative()}),th=m({startDate:o(),endDate:o(),observedDays:d().int().nonnegative()}),ku=m({verified:d().int().nonnegative(),claimedUnverified:d().int().nonnegative(),unknownAiLike:d().int().nonnegative()}),Tv=m({total:d().int().nonnegative(),paid:d().int().nonnegative(),organic:d().int().nonnegative(),unknown:d().int().nonnegative()});m({contractVersion:D("organic-evidence/v1"),periodDays:KD,asOfDate:o().nullable(),coverage:m({gsc:C(),ga4:C(),server:C(),visibility:C()}),sourceCoverage:m({gsc:th.nullable(),ga4:th.nullable(),server:th.nullable(),visibility:m({completedAt:o(),ageDays:d().nonnegative()}).nullable()}),gsc:m({propertyTotals:Uo,namedBrand:Uo,namedNonBrand:Uo,suppressedOrUnreportedResidual:Uo,cohorts:y(QD)}).nullable(),ga4:m({organicSessions:d().int().nonnegative(),cohorts:y(FD)}).nullable(),gaAiReferrals:m({paidSessions:d().int().nonnegative(),organicSessions:d().int().nonnegative()}).nullable(),server:m({crawlerHits:ku,userFetchHits:ku,referralSessions:Tv}).nullable(),visibility:m({runId:o(),completedAt:o(),ageDays:d().nonnegative(),answerPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative()}).nullable(),measurement:b_,pages:y(m({path:o(),gsc:Uo,ga4OrganicSessions:d().int().nonnegative(),server:m({crawlerHits:ku,userFetchHits:ku,referralSessions:Tv})})),findings:y(m({tone:j(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(m({code:o(),detail:o()}))});const ZD=j(["claude","codex"]);ZD.enum;const YD=j(["claude","codex","all"]);YD.enum;const _w=m({content:d().int().nonnegative(),sitemap:d().int().nonnegative(),robots:d().int().nonnegative(),asset:d().int().nonnegative(),other:d().int().nonnegative()}),XD=j(["content","sitemap","robots","asset","other"]),ef=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);ef.enum;const JD=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);JD.enum;const WD=j(["raw-request","aggregate-bucket"]),eO=WD.enum,tO=j(["observed","provider-aggregated","inferred"]),nO=tO.enum,aO=m({type:o().nullable(),labels:Le(o(),o())}),iO=m({sourceType:ef,evidenceKind:D(eO["raw-request"]),confidence:D(nO.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:aO,providerLabels:Le(o(),o())});m({events:y(iO),rawEntryCount:d().int().nonnegative(),skippedEntryCount:d().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const zw=j(["connected","paused","error","archived"]),XH=zw.enum,Ew=j(["oauth","service-account"]);Ew.enum;const sO=j(["verified","claimed_unverified","unknown_ai_like"]),JH=sO.enum,oO=m({id:o().min(1),source:o().min(1),version:o().min(1)}),Tw=m({manifestId:o().min(1),manifest:oO.nullable(),hits:d().int().nonnegative()});m({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Ew});m({baseUrl:o().url(),username:o().min(1)});const tf=j(["production","preview"]);tf.enum;m({projectId:o().min(1),teamId:o().min(1),environment:tf});const Rw=m({id:o(),projectId:o(),sourceType:ef,displayName:o(),status:zw,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:tf.optional(),displayName:o().min(1).optional()});const rO=j(["direct-push","queue-pull"]),hr=rO.enum,nf=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"),Dw=m({schemaVersion:D(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),lO=Dw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().nullable()}),cO=Dw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600)});function Ow(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}s0(Ow,qe("deliveryMode",[lO,cO]));const qw=m({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),uO=qw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().min(1).optional()}),dO=qw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600),apiToken:o().min(1)});s0(Ow,qe("deliveryMode",[uO,dO]));const Bw=m({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),mO=Bw.extend({deliveryMode:D(hr["direct-push"]),activationRequired:C().default(!1)}),pO=Bw.extend({deliveryMode:D(hr["queue-pull"]),activationRequired:C().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600)});qe("deliveryMode",[mO,pO]);const hO=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(hO).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 fO=m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:_w,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),sampleCount:d().int().nonnegative()});m({sources:y(Rw)});const gO=Rw.extend({totals24h:fO,latestRun:m({runId:o(),status:pa,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});m({sources:y(gO)});const yO=j(["crawler","ai-user-fetch","ai-referral"]),af=yO.enum,Pw=j(["hour","day"]);Pw.enum;const bO=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()}),vO=m({kind:D(af.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Tw).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),pathClass:XD,status:d().int(),hits:d().int().nonnegative()}),xO=m({kind:D(af["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Tw).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),status:d().int(),hits:d().int().nonnegative()}),kO=m({kind:D(af["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()}),wO=qe("kind",[vO,xO,kO]);m({windowStart:o(),windowEnd:o(),series:m({granularity:Pw,points:y(bO),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:_w,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(wO)});const sf=j(["admin","viewer"]),SO=/^[a-z\d][\w.-]{0,63}$/i,jO=o().regex(SO,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Rv=12,AO=o().min(Rv,`A password must be at least ${Rv} characters.`),Mw=m({id:o(),name:o(),role:sf,createdAt:o(),lastLoginAt:o().nullable()});m({users:y(Mw)});m({name:jO,password:AO,role:sf});m({name:o().min(1),password:o().min(1)});m({authRequired:C(),user:Mw.pick({name:!0,role:!0}).nullable()});const Iw=j(["queued","running","completed","partial","failed"]),WH=Iw.enum,Vw=j(["queued","running","completed","failed"]),eQ=Vw.enum,CO=20,NO=20,Rh=50,Lw=m({kind:j(["market","property"]),key:me,expectedPlanRevision:d().int().positive().optional()}).strict(),_O=m({kind:j(["market","property"]),key:me,label:o().trim().min(1),planRevision:d().int().positive()}).strict(),Uw=o().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function tQ(e){const a=new Set;return e.filter(s=>{const r=lD(s);return!r||a.has(r)?!1:(a.add(r),!0)})}function zO(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 nQ(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 zb("The selected research template contains undeclared placeholders: "+f.join(", "));const g=zO(a,s),b=e.variables.filter(k=>g[k]===void 0);if(b.length)throw zb("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(k=>[k,g[k]]));return{bindings:v,output:T7(e.pattern,v)}}const Gw=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),bindingLocation:Yt.nullable().optional()}).strict();m({queries:y(Uw).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:Yt.nullable().optional(),scope:Lw.optional(),template:Gw.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 EO=Lw.extend({expectedPlanRevision:d().int().positive()}).strict(),TO=m({queries:y(Uw).min(1).max(Rh),provider:o().trim().min(1),model:o().trim().min(1).max(200),location:Yt.nullable(),scope:EO.optional(),template:Gw.optional()}).strict();m({idempotencyKey:o().trim().min(1).max(128),runs:y(TO).min(1).max(NO)}).strict().superRefine((e,a)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>Rh&&a.addIssue({code:Se.custom,path:["runs"],message:`A research batch may contain at most ${Rh} concrete queries across all destinations`})});const RO=m({kind:j(["api-key","user"]),id:o(),name:o(),role:sf.nullable(),limited:C().optional()}),$w=m({id:o(),projectId:o(),status:Iw,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:Yt.nullable(),scope:_O.nullable().optional(),template:mk.nullable().optional(),totalQueries:d().int(),completedQueries:d().int(),failedQueries:d().int(),error:o().nullable(),initiatedBy:RO.nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),DO=m({id:o(),position:d().int(),query:o(),queryClass:rr.nullable().optional(),status:Vw,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(pd),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()}),OO=$w.extend({queries:y(DO)});m({runs:y(OO)});const qO=m({name:o(),displayName:o(),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o()}))});m({runs:y($w),nextCursor:o().nullable().optional(),providers:y(qO).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 BO=m({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});m({count:d().int().nonnegative(),query:o(),results:y(BO)});const PO=m({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});m({pixels:y(PO)});const MO=m({id:o(),name:o().optional()}),IO=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(MO).optional(),archived:C().optional(),version:d().int().nonnegative().optional()});m({eventSettings:y(IO)});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 VO=m({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),Vl=j(["impressions","clicks"]);Vl.enum;const Ll=j(["impression","click"]);Ll.enum;const LO=m({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:VO.nullable().optional(),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),UO=m({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Qe([Ll,ce()]).optional(),maxBidMicros:d().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(LO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),GO=m({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:d().int().nullable().optional(),endTime:d().int().nullable().optional(),biddingType:Qe([Vl,ce()]).optional(),dailySpendLimitMicros:d().int().nullable().optional(),lifetimeSpendLimitMicros:d().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(UO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()});m({campaigns:y(GO)});const Kw=j(["campaign","ad_group"]);Kw.enum;const $O=m({level:Kw,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($O),currencyCode:o().nullable().optional()});const Hw=m({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Qw=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:Hw,totals:Qw});const Fw=j(["unavailable","partial","complete"]);Fw.enum;const Zw=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"]);Zw.enum;const Yw=j(["unavailable","reported"]);Yw.enum;const KO={storedSnapshot:"stored_ads_snapshot"},Xw=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Xw.enum;const HO=m({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),QO=m({id:o(),name:o(),status:o(),billingEventType:Qe([Ll,ce()]),maxBidMicros:d().int().nullable(),contextHints:y(o()),ads:y(HO)}),FO=m({id:o(),name:o(),status:o(),biddingType:Qe([Vl,ce()]),dailySpendLimitMicros:d().int().nullable(),lifetimeSpendLimitMicros:d().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(QO)});m({snapshot:m({status:Fw,issue:Qe([Zw,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:Yw,window:Hw,totals:Qw.nullable()}),storedConfiguration:m({basis:D(KO.storedSnapshot),connection:m({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:C()}).nullable(),campaigns:y(FO)}),assessment:m({state:Xw})});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),of=o().regex(/^[a-f0-9]{64}$/),Jw=y(At).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Ww=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),eS=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"]);eS.enum;const tS=j(["pending","reconciling","succeeded","failed","unknown"]),Fo=tS.enum,nS=j(["known_entity","create_fingerprint","manual_only"]);nS.enum;const aS=j([Fo.pending,Fo.unknown,Fo.reconciling]);aS.enum;const iS=j(["active","paused","archived"]);iS.enum;const sS=j(["file","campaign","ad_group","ad"]);sS.enum;const oS=j(["campaign","ad_group","ad"]);oS.enum;const rf=m({id:At,expectedUpdatedAt:d().int().nonnegative()}).strict(),ZO=rf,Gu=1e3;function YO(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const XO=rf.extend({ads:y(ZO).min(1).max(Gu-1)}).strict(),JO=rf.extend({adGroups:y(XO).min(1).max(Gu-1)}).strict();function WO(e,a){return e<a?-1:e>a?1:0}function Dv(e,a,s){for(let r=1;r<e.length;r+=1)if(WO(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 rS=m({campaign:JO}).strict().superRefine((e,a)=>{YO(e)>Gu&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Gu} entities`}),Dv(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];Dv(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)}}}),lS=of,eq=j(["approved","executing","consumed","revoked","expired","unknown"]),hi=eq.enum,tq=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),os=tq.enum,nq=m({name:Fs.optional(),description:o().max(4e3).nullable().optional(),status:iS.optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).max(100).optional(),biddingType:Vl.optional(),conversionEventSettingIds:Jw.optional(),campaignId:At.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:tr.max(1e8).optional(),billingEventType:Ll.optional(),adGroupId:At.optional(),creativeFingerprint:of.optional()}).strict();m({operationKey:$a,imageUrl:Ww});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:Vl.optional(),conversionEventSettingIds:Jw.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:Ll.optional()});const cS=m({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Ww,fileId:At});m({operationKey:$a,adGroupId:At,name:Fs,creative:cS});function lf(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(lf,{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(lf,{message:"At least one ad group field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),creative:cS.optional()}).refine(lf,{message:"At least one ad field must be updated"});m({operationKey:$a});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative()});const kd=m({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:eS,state:tS,entityType:Qe([sS,ce()]),entityId:o().nullable(),upstreamUpdatedAt:d().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Qe([nS,ce()]),reconcileParentId:At.nullable(),reconcileFingerprint:of.nullable(),reconcileFields:nq.nullable(),reconcileAttempts:d().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});m({operation:kd,replayed:C()});const xt=f2({offset:!0}),fr={id:At,projectId:At,adAccountId:At,manifestHash:lS,manifest:rS,executorApiKeyId:At,approverApiKeyId:At,expiresAt:xt,approvedAt:xt,createdAt:xt,updatedAt:xt,revocationRequestedAt:xt.nullable()},aq=m({...fr,state:D(hi.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),iq=m({...fr,state:D(hi.executing),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),sq=m({...fr,state:D(hi.consumed),operationId:At,executionStartedAt:xt,consumedAt:xt,revokedAt:ce(),expiredAt:ce()}).strict(),oq=m({...fr,state:D(hi.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:xt,expiredAt:ce()}).strict(),rq=m({...fr,state:D(hi.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:xt}).strict(),lq=m({...fr,state:D(hi.unknown),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),uS=qe("state",[aq,iq,sq,oq,rq,lq]).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:oS,entityId:At,expectedUpdatedAt:d().int().nonnegative(),createdAt:xt,updatedAt:xt},Ul={errorCode:ce(),errorMessage:ce()},cf={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},cq=m({...rs,...Ul,state:D(os.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),uq=m({...rs,...Ul,state:D(os.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:xt,finishedAt:ce()}).strict(),dq=m({...rs,...Ul,state:D(os.active),providerUpdatedAt:d().int().nonnegative(),remediation:ce(),startedAt:xt,finishedAt:xt}).strict(),mq=m({...rs,...cf,state:D(os.failed),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),pq=m({...rs,...Ul,state:D(os.rollback_executing),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:ce()}).strict(),hq=m({...rs,...Ul,state:D(os.rolled_back),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:xt}).strict(),fq=m({...rs,...cf,state:D(os.rollback_failed),providerUpdatedAt:d().int().nonnegative(),startedAt:xt,finishedAt:xt}).strict(),gq=m({...rs,...cf,state:D(os.unknown),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),yq=qe("state",[cq,uq,dq,mq,pq,hq,fq,gq]),Dh={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},bq=j([Dh.exact,Dh.refreshSemanticallyUnchanged]);m({manifest:rS,executorApiKeyId:At,expiresAt:xt,versionPolicy:bq.default(Dh.exact)}).strict();m({grant:uS}).strict();m({}).strict();m({operationKey:$a,grantId:At,manifestHash:lS}).strict();m({grant:uS,operation:kd,steps:y(yq)}).strict();const vq=[Fo.pending,Fo.unknown,Fo.reconciling];function xq(e){if(e===void 0||e==="")return vq;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:s0(xq,y(aS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:o0().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});m({operations:y(kd),count:d().int().nonnegative(),nextCursor:o().nullable()});m({}).strict();m({operation:kd,resolved:C()});m({campaignId:o().min(1).max(200).optional(),lookbackDays:o0().int().min(1).max(30).default(7)});const dS=j(["campaign","ad_group","ad"]);dS.enum;const mS=j(["both","live-only","stored-only"]);mS.enum;const kq=D("live-provider-read"),wq=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()}),Ov=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int()}),Sq=m({date:o(),live:Ov.nullable(),stored:Ov.nullable(),drifted:C()}),jq=m({field:o(),live:o().nullable(),stored:o().nullable()}),Aq=m({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:d().nullable()}),Cq=m({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:d().nullable(),syncedAt:o()}),Nq=m({entityType:dS,id:o(),parentId:o().nullable(),presence:mS,live:Aq.nullable(),stored:Cq.nullable(),fieldDeltas:y(jq),liveMetrics:y(wq).nullable(),metricDeltas:y(Sq).nullable(),drifted:C()}),_q=m({surface:o(),entityId:o().nullable(),upstreamStatus:d().int().nullable()});m({basis:kq,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(Nq),drift:m({entitiesCompared:d().int().nonnegative(),driftedEntities:d().int().nonnegative(),statusDrifted:d().int().nonnegative(),metricsDrifted:d().int().nonnegative()}),errors:y(_q)});const zq=m({status:j(["available","unavailable","not-supported"])}),qv="*",Eq=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),Tq=j(["server","local"]);m({enabled:C(),configuredEnabled:C(),reason:Eq,anonymousId:o().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:Tq.optional()}).strict();const st=1,nh=j(["system","project","queries","competitors","run"]),ah=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 Bv=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"]),Rq=j(["wizard","platform","site_health"]),wu=m({eventId:o().uuid(),flowVersion:D(st),onboardingSessionId:o().uuid(),surface:Rq.optional()});qe("event",[wu.extend({event:D("onboarding.started"),step:nh,resumed:C()}).strict(),wu.extend({event:D("onboarding.step_completed"),step:nh,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:ah.optional()}).strict(),wu.extend({event:D("onboarding.blocked"),step:nh,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Bv}).strict(),wu.extend({event:D("run.requested"),origin:D("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:ah,queryCountBucket:ah,reasonCode:Bv.optional()}).strict()]);m({accepted:C()});const Dq=4;function Oq(e){return e.length<Dq}const pS=j(["trace","debug","info","warn","error","fatal"]),qq=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(),Bq=m({cursor:o().min(1).max(512),ts:o().datetime(),level:pS,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:qq}).strict();m({level:pS.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:o0().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(Bq),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 Pq={bodySerializer:e=>JSON.stringify(e,(a,s)=>typeof s=="bigint"?s.toString():s)},Mq=({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 p2(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:Du(a,"input",e.processors),output:Du(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 w6=(e,a={})=>s=>{const r=d2({...s,processors:a});return Gt(e,r),m2(r,e),p2(r,e)},Du=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=d2({...u??{},target:f,io:a,processors:s});return Gt(e,g),m2(g,e),p2(g,e)},S6={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},j6=(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=S6[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}))])}},A6=(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)},C6=(e,a,s,r)=>{s.type="boolean"},N6=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},_6=(e,a,s,r)=>{s.not={}},z6=(e,a,s,r)=>{},E6=(e,a,s,r)=>{const u=e._zod.def,f=$x(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},T6=(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},R6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},D6=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},O6=(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"]})},q6=(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)},B6=(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},P6=(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},M6=(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)}},I6=(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"}]},V6=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},L6=(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))},U6=(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)))},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;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},$6=(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},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,s.readOnly=!0},h2=(e,a,s,r)=>{const u=e._zod.def;Gt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},H6=J("ZodISODateTime",(e,a)=>{G5.init(e,a),Tt.init(e,a)});function f2(e){return YC(H6,e)}const Q6=J("ZodISODate",(e,a)=>{$5.init(e,a),Tt.init(e,a)});function g2(e){return XC(Q6,e)}const F6=J("ZodISOTime",(e,a)=>{K5.init(e,a),Tt.init(e,a)});function Z6(e){return JC(F6,e)}const Y6=J("ZodISODuration",(e,a)=>{H5.init(e,a),Tt.init(e,a)});function X6(e){return WC(Y6,e)}const J6=(e,a)=>{Fx.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>qA(e,s)},flatten:{value:s=>OA(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,mh,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,mh,2)}},isEmpty:{get(){return e.issues.length===0}}})},ma=J("ZodError",J6,{Parent:Error}),W6=t0(ma),eN=n0(ma),tN=Xu(ma),nN=Ju(ma),aN=MA(ma),iN=IA(ma),sN=VA(ma),oN=LA(ma),rN=UA(ma),lN=GA(ma),cN=$A(ma),uN=KA(ma),_t=J("ZodType",(e,a)=>(Ct.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:Du(e,"input"),output:Du(e,"output")}}),e.toJSONSchema=w6(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)=>W6(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>tN(e,s,r),e.parseAsync=async(s,r)=>eN(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>nN(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>aN(e,s,r),e.decode=(s,r)=>iN(e,s,r),e.encodeAsync=async(s,r)=>sN(e,s,r),e.decodeAsync=async(s,r)=>oN(e,s,r),e.safeEncode=(s,r)=>rN(e,s,r),e.safeDecode=(s,r)=>lN(e,s,r),e.safeEncodeAsync=async(s,r)=>cN(e,s,r),e.safeDecodeAsync=async(s,r)=>uN(e,s,r),e.refine=(s,r)=>e.check(a_(s,r)),e.superRefine=s=>e.check(i_(s)),e.overwrite=s=>e.check(or(s)),e.optional=()=>Nb(e),e.exactOptional=()=>$N(e),e.nullable=()=>_b(e),e.nullish=()=>Nb(_b(e)),e.nonoptional=s=>YN(e,s),e.array=()=>y(e),e.or=s=>Qe([e,s]),e.and=s=>IN(e,s),e.transform=s=>fh(e,v2(s)),e.default=s=>QN(e,s),e.prefault=s=>ZN(e,s),e.catch=s=>JN(e,s),e.pipe=s=>fh(e,s),e.readonly=()=>t_(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)),y2=J("_ZodString",(e,a)=>{a0.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>j6(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(r6(...r)),e.includes=(...r)=>e.check(u6(...r)),e.startsWith=(...r)=>e.check(d6(...r)),e.endsWith=(...r)=>e.check(m6(...r)),e.min=(...r)=>e.check(Ru(...r)),e.max=(...r)=>e.check(c2(...r)),e.length=(...r)=>e.check(u2(...r)),e.nonempty=(...r)=>e.check(Ru(1,...r)),e.lowercase=r=>e.check(l6(r)),e.uppercase=r=>e.check(c6(r)),e.trim=()=>e.check(h6()),e.normalize=(...r)=>e.check(p6(...r)),e.toLowerCase=()=>e.check(f6()),e.toUpperCase=()=>e.check(g6()),e.slugify=()=>e.check(y6())}),dN=J("ZodString",(e,a)=>{a0.init(e,a),y2.init(e,a),e.email=s=>e.check(zC(mN,s)),e.url=s=>e.check(OC(pN,s)),e.jwt=s=>e.check(ZC(_N,s)),e.emoji=s=>e.check(qC(hN,s)),e.guid=s=>e.check(kb(Ab,s)),e.uuid=s=>e.check(EC(pu,s)),e.uuidv4=s=>e.check(TC(pu,s)),e.uuidv6=s=>e.check(RC(pu,s)),e.uuidv7=s=>e.check(DC(pu,s)),e.nanoid=s=>e.check(BC(fN,s)),e.guid=s=>e.check(kb(Ab,s)),e.cuid=s=>e.check(PC(gN,s)),e.cuid2=s=>e.check(MC(yN,s)),e.ulid=s=>e.check(IC(bN,s)),e.base64=s=>e.check(HC(AN,s)),e.base64url=s=>e.check(QC(CN,s)),e.xid=s=>e.check(VC(vN,s)),e.ksuid=s=>e.check(LC(xN,s)),e.ipv4=s=>e.check(UC(kN,s)),e.ipv6=s=>e.check(GC(wN,s)),e.cidrv4=s=>e.check($C(SN,s)),e.cidrv6=s=>e.check(KC(jN,s)),e.e164=s=>e.check(FC(NN,s)),e.datetime=s=>e.check(f2(s)),e.date=s=>e.check(g2(s)),e.time=s=>e.check(Z6(s)),e.duration=s=>e.check(X6(s))});function o(e){return _C(dN,e)}const Tt=J("ZodStringFormat",(e,a)=>{Nt.init(e,a),y2.init(e,a)}),mN=J("ZodEmail",(e,a)=>{O5.init(e,a),Tt.init(e,a)}),Ab=J("ZodGUID",(e,a)=>{R5.init(e,a),Tt.init(e,a)}),pu=J("ZodUUID",(e,a)=>{D5.init(e,a),Tt.init(e,a)}),pN=J("ZodURL",(e,a)=>{q5.init(e,a),Tt.init(e,a)}),hN=J("ZodEmoji",(e,a)=>{B5.init(e,a),Tt.init(e,a)}),fN=J("ZodNanoID",(e,a)=>{P5.init(e,a),Tt.init(e,a)}),gN=J("ZodCUID",(e,a)=>{M5.init(e,a),Tt.init(e,a)}),yN=J("ZodCUID2",(e,a)=>{I5.init(e,a),Tt.init(e,a)}),bN=J("ZodULID",(e,a)=>{V5.init(e,a),Tt.init(e,a)}),vN=J("ZodXID",(e,a)=>{L5.init(e,a),Tt.init(e,a)}),xN=J("ZodKSUID",(e,a)=>{U5.init(e,a),Tt.init(e,a)}),kN=J("ZodIPv4",(e,a)=>{Q5.init(e,a),Tt.init(e,a)}),wN=J("ZodIPv6",(e,a)=>{F5.init(e,a),Tt.init(e,a)}),SN=J("ZodCIDRv4",(e,a)=>{Z5.init(e,a),Tt.init(e,a)}),jN=J("ZodCIDRv6",(e,a)=>{Y5.init(e,a),Tt.init(e,a)}),AN=J("ZodBase64",(e,a)=>{X5.init(e,a),Tt.init(e,a)}),CN=J("ZodBase64URL",(e,a)=>{W5.init(e,a),Tt.init(e,a)}),NN=J("ZodE164",(e,a)=>{eC.init(e,a),Tt.init(e,a)}),_N=J("ZodJWT",(e,a)=>{nC.init(e,a),Tt.init(e,a)}),i0=J("ZodNumber",(e,a)=>{i2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>A6(e,r,u),e.gt=(r,u)=>e.check(Sb(r,u)),e.gte=(r,u)=>e.check(Ip(r,u)),e.min=(r,u)=>e.check(Ip(r,u)),e.lt=(r,u)=>e.check(wb(r,u)),e.lte=(r,u)=>e.check(Mp(r,u)),e.max=(r,u)=>e.check(Mp(r,u)),e.int=r=>e.check(Cb(r)),e.safe=r=>e.check(Cb(r)),e.positive=r=>e.check(Sb(0,r)),e.nonnegative=r=>e.check(Ip(0,r)),e.negative=r=>e.check(wb(0,r)),e.nonpositive=r=>e.check(Mp(0,r)),e.multipleOf=(r,u)=>e.check(jb(r,u)),e.step=(r,u)=>e.check(jb(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 e6(i0,e)}const zN=J("ZodNumberFormat",(e,a)=>{aC.init(e,a),i0.init(e,a)});function Cb(e){return n6(zN,e)}const EN=J("ZodBoolean",(e,a)=>{iC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>C6(e,s,r)});function C(e){return a6(EN,e)}const TN=J("ZodNull",(e,a)=>{sC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>N6(e,s,r)});function ce(e){return i6(TN,e)}const RN=J("ZodUnknown",(e,a)=>{oC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z6()});function qn(){return s6(RN)}const DN=J("ZodNever",(e,a)=>{rC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>_6(e,s,r)});function ON(e){return o6(DN,e)}const qN=J("ZodArray",(e,a)=>{lC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>O6(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(Ru(s,r)),e.nonempty=s=>e.check(Ru(1,s)),e.max=(s,r)=>e.check(c2(s,r)),e.length=(s,r)=>e.check(u2(s,r)),e.unwrap=()=>e.element});function y(e,a){return b6(qN,e,a)}const BN=J("ZodObject",(e,a)=>{uC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>q6(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:ON()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>zA(e,s),e.safeExtend=s=>EA(e,s),e.merge=s=>TA(e,s),e.pick=s=>NA(e,s),e.omit=s=>_A(e,s),e.partial=(...s)=>RA(x2,e,s[0]),e.required=(...s)=>DA(k2,e,s[0])});function m(e,a){const s={type:"object",shape:e??{},..._e(a)};return new BN(s)}const b2=J("ZodUnion",(e,a)=>{r2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>B6(e,s,r,u),e.options=a.options});function Qe(e,a){return new b2({type:"union",options:e,..._e(a)})}const PN=J("ZodDiscriminatedUnion",(e,a)=>{b2.init(e,a),dC.init(e,a)});function qe(e,a,s){return new PN({type:"union",options:a,discriminator:e,..._e(s)})}const MN=J("ZodIntersection",(e,a)=>{mC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>P6(e,s,r,u)});function IN(e,a){return new MN({type:"intersection",left:e,right:a})}const VN=J("ZodRecord",(e,a)=>{pC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>M6(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Le(e,a,s){return new VN({type:"record",keyType:e,valueType:a,..._e(s)})}const hh=J("ZodEnum",(e,a)=>{hC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(r,u,f)=>E6(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 hh({...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 hh({...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 hh({type:"enum",entries:s,..._e(a)})}const LN=J("ZodLiteral",(e,a)=>{fC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T6(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 LN({type:"literal",values:Array.isArray(e)?e:[e],..._e(a)})}const UN=J("ZodTransform",(e,a)=>{gC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>D6(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new Ux(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Cl(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(Cl(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function v2(e){return new UN({type:"transform",transform:e})}const x2=J("ZodOptional",(e,a)=>{l2.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Nb(e){return new x2({type:"optional",innerType:e})}const GN=J("ZodExactOptional",(e,a)=>{yC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h2(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function $N(e){return new GN({type:"optional",innerType:e})}const KN=J("ZodNullable",(e,a)=>{bC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>I6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function _b(e){return new KN({type:"nullable",innerType:e})}const HN=J("ZodDefault",(e,a)=>{vC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>L6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function QN(e,a){return new HN({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():Hx(a)}})}const FN=J("ZodPrefault",(e,a)=>{xC.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 ZN(e,a){return new FN({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():Hx(a)}})}const k2=J("ZodNonOptional",(e,a)=>{kC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>V6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function YN(e,a){return new k2({type:"nonoptional",innerType:e,..._e(a)})}const XN=J("ZodCatch",(e,a)=>{wC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>G6(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function JN(e,a){return new XN({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const WN=J("ZodPipe",(e,a)=>{SC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>$6(e,s,r,u),e.in=a.in,e.out=a.out});function fh(e,a){return new WN({type:"pipe",in:e,out:a})}const e_=J("ZodReadonly",(e,a)=>{jC.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 t_(e){return new e_({type:"readonly",innerType:e})}const n_=J("ZodCustom",(e,a)=>{AC.init(e,a),_t.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R6(e,s)});function a_(e,a={}){return v6(n_,e,a)}function i_(e){return x6(e)}function s0(e,a){return fh(v2(e),a)}const Se={custom:"custom"};function o0(e){return t6(i0,e)}const w2=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(w2)});m({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});w2.extend({key:o()});const s_=m({maxConcurrency:d().int().positive(),maxRequestsPerMinute:d().int().positive(),maxRequestsPerDay:d().int().positive()}),ht=o().min(1),r0=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()}),l0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);l0.enum;const c0=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:l0,cronExpr:o(),recurrence:c0.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 o_=o().datetime();m({kind:l0.optional(),preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:c0.optional(),timezone:o().optional().default("UTC"),enabled:C().optional().default(!0),providers:y(ht).optional().default([]),sourceId:o().optional(),expectedUpdatedAt:o_.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 u0=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(u0),enabled:C().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});m({channel:D("webhook"),url:o().url(),events:y(u0).min(1),source:o().optional()});class r_ 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 zb(e,a){return new r_("VALIDATION_ERROR",e,400,a)}function l_(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 Vp(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 Eb(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 c_=o().trim().min(1).refine(e=>Eb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Eb(e)??e),u_=o().trim().min(1),d_=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"}),d0=m({marketingHosts:y(c_).overwrite(e=>Vp(e,!0)),brandTerms:y(u_).overwrite(e=>Vp(e,!0)),leadEventNames:y(d_).overwrite(e=>Vp(e))});function m_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const Lp=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),S2=()=>m_(),Tb=j(["never-synced","ready","error"]),p_=j(["landing-page","channel"]),h_=j(["30d","60d","90d"]),f_=j(["marketing","all"]),xl=g2(),Dl=m({label:j(["earliest","middle","previous","latest"]),startDate:xl,endDate:xl}),Up=Dl.extend({sessions:d().int().nonnegative()}),Rb=Dl.extend({eventCount:d().int().nonnegative()}),Db=Dl.extend({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),g_=Dl.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()}),y_=Dl.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()}),b_=m({window:h_,bucketDays:D(30),filters:m({hostScope:f_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:D("property")}),acquisition:m({status:Tb,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(Up),channels:y(m({channelGroup:o(),periods:y(Up)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Up)}))}),leads:m({status:Tb,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:p_.nullable(),hostAndPathFiltersApplied:C(),periods:y(Rb),channels:y(m({channelGroup:o(),periods:y(Rb)}))}),engagement:m({status:j(["ready","unavailable"]),availableFromDate:xl.nullable(),latestDate:xl.nullable(),periods:y(y_)}),searchDemand:m({status:j(["ready","unavailable"]),periods:y(g_),queries:y(m({query:o(),classification:j(["branded","non-branded"]),periods:y(Db)})),pages:y(m({hostName:o(),landingPage:o(),periods:y(Db)})),latestDate:xl.nullable()})}),v_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,x_=/[\0-\x1F\x7F-\x9F]/,k_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,w_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var S_=class{src_Any=v_.source;src_Cc=x_.source;src_Z=w_.source;src_P=k_.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")}},Gp={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)},j_={"http:":Gp,"https:":Gp,"ftp:":Gp,"//":{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_="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",C_="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function N_(){const e=C_.split("|");return A_.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 __={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:N_(),urlAuth:!1,maxLength:1e4},Ob=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}},z_=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...__,...s},this.__schemas__={...j_},this.re=a||new S_,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 Ob(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 Ob(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 E_=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 T_(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function R_(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function D_(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(T_(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:R_(a,e)}function O_(e,a){return e.slice(0,-a.length-1)}const $p=/[\t\n\r]/g;let gh=!1;function qb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Bb(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(gh=!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=Bb(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($p,""),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($p,""),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=Bb(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);(!(qb(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&&!qb(K)&&(E=!1);s&&(_=K)}if(N)return kl(e.replace($p,""),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&&(gh=!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 q_(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 B_(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 P_(e){return B_(e)||q_(e)}const M_=["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 I_(e){for(const a of M_)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function Pb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Mb(e){if(e.length>255||e.length===0||!Pb(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(!(Pb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function j2({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 V_=j2({});function L_(e){return e===void 0?V_:j2(e)}function U_(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function G_(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function A2(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 C2(e,a,s,r,u){const f=L_(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=Mb(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=P_(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!gh&&!Mb(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=I_(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=D_(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=U_(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=O_(u.domain,u.publicSuffix)),u)}function $_(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]),Ou=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]),qu=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]),Ib=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]),yh="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",K_=621,H_=625,N2=Vs.length,_2=qu.length,z2=new Uint32Array(_2),Nu=new Uint32Array(_2),bh=new Int32Array(N2).fill(-1);for(let e=0,a=0;e<N2;e+=1)for(let s=Ou[e];s<Ou[e+1];s+=1){z2[s]=a;const r=a+qu[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^yh.charCodeAt(f);Nu[s]=u>>>0,qu[s]===1&&yh.charCodeAt(a)===42&&(bh[e]=s),a=r}let pi=-1,vh=0,xh=0;function Vb(e,a,s,r){if(qu[e]!==r)return!1;const u=z2[e];for(let f=0;f<r;f+=1)if(yh.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function Lb(e,a,s,r,u){let f=Ou[e],g=Ou[e+1];for(;f<g;){const b=f+g>>>1,v=Nu[b];if(v<a)f=b+1;else if(v>a)g=b;else{for(let k=b;k>=f&&Nu[k]===a;k-=1)if(Vb(k,s,r,u))return k;for(let k=b+1;k<g&&Nu[k]===a;k+=1)if(Vb(k,s,r,u))return k;return-1}}return-1}function Ub(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=Lb(r,f>>>0,e,k,u-k);if(S===-1&&(S=bh[r]),S===-1)return pi!==-1;r=Ib[S],(Vs[r]&s)!==0&&(pi=r,vh=k,xh=u),u=b,f=5381}else f=f*33^v}let g=Lb(r,f>>>0,e,0,u);return g===-1&&(g=bh[r]),g!==-1&&(r=Ib[g],(Vs[r]&s)!==0&&(pi=r,vh=0,xh=u)),pi!==-1}function E2(e,a,s){if($_(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(Ub(e,H_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(xh+1);return}if(Ub(e,K_,r)){s.isIcann=(Vs[pi]&1)!==0,s.isPrivate=(Vs[pi]&2)!==0,s.publicSuffix=e.slice(vh);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const Bu=G_();function Q_(e,a){return A2(Bu),C2(e,0,E2,a,Bu).hostname}function F_(e,a){return A2(Bu),C2(e,5,E2,a,Bu).domainWithoutSuffix}const Z_={allowPrivateDomains:!0};new z_({fuzzyLink:!0,fuzzyEmail:!1}).tlds(E_);function Ol(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Q_(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function T2(e){return e==null||e.trim()===""?"":F_(e,Z_)?.toLowerCase()??""}const Y_=new Intl.Segmenter("en",{granularity:"word"}),X_=/[^\p{L}\p{N}]+/gu,J_=/[\p{L}\p{N}]+/gu,W_=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,e8=new RegExp("\\P{ASCII}","u");function t8(e){if(!e8.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&&W_.test(u)?u:s}return a}function R2(e){return t8(e.normalize("NFKC")).toLocaleLowerCase("en")}function D2(e){const a=[];for(const s of Y_.segment(e))if(s.isWordLike)for(const r of s.segment.match(J_)??[])a.push(r);return a}function n8(e){return D2(R2(e))}function Ca(e){return n8(e).join("")}const Gb=new WeakMap;function a8(e){if(!e)return null;const a=R2(e);return{normalized:a,stripped:a.replace(X_,"")}}function i8(e){const a=Gb.get(e);if(a)return a;const s=D2(e.normalized);return Gb.set(e,s),s}function s8(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 o8(e,a){if(!a||e.keys.size===0)return!1;const s=typeof a=="string"?a8(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=i8(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 r8=4,O2=j(["cli","api","config-file"]);function l8(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 c8(e,a){return a?e.some(s=>s.label===a):!0}const u8=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:r0.optional(),locations:y(Yt).optional(),defaultLocation:o().nullable().optional(),measurement:d0.optional(),autoExtractBacklinks:C().optional(),configSource:O2.optional()});u8.extend({name:o().trim().min(1).max(120)});const d8=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:r0.default({}),locations:y(Yt).default([]),defaultLocation:o().nullable().optional(),measurement:d0.default(S2),autoExtractBacklinks:C().default(!1),configSource:O2.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 Pu(e){return Ol(e)??e.trim().toLowerCase().replace(/^www\./,"")}function q2(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=Pu(f);s.has(g)||(s.add(g),r.push(f))}return r}function m8(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 p8(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 m8(e.displayName,e.aliases))r(f);for(const f of q2({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const g=T2(f);if(Ca(g).length>=r8)r(g);else{const b=Pu(f);b.includes(".")&&r(b)}}return a}const h8=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({})}),f8=m({preset:o().min(1).optional(),cron:o().min(1).optional(),recurrence:c0.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(),g8=m({channel:D("webhook"),url:o().url(),events:y(u0).min(1)}),y8=m({gsc:m({propertyUrl:o()}).optional(),syncSchedule:m({preset:o().optional(),cron:o().optional()}).optional()}).optional(),$b=y(o().min(1)),b8=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:$b.optional(),keywords:$b.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:r0.optional().default({}),locations:y(Yt).optional().default([]),defaultLocation:o().optional(),measurement:d0.optional().default(S2),schedule:f8,notifications:y(g8).optional().default([]),google:y8,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=l8(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),c8(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:h8,spec:b8});const v8=["branded","non-brand"],rr=j(v8),x8=j(["all","branded","non-brand"]);function k8(e){const a=e.filter(r=>Ca(r).length>0);if(a.length===0)return null;const s=s8(a);return s.keys.size===0?null:{matcher:s,classify(r){return o8(s,r)?"branded":"non-brand"}}}const w8=2,S8=o().regex(/^[a-f0-9]{64}$/),ed=o().trim().min(1).max(256),Kb=j(["sensitive","insensitive"]),me=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),j8=o().trim().min(1).refine(e=>Ol(e)!==null,"A competitor domain must be a valid hostname"),A8=qe("kind",[m({kind:D("exact"),url:o().min(1),pathCase:Kb}).strict(),m({kind:D("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:Kb}).strict(),m({kind:D("host"),host:o().min(1)}).strict()]),C8=m({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),N8=m({projectBrand:C8}).strict(),_8=m({stableKey:me,label:o().trim().min(1),aliases:y(o().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(A8),mentionNotApplicable:C(),discoveryIdentity:o().min(1).nullable()}).strict(),B2=m({stableKey:me,label:o().trim().min(1),domain:j8,aliases:y(o().min(1))}).strict(),z8=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(B2)}).strict(),E8=j(["manual","query-set","template","discovery","research"]),T8=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(),P2=m({source:E8,sourceId:o().min(1).nullable(),capturedAt:o().datetime(),template:T8.optional()}).strict(),R8=m({queryId:ed,queryText:o().min(1),provenance:P2}).strict(),td=m({providers:y(ht).min(1),models:Le(ht,o().min(1)),location:Yt.nullable()}).strict(),D8=m({stableKey:o().min(1),queryId:ed,queryText:o().min(1),context:td,expectedSnapshots:d().int().nonnegative()}).strict(),m0=rr,O8=m({targetKey:me,queryId:ed,queryClass:m0,classificationSource:j(["server","operator"]).optional(),executionNodeKey:o().min(1)}).strict(),p0=m({executionNodeKey:o().min(1),targetKey:me,queryId:ed}).strict(),M2=m({stableKey:me,label:o().trim().min(1),kind:D("market"),groupKey:me.optional(),usageEdges:y(p0)}).strict();function Hb(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const nd=m({schemaVersion:D(w8),identities:N8,targets:y(_8),groups:y(z8),querySnapshots:y(R8),assignments:y(O8),executionNodes:y(D8),usageEdges:y(p0),reportingScopes:y(M2).optional(),compiledChecksum:S8}).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(Hb)),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=Hb(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}"`})}),h0=100;function Jo(e){return m({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:d().int().nonnegative().optional()}).strict()}const ad=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:ad}).strict()]),f0=j(["all","group","property"]),Ea=x8,q8=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),g0=j(["not_measured","queued","running","complete","partial","failed"]),B8=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);m({scope:f0,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:q8.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();const P8=m({provider:ht,mentionCoverage:zt,citationCoverage:zt}).strict(),M8=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(),I8=m({targetKey:me,label:o().min(1),mentionCoverage:zt,citationCoverage:zt,providers:y(P8),flags:d().int().nonnegative()}).strict(),V8=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(),L8=m({groupKey:me,queryClass:D("non-brand"),denominator:d().int().positive(),entries:y(V8)}).strict();m({mode:j(["active-v1","active-v2"]),scope:m({kind:f0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:g0,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:B8,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(I8),outcomes:M8,flags:m({total:d().int().nonnegative()}).strict(),namedShareOfVoice:L8.optional()}).strict();const I2=j(["sources","answers"]),U8=I2.enum;U8.sources;m({targetKey:me,queryClass:Ea.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:I2.optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();const V2=1,ql=d().int().positive(),Zt=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Bl=o().trim().min(1).max(256),Qb=j(["sensitive","insensitive"]);function Mu(e){const a=Ol(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function G8(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 Fb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function L2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return G8(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function kh(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 L2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function $8(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 Zb(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=Mu(s.hostname),u=kh($8(a));return`https://${r}${u}`}const Nl=o().trim().min(1).refine(e=>{try{return Mu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>Mu(e)),K8=o().trim().min(1).refine(e=>{try{return kh(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>kh(e)),H8=o().trim().min(1).refine(e=>{try{return Zb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Zb(e)),Q8=qe("kind",[m({kind:D("exact"),url:H8,pathCase:Qb}).strict(),m({kind:D("prefix"),host:Nl,pathPrefix:K8,pathCase:Qb}).strict(),m({kind:D("host"),host:Nl}).strict()]),U2=o().trim().min(1).max(256).refine(e=>Ca(e).length>0,"A target alias must contain mention text"),F8=Le(o().trim().min(1),o()),Z8=Nl,G2=m({stableKey:Zt,label:o().trim().min(1),urls:y(Q8).min(1),aliases:y(U2),metadata:F8.optional()}).strict(),y0=m({stableKey:Zt,label:o().trim().min(1),targetKeys:y(Zt).min(1),competitors:y(Z8).optional()}).strict(),$2=m({targetKey:Zt,queryIds:y(Bl).min(1),context:Yt.nullable().optional()}).strict();function Y8(e,a){return e<a?-1:e>a?1:0}function X8(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 Kp(e,a,s,r,u){for(const f of X8(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Yb(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:Mu(a.hostname),pathname:L2(a.pathname||"/")}}function J8(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&Fb(e)===Fb(s)}function W8(e,a){if(e.kind!==a.kind)return!1;const s=Yb(e),r=Yb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:J8(s.pathname,e.pathCase,r.pathname,a.pathCase)}function e7(e){const a=new Set;return[...e].sort(Y8).filter(s=>{const r=Ca(s);return a.has(r)?!1:(a.add(r),!0)})}const K2=m({schemaVersion:D(V2),targets:y(G2).min(1),groups:y(y0).optional(),targetQuerySelections:y($2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];Kp(a,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Kp(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 e7(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&&W8(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)=>{Kp(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}`})})});K2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));m({expectedActiveRevision:ql.nullable(),plan:K2}).strict();const t7=m({queryId:Bl,queryText:o().min(1)}).strict(),b0=m({stableKey:o().min(1),queryText:o().min(1),context:Yt.nullable(),expectedSnapshots:d().int().nonnegative()}).strict(),n7=m({kind:D("baseline"),executionNodeKey:o().min(1),queryId:Bl}).strict(),a7=m({kind:D("target"),executionNodeKey:o().min(1),queryId:Bl,targetKey:Zt}).strict(),wh=qe("kind",[n7,a7]),H2=m({code:D("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Zt).min(1),aliases:y(o().min(1)).min(1)}).strict(),Q2=G2.extend({mentionNotApplicable:C()}),F2=m({schemaVersion:D(V2),defaultContext:Yt.nullable(),effectiveOwnedHosts:y(Nl),projectCanonicalHost:Nl,projectBrandNames:y(U2),targets:y(Q2),groups:y(y0),targetQuerySelections:y($2),querySnapshots:y(t7),executionNodes:y(b0),usageEdges:y(wh),warnings:y(H2)}).strict(),i7=F2,Z2=qe("schemaVersion",[F2,nd]),v0=o().regex(/^[a-f0-9]{64}$/),x0=o().datetime(),Y2=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(),s7=m({groups:y(Zt).optional(),targets:y(Zt).optional()}).strict(),o7=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:ql,checksum:v0,createdAt:x0,plan:Z2}).nullable()});m({versions:y(m({revision:ql,checksum:v0,createdAt:x0,active:C()}))});m({version:m({revision:ql,checksum:v0,createdAt:x0,active:C(),plan:Z2})});const _u=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(),r7=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"]),X2=m({id:r7,severity:j(["fail","warn"]),message:o().min(1),path:y(Qe([o(),d().int()]))}).strict(),l7=m({baseline:d().int().nonnegative(),target:d().int().nonnegative()}).strict(),J2=m({ok:D(!0),checks:y(X2),executionNodes:y(b0),dedupSaved:d().int().nonnegative(),usageEdges:l7,estCostUsd:ce(),plan:i7,warnings:y(H2),counts:_u}).strict(),W2=m({ok:D(!1),checks:y(X2).min(1),executionNodes:y(b0).length(0),dedupSaved:D(0),usageEdges:m({baseline:D(0),target:D(0)}).strict(),estCostUsd:ce()}).strict();qe("ok",[J2,W2]);const hu=m({targetKey:Zt,context:Yt.nullable(),queryIds:y(Bl)}).strict();function Xb(e){return m({added:y(e),removed:y(e),changed:y(m({stableKey:Zt,before:e,after:e}).strict()),unchanged:y(Zt)}).strict()}const c7=J2.extend({diff:m({activeRevision:ql.nullable(),targets:Xb(Q2),groups:Xb(y0),querySelections:m({added:y(hu),removed:y(hu),changed:y(m({targetKey:Zt,before:hu,after:hu}).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(wh),removedUsageEdges:y(wh),counts:m({before:_u.nullable(),after:_u,delta:_u.nullable()}).strict()}).strict()}).strict()}).strict(),u7=W2.extend({diff:ce()}).strict();qe("ok",[c7,u7]);const d7=1,m7=o().refine(e=>e.trim().length>0,{message:"Must not be blank"}),ek=m({displayName:o(),aliases:y(o()),canonicalDomain:o(),ownedDomains:y(o())}).strict(),tk=m({provider:ht.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:o().nullable()}).strict(),nk=m({domain:o(),label:o(),aliases:y(o())}).strict(),ak=m({queryId:m7,queryText:o(),provenance:o().nullable()}).strict(),p7=ak.extend({queryClass:rr.nullable()}).strict();function ik(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:ek,country:o(),language:o(),location:Yt.nullable(),engines:y(tk).min(1),competitors:y(nk).optional(),queries:y(ak)}).strict().superRefine(ik);m({schemaVersion:D(d7),capturedAt:o().datetime(),identity:ek,country:o(),language:o(),location:Yt.nullable(),engines:y(tk).min(1),competitors:y(nk).optional(),queries:y(p7)}).strict().superRefine(ik);const h7=j(["auto","simple","advanced"]),f7=j(["simple","advanced"]),sk=j(["branded","non-brand","unknown","all"]),g7=j(["branded","non-brand","unknown"]),ok=j(["project","group","market","property"]),rk=qe("kind",[m({kind:D("all")}).strict(),m({kind:D("none")}).strict(),m({kind:D("exact"),value:o().trim().min(1)}).strict()]);function y7(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(),b7={mode:h7.default("auto"),queryClass:sk.default("non-brand"),scope:ok.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)},v7=m(b7).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"})});v7.transform(e=>({...e,location:y7(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"}))}),lk=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()]),Sh=m({id:bt,label:o().trim().min(1),kind:ok,targetCount:d().int().nonnegative(),parentGroupIds:y(bt).optional(),marketKeys:y(bt).optional()}).strict(),x7=m({provider:bt,model:bt}).strict(),k7=m({providers:y(bt),models:y(x7),locations:y(rk)}).strict(),w7=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(),S7=m({runId:bt,createdAt:Us,revision:d().int().positive().nullable(),provenance:lk,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(),j7=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(),A7=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(),C7=m({domain:bt,answerCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict(),N7=m({name:bt,answerCount:d().int().nonnegative()}).strict(),_7=qe("state",[m({state:D("available")}).strict(),m({state:D("unavailable"),reason:D("frozen-competitor-identity-missing")}).strict()]),Jb=m({id:bt,label:o().trim().min(1),queryCount:d().int().nonnegative(),mentionCoverage:Aa,citationCoverage:Aa}).strict();function Wb(e){return m({items:y(e),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict()}const ck=m({queryClass:g7,summary:w7,trend:y(S7),queries:Wb(j7),evidence:Wb(A7),competitorAvailability:_7,competitors:y(C7),observedCompetitors:y(N7),breakdown:m({properties:y(Jb),groups:y(Jb)}).strict()}).strict(),z7=j(["measured","not-measured","partial"]),E7=m({state:z7,activeRevision:d().int().positive().nullable(),measuredRevision:d().int().positive().nullable(),awaitingSweep:C(),pendingAssignmentCount:d().int().nonnegative(),completedAt:Us.nullable()}).strict(),uk=m({mode:f7,queryClass:sk,scope:Sh,market:Sh.optional(),provider:o().nullable(),model:o().nullable(),location:rk,time:m({from:Us.nullable(),to:Us.nullable()}).strict(),revision:d().int().positive().nullable(),run:m({id:o().nullable(),explicit:C()}).strict(),provenance:lk,measurement:E7,availability:qe("state",[m({state:D("available")}).strict(),m({state:D("unsupported"),reason:D("advanced-v1")}).strict()])}).strict();m({selection:uk,scopeOptions:y(Sh),filterOptions:k7,populations:y(ck).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 T7(e,a){let s=e;for(const[r,u]of Object.entries(a))s=s.split(`{${r}}`).join(u);return s.trim()}const k0=o().regex(/^[a-f0-9]{64}$/),Fn=o().trim().min(1).max(256),Na=o().trim().min(1).max(4e3),w0=o().datetime(),id=o().regex(/^qtw_[a-f0-9]{64}$/),dk=o().regex(/^qtp_[a-f0-9]{64}$/),S0=j(["simple","advanced"]),mk=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(),R7=m({source:j(["manual","query-set","template","research","discovery"]),sourceId:Fn.nullable(),capturedAt:o().datetime(),template:mk.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."})}),D7=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()]),j0=m({targetKeys:y(me).optional(),groupKeys:y(me).optional(),marketKeys:y(me).optional()}).strict(),O7=m({providers:y(ht).min(1),models:Le(ht,o().trim().min(1)),location:o().trim().min(1).nullable()}).strict(),q7=m({input:D7,audience:j0.optional(),contexts:y(O7).min(1).optional(),queryClass:rr.optional()}).strict(),B7=m({queryId:Fn.optional(),queryText:Na.optional(),audience:j0.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."})}),P7=m({queryId:Fn,audience:j0.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."})}),M7=m({additions:y(q7),removals:y(B7),edits:y(P7).optional()}).strict(),I7=M7.extend({expectedWorkspaceVersion:id}).strict();I7.extend({previewToken:dk,reviewedAt:w0}).strict();const V7=m({stableKey:me,label:o().trim().min(1)}).strict(),L7=m({stableKey:me,parentGroupKey:me.optional(),label:o().trim().min(1),targetKeys:y(me)}).strict(),U7=m({stableKey:me,groupKey:me.optional(),label:o().trim().min(1),usageEdges:y(p0)}).strict(),G7=m({targetKey:me,groupKeys:y(me),marketKeys:y(me),queryClass:rr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(td).min(1)}).strict(),pk=m({queryId:Fn,queryText:Na,normalizedText:Na,provenance:R7.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:o().datetime().nullable(),assignments:y(G7)}).strict(),$7=m({researchRunId:Fn,researchRunQueryId:Fn,queryText:Na,createdAt:o().datetime()}).strict(),K7=m({discoverySessionId:Fn,discoveryProbeId:Fn,queryText:Na,createdAt:o().datetime()}).strict();m({mode:S0,workspaceVersion:id,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),defaultContexts:y(td),targets:y(V7),groups:y(L7),markets:y(U7),tracked:y(pk),savedSources:m({research:y($7),discovery:y(K7)}).strict()}).strict();const fu=m({queryId:Fn,queryText:Na,assignmentCount:d().int().nonnegative()}).strict(),hk=m({added:y(fu),removed:y(fu),reused:y(fu),unchanged:y(fu),noOp:C()}).strict(),fk=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:S0,workspaceVersion:id,previewToken:dk,reviewedAt:w0,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),tracked:y(pk),diff:hk,workload:fk}).strict();m({committed:C(),mode:S0,workspaceVersion:id,reviewedAt:w0,active:m({revision:d().int().positive(),compiledChecksum:k0}).strict().nullable(),diff:hk,workload:fk}).strict();const sd=j(["complete","partial","failed","unsupported"]);sd.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 H7=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Q7=m({kind:j(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),ev=m({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),A0=m({primary:ev,aliases:y(ev).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Q7).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:A0,maxUrls:d().int().positive().max(1e4).optional()}).strict();const Hp=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"})}),F7=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(),Z7=m({classification:D("alias"),reason:D("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Zt}).strict(),Y7=m({kind:H7,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();m({proposed:y(F7),aliases:y(Z7),shared:y(Hp),unmatched:y(Hp),excluded:y(Hp),diagnostics:y(Y7)}).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 C0=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),gk=j(["baseline","target"]),yk=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:yk}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),X7=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),J7=m({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:X7,context:Yt.nullable(),requestedModel:o().trim().min(1).optional()}).strict();m({schemaVersion:D(1),expectedSlots:y(J7)}).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 od=m({executed:d().int().nonnegative(),expected:d().int().nonnegative(),complete:C(),sourceComplete:C(),sourceCompleteObservations:d().int().nonnegative(),answerComplete:C()}).strict(),tv=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:yk}).strict()]),W7=m({domains:y(tv),providers:y(m({provider:ht,domains:y(tv)}).strict())}).strict(),ez=m({provider:ht,completeness:od,answerCoverage:Gs}).strict(),tz=m({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:od,answerCoverage:Gs,targetCoverage:Gs,sov:W7,providers:y(ez)}).strict(),nz=m({provider:ht,completeness:od,citationCoverage:Gs,mentionCoverage:Gs}).strict(),az=m({id:o().trim().min(1),label:o().trim().min(1),completeness:od,citationCoverage:Gs,mentionCoverage:Gs,providers:y(nz)}).strict(),bk=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:gk,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:C(),historical:C(),evidenceComplete:C(),classification:C0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),iz=m({sourceUrl:o(),normalizedUrl:o().nullable(),classification:C0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),sz=m({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:gk,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(iz),sourceCount:d().int().nonnegative(),sourcesTruncated:C(),bridged:C(),historical:C(),evidenceComplete:C()}).strict(),oz=m({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),rz=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:rz.nullable(),groups:y(tz),targets:y(az),evidence:y(bk),diagnostics:oz}).strict();m({property:m({targetKey:me,label:o().min(1)}).strict(),queryClass:Ea,measurement:m({state:g0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:Jo(bk).optional(),answers:Jo(sz).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 N0=j(["used","not-used","unknown","not-applicable"]);N0.enum;const _0=j(["native-auto-v1","search-required-v1"]);_0.enum;const _a=o().trim().min(1),Pl=o().trim().min(1),lz=o().trim().min(1),ot=d().int().nonnegative(),Ml=m({state:g0,displayedRunId:_a.nullable(),planRevision:d().int().positive(),completedAt:o().datetime().nullable()}).strict(),Ji=m({targetKey:me,label:Pl}).strict(),Zn={runId:_a.optional(),provider:ht.optional(),location:lz.optional()},_l=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 cz=Ji.extend({mentionCoverage:zt,citationCoverage:zt,flags:ot,recommendedInstead:y(m({name:_l,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"})}),uz=m({groupKey:me,label:Pl,propertyCount:ot,propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),dz=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:ad}).strict()),truncated:C()}).strict();m({portfolio:m({groupKey:me.nullable(),label:Pl.nullable(),measurementScope:Qe([j(["full","spot_check"]),ce()])}).strict(),measurement:Ml,queryClass:Ea,metrics:m({propertiesMentioned:zt,mentionCoverage:zt,citationCoverage:zt}).strict(),weakestProperties:y(cz),mentionRanking:dz,markets:y(uz),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 jh={queryId:_a,text:Pl,class:m0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},mz=qe("status",[m({resultId:_a,...jh,status:D("answered"),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(_l),answerExcerpt:o().nullable()}).strict(),m({resultId:ce(),...jh,status:D("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(_l).length(0),answerExcerpt:ce()}).strict()]);m({property:Ji,measurement:Ml,queryClass:Ea,questions:y(mz),total:ot,truncated:C()}).strict();m({targetKey:me,resultId:_a}).strict();const pz=m({url:_a,classification:C0,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:Ml,question:m({resultId:_a,...jh,status:D("answered")}).strict(),mentioned:C().nullable(),cited:C().nullable(),recommendedInstead:y(_l),answer:o().nullable(),sources:y(pz),captureStatus:Qe([sd,ce()]),retrievalStatus:Qe([N0,ce()]),retrievalContract:Qe([_0,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 hz=qe("state",[m({state:D("available"),answeredResults:ot,targetMissResults:ot,recommendationOccurrences:ot}).strict(),m({state:D("unavailable"),reason:ad}).strict()]),fz=m({name:_l,occurrences:ot,providers:y(ht).max(5),providerTotal:ot,providersTruncated:C(),questions:y(Pl).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:Ml,queryClass:Ea,basis:hz,competitors:y(fz),total:ot,truncated:C()}).strict();m({runId:Zn.runId,scope:f0.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 vk=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),xk=Ml.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:ad}).strict()]);m({current:xk,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:vk}).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 gz=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),rd=m({state:D("unavailable"),reason:gz}).strict(),yz=m({state:D("available"),expected:ot,executed:ot,answered:ot,missing:ot}).strict(),bz=qe("state",[yz,rd]).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"}))}),vz=m({state:D("available"),complete:ot,partial:ot,failed:ot,unsupported:ot,notRecorded:ot}).strict(),xz=qe("state",[vz,rd]),kz=m({state:D("available"),used:ot,notUsed:ot,unknown:ot,notApplicable:ot,notRecorded:ot}).strict(),wz=qe("state",[kz,rd]),Sz=m({state:D("available"),expectedQuestions:ot,answeredQuestions:ot,missingQuestions:ot}).strict(),jz=qe("state",[Sz,rd]).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:xk,completeness:bz,capture:xz,retrieval:wz,population:jz,comparison:qe("state",[m({state:D("available"),previousDisplayedRunId:_a}).strict(),m({state:D("unavailable"),reason:vk}).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(),nv=m({kind:j(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),Az=j(["proposed","included","excluded"]),Cz=j(["manual","sitemap"]),z0=m({stableKey:me,label:o().trim().min(1),status:Az,aliases:y(o().trim().min(1)),identityAliases:y(o().trim().min(1)).optional(),urlMatchers:y(o().trim().min(1)),source:Cz,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),ld=m({providers:y(ht).optional(),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),Nz=j(["branded","non-brand","unclassified"]),_z=j(["rule","operator"]),kk=m({targetKey:me,queryId:za,contextOverride:ld.optional(),executionContexts:y(td.extend({executionNodeKey:o().min(1).optional()})).min(1).optional(),queryProvenance:P2.optional(),queryClass:Nz,classificationSource:_z}).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."})}),cd=B2,wk=m({stableKey:me,label:o().trim().min(1),parentGroupKey:me.optional(),targetKeys:y(me),competitors:y(cd)}).strict(),zz=m({sitemapUrl:o().url(),rule:A0,exclusions:y(o().trim().min(1)),inputChecksum:Wo,reviewedAt:o().datetime().optional()}).strict(),Ez=m({providers:y(ht),models:Le(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),Sk=M2,Tz=m({defaultContext:Ez,targets:y(z0),assignments:y(kk),groups:y(wk),reportingScopes:y(Sk).optional(),discovery:zz.optional()}).strict(),Rz=m({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:D(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:Ga.nullable(),authoring:Tz,createdBy:nv,updatedBy:nv,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),E0=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(),Dz=m({code:o().trim().min(1),message:o().trim().min(1),path:y(Qe([o(),d().int()]))}).strict(),jk=m({etag:o().trim().min(1),changed:C(),warnings:y(Dz),counts:E0}).strict();m({draft:Rz.nullable(),etag:o().trim().min(1).nullable()}).strict();Jo(z0);Jo(kk);Jo(wk);m({search:o().optional(),cursor:o().trim().min(1).optional(),limit:d().int().positive().max(h0).optional()}).strict();m({expectedActiveRevision:Ga.nullable()}).strict();m({sitemapUrl:o().url(),rule:A0,exclusions:y(o().trim().min(1)).optional()}).strict();const Oz=m({discoveryIdentity:o().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:me.optional(),label:o().trim().min(1).optional()}).strict();m({selections:y(Oz),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:z0}).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 Ak={targetKeys:y(me).optional(),groupKeys:y(me).optional()};function Ck(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(Ak).strict().superRefine(Ck);const qz=m({...Ak,queryIds:y(za).min(1),contextOverride:ld.optional()}).strict().superRefine(Ck);Qe([m({targetKey:me,queryIds:y(za).min(1),contextOverride:ld.optional()}).strict(),qz]);const Bz=m({groupKey:me,label:o().trim().min(1),memberCount:d().int().positive()}).strict();m({draftEtag:o().trim().min(1),groups:y(Bz),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:ld.optional()}).strict();Qe([m({targetKey:me,queryId:za}).strict(),m({targetKeys:y(me).min(1),queryId:za}).strict()]);m({targetKey:me}).strict();m({queryClass:m0,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(cd).optional()}).strict()}).strict();m({market:Sk}).strict();m({groupKey:me}).strict();m({groupKey:me,competitor:cd}).strict();m({expectedActiveRevision:Ga,groupKey:me,domain:o().trim().min(1).refine(e=>Ol(e)!==null,"A competitor domain must be a valid hostname"),label:o().trim().min(1).optional(),aliases:y(o().trim().min(1)).optional()}).strict();jk.extend({groupKey:me,competitor:cd,draftCreated:C(),published:m({revision:Ga,competitorsChanged:D(!1)}).strict()}).strict();m({groupKey:me,competitorKey:me}).strict();const Iu=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(Iu),counts:E0,plan:nd}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Iu).min(1)}).strict()]);const av=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(),Pz=m({activeRevision:Ga.nullable(),targets:av,groups:av,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(Iu),counts:E0,plan:nd,diff:Pz}).strict(),m({ok:D(!1),compiledChecksum:ce(),checks:y(Iu).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:nd}).strict()}).strict();m({discarded:C()}).strict();m({expectedActiveRevision:Ga}).strict();m({deactivated:C(),previousRevision:Ga.nullable()}).strict();const Mz=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),Iz=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),Vz=j(["simple","draft-only","active-v1","active-v2"]);m({state:Mz,nextAction:Iz,mode:Vz,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 Nk=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(),Lz=m({queryId:za,queryText:o().min(1),position:d().int().nonnegative()}).strict();Nk.extend({items:y(Lz)}).strict();m({querySets:y(Nk)}).strict();m({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(za)}).strict();const Uz=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(Uz)}).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 Vu=o().regex(/^[a-f0-9]{64}$/),ud=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 Gz=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"]),Ah=m({dataRow:ud,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),pl=Ah.extend({reason:Gz}),$z=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(),Kz=m({proposedGroupKey:me,evidence:y($z).min(1)}).strict(),Hz=qe("status",[Ah.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:Kz.optional()}).strict(),Ah.extend({status:D("duplicate"),duplicateOfRow:ud,targetKey:me,groupKey:me}).strict(),pl.extend({status:D("proposed"),targetKey:me}).strict(),pl.extend({status:D("excluded"),targetKey:me}).strict()]),Qz=m({normalizedGroupLabel:o(),groupKey:me,label:o().trim().min(1),action:j(["create","extend"]),matchedRows:y(ud),targetKeys:y(me),addedTargetKeys:y(me),unchangedTargetKeys:y(me)}).strict(),Fz=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:Vu,previewChecksum:Vu,rows:y(Hz),groupChanges:y(Qz),counts:Fz}).strict();m({csv:o(),sourceChecksum:Vu,previewChecksum:Vu,acceptedRows:y(ud).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."})});jk.extend({appliedRows:d().int().nonnegative(),addedMemberships:d().int().nonnegative(),unchangedMemberships:d().int().nonnegative()}).strict();const _k=j(["introduced","repointed","retired"]),Zz=_k.enum;m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:_k,confirmed:C(),sourceUrl:o().url(),note:o().min(1)});const Yz=[{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.'}];Zz.repointed;new Set(Yz.map(e=>e.modelId.toLowerCase()));const Xz=j(["not-exposed","no-known-change","known-change"]);Xz.enum;const Jz=m({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:C(),sourceUrl:o().url()}),Wz=m({status:j(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(Jz),changeCount:d().int().nonnegative(),unverifiedChangeCount:d().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:C()}),eE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function tE(e){const a=e.trim().toLowerCase();return eE[a]??e.charAt(0).toUpperCase()+e.slice(1)}function Qp(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 Fp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function nE(e,a){const s=tE(e),r=Array.isArray(a.changes)?a.changes:[],u=Qp(a.changeCount)||r.length,f=Math.min(u,Qp(a.unverifiedChangeCount)||Qp(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:Fp(r.filter(S=>S.confirmed!==!1).map(S=>hl(S.date))),unconfirmedDates:Fp(r.filter(S=>S.confirmed===!1).map(S=>hl(S.date)))};const k=Fp([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 aE(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 iv(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 iE(e){const a=iv(e.confirmedDates,e.confirmedCount),s=iv(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 sv(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 jH(e){const a=Object.entries(e??{}).map(([v,k])=>nE(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=sv(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 ${aE(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=sv(a);return{kind:"change",text:`${s.map(iE).join(" ")} ${g}${b?` ${b}`:""}`}}const Ls=m({slope:d(),intercept:d(),r2:d(),start:d(),end:d(),n:d(),startIndex:d(),endIndex:d()}),sE=j(["gsc","ga4","gbp"]);m({id:o(),domain:o(),connectionType:sE,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const oE=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(oE),totalMatching:d(),truncated:C(),latestAvailableDate:o().nullable()});const rE=m({date:o(),clicks:d(),impressions:d(),ctr:d(),position:d().nullable()}),lE=m({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:d().nullable()}),cE=m({clicks:Ls.nullable(),impressions:Ls.nullable(),ctr:Ls.nullable(),position:Ls.nullable()}),ov=m({startDate:o(),endDate:o(),clicks:d(),impressions:d(),ctr:d().nullable(),position:d().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),uE=m({days:d(),basis:j(["prior-window","split-window"]).optional(),prior:ov,trailing:ov,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(rE),window:lE.optional(),trends:cE.optional(),periodComparison:uE.nullable().optional()});const dE=m({page:o(),clicks:d(),impressions:d(),ctr:d()});m({rows:y(dE),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 Ch=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 mE=m({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),pE=m({reason:o(),count:d(),urls:y(Ch).default([])});m({summary:m({total:d(),indexed:d(),notIndexed:d(),deindexed:d(),percentage:d()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Ch).default([]),notIndexed:y(Ch).default([]),deindexed:y(mE).default([]),reasonGroups:y(pE).default([])});m({url:o(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const hE=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(hE).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 fE=m({siteUrl:o(),permissionLevel:o()});m({sites:y(fE).default([])});const gE=m({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),zk=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(gE).optional()});m({sitemaps:y(zk).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 yE=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(yE)});m({sitemaps:y(zk),primarySitemapUrl:o(),run:m({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const at=o().trim().min(1),rv=o().regex(/^[a-f0-9]{64}$/i);function bE(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(bE,{message:"Expected a calendar date as YYYY-MM-DD."});function vE(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 xE=j(["not-connected","selection-required","connected","stale"]),gu=xE.enum,Ek=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);Ek.enum;const T0=j(["enabled","paused","removed","unknown"]);T0.enum;const Tk=j(["enabled","hidden","removed","unknown"]);Tk.enum;const R0=j(["customer","campaign"]);R0.enum;const Rk=j(["customer-goal","campaign-goal","custom-goal"]);Rk.enum;const Dk=m({loginCustomerId:at.nullable(),customerId:at.nullable(),selectedAt:o().nullable()}).strict(),Zp=m({id:at,projectId:at,scopes:y(o()).default([]),selection:Dk,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Nh=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:Ek}).strict(),kE=m({customers:y(Nh),totalAccessible:d().int().nonnegative(),truncated:C(),selection:Dk,fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(gu["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(gu["selection-required"]),connection:Zp,selectedCustomer:ce()}).strict(),m({connected:D(!0),status:D(gu.connected),connection:Zp,selectedCustomer:Nh}).strict(),m({connected:D(!0),status:D(gu.stale),connection:Zp,selectedCustomer:Nh}).strict()]);const wE=m({id:at,resourceName:at,name:o(),status:T0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),SE=m({id:at,resourceName:at,name:o(),status:Tk,category:o(),origin:o(),primaryForGoal:C(),includeInConversionsMetric:C()}).strict(),jE=m({category:o(),origin:o(),biddable:C()}).strict(),AE=m({campaignId:at,category:o(),origin:o(),biddable:C()}).strict(),CE=m({id:at,name:o(),conversionActionIds:y(at)}).strict(),NE=m({campaignId:at,goalConfigLevel:R0,customGoalId:at.nullable()}).strict(),_E=m({customerId:at,fetchedAt:o(),campaigns:y(wE),conversionActions:y(SE),customerConversionGoals:y(jE),campaignConversionGoals:y(AE),campaignConversionGoalsComplete:C().optional(),customConversionGoals:y(CE),campaignGoalConfigurations:y(NE)}).strict(),zE=m({source:Rk,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(),EE=m({campaignId:at,goalConfigLevel:R0,customGoalId:at.nullable(),missingCustomGoalId:at.nullable(),goals:y(zE)}).strict();m({customerId:at,derivedAt:o(),campaigns:y(EE)}).strict();const Ok=50,_h=31,TE=Ok*_h,RE=m({campaignIds:y(at).min(1).max(Ok),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}vE(e.startDate,e.endDate)>_h&&a.addIssue({code:Se.custom,path:["endDate"],message:`Campaign metrics may cover at most ${_h} calendar days.`})}),DE=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(),OE=m({query:RE,rows:y(DE).max(TE),truncated:C(),fetchedAt:o()}).strict(),qk=j(["accessible-customers","inventory","campaign-metrics"]),Yp=qk.enum,D0=m({id:at,projectId:at,connectionId:at,runId:at,kind:qk,customerId:at.nullable(),payloadChecksum:rv,rawPayloadSha256:rv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),qE=qe("kind",[m({kind:D(Yp["accessible-customers"]),data:kE}).strict(),m({kind:D(Yp.inventory),data:_E}).strict(),m({kind:D(Yp["campaign-metrics"]),data:OE}).strict()]),BE=m({metadata:D0,payload:qE}).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."})}),PE=j(["7d","14d","30d"]),O0=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()}),ME=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()}),IE=m({campaignId:at,name:o().nullable(),status:T0,totals:O0}),VE=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()}),LE=m({startDate:Ua,endDate:Ua,days:d().int().positive(),totals:O0}),UE=m({days:d().int().positive(),prior:LE,change:m({impressions:d().nullable(),clicks:d().nullable(),costMicros:d().nullable(),conversions:d().nullable(),ctr:d().nullable(),conversionRate:d().nullable()})});m({window:PE,startDate:Ua,endDate:Ua,days:d().int().positive(),totals:O0,daily:y(ME),campaigns:y(IE),comparison:UE.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:VE.nullable()});const nt=o().trim().min(1),lv=o().regex(/^[a-f0-9]{64}$/i),GE=j(["not-connected","selection-required","connected","stale"]),yu=GE.enum,$E=j(["live","draft"]),Bk=$E.enum,zu=m({accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),selectedAt:o().nullable()}).strict(),Xp=m({id:nt,projectId:nt,scopes:y(o()).default([]),selection:zu,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Pk=m({id:nt,path:o(),name:o(),shareData:C().nullable()}).strict(),Mk=m({accountId:nt,id:nt,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),q0=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),KE=m({accounts:y(Pk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containers:y(Mk),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();m({accountId:nt,containerId:nt,workspaces:y(q0),totalAccessible:d().int().nonnegative(),truncated:C(),fetchedAt:o()}).strict();const HE=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(),QE=m({id:nt,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),FE=m({id:nt,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),Ik=j(["recognized","unknown"]),cv=Ik.enum,ZE=j(["literal","variable-ref","absent","unknown"]),dd=ZE.enum,YE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),lr=m({source:D(dd.absent),literal:ce(),variableRef:ce()}).strict(),cr=m({source:D(dd.unknown),literal:ce(),variableRef:ce()}).strict(),ur=m({source:D(dd["variable-ref"]),literal:ce(),variableRef:YE}).strict();function Il(e){return m({source:D(dd.literal),literal:e,variableRef:ce()}).strict()}const XE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),JE=o().trim().min(1).max(128).regex(/^[\w-]+$/),WE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),eT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[Il(o().trim().min(1).max(256)),ur,lr,cr]);const tT=qe("source",[Il(XE),ur,lr,cr]),nT=qe("source",[Il(JE),ur,lr,cr]),aT=qe("source",[Il(WE),ur,lr,cr]),iT=qe("source",[ur,lr,cr]),sT=qe("source",[Il(eT),ur,lr,cr]),Vk=j(["all-pages","custom-event","filtered","unknown"]);Vk.enum;const uv=m({operator:o().trim().min(1).max(64),value:o().max(2048),negated:C(),ignoreCase:C()}).strict(),oT=m({triggerId:nt,triggerType:o(),eventPredicates:y(uv),hostnamePredicates:y(uv),unsupportedConditionCount:d().int().nonnegative()}).strict(),Lk=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"]);Lk.enum;const rT=m({tagId:nt,tagType:o(),recognition:Ik,recognitionReason:o().nullable(),conversionId:tT,conversionLabel:nT,value:aT,transactionId:iT,currency:sT,triggerStrategy:Vk,triggerIds:y(nt),triggerPredicates:y(oT),reviewReasons:y(Lk)}).strict().superRefine((e,a)=>{e.recognition===cv.recognized&&e.recognitionReason!==null&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===cv.unknown&&!e.recognitionReason&&a.addIssue({code:Se.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Uk=m({accountId:nt,containerId:nt,workspaceId:nt.nullable(),tags:y(HE),triggers:y(QE),variables:y(FE),googleAdsTagAssessments:y(rT).default([])}).strict(),lT=m({accountId:nt,containerId:nt,id:nt,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:C()}).strict(),Gk=m({source:D(Bk.live),version:lT,graph:Uk,fetchedAt:o()}).strict(),$k=m({source:D(Bk.draft),workspace:q0,graph:Uk,conflictCount:d().int().nonnegative(),fetchedAt:o()}).strict(),cT=m({account:Pk,container:Mk,workspaces:y(q0),live:Gk.nullable(),draft:$k.nullable(),fetchedAt:o()}).strict();qe("status",[m({connected:D(!1),status:D(yu["not-connected"]),connection:ce(),selection:ce()}).strict(),m({connected:D(!0),status:D(yu["selection-required"]),connection:Xp,selection:zu}).strict(),m({connected:D(!0),status:D(yu.connected),connection:Xp,selection:zu}).strict(),m({connected:D(!0),status:D(yu.stale),connection:Xp,selection:zu}).strict()]);const Kk=j(["accounts","container","live","draft"]),bu=Kk.enum,B0=m({id:nt,projectId:nt,connectionId:nt,runId:nt,kind:Kk,accountId:nt.nullable(),containerId:nt.nullable(),workspaceId:nt.nullable(),payloadChecksum:lv,rawPayloadSha256:lv.nullable(),rawPayloadBytes:d().int().nonnegative().nullable(),redactedFieldCount:d().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),uT=qe("kind",[m({kind:D(bu.accounts),data:KE}).strict(),m({kind:D(bu.container),data:cT}).strict(),m({kind:D(bu.live),data:Gk}).strict(),m({kind:D(bu.draft),data:$k}).strict()]),dT=m({metadata:B0,payload:uT}).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),mT=o().trim().min(1).refine(e=>Ol(e)!==null,"Expected a hostname or http(s) URL."),P0=j(["configured","statically-consistent","runtime-unverified","observed"]);P0.enum;const Hk=j(["pass","fail","unknown"]);Hk.enum;const Qk=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"]);Qk.enum;const Fk=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(mT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();Fk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const Zk=j(["not-run","consistent","inconsistent"]);Zk.enum;const Yk=j(["not-run","not-observed","observed"]);Yk.enum;m({staticCheck:Zk,runtimeVerificationRequired:C(),runtimeObservation:Yk}).strict();const pT=m({code:Qk,subject:o().trim().min(1),outcome:Hk,status:P0,evidenceIds:y(On).default([])}).strict(),hT=m({contract:Fk,status:P0,findings:y(pT),evaluatedAt:o()}).strict(),dv=m({id:On,name:o(),detail:o(),active:C()});m({googleAds:m({customerId:On.nullable(),syncedAt:o().nullable(),conversionActions:y(dv)}),gtm:m({containerId:On.nullable(),syncedAt:o().nullable(),tags:y(dv)})});const wl=o().trim().min(1);function mv(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const fT=/^[\w-]+$/;function M0(e){const a=e.trim();return fT.test(a)?a:null}function gT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??M0(a)}function yT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:M0(s)}function bT(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:M0(r)}function vT(e){const a=mv(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=mv(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function xT(e){const a=gT(e.accountId);if(!a)return null;const s=yT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=bT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const md=j(["google-ads","gtm"]);md.enum;m({provider:md,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();m({provider:md,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();m({loginCustomerId:wl.nullable().optional(),customerId:wl}).strict().superRefine((e,a)=>{vT(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)=>{xT(e)||a.addIssue({code:Se.custom,message:"GTM resource paths must match the selected account and container."})});m({provider:md,disconnected:C()}).strict();const Xk=100;m({snapshots:y(D0).max(Xk),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:BE}).strict();m({snapshots:y(B0).max(Xk),nextCursor:o().nullable(),total:d().int().nonnegative()}).strict();m({snapshot:dT}).strict();m({assessment:hT,googleAdsSnapshot:D0.nullable(),gtmSnapshot:B0.nullable()}).strict();const kT=m({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});m({accounts:y(kT),total:d().int().nonnegative()});const wT=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(wT),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 ST=m({locationName:o(),date:o(),metric:o(),value:d().int()});m({metrics:y(ST),total:d().int().nonnegative()});const jT=m({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:d().int().nullable(),valueThreshold:d().int().nullable()});m({keywords:y(jT),total:d().int().nonnegative(),thresholdedPct:d().int().min(0).max(100)});const AT=m({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:C(),providerType:o().nullable()});m({placeActions:y(AT),total:d().int().nonnegative()});const CT=m({locationName:o(),populatedGroupCount:d().int().nonnegative(),syncedAt:o(),attributes:Le(o(),qn())});m({lodging:y(CT),total:d().int().nonnegative()});const NT=m({name:o(),valueType:o(),values:y(Qe([C(),o()])),unsetValues:y(o()),uris:y(o())}),_T=m({locationName:o(),attributeCount:d().int().nonnegative(),syncedAt:o(),attributes:y(NT)});m({attributes:y(_T),total:d().int().nonnegative()});const zT=m({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Le(o(),qn())});m({places:y(zT),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 ET={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 TT(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 AH(e){return ET[e]??TT(e)}const RT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],DT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function CH(e){return RT.includes(e)?"conversion":DT.includes(e)?"reach":"other"}m({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const Jp=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(Jp).default([]),notIndexed:y(Jp).default([]),unknown:y(Jp).default([]).optional()});m({query:o(),impressions:d(),clicks:d(),ctr:d(),averagePosition:d()});m({date:o(),indexed:d(),notIndexed:d(),unknown:d()});const OT=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(OT).default([])});const Jk=m({url:o(),verified:C()});m({sites:y(Jk).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(Jk).default([])});m({siteUrl:o()});const qT=m({name:o(),alive:C(),lastUsed:o().nullable()});m({connected:C(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(qT).default([])});const dr=j(["live","staging"]);m({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:dr,createdAt:o(),updatedAt:o()});const pv=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:pv.nullable(),staging:pv.nullable(),adminUrl:o().nullable().optional()});const BT=m({id:d(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),Wk=m({title:o().nullable(),description:o().nullable(),noindex:C().nullable(),writable:C().default(!1),writeTargets:y(o()).default([])}),PT=m({type:o(),json:Le(o(),qn())}),MT=BT.extend({env:dr,content:o(),seo:Wk,schemaBlocks:y(PT).default([])}),hv=MT.extend({contentHash:o(),contentSnippet:o()}),ew=m({manualRequired:D(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),IT=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:Wk,schemaPresent:C(),issues:y(IT).default([])});const VT=m({slug:o(),status:j(["applied","skipped","manual"]),error:o().optional(),manualAssist:ew.optional()});m({env:dr,strategy:j(["plugin","manual"]),results:y(VT)});const LT=m({slug:o(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ew.optional(),error:o().optional()});m({env:dr,results:y(LT)});const UT=m({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:C()});m({env:dr,pages:y(UT)});const GT=m({name:o(),status:j(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});m({projectName:o(),steps:y(GT)});m({slug:o(),live:hv,staging:hv,hasDifferences:C(),differences:m({title:C(),slug:C(),content:C(),seoTitle:C(),seoDescription:C(),noindex:C(),schema:C()})});const $T=m({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:C(),quota:s_.optional(),vertexConfigured:C().optional()}),KT=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()}),fv=m({configured:C()});m({providers:y($T).default([]),providerCatalog:y(KT).default([]),google:fv,bing:fv});const pa=j(["queued","running","completed","partial","failed","cancelled"]),xn=pa.enum,I0=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=I0.enum;m({kind:I0.optional(),status:pa.optional()});const V0=j(["manual","scheduled","config-apply","backfill","probe"]),Qo=V0.enum,fi=j(["cited","not-cited"]),Lu=fi.enum,Uu=j(["visible","not-visible"]);Uu.enum;const zl=j(["mentioned","not-mentioned"]);zl.enum;const tw=j(["new","cited","lost","emerging","not-cited"]);tw.enum;const HT=j(["new","mentioned","lost","emerging","not-mentioned"]);HT.enum;const QT=j([Qo.manual,Qo.probe]);m({kind:D(ze["answer-visibility"]).optional(),trigger:QT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:s7.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 FT=m({message:o(),raw:qn().optional()}),ZT=m({message:o().optional(),providers:Le(o(),FT).optional()}),YT=m({id:o(),projectId:o(),kind:I0,status:pa,trigger:V0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Le(o(),qn()).nullable().optional(),measurementScope:o7.nullable().optional(),measurementExecutionIdentity:Y2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:ZT.nullable().optional(),queryBasketRevision:d().int().nullable().optional(),createdAt:o()});function L0(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 pd=m({uri:o(),title:o()}),XT=m({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:Yt.nullable().optional()}),nw=m({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:fi,answerMentioned:C().optional(),visibilityState:Uu.optional(),mentionState:zl.optional(),transition:tw.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Qe([sd,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([N0,ce()]).default(null),retrievalContract:Qe([_0,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(pd).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:Yt.nullable().optional(),supportedContext:XT.nullable().optional(),createdAt:o()});m({snapshots:y(nw),total:d().int().nonnegative()});const JT=m({queryId:o().nullable(),query:o().nullable(),run1State:fi.nullable(),run2State:fi.nullable(),run1AnswerMentioned:C().nullable(),run2AnswerMentioned:C().nullable(),run1VisibilityState:Uu.nullable(),run2VisibilityState:Uu.nullable(),run1MentionState:zl.nullable().optional(),run2MentionState:zl.nullable().optional(),changed:C(),visibilityChanged:C()});m({run1:o(),run2:o(),diff:y(JT)});const WT=YT.extend({snapshots:y(nw).optional()}),e9=m({totalRuns:d().int().nonnegative(),run:WT.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 aw=j(["all","api","browser"]);aw.enum;const t9=j(["yes","no","unknown","not-mentioned"]),gv=y(o().min(1)),yv=m({companyName:o().min(1),domain:o().min(1),queries:gv.optional(),phrases:gv.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:aw.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"]})});yv.safeExtend({competitors:yv.shape.competitors.default([])});const n9=m({name:o(),count:d().int().nonnegative()}),a9=m({id:o(),name:o(),weight:d(),score:d(),findings:y(m({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),i9=m({url:o(),finalUrl:o(),auditedAt:o(),overallScore:d(),summary:o(),factors:y(a9).default([])}),s9=m({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),o9=m({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:C(),cited:C(),describedAccurately:t9,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(pd).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),r9=m({query:o(),providerResults:y(o9).default([])}),l9=m({totalQueries:d().int().nonnegative(),totalProviders:d().int().nonnegative(),totalComparisons:d().int().nonnegative(),mentionCount:d().int().nonnegative(),citationCount:d().int().nonnegative(),topCompetitors:y(n9).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:s9,audit:i9,queryResults:y(r9).default([]),summary:l9});const iw=Qe([pa,ce()]),U0=j(["pass","partial","fail"]);U0.enum;const sw=j(["up","down","flat"]);sw.enum;const c9=m({id:o(),name:o(),weight:d(),avgScore:d(),status:U0,pagesPassing:d().int().nonnegative(),pagesPartial:d().int().nonnegative(),pagesFailing:d().int().nonnegative()}),u9=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:iw,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([sw,ce()]),previousScore:d().nullable(),previousAuditedAt:o().nullable(),factors:y(c9).default([]),crossCuttingIssues:y(u9).default([]),prioritizedFixes:y(o()).default([])});const ow=m({id:o(),name:o(),weight:d(),score:d()}),d9=m({url:o(),overallScore:d(),status:j(["success","error"]),error:o().nullable().optional(),factors:y(ow).default([])});m({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:d().int().nonnegative(),pages:y(d9).default([])});const m9=m({runId:o(),auditedAt:o(),aggregateScore:d(),pagesAudited:d().int().nonnegative()});m({project:o(),points:y(m9).default([])});const p9=j(["disabled","complete","partial","unavailable"]);p9.enum;const h9=m({pagesDiscovered:d().int().nonnegative(),pagesFetched:d().int().nonnegative(),pagesEligible:d().int().nonnegative(),edges:d().int().nonnegative(),findings:d().int().nonnegative()}),f9=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:iw,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:h9,deadLinks:f9});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 hd=j(["eligible","hidden","resource","redirect","failed","unchecked"]),NH=hd.enum,_H=hd.options,Vo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},vu={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},g9={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function y9(e){return e.indexabilityReasons?.some(a=>a===g9.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function zH(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(y9(e))return"hidden";switch(e.indexabilityState){case vu.indexable:return"eligible";case vu.noindex:case vu.blocked:return"hidden";case vu.unknown:default:return"unchecked"}}const EH=15,b9=j(["navigation","content","unknown"]);b9.enum;const v9=m({navigation:d().int().nonnegative(),content:d().int().nonnegative(),unknown:d().int().nonnegative()}),rw=j(["placement","ubiquity","unmeasured"]);rw.enum;const fd=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);fd.enum;function TH(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 gd=j(["all","content","template"]);gd.enum;const x9=j(["anchor","redirect","canonical","link"]);x9.enum;const El=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:hd}),k9=m({type:j(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),bv=ow.extend({status:U0,applicable:C().nullable(),findings:y(k9).default([]),recommendations:y(o()).default([])}),vv=m({id:o().min(1),severity:j(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),xu=m({project:o(),runId:o(),complete:C(),termination:o().nullable()}),xv=m({nodeKey:o(),url:o(),auditState:o()});qe("state",[m({state:D("no-crawl"),project:o(),runId:ce()}),xu.extend({state:D("details-unavailable")}),xu.extend({state:D("not-found")}),xu.merge(xv).extend({state:D("not-audited"),auditScore:ce(),factors:y(bv).length(0).default([]),criticalDefects:y(vv).length(0).default([])}),xu.merge(xv).extend({state:D("ready"),auditScore:d(),evidenceState:j(["complete","scores-only"]),factors:y(bv).default([]),criticalDefects:y(vv).default([])})]);const w9=j(["applied","unavailable-legacy-scan"]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Qe([w9,ce()]).default(null),pages:y(El).default([])});const S9=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(S9).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:rw,placementOccurrences:Qe([v9,ce()])}),j9=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:hd,x:d(),y:d()}),A9=m({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:C(),occurrences:d().int().positive(),isTemplate:C()}),C9=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),N9=qe("state",[m({state:D("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:C()}),m({state:D("unavailable"),version:ce(),reason:C9})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:N9,templateDetection:fd,linkKind:gd,totalNodes:d().int().nonnegative(),totalEdges:d().int().nonnegative(),totalTemplateEdges:d().int().nonnegative(),totalContentEdges:d().int().nonnegative(),nodes:y(j9).default([]),edges:y(A9).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),sampled:C()});const RH=2e4,DH=5e4,_9=j(["focus","inbound","outbound","both","transitive"]),z9=El.extend({distance:d().int().nonnegative(),relationToFocus:_9});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(z9).default([]),edges:y($s).default([]),omittedNodes:d().int().nonnegative(),omittedEdges:d().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:C()});const kv=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:kv.nullable(),to:kv.nullable(),maxDepth:d().int().positive(),visitedNodes:d().int().nonnegative(),nodes:y(El).default([]),edges:y($s).default([])});const lw=j(["added","removed","changed"]),E9=m({entity:D("page"),change:lw,key:o(),changedFields:y(o()).default([]),before:El.nullable(),after:El.nullable()}),T9=m({entity:D("link"),change:lw,key:o(),changedFields:y(o()).default([]),before:$s.nullable(),after:$s.nullable()}),R9=qe("entity",[E9,T9]),wv=m({added:d().int().nonnegative(),removed:d().int().nonnegative(),changed:d().int().nonnegative()}),D9=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:D9,summaryState:j(["exact","omitted-on-continuation"]),summary:m({pages:wv,links:wv}).nullable(),total:d().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(R9).default([])})]);m({project:o(),hasCrawlData:C(),runId:o().nullable(),total:d().int().nonnegative(),nextCursor:o().nullable(),templateDetection:fd,linkKind:gd,edges:y($s).default([])});m({project:o(),hasCrawlData:C(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:fd,linkKind:gd,inbound:y($s).default([]),outbound:y($s).default([]),inboundTruncated:C(),outboundTruncated:C()});const Sv=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(Sv).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(Sv).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 O9=m({runId:o(),status:pa,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:C()});m({project:o(),scans:y(O9).default([])});const q9=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),B9=m({state:j(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),P9=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:q9,attempt:P9.nullable(),layout:B9,error:o().nullable()});const M9=j(["waiting","collecting","terminal"]),I9=m({nodeKey:o(),url:o(),auditScore:d(),checksNeedingAttention:d().int().nonnegative()});m({project:o(),runId:o(),status:pa,state:M9,attemptId:o().nullable(),pagesAudited:d().int().nonnegative(),updatedAt:o().nullable(),examples:y(I9).max(12).default([])});const V9=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()}),G0=V9.partial().shape;function OH(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 L9(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 qH(e,a,s){return`Share of voice · ${a} queries: ${L9(e,s)}${s?.measurementScope==="all-markets"?" · all markets":""}`}const $0=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);$0.enum;const K0=j(["cited","aspirational","wasted-surface"]),jv=K0.enum;jv.cited,jv.aspirational;const yd=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),U9=yd.enum;U9["direct-competitor"];const bd=j(["queued","seeding","probing","completed","failed"]);bd.enum;const cw=m({domain:o().min(1),hits:d().int().positive(),competitorType:yd.default("unknown")}),G9=m({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:K0.nullable().default(null),citationState:fi,citedDomains:y(o()).default([]),answerMentioned:C().nullable().default(null),createdAt:o()}),$9=m({id:o(),projectId:o(),status:bd,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(cw).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});$9.extend({probes:y(G9).default([])});const K9=500,H9=8,Q9=["gemini","openai"],F9=j(Q9);m({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(F9).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:d().min(0).max(1).optional(),maxProbes:d().int().positive().max(K9).optional(),probeConcurrency:d().int().min(1).max(H9).optional(),locations:y(o().min(1)).optional()});m({buckets:y(K0).min(1).optional(),includeCompetitors:C().optional(),competitorTypes:y(yd).min(1).optional()});m({sessionId:o(),projectId:o(),status:bd,queriesByBucket:m({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(cw)});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 Z9=m({query:o().min(1),probeHits:d().int().positive()}),Y9=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:bd,minProbeHits:d().int().positive(),anchorApplied:C(),semanticNoveltyApplied:C(),candidates:y(Z9),stats:Y9});const H0=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);H0.enum;const vd=j(["7d","30d","90d","all"]),Av=j(["improving","declining","stable"]),X9=j(["mentioned","cited"]);X9.enum;const zh=m({citationRate:d(),cited:d().int(),total:d().int(),mentionRate:d(),mentionedCount:d().int()}),mr=o().trim().min(1),J9=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:J9,includesUnknown:C()})]),W9=m({observedAt:o(),bucketStartDate:o(),from:Ks,to:Ks,fromPreWindowAnchor:C().optional(),anchorObservedAt:o().optional()}),uw=m({latestObservation:m({observedAt:o(),state:Ks}),events:y(W9),eventTotal:d().int().nonnegative().optional(),anchorUnavailable:C().optional()}),eR=Le(o(),uw),tR=uw.extend({latestServedModelIds:y(mr).default([])}),nR=Le(o(),tR),aR=m({observedAt:o(),configured:Ks,served:Ks}),iR=m({scope:j(["non-brand","pooled"]),rate:d().nullable(),projectMentionSnapshots:d().int().nonnegative(),competitorMentionSnapshots:d().int().nonnegative()}),sR=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:iR,byProvider:Le(o(),zh),modelEvidenceByProvider:Le(o(),Ks).default({}),basketRevision:d().int().nullable().default(null)}),oR=m({revision:d().int(),at:o(),added:y(o()),removed:y(o())}),rR=m({date:o(),delta:d().int(),label:o()}),lR=m({at:o(),identity:Y2});m({window:vd,mentionShareScope:j(["non-brand","pooled"]),buckets:y(sR),overall:zh,byProvider:Le(o(),zh),trend:Av,mentionTrend:Av,queryChanges:y(rR),basketChanges:y(oR).default([]),executionIdentityChanges:y(lR).default([]),referenceBasketRevision:d().int().nullable().default(null),modelAttribution:eR.default({}),servedModelAttribution:nR.default({}),modelServiceMismatch:Le(o(),aR).default({}),modelPointerChanges:Le(o(),Wz).default({})});const Cv=m({category:$0,label:o(),count:d().int(),percentage:d(),topDomains:y(m({domain:o(),count:d().int()}))}),cR=m({domain:o(),count:d().int(),percentage:d(),category:$0,label:o(),surfaceClass:H0}),uR=m({surfaceClass:H0,label:o(),count:d().int(),percentage:d(),domainCount:d().int()}),Nv=m({totalCitedSlots:d().int(),domainTotal:d().int(),entries:y(cR),truncatedDomainCount:d().int(),truncatedCitedSlots:d().int(),bySurfaceClass:y(uR)});m({overall:y(Cv),byQuery:Le(o(),y(Cv)),ranked:Nv,byProvider:Le(o(),Nv),runId:o(),window:vd,limit:d().int().nullable()});const dR=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),mR=qe("kind",[m({kind:D("project")}).strict(),m({kind:D("group"),groupKey:o().trim().min(1)}).strict(),m({kind:D("all-markets")}).strict()]),dw=j(["all","branded","non-brand"]),mw=j(["project","all-markets"]);m({window:vd.optional(),groupKey:o().trim().min(1).optional(),scope:mw.optional(),provider:o().trim().min(1).optional(),model:mr.optional(),groupBy:D("model").optional(),queryClass:dw.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:dR,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(),pw=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(),pR=50,hR=m({...G0,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:pw,truncated:C()}).strict(),fR=m({basis:D("requested-model"),groups:y(hR).max(pR),totalGroups:d().int().nonnegative(),truncated:C()}).strict();m({...G0,comparison:y(m({domain:o(),mentions:d().int().nonnegative()})).optional(),observedNames:y(m({name:o(),answerCount:d().int().nonnegative()})).optional(),window:vd,scope:mR,project:Xi,pinned:y(Xi),observed:y(Xi),otherSources:y(Xi),evidence:pw,modelComparison:fR.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:mw,groupKey:o().nullable(),provider:o().nullable(),model:mr.optional(),groupBy:D("model").optional(),queryClass:dw,location:o().nullable(),runId:o().nullable()}).strict(),truncated:C()}).strict();const Q0=m({total:d().int(),checked:d().int(),mentioned:d().int(),cited:d().int(),mentionRate:d().nullable(),citedRate:d().nullable()}),hw=Q0.extend({provider:o(),firstObserved:o(),lastObserved:o()}),gR=Q0.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(hw).optional()}),yR=m({since:o().nullable(),until:o().nullable(),lastRuns:d().int().nullable(),runCount:d().int()}),bR=j(["provider"]),Eh=m({domain:o(),mentions:d().int()}),fw=m({...G0,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(Eh)});m({project:o(),groupBy:bR.optional(),window:yR,totals:Q0,byProvider:y(hw).optional(),queries:y(gR),shareOfVoice:fw.optional()});const vR=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),xR=j(["up","down","flat"]),_v=m({availability:j(["available","no-observations","no-competitive-frame"]),point:d().nullable(),ciLow:d().nullable(),ciHigh:d().nullable(),numerator:d().int(),denominator:d().int()}),kR=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),wR=m({key:kR,label:o(),queryClass:j(["all","non-brand","pooled"]),driftRobust:C(),from:_v,to:_v,rateRatio:d().nullable(),direction:Qe([xR,ce()]),verdict:vR}),zv=m({month:o(),since:o(),until:o(),runCount:d().int(),lowRunCount:C()}),SR=m({queryCount:d().int(),excludedFromOnly:d().int(),excludedToOnly:d().int(),providers:y(o()),excludedProviders:y(o())}),jR=m({provider:o(),fromModels:y(o()),toModels:y(o())}),AR=j(["included","model-discontinuous","model-unknown"]),CR=m({provider:o(),status:AR,fromModels:y(o()),toModels:y(o())}),NR=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),_R=m({status:NR,comparedProviders:y(o()),providers:y(CR)}),zR=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()})}),ER=m({from:m({count:d().int(),of:d().int()}),to:m({count:d().int(),of:d().int()})});m({project:o(),from:zv,to:zv,basket:SR,metrics:y(wR),queriesMentioned:ER,byProvider:y(zR),modelChanges:y(jR),continuity:_R,competitors:m({from:y(Eh),to:y(Eh)})});j(["json","csv"]);const TR=m({runId:o(),runKind:D("answer-visibility"),runStatus:pa,runTrigger:V0,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([zl,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Qe([sd,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(pd),searchQueries:y(o())}),RR=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:RR,recordCount:d().int().nonnegative(),records:y(TR)});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 xd=j(["organic","paid"]);xd.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 F0=j(["session","first_user","manual_utm"]),DR=m({source:o(),medium:o(),trafficClass:xd,sessions:d(),users:d().optional(),sourceDimension:F0}),OR=m({source:o(),medium:o(),trafficClass:xd,sourceDimension:F0,landingPage:o(),sessions:d(),users:d().optional()}),qR=m({source:o(),medium:o(),sessions:d(),users:d(),channelGroup:o()}),fl=m({sessions:d(),sharePct:d(),sharePctDisplay:o()}),BR=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(DR),aiReferralLandingPages:y(OR),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(qR),socialSessions:d(),socialUsers:d().optional(),channelBreakdown:BR,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 PR=m({propertyId:o(),displayName:o(),accountName:o()});m({properties:y(PR)});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:xd,landingPage:o(),sessions:d(),users:d(),sourceDimension:F0});const MR=m({source:o(),sessions:d(),paidSessions:d(),organicSessions:d()}),IR=m({date:o(),sessions:d(),paidSessions:d(),organicSessions:d(),bySource:y(MR)});m({days:y(IR),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 gw=j(["claude","openai","gemini","zai","deepinfra"]),VR=m({id:gw,label:o(),defaultModel:o(),configured:C(),keySource:j(["config","env"]).nullable()});m({providers:y(VR).default([]),defaultProvider:gw.nullable()});const LR=j(["aero","user","compaction"]);LR.enum;const yw=128;m({key:o().min(1).max(yw),value:o().min(1)});m({key:o().min(1).max(yw)});const pr=j(["commoncrawl","bing-webmaster"]);pr.enum;const Z0=j(["queued","downloading","querying","ready","failed"]);Z0.enum;m({id:o(),release:o(),status:Z0,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 UR=m({linkingDomain:o(),numHosts:d().int(),source:pr}),GR=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:GR.nullable(),total:d().int(),rows:y(UR)});m({release:o(),totalLinkingDomains:d().int(),totalHosts:d().int(),top10HostsShare:o(),queriedAt:o(),source:pr});const $R=m({source:pr,connected:C(),hasData:C(),latestRelease:o().nullable(),totalLinkingDomains:d().int(),lastSyncedAt:o().nullable()});m({projectId:o(),targetDomain:o(),sources:y($R),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:Z0.nullable(),bytes:d().int(),lastUsedAt:o().nullable()});const Y0=j(["positive","caution","negative","neutral"]),Yi=m({label:o(),value:o(),delta:o(),tone:Y0,description:o(),tooltip:o().optional(),trend:y(d()),progress:d().optional(),providerCoverage:o().optional()}),Ev=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()}),KR=Yi.extend({breakdown:Ev,scope:j(["non-brand","pooled"]),branded:Ev}),Wp=m({gained:d().int().nonnegative(),lost:d().int().nonnegative(),tone:Y0,hasPreviousRun:C(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),HR=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())}),QR=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()}),FR=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:d8,latestRun:e9,health:FR.nullable(),topInsights:y(QR),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:KR,gapQueries:Yi,mentionGaps:Yi,indexCoverage:Yi,competitorPressure:Yi,runStatus:Yi}),movementSummary:Wp,citationMovement:Wp,mentionMovement:Wp,movementComparison:HR,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:Y0,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 ZR=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()}),YR=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()}),XR=qe("kind",[ZR,YR]);m({query:o(),totalHits:d().int().nonnegative(),truncated:C(),hits:y(XR)});const bw=j(["create","expand","refresh","add-schema"]);bw.enum;function BH(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const vw=j(["gsc","competitor-evidence","both"]);vw.enum;const xw=j(["high","medium","low"]);xw.enum;const JR=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);JR.enum;const kw=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);kw.enum;const X0=j(["ownable","ceded"]);X0.enum;const WR=m({url:o(),gscImpressions:d().nonnegative(),gscClicks:d().nonnegative(),gscAvgPosition:d().nonnegative().nullable(),organicSessions:d().nonnegative()}),eD=m({domain:o(),url:o(),title:o(),citationCount:d().int().nonnegative()}),tD=m({demand:d(),competitor:d(),absence:d(),gapSeverity:d()}),nD=m({actionId:o(),state:kw,lastUpdated:o()}),ww=m({targetRef:o(),query:o(),action:bw,ourBestPage:WR.nullable(),winningCompetitor:eD.nullable(),score:d(),scoreBreakdown:tD,drivers:y(o()),demandSource:vw,actionConfidence:xw,existingAction:nD.nullable(),winnabilityClass:X0,winnability:d().min(0).max(1).nullable()});m({targets:y(ww),contextMetrics:m({totalAiReferralSessions:d().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const aD=m({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});m({dismissals:y(aD)});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 iD=m({targetQuery:o().trim().min(1),winnabilityClass:X0,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:iD,costMillicents:d().int().nonnegative(),generatedAt:o()});const sD=m({domain:o(),competitorType:yd,hits:d().int().nonnegative(),updatedAt:o()});m({classifications:y(sD)});const oD=m({uri:o(),title:o(),domain:o(),isOurDomain:C(),isCompetitor:C(),citationCount:d().int().nonnegative(),providers:y(ht)}),Sw=m({query:o(),groundingSources:y(oD)});m({sources:y(Sw),latestRunId:o()});const jw=m({query:o(),competitorDomains:y(o()),competitorCount:d().int().nonnegative(),missRate:d().min(0).max(1),lastSeenInRunId:o()});m({gaps:y(jw),latestRunId:o()});const Aw=j(["ok","warn","fail","skipped"]);Aw.enum;const J0=j(["global","project"]);J0.enum;const Cw=j(["auth","config","providers","integrations","database","schedules","agent"]);Cw.enum;const rD=m({id:o(),category:Cw,scope:J0,title:o(),status:Aw,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:J0,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(rD)});function lD(e){return e.trim().toLowerCase()}const cD=m({provider:o(),citationState:fi,cited:C(),mentioned:C(),runId:o(),runCreatedAt:o()}),uD=m({queryId:o(),query:o(),providers:y(cD),citedCount:d().int().nonnegative(),mentionedCount:d().int().nonnegative(),totalProviders:d().int().nonnegative()}),dD=m({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),mD=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:mD,byQuery:y(uD),competitorGaps:y(dD),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const pD=m({selection:uk,historyWindow:m({from:o().datetime(),to:o().datetime()}).optional(),populations:y(ck.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 PH(e){return{branded:"Branded","non-brand":"Non-brand",unknown:"Unclassified"}[e]}function MH(e){return e.rate===null?on.notMeasured:`${Number((e.rate*100).toFixed(1))}%`}function IH(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 VH(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 LH(e){const a=e.selection.measurement.completedAt?.slice(0,10)??on.notMeasured;return`${on.latestMeasurement}: ${a}`}function UH(e){const a=e.historyWindow;return a===void 0?on.history:`${on.history} (${a.from.slice(0,10)} – ${a.to.slice(0,10)})`}function GH(e){const a=e.selection.location;return a.kind==="all"?on.allLocations:a.kind==="none"?on.noLocation:`${on.location}: ${a.value}`}const $H=[7,14,30,90],KH=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 hD=j(["prompt","request-param","browser-geo","ignored"]),fD=m({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),gD=m({provider:o(),treatment:hD,description:o()}),yD=m({generatedAt:o(),project:m({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:fD.nullable(),providerLocationHandling:y(gD),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:d().int().positive()}),bD=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"])}))}),vD=m({citationState:j(["cited","not-cited","pending"]),answerMentioned:C().nullable(),model:o().nullable()}),xD=m({queries:y(o()),providers:y(o()),matrix:y(y(vD.nullable())),providerRates:y(m({provider:o(),citedCount:d(),mentionedCount:d(),totalCount:d(),citationRate:d(),mentionRate:d()}))}),kD=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())}))}),wD=m({projectCitationCount:d(),competitors:y(kD)}),SD=m({domain:o(),mentionCount:d(),totalCount:d(),pressureLabel:j(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:d().nullable()}),eh=m({shareOfVoice:fw.optional(),projectMentionCount:d(),totalAnswerSnapshots:d(),competitors:y(SD)}),jD=eh.extend({scope:j(["non-brand","pooled"]),nonBrand:eh,branded:eh}),AD=m({category:o(),label:o(),count:d(),sharePct:d()}),CD=m({categories:y(AD),topDomains:y(m({domain:o(),count:d(),isCompetitor:C()}))}),ND=m({query:o(),clicks:d(),impressions:d(),ctr:d(),avgPosition:d(),category:j(["brand","lead-gen","industry","other"])}),_D=m({periodStart:o(),periodEnd:o(),totalClicks:d(),totalImpressions:d(),ctr:d(),avgPosition:d(),topQueries:y(ND),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())}),zD=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()}))}),ED=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()}))}),TD=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()}))}),RD=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()}))}),DD=m({provider:j(["google","bing"]).nullable(),total:d(),indexed:d(),notIndexed:d(),deindexed:d(),unknown:d(),indexedPct:d()}),OD=m({runId:o(),date:o(),citationRate:d(),citedQueryCount:d(),totalQueryCount:d(),mentionRate:d(),mentionedQueryCount:d(),providerRates:y(m({provider:o(),citationRate:d(),mentionRate:d()}))}),Th=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()}),qD=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()}),BD=m({provider:o(),current:d(),prior:d(),deltaAbs:d(),direction:j(["up","down","flat"])}),PD=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(BD),wins:y(Th),regressions:y(Th)});j(["agency","client"]);const MD=j(["agency","client","both"]),ID=j(["immediate","short-term","medium-term"]),VD=j(["high","medium","low"]);j(["positive","caution","negative","neutral"]);const LD=j(["content","competitors","provider","search-demand","indexing","location","monitoring"]),W0=m({audience:MD,priority:d(),horizon:ID,category:LD,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:VD,targetRef:o().optional()}),UD=m({headline:o(),overview:o(),actionItems:y(W0),confidenceNotes:y(o())}),GD=m({title:o(),detail:o(),severity:j(["positive","caution","negative","neutral"]),evidence:y(o())}),$D=m({priorities:y(W0),diagnostics:y(GD)});function HH(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function QH(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function FH(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function ZH(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 YH(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}m({visibility:pD.optional(),meta:yD,executiveSummary:bD,citationScorecard:xD,competitorLandscape:wD,mentionLandscape:jD,aiSourceOrigin:CD,gsc:_D.nullable(),ga:zD.nullable(),socialReferrals:ED.nullable(),aiReferrals:TD.nullable(),serverActivity:RD.nullable(),indexingHealth:DD.nullable(),citationsTrend:y(OD),whatsChanged:PD,insights:y(Th),recommendedNextSteps:y(qD),actionPlan:y(W0),clientSummary:UD,agencyDiagnostics:$D,contentOpportunities:y(ww),contentGaps:y(jw),groundingSources:y(Sw)});const KD=Qe([D(60),D(90)]),HD=j(["earliest","middle","prior","latest"]),Uo=m({clicks:d().int().nonnegative(),impressions:d().int().nonnegative()}),Nw=m({name:HD,startDate:o(),endDate:o()}),QD=Nw.extend({totals:Uo}),FD=Nw.extend({organicSessions:d().int().nonnegative()}),th=m({startDate:o(),endDate:o(),observedDays:d().int().nonnegative()}),ku=m({verified:d().int().nonnegative(),claimedUnverified:d().int().nonnegative(),unknownAiLike:d().int().nonnegative()}),Tv=m({total:d().int().nonnegative(),paid:d().int().nonnegative(),organic:d().int().nonnegative(),unknown:d().int().nonnegative()});m({contractVersion:D("organic-evidence/v1"),periodDays:KD,asOfDate:o().nullable(),coverage:m({gsc:C(),ga4:C(),server:C(),visibility:C()}),sourceCoverage:m({gsc:th.nullable(),ga4:th.nullable(),server:th.nullable(),visibility:m({completedAt:o(),ageDays:d().nonnegative()}).nullable()}),gsc:m({propertyTotals:Uo,namedBrand:Uo,namedNonBrand:Uo,suppressedOrUnreportedResidual:Uo,cohorts:y(QD)}).nullable(),ga4:m({organicSessions:d().int().nonnegative(),cohorts:y(FD)}).nullable(),gaAiReferrals:m({paidSessions:d().int().nonnegative(),organicSessions:d().int().nonnegative()}).nullable(),server:m({crawlerHits:ku,userFetchHits:ku,referralSessions:Tv}).nullable(),visibility:m({runId:o(),completedAt:o(),ageDays:d().nonnegative(),answerPairs:d().int().nonnegative(),mentionedPairs:d().int().nonnegative(),citedPairs:d().int().nonnegative()}).nullable(),measurement:b_,pages:y(m({path:o(),gsc:Uo,ga4OrganicSessions:d().int().nonnegative(),server:m({crawlerHits:ku,userFetchHits:ku,referralSessions:Tv})})),findings:y(m({tone:j(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(m({code:o(),detail:o()}))});const ZD=j(["claude","codex"]);ZD.enum;const YD=j(["claude","codex","all"]);YD.enum;const _w=m({content:d().int().nonnegative(),sitemap:d().int().nonnegative(),robots:d().int().nonnegative(),asset:d().int().nonnegative(),other:d().int().nonnegative()}),XD=j(["content","sitemap","robots","asset","other"]),ef=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);ef.enum;const JD=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);JD.enum;const WD=j(["raw-request","aggregate-bucket"]),eO=WD.enum,tO=j(["observed","provider-aggregated","inferred"]),nO=tO.enum,aO=m({type:o().nullable(),labels:Le(o(),o())}),iO=m({sourceType:ef,evidenceKind:D(eO["raw-request"]),confidence:D(nO.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:aO,providerLabels:Le(o(),o())});m({events:y(iO),rawEntryCount:d().int().nonnegative(),skippedEntryCount:d().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const zw=j(["connected","paused","error","archived"]),XH=zw.enum,Ew=j(["oauth","service-account"]);Ew.enum;const sO=j(["verified","claimed_unverified","unknown_ai_like"]),JH=sO.enum,oO=m({id:o().min(1),source:o().min(1),version:o().min(1)}),Tw=m({manifestId:o().min(1),manifest:oO.nullable(),hits:d().int().nonnegative()});m({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Ew});m({baseUrl:o().url(),username:o().min(1)});const tf=j(["production","preview"]);tf.enum;m({projectId:o().min(1),teamId:o().min(1),environment:tf});const Rw=m({id:o(),projectId:o(),sourceType:ef,displayName:o(),status:zw,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:tf.optional(),displayName:o().min(1).optional()});const rO=j(["direct-push","queue-pull"]),hr=rO.enum,nf=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"),Dw=m({schemaVersion:D(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),lO=Dw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().nullable()}),cO=Dw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600)});function Ow(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}s0(Ow,qe("deliveryMode",[lO,cO]));const qw=m({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),uO=qw.extend({deliveryMode:D(hr["direct-push"]),accountId:o().min(1).optional()}),dO=qw.extend({deliveryMode:D(hr["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600),apiToken:o().min(1)});s0(Ow,qe("deliveryMode",[uO,dO]));const Bw=m({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),mO=Bw.extend({deliveryMode:D(hr["direct-push"]),activationRequired:C().default(!1)}),pO=Bw.extend({deliveryMode:D(hr["queue-pull"]),activationRequired:C().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:nf,retentionSeconds:d().int().min(60).max(1209600)});qe("deliveryMode",[mO,pO]);const hO=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(hO).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 fO=m({crawlerHits:d().int().nonnegative(),crawlerContentHits:d().int().nonnegative(),crawlerInfraHits:d().int().nonnegative(),crawlerSegments:_w,aiUserFetchHits:d().int().nonnegative(),aiReferralHits:d().int().nonnegative(),aiReferralLandedHits:d().int().nonnegative(),aiReferralRedirectedHits:d().int().nonnegative(),sampleCount:d().int().nonnegative()});m({sources:y(Rw)});const gO=Rw.extend({totals24h:fO,latestRun:m({runId:o(),status:pa,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});m({sources:y(gO)});const yO=j(["crawler","ai-user-fetch","ai-referral"]),af=yO.enum,Pw=j(["hour","day"]);Pw.enum;const bO=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()}),vO=m({kind:D(af.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Tw).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),pathClass:XD,status:d().int(),hits:d().int().nonnegative()}),xO=m({kind:D(af["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Tw).optional(),verificationUnattributedHits:d().int().nonnegative().optional(),pathNormalized:o(),status:d().int(),hits:d().int().nonnegative()}),kO=m({kind:D(af["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()}),wO=qe("kind",[vO,xO,kO]);m({windowStart:o(),windowEnd:o(),series:m({granularity:Pw,points:y(bO),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:_w,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(wO)});const sf=j(["admin","viewer"]),SO=/^[a-z\d][\w.-]{0,63}$/i,jO=o().regex(SO,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Rv=12,AO=o().min(Rv,`A password must be at least ${Rv} characters.`),Mw=m({id:o(),name:o(),role:sf,createdAt:o(),lastLoginAt:o().nullable()});m({users:y(Mw)});m({name:jO,password:AO,role:sf});m({name:o().min(1),password:o().min(1)});m({authRequired:C(),user:Mw.pick({name:!0,role:!0}).nullable()});const Iw=j(["queued","running","completed","partial","failed"]),WH=Iw.enum,Vw=j(["queued","running","completed","failed"]),eQ=Vw.enum,CO=20,NO=20,Rh=50,Lw=m({kind:j(["market","property"]),key:me,expectedPlanRevision:d().int().positive().optional()}).strict(),_O=m({kind:j(["market","property"]),key:me,label:o().trim().min(1),planRevision:d().int().positive()}).strict(),Uw=o().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function tQ(e){const a=new Set;return e.filter(s=>{const r=lD(s);return!r||a.has(r)?!1:(a.add(r),!0)})}function zO(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 nQ(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 zb("The selected research template contains undeclared placeholders: "+f.join(", "));const g=zO(a,s),b=e.variables.filter(k=>g[k]===void 0);if(b.length)throw zb("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(k=>[k,g[k]]));return{bindings:v,output:T7(e.pattern,v)}}const Gw=m({templateId:o().trim().min(1).max(256),templateVersion:o().trim().min(1).max(256),bindingLocation:Yt.nullable().optional()}).strict();m({queries:y(Uw).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:Yt.nullable().optional(),scope:Lw.optional(),template:Gw.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 EO=Lw.extend({expectedPlanRevision:d().int().positive()}).strict(),TO=m({queries:y(Uw).min(1).max(Rh),provider:o().trim().min(1),model:o().trim().min(1).max(200),location:Yt.nullable(),scope:EO.optional(),template:Gw.optional()}).strict();m({idempotencyKey:o().trim().min(1).max(128),runs:y(TO).min(1).max(NO)}).strict().superRefine((e,a)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>Rh&&a.addIssue({code:Se.custom,path:["runs"],message:`A research batch may contain at most ${Rh} concrete queries across all destinations`})});const RO=m({kind:j(["api-key","user"]),id:o(),name:o(),role:sf.nullable(),limited:C().optional()}),$w=m({id:o(),projectId:o(),status:Iw,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:Yt.nullable(),scope:_O.nullable().optional(),template:mk.nullable().optional(),totalQueries:d().int(),completedQueries:d().int(),failedQueries:d().int(),error:o().nullable(),initiatedBy:RO.nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),DO=m({id:o(),position:d().int(),query:o(),queryClass:rr.nullable().optional(),status:Vw,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(pd),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()}),OO=$w.extend({queries:y(DO)});m({runs:y(OO)});const qO=m({name:o(),displayName:o(),modelConfigurable:C(),defaultModel:o(),knownModels:y(m({id:o(),displayName:o()}))});m({runs:y($w),nextCursor:o().nullable().optional(),providers:y(qO).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 BO=m({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});m({count:d().int().nonnegative(),query:o(),results:y(BO)});const PO=m({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});m({pixels:y(PO)});const MO=m({id:o(),name:o().optional()}),IO=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(MO).optional(),archived:C().optional(),version:d().int().nonnegative().optional()});m({eventSettings:y(IO)});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 VO=m({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),Vl=j(["impressions","clicks"]);Vl.enum;const Ll=j(["impression","click"]);Ll.enum;const LO=m({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:VO.nullable().optional(),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),UO=m({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Qe([Ll,ce()]).optional(),maxBidMicros:d().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(LO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()}),GO=m({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:d().int().nullable().optional(),endTime:d().int().nullable().optional(),biddingType:Qe([Vl,ce()]).optional(),dailySpendLimitMicros:d().int().nullable().optional(),lifetimeSpendLimitMicros:d().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(UO).default([]),upstreamUpdatedAt:d().int().nullable().optional(),syncedAt:o().optional()});m({campaigns:y(GO)});const Kw=j(["campaign","ad_group"]);Kw.enum;const $O=m({level:Kw,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($O),currencyCode:o().nullable().optional()});const Hw=m({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Qw=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:Hw,totals:Qw});const Fw=j(["unavailable","partial","complete"]);Fw.enum;const Zw=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"]);Zw.enum;const Yw=j(["unavailable","reported"]);Yw.enum;const KO={storedSnapshot:"stored_ads_snapshot"},Xw=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Xw.enum;const HO=m({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),QO=m({id:o(),name:o(),status:o(),billingEventType:Qe([Ll,ce()]),maxBidMicros:d().int().nullable(),contextHints:y(o()),ads:y(HO)}),FO=m({id:o(),name:o(),status:o(),biddingType:Qe([Vl,ce()]),dailySpendLimitMicros:d().int().nullable(),lifetimeSpendLimitMicros:d().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(QO)});m({snapshot:m({status:Fw,issue:Qe([Zw,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:Yw,window:Hw,totals:Qw.nullable()}),storedConfiguration:m({basis:D(KO.storedSnapshot),connection:m({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:C()}).nullable(),campaigns:y(FO)}),assessment:m({state:Xw})});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),of=o().regex(/^[a-f0-9]{64}$/),Jw=y(At).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Ww=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),eS=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"]);eS.enum;const tS=j(["pending","reconciling","succeeded","failed","unknown"]),Fo=tS.enum,nS=j(["known_entity","create_fingerprint","manual_only"]);nS.enum;const aS=j([Fo.pending,Fo.unknown,Fo.reconciling]);aS.enum;const iS=j(["active","paused","archived"]);iS.enum;const sS=j(["file","campaign","ad_group","ad"]);sS.enum;const oS=j(["campaign","ad_group","ad"]);oS.enum;const rf=m({id:At,expectedUpdatedAt:d().int().nonnegative()}).strict(),ZO=rf,Gu=1e3;function YO(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const XO=rf.extend({ads:y(ZO).min(1).max(Gu-1)}).strict(),JO=rf.extend({adGroups:y(XO).min(1).max(Gu-1)}).strict();function WO(e,a){return e<a?-1:e>a?1:0}function Dv(e,a,s){for(let r=1;r<e.length;r+=1)if(WO(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 rS=m({campaign:JO}).strict().superRefine((e,a)=>{YO(e)>Gu&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Gu} entities`}),Dv(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];Dv(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)}}}),lS=of,eq=j(["approved","executing","consumed","revoked","expired","unknown"]),hi=eq.enum,tq=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),os=tq.enum,nq=m({name:Fs.optional(),description:o().max(4e3).nullable().optional(),status:iS.optional(),startTime:er.nullable().optional(),endTime:er.nullable().optional(),lifetimeSpendLimitMicros:tr.min(1e6).optional(),locationIds:y(At).max(100).optional(),biddingType:Vl.optional(),conversionEventSettingIds:Jw.optional(),campaignId:At.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:tr.max(1e8).optional(),billingEventType:Ll.optional(),adGroupId:At.optional(),creativeFingerprint:of.optional()}).strict();m({operationKey:$a,imageUrl:Ww});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:Vl.optional(),conversionEventSettingIds:Jw.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:Ll.optional()});const cS=m({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Ww,fileId:At});m({operationKey:$a,adGroupId:At,name:Fs,creative:cS});function lf(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(lf,{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(lf,{message:"At least one ad group field must be updated"});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative(),name:Fs.optional(),creative:cS.optional()}).refine(lf,{message:"At least one ad field must be updated"});m({operationKey:$a});m({operationKey:$a,expectedUpdatedAt:d().int().nonnegative()});const kd=m({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:eS,state:tS,entityType:Qe([sS,ce()]),entityId:o().nullable(),upstreamUpdatedAt:d().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Qe([nS,ce()]),reconcileParentId:At.nullable(),reconcileFingerprint:of.nullable(),reconcileFields:nq.nullable(),reconcileAttempts:d().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});m({operation:kd,replayed:C()});const xt=f2({offset:!0}),fr={id:At,projectId:At,adAccountId:At,manifestHash:lS,manifest:rS,executorApiKeyId:At,approverApiKeyId:At,expiresAt:xt,approvedAt:xt,createdAt:xt,updatedAt:xt,revocationRequestedAt:xt.nullable()},aq=m({...fr,state:D(hi.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),iq=m({...fr,state:D(hi.executing),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),sq=m({...fr,state:D(hi.consumed),operationId:At,executionStartedAt:xt,consumedAt:xt,revokedAt:ce(),expiredAt:ce()}).strict(),oq=m({...fr,state:D(hi.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:xt,expiredAt:ce()}).strict(),rq=m({...fr,state:D(hi.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:xt}).strict(),lq=m({...fr,state:D(hi.unknown),operationId:At,executionStartedAt:xt,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),uS=qe("state",[aq,iq,sq,oq,rq,lq]).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:oS,entityId:At,expectedUpdatedAt:d().int().nonnegative(),createdAt:xt,updatedAt:xt},Ul={errorCode:ce(),errorMessage:ce()},cf={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},cq=m({...rs,...Ul,state:D(os.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),uq=m({...rs,...Ul,state:D(os.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:xt,finishedAt:ce()}).strict(),dq=m({...rs,...Ul,state:D(os.active),providerUpdatedAt:d().int().nonnegative(),remediation:ce(),startedAt:xt,finishedAt:xt}).strict(),mq=m({...rs,...cf,state:D(os.failed),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),pq=m({...rs,...Ul,state:D(os.rollback_executing),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:ce()}).strict(),hq=m({...rs,...Ul,state:D(os.rolled_back),providerUpdatedAt:d().int().nonnegative(),remediation:o().min(1).max(500),startedAt:xt,finishedAt:xt}).strict(),fq=m({...rs,...cf,state:D(os.rollback_failed),providerUpdatedAt:d().int().nonnegative(),startedAt:xt,finishedAt:xt}).strict(),gq=m({...rs,...cf,state:D(os.unknown),providerUpdatedAt:Qe([d().int().nonnegative(),ce()]),startedAt:xt,finishedAt:xt}).strict(),yq=qe("state",[cq,uq,dq,mq,pq,hq,fq,gq]),Dh={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},bq=j([Dh.exact,Dh.refreshSemanticallyUnchanged]);m({manifest:rS,executorApiKeyId:At,expiresAt:xt,versionPolicy:bq.default(Dh.exact)}).strict();m({grant:uS}).strict();m({}).strict();m({operationKey:$a,grantId:At,manifestHash:lS}).strict();m({grant:uS,operation:kd,steps:y(yq)}).strict();const vq=[Fo.pending,Fo.unknown,Fo.reconciling];function xq(e){if(e===void 0||e==="")return vq;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:s0(xq,y(aS).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:o0().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});m({operations:y(kd),count:d().int().nonnegative(),nextCursor:o().nullable()});m({}).strict();m({operation:kd,resolved:C()});m({campaignId:o().min(1).max(200).optional(),lookbackDays:o0().int().min(1).max(30).default(7)});const dS=j(["campaign","ad_group","ad"]);dS.enum;const mS=j(["both","live-only","stored-only"]);mS.enum;const kq=D("live-provider-read"),wq=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()}),Ov=m({impressions:d().int(),clicks:d().int(),spendMicros:d().int(),conversions:d().int()}),Sq=m({date:o(),live:Ov.nullable(),stored:Ov.nullable(),drifted:C()}),jq=m({field:o(),live:o().nullable(),stored:o().nullable()}),Aq=m({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:d().nullable()}),Cq=m({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:d().nullable(),syncedAt:o()}),Nq=m({entityType:dS,id:o(),parentId:o().nullable(),presence:mS,live:Aq.nullable(),stored:Cq.nullable(),fieldDeltas:y(jq),liveMetrics:y(wq).nullable(),metricDeltas:y(Sq).nullable(),drifted:C()}),_q=m({surface:o(),entityId:o().nullable(),upstreamStatus:d().int().nullable()});m({basis:kq,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(Nq),drift:m({entitiesCompared:d().int().nonnegative(),driftedEntities:d().int().nonnegative(),statusDrifted:d().int().nonnegative(),metricsDrifted:d().int().nonnegative()}),errors:y(_q)});const zq=m({status:j(["available","unavailable","not-supported"])}),qv="*",Eq=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),Tq=j(["server","local"]);m({enabled:C(),configuredEnabled:C(),reason:Eq,anonymousId:o().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:Tq.optional()}).strict();const st=1,nh=j(["system","project","queries","competitors","run"]),ah=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 Bv=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"]),Rq=j(["wizard","platform","site_health"]),wu=m({eventId:o().uuid(),flowVersion:D(st),onboardingSessionId:o().uuid(),surface:Rq.optional()});qe("event",[wu.extend({event:D("onboarding.started"),step:nh,resumed:C()}).strict(),wu.extend({event:D("onboarding.step_completed"),step:nh,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:ah.optional()}).strict(),wu.extend({event:D("onboarding.blocked"),step:nh,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Bv}).strict(),wu.extend({event:D("run.requested"),origin:D("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:ah,queryCountBucket:ah,reasonCode:Bv.optional()}).strict()]);m({accepted:C()});const Dq=4;function Oq(e){return e.length<Dq}const pS=j(["trace","debug","info","warn","error","fatal"]),qq=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(),Bq=m({cursor:o().min(1).max(512),ts:o().datetime(),level:pS,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:qq}).strict();m({level:pS.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:o0().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(Bq),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 Pq={bodySerializer:e=>JSON.stringify(e,(a,s)=>typeof s=="bigint"?s.toString():s)},Mq=({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(`
@@ -83,4 +83,4 @@ spec:
83
83
  `);ut(Pe),Js(!0)}}catch(U){Yl(U instanceof Error?U.message:"Failed to generate queries"),K({flowVersion:st,onboardingSessionId:_,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:jl(U,"unknown")},"onboarding.blocked:queries:generate")}finally{eo(!1)}}},Bd=async()=>{if(!Be)return;const U=qa;if(U.length!==0){qt(!0),wi(null);try{await zI(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 DS("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),Dd(!0),A3(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:jl(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)},ac=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,ic=(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(oK,{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,Jl(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,ic?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"})]}),tc&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:tc}),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(nc),children:Sn?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(ac,{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(Td),children:Wl?"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:ec})]}),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=>Ed(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(qd),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)})]}),Kl?c.jsx("p",{className:"text-negative-400 text-sm",children:Kl}):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||Hl,onClick:Ft(jr),children:Hl?"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(Bd),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,sc=Ba.filter(ta=>ta.answerMentioned===!0).length,vs=new Set(Ba.map(ta=>ta.query).filter(ta=>!!ta)).size,xs=Pe?Cx(Pe,Ba.length):!1,Ar=Fe&&!Cn,dn=Za??(U?.error?oV(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(d$,{projectName:Be}):c.jsx("p",{className:"text-sm text-secondary",children:Gh}),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:[sc,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()?Gh: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(dK,{current:N?be===4?1:0:be,labels:N?cK:lK}),c.jsxs("section",{className:"setup-wizard",children:[bs,xa]})]})}const hK=T.lazy(async()=>({default:(await yi(()=>import("./SiteHealthSection-YebzsgDh.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),fK=1800,gK="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",yK="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 bK(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}const z3=[{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"}],E3=[{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 vK(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 xK(e,a){const s=e.trim().toUpperCase(),r=a.trim().toLowerCase();return{countryValid:z3.some(u=>u.value===s),languageValid:E3.some(u=>u.value===r)}}function kK(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function wK(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"||kK(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 SK(e,a=fK){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 jK(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 T3(e){const a=T.useRef(w3()).current,s=T.useRef(new Set),r=T.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}OS({...u,surface:e,eventId:S3()})},[e]);return{onboardingSessionId:a,emit:r}}function zx(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 AK(){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 CK({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 NK({projectName:e,initialRunId:a}){return c.jsx(zf,{title:"Site Health setup",children:c.jsx(_K,{projectName:e,initialRunId:a})})}function _K({projectName:e,initialRunId:a}){const s=Hs(),r=Et({...Zs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=T3("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||C3(e)?.runId!==a&&A3(e,a)},[a,e]);const b=Et({...yf({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"),Fu(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}`),Fu(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(hK,{projectName:v.name,projectId:v.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:A})})]})}function zK(){const e=Tx({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=sI(),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":bK(u,k);return a||s?c.jsx(NK,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(mK,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(AK,{}):S==="retry"?c.jsx(CK,{onRetry:()=>{b.refetch()}}):c.jsx(EK,{onActivationStarted:()=>g(!0),skipSiteScan:e.siteScan==="skip"})}function EK({onActivationStarted:e,skipSiteScan:a}){return c.jsx(zf,{title:"Site Health setup",children:c.jsx(TK,{onActivationStarted:e,skipSiteScan:a})})}function TK({onActivationStarted:e,skipSiteScan:a}){const s=Hs(),r=da(),u=sK(),f=Et({...$V({client:se}),retry:!1}),g=ns(KV()),[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.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}=T3("platform");T.useEffect(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Ne,Ie]);const Ae=wK(b),ne=k||Ae?.projectName||"",V=A||Ae?.displayName||"",q=Q==="creating"||Q==="dispatching",le=H??Fe,De=vK(E,_),{countryValid:ye,languageValid:Je}=xK(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 SK(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:jl(us,"run_rejected")})}),jK(ut,Ve.id),await Be(Ve)}catch(ut){re("recovery"),Re(zx(ut,"The project was created, but the Site Health scan could not be started."));const Jt=jl(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 AI({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),$(zx(ut,"Could not create the project. Try again.")),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"project",action:"save",reasonCode:jl(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(yK),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(US({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(Zh,{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:z3.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:E3.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(Yh,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Lx,{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:gK,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(pA,{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 RK(){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-Bsm0_jUY.js"),__vite__mapDeps([5,1,2,6,0,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),DK=as(()=>yi(()=>import("./RunsPage-DIXBB2Om.js"),__vite__mapDeps([13,1,6,11,4,2,9,12]),import.meta.url),"RunsPage"),OK=as(()=>yi(()=>import("./HistoryPage-DtCTQ7CQ.js"),__vite__mapDeps([14,1,10,11,4,2,9,12]),import.meta.url),"HistoryPage"),qK=as(()=>yi(()=>import("./SettingsPage-wYhBm6Az.js"),__vite__mapDeps([15,1,11,4,2,9,12]),import.meta.url),"SettingsPage"),BK=as(()=>yi(()=>import("./BacklinksPage-CSzuMEuv.js"),__vite__mapDeps([16,1,2,11,4,9,12]),import.meta.url),"BacklinksPage"),PK=as(()=>yi(()=>import("./TrafficPage-DtnSRFO8.js"),__vite__mapDeps([17,1,7,2,11,4,9,12]),import.meta.url),"TrafficPage"),MK=as(()=>yi(()=>import("./TrafficSourceDetailPage-DYQ6mpYq.js"),__vite__mapDeps([18,1,7,3,4,2,11,9,12]),import.meta.url),"TrafficSourceDetailPage"),IK=as(()=>yi(()=>import("./MeasurementPropertyPage-B7gTMWNs.js"),__vite__mapDeps([19,1,3,4,8,9,2,11,12]),import.meta.url),"MeasurementPropertyPage");function VK(){return c.jsx(P$,{children:c.jsx(B$,{})})}const kn=U4()({component:VK,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]))})}),LK=St({getParentRoute:()=>kn,path:"/",component:U$,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 Dx({to:"/setup"})}}),UK=St({getParentRoute:()=>kn,path:"/projects",component:H$}),GK=/^[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(dh,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!GK.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 Dx({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),$K=St({getParentRoute:()=>wn,path:"/",component:()=>c.jsx(Yn,{tab:"overview"})}),KK=St({getParentRoute:()=>wn,path:"/portfolio",component:()=>c.jsx(Yn,{tab:"portfolio"})}),HK=St({getParentRoute:()=>wn,path:"/search-console",component:()=>c.jsx(Yn,{tab:"search-console"})}),QK=St({getParentRoute:()=>wn,path:"/conversions",component:()=>c.jsx(Yn,{tab:"conversions"})}),FK=St({getParentRoute:()=>wn,path:"/local",component:()=>c.jsx(Yn,{tab:"local"})}),ZK=St({getParentRoute:()=>wn,path:"/discovery",component:()=>c.jsx(Yn,{tab:"discovery"})}),YK=St({getParentRoute:()=>wn,path:"/queries",component:()=>c.jsx(Yn,{tab:"queries"})}),XK=St({getParentRoute:()=>wn,path:"/properties/$targetKey",component:()=>c.jsx(IK,{})}),JK=St({getParentRoute:()=>wn,path:"/report",component:()=>c.jsx(Yn,{tab:"report"})}),WK=St({getParentRoute:()=>wn,path:"/activity",component:()=>c.jsx(Yn,{tab:"activity"})}),eH=St({getParentRoute:()=>wn,path:"/backlinks",component:()=>c.jsx(Yn,{tab:"backlinks"})}),tH=St({getParentRoute:()=>wn,path:"/technical-aeo",component:()=>c.jsx(Yn,{tab:"technical-aeo"})}),nH=St({getParentRoute:()=>wn,path:"/history",component:()=>c.jsx(Yn,{tab:"history"})}),aH=St({getParentRoute:()=>wn,path:"/settings",component:()=>c.jsx(Yn,{tab:"settings"})}),iH=St({getParentRoute:()=>kn,path:"/runs",component:DK}),sH=St({getParentRoute:()=>kn,path:"/history",component:OK}),oH=St({getParentRoute:()=>kn,path:"/settings",component:qK,beforeLoad:({context:e})=>{}}),rH=St({getParentRoute:()=>kn,path:"/setup",component:zK}),lH=St({getParentRoute:()=>kn,path:"/backlinks",component:BK}),cH=St({getParentRoute:()=>kn,path:"/traffic",component:PK}),uH=St({getParentRoute:()=>kn,path:"/traffic/$projectName/$sourceId",component:MK}),dH=St({getParentRoute:()=>kn,path:"*",component:RK}),mH=kn.addChildren([LK,UK,wn.addChildren([$K,KK,HK,QK,FK,ZK,YK,XK,JK,WK,eH,tH,nH,aH]),iH,sH,oH,rH,lH,cH,uH,dH]);function pH(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ex=pH(),hH=Ex==="/"?"":Ex.replace(/\/$/,"");function fH(e,a){return G4({routeTree:mH,basepath:hH||"/",context:{queryClient:e},...a?.initialEntries})}const gH=6e4;function yH(){const e=T.useRef(wI()).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=nV();Re.current=le,Fe.current=fH(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 sh();if(q)return;g(Je),v(!1),s("ready")}catch(Je){if(q)return;if(ye&&Je instanceof fn&&Je.statusCode===401)return OI().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([Uv(),Lv()]).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){Uv().then(le=>{le.authRequired&&!le.user&&(Ke(!0),u(null),g(null),s("account-login"))}).catch(()=>{});return}Lv().then(le=>{le.authenticated||(Ke(!0),g(null),s(le.setupRequired?"setup":"login"))}).catch(()=>{})},gH);return Vv(()=>{Ke(!0),u(null),g(null),v(!1),s(k?"account-login":"login")}),()=>{clearInterval(q),Vv(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 TI(E.trim())).authenticated){oe("Setup failed");return}Z(""),G(""),te(!1),Ke(!1),g(null),v(!0),s("checking");try{const De=await sh();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 DI(E.trim()):await RI(E.trim())).authenticated){oe(Q==="api-key"?"Invalid API key":"Incorrect password");return}const De=await sh();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 qI(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(HI,{account:r,apiKey:f,apiKeyPending:b,children:c.jsx($4,{client:q,children:c.jsx(K4,{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(Hu,{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(Hu,{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 R3=document.getElementById("root");if(!R3)throw new Error("Expected #root element for web app bootstrap.");xA.createRoot(R3).render(c.jsx(T.StrictMode,{children:c.jsx(yH,{})}));export{OZ as $,DF as A,fe as B,Lu as C,BF as D,qQ as E,DZ as F,RF as G,BZ as H,yl as I,qZ as J,$Q as K,GQ as L,EY as M,eF as N,rn as O,rG as P,IZ as Q,VZ as R,sV as S,pn as T,ZQ as U,LZ as V,YQ as W,HQ as X,FQ as Y,PZ as Z,MZ as _,zY as a,ff as a$,KQ as a0,UZ as a1,ZZ as a2,KZ as a3,QZ as a4,HZ as a5,FZ as a6,bF as a7,bf as a8,ze as a9,WI as aA,FF as aB,on as aC,yV as aD,VV as aE,eZ as aF,sZ as aG,tZ as aH,WH as aI,tQ as aJ,NO as aK,nQ as aL,_V as aM,WF as aN,zO as aO,Rh as aP,eQ as aQ,mI as aR,nZ as aS,JF as aT,EV as aU,aZ as aV,RY as aW,iZ as aX,pY as aY,hY as aZ,XQ as a_,$Z as aa,HS as ab,gi as ac,GZ as ad,MY as ae,RT as af,DT as ag,CH as ah,AH as ai,kF as aj,NF as ak,_F as al,fn as am,zF as an,CQ as ao,oV as ap,dU as aq,Oh as ar,EF as as,Eu as at,lY as au,l_ as av,Gh as aw,Ps as ax,QQ as ay,jH as az,L9 as b,ZH as b$,rY as b0,OV as b1,uZ as b2,mZ as b3,xZ as b4,EZ as b5,zZ as b6,bZ as b7,NZ as b8,RZ as b9,rQ as bA,lQ as bB,pQ as bC,mQ as bD,dQ as bE,cQ as bF,uQ as bG,oQ as bH,sQ as bI,iQ as bJ,aQ as bK,rB as bL,LH as bM,PH as bN,MH as bO,IH as bP,UH as bQ,VH as bR,KH as bS,oY as bT,GH as bU,$H as bV,lF as bW,qH as bX,PY as bY,FH as bZ,HH as b_,hZ as ba,wZ as bb,SZ as bc,jZ as bd,pZ as be,kZ as bf,fZ as bg,AZ as bh,gZ as bi,CZ as bj,vZ as bk,_Z as bl,TZ as bm,eK as bn,yZ as bo,ge as bp,SQ as bq,wQ as br,kQ as bs,xQ as bt,yQ as bu,gQ as bv,vQ as bw,bQ as bx,fQ as by,hQ as bz,T2 as c,XZ as c$,YH as c0,BH as c1,QH as c2,DQ as c3,RQ as c4,TQ as c5,cF as c6,GV as c7,dZ as c8,IF as c9,iK as cA,oZ as cB,GF as cC,QF as cD,$F as cE,rZ as cF,TY as cG,KF as cH,xn as cI,jI as cJ,dV as cK,d$ as cL,NQ as cM,NI as cN,_Q as cO,zQ as cP,EQ as cQ,ts as cR,gV as cS,xV as cT,OQ as cU,YZ as cV,II as cW,sF as cX,JZ as cY,WZ as cZ,eY as c_,Qv as ca,PQ as cb,MQ as cc,PF as cd,MF as ce,IQ as cf,VQ as cg,UQ as ch,LQ as ci,$l as cj,Zs as ck,_S as cl,UF as cm,LF as cn,JG as co,lG as cp,u3 as cq,pG as cr,d3 as cs,m3 as ct,kV as cu,Is as cv,Zu as cw,QV as cx,rK as cy,BY as cz,TF as d,r$ as d$,OF as d0,tF as d1,nF as d2,aF as d3,oF as d4,iF as d5,nr as d6,gf as d7,DY as d8,Cd as d9,$$ as dA,JH as dB,af as dC,VF as dD,cY as dE,mY as dF,gF as dG,XH as dH,hF as dI,fF as dJ,pF as dK,uY as dL,U8 as dM,ZF as dN,HF as dO,XF as dP,YF as dQ,zH as dR,yi as dS,fa as dT,_H as dU,dI as dV,fY as dW,yY as dX,gY as dY,sK as dZ,xY as d_,kf as da,lZ as db,cZ as dc,yI as dd,jQ as de,AQ as df,BQ as dg,JQ as dh,WQ as di,zf as dj,Nd as dk,wf as dl,oK as dm,rF as dn,ar as dp,Zv as dq,vF as dr,wF as ds,jF as dt,AF as du,xF as dv,SF as dw,CF as dx,yF as dy,dY as dz,aY as e,EH as e0,CY as e1,NY as e2,_Y as e3,bY as e4,vY as e5,NH as e6,wY as e7,AY as e8,kY as e9,jY as ea,ir as eb,TH as ec,SY as ed,g9 as ee,DH as ef,RH as eg,ua as f,tY as g,ox as h,se as i,pI as j,mn as k,Ft as l,nY as m,sY as n,iY as o,uF as p,mF as q,dF as r,OH as s,lV as t,Sf as u,ha as v,OY as w,qY as x,Lh as y,qF 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(Bd),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,sc=Ba.filter(ta=>ta.answerMentioned===!0).length,vs=new Set(Ba.map(ta=>ta.query).filter(ta=>!!ta)).size,xs=Pe?Cx(Pe,Ba.length):!1,Ar=Fe&&!Cn,dn=Za??(U?.error?oV(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(d$,{projectName:Be}):c.jsx("p",{className:"text-sm text-secondary",children:Gh}),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:[sc,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()?Gh: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(dK,{current:N?be===4?1:0:be,labels:N?cK:lK}),c.jsxs("section",{className:"setup-wizard",children:[bs,xa]})]})}const hK=T.lazy(async()=>({default:(await yi(()=>import("./SiteHealthSection-CizmiBjA.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),fK=1800,gK="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",yK="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 bK(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}const z3=[{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"}],E3=[{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 vK(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 xK(e,a){const s=e.trim().toUpperCase(),r=a.trim().toLowerCase();return{countryValid:z3.some(u=>u.value===s),languageValid:E3.some(u=>u.value===r)}}function kK(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function wK(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"||kK(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 SK(e,a=fK){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 jK(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 T3(e){const a=T.useRef(w3()).current,s=T.useRef(new Set),r=T.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}OS({...u,surface:e,eventId:S3()})},[e]);return{onboardingSessionId:a,emit:r}}function zx(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 AK(){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 CK({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 NK({projectName:e,initialRunId:a}){return c.jsx(zf,{title:"Site Health setup",children:c.jsx(_K,{projectName:e,initialRunId:a})})}function _K({projectName:e,initialRunId:a}){const s=Hs(),r=Et({...Zs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=T3("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||C3(e)?.runId!==a&&A3(e,a)},[a,e]);const b=Et({...yf({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"),Fu(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}`),Fu(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(hK,{projectName:v.name,projectId:v.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:A})})]})}function zK(){const e=Tx({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=sI(),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":bK(u,k);return a||s?c.jsx(NK,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(mK,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(AK,{}):S==="retry"?c.jsx(CK,{onRetry:()=>{b.refetch()}}):c.jsx(EK,{onActivationStarted:()=>g(!0),skipSiteScan:e.siteScan==="skip"})}function EK({onActivationStarted:e,skipSiteScan:a}){return c.jsx(zf,{title:"Site Health setup",children:c.jsx(TK,{onActivationStarted:e,skipSiteScan:a})})}function TK({onActivationStarted:e,skipSiteScan:a}){const s=Hs(),r=da(),u=sK(),f=Et({...$V({client:se}),retry:!1}),g=ns(KV()),[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}=T3("platform");T.useEffect(()=>{Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Ne,Ie]);const Ae=wK(b),ne=k||Ae?.projectName||"",V=A||Ae?.displayName||"",q=Q==="creating"||Q==="dispatching",le=H??Fe,De=vK(E,_),{countryValid:ye,languageValid:Je}=xK(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 SK(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:jl(us,"run_rejected")})}),jK(ut,Ve.id),await Be(Ve)}catch(ut){re("recovery"),Re(zx(ut,"The project was created, but the Site Health scan could not be started."));const Jt=jl(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 AI({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),$(zx(ut,"Could not create the project. Try again.")),Ne({flowVersion:st,onboardingSessionId:Ie,event:"onboarding.blocked",step:"project",action:"save",reasonCode:jl(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(yK),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(US({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(Zh,{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:z3.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:E3.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(Yh,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Lx,{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:gK,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(pA,{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 RK(){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-b1-57SzP.js"),__vite__mapDeps([5,1,2,6,0,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),DK=as(()=>yi(()=>import("./RunsPage-BFrymZ7D.js"),__vite__mapDeps([13,1,6,11,4,2,9,12]),import.meta.url),"RunsPage"),OK=as(()=>yi(()=>import("./HistoryPage-DKopwAjo.js"),__vite__mapDeps([14,1,10,11,4,2,9,12]),import.meta.url),"HistoryPage"),qK=as(()=>yi(()=>import("./SettingsPage-DdVa6pLK.js"),__vite__mapDeps([15,1,11,4,2,9,12]),import.meta.url),"SettingsPage"),BK=as(()=>yi(()=>import("./BacklinksPage-DmF2rbwy.js"),__vite__mapDeps([16,1,2,11,4,9,12]),import.meta.url),"BacklinksPage"),PK=as(()=>yi(()=>import("./TrafficPage-N7sZgb9x.js"),__vite__mapDeps([17,1,7,2,11,4,9,12]),import.meta.url),"TrafficPage"),MK=as(()=>yi(()=>import("./TrafficSourceDetailPage-BNQmMJ5D.js"),__vite__mapDeps([18,1,7,3,4,2,11,9,12]),import.meta.url),"TrafficSourceDetailPage"),IK=as(()=>yi(()=>import("./MeasurementPropertyPage-Dpd_DYQv.js"),__vite__mapDeps([19,1,3,4,8,9,2,11,12]),import.meta.url),"MeasurementPropertyPage");function VK(){return c.jsx(P$,{children:c.jsx(B$,{})})}const kn=U4()({component:VK,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]))})}),LK=St({getParentRoute:()=>kn,path:"/",component:U$,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 Dx({to:"/setup"})}}),UK=St({getParentRoute:()=>kn,path:"/projects",component:H$}),GK=/^[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(dh,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!GK.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 Dx({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),$K=St({getParentRoute:()=>wn,path:"/",component:()=>c.jsx(Yn,{tab:"overview"})}),KK=St({getParentRoute:()=>wn,path:"/portfolio",component:()=>c.jsx(Yn,{tab:"portfolio"})}),HK=St({getParentRoute:()=>wn,path:"/search-console",component:()=>c.jsx(Yn,{tab:"search-console"})}),QK=St({getParentRoute:()=>wn,path:"/conversions",component:()=>c.jsx(Yn,{tab:"conversions"})}),FK=St({getParentRoute:()=>wn,path:"/local",component:()=>c.jsx(Yn,{tab:"local"})}),ZK=St({getParentRoute:()=>wn,path:"/discovery",component:()=>c.jsx(Yn,{tab:"discovery"})}),YK=St({getParentRoute:()=>wn,path:"/queries",component:()=>c.jsx(Yn,{tab:"queries"})}),XK=St({getParentRoute:()=>wn,path:"/properties/$targetKey",component:()=>c.jsx(IK,{})}),JK=St({getParentRoute:()=>wn,path:"/report",component:()=>c.jsx(Yn,{tab:"report"})}),WK=St({getParentRoute:()=>wn,path:"/activity",component:()=>c.jsx(Yn,{tab:"activity"})}),eH=St({getParentRoute:()=>wn,path:"/backlinks",component:()=>c.jsx(Yn,{tab:"backlinks"})}),tH=St({getParentRoute:()=>wn,path:"/technical-aeo",component:()=>c.jsx(Yn,{tab:"technical-aeo"})}),nH=St({getParentRoute:()=>wn,path:"/history",component:()=>c.jsx(Yn,{tab:"history"})}),aH=St({getParentRoute:()=>wn,path:"/settings",component:()=>c.jsx(Yn,{tab:"settings"})}),iH=St({getParentRoute:()=>kn,path:"/runs",component:DK}),sH=St({getParentRoute:()=>kn,path:"/history",component:OK}),oH=St({getParentRoute:()=>kn,path:"/settings",component:qK,beforeLoad:({context:e})=>{}}),rH=St({getParentRoute:()=>kn,path:"/setup",component:zK}),lH=St({getParentRoute:()=>kn,path:"/backlinks",component:BK}),cH=St({getParentRoute:()=>kn,path:"/traffic",component:PK}),uH=St({getParentRoute:()=>kn,path:"/traffic/$projectName/$sourceId",component:MK}),dH=St({getParentRoute:()=>kn,path:"*",component:RK}),mH=kn.addChildren([LK,UK,wn.addChildren([$K,KK,HK,QK,FK,ZK,YK,XK,JK,WK,eH,tH,nH,aH]),iH,sH,oH,rH,lH,cH,uH,dH]);function pH(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ex=pH(),hH=Ex==="/"?"":Ex.replace(/\/$/,"");function fH(e,a){return G4({routeTree:mH,basepath:hH||"/",context:{queryClient:e},...a?.initialEntries})}const gH=6e4;function yH(){const e=T.useRef(wI()).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=nV();Re.current=le,Fe.current=fH(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 sh();if(q)return;g(Je),v(!1),s("ready")}catch(Je){if(q)return;if(ye&&Je instanceof fn&&Je.statusCode===401)return OI().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([Uv(),Lv()]).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){Uv().then(le=>{le.authRequired&&!le.user&&(Ke(!0),u(null),g(null),s("account-login"))}).catch(()=>{});return}Lv().then(le=>{le.authenticated||(Ke(!0),g(null),s(le.setupRequired?"setup":"login"))}).catch(()=>{})},gH);return Vv(()=>{Ke(!0),u(null),g(null),v(!1),s(k?"account-login":"login")}),()=>{clearInterval(q),Vv(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 TI(E.trim())).authenticated){oe("Setup failed");return}Z(""),G(""),te(!1),Ke(!1),g(null),v(!0),s("checking");try{const De=await sh();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 DI(E.trim()):await RI(E.trim())).authenticated){oe(Q==="api-key"?"Invalid API key":"Incorrect password");return}const De=await sh();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 qI(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(HI,{account:r,apiKey:f,apiKeyPending:b,children:c.jsx($4,{client:q,children:c.jsx(K4,{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(Hu,{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(Hu,{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 R3=document.getElementById("root");if(!R3)throw new Error("Expected #root element for web app bootstrap.");xA.createRoot(R3).render(c.jsx(T.StrictMode,{children:c.jsx(yH,{})}));export{OZ as $,DF as A,fe as B,Lu as C,BF as D,qQ as E,DZ as F,RF as G,BZ as H,yl as I,qZ as J,$Q as K,GQ as L,EY as M,eF as N,rn as O,rG as P,IZ as Q,VZ as R,sV as S,pn as T,ZQ as U,LZ as V,YQ as W,HQ as X,FQ as Y,PZ as Z,MZ as _,zY as a,ff as a$,KQ as a0,UZ as a1,ZZ as a2,KZ as a3,QZ as a4,HZ as a5,FZ as a6,bF as a7,bf as a8,ze as a9,WI as aA,FF as aB,on as aC,yV as aD,VV as aE,eZ as aF,sZ as aG,tZ as aH,WH as aI,tQ as aJ,NO as aK,nQ as aL,_V as aM,WF as aN,zO as aO,Rh as aP,eQ as aQ,mI as aR,nZ as aS,JF as aT,EV as aU,aZ as aV,RY as aW,iZ as aX,pY as aY,hY as aZ,XQ as a_,$Z as aa,HS as ab,gi as ac,GZ as ad,MY as ae,RT as af,DT as ag,CH as ah,AH as ai,kF as aj,NF as ak,_F as al,fn as am,zF as an,CQ as ao,oV as ap,dU as aq,Oh as ar,EF as as,Eu as at,lY as au,l_ as av,Gh as aw,Ps as ax,QQ as ay,jH as az,L9 as b,ZH as b$,rY as b0,OV as b1,uZ as b2,mZ as b3,xZ as b4,EZ as b5,zZ as b6,bZ as b7,NZ as b8,RZ as b9,rQ as bA,lQ as bB,pQ as bC,mQ as bD,dQ as bE,cQ as bF,uQ as bG,oQ as bH,sQ as bI,iQ as bJ,aQ as bK,rB as bL,LH as bM,PH as bN,MH as bO,IH as bP,UH as bQ,VH as bR,KH as bS,oY as bT,GH as bU,$H as bV,lF as bW,qH as bX,PY as bY,FH as bZ,HH as b_,hZ as ba,wZ as bb,SZ as bc,jZ as bd,pZ as be,kZ as bf,fZ as bg,AZ as bh,gZ as bi,CZ as bj,vZ as bk,_Z as bl,TZ as bm,eK as bn,yZ as bo,ge as bp,SQ as bq,wQ as br,kQ as bs,xQ as bt,yQ as bu,gQ as bv,vQ as bw,bQ as bx,fQ as by,hQ as bz,T2 as c,XZ as c$,YH as c0,BH as c1,QH as c2,DQ as c3,RQ as c4,TQ as c5,cF as c6,GV as c7,dZ as c8,IF as c9,iK as cA,oZ as cB,GF as cC,QF as cD,$F as cE,rZ as cF,TY as cG,KF as cH,xn as cI,jI as cJ,dV as cK,d$ as cL,NQ as cM,NI as cN,_Q as cO,zQ as cP,EQ as cQ,ts as cR,gV as cS,xV as cT,OQ as cU,YZ as cV,II as cW,sF as cX,JZ as cY,WZ as cZ,eY as c_,Qv as ca,PQ as cb,MQ as cc,PF as cd,MF as ce,IQ as cf,VQ as cg,UQ as ch,LQ as ci,$l as cj,Zs as ck,_S as cl,UF as cm,LF as cn,JG as co,lG as cp,u3 as cq,pG as cr,d3 as cs,m3 as ct,kV as cu,Is as cv,Zu as cw,QV as cx,rK as cy,BY as cz,TF as d,r$ as d$,OF as d0,tF as d1,nF as d2,aF as d3,oF as d4,iF as d5,nr as d6,gf as d7,DY as d8,Cd as d9,$$ as dA,JH as dB,af as dC,VF as dD,cY as dE,mY as dF,gF as dG,XH as dH,hF as dI,fF as dJ,pF as dK,uY as dL,U8 as dM,ZF as dN,HF as dO,XF as dP,YF as dQ,zH as dR,yi as dS,fa as dT,_H as dU,dI as dV,fY as dW,yY as dX,gY as dY,sK as dZ,xY as d_,kf as da,lZ as db,cZ as dc,yI as dd,jQ as de,AQ as df,BQ as dg,JQ as dh,WQ as di,zf as dj,Nd as dk,wf as dl,oK as dm,rF as dn,ar as dp,Zv as dq,vF as dr,wF as ds,jF as dt,AF as du,xF as dv,SF as dw,CF as dx,yF as dy,dY as dz,aY as e,EH as e0,CY as e1,NY as e2,_Y as e3,bY as e4,vY as e5,NH as e6,wY as e7,AY as e8,kY as e9,jY as ea,ir as eb,TH as ec,SY as ed,g9 as ee,DH as ef,RH as eg,ua as f,tY as g,ox as h,se as i,pI as j,mn as k,Ft as l,nY as m,sY as n,iY as o,uF as p,mF as q,dF as r,OH as s,lV as t,Sf as u,ha as v,OY as w,qY as x,Lh as y,qF as z};