PageSourceSearch

https://bizplanner.ai/assets/index-NwEFhPA0.js

js bizplanner.ai collected 2026-10-05 11:50:37 UTC 1,458,127 bytes, 3,266 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Auth-CRat-Lwr.js","assets/analytics-BsPnnpqz.js","assets/input-CkVE8fp8.js","assets/label-D17oNgiY.js","assets/disposableEmails-o_pe6E0b.js","assets/mail-BSNUbYWs.js","assets/Dashboard-BKn6M97l.js","assets/badge-D_YHDHBA.js","assets/useLawyerSubscription-DvcKkrGQ.js","assets/zap-CyU0R1qD.js","assets/log-out-CkU8Vx_b.js","assets/plus-BNPajLMA.js","assets/crown-CayXwuvP.js","assets/credit-card-CNY-kPb7.js","assets/GetStarted-gmxE5DzK.js","assets/city-search--IndZcko.js","assets/map-pin-CXPlYVtz.js","assets/OnboardingStepper-CkLob9yt.js","assets/schemas-qtMQtlUT.js","assets/Questionnaire-pY_T9GKW.js","assets/textarea-rICNq6ZO.js","assets/tag-B-fT2X36.js","assets/trash-2-DuhmMSCH.js","assets/info-DnrC4dcg.js","assets/PlanHome-nHu0wdD4.js","assets/DashboardLayout-CvdIkXwW.js","assets/panel-left-DQjPX9y2.js","assets/coins-CRu_Omx9.js","assets/usePlanLanguageSync-CeQLvXKv.js","assets/UnlockBanner-CsTmIaMC.js","assets/lock-Ad9P-h7W.js","assets/lock-open-n_zaxqhm.js","assets/TopUpDialog-DsYWGLcG.js","assets/dialog-CR40autX.js","assets/index-KFRh6O9B.js","assets/SectionCard-gjIAJDBb.js","assets/circle-x-35_WDcID.js","assets/IndustryTrends-CPfui0qr.js","assets/IndustryStats-X1pAzHyV.js","assets/building-2-4SNP6Ag4.js","assets/clock-DMkey-Ye.js","assets/TargetAudience-Df_4D2wh.js","assets/user-CcUIRpc_.js","assets/heart-CH9Zynj8.js","assets/CompetitorsAnalysis-IXUKnEQ-.js","assets/SwotAnalysis-B9ZvRp7s.js","assets/circle-alert-tkj5b5pF.js","assets/FinancialProjections-B4_SUZ3g.js","assets/Regulations-C3MGYaZO.js","assets/SuggestedNextSteps-DXfld21K.js","assets/Tools-Cr1gbTnP.js","assets/wand-sparkles-CryYSWyo.js","assets/BusinessNameGenerator-CaR74s3-.js","assets/copy-BiQ8x7zJ.js","assets/CoverPage-BCdJLe07.js","assets/upload-DhyafyxF.js","assets/image-DP3g9eK-.js","assets/calendar-CWMoOHdU.js","assets/ExecutiveSummary-UwwacSd2.js","assets/award-tCYIv8tl.js","assets/PlanPreview-B2xRNYKY.js","assets/skip-forward-ytKyO9pn.js","assets/PaymentSuccess-s40DCD61.js","assets/circle-check-DuYY_UfB.js","assets/Documents-DnQvhIlE.js","assets/exportPdf-BaQYvu7Y.js","assets/jspdf.es.min-BwPd3Nws.js","assets/SectionEditor-DuOkBvLy.js","assets/dropdown-menu-C4wafdtf.js","assets/index-Ckyn2kv7.js","assets/checkbox-BUpG-VMy.js","assets/table-BX6naeN4.js","assets/FixedBottomToolbar-Buh9Dk1D.js","assets/index-Dh4i1-J3.js","assets/separator-Dk4S-D06.js","assets/purify.es-D6gMnemd.js","assets/search-DLZpxukn.js","assets/FileSaver.min-TPampxK3.js","assets/chevron-left-CVLIYvXa.js","assets/save-CHWcWZYN.js","assets/file-down-C7WaZh5M.js","assets/BusinessDetails-DVG3Hcza.js","assets/alert-dialog-C5d9M25I.js","assets/About-DYOMpaxj.js","assets/Contact-Cau1uz4X.js","assets/circle-help-C_ktg6s9.js","assets/HelpCenter-Gwl0cNZ0.js","assets/Industries-vc8GT_cF.js","assets/Affiliate-i1fQXJa2.js","assets/gift-0tnqFY80.js","assets/BusinessPlanGenerator-x-WsFmei.js","assets/AIBusinessPlanWriter-CD_Gr4zZ.js","assets/pen-line-C2mazCin.js","assets/GuidePage-B_fKVTth.js","assets/RefundPolicy-YgGk_WO4.js","assets/Unsubscribe-CsK0rSZT.js","assets/card-CaKhy42z.js","assets/AdminDashboard-DEeDSDhY.js","assets/AdminLayout-BUGuISGX.js","assets/generateCategoricalChart-BQkzxdHr.js","assets/AdminUsers-D9qh7rb8.js","assets/format-dVXnaPEj.js","assets/en-US-wfBU2YNu.js","assets/ellipsis-Dk0fNpBh.js","assets/eye-yDhxOkfo.js","assets/shield-off-CD3eZ9nH.js","assets/AdminPlans-BfhySkGH.js","assets/endOfMonth-BsqzHdGd.js","assets/popover-B3zXKfBh.js","assets/AdminManagement-BLQUzs0G.js","assets/AdminImport-DjYF6eYg.js","assets/progress-BdaJRI0p.js","assets/tabs-Cqf8x9pD.js","assets/AdminMonitoring-D21Ype8Q.js","assets/AdminStatCard-BNTrOreS.js","assets/AdminSeo-B-f1Owc_.js","assets/AdminAffiliates-B9Ti5JSq.js","assets/Account-P3B5JLve.js","assets/VisaBusinessPlan-RATkt3NZ.js","assets/VisaPromoBanner-CFcvYrOM.js","assets/VisaNavbar-CtV_AXN0.js","assets/VisaGetStarted-BSQSTzc9.js","assets/VisaPlanHome-Ca_L6sEs.js","assets/VisaDashboardLayout-DTrzxlTG.js","assets/formatDistanceToNow-xsXvXzd6.js","assets/VisaSectionEditor-BWq3RW1z.js","assets/VisaParentFinancials-CNEgH0lS.js","assets/palette-B9PxQkEx.js","assets/VisaPlanPreview-Dx2Q-d5g.js","assets/VisaDocumentUploads-BL19CfGq.js","assets/VisaAuth-DdDIcy1b.js","assets/VisaPaymentSuccess-DbAzlyoz.js","assets/FirmSettings-Cfr1dKRM.js","assets/VisaPricing-
vendor: 6,185 bytes, lines 1-10
1D2MMK-ri.js","assets/VisaAccount-DKQBnvld.js","assets/VisaTemplates-DcLFUS5r.js","assets/visaTemplates-ByBmN0fO.js","assets/VisaTemplatePage-WcKjyWbo.js","assets/VisaLandingPage-y1cgCCsm.js"])))=>i.map(i=>d[i]);
2var jS=Object.defineProperty;var qh=e=>{throw TypeError(e)};var IS=(e,t,n)=>t in e?jS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Gt=(e,t,n)=>IS(e,typeof t!="symbol"?t+"":t,n),su=(e,t,n)=>t.has(e)||qh("Cannot "+n);var L=(e,t,n)=>(su(e,t,"read from private field"),n?n.call(e):t.get(e)),me=(e,t,n)=>t.has(e)?qh("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),ne=(e,t,n,a)=>(su(e,t,"write to private field"),a?a.call(e,n):t.set(e,n),n),tt=(e,t,n)=>(su(e,t,"access private method"),n);var Ao=(e,t,n,a)=>({set _(r){ne(e,t,r,n)},get _(){return L(e,t,a)}});function RS(e,t){for(var n=0;n<t.length;n++){const a=t[n];if(typeof a!="string"&&!Array.isArray(a)){for(const r in a)if(r!=="default"&&!(r in e)){const s=Object.getOwnPropertyDescriptor(a,r);s&&Object.defineProperty(e,r,s.get?s:{enumerable:!0,get:()=>a[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))a(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&a(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var MM=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var dy={exports:{}},mc={},py={exports:{}},ie={};/**
3 * @license React
4 * react.production.min.js
5 *
6 * Copyright (c) Facebook, Inc. and its affiliates.
7 *
8 * This source code is licensed under the MIT license found in the
9 * LICENSE file in the root directory of this source tree.
10 */var go=Symbol.for("react.element"),_S=Symbol.for("react.portal"),OS=Symbol.for("react.fragment"),NS=Symbol.for("react.strict_mode"),LS=Symbol.for("react.profiler"),zS=Symbol.for("react.provider"),BS=Symbol.for("react.context"),DS=Symbol.for("react.forward_ref"),qS=Symbol.for("react.suspense"),MS=Symbol.for("react.memo"),FS=Symbol.for("react.lazy"),Mh=Symbol.iterator;function US(e){return e===null||typeof e!="object"?null:(e=Mh&&e[Mh]||e["@@iterator"],typeof e=="function"?e:null)}var my={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},hy=Object.assign,fy={};function qs(e,t,n){this.props=e,this.context=t,this.refs=fy,this.updater=n||my}qs.prototype.isReactComponent={};qs.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};qs.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function gy(){}gy.prototype=qs.prototype;function Xp(e,t,n){this.props=e,this.context=t,this.refs=fy,this.updater=n||my}var Zp=Xp.prototype=new gy;Zp.constructor=Xp;hy(Zp,qs.prototype);Zp.isPureReactComponent=!0;var Fh=Array.isArray,vy=Object.prototype.hasOwnProperty,em={current:null},yy={key:!0,ref:!0,__self:!0,__source:!0};function by(e,t,n){var a,r={},s=null,i=null;if(t!=null)for(a in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(s=""+t.key),t)vy.call(t,a)&&!yy.hasOwnProperty(a)&&(r[a]=t[a]);var o=arguments.length-2;if(o===1)r.children=n;else if(1<o){for(var c=Array(o),u=0;u<o;u++)c[u]=arguments[u+2];r.children=c}if(e&&e.defaultProps)for(a in o=e.defaultProps,o)r[a]===void 0&&(r[a]=o[a]);return{$$typeof:go,type:e,key:s,ref:i,props:r,_owner:em.current}}function $S(e,t){return{$$typeof:go,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function tm(e){return typeof e=="object"&&e!==null&&e.$$typeof===go}function WS(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Uh=/\/+/g;function iu(e,t){return typeof e=="object"&&e!==null&&e.key!=null?WS(""+e.key):t.toString(36)}function il(e,t,n,a,r){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(s){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case go:case _S:i=!0}}if(i)return i=e,r=r(i),e=a===""?"."+iu(i,0):a,Fh(r)?(n="",e!=null&&(n=e.replace(Uh,"$&/")+"/"),il(r,t,n,"",function(u){return u})):r!=null&&(tm(r)&&(r=$S(r,n+(!r.key||i&&i.key===r.key?"":(""+r.key).replace(Uh,"$&/")+"/")+e)),t.push(r)),1;if(i=0,a=a===""?".":a+":",Fh(e))for(var o=0;o<e.length;o++){s=e[o];var c=a+iu(s,o);i+=il(s,t,n,c,r)}else if(c=US(e),typeof c=="function")for(e=c.call(e),o=0;!(s=e.next()).done;)s=s.value,c=a+iu(s,o++),i+=il(s,t,n,c,r);else if(s==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return i}function Eo(e,t,n){if(e==null)return e;var a=[],r=0;return il(e,a,"","",function(s){return t.call(n,s,r++)}),a}function VS(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var pt={current:null},ol={transition:null},HS={ReactCurrentDispatcher:pt,ReactCurrentBatchConfig:ol,ReactCurrentOwner:em};function wy(){throw Error("act(...) is not supported in production builds of React.")}
vendor: 5,695 bytes, lines 10-26
10ie.Children={map:Eo,forEach:function(e,t,n){Eo(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return Eo(e,function(){t++}),t},toArray:function(e){return Eo(e,function(t){return t})||[]},only:function(e){if(!tm(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};ie.Component=qs;ie.Fragment=OS;ie.Profiler=LS;ie.PureComponent=Xp;ie.StrictMode=NS;ie.Suspense=qS;ie.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=HS;ie.act=wy;ie.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=hy({},e.props),r=e.key,s=e.ref,i=e._owner;if(t!=null){if(t.ref!==void 0&&(s=t.ref,i=em.current),t.key!==void 0&&(r=""+t.key),e.type&&e.type.defaultProps)var o=e.type.defaultProps;for(c in t)vy.call(t,c)&&!yy.hasOwnProperty(c)&&(a[c]=t[c]===void 0&&o!==void 0?o[c]:t[c])}var c=arguments.length-2;if(c===1)a.children=n;else if(1<c){o=Array(c);for(var u=0;u<c;u++)o[u]=arguments[u+2];a.children=o}return{$$typeof:go,type:e.type,key:r,ref:s,props:a,_owner:i}};ie.createContext=function(e){return e={$$typeof:BS,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:zS,_context:e},e.Consumer=e};ie.createElement=by;ie.createFactory=function(e){var t=by.bind(null,e);return t.type=e,t};ie.createRef=function(){return{current:null}};ie.forwardRef=function(e){return{$$typeof:DS,render:e}};ie.isValidElement=tm;ie.lazy=function(e){return{$$typeof:FS,_payload:{_status:-1,_result:e},_init:VS}};ie.memo=function(e,t){return{$$typeof:MS,type:e,compare:t===void 0?null:t}};ie.startTransition=function(e){var t=ol.transition;ol.transition={};try{e()}finally{ol.transition=t}};ie.unstable_act=wy;ie.useCallback=function(e,t){return pt.current.useCallback(e,t)};ie.useContext=function(e){return pt.current.useContext(e)};ie.useDebugValue=function(){};ie.useDeferredValue=function(e){return pt.current.useDeferredValue(e)};ie.useEffect=function(e,t){return pt.current.useEffect(e,t)};ie.useId=function(){return pt.current.useId()};ie.useImperativeHandle=function(e,t,n){return pt.current.useImperativeHandle(e,t,n)};ie.useInsertionEffect=function(e,t){return pt.current.useInsertionEffect(e,t)};ie.useLayoutEffect=function(e,t){return pt.current.useLayoutEffect(e,t)};ie.useMemo=function(e,t){return pt.current.useMemo(e,t)};ie.useReducer=function(e,t,n){return pt.current.useReducer(e,t,n)};ie.useRef=function(e){return pt.current.useRef(e)};ie.useState=function(e){return pt.current.useState(e)};ie.useSyncExternalStore=function(e,t,n){return pt.current.useSyncExternalStore(e,t,n)};ie.useTransition=function(){return pt.current.useTransition()};ie.version="18.3.1";py.exports=ie;var v=py.exports;const O=fo(v),nm=RS({__proto__:null,default:O},[v]);/**
11 * @license React
12 * react-jsx-runtime.production.min.js
13 *
14 * Copyright (c) Facebook, Inc. and its affiliates.
15 *
16 * This source code is licensed under the MIT license found in the
17 * LICENSE file in the root directory of this source tree.
18 */var GS=v,KS=Symbol.for("react.element"),YS=Symbol.for("react.fragment"),JS=Object.prototype.hasOwnProperty,QS=GS.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,XS={key:!0,ref:!0,__self:!0,__source:!0};function xy(e,t,n){var a,r={},s=null,i=null;n!==void 0&&(s=""+n),t.key!==void 0&&(s=""+t.key),t.ref!==void 0&&(i=t.ref);for(a in t)JS.call(t,a)&&!XS.hasOwnProperty(a)&&(r[a]=t[a]);if(e&&e.defaultProps)for(a in t=e.defaultProps,t)r[a]===void 0&&(r[a]=t[a]);return{$$typeof:KS,type:e,key:s,ref:i,props:r,_owner:QS.current}}mc.Fragment=YS;mc.jsx=xy;mc.jsxs=xy;dy.exports=mc;var l=dy.exports,ky={exports:{}},Rt={},Sy={exports:{}},Py={};/**
19 * @license React
20 * scheduler.production.min.js
21 *
22 * Copyright (c) Facebook, Inc. and its affiliates.
23 *
24 * This source code is licensed under the MIT license found in the
25 * LICENSE file in the root directory of this source tree.
26 */(function(e){function t(C,I){var q=C.length;C.push(I);e:for(;0<q;){var W=q-1>>>1,G=C[W];if(0<r(G,I))C[W]=I,C[q]=G,q=W;else break e}}function n(C){return C.length===0?null:C[0]}function a(C){if(C.length===0)return null;var I=C[0],q=C.pop();if(q!==I){C[0]=q;e:for(var W=0,G=C.length,Q=G>>>1;W<Q;){var X=2*(W+1)-1,ve=C[X],_e=X+1,U=C[_e];if(0>r(ve,q))_e<G&&0>r(U,ve)?(C[W]=U,C[_e]=q,W=_e):(C[W]=ve,C[X]=q,W=X);else if(_e<G&&0>r(U,q))C[W]=U,C[_e]=q,W=_e;else break e}}return I}function r(C,I){var q=C.sortIndex-I.sortIndex;return q!==0?q:C.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var i=Date,o=i.now();e.unstable_now=function(){return i.now()-o}}var c=[],u=[],d=1,p=null,h=3,m=!1,w=!1,f=!1,x=typeof setTimeout=="function"?setTimeout:null,b=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function y(C){for(var I=n(u);I!==null;){if(I.callback===null)a(u);else if(I.startTime<=C)a(u),I.sortIndex=I.expirationTime,t(c,I);else break;I=n(u)}}function k(C){if(f=!1,y(C),!w)if(n(c)!==null)w=!0,F(P);else{var I=n(u);I!==null&&M(k,I.startTime-C)}}function P(C,I){w=!1,f&&(f=!1,b(A),A=-1),m=!0;var q=h;try{for(y(I),p=n(c);p!==null&&(!(p.expirationTime>I)||C&&!D());){var W=p.callback;if(typeof W=="function"){p.callback=null,h=p.priorityLevel;var G=W(p.expirationTime<=I);I=e.unstable_now(),typeof G=="function"?p.callback=G:p===n(c)&&a(c),y(I)}else a(c);p=n(c)}if(p!==null)var Q=!0;else{var X=n(u);
vendor: 8,937 bytes, lines 26-35
26X!==null&&M(k,X.startTime-I),Q=!1}return Q}finally{p=null,h=q,m=!1}}var E=!1,S=null,A=-1,T=5,j=-1;function D(){return!(e.unstable_now()-j<T)}function z(){if(S!==null){var C=e.unstable_now();j=C;var I=!0;try{I=S(!0,C)}finally{I?_():(E=!1,S=null)}}else E=!1}var _;if(typeof g=="function")_=function(){g(z)};else if(typeof MessageChannel<"u"){var N=new MessageChannel,$=N.port2;N.port1.onmessage=z,_=function(){$.postMessage(null)}}else _=function(){x(z,0)};function F(C){S=C,E||(E=!0,_())}function M(C,I){A=x(function(){C(e.unstable_now())},I)}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(C){C.callback=null},e.unstable_continueExecution=function(){w||m||(w=!0,F(P))},e.unstable_forceFrameRate=function(C){0>C||125<C?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):T=0<C?Math.floor(1e3/C):5},e.unstable_getCurrentPriorityLevel=function(){return h},e.unstable_getFirstCallbackNode=function(){return n(c)},e.unstable_next=function(C){switch(h){case 1:case 2:case 3:var I=3;break;default:I=h}var q=h;h=I;try{return C()}finally{h=q}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(C,I){switch(C){case 1:case 2:case 3:case 4:case 5:break;default:C=3}var q=h;h=C;try{return I()}finally{h=q}},e.unstable_scheduleCallback=function(C,I,q){var W=e.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?W+q:W):q=W,C){case 1:var G=-1;break;case 2:G=250;break;case 5:G=1073741823;break;case 4:G=1e4;break;default:G=5e3}return G=q+G,C={id:d++,callback:I,priorityLevel:C,startTime:q,expirationTime:G,sortIndex:-1},q>W?(C.sortIndex=q,t(u,C),n(c)===null&&C===n(u)&&(f?(b(A),A=-1):f=!0,M(k,q-W))):(C.sortIndex=G,t(c,C),w||m||(w=!0,F(P))),C},e.unstable_shouldYield=D,e.unstable_wrapCallback=function(C){var I=h;return function(){var q=h;h=I;try{return C.apply(this,arguments)}finally{h=q}}}})(Py);Sy.exports=Py;var ZS=Sy.exports;/**
27 * @license React
28 * react-dom.production.min.js
29 *
30 * Copyright (c) Facebook, Inc. and its affiliates.
31 *
32 * This source code is licensed under the MIT license found in the
33 * LICENSE file in the root directory of this source tree.
34 */var eP=v,It=ZS;function B(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var Ay=new Set,_i={};function Pr(e,t){Ts(e,t),Ts(e+"Capture",t)}function Ts(e,t){for(_i[e]=t,e=0;e<t.length;e++)Ay.add(t[e])}var qn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fd=Object.prototype.hasOwnProperty,tP=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,$h={},Wh={};function nP(e){return fd.call(Wh,e)?!0:fd.call($h,e)?!1:tP.test(e)?Wh[e]=!0:($h[e]=!0,!1)}function aP(e,t,n,a){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return a?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rP(e,t,n,a){if(t===null||typeof t>"u"||aP(e,t,n,a))return!0;if(a)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function mt(e,t,n,a,r,s,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=a,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=i}var Ze={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ze[e]=new mt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ze[t]=new mt(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ze[e]=new mt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ze[e]=new mt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ze[e]=new mt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ze[e]=new mt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ze[e]=new mt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ze[e]=new mt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ze[e]=new mt(e,5,!1,e.toLowerCase(),null,!1,!1)});var am=/[\-:]([a-z])/g;function rm(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(am,rm);Ze[t]=new mt(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(am,rm);Ze[t]=new mt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(am,rm);Ze[t]=new mt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ze[e]=new mt(e,1,!1,e.toLowerCase(),null,!1,!1)});Ze.xlinkHref=new mt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ze[e]=new mt(e,1,!1,e.toLowerCase(),null,!0,!0)});function sm(e,t,n,a){var r=Ze.hasOwnProperty(t)?Ze[t]:null;(r!==null?r.type!==0:a||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(rP(t,n,r,a)&&(n=null),a||r===null?nP(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=n===null?r.type===3?!1:"":n:(t=r.attributeName,a=r.attributeNamespace,n===null?e.removeAttribute(t):(r=r.type,n=r===3||r===4&&n===!0?"":""+n,a?e.setAttributeNS(a,t,n):e.setAttribute(t,n))))}var Vn=eP.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Co=Symbol.for("react.element"),Yr=Symbol.for("react.portal"),Jr=Symbol.for("react.fragment"),im=Symbol.for("react.strict_mode"),gd=Symbol.for("react.profiler"),Ey=Symbol.for("react.provider"),Cy=Symbol.for("react.context"),om=Symbol.for("react.forward_ref"),vd=Symbol.for("react.suspense"),yd=Symbol.for("react.suspense_list"),lm=Symbol.for("react.memo"),sa=Symbol.for("react.lazy"),Ty=Symbol.for("react.offscreen"),Vh=Symbol.iterator;function Zs(e){return e===null||typeof e!="object"?null:(e=Vh&&e[Vh]||e["@@iterator"],typeof e=="function"?e:null)}var Re=Object.assign,ou;function pi(e){if(ou===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);ou=t&&t[1]||""}return`
35`+ou+e}var lu=!1;function cu(e,t){if(!e||lu)return"";lu=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var a=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){a=u}e.call(t.prototype)}else{try{throw Error()}catch(u){a=u}e()}}
vendor: 16,472 bytes, lines 35-38
35catch(u){if(u&&a&&typeof u.stack=="string"){for(var r=u.stack.split(`
36`),s=a.stack.split(`
37`),i=r.length-1,o=s.length-1;1<=i&&0<=o&&r[i]!==s[o];)o--;for(;1<=i&&0<=o;i--,o--)if(r[i]!==s[o]){if(i!==1||o!==1)do if(i--,o--,0>o||r[i]!==s[o]){var c=`
38`+r[i].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=i&&0<=o);break}}}finally{lu=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?pi(e):""}function sP(e){switch(e.tag){case 5:return pi(e.type);case 16:return pi("Lazy");case 13:return pi("Suspense");case 19:return pi("SuspenseList");case 0:case 2:case 15:return e=cu(e.type,!1),e;case 11:return e=cu(e.type.render,!1),e;case 1:return e=cu(e.type,!0),e;default:return""}}function bd(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Jr:return"Fragment";case Yr:return"Portal";case gd:return"Profiler";case im:return"StrictMode";case vd:return"Suspense";case yd:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Cy:return(e.displayName||"Context")+".Consumer";case Ey:return(e._context.displayName||"Context")+".Provider";case om:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case lm:return t=e.displayName||null,t!==null?t:bd(e.type)||"Memo";case sa:t=e._payload,e=e._init;try{return bd(e(t))}catch{}}return null}function iP(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return bd(t);case 8:return t===im?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ja(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function jy(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function oP(e){var t=jy(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var r=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(i){a=""+i,s.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(i){a=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function To(e){e._valueTracker||(e._valueTracker=oP(e))}function Iy(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=jy(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function El(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function wd(e,t){var n=t.checked;return Re({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Hh(e,t){var n=t.defaultValue==null?"":t.defaultValue,a=t.checked!=null?t.checked:t.defaultChecked;n=ja(t.value!=null?t.value:n),e._wrapperState={initialChecked:a,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Ry(e,t){t=t.checked,t!=null&&sm(e,"checked",t,!1)}function xd(e,t){Ry(e,t);var n=ja(t.value),a=t.type;if(n!=null)a==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(a==="submit"||a==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?kd(e,t.type,n):t.hasOwnProperty("defaultValue")&&kd(e,t.type,ja(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Gh(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!(a!=="submit"&&a!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function kd(e,t,n){(t!=="number"||El(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var mi=Array.isArray;function ls(e,t,n,a){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&a&&(e[n].defaultSelected=!0)}else{for(n=""+ja(n),t=null,r=0;r<e.length;r++){if(e[r].value===n){e[r].selected=!0,a&&(e[r].defaultSelected=!0);return}t!==null||e[r].disabled||(t=e[r])}t!==null&&(t.selected=!0)}}function Sd(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(B(91));return Re({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Kh(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(B(92));if(mi(n)){if(1<n.length)throw Error(B(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:ja(n)}}function _y(e,t){var n=ja(t.value),a=ja(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),a!=null&&(e.defaultValue=""+a)}function Yh(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function Oy(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Pd(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?Oy(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var jo,Ny=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,n,a,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,a,r)})}:e}(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(jo=jo||document.createElement("div"),jo.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=jo.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Oi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var yi={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},lP=["Webkit","ms","Moz","O"];Object.keys(yi).forEach(function(e){lP.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),yi[t]=yi[e]})});function Ly(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||yi.hasOwnProperty(e)&&yi[e]?(""+t).trim():t+"px"}function zy(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var a=n.indexOf("--")===0,r=Ly(n,t[n],a);n==="float"&&(n="cssFloat"),a?e.setProperty(n,r):e[n]=r}}var cP=Re({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ad(e,t){if(t){if(cP[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(B(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(B(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(B(61))}if(t.style!=null&&typeof t.style!="object")throw Error(B(62))}}function Ed(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Cd=null;function cm(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Td=null,cs=null,us=null;function Jh(e){if(e=bo(e)){if(typeof Td!="function")throw Error(B(280));var t=e.stateNode;t&&(t=yc(t),Td(e.stateNode,e.type,t))}}function By(e){cs?us?us.push(e):us=[e]:cs=e}function Dy(){if(cs){var e=cs,t=us;if(us=cs=null,Jh(e),t)for(e=0;e<t.length;e++)Jh(t[e])}}function qy(e,t){return e(t)}function My(){}var uu=!1;function Fy(e,t,n){if(uu)return e(t,n);uu=!0;try{return qy(e,t,n)}finally{uu=!1,(cs!==null||us!==null)&&(My(),Dy())}}function Ni(e,t){var n=e.stateNode;if(n===null)return null;var a=yc(n);if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(B(231,t,typeof n));return n}var jd=!1;if(qn)try{var ei={};Object.defineProperty(ei,"passive",{get:function(){jd=!0}}),window.addEventListener("test",ei,ei),window.removeEventListener("test",ei,ei)}catch{jd=!1}function uP(e,t,n,a,r,s,i,o,c){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(d){this.onError(d)}}var bi=!1,Cl=null,Tl=!1,Id=null,dP={onError:function(e){bi=!0,Cl=e}};function pP(e,t,n,a,r,s,i,o,c){bi=!1,Cl=null,uP.apply(dP,arguments)}function mP(e,t,n,a,r,s,i,o,c){if(pP.apply(this,arguments),bi){if(bi){var u=Cl;bi=!1,Cl=null}else throw Error(B(198));Tl||(Tl=!0,Id=u)}}function Ar(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function Uy(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Qh(e){if(Ar(e)!==e)throw Error(B(188))}function hP(e){var t=e.alternate;if(!t){if(t=Ar(e),t===null)throw Error(B(188));return t!==e?null:e}for(var n=e,a=t;;){var r=n.return;if(r===null)break;var s=r.alternate;if(s===null){if(a=r.return,a!==null){n=a;continue}break}if(r.child===s.child){for(s=r.child;s;){if(s===n)return Qh(r),e;if(s===a)return Qh(r),t;s=s.sibling}throw Error(B(188))}if(n.return!==a.return)n=r,a=s;else{for(var i=!1,o=r.child;o;){if(o===n){i=!0,n=r,a=s;break}if(o===a){i=!0,a=r,n=s;break}o=o.sibling}if(!i){for(o=s.child;o;){if(o===n){i=!0,n=s,a=r;break}if(o===a){i=!0,a=s,n=r;break}o=o.sibling}if(!i)throw Error(B(189))}}if(n.alternate!==a)throw Error(B(190))}if(n.tag!==3)throw Error(B(188));return n.stateNode.current===n?e:t}function $y(e){return e=hP(e),e!==null?Wy(e):null}function Wy(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=Wy(e);if(t!==null)return t;e=e.sibling}return null}var Vy=It.unstable_scheduleCallback,Xh=It.unstable_cancelCallback,fP=It.unstable_shouldYield,gP=It.unstable_requestPaint,Be=It.unstable_now,vP=It.unstable_getCurrentPriorityLevel,um=It.unstable_ImmediatePriority,Hy=It.unstable_UserBlockingPriority,jl=It.unstable_NormalPriority,yP=It.unstable_LowPriority,Gy=It.unstable_IdlePriority,hc=null,An=null;function bP(e){if(An&&typeof An.onCommitFiberRoot=="function")try{An.onCommitFiberRoot(hc,e,void 0,(e.current.flags&128)===128)}catch{}}var ln=Math.clz32?Math.clz32:kP,wP=Math.log,xP=Math.LN2;function kP(e){return e>>>=0,e===0?32:31-(wP(e)/xP|0)|0}var Io=64,Ro=4194304;function hi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Il(e,t){var n=e.pendingLanes;if(n===0)return 0;var a=0,r=e.suspendedLanes,s=e.pingedLanes,i=n&268435455;if(i!==0){var o=i&~r;o!==0?a=hi(o):(s&=i,s!==0&&(a=hi(s)))}else i=n&~r,i!==0?a=hi(i):s!==0&&(a=hi(s));if(a===0)return 0;if(t!==0&&t!==a&&!(t&r)&&(r=a&-a,s=t&-t,r>=s||r===16&&(s&4194240)!==0))return t;if(a&4&&(a|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=a;0<t;)n=31-ln(t),r=1<<n,a|=e[n],t&=~r;return a}function SP(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function PP(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,r=e.expirationTimes,s=e.pendingLanes;0<s;){var i=31-ln(s),o=1<<i,c=r[i];c===-1?(!(o&n)||o&a)&&(r[i]=SP(o,t)):c<=t&&(e.expiredLanes|=o),s&=~o}}function Rd(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Ky(){var e=Io;return Io<<=1,!(Io&4194240)&&(Io=64),e}function du(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function vo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ln(t),e[t]=n}function AP(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var a=e.eventTimes;for(e=e.expirationTimes;0<n;){var r=31-ln(n),s=1<<r;t[r]=0,a[r]=-1,e[r]=-1,n&=~s}}function dm(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-ln(n),r=1<<a;r&t|e[a]&t&&(e[a]|=t),n&=~r}}var ge=0;function Yy(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var Jy,pm,Qy,Xy,Zy,_d=!1,_o=[],wa=null,xa=null,ka=null,Li=new Map,zi=new Map,la=[],EP="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Zh(e,t){switch(e){case"focusin":case"focusout":wa=null;break;case"dragenter":case"dragleave":xa=null;break;case"mouseover":case"mouseout":ka=null;break;case"pointerover":case"pointerout":Li.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":zi.delete(t.pointerId)}}function ti(e,t,n,a,r,s){return e===null||e.nativeEvent!==s?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:s,targetContainers:[r]},t!==null&&(t=bo(t),t!==null&&pm(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,r!==null&&t.indexOf(r)===-1&&t.push(r),e)}function CP(e,t,n,a,r){switch(t){case"focusin":return wa=ti(wa,e,t,n,a,r),!0;case"dragenter":return xa=ti(xa,e,t,n,a,r),!0;case"mouseover":return ka=ti(ka,e,t,n,a,r),!0;case"pointerover":var s=r.pointerId;return Li.set(s,ti(Li.get(s)||null,e,t,n,a,r)),!0;case"gotpointercapture":return s=r.pointerId,zi.set(s,ti(zi.get(s)||null,e,t,n,a,r)),!0}return!1}function eb(e){var t=Za(e.target);if(t!==null){var n=Ar(t);if(n!==null){if(t=n.tag,t===13){if(t=Uy(n),t!==null){e.blockedOn=t,Zy(e.priority,function(){Qy(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function ll(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=Od(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);
vendor: 11,733 bytes, line 38
38Cd=a,n.target.dispatchEvent(a),Cd=null}else return t=bo(n),t!==null&&pm(t),e.blockedOn=n,!1;t.shift()}return!0}function ef(e,t,n){ll(e)&&n.delete(t)}function TP(){_d=!1,wa!==null&&ll(wa)&&(wa=null),xa!==null&&ll(xa)&&(xa=null),ka!==null&&ll(ka)&&(ka=null),Li.forEach(ef),zi.forEach(ef)}function ni(e,t){e.blockedOn===t&&(e.blockedOn=null,_d||(_d=!0,It.unstable_scheduleCallback(It.unstable_NormalPriority,TP)))}function Bi(e){function t(r){return ni(r,e)}if(0<_o.length){ni(_o[0],e);for(var n=1;n<_o.length;n++){var a=_o[n];a.blockedOn===e&&(a.blockedOn=null)}}for(wa!==null&&ni(wa,e),xa!==null&&ni(xa,e),ka!==null&&ni(ka,e),Li.forEach(t),zi.forEach(t),n=0;n<la.length;n++)a=la[n],a.blockedOn===e&&(a.blockedOn=null);for(;0<la.length&&(n=la[0],n.blockedOn===null);)eb(n),n.blockedOn===null&&la.shift()}var ds=Vn.ReactCurrentBatchConfig,Rl=!0;function jP(e,t,n,a){var r=ge,s=ds.transition;ds.transition=null;try{ge=1,mm(e,t,n,a)}finally{ge=r,ds.transition=s}}function IP(e,t,n,a){var r=ge,s=ds.transition;ds.transition=null;try{ge=4,mm(e,t,n,a)}finally{ge=r,ds.transition=s}}function mm(e,t,n,a){if(Rl){var r=Od(e,t,n,a);if(r===null)xu(e,t,a,_l,n),Zh(e,a);else if(CP(r,e,t,n,a))a.stopPropagation();else if(Zh(e,a),t&4&&-1<EP.indexOf(e)){for(;r!==null;){var s=bo(r);if(s!==null&&Jy(s),s=Od(e,t,n,a),s===null&&xu(e,t,a,_l,n),s===r)break;r=s}r!==null&&a.stopPropagation()}else xu(e,t,a,null,n)}}var _l=null;function Od(e,t,n,a){if(_l=null,e=cm(a),e=Za(e),e!==null)if(t=Ar(e),t===null)e=null;else if(n=t.tag,n===13){if(e=Uy(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return _l=e,null}function tb(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(vP()){case um:return 1;case Hy:return 4;case jl:case yP:return 16;case Gy:return 536870912;default:return 16}default:return 16}}var ga=null,hm=null,cl=null;function nb(){if(cl)return cl;var e,t=hm,n=t.length,a,r="value"in ga?ga.value:ga.textContent,s=r.length;for(e=0;e<n&&t[e]===r[e];e++);var i=n-e;for(a=1;a<=i&&t[n-a]===r[s-a];a++);return cl=r.slice(e,1<a?1-a:void 0)}function ul(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Oo(){return!0}function tf(){return!1}function _t(e){function t(n,a,r,s,i){this._reactName=n,this._targetInst=r,this.type=a,this.nativeEvent=s,this.target=i,this.currentTarget=null;for(var o in e)e.hasOwnProperty(o)&&(n=e[o],this[o]=n?n(s):s[o]);return this.isDefaultPrevented=(s.defaultPrevented!=null?s.defaultPrevented:s.returnValue===!1)?Oo:tf,this.isPropagationStopped=tf,this}return Re(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=Oo)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=Oo)},persist:function(){},isPersistent:Oo}),t}var Ms={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fm=_t(Ms),yo=Re({},Ms,{view:0,detail:0}),RP=_t(yo),pu,mu,ai,fc=Re({},yo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:gm,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ai&&(ai&&e.type==="mousemove"?(pu=e.screenX-ai.screenX,mu=e.screenY-ai.screenY):mu=pu=0,ai=e),pu)},movementY:function(e){return"movementY"in e?e.movementY:mu}}),nf=_t(fc),_P=Re({},fc,{dataTransfer:0}),OP=_t(_P),NP=Re({},yo,{relatedTarget:0}),hu=_t(NP),LP=Re({},Ms,{animationName:0,elapsedTime:0,pseudoElement:0}),zP=_t(LP),BP=Re({},Ms,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),DP=_t(BP),qP=Re({},Ms,{data:0}),af=_t(qP),MP={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},FP={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},UP={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function $P(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=UP[e])?!!t[e]:!1}function gm(){return $P}var WP=Re({},yo,{key:function(e){if(e.key){var t=MP[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=ul(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?FP[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:gm,charCode:function(e){return e.type==="keypress"?ul(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?ul(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),VP=_t(WP),HP=Re({},fc,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),rf=_t(HP),GP=Re({},yo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:gm}),KP=_t(GP),YP=Re({},Ms,{propertyName:0,elapsedTime:0,pseudoElement:0}),JP=_t(YP),QP=Re({},fc,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),XP=_t(QP),ZP=[9,13,27,32],vm=qn&&"CompositionEvent"in window,wi=null;qn&&"documentMode"in document&&(wi=document.documentMode);var eA=qn&&"TextEvent"in window&&!wi,ab=qn&&(!vm||wi&&8<wi&&11>=wi),sf=" ",of=!1;function rb(e,t){switch(e){case"keyup":return ZP.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sb(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Qr=!1;function tA(e,t){switch(e){case"compositionend":return sb(t);case"keypress":return t.which!==32?null:(of=!0,sf);case"textInput":return e=t.data,e===sf&&of?null:e;default:return null}}function nA(e,t){if(Qr)return e==="compositionend"||!vm&&rb(e,t)?(e=nb(),cl=hm=ga=null,Qr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ab&&t.locale!=="ko"?null:t.data;default:return null}}var aA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function lf(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!aA[e.type]:t==="textarea"}function ib(e,t,n,a){By(a),t=Ol(t,"onChange"),0<t.length&&(n=new fm("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var xi=null,Di=null;function rA(e){vb(e,0)}function gc(e){var t=es(e);if(Iy(t))return e}function sA(e,t){if(e==="change")return t}var ob=!1;if(qn){var fu;if(qn){var gu="oninput"in document;if(!gu){var cf=document.createElement("div");cf.setAttribute("oninput","return;"),gu=typeof cf.oninput=="function"}fu=gu}else fu=!1;ob=fu&&(!document.documentMode||9<document.documentMode)}function uf(){xi&&(xi.detachEvent("onpropertychange",lb),Di=xi=null)}function lb(e){if(e.propertyName==="value"&&gc(Di)){var t=[];ib(t,Di,e,cm(e)),Fy(rA,t)}}function iA(e,t,n){e==="focusin"?(uf(),xi=t,Di=n,xi.attachEvent("onpropertychange",lb)):e==="focusout"&&uf()}function oA(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return gc(Di)}function lA(e,t){if(e==="click")return gc(t)}function cA(e,t){if(e==="input"||e==="change")return gc(t)}function uA(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var un=typeof Object.is=="function"?Object.is:uA;function qi(e,t){if(un(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var r=n[a];if(!fd.call(t,r)||!un(e[r],t[r]))return!1}return!0}function df(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pf(e,t){var n=df(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=df(n)}}function cb(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?cb(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ub(){for(var e=window,t=El();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=El(e.document)}return t}function ym(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function dA(e){var t=ub(),n=e.focusedElem,a=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&cb(n.ownerDocument.documentElement,n)){if(a!==null&&ym(n)){if(t=a.start,e=a.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=n.textContent.length,s=Math.min(a.start,r);a=a.end===void 0?s:Math.min(a.end,r),!e.extend&&s>a&&(r=a,a=s,s=r),r=pf(n,s);var i=pf(n,a);r&&i&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),s>a?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var pA=qn&&"documentMode"in document&&11>
vendor: 3,347 bytes, line 38
38=document.documentMode,Xr=null,Nd=null,ki=null,Ld=!1;function mf(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ld||Xr==null||Xr!==El(a)||(a=Xr,"selectionStart"in a&&ym(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),ki&&qi(ki,a)||(ki=a,a=Ol(Nd,"onSelect"),0<a.length&&(t=new fm("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=Xr)))}function No(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Zr={animationend:No("Animation","AnimationEnd"),animationiteration:No("Animation","AnimationIteration"),animationstart:No("Animation","AnimationStart"),transitionend:No("Transition","TransitionEnd")},vu={},db={};qn&&(db=document.createElement("div").style,"AnimationEvent"in window||(delete Zr.animationend.animation,delete Zr.animationiteration.animation,delete Zr.animationstart.animation),"TransitionEvent"in window||delete Zr.transitionend.transition);function vc(e){if(vu[e])return vu[e];if(!Zr[e])return e;var t=Zr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in db)return vu[e]=t[n];return e}var pb=vc("animationend"),mb=vc("animationiteration"),hb=vc("animationstart"),fb=vc("transitionend"),gb=new Map,hf="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Na(e,t){gb.set(e,t),Pr(t,[e])}for(var yu=0;yu<hf.length;yu++){var bu=hf[yu],mA=bu.toLowerCase(),hA=bu[0].toUpperCase()+bu.slice(1);Na(mA,"on"+hA)}Na(pb,"onAnimationEnd");Na(mb,"onAnimationIteration");Na(hb,"onAnimationStart");Na("dblclick","onDoubleClick");Na("focusin","onFocus");Na("focusout","onBlur");Na(fb,"onTransitionEnd");Ts("onMouseEnter",["mouseout","mouseover"]);Ts("onMouseLeave",["mouseout","mouseover"]);Ts("onPointerEnter",["pointerout","pointerover"]);Ts("onPointerLeave",["pointerout","pointerover"]);Pr("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Pr("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Pr("onBeforeInput",["compositionend","keypress","textInput","paste"]);Pr("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Pr("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Pr("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var fi="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),fA=ne
vendor: 4,054 bytes, line 38
38w Set("cancel close invalid load scroll toggle".split(" ").concat(fi));function ff(e,t,n){var a=e.type||"unknown-event";e.currentTarget=n,mP(a,t,void 0,e),e.currentTarget=null}function vb(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],r=a.event;a=a.listeners;e:{var s=void 0;if(t)for(var i=a.length-1;0<=i;i--){var o=a[i],c=o.instance,u=o.currentTarget;if(o=o.listener,c!==s&&r.isPropagationStopped())break e;ff(r,o,u),s=c}else for(i=0;i<a.length;i++){if(o=a[i],c=o.instance,u=o.currentTarget,o=o.listener,c!==s&&r.isPropagationStopped())break e;ff(r,o,u),s=c}}}if(Tl)throw e=Id,Tl=!1,Id=null,e}function Se(e,t){var n=t[Md];n===void 0&&(n=t[Md]=new Set);var a=e+"__bubble";n.has(a)||(yb(t,e,2,!1),n.add(a))}function wu(e,t,n){var a=0;t&&(a|=4),yb(n,e,a,t)}var Lo="_reactListening"+Math.random().toString(36).slice(2);function Mi(e){if(!e[Lo]){e[Lo]=!0,Ay.forEach(function(n){n!=="selectionchange"&&(fA.has(n)||wu(n,!1,e),wu(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Lo]||(t[Lo]=!0,wu("selectionchange",!1,t))}}function yb(e,t,n,a){switch(tb(t)){case 1:var r=jP;break;case 4:r=IP;break;default:r=mm}n=r.bind(null,t,n,e),r=void 0,!jd||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(r=!0),a?r!==void 0?e.addEventListener(t,n,{capture:!0,passive:r}):e.addEventListener(t,n,!0):r!==void 0?e.addEventListener(t,n,{passive:r}):e.addEventListener(t,n,!1)}function xu(e,t,n,a,r){var s=a;if(!(t&1)&&!(t&2)&&a!==null)e:for(;;){if(a===null)return;var i=a.tag;if(i===3||i===4){var o=a.stateNode.containerInfo;if(o===r||o.nodeType===8&&o.parentNode===r)break;if(i===4)for(i=a.return;i!==null;){var c=i.tag;if((c===3||c===4)&&(c=i.stateNode.containerInfo,c===r||c.nodeType===8&&c.parentNode===r))return;i=i.return}for(;o!==null;){if(i=Za(o),i===null)return;if(c=i.tag,c===5||c===6){a=s=i;continue e}o=o.parentNode}}a=a.return}Fy(function(){var u=s,d=cm(n),p=[];e:{var h=gb.get(e);if(h!==void 0){var m=fm,w=e;switch(e){case"keypress":if(ul(n)===0)break e;case"keydown":case"keyup":m=VP;break;case"focusin":w="focus",m=hu;break;case"focusout":w="blur",m=hu;break;case"beforeblur":case"afterblur":m=hu;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=nf;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=OP;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=KP;break;case pb:case mb:case hb:m=zP;break;case fb:m=JP;break;case"scroll":m=RP;break;case"wheel":m=XP;break;case"copy":case"cut":case"paste":m=DP;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=rf}var f=(t&4)!==0,x=!f&&e==="scroll",b=f?h!==null?h+"Capture":null:h;f=[];for(var g=u,y;g!==null;){y=g;var k=y.stateNode;if(y.tag===5&&k!==null&&(y=k,b!==null&&(k=Ni(g,b),k!=null&&f.push(Fi(g,k,y)))),x)break;g=g.return}0<f.length&&(h=new m(h,w,null,n,d),p.push({event:h,listeners:f}))}}if(!(t&7)){e:{if(h=e==="mouseover"||e==="pointerover",m=e==="mouseout"||e==="pointerout",h&&n!==Cd&&(w=n.relatedTarget||n.fromElement)&&(Za(w)||w[Mn]))break e;if((m||h)&&(h=d.window===d?d:(h=d.ownerDocument)?h.defaultView||h.parentWindow:window,m?(w=n.relatedTarget||n.toElement,m=u,w=w?Za(w):null,w!==null&&(x=Ar(w),w!==x||w.tag!==5&&w.tag!==6)&&(w=null)):(m=null,w=u),m!==w)){if(f=nf,k="onMouseLeave",b="onMouseEnter",g="mouse",(e==="pointerout"||e==="pointerover")&&(f=rf,k="onPointerLeave",b="onPointerEnter",g="pointer"),x=m==null?h:es(m),y=w==null?h:es(w),h=new f(k,g+"leave",m,n,d),h.target=x,h.relatedTarget=y,k=null,Za(d)===u&&(f=new f(b,g+"enter",w,n,d),f.target=y,f.relatedTarget=x,k=f),x=k,m&&w)t:{for(f=m,b=w,g=0,y=f;y;y=_r(y))g++;for(y=0,k=b;k;k=_r(k))y++;for(;0<g-y;)f=_r(f),g--;for(;0<y-g;)b=_r(b),y--;for(;g--;){if(f===b||b!==null&&f===b.alternate)break t;f=_r(f),b=_r(b)}f=null}else f=null;m!==null&&gf(p,h,m,f,!1),w!==null&&x!==null&&gf(p,x,w,f,!0)}}
vendor: 7,582 bytes, lines 38-39
38e:{if(h=u?es(u):window,m=h.nodeName&&h.nodeName.toLowerCase(),m==="select"||m==="input"&&h.type==="file")var P=sA;else if(lf(h))if(ob)P=cA;else{P=oA;var E=iA}else(m=h.nodeName)&&m.toLowerCase()==="input"&&(h.type==="checkbox"||h.type==="radio")&&(P=lA);if(P&&(P=P(e,u))){ib(p,P,n,d);break e}E&&E(e,h,u),e==="focusout"&&(E=h._wrapperState)&&E.controlled&&h.type==="number"&&kd(h,"number",h.value)}switch(E=u?es(u):window,e){case"focusin":(lf(E)||E.contentEditable==="true")&&(Xr=E,Nd=u,ki=null);break;case"focusout":ki=Nd=Xr=null;break;case"mousedown":Ld=!0;break;case"contextmenu":case"mouseup":case"dragend":Ld=!1,mf(p,n,d);break;case"selectionchange":if(pA)break;case"keydown":case"keyup":mf(p,n,d)}var S;if(vm)e:{switch(e){case"compositionstart":var A="onCompositionStart";break e;case"compositionend":A="onCompositionEnd";break e;case"compositionupdate":A="onCompositionUpdate";break e}A=void 0}else Qr?rb(e,n)&&(A="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(A="onCompositionStart");A&&(ab&&n.locale!=="ko"&&(Qr||A!=="onCompositionStart"?A==="onCompositionEnd"&&Qr&&(S=nb()):(ga=d,hm="value"in ga?ga.value:ga.textContent,Qr=!0)),E=Ol(u,A),0<E.length&&(A=new af(A,e,null,n,d),p.push({event:A,listeners:E}),S?A.data=S:(S=sb(n),S!==null&&(A.data=S)))),(S=eA?tA(e,n):nA(e,n))&&(u=Ol(u,"onBeforeInput"),0<u.length&&(d=new af("onBeforeInput","beforeinput",null,n,d),p.push({event:d,listeners:u}),d.data=S))}vb(p,t)})}function Fi(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ol(e,t){for(var n=t+"Capture",a=[];e!==null;){var r=e,s=r.stateNode;r.tag===5&&s!==null&&(r=s,s=Ni(e,n),s!=null&&a.unshift(Fi(e,s,r)),s=Ni(e,t),s!=null&&a.push(Fi(e,s,r))),e=e.return}return a}function _r(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function gf(e,t,n,a,r){for(var s=t._reactName,i=[];n!==null&&n!==a;){var o=n,c=o.alternate,u=o.stateNode;if(c!==null&&c===a)break;o.tag===5&&u!==null&&(o=u,r?(c=Ni(n,s),c!=null&&i.unshift(Fi(n,c,o))):r||(c=Ni(n,s),c!=null&&i.push(Fi(n,c,o)))),n=n.return}i.length!==0&&e.push({event:t,listeners:i})}var gA=/\r\n?/g,vA=/\u0000|\uFFFD/g;function vf(e){return(typeof e=="string"?e:""+e).replace(gA,`
39`).replace(vA,"")}function zo(e,t,n){if(t=vf(t),vf(e)!==t&&n)throw Error(B(425))}function Nl(){}var zd=null,Bd=null;function Dd(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var qd=typeof setTimeout=="function"?setTimeout:void 0,yA=typeof clearTimeout=="function"?clearTimeout:void 0,yf=typeof Promise=="function"?Promise:void 0,bA=typeof queueMicrotask=="function"?queueMicrotask:typeof yf<"u"?function(e){return yf.resolve(null).then(e).catch(wA)}:qd;function wA(e){setTimeout(function(){throw e})}function ku(e,t){var n=t,a=0;do{var r=n.nextSibling;if(e.removeChild(n),r&&r.nodeType===8)if(n=r.data,n==="/$"){if(a===0){e.removeChild(r),Bi(t);return}a--}else n!=="$"&&n!=="$?"&&n!=="$!"||a++;n=r}while(n);Bi(t)}function Sa(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function bf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var Fs=Math.random().toString(36).slice(2),wn="__reactFiber$"+Fs,Ui="__reactProps$"+Fs,Mn="__reactContainer$"+Fs,Md="__reactEvents$"+Fs,xA="__reactListeners$"+Fs,kA="__reactHandles$"+Fs;function Za(e){var t=e[wn];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Mn]||n[wn]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=bf(e);e!==null;){if(n=e[wn])return n;e=bf(e)}return t}e=n,n=e.parentNode}return null}function bo(e){return e=e[wn]||e[Mn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function es(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(B(33))}function yc(e){return e[Ui]||null}var Fd=[],ts=-1;function La(e){return{current:e}}function Pe(e){0>ts||(e.current=Fd[ts],Fd[ts]=null,ts--)}function xe(e,t){ts++,Fd[ts]=e.current,e.current=t}var Ia={},it=La(Ia),bt=La(!1),pr=Ia;function js(e,t){var n=e.type.contextTypes;if(!n)return Ia;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in n)r[s]=t[s];return a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function wt(e){return e=e.childContextTypes,e!=null}function Ll(){Pe(bt),Pe(it)}function wf(e,t,n){if(it.current!==Ia)throw Error(B(168));xe(it,t),xe(bt,n)}function bb(e,t,n){var a=e.stateNode;if(t=t.childContextTypes,typeof a.getChildContext!="function")return n;a=a.getChildContext();for(var r in a)if(!(r in t))throw Error(B(108,iP(e)||"Unknown",r));return Re({},n,a)}function zl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ia,pr=it.current,xe(it,e),xe(bt,bt.current),!0}function xf(e,t,n){var a=e.stateNode;if(!a)throw Error(B(169));n?(e=bb(e,t,pr),a.__reactInternalMemoizedMergedChildContext=e,Pe(bt),Pe(it),xe(it,e)):Pe(bt),xe(bt,n)}var Nn=null,bc=!1,Su=!1;function wb(e){Nn===null?Nn=[e]:Nn.push(e)}function SA(e){bc=!0,wb(e)}function za(){if(!Su&&Nn!==null){Su=!0;var e=0,t=ge;try{var n=Nn;for(ge=1;e<n.length;e++){var a=n[e];do a=a(!0);while(a!==null)}Nn=null,bc=!1}catch(r){throw Nn!==null&&(Nn=Nn.slice(e+1)),Vy(um,za),r}finally{ge=t,Su=!1}}return null}var ns=[],as=0,Bl=null,Dl=0,Bt=[],Dt=0,mr=null,zn=1,Bn="";function Ka(e,t){ns[as++]=Dl,ns[as++]=Bl,Bl=e,Dl=t}function xb(e,t,n){Bt[Dt++]=zn,Bt[Dt++]=Bn,Bt[Dt++]=mr,mr=e;var a=zn;e=Bn;var r=32-ln(a)-1;a&=~(1<<r),n+=1;var s=32-ln(t)+r;if(30<s){var i=r-r%5;s=(a&(1<<i)-1).toString(32),a>>=i,r-=i,zn=1<<32-ln(t)+r|n<<r|a,Bn=s+e}else zn=1<<s|n<<r|a,Bn=e}function bm(e){e.return!==null&&(Ka(e,1),xb(e,1,0))}function wm(e){for(;e===Bl;)Bl=ns[--as],ns[as]=null,Dl=ns[--as],ns[as]=null;for(;e===mr;)mr=Bt[--Dt],Bt[Dt]=null,Bn=Bt[--Dt],Bt[Dt]=null,zn=Bt[--Dt],Bt[Dt]=null}var Tt=null,Ct=null,Ee=!1,sn=null;function kb(e,t){var n=qt(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function kf(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Tt=e,Ct=Sa(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Tt=e,Ct=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=mr!==null?{id:zn,overflow:Bn}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=qt(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Tt=e,Ct=null,!0):!1;default:return!1}}function Ud(e){return(e.mode&1)!==0&&(e.flags&128)===0}function $d(e){if(Ee){var t=Ct;if(t){var n=t;if(!kf(e,t)){if(Ud(e))throw Error(B(418));t=Sa(n.nextSibling);var a=Tt;t&&kf(e,t)?kb(a,n):(e.flags=e.flags&-4097|2,Ee=!1,Tt=e)}}else{if(Ud(e))throw Error(B(418));e.flags=e.flags&-4097|2,Ee=!1,Tt=e}}}function Sf(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Tt=e}function Bo(e){if(e!==Tt)return!1;if(!Ee)return Sf(e),Ee=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Dd(e.type,e.memoizedProps)),t&&(t=Ct)){if(Ud(e))throw Sb(),Error(B(418));for(;t;)kb(e,t),t=Sa(t.nextSibling)}if(Sf(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(B(317)
vendor: 12,582 bytes, line 39
39);e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){Ct=Sa(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}Ct=null}}else Ct=Tt?Sa(e.stateNode.nextSibling):null;return!0}function Sb(){for(var e=Ct;e;)e=Sa(e.nextSibling)}function Is(){Ct=Tt=null,Ee=!1}function xm(e){sn===null?sn=[e]:sn.push(e)}var PA=Vn.ReactCurrentBatchConfig;function ri(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(B(309));var a=n.stateNode}if(!a)throw Error(B(147,e));var r=a,s=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===s?t.ref:(t=function(i){var o=r.refs;i===null?delete o[s]:o[s]=i},t._stringRef=s,t)}if(typeof e!="string")throw Error(B(284));if(!n._owner)throw Error(B(290,e))}return e}function Do(e,t){throw e=Object.prototype.toString.call(t),Error(B(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Pf(e){var t=e._init;return t(e._payload)}function Pb(e){function t(b,g){if(e){var y=b.deletions;y===null?(b.deletions=[g],b.flags|=16):y.push(g)}}function n(b,g){if(!e)return null;for(;g!==null;)t(b,g),g=g.sibling;return null}function a(b,g){for(b=new Map;g!==null;)g.key!==null?b.set(g.key,g):b.set(g.index,g),g=g.sibling;return b}function r(b,g){return b=Ca(b,g),b.index=0,b.sibling=null,b}function s(b,g,y){return b.index=y,e?(y=b.alternate,y!==null?(y=y.index,y<g?(b.flags|=2,g):y):(b.flags|=2,g)):(b.flags|=1048576,g)}function i(b){return e&&b.alternate===null&&(b.flags|=2),b}function o(b,g,y,k){return g===null||g.tag!==6?(g=Iu(y,b.mode,k),g.return=b,g):(g=r(g,y),g.return=b,g)}function c(b,g,y,k){var P=y.type;return P===Jr?d(b,g,y.props.children,k,y.key):g!==null&&(g.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===sa&&Pf(P)===g.type)?(k=r(g,y.props),k.ref=ri(b,g,y),k.return=b,k):(k=vl(y.type,y.key,y.props,null,b.mode,k),k.ref=ri(b,g,y),k.return=b,k)}function u(b,g,y,k){return g===null||g.tag!==4||g.stateNode.containerInfo!==y.containerInfo||g.stateNode.implementation!==y.implementation?(g=Ru(y,b.mode,k),g.return=b,g):(g=r(g,y.children||[]),g.return=b,g)}function d(b,g,y,k,P){return g===null||g.tag!==7?(g=dr(y,b.mode,k,P),g.return=b,g):(g=r(g,y),g.return=b,g)}function p(b,g,y){if(typeof g=="string"&&g!==""||typeof g=="number")return g=Iu(""+g,b.mode,y),g.return=b,g;if(typeof g=="object"&&g!==null){switch(g.$$typeof){case Co:return y=vl(g.type,g.key,g.props,null,b.mode,y),y.ref=ri(b,null,g),y.return=b,y;case Yr:return g=Ru(g,b.mode,y),g.return=b,g;case sa:var k=g._init;return p(b,k(g._payload),y)}if(mi(g)||Zs(g))return g=dr(g,b.mode,y,null),g.return=b,g;Do(b,g)}return null}function h(b,g,y,k){var P=g!==null?g.key:null;if(typeof y=="string"&&y!==""||typeof y=="number")return P!==null?null:o(b,g,""+y,k);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case Co:return y.key===P?c(b,g,y,k):null;case Yr:return y.key===P?u(b,g,y,k):null;case sa:return P=y._init,h(b,g,P(y._payload),k)}if(mi(y)||Zs(y))return P!==null?null:d(b,g,y,k,null);Do(b,y)}return null}function m(b,g,y,k,P){if(typeof k=="string"&&k!==""||typeof k=="number")return b=b.get(y)||null,o(g,b,""+k,P);if(typeof k=="object"&&k!==null){switch(k.$$typeof){case Co:return b=b.get(k.key===null?y:k.key)||null,c(g,b,k,P);case Yr:return b=b.get(k.key===null?y:k.key)||null,u(g,b,k,P);case sa:var E=k._init;return m(b,g,y,E(k._payload),P)}if(mi(k)||Zs(k))return b=b.get(y)||null,d(g,b,k,P,null);Do(g,k)}return null}function w(b,g,y,k){for(var P=null,E=null,S=g,A=g=0,T=null;S!==null&&A<y.length;A++){S.index>A?(T=S,S=null):T=S.sibling;var j=h(b,S,y[A],k);if(j===null){S===null&&(S=T);break}e&&S&&j.alternate===null&&t(b,S),g=s(j,g,A),E===null?P=j:E.sibling=j,E=j,S=T}if(A===y.length)return n(b,S),Ee&&Ka(b,A),P;if(S===null){for(;A<y.length;A++)S=p(b,y[A],k),S!==null&&(g=s(S,g,A),E===null?P=S:E.sibling=S,E=S);return Ee&&Ka(b,A),P}for(S=a(b,S);A<y.length;A++)T=m(S,b,A,y[A],k),T!==null&&(e&&T.alternate!==null&&S.delete(T.key===null?A:T.key),g=s(T,g,A),E===null?P=T:E.sibling=T,E=T);return e&&S.forEach(function(D){return t(b,D)}),Ee&&Ka(b,A),P}function f(b,g,y,k){var P=Zs(y);if(typeof P!="function")throw Error(B(150));if(y=P.call(y),y==null)throw Error(B(151));for(var E=P=null,S=g,A=g=0,T=null,j=y.next();S!==null&&!j.done;A++,j=y.next()){S.index>A?(T=S,S=null):T=S.sibling;var D=h(b,S,j.value,k);if(D===null){S===null&&(S=T);break}e&&S&&D.alternate===null&&t(b,S),g=s(D,g,A),E===null?P=D:E.sibling=D,E=D,S=T}if(j.done)return n(b,S),Ee&&Ka(b,A),P;if(S===null){for(;!j.done;A++,j=y.next())j=p(b,j.value,k),j!==null&&(g=s(j,g,A),E===null?P=j:E.sibling=j,E=j);return Ee&&Ka(b,A),P}for(S=a(b,S);!j.done;A++,j=y.next())j=m(S,b,A,j.value,k),j!==null&&(e&&j.alternate!==null&&S.delete(j.key===null?A:j.key),g=s(j,g,A),E===null?P=j:E.sibling=j,E=j);return e&&S.forEach(function(z){return t(b,z)}),Ee&&Ka(b,A),P}function x(b,g,y,k){if(typeof y=="object"&&y!==null&&y.type===Jr&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case Co:e:{for(var P=y.key,E=g;E!==null;){if(E.key===P){if(P=y.type,P===Jr){if(E.tag===7){n(b,E.sibling),g=r(E,y.props.children),g.return=b,b=g;break e}}else if(E.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===sa&&Pf(P)===E.type){n(b,E.sibling),g=r(E,y.props),g.ref=ri(b,E,y),g.return=b,b=g;break e}n(b,E);break}else t(b,E);E=E.sibling}y.type===Jr?(g=dr(y.props.children,b.mode,k,y.key),g.return=b,b=g):(k=vl(y.type,y.key,y.props,null,b.mode,k),k.ref=ri(b,g,y),k.return=b,b=k)}return i(b);case Yr:e:{for(E=y.key;g!==null;){if(g.key===E)if(g.tag===4&&g.stateNode.containerInfo===y.containerInfo&&g.stateNode.implementation===y.implementation){n(b,g.sibling),g=r(g,y.children||[]),g.return=b,b=g;break e}else{n(b,g);break}else t(b,g);g=g.sibling}g=Ru(y,b.mode,k),g.return=b,b=g}return i(b);case sa:return E=y._init,x(b,g,E(y._payload),k)}if(mi(y))return w(b,g,y,k);if(Zs(y))return f(b,g,y,k);Do(b,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,g!==null&&g.tag===6?(n(b,g.sibling),g=r(g,y),g.return=b,b=g):(n(b,g),g=Iu(y,b.mode,k),g.return=b,b=g),i(b)):n(b,g)}return x}var Rs=Pb(!0),Ab=Pb(!1),ql=La(null),Ml=null,rs=null,km=null;function Sm(){km=rs=Ml=null}function Pm(e){var t=ql.current;Pe(ql),e._currentValue=t}function Wd(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function ps(e,t){Ml=e,km=rs=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(yt=!0),e.firstContext=null)}function Ft(e){var t=e._currentValue;if(km!==e)if(e={context:e,memoizedValue:t,next:null},rs===null){if(Ml===null)throw Error(B(308));rs=e,Ml.dependencies={lanes:0,firstContext:e}}else rs=rs.next=e;return t}var er=null;function Am(e){er===null?er=[e]:er.push(e)}function Eb(e,t,n,a){var r=t.interleaved;return r===null?(n.next=n,Am(t)):(n.next=r.next,r.next=n),t.interleaved=n,Fn(e,a)}function Fn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var ia=!1;function Em(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Cb(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Dn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Pa(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,ue&2){var r=a.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),a.pending=t,Fn(e,n)}return r=a.interleaved,r===null?(t.next=t,Am(a)):(t.next=r.next,r.next=t),a.interleaved=t,Fn(e,n)}function dl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,dm(e,n)}}function Af(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var r=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?r=s=i:s=s.next=i,n=n.next}while(n!==null);s===null?r=s=t:s=s.next=t}else r=s=t;n={baseState:a.baseState,firstBaseUpdate:r,lastBaseUpdate:s,shared:a.shared,effects:a.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fl(e,t,n,a){var r=e.updateQueue;ia=!1;var s=r.firstBaseUpdate,i=r.lastBaseUpdate,o=r.shared.pending;if(o!==null){r.shared.pending=null;var c=o,u=c.next;c.next=null,i===null?s=u:i.next=u,i=c;var d=e.alternate;d!==null&&(d=d.updateQueue,o=d.lastBaseUpdate,o!==i&&(o===null?d.firstBaseUpdate=u:o.next=u,d.lastBaseUpdate=c))}if(s!==null){var p=r.baseState;i=0,d=u=c=null,o=s;do{var h=o.lane,m=o.eventTime;if((a&h)===h){d!==null&&(d=d.next={eventTime:m,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var w=e,f=o;switch(h=t,m=n,f.tag){case 1:if(w=f.payload,typeof w=="function"){p=w.call(m,p,h);break e}p=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=f.payload,h=typeof w=="function"?w.call(m,p,h):w,h==null)break e;p=Re({},p,h);break e;case 2:ia=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,h=r.effects,h===null?r.effects=[o]:h.push(o))}else m={eventTime:m,lane:h,tag:o.tag,payload:o.payload,callback:o.callback,next:null},d===null?(u=d=m,c=p):d=d.next=m,i|=h;if(o=o.next,o===null){if(o=r.shared.pending,o===null)break;h=o,o=h.next,h.next=null,r.lastBaseUpdate=h,r.shared.pending=null}}while(!0);if(d===null&&(c=p),r.baseState=c,r.firstBaseUpdate=u,r.lastBaseUpdate=d,t=r.shared.interleaved,t!==null){r=t;do i|=r.lane,r=r.next;while(r!==t)}else s===null&&(r.shared.lanes=0);fr|=i,e.lanes=i,e.memoizedState=p}}function Ef(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var a=e[t],r=a.callback;if(r!==null){if(a.callback=null,a=n,typeof r!="function")throw Error(B(191,r));r.call(a)}}}var wo={},En=La(wo),$i=La(wo),Wi=La(wo);function tr(e){if(e===wo)throw Error(B(174));return e}function Cm(e,t){switch(xe(Wi,t),xe($i,e),xe(En,wo),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Pd(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Pd(t,e)}Pe(En),xe(En,t)}function _s(){Pe(En),Pe($i),Pe(Wi)}function Tb(e){tr(Wi.current);var t=tr(En.current),n=Pd(t,e.type);t!==n&&(xe($i,e),xe(En,n))}function Tm(e){$i.current===e&&(Pe(En),Pe($i))}var je=La(0);function Ul(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Pu=[];function jm(){for(var e=0;e<Pu.length;e++)Pu[e]._workInProgressVersionPrimary=null;Pu.length=0}var pl=Vn.ReactCurrentDispatcher,Au=Vn.ReactCurrentBatchConfig,hr=0,Ie=null,Ue=null,He=null,$l=!1,Si=!1,Vi=0,AA=0;function nt(){throw Error(B(321))}function Im(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!un(e[n],t[n]))return!1;return!0}function Rm(e,t,n,a,r,s){if(hr=s,Ie=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,pl.current=e===null||e.memoizedState===null?jA:IA,e=n(a,r),Si){s=0;do{if(Si=!1,Vi=0,25<=s)throw Error(B(301));s+=1,He=Ue=null,t.updateQueue=null,pl.current=RA,e=n(a,r)}while(Si)}if(pl.current=Wl,t=Ue!==null&&Ue.next!==null,hr=0,He=Ue=Ie=null,$l=!1,t)throw Error(B(300));return e}function _m(){var e=Vi!==0;return Vi=0,e}function gn(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return He===null?Ie.memoizedState=He=e:He=He.next=e,He}function Ut(){if(Ue===null){var e=Ie.alternate;e=e!==null?e.memoizedState:null}else e=Ue.next;var t=He===null?Ie.memoizedState:He.next;if(t!==null)He=t,Ue=e;else{if(e===null)throw Error(B(310));Ue=e,e={memoizedState:Ue.memoizedState,baseState:Ue.baseState,baseQueue:Ue.baseQueue,queue:Ue.queue,next:null},He===null?Ie.memoizedState=He=e:He=He.next=e}return He}function Hi(e,t){return typeof t=="function"?t(e):t}function Eu(e){var t=Ut(),n=t.queue;if(n===null)throw Error(B(311));n.lastRenderedReducer=e;var a=Ue,r=a.baseQueue,s=n.pending;if(s!==null){if(r!==null){var i=r.next;
vendor: 5,614 bytes, line 39
39r.next=s.next,s.next=i}a.baseQueue=r=s,n.pending=null}if(r!==null){s=r.next,a=a.baseState;var o=i=null,c=null,u=s;do{var d=u.lane;if((hr&d)===d)c!==null&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),a=u.hasEagerState?u.eagerState:e(a,u.action);else{var p={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};c===null?(o=c=p,i=a):c=c.next=p,Ie.lanes|=d,fr|=d}u=u.next}while(u!==null&&u!==s);c===null?i=a:c.next=o,un(a,t.memoizedState)||(yt=!0),t.memoizedState=a,t.baseState=i,t.baseQueue=c,n.lastRenderedState=a}if(e=n.interleaved,e!==null){r=e;do s=r.lane,Ie.lanes|=s,fr|=s,r=r.next;while(r!==e)}else r===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Cu(e){var t=Ut(),n=t.queue;if(n===null)throw Error(B(311));n.lastRenderedReducer=e;var a=n.dispatch,r=n.pending,s=t.memoizedState;if(r!==null){n.pending=null;var i=r=r.next;do s=e(s,i.action),i=i.next;while(i!==r);un(s,t.memoizedState)||(yt=!0),t.memoizedState=s,t.baseQueue===null&&(t.baseState=s),n.lastRenderedState=s}return[s,a]}function jb(){}function Ib(e,t){var n=Ie,a=Ut(),r=t(),s=!un(a.memoizedState,r);if(s&&(a.memoizedState=r,yt=!0),a=a.queue,Om(Ob.bind(null,n,a,e),[e]),a.getSnapshot!==t||s||He!==null&&He.memoizedState.tag&1){if(n.flags|=2048,Gi(9,_b.bind(null,n,a,r,t),void 0,null),Ge===null)throw Error(B(349));hr&30||Rb(n,t,r)}return r}function Rb(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=Ie.updateQueue,t===null?(t={lastEffect:null,stores:null},Ie.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function _b(e,t,n,a){t.value=n,t.getSnapshot=a,Nb(t)&&Lb(e)}function Ob(e,t,n){return n(function(){Nb(t)&&Lb(e)})}function Nb(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!un(e,n)}catch{return!0}}function Lb(e){var t=Fn(e,1);t!==null&&cn(t,e,1,-1)}function Cf(e){var t=gn();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Hi,lastRenderedState:e},t.queue=e,e=e.dispatch=TA.bind(null,Ie,e),[t.memoizedState,e]}function Gi(e,t,n,a){return e={tag:e,create:t,destroy:n,deps:a,next:null},t=Ie.updateQueue,t===null?(t={lastEffect:null,stores:null},Ie.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e)),e}function zb(){return Ut().memoizedState}function ml(e,t,n,a){var r=gn();Ie.flags|=e,r.memoizedState=Gi(1|t,n,void 0,a===void 0?null:a)}function wc(e,t,n,a){var r=Ut();a=a===void 0?null:a;var s=void 0;if(Ue!==null){var i=Ue.memoizedState;if(s=i.destroy,a!==null&&Im(a,i.deps)){r.memoizedState=Gi(t,n,s,a);return}}Ie.flags|=e,r.memoizedState=Gi(1|t,n,s,a)}function Tf(e,t){return ml(8390656,8,e,t)}function Om(e,t){return wc(2048,8,e,t)}function Bb(e,t){return wc(4,2,e,t)}function Db(e,t){return wc(4,4,e,t)}function qb(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Mb(e,t,n){return n=n!=null?n.concat([e]):null,wc(4,4,qb.bind(null,t,e),n)}function Nm(){}function Fb(e,t){var n=Ut();t=t===void 0?null:t;var a=n.memoizedState;return a!==null&&t!==null&&Im(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function Ub(e,t){var n=Ut();t=t===void 0?null:t;var a=n.memoizedState;return a!==null&&t!==null&&Im(t,a[1])?a[0]:(e=e(),n.memoizedState=[e,t],e)}function $b(e,t,n){return hr&21?(un(n,t)||(n=Ky(),Ie.lanes|=n,fr|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,yt=!0),e.memoizedState=n)}function EA(e,t){var n=ge;ge=n!==0&&4>n?n:4,e(!0);var a=Au.transition;Au.transition={};try{e(!1),t()}finally{ge=n,Au.transition=a}}function Wb(){return Ut().memoizedState}function CA(e,t,n){var a=Ea(e);if(n={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null},Vb(e))Hb(t,n);else if(n=Eb(e,t,n,a),n!==null){var r=dt();cn(n,e,a,r),Gb(n,t,a)}}function TA(e,t,n){var a=Ea(e),r={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null};if(Vb(e))Hb(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var i=t.lastRenderedState,o=s(i,n);if(r.hasEagerState=!0,r.eagerState=o,un(o,i)){var c=t.interleaved;c===null?(r.next=r,Am(t)):(r.next=c.next,c.next=r),t.interleaved=r;return}}catch{}finally{}n=Eb(e,t,r,a),n!==null&&(r=dt(),cn(n,e,a,r),Gb(n,t,a))}}function Vb(e){var t=e.alternate;return e===Ie||t!==null&&t===Ie}function Hb(e,t){Si=$l=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Gb(e,t,n){if(n&4194240){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,dm(e,n)}}var Wl={readContext:Ft,useCallback:nt,useContext:nt,useEffect:nt,useImperativeHandle:nt,useInsertionEffect:nt,useLayoutEffect:nt,useMemo:nt,useReducer:nt,useRef:nt,useState:nt,useDebugValue:nt,useDeferredValue:nt,useTransition:nt,useMutableSource:nt,useSyncExternalStore:nt,useId:nt,unstable_isNewReconciler:!1},jA={readContext:Ft,useCallback:function(e,t){return gn().memoizedState=[e,t===void 0?null:t],e},useContext:Ft,useEffect:Tf,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ml(4194308,4,qb.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ml(4194308,4,e,t)},useInsertionEffect:function(e,t){return ml(4,2,e,t)},useMemo:function(e,t){var n=gn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var a=gn();return t=n!==void 0?n(t):t,a.memoizedState=a.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},a.queue=e,e=e.dispatch=CA.bind(null,Ie,e),[a.memoizedState,e]}
vendor: 7,431 bytes, lines 39-41
39,useRef:function(e){var t=gn();return e={current:e},t.memoizedState=e},useState:Cf,useDebugValue:Nm,useDeferredValue:function(e){return gn().memoizedState=e},useTransition:function(){var e=Cf(!1),t=e[0];return e=EA.bind(null,e[1]),gn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var a=Ie,r=gn();if(Ee){if(n===void 0)throw Error(B(407));n=n()}else{if(n=t(),Ge===null)throw Error(B(349));hr&30||Rb(a,t,n)}r.memoizedState=n;var s={value:n,getSnapshot:t};return r.queue=s,Tf(Ob.bind(null,a,s,e),[e]),a.flags|=2048,Gi(9,_b.bind(null,a,s,n,t),void 0,null),n},useId:function(){var e=gn(),t=Ge.identifierPrefix;if(Ee){var n=Bn,a=zn;n=(a&~(1<<32-ln(a)-1)).toString(32)+n,t=":"+t+"R"+n,n=Vi++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=AA++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},IA={readContext:Ft,useCallback:Fb,useContext:Ft,useEffect:Om,useImperativeHandle:Mb,useInsertionEffect:Bb,useLayoutEffect:Db,useMemo:Ub,useReducer:Eu,useRef:zb,useState:function(){return Eu(Hi)},useDebugValue:Nm,useDeferredValue:function(e){var t=Ut();return $b(t,Ue.memoizedState,e)},useTransition:function(){var e=Eu(Hi)[0],t=Ut().memoizedState;return[e,t]},useMutableSource:jb,useSyncExternalStore:Ib,useId:Wb,unstable_isNewReconciler:!1},RA={readContext:Ft,useCallback:Fb,useContext:Ft,useEffect:Om,useImperativeHandle:Mb,useInsertionEffect:Bb,useLayoutEffect:Db,useMemo:Ub,useReducer:Cu,useRef:zb,useState:function(){return Cu(Hi)},useDebugValue:Nm,useDeferredValue:function(e){var t=Ut();return Ue===null?t.memoizedState=e:$b(t,Ue.memoizedState,e)},useTransition:function(){var e=Cu(Hi)[0],t=Ut().memoizedState;return[e,t]},useMutableSource:jb,useSyncExternalStore:Ib,useId:Wb,unstable_isNewReconciler:!1};function Xt(e,t){if(e&&e.defaultProps){t=Re({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function Vd(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:Re({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var xc={isMounted:function(e){return(e=e._reactInternals)?Ar(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var a=dt(),r=Ea(e),s=Dn(a,r);s.payload=t,n!=null&&(s.callback=n),t=Pa(e,s,r),t!==null&&(cn(t,e,r,a),dl(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=dt(),r=Ea(e),s=Dn(a,r);s.tag=1,s.payload=t,n!=null&&(s.callback=n),t=Pa(e,s,r),t!==null&&(cn(t,e,r,a),dl(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=dt(),a=Ea(e),r=Dn(n,a);r.tag=2,t!=null&&(r.callback=t),t=Pa(e,r,a),t!==null&&(cn(t,e,a,n),dl(t,e,a))}};function jf(e,t,n,a,r,s,i){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,s,i):t.prototype&&t.prototype.isPureReactComponent?!qi(n,a)||!qi(r,s):!0}function Kb(e,t,n){var a=!1,r=Ia,s=t.contextType;return typeof s=="object"&&s!==null?s=Ft(s):(r=wt(t)?pr:it.current,a=t.contextTypes,s=(a=a!=null)?js(e,r):Ia),t=new t(n,s),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=xc,e.stateNode=t,t._reactInternals=e,a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=s),t}function If(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&xc.enqueueReplaceState(t,t.state,null)}function Hd(e,t,n,a){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs={},Em(e);var s=t.contextType;typeof s=="object"&&s!==null?r.context=Ft(s):(s=wt(t)?pr:it.current,r.context=js(e,s)),r.state=e.memoizedState,s=t.getDerivedStateFromProps,typeof s=="function"&&(Vd(e,t,s,n),r.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof r.getSnapshotBeforeUpdate=="function"||typeof r.UNSAFE_componentWillMount!="function"&&typeof r.componentWillMount!="function"||(t=r.state,typeof r.componentWillMount=="function"&&r.componentWillMount(),typeof r.UNSAFE_componentWillMount=="function"&&r.UNSAFE_componentWillMount(),t!==r.state&&xc.enqueueReplaceState(r,r.state,null),Fl(e,n,r,a),r.state=e.memoizedState),typeof r.componentDidMount=="function"&&(e.flags|=4194308)}function Os(e,t){try{var n="",a=t;do n+=sP(a),a=a.return;while(a);var r=n}catch(s){r=`
40Error generating stack: `+s.message+`
41`+s.stack}return{value:e,source:t,stack:r,digest:null}}function Tu(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Gd(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var _A=typeof WeakMap=="function"?WeakMap:Map;function Yb(e,t,n){n=Dn(-1,n),n.tag=3,n.payload={element:null};var a=t.value;return n.callback=function(){Hl||(Hl=!0,ap=a),Gd(e,t)},n}function Jb(e,t,n){n=Dn(-1,n),n.tag=3;var a=e.type.getDerivedStateFromError;if(typeof a=="function"){var r=t.value;n.payload=function(){return a(r)},n.callback=function(){Gd(e,t)}}var s=e.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(n.callback=function(){Gd(e,t),typeof a!="function"&&(Aa===null?Aa=new Set([this]):Aa.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Rf(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new _A;var r=new Set;a.set(t,r)}else r=a.get(t),r===void 0&&(r=new Set,a.set(t,r));r.has(n)||(r.add(n),e=HA.bind(null,e,t,n),t.then(e,e))}function _f(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Of(e,t,n,a,r){return e.mode&1?(e.flags|=65536,e.lanes=r,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Dn(-1,1),t.tag=2,Pa(n,t,1))),n.lanes|=1),e)}var OA=Vn.ReactCurrentOwner,yt=!1;function ct(e,t,n,a){t.child=e===null?Ab(t,null,n,a):Rs(t,e.child,n,a)}function Nf(e,t,n,a,r){n=n.render;var s=t.ref;return ps(t,r),a=Rm(e,t,n,a,s,r),n=_m(),e!==null&&!yt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,Un(e,t,r)):(Ee&&n&&bm(t),t.flags|=1,ct(e,t,a,r),t.child)}function Lf(e,t,n,a,r){if(e===null){var s=n.type;return typeof s=="function"&&!Um(s)&&s.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=s,Qb(e,t,s,a,r)):(e=vl(n.type,null,a,t,t.mode,r),e.ref=t.ref,e.return=t,t.child=e)}if(s=e.child,!(e.lanes&r)){var i=s.memoizedProps;if(n=n.compare,n=n!==null?n:qi,n(i,a)&&e.ref===t.ref)return Un(e,t,r)}return t.flags|=1,e=Ca(s,a),e.ref=t.ref,e.return=t,t.child=e}function Qb(e,t,n,a,r){if(e!==null){var s=e.memoizedProps;if(qi(s,a)&&e.ref===t.ref)if(yt=!1,t.pendingProps=a=s,(e.lanes&r)!==0)e.flags&131072&&(yt=!0);else return t.lanes=e.lanes,Un(e,t,r)}return Kd(e,t,n,a,r)}function Xb(e,t,n){var a=t.pendingProps,r=a.children,s=e!==null?e.memoizedState:null;if(a.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},xe(is,St),St|=n;else{if(!(n&1073741824))return e=s!==null?s.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,xe(is,St),St|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=s!==null?s.baseLanes:n,xe(is,St),St|=a}else s!==null?(a=s.baseLanes|n,t.memoizedState=null):a=n,xe(is,St),St|=a;return ct(e,t,r,n),t.child}function Zb(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}
vendor: 11,349 bytes, line 41
41function Kd(e,t,n,a,r){var s=wt(n)?pr:it.current;return s=js(t,s),ps(t,r),n=Rm(e,t,n,a,s,r),a=_m(),e!==null&&!yt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,Un(e,t,r)):(Ee&&a&&bm(t),t.flags|=1,ct(e,t,n,r),t.child)}function zf(e,t,n,a,r){if(wt(n)){var s=!0;zl(t)}else s=!1;if(ps(t,r),t.stateNode===null)hl(e,t),Kb(t,n,a),Hd(t,n,a,r),a=!0;else if(e===null){var i=t.stateNode,o=t.memoizedProps;i.props=o;var c=i.context,u=n.contextType;typeof u=="object"&&u!==null?u=Ft(u):(u=wt(n)?pr:it.current,u=js(t,u));var d=n.getDerivedStateFromProps,p=typeof d=="function"||typeof i.getSnapshotBeforeUpdate=="function";p||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o!==a||c!==u)&&If(t,i,a,u),ia=!1;var h=t.memoizedState;i.state=h,Fl(t,a,i,r),c=t.memoizedState,o!==a||h!==c||bt.current||ia?(typeof d=="function"&&(Vd(t,n,d,a),c=t.memoizedState),(o=ia||jf(t,n,o,a,h,c,u))?(p||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=c),i.props=a,i.state=c,i.context=u,a=o):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{i=t.stateNode,Cb(e,t),o=t.memoizedProps,u=t.type===t.elementType?o:Xt(t.type,o),i.props=u,p=t.pendingProps,h=i.context,c=n.contextType,typeof c=="object"&&c!==null?c=Ft(c):(c=wt(n)?pr:it.current,c=js(t,c));var m=n.getDerivedStateFromProps;(d=typeof m=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(o!==p||h!==c)&&If(t,i,a,c),ia=!1,h=t.memoizedState,i.state=h,Fl(t,a,i,r);var w=t.memoizedState;o!==p||h!==w||bt.current||ia?(typeof m=="function"&&(Vd(t,n,m,a),w=t.memoizedState),(u=ia||jf(t,n,u,a,h,w,c)||!1)?(d||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(a,w,c),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(a,w,c)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=w),i.props=a,i.state=w,i.context=c,a=u):(typeof i.componentDidUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),a=!1)}return Yd(e,t,n,a,s,r)}function Yd(e,t,n,a,r,s){Zb(e,t);var i=(t.flags&128)!==0;if(!a&&!i)return r&&xf(t,n,!1),Un(e,t,s);a=t.stateNode,OA.current=t;var o=i&&typeof n.getDerivedStateFromError!="function"?null:a.render();return t.flags|=1,e!==null&&i?(t.child=Rs(t,e.child,null,s),t.child=Rs(t,null,o,s)):ct(e,t,o,s),t.memoizedState=a.state,r&&xf(t,n,!0),t.child}function ew(e){var t=e.stateNode;t.pendingContext?wf(e,t.pendingContext,t.pendingContext!==t.context):t.context&&wf(e,t.context,!1),Cm(e,t.containerInfo)}function Bf(e,t,n,a,r){return Is(),xm(r),t.flags|=256,ct(e,t,n,a),t.child}var Jd={dehydrated:null,treeContext:null,retryLane:0};function Qd(e){return{baseLanes:e,cachePool:null,transitions:null}}function tw(e,t,n){var a=t.pendingProps,r=je.current,s=!1,i=(t.flags&128)!==0,o;if((o=i)||(o=e!==null&&e.memoizedState===null?!1:(r&2)!==0),o?(s=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(r|=1),xe(je,r&1),e===null)return $d(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(i=a.children,e=a.fallback,s?(a=t.mode,s=t.child,i={mode:"hidden",children:i},!(a&1)&&s!==null?(s.childLanes=0,s.pendingProps=i):s=Pc(i,a,0,null),e=dr(e,a,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Qd(n),t.memoizedState=Jd,e):Lm(t,i));if(r=e.memoizedState,r!==null&&(o=r.dehydrated,o!==null))return NA(e,t,i,a,o,r,n);if(s){s=a.fallback,i=t.mode,r=e.child,o=r.sibling;var c={mode:"hidden",children:a.children};return!(i&1)&&t.child!==r?(a=t.child,a.childLanes=0,a.pendingProps=c,t.deletions=null):(a=Ca(r,c),a.subtreeFlags=r.subtreeFlags&14680064),o!==null?s=Ca(o,s):(s=dr(s,i,n,null),s.flags|=2),s.return=t,a.return=t,a.sibling=s,t.child=a,a=s,s=t.child,i=e.child.memoizedState,i=i===null?Qd(n):{baseLanes:i.baseLanes|n,cachePool:null,transitions:i.transitions},s.memoizedState=i,s.childLanes=e.childLanes&~n,t.memoizedState=Jd,a}return s=e.child,e=s.sibling,a=Ca(s,{mode:"visible",children:a.children}),!(t.mode&1)&&(a.lanes=n),a.return=t,a.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Lm(e,t){return t=Pc({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function qo(e,t,n,a){return a!==null&&xm(a),Rs(t,e.child,null,n),e=Lm(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function NA(e,t,n,a,r,s,i){if(n)return t.flags&256?(t.flags&=-257,a=Tu(Error(B(422))),qo(e,t,i,a)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(s=a.fallback,r=t.mode,a=Pc({mode:"visible",children:a.children},r,0,null),s=dr(s,r,i,null),s.flags|=2,a.return=t,s.return=t,a.sibling=s,t.child=a,t.mode&1&&Rs(t,e.child,null,i),t.child.memoizedState=Qd(i),t.memoizedState=Jd,s);if(!(t.mode&1))return qo(e,t,i,null);if(r.data==="$!"){if(a=r.nextSibling&&r.nextSibling.dataset,a)var o=a.dgst;return a=o,s=Error(B(419)),a=Tu(s,a,void 0),qo(e,t,i,a)}if(o=(i&e.childLanes)!==0,yt||o){if(a=Ge,a!==null){switch(i&-i){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=r&(a.suspendedLanes|i)?0:r,r!==0&&r!==s.retryLane&&(s.retryLane=r,Fn(e,r),cn(a,e,r,-1))}return Fm(),a=Tu(Error(B(421))),qo(e,t,i,a)}return r.data==="$?"?(t.flags|=128,t.child=e.child,t=GA.bind(null,e),r._reactRetry=t,null):(e=s.treeContext,Ct=Sa(r.nextSibling),Tt=t,Ee=!0,sn=null,e!==null&&(Bt[Dt++]=zn,Bt[Dt++]=Bn,Bt[Dt++]=mr,zn=e.id,Bn=e.overflow,mr=t),t=Lm(t,a.children),t.flags|=4096,t)}function Df(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Wd(e.return,t,n)}function ju(e,t,n,a,r){var s=e.memoizedState;s===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:r}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=a,s.tail=n,s.tailMode=r)}function nw(e,t,n){var a=t.pendingProps,r=a.revealOrder,s=a.tail;if(ct(e,t,a.children,n),a=je.current,a&2)a=a&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Df(e,n,t);else if(e.tag===19)Df(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(xe(je,a),!(t.mode&1))t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;n!==null;)e=n.alternate,e!==null&&Ul(e)===null&&(r=n),n=n.sibling;n=r,n===null?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),ju(t,!1,r,n,s);break;case"backwards":for(n=null,r=t.child,t.child=null;r!==null;){if(e=r.alternate,e!==null&&Ul(e)===null){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}ju(t,!0,n,null,s);break;case"together":ju(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function hl(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Un(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),fr|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(B(153));if(t.child!==null){for(e=t.child,n=Ca(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Ca(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function LA(e,t,n){switch(t.tag){case 3:ew(t),Is();break;case 5:Tb(t);break;case 1:wt(t.type)&&zl(t);break;case 4:Cm(t,t.stateNode.containerInfo);break;case 10:var a=t.type._context,r=t.memoizedProps.value;xe(ql,a._currentValue),a._currentValue=r;break;case 13:if(a=t.memoizedState,a!==null)return a.dehydrated!==null?(xe(je,je.current&1),t.flags|=128,null):n&t.child.childLanes?tw(e,t,n):(xe(je,je.current&1),e=Un(e,t,n),e!==null?e.sibling:null);xe(je,je.current&1);break;case 19:if(a=(n&t.childLanes)!==0,e.flags&128){if(a)return nw(e,t,n);t.flags|=128}if(r=t.memoizedState,r!==null&&(r.rendering=null,r.tail=null,r.lastEffect=null),xe(je,je.current),a)break;return null;case 22:case 23:return t.lanes=0,Xb(e,t,n)}return Un(e,t,n)}var aw,Xd,rw,sw;aw=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Xd=function(){};rw=function(e,t,n,a){var r=e.memoizedProps;if(r!==a){e=t.stateNode,tr(En.current);var s=null;switch(n){case"input":r=wd(e,r),a=wd(e,a),s=[];break;case"select":r=Re({},r,{value:void 0}),a=Re({},a,{value:void 0}),s=[];break;case"textarea":r=Sd(e,r),a=Sd(e,a),s=[];break;default:typeof r.onClick!="function"&&typeof a.onClick=="function"&&(e.onclick=Nl)}Ad(n,a);var i;n=null;for(u in r)if(!a.hasOwnProperty(u)&&r.hasOwnProperty(u)&&r[u]!=null)if(u==="style"){var o=r[u];for(i in o)o.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else u!=="dangerouslySetInnerHTML"&&u!=="children"&&u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&u!=="autoFocus"&&(_i.hasOwnProperty(u)?s||(s=[]):(s=s||[]).push(u,null));for(u in a){var c=a[u];if(o=r!=null?r[u]:void 0,a.hasOwnProperty(u)&&c!==o&&(c!=null||o!=null))if(u==="style")if(o){for(i in o)!o.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&o[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(s||(s=[]),s.push(u,n)),n=c;else u==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,o=o?o.__html:void 0,c!=null&&o!==c&&(s=s||[]).push(u,c)):u==="children"?typeof c!="string"&&typeof c!="number"||(s=s||[]).push(u,""+c):u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&(_i.hasOwnProperty(u)?(c!=null&&u==="onScroll"&&Se("scroll",e),s||o===c||(s=[])):(s=s||[]).push(u,c))}n&&(s=s||[]).push("style",n);var u=s;(t.updateQueue=u)&&(t.flags|=4)}};sw=function(e,t,n,a){n!==a&&(t.flags|=4)};function si(e,t){if(!Ee)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function at(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var r=e.child;r!==null;
vendor: 9,012 bytes, line 41
41)n|=r.lanes|r.childLanes,a|=r.subtreeFlags&14680064,a|=r.flags&14680064,r.return=e,r=r.sibling;else for(r=e.child;r!==null;)n|=r.lanes|r.childLanes,a|=r.subtreeFlags,a|=r.flags,r.return=e,r=r.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function zA(e,t,n){var a=t.pendingProps;switch(wm(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return at(t),null;case 1:return wt(t.type)&&Ll(),at(t),null;case 3:return a=t.stateNode,_s(),Pe(bt),Pe(it),jm(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(Bo(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,sn!==null&&(ip(sn),sn=null))),Xd(e,t),at(t),null;case 5:Tm(t);var r=tr(Wi.current);if(n=t.type,e!==null&&t.stateNode!=null)rw(e,t,n,a,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!a){if(t.stateNode===null)throw Error(B(166));return at(t),null}if(e=tr(En.current),Bo(t)){a=t.stateNode,n=t.type;var s=t.memoizedProps;switch(a[wn]=t,a[Ui]=s,e=(t.mode&1)!==0,n){case"dialog":Se("cancel",a),Se("close",a);break;case"iframe":case"object":case"embed":Se("load",a);break;case"video":case"audio":for(r=0;r<fi.length;r++)Se(fi[r],a);break;case"source":Se("error",a);break;case"img":case"image":case"link":Se("error",a),Se("load",a);break;case"details":Se("toggle",a);break;case"input":Hh(a,s),Se("invalid",a);break;case"select":a._wrapperState={wasMultiple:!!s.multiple},Se("invalid",a);break;case"textarea":Kh(a,s),Se("invalid",a)}Ad(n,s),r=null;for(var i in s)if(s.hasOwnProperty(i)){var o=s[i];i==="children"?typeof o=="string"?a.textContent!==o&&(s.suppressHydrationWarning!==!0&&zo(a.textContent,o,e),r=["children",o]):typeof o=="number"&&a.textContent!==""+o&&(s.suppressHydrationWarning!==!0&&zo(a.textContent,o,e),r=["children",""+o]):_i.hasOwnProperty(i)&&o!=null&&i==="onScroll"&&Se("scroll",a)}switch(n){case"input":To(a),Gh(a,s,!0);break;case"textarea":To(a),Yh(a);break;case"select":case"option":break;default:typeof s.onClick=="function"&&(a.onclick=Nl)}a=r,t.updateQueue=a,a!==null&&(t.flags|=4)}else{i=r.nodeType===9?r:r.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=Oy(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=i.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof a.is=="string"?e=i.createElement(n,{is:a.is}):(e=i.createElement(n),n==="select"&&(i=e,a.multiple?i.multiple=!0:a.size&&(i.size=a.size))):e=i.createElementNS(e,n),e[wn]=t,e[Ui]=a,aw(e,t,!1,!1),t.stateNode=e;e:{switch(i=Ed(n,a),n){case"dialog":Se("cancel",e),Se("close",e),r=a;break;case"iframe":case"object":case"embed":Se("load",e),r=a;break;case"video":case"audio":for(r=0;r<fi.length;r++)Se(fi[r],e);r=a;break;case"source":Se("error",e),r=a;break;case"img":case"image":case"link":Se("error",e),Se("load",e),r=a;break;case"details":Se("toggle",e),r=a;break;case"input":Hh(e,a),r=wd(e,a),Se("invalid",e);break;case"option":r=a;break;case"select":e._wrapperState={wasMultiple:!!a.multiple},r=Re({},a,{value:void 0}),Se("invalid",e);break;case"textarea":Kh(e,a),r=Sd(e,a),Se("invalid",e);break;default:r=a}Ad(n,r),o=r;for(s in o)if(o.hasOwnProperty(s)){var c=o[s];s==="style"?zy(e,c):s==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,c!=null&&Ny(e,c)):s==="children"?typeof c=="string"?(n!=="textarea"||c!=="")&&Oi(e,c):typeof c=="number"&&Oi(e,""+c):s!=="suppressContentEditableWarning"&&s!=="suppressHydrationWarning"&&s!=="autoFocus"&&(_i.hasOwnProperty(s)?c!=null&&s==="onScroll"&&Se("scroll",e):c!=null&&sm(e,s,c,i))}switch(n){case"input":To(e),Gh(e,a,!1);break;case"textarea":To(e),Yh(e);break;case"option":a.value!=null&&e.setAttribute("value",""+ja(a.value));break;case"select":e.multiple=!!a.multiple,s=a.value,s!=null?ls(e,!!a.multiple,s,!1):a.defaultValue!=null&&ls(e,!!a.multiple,a.defaultValue,!0);break;default:typeof r.onClick=="function"&&(e.onclick=Nl)}switch(n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}}a&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return at(t),null;case 6:if(e&&t.stateNode!=null)sw(e,t,e.memoizedProps,a);else{if(typeof a!="string"&&t.stateNode===null)throw Error(B(166));if(n=tr(Wi.current),tr(En.current),Bo(t)){if(a=t.stateNode,n=t.memoizedProps,a[wn]=t,(s=a.nodeValue!==n)&&(e=Tt,e!==null))switch(e.tag){case 3:zo(a.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&zo(a.nodeValue,n,(e.mode&1)!==0)}s&&(t.flags|=4)}else a=(n.nodeType===9?n:n.ownerDocument).createTextNode(a),a[wn]=t,t.stateNode=a}return at(t),null;case 13:if(Pe(je),a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Ee&&Ct!==null&&t.mode&1&&!(t.flags&128))Sb(),Is(),t.flags|=98560,s=!1;else if(s=Bo(t),a!==null&&a.dehydrated!==null){if(e===null){if(!s)throw Error(B(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(B(317));s[wn]=t}else Is(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;at(t),s=!1}else sn!==null&&(ip(sn),sn=null),s=!0;if(!s)return t.flags&65536?t:null}return t.flags&128?(t.lanes=n,t):(a=a!==null,a!==(e!==null&&e.memoizedState!==null)&&a&&(t.child.flags|=8192,t.mode&1&&(e===null||je.current&1?$e===0&&($e=3):Fm())),t.updateQueue!==null&&(t.flags|=4),at(t),null);case 4:return _s(),Xd(e,t),e===null&&Mi(t.stateNode.containerInfo),at(t),null;case 10:return Pm(t.type._context),at(t),null;case 17:return wt(t.type)&&Ll(),at(t),null;case 19:if(Pe(je),s=t.memoizedState,s===null)return at(t),null;if(a=(t.flags&128)!==0,i=s.rendering,i===null)if(a)si(s,!1);else{if($e!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(i=Ul(e),i!==null){for(t.flags|=128,si(s,!1),a=i.updateQueue,a!==null&&(t.updateQueue=a,t.flags|=4),t.subtreeFlags=0,a=n,n=t.child;n!==null;)s=n,e=a,s.flags&=14680066,i=s.alternate,i===null?(s.childLanes=0,s.lanes=e,s.child=null,s.subtreeFlags=0,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=i.childLanes,s.lanes=i.lanes,s.child=i.child,s.subtreeFlags=0,s.deletions=null,s.memoizedProps=i.memoizedProps,s.memoizedState=i.memoizedState,s.updateQueue=i.updateQueue,s.type=i.type,e=i.dependencies,s.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return xe(je,je.current&1|2),t.child}e=e.sibling}s.tail!==null&&Be()>Ns&&(t.flags|=128,a=!0,si(s,!1),t.lanes=4194304)}else{if(!a)if(e=Ul(i),e!==null){if(t.flags|=128,a=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),si(s,!0),s.tail===null&&s.tailMode==="hidden"&&!i.alternate&&!Ee)return at(t),null}else 2*Be()-s.renderingStartTime>Ns&&n!==1073741824&&(t.flags|=128,a=!0,si(s,!1),t.lanes=4194304);s.isBackwards?(i.sibling=t.child,t.child=i):(n=s.last,n!==null?n.sibling=i:t.child=i,s.last=i)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=Be(),t.sibling=null,n=je.current,xe(je,a?n&1|2:n&1),t):(at(t),null);case 22:case 23:return Mm(),a=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==a&&(t.flags|=8192),a&&t.mode&1?St&1073741824&&(at(t),t.subtreeFlags&6&&(t.flags|=8192)):at(t),null;case 24:return null;case 25:return null}throw Error(B(156,t.tag))}function BA(e,t){switch(wm(t),t.tag){case 1:return wt(t.type)&&Ll(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return _s(),Pe(bt),Pe(it),jm(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Tm(t),null;case 13:if(Pe(je),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(B(340));Is()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Pe(je),null;case 4:return _s(),null;case 10:return Pm(t.type._context),null;case 22:case 23:return Mm(),null;case 24:return null;default:return null}}var Mo=!1,st=!1,DA=typeof WeakSet=="function"?WeakSet:Set,H=null;function ss(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(a){ze(e,t,a)}else n.current=null}function Zd(e,t,n){try{n()}catch(a){ze(e,t,a)}}var qf=!1;function qA(e,t){if(zd=Rl,e=ub(),ym(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var r=a.anchorOffset,s=a.focusNode;a=a.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var i=0,o=-1,c=-1,u=0,d=0,p=e,h=null;t:for(;;){for(var m;p!==n||r!==0&&p.nodeType!==3||(o=i+r),p!==s||a!==0&&p.nodeType!==3||(c=i+a),p.nodeType===3&&(i+=p.nodeValue.length),(m=p.firstChild)!==null;)h=p,p=m;for(;;){if(p===e)break t;if(h===n&&++u===r&&(o=i),h===s&&++d===a&&(c=i),(m=p.nextSibling)!==null)break;p=h,h=p.parentNode}p=m}n=o===-1||c===-1?null:{start:o,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(Bd={focusedElem:e,selectionRange:n},Rl=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;
vendor: 2,088 bytes, line 41
41case 1:if(w!==null){var f=w.memoizedProps,x=w.memoizedState,b=t.stateNode,g=b.getSnapshotBeforeUpdate(t.elementType===t.type?f:Xt(t.type,f),x);b.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var y=t.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(B(163))}}catch(k){ze(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return w=qf,qf=!1,w}function Pi(e,t,n){var a=t.updateQueue;if(a=a!==null?a.lastEffect:null,a!==null){var r=a=a.next;do{if((r.tag&e)===e){var s=r.destroy;r.destroy=void 0,s!==void 0&&Zd(t,n,s)}r=r.next}while(r!==a)}}function kc(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var a=n.create;n.destroy=a()}n=n.next}while(n!==t)}}function ep(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function iw(e){var t=e.alternate;t!==null&&(e.alternate=null,iw(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[wn],delete t[Ui],delete t[Md],delete t[xA],delete t[kA])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ow(e){return e.tag===5||e.tag===3||e.tag===4}function Mf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ow(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function tp(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Nl));else if(a!==4&&(e=e.child,e!==null))for(tp(e,t,n),e=e.sibling;e!==null;)tp(e,t,n),e=e.sibling}
vendor: 19,155 bytes, line 41
41function np(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(e=e.child,e!==null))for(np(e,t,n),e=e.sibling;e!==null;)np(e,t,n),e=e.sibling}var Qe=null,an=!1;function Zn(e,t,n){for(n=n.child;n!==null;)lw(e,t,n),n=n.sibling}function lw(e,t,n){if(An&&typeof An.onCommitFiberUnmount=="function")try{An.onCommitFiberUnmount(hc,n)}catch{}switch(n.tag){case 5:st||ss(n,t);case 6:var a=Qe,r=an;Qe=null,Zn(e,t,n),Qe=a,an=r,Qe!==null&&(an?(e=Qe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Qe.removeChild(n.stateNode));break;case 18:Qe!==null&&(an?(e=Qe,n=n.stateNode,e.nodeType===8?ku(e.parentNode,n):e.nodeType===1&&ku(e,n),Bi(e)):ku(Qe,n.stateNode));break;case 4:a=Qe,r=an,Qe=n.stateNode.containerInfo,an=!0,Zn(e,t,n),Qe=a,an=r;break;case 0:case 11:case 14:case 15:if(!st&&(a=n.updateQueue,a!==null&&(a=a.lastEffect,a!==null))){r=a=a.next;do{var s=r,i=s.destroy;s=s.tag,i!==void 0&&(s&2||s&4)&&Zd(n,t,i),r=r.next}while(r!==a)}Zn(e,t,n);break;case 1:if(!st&&(ss(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"))try{a.props=n.memoizedProps,a.state=n.memoizedState,a.componentWillUnmount()}catch(o){ze(n,t,o)}Zn(e,t,n);break;case 21:Zn(e,t,n);break;case 22:n.mode&1?(st=(a=st)||n.memoizedState!==null,Zn(e,t,n),st=a):Zn(e,t,n);break;default:Zn(e,t,n)}}function Ff(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new DA),t.forEach(function(a){var r=KA.bind(null,e,a);n.has(a)||(n.add(a),a.then(r,r))})}}function Kt(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var r=n[a];try{var s=e,i=t,o=i;e:for(;o!==null;){switch(o.tag){case 5:Qe=o.stateNode,an=!1;break e;case 3:Qe=o.stateNode.containerInfo,an=!0;break e;case 4:Qe=o.stateNode.containerInfo,an=!0;break e}o=o.return}if(Qe===null)throw Error(B(160));lw(s,i,r),Qe=null,an=!1;var c=r.alternate;c!==null&&(c.return=null),r.return=null}catch(u){ze(r,t,u)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)cw(t,e),t=t.sibling}function cw(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(Kt(t,e),fn(e),a&4){try{Pi(3,e,e.return),kc(3,e)}catch(f){ze(e,e.return,f)}try{Pi(5,e,e.return)}catch(f){ze(e,e.return,f)}}break;case 1:Kt(t,e),fn(e),a&512&&n!==null&&ss(n,n.return);break;case 5:if(Kt(t,e),fn(e),a&512&&n!==null&&ss(n,n.return),e.flags&32){var r=e.stateNode;try{Oi(r,"")}catch(f){ze(e,e.return,f)}}if(a&4&&(r=e.stateNode,r!=null)){var s=e.memoizedProps,i=n!==null?n.memoizedProps:s,o=e.type,c=e.updateQueue;if(e.updateQueue=null,c!==null)try{o==="input"&&s.type==="radio"&&s.name!=null&&Ry(r,s),Ed(o,i);var u=Ed(o,s);for(i=0;i<c.length;i+=2){var d=c[i],p=c[i+1];d==="style"?zy(r,p):d==="dangerouslySetInnerHTML"?Ny(r,p):d==="children"?Oi(r,p):sm(r,d,p,u)}switch(o){case"input":xd(r,s);break;case"textarea":_y(r,s);break;case"select":var h=r._wrapperState.wasMultiple;r._wrapperState.wasMultiple=!!s.multiple;var m=s.value;m!=null?ls(r,!!s.multiple,m,!1):h!==!!s.multiple&&(s.defaultValue!=null?ls(r,!!s.multiple,s.defaultValue,!0):ls(r,!!s.multiple,s.multiple?[]:"",!1))}r[Ui]=s}catch(f){ze(e,e.return,f)}}break;case 6:if(Kt(t,e),fn(e),a&4){if(e.stateNode===null)throw Error(B(162));r=e.stateNode,s=e.memoizedProps;try{r.nodeValue=s}catch(f){ze(e,e.return,f)}}break;case 3:if(Kt(t,e),fn(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{Bi(t.containerInfo)}catch(f){ze(e,e.return,f)}break;case 4:Kt(t,e),fn(e);break;case 13:Kt(t,e),fn(e),r=e.child,r.flags&8192&&(s=r.memoizedState!==null,r.stateNode.isHidden=s,!s||r.alternate!==null&&r.alternate.memoizedState!==null||(Dm=Be())),a&4&&Ff(e);break;case 22:if(d=n!==null&&n.memoizedState!==null,e.mode&1?(st=(u=st)||d,Kt(t,e),st=u):Kt(t,e),fn(e),a&8192){if(u=e.memoizedState!==null,(e.stateNode.isHidden=u)&&!d&&e.mode&1)for(H=e,d=e.child;d!==null;){for(p=H=d;H!==null;){switch(h=H,m=h.child,h.tag){case 0:case 11:case 14:case 15:Pi(4,h,h.return);break;case 1:ss(h,h.return);var w=h.stateNode;if(typeof w.componentWillUnmount=="function"){a=h,n=h.return;try{t=a,w.props=t.memoizedProps,w.state=t.memoizedState,w.componentWillUnmount()}catch(f){ze(a,n,f)}}break;case 5:ss(h,h.return);break;case 22:if(h.memoizedState!==null){$f(p);continue}}m!==null?(m.return=h,H=m):$f(p)}d=d.sibling}e:for(d=null,p=e;;){if(p.tag===5){if(d===null){d=p;try{r=p.stateNode,u?(s=r.style,typeof s.setProperty=="function"?s.setProperty("display","none","important"):s.display="none"):(o=p.stateNode,c=p.memoizedProps.style,i=c!=null&&c.hasOwnProperty("display")?c.display:null,o.style.display=Ly("display",i))}catch(f){ze(e,e.return,f)}}}else if(p.tag===6){if(d===null)try{p.stateNode.nodeValue=u?"":p.memoizedProps}catch(f){ze(e,e.return,f)}}else if((p.tag!==22&&p.tag!==23||p.memoizedState===null||p===e)&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;p.sibling===null;){if(p.return===null||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:Kt(t,e),fn(e),a&4&&Ff(e);break;case 21:break;default:Kt(t,e),fn(e)}}function fn(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(ow(n)){var a=n;break e}n=n.return}throw Error(B(160))}switch(a.tag){case 5:var r=a.stateNode;a.flags&32&&(Oi(r,""),a.flags&=-33);var s=Mf(e);np(e,s,r);break;case 3:case 4:var i=a.stateNode.containerInfo,o=Mf(e);tp(e,o,i);break;default:throw Error(B(161))}}catch(c){ze(e,e.return,c)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function MA(e,t,n){H=e,uw(e)}function uw(e,t,n){for(var a=(e.mode&1)!==0;H!==null;){var r=H,s=r.child;if(r.tag===22&&a){var i=r.memoizedState!==null||Mo;if(!i){var o=r.alternate,c=o!==null&&o.memoizedState!==null||st;o=Mo;var u=st;if(Mo=i,(st=c)&&!u)for(H=r;H!==null;)i=H,c=i.child,i.tag===22&&i.memoizedState!==null?Wf(r):c!==null?(c.return=i,H=c):Wf(r);for(;s!==null;)H=s,uw(s),s=s.sibling;H=r,Mo=o,st=u}Uf(e)}else r.subtreeFlags&8772&&s!==null?(s.return=r,H=s):Uf(e)}}function Uf(e){for(;H!==null;){var t=H;if(t.flags&8772){var n=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:st||kc(5,t);break;case 1:var a=t.stateNode;if(t.flags&4&&!st)if(n===null)a.componentDidMount();else{var r=t.elementType===t.type?n.memoizedProps:Xt(t.type,n.memoizedProps);a.componentDidUpdate(r,n.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var s=t.updateQueue;s!==null&&Ef(t,s,a);break;case 3:var i=t.updateQueue;if(i!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}Ef(t,i,n)}break;case 5:var o=t.stateNode;if(n===null&&t.flags&4){n=o;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var u=t.alternate;if(u!==null){var d=u.memoizedState;if(d!==null){var p=d.dehydrated;p!==null&&Bi(p)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(B(163))}st||t.flags&512&&ep(t)}catch(h){ze(t,t.return,h)}}if(t===e){H=null;break}if(n=t.sibling,n!==null){n.return=t.return,H=n;break}H=t.return}}function $f(e){for(;H!==null;){var t=H;if(t===e){H=null;break}var n=t.sibling;if(n!==null){n.return=t.return,H=n;break}H=t.return}}function Wf(e){for(;H!==null;){var t=H;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{kc(4,t)}catch(c){ze(t,n,c)}break;case 1:var a=t.stateNode;if(typeof a.componentDidMount=="function"){var r=t.return;try{a.componentDidMount()}catch(c){ze(t,r,c)}}var s=t.return;try{ep(t)}catch(c){ze(t,s,c)}break;case 5:var i=t.return;try{ep(t)}catch(c){ze(t,i,c)}}}catch(c){ze(t,t.return,c)}if(t===e){H=null;break}var o=t.sibling;if(o!==null){o.return=t.return,H=o;break}H=t.return}}var FA=Math.ceil,Vl=Vn.ReactCurrentDispatcher,zm=Vn.ReactCurrentOwner,Mt=Vn.ReactCurrentBatchConfig,ue=0,Ge=null,Me=null,Xe=0,St=0,is=La(0),$e=0,Ki=null,fr=0,Sc=0,Bm=0,Ai=null,vt=null,Dm=0,Ns=1/0,_n=null,Hl=!1,ap=null,Aa=null,Fo=!1,va=null,Gl=0,Ei=0,rp=null,fl=-1,gl=0;function dt(){return ue&6?Be():fl!==-1?fl:fl=Be()}function Ea(e){return e.mode&1?ue&2&&Xe!==0?Xe&-Xe:PA.transition!==null?(gl===0&&(gl=Ky()),gl):(e=ge,e!==0||(e=window.event,e=e===void 0?16:tb(e.type)),e):1}function cn(e,t,n,a){if(50<Ei)throw Ei=0,rp=null,Error(B(185));vo(e,n,a),(!(ue&2)||e!==Ge)&&(e===Ge&&(!(ue&2)&&(Sc|=n),$e===4&&ca(e,Xe)),xt(e,a),n===1&&ue===0&&!(t.mode&1)&&(Ns=Be()+500,bc&&za()))}function xt(e,t){var n=e.callbackNode;PP(e,t);var a=Il(e,e===Ge?Xe:0);if(a===0)n!==null&&Xh(n),e.callbackNode=null,e.callbackPriority=0;else if(t=a&-a,e.callbackPriority!==t){if(n!=null&&Xh(n),t===1)e.tag===0?SA(Vf.bind(null,e)):wb(Vf.bind(null,e)),bA(function(){!(ue&6)&&za()}),n=null;else{switch(Yy(a)){case 1:n=um;break;case 4:n=Hy;break;case 16:n=jl;break;case 536870912:n=Gy;break;default:n=jl}n=yw(n,dw.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function dw(e,t){if(fl=-1,gl=0,ue&6)throw Error(B(327));var n=e.callbackNode;if(ms()&&e.callbackNode!==n)return null;var a=Il(e,e===Ge?Xe:0);if(a===0)return null;if(a&30||a&e.expiredLanes||t)t=Kl(e,a);else{t=a;var r=ue;ue|=2;var s=mw();(Ge!==e||Xe!==t)&&(_n=null,Ns=Be()+500,ur(e,t));do try{WA();break}catch(o){pw(e,o)}while(!0);Sm(),Vl.current=s,ue=r,Me!==null?t=0:(Ge=null,Xe=0,t=$e)}if(t!==0){if(t===2&&(r=Rd(e),r!==0&&(a=r,t=sp(e,r))),t===1)throw n=Ki,ur(e,0),ca(e,a),xt(e,Be()),n;if(t===6)ca(e,a);else{if(r=e.current.alternate,!(a&30)&&!UA(r)&&(t=Kl(e,a),t===2&&(s=Rd(e),s!==0&&(a=s,t=sp(e,s))),t===1))throw n=Ki,ur(e,0),ca(e,a),xt(e,Be()),n;switch(e.finishedWork=r,e.finishedLanes=a,t){case 0:case 1:throw Error(B(345));case 2:Ya(e,vt,_n);break;case 3:if(ca(e,a),(a&130023424)===a&&(t=Dm+500-Be(),10<t)){if(Il(e,0)!==0)break;if(r=e.suspendedLanes,(r&a)!==a){dt(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=qd(Ya.bind(null,e,vt,_n),t);break}Ya(e,vt,_n);break;case 4:if(ca(e,a),(a&4194240)===a)break;for(t=e.eventTimes,r=-1;0<a;){var i=31-ln(a);s=1<<i,i=t[i],i>r&&(r=i),a&=~s}if(a=r,a=Be()-a,a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*FA(a/1960))-a,10<a){e.timeoutHandle=qd(Ya.bind(null,e,vt,_n),a);break}Ya(e,vt,_n);break;case 5:Ya(e,vt,_n);break;default:throw Error(B(329))}}}return xt(e,Be()),e.callbackNode===n?dw.bind(null,e):null}function sp(e,t){var n=Ai;return e.current.memoizedState.isDehydrated&&(ur(e,t).flags|=256),e=Kl(e,t),e!==2&&(t=vt,vt=n,t!==null&&ip(t)),e}function ip(e){vt===null?vt=e:vt.push.apply(vt,e)}function UA(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var a=0;a<n.length;a++){var r=n[a],s=r.getSnapshot;r=r.value;try{if(!un(s(),r))return!1}catch{return!1}}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ca(e,t){for(t&=~Bm,t&=~Sc,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-ln(t),a=1<<n;e[n]=-1,t&=~a}}function Vf(e){if(ue&6)throw Error(B(327));ms();var t=Il(e,0);if(!(t&1))return xt(e,Be()),null;var n=Kl(e,t);if(e.tag!==0&&n===2){var a=Rd(e);a!==0&&(t=a,n=sp(e,a))}if(n===1)throw n=Ki,ur(e,0),ca(e,t),xt(e,Be()),n;if(n===6)throw Error(B(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ya(e,vt,_n),xt(e,Be()),null}function qm(e,t){var n=ue;ue|=1;try{return e(t)}finally{ue=n,ue===0&&(Ns=Be()+500,bc&&za())}}function gr(e){va!==null&&va.tag===0&&!(ue&6)&&ms();var t=ue;ue|=1;var n=Mt.transition,a=ge;try{if(Mt.transition=null,ge=1,e)return e()}finally{ge=a,Mt.transition=n,ue=t,!(ue&6)&&za()}}function Mm(){St=is.current,Pe(is)}function ur(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,yA(n)),Me!==null)for(n=Me.return;n!==null;){var a=n;switch(wm(a),a.tag){case 1:a=a.type.childContextTypes,a!=null&&Ll();break;case 3:_s(),Pe(bt),Pe(it),jm();break;case 5:Tm(a);break;case 4:_s();break;case 13:Pe(je);break;case 19:Pe(je);break;case 10:Pm(a.type._context);break;case 22:case 23:Mm()}n=n.return}if(Ge=e,Me=e=Ca(e.current,null),Xe=St=t,$e=0,Ki=null,Bm=Sc=fr=0,vt=Ai=null,er!==null){for(t=0;t<er.length;t++)if(n=er[t],a=n.interleaved,a!==null){n.interleaved=null;var r=a.next,s=n.pending;if(s!==null){var i=s.next;s.next=r,a.next=i}n.pending=a}er=null}return e}function pw(e,t){do{var n=Me;try{if(Sm(),pl.current=Wl,$l){for(var a=Ie.memoizedState;a!==null;){var r=a.queue;r!==null&&(r.pending=null),a=a.next}$l=!1}if(hr=0,He=Ue=Ie=null,Si=!1,Vi=0,zm.current=null,n===null||n.return===null){$e=1,Ki=t,Me=null;break}e:{var s=e,i=n.return,o=n,c=t;if(t=Xe,o.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){var u=c,d=o,p=d.tag;if(!(d.mode&1)&&(p===0||p===11||p===15)){var h=d.alternate;h?(d.updateQueue=h.updateQueue,d.memoizedState=h.memoizedState,d.lanes=h.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=_f(i);if(m!==null){m.flags&=-257,Of(m,i,o,s,t),m.mode&1&&Rf(s,u,t),t=m,c=u;var w=t.updateQueue;if(w===null){var f=new Set;f.add(c),t.updateQueue=f}else w.add(c);break e}else{if(!(t&1)){Rf(s,u,t),Fm();break e}c=Error(B(426))}}else if(Ee&&o.mode&1){var x=_f(i);if(x!==null){!(x.flags&65536)&&(x.flags|=256),Of(x,i,o,s,t),xm(Os(c,o));break e}}s=c=Os(c,o),$e!==4&&($e=2),Ai===null?Ai=[s]:Ai.push(s),s=i;do{switch(s.tag){case 3:s.flags|=65536,t&=-t,s.lanes|=t;var b=Yb(s,c,t);Af(s,b);break e;case 1:o=c;var g=s.type,y=s.stateNode;if(!(s.flags&128)&&(typeof g.getDerivedStateFromError=="function"||y!==null&&typeof y.componentDidCatch=="function"&&(Aa===null||!Aa.has(y)))){s.flags|=65536,t&=-t,s.lanes|=t;var k=Jb(s,o,t);Af(s,k);break e}}s=s.return}while(s!==null)}fw(n)}catch(P){t=P,Me===n&&n!==null&&(Me=n=n.return);continue}break}while(!0)}function mw(){var e=Vl.current;return Vl.current=Wl,e===null?Wl:e}function Fm(){($e===0||$e===3||$e===2)&&($e=4),Ge===null||!(fr&268435455)&&!(Sc&268435455)||ca(Ge,Xe)}function Kl(e,t){var n=ue;ue|=2;var a=mw();(Ge!==e||Xe!==t)&&(_n=null,ur(e,t));do try{$A();break}catch(r){pw(e,r)}while(!0);if(Sm(),ue=n,Vl.current=a,Me!==null)throw Error(B(261));return Ge=null,Xe=0,$e}function $A(){for(;Me!==null;)hw(Me)}function WA(){for(;Me!==null&&!fP();)hw(Me)}function hw(e){var t=vw(e.alternate,e,St);e.memoizedProps=e.pendingProps,t===null?fw(e):Me=t,zm.current=null}function fw(e){var t=e;do{var n=t.alternate;if(e=t.return,t.flags&32768){if(n=BA(n,t),n!==null){n.flags&=32767,Me=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{$e=6,Me=null;return}}else if(n=zA(n,t,St),n!==null){Me=n;return}if(t=t.sibling,t!==null){Me=t;return}Me=t=e}while(t!==null);$e===0&&($e=5)}function Ya(e,t,n){var a=ge,r=Mt.transition;try{Mt.transition=null,ge=1,VA(e,t,n,a)}finally{Mt.transition=r,ge=a}return null}function VA(e,t,n,a){do ms();while(va!==null);if(ue&6)throw Error(B(327));n=e.finishedWork;var r=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(B(177));e.callbackNode=null,e.callbackPriority=0;var s=n.lanes|n.childLanes;if(AP(e,s),e===Ge&&(Me=Ge=null,Xe=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||Fo||(Fo=!0,yw(jl,function(){return ms(),null})),s=(n.flags&15990)!==0,n.subtreeFlags&15990||s){s=Mt.transition,Mt.transition=null;var i=ge;ge=1;var o=ue;ue|=4,zm.current=null,qA(e,n),cw(n,e),dA(Bd),Rl=!!zd,Bd=zd=null,e.current=n,MA(n),gP(),ue=o,ge=i,Mt.transition=s}else e.current=n;if(Fo&&(Fo=!1,va=e,Gl=r),s=e.pendingLanes,s===0&&(Aa=null),bP(n.stateNode),xt(e,Be()),t!==null)for(a=e.onRecoverableError,n=0;n<t.length;n++)r=t[n],a(r.value,{componentStack:r.stack,digest:r.digest});if(Hl)throw Hl=!1,e=ap,ap=null,e;return Gl&1&&e.tag!==0&&ms(),s=e.pendingLanes,s&1?e===rp?Ei++:(Ei=0,rp=e):Ei=0,za(),null}function ms(){if(va!==null){var e=Yy(Gl),t=Mt.transition,n=ge;try{if(Mt.transition=null,ge=16>e?16:e,va===null)var a=!1;else{if(e=va,va=null,Gl=0,ue&6)throw Error(B(331));var r=ue;for(ue|=4,H=e.current;H!==null;){var s=H,i=s.child;if(H.flags&16){var o=s.deletions;if(o!==null){for(var c=0;c<o.length;c++){var u=o[c];for(H=u;H!==null;){var d=H;switch(d.tag){case 0:case 11:case 15:Pi(8,d,s)}var p=d.child;if(p!==null)p.return=d,H=p;else for(;H!==null;){d=H;var h=d.sibling,m=d.return;if(iw(d),d===u){H=null;break}if(h!==null){h.return=m,H=h;break}H=m}}}var w=s.alternate;if(w!==null){var f=w.child;if(f!==null){w.child=null;do{var x=f.sibling;f.sibling=null,f=x}while(f!==null)}}H=s}}if(s.subtreeFlags&2064&&i!==null)i.return=s,H=i;else e:for(;H!==null;){if(s=H,s.flags&2048)switch(s.tag){case 0:case 11:case 15:Pi(9,s,s.return)}var b=s.sibling;if(b!==null){b.return=s.return,H=b;break e}H=s.return}}var g=e.current;for(H=g;H!==null;){i=H;var y=i.child;if(i.subtreeFlags&2064&&y!==null)y.return=i,H=y;else e:for(i=g;H!==null;){if(o=H,o.flags&2048)try{switch(o.tag){case 0:case 11:case 15:kc(9,o)}}catch(P){ze(o,o.return,P)}if(o===i){H=null;break e}var k=o.sibling;if(k!==null){k.return=o.return,H=k;break e}H=o.return}}if(ue=r,za(),An&&typeof An.onPostCommitFiberRoot=="function")try{An.onPostCommitFiberRoot(hc,e)}catch{}a=!0}return a}finally{ge=n,Mt.transition=t}}return!1}function Hf(e,t,n){t=Os(n,t),t=Yb(e,t,1),e=Pa(e,t,1),t=dt(),e!==null&&(vo(e,1,t),xt(e,t))}function ze(e,t,n){if(e.tag===3)Hf(e,e,n);else for(;t!==null;){if(t.tag===3){Hf(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Aa===null||!Aa.has(a))){e=Os(n,e),e=Jb(t,e,1),t=Pa(t,e,1),e=dt(),t!==null&&(vo(t,1,e),xt(t,e));break}}t=t.return}}function HA(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),t=dt(),e.pingedLanes|=e.suspendedLanes&n,Ge===e&&(Xe&n)===n&&($e===4||$e===3&&(Xe&130023424)===Xe&&500>Be()-Dm?ur(e,0):Bm|=n),xt(e,t)}function gw(e,t){t===0&&(e.mode&1?(t=Ro,Ro<<=1,!(Ro&130023424)&&(Ro=4194304)):t=1);var n=dt();e=Fn(e,t),e!==null&&(vo(e,t,n),xt(e,n))}function GA(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gw(e,n)}function KA(e,t){var n=0;switch(e.tag){case 13:var a=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:a=e.stateNode;break;default:throw Error(B(314))}a!==null&&a.delete(t),gw(e,n)}var vw;vw=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||bt.current)yt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return yt=!1,LA(e,t,n);yt=!!(e.flags&131072)}else yt=!1,Ee&&t.flags&1048576&&xb(t,Dl,t.index);switch(t.lanes=0,t.tag){case 2:var a=t.type;hl(e,t),e=t.pendingProps;var r=js(t,it.current);ps(t,n),r=Rm(null,t,a,e,r,n);var s=_m();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,wt(a)?(s=!0,zl(t)):s=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,Em(t),r.updater=xc,t.stateNode=r,r._reactInternals=t,Hd(t,a,e,n),t=Yd(null,t,a,!0,s,n)):(t.tag=0,Ee&&s&&bm(t),ct(null,t,r,n),t=t.child),t;case 16:a=t.elementType;e:{switch(hl(e,t),e=t.pendingProps,r=a._init,a=r(a._payload),t.type=a,r=t.tag=JA(a),e=Xt(a,e),r){case 0:t=Kd(null,t,a,e,n);break e;case 1:t=zf(null,t,a,e,n);break e;case 11:t=Nf(null,t,a,e,n);break e;case 14:t=Lf(null,t,a,Xt(a.type,e),n);break e}throw Error(B(306,a,""))}return t;
vendor: 5,990 bytes, line 41
41case 0:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:Xt(a,r),Kd(e,t,a,r,n);case 1:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:Xt(a,r),zf(e,t,a,r,n);case 3:e:{if(ew(t),e===null)throw Error(B(387));a=t.pendingProps,s=t.memoizedState,r=s.element,Cb(e,t),Fl(t,a,null,n);var i=t.memoizedState;if(a=i.element,s.isDehydrated)if(s={element:a,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){r=Os(Error(B(423)),t),t=Bf(e,t,a,n,r);break e}else if(a!==r){r=Os(Error(B(424)),t),t=Bf(e,t,a,n,r);break e}else for(Ct=Sa(t.stateNode.containerInfo.firstChild),Tt=t,Ee=!0,sn=null,n=Ab(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Is(),a===r){t=Un(e,t,n);break e}ct(e,t,a,n)}t=t.child}return t;case 5:return Tb(t),e===null&&$d(t),a=t.type,r=t.pendingProps,s=e!==null?e.memoizedProps:null,i=r.children,Dd(a,r)?i=null:s!==null&&Dd(a,s)&&(t.flags|=32),Zb(e,t),ct(e,t,i,n),t.child;case 6:return e===null&&$d(t),null;case 13:return tw(e,t,n);case 4:return Cm(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Rs(t,null,a,n):ct(e,t,a,n),t.child;case 11:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:Xt(a,r),Nf(e,t,a,r,n);case 7:return ct(e,t,t.pendingProps,n),t.child;case 8:return ct(e,t,t.pendingProps.children,n),t.child;case 12:return ct(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(a=t.type._context,r=t.pendingProps,s=t.memoizedProps,i=r.value,xe(ql,a._currentValue),a._currentValue=i,s!==null)if(un(s.value,i)){if(s.children===r.children&&!bt.current){t=Un(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var o=s.dependencies;if(o!==null){i=s.child;for(var c=o.firstContext;c!==null;){if(c.context===a){if(s.tag===1){c=Dn(-1,n&-n),c.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}s.lanes|=n,c=s.alternate,c!==null&&(c.lanes|=n),Wd(s.return,n,t),o.lanes|=n;break}c=c.next}}else if(s.tag===10)i=s.type===t.type?null:s.child;else if(s.tag===18){if(i=s.return,i===null)throw Error(B(341));i.lanes|=n,o=i.alternate,o!==null&&(o.lanes|=n),Wd(i,n,t),i=s.sibling}else i=s.child;if(i!==null)i.return=s;else for(i=s;i!==null;){if(i===t){i=null;break}if(s=i.sibling,s!==null){s.return=i.return,i=s;break}i=i.return}s=i}ct(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,a=t.pendingProps.children,ps(t,n),r=Ft(r),a=a(r),t.flags|=1,ct(e,t,a,n),t.child;case 14:return a=t.type,r=Xt(a,t.pendingProps),r=Xt(a.type,r),Lf(e,t,a,r,n);case 15:return Qb(e,t,t.type,t.pendingProps,n);case 17:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:Xt(a,r),hl(e,t),t.tag=1,wt(a)?(e=!0,zl(t)):e=!1,ps(t,n),Kb(t,a,r),Hd(t,a,r,n),Yd(null,t,a,!0,e,n);case 19:return nw(e,t,n);case 22:return Xb(e,t,n)}throw Error(B(156,t.tag))};function yw(e,t){return Vy(e,t)}function YA(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function qt(e,t,n,a){return new YA(e,t,n,a)}function Um(e){return e=e.prototype,!(!e||!e.isReactComponent)}function JA(e){if(typeof e=="function")return Um(e)?1:0;if(e!=null){if(e=e.$$typeof,e===om)return 11;if(e===lm)return 14}return 2}function Ca(e,t){var n=e.alternate;return n===null?(n=qt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function vl(e,t,n,a,r,s){var i=2;if(a=e,typeof e=="function")Um(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Jr:return dr(n.children,r,s,t);case im:i=8,r|=8;break;case gd:return e=qt(12,n,t,r|2),e.elementType=gd,e.lanes=s,e;case vd:return e=qt(13,n,t,r),e.elementType=vd,e.lanes=s,e;case yd:return e=qt(19,n,t,r),e.elementType=yd,e.lanes=s,e;case Ty:return Pc(n,r,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ey:i=10;break e;case Cy:i=9;break e;case om:i=11;break e;case lm:i=14;break e;case sa:i=16,a=null;break e}throw Error(B(130,e==null?e:typeof e,""))}return t=qt(i,n,t,r),t.elementType=e,t.type=a,t.lanes=s,t}function dr(e,t,n,a){return e=qt(7,e,a,t),e.lanes=n,e}function Pc(e,t,n,a){return e=qt(22,e,a,t),e.elementType=Ty,e.lanes=n,e.stateNode={isHidden:!1},e}function Iu(e,t,n){return e=qt(6,e,null,t),e.lanes=n,e}function Ru(e,t,n){return t=qt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function QA(e,t,n,a,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=du(0),this.expirationTimes=du(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=du(0),this.identifierPrefix=a,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function $m(e,t,n,a,r,s,i,o,c){return e=new QA(e,t,n,o,c),t===1?(t=1,s===!0&&(t|=8)):t=0,s=qt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:a,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Em(s),e}function XA(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;
vendor: 4,591 bytes, line 41
41return{$$typeof:Yr,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}function bw(e){if(!e)return Ia;e=e._reactInternals;e:{if(Ar(e)!==e||e.tag!==1)throw Error(B(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(wt(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(B(171))}if(e.tag===1){var n=e.type;if(wt(n))return bb(e,n,t)}return t}function ww(e,t,n,a,r,s,i,o,c){return e=$m(n,a,!0,e,r,s,i,o,c),e.context=bw(null),n=e.current,a=dt(),r=Ea(n),s=Dn(a,r),s.callback=t??null,Pa(n,s,r),e.current.lanes=r,vo(e,r,a),xt(e,a),e}function Ac(e,t,n,a){var r=t.current,s=dt(),i=Ea(r);return n=bw(n),t.context===null?t.context=n:t.pendingContext=n,t=Dn(s,i),t.payload={element:e},a=a===void 0?null:a,a!==null&&(t.callback=a),e=Pa(r,t,i),e!==null&&(cn(e,r,i,s),dl(e,r,i)),i}function Yl(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Gf(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Wm(e,t){Gf(e,t),(e=e.alternate)&&Gf(e,t)}function ZA(){return null}var xw=typeof reportError=="function"?reportError:function(e){console.error(e)};function Vm(e){this._internalRoot=e}Ec.prototype.render=Vm.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(B(409));Ac(e,t,null,null)};Ec.prototype.unmount=Vm.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;gr(function(){Ac(null,e,null,null)}),t[Mn]=null}};function Ec(e){this._internalRoot=e}Ec.prototype.unstable_scheduleHydration=function(e){if(e){var t=Xy();e={blockedOn:null,target:e,priority:t};for(var n=0;n<la.length&&t!==0&&t<la[n].priority;n++);la.splice(n,0,e),n===0&&eb(e)}};function Hm(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Cc(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Kf(){}function e1(e,t,n,a,r){if(r){if(typeof a=="function"){var s=a;a=function(){var u=Yl(i);s.call(u)}}var i=ww(t,a,e,0,null,!1,!1,"",Kf);return e._reactRootContainer=i,e[Mn]=i.current,Mi(e.nodeType===8?e.parentNode:e),gr(),i}for(;r=e.lastChild;)e.removeChild(r);if(typeof a=="function"){var o=a;a=function(){var u=Yl(c);o.call(u)}}var c=$m(e,0,!1,null,null,!1,!1,"",Kf);return e._reactRootContainer=c,e[Mn]=c.current,Mi(e.nodeType===8?e.parentNode:e),gr(function(){Ac(t,c,n,a)}),c}function Tc(e,t,n,a,r){var s=n._reactRootContainer;if(s){var i=s;if(typeof r=="function"){var o=r;r=function(){var c=Yl(i);o.call(c)}}Ac(t,i,e,r)}else i=e1(n,t,e,r,a);return Yl(i)}Jy=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=hi(t.pendingLanes);n!==0&&(dm(t,n|1),xt(t,Be()),!(ue&6)&&(Ns=Be()+500,za()))}break;case 13:gr(function(){var a=Fn(e,1);if(a!==null){var r=dt();cn(a,e,1,r)}}),Wm(e,1)}};pm=function(e){if(e.tag===13){var t=Fn(e,134217728);if(t!==null){var n=dt();cn(t,e,134217728,n)}Wm(e,134217728)}};Qy=function(e){if(e.tag===13){var t=Ea(e),n=Fn(e,t);if(n!==null){var a=dt();cn(n,e,t,a)}Wm(e,t)}};Xy=function(){return ge};Zy=function(e,t){var n=ge;try{return ge=e,t()}finally{ge=n}};Td=function(e,t,n){switch(t){case"input":if(xd(e,n),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var r=yc(a);if(!r)throw Error(B(90));Iy(a),xd(a,r)}}}break;case"textarea":_y(e,n);break;case"select":t=n.value,t!=null&&ls(e,!!n.multiple,t,!1)}};qy=qm;My=gr;var t1={usingClientEntryPoint:!1,Events:[bo,es,yc,By,Dy,qm]},ii={findFiberByHostInstance:Za,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},n1={bundleType:ii.bundleType,version:ii.version,rendererPackageName:ii.rendererPackageName,rendererConfig:ii.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Vn.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=$y(e),e===null?null:e.stateNode},findFiberByHostInstance:ii.findFiberByHostInstance||ZA,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};
41if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Uo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Uo.isDisabled&&Uo.supportsFiber)try{hc=Uo.inject(n1),An=Uo}catch{}}Rt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=t1;Rt.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Hm(t))throw Error(B(200));return XA(e,t,null,n)};Rt.createRoot=function(e,t){if(!Hm(e))throw Error(B(299));var n=!1,a="",r=xw;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=$m(e,1,!1,null,null,n,!1,a,r),e[Mn]=t.current,Mi(e.nodeType===8?e.parentNode:e),new Vm(t)};Rt.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(B(188)):(e=Object.keys(e).join(","),Error(B(268,e)));return e=$y(t),e=e===null?null:e.stateNode,e};Rt.flushSync=function(e){return gr(e)};Rt.hydrate=function(e,t,n){if(!Cc(t))throw Error(B(200));return Tc(null,e,t,!0,n)};Rt.hydrateRoot=function(e,t,n){if(!Hm(e))throw Error(B(405));var a=n!=null&&n.hydratedSources||null,r=!1,s="",i=xw;if(n!=null&&(n.unstable_strictMode===!0&&(r=!0),n.identifierPrefix!==void 0&&(s=n.identifierPrefix),n.onRecoverableError!==void 0&&(i=n.onRecoverableError)),t=ww(t,null,e,1,n??null,r,!1,s,i),e[Mn]=t.current,Mi(e),a)for(e=0;e<a.length;e++)n=a[e],r=n._getVersion,r=r(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,r]:t.mutableSourceEagerHydrationData.push(n,r);return new Ec(t)};Rt.render=function(e,t,n){if(!Cc(t))throw Error(B(200));return Tc(null,e,t,!1,n)};Rt.unmountComponentAtNode=function(e){if(!Cc(e))throw Error(B(40));return e._reactRootContainer?(gr(function(){Tc(null,null,e,!1,function(){e._reactRootContainer=null,e[Mn]=null})}),!0):!1};Rt.unstable_batchedUpdates=qm;Rt.unstable_renderSubtreeIntoContainer=function(e,t,n,a){if(!Cc(n))throw Error(B(200));if(e==null||e._reactInternals===void 0)throw Error(B(38));return Tc(e,t,n,!1,a)};Rt.version="18.3.1-next-f1338f8080-20240426";function kw(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(kw)}catch(e){console.error(e)}}kw(),ky.exports=Rt;var Er=ky.exports;const Sw=fo(Er);var Pw,Yf=Er;Pw=Yf.createRoot,Yf.hydrateRoot;const a1="modulepreload",r1=function(e){return"/"+e},Jf={},V=function(t,n,a){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=r1(c),c in Jf)return;Jf[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":a1,u||(p.as="script"),p.crossOrigin="",p.href=c,o&&p.setAttribute("nonce",o),document.head.appendChild(p),u)return new Promise((h,m)=>{p.addEventListener("load",h),p.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(i){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i}return r.then(i=>{for(const o of i||[])o.status==="rejected"&&s(o.reason);return t().catch(s)})},s1=1,i1=1e6;let _u=0;function o1(){return _u=(_u+1)%Number.MAX_SAFE_INTEGER,_u.toString()}const Ou=new Map,Qf=e=>{if(Ou.has(e))return;const t=setTimeout(()=>{Ou.delete(e),Ci({type:"REMOVE_TOAST",toastId:e})},i1);Ou.set(e,t)},l1=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,s1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(n=>n.id===t.toast.id?{...n,...t.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=t;return n?Qf(n):e.toasts.forEach(a=>{Qf(a.id)}),{...e,toasts:e.toasts.map(a=>a.id===n||n===void 0?{...a,open:!1}:a)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==t.toastId)}}},yl=[];let bl={toasts:[]};function Ci(e){bl=l1(bl,e),yl.forEach(t=>{t(bl)})}function c1({...e}){const t=o1(),n=r=>Ci({type:"UPDATE_TOAST",toast:{...r,id:t}}),a=()=>Ci({type:"DISMISS_TOAST",toastId:t});return Ci({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:r=>{r||a()}}}),{id:t,dismiss:a,update:n}}function u1(){const[e,t]=v.useState(bl);return v.useEffect(()=>(yl.push(t),()=>{const n=yl.indexOf(t);n>-1&&yl.splice(n,1)}),[e]),{...e,toast:c1,dismiss:n=>Ci({type:"DISMISS_TOAST",toastId:n})}}function se(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e==null||e(r),n===!1||!r.defaultPrevented)return t==null?void 0:t(r)}}function Xf(e,t){if(typeof e=="function")return e(t);
vendor: 13,052 bytes, line 41
41e!=null&&(e.current=t)}function Aw(...e){return t=>{let n=!1;const a=e.map(r=>{const s=Xf(r,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let r=0;r<a.length;r++){const s=a[r];typeof s=="function"?s():Xf(e[r],null)}}}}function Ce(...e){return v.useCallback(Aw(...e),e)}function FM(e,t){const n=v.createContext(t),a=s=>{const{children:i,...o}=s,c=v.useMemo(()=>o,Object.values(o));return l.jsx(n.Provider,{value:c,children:i})};a.displayName=e+"Provider";function r(s){const i=v.useContext(n);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${s}\` must be used within \`${e}\``)}return[a,r]}function Cr(e,t=[]){let n=[];function a(s,i){const o=v.createContext(i),c=n.length;n=[...n,i];const u=p=>{var b;const{scope:h,children:m,...w}=p,f=((b=h==null?void 0:h[e])==null?void 0:b[c])||o,x=v.useMemo(()=>w,Object.values(w));return l.jsx(f.Provider,{value:x,children:m})};u.displayName=s+"Provider";function d(p,h){var f;const m=((f=h==null?void 0:h[e])==null?void 0:f[c])||o,w=v.useContext(m);if(w)return w;if(i!==void 0)return i;throw new Error(`\`${p}\` must be used within \`${s}\``)}return[u,d]}const r=()=>{const s=n.map(i=>v.createContext(i));return function(o){const c=(o==null?void 0:o[e])||s;return v.useMemo(()=>({[`__scope${e}`]:{...o,[e]:c}}),[o,c])}};return r.scopeName=e,[a,d1(r,...t)]}function d1(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const a=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const i=a.reduce((o,{useScope:c,scopeName:u})=>{const p=c(s)[`__scope${u}`];return{...o,...p}},{});return v.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function Yi(e){const t=m1(e),n=v.forwardRef((a,r)=>{const{children:s,...i}=a,o=v.Children.toArray(s),c=o.find(f1);if(c){const u=c.props.children,d=o.map(p=>p===c?v.Children.count(u)>1?v.Children.only(null):v.isValidElement(u)?u.props.children:null:p);return l.jsx(t,{...i,ref:r,children:v.isValidElement(u)?v.cloneElement(u,void 0,d):null})}return l.jsx(t,{...i,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}var p1=Yi("Slot");function m1(e){const t=v.forwardRef((n,a)=>{const{children:r,...s}=n;if(v.isValidElement(r)){const i=v1(r),o=g1(s,r.props);return r.type!==v.Fragment&&(o.ref=a?Aw(a,i):i),v.cloneElement(r,o)}return v.Children.count(r)>1?v.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ew=Symbol("radix.slottable");function h1(e){const t=({children:n})=>l.jsx(l.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=Ew,t}function f1(e){return v.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ew}function g1(e,t){const n={...t};for(const a in t){const r=e[a],s=t[a];/^on[A-Z]/.test(a)?r&&s?n[a]=(...o)=>{const c=s(...o);return r(...o),c}:r&&(n[a]=r):a==="style"?n[a]={...r,...s}:a==="className"&&(n[a]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function v1(e){var a,r;let t=(a=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:a.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Gm(e){const t=e+"CollectionProvider",[n,a]=Cr(t),[r,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),i=f=>{const{scope:x,children:b}=f,g=O.useRef(null),y=O.useRef(new Map).current;return l.jsx(r,{scope:x,itemMap:y,collectionRef:g,children:b})};i.displayName=t;const o=e+"CollectionSlot",c=Yi(o),u=O.forwardRef((f,x)=>{const{scope:b,children:g}=f,y=s(o,b),k=Ce(x,y.collectionRef);return l.jsx(c,{ref:k,children:g})});u.displayName=o;const d=e+"CollectionItemSlot",p="data-radix-collection-item",h=Yi(d),m=O.forwardRef((f,x)=>{const{scope:b,children:g,...y}=f,k=O.useRef(null),P=Ce(x,k),E=s(d,b);return O.useEffect(()=>(E.itemMap.set(k,{ref:k,...y}),()=>void E.itemMap.delete(k))),l.jsx(h,{[p]:"",ref:P,children:g})});m.displayName=d;function w(f){const x=s(e+"CollectionConsumer",f);return O.useCallback(()=>{const g=x.collectionRef.current;if(!g)return[];const y=Array.from(g.querySelectorAll(`[${p}]`));return Array.from(x.itemMap.values()).sort((E,S)=>y.indexOf(E.ref.current)-y.indexOf(S.ref.current))},[x.collectionRef,x.itemMap])}return[{Provider:i,Slot:u,ItemSlot:m},w,a]}var y1=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],de=y1.reduce((e,t)=>{const n=Yi(`Primitive.${t}`),a=v.forwardRef((r,s)=>{const{asChild:i,...o}=r,c=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(c,{...o,ref:s})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{});function Cw(e,t){e&&Er.flushSync(()=>e.dispatchEvent(t))}function dn(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e}),v.useMemo(()=>(...n)=>{var a;return(a=t.current)==null?void 0:a.call(t,...n)},[])}function b1(e,t=globalThis==null?void 0:globalThis.document){const n=dn(e);v.useEffect(()=>{const a=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",a,{capture:!0}),()=>t.removeEventListener("keydown",a,{capture:!0})},[n,t])}var w1="DismissableLayer",op="dismissableLayer.update",x1="dismissableLayer.pointerDownOutside",k1="dismissableLayer.focusOutside",Zf,Tw=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),jc=v.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:a,onPointerDownOutside:r,onFocusOutside:s,onInteractOutside:i,onDismiss:o,...c}=e,u=v.useContext(Tw),[d,p]=v.useState(null),h=(d==null?void 0:d.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,m]=v.useState({}),w=Ce(t,S=>p(S)),f=Array.from(u.layers),[x]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),b=f.indexOf(x),g=d?f.indexOf(d):-1,y=u.layersWithOutsidePointerEventsDisabled.size>0,k=g>=b,P=P1(S=>{const A=S.target,T=[...u.branches].some(j=>j.contains(A));!k||T||(r==null||r(S),i==null||i(S),S.defaultPrevented||o==null||o())},h),E=A1(S=>{const A=S.target;[...u.branches].some(j=>j.contains(A))||(s==null||s(S),i==null||i(S),S.defaultPrevented||o==null||o())},h);return b1(S=>{g===u.layers.size-1&&(a==null||a(S),!S.defaultPrevented&&o&&(S.preventDefault(),o()))},h),v.useEffect(()=>{if(d)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(Zf=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),eg(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=Zf)}},[d,h,n,u]),v.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),eg())},[d,u]),v.useEffect(()=>{const S=()=>m({});return document.addEventListener(op,S),()=>document.removeEventListener(op,S)},[]),l.jsx(de.div,{...c,ref:w,style:{pointerEvents:y?k?"auto":"none":void 0,...e.style},onFocusCapture:se(e.onFocusCapture,E.onFocusCapture),onBlurCapture:se(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:se(e.onPointerDownCapture,P.onPointerDownCapture)})});jc.displayName=w1;var S1="DismissableLayerBranch",jw=v.forwardRef((e,t)=>{const n=v.useContext(Tw),a=v.useRef(null),r=Ce(t,a);return v.useEffect(()=>{const s=a.current;if(s)return n.branches.add(s),()=>{n.branches.delete(s)}},[n.branches]),l.jsx(de.div,{...e,ref:r})});jw.displayName=S1;function P1(e,t=globalThis==null?void 0:globalThis.document){const n=dn(e),a=v.useRef(!1),r=v.useRef(()=>{});return v.useEffect(()=>{const s=o=>{if(o.target&&!a.current){let c=function(){Iw(x1,n,u,{discrete:!0})};const u={originalEvent:o};o.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=c,t.addEventListener("click",r.current,{once:!0})):c()}else t.removeEventListener("click",r.current);a.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",s)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",s),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>a.current=!0}}function A1(e,t=globalThis==null?void 0:globalThis.document){const n=dn(e),a=v.useRef(!1);return v.useEffect(()=>{const r=s=>{s.target&&!a.current&&Iw(k1,n,{originalEvent:s},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>a.current=!0,onBlurCapture:()=>a.current=!1}}function eg(){const e=new CustomEvent(op);document.dispatchEvent(e)}function Iw(e,t,n,{discrete:a}){const r=n.originalEvent.target,s=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),a?Cw(r,s):r.dispatchEvent(s)}var E1=jc,C1=jw,Ke=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},T1="Portal",Km=v.forwardRef((e,t)=>{var o;const{container:n,...a}=e,[r,s]=v.useState(!1);Ke(()=>s(!0),[]);const i=n||r&&((o=globalThis==null?void 0:globalThis.document)==null?void 0:o.body);return i?Sw.createPortal(l.jsx(de.div,{...a,ref:t}),i):null});Km.displayName=T1;function j1(e,t){return v.useReducer((n,a)=>t[n][a]??n,e)}var Ic=e=>{const{present:t,children:n}=e,a=I1(t),r=typeof n=="function"?n({present:a.isPresent}):v.Children.only(n),s=Ce(a.ref,R1(r));return typeof n=="function"||a.isPresent?v.cloneElement(r,{ref:s}):null};Ic.displayName="Presence";function I1(e){const[t,n]=v.useState(),a=v.useRef(null),r=v.useRef(e),s=v.useRef("none"),i=e?"mounted":"unmounted",[o,c]=j1(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=$o(a.current);s.current=o==="mounted"?u:"none"},[o]),Ke(()=>{const u=a.current,d=r.current;if(d!==e){const h=s.current,m=$o(u);e?c("MOUNT"):m==="none"||(u==null?void 0:u.display)==="none"?c("UNMOUNT"):c(d&&h!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,c]),Ke(()=>{if(t){let u;const d=t.ownerDocument.defaultView??window,p=m=>{const f=$o(a.current).includes(m.animationName);if(m.target===t&&f&&(c("ANIMATION_END"),!r.current)){const x=t.style.animationFillMode;t.style.animationFillMode="forwards",u=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=x)})}},h=m=>{m.target===t&&(s.current=$o(a.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{d.clearTimeout(u),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else c("ANIMATION_END")},[t,c]),{isPresent:["mounted","unmountSuspended"].includes(o),ref:v.useCallback(u=>{a.current=u?getComputedStyle(u):null,n(u)},[])}}function $o(e){return(e==null?void 0:e.animationName)||"none"}function R1(e){var a,r;let t=(a=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:a.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var _1=nm[" useInsertionEffect ".trim().toString()]||Ke;function vr({prop:e,defaultProp:t,onChange:n=()=>{},caller:a}){const[r,s,i]=O1({defaultProp:t,onChange:n}),o=e!==void 0,c=o?e:r;{const d=v.useRef(e!==void 0);v.useEffect(()=>{const p=d.current;p!==o&&console.warn(`${a} is changing from ${p?"controlled":"uncontrolled"} to ${o?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=o},[o,a])}const u=v.useCallback(d=>{var p;if(o){const h=N1(d)?d(e):d;h!==e&&((p=i.current)==null||p.call(i,h))}else s(d)},[o,e,s,i]);return[c,u]}function O1({defaultProp:e,onChange:t}){const[n,a]=v.useState(e),r=v.useRef(n),s=v.useRef(t);return _1(()=>{s.current=t},[t]),v.useEffect(()=>{var i;r.current!==n&&((i=s.current)==null||i.call(s,n),r.current=n)},[n,r]),[n,a,s]}function N1(e){return typeof e=="function"}var Rw=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),L1="VisuallyHidden",Rc=v.forwardRef((e,t)=>l.jsx(de.span,{...e,ref:t,style:{...Rw,...e.style}}));Rc.displayName=L1;var z1=Rc,Ym="ToastProvider",[Jm,B1,D1]=Gm("Toast"),[_w,UM]=Cr("Toast",[D1]),[q1,_c]=_w(Ym),Ow=e=>{const{__scopeToast:t,label:n="Notification",duration:a=5e3,swipeDirection:r="right",swipeThreshold:s=50,children:i}=e,[o,c]=v.useState(null),[u,d]=v.useState(0),p=v.useRef(!1),h=v.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${Ym}\`. Expected non-empty \`string\`.`),l.jsx(Jm.Provider,{scope:t,children:l.jsx(q1,{scope:t,label:n,duration:a,swipeDirection:r,swipeThreshold:s,toastCount:u,viewport:o,onViewportChange:c,onToastAdd:v.useCallback(()=>d(m=>m+1),[]),onToastRemove:v.useCallback(()=>d(m=>m-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:h,children:i})})};Ow.displayName=Ym;var Nw="ToastViewport",M1=["F8"],lp="toast.viewportPause",cp="toast.viewportResume",Lw=v.forwardRef((e,t)=>
41{const{__scopeToast:n,hotkey:a=M1,label:r="Notifications ({hotkey})",...s}=e,i=_c(Nw,n),o=B1(n),c=v.useRef(null),u=v.useRef(null),d=v.useRef(null),p=v.useRef(null),h=Ce(t,p,i.onViewportChange),m=a.join("+").replace(/Key/g,"").replace(/Digit/g,""),w=i.toastCount>0;v.useEffect(()=>{const x=b=>{var y;a.length!==0&&a.every(k=>b[k]||b.code===k)&&((y=p.current)==null||y.focus())};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[a]),v.useEffect(()=>{const x=c.current,b=p.current;if(w&&x&&b){const g=()=>{if(!i.isClosePausedRef.current){const E=new CustomEvent(lp);b.dispatchEvent(E),i.isClosePausedRef.current=!0}},y=()=>{if(i.isClosePausedRef.current){const E=new CustomEvent(cp);b.dispatchEvent(E),i.isClosePausedRef.current=!1}},k=E=>{!x.contains(E.relatedTarget)&&y()},P=()=>{x.contains(document.activeElement)||y()};return x.addEventListener("focusin",g),x.addEventListener("focusout",k),x.addEventListener("pointermove",g),x.addEventListener("pointerleave",P),window.addEventListener("blur",g),window.addEventListener("focus",y),()=>{x.removeEventListener("focusin",g),x.removeEventListener("focusout",k),x.removeEventListener("pointermove",g),x.removeEventListener("pointerleave",P),window.removeEventListener("blur",g),window.removeEventListener("focus",y)}}},[w,i.isClosePausedRef]);const f=v.useCallback(({tabbingDirection:x})=>{const g=o().map(y=>{const k=y.ref.current,P=[k,...Z1(k)];return x==="forwards"?P:P.reverse()});return(x==="forwards"?g.reverse():g).flat()},[o]);return v.useEffect(()=>{const x=p.current;if(x){const b=g=>{var P,E,S;const y=g.altKey||g.ctrlKey||g.metaKey;if(g.key==="Tab"&&!y){const A=document.activeElement,T=g.shiftKey;if(g.target===x&&T){(P=u.current)==null||P.focus();return}const z=f({tabbingDirection:T?"backwards":"forwards"}),_=z.findIndex(N=>N===A);Nu(z.slice(_+1))?g.preventDefault():T?(E=u.current)==null||E.focus():(S=d.current)==null||S.focus()}};return x.addEventListener("keydown",b),()=>x.removeEventListener("keydown",b)}},[o,f]),l.jsxs(C1,{ref:c,role:"region","aria-label":r.replace("{hotkey}",m),tabIndex:-1,style:{pointerEvents:w?void 0:"none"},children:[w&&l.jsx(up,{ref:u,onFocusFromOutsideViewport:()=>{const x=f({tabbingDirection:"forwards"});Nu(x)}}),l.jsx(Jm.Slot,{scope:n,children:l.jsx(de.ol,{tabIndex:-1,...s,ref:h})}),w&&l.jsx(up,{ref:d,onFocusFromOutsideViewport:()=>{const x=f({tabbingDirection:"backwards"});Nu(x)}})]})});Lw.displayName=Nw;var zw="ToastFocusProxy",up=v.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:a,...r}=e,s=_c(zw,n);return l.jsx(Rc,{"aria-hidden":!0,tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:i=>{var u;const o=i.relatedTarget;!((u=s.viewport)!=null&&u.contains(o))&&a()}})});up.displayName=zw;var xo="Toast",F1="toast.swipeStart",U1="toast.swipeMove",$1="toast.swipeCancel",W1="toast.swipeEnd",Bw=v.forwardRef((e,t)=>{const{forceMount:n,open:a,defaultOpen:r,onOpenChange:s,...i}=e,[o,c]=vr({prop:a,defaultProp:r??!0,onChange:s,caller:xo});return l.jsx(Ic,{present:n||o,children:l.jsx(G1,{open:o,...i,ref:t,onClose:()=>c(!1),onPause:dn(e.onPause),onResume:dn(e.onResume),onSwipeStart:se(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:se(e.onSwipeMove,u=>{const{x:d,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${d}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:se(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:se(e.onSwipeEnd,u=>{const{x:d,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${d}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),c(!1)})})})});Bw.displayName=xo;var[V1,H1]=_w(xo,{onClose(){}}),G1=v.forwardRef((e,t)=>
41{const{__scopeToast:n,type:a="foreground",duration:r,open:s,onClose:i,onEscapeKeyDown:o,onPause:c,onResume:u,onSwipeStart:d,onSwipeMove:p,onSwipeCancel:h,onSwipeEnd:m,...w}=e,f=_c(xo,n),[x,b]=v.useState(null),g=Ce(t,N=>b(N)),y=v.useRef(null),k=v.useRef(null),P=r||f.duration,E=v.useRef(0),S=v.useRef(P),A=v.useRef(0),{onToastAdd:T,onToastRemove:j}=f,D=dn(()=>{var $;(x==null?void 0:x.contains(document.activeElement))&&(($=f.viewport)==null||$.focus()),i()}),z=v.useCallback(N=>{!N||N===1/0||(window.clearTimeout(A.current),E.current=new Date().getTime(),A.current=window.setTimeout(D,N))},[D]);v.useEffect(()=>{const N=f.viewport;if(N){const $=()=>{z(S.current),u==null||u()},F=()=>{const M=new Date().getTime()-E.current;S.current=S.current-M,window.clearTimeout(A.current),c==null||c()};return N.addEventListener(lp,F),N.addEventListener(cp,$),()=>{N.removeEventListener(lp,F),N.removeEventListener(cp,$)}}},[f.viewport,P,c,u,z]),v.useEffect(()=>{s&&!f.isClosePausedRef.current&&z(P)},[s,P,f.isClosePausedRef,z]),v.useEffect(()=>(T(),()=>j()),[T,j]);const _=v.useMemo(()=>x?Ww(x):null,[x]);return f.viewport?l.jsxs(l.Fragment,{children:[_&&l.jsx(K1,{__scopeToast:n,role:"status","aria-live":a==="foreground"?"assertive":"polite","aria-atomic":!0,children:_}),l.jsx(V1,{scope:n,onClose:D,children:Er.createPortal(l.jsx(Jm.ItemSlot,{scope:n,children:l.jsx(E1,{asChild:!0,onEscapeKeyDown:se(o,()=>{f.isFocusedToastEscapeKeyDownRef.current||D(),f.isFocusedToastEscapeKeyDownRef.current=!1}),children:l.jsx(de.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":s?"open":"closed","data-swipe-direction":f.swipeDirection,...w,ref:g,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:se(e.onKeyDown,N=>{N.key==="Escape"&&(o==null||o(N.nativeEvent),N.nativeEvent.defaultPrevented||(f.isFocusedToastEscapeKeyDownRef.current=!0,D()))}),onPointerDown:se(e.onPointerDown,N=>{N.button===0&&(y.current={x:N.clientX,y:N.clientY})}),onPointerMove:se(e.onPointerMove,N=>{if(!y.current)return;const $=N.clientX-y.current.x,F=N.clientY-y.current.y,M=!!k.current,C=["left","right"].includes(f.swipeDirection),I=["left","up"].includes(f.swipeDirection)?Math.min:Math.max,q=C?I(0,$):0,W=C?0:I(0,F),G=N.pointerType==="touch"?10:2,Q={x:q,y:W},X={originalEvent:N,delta:Q};M?(k.current=Q,Wo(U1,p,X,{discrete:!1})):tg(Q,f.swipeDirection,G)?(k.current=Q,Wo(F1,d,X,{discrete:!1}),N.target.setPointerCapture(N.pointerId)):(Math.abs($)>G||Math.abs(F)>G)&&(y.current=null)}),onPointerUp:se(e.onPointerUp,N=>{const $=k.current,F=N.target;if(F.hasPointerCapture(N.pointerId)&&F.releasePointerCapture(N.pointerId),k.current=null,y.current=null,$){const M=N.currentTarget,C={originalEvent:N,delta:$};tg($,f.swipeDirection,f.swipeThreshold)?Wo(W1,m,C,{discrete:!0}):Wo($1,h,C,{discrete:!0}),M.addEventListener("click",I=>I.preventDefault(),{once:!0})}})})})}),f.viewport)})]}):null}),K1=e=>{const{__scopeToast:t,children:n,...a}=e,r=_c(xo,t),[s,i]=v.useState(!1),[o,c]=v.useState(!1);return Q1(()=>i(!0)),v.useEffect(()=>{const u=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(u)},[]),o?null:l.jsx(Km,{asChild:!0,children:l.jsx(Rc,{...a,children:s&&l.jsxs(l.Fragment,{children:[r.label," ",n]})})})},Y1="ToastTitle",Dw=v.forwardRef((e,t)=>{const{__scopeToast:n,...a}=e;return l.jsx(de.div,{...a,ref:t})});Dw.displayName=Y1;var J1="ToastDescription",qw=v.forwardRef((e,t)=>{const{__scopeToast:n,...a}=e;return l.jsx(de.div,{...a,ref:t})});qw.displayName=J1;var Mw="ToastAction",Fw=v.forwardRef((e,t)=>{const{altText:n,...a}=e;return n.trim()?l.jsx($w,{altText:n,asChild:!0,children:l.jsx(Qm,{...a,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${Mw}\`. Expected non-empty \`string\`.`),null)});Fw.displayName=Mw;var Uw="ToastClose",Qm=v.forwardRef((e,t)=>{const{__scopeToast:n,...a}=e,r=H1(Uw,n);return l.jsx($w,{asChild:!0,children:l.jsx(de.button,{type:"button",...a,ref:t,onClick:se(e.onClick,r.onClose)})})});Qm.displayName=Uw;var $w=v.forwardRef((e,t)=>{const{__scopeToast:n,altText:a,...r}=e;return l.jsx(de.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":a||void 0,...r,ref:t})});function Ww(e){const t=[];
vendor: 6,971 bytes, lines 41-101
41return Array.from(e.childNodes).forEach(a=>{if(a.nodeType===a.TEXT_NODE&&a.textContent&&t.push(a.textContent),X1(a)){const r=a.ariaHidden||a.hidden||a.style.display==="none",s=a.dataset.radixToastAnnounceExclude==="";if(!r)if(s){const i=a.dataset.radixToastAnnounceAlt;i&&t.push(i)}else t.push(...Ww(a))}}),t}function Wo(e,t,n,{discrete:a}){const r=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),a?Cw(r,s):r.dispatchEvent(s)}var tg=(e,t,n=0)=>{const a=Math.abs(e.x),r=Math.abs(e.y),s=a>r;return t==="left"||t==="right"?s&&a>n:!s&&r>n};function Q1(e=()=>{}){const t=dn(e);Ke(()=>{let n=0,a=0;return n=window.requestAnimationFrame(()=>a=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(a)}},[t])}function X1(e){return e.nodeType===e.ELEMENT_NODE}function Z1(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const r=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||r?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Nu(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}var eE=Ow,Vw=Lw,Hw=Bw,Gw=Dw,Kw=qw,Yw=Fw,Jw=Qm;function Qw(e){var t,n,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Qw(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function Xw(){for(var e,t,n=0,a="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Qw(e))&&(a&&(a+=" "),a+=t);return a}const ng=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,ag=Xw,Zw=(e,t)=>n=>{var a;if((t==null?void 0:t.variants)==null)return ag(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:r,defaultVariants:s}=t,i=Object.keys(r).map(u=>{const d=n==null?void 0:n[u],p=s==null?void 0:s[u];if(d===null)return null;const h=ng(d)||ng(p);return r[u][h]}),o=n&&Object.entries(n).reduce((u,d)=>{let[p,h]=d;return h===void 0||(u[p]=h),u},{}),c=t==null||(a=t.compoundVariants)===null||a===void 0?void 0:a.reduce((u,d)=>{let{class:p,className:h,...m}=d;return Object.entries(m).every(w=>{let[f,x]=w;return Array.isArray(x)?x.includes({...s,...o}[f]):{...s,...o}[f]===x})?[...u,p,h]:u},[]);return ag(e,i,c,n==null?void 0:n.class,n==null?void 0:n.className)};/**
42 * @license lucide-react v0.462.0 - ISC
43 *
44 * This source code is licensed under the ISC license.
45 * See the LICENSE file in the root directory of this source tree.
46 */const tE=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ex=(...e)=>e.filter((t,n,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===n).join(" ").trim();/**
47 * @license lucide-react v0.462.0 - ISC
48 *
49 * This source code is licensed under the ISC license.
50 * See the LICENSE file in the root directory of this source tree.
51 */var nE={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
52 * @license lucide-react v0.462.0 - ISC
53 *
54 * This source code is licensed under the ISC license.
55 * See the LICENSE file in the root directory of this source tree.
56 */const aE=v.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:a,className:r="",children:s,iconNode:i,...o},c)=>v.createElement("svg",{ref:c,...nE,width:t,height:t,stroke:e,strokeWidth:a?Number(n)*24/Number(t):n,className:ex("lucide",r),...o},[...i.map(([u,d])=>v.createElement(u,d)),...Array.isArray(s)?s:[s]]));/**
57 * @license lucide-react v0.462.0 - ISC
58 *
59 * This source code is licensed under the ISC license.
60 * See the LICENSE file in the root directory of this source tree.
61 */const ae=(e,t)=>{const n=v.forwardRef(({className:a,...r},s)=>v.createElement(aE,{ref:s,iconNode:t,className:ex(`lucide-${tE(e)}`,a),...r}));return n.displayName=`${e}`,n};/**
62 * @license lucide-react v0.462.0 - ISC
63 *
64 * This source code is licensed under the ISC license.
65 * See the LICENSE file in the root directory of this source tree.
66 */const tx=ae("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
67 * @license lucide-react v0.462.0 - ISC
68 *
69 * This source code is licensed under the ISC license.
70 * See the LICENSE file in the root directory of this source tree.
71 */const ot=ae("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
72 * @license lucide-react v0.462.0 - ISC
73 *
74 * This source code is licensed under the ISC license.
75 * See the LICENSE file in the root directory of this source tree.
76 */const rE=ae("Banknote",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M6 12h.01M18 12h.01",key:"113zkx"}]]);/**
77 * @license lucide-react v0.462.0 - ISC
78 *
79 * This source code is licensed under the ISC license.
80 * See the LICENSE file in the root directory of this source tree.
81 */const nx=ae("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/**
82 * @license lucide-react v0.462.0 - ISC
83 *
84 * This source code is licensed under the ISC license.
85 * See the LICENSE file in the root directory of this source tree.
86 */const sE=ae("Briefcase",[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);/**
87 * @license lucide-react v0.462.0 - ISC
88 *
89 * This source code is licensed under the ISC license.
90 * See the LICENSE file in the root directory of this source tree.
91 */const iE=ae("Building",[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["path",{d:"M9 22v-4h6v4",key:"r93iot"}],["path",{d:"M8 6h.01",key:"1dz90k"}],["path",{d:"M16 6h.01",key:"1x0f13"}],["path",{d:"M12 6h.01",key:"1vi96p"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M8 14h.01",key:"6423bh"}]]);/**
92 * @license lucide-react v0.462.0 - ISC
93 *
94 * This source code is licensed under the ISC license.
95 * See the LICENSE file in the root directory of this source tree.
96 */const Xm=ae("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/**
97 * @license lucide-react v0.462.0 - ISC
98 *
99 * This source code is licensed under the ISC license.
100 * See the LICENSE file in the root directory of this source tree.
101 */const rg=ae("ChartNoAxesColumnIncreasing",[["line",{x1:"12",x2:"12",y1:"20",y2:"10",key:"1vz5eb"}],["line",{x1:"18",x2:"18",y1:"20",y2:"4",key:"cun8e5"}
101],["line",{x1:"6",x2:"6",y1:"20",y2:"16",key:"hq0ia6"}]]);/**
102 * @license lucide-react v0.462.0 - ISC
103 *
104 * This source code is licensed under the ISC license.
105 * See the LICENSE file in the root directory of this source tree.
106 */const ax=ae("ChartPie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);/**
107 * @license lucide-react v0.462.0 - ISC
108 *
109 * This source code is licensed under the ISC license.
110 * See the LICENSE file in the root directory of this source tree.
111 */const Jl=ae("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
112 * @license lucide-react v0.462.0 - ISC
113 *
114 * This source code is licensed under the ISC license.
115 * See the LICENSE file in the root directory of this source tree.
116 */const Zm=ae("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
117 * @license lucide-react v0.462.0 - ISC
118 *
119 * This source code is licensed under the ISC license.
120 * See the LICENSE file in the root directory of this source tree.
121 */const oE=ae("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
122 * @license lucide-react v0.462.0 - ISC
123 *
124 * This source code is licensed under the ISC license.
125 * See the LICENSE file in the root directory of this source tree.
126 */const sg=ae("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
127 * @license lucide-react v0.462.0 - ISC
128 *
129 * This source code is licensed under the ISC license.
130 * See the LICENSE file in the root directory of this source tree.
131 */const rx=ae("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/**
132 * @license lucide-react v0.462.0 - ISC
133 *
134 * This source code is licensed under the ISC license.
135 * See the LICENSE file in the root directory of this source tree.
136 */const ig=ae("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
137 * @license lucide-react v0.462.0 - ISC
138 *
139 * This source code is licensed under the ISC license.
140 * See the LICENSE file in the root directory of this source tree.
141 */const lE=ae("Earth",[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
142 * @license lucide-react v0.462.0 - ISC
143 *
144 * This source code is licensed under the ISC license.
145 * See the LICENSE file in the root directory of this source tree.
146 */const cE=ae("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
147 * @license lucide-react v0.462.0 - ISC
148 *
149 * This source code is licensed under the ISC license.
150 * See the LICENSE file in the root directory of this source tree.
151 */const kn=ae("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/**
152 * @license lucide-react v0.462.0 - ISC
153 *
154 * This source code is licensed under the ISC license.
155 * See the LICENSE file in the root directory of this source tree.
156 */const uE=ae("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);/**
157 * @license lucide-react v0.462.0 - ISC
158 *
159 * This source code is licensed under the ISC license.
160 * See the LICENSE file in the root directory of this source tree.
161 */const dE=ae("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/**
162 * @license lucide-react v0.462.0 - ISC
163 *
164 * This source code is licensed under the ISC license.
165 * See the LICENSE file in the root directory of this source tree.
166 */const Ql=ae("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/**
167 * @license lucide-react v0.462.0 - ISC
168 *
169 * This source code is licensed under the ISC license.
170 * See the LICENSE file in the root directory of this source tree.
171 */const sx=ae("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/**
172 * @license lucide-react v0.462.0 - ISC
173 *
174 * This source code is licensed under the ISC license.
175 * See the LICENSE file in the root directory of this source tree.
176 */const ix=ae("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
177 * @license lucide-react v0.462.0 - ISC
178 *
179 * This source code is licensed under the ISC license.
180 * See the LICENSE file in the root directory of this source tree.
181 */const pE=ae("Megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]);/**
182 * @license lucide-react v0.462.0 - ISC
183 *
184 * This source code is licensed under the ISC license.
185 * See the LICENSE file in the root directory of this source tree.
186 */const mE=ae("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
187 * @license lucide-react v0.462.0 - ISC
188 *
189 * This source code is licensed under the ISC license.
190 * See the LICENSE file in the root directory of this source tree.
191 */const hE=ae("Package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7",key:"yx3hmr"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);/**
192 * @license lucide-react v0.462.0 - ISC
193 *
194 * This source code is licensed under the ISC license.
195 * See the LICENSE file in the root directory of this source tree.
196 */const fE=ae("Percent",[["line",{x1:"19",x2:"5",y1:"5",y2:"19",key:"1x9vlm"}],["circle",{cx:"6.5",cy:"6.5",r:"2.5",key:"4mh3h7"}],["circle",{cx:"17.5",cy:"17.5",r:"2.5",key:"1mdrzq"}]]);/**
197 * @license lucide-react v0.462.0 - ISC
198 *
199 * This source code is licensed under the ISC license.
200 * See the LICENSE file in the root directory of this source tree.
201 */const ox=ae("Quote",[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]]);/**
202 * @license lucide-react v0.462.0 - ISC
203 *
204 * This source code is licensed under the ISC license.
205 * See the LICENSE file in the root directory of this source tree.
206 */const gE=ae("Receipt",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]]);/**
207 * @license lucide-react v0.462.0 - ISC
208 *
209 * This source code is licensed under the ISC license.
210 * See the LICENSE file in the root directory of this source tree.
211 */const vE=ae("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/**
212 * @license lucide-react v0.462.0 - ISC
213 *
214 * This source code is licensed under the ISC license.
215 * See the LICENSE file in the root directory of this source tree.
216 */const yE=ae("Scale",[["path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"7g6ntu"}],["path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"ijws7r"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 3v18",key:"108xh3"}
216],["path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2",key:"3gwbw2"}]]);/**
217 * @license lucide-react v0.462.0 - ISC
218 *
219 * This source code is licensed under the ISC license.
220 * See the LICENSE file in the root directory of this source tree.
221 */const bE=ae("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
222 * @license lucide-react v0.462.0 - ISC
223 *
224 * This source code is licensed under the ISC license.
225 * See the LICENSE file in the root directory of this source tree.
226 */const wE=ae("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
227 * @license lucide-react v0.462.0 - ISC
228 *
229 * This source code is licensed under the ISC license.
230 * See the LICENSE file in the root directory of this source tree.
231 */const lx=ae("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/**
232 * @license lucide-react v0.462.0 - ISC
233 *
234 * This source code is licensed under the ISC license.
235 * See the LICENSE file in the root directory of this source tree.
236 */const Ls=ae("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/**
237 * @license lucide-react v0.462.0 - ISC
238 *
239 * This source code is licensed under the ISC license.
240 * See the LICENSE file in the root directory of this source tree.
241 */const cx=ae("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/**
242 * @license lucide-react v0.462.0 - ISC
243 *
244 * This source code is licensed under the ISC license.
245 * See the LICENSE file in the root directory of this source tree.
246 */const eh=ae("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/**
247 * @license lucide-react v0.462.0 - ISC
248 *
249 * This source code is licensed under the ISC license.
250 * See the LICENSE file in the root directory of this source tree.
251 */const Ji=ae("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/**
252 * @license lucide-react v0.462.0 - ISC
253 *
254 * This source code is licensed under the ISC license.
255 * See the LICENSE file in the root directory of this source tree.
256 */const ux=ae("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
257 * @license lucide-react v0.462.0 - ISC
258 *
259 * This source code is licensed under the ISC license.
260 * See the LICENSE file in the root directory of this source tree.
261 */const xE=ae("Twitter",[["path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z",key:"pff0z6"}]]);/**
262 * @license lucide-react v0.462.0 - ISC
263 *
264 * This source code is licensed under the ISC license.
265 * See the LICENSE file in the root directory of this source tree.
266 */const th=ae("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/**
267 * @license lucide-react v0.462.0 - ISC
268 *
269 * This source code is licensed under the ISC license.
270 * See the LICENSE file in the root directory of this source tree.
271 */const Qi=ae("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
vendor: 6,356 bytes, lines 271-276
271],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
272 * @license lucide-react v0.462.0 - ISC
273 *
274 * This source code is licensed under the ISC license.
275 * See the LICENSE file in the root directory of this source tree.
276 */const kE=ae("Youtube",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]),nh="-",SE=e=>{const t=AE(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:i=>{const o=i.split(nh);return o[0]===""&&o.length!==1&&o.shift(),dx(o,t)||PE(i)},getConflictingClassGroupIds:(i,o)=>{const c=n[i]||[];return o&&a[i]?[...c,...a[i]]:c}}},dx=(e,t)=>{var i;if(e.length===0)return t.classGroupId;const n=e[0],a=t.nextPart.get(n),r=a?dx(e.slice(1),a):void 0;if(r)return r;if(t.validators.length===0)return;const s=e.join(nh);return(i=t.validators.find(({validator:o})=>o(s)))==null?void 0:i.classGroupId},og=/^\[(.+)\]$/,PE=e=>{if(og.test(e)){const t=og.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},AE=e=>{const{theme:t,prefix:n}=e,a={nextPart:new Map,validators:[]};return CE(Object.entries(e.classGroups),n).forEach(([s,i])=>{dp(i,a,s,t)}),a},dp=(e,t,n,a)=>{e.forEach(r=>{if(typeof r=="string"){const s=r===""?t:lg(t,r);s.classGroupId=n;return}if(typeof r=="function"){if(EE(r)){dp(r(a),t,n,a);return}t.validators.push({validator:r,classGroupId:n});return}Object.entries(r).forEach(([s,i])=>{dp(i,lg(t,s),n,a)})})},lg=(e,t)=>{let n=e;return t.split(nh).forEach(a=>{n.nextPart.has(a)||n.nextPart.set(a,{nextPart:new Map,validators:[]}),n=n.nextPart.get(a)}),n},EE=e=>e.isThemeGetter,CE=(e,t)=>t?e.map(([n,a])=>{const r=a.map(s=>typeof s=="string"?t+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([i,o])=>[t+i,o])):s);return[n,r]}):e,TE=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,a=new Map;const r=(s,i)=>{n.set(s,i),t++,t>e&&(t=0,a=n,n=new Map)};return{get(s){let i=n.get(s);if(i!==void 0)return i;if((i=a.get(s))!==void 0)return r(s,i),i},set(s,i){n.has(s)?n.set(s,i):r(s,i)}}},px="!",jE=e=>{const{separator:t,experimentalParseClassName:n}=e,a=t.length===1,r=t[0],s=t.length,i=o=>{const c=[];let u=0,d=0,p;for(let x=0;x<o.length;x++){let b=o[x];if(u===0){if(b===r&&(a||o.slice(x,x+s)===t)){c.push(o.slice(d,x)),d=x+s;continue}if(b==="/"){p=x;continue}}b==="["?u++:b==="]"&&u--}const h=c.length===0?o:o.substring(d),m=h.startsWith(px),w=m?h.substring(1):h,f=p&&p>d?p-d:void 0;return{modifiers:c,hasImportantModifier:m,baseClassName:w,maybePostfixModifierPosition:f}};return n?o=>n({className:o,parseClassName:i}):i},IE=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(a=>{a[0]==="["?(t.push(...n.sort(),a),n=[]):n.push(a)}),t.push(...n.sort()),t},RE=e=>({cache:TE(e.cacheSize),parseClassName:jE(e),...SE(e)}),_E=/\s+/,OE=(e,t)=>{const{parseClassName:n,getClassGroupId:a,getConflictingClassGroupIds:r}=t,s=[],i=e.trim().split(_E);let o="";for(let c=i.length-1;c>=0;c-=1){const u=i[c],{modifiers:d,hasImportantModifier:p,baseClassName:h,maybePostfixModifierPosition:m}=n(u);let w=!!m,f=a(w?h.substring(0,m):h);if(!f){if(!w){o=u+(o.length>0?" "+o:o);continue}if(f=a(h),!f){o=u+(o.length>0?" "+o:o);continue}w=!1}const x=IE(d).join(":"),b=p?x+px:x,g=b+f;if(s.includes(g))continue;s.push(g);const y=r(f,w);for(let k=0;k<y.length;++k){const P=y[k];s.push(b+P)}o=u+(o.length>0?" "+o:o)}return o};function NE(){let e=0,t,n,a="";for(;e<arguments.length;)(t=arguments[e++])&&(n=mx(t))&&(a&&(a+=" "),a+=n);return a}const mx=e=>{if(typeof e=="string")return e;let t,n="";for(let a=0;a<e.length;a++)e[a]&&(t=mx(e[a]))&&(n&&(n+=" "),n+=t);return n};function LE(e,...t){let n,a,r,s=i;function i(c){const u=t.reduce((d,p)=>p(d),e());return n=RE(u),a=n.cache.get,r=n.cache.set,s=o,o(c)}function o(c){const u=a(c);if(u)return u;const d=OE(c,n);return r(c,d),d}return function(){return s(NE.apply(null,arguments))}}const ke=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},hx=/^\[(?:([a-z-]+):)?(.+)\]$/i,zE=/^\d+\/\d+$/,BE=new Set(["px","full","screen"]),DE=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qE=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ME=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,FE=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,UE=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,In=e=>hs(e)||BE.has(e)||zE.test(e),ea=e=>Us(e,"length",JE),hs=e=>!!e&&!Number.isNaN(Number(e)),Lu=e=>Us(e,"number",hs),oi=e=>!!e&&Number.isInteger(Number(e)),$E=e=>e.endsWith("%")&&hs(e.slice(0,-1)),re=e=>hx.test(e),ta=e=>DE.test(e),WE=new Set(["length","size","percentage"]),VE=e=>Us(e,WE,fx),HE=e=>Us(e,"position",fx),GE=new Set(["image","url"]),KE=e=>Us(e,GE,XE),YE=e=>Us(e,"",QE),li=()=>!0,Us=(e,t,n)=>{const a=hx.exec(e);return a?a[1]?typeof t=="string"?a[1]===t:t.has(a[1]):n(a[2]):!1},JE=e=>qE.test(e)&&!ME.test(e),fx=()=>!1,QE=e=>FE.test(e),XE=e=>UE.test(e),ZE=()=>{const e=ke("colors"),t=ke("spacing"),n=ke("blur"),a=ke("brightness"),r=ke("borderColor"),s=ke("borderRadius"),i=ke("borderSpacing"),o=ke("borderWidth"),c=ke("contrast"),u=ke("grayscale"),d=ke("hueRotate"),p=ke("invert"),h=ke("gap"),m=ke("gradientColorStops"),w=ke("gradientColorStopPositions"),f=ke("inset"),x=ke("margin"),b=ke("opacity"),g=ke("padding"),y=ke("saturate"),k=ke("scale"),P=ke("sepia"),E=ke("skew"),S=ke("space"),A=ke("translate"),T=()=>["auto","contain","none"],j=()=>["auto","hidden","clip","visible","scroll"],D=()=>["auto",re,t],z=()=>[re,t],_=()=>["",In,ea],N=()=>["auto",hs,re],$=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],F=()=>["solid","dashed","dotted","double","none"],M=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],C=()=>["start","end","center","between","around","evenly","stretch"],I=()=>["","0",re],q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],W=()=>[hs,re];return{cacheSize:500,separator:":",theme:{colors:[li],spacing:[In,ea],blur:["none","",ta,re],brightness:W(),borderColor:[e],borderRadius:["n
276one","","full",ta,re],borderSpacing:z(),borderWidth:_(),contrast:W(),grayscale:I(),hueRotate:W(),invert:I(),gap:z(),gradientColorStops:[e],gradientColorStopPositions:[$E,ea],inset:D(),margin:D(),opacity:W(),padding:z(),saturate:W(),scale:W(),sepia:I(),skew:W(),space:z(),translate:z()},classGroups:{aspect:[{aspect:["auto","square","video",re]}],container:["container"],columns:[{columns:[ta]}],"break-after":[{"break-after":q()}],"break-before":[{"break-before":q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...$(),re]}],overflow:[{overflow:j()}],"overflow-x":[{"overflow-x":j()}],"overflow-y":[{"overflow-y":j()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[f]}],"inset-x":[{"inset-x":[f]}],"inset-y":[{"inset-y":[f]}],start:[{start:[f]}],end:[{end:[f]}],top:[{top:[f]}],right:[{right:[f]}],bottom:[{bottom:[f]}],left:[{left:[f]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",oi,re]}],basis:[{basis:D()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",re]}],grow:[{grow:I()}],shrink:[{shrink:I()}],order:[{order:["first","last","none",oi,re]}],"grid-cols":[{"grid-cols":[li]}],"col-start-end":[{col:["auto",{span:["full",oi,re]},re]}],"col-start":[{"col-start":N()}],"col-end":[{"col-end":N()}],"grid-rows":[{"grid-rows":[li]}],"row-start-end":[{row:["auto",{span:[oi,re]},re]}],"row-start":[{"row-start":N()}],"row-end":[{"row-end":N()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",re]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",re]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...C()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...C(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...C(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[g]}],px:[{px:[g]}],py:[{py:[g]}],ps:[{ps:[g]}],pe:[{pe:[g]}],pt:[{pt:[g]}],pr:[{pr:[g]}],pb:[{pb:[g]}],pl:[{pl:[g]}],m:[{m:[x]}],mx:[{mx:[x]}],my:[{my:[x]}],ms:[{ms:[x]}],me:[{me:[x]}],mt:[{mt:[x]}],mr:[{mr:[x]}],mb:[{mb:[x]}],ml:[{ml:[x]}],"space-x":[{"space-x":[S]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[S]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",re,t]}],"min-w":[{"min-w":[re,t,"min","max","fit"]}],"max-w":[{"max-w":[re,t,"none","full","min","max","fit","prose",{screen:[ta]},ta]}],h:[{h:[re,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[re,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[re,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[re,t,"auto","min","max","fit"]}],"font-size":[{text:["base",ta,ea]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Lu]}],"font-family":[{font:[li]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",re]}],"line-clamp":[{"line-clamp":["none",hs,Lu]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",In,re]}],"list-image":[{"list-image":["none",re]}],"list-style-type":[{list:["none","disc","decimal",re]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[b]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[b]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...F(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",In,ea]}],"underline-offset":[{"underline-offset":["auto",In,re]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",re]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",re]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[b]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...$(),HE]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",VE]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},KE]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[w]}
vendor: 5,180 bytes, line 276
276],"gradient-via-pos":[{via:[w]}],"gradient-to-pos":[{to:[w]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[o]}],"border-w-x":[{"border-x":[o]}],"border-w-y":[{"border-y":[o]}],"border-w-s":[{"border-s":[o]}],"border-w-e":[{"border-e":[o]}],"border-w-t":[{"border-t":[o]}],"border-w-r":[{"border-r":[o]}],"border-w-b":[{"border-b":[o]}],"border-w-l":[{"border-l":[o]}],"border-opacity":[{"border-opacity":[b]}],"border-style":[{border:[...F(),"hidden"]}],"divide-x":[{"divide-x":[o]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[o]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[b]}],"divide-style":[{divide:F()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...F()]}],"outline-offset":[{"outline-offset":[In,re]}],"outline-w":[{outline:[In,ea]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:_()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[b]}],"ring-offset-w":[{"ring-offset":[In,ea]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",ta,YE]}],"shadow-color":[{shadow:[li]}],opacity:[{opacity:[b]}],"mix-blend":[{"mix-blend":[...M(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":M()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[a]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",ta,re]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[d]}],invert:[{invert:[p]}],saturate:[{saturate:[y]}],sepia:[{sepia:[P]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[a]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[d]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[b]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[P]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",re]}],duration:[{duration:W()}],ease:[{ease:["linear","in","out","in-out",re]}],delay:[{delay:W()}],animate:[{animate:["none","spin","ping","pulse","bounce",re]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[k]}],"scale-x":[{"scale-x":[k]}],"scale-y":[{"scale-y":[k]}],rotate:[{rotate:[oi,re]}],"translate-x":[{"translate-x":[A]}],"translate-y":[{"translate-y":[A]}],"skew-x":[{"skew-x":[E]}],"skew-y":[{"skew-y":[E]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",re]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",re]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}
276],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",re]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[In,ea,Lu]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},eC=LE(ZE);function We(...e){return eC(Xw(e))}const tC=eE,gx=v.forwardRef(({className:e,...t},n)=>l.jsx(Vw,{ref:n,className:We("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));gx.displayName=Vw.displayName;const nC=Zw("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),vx=v.forwardRef(({className:e,variant:t,...n},a)=>l.jsx(Hw,{ref:a,className:We(nC({variant:t}),e),...n}));vx.displayName=Hw.displayName;const aC=v.forwardRef(({className:e,...t},n)=>l.jsx(Yw,{ref:n,className:We("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",e),...t}));aC.displayName=Yw.displayName;const yx=v.forwardRef(({className:e,...t},n)=>l.jsx(Jw,{ref:n,className:We("absolute right-2 top-2 rounded-md p-1 text-foreground
276/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:l.jsx(Qi,{className:"h-4 w-4"})}));yx.displayName=Jw.displayName;const bx=v.forwardRef(({className:e,...t},n)=>l.jsx(Gw,{ref:n,className:We("text-sm font-semibold",e),...t}));bx.displayName=Gw.displayName;const wx=v.forwardRef(({className:e,...t},n)=>l.jsx(Kw,{ref:n,className:We("text-sm opacity-90",e),...t}));wx.displayName=Kw.displayName;function rC(){const{toasts:e}=u1();return l.jsxs(tC,{children:[e.map(function({id:t,title:n,description:a,action:r,...s}){return l.jsxs(vx,{...s,children:[l.jsxs("div",{className:"grid gap-1",children:[n&&l.jsx(bx,{children:n}),a&&l.jsx(wx,{children:a})]}),r,l.jsx(yx,{})]},t)}),l.jsx(gx,{})]})}var cg=["light","dark"],sC="(prefers-color-scheme: dark)",iC=v.createContext(void 0),oC={setTheme:e=>{},themes:[]},lC=()=>{var e;return(e=v.useContext(iC))!=null?e:oC};v.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:a,enableColorScheme:r,defaultTheme:s,value:i,attrs:o,nonce:c})=>{let u=s==="system",d=n==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${o.map(w=>`'${w}'`).join(",")})`};`:`var d=document.documentElement,n='${n}',s='setAttribute';`,p=r?cg.includes(s)&&s?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=(w,f=!1,x=!0)=>{let b=i?i[w]:w,g=f?w+"|| ''":`'${b}'`,y="";return r&&x&&!f&&cg.includes(w)&&(y+=`d.style.colorScheme = '${w}';`),n==="class"?f||b?y+=`c.add(${g})`:y+="null":b&&(y+=`d[s](n,${g})`),y},m=e?`!function(){${d}${h(e)}}()`:a?`!function(){try{${d}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${u})){var t='${sC}',m=window.matchMedia(t);if(m.media!==t||m.matches){${h("dark")}}else{${h("light")}}}else if(e){${i?`var x=${JSON.stringify(i)};`:""}${h(i?"x[e]":"e",!0)}}${u?"":"else{"+h(s,!1,!1)+"}"}${p}}catch(e){}}()`:`!function(){try{${d}var e=localStorage.getItem('${t}');if(e){${i?`var x=${JSON.stringify(i)};`:""}${h(i?"x[e]":"e",!0)}}else{${h(s,!1,!1)};}${p}}catch(t){}}();`;return v.createElement("script",{nonce:c,dangerouslySetInnerHTML:{__html:m}})});var cC=e=>{switch(e){case"success":return pC;case"info":return hC;case"warning":return mC;case"error":return fC;default:return null}},uC=Array(12).fill(0),dC=({visible:e,className:t})=>O.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},O.createElement("div",{className:"sonner-spinner"},uC.map((n,a)=>O.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),pC=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),mC=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),hC=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),fC=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),gC=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),O.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),vC=()=>{let[e,t]=O.useState(document.hidden);return O.useEffect(()=>{let n=()=>{t(document.hidden)};
276return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e},pp=1,yC=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;let{message:n,...a}=e,r=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:pp++,s=this.toasts.find(o=>o.id===r),i=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),s?this.toasts=this.toasts.map(o=>o.id===r?(this.publish({...o,...e,id:r,title:n}),{...o,...e,id:r,dismissible:i,title:n}):o):this.addToast({title:n,...a,dismissible:i,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(n=>n({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>
276this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let a=e instanceof Promise?e:e(),r=n!==void 0,s,i=a.then(async c=>{if(s=["resolve",c],O.isValidElement(c))r=!1,this.create({id:n,type:"default",message:c});else if(wC(c)&&!c.ok){r=!1;let u=typeof t.error=="function"?await t.error(`HTTP error! status: ${c.status}`):t.error,d=typeof t.description=="function"?await t.description(`HTTP error! status: ${c.status}`):t.description;this.create({id:n,type:"error",message:u,description:d})}else if(t.success!==void 0){r=!1;let u=typeof t.success=="function"?await t.success(c):t.success,d=typeof t.description=="function"?await t.description(c):t.description;this.create({id:n,type:"success",message:u,description:d})}}).catch(async c=>{if(s=["reject",c],t.error!==void 0){r=!1;let u=typeof t.error=="function"?await t.error(c):t.error,d=typeof t.description=="function"?await t.description(c):t.description;this.create({id:n,type:"error",message:u,description:d})}}).finally(()=>{var c;r&&(this.dismiss(n),n=void 0),(c=t.finally)==null||c.call(t)}),o=()=>new Promise((c,u)=>i.then(()=>s[0]==="reject"?u(s[1]):c(s[1])).catch(u));return typeof n!="string"&&typeof n!="number"?{unwrap:o}:Object.assign(n,{unwrap:o})},this.custom=(e,t)=>{let n=(t==null?void 0:t.id)||pp++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},gt=new yC,bC=(e,t)=>{let n=(t==null?void 0:t.id)||pp++;return gt.addToast({title:e,...t,id:n}),n},wC=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",xC=bC,kC=()=>gt.toasts,SC=()=>gt.getActiveToasts(),ug=Object.assign(xC,{success:gt.success,info:gt.info,warning:gt.warning,error:gt.error,custom:gt.custom,message:gt.message,promise:gt.promise,dismiss:gt.dismiss,loading:gt.loading},{getHistory:kC,getToasts:SC});function PC(e,{insertAt:t}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t==="top"&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}PC(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
276left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
276:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
276--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
277`);function Vo(e){return e.label!==void 0}var AC=3,EC="32px",CC="16px",dg=4e3,TC=356,jC=14,IC=20,RC=200;function Yt(...e){return e.filter(Boolean).join(" ")}function _C(e){let[t,n]=e.split("-"),a=[];return t&&a.push(t),n&&a.push(n),a}var OC=e=>{var t,n,a,r,s,i,o,c,u,d,p;let{invert:h,toast:m,unstyled:w,interacting:f,setHeights:x,visibleToasts:b,heights:g,index:y,toasts:k,expanded:P,removeToast:E,defaultRichColors:S,closeButton:A,style:T,cancelButtonStyle:j,actionButtonStyle:D,className:z="",descriptionClassName:_="",duration:N,position:$,gap:F,loadingIcon:M,expandByDefault:C,classNames:I,icons:q,closeButtonAriaLabel:W="Close toast",pauseWhenPageIsHidden:G}=e,[Q,X]=O.useState(null),[ve,_e]=O.useState(null),[U,fe]=O.useState(!1),[Oe,he]=O.useState(!1),[oe,pe]=O.useState(!1),[et,Ot]=O.useState(!1),[Ma,Yn]=O.useState(!1),[Fa,Qs]=O.useState(0),[Tr,Oh]=O.useState(0),Xs=O.useRef(m.duration||N||dg),Nh=O.useRef(null),Ua=O.useRef(null),wS=y===0,xS=y+1<=b,Nt=m.type,jr=m.dismissible!==!1,kS=m.className||"",SS=m.descriptionClassName||"",Po=O.useMemo(()=>g.findIndex(te=>te.toastId===m.id)||0,[g,m.id]),PS=O.useMemo(()=>{var te;return(te=m.closeButton)!=null?te:A},[m.closeButton,A]),Lh=O.useMemo(()=>m.duration||N||dg,[m.duration,N]),au=O.useRef(0),Ir=O.useRef(0),zh=O.useRef(0),Rr=O.useRef(null),[AS,ES]=$.split("-"),Bh=O.useMemo(()=>g.reduce((te,ye,Ae)=>Ae>
277=Po?te:te+ye.height,0),[g,Po]),Dh=vC(),CS=m.invert||h,ru=Nt==="loading";Ir.current=O.useMemo(()=>Po*F+Bh,[Po,Bh]),O.useEffect(()=>{Xs.current=Lh},[Lh]),O.useEffect(()=>{fe(!0)},[]),O.useEffect(()=>{let te=Ua.current;if(te){let ye=te.getBoundingClientRect().height;return Oh(ye),x(Ae=>[{toastId:m.id,height:ye,position:m.position},...Ae]),()=>x(Ae=>Ae.filter(Wt=>Wt.toastId!==m.id))}},[x,m.id]),O.useLayoutEffect(()=>{if(!U)return;let te=Ua.current,ye=te.style.height;te.style.height="auto";let Ae=te.getBoundingClientRect().height;te.style.height=ye,Oh(Ae),x(Wt=>Wt.find(Vt=>Vt.toastId===m.id)?Wt.map(Vt=>Vt.toastId===m.id?{...Vt,height:Ae}:Vt):[{toastId:m.id,height:Ae,position:m.position},...Wt])},[U,m.title,m.description,x,m.id]);let Jn=O.useCallback(()=>{he(!0),Qs(Ir.current),x(te=>te.filter(ye=>ye.toastId!==m.id)),setTimeout(()=>{E(m)},RC)},[m,E,x,Ir]);O.useEffect(()=>{if(m.promise&&Nt==="loading"||m.duration===1/0||m.type==="loading")return;let te;return P||f||G&&Dh?(()=>{if(zh.current<au.current){let ye=new Date().getTime()-au.current;Xs.current=Xs.current-ye}zh.current=new Date().getTime()})():Xs.current!==1/0&&(au.current=new Date().getTime(),te=setTimeout(()=>{var ye;(ye=m.onAutoClose)==null||ye.call(m,m),Jn()},Xs.current)),()=>clearTimeout(te)},[P,f,m,Nt,G,Dh,Jn]),O.useEffect(()=>{m.delete&&Jn()},[Jn,m.delete]);function TS(){var te,ye,Ae;return q!=null&&q.loading?O.createElement("div",{className:Yt(I==null?void 0:I.loader,(te=m==null?void 0:m.classNames)==null?void 0:te.loader,"sonner-loader"),"data-visible":Nt==="loading"},q.loading):M?O.createElement("div",{className:Yt(I==null?void 0:I.loader,(ye=m==null?void 0:m.classNames)==null?void 0:ye.loader,"sonner-loader"),"data-visible":Nt==="loading"},M):O.createElement(dC,{className:Yt(I==null?void 0:I.loader,(Ae=m==null?void 0:m.classNames)==null?void 0:Ae.loader),visible:Nt==="loading"})}return O.createElement("li",{tabIndex:0,ref:Ua,className:Yt(z,kS,I==null?void 0:I.toast,(t=m==null?void 0:m.classNames)==null?void 0:t.toast,I==null?void 0:I.default,I==null?void 0:I[Nt],(n=m==null?void 0:m.classNames)==null?void 0:n[Nt]),"data-sonner-toast":"","data-rich-colors":(a=m.richColors)!=null?a:S,"data-styled":!(m.jsx||m.unstyled||w),"data-mounted":U,"data-promise":!!m.promise,"data-swiped":Ma,"data-removed":Oe,"data-visible":xS,"data-y-position":AS,"data-x-position":ES,"data-index":y,"data-front":wS,"data-swiping":oe,"data-dismissible":jr,"data-type":Nt,"data-invert":CS,"data-swipe-out":et,"data-swipe-direction":ve,"data-expanded":!!(P||C&&U),style:{"--index":y,"--toasts-before":y,"--z-index":k.length-y,"--offset":`${Oe?Fa:Ir.current}px`,"--initial-height":C?"auto":`${Tr}px`,...T,...m.style},onDragEnd:()=>{pe(!1),X(null),Rr.current=null},onPointerDown:te=>{ru||!jr||(Nh.current=new Date,Qs(Ir.current),te.target.setPointerCapture(te.pointerId),te.target.tagName!=="BUTTON"&&(pe(!0),Rr.current={x:te.clientX,y:te.clientY}))},onPointerUp:()=>{var te,ye,Ae,Wt;if(et||!jr)return;Rr.current=null;let Vt=Number(((te=Ua.current)==null?void 0:te.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Qn=Number(((ye=Ua.current)==null?void 0:ye.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),$a=new Date().getTime()-((Ae=Nh.current)==null?void 0:Ae.getTime()),Ht=Q==="x"?Vt:Qn,Xn=Math.abs(Ht)/$a;if(Math.abs(Ht)>=IC||Xn>.11){Qs(Ir.current),(Wt=m.onDismiss)==null||Wt.call(m,m),_e(Q==="x"?Vt>0?"right":"left":Qn>0?"down":"up"),Jn(),Ot(!0),Yn(!1);return}pe(!1),X(null)},onPointerMove:te=>{var ye,Ae,Wt,Vt;if(!Rr.current||!jr||((ye=window.getSelection())==null?void 0:ye.toString().length)>0)return;let Qn=te.clientY-Rr.current.y,$a=te.clientX-Rr.current.x,Ht=(Ae=e.swipeDirections)!=null?Ae:_C($);!Q&&(Math.abs($a)>1||Math.abs(Qn)>1)&&X(Math.abs($a)>Math.abs(Qn)?"x":"y");let Xn={x:0,y:0};Q==="y"?(Ht.includes("top")||Ht.includes("bottom"))&&(Ht.includes("top")&&Qn<0||Ht.includes("bottom")&&Qn>0)&&(Xn.y=Qn):Q==="x"&&(Ht.includes("left")||Ht.includes("right"))&&(Ht.includes("left")&&$a<0||Ht.includes("right")&&$a>0)&&(Xn.x=$a),(Math.abs(Xn.x)>0||Math.abs(Xn.y)>0)&&Yn(!0),(Wt=Ua.current)==null||Wt.style.setProperty("--swipe-amount-x",`${Xn.x}px`),(Vt=Ua.current)==null||Vt.style.setProperty("--swipe-amount-y",`${Xn.y}px`)}},PS&&!m.jsx?O.createElement("button",{"aria-label":W,"data-disabled":ru,"data-close-button":!0,onClick:ru||!jr?()=>{}:()=>{var te;Jn(),(te=m.onDismiss)==null||te.call(m,m)},className:Yt(I==null?void 0:I.closeButton,(r=m==null?void 0:m.classNames)==null?void 0:r.closeButton)},(s=q==null?void 0:q.close)!=null?s:gC):null,m.jsx||v.isValidElement(m.title)?m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title:O.createElement(O.Fragment,null,Nt||m.icon||m.promise?O.createElement("div",{"data-icon":"",className:Yt(I==null?void 0:I.icon,(i=m==null?void 0:m.classNames)==null?void 0:i.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||TS():null,m.type!=="loading"?m.
277icon||(q==null?void 0:q[Nt])||cC(Nt):null):null,O.createElement("div",{"data-content":"",className:Yt(I==null?void 0:I.content,(o=m==null?void 0:m.classNames)==null?void 0:o.content)},O.createElement("div",{"data-title":"",className:Yt(I==null?void 0:I.title,(c=m==null?void 0:m.classNames)==null?void 0:c.title)},typeof m.title=="function"?m.title():m.title),m.description?O.createElement("div",{"data-description":"",className:Yt(_,SS,I==null?void 0:I.description,(u=m==null?void 0:m.classNames)==null?void 0:u.description)},typeof m.description=="function"?m.description():m.description):null),v.isValidElement(m.cancel)?m.cancel:m.cancel&&Vo(m.cancel)?O.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||j,onClick:te=>{var ye,Ae;Vo(m.cancel)&&jr&&((Ae=(ye=m.cancel).onClick)==null||Ae.call(ye,te),Jn())},className:Yt(I==null?void 0:I.cancelButton,(d=m==null?void 0:m.classNames)==null?void 0:d.cancelButton)},m.cancel.label):null,v.isValidElement(m.action)?m.action:m.action&&Vo(m.action)?O.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||D,onClick:te=>{var ye,Ae;Vo(m.action)&&((Ae=(ye=m.action).onClick)==null||Ae.call(ye,te),!te.defaultPrevented&&Jn())},className:Yt(I==null?void 0:I.actionButton,(p=m==null?void 0:m.classNames)==null?void 0:p.actionButton)},m.action.label):null))};function pg(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function NC(e,t){let n={};return[e,t].forEach((a,r)=>{let s=r===1,i=s?"--mobile-offset":"--offset",o=s?CC:EC;function c(u){["top","right","bottom","left"].forEach(d=>{n[`${i}-${d}`]=typeof u=="number"?`${u}px`:u})}typeof a=="number"||typeof a=="string"?c(a):typeof a=="object"?["top","right","bottom","left"].forEach(u=>{a[u]===void 0?n[`${i}-${u}`]=o:n[`${i}-${u}`]=typeof a[u]=="number"?`${a[u]}px`:a[u]}):c(o)}),n}var LC=v.forwardRef(function(e,t){let{invert:n,position:a="bottom-right",hotkey:r=["altKey","KeyT"],expand:s,closeButton:i,className:o,offset:c,mobileOffset:u,theme:d="light",richColors:p,duration:h,style:m,visibleToasts:w=AC,toastOptions:f,dir:x=pg(),gap:b=jC,loadingIcon:g,icons:y,containerAriaLabel:k="Notifications",pauseWhenPageIsHidden:P}=e,[E,S]=O.useState([]),A=O.useMemo(()=>Array.from(new Set([a].concat(E.filter(G=>G.position).map(G=>G.position)))),[E,a]),[T,j]=O.useState([]),[D,z]=O.useState(!1),[_,N]=O.useState(!1),[$,F]=O.useState(d!=="system"?d:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),M=O.useRef(null),C=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),I=O.useRef(null),q=O.useRef(!1),W=O.useCallback(G=>{S(Q=>{var X;return(X=Q.find(ve=>ve.id===G.id))!=null&&X.delete||gt.dismiss(G.id),Q.filter(({id:ve})=>ve!==G.id)})},[]);return O.useEffect(()=>gt.subscribe(G=>{if(G.dismiss){S(Q=>Q.map(X=>X.id===G.id?{...X,delete:!0}:X));return}setTimeout(()=>{Sw.flushSync(()=>{S(Q=>{let X=Q.findIndex(ve=>ve.id===G.id);return X!==-1?[...Q.slice(0,X),{...Q[X],...G},...Q.slice(X+1)]:[G,...Q]})})})}),[]),O.useEffect(()=>{if(d!=="system"){F(d);return}if(d==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),typeof window>"u")return;let G=window.matchMedia("(prefers-color-scheme: dark)");try{G.addEventListener("change",({matches:Q})=>{F(Q?"dark":"light")})}catch{G.addListener(({matches:X})=>{try{F(X?"dark":"light")}catch(ve){console.error(ve)}})}},[d]),O.useEffect(()=>{E.length<=1&&z(!1)},[E]),O.useEffect(()=>{let G=Q=>{var X,ve;r.every(_e=>Q[_e]||Q.code===_e)&&(z(!0),(X=M.current)==null||X.focus()),Q.code==="Escape"&&(document.activeElement===M.current||(ve=M.current)!=null&&ve.contains(document.activeElement))&&z(!1)};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[r]),O.useEffect(()=>{if(M.current)return()=>{I.current&&(I.current.focus({preventScroll:!0}),I.current=null,q.current=!1)}},[M.current]),O.createElement("section",{ref:t,"aria-label":`${k} ${C}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},A.map((G,Q)=>{var X;let[ve,_e]=G.split("-");return E.length?O.createElement("ol",{key:G,dir:x==="auto"?pg():x,tabIndex:-1,ref:M,className:o,"data-sonner-toaster":!0,"data-theme":$,"data-y-position":ve,"data-lifted":D&&E.length>1&&!s,"data-x-position":_e,style:{"--front-toast-height":`${((X=T[0])==null?void 0:X.height)||0}px`,"--width":`${TC}
277px`,"--gap":`${b}px`,...m,...NC(c,u)},onBlur:U=>{q.current&&!U.currentTarget.contains(U.relatedTarget)&&(q.current=!1,I.current&&(I.current.focus({preventScroll:!0}),I.current=null))},onFocus:U=>{U.target instanceof HTMLElement&&U.target.dataset.dismissible==="false"||q.current||(q.current=!0,I.current=U.relatedTarget)},onMouseEnter:()=>z(!0),onMouseMove:()=>z(!0),onMouseLeave:()=>{_||z(!1)},onDragEnd:()=>z(!1),onPointerDown:U=>{U.target instanceof HTMLElement&&U.target.dataset.dismissible==="false"||N(!0)},onPointerUp:()=>N(!1)},E.filter(U=>!U.position&&Q===0||U.position===G).map((U,fe)=>{var Oe,he;return O.createElement(OC,{key:U.id,icons:y,index:fe,toast:U,defaultRichColors:p,duration:(Oe=f==null?void 0:f.duration)!=null?Oe:h,className:f==null?void 0:f.className,descriptionClassName:f==null?void 0:f.descriptionClassName,invert:n,visibleToasts:w,closeButton:(he=f==null?void 0:f.closeButton)!=null?he:i,interacting:_,position:G,style:f==null?void 0:f.style,unstyled:f==null?void 0:f.unstyled,classNames:f==null?void 0:f.classNames,cancelButtonStyle:f==null?void 0:f.cancelButtonStyle,actionButtonStyle:f==null?void 0:f.actionButtonStyle,removeToast:W,toasts:E.filter(oe=>oe.position==U.position),heights:T.filter(oe=>oe.position==U.position),setHeights:j,expandByDefault:s,gap:b,loadingIcon:g,expanded:D,pauseWhenPageIsHidden:P,swipeDirections:e.swipeDirections})})):null}))});const zC=({...e})=>{const{theme:t="system"}=lC();return l.jsx(LC,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e})};var BC=nm[" useId ".trim().toString()]||(()=>{}),DC=0;function $s(e){const[t,n]=v.useState(BC());return Ke(()=>{n(a=>a??String(DC++))},[e]),t?`radix-${t}`:""}const qC=["top","right","bottom","left"],Ra=Math.min,Pt=Math.max,Xl=Math.round,Ho=Math.floor,Cn=e=>({x:e,y:e}),MC={left:"right",right:"left",bottom:"top",top:"bottom"},FC={start:"end",end:"start"};function mp(e,t,n){return Pt(e,Ra(t,n))}function $n(e,t){return typeof e=="function"?e(t):e}function Wn(e){return e.split("-")[0]}function Ws(e){return e.split("-")[1]}function ah(e){return e==="x"?"y":"x"}function rh(e){return e==="y"?"height":"width"}const UC=new Set(["top","bottom"]);function Sn(e){return UC.has(Wn(e))?"y":"x"}function sh(e){return ah(Sn(e))}function $C(e,t,n){n===void 0&&(n=!1);const a=Ws(e),r=sh(e),s=rh(r);let i=r==="x"?a===(n?"end":"start")?"right":"left":a==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=Zl(i)),[i,Zl(i)]}function WC(e){const t=Zl(e);return[hp(e),t,hp(t)]}function hp(e){return e.replace(/start|end/g,t=>FC[t])}const mg=["left","right"],hg=["right","left"],VC=["top","bottom"],HC=["bottom","top"];function GC(e,t,n){switch(e){case"top":case"bottom":return n?t?hg:mg:t?mg:hg;case"left":case"right":return t?VC:HC;default:return[]}}function KC(e,t,n,a){const r=Ws(e);let s=GC(Wn(e),n==="start",a);return r&&(s=s.map(i=>i+"-"+r),t&&(s=s.concat(s.map(hp)))),s}function Zl(e){return e.replace(/left|right|bottom|top/g,t=>MC[t])}function YC(e){return{top:0,right:0,bottom:0,left:0,...e}}function xx(e){return typeof e!="number"?YC(e):{top:e,right:e,bottom:e,left:e}}function ec(e){const{x:t,y:n,width:a,height:r}=e;return{width:a,height:r,top:n,left:t,right:t+a,bottom:n+r,x:t,y:n}}function fg(e,t,n){let{reference:a,floating:r}=e;const s=Sn(t),i=sh(t),o=rh(i),c=Wn(t),u=s==="y",d=a.x+a.width/2-r.width/2,p=a.y+a.height/2-r.height/2,h=a[o]/2-r[o]/2;let m;switch(c){case"top":m={x:d,y:a.y-r.height};break;case"bottom":m={x:d,y:a.y+a.height};break;case"right":m={x:a.x+a.width,y:p};break;case"left":m={x:a.x-r.width,y:p};break;default:m={x:a.x,y:a.y}}switch(Ws(t)){case"start":m[i]-=h*(n&&u?-1:1);break;case"end":m[i]+=h*(n&&u?-1:1);break}return m}const JC=async(e,t,n)=>{const{placement:a="bottom",strategy:r="absolute",middleware:s=[],platform:i}
vendor: 17,325 bytes, line 277
277=n,o=s.filter(Boolean),c=await(i.isRTL==null?void 0:i.isRTL(t));let u=await i.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:p}=fg(u,a,c),h=a,m={},w=0;for(let f=0;f<o.length;f++){const{name:x,fn:b}=o[f],{x:g,y,data:k,reset:P}=await b({x:d,y:p,initialPlacement:a,placement:h,strategy:r,middlewareData:m,rects:u,platform:i,elements:{reference:e,floating:t}});d=g??d,p=y??p,m={...m,[x]:{...m[x],...k}},P&&w<=50&&(w++,typeof P=="object"&&(P.placement&&(h=P.placement),P.rects&&(u=P.rects===!0?await i.getElementRects({reference:e,floating:t,strategy:r}):P.rects),{x:d,y:p}=fg(u,h,c)),f=-1)}return{x:d,y:p,placement:h,strategy:r,middlewareData:m}};async function Xi(e,t){var n;t===void 0&&(t={});const{x:a,y:r,platform:s,rects:i,elements:o,strategy:c}=e,{boundary:u="clippingAncestors",rootBoundary:d="viewport",elementContext:p="floating",altBoundary:h=!1,padding:m=0}=$n(t,e),w=xx(m),x=o[h?p==="floating"?"reference":"floating":p],b=ec(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(x)))==null||n?x:x.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(o.floating)),boundary:u,rootBoundary:d,strategy:c})),g=p==="floating"?{x:a,y:r,width:i.floating.width,height:i.floating.height}:i.reference,y=await(s.getOffsetParent==null?void 0:s.getOffsetParent(o.floating)),k=await(s.isElement==null?void 0:s.isElement(y))?await(s.getScale==null?void 0:s.getScale(y))||{x:1,y:1}:{x:1,y:1},P=ec(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:y,strategy:c}):g);return{top:(b.top-P.top+w.top)/k.y,bottom:(P.bottom-b.bottom+w.bottom)/k.y,left:(b.left-P.left+w.left)/k.x,right:(P.right-b.right+w.right)/k.x}}const QC=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:a,placement:r,rects:s,platform:i,elements:o,middlewareData:c}=t,{element:u,padding:d=0}=$n(e,t)||{};if(u==null)return{};const p=xx(d),h={x:n,y:a},m=sh(r),w=rh(m),f=await i.getDimensions(u),x=m==="y",b=x?"top":"left",g=x?"bottom":"right",y=x?"clientHeight":"clientWidth",k=s.reference[w]+s.reference[m]-h[m]-s.floating[w],P=h[m]-s.reference[m],E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u));let S=E?E[y]:0;(!S||!await(i.isElement==null?void 0:i.isElement(E)))&&(S=o.floating[y]||s.floating[w]);const A=k/2-P/2,T=S/2-f[w]/2-1,j=Ra(p[b],T),D=Ra(p[g],T),z=j,_=S-f[w]-D,N=S/2-f[w]/2+A,$=mp(z,N,_),F=!c.arrow&&Ws(r)!=null&&N!==$&&s.reference[w]/2-(N<z?j:D)-f[w]/2<0,M=F?N<z?N-z:N-_:0;return{[m]:h[m]+M,data:{[m]:$,centerOffset:N-$-M,...F&&{alignmentOffset:M}},reset:F}}}),XC=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,a;const{placement:r,middlewareData:s,rects:i,initialPlacement:o,platform:c,elements:u}=t,{mainAxis:d=!0,crossAxis:p=!0,fallbackPlacements:h,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:w="none",flipAlignment:f=!0,...x}=$n(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const b=Wn(r),g=Sn(o),y=Wn(o)===o,k=await(c.isRTL==null?void 0:c.isRTL(u.floating)),P=h||(y||!f?[Zl(o)]:WC(o)),E=w!=="none";!h&&E&&P.push(...KC(o,f,w,k));const S=[o,...P],A=await Xi(t,x),T=[];let j=((a=s.flip)==null?void 0:a.overflows)||[];if(d&&T.push(A[b]),p){const N=$C(r,i,k);T.push(A[N[0]],A[N[1]])}if(j=[...j,{placement:r,overflows:T}],!T.every(N=>N<=0)){var D,z;const N=(((D=s.flip)==null?void 0:D.index)||0)+1,$=S[N];if($&&(!(p==="alignment"?g!==Sn($):!1)||j.every(C=>C.overflows[0]>0&&Sn(C.placement)===g)))return{data:{index:N,overflows:j},reset:{placement:$}};let F=(z=j.filter(M=>M.overflows[0]<=0).sort((M,C)=>M.overflows[1]-C.overflows[1])[0])==null?void 0:z.placement;if(!F)switch(m){case"bestFit":{var _;const M=(_=j.filter(C=>{if(E){const I=Sn(C.placement);return I===g||I==="y"}return!0}).map(C=>[C.placement,C.overflows.filter(I=>I>0).reduce((I,q)=>I+q,0)]).sort((C,I)=>C[1]-I[1])[0])==null?void 0:_[0];M&&(F=M);break}case"initialPlacement":F=o;break}if(r!==F)return{reset:{placement:F}}}return{}}}};function gg(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function vg(e){return qC.some(t=>e[t]>=0)}const ZC=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:a="referenceHidden",...r}=$n(e,t);switch(a){case"referenceHidden":{const s=await Xi(t,{...r,elementContext:"reference"}),i=gg(s,n.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:vg(i)}}}case"escaped":{const s=await Xi(t,{...r,altBoundary:!0}),i=gg(s,n.floating);return{data:{escapedOffsets:i,escaped:vg(i)}}}default:return{}}}}},kx=new Set(["left","top"]);async function eT(e,t){const{placement:n,platform:a,elements:r}=e,s=await(a.isRTL==null?void 0:a.isRTL(r.floating)),i=Wn(n),o=Ws(n),c=Sn(n)==="y",u=kx.has(i)?-1:1,d=s&&c?-1:1,p=$n(t,e);let{mainAxis:h,crossAxis:m,alignmentAxis:w}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return o&&typeof w=="number"&&(m=o==="end"?w*-1:w),c?{x:m*d,y:h*u}:{x:h*u,y:m*d}}const tT=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,a;const{x:r,y:s,placement:i,middlewareData:o}=t,c=await eT(t,e);return i===((n=o.offset)==null?void 0:n.placement)&&(a=o.arrow)!=null&&a.alignmentOffset?{}:{x:r+c.x,y:s+c.y,data:{...c,placement:i}}}}},nT=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:a,placement:r}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:o={fn:x=>{let{x:b,y:g}=x;return{x:b,y:g}}},...c}=$n(e,t),u={x:n,y:a},d=await Xi(t,c),p=Sn(Wn(r)),h=ah(p);let m=u[h],w=u[p];if(s){const x=h==="y"?"top":"left",b=h==="y"?"bottom":"right",g=m+d[x],y=m-d[b];m=mp(g,m,y)}if(i){const x=p==="y"?"top":"left",b=p==="y"?"bottom":"right",g=w+d[x],y=w-d[b];w=mp(g,w,y)}const f=o.fn({...t,[h]:m,[p]:w});return{...f,data:{x:f.x-n,y:f.y-a,enabled:{[h]:s,[p]:i}}}}}},aT=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:a,placement:r,rects:s,middlewareData:i}=t,{offset:o=0,mainAxis:c=!0,crossAxis:u=!0}=$n(e,t),d={x:n,y:a},p=Sn(r),h=ah(p);let m=d[h],w=d[p];const f=$n(o,t),x=typeof f=="number"?{mainAxis:f,crossAxis:0}:{mainAxis:0,crossAxis:0,...f};if(c){const y=h==="y"?"height":"width",k=s.reference[h]-s.floating[y]+x.mainAxis,P=s.reference[h]+s.reference[y]-x.mainAxis;m<k?m=k:m>P&&(m=P)}if(u){var b,g;const y=h==="y"?"width":"height",k=kx.has(Wn(r)),P=s.reference[p]-s.floating[y]+(k&&((b=i.offset)==null?void 0:b[p])||0)+(k?0:x.crossAxis),E=s.reference[p]+s.reference[y]+(k?0:((g=i.offset)==null?void 0:g[p])||0)-(k?x.crossAxis:0);w<P?w=P:w>E&&(w=E)}return{[h]:m,[p]:w}}}},rT=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,a;const{placement:r,rects:s,platform:i,elements:o}=t,{apply:c=()=>{},...u}=$n(e,t),d=await Xi(t,u),p=Wn(r),h=Ws(r),m=Sn(r)==="y",{width:w,height:f}=s.floating;let x,b;p==="top"||p==="bottom"?(x=p,b=h===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(b=p,x=h==="end"?"top":"bottom");const g=f-d.top-d.bottom,y=w-d.left-d.right,k=Ra(f-d[x],g),P=Ra(w-d[b],y),E=!t.middlewareData.shift;let S=k,A=P;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(A=y),(a=t.middlewareData.shift)!=null&&a.enabled.y&&(S=g),E&&!h){const j=Pt(d.left,0),D=Pt(d.right,0),z=Pt(d.top,0),_=Pt(d.bottom,0);m?A=w-2*(j!==0||D!==0?j+D:Pt(d.left,d.right)):S=f-2*(z!==0||_!==0?z+_:Pt(d.top,d.bottom))}await c({...t,availableWidth:A,availableHeight:S});const T=await i.getDimensions(o.floating);return w!==T.width||f!==T.height?{reset:{rects:!0}}:{}}}};function Oc(){return typeof window<"u"}function Vs(e){return Sx(e)?(e.nodeName||"").toLowerCase():"#document"}function jt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function jn(e){var t;return(t=(Sx(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Sx(e){return Oc()?e instanceof Node||e instanceof jt(e).Node:!1}function pn(e){return Oc()?e instanceof Element||e instanceof jt(e).Element:!1}function Tn(e){return Oc()?e instanceof HTMLElement||e instanceof jt(e).HTMLElement:!1}function yg(e){return!Oc()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof jt(e).ShadowRoot}const sT=new Set(["inline","contents"]);function ko(e){const{overflow:t,overflowX:n,overflowY:a,display:r}=mn(e);return/auto|scroll|overlay|hidden|clip/.test(t+a+n)&&!sT.has(r)}const iT=new Set(["table","td","th"]);function oT(e){return iT.has(Vs(e))}const lT=[":popover-open",":modal"];function Nc(e){return lT.some(t=>{try{return e.matches(t)}catch{return!1}})}const cT=["transform","translate","scale","rotate","perspective"],uT=["transform","translate","scale","rotate","perspective","filter"],dT=["paint","layout","strict","content"];function ih(e){const t=oh(),n=pn(e)?mn(e):e;return cT.some(a=>n[a]?n[a]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||uT.some(a=>(n.willChange||"").includes(a))||dT.some(a=>(n.contain||"").includes(a))}function pT(e){let t=_a(e);for(;Tn(t)&&!zs(t);){if(ih(t))return t;if(Nc(t))return null;t=_a(t)}return null}function oh(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const mT=new Set(["html","body","#document"]);function zs(e){return mT.has(Vs(e))}function mn(e){return jt(e).getComputedStyle(e)}function Lc(e){return pn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function _a(e){if(Vs(e)==="html")return e;const t=e.assignedSlot||e.parentNode||yg(e)&&e.host||jn(e);return yg(t)?t.host:t}function Px(e){const t=_a(e);return zs(t)?e.ownerDocument?e.ownerDocument.body:e.body:Tn(t)&&ko(t)?t:Px(t)}function Zi(e,t,n){var a;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Px(e),s=r===((a=e.ownerDocument)==null?void 0:a.body),i=jt(r);if(s){const o=fp(i);return t.concat(i,i.visualViewport||[],ko(r)?r:[],o&&n?Zi(o):[])}return t.concat(r,Zi(r,[],n))}function fp(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ax(e){const t=mn(e);let n=parseFloat(t.width)||0,a=parseFloat(t.height)||0;const r=Tn(e),s=r?e.offsetWidth:n,i=r?e.offsetHeight:a,o=Xl(n)!==s||Xl(a)!==i;return o&&(n=s,a=i),{width:n,height:a,$:o}}function lh(e){return pn(e)?e:e.contextElement}function fs(e){const t=lh(e);if(!Tn(t))return Cn(1);const n=t.getBoundingClientRect(),{width:a,height:r,$:s}=Ax(t);let i=(s?Xl(n.width):n.width)/a,o=(s?Xl(n.height):n.height)/r;return(!i||!Number.isFinite(i))&&(i=1),(!o||!Number.isFinite(o))&&(o=1),{x:i,y:o}}const hT=Cn(0);function Ex(e){const t=jt(e);return!oh()||!t.visualViewport?hT:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function fT(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==jt(e)?!1:t}function yr(e,t,n,a){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),s=lh(e);let i=Cn(1);t&&(a?pn(a)&&(i=fs(a)):i=fs(e));const o=fT(s,n,a)?Ex(s):Cn(0);let c=(r.left+o.x)/i.x,u=(r.top+o.y)/i.y,d=r.width/i.x,p=r.height/i.y;if(s){const h=jt(s),m=a&&pn(a)?jt(a):a;let w=h,f=fp(w);for(;f&&a&&m!==w;){const x=fs(f),b=f.getBoundingClientRect(),g=mn(f),y=b.left+(f.clientLeft+parseFloat(g.paddingLeft))*x.x,k=b.top+(f.clientTop+parseFloat(g.paddingTop))*x.y;c*=x.x,u*=x.y,d*=x.x,p*=x.y,c+=y,u+=k,w=jt(f),f=fp(w)}}return ec({width:d,height:p,x:c,y:u})}function ch(e,t){const n=Lc(e).scrollLeft;return t?t.left+n:yr(jn(e)).left+n}function Cx(e,t,n){n===void 0&&(n=!1);const a=e.getBoundingClientRect(),r=a.left+t.scrollLeft-(n?0:ch(e,a)),s=a.top+t.scrollTop;return{x:r,y:s}}function gT(e){let{elements:t,rect:n,offsetParent:a,strategy:r}=e;const s=r==="fixed",i=jn(a),o=t?Nc(t.floating):!1;if(a===i||o&&s)return n;let c={scrollLeft:0,scrollTop:0},u=Cn(1);const d=Cn(0),p=Tn(a);if((p||!p&&!s)&&((Vs(a)!=="body"||ko(i))&&(c=Lc(a)),Tn(a))){const m=yr(a);u=fs(a),d.x=m.x+a.clientLeft,d.y=m.y+a.clientTop}const h=i&&!p&&!s?Cx(i,c,!0):Cn(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-c.scrollLeft*u.x+d.x+h.x,y:n.y*u.y-c.scrollTop*u.y+d.y+h.y}}function vT(e){return Array.from(e.getClientRects())}function yT(e){const t=jn(e),n=Lc(e),a=e.ownerDocument.body,r=Pt(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),s=Pt(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight);let i=-n.scrollLeft+ch(e);const o=-n.scrollTop;return mn(a).direction==="rtl"&&(i+=Pt(t.clientWidth,a.clientWidth)-r),{width:r,height:s,x:i,y:o}}function bT(e,t){const n=jt(e),a=jn(e),r=n.visualViewport;let s=a.clientWidth,i=a.clientHeight,o=0,c=0;if(r){s=r.width,i=r.height;const u=oh();(!u||u&&t==="fixed")&&(o=r.offsetLeft,c=r.offsetTop)}return{width:s,height:i,x:o,y:c}}const wT=new Set(["absolute","fixed"]);function xT(e,t){const n=yr(e,!0,t==="fixed"),a=n.top+e.clientTop,r=n.left+e.clientLeft,s=Tn(e)?fs(e):Cn(1),i=e.clientWidth*s.x,o=e.clientHeight*s.y,c=r*s.x,u=a*s.y;return{width:i,height:o,x:c,y:u}}function bg(e,t,n){let a;if(t==="viewport")a=bT(e,n);else if(t==="document")a=yT(jn(e));else if(pn(t))a=xT(t,n);else{const r=Ex(e);a={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return ec(a)}function Tx(e,t){const n=_a(e);return n===t||!pn(n)||zs(n)?!1:mn(n).position==="fixed"||Tx(n,t)}function kT(e,t){const n=t.get(e);if(n)return n;let a=Zi(e,[],!1).filter(o=>pn(o)&&Vs(o)!=="body"),r=null;const s=mn(e).position==="fixed";let i=s?_a(e):e;for(;pn(i)&&!zs(i);){const o=mn(i),c=ih(i);!c&&o.position==="fixed"&&(r=null),(s?!c&&!r:!c&&o.position==="static"&&!!r&&wT.has(r.position)||ko(i)&&!c&&Tx(e,i))?a=a.filter(d=>d!==i):r=o,i=_a(i)}return t.set(e,a),a}function ST(e){let{element:t,boundary:n,rootBoundary:a,strategy:r}=e;const i=[...n==="clippingAncestors"?Nc(t)?[]:kT(t,this._c):[].concat(n),a],o=i[0],c=i.reduce((u,d)=>{const p=bg(t,d,r);return u.top=Pt(p.top,u.top),u.right=Ra(p.right,u.right),u.bottom=Ra(p.bottom,u.bottom),u.left=Pt(p.left,u.left),u},bg(t,o,r));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}function PT(e){const{width:t,height:n}=Ax(e);return{width:t,height:n}}function AT(e,t,n){const a=Tn(t),r=jn(t),s=n==="fixed",i=yr(e,!0,s,t);let o={scrollLeft:0,scrollTop:0};const c=Cn(0);function u(){c.x=ch(r)}if(a||!a&&!s)if((Vs(t)!=="body"||ko(r))&&(o=Lc(t)),a){const m=yr(t,!0,s,t);c.x=m.x+t.clientLeft,c.y=m.y+t.clientTop}else r&&u();s&&!a&&r&&u();const d=r&&!a&&!s?Cx(r,o):Cn(0),p=i.left+o.scrollLeft-c.x-d.x,h=i.top+o.scrollTop-c.y-d.y;return{x:p,y:h,width:i.width,height:i.height}}function zu(e){return mn(e).position==="static"}function wg(e,t){if(!Tn(e)||mn(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return jn(e)===n&&(n=n.ownerDocument.body),n}function jx(e,t){const n=jt(e);if(Nc(e))return n;if(!Tn(e)){let r=_a(e);for(;r&&!zs(r);){if(pn(r)&&!zu(r))return r;r=_a(r)}return n}let a=wg(e,t);for(;a&&oT(a)&&zu(a);)a=wg(a,t);return a&&zs(a)&&zu(a)&&!ih(a)?n:a||pT(e)||n}const ET=async function(e){const t=this.getOffsetParent||jx,n=this.getDimensions,a=await n(e.floating);return{reference:AT(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:a.width,height:a.height}}};function CT(e){return mn(e).direction==="rtl"}const TT={convertOffsetParentRelativeRectToViewportRelativeRect:gT,getDocumentElement:jn,getClippingRect:ST,getOffsetParent:jx,getElementRects:ET,getClientRects:vT,getDimensions:PT,getScale:fs,isElement:pn,isRTL:CT};function Ix(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function jT(e,t){let n=null,a;const r=jn(e);function s(){var o;clearTimeout(a),(o=n)==null||o.disconnect(),n=null}function i(o,c){o===void 0&&(o=!1),c===void 0&&(c=1),s();const u=e.getBoundingClientRect(),{left:d,top:p,width:h,height:m}=u;if(o||t(),!h||!m)return;const w=Ho(p),f=Ho(r.clientWidth-(d+h)),x=Ho(r.clientHeight-(p+m)),b=Ho(d),y={rootMargin:-w+"px "+-f+"px "+-x+"px "+-b+"px",threshold:Pt(0,Ra(1,c))||1};let k=!0;function P(E){const S=E[0].intersectionRatio;if(S!==c){if(!k)return i();S?i(!1,S):a=setTimeout(()=>{i(!1,1e-7)},1e3)}S===1&&!Ix(u,e.getBoundingClientRect())&&i(),k=!1}try{n=new IntersectionObserver(P,{...y,root:r.ownerDocument})}catch{n=new IntersectionObserver(P,y)}n.observe(e)}return i(!0),s}function IT(e,t,n,a){a===void 0&&(a={});const{ancestorScroll:r=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:o=typeof IntersectionObserver=="function",animationFrame:c=!1}=a,u=lh(e),d=r||s?[...u?Zi(u):[],...Zi(t)]:[];d.forEach(b=>{r&&b.addEventListener("scroll",n,{passive:!0}),s&&b.addEventListener("resize",n)});const p=u&&o?jT(u,n):null;let h=-1,m=null;i&&(m=new ResizeObserver(b=>{let[g]=b;g&&g.target===u&&m&&(m.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var y;(y=m)==null||y.observe(t)})),n()}),u&&!c&&m.observe(u),m.observe(t));let w,f=c?yr(e):null;c&&x();function x(){const b=yr(e);f&&!Ix(f,b)&&n(),f=b,w=requestAnimationFrame(x)}return n(),()=>{var b;d.forEach(g=>{r&&g.removeEventListener("scroll",n),s&&g.removeEventListener("resize",n)}),p==null||p(),(b=m)==null||b.disconnect(),m=null,c&&cancelAnimationFrame(w)}}const RT=tT,_T=nT,OT=XC,NT=rT,LT=ZC,xg=QC,zT=aT,BT=(e,t,n)=>{const a=new Map,r={platform:TT,...n},s={...r.platform,_c:a};return JC(e,t,{...r,platform:s})};var DT=typeof document<"u",qT=function(){},wl=DT?v.useLayoutEffect:qT;function tc(e,t){if(e===t)return!0;
vendor: 4,143 bytes, line 277
277if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,a,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(a=n;a--!==0;)if(!tc(e[a],t[a]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(a=n;a--!==0;)if(!{}.hasOwnProperty.call(t,r[a]))return!1;for(a=n;a--!==0;){const s=r[a];if(!(s==="_owner"&&e.$$typeof)&&!tc(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Rx(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function kg(e,t){const n=Rx(e);return Math.round(t*n)/n}function Bu(e){const t=v.useRef(e);return wl(()=>{t.current=e}),t}function MT(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:r,elements:{reference:s,floating:i}={},transform:o=!0,whileElementsMounted:c,open:u}=e,[d,p]=v.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[h,m]=v.useState(a);tc(h,a)||m(a);const[w,f]=v.useState(null),[x,b]=v.useState(null),g=v.useCallback(C=>{C!==E.current&&(E.current=C,f(C))},[]),y=v.useCallback(C=>{C!==S.current&&(S.current=C,b(C))},[]),k=s||w,P=i||x,E=v.useRef(null),S=v.useRef(null),A=v.useRef(d),T=c!=null,j=Bu(c),D=Bu(r),z=Bu(u),_=v.useCallback(()=>{if(!E.current||!S.current)return;const C={placement:t,strategy:n,middleware:h};D.current&&(C.platform=D.current),BT(E.current,S.current,C).then(I=>{const q={...I,isPositioned:z.current!==!1};N.current&&!tc(A.current,q)&&(A.current=q,Er.flushSync(()=>{p(q)}))})},[h,t,n,D,z]);wl(()=>{u===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,p(C=>({...C,isPositioned:!1})))},[u]);const N=v.useRef(!1);wl(()=>(N.current=!0,()=>{N.current=!1}),[]),wl(()=>{if(k&&(E.current=k),P&&(S.current=P),k&&P){if(j.current)return j.current(k,P,_);_()}},[k,P,_,j,T]);const $=v.useMemo(()=>({reference:E,floating:S,setReference:g,setFloating:y}),[g,y]),F=v.useMemo(()=>({reference:k,floating:P}),[k,P]),M=v.useMemo(()=>{const C={position:n,left:0,top:0};if(!F.floating)return C;const I=kg(F.floating,d.x),q=kg(F.floating,d.y);return o?{...C,transform:"translate("+I+"px, "+q+"px)",...Rx(F.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:I,top:q}},[n,o,F.floating,d.x,d.y]);return v.useMemo(()=>({...d,update:_,refs:$,elements:F,floatingStyles:M}),[d,_,$,F,M])}const FT=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:a,padding:r}=typeof e=="function"?e(n):e;return a&&t(a)?a.current!=null?xg({element:a.current,padding:r}).fn(n):{}:a?xg({element:a,padding:r}).fn(n):{}}}},UT=(e,t)=>({...RT(e),options:[e,t]}),$T=(e,t)=>({..._T(e),options:[e,t]}),WT=(e,t)=>({...zT(e),options:[e,t]}),VT=(e,t)=>({...OT(e),options:[e,t]}),HT=(e,t)=>({...NT(e),options:[e,t]}),GT=(e,t)=>({...LT(e),options:[e,t]}),KT=(e,t)=>({...FT(e),options:[e,t]});var YT="Arrow",_x=v.forwardRef((e,t)=>{const{children:n,width:a=10,height:r=5,...s}=e;return l.jsx(de.svg,{...s,ref:t,width:a,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:l.jsx("polygon",{points:"0,0 30,0 15,10"})})});_x.displayName=YT;var JT=_x;function QT(e){const[t,n]=v.useState(void 0);return Ke(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const a=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const s=r[0];let i,o;if("borderBoxSize"in s){const c=s.borderBoxSize,u=Array.isArray(c)?c[0]:c;i=u.inlineSize,o=u.blockSize}else i=e.offsetWidth,o=e.offsetHeight;n({width:i,height:o})});return a.observe(e,{box:"border-box"}),()=>a.unobserve(e)}else n(void 0)},[e]),t}var uh="Popper",[Ox,zc]=Cr(uh),[XT,Nx]=Ox(uh),Lx=e=>{const{__scopePopper:t,children:n}=e,[a,r]=v.useState(null);return l.jsx(XT,{scope:t,anchor:a,onAnchorChange:r,children:n})};Lx.displayName=uh;var zx="PopperAnchor",Bx=v.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:a,...r}=e,s=Nx(zx,n),i=v.useRef(null),o=Ce(t,i);return v.useEffect(()=>{s.onAnchorChange((a==null?void 0:a.current)||i.current)}),a?null:l.jsx(de.div,{...r,ref:o})});Bx.displayName=zx;var dh="PopperContent",[ZT,ej]=Ox(dh),Dx=v.forwardRef((e,t)=>
277{var U,fe,Oe,he,oe,pe;const{__scopePopper:n,side:a="bottom",sideOffset:r=0,align:s="center",alignOffset:i=0,arrowPadding:o=0,avoidCollisions:c=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:p="partial",hideWhenDetached:h=!1,updatePositionStrategy:m="optimized",onPlaced:w,...f}=e,x=Nx(dh,n),[b,g]=v.useState(null),y=Ce(t,et=>g(et)),[k,P]=v.useState(null),E=QT(k),S=(E==null?void 0:E.width)??0,A=(E==null?void 0:E.height)??0,T=a+(s!=="center"?"-"+s:""),j=typeof d=="number"?d:{top:0,right:0,bottom:0,left:0,...d},D=Array.isArray(u)?u:[u],z=D.length>0,_={padding:j,boundary:D.filter(nj),altBoundary:z},{refs:N,floatingStyles:$,placement:F,isPositioned:M,middlewareData:C}=MT({strategy:"fixed",placement:T,whileElementsMounted:(...et)=>IT(...et,{animationFrame:m==="always"}),elements:{reference:x.anchor},middleware:[UT({mainAxis:r+A,alignmentAxis:i}),c&&$T({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?WT():void 0,..._}),c&&VT({..._}),HT({..._,apply:({elements:et,rects:Ot,availableWidth:Ma,availableHeight:Yn})=>{const{width:Fa,height:Qs}=Ot.reference,Tr=et.floating.style;Tr.setProperty("--radix-popper-available-width",`${Ma}px`),Tr.setProperty("--radix-popper-available-height",`${Yn}px`),Tr.setProperty("--radix-popper-anchor-width",`${Fa}px`),Tr.setProperty("--radix-popper-anchor-height",`${Qs}px`)}}),k&&KT({element:k,padding:o}),aj({arrowWidth:S,arrowHeight:A}),h&&GT({strategy:"referenceHidden",..._})]}),[I,q]=Fx(F),W=dn(w);Ke(()=>{M&&(W==null||W())},[M,W]);const G=(U=C.arrow)==null?void 0:U.x,Q=(fe=C.arrow)==null?void 0:fe.y,X=((Oe=C.arrow)==null?void 0:Oe.centerOffset)!==0,[ve,_e]=v.useState();return Ke(()=>{b&&_e(window.getComputedStyle(b).zIndex)},[b]),l.jsx("div",{ref:N.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:M?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ve,"--radix-popper-transform-origin":[(he=C.transformOrigin)==null?void 0:he.x,(oe=C.transformOrigin)==null?void 0:oe.y].join(" "),...((pe=C.hide)==null?void 0:pe.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:l.jsx(ZT,{scope:n,placedSide:I,onArrowChange:P,arrowX:G,arrowY:Q,shouldHideArrow:X,children:l.jsx(de.div,{"data-side":I,"data-align":q,...f,ref:y,style:{...f.style,animation:M?void 0:"none"}})})})});Dx.displayName=dh;var qx="PopperArrow",tj={top:"bottom",right:"left",bottom:"top",left:"right"},Mx=v.forwardRef(function(t,n){const{__scopePopper:a,...r}=t,s=ej(qx,a),i=tj[s.placedSide];return l.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:l.jsx(JT,{...r,ref:n,style:{...r.style,display:"block"}})})});Mx.displayName=qx;function nj(e){return e!==null}var aj=e=>({name:"transformOrigin",options:e,fn(t){var x,b,g;const{placement:n,rects:a,middlewareData:r}=t,i=((x=r.arrow)==null?void 0:x.centerOffset)!==0,o=i?0:e.arrowWidth,c=i?0:e.arrowHeight,[u,d]=Fx(n),p={start:"0%",center:"50%",end:"100%"}[d],h=(((b=r.arrow)==null?void 0:b.x)??0)+o/2,m=(((g=r.arrow)==null?void 0:g.y)??0)+c/2;let w="",f="";return u==="bottom"?(w=i?p:`${h}px`,f=`${-c}px`):u==="top"?(w=i?p:`${h}px`,f=`${a.floating.height+c}px`):u==="right"?(w=`${-c}px`,f=i?p:`${m}px`):u==="left"&&(w=`${a.floating.width+c}px`,f=i?p:`${m}px`),{data:{x:w,y:f}}}});function Fx(e){const[t,n="center"]=e.split("-");return[t,n]}var Ux=Lx,$x=Bx,Wx=Dx,Vx=Mx,[Bc,$M]=Cr("Tooltip",[zc]),Dc=zc(),Hx="TooltipProvider",rj=700,gp="tooltip.open",[sj,ph]=Bc(Hx),Gx=e=>{const{__scopeTooltip:t,delayDuration:n=rj,skipDelayDuration:a=300,disableHoverableContent:r=!1,children:s}=e,i=v.useRef(!0),o=v.useRef(!1),c=v.useRef(0);return v.useEffect(()=>{const u=c.current;return()=>window.clearTimeout(u)},[]),l.jsx(sj,{scope:t,isOpenDelayedRef:i,delayDuration:n,onOpen:v.useCallback(()=>{window.clearTimeout(c.current),i.current=!1},[]),onClose:v.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>i.current=!0,a)},[a]),isPointerInTransitRef:o,onPointerInTransitChange:v.useCallback(u=>{o.current=u},[]),disableHoverableContent:r,children:s})};Gx.displayName=Hx;var eo="Tooltip",[ij,qc]=Bc(eo),Kx=e=>{const{__scopeTooltip:t,children:n,open:a,defaultOpen:r,onOpenChange:s,disableHoverableContent:i,delayDuration:o}=e,c=ph(eo,e.__scopeTooltip),u=Dc(t),[d,p]=v.useState(null),h=$s(),m=v.useRef(0),w=i??c.disableHoverableContent,f=o??c.delayDuration,x=v.useRef(!1),[b,g]=vr({prop:a,defaultProp:r??!1,onChange:S=>{S?(c.onOpen(),document.dispatchEvent(new CustomEvent(gp))):c.onClose(),s==null||s(S)},caller:eo}
vendor: 4,442 bytes, line 277
277),y=v.useMemo(()=>b?x.current?"delayed-open":"instant-open":"closed",[b]),k=v.useCallback(()=>{window.clearTimeout(m.current),m.current=0,x.current=!1,g(!0)},[g]),P=v.useCallback(()=>{window.clearTimeout(m.current),m.current=0,g(!1)},[g]),E=v.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{x.current=!0,g(!0),m.current=0},f)},[f,g]);return v.useEffect(()=>()=>{m.current&&(window.clearTimeout(m.current),m.current=0)},[]),l.jsx(Ux,{...u,children:l.jsx(ij,{scope:t,contentId:h,open:b,stateAttribute:y,trigger:d,onTriggerChange:p,onTriggerEnter:v.useCallback(()=>{c.isOpenDelayedRef.current?E():k()},[c.isOpenDelayedRef,E,k]),onTriggerLeave:v.useCallback(()=>{w?P():(window.clearTimeout(m.current),m.current=0)},[P,w]),onOpen:k,onClose:P,disableHoverableContent:w,children:n})})};Kx.displayName=eo;var vp="TooltipTrigger",Yx=v.forwardRef((e,t)=>{const{__scopeTooltip:n,...a}=e,r=qc(vp,n),s=ph(vp,n),i=Dc(n),o=v.useRef(null),c=Ce(t,o,r.onTriggerChange),u=v.useRef(!1),d=v.useRef(!1),p=v.useCallback(()=>u.current=!1,[]);return v.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),l.jsx($x,{asChild:!0,...i,children:l.jsx(de.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...a,ref:c,onPointerMove:se(e.onPointerMove,h=>{h.pointerType!=="touch"&&!d.current&&!s.isPointerInTransitRef.current&&(r.onTriggerEnter(),d.current=!0)}),onPointerLeave:se(e.onPointerLeave,()=>{r.onTriggerLeave(),d.current=!1}),onPointerDown:se(e.onPointerDown,()=>{r.open&&r.onClose(),u.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:se(e.onFocus,()=>{u.current||r.onOpen()}),onBlur:se(e.onBlur,r.onClose),onClick:se(e.onClick,r.onClose)})})});Yx.displayName=vp;var oj="TooltipPortal",[WM,lj]=Bc(oj,{forceMount:void 0}),Bs="TooltipContent",Jx=v.forwardRef((e,t)=>{const n=lj(Bs,e.__scopeTooltip),{forceMount:a=n.forceMount,side:r="top",...s}=e,i=qc(Bs,e.__scopeTooltip);return l.jsx(Ic,{present:a||i.open,children:i.disableHoverableContent?l.jsx(Qx,{side:r,...s,ref:t}):l.jsx(cj,{side:r,...s,ref:t})})}),cj=v.forwardRef((e,t)=>{const n=qc(Bs,e.__scopeTooltip),a=ph(Bs,e.__scopeTooltip),r=v.useRef(null),s=Ce(t,r),[i,o]=v.useState(null),{trigger:c,onClose:u}=n,d=r.current,{onPointerInTransitChange:p}=a,h=v.useCallback(()=>{o(null),p(!1)},[p]),m=v.useCallback((w,f)=>{const x=w.currentTarget,b={x:w.clientX,y:w.clientY},g=hj(b,x.getBoundingClientRect()),y=fj(b,g),k=gj(f.getBoundingClientRect()),P=yj([...y,...k]);o(P),p(!0)},[p]);return v.useEffect(()=>()=>h(),[h]),v.useEffect(()=>{if(c&&d){const w=x=>m(x,d),f=x=>m(x,c);return c.addEventListener("pointerleave",w),d.addEventListener("pointerleave",f),()=>{c.removeEventListener("pointerleave",w),d.removeEventListener("pointerleave",f)}}},[c,d,m,h]),v.useEffect(()=>{if(i){const w=f=>{const x=f.target,b={x:f.clientX,y:f.clientY},g=(c==null?void 0:c.contains(x))||(d==null?void 0:d.contains(x)),y=!vj(b,i);g?h():y&&(h(),u())};return document.addEventListener("pointermove",w),()=>document.removeEventListener("pointermove",w)}},[c,d,i,u,h]),l.jsx(Qx,{...e,ref:s})}),[uj,dj]=Bc(eo,{isInside:!1}),pj=h1("TooltipContent"),Qx=v.forwardRef((e,t)=>{const{__scopeTooltip:n,children:a,"aria-label":r,onEscapeKeyDown:s,onPointerDownOutside:i,...o}=e,c=qc(Bs,n),u=Dc(n),{onClose:d}=c;return v.useEffect(()=>(document.addEventListener(gp,d),()=>document.removeEventListener(gp,d)),[d]),v.useEffect(()=>{if(c.trigger){const p=h=>{const m=h.target;m!=null&&m.contains(c.trigger)&&d()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[c.trigger,d]),l.jsx(jc,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:i,onFocusOutside:p=>p.preventDefault(),onDismiss:d,children:l.jsxs(Wx,{"data-state":c.stateAttribute,...u,...o,ref:t,style:{...o.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[l.jsx(pj,{children:a}),l.jsx(uj,{scope:n,isInside:!0,children:l.jsx(z1,{id:c.contentId,role:"tooltip",children:r||a})})]})})});Jx.displayName=Bs;var Xx="TooltipArrow",mj=v.forwardRef((e,t)=>
277{const{__scopeTooltip:n,...a}=e,r=Dc(n);return dj(Xx,n).isInside?null:l.jsx(Vx,{...r,...a,ref:t})});mj.displayName=Xx;function hj(e,t){const n=Math.abs(t.top-e.y),a=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),s=Math.abs(t.left-e.x);switch(Math.min(n,a,r,s)){case s:return"left";case r:return"right";case n:return"top";case a:return"bottom";default:throw new Error("unreachable")}}function fj(e,t,n=5){const a=[];switch(t){case"top":a.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":a.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":a.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":a.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return a}function gj(e){const{top:t,right:n,bottom:a,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:a},{x:r,y:a}]}function vj(e,t){const{x:n,y:a}=e;let r=!1;for(let s=0,i=t.length-1;s<t.length;i=s++){const o=t[s],c=t[i],u=o.x,d=o.y,p=c.x,h=c.y;d>a!=h>a&&n<(p-u)*(a-d)/(h-d)+u&&(r=!r)}return r}function yj(e){const t=e.slice();return t.sort((n,a)=>n.x<a.x?-1:n.x>a.x?1:n.y<a.y?-1:n.y>a.y?1:0),bj(t)}function bj(e){if(e.length<=1)return e.slice();const t=[];for(let a=0;a<e.length;a++){const r=e[a];for(;t.length>=2;){const s=t[t.length-1],i=t[t.length-2];if((s.x-i.x)*(r.y-i.y)>=(s.y-i.y)*(r.x-i.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let a=e.length-1;a>=0;a--){const r=e[a];for(;n.length>=2;){const s=n[n.length-1],i=n[n.length-2];if((s.x-i.x)*(r.y-i.y)>=(s.y-i.y)*(r.x-i.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var wj=Gx,xj=Kx,kj=Yx,Zx=Jx;const Sj=wj,VM=xj,HM=kj,Pj=v.forwardRef(({className:e,sideOffset:t=4,...n},a)=>l.jsx(Zx,{ref:a,sideOffset:t,className:We("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n}));Pj.displayName=Zx.displayName;var Mc=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Fc=typeof window>"u"||"Deno"in globalThis;function Zt(){}function Aj(e,t){return typeof e=="function"?e(t):e}function Ej(e){return typeof e=="number"&&e>=0&&e!==1/0}function Cj(e,t){return Math.max(e+(t||0)-Date.now(),0)}function yp(e,t){return typeof e=="function"?e(t):e}function Tj(e,t){return typeof e=="function"?e(t):e}function Sg(e,t){const{type:n="all",exact:a,fetchStatus:r,predicate:s,queryKey:i,stale:o}=e;if(i){if(a){if(t.queryHash!==mh(i,t.options))return!1}else if(!no(t.queryKey,i))return!1}if(n!=="all"){const c=t.isActive();if(n==="active"&&!c||n==="inactive"&&c)return!1}return!(typeof o=="boolean"&&t.isStale()!==o||r&&r!==t.state.fetchStatus||s&&!s(t))}function Pg(e,t){const{exact:n,status:a,predicate:r,mutationKey:s}=e;if(s){if(!t.options.mutationKey)return!1;if(n){if(to(t.options.mutationKey)!==to(s))return!1}else if(!no(t.options.mutationKey,s))return!1}return!(a&&t.state.status!==a||r&&!r(t))}function mh(e,t){return((t==null?void 0:t.queryKeyHashFn)||to)(e)}function to(e){return JSON.stringify(e,(t,n)=>bp(n)?Object.keys(n).sort().reduce((a,r)=>(a[r]=n[r],a),{}):n)}function no(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>no(e[n],t[n])):!1}function ek(e,t){if(e===t)return e;const n=Ag(e)&&Ag(t);if(n||bp(e)&&bp(t)){const a=n?e:Object.keys(e),r=a.length,s=n?t:Object.keys(t),i=s.length,o=n?[]:{},c=new Set(a);let u=0;for(let d=0;d<i;d++){const p=n?d:s[d];(!n&&c.has(p)||n)&&e[p]===void 0&&t[p]===void 0?(o[p]=void 0,u++):(o[p]=ek(e[p],t[p]),o[p]===e[p]&&e[p]!==void 0&&u++)}return r===i&&u===r?e:o}return t}function Ag(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function bp(e){if(!Eg(e))return!1;const t=e.constructor;if(t===void 0)return!0;const n=t.prototype;return!(!Eg(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function Eg(e){return Object.prototype.toString.call(e)==="[object Object]"}function jj(e){return new Promise(t=>{setTimeout(t,e)})}function Ij(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?ek(e,t):t}function Rj(e,t,n=0){const a=[...e,t];return n&&a.length>n?a.slice(1):a}function _j(e,t,n=0){const a=[t,...e];return n&&a.length>n?a.slice(0,-1):a}var hh=Symbol();function tk(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===hh?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var ar,da,ws,ay,Oj=(ay=class extends Mc{constructor(){super();me(this,ar);me(this,da);me(this,ws);ne(this,ws,t=>{if(!Fc&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){L(this,da)||this.setEventListener(L(this,ws))}onUnsubscribe(){var t;this.hasListeners()||((t=L(this,da))==null||t.call(this),ne(this,da,void 0))}setEventListener(t){var n;ne(this,ws,t),(n=L(this,da))==null||n.call(this),ne(this,da,t(a=>{typeof a=="boolean"?this.setFocused(a):this.onFocus()}))}setFocused(t){L(this,ar)!==t&&(ne(this,ar,t),this.onFocus())}onFocus(){const t=this.isFocused();
vendor: 10,626 bytes, line 277
277this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof L(this,ar)=="boolean"?L(this,ar):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},ar=new WeakMap,da=new WeakMap,ws=new WeakMap,ay),nk=new Oj,xs,pa,ks,ry,Nj=(ry=class extends Mc{constructor(){super();me(this,xs,!0);me(this,pa);me(this,ks);ne(this,ks,t=>{if(!Fc&&window.addEventListener){const n=()=>t(!0),a=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",a)}}})}onSubscribe(){L(this,pa)||this.setEventListener(L(this,ks))}onUnsubscribe(){var t;this.hasListeners()||((t=L(this,pa))==null||t.call(this),ne(this,pa,void 0))}setEventListener(t){var n;ne(this,ks,t),(n=L(this,pa))==null||n.call(this),ne(this,pa,t(this.setOnline.bind(this)))}setOnline(t){L(this,xs)!==t&&(ne(this,xs,t),this.listeners.forEach(a=>{a(t)}))}isOnline(){return L(this,xs)}},xs=new WeakMap,pa=new WeakMap,ks=new WeakMap,ry),nc=new Nj;function Lj(){let e,t;const n=new Promise((r,s)=>{e=r,t=s});n.status="pending",n.catch(()=>{});function a(r){Object.assign(n,r),delete n.resolve,delete n.reject}return n.resolve=r=>{a({status:"fulfilled",value:r}),e(r)},n.reject=r=>{a({status:"rejected",reason:r}),t(r)},n}function zj(e){return Math.min(1e3*2**e,3e4)}function ak(e){return(e??"online")==="online"?nc.isOnline():!0}var rk=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function Du(e){return e instanceof rk}function sk(e){let t=!1,n=0,a=!1,r;const s=Lj(),i=f=>{var x;a||(h(new rk(f)),(x=e.abort)==null||x.call(e))},o=()=>{t=!0},c=()=>{t=!1},u=()=>nk.isFocused()&&(e.networkMode==="always"||nc.isOnline())&&e.canRun(),d=()=>ak(e.networkMode)&&e.canRun(),p=f=>{var x;a||(a=!0,(x=e.onSuccess)==null||x.call(e,f),r==null||r(),s.resolve(f))},h=f=>{var x;a||(a=!0,(x=e.onError)==null||x.call(e,f),r==null||r(),s.reject(f))},m=()=>new Promise(f=>{var x;r=b=>{(a||u())&&f(b)},(x=e.onPause)==null||x.call(e)}).then(()=>{var f;r=void 0,a||(f=e.onContinue)==null||f.call(e)}),w=()=>{if(a)return;let f;const x=n===0?e.initialPromise:void 0;try{f=x??e.fn()}catch(b){f=Promise.reject(b)}Promise.resolve(f).then(p).catch(b=>{var E;if(a)return;const g=e.retry??(Fc?0:3),y=e.retryDelay??zj,k=typeof y=="function"?y(n,b):y,P=g===!0||typeof g=="number"&&n<g||typeof g=="function"&&g(n,b);if(t||!P){h(b);return}n++,(E=e.onFail)==null||E.call(e,n,b),jj(k).then(()=>u()?void 0:m()).then(()=>{t?h(b):w()})})};return{promise:s,cancel:i,continue:()=>(r==null||r(),s),cancelRetry:o,continueRetry:c,canStart:d,start:()=>(d()?w():m().then(w),s)}}var Bj=e=>setTimeout(e,0);function Dj(){let e=[],t=0,n=o=>{o()},a=o=>{o()},r=Bj;const s=o=>{t?e.push(o):r(()=>{n(o)})},i=()=>{const o=e;e=[],o.length&&r(()=>{a(()=>{o.forEach(c=>{n(c)})})})};return{batch:o=>{let c;t++;try{c=o()}finally{t--,t||i()}return c},batchCalls:o=>(...c)=>{s(()=>{o(...c)})},schedule:s,setNotifyFunction:o=>{n=o},setBatchNotifyFunction:o=>{a=o},setScheduler:o=>{r=o}}}var ut=Dj(),rr,sy,ik=(sy=class{constructor(){me(this,rr)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ej(this.gcTime)&&ne(this,rr,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Fc?1/0:5*60*1e3))}clearGcTimeout(){L(this,rr)&&(clearTimeout(L(this,rr)),ne(this,rr,void 0))}},rr=new WeakMap,sy),Ss,sr,zt,ir,rt,mo,or,tn,Rn,iy,qj=(iy=class extends ik{constructor(t){super();me(this,tn);me(this,Ss);me(this,sr);me(this,zt);me(this,ir);me(this,rt);me(this,mo);me(this,or);ne(this,or,!1),ne(this,mo,t.defaultOptions),this.setOptions(t.options),this.observers=[],ne(this,ir,t.client),ne(this,zt,L(this,ir).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,ne(this,Ss,Fj(this.options)),this.state=t.state??L(this,Ss),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=L(this,rt))==null?void 0:t.promise}setOptions(t){this.options={...L(this,mo),...t},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&L(this,zt).remove(this)}setData(t,n){const a=Ij(this.state.data,t,this.options);return tt(this,tn,Rn).call(this,{data:a,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),a}setState(t,n){tt(this,tn,Rn).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var a,r;const n=(a=L(this,rt))==null?void 0:a.promise;return(r=L(this,rt))==null||r.cancel(t),n?n.then(Zt).catch(Zt):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(L(this,Ss))}isActive(){return this.observers.some(t=>Tj(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===hh||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>yp(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!Cj(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=this.observers.find(a=>a.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=L(this,rt))==null||n.continue()}onOnline(){var n;const t=this.observers.find(a=>a.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=L(this,rt))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),L(this,zt).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(L(this,rt)&&(L(this,or)?L(this,rt).cancel({revert:!0}):L(this,rt).cancelRetry()),this.scheduleGc()),L(this,zt).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||tt(this,tn,Rn).call(this,{type:"invalidate"})}fetch(t,n){var u,d,p;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(L(this,rt))return L(this,rt).continueRetry(),L(this,rt).promise}if(t&&this.setOptions(t),!this.options.queryFn){const h=this.observers.find(m=>m.options.queryFn);h&&this.setOptions(h.options)}const a=new AbortController,r=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(ne(this,or,!0),a.signal)})},s=()=>{const h=tk(this.options,n),w=(()=>{const f={client:L(this,ir),queryKey:this.queryKey,meta:this.meta};return r(f),f})();return ne(this,or,!1),this.options.persister?this.options.persister(h,w,this):h(w)},o=(()=>{const h={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:L(this,ir),state:this.state,fetchFn:s};return r(h),h})();(u=this.options.behavior)==null||u.onFetch(o,this),ne(this,sr,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((d=o.fetchOptions)==null?void 0:d.meta))&&tt(this,tn,Rn).call(this,{type:"fetch",meta:(p=o.fetchOptions)==null?void 0:p.meta});const c=h=>{var m,w,f,x;Du(h)&&h.silent||tt(this,tn,Rn).call(this,{type:"error",error:h}),Du(h)||((w=(m=L(this,zt).config).onError)==null||w.call(m,h,this),(x=(f=L(this,zt).config).onSettled)==null||x.call(f,this.state.data,h,this)),this.scheduleGc()};return ne(this,rt,sk({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,abort:a.abort.bind(a),onSuccess:h=>{var m,w,f,x;if(h===void 0){c(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(h)}catch(b){c(b);return}(w=(m=L(this,zt).config).onSuccess)==null||w.call(m,h,this),(x=(f=L(this,zt).config).onSettled)==null||x.call(f,h,this.state.error,this),this.scheduleGc()},onError:c,onFail:(h,m)=>{tt(this,tn,Rn).call(this,{type:"failed",failureCount:h,error:m})},onPause:()=>{tt(this,tn,Rn).call(this,{type:"pause"})},onContinue:()=>{tt(this,tn,Rn).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),L(this,rt).start()}},Ss=new WeakMap,sr=new WeakMap,zt=new WeakMap,ir=new WeakMap,rt=new WeakMap,mo=new WeakMap,or=new WeakMap,tn=new WeakSet,Rn=function(t){const n=a=>{switch(t.type){case"failed":return{...a,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...a,fetchStatus:"paused"};case"continue":return{...a,fetchStatus:"fetching"};case"fetch":return{...a,...Mj(a.data,this.options),fetchMeta:t.meta??null};case"success":return ne(this,sr,void 0),{...a,data:t.data,dataUpdateCount:a.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=t.error;return Du(r)&&r.revert&&L(this,sr)?{...L(this,sr),fetchStatus:"idle"}:{...a,error:r,errorUpdateCount:a.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:a.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...a,isInvalidated:!0};case"setState":return{...a,...t.state}}};this.state=n(this.state),ut.batch(()=>{this.observers.forEach(a=>{a.onQueryUpdate()}),L(this,zt).notify({query:this,type:"updated",action:t})})},iy);function Mj(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ak(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function Fj(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,a=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?a??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var vn,oy,Uj=(oy=class extends Mc{constructor(t={}){super();me(this,vn);this.config=t,ne(this,vn,new Map)}build(t,n,a){const r=n.queryKey,s=n.queryHash??mh(r,n);let i=this.get(s);return i||(i=new qj({client:t,queryKey:r,queryHash:s,options:t.defaultQueryOptions(n),state:a,defaultOptions:t.getQueryDefaults(r)}),this.add(i)),i}add(t){L(this,vn).has(t.queryHash)||(L(this,vn).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=L(this,vn).get(t.queryHash);n&&(t.destroy(),n===t&&L(this,vn).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){ut.batch(()=>
277{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return L(this,vn).get(t)}getAll(){return[...L(this,vn).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(a=>Sg(n,a))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(a=>Sg(t,a)):n}notify(t){ut.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){ut.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){ut.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},vn=new WeakMap,oy),yn,lt,lr,bn,aa,ly,$j=(ly=class extends ik{constructor(t){super();me(this,bn);me(this,yn);me(this,lt);me(this,lr);this.mutationId=t.mutationId,ne(this,lt,t.mutationCache),ne(this,yn,[]),this.state=t.state||Wj(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){L(this,yn).includes(t)||(L(this,yn).push(t),this.clearGcTimeout(),L(this,lt).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){ne(this,yn,L(this,yn).filter(n=>n!==t)),this.scheduleGc(),L(this,lt).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){L(this,yn).length||(this.state.status==="pending"?this.scheduleGc():L(this,lt).remove(this))}continue(){var t;return((t=L(this,lr))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var s,i,o,c,u,d,p,h,m,w,f,x,b,g,y,k,P,E,S,A;const n=()=>{tt(this,bn,aa).call(this,{type:"continue"})};ne(this,lr,sk({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(T,j)=>{tt(this,bn,aa).call(this,{type:"failed",failureCount:T,error:j})},onPause:()=>{tt(this,bn,aa).call(this,{type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>L(this,lt).canRun(this)}));const a=this.state.status==="pending",r=!L(this,lr).canStart();try{if(a)n();else{tt(this,bn,aa).call(this,{type:"pending",variables:t,isPaused:r}),await((i=(s=L(this,lt).config).onMutate)==null?void 0:i.call(s,t,this));const j=await((c=(o=this.options).onMutate)==null?void 0:c.call(o,t));j!==this.state.context&&tt(this,bn,aa).call(this,{type:"pending",context:j,variables:t,isPaused:r})}const T=await L(this,lr).start();return await((d=(u=L(this,lt).config).onSuccess)==null?void 0:d.call(u,T,t,this.state.context,this)),await((h=(p=this.options).onSuccess)==null?void 0:h.call(p,T,t,this.state.context)),await((w=(m=L(this,lt).config).onSettled)==null?void 0:w.call(m,T,null,this.state.variables,this.state.context,this)),await((x=(f=this.options).onSettled)==null?void 0:x.call(f,T,null,t,this.state.context)),tt(this,bn,aa).call(this,{type:"success",data:T}),T}catch(T){try{throw await((g=(b=L(this,lt).config).onError)==null?void 0:g.call(b,T,t,this.state.context,this)),await((k=(y=this.options).onError)==null?void 0:k.call(y,T,t,this.state.context)),await((E=(P=L(this,lt).config).onSettled)==null?void 0:E.call(P,void 0,T,this.state.variables,this.state.context,this)),await((A=(S=this.options).onSettled)==null?void 0:A.call(S,void 0,T,t,this.state.context)),T}finally{tt(this,bn,aa).call(this,{type:"error",error:T})}}finally{L(this,lt).runNext(this)}}},yn=new WeakMap,lt=new WeakMap,lr=new WeakMap,bn=new WeakSet,aa=function(t){const n=a=>{switch(t.type){case"failed":return{...a,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...a,isPaused:!0};case"continue":return{...a,isPaused:!1};case"pending":return{...a,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...a,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...a,data:void 0,error:t.error,failureCount:a.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),ut.batch(()=>{L(this,yn).forEach(a=>{a.onMutationUpdate(t)}),L(this,lt).notify({mutation:this,type:"updated",action:t})})},ly);function Wj(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Ln,nn,ho,cy,Vj=(cy=class extends Mc{constructor(t={}){super();me(this,Ln);me(this,nn);me(this,ho);this.config=t,ne(this,Ln,new Set),ne(this,nn,new Map),ne(this,ho,0)}build(t,n,a){const r=new $j({mutationCache:this,mutationId:++Ao(this,ho)._,options:t.defaultMutationOptions(n),state:a});return this.add(r),r}add(t){L(this,Ln).add(t);const n=Go(t);if(typeof n=="string"){const a=L(this,nn).get(n);a?a.push(t):L(this,nn).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(L(this,Ln).delete(t)){const n=Go(t);if(typeof n=="string"){const a=L(this,nn).get(n);if(a)if(a.length>1){const r=a.indexOf(t);r!==-1&&a.splice(r,1)}else a[0]===t&&L(this,nn).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){const n=Go(t);if(typeof n=="string"){const a=L(this,nn).get(n),r=a==null?void 0:a.find(s=>s.state.status==="pending");return!r||r===t}else return!0}runNext(t){var a;const n=Go(t);if(typeof n=="string"){const r=(a=L(this,nn).get(n))==null?void 0:a.find(s=>
vendor: 4,094 bytes, line 277
277s!==t&&s.state.isPaused);return(r==null?void 0:r.continue())??Promise.resolve()}else return Promise.resolve()}clear(){ut.batch(()=>{L(this,Ln).forEach(t=>{this.notify({type:"removed",mutation:t})}),L(this,Ln).clear(),L(this,nn).clear()})}getAll(){return Array.from(L(this,Ln))}find(t){const n={exact:!0,...t};return this.getAll().find(a=>Pg(n,a))}findAll(t={}){return this.getAll().filter(n=>Pg(t,n))}notify(t){ut.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return ut.batch(()=>Promise.all(t.map(n=>n.continue().catch(Zt))))}},Ln=new WeakMap,nn=new WeakMap,ho=new WeakMap,cy);function Go(e){var t;return(t=e.options.scope)==null?void 0:t.id}function Cg(e){return{onFetch:(t,n)=>{var d,p,h,m,w;const a=t.options,r=(h=(p=(d=t.fetchOptions)==null?void 0:d.meta)==null?void 0:p.fetchMore)==null?void 0:h.direction,s=((m=t.state.data)==null?void 0:m.pages)||[],i=((w=t.state.data)==null?void 0:w.pageParams)||[];let o={pages:[],pageParams:[]},c=0;const u=async()=>{let f=!1;const x=y=>{Object.defineProperty(y,"signal",{enumerable:!0,get:()=>(t.signal.aborted?f=!0:t.signal.addEventListener("abort",()=>{f=!0}),t.signal)})},b=tk(t.options,t.fetchOptions),g=async(y,k,P)=>{if(f)return Promise.reject();if(k==null&&y.pages.length)return Promise.resolve(y);const S=(()=>{const D={client:t.client,queryKey:t.queryKey,pageParam:k,direction:P?"backward":"forward",meta:t.options.meta};return x(D),D})(),A=await b(S),{maxPages:T}=t.options,j=P?_j:Rj;return{pages:j(y.pages,A,T),pageParams:j(y.pageParams,k,T)}};if(r&&s.length){const y=r==="backward",k=y?Hj:Tg,P={pages:s,pageParams:i},E=k(a,P);o=await g(P,E,y)}else{const y=e??s.length;do{const k=c===0?i[0]??a.initialPageParam:Tg(a,o);if(c>0&&k==null)break;o=await g(o,k),c++}while(c<y)}return o};t.options.persister?t.fetchFn=()=>{var f,x;return(x=(f=t.options).persister)==null?void 0:x.call(f,u,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=u}}}function Tg(e,{pages:t,pageParams:n}){const a=t.length-1;return t.length>0?e.getNextPageParam(t[a],t,n[a],n):void 0}function Hj(e,{pages:t,pageParams:n}){var a;return t.length>0?(a=e.getPreviousPageParam)==null?void 0:a.call(e,t[0],t,n[0],n):void 0}var Ne,ma,ha,Ps,As,fa,Es,Cs,uy,Gj=(uy=class{constructor(e={}){me(this,Ne);me(this,ma);me(this,ha);me(this,Ps);me(this,As);me(this,fa);me(this,Es);me(this,Cs);ne(this,Ne,e.queryCache||new Uj),ne(this,ma,e.mutationCache||new Vj),ne(this,ha,e.defaultOptions||{}),ne(this,Ps,new Map),ne(this,As,new Map),ne(this,fa,0)}mount(){Ao(this,fa)._++,L(this,fa)===1&&(ne(this,Es,nk.subscribe(async e=>{e&&(await this.resumePausedMutations(),L(this,Ne).onFocus())})),ne(this,Cs,nc.subscribe(async e=>{e&&(await this.resumePausedMutations(),L(this,Ne).onOnline())})))}unmount(){var e,t;Ao(this,fa)._--,L(this,fa)===0&&((e=L(this,Es))==null||e.call(this),ne(this,Es,void 0),(t=L(this,Cs))==null||t.call(this),ne(this,Cs,void 0))}isFetching(e){return L(this,Ne).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return L(this,ma).findAll({...e,status:"pending"}).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=L(this,Ne).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=L(this,Ne).build(this,t),a=n.state.data;return a===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(yp(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(a))}getQueriesData(e){return L(this,Ne).findAll(e).map(({queryKey:t,state:n})=>{const a=n.data;return[t,a]})}setQueryData(e,t,n){const a=this.defaultQueryOptions({queryKey:e}),r=L(this,Ne).get(a.queryHash),s=r==null?void 0:r.state.data,i=Aj(t,s);if(i!==void 0)return L(this,Ne).build(this,a).setData(i,{...n,manual:!0})}setQueriesData(e,t,n){return ut.batch(()=>L(this,Ne).findAll(e).map(({queryKey:a})=>[a,this.setQueryData(a,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=L(this,Ne).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=L(this,Ne);ut.batch(()=>
277{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=L(this,Ne);return ut.batch(()=>(n.findAll(e).forEach(a=>{a.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const n={revert:!0,...t},a=ut.batch(()=>L(this,Ne).findAll(e).map(r=>r.cancel(n)));return Promise.all(a).then(Zt).catch(Zt)}invalidateQueries(e,t={}){return ut.batch(()=>(L(this,Ne).findAll(e).forEach(n=>{n.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries({...e,type:(e==null?void 0:e.refetchType)??(e==null?void 0:e.type)??"active"},t)))}refetchQueries(e,t={}){const n={...t,cancelRefetch:t.cancelRefetch??!0},a=ut.batch(()=>L(this,Ne).findAll(e).filter(r=>!r.isDisabled()&&!r.isStatic()).map(r=>{let s=r.fetch(void 0,n);return n.throwOnError||(s=s.catch(Zt)),r.state.fetchStatus==="paused"?Promise.resolve():s}));return Promise.all(a).then(Zt)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=L(this,Ne).build(this,t);return n.isStaleByTime(yp(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Zt).catch(Zt)}fetchInfiniteQuery(e){return e.behavior=Cg(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Zt).catch(Zt)}ensureInfiniteQueryData(e){return e.behavior=Cg(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return nc.isOnline()?L(this,ma).resumePausedMutations():Promise.resolve()}getQueryCache(){return L(this,Ne)}getMutationCache(){return L(this,ma)}getDefaultOptions(){return L(this,ha)}setDefaultOptions(e){ne(this,ha,e)}setQueryDefaults(e,t){L(this,Ps).set(to(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...L(this,Ps).values()],n={};return t.forEach(a=>{no(e,a.queryKey)&&Object.assign(n,a.defaultOptions)}),n}setMutationDefaults(e,t){L(this,As).set(to(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...L(this,As).values()],n={};return t.forEach(a=>{no(e,a.mutationKey)&&Object.assign(n,a.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...L(this,ha).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=mh(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===hh&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...L(this,ha).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){L(this,Ne).clear(),L(this,ma).clear()}},Ne=new WeakMap,ma=new WeakMap,ha=new WeakMap,Ps=new WeakMap,As=new WeakMap,fa=new WeakMap,Es=new WeakMap,Cs=new WeakMap,uy),Kj=v.createContext(void 0),Yj=({client:e,children:t})=>(v.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),l.jsx(Kj.Provider,{value:e,children:t}));/**
278 * @remix-run/router v1.23.0
279 *
280 * Copyright (c) Remix Software Inc.
281 *
282 * This source code is licensed under the MIT license found in the
283 * LICENSE.md file in the root directory of this source tree.
284 *
285 * @license MIT
286 */function ao(){return ao=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},ao.apply(this,arguments)}var ya;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(ya||(ya={}));const jg="popstate";function Jj(e){e===void 0&&(e={});function t(a,r){let{pathname:s,search:i,hash:o}=a.location;return wp("",{pathname:s,search:i,hash:o},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function n(a,r){return typeof r=="string"?r:ac(r)}return Xj(t,n,null,e)}function De(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function ok(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Qj(){return Math.random().toString(36).substr(2,8)}function Ig(e,t){return{usr:e.state,key:e.key,idx:t}}function wp(e,t,n,a){return n===void 0&&(n=null),ao({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Hs(t):t,{state:n,key:t&&t.key||a||Qj()})}function ac(e){let{pathname:t="/",search:n="",hash:a=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),a&&a!=="#"&&(t+=a.charAt(0)==="#"?a:"#"+a),t}function Hs(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let a=e.indexOf("?");a>=0&&(t.search=e.substr(a),e=e.substr(0,a)),e&&(t.pathname=e)}return t}function Xj(e,t,n,a){a===void 0&&(a={});let{window:r=document.defaultView,v5Compat:s=!1}=a,i=r.history,o=ya.Pop,c=null,u=d();u==null&&(u=0,i.replaceState(ao({},i.state,{idx:u}),""));function d(){return(i.state||{idx:null}).idx}function p(){o=ya.Pop;let x=d(),b=x==null?null:x-u;u=x,c&&c({action:o,location:f.location,delta:b})}function h(x,b){o=ya.Push;let g=wp(f.location,x,b);u=d()+1;let y=Ig(g,u),k=f.createHref(g);try{i.pushState(y,"",k)}
vendor: 3,324 bytes, line 286
286catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;r.location.assign(k)}s&&c&&c({action:o,location:f.location,delta:1})}function m(x,b){o=ya.Replace;let g=wp(f.location,x,b);u=d();let y=Ig(g,u),k=f.createHref(g);i.replaceState(y,"",k),s&&c&&c({action:o,location:f.location,delta:0})}function w(x){let b=r.location.origin!=="null"?r.location.origin:r.location.href,g=typeof x=="string"?x:ac(x);return g=g.replace(/ $/,"%20"),De(b,"No window.location.(origin|href) available to create URL for href: "+g),new URL(g,b)}let f={get action(){return o},get location(){return e(r,i)},listen(x){if(c)throw new Error("A history only accepts one active listener");return r.addEventListener(jg,p),c=x,()=>{r.removeEventListener(jg,p),c=null}},createHref(x){return t(r,x)},createURL:w,encodeLocation(x){let b=w(x);return{pathname:b.pathname,search:b.search,hash:b.hash}},push:h,replace:m,go(x){return i.go(x)}};return f}var Rg;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Rg||(Rg={}));function Zj(e,t,n){return n===void 0&&(n="/"),eI(e,t,n,!1)}function eI(e,t,n,a){let r=typeof t=="string"?Hs(t):t,s=fh(r.pathname||"/",n);if(s==null)return null;let i=lk(e);tI(i);let o=null;for(let c=0;o==null&&c<i.length;++c){let u=pI(s);o=uI(i[c],u,a)}return o}function lk(e,t,n,a){t===void 0&&(t=[]),n===void 0&&(n=[]),a===void 0&&(a="");let r=(s,i,o)=>{let c={relativePath:o===void 0?s.path||"":o,caseSensitive:s.caseSensitive===!0,childrenIndex:i,route:s};c.relativePath.startsWith("/")&&(De(c.relativePath.startsWith(a),'Absolute route path "'+c.relativePath+'" nested under path '+('"'+a+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),c.relativePath=c.relativePath.slice(a.length));let u=Ta([a,c.relativePath]),d=n.concat(c);s.children&&s.children.length>0&&(De(s.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),lk(s.children,t,d,u)),!(s.path==null&&!s.index)&&t.push({path:u,score:lI(u,s.index),routesMeta:d})};return e.forEach((s,i)=>{var o;if(s.path===""||!((o=s.path)!=null&&o.includes("?")))r(s,i);else for(let c of ck(s.path))r(s,i,c)}),t}function ck(e){let t=e.split("/");if(t.length===0)return[];let[n,...a]=t,r=n.endsWith("?"),s=n.replace(/\?$/,"");if(a.length===0)return r?[s,""]:[s];let i=ck(a.join("/")),o=[];return o.push(...i.map(c=>c===""?s:[s,c].join("/"))),r&&o.push(...i),o.map(c=>e.startsWith("/")&&c===""?"/":c)}function tI(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:cI(t.routesMeta.map(a=>a.childrenIndex),n.routesMeta.map(a=>a.childrenIndex)))}const nI=/^:[\w-]+$/,aI=3,rI=2,sI=1,iI=10,oI=-2,_g=e=>e==="*";function lI(e,t){let n=e.split("/"),a=n.length;return n.some(_g)&&(a+=oI),t&&(a+=rI),n.filter(r=>!_g(r)).reduce((r,s)=>r+(nI.test(s)?aI:s===""?sI:iI),a)}function cI(e,t){return e.length===t.length&&e.slice(0,-1).every((a,r)=>a===t[r])?e[e.length-1]-t[t.length-1]:0}function uI(e,t,n){let{routesMeta:a}=e,r={},s="/",i=[];for(let o=0;o<a.length;++o){let c=a[o],u=o===a.length-1,d=s==="/"?t:t.slice(s.length)||"/",p=Og({path:c.relativePath,caseSensitive:c.caseSensitive,end:u},d),h=c.route;if(!p&&u&&n&&!a[a.length-1].route.index&&(p=Og({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},d)),!p)return null;
vendor: 9,263 bytes, lines 286-295
286Object.assign(r,p.params),i.push({params:r,pathname:Ta([s,p.pathname]),pathnameBase:gI(Ta([s,p.pathnameBase])),route:h}),p.pathnameBase!=="/"&&(s=Ta([s,p.pathnameBase]))}return i}function Og(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,a]=dI(e.path,e.caseSensitive,e.end),r=t.match(n);if(!r)return null;let s=r[0],i=s.replace(/(.)\/+$/,"$1"),o=r.slice(1);return{params:a.reduce((u,d,p)=>{let{paramName:h,isOptional:m}=d;if(h==="*"){let f=o[p]||"";i=s.slice(0,s.length-f.length).replace(/(.)\/+$/,"$1")}const w=o[p];return m&&!w?u[h]=void 0:u[h]=(w||"").replace(/%2F/g,"/"),u},{}),pathname:s,pathnameBase:i,pattern:e}}function dI(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),ok(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let a=[],r="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,o,c)=>(a.push({paramName:o,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(a.push({paramName:"*"}),r+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?r+="\\/*$":e!==""&&e!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,t?void 0:"i"),a]}function pI(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ok(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function fh(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,a=e.charAt(n);return a&&a!=="/"?null:e.slice(n)||"/"}function mI(e,t){t===void 0&&(t="/");let{pathname:n,search:a="",hash:r=""}=typeof e=="string"?Hs(e):e;return{pathname:n?n.startsWith("/")?n:hI(n,t):t,search:vI(a),hash:yI(r)}}function hI(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(r=>{r===".."?n.length>1&&n.pop():r!=="."&&n.push(r)}),n.length>1?n.join("/"):"/"}function qu(e,t,n,a){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(a)+"].  Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function fI(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function gh(e,t){let n=fI(e);return t?n.map((a,r)=>r===n.length-1?a.pathname:a.pathnameBase):n.map(a=>a.pathnameBase)}function vh(e,t,n,a){a===void 0&&(a=!1);let r;typeof e=="string"?r=Hs(e):(r=ao({},e),De(!r.pathname||!r.pathname.includes("?"),qu("?","pathname","search",r)),De(!r.pathname||!r.pathname.includes("#"),qu("#","pathname","hash",r)),De(!r.search||!r.search.includes("#"),qu("#","search","hash",r)));let s=e===""||r.pathname==="",i=s?"/":r.pathname,o;if(i==null)o=n;else{let p=t.length-1;if(!a&&i.startsWith("..")){let h=i.split("/");for(;h[0]==="..";)h.shift(),p-=1;r.pathname=h.join("/")}o=p>=0?t[p]:"/"}let c=mI(r,o),u=i&&i!=="/"&&i.endsWith("/"),d=(s||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(u||d)&&(c.pathname+="/"),c}const Ta=e=>e.join("/").replace(/\/\/+/g,"/"),gI=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),vI=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,yI=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function bI(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const uk=["post","put","patch","delete"];new Set(uk);const wI=["get",...uk];new Set(wI);/**
287 * React Router v6.30.1
288 *
289 * Copyright (c) Remix Software Inc.
290 *
291 * This source code is licensed under the MIT license found in the
292 * LICENSE.md file in the root directory of this source tree.
293 *
294 * @license MIT
295 */function ro(){return ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},ro.apply(this,arguments)}const yh=v.createContext(null),xI=v.createContext(null),Ba=v.createContext(null),Uc=v.createContext(null),Hn=v.createContext({outlet:null,matches:[],isDataRoute:!1}),dk=v.createContext(null);function kI(e,t){let{relative:n}=t===void 0?{}:t;Gs()||De(!1);let{basename:a,navigator:r}=v.useContext(Ba),{hash:s,pathname:i,search:o}=mk(e,{relative:n}),c=i;return a!=="/"&&(c=i==="/"?a:Ta([a,i])),r.createHref({pathname:c,search:o,hash:s})}function Gs(){return v.useContext(Uc)!=null}function $t(){return Gs()||De(!1),v.useContext(Uc).location}function pk(e){v.useContext(Ba).static||v.useLayoutEffect(e)}function bh(){let{isDataRoute:e}=v.useContext(Hn);return e?LI():SI()}function SI(){Gs()||De(!1);let e=v.useContext(yh),{basename:t,future:n,navigator:a}=v.useContext(Ba),{matches:r}=v.useContext(Hn),{pathname:s}=$t(),i=JSON.stringify(gh(r,n.v7_relativeSplatPath)),o=v.useRef(!1);return pk(()=>{o.current=!0}),v.useCallback(function(u,d){if(d===void 0&&(d={}),!o.current)return;if(typeof u=="number"){a.go(u);return}let p=vh(u,JSON.parse(i),s,d.relative==="path");e==null&&t!=="/"&&(p.pathname=p.pathname==="/"?t:Ta([t,p.pathname])),(d.replace?a.replace:a.push)(p,d.state,d)},[t,a,i,s,e])}function Ks(){let{matches:e}=v.useContext(Hn),t=e[e.length-1];return t?t.params:{}}function mk(e,t){let{relative:n}=t===void 0?{}:t,{future:a}=v.useContext(Ba),{matches:r}=v.useContext(Hn),{pathname:s}=$t(),i=JSON.stringify(gh(r,a.v7_relativeSplatPath));return v.useMemo(()=>vh(e,JSON.parse(i),s,n==="path"),[e,i,s,n])}function PI(e,t){return AI(e,t)}function AI(e,t,n,a){Gs()||De(!1);let{navigator:r}=v.useContext(Ba),{matches:s}=v.useContext(Hn),i=s[s.length-1],o=i?i.params:{};i&&i.pathname;let c=i?i.pathnameBase:"/";i&&i.route;let u=$t(),d;if(t){var p;let x=typeof t=="string"?Hs(t):t;c==="/"||(p=x.pathname)!=null&&p.startsWith(c)||De(!1),d=x}else d=u;let h=d.pathname||"/",m=h;if(c!=="/"){let x=c.replace(/^\//,"").split("/");m="/"+h.replace(/^\//,"").split("/").slice(x.length).join("/")}let w=Zj(e,{pathname:m}),f=II(w&&w.map(x=>Object.assign({},x,{params:Object.assign({},o,x.params),pathname:Ta([c,r.encodeLocation?r.encodeLocation(x.pathname).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?c:Ta([c,r.encodeLocation?r.encodeLocation(x.pathnameBase).pathname:x.pathnameBase])})),s,n,a);return t&&f?v.createElement(Uc.Provider,{value:{location:ro({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:ya.Pop}},f):f}function EI(){let e=NI(),t=bI(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return v.createElement(v.Fragment,null,v.createElement("h2",null,"Unexpected Application Error!"),v.createElement("h3",{style:{fontStyle:"italic"}},t),n?v.createElement("pre",{style:r},n):null,null)}const CI=v.createElement(EI,null);class TI extends v.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?v.createElement(Hn.Provider,{value:this.props.routeContext},v.createElement(dk.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function jI(e){let{routeContext:t,match:n,children:a}=e,r=v.useContext(yh);return r&&r.static&&r.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=n.route.id),v.createElement(Hn.Provider,{value:t},a)}function II(e,t,n,a){var r;if(t===void 0&&(t=[]),n===void 0&&(n=null),a===void 0&&(a=null),e==null){var s;if(!n)return null;if(n.errors)e=n.matches;else if((s=a)!=null&&s.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,o=(r=n)==null?void 0:r.errors;if(o!=null){let d=i.findIndex(p=>p.route.id&&(o==null?void 0:o[p.route.id])!==void 0);d>=0||De(!1),i=i.slice(0,Math.min(i.length,d+1))}let c=!1,u=-1;if(n&&a&&a.v7_partialHydration)for(let d=0;d<i.length;d++){let p=i[d];if((p.route.HydrateFallback||p.route.hydrateFallbackElement)&&(u=d),p.route.id){let{loaderData:h,errors:m}=n,w=p.route.loader&&h[p.route.id]===void 0&&(!m||m[p.route.id]===void 0);if(p.route.lazy||w){c=!0,u>=0?i=i.slice(0,u+1):i=[i[0]];break}}}return i.reduceRight((d,p,h)=>{let m,w=!1,f=null,x=null;n&&(m=o&&p.route.id?o[p.route.id]:void 0,f=p.route.errorElement||CI,c&&(u<0&&h===0?(w=!0,x=null):u===h&&(w=!0,x=p.route.hydrateFallbackElement||null)));let b=t.concat(i.slice(0,h+1)),g=()=>{let y;return m?y=f:w?y=x:p.route.Component?y=v.createElement(p.route.Component,null):p.route.element?y=p.route.element:y=d,v.createElement(jI,{match:p,routeC
295ontext:{outlet:d,matches:b,isDataRoute:n!=null},children:y})};return n&&(p.route.ErrorBoundary||p.route.errorElement||h===0)?v.createElement(TI,{location:n.location,revalidation:n.revalidation,component:f,error:m,children:g(),routeContext:{outlet:null,matches:b,isDataRoute:!0}}):g()},null)}var hk=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(hk||{}),rc=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(rc||{});function RI(e){let t=v.useContext(yh);return t||De(!1),t}function _I(e){let t=v.useContext(xI);return t||De(!1),t}function OI(e){let t=v.useContext(Hn);return t||De(!1),t}function fk(e){let t=OI(),n=t.matches[t.matches.length-1];return n.route.id||De(!1),n.route.id}function NI(){var e;let t=v.useContext(dk),n=_I(rc.UseRouteError),a=fk(rc.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[a]}function LI(){let{router:e}=RI(hk.UseNavigateStable),t=fk(rc.UseNavigateStable),n=v.useRef(!1);return pk(()=>{n.current=!0}),v.useCallback(function(r,s){s===void 0&&(s={}),n.current&&(typeof r=="number"?e.navigate(r):e.navigate(r,ro({fromRouteId:t},s)))},[e,t])}function zI(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function gk(e){let{to:t,replace:n,state:a,relative:r}=e;Gs()||De(!1);let{future:s,static:i}=v.useContext(Ba),{matches:o}=v.useContext(Hn),{pathname:c}=$t(),u=bh(),d=vh(t,gh(o,s.v7_relativeSplatPath),c,r==="path"),p=JSON.stringify(d);return v.useEffect(()=>u(JSON.parse(p),{replace:n,state:a,relative:r}),[u,p,r,n,a]),null}function R(e){De(!1)}function BI(e){let{basename:t="/",children:n=null,location:a,navigationType:r=ya.Pop,navigator:s,static:i=!1,future:o}=e;Gs()&&De(!1);let c=t.replace(/^\/*/,"/"),u=v.useMemo(()=>({basename:c,navigator:s,static:i,future:ro({v7_relativeSplatPath:!1},o)}),[c,o,s,i]);typeof a=="string"&&(a=Hs(a));let{pathname:d="/",search:p="",hash:h="",state:m=null,key:w="default"}=a,f=v.useMemo(()=>{let x=fh(d,c);return x==null?null:{location:{pathname:x,search:p,hash:h,state:m,key:w},navigationType:r}},[c,d,p,h,m,w,r]);return f==null?null:v.createElement(Ba.Provider,{value:u},v.createElement(Uc.Provider,{children:n,value:f}))}function DI(e){let{children:t,location:n}=e;return PI(xp(t),n)}new Promise(()=>{});function xp(e,t){t===void 0&&(t=[]);let n=[];return v.Children.forEach(e,(a,r)=>{if(!v.isValidElement(a))return;let s=[...t,r];if(a.type===v.Fragment){n.push.apply(n,xp(a.props.children,s));return}a.type!==R&&De(!1),!a.props.index||!a.props.children||De(!1);let i={id:a.props.id||s.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(i.children=xp(a.props.children,s)),n.push(i)}),n}/**
296 * React Router DOM v6.30.1
297 *
298 * Copyright (c) Remix Software Inc.
299 *
300 * This source code is licensed under the MIT license found in the
301 * LICENSE.md file in the root directory of this source tree.
302 *
303 * @license MIT
304 */function kp(){return kp=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},kp.apply(this,arguments)}function qI(e,t){if(e==null)return{};var n={},a=Object.keys(e),r,s;for(s=0;s<a.length;s++)r=a[s],!(t.indexOf(r)>=0)&&(n[r]=e[r]);return n}function MI(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function FI(e,t){return e.button===0&&(!t||t==="_self")&&!MI(e)}function Sp(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let a=e[n];return t.concat(Array.isArray(a)?a.map(r=>[n,r]):[[n,a]])},[]))}function UI(e,t){let n=Sp(e);return t&&t.forEach((a,r)=>
304{n.has(r)||t.getAll(r).forEach(s=>{n.append(r,s)})}),n}const $I=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],WI="6";try{window.__reactRouterVersion=WI}catch{}const VI="startTransition",Ng=nm[VI];function HI(e){let{basename:t,children:n,future:a,window:r}=e,s=v.useRef();s.current==null&&(s.current=Jj({window:r,v5Compat:!0}));let i=s.current,[o,c]=v.useState({action:i.action,location:i.location}),{v7_startTransition:u}=a||{},d=v.useCallback(p=>{u&&Ng?Ng(()=>c(p)):c(p)},[c,u]);return v.useLayoutEffect(()=>i.listen(d),[i,d]),v.useEffect(()=>zI(a),[a]),v.createElement(BI,{basename:t,children:n,location:o.location,navigationType:o.action,navigator:i,future:a})}const GI=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",KI=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ee=v.forwardRef(function(t,n){let{onClick:a,relative:r,reloadDocument:s,replace:i,state:o,target:c,to:u,preventScrollReset:d,viewTransition:p}=t,h=qI(t,$I),{basename:m}=v.useContext(Ba),w,f=!1;if(typeof u=="string"&&KI.test(u)&&(w=u,GI))try{let y=new URL(window.location.href),k=u.startsWith("//")?new URL(y.protocol+u):new URL(u),P=fh(k.pathname,m);k.origin===y.origin&&P!=null?u=P+k.search+k.hash:f=!0}catch{}let x=kI(u,{relative:r}),b=YI(u,{replace:i,state:o,target:c,preventScrollReset:d,relative:r,viewTransition:p});function g(y){a&&a(y),y.defaultPrevented||b(y)}return v.createElement("a",kp({},h,{href:w||x,onClick:f||s?a:g,ref:n,target:c}))});var Lg;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Lg||(Lg={}));var zg;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(zg||(zg={}));function YI(e,t){let{target:n,replace:a,state:r,preventScrollReset:s,relative:i,viewTransition:o}=t===void 0?{}:t,c=bh(),u=$t(),d=mk(e,{relative:i});return v.useCallback(p=>{if(FI(p,n)){p.preventDefault();let h=a!==void 0?a:ac(u)===ac(d);c(e,{replace:h,state:r,preventScrollReset:s,relative:i,viewTransition:o})}},[u,c,d,a,r,n,e,s,i,o])}function GM(e){let t=v.useRef(Sp(e)),n=v.useRef(!1),a=$t(),r=v.useMemo(()=>UI(a.search,n.current?null:t.current),[a.search]),s=bh(),i=v.useCallback((o,c)=>{const u=Sp(typeof o=="function"?o(r):o);n.current=!0,s("?"+u,c)},[s,r]);return[r,i]}var JI=typeof Element<"u",QI=typeof Map=="function",XI=typeof Set=="function",ZI=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function xl(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,a,r;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(a=n;a--!==0;)if(!xl(e[a],t[a]))return!1;return!0}var s;if(QI&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(s=e.entries();!(a=s.next()).done;)if(!t.has(a.value[0]))return!1;for(s=e.entries();!(a=s.next()).done;)if(!xl(a.value[1],t.get(a.value[0])))return!1;return!0}if(XI&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(s=e.entries();!(a=s.next()).done;)if(!t.has(a.value[0]))return!1;return!0}if(ZI&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(a=n;a--!==0;)if(e[a]!==t[a])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(a=n;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[a]))return!1;if(JI&&e instanceof Element)return!1;for(a=n;a--!==0;)if(!((r[a]==="_owner"||r[a]==="__v"||r[a]==="__o")&&e.$$typeof)&&!xl(e[r[a]],t[r[a]]))return!1;return!0}return e!==e&&t!==t}var eR=function(t,n){try{return xl(t,n)}catch(a){if((a.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw a}};const tR=fo(eR);var nR=function(e,t,n,a,r,s,i,o){if(!e){var c;if(t===void 0)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,a,r,s,i,o],d=0;c=new Error(t.replace(/%s/g,function(){return u[d++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}},aR=nR;const Bg=fo(aR);var rR=function(t,n,a,r){var s=a?a.call(r,t,n):void 0;if(s!==void 0)return!!s;
304if(t===n)return!0;if(typeof t!="object"||!t||typeof n!="object"||!n)return!1;var i=Object.keys(t),o=Object.keys(n);if(i.length!==o.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(n),u=0;u<i.length;u++){var d=i[u];if(!c(d))return!1;var p=t[d],h=n[d];if(s=a?a.call(r,p,h,d):void 0,s===!1||s===void 0&&p!==h)return!1}return!0};const sR=fo(rR);var vk=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(vk||{}),Mu={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},Dg=Object.values(vk),$c={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},yk=Object.entries($c).reduce((e,[t,n])=>(e[n]=t,e),{}),on="data-rh",gs={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},vs=(e,t)=>{for(let n=e.length-1;n>=0;n-=1){const a=e[n];if(Object.prototype.hasOwnProperty.call(a,t))return a[t]}return null},iR=e=>{let t=vs(e,"title");const n=vs(e,gs.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,()=>t);const a=vs(e,gs.DEFAULT_TITLE);return t||a||void 0},oR=e=>vs(e,gs.ON_CHANGE_CLIENT_STATE)||(()=>{}),Fu=(e,t)=>t.filter(n=>typeof n[e]<"u").map(n=>n[e]).reduce((n,a)=>({...n,...a}),{}),lR=(e,t)=>t.filter(n=>typeof n.base<"u").map(n=>n.base).reverse().reduce((n,a)=>{if(!n.length){const r=Object.keys(a);for(let s=0;s<r.length;s+=1){const o=r[s].toLowerCase();if(e.indexOf(o)!==-1&&a[o])return n.concat(a)}}return n},[]),cR=e=>console&&typeof console.warn=="function"&&console.warn(e),ci=(e,t,n)=>{const a={};return n.filter(r=>Array.isArray(r[e])?!0:(typeof r[e]<"u"&&cR(`Helmet: ${e} should be of type "Array". Instead found type "${typeof r[e]}"`),!1)).map(r=>r[e]).reverse().reduce((r,s)=>{const i={};s.filter(c=>{let u;const d=Object.keys(c);for(let h=0;h<d.length;h+=1){const m=d[h],w=m.toLowerCase();t.indexOf(w)!==-1&&!(u==="rel"&&c[u].toLowerCase()==="canonical")&&!(w==="rel"&&c[w].toLowerCase()==="stylesheet")&&(u=w),t.indexOf(m)!==-1&&(m==="innerHTML"||m==="cssText"||m==="itemprop")&&(u=m)}if(!u||!c[u])return!1;const p=c[u].toLowerCase();return a[u]||(a[u]={}),i[u]||(i[u]={}),a[u][p]?!1:(i[u][p]=!0,!0)}).reverse().forEach(c=>r.push(c));const o=Object.keys(i);for(let c=0;c<o.length;c+=1){const u=o[c],d={...a[u],...i[u]};a[u]=d}return r},[]).reverse()},uR=(e,t)=>{if(Array.isArray(e)&&e.length){for(let n=0;n<e.length;n+=1)if(e[n][t])return!0}return!1},dR=e=>({baseTag:lR(["href"],e),bodyAttributes:Fu("bodyAttributes",e),defer:vs(e,gs.DEFER),encode:vs(e,gs.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:Fu("htmlAttributes",e),linkTags:ci("link",["rel","href"],e),metaTags:ci("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:ci("noscript",["innerHTML"],e),onChangeClientState:oR(e),scriptTags:ci("script",["src","innerHTML"],e),styleTags:ci("style",["cssText"],e),title:iR(e),titleAttributes:Fu("titleAttributes",e),prioritizeSeoTags:uR(e,gs.PRIORITIZE_SEO_TAGS)}),bk=e=>Array.isArray(e)?e.join(""):e,pR=(e,t)=>{const n=Object.keys(e);for(let a=0;a<n.length;a+=1)if(t[n[a]]&&t[n[a]].includes(e[n[a]]))return!0;return!1},Uu=(e,t)=>Array.isArray(e)?e.reduce((n,a)=>(pR(a,t)?n.priority.push(a):n.default.push(a),n),{priority:[],default:[]}):{default:e,priority:[]},qg=(e,t)=>({...e,[t]:void 0}),mR=["noscript","script","style"],Pp=(e,t=!0)=>t===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),wk=e=>Object.keys(e).reduce((t,n)=>{const a=typeof e[n]<"u"?`${n}="${e[n]}"`:`${n}`;return t?`${t} ${a}`:a},""),hR=(e,t,n,a)=>{const r=wk(n),s=bk(t);return r?`<${e} ${on}="true" ${r}>${Pp(s,a)}</${e}>`:`<${e} ${on}="true">${Pp(s,a)}</${e}>`},fR=(e,t,n=!0)=>t.reduce((a,r)=>{const s=r,i=Object.keys(s).filter(u=>!(u==="innerHTML"||u==="cssText")).reduce((u,d)=>{const p=typeof s[d]>"u"?d:`${d}="${Pp(s[d],n)}"`;return u?`${u} ${p}`:p},""),o=s.innerHTML||s.cssText||"",c=mR.indexOf(e)===-1;return`${a}<${e} ${on}="true" ${i}${c?"/>":`>${o}</${e}>`}`},""),xk=(e,t={})=>Object.keys(e).reduce((n,a)=>{const r=$c[a];return n[r||a]=e[a],n},t),gR=(e,t,n)=>{const a={key:t,[on]:!0},r=xk(n,a);return[O.createElement("title",r,t)]},kl=(e,t)=>t.map((n,a)=>{const r={key:a,[on]:!0};
304return Object.keys(n).forEach(s=>{const o=$c[s]||s;if(o==="innerHTML"||o==="cssText"){const c=n.innerHTML||n.cssText;r.dangerouslySetInnerHTML={__html:c}}else r[o]=n[s]}),O.createElement(e,r)}),Lt=(e,t,n=!0)=>{switch(e){case"title":return{toComponent:()=>gR(e,t.title,t.titleAttributes),toString:()=>hR(e,t.title,t.titleAttributes,n)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>xk(t),toString:()=>wk(t)};default:return{toComponent:()=>kl(e,t),toString:()=>fR(e,t,n)}}},vR=({metaTags:e,linkTags:t,scriptTags:n,encode:a})=>{const r=Uu(e,Mu.meta),s=Uu(t,Mu.link),i=Uu(n,Mu.script);return{priorityMethods:{toComponent:()=>[...kl("meta",r.priority),...kl("link",s.priority),...kl("script",i.priority)],toString:()=>`${Lt("meta",r.priority,a)} ${Lt("link",s.priority,a)} ${Lt("script",i.priority,a)}`},metaTags:r.default,linkTags:s.default,scriptTags:i.default}},yR=e=>{const{baseTag:t,bodyAttributes:n,encode:a=!0,htmlAttributes:r,noscriptTags:s,styleTags:i,title:o="",titleAttributes:c,prioritizeSeoTags:u}=e;let{linkTags:d,metaTags:p,scriptTags:h}=e,m={toComponent:()=>[],toString:()=>""};return u&&({priorityMethods:m,linkTags:d,metaTags:p,scriptTags:h}=vR(e)),{priority:m,base:Lt("base",t,a),bodyAttributes:Lt("bodyAttributes",n,a),htmlAttributes:Lt("htmlAttributes",r,a),link:Lt("link",d,a),meta:Lt("meta",p,a),noscript:Lt("noscript",s,a),script:Lt("script",h,a),style:Lt("style",i,a),title:Lt("title",{title:o,titleAttributes:c},a)}},Ap=yR,Ko=[],wh=!!(typeof window<"u"&&window.document&&window.document.createElement),Ep=class{constructor(e,t){Gt(this,"instances",[]);Gt(this,"canUseDOM",wh);Gt(this,"context");Gt(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?Ko:this.instances,add:e=>{(this.canUseDOM?Ko:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?Ko:this.instances).indexOf(e);(this.canUseDOM?Ko:this.instances).splice(t,1)}}});this.context=e,this.canUseDOM=t||!1,t||(e.helmet=Ap({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},bR=parseInt(O.version.split(".")[0],10),Cp=bR>=19,wR={},kk=O.createContext(wR),cr,Sk=(cr=class extends v.Component{constructor(n){super(n);Gt(this,"helmetData");Cp?this.helmetData=null:this.helmetData=new Ep(this.props.context||{},cr.canUseDOM)}render(){return Cp?O.createElement(O.Fragment,null,this.props.children):O.createElement(kk.Provider,{value:this.helmetData.value},this.props.children)}},Gt(cr,"canUseDOM",wh),cr),Or=(e,t)=>{const n=document.head||document.querySelector("head"),a=n.querySelectorAll(`${e}[${on}]`),r=[].slice.call(a),s=[];let i;return t&&t.length&&t.forEach(o=>{const c=document.createElement(e);for(const u in o)if(Object.prototype.hasOwnProperty.call(o,u))if(u==="innerHTML")c.innerHTML=o.innerHTML;else if(u==="cssText"){const d=o.cssText;c.appendChild(document.createTextNode(d))}else{const d=u,p=typeof o[d]>"u"?"":o[d];c.setAttribute(u,p)}c.setAttribute(on,"true"),r.some((u,d)=>(i=d,c.isEqualNode(u)))?r.splice(i,1):s.push(c)}),r.forEach(o=>{var c;return(c=o.parentNode)==null?void 0:c.removeChild(o)}),s.forEach(o=>n.appendChild(o)),{oldTags:r,newTags:s}},Tp=(e,t)=>{const n=document.getElementsByTagName(e)[0];if(!n)return;const a=n.getAttribute(on),r=a?a.split(","):[],s=[...r],i=Object.keys(t);for(const o of i){const c=t[o]||"";n.getAttribute(o)!==c&&n.setAttribute(o,c),r.indexOf(o)===-1&&r.push(o);const u=s.indexOf(o);u!==-1&&s.splice(u,1)}for(let o=s.length-1;o>=0;o-=1)n.removeAttribute(s[o]);r.length===s.length?n.removeAttribute(on):n.getAttribute(on)!==i.join(",")&&n.setAttribute(on,i.join(","))},xR=(e,t)=>{typeof e<"u"&&document.title!==e&&(document.title=bk(e)),Tp("title",t)},Mg=(e,t)=>{const{baseTag:n,bodyAttributes:a,htmlAttributes:r,linkTags:s,metaTags:i,noscriptTags:o,onChangeClientState:c,scriptTags:u,styleTags:d,title:p,titleAttributes:h}=e;Tp("body",a),Tp("html",r),xR(p,h);const m={baseTag:Or("base",n),linkTags:Or("link",s),metaTags:Or("meta",i),noscriptTags:Or("noscript",o),scriptTags:Or("script",u),styleTags:Or("style",d)},w={},f={};Object.keys(m).forEach(x=>{const{newTags:b,oldTags:g}=m[x];b.length&&(w[x]=b),g.length&&(f[x]=m[x].oldTags)}),t&&t(),c(e,w,f)},ui=null,kR=e=>
304{ui&&cancelAnimationFrame(ui),e.defer?ui=requestAnimationFrame(()=>{Mg(e,()=>{ui=null})}):(Mg(e),ui=null)},SR=kR,Fg=class extends v.Component{constructor(){super(...arguments);Gt(this,"rendered",!1)}shouldComponentUpdate(t){return!sR(t,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:t}=this.props.context;t.remove(this),this.emitChange()}emitChange(){const{helmetInstances:t,setHelmet:n}=this.props.context;let a=null;const r=dR(t.get().map(s=>{const{context:i,...o}=s.props;return o}));Sk.canUseDOM?SR(r):Ap&&(a=Ap(r)),n(a)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},Sl=[],Ug=e=>{const t={};for(const n of Object.keys(e))t[yk[n]||n]=e[n];return t},Wa=e=>{const t={};for(const n of Object.keys(e)){const a=$c[n];t[a||n]=e[n]}return t},$g=(e,t)=>{if(!wh)return;const n=document.getElementsByTagName(e)[0];if(!n)return;const a="data-rh-managed",r=n.getAttribute(a),s=r?r.split(","):[],i=Object.keys(t);for(const o of s)i.includes(o)||n.removeAttribute(o);for(const o of i){const c=t[o];c==null||c===!1?n.removeAttribute(o):c===!0?n.setAttribute(o,""):n.setAttribute(o,String(c))}i.length>0?n.setAttribute(a,i.join(",")):n.removeAttribute(a)},$u=()=>{const e={},t={};for(const n of Sl){const{htmlAttributes:a,bodyAttributes:r}=n.props;a&&Object.assign(e,Ug(a)),r&&Object.assign(t,Ug(r))}$g("html",e),$g("body",t)},PR=class extends v.Component{componentDidMount(){Sl.push(this),$u()}componentDidUpdate(){$u()}componentWillUnmount(){const e=Sl.indexOf(this);e!==-1&&Sl.splice(e,1),$u()}resolveTitle(){const{title:e,titleTemplate:t,defaultTitle:n}=this.props;return e&&t?t.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||n||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const t=this.props.titleAttributes||{};return O.createElement("title",Wa(t),e)}renderBase(){const{base:e}=this.props;return e?O.createElement("base",Wa(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>O.createElement("meta",{key:n,...Wa(t)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>O.createElement("link",{key:n,...Wa(t)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{innerHTML:a,...r}=t,s=Wa(r);return a&&(s.dangerouslySetInnerHTML={__html:a}),O.createElement("script",{key:n,...s})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{cssText:a,...r}=t,s=Wa(r);return a&&(s.dangerouslySetInnerHTML={__html:a}),O.createElement("style",{key:n,...s})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{innerHTML:a,...r}=t,s=Wa(r);return a&&(s.dangerouslySetInnerHTML={__html:a}),O.createElement("noscript",{key:n,...s})})}render(){return O.createElement(O.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},hd,Gn=(hd=class extends v.Component{shouldComponentUpdate(e){return!tR(qg(this.props,"helmetData"),qg(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,t,n,a){return{...t,[e.type]:[...t[e.type]||[],{...n,...this.mapNestedChildrenToProps(e,a)}]}}mapObjectTypeChildren(e,t,n,a){switch(e.type){case"title":return{...t,[e.type]:a,titleAttributes:{...n}};case"body":return{...t,bodyAttributes:{...n}};case"html":return{...t,htmlAttributes:{...n}};default:return{...t,[e.type]:{...n}}}}mapArrayTypeChildrenToProps(e,t){let n={...t};return Object.keys(e).forEach(a=>{n={...n,[a]:e[a]}}),n}warnOnInvalidChildren(e,t){return Bg(Dg.some(n=>e.type===n),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${Dg.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),Bg(!t||typeof t=="string"||Array.isArray(t)&&!t.some(n=>
304typeof n!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,t){let n={};return O.Children.forEach(e,a=>{if(!a||!a.props)return;const{children:r,...s}=a.props,i=Object.keys(s).reduce((c,u)=>(c[yk[u]||u]=s[u],c),{});let{type:o}=a;switch(typeof o=="symbol"?o=o.toString():this.warnOnInvalidChildren(a,r),o){case"Symbol(react.fragment)":t=this.mapChildrenToProps(r,t);break;case"link":case"meta":case"noscript":case"script":case"style":n=this.flattenArrayTypeChildren(a,n,i,r);break;default:t=this.mapObjectTypeChildren(a,t,i,r);break}}),this.mapArrayTypeChildrenToProps(n,t)}render(){const{children:e,...t}=this.props;let n={...t},{helmetData:a}=t;if(e&&(n=this.mapChildrenToProps(e,n)),a&&!(a instanceof Ep)){const r=a;a=new Ep(r.context,!0),delete n.helmetData}return Cp?O.createElement(PR,{...n}):a?O.createElement(Fg,{...n,context:a.value}):O.createElement(kk.Consumer,null,r=>O.createElement(Fg,{...n,context:r}))}},Gt(hd,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),hd);const AR=Zw("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-semibold ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 shadow-md hover:shadow-lg",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border-2 border-input bg-background hover:bg-secondary hover:border-primary/30",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent/10 hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline",hero:"bg-accent text-accent-foreground shadow-cta hover:shadow-xl hover:-translate-y-0.5 active:translate-y-0",heroOutline:"border-2 border-white/30 text-white bg-white/10 backdrop-blur-sm hover:bg-white/20 hover:border-white/50",nav:"text-muted-foreground hover:text-foreground",premium:"bg-gradient-to-r from-primary to-brand-teal-light text-primary-foreground shadow-glow hover:shadow-xl hover:-translate-y-0.5"},size:{default:"h-11 px-5 py-2.5",sm:"h-9 rounded-md px-4 text-xs",lg:"h-14 roun
304ded-xl px-8 text-base",xl:"h-16 rounded-xl px-10 text-lg",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),be=v.forwardRef(({className:e,variant:t,size:n,asChild:a=!1,...r},s)=>{const i=a?p1:"button";return l.jsx(i,{className:We(AR({variant:t,size:n,className:e})),ref:s,...r})});be.displayName="Button";const Z=e=>typeof e=="string",di=()=>{let e,t;const n=new Promise((a,r)=>{e=a,t=r});return n.resolve=e,n.reject=t,n},Wg=e=>e==null?"":""+e,ER=(e,t,n)=>{e.forEach(a=>{t[a]&&(n[a]=t[a])})},CR=/###/g,Vg=e=>e&&e.indexOf("###")>-1?e.replace(CR,"."):e,Hg=e=>!e||Z(e),Ti=(e,t,n)=>{const a=Z(t)?t.split("."):t;let r=0;for(;r<a.length-1;){if(Hg(e))return{};const s=Vg(a[r]);!e[s]&&n&&(e[s]=new n),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={},++r}return Hg(e)?{}:{obj:e,k:Vg(a[r])}},Gg=(e,t,n)=>{const{obj:a,k:r}=Ti(e,t,Object);if(a!==void 0||t.length===1){a[r]=n;return}let s=t[t.length-1],i=t.slice(0,t.length-1),o=Ti(e,i,Object);for(;o.obj===void 0&&i.length;)s=`${i[i.length-1]}.${s}`,i=i.slice(0,i.length-1),o=Ti(e,i,Object),o!=null&&o.obj&&typeof o.obj[`${o.k}.${s}`]<"u"&&(o.obj=void 0);o.obj[`${o.k}.${s}`]=n},TR=(e,t,n,a)=>{const{obj:r,k:s}=Ti(e,t,Object);r[s]=r[s]||[],r[s].push(n)},sc=(e,t)=>{const{obj:n,k:a}=Ti(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,a))return n[a]},jR=(e,t,n)=>{const a=sc(e,n);return a!==void 0?a:sc(t,n)},Pk=(e,t,n)=>{for(const a in t)a!=="__proto__"&&a!=="constructor"&&(a in e?Z(e[a])||e[a]instanceof String||Z(t[a])||t[a]instanceof String?n&&(e[a]=t[a]):Pk(e[a],t[a],n):e[a]=t[a]);return e},Nr=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var IR={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const RR=e=>Z(e)?e.replace(/[&<>"'\/]/g,t=>IR[t]):e;class _R{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const a=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,a),this.regExpQueue.push(t),a}}const OR=[" ",",","?","!",";"],NR=new _R(20),LR=(e,t,n)=>{t=t||"",n=n||"";const a=OR.filter(i=>t.indexOf(i)<0&&n.indexOf(i)<0);if(a.length===0)return!0;const r=NR.getRegExp(`(${a.map(i=>i==="?"?"\\?":i).join("|")})`);let s=!r.test(e);
vendor: 4,768 bytes, line 304
304if(!s){const i=e.indexOf(n);i>0&&!r.test(e.substring(0,i))&&(s=!0)}return s},jp=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const a=t.split(n);let r=e;for(let s=0;s<a.length;){if(!r||typeof r!="object")return;let i,o="";for(let c=s;c<a.length;++c)if(c!==s&&(o+=n),o+=a[c],i=r[o],i!==void 0){if(["string","number","boolean"].indexOf(typeof i)>-1&&c<a.length-1)continue;s+=c-s+1;break}r=i}return r},so=e=>e==null?void 0:e.replace("_","-"),zR={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,a;(a=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||a.call(n,console,t)}};class ic{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||zR,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,a,r){return r&&!this.debug?null:(Z(t[0])&&(t[0]=`${a}${this.prefix} ${t[0]}`),this.logger[n](t))}create(t){return new ic(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new ic(this.logger,t)}}var Pn=new ic;class Wc{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(a=>{this.observers[a]||(this.observers[a]=new Map);const r=this.observers[a].get(n)||0;this.observers[a].set(n,r+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([r,s])=>{for(let i=0;i<s;i++)r(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([r,s])=>{for(let i=0;i<s;i++)r.apply(r,[t,...n])})}}class Kg extends Wc{constructor(t,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,a,r={}){var u,d;const s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,i=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let o;t.indexOf(".")>-1?o=t.split("."):(o=[t,n],a&&(Array.isArray(a)?o.push(...a):Z(a)&&s?o.push(...a.split(s)):o.push(a)));const c=sc(this.data,o);return!c&&!n&&!a&&t.indexOf(".")>-1&&(t=o[0],n=o[1],a=o.slice(2).join(".")),c||!i||!Z(a)?c:jp((d=(u=this.data)==null?void 0:u[t])==null?void 0:d[n],a,s)}addResource(t,n,a,r,s={silent:!1}){const i=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator;let o=[t,n];a&&(o=o.concat(i?a.split(i):a)),t.indexOf(".")>-1&&(o=t.split("."),r=n,n=o[1]),this.addNamespaces(n),Gg(this.data,o,r),s.silent||this.emit("added",t,n,a,r)}addResources(t,n,a,r={silent:!1}){for(const s in a)(Z(a[s])||Array.isArray(a[s]))&&this.addResource(t,n,s,a[s],{silent:!0});r.silent||this.emit("added",t,n,a)}addResourceBundle(t,n,a,r,s,i={silent:!1,skipCopy:!1}){let o=[t,n];t.indexOf(".")>-1&&(o=t.split("."),r=a,a=n,n=o[1]),this.addNamespaces(n);let c=sc(this.data,o)||{};i.skipCopy||(a=JSON.parse(JSON.stringify(a))),r?Pk(c,a,s):c={...c,...a},Gg(this.data,o,c),i.silent||this.emit("added",t,n,a)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var Ak={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,a,r){return e.forEach(s=>{var i;t=((i=this.processors[s])==null?void 0:i.process(t,n,a,r))??t}),t}};const Ek=Symbol("i18next/PATH_KEY");function BR(){const e=[],t=Object.create(null);let n;return t.get=(a,r)=>{var s;return(s=n==null?void 0:n.revoke)==null||s.call(n),r===Ek?e:(e.push(r),n=Proxy.revocable(a,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}function Ip(e,t){const{[Ek]:n}=e(BR());return n.join((t==null?void 0:t.keySeparator)??".")}const Yg={},Wu=e=>!Z(e)&&typeof e!="boolean"&&typeof e!="number";class oc extends Wc{constructor(t,n={}){super(),ER(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","
304i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Pn.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){const a={...n};if(t==null)return!1;const r=this.resolve(t,a);if((r==null?void 0:r.res)===void 0)return!1;const s=Wu(r.res);return!(a.returnObjects===!1&&s)}extractFromKey(t,n){let a=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let s=n.ns||this.options.defaultNS||[];const i=a&&t.indexOf(a)>-1,o=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!LR(t,a,r);if(i&&!o){const c=t.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:t,namespaces:Z(s)?[s]:s};const u=t.split(a);(a!==r||a===r&&this.options.ns.indexOf(u[0])>-1)&&(s=u.shift()),t=u.join(r)}return{key:t,namespaces:Z(s)?[s]:s}}translate(t,n,a){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),t==null)return"";typeof t=="function"&&(t=Ip(t,{...this.options,...r})),Array.isArray(t)||(t=[String(t)]);const s=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:o,namespaces:c}=this.extractFromKey(t[t.length-1],r),u=c[c.length-1];let d=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;d===void 0&&(d=":");const p=r.lng||this.language,h=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((p==null?void 0:p.toLowerCase())==="cimode")return h?s?{res:`${u}${d}${o}`,usedKey:o,exactUsedKey:o,usedLng:p,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:`${u}${d}${o}`:s?{res:o,usedKey:o,exactUsedKey:o,usedLng:p,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:o;const m=this.resolve(t,r);let w=m==null?void 0:m.res;const f=(m==null?void 0:m.usedKey)||o,x=(m==null?void 0:m.exactUsedKey)||o,b=["[object Number]","[object Function]","[object RegExp]"],g=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,k=r.count!==void 0&&!Z(r.count),P=oc.hasDefaultValue(r),E=k?this.pluralResolver.getSuffix(p,r.count,r):"",S=r.ordinal&&k?this.pluralResolver.getSuffix(p,r.count,{ordinal:!1}):"",A=k&&!r.ordinal&&r.count===0,T=A&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${E}`]||r[`defaultValue${S}`]||r.defaultValue;let j=w;y&&!w&&P&&(j=T);const D=Wu(j),z=Object.prototype.toString.apply(j);if(y&&j&&D&&b.indexOf(z)<0&&!(Z(g)&&Array.isArray(j))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const _=this.options.returnedObjectHandler?this.options.returnedObjectHandler(f,j,{...r,ns:c}):`key '${o} (${this.language})' returned an object instead of string.`;return s?(m.res=_,m.usedParams=this.getUsedParamsDetails(r),m):_}if(i){const _=Array.isArray(j),N=_?[]:{},$=_?x:f;for(const F in j)if(Object.prototype.hasOwnProperty.call(j,F)){const M=`${$}${i}${F}`;P&&!w?N[F]=this.translate(M,{...r,defaultValue:Wu(T)?T[F]:void 0,joinArrays:!1,ns:c}):N[F]=this.translate(M,{...r,joinArrays:!1,ns:c}),N[F]===M&&(N[F]=j[F])}w=N}}else if(y&&Z(g)&&Array.isArray(w))w=w.join(g),w&&(w=this.extendTranslation(w,t,r,a));else{let _=!1,N=!1;!this.isValidLookup(w)&&P&&(_=!0,w=T),this.isValidLookup(w)||(N=!0,w=o);const F=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&N?void 0:w,M=P&&T!==w&&this.options.updateMissing;if(N||_||M){if(this.logger.log(M?"updateKey":"missingKey",p,u,o,M?T:w),i){const W=this.resolve(o,{...r,keySeparator:!1});W&&W.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let C=[];const I=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&I&&I[0])for(let W=0;W<I.length;W++)C.push(I[W]);else this.options.saveMissingTo==="all"?C=this.languageUtils.toResolveHierarchy(r.lng||this.language):C.push(r.lng||this.language);const q=(W,G,Q)=>{var ve;const X=P&&Q!==w?Q:F;this.options.missingKeyHandler?this.options.missingKeyHandler(W,u,G,X,M,r):(ve=this.backendConnector)!=null&&ve.saveMissing&&this.backendConnector.saveMissing(W,u,G,X,M,r),this.emit
vendor: 29,131 bytes, line 304
304("missingKey",W,u,G,w)};this.options.saveMissing&&(this.options.saveMissingPlurals&&k?C.forEach(W=>{const G=this.pluralResolver.getSuffixes(W,r);A&&r[`defaultValue${this.options.pluralSeparator}zero`]&&G.indexOf(`${this.options.pluralSeparator}zero`)<0&&G.push(`${this.options.pluralSeparator}zero`),G.forEach(Q=>{q([W],o+Q,r[`defaultValue${Q}`]||T)})}):q(C,o,T))}w=this.extendTranslation(w,t,r,m,a),N&&w===o&&this.options.appendNamespaceToMissingKey&&(w=`${u}${d}${o}`),(N||_)&&this.options.parseMissingKeyHandler&&(w=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}${d}${o}`:o,_?w:void 0,r))}return s?(m.res=w,m.usedParams=this.getUsedParamsDetails(r),m):w}extendTranslation(t,n,a,r,s){var c,u;if((c=this.i18nFormat)!=null&&c.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...a},a.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init({...a,interpolation:{...this.options.interpolation,...a.interpolation}});const d=Z(t)&&(((u=a==null?void 0:a.interpolation)==null?void 0:u.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(d){const m=t.match(this.interpolator.nestingRegexp);p=m&&m.length}let h=a.replace&&!Z(a.replace)?a.replace:a;if(this.options.interpolation.defaultVariables&&(h={...this.options.interpolation.defaultVariables,...h}),t=this.interpolator.interpolate(t,h,a.lng||this.language||r.usedLng,a),d){const m=t.match(this.interpolator.nestingRegexp),w=m&&m.length;p<w&&(a.nest=!1)}!a.lng&&r&&r.res&&(a.lng=this.language||r.usedLng),a.nest!==!1&&(t=this.interpolator.nest(t,(...m)=>(s==null?void 0:s[0])===m[0]&&!a.context?(this.logger.warn(`It seems you are nesting recursively key: ${m[0]} in key: ${n[0]}`),null):this.translate(...m,n),a)),a.interpolation&&this.interpolator.reset()}const i=a.postProcess||this.options.postProcess,o=Z(i)?[i]:i;return t!=null&&(o!=null&&o.length)&&a.applyPostProcessor!==!1&&(t=Ak.handle(o,t,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(a)},...a}:a,this)),t}resolve(t,n={}){let a,r,s,i,o;return Z(t)&&(t=[t]),t.forEach(c=>{if(this.isValidLookup(a))return;const u=this.extractFromKey(c,n),d=u.key;r=d;let p=u.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const h=n.count!==void 0&&!Z(n.count),m=h&&!n.ordinal&&n.count===0,w=n.context!==void 0&&(Z(n.context)||typeof n.context=="number")&&n.context!=="",f=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);p.forEach(x=>{var b,g;this.isValidLookup(a)||(o=x,!Yg[`${f[0]}-${x}`]&&((b=this.utils)!=null&&b.hasLoadedNamespace)&&!((g=this.utils)!=null&&g.hasLoadedNamespace(o))&&(Yg[`${f[0]}-${x}`]=!0,this.logger.warn(`key "${r}" for languages "${f.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(y=>{var E;if(this.isValidLookup(a))return;i=y;const k=[d];if((E=this.i18nFormat)!=null&&E.addLookupKeys)this.i18nFormat.addLookupKeys(k,d,y,x,n);else{let S;h&&(S=this.pluralResolver.getSuffix(y,n.count,n));const A=`${this.options.pluralSeparator}zero`,T=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(h&&(n.ordinal&&S.indexOf(T)===0&&k.push(d+S.replace(T,this.options.pluralSeparator)),k.push(d+S),m&&k.push(d+A)),w){const j=`${d}${this.options.contextSeparator||"_"}${n.context}`;k.push(j),h&&(n.ordinal&&S.indexOf(T)===0&&k.push(j+S.replace(T,this.options.pluralSeparator)),k.push(j+S),m&&k.push(j+A))}}let P;for(;P=k.pop();)this.isValidLookup(a)||(s=P,a=this.getResource(y,x,P,n))}))})}),{res:a,usedKey:r,exactUsedKey:s,usedLng:i,usedNS:o}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,a,r={}){var s;return(s=this.i18nFormat)!=null&&s.getResource?this.i18nFormat.getResource(t,n,a,r):this.resourceStore.getResource(t,n,a,r)}getUsedParamsDetails(t={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],a=t.replace&&!Z(t.replace);let r=a?t.replace:t;if(a&&typeof t.count<"u"&&(r.count=t.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!a){r={...r};for(const s of n)delete r[s]}return r}static hasDefaultValue(t){const n="defaultValue";for(const a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&n===a.substring(0,n.length)&&t[a]!==void 0)return!0;return!1}}class Jg{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Pn.create("languageUtils")}getScriptPartFromCode(t){if(t=so(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=so(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(Z(t)&&t.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(a=>{if(n)return;const r=this.formatLanguageCode(a);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&t.forEach(a=>{if(n)return;const r=this.getScriptPartFromCode(a);if(this.isSupportedCode(r))return n=r;const s=this.getLanguagePartFromCode(a);if(this.isSupportedCode(s))return n=s;n=this.options.supportedLngs.find(i=>{if(i===s)return i;if(!(i.indexOf("-")<0&&s.indexOf("-")<0)&&(i.indexOf("-")>0&&s.indexOf("-")<0&&i.substring(0,i.indexOf("-"))===s||i.indexOf(s)===0&&s.length>1))return i})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),Z(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let a=t[n];return a||(a=t[this.getScriptPartFromCode(n)]),a||(a=t[this.formatLanguageCode(n)]),a||(a=t[this.getLanguagePartFromCode(n)]),a||(a=t.default),a||[]}toResolveHierarchy(t,n){const a=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),r=[],s=i=>{i&&(this.isSupportedCode(i)?r.push(i):this.logger.warn(`rejecting language code not found in supportedLngs: ${i}`))};return Z(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&s(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&s(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&s(this.getLanguagePartFromCode(t))):Z(t)&&s(this.formatLanguageCode(t)),a.forEach(i=>{r.indexOf(i)<0&&s(this.formatLanguageCode(i))}),r}}const Qg={zero:0,one:1,two:2,few:3,many:4,other:5},Xg={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class DR{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=Pn.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){const a=so(t==="dev"?"en":t),r=n.ordinal?"ordinal":"cardinal",s=JSON.stringify({cleanedCode:a,type:r});if(s in this.pluralRulesCache)return this.pluralRulesCache[s];let i;try{i=new Intl.PluralRules(a,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),Xg;if(!t.match(/-|_/))return Xg;const c=this.languageUtils.getLanguagePartFromCode(t);i=this.getRule(c,n)}return this.pluralRulesCache[s]=i,i}needsPlural(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),(a==null?void 0:a.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n,a={}){return this.getSuffixes(t,a).map(r=>`${n}${r}`)}getSuffixes(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),a?a.resolvedOptions().pluralCategories.sort((r,s)=>Qg[r]-Qg[s]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(t,n,a={}){const r=this.getRule(t,a);return r?`${this.options.prepend}${a.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,a))}}const Zg=(e,t,n,a=".",r=!0)=>{let s=jR(e,t,n);return!s&&r&&Z(n)&&(s=jp(e,n,a),s===void 0&&(s=jp(t,n,a))),s},Vu=e=>e.replace(/\$/g,"$$$$");class ev{constructor(t={}){var n;this.logger=Pn.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(a=>a),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:a,useRawValueToEscape:r,prefix:s,prefixEscaped:i,suffix:o,suffixEscaped:c,formatSeparator:u,unescapeSuffix:d,unescapePrefix:p,nestingPrefix:h,nestingPrefixEscaped:m,nestingSuffix:w,nestingSuffixEscaped:f,nestingOptionsSeparator:x,maxReplaces:b,alwaysFormat:g}=t.interpolation;this.escape=n!==void 0?n:RR,this.escapeValue=a!==void 0?a:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=s?Nr(s):i||"{{",this.suffix=o?Nr(o):c||"}}",this.formatSeparator=u||",",this.unescapePrefix=d?"":p||"-",this.unescapeSuffix=this.unescapePrefix?"":d||"",this.nestingPrefix=h?Nr(h):m||Nr("$t("),this.nestingSuffix=w?Nr(w):f||Nr(")"),this.nestingOptionsSeparator=x||",",this.maxReplaces=b||1e3,this.alwaysFormat=g!==void 0?g:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,a)=>(n==null?void 0:n.source)===a?(n.lastIndex=0,n):new RegExp(a,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,n,a,r){var m;let s,i,o;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=w=>{if(w.indexOf(this.formatSeparator)<0){const g=Zg(n,c,w,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(g,void 0,a,{...r,...n,interpolationkey:w}):g}const f=w.split(this.formatSeparator),x=f.shift().trim(),b=f.join(this.formatSeparator).trim();return this.format(Zg(n,c,x,this.options.keySeparator,this.options.ignoreJSONStructure),b,a,{...r,...n,interpolationkey:x})};this.resetRegExp();const d=(r==null?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,p=((m=r==null?void 0:r.interpolation)==null?void 0:m.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:w=>Vu(w)},{regex:this.regexp,safeValue:w=>this.escapeValue?Vu(this.escape(w)):Vu(w)}].forEach(w=>{for(o=0;s=w.regex.exec(t);){const f=s[1].trim();if(i=u(f),i===void 0)if(typeof d=="function"){const b=d(t,s,r);i=Z(b)?b:""}else if(r&&Object.prototype.hasOwnProperty.call(r,f))i="";else if(p){i=s[0];continue}else this.logger.warn(`missed to pass in variable ${f} for interpolating ${t}`),i="";else!Z(i)&&!this.useRawValueToEscape&&(i=Wg(i));const x=w.safeValue(i);if(t=t.replace(s[0],x),p?(w.regex.lastIndex+=i.length,w.regex.lastIndex-=s[0].length):w.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),t}nest(t,n,a={}){let r,s,i;const o=(c,u)=>{const d=this.nestingOptionsSeparator;if(c.indexOf(d)<0)return c;const p=c.split(new RegExp(`${d}[ ]*{`));let h=`{${p[1]}`;c=p[0],h=this.interpolate(h,i);const m=h.match(/'/g),w=h.match(/"/g);(((m==null?void 0:m.length)??0)%2===0&&!w||w.length%2!==0)&&(h=h.replace(/'/g,'"'));try{i=JSON.parse(h),u&&(i={...u,...i})}catch(f){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,f),`${c}${d}${h}`}return i.defaultValue&&i.defaultValue.indexOf(this.prefix)>-1&&delete i.defaultValue,c};for(;r=this.nestingRegexp.exec(t);){let c=[];i={...a},i=i.replace&&!Z(i.replace)?i.replace:i,i.applyPostProcessor=!1,delete i.defaultValue;const u=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(u!==-1&&(c=r[1].slice(u).split(this.formatSeparator).map(d=>d.trim()).filter(Boolean),r[1]=r[1].slice(0,u)),s=n(o.call(this,r[1].trim(),i),i),s&&r[0]===t&&!Z(s))return s;Z(s)||(s=Wg(s)),s||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),s=""),c.length&&(s=c.reduce((d,p)=>this.format(d,p,a.lng,{...a,interpolationkey:r[1].trim()}),s.trim())),t=t.replace(r[0],s),this.regexp.lastIndex=0}return t}}const qR=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const a=e.split("(");t=a[0].toLowerCase().trim();const r=a[1].substring(0,a[1].length-1);t==="currency"&&r.indexOf(":")<0?n.currency||(n.currency=r.trim()):t==="relativetime"&&r.indexOf(":")<0?n.range||(n.range=r.trim()):r.split(";").forEach(i=>{if(i){const[o,...c]=i.split(":"),u=c.join(":").trim().replace(/^'+|'+$/g,""),d=o.trim();n[d]||(n[d]=u),u==="false"&&(n[d]=!1),u==="true"&&(n[d]=!0),isNaN(u)||(n[d]=parseInt(u,10))}})}return{formatName:t,formatOptions:n}},tv=e=>{const t={};return(n,a,r)=>{let s=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(s={...s,[r.interpolationkey]:void 0});const i=a+JSON.stringify(s);let o=t[i];return o||(o=e(so(a),r),t[i]=o),o(n)}},MR=e=>(t,n,a)=>e(so(n),a)(t);class FR{constructor(t={}){this.logger=Pn.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const a=n.cacheInBuiltFormats?tv:MR;this.formats={number:a((r,s)=>{const i=new Intl.NumberFormat(r,{...s});return o=>i.format(o)}),currency:a((r,s)=>{const i=new Intl.NumberFormat(r,{...s,style:"currency"});return o=>i.format(o)}),datetime:a((r,s)=>{const i=new Intl.DateTimeFormat(r,{...s});return o=>i.format(o)}),relativetime:a((r,s)=>{const i=new Intl.RelativeTimeFormat(r,{...s});return o=>i.format(o,s.range||"day")}),list:a((r,s)=>{const i=new Intl.ListFormat(r,{...s});return o=>i.format(o)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=tv(n)}format(t,n,a,r={}){const s=n.split(this.formatSeparator);if(s.length>1&&s[0].indexOf("(")>1&&s[0].indexOf(")")<0&&s.find(o=>o.indexOf(")")>-1)){const o=s.findIndex(c=>c.indexOf(")")>-1);s[0]=[s[0],...s.splice(1,o)].join(this.formatSeparator)}return s.reduce((o,c)=>{var p;const{formatName:u,formatOptions:d}=qR(c);if(this.formats[u]){let h=o;try{const m=((p=r==null?void 0:r.formatParams)==null?void 0:p[r.interpolationkey])||{},w=m.locale||m.lng||r.locale||r.lng||a;h=this.formats[u](o,w,{...d,...r,...m})}catch(m){this.logger.warn(m)}return h}else this.logger.warn(`there was no format function for ${u}`);return o},t)}}const UR=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class $R extends Wc{constructor(t,n,a,r={}){var s,i;super(),this.backend=t,this.store=n,this.services=a,this.languageUtils=a.languageUtils,this.options=r,this.logger=Pn.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],(i=(s=this.backend)==null?void 0:s.init)==null||i.call(s,a,r.backend,r)}queueLoad(t,n,a,r){const s={},i={},o={},c={};return t.forEach(u=>{let d=!0;n.forEach(p=>{const h=`${u}|${p}`;!a.reload&&this.store.hasResourceBundle(u,p)?this.state[h]=2:this.state[h]<0||(this.state[h]===1?i[h]===void 0&&(i[h]=!0):(this.state[h]=1,d=!1,i[h]===void 0&&(i[h]=!0),s[h]===void 0&&(s[h]=!0),c[p]===void 0&&(c[p]=!0)))}),d||(o[u]=!0)}),(Object.keys(s).length||Object.keys(i).length)&&this.queue.push({pending:i,pendingCount:Object.keys(i).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(s),pending:Object.keys(i),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(c)}}loaded(t,n,a){const r=t.split("|"),s=r[0],i=r[1];n&&this.emit("failedLoading",s,i,n),!n&&a&&this.store.addResourceBundle(s,i,a,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&a&&(this.state[t]=0);const o={};this.queue.forEach(c=>{TR(c.loaded,[s],i),UR(c,t),n&&c.errors.push(n),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(u=>{o[u]||(o[u]={});const d=c.loaded[u];d.length&&d.forEach(p=>{o[u][p]===void 0&&(o[u][p]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(c=>!c.done)}read(t,n,a,r=0,s=this.retryTimeout,i){if(!t.length)return i(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:a,tried:r,wait:s,callback:i});return}this.readingCalls++;const o=(u,d)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(u&&d&&r<this.maxRetries){setTimeout(()=>{this.read.call(this,t,n,a,r+1,s*2,i)},s);return}i(u,d)},c=this.backend[a].bind(this.backend);if(c.length===2){try{const u=c(t,n);u&&typeof u.then=="function"?u.then(d=>o(null,d)).catch(o):o(null,u)}catch(u){o(u)}return}return c(t,n,o)}prepareLoading(t,n,a={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Z(t)&&(t=this.languageUtils.toResolveHierarchy(t)),Z(n)&&(n=[n]);const s=this.queueLoad(t,n,a,r);if(!s.toLoad.length)return s.pending.length||r(),null;s.toLoad.forEach(i=>{this.loadOne(i)})}load(t,n,a){this.prepareLoading(t,n,{},a)}reload(t,n,a){this.prepareLoading(t,n,{reload:!0},a)}loadOne(t,n=""){const a=t.split("|"),r=a[0],s=a[1];this.read(r,s,"read",void 0,void 0,(i,o)=>{i&&this.logger.warn(`${n}loading namespace ${s} for language ${r} failed`,i),!i&&o&&this.logger.log(`${n}loaded namespace ${s} for language ${r}`,o),this.loaded(t,i,o)})}saveMissing(t,n,a,r,s,i={},o=()=>{}){var c,u,d,p,h;if((u=(c=this.services)==null?void 0:c.utils)!=null&&u.hasLoadedNamespace&&!((p=(d=this.services)==null?void 0:d.utils)!=null&&p.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${a}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(a==null||a==="")){if((h=this.backend)!=null&&h.create){const m={...i,isUpdate:s},w=this.backend.create.bind(this.backend);if(w.length<6)try{let f;w.length===5?f=w(t,n,a,r,m):f=w(t,n,a,r),f&&typeof f.then=="function"?f.then(x=>o(null,x)).catch(o):o(null,f)}catch(f){o(f)}else w(t,n,a,r,o,m)}!t||!t[0]||this.store.addResource(t[0],n,a,r)}}}const Hu=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),Z(e[1])&&(t.defaultValue=e[1]),Z(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(a=>{t[a]=n[a]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),nv=e=>{var t,n;return Z(e.ns)&&(e.ns=[e.ns]),Z(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Z(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),((n=(t=e.supportedLngs)==null?void 0:t.indexOf)==null?void 0:n.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e},Yo=()=>{},WR=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class ji extends Wc{constructor(t={},n){if(super(),this.options=nv(t),this.services={},this.logger=Pn,this.modules={external:[]},WR(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&(Z(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const a=Hu();this.options={...a,...this.options,...nv(t)},this.options.interpolation={...a.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=a.overloadTranslationOptionHandler),this.options.debug===!0&&typeof console<"u"&&console.warn("i18next is maintained with support from locize.com — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com");const r=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?Pn.init(r(this.modules.logger),this.options):Pn.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=FR;const d=new Jg(this.options);this.store=new Kg(this.options.resources,this.options);const p=this.services;p.logger=Pn,p.resourceStore=this.store,p.languageUtils=d,p.pluralResolver=new DR(d,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==a.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),u&&(!this.options.interpolation.format||this.options.interpolation.format===a.interpolation.format)&&(p.formatter=r(u),p.formatter.init&&p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new ev(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new $R(r(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",(m,...w)=>{this.emit(m,...w)}),this.modules.languageDetector&&(p.languageDetector=r(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=r(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new oc(this.services,this.options),this.translator.on("*",(m,...w)=>{this.emit(m,...w)}),this.modules.external.forEach(m=>{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Yo),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=(...d)=>this.store[u](...d)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=(...d)=>(this.store[u](...d),this)});const o=di(),c=()=>{const u=(d,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),o.resolve(p),n(d,p)};if(this.languages&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),o}loadResources(t,n=Yo){var s,i;let a=n;const r=Z(t)?t:this.language;if(typeof t=="function"&&(a=t),!this.options.resources||this.options.partialBundledLanguages){if((r==null?void 0:r.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return a();const o=[],c=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(p=>{p!=="cimode"&&o.indexOf(p)<0&&o.push(p)})};r?c(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>c(d)),(i=(s=this.options.preload)==null?void 0:s.forEach)==null||i.call(s,u=>c(u)),this.services.backendConnector.load(o,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),a(u)})}else a(null)}reloadResources(t,n,a){const r=di();return typeof t=="function"&&(a=t,t=void 0),typeof n=="function"&&(a=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),a||(a=Yo),this.services.backendConnector.reload(t,n,s=>{r.resolve(),a(s)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&Ak.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1)){for(let n=0;n<this.languages.length;n++){const a=this.languages[n];if(!(["cimode","dev"].indexOf(a)>-1)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}!this.resolvedLanguage&&this.languages.indexOf(t)<0&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,n){this.isLanguageChangingTo=t;const a=di();this.emit("languageChanging",t);const r=o=>{this.language=o,this.languages=this.services.languageUtils.toResolveHierarchy(o),this.resolvedLanguage=void 0,this.setResolvedLanguage(o)},s=(o,c)=>{c?this.isLanguageChangingTo===t&&(r(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,a.resolve((...u)=>this.t(...u)),n&&n(o,(...u)=>this.t(...u))},i=o=>{var d,p;!t&&!o&&this.services.languageDetector&&(o=[]);const c=Z(o)?o:o&&o[0],u=this.store.hasLanguageSomeTranslations(c)?c:this.services.languageUtils.getBestMatchFromCodes(Z(o)?[o]:o);u&&(this.language||r(u),this.translator.language||this.translator.changeLanguage(u),(p=(d=this.services.languageDetector)==null?void 0:d.cacheUserLanguage)==null||p.call(d,u)),this.loadResources(u,h=>{s(h,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?i(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(i):this.services.languageDetector.detect(i):i(t),a}getFixedT(t,n,a){const r=(s,i,...o)=>{let c;typeof i!="object"?c=this.options.overloadTranslationOptionHandler([s,i].concat(o)):c={...i},c.lng=c.lng||r.lng,c.lngs=c.lngs||r.lngs,c.ns=c.ns||r.ns,c.keyPrefix!==""&&(c.keyPrefix=c.keyPrefix||a||r.keyPrefix);const u=this.options.keySeparator||".";let d;return c.keyPrefix&&Array.isArray(s)?d=s.map(p=>(typeof p=="function"&&(p=Ip(p,{...this.options,...i})),`${c.keyPrefix}${u}${p}`)):(typeof s=="function"&&(s=Ip(s,{...this.options,...i})),d=c.keyPrefix?`${c.keyPrefix}${u}${s}`:s),this.t(d,c)};return Z(t)?r.lng=t:r.lngs=t,r.ns=n,r.keyPrefix=a,r}t(...t){var n;return(n=this.translator)==null?void 0:n.translate(...t)}exists(...t){var n;return(n=this.translator)==null?void 0:n.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;
304if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const a=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,s=this.languages[this.languages.length-1];if(a.toLowerCase()==="cimode")return!0;const i=(o,c)=>{const u=this.services.backendConnector.state[`${o}|${c}`];return u===-1||u===0||u===2};if(n.precheck){const o=n.precheck(this,i);if(o!==void 0)return o}return!!(this.hasResourceBundle(a,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||i(a,t)&&(!r||i(s,t)))}loadNamespaces(t,n){const a=di();return this.options.ns?(Z(t)&&(t=[t]),t.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{a.resolve(),n&&n(r)}),a):(n&&n(),Promise.resolve())}loadLanguages(t,n){const a=di();Z(t)&&(t=[t]);const r=this.options.preload||[],s=t.filter(i=>r.indexOf(i)<0&&this.services.languageUtils.isSupportedCode(i));return s.length?(this.options.preload=r.concat(s),this.loadResources(i=>{a.resolve(),n&&n(i)}),a):(n&&n(),Promise.resolve())}dir(t){var r,s;if(t||(t=this.resolvedLanguage||(((r=this.languages)==null?void 0:r.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{const i=new Intl.Locale(t);if(i&&i.getTextInfo){const o=i.getTextInfo();if(o&&o.direction)return o.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],a=((s=this.services)==null?void 0:s.languageUtils)||new Jg(Hu());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(a.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){const a=new ji(t,n);return a.createInstance=ji.createInstance,a}cloneInstance(t={},n=Yo){const a=t.forkResourceStore;a&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},s=new ji(r);if((t.debug!==void 0||t.prefix!==void 0)&&(s.logger=s.logger.clone(t)),["store","services","language"].forEach(o=>{s[o]=this[o]}),s.services={...this.services},s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},a){const o=Object.keys(this.store.data).reduce((c,u)=>(c[u]={...this.store.data[u]},c[u]=Object.keys(c[u]).reduce((d,p)=>(d[p]={...c[u][p]},d),c[u]),c),{});s.store=new Kg(o,r),s.services.resourceStore=s.store}if(t.interpolation){const c={...Hu().interpolation,...this.options.interpolation,...t.interpolation},u={...r,interpolation:c};s.services.interpolator=new ev(u)}return s.translator=new oc(s.services,r),s.translator.on("*",(o,...c)=>{s.emit(o,...c)}),s.init(r,n),s.translator.options=r,s.translator.backendConnector.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const ht=ji.createInstance();ht.createInstance;ht.dir;ht.init;ht.loadResources;ht.reloadResources;ht.use;ht.changeLanguage;ht.getFixedT;ht.t;ht.exists;ht.setDefaultNamespace;ht.hasLoadedNamespace;ht.loadNamespaces;ht.loadLanguages;const VR=(e,t,n,a)=>{var s,i,o,c;const r=[n,{code:t,...a||{}}];if((i=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&i.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);br(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),(c=(o=e==null?void 0:e.services)==null?void 0:o.logger)!=null&&c.warn?e.services.logger.warn(...r):console!=null&&console.warn&&console.warn(...r)},av={},Ck=(e,t,n,a)=>{br(n)&&av[n]||(br(n)&&(av[n]=new Date),VR(e,t,n,a))},Tk=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},Rp=(e,t,n)=>{e.loadNamespaces(t,Tk(e,n))},rv=(e,t,n,a)=>{if(br(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Rp(e,n,a);
304n.forEach(r=>{e.options.ns.indexOf(r)<0&&e.options.ns.push(r)}),e.loadLanguages(t,Tk(e,a))},HR=(e,t,n={})=>!t.languages||!t.languages.length?(Ck(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(a,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!r(a.isLanguageChangingTo,e))return!1}}),br=e=>typeof e=="string",GR=e=>typeof e=="object"&&e!==null,KR=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,YR={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},JR=e=>YR[e],QR=e=>e.replace(KR,JR);let _p={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:QR,transDefaultProps:void 0};const XR=(e={})=>{_p={..._p,...e}},ZR=()=>_p;let jk;const e_=e=>{jk=e},t_=()=>jk,n_={type:"3rdParty",init(e){XR(e.options.react),e_(e)}},a_=v.createContext();class r_{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var Ik={exports:{}},Rk={};/**
305 * @license React
306 * use-sync-external-store-shim.production.js
307 *
308 * Copyright (c) Meta Platforms, Inc. and affiliates.
309 *
310 * This source code is licensed under the MIT license found in the
311 * LICENSE file in the root directory of this source tree.
312 */var Ds=v;function s_(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var i_=typeof Object.is=="function"?Object.is:s_,o_=Ds.useState,l_=Ds.useEffect,c_=Ds.useLayoutEffect,u_=Ds.useDebugValue;function d_(e,t){var n=t(),a=o_({inst:{value:n,getSnapshot:t}}),r=a[0].inst,s=a[1];return c_(function(){r.value=n,r.getSnapshot=t,Gu(r)&&s({inst:r})},[e,n,t]),l_(function(){return Gu(r)&&s({inst:r}),e(function(){Gu(r)&&s({inst:r})})},[e]),u_(n),n}function Gu(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i_(e,n)}catch{return!0}}function p_(e,t){return t()}var m_=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?p_:d_;Rk.useSyncExternalStore=Ds.useSyncExternalStore!==void 0?Ds.useSyncExternalStore:m_;Ik.exports=Rk;var h_=Ik.exports;const f_=(e,t)=>br(t)?t:GR(t)&&br(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,g_={t:f_,ready:!1},v_=()=>()=>{},ft=(e,t={})=>{var T,j,D;const{i18n:n}=t,{i18n:a,defaultNS:r}=v.useContext(a_)||{},s=n||a||t_();s&&!s.reportNamespaces&&(s.reportNamespaces=new r_),s||Ck(s,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const i=v.useMemo(()=>{var z;return{...ZR(),...(z=s==null?void 0:s.options)==null?void 0:z.react,...t}},[s,t]),{useSuspense:o,keyPrefix:c}=i,u=r||((T=s==null?void 0:s.options)==null?void 0:T.defaultNS),d=br(u)?[u]:u||["translation"],p=v.useMemo(()=>d,d);(D=(j=s==null?void 0:s.reportNamespaces)==null?void 0:j.addUsedNamespaces)==null||D.call(j,p);const h=v.useRef(0),m=v.useCallback(z=>{if(!s)return v_;const{bindI18n:_,bindI18nStore:N}=i,$=()=>{h.current+=1,z()};return _&&s.on(_,$),N&&s.store.on(N,$),()=>{_&&_.split(" ").forEach(F=>s.off(F,$)),N&&N.split(" ").forEach(F=>s.store.off(F,$))}},[s,i]),w=v.useRef(),f=v.useCallback(()=>{if(!s)return g_;const z=!!(s.isInitialized||s.initializedStoreOnce)&&p.every(C=>HR(C,s,i)),_=t.lng||s.language,N=h.current,$=w.current;if($&&$.ready===z&&$.lng===_&&$.keyPrefix===c&&$.revision===N)return $;const M={t:s.getFixedT(_,i.nsMode==="fallback"?p:p[0],c),ready:z,lng:_,keyPrefix:c,revision:N};return w.current=M,M},[s,p,c,i,t.lng]),[x,b]=v.useState(0),{t:g,ready:y}=h_.useSyncExternalStore(m,f,f);v.useEffect(()=>{if(s&&!y&&!o){const z=()=>b(_=>_+1);t.lng?rv(s,t.lng,p,z):Rp(s,p,z)}},[s,t.lng,p,y,o,x]);const k=s||{},P=v.useRef(null),E=v.useRef(),S=z=>{const _=Object.getOwnPropertyDescriptors(z);_.__original&&delete _.__original;const N=Object.create(Object.getPrototypeOf(z),_);if(!Object.prototype.hasOwnProperty.call(N,"__original"))try{Object.defineProperty(N,"__original",{value:z,writable:!1,enumerable:!1,
312configurable:!1})}catch{}return N},A=v.useMemo(()=>{const z=k,_=z==null?void 0:z.language;let N=z;z&&(P.current&&P.current.__original===z?E.current!==_?(N=S(z),P.current=N,E.current=_):N=P.current:(N=S(z),P.current=N,E.current=_));const $=[g,N,y];return $.t=g,$.i18n=N,$.ready=y,$},[g,k,y,k.resolvedLanguage,k.language,k.languages]);if(s&&o&&!y)throw new Promise(z=>{const _=()=>z();t.lng?rv(s,t.lng,p,_):Rp(s,p,_)});return A};function sv(e,[t,n]){return Math.min(n,Math.max(t,e))}var y_=v.createContext(void 0);function _k(e){const t=v.useContext(y_);return e||t||"ltr"}var Ku=0;function b_(){v.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??iv()),document.body.insertAdjacentElement("beforeend",e[1]??iv()),Ku++,()=>{Ku===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Ku--}},[])}function iv(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Yu="focusScope.autoFocusOnMount",Ju="focusScope.autoFocusOnUnmount",ov={bubbles:!1,cancelable:!0},w_="FocusScope",Ok=v.forwardRef((e,t)=>{const{loop:n=!1,trapped:a=!1,onMountAutoFocus:r,onUnmountAutoFocus:s,...i}=e,[o,c]=v.useState(null),u=dn(r),d=dn(s),p=v.useRef(null),h=Ce(t,f=>c(f)),m=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(a){let f=function(y){if(m.paused||!o)return;const k=y.target;o.contains(k)?p.current=k:ra(p.current,{select:!0})},x=function(y){if(m.paused||!o)return;const k=y.relatedTarget;k!==null&&(o.contains(k)||ra(p.current,{select:!0}))},b=function(y){if(document.activeElement===document.body)for(const P of y)P.removedNodes.length>0&&ra(o)};document.addEventListener("focusin",f),document.addEventListener("focusout",x);const g=new MutationObserver(b);return o&&g.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",x),g.disconnect()}}},[a,o,m.paused]),v.useEffect(()=>{if(o){cv.add(m);const f=document.activeElement;if(!o.contains(f)){const b=new CustomEvent(Yu,ov);o.addEventListener(Yu,u),o.dispatchEvent(b),b.defaultPrevented||(x_(E_(Nk(o)),{select:!0}),document.activeElement===f&&ra(o))}return()=>{o.removeEventListener(Yu,u),setTimeout(()=>{const b=new CustomEvent(Ju,ov);o.addEventListener(Ju,d),o.dispatchEvent(b),b.defaultPrevented||ra(f??document.body,{select:!0}),o.removeEventListener(Ju,d),cv.remove(m)},0)}}},[o,u,d,m]);const w=v.useCallback(f=>{if(!n&&!a||m.paused)return;const x=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,b=document.activeElement;if(x&&b){const g=f.currentTarget,[y,k]=k_(g);y&&k?!f.shiftKey&&b===k?(f.preventDefault(),n&&ra(y,{select:!0})):f.shiftKey&&b===y&&(f.preventDefault(),n&&ra(k,{select:!0})):b===g&&f.preventDefault()}},[n,a,m.paused]);return l.jsx(de.div,{tabIndex:-1,...i,ref:h,onKeyDown:w})});Ok.displayName=w_;function x_(e,{select:t=!1}={}){const n=document.activeElement;for(const a of e)if(ra(a,{select:t}),document.activeElement!==n)return}function k_(e){const t=Nk(e),n=lv(t,e),a=lv(t.reverse(),e);return[n,a]}function Nk(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const r=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||r?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function lv(e,t){for(const n of e)if(!S_(n,{upTo:t}))return n}function S_(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function P_(e){return e instanceof HTMLInputElement&&"select"in e}function ra(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&P_(e)&&t&&e.select()}}var cv=A_();function A_(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=uv(e,t),e.unshift(t)},remove(t){var n;e=uv(e,t),(n=e[0])==null||n.resume()}}}function uv(e,t){const n=[...e],a=n.indexOf(t);return a!==-1&&n.splice(a,1),n}function E_(e){return e.filter(t=>t.tagName!=="A")}function C_(e){const t=v.useRef({value:e,previous:e});return v.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var T_=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Lr=new WeakMap,Jo=new WeakMap,Qo={},Qu=0,Lk=function(e){return e&&(e.host||Lk(e.parentNode))},j_=function(e,t){return t.map(function(n){if(e.contains(n))return n;var a=Lk(n);return a&&e.contains(a)?a:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},I_=function(e,t,n,a){var r=j_(t,Array.isArray(e)?e:[e]);Qo[n]||(Qo[n]=new WeakMap);var s=Qo[n],i=[],o=new Set,c=new Set(r),u=function(p){!p||o.has(p)||(o.add(p),u(p.parentNode))};r.forEach(u);var d=function(p){!p||c.has(p)||Array.prototype.forEach.call(p.children,function(h){if(o.has(h))d(h);else try{var m=h.getAttribute(a),w=m!==null&&m!=="false",f=(Lr.get(h)||0)+1,x=(s.get(h)||0)+1;Lr.set(h,f),s.set(h,x),i.push(h),f===1&&w&&Jo.set(h,!0),x===1&&h.setAttribute(n,"true"),w||h.setAttribute(a,"true")}catch(b){console.error("aria-hidden: cannot operate on ",h,b)}})};
vendor: 8,443 bytes, lines 312-349
312return d(t),o.clear(),Qu++,function(){i.forEach(function(p){var h=Lr.get(p)-1,m=s.get(p)-1;Lr.set(p,h),s.set(p,m),h||(Jo.has(p)||p.removeAttribute(a),Jo.delete(p)),m||p.removeAttribute(n)}),Qu--,Qu||(Lr=new WeakMap,Lr=new WeakMap,Jo=new WeakMap,Qo={})}},R_=function(e,t,n){n===void 0&&(n="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),r=T_(e);return r?(a.push.apply(a,Array.from(r.querySelectorAll("[aria-live]"))),I_(a,r,n,"aria-hidden")):function(){return null}},xn=function(){return xn=Object.assign||function(t){for(var n,a=1,r=arguments.length;a<r;a++){n=arguments[a];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])}return t},xn.apply(this,arguments)};function Ys(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]]);return n}function __(e,t,n,a){function r(s){return s instanceof n?s:new n(function(i){i(s)})}return new(n||(n=Promise))(function(s,i){function o(d){try{u(a.next(d))}catch(p){i(p)}}function c(d){try{u(a.throw(d))}catch(p){i(p)}}function u(d){d.done?s(d.value):r(d.value).then(o,c)}u((a=a.apply(e,t||[])).next())})}function O_(e,t,n){if(n||arguments.length===2)for(var a=0,r=t.length,s;a<r;a++)(s||!(a in t))&&(s||(s=Array.prototype.slice.call(t,0,a)),s[a]=t[a]);return e.concat(s||Array.prototype.slice.call(t))}var Pl="right-scroll-bar-position",Al="width-before-scroll-bar",N_="with-scroll-bars-hidden",L_="--removed-body-scroll-bar-size";function Xu(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function z_(e,t){var n=v.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(a){var r=n.value;r!==a&&(n.value=a,n.callback(a,r))}}}})[0];return n.callback=t,n.facade}var B_=typeof window<"u"?v.useLayoutEffect:v.useEffect,dv=new WeakMap;function D_(e,t){var n=z_(null,function(a){return e.forEach(function(r){return Xu(r,a)})});return B_(function(){var a=dv.get(n);if(a){var r=new Set(a),s=new Set(e),i=n.current;r.forEach(function(o){s.has(o)||Xu(o,null)}),s.forEach(function(o){r.has(o)||Xu(o,i)})}dv.set(n,e)},[e]),n}function q_(e){return e}function M_(e,t){t===void 0&&(t=q_);var n=[],a=!1,r={read:function(){if(a)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(s){var i=t(s,a);return n.push(i),function(){n=n.filter(function(o){return o!==i})}},assignSyncMedium:function(s){for(a=!0;n.length;){var i=n;n=[],i.forEach(s)}n={push:function(o){return s(o)},filter:function(){return n}}},assignMedium:function(s){a=!0;var i=[];if(n.length){var o=n;n=[],o.forEach(s),i=n}var c=function(){var d=i;i=[],d.forEach(s)},u=function(){return Promise.resolve().then(c)};u(),n={push:function(d){i.push(d),u()},filter:function(d){return i=i.filter(d),n}}}};return r}function F_(e){e===void 0&&(e={});var t=M_(null);return t.options=xn({async:!0,ssr:!1},e),t}var zk=function(e){var t=e.sideCar,n=Ys(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var a=t.read();if(!a)throw new Error("Sidecar medium not found");return v.createElement(a,xn({},n))};zk.isSideCarExport=!0;function U_(e,t){return e.useMedium(t),zk}var Bk=F_(),Zu=function(){},Vc=v.forwardRef(function(e,t){var n=v.useRef(null),a=v.useState({onScrollCapture:Zu,onWheelCapture:Zu,onTouchMoveCapture:Zu}),r=a[0],s=a[1],i=e.forwardProps,o=e.children,c=e.className,u=e.removeScrollBar,d=e.enabled,p=e.shards,h=e.sideCar,m=e.noRelative,w=e.noIsolation,f=e.inert,x=e.allowPinchZoom,b=e.as,g=b===void 0?"div":b,y=e.gapMode,k=Ys(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=h,E=D_([n,t]),S=xn(xn({},k),r);return v.createElement(v.Fragment,null,d&&v.createElement(P,{sideCar:Bk,removeScrollBar:u,shards:p,noRelative:m,noIsolation:w,inert:f,setCallbacks:s,allowPinchZoom:!!x,lockRef:n,gapMode:y}),i?v.cloneElement(v.Children.only(o),xn(xn({},S),{ref:E})):v.createElement(g,xn({},S,{className:c,ref:E}),o))});Vc.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Vc.classNames={fullWidth:Al,zeroRight:Pl};var $_=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function W_(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=$_();return t&&e.setAttribute("nonce",t),e}function V_(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function H_(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var G_=function(){var e=0,t=null;return{add:function(n){e==0&&(t=W_())&&(V_(t,n),H_(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},K_=function(){var e=G_();return function(t,n){v.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},Dk=function(){var e=K_(),t=function(n){var a=n.styles,r=n.dynamic;return e(a,r),null};return t},Y_={left:0,top:0,right:0,gap:0},ed=function(e){return parseInt(e||"",10)||0},J_=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],a=t[e==="padding"?"paddingTop":"marginTop"],r=t[e==="padding"?"paddingRight":"marginRight"];return[ed(n),ed(a),ed(r)]},Q_=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return Y_;var t=J_(e),n=document.documentElement.clientWidth,a=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,a-n+t[2]-t[0])}},X_=Dk(),ys="data-scroll-locked",Z_=function(e,t,n,a){var r=e.left,s=e.top,i=e.right,o=e.gap;return n===void 0&&(n="margin"),`
313  .`.concat(N_,` {
314   overflow: hidden `).concat(a,`;
315   padding-right: `).concat(o,"px ").concat(a,`;
316  }
317  body[`).concat(ys,`] {
318    overflow: hidden `).concat(a,`;
319    overscroll-behavior: contain;
320    `).concat([t&&"position: relative ".concat(a,";"),n==="margin"&&`
321    padding-left: `.concat(r,`px;
322    padding-top: `).concat(s,`px;
323    padding-right: `).concat(i,`px;
324    margin-left:0;
325    margin-top:0;
326    margin-right: `).concat(o,"px ").concat(a,`;
327    `),n==="padding"&&"padding-right: ".concat(o,"px ").concat(a,";")].filter(Boolean).join(""),`
328  }
329  
330  .`).concat(Pl,` {
331    right: `).concat(o,"px ").concat(a,`;
332  }
333  
334  .`).concat(Al,` {
335    margin-right: `).concat(o,"px ").concat(a,`;
336  }
337  
338  .`).concat(Pl," .").concat(Pl,` {
339    right: 0 `).concat(a,`;
340  }
341  
342  .`).concat(Al," .").concat(Al,` {
343    margin-right: 0 `).concat(a,`;
344  }
345  
346  body[`).concat(ys,`] {
347    `).concat(L_,": ").concat(o,`px;
348  }
349`)},pv=function(){var e=parseInt(document.body.getAttribute(ys)||"0",10);return isFinite(e)?e:0},e2=function(){v.useEffect(function(){return document.body.setAttribute(ys,(pv()+1).toString()),function(){var e=pv()-1;e<=0?document.body.removeAttribute(ys):document.body.setAttribute(ys,e.toString())}},[])},t2=function(e){var t=e.noRelative,n=e.noImportant,a=e.gapMode,r=a===void 0?"margin":a;e2();var s=v.useMemo(function(){return Q_(r)},[r]);return v.createElement(X_,{styles:Z_(s,!t,r,n?"":"!important")})},Op=!1;if(typeof window<"u")try{var Xo=Object.defineProperty({},"passive",{get:function(){return Op=!0,!0}});window.addEventListener("test",Xo,Xo),window.removeEventListener("test",Xo,Xo)}catch{Op=!1}var zr=Op?{passive:!1}:!1,n2=function(e){return e.tagName==="TEXTAREA"},qk=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!n2(e)&&n[t]==="visible")},a2=function(e){return qk(e,"overflowY")},r2=function(e){return qk(e,"overflowX")},mv=function(e,t){var n=t.ownerDocument,a=t;do{typeof ShadowRoot<"u"&&a instanceof ShadowRoot&&(a=a.host);var r=Mk(e,a);if(r){var s=Fk(e,a),i=s[1],o=s[2];if(i>o)return!0}a=a.parentNode}while(a&&a!==n.body);return!1},s2=function(e){var t=e.scrollTop,n=e.scrollHeight,a=e.clientHeight;return[t,n,a]},i2=function(e){var t=e.scrollLeft,n=e.scrollWidth,a=e.clientWidth;return[t,n,a]},Mk=function(e,t){return e==="v"?a2(t):r2(t)},Fk=function(e,t){return e==="v"?s2(t):i2(t)},o2=function(e,t){return e==="h"&&t==="rtl"?-1:1},l2=function(e,t,n,a,r){var s=o2(e,window.getComputedStyle(t).direction),i=s*a,o=n.target,c=t.contains(o),u=!1,d=i>0,p=0,h=0;
vendor: 5,079 bytes, lines 349-352
349do{if(!o)break;var m=Fk(e,o),w=m[0],f=m[1],x=m[2],b=f-x-s*w;(w||b)&&Mk(e,o)&&(p+=b,h+=w);var g=o.parentNode;o=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&o!==document.body||c&&(t.contains(o)||t===o));return(d&&(Math.abs(p)<1||!r)||!d&&(Math.abs(h)<1||!r))&&(u=!0),u},Zo=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},hv=function(e){return[e.deltaX,e.deltaY]},fv=function(e){return e&&"current"in e?e.current:e},c2=function(e,t){return e[0]===t[0]&&e[1]===t[1]},u2=function(e){return`
350  .block-interactivity-`.concat(e,` {pointer-events: none;}
351  .allow-interactivity-`).concat(e,` {pointer-events: all;}
352`)},d2=0,Br=[];function p2(e){var t=v.useRef([]),n=v.useRef([0,0]),a=v.useRef(),r=v.useState(d2++)[0],s=v.useState(Dk)[0],i=v.useRef(e);v.useEffect(function(){i.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var f=O_([e.lockRef.current],(e.shards||[]).map(fv),!0).filter(Boolean);return f.forEach(function(x){return x.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),f.forEach(function(x){return x.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var o=v.useCallback(function(f,x){if("touches"in f&&f.touches.length===2||f.type==="wheel"&&f.ctrlKey)return!i.current.allowPinchZoom;var b=Zo(f),g=n.current,y="deltaX"in f?f.deltaX:g[0]-b[0],k="deltaY"in f?f.deltaY:g[1]-b[1],P,E=f.target,S=Math.abs(y)>Math.abs(k)?"h":"v";if("touches"in f&&S==="h"&&E.type==="range")return!1;var A=mv(S,E);if(!A)return!0;if(A?P=S:(P=S==="v"?"h":"v",A=mv(S,E)),!A)return!1;if(!a.current&&"changedTouches"in f&&(y||k)&&(a.current=P),!P)return!0;var T=a.current||P;return l2(T,x,f,T==="h"?y:k,!0)},[]),c=v.useCallback(function(f){var x=f;if(!(!Br.length||Br[Br.length-1]!==s)){var b="deltaY"in x?hv(x):Zo(x),g=t.current.filter(function(P){return P.name===x.type&&(P.target===x.target||x.target===P.shadowParent)&&c2(P.delta,b)})[0];if(g&&g.should){x.cancelable&&x.preventDefault();return}if(!g){var y=(i.current.shards||[]).map(fv).filter(Boolean).filter(function(P){return P.contains(x.target)}),k=y.length>0?o(x,y[0]):!i.current.noIsolation;k&&x.cancelable&&x.preventDefault()}}},[]),u=v.useCallback(function(f,x,b,g){var y={name:f,delta:x,target:b,should:g,shadowParent:m2(b)};t.current.push(y),setTimeout(function(){t.current=t.current.filter(function(k){return k!==y})},1)},[]),d=v.useCallback(function(f){n.current=Zo(f),a.current=void 0},[]),p=v.useCallback(function(f){u(f.type,hv(f),f.target,o(f,e.lockRef.current))},[]),h=v.useCallback(function(f){u(f.type,Zo(f),f.target,o(f,e.lockRef.current))},[]);v.useEffect(function(){return Br.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:h}),document.addEventListener("wheel",c,zr),document.addEventListener("touchmove",c,zr),document.addEventListener("touchstart",d,zr),function(){Br=Br.filter(function(f){return f!==s}),document.removeEventListener("wheel",c,zr),document.removeEventListener("touchmove",c,zr),document.removeEventListener("touchstart",d,zr)}},[]);var m=e.removeScrollBar,w=e.inert;return v.createElement(v.Fragment,null,w?v.createElement(s,{styles:u2(r)}):null,m?v.createElement(t2,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function m2(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const h2=U_(Bk,p2);var Uk=v.forwardRef(function(e,t){return v.createElement(Vc,xn({},e,{ref:t,sideCar:h2}))});Uk.classNames=Vc.classNames;var f2=[" ","Enter","ArrowUp","ArrowDown"],g2=[" ","Enter"],wr="Select",[Hc,Gc,v2]=Gm(wr),[Js,KM]=Cr(wr,[v2,zc]),Kc=zc(),[y2,Da]=Js(wr),[b2,w2]=Js(wr),$k=e=>{const{__scopeSelect:t,children:n,open:a,defaultOpen:r,onOpenChange:s,value:i,defaultValue:o,onValueChange:c,dir:u,name:d,autoComplete:p,disabled:h,required:m,form:w}=e,f=Kc(t),[x,b]=v.useState(null),[g,y]=v.useState(null),[k,P]=v.useState(!1),E=_k(u),[S,A]=vr({prop:a,defaultProp:r??!1,onChange:s,caller:wr}),[T,j]=vr({prop:i,defaultProp:o,onChange:c,caller:wr}),D=v.useRef(null),z=x?w||!!x.closest("form"):!0,[_,N]=v.useState(new Set),$=Array.from(_).map(F=>F.props.value).join(";");return l.jsx(Ux,{...f,children:l.jsxs(y2,{required:m,scope:t,trigger:x,onTriggerChange:b,valueNode:g,onValueNodeChange:y,valueNodeHasChildren:k,onValueNodeHasChildrenChange:P,contentId:$s(),value:T,onValueChange:j,open:S,onOpenChange:A,dir:E,triggerPointerDownPosRef:D,disabled:h,children:[l.jsx(Hc.Provider,{scope:t,children:l.jsx(b2,{scope:e.__scopeSelect,onNativeOptionAdd:v.useCallback(F=>{N(M=>new Set(M).add(F))},[]),onNativeOptionRemove:v.useCallback(F=>{N(M=>{const C=new Set(M);return C.delete(F),C})},[]),children:n})}),z?l.jsxs(m0,{"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:p,value:T,onChange:F=>j(F.target.value),disabled:h,form:w,children:[T===void 0?l.jsx("option",{value:""}):null,Array.from(_)]},$):null]})})};$k.displayName=wr;var Wk="SelectTrigger",Vk=v.forwardRef((e,t)=>
vendor: 16,812 bytes, line 352
352{const{__scopeSelect:n,disabled:a=!1,...r}=e,s=Kc(n),i=Da(Wk,n),o=i.disabled||a,c=Ce(t,i.onTriggerChange),u=Gc(n),d=v.useRef("touch"),[p,h,m]=f0(f=>{const x=u().filter(y=>!y.disabled),b=x.find(y=>y.value===i.value),g=g0(x,f,b);g!==void 0&&i.onValueChange(g.value)}),w=f=>{o||(i.onOpenChange(!0),m()),f&&(i.triggerPointerDownPosRef.current={x:Math.round(f.pageX),y:Math.round(f.pageY)})};return l.jsx($x,{asChild:!0,...s,children:l.jsx(de.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:o,"data-disabled":o?"":void 0,"data-placeholder":h0(i.value)?"":void 0,...r,ref:c,onClick:se(r.onClick,f=>{f.currentTarget.focus(),d.current!=="mouse"&&w(f)}),onPointerDown:se(r.onPointerDown,f=>{d.current=f.pointerType;const x=f.target;x.hasPointerCapture(f.pointerId)&&x.releasePointerCapture(f.pointerId),f.button===0&&f.ctrlKey===!1&&f.pointerType==="mouse"&&(w(f),f.preventDefault())}),onKeyDown:se(r.onKeyDown,f=>{const x=p.current!=="";!(f.ctrlKey||f.altKey||f.metaKey)&&f.key.length===1&&h(f.key),!(x&&f.key===" ")&&f2.includes(f.key)&&(w(),f.preventDefault())})})})});Vk.displayName=Wk;var Hk="SelectValue",Gk=v.forwardRef((e,t)=>{const{__scopeSelect:n,className:a,style:r,children:s,placeholder:i="",...o}=e,c=Da(Hk,n),{onValueNodeHasChildrenChange:u}=c,d=s!==void 0,p=Ce(t,c.onValueNodeChange);return Ke(()=>{u(d)},[u,d]),l.jsx(de.span,{...o,ref:p,style:{pointerEvents:"none"},children:h0(c.value)?l.jsx(l.Fragment,{children:i}):s})});Gk.displayName=Hk;var x2="SelectIcon",Kk=v.forwardRef((e,t)=>{const{__scopeSelect:n,children:a,...r}=e;return l.jsx(de.span,{"aria-hidden":!0,...r,ref:t,children:a||"▼"})});Kk.displayName=x2;var k2="SelectPortal",Yk=e=>l.jsx(Km,{asChild:!0,...e});Yk.displayName=k2;var xr="SelectContent",Jk=v.forwardRef((e,t)=>{const n=Da(xr,e.__scopeSelect),[a,r]=v.useState();if(Ke(()=>{r(new DocumentFragment)},[]),!n.open){const s=a;return s?Er.createPortal(l.jsx(Qk,{scope:e.__scopeSelect,children:l.jsx(Hc.Slot,{scope:e.__scopeSelect,children:l.jsx("div",{children:e.children})})}),s):null}return l.jsx(Xk,{...e,ref:t})});Jk.displayName=xr;var Qt=10,[Qk,qa]=Js(xr),S2="SelectContentImpl",P2=Yi("SelectContent.RemoveScroll"),Xk=v.forwardRef((e,t)=>{const{__scopeSelect:n,position:a="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:s,onPointerDownOutside:i,side:o,sideOffset:c,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:h,collisionPadding:m,sticky:w,hideWhenDetached:f,avoidCollisions:x,...b}=e,g=Da(xr,n),[y,k]=v.useState(null),[P,E]=v.useState(null),S=Ce(t,U=>k(U)),[A,T]=v.useState(null),[j,D]=v.useState(null),z=Gc(n),[_,N]=v.useState(!1),$=v.useRef(!1);v.useEffect(()=>{if(y)return R_(y)},[y]),b_();const F=v.useCallback(U=>{const[fe,...Oe]=z().map(pe=>pe.ref.current),[he]=Oe.slice(-1),oe=document.activeElement;for(const pe of U)if(pe===oe||(pe==null||pe.scrollIntoView({block:"nearest"}),pe===fe&&P&&(P.scrollTop=0),pe===he&&P&&(P.scrollTop=P.scrollHeight),pe==null||pe.focus(),document.activeElement!==oe))return},[z,P]),M=v.useCallback(()=>F([A,y]),[F,A,y]);v.useEffect(()=>{_&&M()},[_,M]);const{onOpenChange:C,triggerPointerDownPosRef:I}=g;v.useEffect(()=>{if(y){let U={x:0,y:0};const fe=he=>{var oe,pe;U={x:Math.abs(Math.round(he.pageX)-(((oe=I.current)==null?void 0:oe.x)??0)),y:Math.abs(Math.round(he.pageY)-(((pe=I.current)==null?void 0:pe.y)??0))}},Oe=he=>{U.x<=10&&U.y<=10?he.preventDefault():y.contains(he.target)||C(!1),document.removeEventListener("pointermove",fe),I.current=null};return I.current!==null&&(document.addEventListener("pointermove",fe),document.addEventListener("pointerup",Oe,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",fe),document.removeEventListener("pointerup",Oe,{capture:!0})}}},[y,C,I]),v.useEffect(()=>{const U=()=>C(!1);return window.addEventListener("blur",U),window.addEventListener("resize",U),()=>{window.removeEventListener("blur",U),window.removeEventListener("resize",U)}},[C]);const[q,W]=f0(U=>{const fe=z().filter(oe=>!oe.disabled),Oe=fe.find(oe=>oe.ref.current===document.activeElement),he=g0(fe,U,Oe);he&&setTimeout(()=>he.ref.current.focus())}),G=v.useCallback((U,fe,Oe)=>{const he=!$.current&&!Oe;(g.value!==void 0&&g.value===fe||he)&&(T(U),he&&($.current=!0))},[g.value]),Q=v.useCallback(()=>y==null?void 0:y.focus(),[y]),X=v.useCallback((U,fe,Oe)=>{const he=!$.current&&!Oe;(g.value!==void 0&&g.value===fe||he)&&D(U)},[g.value]),ve=a==="popper"?Np:Zk,_e=ve===Np?{side:o,sideOffset:c,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:h,collisionPadding:m,sticky:w,hideWhenDetached:f,avoidCollisions:x}:{};return l.jsx(Qk,{scope:n,content:y,viewport:P,onViewportChange:E,itemRefCallback:G,selectedItem:A,onItemLeave:Q,itemTextRefCallback:X,focusSelectedItem:M,selectedItemText:j,position:a,isPositioned:_,searchRef:q,children:l.jsx(Uk,{as:P2,allowPinchZoom:!0,children:l.jsx(Ok,{asChild:!0,trapped:g.open,onMountAutoFocus:U=>{U.preventDefault()},onUnmountAutoFocus:se(r,U=>{var fe;(fe=g.trigger)==null||fe.focus({preventScroll:!0}),U.preventDefault()}),children:l.jsx(jc,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:i,onFocusOutside:U=>U.preventDefault(),onDismiss:()=>g.onOpenChange(!1),children:l.jsx(ve,{role:"listbox",id:g.contentId,"data-state":g.open?"open":"closed",dir:g.dir,onContextMenu:U=>U.preventDefault(),...b,..._e,onPlaced:()=>N(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...b.style},onKeyDown:se(b.onKeyDown,U=>{const fe=U.ctrlKey||U.altKey||U.metaKey;if(U.key==="Tab"&&U.preventDefault(),!fe&&U.key.length===1&&W(U.key),["ArrowUp","ArrowDown","Home","End"].includes(U.key)){let he=z().filter(oe=>!oe.disabled).map(oe=>oe.ref.current);if(["ArrowUp","End"].includes(U.key)&&(he=he.slice().reverse()),["ArrowUp","ArrowDown"].includes(U.key)){const oe=U.target,pe=he.indexOf(oe);he=he.slice(pe+1)}setTimeout(()=>F(he)),U.preventDefault()}})})})})})})});Xk.displayName=S2;var A2="SelectItemAlignedPosition",Zk=v.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:a,...r}=e,s=Da(xr,n),i=qa(xr,n),[o,c]=v.useState(null),[u,d]=v.useState(null),p=Ce(t,S=>d(S)),h=Gc(n),m=v.useRef(!1),w=v.useRef(!0),{viewport:f,selectedItem:x,selectedItemText:b,focusSelectedItem:g}=i,y=v.useCallback(()=>{if(s.trigger&&s.valueNode&&o&&u&&f&&x&&b){const S=s.trigger.getBoundingClientRect(),A=u.getBoundingClientRect(),T=s.valueNode.getBoundingClientRect(),j=b.getBoundingClientRect();if(s.dir!=="rtl"){const oe=j.left-A.left,pe=T.left-oe,et=S.left-pe,Ot=S.width+et,Ma=Math.max(Ot,A.width),Yn=window.innerWidth-Qt,Fa=sv(pe,[Qt,Math.max(Qt,Yn-Ma)]);o.style.minWidth=Ot+"px",o.style.left=Fa+"px"}else{const oe=A.right-j.right,pe=window.innerWidth-T.right-oe,et=window.innerWidth-S.right-pe,Ot=S.width+et,Ma=Math.max(Ot,A.width),Yn=window.innerWidth-Qt,Fa=sv(pe,[Qt,Math.max(Qt,Yn-Ma)]);o.style.minWidth=Ot+"px",o.style.right=Fa+"px"}const D=h(),z=window.innerHeight-Qt*2,_=f.scrollHeight,N=window.getComputedStyle(u),$=parseInt(N.borderTopWidth,10),F=parseInt(N.paddingTop,10),M=parseInt(N.borderBottomWidth,10),C=parseInt(N.paddingBottom,10),I=$+F+_+C+M,q=Math.min(x.offsetHeight*5,I),W=window.getComputedStyle(f),G=parseInt(W.paddingTop,10),Q=parseInt(W.paddingBottom,10),X=S.top+S.height/2-Qt,ve=z-X,_e=x.offsetHeight/2,U=x.offsetTop+_e,fe=$+F+U,Oe=I-fe;if(fe<=X){const oe=D.length>0&&x===D[D.length-1].ref.current;o.style.bottom="0px";const pe=u.clientHeight-f.offsetTop-f.offsetHeight,et=Math.max(ve,_e+(oe?Q:0)+pe+M),Ot=fe+et;o.style.height=Ot+"px"}else{const oe=D.length>0&&x===D[0].ref.current;o.style.top="0px";const et=Math.max(X,$+f.offsetTop+(oe?G:0)+_e)+Oe;o.style.height=et+"px",f.scrollTop=fe-X+f.offsetTop}o.style.margin=`${Qt}px 0`,o.style.minHeight=q+"px",o.style.maxHeight=z+"px",a==null||a(),requestAnimationFrame(()=>m.current=!0)}},[h,s.trigger,s.valueNode,o,u,f,x,b,s.dir,a]);Ke(()=>y(),[y]);const[k,P]=v.useState();Ke(()=>{u&&P(window.getComputedStyle(u).zIndex)},[u]);const E=v.useCallback(S=>{S&&w.current===!0&&(y(),g==null||g(),w.current=!1)},[y,g]);return l.jsx(C2,{scope:n,contentWrapper:o,shouldExpandOnScrollRef:m,onScrollButtonChange:E,children:l.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:k},children:l.jsx(de.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Zk.displayName=A2;var E2="SelectPopperPosition",Np=v.forwardRef((e,t)=>{const{__scopeSelect:n,align:a="start",collisionPadding:r=Qt,...s}=e,i=Kc(n);return l.jsx(Wx,{...i,...s,ref:t,align:a,collisionPadding:r,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Np.displayName=E2;var[C2,xh]=Js(xr,{}),Lp="SelectViewport",e0=v.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:a,...r}=e,s=qa(Lp,n),i=xh(Lp,n),o=Ce(t,s.onViewportChange),c=v.useRef(0);return l.jsxs(l.Fragment,{children:[l.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),l.jsx(Hc.Slot,{scope:n,children:l.jsx(de.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:o,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:se(r.onScroll,u=>{const d=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:h}=i;if(h!=null&&h.current&&p){const m=Math.abs(c.current-d.scrollTop);if(m>0){const w=window.innerHeight-Qt*2,f=parseFloat(p.style.minHeight),x=parseFloat(p.style.height),b=Math.max(f,x);if(b<w){const g=b+m,y=Math.min(w,g),k=g-y;p.style.height=y+"px",p.style.bottom==="0px"&&(d.scrollTop=k>0?k:0,p.style.justifyContent="flex-end")}}}c.current=d.scrollTop})})})]})});e0.displayName=Lp;var t0="SelectGroup",[T2,j2]=Js(t0),I2=v.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,r=$s();return l.jsx(T2,{scope:n,id:r,children:l.jsx(de.div,{role:"group","aria-labelledby":r,...a,ref:t})})});I2.displayName=t0;var n0="SelectLabel",a0=v.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,r=j2(n0,n);return l.jsx(de.div,{id:r.id,...a,ref:t})});a0.displayName=n0;var lc="SelectItem",[R2,r0]=Js(lc),s0=v.forwardRef((e,t)=>{const{__scopeSelect:n,value:a,disabled:r=!1,textValue:s,...i}=e,o=Da(lc,n),c=qa(lc,n),u=o.value===a,[d,p]=v.useState(s??""),[h,m]=v.useState(!1),w=Ce(t,g=>{var y;return(y=c.itemRefCallback)==null?void 0:y.call(c,g,a,r)}),f=$s(),x=v.useRef("touch"),b=()=>{r||(o.onValueChange(a),o.onOpenChange(!1))};if(a==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return l.jsx(R2,{scope:n,value:a,disabled:r,textId:f,isSelected:u,onItemTextChange:v.useCallback(g=>{p(y=>y||((g==null?void 0:g.textContent)??"").trim())},[]),children:l.jsx(Hc.ItemSlot,{scope:n,value:a,disabled:r,textValue:d,children:l.jsx(de.div,{role:"option","aria-labelledby":f,"data-highlighted":h?"":void 0,"aria-selected":u&&h,"data-state":u?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...i,ref:w,onFocus:se(i.onFocus,()=>m(!0)),onBlur:se(i.onBlur,()=>m(!1)),onClick:se(i.onClick,()=>{x.current!=="mouse"&&b()}),onPointerUp:se(i.onPointerUp,()=>{x.current==="mouse"&&b()}),onPointerDown:se(i.onPointerDown,g=>{x.current=g.pointerType}),onPointerMove:se(i.onPointerMove,g=>{var y;x.current=g.pointerType,r?(y=c.onItemLeave)==null||y.call(c):x.current==="mouse"&&g.currentTarget.focus({preventScroll:!0})}),onPointerLeave:se(i.onPointerLeave,g=>{var y;g.currentTarget===document.activeElement&&((y=c.onItemLeave)==null||y.call(c))}),onKeyDown:se(i.onKeyDown,g=>{var k;((k=c.searchRef)==null?void 0:k.current)!==""&&g.key===" "||(g2.includes(g.key)&&b(),g.key===" "&&g.preventDefault())})})})})});s0.displayName=lc;var gi="SelectItemText",i0=v.forwardRef((e,t)=>{const{__scopeSelect:n,className:a,style:r,...s}=e,i=Da(gi,n),o=qa(gi,n),c=r0(gi,n),u=w2(gi,n),[d,p]=v.useState(null),h=Ce(t,b=>p(b),c.onItemTextChange,b=>{var g;return(g=o.itemTextRefCallback)==null?void 0:g.call(o,b,c.value,c.disabled)}),m=d==null?void 0:d.textContent,w=v.useMemo(()=>l.jsx("option",{value:c.value,disabled:c.disabled,children:m},c.value),[c.disabled,c.value,m]),{onNativeOptionAdd:f,onNativeOptionRemove:x}=u;return Ke(()=>(f(w),()=>x(w)),[f,x,w]),l.jsxs(l.Fragment,{children:[l.jsx(de.span,{id:c.textId,...s,ref:h}),c.isSelected&&i.valueNode&&!i.valueNodeHasChildren?Er.createPortal(s.children,i.valueNode):null]})});i0.displayName=gi;var o0="SelectItemIndicator",l0=v.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e;return r0(o0,n).isSelected?l.jsx(de.span,{"aria-hidden":!0,...a,ref:t}):null});l0.displayName=o0;var zp="SelectScrollUpButton",c0=v.forwardRef((e,t)=>{const n=qa(zp,e.__scopeSelect),a=xh(zp,e.__scopeSelect),[r,s]=v.useState(!1),i=Ce(t,a.onScrollButtonChange);return Ke(()=>{if(n.viewport&&n.isPositioned){let o=function(){const u=c.scrollTop>0;s(u)};const c=n.viewport;return o(),c.addEventListener("scroll",o),()=>c.removeEventListener("scroll",o)}},[n.viewport,n.isPositioned]),r?l.jsx(d0,{...e,ref:i,onAutoScroll:()=>{const{viewport:o,selectedItem:c}=n;o&&c&&(o.scrollTop=o.scrollTop-c.offsetHeight)}}):null});c0.displayName=zp;var Bp="SelectScrollDownButton",u0=v.forwardRef((e,t)=>{const n=qa(Bp,e.__scopeSelect),a=xh(Bp,e.__scopeSelect),[r,s]=v.useState(!1),i=Ce(t,a.onScrollButtonChange);return Ke(()=>{if(n.viewport&&n.isPositioned){let o=function(){const u=c.scrollHeight-c.clientHeight,d=Math.ceil(c.scrollTop)<u;s(d)};const c=n.viewport;return o(),c.addEventListener("scroll",o),()=>c.removeEventListener("scroll",o)}},[n.viewport,n.isPositioned]),r?l.jsx(d0,{...e,ref:i,onAutoScroll:()=>{const{viewport:o,selectedItem:c}=n;o&&c&&(o.scrollTop=o.scrollTop+c.offsetHeight)}}):null});u0.displayName=Bp;var d0=v.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:a,...r}=e,s=qa("SelectScrollButton",n),i=v.useRef(null),o=Gc(n),c=v.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]);return v.useEffect(()=>()=>c(),[c]),Ke(()=>{var d;const u=o().find(p=>p.ref.current===document.activeElement);(d=u==null?void 0:u.ref.current)==null||d.scrollIntoView({block:"nearest"})},[o]),l.jsx(de.div,{"aria-hidden":!0,...r,ref:t,style:{flexShrink:0,...r.style},onPointerDown:se(r.onPointerDown,()=>{i.current===null&&(i.current=window.setInterval(a,50))}),onPointerMove:se(r.onPointerMove,()=>{var u;(u=s.onItemLeave)==null||u.call(s),i.current===null&&(i.current=window.setInterval(a,50))}),onPointerLeave:se(r.onPointerLeave,()=>{c()})})}),_2="SelectSeparator",p0=v.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e;return l.jsx(de.div,{"aria-hidden":!0,...a,ref:t})});p0.displayName=_2;var Dp="SelectArrow",O2=v.forwardRef((e,t)=>{const{__scopeSelect:n,...a}=e,r=Kc(n),s=Da(Dp,n),i=qa(Dp,n);return s.open&&i.position==="popper"?l.jsx(Vx,{...r,...a,ref:t}):null});O2.displayName=Dp;var N2="SelectBubbleInput",m0=v.forwardRef(({__scopeSelect:e,value:t,...n},a)=>{const r=v.useRef(null),s=Ce(a,r),i=C_(t);return v.useEffect(()=>{const o=r.current;if(!o)return;const c=window.HTMLSelectElement.prototype,d=Object.getOwnPropertyDescriptor(c,"value").set;if(i!==t&&d){const p=new Event("change",{bubbles:!0});d.call(o,t),o.dispatchEvent(p)}},[i,t]),l.jsx(de.select,{...n,style:{...Rw,...n.style},ref:s,defaultValue:t})});m0.displayName=N2;function h0(e){return e===""||e===void 0}function f0(e){const t=dn(e),n=v.useRef(""),a=v.useRef(0),r=v.useCallback(i=>{const o=n.current+i;t(o),function c(u){n.current=u,window.clearTimeout(a.current),u!==""&&(a.current=window.setTimeout(()=>c(""),1e3))}(o)},[t]),s=v.useCallback(()=>{n.current="",window.clearTimeout(a.current)},[]);return v.useEffect(()=>()=>window.clearTimeout(a.current),[]),[n,r,s]}function g0(e,t,n){const r=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let i=L2(e,Math.max(s,0));r.length===1&&(i=i.filter(u=>u!==n));const c=i.find(u=>u.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==n?c:void 0}function L2(e,t){return e.map((n,a)=>e[(t+a)%e.length])}var z2=$k,v0=Vk,B2=Gk,D2=Kk,q2=Yk,y0=Jk,M2=e0,b0=a0,w0=s0,F2=i0,U2=l0,x0=c0,k0=u0,S0=p0;const $2=z2,W2=B2,P0=v.forwardRef(({className:e,children:t,...n},a)=>l.jsxs(v0,{ref:a,className:We("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
352ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...n,children:[t,l.jsx(D2,{asChild:!0,children:l.jsx(Zm,{className:"h-4 w-4 opacity-50"})})]}));P0.displayName=v0.displayName;const A0=v.forwardRef(({className:e,...t},n)=>l.jsx(x0,{ref:n,className:We("flex cursor-default items-center justify-center py-1",e),...t,children:l.jsx(oE,{className:"h-4 w-4"})}));A0.displayName=x0.displayName;const E0=v.forwardRef(({className:e,...t},n)=>l.jsx(k0,{ref:n,className:We("flex cursor-default items-center justify-center py-1",e),...t,children:l.jsx(Zm,{className:"h-4 w-4"})}));E0.displayName=k0.displayName;const C0=v.forwardRef(({className:e,children:t,position:n="popper",...a},r)=>l.jsx(q2,{children:l.jsxs(y0,{ref:r,className:We("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...a,children:[l.jsx(A0,{}),l.jsx(M2,{className:We("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),l.jsx(E0,{})]})}));C0.displayName=y0.displayName;const V2=v.forwardRef(({className:e,...t},n)=>l.jsx(b0,{ref:n,className:We("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...t}));V2.displayName=b0.displayName;const T0=v.forwardRef(({className:e,children:t,...n},a)=>l.jsxs(w0,{ref:a,className:We("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...n,children:[l.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:l.jsx(U2,{children:l.jsx(Jl,{className:"h-4 w-4"})})}),l.jsx(F2,{children:t})]}));T0.displayName=w0.displayName;const H2=v.forwardRef(({className:e,...t},n)=>l.jsx(S0,{ref:n,className:We("-mx-1 my-1 h-px bg-muted",e),...t}));H2.displayName=S0.displayName;const td=[{code:"en",name:"English",flag:"🇺🇸"},{code:"es",name:"Español",flag:"🇪🇸"},{code:"fr",name:"Français",flag:"🇫🇷"},{code:"de",name:"Deutsch",flag:"🇩🇪"},{code:"pt",name:"Português",flag:"🇧🇷"},{code:"ko",name:"한국어",flag:"🇰🇷"},{code:"ja",name:"日本語",flag:"🇯🇵"}],gv=()=>{const{i18n:e}=ft(),t=td.find(n=>n.code===e.language)||td[0];return l.jsxs($2,{value:e.language,onValueChange:n=>e.changeLanguage(n),children:[l.jsxs(P0,{className:"w-auto gap-2 border-none bg-transparent hover:bg-accent/50 focus:ring-0 focus:ring-offset-0",children:[l.jsx(dE,{className:"h-4 w-4"}),l.jsxs(W2,{children:[l.jsxs("span",{className:"hidden sm:inline",children:[t.flag," ",t.name]}),l.jsx("span",{className:"sm:hidden",children:t.flag})]})]}),l.jsx(C0,{children:td.map(n=>l.jsxs(T0,{value:n.code,children:[n.flag," ",n.name]},n.code))})]})},G2=e=>e?(...t)=>e(...t):(...t)=>fetch(...t);class kh extends Error{constructor(t,n="FunctionsError",a){super(t),this.name=n,this.context=a}}class K2 extends kh{constructor(t){super("Failed to send a request to the Edge Function","FunctionsFetchError",t)}}class vv extends kh{constructor(t){super("Relay Error invoking the Edge Function","FunctionsRelayError",t)}}class yv extends kh{constructor(t){super("Edge Function returned a non-2xx status code","FunctionsHttpError",t)}}var qp;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(qp||(qp={}));class Y2{constructor(t,{headers:n={},customFetch:a,region:r=qp.Any}={}){this.url=t,this.headers=n,this.region=r,this.fetch=G2(a)}setAuth(t){this.headers.Authorization=`Bearer ${t}`}invoke(t){return __(this,arguments,void 0,function*(n,a={}){var r;let s,i;try{const{headers:o,method:c,body:u,signal:d,timeout:p}=a;let h={},{region:m}=a;m||(m=this.region);const w=new URL(`${this.url}/${n}`);m&&m!=="any"&&(h["x-region"]=m,w.searchParams.set("forceFunctionRegion",m));let f;u&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o)?typeof Blob<"u"&&u instanceof Blob||u instanceof ArrayBuffer?(h["Content-Type"]="application/octet-stream",f=u):typeof u=="string"?(h["Content-Type"]="text/plain",f=u):typeof FormData<"u"&&u instanceof FormData?f=u:(h["Content-Type"]="application/json",f=JSON.stringify(u)):u&&typeof u!="string"&&!(typeof Blob<"u"&&u instanceof Blob)&&!(u instanceof ArrayBuffer)&&!(typeof FormData<"u"&&u instanceof FormData)?f=JSON.stringify(u):f=u;let x=d;p&&(i=new AbortController,s=setTimeout(()=>i.abort(),p),d?(x=i.signal,d.addEventListener("abort",()=>i.abort())):x=i.signal);const b=yield this.fetch(w.toString(),{method:c||"POST",headers:Object.assign(Object.assign(Object.assign({},h),this.headers),o),body:f,signal:x}).catch(P=>{throw new K2(P)}),g=b.headers.get("x-relay-error");
352if(g&&g==="true")throw new vv(b);if(!b.ok)throw new yv(b);let y=((r=b.headers.get("Content-Type"))!==null&&r!==void 0?r:"text/plain").split(";")[0].trim(),k;return y==="application/json"?k=yield b.json():y==="application/octet-stream"||y==="application/pdf"?k=yield b.blob():y==="text/event-stream"?k=b:y==="multipart/form-data"?k=yield b.formData():k=yield b.text(),{data:k,error:null,response:b}}catch(o){return{data:null,error:o,response:o instanceof yv||o instanceof vv?o.context:void 0}}finally{s&&clearTimeout(s)}})}}var J2=class extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}},Q2=class{constructor(e){var t,n;this.shouldThrowOnError=!1,this.method=e.method,this.url=e.url,this.headers=new Headers(e.headers),this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=(t=e.shouldThrowOnError)!==null&&t!==void 0?t:!1,this.signal=e.signal,this.isMaybeSingle=(n=e.isMaybeSingle)!==null&&n!==void 0?n:!1,e.fetch?this.fetch=e.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=new Headers(this.headers),this.headers.set(e,t),this}then(e,t){var n=this;this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json");const a=this.fetch;let r=a(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async s=>{let i=null,o=null,c=null,u=s.status,d=s.statusText;if(s.ok){var p,h;if(n.method!=="HEAD"){var m;const b=await s.text();b===""||(n.headers.get("Accept")==="text/csv"||n.headers.get("Accept")&&(!((m=n.headers.get("Accept"))===null||m===void 0)&&m.includes("application/vnd.pgrst.plan+text"))?o=b:o=JSON.parse(b))}const f=(p=n.headers.get("Prefer"))===null||p===void 0?void 0:p.match(/count=(exact|planned|estimated)/),x=(h=s.headers.get("content-range"))===null||h===void 0?void 0:h.split("/");f&&x&&x.length>1&&(c=parseInt(x[1])),n.isMaybeSingle&&n.method==="GET"&&Array.isArray(o)&&(o.length>1?(i={code:"PGRST116",details:`Results contain ${o.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},o=null,c=null,u=406,d="Not Acceptable"):o.length===1?o=o[0]:o=null)}else{var w;const f=await s.text();try{i=JSON.parse(f),Array.isArray(i)&&s.status===404&&(o=[],i=null,u=200,d="OK")}catch{s.status===404&&f===""?(u=204,d="No Content"):i={message:f}}if(i&&n.isMaybeSingle&&(!(i==null||(w=i.details)===null||w===void 0)&&w.includes("0 rows"))&&(i=null,u=200,d="OK"),i&&n.shouldThrowOnError)throw new J2(i)}return{error:i,data:o,count:c,status:u,statusText:d}});return this.shouldThrowOnError||(r=r.catch(s=>{var i;let o="";const c=s==null?void 0:s.cause;if(c){var u,d,p,h;const w=(u=c==null?void 0:c.message)!==null&&u!==void 0?u:"",f=(d=c==null?void 0:c.code)!==null&&d!==void 0?d:"";o=`${(p=s==null?void 0:s.name)!==null&&p!==void 0?p:"FetchError"}: ${s==null?void 0:s.message}`,o+=`
353
354Caused by: ${(h=c==null?void 0:c.name)!==null&&h!==void 0?h:"Error"}: ${w}`,f&&(o+=` (${f})`),c!=null&&c.stack&&(o+=`
355${c.stack}`)}else{var m;o=(m=s==null?void 0:s.stack)!==null&&m!==void 0?m:""}return{error:{message:`${(i=s==null?void 0:s.name)!==null&&i!==void 0?i:"FetchError"}: ${s==null?void 0:s.message}`,details:o,hint:"",code:""},data:null,count:null,status:0,statusText:""}})),r.then(e,t)}returns(){return this}overrideTypes(){return this}},X2=class extends Q2{select(e){let t=!1;const n=(e??"*").split("").map(a=>/\s/.test(a)&&!t?"":(a==='"'&&(t=!t),a)).join("");return this.url.searchParams.set("select",n),this.headers.append("Prefer","return=representation"),this}order(e,{ascending:t=!0,nullsFirst:n,foreignTable:a,referencedTable:r=a}={}){const s=r?`${r}.order`:"order",i=this.url.searchParams.get(s);return this.url.searchParams.set(s,`${i?`${i},`:""}${e}.${t?"asc":"desc"}${n===void 0?"":n?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:t,referencedTable:n=t}={}){const a=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(a,`${e}`),this}range(e,t,{foreignTable:n,referencedTable:a=n}={}){const r=typeof a>"u"?"offset":`${a}.offset`,s=typeof a>"u"?"limit":`${a}.limit`;return this.url.searchParams.set(r,`${e}`),this.url.searchParams.set(s,`${t-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.method==="GET"?this.headers.set("Accept","application/json"):this.headers.set("Accept","application/vnd.pgrst.object+json"),this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
355explain({analyze:e=!1,verbose:t=!1,settings:n=!1,buffers:a=!1,wal:r=!1,format:s="text"}={}){var i;const o=[e?"analyze":null,t?"verbose":null,n?"settings":null,a?"buffers":null,r?"wal":null].filter(Boolean).join("|"),c=(i=this.headers.get("Accept"))!==null&&i!==void 0?i:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${s}; for="${c}"; options=${o};`),s==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(e){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${e}`),this}};const bv=new RegExp("[,()]");var Hr=class extends X2{eq(e,t){return this.url.searchParams.append(e,`eq.${t}`),this}neq(e,t){return this.url.searchParams.append(e,`neq.${t}`),this}gt(e,t){return this.url.searchParams.append(e,`gt.${t}`),this}gte(e,t){return this.url.searchParams.append(e,`gte.${t}`),this}lt(e,t){return this.url.searchParams.append(e,`lt.${t}`),this}lte(e,t){return this.url.searchParams.append(e,`lte.${t}`),this}like(e,t){return this.url.searchParams.append(e,`like.${t}`),this}likeAllOf(e,t){return this.url.searchParams.append(e,`like(all).{${t.join(",")}}`),this}likeAnyOf(e,t){return this.url.searchParams.append(e,`like(any).{${t.join(",")}}`),this}ilike(e,t){return this.url.searchParams.append(e,`ilike.${t}`),this}ilikeAllOf(e,t){return this.url.searchParams.append(e,`ilike(all).{${t.join(",")}}`),this}ilikeAnyOf(e,t){return this.url.searchParams.append(e,`ilike(any).{${t.join(",")}}`),this}regexMatch(e,t){return this.url.searchParams.append(e,`match.${t}`),this}regexIMatch(e,t){return this.url.searchParams.append(e,`imatch.${t}`),this}is(e,t){return this.url.searchParams.append(e,`is.${t}`),this}isDistinct(e,t){return this.url.searchParams.append(e,`isdistinct.${t}`),this}in(e,t){const n=Array.from(new Set(t)).map(a=>typeof a=="string"&&bv.test(a)?`"${a}"`:`${a}`).join(",");return this.url.searchParams.append(e,`in.(${n})`),this}notIn(e,t){const n=Array.from(new Set(t)).map(a=>typeof a=="string"&&bv.test(a)?`"${a}"`:`${a}`).join(",");return this.url.searchParams.append(e,`not.in.(${n})`),this}contains(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cs.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cs.{${t.join(",")}}`):this.url.searchParams.append(e,`cs.${JSON.stringify(t)}`),this}containedBy(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cd.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cd.{${t.join(",")}}`):this.url.searchParams.append(e,`cd.${JSON.stringify(t)}`),this}rangeGt(e,t){return this.url.searchParams.append(e,`sr.${t}`),this}rangeGte(e,t){return this.url.searchParams.append(e,`nxl.${t}`),this}rangeLt(e,t){return this.url.searchParams.append(e,`sl.${t}`),this}rangeLte(e,t){return this.url.searchParams.append(e,`nxr.${t}`),this}rangeAdjacent(e,t){return this.url.searchParams.append(e,`adj.${t}`),this}overlaps(e,t){return typeof t=="string"?this.url.searchParams.append(e,`ov.${t}`):this.url.searchParams.append(e,`ov.{${t.join(",")}}`),this}textSearch(e,t,{config:n,type:a}={}){let r="";a==="plain"?r="pl":a==="phrase"?r="ph":a==="websearch"&&(r="w");const s=n===void 0?"":`(${n})`;return this.url.searchParams.append(e,`${r}fts${s}.${t}`),this}match(e){return Object.entries(e).forEach(([t,n])=>{this.url.searchParams.append(t,`eq.${n}`)}),this}not(e,t,n){return this.url.searchParams.append(e,`not.${t}.${n}`),this}or(e,{foreignTable:t,referencedTable:n=t}={}){const a=n?`${n}.or`:"or";return this.url.searchParams.append(a,`(${e})`),this}filter(e,t,n){return this.url.searchParams.append(e,`${t}.${n}`),this}},Z2=class{constructor(e,{headers:t={},schema:n,fetch:a}){this.url=e,this.headers=new Headers(t),this.schema=n,this.fetch=a}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(e,t){const{head:n=!1,count:a}=t??{},r=n?"HEAD":"GET";let s=!1;const i=(e??"*").split("").map(u=>/\s/.test(u)&&!s?"":(u==='"'&&(s=!s),u)).join(""),{url:o,headers:c}=this.cloneRequestState();return o.searchParams.set("select",i),a&&c.append("Prefer",`count=${a}`),new Hr({method:r,url:o,headers:c,schema:this.schema,fetch:this.fetch})}insert(e,{count:t,defaultToNull:n=!0}={}){var a;const r="POST",{url:s,headers:i}=this.cloneRequestState();if(t&&i.append("Prefer",`count=${t}`),n||i.append("Prefer","missing=default"),Array.isArray(e)){const o=e.reduce((c,u)=>c.concat(Object.keys(u)),[]);if(o.length>0){const c=[...new Set(o)].map(u=>`"${u}"`);s.searchParams.set("columns",c.join(","))}}return new Hr({method:r,url:s,headers:i,schema:this.schema,body:e,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch})}upsert(e,{onConflict:t,ignoreDuplicates:n=!1,count:a,defaultToNull:r=!0}={}){var s;const i="POST",{url:o,headers:c}=this.cloneRequestState();if(c.append("Prefer",`resolution=${n?"ignore":"merge"}-duplicates`),t!==void 0&&o.searchParams.set("on_conflict",t),a&&c.append("Prefer",`count=${a}`),r||c.append("Prefer","missing=default"),Array.isArray(e)){const u=e.reduce((d,p)=>d.concat(Object.keys(p)),[]);if(u.length>0){const d=[...new Set(u)].map(p=>`"${p}"`);o.searchParams.set("columns",d.join(","))}}return new Hr({method:i,url:o,headers:c,schema:this.schema,body:e,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch})}update(e,{count:t}={}){var n;const a="PATCH",{url:r,headers:s}=this.cloneRequestState();return t&&s.append("Prefer",`count=${t}`),new Hr({method:a,url:r,headers:s,schema:this.schema,body:e,fetch:(n=this.fetch)!==null&&n!==void 0?n:fetch})}delete({count:e}={}){var t;const n="DELETE",{url:a,headers:r}=this.cloneRequestState();return e&&r.append("Prefer",`count=${e}`),new Hr({method:n,url:a,headers:r,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch})}},eO=class j0{constructor(t,{headers:n={},schema:a,fetch:r}={}){this.url=t,this.headers=new Headers(n),this.schemaName=a,this.fetch=r}from(t){if(!t||typeof t!="string"||t.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new Z2(new URL(`${this.url}/${t}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(t){return new j0(this.url,{headers:this.headers,schema:t,fetch:this.fetch})}rpc(t,n={},{head:a=!1,get:r=!1,count:s}={}){var i;let o;const c=new URL(`${this.url}/rpc/${t}`);let u;const d=m=>m!==null&&typeof m=="object"&&(!Array.isArray(m)||m.some(d)),p=a&&Object.values(n).some(d);p?(o="POST",u=n):a||r?(o=a?"HEAD":"GET",Object.entries(n).filter(([m,w])=>w!==void 0).map(([m,w])=>[m,Array.isArray(w)?`{${w.join(",")}}`:`${w}
355`]).forEach(([m,w])=>{c.searchParams.append(m,w)})):(o="POST",u=n);const h=new Headers(this.headers);return p?h.set("Prefer",s?`count=${s},return=minimal`:"return=minimal"):s&&h.set("Prefer",`count=${s}`),new Hr({method:o,url:c,headers:h,schema:this.schemaName,body:u,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch})}};class tO{constructor(){}static detectEnvironment(){var t;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&(!((t=navigator.userAgent)===null||t===void 0)&&t.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};const n=globalThis.process;if(n){const a=n.versions;if(a&&a.node){const r=a.node,s=parseInt(r.replace(/^v/,"").split(".")[0]);return s>=22?typeof globalThis.WebSocket<"u"?{type:"native",constructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${s} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${s} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
356import ws from "ws"
357new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const t=this.detectEnvironment();if(t.constructor)return t.constructor;let n=t.error||"WebSocket not supported in this environment.";throw t.workaround&&(n+=`
358
359Suggested solution: ${t.workaround}`),new Error(n)}static createWebSocket(t,n){const a=this.getWebSocketConstructor();return new a(t,n)}static isWebSocketSupported(){try{const t=this.detectEnvironment();return t.type==="native"||t.type==="ws"}catch{return!1}}}const nO="2.91.0",aO=`realtime-js/${nO}`,rO="1.0.0",I0="2.0.0",wv=I0,Mp=1e4,sO=1e3,iO=100;var oa;(function(e){e[e.connecting=0]="connecting",e[e.open=1]="open",e[e.closing=2]="closing",e[e.closed=3]="closed"})(oa||(oa={}));var Fe;(function(e){e.closed="closed",e.errored="errored",e.joined="joined",e.joining="joining",e.leaving="leaving"})(Fe||(Fe={}));var rn;(function(e){e.close="phx_close",e.error="phx_error",e.join="phx_join",e.reply="phx_reply",e.leave="phx_leave",e.access_token="access_token"})(rn||(rn={}));var Fp;(function(e){e.websocket="websocket"})(Fp||(Fp={}));var Qa;(function(e){e.Connecting="connecting",e.Open="open",e.Closing="closing",e.Closed="closed"})(Qa||(Qa={}));class oO{constructor(t){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=t??[]}encode(t,n){if(t.event===this.BROADCAST_EVENT&&!(t.payload instanceof ArrayBuffer)&&typeof t.payload.event=="string")return n(this._binaryEncodeUserBroadcastPush(t));let a=[t.join_ref,t.ref,t.topic,t.event,t.payload];return n(JSON.stringify(a))}_binaryEncodeUserBroadcastPush(t){var n;return this._isArrayBuffer((n=t.payload)===null||n===void 0?void 0:n.payload)?this._encodeBinaryUserBroadcastPush(t):this._encodeJsonUserBroadcastPush(t)}_encodeBinaryUserBroadcastPush(t){var n,a;const r=(a=(n=t.payload)===null||n===void 0?void 0:n.payload)!==null&&a!==void 0?a:new ArrayBuffer(0);return this._encodeUserBroadcastPush(t,this.BINARY_ENCODING,r)}_encodeJsonUserBroadcastPush(t){var n,a;const r=(a=(n=t.payload)===null||n===void 0?void 0:n.payload)!==null&&a!==void 0?a:{},i=new TextEncoder().encode(JSON.stringify(r)).buffer;return this._encodeUserBroadcastPush(t,this.JSON_ENCODING,i)}_encodeUserBroadcastPush(t,n,a){var r,s;const i=t.topic,o=(r=t.ref)!==null&&r!==void 0?r:"",c=(s=t.join_ref)!==null&&s!==void 0?s:"",u=t.payload.event,d=this.allowedMetadataKeys?this._pick(t.payload,this.allowedMetadataKeys):{},p=Object.keys(d).length===0?"":JSON.stringify(d);if(c.length>255)throw new Error(`joinRef length ${c.length} exceeds maximum of 255`);if(o.length>255)throw new Error(`ref length ${o.length} exceeds maximum of 255`);if(i.length>255)throw new Error(`topic length ${i.length} exceeds maximum of 255`);if(u.length>255)throw new Error(`userEvent length ${u.length} exceeds maximum of 255`);if(p.length>255)throw new Error(`metadata length ${p.length} exceeds maximum of 255`);const h=this.USER_BROADCAST_PUSH_META_LENGTH+c.length+o.length+i.length+u.length+p.length,m=new ArrayBuffer(this.HEADER_LENGTH+h);let w=new DataView(m),f=0;w.setUint8(f++,this.KINDS.userBroadcastPush),w.setUint8(f++,c.length),w.setUint8(f++,o.length),w.setUint8(f++,i.length),w.setUint8(f++,u.length),w.setUint8(f++,p.length),w.setUint8(f++,n),Array.from(c,b=>w.setUint8(f++,b.charCodeAt(0))),Array.from(o,b=>w.setUint8(f++,b.charCodeAt(0))),Array.from(i,b=>w.setUint8(f++,b.charCodeAt(0))),Array.from(u,b=>w.setUint8(f++,b.charCodeAt(0))),Array.from(p,b=>w.setUint8(f++,b.charCodeAt(0)));var x=new Uint8Array(m.byteLength+a.byteLength);return x.set(new Uint8Array(m),0),x.set(new Uint8Array(a),m.byteLength),x.buffer}decode(t,n){if(this._isArrayBuffer(t)){let a=this._binaryDecode(t);return n(a)}if(typeof t=="string"){const a=JSON.parse(t),[r,s,i,o,c]=a;
359return n({join_ref:r,ref:s,topic:i,event:o,payload:c})}return n({})}_binaryDecode(t){const n=new DataView(t),a=n.getUint8(0),r=new TextDecoder;switch(a){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(t,n,r)}}_decodeUserBroadcast(t,n,a){const r=n.getUint8(1),s=n.getUint8(2),i=n.getUint8(3),o=n.getUint8(4);let c=this.HEADER_LENGTH+4;const u=a.decode(t.slice(c,c+r));c=c+r;const d=a.decode(t.slice(c,c+s));c=c+s;const p=a.decode(t.slice(c,c+i));c=c+i;const h=t.slice(c,t.byteLength),m=o===this.JSON_ENCODING?JSON.parse(a.decode(h)):h,w={type:this.BROADCAST_EVENT,event:d,payload:m};return i>0&&(w.meta=JSON.parse(p)),{join_ref:null,ref:null,topic:u,event:this.BROADCAST_EVENT,payload:w}}_isArrayBuffer(t){var n;return t instanceof ArrayBuffer||((n=t==null?void 0:t.constructor)===null||n===void 0?void 0:n.name)==="ArrayBuffer"}_pick(t,n){return!t||typeof t!="object"?{}:Object.fromEntries(Object.entries(t).filter(([a])=>n.includes(a)))}}class R0{constructor(t,n){this.callback=t,this.timerCalc=n,this.timer=void 0,this.tries=0,this.callback=t,this.timerCalc=n}reset(){this.tries=0,clearTimeout(this.timer),this.timer=void 0}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}var we;(function(e){e.abstime="abstime",e.bool="bool",e.date="date",e.daterange="daterange",e.float4="float4",e.float8="float8",e.int2="int2",e.int4="int4",e.int4range="int4range",e.int8="int8",e.int8range="int8range",e.json="json",e.jsonb="jsonb",e.money="money",e.numeric="numeric",e.oid="oid",e.reltime="reltime",e.text="text",e.time="time",e.timestamp="timestamp",e.timestamptz="timestamptz",e.timetz="timetz",e.tsrange="tsrange",e.tstzrange="tstzrange"})(we||(we={}));const xv=(e,t,n={})=>{var a;const r=(a=n.skipTypes)!==null&&a!==void 0?a:[];return t?Object.keys(t).reduce((s,i)=>(s[i]=lO(i,e,t,r),s),{}):{}},lO=(e,t,n,a)=>{const r=t.find(o=>o.name===e),s=r==null?void 0:r.type,i=n[e];return s&&!a.includes(s)?_0(s,i):Up(i)},_0=(e,t)=>{if(e.charAt(0)==="_"){const n=e.slice(1,e.length);return pO(t,n)}switch(e){case we.bool:return cO(t);case we.float4:case we.float8:case we.int2:case we.int4:case we.int8:case we.numeric:case we.oid:return uO(t);case we.json:case we.jsonb:return dO(t);case we.timestamp:return mO(t);case we.abstime:case we.date:case we.daterange:case we.int4range:case we.int8range:case we.money:case we.reltime:case we.text:case we.time:case we.timestamptz:case we.timetz:case we.tsrange:case we.tstzrange:return Up(t);default:return Up(t)}},Up=e=>e,cO=e=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},uO=e=>{if(typeof e=="string"){const t=parseFloat(e);if(!Number.isNaN(t))return t}return e},dO=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},pO=(e,t)=>{if(typeof e!="string")return e;const n=e.length-1,a=e[n];if(e[0]==="{"&&a==="}"){let s;const i=e.slice(1,n);try{s=JSON.parse("["+i+"]")}catch{s=i?i.split(","):[]}return s.map(o=>_0(t,o))}return e},mO=e=>typeof e=="string"?e.replace(" ","T"):e,O0=e=>{const t=new URL(e);return t.protocol=t.protocol.replace(/^ws/i,"http"),t.pathname=t.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),t.pathname===""||t.pathname==="/"?t.pathname="/api/broadcast":t.pathname=t.pathname+"/api/broadcast",t.href};class nd{constructor(t,n,a={},r=Mp){this.channel=t,this.event=n,this.payload=a,this.timeout=r,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(t){this.timeout=t,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref,join_ref:this.channel._joinRef()}))}updatePayload(t){this.payload=Object.assign(Object.assign({},this.payload),t)}receive(t,n){var a;return this._hasReceived(t)&&n((a=this.receivedResp)===null||a===void 0?void 0:a.response),this.recHo
359oks.push({status:t,callback:n}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket._makeRef(),this.refEvent=this.channel._replyEventName(this.ref);const t=n=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=n,this._matchReceive(n)};this.channel._on(this.refEvent,{},t),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(t,n){this.refEvent&&this.channel._trigger(this.refEvent,{status:t,response:n})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){this.refEvent&&this.channel._off(this.refEvent,{})}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:t,response:n}){this.recHooks.filter(a=>a.status===t).forEach(a=>a.callback(n))}_hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}}var kv;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(kv||(kv={}));class Ii{constructor(t,n){this.channel=t,this.state={},this.pendingDiffs=[],this.joinRef=null,this.enabled=!1,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const a=(n==null?void 0:n.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(a.state,{},r=>{const{onJoin:s,onLeave:i,onSync:o}=this.caller;this.joinRef=this.channel._joinRef(),this.state=Ii.syncState(this.state,r,s,i),this.pendingDiffs.forEach(c=>{this.state=Ii.syncDiff(this.state,c,s,i)}),this.pendingDiffs=[],o()}),this.channel._on(a.diff,{},r=>{const{onJoin:s,onLeave:i,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=Ii.syncDiff(this.state,r,s,i),o())}),this.onJoin((r,s,i)=>{this.channel._trigger("presence",{event:"join",key:r,currentPresences:s,newPresences:i})}),this.onLeave((r,s,i)=>{this.channel._trigger("presence",{event:"leave",key:r,currentPresences:s,leftPresences:i})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(t,n,a,r){const s=this.cloneDeep(t),i=this.transformState(n),o={},c={};return this.map(s,(u,d)=>{i[u]||(c[u]=d)}),this.map(i,(u,d)=>{const p=s[u];if(p){const h=d.map(x=>x.presence_ref),m=p.map(x=>x.presence_ref),w=d.filter(x=>m.indexOf(x.presence_ref)<0),f=p.filter(x=>h.indexOf(x.presence_ref)<0);w.length>0&&(o[u]=w),f.length>0&&(c[u]=f)}else o[u]=d}),this.syncDiff(s,{joins:o,leaves:c},a,r)}static syncDiff(t,n,a,r){const{joins:s,leaves:i}={joins:this.transformState(n.joins),leaves:this.transformState(n.leaves)};return a||(a=()=>{}),r||(r=()=>{}),this.map(s,(o,c)=>{var u;const d=(u=t[o])!==null&&u!==void 0?u:[];if(t[o]=this.cloneDeep(c),d.length>0){const p=t[o].map(m=>m.presence_ref),h=d.filter(m=>p.indexOf(m.presence_ref)<0);t[o].unshift(...h)}a(o,d,c)}),this.map(i,(o,c)=>{let u=t[o];if(!u)return;const d=c.map(p=>p.presence_ref);u=u.filter(p=>d.indexOf(p.presence_ref)<0),t[o]=u,r(o,u,c),u.length===0&&delete t[o]}),t}static map(t,n){return Object.getOwnPropertyNames(t).map(a=>n(a,t[a]))}static transformState(t){return t=this.cloneDeep(t),Object.getOwnPropertyNames(t).reduce((n,a)=>{const r=t[a];return"metas"in r?n[a]=r.metas.map(s=>(s.presence_ref=s.phx_ref,delete s.phx_ref,delete s.phx_ref_prev,s)):n[a]=r,n},{})}static cloneDeep(t){return JSON.parse(JSON.stringify(t))}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel._joinRef()}}var Sv;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Sv||(Sv={}));var Ri;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(Ri||(Ri={}));var On;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(On||(On={}));class os{constructor(t,n={config:{}},a){var r,s;if(this.topic=t,this.params=n,this.socket=a,this.bindings={},this.state=Fe.closed,this.joinedOnce=!1,this.pushBuffer=[],this.subTopic=t.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},n.config),this.timeout=this.socket.timeout,this.joinPush=new nd(this,rn.join,this.params,this.timeout),this.rejoinTimer=new R0(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=Fe.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(i=>
359i.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=Fe.closed,this.socket._remove(this)}),this._onError(i=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,i),this.state=Fe.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=Fe.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("error",i=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,i),this.state=Fe.errored,this.rejoinTimer.scheduleTimeout())}),this._on(rn.reply,{},(i,o)=>{this._trigger(this._replyEventName(o),i)}),this.presence=new Ii(this),this.broadcastEndpointURL=O0(this.socket.endPoint),this.private=this.params.config.private||!1,!this.private&&(!((s=(r=this.params.config)===null||r===void 0?void 0:r.broadcast)===null||s===void 0)&&s.replay))throw`tried to use replay on public channel '${this.topic}'. It must be a private channel.`}subscribe(t,n=this.timeout){var a,r,s;if(this.socket.isConnected()||this.socket.connect(),this.state==Fe.closed){const{config:{broadcast:i,presence:o,private:c}}=this.params,u=(r=(a=this.bindings.postgres_changes)===null||a===void 0?void 0:a.map(m=>m.filter))!==null&&r!==void 0?r:[],d=!!this.bindings[Ri.PRESENCE]&&this.bindings[Ri.PRESENCE].length>0||((s=this.params.config.presence)===null||s===void 0?void 0:s.enabled)===!0,p={},h={broadcast:i,presence:Object.assign(Object.assign({},o),{enabled:d}),postgres_changes:u,private:c};this.socket.accessTokenValue&&(p.access_token=this.socket.accessTokenValue),this._onError(m=>t==null?void 0:t(On.CHANNEL_ERROR,m)),this._onClose(()=>t==null?void 0:t(On.CLOSED)),this.updateJoinPayload(Object.assign({config:h},p)),this.joinedOnce=!0,this._rejoin(n),this.joinPush.receive("ok",async({postgres_changes:m})=>{var w;if(this.socket._isManualToken()||this.socket.setAuth(),m===void 0){t==null||t(On.SUBSCRIBED);return}else{const f=this.bindings.postgres_changes,x=(w=f==null?void 0:f.length)!==null&&w!==void 0?w:0,b=[];for(let g=0;g<x;g++){const y=f[g],{filter:{event:k,schema:P,table:E,filter:S}}=y,A=m&&m[g];if(A&&A.event===k&&os.isFilterValueEqual(A.schema,P)&&os.isFilterValueEqual(A.table,E)&&os.isFilterValueEqual(A.filter,S))b.push(Object.assign(Object.assign({},y),{id:A.id}));else{this.unsubscribe(),this.state=Fe.errored,t==null||t(On.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=b,t&&t(On.SUBSCRIBED);return}}).receive("error",m=>{this.state=Fe.errored,t==null||t(On.CHANNEL_ERROR,new Error(JSON.stringify(Object.values(m).join(", ")||"error")))}).receive("timeout",()=>{t==null||t(On.TIMED_OUT)})}return this}presenceState(){return this.presence.state}async track(t,n={}){return await this.send({type:"presence",event:"track",payload:t},n.timeout||this.timeout)}async untrack(t={}){return await this.send({type:"presence",event:"untrack"},t)}on(t,n,a){return this.state===Fe.joined&&t===Ri.PRESENCE&&(this.socket.log("channel",`resubscribe to ${this.topic} due to change in presence callbacks on joined channel`),this.unsubscribe().then(async()=>await this.subscribe())),this._on(t,n,a)}async httpSend(t,n,a={}){var r;if(n==null)return Promise.reject("Payload is required for httpSend()");const s={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(s.Authorization=`Bearer ${this.socket.accessTokenValue}`);const i={method:"POST",headers:s,body:JSON.stringify({messages:[{topic:this.subTopic,event:t,payload:n,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,i,(r=a.timeout)!==null&&r!==void 0?r:this.timeout);if(o.status===202)return{success:!0};let c=o.statusText;try{const u=await o.json();c=u.error||u.message||c}catch{}return Promise.reject(new Error(c))}async send(t,n={}){var a,r;if(!this._canPush()&&t.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated 
359in the future. Please use httpSend() explicitly for REST delivery.");const{event:s,payload:i}=t,o={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(o.Authorization=`Bearer ${this.socket.accessTokenValue}`);const c={method:"POST",headers:o,body:JSON.stringify({messages:[{topic:this.subTopic,event:s,payload:i,private:this.private}]})};try{const u=await this._fetchWithTimeout(this.broadcastEndpointURL,c,(a=n.timeout)!==null&&a!==void 0?a:this.timeout);return await((r=u.body)===null||r===void 0?void 0:r.cancel()),u.ok?"ok":"error"}catch(u){return u.name==="AbortError"?"timed out":"error"}}else return new Promise(s=>{var i,o,c;const u=this._push(t.type,t,n.timeout||this.timeout);t.type==="broadcast"&&!(!((c=(o=(i=this.params)===null||i===void 0?void 0:i.config)===null||o===void 0?void 0:o.broadcast)===null||c===void 0)&&c.ack)&&s("ok"),u.receive("ok",()=>s("ok")),u.receive("error",()=>s("error")),u.receive("timeout",()=>s("timed out"))})}updateJoinPayload(t){this.joinPush.updatePayload(t)}unsubscribe(t=this.timeout){this.state=Fe.leaving;const n=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(rn.close,"leave",this._joinRef())};this.joinPush.destroy();let a=null;return new Promise(r=>{a=new nd(this,rn.leave,{},t),a.receive("ok",()=>{n(),r("ok")}).receive("timeout",()=>{n(),r("timed out")}).receive("error",()=>{r("error")}),a.send(),this._canPush()||a.trigger("ok",{})}).finally(()=>{a==null||a.destroy()})}teardown(){this.pushBuffer.forEach(t=>t.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=Fe.closed,this.bindings={}}async _fetchWithTimeout(t,n,a){const r=new AbortController,s=setTimeout(()=>r.abort(),a),i=await this.socket.fetch(t,Object.assign(Object.assign({},n),{signal:r.signal}));return clearTimeout(s),i}_push(t,n,a=this.timeout){if(!this.joinedOnce)throw`tried to push '${t}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let r=new nd(this,t,n,a);return this._canPush()?r.send():this._addToPushBuffer(r),r}_addToPushBuffer(t){if(t.startTimeout(),this.pushBuffer.push(t),this.pushBuffer.length>iO){const n=this.pushBuffer.shift();n&&(n.destroy(),this.socket.log("channel",`discarded push due to buffer overflow: ${n.event}`,n.payload))}}_onMessage(t,n,a){return n}_isMember(t){return this.topic===t}_joinRef(){return this.joinPush.ref}_trigger(t,n,a){var r,s;const i=t.toLocaleLowerCase(),{close:o,error:c,leave:u,join:d}=rn;if(a&&[o,c,u,d].indexOf(i)>=0&&a!==this._joinRef())return;let h=this._onMessage(i,n,a);if(n&&!h)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(i)?(r=this.bindings.postgres_changes)===null||r===void 0||r.filter(m=>{var w,f,x;return((w=m.filter)===null||w===void 0?void 0:w.event)==="*"||((x=(f=m.filter)===null||f===void 0?void 0:f.event)===null||x===void 0?void 0:x.toLocaleLowerCase())===i}).map(m=>m.callback(h,a)):(s=this.bindings[i])===null||s===void 0||s.filter(m=>{var w,f,x,b,g,y,k,P;if(["broadcast","presence","postgres_changes"].includes(i))if("id"in m){const E=m.id,S=(w=m.filter)===null||w===void 0?void 0:w.event;return E&&((f=n.ids)===null||f===void 0?void 0:f.includes(E))&&(S==="*"||(S==null?void 0:S.toLocaleLowerCase())===((x=n.data)===null||x===void 0?void 0:x.type.toLocaleLowerCase()))&&(!(!((b=m.filter)===null||b===void 0)&&b.table)||m.filter.table===((g=n.data)===null||g===void 0?void 0:g.table))}else{const E=(k=(y=m==null?void 0:m.filter)===null||y===void 0?void 0:y.event)===null||k===void 0?void 0:k.toLocaleLowerCase();return E==="*"||E===((P=n==null?void 0:n.event)===null||P===void 0?void 0:P.toLocaleLowerCase())}else return m.type.toLocaleLowerCase()===i}).map(m=>{if(typeof h=="object"&&"ids"in h){const w=h.data,{schema:f,table:x,commit_timestamp:b,type:g,errors:y}=w;h=Object.assign(Object.assign({},{schema:f,table:x,commit_timestamp:b,eventType:g,new:{},old:{},errors:y}),this._getPayloadRecords(w))}m.callback(h,a)})}_isClosed(){return this.state===Fe.closed}_isJoined(){return this.state===Fe.joined}_isJoining(){return this.state===Fe.joining}_isLeaving(){return this.state===Fe.leaving}_replyEventName(t){return`chan_reply_${t}`}_on(t,n,a){const r=t.toLocaleLowerCase(),s={type:r,filter:n,callback:a};return this.bindings[r]?this.bindings[r].push(s):this.bindings[r]=[s],this}_off(t,n){const a=t.toLocaleLowerCase();return this.bindings[a]&&(this.bindings[a]=this.bindings[a].filter(r=>{var s;return!(((s=r.type)===null||s===void 0?void 0:s.toLocaleLowerCase())===a&&os.isEqual(r.filter,n))})),this}static isEqual(t,n){if(Object.keys(t).length!==Object.keys(n).length)return!1;for(const a in t)if(t[a]!==n[a])return!1;return!0}static isFilterValueEqual(t,n){return(t??void 0)===(n??void 0)}_rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this._rejoin()}_onClose(t){this._on(rn.close,{},t)}_onError(t){this._on(rn.error,{},n=>t(n))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(t=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=Fe.joining,this.joinPush.resend(t))}_getPayloadRecords(t){const n={new:{},old:{}};return(t.type==="INSERT"||t.type==="UPDATE")&&(n.new=xv(t.columns,t.record)),(t.type==="UPDATE"||t.type==="DELETE")&&(n.old=xv(t.columns,t.old_record)),n}}const ad=()=>{},el={HEARTBEAT_INTERVAL:25e3,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},hO=[1e3,2e3,5e3,1e4],fO=1e4,gO=`
360  addEventListener("message", (e) => {
361    if (e.data.event === "start") {
362      setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval);
363    }
364  });`;class vO{constructor(t,n){var a;if(this.accessTokenValue=null,this.apiKey=null,this._manuallySetToken=!1,this.channels=new Array,this.endPoint="",this.httpEndpoint="",this.headers={},this.params={},this.timeout=Mp,this.transport=null,this.heartbeatIntervalMs=el.HEARTBEAT_INTERVAL,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.heartbeatCallback=ad,this.ref=0,this.reconnectTimer=null,this.vsn=wv,this.logger=ad,this.conn=null,this.sendBuffer=[],this.serializer
364=new oO,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.accessToken=null,this._connectionState="disconnected",this._wasManualDisconnect=!1,this._authPromise=null,this._heartbeatSentAt=null,this._resolveFetch=r=>r?(...s)=>r(...s):(...s)=>fetch(...s),!(!((a=n==null?void 0:n.params)===null||a===void 0)&&a.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=n.params.apikey,this.endPoint=`${t}/${Fp.websocket}`,this.httpEndpoint=O0(t),this._initializeOptions(n),this._setupReconnectionTimer(),this.fetch=this._resolveFetch(n==null?void 0:n.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.conn!==null&&this.isConnected())){if(this._setConnectionState("connecting"),this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this.transport)this.conn=new this.transport(this.endpointURL());else try{this.conn=tO.createWebSocket(this.endpointURL())}catch(t){this._setConnectionState("disconnected");const n=t.message;throw n.includes("Node.js")?new Error(`${n}
365
366To use Realtime in Node.js, you need to provide a WebSocket implementation:
367
368Option 1: Use Node.js 22+ which has native WebSocket support
369Option 2: Install and provide the "ws" package:
370
371  npm install ws
372
373  import ws from "ws"
374  const client = new RealtimeClient(url, {
375    ...options,
376    transport: ws
377  })`):new Error(`WebSocket not available: ${n}`)}this._setupConnectionHandlers()}}endpointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:this.vsn}))}disconnect(t,n){if(!this.isDisconnecting())if(this._setConnectionState("disconnecting",!0),this.conn){const a=setTimeout(()=>{this._setConnectionState("disconnected")},100);this.conn.onclose=()=>{clearTimeout(a),this._setConnectionState("disconnected")},typeof this.conn.close=="function"&&(t?this.conn.close(t,n??""):this.conn.close()),this._teardownConnection()}else this._setConnectionState("disconnected")}getChannels(){return this.channels}async removeChannel(t){const n=await t.unsubscribe();return this.channels.length===0&&this.disconnect(),n}async removeAllChannels(){const t=await Promise.all(this.channels.map(n=>n.unsubscribe()));return this.channels=[],this.disconnect(),t}log(t,n,a){this.logger(t,n,a)}connectionState(){switch(this.conn&&this.conn.readyState){case oa.connecting:return Qa.Connecting;case oa.open:return Qa.Open;case oa.closing:return Qa.Closing;default:return Qa.Closed}}isConnected(){return this.connectionState()===Qa.Open}isConnecting(){return this._connectionState==="connecting"}isDisconnecting(){return this._connectionState==="disconnecting"}channel(t,n={config:{}}){const a=`realtime:${t}`,r=this.getChannels().find(s=>s.topic===a);if(r)return r;{const s=new os(`realtime:${t}`,n,this);return this.channels.push(s),s}}push(t){const{topic:n,event:a,payload:r,ref:s}=t,i=()=>{this.encode(t,o=>{var c;(c=this.conn)===null||c===void 0||c.send(o)})};this.log("push",`${n} ${a} (${s})`,r),this.isConnected()?i():this.sendBuffer.push(i)}async setAuth(t=null){this._authPromise=this._performAuth(t);try{await this._authPromise}finally{this._authPromise=null}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){var t;if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(n){this.log("error","error in heartbeat callback",n)}return}if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this._heartbeatSentAt=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(n){this.log("error","error in heartbeat callback",n)}this._wasManualDisconnect=!1,(t=this.conn)===null||t===void 0||t.close(sO,"heartbeat timeout"),setTimeout(()=>{var n;this.isConnected()||(n=this.reconnectTimer)===null||n===void 0||n.scheduleTimeout()},el.HEARTBEAT_TIMEOUT_FALLBACK);return}this._heartbeatSentAt=Date.now(),this.pendingHeartbeatRef=this._makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(n){this.log("error","error in heartbeat callback",n)}this._setAuthSafely("heartbeat")}onHeartbeat(t){this.heartbeatCallback=t}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(t=>t()),this.sendBuffer=[])}_makeRef(){let t=this.ref+1;return t===this.ref?this.ref=0:this.ref=t,this.ref.toString()}_leaveOpenTopic(t){let n=this.channels.find(a=>a.topic===t&&(a._isJoined()||a._isJoining()));n&&(this.log("transport",`leaving duplicate topic "${t}"`),n.unsubscribe())}_remove(t){this.channels=this.channels.filter(n=>n.topic!==t.topic)}_onConnMessage(t){this.decode(t.data,n=>
377{if(n.topic==="phoenix"&&n.event==="phx_reply"&&n.ref&&n.ref===this.pendingHeartbeatRef){const u=this._heartbeatSentAt?Date.now()-this._heartbeatSentAt:void 0;try{this.heartbeatCallback(n.payload.status==="ok"?"ok":"error",u)}catch(d){this.log("error","error in heartbeat callback",d)}this._heartbeatSentAt=null,this.pendingHeartbeatRef=null}const{topic:a,event:r,payload:s,ref:i}=n,o=i?`(${i})`:"",c=s.status||"";this.log("receive",`${c} ${a} ${r} ${o}`.trim(),s),this.channels.filter(u=>u._isMember(a)).forEach(u=>u._trigger(r,s,i)),this._triggerStateCallbacks("message",n)})}_clearTimer(t){var n;t==="heartbeat"&&this.heartbeatTimer?(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0):t==="reconnect"&&((n=this.reconnectTimer)===null||n===void 0||n.reset())}_clearAllTimers(){this._clearTimer("heartbeat"),this._clearTimer("reconnect")}_setupConnectionHandlers(){this.conn&&("binaryType"in this.conn&&(this.conn.binaryType="arraybuffer"),this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=t=>this._onConnError(t),this.conn.onmessage=t=>this._onConnMessage(t),this.conn.onclose=t=>this._onConnClose(t),this.conn.readyState===oa.open&&this._onConnOpen())}_teardownConnection(){if(this.conn){if(this.conn.readyState===oa.open||this.conn.readyState===oa.connecting)try{this.conn.close()}catch(t){this.log("error","Error closing connection",t)}this.conn.onopen=null,this.conn.onerror=null,this.conn.onmessage=null,this.conn.onclose=null,this.conn=null}this._clearAllTimers(),this._terminateWorker(),this.channels.forEach(t=>t.teardown())}_onConnOpen(){this._setConnectionState("connected"),this.log("transport",`connected to ${this.endpointURL()}`),(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).then(()=>{this.flushSendBuffer()}).catch(n=>{this.log("error","error waiting for auth on connect",n),this.flushSendBuffer()}),this._clearTimer("reconnect"),this.worker?this.workerRef||this._startWorkerHeartbeat():this._startHeartbeat(),this._triggerStateCallbacks("open")}_startHeartbeat(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const t=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(t),this.workerRef.onerror=n=>{this.log("worker","worker error",n.message),this._terminateWorker()},this.workerRef.onmessage=n=>{n.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){this.workerRef&&(this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0)}_onConnClose(t){var n;this._setConnectionState("disconnected"),this.log("transport","close",t),this._triggerChanError(),this._clearTimer("heartbeat"),this._wasManualDisconnect||(n=this.reconnectTimer)===null||n===void 0||n.scheduleTimeout(),this._triggerStateCallbacks("close",t)}_onConnError(t){this._setConnectionState("disconnected"),this.log("transport",`${t}`),this._triggerChanError(),this._triggerStateCallbacks("error",t)}_triggerChanError(){this.channels.forEach(t=>t._trigger(rn.error))}_appendParams(t,n){if(Object.keys(n).length===0)return t;const a=t.match(/\?/)?"&":"?",r=new URLSearchParams(n);return`${t}${a}${r}`}_workerObjectUrl(t){let n;if(t)n=t;else{const a=new Blob([gO],{type:"application/javascript"});n=URL.createObjectURL(a)}return n}_setConnectionState(t,n=!1){this._connectionState=t,t==="connecting"?this._wasManualDisconnect=!1:t==="disconnecting"&&(this._wasManualDisconnect=n)}async _performAuth(t=null){let n,a=!1;if(t)n=t,a=!0;else if(this.accessToken)try{n=await this.accessToken()}catch(r){this.log("error","Error fetching access token from callback",r),n=this.accessTokenValue}else n=this.accessTokenValue;a?this._manuallySetToken=!0:this.accessToken&&(this._manuallySetToken=!1),this.accessTokenValue!=n&&(this.accessTokenValue=n,this.channels.forEach(r=>{const s={access_token:n,version:aO};n&&r.updateJoinPayload(s),r.joinedOnce&&r._isJoined()&&r._push(rn.access_token,{access_token:n})}))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(t="general"){this._isManualToken()||this.setAuth().catch(n=>{this.log("error",`Error setting auth in ${t}`,n)})}_triggerStateCallbacks(t,n){try{this.stateChangeCallbacks[t].forEach(a=>{try{a(n)}catch(r){this.log("error",`error in ${t} callback`,r)}})}catch(a){this.log("error",`error triggering ${t} callbacks`,a)}}_setupReconnectionTimer(){this.reconnectTimer=new R0(async()=>{setTimeout(async()=>{await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()},el.RECONNECT_DELAY)},this.reconnectAfterMs)}_initializeOptions(t){var n,a,r,s,i,o,c,u,d,p,h,m;switch(this.transport=(n=t==null?void 0:t.transport)!==null&&n!==void 0?n:null,this.timeout=(a=t==null?void 0:t.t
377imeout)!==null&&a!==void 0?a:Mp,this.heartbeatIntervalMs=(r=t==null?void 0:t.heartbeatIntervalMs)!==null&&r!==void 0?r:el.HEARTBEAT_INTERVAL,this.worker=(s=t==null?void 0:t.worker)!==null&&s!==void 0?s:!1,this.accessToken=(i=t==null?void 0:t.accessToken)!==null&&i!==void 0?i:null,this.heartbeatCallback=(o=t==null?void 0:t.heartbeatCallback)!==null&&o!==void 0?o:ad,this.vsn=(c=t==null?void 0:t.vsn)!==null&&c!==void 0?c:wv,t!=null&&t.params&&(this.params=t.params),t!=null&&t.logger&&(this.logger=t.logger),(t!=null&&t.logLevel||t!=null&&t.log_level)&&(this.logLevel=t.logLevel||t.log_level,this.params=Object.assign(Object.assign({},this.params),{log_level:this.logLevel})),this.reconnectAfterMs=(u=t==null?void 0:t.reconnectAfterMs)!==null&&u!==void 0?u:w=>hO[w-1]||fO,this.vsn){case rO:this.encode=(d=t==null?void 0:t.encode)!==null&&d!==void 0?d:(w,f)=>f(JSON.stringify(w)),this.decode=(p=t==null?void 0:t.decode)!==null&&p!==void 0?p:(w,f)=>f(JSON.parse(w));break;case I0:this.encode=(h=t==null?void 0:t.encode)!==null&&h!==void 0?h:this.serializer.encode.bind(this.serializer),this.decode=(m=t==null?void 0:t.decode)!==null&&m!==void 0?m:this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${this.vsn}`)}if(this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=t==null?void 0:t.workerUrl}}}var io=class extends Error{constructor(e,t){var n;super(e),this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&((n=t.icebergType)==null?void 0:n.includes("CommitState"))===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function yO(e,t,n){const a=new URL(t,e);if(n)for(const[r,s]of Object.entries(n))s!==void 0&&a.searchParams.set(r,s);return a.toString()}async function bO(e){return!e||e.type==="none"?{}:e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:e.type==="header"?{[e.name]:e.value}:e.type==="custom"?await e.getHeaders():{}}function wO(e){const t=e.fetchImpl??globalThis.fetch;return{async request({method:n,path:a,query:r,body:s,headers:i}){const o=yO(e.baseUrl,a,r),c=await bO(e.auth),u=await t(o,{method:n,headers:{...s?{"Content-Type":"application/json"}:{},...c,...i},body:s?JSON.stringify(s):void 0}),d=await u.text(),p=(u.headers.get("content-type")||"").includes("application/json"),h=p&&d?JSON.parse(d):d;if(!u.ok){const m=p?h:void 0,w=m==null?void 0:m.error;throw new io((w==null?void 0:w.message)??`Request failed with status ${u.status}`,{status:u.status,icebergType:w==null?void 0:w.type,icebergCode:w==null?void 0:w.code,details:m})}return{status:u.status,headers:u.headers,data:h}}}}function tl(e){return e.join("�")}var xO=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){const t=e?{parent:tl(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(a=>({namespace:a}))}async createNamespace(e,t){const n={namespace:e.namespace,properties:t==null?void 0:t.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:n})).data}async dropNamespace(e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${tl(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${tl(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${tl(e.namespace)}`}),!0}catch(t){if(t instanceof io&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(n){if(n instanceof io&&n.status===409)return;throw n}}};function Dr(e){return e.join("�")}var kO=class{constructor(e,t="",n){this.client=e,this.prefix=t,this.accessDelegation=n}async listTables(e){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){const n={};return this.accessDelegation&&(n["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables`,body:t,headers:n})).data.metadata}async updateTable(e,t){const n=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":n.data["metadata-location"],metadata:n.data.metadata}}async dropTable(e,t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String((t==null?void 0:t.purge)??!1)}})}async loadTable(e){const t={};return this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){const t={};this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation);try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Dr(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(n){if(n instanceof io&&n.status===404)return!1;throw n}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(n){if(n instanceof io&&n.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw n}}},SO=class{constructor(e){var a;let t="v1";e.catalogName&&(t+=`/${e.catalogName}`);const n=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=wO({baseUrl:n,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=(a=e.accessDelegation)==null?void 0:a.join(","),this.namespaceOps=new xO(this.client,t),this.tableOps=new kO(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}
377async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}},Yc=class extends Error{constructor(e){super(e),this.__isStorageError=!0,this.name="StorageError"}};function Te(e){return typeof e=="object"&&e!==null&&"__isStorageError"in e}var PO=class extends Yc{constructor(e,t,n){super(e),this.name="StorageApiError",this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},$p=class extends Yc{constructor(e,t){super(e),this.name="StorageUnknownError",this.originalError=t}};const Sh=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),AO=()=>Response,Wp=e=>{if(Array.isArray(e))return e.map(n=>Wp(n));if(typeof e=="function"||e!==Object(e))return e;const t={};return Object.entries(e).forEach(([n,a])=>{const r=n.replace(/([-_][a-z])/gi,s=>s.toUpperCase().replace(/[-_]/g,""));t[r]=Wp(a)}),t},EO=e=>{if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},CO=e=>!e||typeof e!="string"||e.length===0||e.length>100||e.trim()!==e||e.includes("/")||e.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e);function oo(e){"@babel/helpers - typeof";return oo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},oo(e)}function TO(e,t){if(oo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t||"default");if(oo(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function jO(e){var t=TO(e,"string");return oo(t)=="symbol"?t:t+""}function IO(e,t,n){return(t=jO(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Pv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,a)}return n}function J(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Pv(Object(n),!0).forEach(function(a){IO(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pv(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}const rd=e=>{var t;return e.msg||e.message||e.error_description||(typeof e.error=="string"?e.error:(t=e.error)===null||t===void 0?void 0:t.message)||JSON.stringify(e)},RO=async(e,t,n)=>{e instanceof await AO()&&!(n!=null&&n.noResolveJson)?e.json().then(a=>{const r=e.status||500,s=(a==null?void 0:a.statusCode)||r+"";t(new PO(rd(a),r,s))}).catch(a=>{t(new $p(rd(a),a))}):t(new $p(rd(e),e))},_O=(e,t,n,a)=>{const r={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"||!a?r:(EO(a)?(r.headers=J({"Content-Type":"application/json"},t==null?void 0:t.headers),r.body=JSON.stringify(a)):r.body=a,t!=null&&t.duplex&&(r.duplex=t.duplex),J(J({},r),n))};async function So(e,t,n,a,r,s){return new Promise((i,o)=>{e(n,_O(t,a,r,s)).then(c=>{if(!c.ok)throw c;return a!=null&&a.noResolveJson?c:c.json()}).then(c=>i(c)).catch(c=>RO(c,o,a))})}async function lo(e,t,n,a){return So(e,"GET",t,n,a)}async function en(e,t,n,a,r){return So(e,"POST",t,a,r,n)}async function Vp(e,t,n,a,r){return So(e,"PUT",t,a,r,n)}async function OO(e,t,n,a){return So(e,"HEAD",t,J(J({},n),{},{noResolveJson:!0}),a)}async function Ph(e,t,n,a,r){return So(e,"DELETE",t,a,r,n)}var NO=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t}then(e,t){return this.execute().then(e,t)}async execute(){var e=this;try{return{data:(await e.downloadFn()).body,error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Te(t))return{data:null,error:t};throw t}}};let N0;N0=Symbol.toStringTag;var LO=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[N0]="BlobDownloadBuilder",this.promise=null}asStream(){return new NO(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var e=this;try{return{data:await(await e.downloadFn()).blob(),error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Te(t))return{data:null,error:t};throw t}}};const zO={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Av={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var BO=class{constructor(e,t={},n,a){this.shouldThrowOnError=!1,this.url=e,this.headers=t,this.bucketId=n,this.fetch=Sh(a)}throwOnError(){return this.shouldThrowOnError=!0,this}async uploadOrUpdate(e,t,n,a){var r=this;try{let s;const i=J(J({},Av),a);let o=J(J({},r.headers),e==="POST"&&{"x-upsert":String(i.upsert)});const c=i.metadata;typeof Blob<"u"&&n instanceof Blob?(s=new FormData,s.append("cacheControl",i.cacheControl),c&&s.append("metadata",r.encodeMetadata(c)),s.append("",n)):typeof FormData<"u"&&n instanceof FormData?(s=n,s.has("cacheControl")||s.append("cacheControl",i.cacheControl),c&&!s.has("metadata")&&s.append("metadata",r.encodeMetadata(c))):(s=n,o["cache-control"]=`max-age=${i.cacheControl}`,o["content-type"]=i.contentType,c&&(o["x-metadata"]=r.toBase64(r.encodeMetadata(c))),(typeof ReadableStream<"u"&&s instanceof ReadableStream||s&&typeof s=="object"&&"pipe"in s&&typeof s.pipe=="function")&&!i.duplex&&(i.duplex="half")),a!=null&&a.headers&&(o=J(J({},o),a.headers));const u=r._removeEmptyFolders(t),d=r._getFinalPath(u),p=await(e=="PUT"?Vp:en)(r.fetch,`${r.url}/object/${d}`,s,J({headers:o},i!=null&&i.duplex?{duplex:i.duplex}:{}));return{data:{path:u,id:p.Id,fullPath:p.Key},error:null}}catch(s){if(r.shouldThrowOnError)throw s;if(Te(s))return{data:null,error:s};throw s}}async upload(e,t,n){return this.uploadOrUpdate("POST",e,t,n)}async uploadToSignedUrl(e,t,n,a){var r=this;const s=r._removeEmptyFolders(e),i=r._getFinalPath(s),o=new URL(r.url+`/object/upload/sign/${i}`);o.searchParams.set("token",t);try{let c;const u=J({upsert:Av.upsert},a),d=J(J({},r.headers),{"x-upsert":String(u.upsert)});return typeof Blob<"u"&&n instanceof Blob?(c=new FormData,c.append("cacheControl",u.cacheControl),c.append("",n)):typeof FormData<"u"&&n instanceof FormData?(c=n,c.append("cacheControl",u.cacheControl)):(c=n,d["cache-control"]=`max-age=${u.cacheControl}`,d["content-type"]=u.contentType),{data:{path:s,fullPath:(await Vp(r.fetch,o.toString(),c,{headers:d})).Key},error:null}}catch(c){if(r.shouldThrowOnError)throw c;if(Te(c))return{data:null,error:c};throw c}}async createSignedUploadUrl(e,t){var n=this;try{let a=n._getFinalPath(e);const r=J({},n.headers);t!=null&&t.upsert&&(r["x-upsert"]="true");const s=await en(n.fetch,`${n.url}/object/upload/sign/${a}`,{},{headers:r}),i=new URL(n.url+s.url),o=i.searchParams.get("token");if(!o)throw new Yc("No token returned by API");return{data:{signedUrl:i.toString(),path:e,token:o},error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}}async update(e,t,n){return this.uploadOrUpdate("PUT",e,t,n)}async move(e,t,n){var a=this;try{return{data:await en(a.fetch,`${a.url}/object/move`,{bucketId:a.bucketId,sourceKey:e,destinationKey:t,de
377stinationBucket:n==null?void 0:n.destinationBucket},{headers:a.headers}),error:null}}catch(r){if(a.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}}async copy(e,t,n){var a=this;try{return{data:{path:(await en(a.fetch,`${a.url}/object/copy`,{bucketId:a.bucketId,sourceKey:e,destinationKey:t,destinationBucket:n==null?void 0:n.destinationBucket},{headers:a.headers})).Key},error:null}}catch(r){if(a.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}}async createSignedUrl(e,t,n){var a=this;try{let r=a._getFinalPath(e),s=await en(a.fetch,`${a.url}/object/sign/${r}`,J({expiresIn:t},n!=null&&n.transform?{transform:n.transform}:{}),{headers:a.headers});const i=n!=null&&n.download?`&download=${n.download===!0?"":n.download}`:"";return s={signedUrl:encodeURI(`${a.url}${s.signedURL}${i}`)},{data:s,error:null}}catch(r){if(a.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}}async createSignedUrls(e,t,n){var a=this;try{const r=await en(a.fetch,`${a.url}/object/sign/${a.bucketId}`,{expiresIn:t,paths:e},{headers:a.headers}),s=n!=null&&n.download?`&download=${n.download===!0?"":n.download}`:"";return{data:r.map(i=>J(J({},i),{},{signedUrl:i.signedURL?encodeURI(`${a.url}${i.signedURL}${s}`):null})),error:null}}catch(r){if(a.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}}download(e,t){const n=typeof(t==null?void 0:t.transform)<"u"?"render/image/authenticated":"object",a=this.transformOptsToQueryString((t==null?void 0:t.transform)||{}),r=a?`?${a}`:"",s=this._getFinalPath(e),i=()=>lo(this.fetch,`${this.url}/${n}/${s}${r}`,{headers:this.headers,noResolveJson:!0});return new LO(i,this.shouldThrowOnError)}async info(e){var t=this;const n=t._getFinalPath(e);try{return{data:Wp(await lo(t.fetch,`${t.url}/object/info/${n}`,{headers:t.headers})),error:null}}catch(a){if(t.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}}async exists(e){var t=this;const n=t._getFinalPath(e);try{return await OO(t.fetch,`${t.url}/object/${n}`,{headers:t.headers}),{data:!0,error:null}}catch(a){if(t.shouldThrowOnError)throw a;if(Te(a)&&a instanceof $p){const r=a.originalError;if([400,404].includes(r==null?void 0:r.status))return{data:!1,error:a}}throw a}}getPublicUrl(e,t){const n=this._getFinalPath(e),a=[],r=t!=null&&t.download?`download=${t.download===!0?"":t.download}`:"";r!==""&&a.push(r);const s=typeof(t==null?void 0:t.transform)<"u"?"render/image":"object",i=this.transformOptsToQueryString((t==null?void 0:t.transform)||{});i!==""&&a.push(i);let o=a.join("&");return o!==""&&(o=`?${o}`),{data:{publicUrl:encodeURI(`${this.url}/${s}/public/${n}${o}`)}}}async remove(e){var t=this;try{return{data:await Ph(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async list(e,t,n){var a=this;try{const r=J(J(J({},zO),t),{},{prefix:e||""});return{data:await en(a.fetch,`${a.url}/object/list/${a.bucketId}`,r,{headers:a.headers},n),error:null}}catch(r){if(a.shouldThrowOnError)throw r;if(Te(r))return{data:null,error:r};throw r}}async listV2(e,t){var n=this;try{const a=J({},e);return{data:await en(n.fetch,`${n.url}/object/list-v2/${n.bucketId}`,a,{headers:n.headers},t),error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(e){const t=[];return e.width&&t.push(`width=${e.width}`),e.height&&t.push(`height=${e.height}`),e.resize&&t.push(`resize=${e.resize}`),e.format&&t.push(`format=${e.format}`),e.quality&&t.push(`quality=${e.quality}`),t.join("&")}};const L0="2.91.0",z0={"X-Client-Info":`storage-js/${L0}`};var DO=class{constructor(e,t={},n,a){this.shouldThrowOnError=!1;const r=new URL(e);a!=null&&a.useNewHostname&&/supabase\.(co|in|red)$/.test(r.hostname)&&!r.hostname.includes("storage.supabase.")&&(r.hostname=r.hostname.replace("supabase.","storage.supabase.")),this.url=r.href.replace(/\/$/,""),this.headers=J(J({},z0),t),this.fetch=Sh(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async listBuckets(e){var t=this;try{const n=t.listBucketOptionsToQueryString(e);return{data:await lo(t.fetch,`${t.url}/bucket${n}`,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async getBucket(e){var t=this;try{return{data:await lo(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async createBucket(e,t={public:!1}){var n=this;try{return{data:await en(n.fetch,`${n.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:n.headers}),error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}}async updateBucket(e,t){var n=this;try{return{data:await Vp(n.fetch,`${n.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:n.headers}),error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(Te(a))return{data:null,error:a};throw a}}async emptyBucket(e){var t=this;try{return{data:await en(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async deleteBucket(e){var t=this;try{return{data:await Ph(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}listBucketOptionsToQueryString(e){const t={};return e&&("limit"in e&&(t.limit=String(e.limit)),"offset"in e&&(t.offset=String(e.offset)),e.search&&(t.search=e.search),e.sortColumn&&(t.sortColumn=e.sortColumn),e.sortOrder&&(t.sortOrder=e.sortOrder)),Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},qO=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=J(J({},z0),t),this.fetch=Sh(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(e){var t=this;try{return{data:await en(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async listBuckets(e){var t=this;try{const n=new URLSearchParams;(e==null?void 0:e.limit)!==void 0&&n.set("limit",e.limit.toString()),(e==null?void 0:e.offset)!==void 0&&n.set("offset",e.offset.toString()),e!=null&&e.sortColumn&&n.set("sortColumn",e.sortColumn),e!=null&&e.sortOrder&&n.set("sortOrder",e.sortOrder),e!=null&&e.search&&n.set("search",e.search);const a=n.toString(),r=a?`${t.url}/bucket?${a}`:`${t.url}/bucket`;return{data:await lo(t.fetch,r,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}async deleteBucket(e){var t=this;try{return{data:await Ph(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(Te(n))return{data:null,error:n};throw n}}from(e){var t=this;if(!CO(e))throw new Yc("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");const n=new SO({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),a=this.shouldThrowOnError;return new Proxy(n,{get(r,s){const i=r[s];return typeof i!="function"?i:async(...o)=>{try{return{data:await i.apply(r,o),error:null}}catch(c){if(a)throw c;return{data:null,error:c}}}}})}};const Ah={"X-Client-Info":`storage-js/${L0}`,"Content-Type":"application/json"};
377var B0=class extends Error{constructor(e){super(e),this.__isStorageVectorsError=!0,this.name="StorageVectorsError"}};function At(e){return typeof e=="object"&&e!==null&&"__isStorageVectorsError"in e}var sd=class extends B0{constructor(e,t,n){super(e),this.name="StorageVectorsApiError",this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},MO=class extends B0{constructor(e,t){super(e),this.name="StorageVectorsUnknownError",this.originalError=t}};const Eh=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),FO=e=>{if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Ev=e=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),UO=async(e,t,n)=>{if(e&&typeof e=="object"&&"status"in e&&"ok"in e&&typeof e.status=="number"&&!(n!=null&&n.noResolveJson)){const a=e.status||500,r=e;if(typeof r.json=="function")r.json().then(s=>{const i=(s==null?void 0:s.statusCode)||(s==null?void 0:s.code)||a+"";t(new sd(Ev(s),a,i))}).catch(()=>{const s=a+"";t(new sd(r.statusText||`HTTP ${a} error`,a,s))});else{const s=a+"";t(new sd(r.statusText||`HTTP ${a} error`,a,s))}}else t(new MO(Ev(e),e))},$O=(e,t,n,a)=>{const r={method:e,headers:(t==null?void 0:t.headers)||{}};return a?(FO(a)?(r.headers=J({"Content-Type":"application/json"},t==null?void 0:t.headers),r.body=JSON.stringify(a)):r.body=a,J(J({},r),n)):r};async function WO(e,t,n,a,r,s){return new Promise((i,o)=>{e(n,$O(t,a,r,s)).then(c=>{if(!c.ok)throw c;if(a!=null&&a.noResolveJson)return c;const u=c.headers.get("content-type");return!u||!u.includes("application/json")?{}:c.json()}).then(c=>i(c)).catch(c=>UO(c,o,a))})}async function Et(e,t,n,a,r){return WO(e,"POST",t,a,r,n)}var VO=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=J(J({},Ah),t),this.fetch=Eh(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createIndex(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{},error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async getIndex(e,t){var n=this;try{return{data:await Et(n.fetch,`${n.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:n.headers}),error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(At(a))return{data:null,error:a};throw a}}async listIndexes(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async deleteIndex(e,t){var n=this;try{return{data:await Et(n.fetch,`${n.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:n.headers})||{},error:null}}catch(a){if(n.shouldThrowOnError)throw a;if(At(a))return{data:null,error:a};throw a}}},HO=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=J(J({},Ah),t),this.fetch=Eh(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async putVectors(e){var t=this;try{if(e.vectors.length<1||e.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return{data:await Et(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{},error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async getVectors(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async listVectors(e){var t=this;try{if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw new Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return{data:await Et(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async queryVectors(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async deleteVectors(e){var t=this;try{if(e.keys.length<1||e.keys.length>
377500)throw new Error("Keys batch size must be between 1 and 500 items");return{data:await Et(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{},error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}},GO=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=J(J({},Ah),t),this.fetch=Eh(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{},error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async getBucket(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async listBuckets(e={}){var t=this;try{return{data:await Et(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}async deleteBucket(e){var t=this;try{return{data:await Et(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{},error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(At(n))return{data:null,error:n};throw n}}},KO=class extends GO{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new YO(this.url,this.headers,e,this.fetch)}async createBucket(e){var t=()=>super.createBucket,n=this;return t().call(n,e)}async getBucket(e){var t=()=>super.getBucket,n=this;return t().call(n,e)}async listBuckets(e={}){var t=()=>super.listBuckets,n=this;return t().call(n,e)}async deleteBucket(e){var t=()=>super.deleteBucket,n=this;return t().call(n,e)}},YO=class extends VO{constructor(e,t,n,a){super(e,t,a),this.vectorBucketName=n}async createIndex(e){var t=()=>super.createIndex,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName}))}async getIndex(e){var t=()=>super.getIndex,n=this;return t().call(n,n.vectorBucketName,e)}async deleteIndex(e){var t=()=>super.deleteIndex,n=this;return t().call(n,n.vectorBucketName,e)}index(e){return new JO(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},JO=class extends HO{constructor(e,t,n,a,r){super(e,t,r),this.vectorBucketName=n,this.indexName=a}async putVectors(e){var t=()=>super.putVectors,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async getVectors(e){var t=()=>super.getVectors,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,n=this;return t().call(n,J(J({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}},QO=class extends DO{constructor(e,t={},n,a){super(e,t,n,a)}from(e){return new BO(this.url,this.headers,e,this.fetch)}get vectors(){return new KO(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new qO(this.url+"/iceberg",this.headers,this.fetch)}};const D0="2.91.0",Gr=30*1e3,Hp=3,id=Hp*Gr,XO="http://localhost:9999",ZO="supabase.auth.token",eN={"X-Client-Info":`gotrue-js/${D0}`},Gp="X-Supabase-Api-Version",q0={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},tN=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,nN=10*60*1e3;class co extends Error{constructor(t,n,a){super(t),this.__isAuthError=!0,this.name="AuthError",this.status=n,this.code=a}}function K(e){return typeof e=="object"&&e!==null&&"__isAuthError"in e}class aN extends co{constructor(t,n,a){super(t,n,a),this.name="AuthApiError",this.status=n,this.code=a}}function rN(e){return K(e)&&e.name==="AuthApiError"}class Xa extends co{constructor(t,n){super(t),this.name="AuthUnknownError",this.originalError=n}}class Kn extends co{constructor(t,n,a,r){super(t,a,r),this.name=n,this.status=a}}class kt extends Kn{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function sN(e){return K(e)&&e.name==="AuthSessionMissingError"}class qr extends Kn{constructor(){super("Auth session or user missing","AuthInvalidToken
377ResponseError",500,void 0)}}class nl extends Kn{constructor(t){super(t,"AuthInvalidCredentialsError",400,void 0)}}class al extends Kn{constructor(t,n=null){super(t,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}function iN(e){return K(e)&&e.name==="AuthImplicitGrantRedirectError"}class Cv extends Kn{constructor(t,n=null){super(t,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class oN extends Kn{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class Kp extends Kn{constructor(t,n){super(t,"AuthRetryableFetchError",n,void 0)}}function od(e){return K(e)&&e.name==="AuthRetryableFetchError"}class Tv extends Kn{constructor(t,n,a){super(t,"AuthWeakPasswordError",n,"weak_password"),this.reasons=a}}class Yp extends Kn{constructor(t){super(t,"AuthInvalidJwtError",400,"invalid_jwt")}}const cc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),jv=` 	
378\r=`.split(""),lN=(()=>{const e=new Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<jv.length;t+=1)e[jv[t].charCodeAt(0)]=-2;for(let t=0;t<cc.length;t+=1)e[cc[t].charCodeAt(0)]=t;return e})();function Iv(e,t,n){if(e!==null)for(t.queue=t.queue<<8|e,t.queuedBits+=8;t.queuedBits>=6;){const a=t.queue>>t.queuedBits-6&63;n(cc[a]),t.queuedBits-=6}else if(t.queuedBits>0)for(t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;t.queuedBits>=6;){const a=t.queue>>t.queuedBits-6&63;n(cc[a]),t.queuedBits-=6}}function M0(e,t,n){const a=lN[e];if(a>-1)for(t.queue=t.queue<<6|a,t.queuedBits+=6;t.queuedBits>=8;)n(t.queue>>t.queuedBits-8&255),t.queuedBits-=8;else{if(a===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}}function Rv(e){const t=[],n=i=>{t.push(String.fromCodePoint(i))},a={utf8seq:0,codepoint:0},r={queue:0,queuedBits:0},s=i=>{dN(i,a,n)};for(let i=0;i<e.length;i+=1)M0(e.charCodeAt(i),r,s);return t.join("")}function cN(e,t){if(e<=127){t(e);return}else if(e<=2047){t(192|e>>6),t(128|e&63);return}else if(e<=65535){t(224|e>>12),t(128|e>>6&63),t(128|e&63);return}else if(e<=1114111){t(240|e>>18),t(128|e>>12&63),t(128|e>>6&63),t(128|e&63);return}throw new Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`)}function uN(e,t){for(let n=0;n<e.length;n+=1){let a=e.charCodeAt(n);if(a>55295&&a<=56319){const r=(a-55296)*1024&65535;a=(e.charCodeAt(n+1)-56320&65535|r)+65536,n+=1}cN(a,t)}}function dN(e,t,n){if(t.utf8seq===0){if(e<=127){n(e);return}for(let a=1;a<6;a+=1)if(!(e>>7-a&1)){t.utf8seq=a;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw new Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw new Error("Invalid UTF-8 sequence");t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0&&n(t.codepoint)}}function bs(e){const t=[],n={queue:0,queuedBits:0},a=r=>{t.push(r)};for(let r=0;r<e.length;r+=1)M0(e.charCodeAt(r),n,a);return new Uint8Array(t)}function pN(e){const t=[];return uN(e,n=>t.push(n)),new Uint8Array(t)}function nr(e){const t=[],n={queue:0,queuedBits:0},a=r=>{t.push(r)};return e.forEach(r=>Iv(r,n,a)),Iv(null,n,a),t.join("")}function mN(e){return Math.round(Date.now()/1e3)+e}function hN(){return Symbol("auth-callback")}const Je=()=>typeof window<"u"&&typeof document<"u",Va={tested:!1,writable:!1},F0=()=>{if(!Je())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(Va.tested)return Va.writable;const e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),Va.tested=!0,Va.writable=!0}catch{Va.tested=!0,Va.writable=!1}return Va.writable};function fN(e){const t={},n=new URL(e);if(n.hash&&n.hash[0]==="#")try{new URLSearchParams(n.hash.substring(1)).forEac
378h((r,s)=>{t[s]=r})}catch{}return n.searchParams.forEach((a,r)=>{t[r]=a}),t}const U0=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),gN=e=>typeof e=="object"&&e!==null&&"status"in e&&"ok"in e&&"json"in e&&typeof e.json=="function",Kr=async(e,t,n)=>{await e.setItem(t,JSON.stringify(n))},Ha=async(e,t)=>{const n=await e.getItem(t);if(!n)return null;try{return JSON.parse(n)}catch{return n}},Ye=async(e,t)=>{await e.removeItem(t)};class Jc{constructor(){this.promise=new Jc.promiseConstructor((t,n)=>{this.resolve=t,this.reject=n})}}Jc.promiseConstructor=Promise;function ld(e){const t=e.split(".");if(t.length!==3)throw new Yp("Invalid JWT structure");for(let a=0;a<t.length;a++)if(!tN.test(t[a]))throw new Yp("JWT not in base64url format");return{header:JSON.parse(Rv(t[0])),payload:JSON.parse(Rv(t[1])),signature:bs(t[2]),raw:{header:t[0],payload:t[1]}}}async function vN(e){return await new Promise(t=>{setTimeout(()=>t(null),e)})}function yN(e,t){return new Promise((a,r)=>{(async()=>{for(let s=0;s<1/0;s++)try{const i=await e(s);if(!t(s,null,i)){a(i);return}}catch(i){if(!t(s,i)){r(i);return}}})()})}function bN(e){return("0"+e.toString(16)).substr(-2)}function wN(){const t=new Uint32Array(56);if(typeof crypto>"u"){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",a=n.length;let r="";for(let s=0;s<56;s++)r+=n.charAt(Math.floor(Math.random()*a));return r}return crypto.getRandomValues(t),Array.from(t,bN).join("")}async function xN(e){const n=new TextEncoder().encode(e),a=await crypto.subtle.digest("SHA-256",n),r=new Uint8Array(a);return Array.from(r).map(s=>String.fromCharCode(s)).join("")}async function kN(e){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),e;const n=await xN(e);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Mr(e,t,n=!1){const a=wN();let r=a;n&&(r+="/PASSWORD_RECOVERY"),await Kr(e,`${t}-code-verifier`,r);const s=await kN(a);return[s,a===s?"plain":"s256"]}const SN=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function PN(e){const t=e.headers.get(Gp);if(!t||!t.match(SN))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch{return null}}function AN(e){if(!e)throw new Error("Missing exp claim");const t=Math.floor(Date.now()/1e3);if(e<=t)throw new Error("JWT has expired")}function EN(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const CN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Fr(e){if(!CN.test(e))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function cd(){const e={};return new Proxy(e,{get:(t,n)=>{if(n==="__isUserNotAvailableProxy")return!0;if(typeof n=="symbol"){const a=n.toString();if(a==="Symbol(Symbol.toPrimitive)"||a==="Symbol(Symbol.toStringTag)"||a==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${n}" property of the session object is not supported. Please use getUser() instead.`)},set:(t,n)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${n}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(t,n)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${n}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function TN(e,t){return new Proxy(e,{get:(n,a,r)=>{if(a==="__isInsecureUserWarningProxy")return!0;if(typeof a=="symbol"){const s=a.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)"||s==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(n,a,r)}
378return!t.value&&typeof a=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),t.value=!0),Reflect.get(n,a,r)}})}function _v(e){return JSON.parse(JSON.stringify(e))}const Ja=e=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),jN=[502,503,504];async function Ov(e){var t;if(!gN(e))throw new Kp(Ja(e),0);if(jN.includes(e.status))throw new Kp(Ja(e),e.status);let n;try{n=await e.json()}catch(s){throw new Xa(Ja(s),s)}let a;const r=PN(e);if(r&&r.getTime()>=q0["2024-01-01"].timestamp&&typeof n=="object"&&n&&typeof n.code=="string"?a=n.code:typeof n=="object"&&n&&typeof n.error_code=="string"&&(a=n.error_code),a){if(a==="weak_password")throw new Tv(Ja(n),e.status,((t=n.weak_password)===null||t===void 0?void 0:t.reasons)||[]);if(a==="session_not_found")throw new kt}else if(typeof n=="object"&&n&&typeof n.weak_password=="object"&&n.weak_password&&Array.isArray(n.weak_password.reasons)&&n.weak_password.reasons.length&&n.weak_password.reasons.reduce((s,i)=>s&&typeof i=="string",!0))throw new Tv(Ja(n),e.status,n.weak_password.reasons);throw new aN(Ja(n),e.status||500,a)}const IN=(e,t,n,a)=>{const r={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t==null?void 0:t.headers),r.body=JSON.stringify(a),Object.assign(Object.assign({},r),n))};async function Y(e,t,n,a){var r;const s=Object.assign({},a==null?void 0:a.headers);s[Gp]||(s[Gp]=q0["2024-01-01"].name),a!=null&&a.jwt&&(s.Authorization=`Bearer ${a.jwt}`);const i=(r=a==null?void 0:a.query)!==null&&r!==void 0?r:{};a!=null&&a.redirectTo&&(i.redirect_to=a.redirectTo);const o=Object.keys(i).length?"?"+new URLSearchParams(i).toString():"",c=await RN(e,t,n+o,{headers:s,noResolveJson:a==null?void 0:a.noResolveJson},{},a==null?void 0:a.body);return a!=null&&a.xform?a==null?void 0:a.xform(c):{data:Object.assign({},c),error:null}}async function RN(e,t,n,a,r,s){const i=IN(t,a,r,s);let o;try{o=await e(n,Object.assign({},i))}catch(c){throw console.error(c),new Kp(Ja(c),0)}if(o.ok||await Ov(o),a!=null&&a.noResolveJson)return o;try{return await o.json()}catch(c){await Ov(c)}}function Jt(e){var t;let n=null;NN(e)&&(n=Object.assign({},e),e.expires_at||(n.expires_at=mN(e.expires_in)));const a=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:n,user:a},error:null}}function Nv(e){const t=Jt(e);return!t.error&&e.weak_password&&typeof e.weak_password=="object"&&Array.isArray(e.weak_password.reasons)&&e.weak_password.reasons.length&&e.weak_password.message&&typeof e.weak_password.message=="string"&&e.weak_password.reasons.reduce((n,a)=>n&&typeof a=="string",!0)&&(t.data.weak_password=e.weak_password),t}function ua(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function _N(e){return{data:e,error:null}}function ON(e){const{action_link:t,email_otp:n,hashed_token:a,redirect_to:r,verification_type:s}=e,i=Ys(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),o={action_link:t,email_otp:n,hashed_token:a,redirect_to:r,verification_type:s},c=Object.assign({},i);return{data:{properties:o,user:c},error:null}}function Lv(e){return e}function NN(e){return e.access_token&&e.refresh_token&&e.expires_in}const ud=["global","local","others"];class LN{constructor({url:t="",headers:n={},fetch:a}){this.url=t,this.headers=n,this.fetch=U0(a),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)}}async signOut(t,n=ud[0]){if(ud.indexOf(n)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${ud.join(", ")}`);try{return await Y(this.fetch,"POST",`${this.url}/logout?scope=${n}`,{headers:this.headers,jwt:t,noResolveJson:!0}),{data:null,error:null}}catch(a){if(K(a))return{data:null,error:a};throw a}}async inviteUserByEmail(t,n={}){try{return await Y(this.fetch,"POST",`${this.url}/invite`,{body:{email:t,data:n.data},headers:this.headers,redirectTo:n.redirectTo,xform:ua})}catch(a){if(K(a))return{data:{user:null},error:a};throw a}}async generateLink(t){try{const{options:n}=t,a=Ys(t,["options"]),r=Object.assign(Object.assign({},a),n);return"newEmail"in a&&(r.new_email=a==null?void 0:a.newEmail,delete r.newEmail),await Y(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:ON,redirectTo:n==null?void 0:n.redirectTo})}catch(n){if(K(n))return{data:{properties:null,user:null},error:n};throw n}}async createUser(t){try{return await Y(this.fetch,"POST",`${this.url}/admin/users`,{body:t,headers:this.headers,xform:ua})}catch(n){if(K(n))return{data:{user:null},error:n};throw n}}async listUsers(t){var n,a,r,s,i,o,c;try{const u={nextPage:null,lastPage:0,total:0},d=await Y(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(a=(n=t==null?void 0:t.page)===null||n===void 0?void 0:n.toString())!==null&&a!==void 0?a:"",per_page:(s=(r=t==null?void 0:t.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:Lv});if(d.error)throw d.error;const p=await d.json(),h=(i=d.headers.get("x-total-count"))!==null&&i!==void 0?i:0,m=(c=(o=d.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&c!==void 0?c:[];return m.length>0&&(m.forEach(w=>{const f=parseInt(w.split(";")[0].split("=")[1].substring(0,1)),x=JSON.parse(w.split(";")[1].split("=")[1]);u[`${x}Page`]=f}),u.total=parseInt(h)),{data:Object.assign(Object.assign({},p),u),error:null}}catch(u){if(K(u))return{data:{users:[]},error:u};throw u}}async getUserById(t){Fr(t);try{return await Y(this.fetch,"GET",`${this.url}/admin/users/${t}`,{headers:this.headers,xform:ua})}catch(n){if(K(n))return{data:{user:null},error:n};throw n}}async updateUserById(t,n){Fr(t);try{return await Y(this.fetch,"PUT",`${this.url}/admin/users/${t}`,{body:n,headers:this.headers,xform:ua})}catch(a){if(K(a))return{data:{user:null},error:a};throw a}}async deleteUser(t,n=!1){Fr(t);
378try{return await Y(this.fetch,"DELETE",`${this.url}/admin/users/${t}`,{headers:this.headers,body:{should_soft_delete:n},xform:ua})}catch(a){if(K(a))return{data:{user:null},error:a};throw a}}async _listFactors(t){Fr(t.userId);try{const{data:n,error:a}=await Y(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:n,error:a}}catch(n){if(K(n))return{data:null,error:n};throw n}}async _deleteFactor(t){Fr(t.userId),Fr(t.id);try{return{data:await Y(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/factors/${t.id}`,{headers:this.headers}),error:null}}catch(n){if(K(n))return{data:null,error:n};throw n}}async _listOAuthClients(t){var n,a,r,s,i,o,c;try{const u={nextPage:null,lastPage:0,total:0},d=await Y(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(a=(n=t==null?void 0:t.page)===null||n===void 0?void 0:n.toString())!==null&&a!==void 0?a:"",per_page:(s=(r=t==null?void 0:t.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:Lv});if(d.error)throw d.error;const p=await d.json(),h=(i=d.headers.get("x-total-count"))!==null&&i!==void 0?i:0,m=(c=(o=d.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&c!==void 0?c:[];return m.length>0&&(m.forEach(w=>{const f=parseInt(w.split(";")[0].split("=")[1].substring(0,1)),x=JSON.parse(w.split(";")[1].split("=")[1]);u[`${x}Page`]=f}),u.total=parseInt(h)),{data:Object.assign(Object.assign({},p),u),error:null}}catch(u){if(K(u))return{data:{clients:[]},error:u};throw u}}async _createOAuthClient(t){try{return await Y(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:t,headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(K(n))return{data:null,error:n};throw n}}async _getOAuthClient(t){try{return await Y(this.fetch,"GET",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(K(n))return{data:null,error:n};throw n}}async _updateOAuthClient(t,n){try{return await Y(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${t}`,{body:n,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(K(a))return{data:null,error:a};throw a}}async _deleteOAuthClient(t){try{return await Y(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(n){if(K(n))return{data:null,error:n};throw n}}async _regenerateOAuthClientSecret(t){try{return await Y(this.fetch,"POST",`${this.url}/admin/oauth/clients/${t}/regenerate_secret`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(K(n))return{data:null,error:n};throw n}}}function zv(e={}){return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n},removeItem:t=>{delete e[t]}}}const Ur={debug:!!(globalThis&&F0()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class $0 extends Error{constructor(t){super(t),this.isAcquireTimeout=!0}}class zN extends $0{}async function BN(e,t,n){Ur.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);const a=new globalThis.AbortController;return t>0&&setTimeout(()=>{a.abort(),Ur.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",e)},t),await Promise.resolve().then(()=>globalThis.navigator.locks.request(e,t===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:a.signal},async r=>{if(r){Ur.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",e,r.name);try{return await n()}finally{Ur.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",e,r.name)}}else{if(t===0)throw Ur.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e),new zN(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`);if(Ur.debug)try{const s=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(s,null,"  "))}catch(s){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",s)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),await n()}}))}function DN(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function W0(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw new Error(`@supabase/auth-js: Address "${e}
378" is invalid.`);return e.toLowerCase()}function qN(e){return parseInt(e,16)}function MN(e){const t=new TextEncoder().encode(e);return"0x"+Array.from(t,a=>a.toString(16).padStart(2,"0")).join("")}function FN(e){var t;const{chainId:n,domain:a,expirationTime:r,issuedAt:s=new Date,nonce:i,notBefore:o,requestId:c,resources:u,scheme:d,uri:p,version:h}=e;{if(!Number.isInteger(n))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${n}`);if(!a)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(i&&i.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${i}`);if(!p)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(h!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${h}`);if(!((t=e.statement)===null||t===void 0)&&t.includes(`
379`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}const m=W0(e.address),w=d?`${d}://${a}`:a,f=e.statement?`${e.statement}
380`:"",x=`${w} wants you to sign in with your Ethereum account:
381${m}
382
383${f}`;let b=`URI: ${p}
384Version: ${h}
385Chain ID: ${n}${i?`
386Nonce: ${i}`:""}
387Issued At: ${s.toISOString()}`;if(r&&(b+=`
388Expiration Time: ${r.toISOString()}`),o&&(b+=`
389Not Before: ${o.toISOString()}`),c&&(b+=`
390Request ID: ${c}`),u){let g=`
391Resources:`;for(const y of u){if(!y||typeof y!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${y}`);g+=`
392- ${y}`}b+=g}return`${x}
393${b}`}class qe extends Error{constructor({message:t,code:n,cause:a,name:r}){var s;super(t,{cause:a}),this.__isWebAuthnError=!0,this.name=(s=r??(a instanceof Error?a.name:void 0))!==null&&s!==void 0?s:"Unknown Error",this.code=n}}class uc extends qe{constructor(t,n){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:n,message:t}),this.name="WebAuthnUnknownError",this.originalError=n}}function UN({error:e,options:t}){var n,a,r;const{publicKey:s}=t;if(!s)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new qe({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((n=s.authenticatorSelection)===null||n===void 0?void 0:n.requireResidentKey)===!0)return new qe({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&((a=s.authenticatorSelection)===null||a===void 0?void 0:a.userVerification)==="required")return new qe({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(((r=s.authenticatorSelection)===null||r===void 0?void 0:r.userVerification)==="required")return new qe({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else{if(e.name==="InvalidStateError")return new qe({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new qe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return s.pubKeyCredParams.filter(o=>o.type==="public-key").length===0?new qe({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new qe({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){const i=window.location.hostname;if(V0(i)){if(s.rp.id!==i)return new qe({message:`The RP ID "${s.rp.id}
393" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new qe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(s.user.id.byteLength<1||s.user.id.byteLength>64)return new qe({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new qe({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new qe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function $N({error:e,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new qe({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if(e.name==="NotAllowedError")return new qe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){const a=window.location.hostname;if(V0(a)){if(n.rpId!==a)return new qe({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new qe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new qe({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new qe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class WN{createNewAbortSignal(){if(this.controller){const n=new Error("Cancelling existing WebAuthn API call for new one");n.name="AbortError",this.controller.abort(n)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}}const VN=new WN;function HN(e){if(!e)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(e);const{challenge:t,user:n,excludeCredentials:a}=e,r=Ys(e,["challenge","user","excludeCredentials"]),s=bs(t).buffer,i=Object.assign(Object.assign({},n),{id:bs(n.id).buffer}),o=Object.assign(Object.assign({},r),{challenge:s,user:i});if(a&&a.length>0){o.excludeCredentials=new Array(a.length);for(let c=0;c<a.length;c++){const u=a[c];o.excludeCredentials[c]=Object.assign(Object.assign({},u),{id:bs(u.id).buffer,type:u.type||"public-key",transports:u.transports})}}return o}function GN(e){if(!e)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(e);const{challenge:t,allowCredentials:n}=e,a=Ys(e,["challenge","allowCredentials"]),r=bs(t).buffer,s=Object.assign(Object.assign({},a),{challenge:r});if(n&&n.length>0){s.allowCredentials=new Array(n.length);for(let i=0;i<n.length;i++){const o=n[i];s.allowCredentials[i]=Object.assign(Object.assign({},o),{id:bs(o.id).buffer,type:o.type||"public-key",transports:o.transports})}}return s}function KN(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const n=e;return{id:e.id,rawId:e.id,response:{attestationObject:nr(new Uint8Array(e.response.attestationObject)),clientDataJSON:nr(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=n.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function YN(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const n=e,a=e.getClientExtensionResults(),r=e.response;
393return{id:e.id,rawId:e.id,response:{authenticatorData:nr(new Uint8Array(r.authenticatorData)),clientDataJSON:nr(new Uint8Array(r.clientDataJSON)),signature:nr(new Uint8Array(r.signature)),userHandle:r.userHandle?nr(new Uint8Array(r.userHandle)):void 0},type:"public-key",clientExtensionResults:a,authenticatorAttachment:(t=n.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function V0(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Bv(){var e,t;return!!(Je()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((e=navigator==null?void 0:navigator.credentials)===null||e===void 0?void 0:e.create)=="function"&&typeof((t=navigator==null?void 0:navigator.credentials)===null||t===void 0?void 0:t.get)=="function")}async function JN(e){try{const t=await navigator.credentials.create(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new uc("Browser returned unexpected credential type",t)}:{data:null,error:new uc("Empty credential response",t)}}catch(t){return{data:null,error:UN({error:t,options:e})}}}async function QN(e){try{const t=await navigator.credentials.get(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new uc("Browser returned unexpected credential type",t)}:{data:null,error:new uc("Empty credential response",t)}}catch(t){return{data:null,error:$N({error:t,options:e})}}}const XN={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},ZN={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function dc(...e){const t=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),n=r=>r instanceof ArrayBuffer||ArrayBuffer.isView(r),a={};for(const r of e)if(r)for(const s in r){const i=r[s];if(i!==void 0)if(Array.isArray(i))a[s]=i;else if(n(i))a[s]=i;else if(t(i)){const o=a[s];t(o)?a[s]=dc(o,i):a[s]=dc(i)}else a[s]=i}return a}function eL(e,t){return dc(XN,e,t||{})}function tL(e,t){return dc(ZN,e,t||{})}class nL{constructor(t){this.client=t,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(t){return this.client.mfa.enroll(Object.assign(Object.assign({},t),{factorType:"webauthn"}))}async _challenge({factorId:t,webauthn:n,friendlyName:a,signal:r},s){try{const{data:i,error:o}=await this.client.mfa.challenge({factorId:t,webauthn:n});if(!i)return{data:null,error:o};const c=r??VN.createNewAbortSignal();if(i.webauthn.type==="create"){const{user:u}=i.webauthn.credential_options.publicKey;u.name||(u.name=`${u.id}:${a}`),u.displayName||(u.displayName=u.name)}switch(i.webauthn.type){case"create":{const u=eL(i.webauthn.credential_options.publicKey,s==null?void 0:s.create),{data:d,error:p}=await JN({publicKey:u,signal:c});return d?{data:{factorId:t,challengeId:i.id,webauthn:{type:i.webauthn.type,credential_response:d}},error:null}:{data:null,error:p}}case"request":{const u=tL(i.webauthn.credential_options.publicKey,s==null?void 0:s.request),{data:d,error:p}=await QN(Object.assign(Object.assign({},i.webauthn.credential_options),{publicKey:u,signal:c}));return d?{data:{factorId:t,challengeId:i.id,webauthn:{type:i.webauthn.type,credential_response:d}},error:null}:{data:null,error:p}}}}catch(i){return K(i)?{data:null,error:i}:{data:null,error:new Xa("Unexpected error in challenge",i)}}}async _verify({challengeId:t,factorId:n,webauthn:a}){return this.client.mfa.verify({factorId:n,challengeId:t,webauthn:a})}async _authenticate({factorId:t,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:a=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},s){if(!n)return{data:null,error:new co("rpId is required for WebAuthn authentication")};try{if(!Bv())return{data:null,error:new Xa("Browser does not support WebAuthn",null)};const{data:i,error:o}=await this.challenge({factorId:t,webauthn:{rpId:n,rpOrigins:a},signal:r},{request:s});if(!i)return{data:null,error:o};const{webauthn:c}=i;return this._verify({factorId:t,challengeId:i.challengeId,webauthn:{type:c.type,rpId:n,rpOrigins:a,credential_response:c.credential_response}})}catch(i){return K(i)?{data:null,error:i}:{data:null,error:new Xa("Unexpected error in authenticate",i)}}}async _register({friendlyName:t,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:a=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},s){if(!n)return{data:null,error:new co("rpId is required for WebAuthn registration")};try{if(!Bv())return{data:null,error:new Xa("Browser does not support WebAuthn",null)};const{data:i,error:o}=await this._enroll({friendlyName:t});if(!i)return await this.client.mfa.listFactors().then(d=>{var p;return(p=d.data)===null||p===void 0?void 0:p.all.find(h=>h.factor_type==="webauthn"&&h.friendly_name===t&&h.status!=="unverified")}).then(d=>d?this.client.mfa.unenroll({factorId:d==null?void 0:d.id}):void 0),{data:null,error:o};const{data:c,error:u}=await this._challenge({factorId:i.id,friendlyName:i.friendly_name,webauthn:{rpId:n,rpOrigins:a},signal:r},{create:s});return c?this._verify({factorId:i.id,challengeId:c.challengeId,webauthn:{rpId:n,rpOrigins:a,type:c.webauthn.type,credential_response:c.webauthn.credential_response}}):{data:null,error:u}}catch(i){return K(i)?{data:null,error:i}:{data:null,error:new Xa("Unexpected error in register",i)}}}}DN();const aL={url:XO,storageKey:ZO,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:eN,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:1e4};async function Dv(e,t,n){return await n()}const $r={};class uo{get jwks(){var t,n;return(n=(t=$r[this.storageKey])===null||t===void 0?void 0:t.jwks)!==null&&n!==void 0?n:{keys:[]}}set jwks(t){$r[this.storageKey]=Object.assign(Object.assign({},$r[this.storageKey]),{jwks:t})}get jwks_cached_at(){var t,n;return(n=(t=$r[this.storageKey])===null||t===void 0?void 0:t.cachedAt)!==null&&n!==void 0?n:Number.MIN_SAFE_INTEGER}set jwks_cached_at(t){$r[this.storageKey]=Object.assign(Object.assign({},$r[this.storageKey]),{cachedAt:t})}constructor(t){var n,a,r;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const s=Object.assign(Object.assign({},aL),t);
393if(this.storageKey=s.storageKey,this.instanceID=(n=uo.nextInstanceID[this.storageKey])!==null&&n!==void 0?n:0,uo.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!s.debug,typeof s.debug=="function"&&(this.logger=s.debug),this.instanceID>0&&Je()){const i=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(i),this.logDebugMessages&&console.trace(i)}if(this.persistSession=s.persistSession,this.autoRefreshToken=s.autoRefreshToken,this.admin=new LN({url:s.url,headers:s.headers,fetch:s.fetch}),this.url=s.url,this.headers=s.headers,this.fetch=U0(s.fetch),this.lock=s.lock||Dv,this.detectSessionInUrl=s.detectSessionInUrl,this.flowType=s.flowType,this.hasCustomAuthorizationHeader=s.hasCustomAuthorizationHeader,this.throwOnError=s.throwOnError,this.lockAcquireTimeout=s.lockAcquireTimeout,s.lock?this.lock=s.lock:this.persistSession&&Je()&&(!((a=globalThis==null?void 0:globalThis.navigator)===null||a===void 0)&&a.locks)?this.lock=BN:this.lock=Dv,this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new nL(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.persistSession?(s.storage?this.storage=s.storage:F0()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=zv(this.memoryStorage)),s.userStorage&&(this.userStorage=s.userStorage)):(this.memoryStorage={},this.storage=zv(this.memoryStorage)),Je()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(i){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",i)}(r=this.broadcastChannel)===null||r===void 0||r.addEventListener("message",async i=>{this._debug("received broadcast notification from other tab or client",i),await this._notifyAllSubscribers(i.data.event,i.data.session,!1)})}this.initialize()}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(t){if(this.throwOnError&&t&&t.error)throw t.error;return t}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${D0}) ${new Date().toISOString()}`}_debug(...t){return this.logDebugMessages&&this.logger(this._logPrefix(),...t),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){var t;try{let n={},a="none";if(Je()&&(n=fN(window.location.href),this._isImplicitGrantCallback(n)?a="implicit":await this._isPKCECallback(n)&&(a="pkce")),Je()&&this.detectSessionInUrl&&a!=="none"){const{data:r,error:s}=await this._getSessionFromURL(n,a);if(s){if(this._debug("#_initialize()","error detecting session from URL",s),iN(s)){const c=(t=s.details)===null||t===void 0?void 0:t.code;if(c==="identity_already_exists"||c==="identity_not_found"||c==="single_identity_not_deletable")return{error:s}}return{error:s}}const{session:i,redirectType:o}=r;return this._debug("#_initialize()","detected session in URL",i,"redirect type",o),await this._saveSession(i),setTimeout(async()=>{o==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",i):await this._notifyAllSubscribers("SIGNED_IN",i)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(n){return K(n)?this._returnResult({error:n}):this._returnResult({error:new Xa("Unexpected error during initialization",n)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(t){var n,a,r;try{const s=await Y(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(a=(n=t==null?void 0:t.options)===null||n===void 0?void 0:n.data)!==null&&a!==void 0?a:{},gotrue_meta_security:{captcha_token:(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.captchaToken}},xform:Jt}),{data:i,error:o}=s;
393if(o||!i)return this._returnResult({data:{user:null,session:null},error:o});const c=i.session,u=i.user;return i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",c)),this._returnResult({data:{user:u,session:c},error:null})}catch(s){if(K(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signUp(t){var n,a,r;try{let s;if("email"in t){const{email:d,password:p,options:h}=t;let m=null,w=null;this.flowType==="pkce"&&([m,w]=await Mr(this.storage,this.storageKey)),s=await Y(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:h==null?void 0:h.emailRedirectTo,body:{email:d,password:p,data:(n=h==null?void 0:h.data)!==null&&n!==void 0?n:{},gotrue_meta_security:{captcha_token:h==null?void 0:h.captchaToken},code_challenge:m,code_challenge_method:w},xform:Jt})}else if("phone"in t){const{phone:d,password:p,options:h}=t;s=await Y(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:d,password:p,data:(a=h==null?void 0:h.data)!==null&&a!==void 0?a:{},channel:(r=h==null?void 0:h.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:h==null?void 0:h.captchaToken}},xform:Jt})}else throw new nl("You must provide either an email or phone number and a password");const{data:i,error:o}=s;if(o||!i)return await Ye(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});const c=i.session,u=i.user;return i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",c)),this._returnResult({data:{user:u,session:c},error:null})}catch(s){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signInWithPassword(t){try{let n;if("email"in t){const{email:s,password:i,options:o}=t;n=await Y(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:i,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:Nv})}else if("phone"in t){const{phone:s,password:i,options:o}=t;n=await Y(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:i,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:Nv})}else throw new nl("You must provide either an email or phone number and a password");const{data:a,error:r}=n;if(r)return this._returnResult({data:{user:null,session:null},error:r});if(!a||!a.session||!a.user){const s=new qr;return this._returnResult({data:{user:null,session:null},error:s})}return a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session)),this._returnResult({data:Object.assign({user:a.user,session:a.session},a.weak_password?{weakPassword:a.weak_password}:null),error:r})}catch(n){if(K(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOAuth(t){var n,a,r,s;return await this._handleProviderSignIn(t.provider,{redirectTo:(n=t.options)===null||n===void 0?void 0:n.redirectTo,scopes:(a=t.options)===null||a===void 0?void 0:a.scopes,queryParams:(r=t.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(s=t.options)===null||s===void 0?void 0:s.skipBrowserRedirect})}async exchangeCodeForSession(t){return await this.initializePromise,this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(t))}async signInWithWeb3(t){const{chain:n}=t;switch(n){case"ethereum":return await this.signInWithEthereum(t);case"solana":return await this.signInWithSolana(t);default:throw new Error(`@supabase/auth-js: Unsupported chain "${n}"`)}}async signInWithEthereum(t){var n,a,r,s,i,o,c,u,d,p,h;let m,w;if("message"in t)m=t.message,w=t.signature;else{const{chain:f,wallet:x,statement:b,options:g}=t;let y;if(Je())if(typeof x=="object")y=x;else{const T=window;if("ethereum"in T&&typeof T.ethereum=="object"&&"request"in T.ethereum&&typeof T.ethereum.request=="function")y=T.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof x!="object"||!(g!=null&&g.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");y=x}const k=new URL((n=g==null?void 0:g.url)!==null&&n!==void 0?n:window.location.href),P=await y.request({method:"eth_requestAccounts"}).then(T=>T).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!P||P.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const E=W0(P[0]);let S=(a=g==null?void 0:g.signInWithEthereum)===null||a===void 0?void 0:a.chainId;if(!S){const T=await y.request({method:"eth_chainId"});S=qN(T)}const A={domain:k.host,address:E,statement:b,uri:k.href,version:"1",chainId:S,nonce:(r=g==null?void 0:g.signInWithEthereum)===null||r===void 0?void 0:r.nonce,issuedAt:(i=(s=g==null?void 0:g.signInWithEthereum)===null||s===void 0?void 0:s.issuedAt)!==null&&i!==void 0?i:new Date,expirationTime:(o=g==null?void 0:g.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(c=g==null?void 0:g.signInWithEthereum)===null||c===void 0?void 0:c.notBefore,requestId:(u=g==null?void 0:g.signInWithEthereum)===null||u===void 0?void 0:u.requestId,resources:(d=g==null?void 0:g.signInWithEthereum)===null||d===void 0?void 0:d.resources};m=FN(A),w=await y.request({method:"personal_sign",params:[MN(m),E]})}try{const{data:f,error:x}=await Y(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:m,signature:w},!((p=t.options)===null||p===void 0)&&p.captchaToken?{gotrue_meta_security:{captcha_token:(h=t.options)===null||h===void 0?void 0:h.captchaToken}}:null),xform:Jt});if(x)throw x;if(!f||!f.session||!f.user){const b=new qr;return this._returnResult({data:{user:null,session:null},error:b})}return f.session&&(await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session)),this._returnResult({data:Object.assign({},f),error:x})}catch(f){if(K(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async signInWithSolana(t){var n,a,r,s,i,o,c,u,d,p,h,m;let w,f;if("message"in t)w=t.message,f=t.signature;else{const{chain:x,wallet:b,statement:g,options:y}=t;let k;if(Je())if(typeof b=="object")k=b;else{const E=window;if("solana"in E&&typeof E.solana=="object"&&("signIn"in E.solana&&typeof E.solana.signIn=="function"||"signMessage"in E.solana&&typeof E.solana.signMessage=="function"))k=E.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof b!="object"||!(y!=null&&y.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");k=b}const P=new URL((n=y==null?void 0:y.url)!==null&&n!==void 0?n:window.location.href);
393if("signIn"in k&&k.signIn){const E=await k.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},y==null?void 0:y.signInWithSolana),{version:"1",domain:P.host,uri:P.href}),g?{statement:g}:null));let S;if(Array.isArray(E)&&E[0]&&typeof E[0]=="object")S=E[0];else if(E&&typeof E=="object"&&"signedMessage"in E&&"signature"in E)S=E;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in S&&"signature"in S&&(typeof S.signedMessage=="string"||S.signedMessage instanceof Uint8Array)&&S.signature instanceof Uint8Array)w=typeof S.signedMessage=="string"?S.signedMessage:new TextDecoder().decode(S.signedMessage),f=S.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in k)||typeof k.signMessage!="function"||!("publicKey"in k)||typeof k!="object"||!k.publicKey||!("toBase58"in k.publicKey)||typeof k.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");w=[`${P.host} wants you to sign in with your Solana account:`,k.publicKey.toBase58(),...g?["",g,""]:[""],"Version: 1",`URI: ${P.href}`,`Issued At: ${(r=(a=y==null?void 0:y.signInWithSolana)===null||a===void 0?void 0:a.issuedAt)!==null&&r!==void 0?r:new Date().toISOString()}`,...!((s=y==null?void 0:y.signInWithSolana)===null||s===void 0)&&s.notBefore?[`Not Before: ${y.signInWithSolana.notBefore}`]:[],...!((i=y==null?void 0:y.signInWithSolana)===null||i===void 0)&&i.expirationTime?[`Expiration Time: ${y.signInWithSolana.expirationTime}`]:[],...!((o=y==null?void 0:y.signInWithSolana)===null||o===void 0)&&o.chainId?[`Chain ID: ${y.signInWithSolana.chainId}`]:[],...!((c=y==null?void 0:y.signInWithSolana)===null||c===void 0)&&c.nonce?[`Nonce: ${y.signInWithSolana.nonce}`]:[],...!((u=y==null?void 0:y.signInWithSolana)===null||u===void 0)&&u.requestId?[`Request ID: ${y.signInWithSolana.requestId}`]:[],...!((p=(d=y==null?void 0:y.signInWithSolana)===null||d===void 0?void 0:d.resources)===null||p===void 0)&&p.length?["Resources",...y.signInWithSolana.resources.map(S=>`- ${S}`)]:[]].join(`
394`);const E=await k.signMessage(new TextEncoder().encode(w),"utf8");if(!E||!(E instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");f=E}}try{const{data:x,error:b}=await Y(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:w,signature:nr(f)},!((h=t.options)===null||h===void 0)&&h.captchaToken?{gotrue_meta_security:{captcha_token:(m=t.options)===null||m===void 0?void 0:m.captchaToken}}:null),xform:Jt});if(b)throw b;if(!x||!x.session||!x.user){const g=new qr;return this._returnResult({data:{user:null,session:null},error:g})}return x.session&&(await this._saveSession(x.session),await this._notifyAllSubscribers("SIGNED_IN",x.session)),this._returnResult({data:Object.assign({},x),error:b})}catch(x){if(K(x))return this._returnResult({data:{user:null,session:null},error:x});throw x}}async _exchangeCodeForSession(t){const n=await Ha(this.storage,`${this.storageKey}-code-verifier`),[a,r]=(n??"").split("/");try{if(!a&&this.flowType==="pkce")throw new oN;const{data:s,error:i}=await Y(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:t,code_verifier:a},xform:Jt});if(await Ye(this.storage,`${this.storageKey}-code-verifier`),i)throw i;if(!s||!s.session||!s.user){const o=new qr;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}return s.session&&(await this._saveSession(s.session),setTimeout(async()=>{await this._notifyAllSubscribers("SIGNED_IN",s.session)},0)),this._returnResult({data:Object.assign(Object.assign({},s),{redirectType:r??null}),error:i})}catch(s){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(s))return this._returnResult({data:{user:null,session:null,redirectType:null},error:s});throw s}}async signInWithIdToken(t){try{const{options:n,provider:a,token:r,access_token:s,nonce:i}=t,o=await Y(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:a,id_token:r,access_token:s,nonce:i,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}},xform:Jt}),{data:c,error:u}=o;if(u)return this._returnResult({data:{user:null,session:null},error:u});if(!c||!c.session||!c.user){const d=new qr;return this._returnResult({data:{user:null,session:null},error:d})}return c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",c.session)),this._returnResult({data:c,error:u})}catch(n){if(K(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOtp(t){var n,a,r,s,i;try{if("email"in t){const{email:o,options:c}=t;let u=null,d=null;this.flowType==="pkce"&&([u,d]=await Mr(this.storage,this.storageKey));const{error:p}=await Y(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(n=c==null?void 0:c.data)!==null&&n!==void 0?n:{},create_user:(a=c==null?void 0:c.shouldCreateUser)!==null&&a!==void 0?a:!0,gotrue_meta_security:{captcha_token:c==null?void 0:c.captchaToken},code_challenge:u,code_challenge_method:d},redirectTo:c==null?void 0:c.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:p})}if("phone"in t){const{phone:o,options:c}=t,{data:u,error:d}=await Y(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(r=c==null?void 0:c.data)!==null&&r!==void 0?r:{},create_user:(s=c==null?void 0:c.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:c==null?void 0:c.captchaToken},channel:(i=c==null?void 0:c.channel)!==null&&i!==void 0?i:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:d})}throw new nl("You must provide either an email or phone number.")}catch(o){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(t){var n,a;try{let r,s;"options"in t&&(r=(n=t.options)===null||n===void 0?void 0:n.redirectTo,s=(a=t.options)===null||a===void 0?void 0:a.captchaToken);const{data:i,error:o}=await Y(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},t),{gotrue_meta_security:{captcha_token:s}}),redirectTo:r,xform:Jt});if(o)throw o;if(!i)throw new Error("An error occurred on token verification.");const c=i.session,u=i.user;return c!=null&&c.access_token&&(await this._saveSession(c),await this._notifyAllSubscribers(t.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",c)),this._returnResult({data:{user:u,session:c},error:null})}catch(r){if(K(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithSSO(t){var n,a,r,s,i;try{let o=null,c=null;this.flowType==="pkce"&&([o,c]=await Mr(this.storage,this.storageKey));const u=await Y(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in t?{provider_id:t.providerId}:null),"domain"in t?{domain:t.domain}:null),{redirect_to:(a=(n=t.options)===null||n===void 0?void 0:n.redirectTo)!==null&&a!==void 0?a:void 0}),!((r=t==null?void 0:t.options)===null||r===void 0)&&r.captchaToken?{gotrue_meta_security:{captcha_token:t.options.captchaToken}}
394:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:c}),headers:this.headers,xform:_N});return!((s=u.data)===null||s===void 0)&&s.url&&Je()&&!(!((i=t.options)===null||i===void 0)&&i.skipBrowserRedirect)&&window.location.assign(u.data.url),this._returnResult(u)}catch(o){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(o))return this._returnResult({data:null,error:o});throw o}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async t=>{const{data:{session:n},error:a}=t;if(a)throw a;if(!n)throw new kt;const{error:r}=await Y(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:n.access_token});return this._returnResult({data:{user:null,session:null},error:r})})}catch(t){if(K(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async resend(t){try{const n=`${this.url}/resend`;if("email"in t){const{email:a,type:r,options:s}=t,{error:i}=await Y(this.fetch,"POST",n,{headers:this.headers,body:{email:a,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}},redirectTo:s==null?void 0:s.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:i})}else if("phone"in t){const{phone:a,type:r,options:s}=t,{data:i,error:o}=await Y(this.fetch,"POST",n,{headers:this.headers,body:{phone:a,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:i==null?void 0:i.message_id},error:o})}throw new nl("You must provide either an email or phone number and a type")}catch(n){if(K(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async getSession(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async n=>n))}async _acquireLock(t,n){this._debug("#_acquireLock","begin",t);try{if(this.lockAcquired){const a=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await a,await n()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,t,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const a=n();for(this.pendingInLock.push((async()=>{try{await a}catch{}})()),await a;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await a}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(t){this._debug("#_useSession","begin");try{const n=await this.__loadSession();return await t(n)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let t=null;const n=await Ha(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",n),n!==null&&(this._isValidSession(n)?t=n:(this._debug("#getSession()","session from storage is not valid"),await this._removeSession())),!t)return{data:{session:null},error:null};const a=t.expires_at?t.expires_at*1e3-Date.now()<id:!1;if(this._debug("#__loadSession()",`session has${a?"":" not"} expired`,"expires_at",t.expires_at),!a){if(this.userStorage){const i=await Ha(this.userStorage,this.storageKey+"-user");i!=null&&i.user?t.user=i.user:t.user=cd()}if(this.storage.isServer&&t.user&&!t.user.__isUserNotAvailableProxy){const i={value:this.suppressGetSessionWarning};t.user=TN(t.user,i),i.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:t},error:null}}const{data:r,error:s}=await this._callRefreshToken(t.refresh_token);return s?this._returnResult({data:{session:null},error:s}):this._returnResult({data:{session:r},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(t){if(t)return await this._getUser(t);await this.initializePromise;const n=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());return n.data.user&&(this.suppressGetSessionWarning=!0),n}async _getUser(t){try{return t?await Y(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:t,xform:ua}):await this._useSession(async n=>{var a,r,s;const{data:i,error:o}=n;
394if(o)throw o;return!(!((a=i.session)===null||a===void 0)&&a.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new kt}:await Y(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(r=i.session)===null||r===void 0?void 0:r.access_token)!==null&&s!==void 0?s:void 0,xform:ua})})}catch(n){if(K(n))return sN(n)&&(await this._removeSession(),await Ye(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({data:{user:null},error:n});throw n}}async updateUser(t,n={}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(t,n))}async _updateUser(t,n={}){try{return await this._useSession(async a=>{const{data:r,error:s}=a;if(s)throw s;if(!r.session)throw new kt;const i=r.session;let o=null,c=null;this.flowType==="pkce"&&t.email!=null&&([o,c]=await Mr(this.storage,this.storageKey));const{data:u,error:d}=await Y(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:n==null?void 0:n.emailRedirectTo,body:Object.assign(Object.assign({},t),{code_challenge:o,code_challenge_method:c}),jwt:i.access_token,xform:ua});if(d)throw d;return i.user=u.user,await this._saveSession(i),await this._notifyAllSubscribers("USER_UPDATED",i),this._returnResult({data:{user:i.user},error:null})})}catch(a){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(a))return this._returnResult({data:{user:null},error:a});throw a}}async setSession(t){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(t))}async _setSession(t){try{if(!t.access_token||!t.refresh_token)throw new kt;const n=Date.now()/1e3;let a=n,r=!0,s=null;const{payload:i}=ld(t.access_token);if(i.exp&&(a=i.exp,r=a<=n),r){const{data:o,error:c}=await this._callRefreshToken(t.refresh_token);if(c)return this._returnResult({data:{user:null,session:null},error:c});if(!o)return{data:{user:null,session:null},error:null};s=o}else{const{data:o,error:c}=await this._getUser(t.access_token);if(c)throw c;s={access_token:t.access_token,refresh_token:t.refresh_token,user:o.user,token_type:"bearer",expires_in:a-n,expires_at:a},await this._saveSession(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return this._returnResult({data:{user:s.user,session:s},error:null})}catch(n){if(K(n))return this._returnResult({data:{session:null,user:null},error:n});throw n}}async refreshSession(t){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(t))}async _refreshSession(t){try{return await this._useSession(async n=>{var a;if(!t){const{data:i,error:o}=n;if(o)throw o;t=(a=i.session)!==null&&a!==void 0?a:void 0}if(!(t!=null&&t.refresh_token))throw new kt;const{data:r,error:s}=await this._callRefreshToken(t.refresh_token);return s?this._returnResult({data:{user:null,session:null},error:s}):r?this._returnResult({data:{user:r.user,session:r},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(n){if(K(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async _getSessionFromURL(t,n){try{if(!Je())throw new al("No browser detected.");if(t.error||t.error_description||t.error_code)throw new al(t.error_description||"Error in URL with unspecified error_description",{error:t.error||"unspecified_error",code:t.error_code||"unspecified_code"});switch(n){case"implicit":if(this.flowType==="pkce")throw new Cv("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new al("Not a valid implicit grant flow url.");break;default:}if(n==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!t.code)throw new Cv("No code detected.");const{data:g,error:y}=await this._exchangeCodeForSession(t.code);if(y)throw y;const k=new URL(window.location.href);return k.searchParams.delete("code"),window.history.replaceState(window.history.state,"",k.toString()),{data:{session:g.session,redirectType:null},error:null}}const{provider_token:a,provider_refresh_token:r,access_token:s,refresh_token:i,expires_in:o,expires_at:c,token_type:u}=t;if(!s||!o||!i||!u)throw new al("No session defined in URL");const d=Math.round(Date.now()/1e3),p=parseInt(o);let h=d+p;c&&(h=parseInt(c));const m=h-d;
394m*1e3<=Gr&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${m}s, should have been closer to ${p}s`);const w=h-p;d-w>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",w,h,d):d-w<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",w,h,d);const{data:f,error:x}=await this._getUser(s);if(x)throw x;const b={provider_token:a,provider_refresh_token:r,access_token:s,expires_in:p,expires_at:h,refresh_token:i,token_type:u,user:f.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:b,redirectType:t.type},error:null})}catch(a){if(K(a))return this._returnResult({data:{session:null,redirectType:null},error:a});throw a}}_isImplicitGrantCallback(t){return typeof this.detectSessionInUrl=="function"?this.detectSessionInUrl(new URL(window.location.href),t):!!(t.access_token||t.error_description)}async _isPKCECallback(t){const n=await Ha(this.storage,`${this.storageKey}-code-verifier`);return!!(t.code&&n)}async signOut(t={scope:"global"}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(t))}async _signOut({scope:t}={scope:"global"}){return await this._useSession(async n=>{var a;const{data:r,error:s}=n;if(s)return this._returnResult({error:s});const i=(a=r.session)===null||a===void 0?void 0:a.access_token;if(i){const{error:o}=await this.admin.signOut(i,t);if(o&&!(rN(o)&&(o.status===404||o.status===401||o.status===403)))return this._returnResult({error:o})}return t!=="others"&&(await this._removeSession(),await Ye(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({error:null})})}onAuthStateChange(t){const n=hN(),a={id:n,callback:t,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",n),this.stateChangeEmitters.delete(n)}};return this._debug("#onAuthStateChange()","registered callback with id",n),this.stateChangeEmitters.set(n,a),(async()=>(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(n)})))(),{data:{subscription:a}}}async _emitInitialSession(t){return await this._useSession(async n=>{var a,r;try{const{data:{session:s},error:i}=n;if(i)throw i;await((a=this.stateChangeEmitters.get(t))===null||a===void 0?void 0:a.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",t,"session",s)}catch(s){await((r=this.stateChangeEmitters.get(t))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",t,"error",s),console.error(s)}})}async resetPasswordForEmail(t,n={}){let a=null,r=null;this.flowType==="pkce"&&([a,r]=await Mr(this.storage,this.storageKey,!0));try{return await Y(this.fetch,"POST",`${this.url}/recover`,{body:{email:t,code_challenge:a,code_challenge_method:r,gotrue_meta_security:{captcha_token:n.captchaToken}},headers:this.headers,redirectTo:n.redirectTo})}catch(s){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(s))return this._returnResult({data:null,error:s});throw s}}async getUserIdentities(){var t;try{const{data:n,error:a}=await this.getUser();if(a)throw a;return this._returnResult({data:{identities:(t=n.user.identities)!==null&&t!==void 0?t:[]},error:null})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async linkIdentity(t){return"token"in t?this.linkIdentityIdToken(t):this.linkIdentityOAuth(t)}async linkIdentityOAuth(t){var n;try{const{data:a,error:r}=await this._useSession(async s=>{var i,o,c,u,d;const{data:p,error:h}=s;if(h)throw h;const m=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,t.provider,{redirectTo:(i=t.options)===null||i===void 0?void 0:i.redirectTo,scopes:(o=t.options)===null||o===void 0?void 0:o.scopes,queryParams:(c=t.options)===null||c===void 0?void 0:c.queryParams,skipBrowserRedirect:!0});return await Y(this.fetch,"GET",m,{headers:this.headers,jwt:(d=(u=p.session)===null||u===void 0?void 0:u.access_token)!==null&&d!==void 0?d:void 0})});if(r)throw r;return Je()&&!(!((n=t.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(a==null?void 0:a.url),this._returnResult({data:{provider:t.provider,url:a==null?void 0:a.url},error:null})}catch(a){if(K(a))return this._returnResult({data:{provider:t.provider,url:null},error:a});throw a}}async linkIdentityIdToken(t){return await this._useSession(async n=>{var a;try{const{error:r,data:{session:s}}=n;
394if(r)throw r;const{options:i,provider:o,token:c,access_token:u,nonce:d}=t,p=await Y(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(a=s==null?void 0:s.access_token)!==null&&a!==void 0?a:void 0,body:{provider:o,id_token:c,access_token:u,nonce:d,link_identity:!0,gotrue_meta_security:{captcha_token:i==null?void 0:i.captchaToken}},xform:Jt}),{data:h,error:m}=p;return m?this._returnResult({data:{user:null,session:null},error:m}):!h||!h.session||!h.user?this._returnResult({data:{user:null,session:null},error:new qr}):(h.session&&(await this._saveSession(h.session),await this._notifyAllSubscribers("USER_UPDATED",h.session)),this._returnResult({data:h,error:m}))}catch(r){if(await Ye(this.storage,`${this.storageKey}-code-verifier`),K(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}})}async unlinkIdentity(t){try{return await this._useSession(async n=>{var a,r;const{data:s,error:i}=n;if(i)throw i;return await Y(this.fetch,"DELETE",`${this.url}/user/identities/${t.identity_id}`,{headers:this.headers,jwt:(r=(a=s.session)===null||a===void 0?void 0:a.access_token)!==null&&r!==void 0?r:void 0})})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async _refreshAccessToken(t){const n=`#_refreshAccessToken(${t.substring(0,5)}...)`;this._debug(n,"begin");try{const a=Date.now();return await yN(async r=>(r>0&&await vN(200*Math.pow(2,r-1)),this._debug(n,"refreshing attempt",r),await Y(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:t},headers:this.headers,xform:Jt})),(r,s)=>{const i=200*Math.pow(2,r);return s&&od(s)&&Date.now()+i-a<Gr})}catch(a){if(this._debug(n,"error",a),K(a))return this._returnResult({data:{session:null,user:null},error:a});throw a}finally{this._debug(n,"end")}}_isValidSession(t){return typeof t=="object"&&t!==null&&"access_token"in t&&"refresh_token"in t&&"expires_at"in t}async _handleProviderSignIn(t,n){const a=await this._getUrlForProvider(`${this.url}/authorize`,t,{redirectTo:n.redirectTo,scopes:n.scopes,queryParams:n.queryParams});return this._debug("#_handleProviderSignIn()","provider",t,"options",n,"url",a),Je()&&!n.skipBrowserRedirect&&window.location.assign(a),{data:{provider:t,url:a},error:null}}async _recoverAndRefresh(){var t,n;const a="#_recoverAndRefresh()";this._debug(a,"begin");try{const r=await Ha(this.storage,this.storageKey);if(r&&this.userStorage){let i=await Ha(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!i&&(i={user:r.user},await Kr(this.userStorage,this.storageKey+"-user",i)),r.user=(t=i==null?void 0:i.user)!==null&&t!==void 0?t:cd()}else if(r&&!r.user&&!r.user){const i=await Ha(this.storage,this.storageKey+"-user");i&&(i!=null&&i.user)?(r.user=i.user,await Ye(this.storage,this.storageKey+"-user"),await Kr(this.storage,this.storageKey,r)):r.user=cd()}if(this._debug(a,"session from storage",r),!this._isValidSession(r)){this._debug(a,"session is not valid"),r!==null&&await this._removeSession();return}const s=((n=r.expires_at)!==null&&n!==void 0?n:1/0)*1e3-Date.now()<id;if(this._debug(a,`session has${s?"":" not"} expired with margin of ${id}s`),s){if(this.autoRefreshToken&&r.refresh_token){const{error:i}=await this._callRefreshToken(r.refresh_token);i&&(console.error(i),od(i)||(this._debug(a,"refresh failed with a non-retryable error, removing the session",i),await this._removeSession()))}}else if(r.user&&r.user.__isUserNotAvailableProxy===!0)try{const{data:i,error:o}=await this._getUser(r.access_token);!o&&(i!=null&&i.user)?(r.user=i.user,await this._saveSession(r),await this._notifyAllSubscribers("SIGNED_IN",r)):this._debug(a,"could not get user data, skipping SIGNED_IN notification")}catch(i){console.error("Error getting user data:",i),this._debug(a,"error getting user data, skipping SIGNED_IN notification",i)}else await this._notifyAllSubscribers("SIGNED_IN",r)}catch(r){this._debug(a,"error",r),console.error(r);return}finally{this._debug(a,"end")}}async _callRefreshToken(t){var n,a;if(!t)throw new kt;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const r=`#_callRefreshToken(${t.substring(0,5)}...)`;this._debug(r,"begin");try{this.refreshingDeferred=new Jc;const{data:s,error:i}=await this._refreshAccessToken(t);if(i)throw i;if(!s.session)throw new kt;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);const o={data:s.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(s){if(this._debug(r,"error",s),K(s)){const i={data:null,error:s};return od(s)||await this._removeSession(),(n=this.refreshingDeferred)===null||n===void 0||n.resolve(i),i}throw(a=this.refreshingDeferred)===null||a===void 0||a.reject(s),s}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(t,n,a=!0){const r=`#_notifyAllSubscribers(${t})`;this._debug(r,"begin",n,`broadcast = ${a}`);try{this.broadcastChannel&&a&&this.broadcastChannel.postMessage({event:t,session:n});const s=[],i=Array.from(this.stateChangeEmitters.values()).map(async o=>{try{await o.callback(t,n)}catch(c){s.push(c)}});if(await Promise.all(i),s.length>0){for(let o=0;o<s.length;o+=1)console.error(s[o]);throw s[0]}}finally{this._debug(r,"end")}}async _saveSession(t){this._debug("#_saveSession()",t),this.suppressGetSessionWarning=!0,await Ye(this.storage,`${this.storageKey}-code-verifier`);const n=Object.assign({},t),a=n.user&&n.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!a&&n.user&&await Kr(this.userStorage,this.storageKey+"-user",{user:n.user});const r=Object.assign({},n);delete r.user;const s=_v(r);await Kr(this.storage,this.storageKey,s)}else{const r=_v(n);await Kr(this.storage,this.storageKey,r)}}async _removeSession(){this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Ye(this.storage,this.storageKey),await Ye(this.storage,this.storageKey+"-code-verifier"),await Ye(this.storage,this.storageKey+"-user"),this.userStorage&&await Ye(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const t=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{t&&Je()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",t)}
394catch(n){console.error("removing visibilitychange callback failed",n)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const t=setInterval(()=>this._autoRefreshTokenTick(),Gr);this.autoRefreshTicker=t,t&&typeof t=="object"&&typeof t.unref=="function"?t.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(t);const n=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);this.autoRefreshTickTimeout=n,n&&typeof n=="object"&&typeof n.unref=="function"?n.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(n)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const t=this.autoRefreshTicker;this.autoRefreshTicker=null,t&&clearInterval(t);const n=this.autoRefreshTickTimeout;this.autoRefreshTickTimeout=null,n&&clearTimeout(n)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const t=Date.now();try{return await this._useSession(async n=>{const{data:{session:a}}=n;if(!a||!a.refresh_token||!a.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((a.expires_at*1e3-t)/Gr);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${Gr}ms, refresh threshold is ${Hp} ticks`),r<=Hp&&await this._callRefreshToken(a.refresh_token)})}catch(n){console.error("Auto refresh tick failed with error. This is likely a transient error.",n)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(t){if(t.isAcquireTimeout||t instanceof $0)this._debug("auto refresh token tick lock not available");else throw t}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Je()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>await this._onVisibilityChanged(!1),window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(t){console.error("_handleVisibilityChange",t)}}async _onVisibilityChanged(t){const n=`#_onVisibilityChanged(${t})`;this._debug(n,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),t||(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(n,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(t,n,a){const r=[`provider=${encodeURIComponent(n)}`];if(a!=null&&a.redirectTo&&r.push(`redirect_to=${encodeURIComponent(a.redirectTo)}`),a!=null&&a.scopes&&r.push(`scopes=${encodeURIComponent(a.scopes)}`),this.flowType==="pkce"){const[s,i]=await Mr(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(i)}`});r.push(o.toString())}if(a!=null&&a.queryParams){const s=new URLSearchParams(a.queryParams);r.push(s.toString())}return a!=null&&a.skipBrowserRedirect&&r.push(`skip_http_redirect=${a.skipBrowserRedirect}`),`${t}?${r.join("&")}`}async _unenroll(t){try{return await this._useSession(async n=>{var a;const{data:r,error:s}=n;return s?this._returnResult({data:null,error:s}):await Y(this.fetch,"DELETE",`${this.url}/factors/${t.factorId}`,{headers:this.headers,jwt:(a=r==null?void 0:r.session)===null||a===void 0?void 0:a.access_token})})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async _enroll(t){try{return await this._useSession(async n=>{var a,r;const{data:s,error:i}=n;if(i)return this._returnResult({data:null,error:i});const o=Object.assign({friendly_name:t.friendlyName,factor_type:t.factorType},t.factorType==="phone"?{phone:t.phone}:t.factorType==="totp"?{issuer:t.issuer}:{}),{data:c,error:u}=await Y(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(a=s==null?void 0:s.session)===null||a===void 0?void 0:a.access_token});return u?this._returnResult({data:null,error:u}):(t.factorType==="totp"&&c.type==="totp"&&(!((r=c==null?void 0:c.totp)===null||r===void 0)&&r.qr_code)&&(c.totp.qr_code=`data:image/svg+xml;utf-8,${c.totp.qr_code}`),this._returnResult({data:c,error:null}))})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async _verify(t){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async n=>{var a;const{data:r,error:s}=n;if(s)return this._returnResult({data:null,error:s});const i=Object.assign({challenge_id:t.challengeId},"webauthn"in t?{webauthn:Object.assign(Object.assign({},t.webauthn),{credential_response:t.webauthn.type==="create"?KN(t.webauthn.credential_response):YN(t.webauthn.credential_response)})}:{code:t.code}),{data:o,error:c}=await Y(this.fetch,"POST",`${this.url}/factors/${t.factorId}/verify`,{body:i,headers:this.headers,jwt:(a=r==null?void 0:r.session)===null||a===void 0?void 0:a.access_token});return c?this._returnResult({data:null,error:c}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),this._returnResult({data:o,error:c}))})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}})}async _challenge(t){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async n=>{var a;const{data:r,error:s}=n;if(s)return this._returnResult({data:null,error:s});const i=await Y(this.fetch,"POST",`${this.url}/factors/${t.factorId}/challenge`,{body:t,headers:this.headers,jwt:(a=r==null?void 0:r.session)===null||a===void 0?void 0:a.access_token});if(i.error)return i;const{data:o}=i;if(o.type!=="webauthn")return{data:o,error:null};switch(o.webauthn.type){case"create":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:HN(o.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:GN(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}})}async _challengeAndVerify(t){const{data:n,error:a}=await this._challenge({factorId:t.factorId});return a?this._returnResult({data:null,error:a}):await this._verify({factorId:t.factorId,challengeId:n.id,code:t.code})}async _listFactors(){var t;const{data:{user:n},error:a}=await this.getUser();if(a)return{data:null,error:a};const r={all:[],phone:[],totp:[],webauthn:[]};for(const s of(t=n==null?void 0:n.factors)!==null&&t!==void 0?t:[])r.all.push(s),s.status==="verified"&&r[s.factor_type].push(s);return{data:r,error:null}}async _getAuthenticatorAssuranceLevel(){var t,n;const{data:{session:a},error:r}
394=await this.getSession();if(r)return this._returnResult({data:null,error:r});if(!a)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:s}=ld(a.access_token);let i=null;s.aal&&(i=s.aal);let o=i;((n=(t=a.user.factors)===null||t===void 0?void 0:t.filter(d=>d.status==="verified"))!==null&&n!==void 0?n:[]).length>0&&(o="aal2");const u=s.amr||[];return{data:{currentLevel:i,nextLevel:o,currentAuthenticationMethods:u},error:null}}async _getAuthorizationDetails(t){try{return await this._useSession(async n=>{const{data:{session:a},error:r}=n;return r?this._returnResult({data:null,error:r}):a?await Y(this.fetch,"GET",`${this.url}/oauth/authorizations/${t}`,{headers:this.headers,jwt:a.access_token,xform:s=>({data:s,error:null})}):this._returnResult({data:null,error:new kt})})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async _approveAuthorization(t,n){try{return await this._useSession(async a=>{const{data:{session:r},error:s}=a;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new kt});const i=await Y(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"approve"},xform:o=>({data:o,error:null})});return i.data&&i.data.redirect_url&&Je()&&!(n!=null&&n.skipBrowserRedirect)&&window.location.assign(i.data.redirect_url),i})}catch(a){if(K(a))return this._returnResult({data:null,error:a});throw a}}async _denyAuthorization(t,n){try{return await this._useSession(async a=>{const{data:{session:r},error:s}=a;if(s)return this._returnResult({data:null,error:s});if(!r)return this._returnResult({data:null,error:new kt});const i=await Y(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"deny"},xform:o=>({data:o,error:null})});return i.data&&i.data.redirect_url&&Je()&&!(n!=null&&n.skipBrowserRedirect)&&window.location.assign(i.data.redirect_url),i})}catch(a){if(K(a))return this._returnResult({data:null,error:a});throw a}}async _listOAuthGrants(){try{return await this._useSession(async t=>{const{data:{session:n},error:a}=t;return a?this._returnResult({data:null,error:a}):n?await Y(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:n.access_token,xform:r=>({data:r,error:null})}):this._returnResult({data:null,error:new kt})})}catch(t){if(K(t))return this._returnResult({data:null,error:t});throw t}}async _revokeOAuthGrant(t){try{return await this._useSession(async n=>{const{data:{session:a},error:r}=n;return r?this._returnResult({data:null,error:r}):a?(await Y(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:a.access_token,query:{client_id:t.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new kt})})}catch(n){if(K(n))return this._returnResult({data:null,error:n});throw n}}async fetchJwk(t,n={keys:[]}){let a=n.keys.find(o=>o.kid===t);if(a)return a;const r=Date.now();if(a=this.jwks.keys.find(o=>o.kid===t),a&&this.jwks_cached_at+nN>r)return a;const{data:s,error:i}=await Y(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(i)throw i;return!s.keys||s.keys.length===0||(this.jwks=s,this.jwks_cached_at=r,a=s.keys.find(o=>o.kid===t),!a)?null:a}async getClaims(t,n={}){try{let a=t;if(!a){const{data:m,error:w}
394=await this.getSession();if(w||!m.session)return this._returnResult({data:null,error:w});a=m.session.access_token}const{header:r,payload:s,signature:i,raw:{header:o,payload:c}}=ld(a);n!=null&&n.allowExpired||AN(s.exp);const u=!r.alg||r.alg.startsWith("HS")||!r.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(r.kid,n!=null&&n.keys?{keys:n.keys}:n==null?void 0:n.jwks);if(!u){const{error:m}=await this.getUser(a);if(m)throw m;return{data:{claims:s,header:r,signature:i},error:null}}const d=EN(r.alg),p=await crypto.subtle.importKey("jwk",u,d,!0,["verify"]);if(!await crypto.subtle.verify(d,p,i,pN(`${o}.${c}`)))throw new Yp("Invalid JWT signature");return{data:{claims:s,header:r,signature:i},error:null}}catch(a){if(K(a))return this._returnResult({data:null,error:a});throw a}}}uo.nextInstanceID={};const rL=uo,sL="2.91.0";let vi="";typeof Deno<"u"?vi="deno":typeof document<"u"?vi="web":typeof navigator<"u"&&navigator.product==="ReactNative"?vi="react-native":vi="node";const iL={"X-Client-Info":`supabase-js-${vi}/${sL}`},oL={headers:iL},lL={schema:"public"},cL={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},uL={};function po(e){"@babel/helpers - typeof";return po=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},po(e)}function dL(e,t){if(po(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t||"default");if(po(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pL(e){var t=dL(e,"string");return po(t)=="symbol"?t:t+""}function mL(e,t,n){return(t=pL(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,a)}return n}function Le(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?qv(Object(n),!0).forEach(function(a){mL(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qv(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}const hL=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),fL=()=>Headers,gL=(e,t,n)=>{const a=hL(n),r=fL();return async(s,i)=>{var o;const c=(o=await t())!==null&&o!==void 0?o:e;let u=new r(i==null?void 0:i.headers);return u.has("apikey")||u.set("apikey",e),u.has("Authorization")||u.set("Authorization",`Bearer ${c}`),a(s,Le(Le({},i),{},{headers:u}))}};function vL(e){return e.endsWith("/")?e:e+"/"}function yL(e,t){var n,a;const{db:r,auth:s,realtime:i,global:o}=e,{db:c,auth:u,realtime:d,global:p}=t,h={db:Le(Le({},c),r),auth:Le(Le({},u),s),realtime:Le(Le({},d),i),storage:{},global:Le(Le(Le({},p),o),{},{headers:Le(Le({},(n=p==null?void 0:p.headers)!==null&&n!==void 0?n:{}),(a=o==null?void 0:o.headers)!==null&&a!==void 0?a:{})}),accessToken:async()=>""};return e.accessToken?h.accessToken=e.accessToken:delete h.accessToken,h}function bL(e){const t=e==null?void 0:e.trim();if(!t)throw new Error("supabaseUrl is required.");if(!t.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(vL(t))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var wL=class extends rL{constructor(e){super(e)}},xL=class{constructor(e,t,n){var a,r;this.supabaseUrl=e,this.supabaseKey=t;const s=bL(e);if(!t)throw new Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",s),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",s),this.storageUrl=new URL("storage/v1",s),this.functionsUrl=new URL("functions/v1",s);const i=`sb-${s.hostname.split(".")[0]}-auth-token`,o={db:lL,realtime:uL,auth:Le(Le({},cL),{},{storageKey:i}),global:oL},c=yL(n??{},o);if(this.storageKey=(a=c.auth.storageKey)!==null&&a!==void 0?a:"",this.headers=(r=c.global.headers)!==null&&r!==void 0?r:{},c.accessToken)this.accessToken=c.accessToken,this.auth=new Proxy({},{get:(d,p)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(p)} is not possible`)}});else{var u;this.auth=this._initSupabaseAuthClient((u=c.auth)!==null&&u!==void 0?u:{},this.headers,c.global.fetch)}this.fetch=gL(t,this._getAccessToken.bind(this),c.global.fetch),this.realtime=this._initRealtimeClient(Le({headers:this.headers,accessToken:this._getAccessToken.bind(this)},c.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(d=>this.realtime.setAuth(d)).catch(d=>console.warn("Failed to set initial Realtime auth token:",d)),this.rest=new eO(new URL("rest/v1",s).href,{headers:this.headers,schema:c.db.schema,fetch:this.fetch}),this.storage=new QO(this.storageUrl.href,this.headers,this.fetch,n==null?void 0:n.storage),c.accessToken||this._listenForAuthEvents()}get functions(){return new Y2(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,t={},n={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,t,n)}
394channel(e,t={config:{}}){return this.realtime.channel(e,t)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var e=this,t,n;if(e.accessToken)return await e.accessToken();const{data:a}=await e.auth.getSession();return(t=(n=a.session)===null||n===void 0?void 0:n.access_token)!==null&&t!==void 0?t:e.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:n,storage:a,userStorage:r,storageKey:s,flowType:i,lock:o,debug:c,throwOnError:u},d,p){const h={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new wL({url:this.authUrl.href,headers:Le(Le({},h),d),storageKey:s,autoRefreshToken:e,persistSession:t,detectSessionInUrl:n,storage:a,userStorage:r,flowType:i,lock:o,debug:c,throwOnError:u,fetch:p,hasCustomAuthorizationHeader:Object.keys(this.headers).some(m=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new vO(this.realtimeUrl.href,Le(Le({},e),{},{params:Le(Le({},{apikey:this.supabaseKey}),e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t==null?void 0:t.access_token)})}_handleTokenChanged(e,t,n){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==n?(this.changedAccessToken=n,this.realtime.setAuth(n)):e==="SIGNED_OUT"&&(this.realtime.setAuth(),t=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}};const kL=(e,t,n)=>new xL(e,t,n);function SL(){if(typeof window<"u")return!1;const e=globalThis.process;if(!e)return!1;const t=e.version;if(t==null)return!1;const n=t.match(/^v(\d+)\./);return n?parseInt(n[1],10)<=18:!1}SL()&&console.warn("⚠️  Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");function PL(){var x,b;if(typeof window>"u")return;const e=location.hostname,n=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(g=>e===g||e.endsWith("."+g)),a="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",r=n?((x=e.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+a+")(?:-dev)?(?=\\.|$)","i")))==null?void 0:x[1])??((b=e.match(new RegExp("^("+a+")(?=[.-])","i")))==null?void 0:b[1]):void 0,s=window.parent&&window.parent!==window;if(!r||!s)return localStorage;const i=e.endsWith(".lovableproject-dev.com")||e.endsWith(".gpt-eng.com"),o=i?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,c=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),u=c&&o.test(c)?[c]:i?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],d="lovable-preview-auth:result",p=2e3,h=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),m=(g,y,k)=>new Promise(P=>{const E=h();let S=!1,A;const T=z=>{S||(S=!0,clearTimeout(A),window.removeEventListener("message",j),P(z))},j=z=>{if(u.indexOf(z.origin)<0)return;const _=z.data;_&&_.type===d&&_.requestId===E&&T(_)};window.addEventListener("message",j);const D={type:g,requestId:E,projectId:r,key:y};k!==void 0&&(D.value=k);for(const z of u)window.parent.postMessage(D,z);A=setTimeout(()=>T(null),p)});let w=!0;const f=250;return{getItem:async g=>{let y=await m("lovable-preview-auth:get",g);return!y&&w&&(await new Promise(k=>setTimeout(k,f)),y=await m("lovable-preview-auth:get",g)),w=!1,y&&y.ok&&typeof y.value=="string"?y.value===""?(localStorage.removeItem(g),null):y.value:localStorage.getItem(g)},setItem:(g,y)=>(localStorage.setItem(g,y),m("lovable-preview-auth:set",g,y).then(()=>{})),removeItem:g=>(localStorage.removeItem(g),m("lovable-preview-auth:remove",g).then(()=>{}))}}const AL="https://jjpinfflozrxxhpzumky.supabase.co",EL="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpqcGluZmZsb3pyeHhocHp1bWt5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3Njg5Njc4MTYsImV4cCI6MjA4NDU0MzgxNn0.S_61DN4qjnKDOAJa8j_aa_5jLdgANJZibdjuoIBllWE",Oa=kL(AL,EL,{auth:{storage:PL(),persistSession:!0,autoRefreshToken:!0}}),kr=()=>{const{t:e}=ft(),[t,n]=v.useState(!1),[a,r]=v.useState(!1),[s,i]=v.useState(!1);v.useEffect(()=>{const{data:{subscription:c}}=Oa.auth.onAuthStateChange((u,d)=>{i(!!d)});return Oa.auth.getSession().then(({data:{session:u}})=>{i(!!u)}
394),()=>c.unsubscribe()},[]),v.useEffect(()=>{const c=()=>{n(window.scrollY>20)};return window.addEventListener("scroll",c),()=>window.removeEventListener("scroll",c)},[]);const o=[{href:"/templates",label:e("landing.nav.templates"),isRoute:!0},{href:"/pricing",label:e("nav.pricing"),isRoute:!0},{href:"/visa-business-plan",label:"Visa Plans",isRoute:!0},{href:"/insights",label:e("landing.nav.blog"),isRoute:!0},{href:"/contacts",label:e("landing.nav.contact"),isRoute:!0}];return l.jsx("nav",{className:`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${t?"bg-background/95 backdrop-blur-lg shadow-sm border-b py-3":"bg-background/80 backdrop-blur-sm py-5"}`,children:l.jsxs("div",{className:"section-container",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs(ee,{to:"/",className:"flex items-center gap-2 group",children:[l.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary flex items-center justify-center shadow-md group-hover:shadow-lg transition-shadow",children:l.jsx(kn,{className:"w-5 h-5 text-primary-foreground"})}),l.jsxs("span",{className:"text-xl font-bold font-display text-foreground",children:["BizPlanner",l.jsx("span",{className:"text-primary",children:".AI"})]})]}),l.jsx("div",{className:"hidden md:flex items-center gap-8",children:o.map((c,u)=>l.jsx(ee,{to:c.href,className:"text-sm font-medium text-muted-foreground hover:text-primary transition-colors",children:c.label},c.href+u))}),l.jsxs("div",{className:"hidden md:flex items-center gap-3",children:[l.jsx(gv,{}),s?l.jsx(ee,{to:"/dashboard",children:l.jsxs(be,{size:"sm",className:"bg-primary hover:bg-primary/90 gap-2",children:[l.jsx(Ql,{className:"w-4 h-4"}),e("landing.nav.dashboard")]})}):l.jsxs(l.Fragment,{children:[l.jsx(ee,{to:"/auth",children:l.jsx(be,{variant:"ghost",size:"sm",children:e("landing.nav.login")})}),l.jsx(ee,{to:"/get-started",children:l.jsx(be,{size:"sm",className:"bg-primary hover:bg-primary/90",children:e("landing.nav.getStarted")})})]})]}),l.jsxs("div",{className:"md:hidden flex items-center gap-2",children:[l.jsx(gv,{}),l.jsx("button",{className:"p-2",type:"button","aria-label":a?"Close menu":"Open menu","aria-expanded":a,onClick:()=>r(!a),children:a?l.jsx(Qi,{className:"w-6 h-6 text-foreground"}):l.jsx(mE,{className:"w-6 h-6 text-foreground"})})]})]}),a&&l.jsx("div",{className:"md:hidden absolute top-full left-0 right-0 bg-background border-b shadow-lg animate-fade-in",children:l.jsxs("div",{className:"section-container py-6 space-y-4",children:[o.map((c,u)=>l.jsx(ee,{to:c.href,className:"block text-foreground hover:text-primary transition-colors py-2",onClick:()=>r(!1),children:c.label},c.href+u)),l.jsx("div",{className:"flex flex-col gap-3 pt-4 border-t",children:s?l.jsx(ee,{to:"/dashboard",onClick:()=>r(!1),children:l.jsxs(be,{className:"w-full bg-primary hover:bg-primary/90 gap-2",children:[l.jsx(Ql,{className:"w-4 h-4"}),e("landing.nav.dashboard")]})}):l.jsxs(l.Fragment,{children:[l.jsx(ee,{to:"/auth",onClick:()=>r(!1),children:l.jsx(be,{variant:"outline",className:"w-full",children:e("landing.nav.login")})}),l.jsx(ee,{to:"/get-started",onClick:()=>r(!1),children:l.jsx(be,{className:"w-full bg-primary hover:bg-primary/90",children:e("landing.nav.getStarted")})})]})})]})})]})})},CL="/assets/hero-dashboard-CPcwI-7U.jpg",TL="/assets/industries-social-proof-BPPMz0Xs.jpg",jL="/assets/badge-producthunt-uyXGRrud.jpg",IL="/assets/badge-taaft-CT-2z9V8.png",RL="/assets/badge-toolify-B4J3jbpm.jpg",_L="/assets/badge-whattheai-Boy8_rAb.jpg",OL="/assets/badge-aitoolnet-swu1QarL.jpg",NL="/assets/badge-aitoolhunt-BgH7T7Ak.jpg",LL=[{icon:kn,key:"businessPlan"},{icon:eh,key:"marketingPlan"},{icon:th,key:"targetAudience"},{icon:Xm,key:"competitors"},{icon:Ji,key:"swot"},{icon:rg,key:"financials"},{icon:Ji,key:"industryTrends"},{icon:rg,key:"industryStats"},{icon:lx,key:"regulations"},{icon:sx,key:"nextSteps"}],zL=[{src:jL,alt:"Product Hunt #4 Product of the Day",href:"https://www.producthunt.com/posts/bizplannerai"},{src:IL,alt:"There is an AI for that",href:"https://theresanaiforthat.com/ai/bizplanner-ai/"},{src:RL,alt:"Featured on Toolify.ai",href:"https://www.toolify.ai/tool/bizplannerai"},{src:_L,alt:"Featured on WhatTheAI",href:"https://whattheai.tech/tools/bizplannerai"},{src:OL,alt:"Featured on AITOOLNET",href:"https://www.aitoolnet.com/bizplannerai"},{src:NL,alt:"Featured on AI Tool Hunt",href:"https://aitoolhunt.com/tool/bizplanner.ai"}],BL=()=>{const{t:e}=ft(),[t,n]=v.useState(!1);return v.useEffect(()=>{Oa.auth.getSession().then(({data:{session:r}})=>n(!!r));const{data:{subscription:a}}=Oa.auth.onAuthStateChange((r,s)=>n(!!s));return()=>a.unsubscribe()},[]),l.jsxs("section",{className:"relative bg-background overflow-hidden",children:[l.jsx("div",{className:"absolute inset-0 bg-mesh opacity-40"}),l.jsx("div",{className:"absolute top-20 right-10 w-72 h-72 bg-primary/8 rounded-full blur-3xl"}),l.jsx("div",{className:"absolute bottom-20 left-10 w-96 h-96 bg-accent/8 rounded-full blur-3xl"}),l.jsx("div",{className:"relative section-container pt-28 pb-12 lg:pt-36 lg:pb-16",children:l.jsxs("div",{className:"grid lg:grid-cols-2 gap-12 lg:gap-16 items-center",children:[l.jsxs("div",{className:"animate-fade-in",children:[l.jsxs("h1",{className:"text-4xl sm:text-5xl lg:text-[3.5rem] font-bold font-display leading-[1.1] mb-4",children:[l.jsxs("span",{className:"text-foreground",children:[e("landing.hero.mainTitle")," "]}),l.jsx("span",{className:"text-gradient",children:e("landing.hero.mainTitleHighlight")}),l.jsxs("span",{className:"text-foreground",children:[" ",e("landing.hero.mainTitleEnd")]})]}),l.jsx("h2",{className:"text-xl sm:text-2xl text-muted-foreground font-medium mb-6",children:e("landing.hero.h2")}),l.jsx("p",{className:"text-base text-muted-foreground max-w-xl mb-8 leading-relaxed",children:e("landing.hero.description")}),l.jsx("div",{className:"grid grid-cols-2 gap-x-6 gap-y-2.5 mb-8",children:LL.map(a=>{const r=a.icon;return l.jsxs("div",{className:"flex items-center gap-2.5 text-sm text-foreground",children:[l.jsx(r,{className:"w-4 h-4 text-primary flex-shrink-0"}),l.jsx("span",{children:e(`landing.hero.features.${a.key}`)})]},a.key)})}),l.jsxs("div",{className:"flex flex-wrap gap-4",children:[l.jsx(ee,{to:t?"/dashboard":"/get-started",children:l.jsx(be,{size:"xl",className:"group bg-primary hover:bg-primary/90 text-primary-foreground shadow-lg hover:shadow-xl transition-all text-lg px-8",children:t?l.jsxs(l.Fragment,{children:[l.jsx(Ql,{className:"w-5 h-5 mr-1"}),e("landing.hero.dashboardButton")]}):l.jsxs(l.Fragment,{children:[e("landing.hero.ctaButton"),l.jsx(ot,{className:"w-5 h-5 group-hover:translate-x-1 transition-transform"})]})})}),l.jsx(ee,{to:"/visa-business-plan",children:l.jsxs(be,{size:"xl",variant:"outline",className:"group text-lg px-8 border-primary/30 hover:bg-primary/5",children:[l.jsx(lx,{className:"w-5 h-5 mr-1 text-primary"}),"Visa Business Plan",l.jsx(ot,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform"})]})})]}),l.jsxs("div",{className:"flex items-center gap-3 mt-8",children:[l.jsx("img",{src:TL,alt:e("landing.hero.socialText"),className:"w-24 h-10 object-cover rounded-full",loading:"lazy"}),l.jsxs("div",{className:"flex flex-col",children:[l.jsx("span",{className:"text-foreground font-bold text-lg",children:e("landing.hero.socialCount")}),l.jsx("span",{className:"text-muted-foreground text-sm",children:e("landing.hero.socialText")})]}),l.jsx("div",{className:"flex gap-0.5 ml-2",children:[1,2,3,4,5].map(a=>l.jsx(cx,{className:"w-4 h-4 fill-accent text-accent"},a))})]})]}),l.jsx("div",{className:"animate-fade-in",style:{animationDelay:"200ms"},children:l.jsxs("div",{className:"relative",children:[l.jsx("div",{className:"rounded-2xl overflow-hidden shadow-2xl border bg-card",children:l.jsx("img",{src:CL,alt:"BizPlanner AI dashboard - AI business plan generator",className:"w-full h-auto",width:"1400",height:"1285",loading:"eager",fetchpriority:"high",decoding:"async",sizes:"(max-width: 1024px) 100vw, 50vw"})}),l.jsx("div",{className:"absolute -inset-4 bg-primary/5 rounded-3xl blur-2xl -z-10"})]})})]})}),l.jsx("div",{className:"relative border-t border-b bg-muted/30 py-6",children:l.jsx("div",{className:"section-container",children:l.jsx("div",{className:"flex flex-wrap items-center justify-center gap-6 lg:gap-10",children:zL.map(a=>l.jsx("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"opacity-70 hover:opacity-100 transition-opacity",children:l.jsx("img",{src:a.src,alt:a.alt,className:"h-8 lg:h-10 w-auto object-contain",loading:"lazy"})},a.alt))})})})]})},DL="/assets/with-bizplanner-B5xu1YBt.jpg",qL="/assets/without-bizplanner-CLkTJDm8.jpg",ML=["step1","step2","step3","step4"],FL=()=>{const{t:e}=ft(),t=e("landing.comparison.pains",{returnObjects:!0});return l.jsxs("section",{className:"py-24 bg-background relative overflow-hidden",children:[l.jsx("div",{className:"absolute inset-0 bg-mesh opacity-20"}),l.jsxs("div",{className:"section-container relative",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-primary text-sm font-semibold mb-4",children:e("landing.comparison.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display mb-6",children:[e("landing.comparison.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.comparison.titleHighlight")]})]}),l.jsx("p",{className:"text-lg text-muted-foreground",children:e("landing.comparison.subtitle")})]}),l.jsxs("div",{className:"grid lg:grid-cols-2 gap-8 max-w-6xl mx-auto",children:[l.jsxs("div",{className:"bg-card rounded-2xl border shadow-lg overflow-hidden",children:[l.jsxs("div",{className:"p-6 border-b",children:[l.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[l.jsx("div",{className:"w-6 h-6 rounded-full bg-primary flex items-center justify-center",children:l.jsx(Jl,{className:"w-4 h-4 text-primary-foreground"})}),l.jsx("span",{className:"text-lg font-semibold text-foreground",children:e("landing.comparison.withTitle")})]}),l.jsx("img",{src:DL,alt:e("landing.comparison.withTitle"),className:"rounded-xl w-full object-cover shadow-sm",loading:"lazy"})]}),l.jsx("div",{className:"p-6 space-y-4",children:ML.map((n,a)=>l.jsxs("div",{className:"flex gap-4",children:[l.jsx("div",{className:"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center flex-shrink-0 mt-0.5",children:l.jsx("span",{className:"text-primary font-bold text-sm",children:a+1})}),l.jsxs("div",{children:[l.jsxs("p",{className:"font-semibold text-foreground",children:[e(`landing.comparison.${n}.title`),e(`landing.comparison.${n}.time`,"")&&l.jsxs("span",{className:"text-muted-foreground font-normal text-sm ml-2",children:["(",e(`landing.comparison.${n}.time`),")"]})]}),l.jsx("p",{className:"text-muted-foreground text-sm",children:e(`landing.comparison.${n}.desc`)})]})]},n))})]}),l.jsxs("div",{className:"bg-muted/30 rounded-2xl border shadow-lg overflow-hidden",children:[l.jsxs("div",{className:"p-6 border-b",children:[l.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[l.jsx("div",{className:"w-6 h-6 rounded-full bg-destructive flex items-center justify-center",children:l.jsx(Qi,{className:"w-4 h-4 text-destructive-foreground"})}),l.jsx("span",{className:"text-lg font-semibold text-foreground",children:e("landing.comparison.withoutTitle")})]}),l.jsx("img",{src:qL,alt:e("landing.comparison.withoutTitle"),className:"rounded-xl w-full object-cover shadow-sm",loading:"lazy"})]}),l.jsx("div",{className:"p-6",children:l.jsx("ul",{className:"space-y-3",children:Array.isArray(t)&&t.map((n,a)=>l.jsxs("li",{className:"flex items-start gap-3 text-muted-foreground",children:[l.jsx(Qi,{className:"w-4 h-4 text-destructive flex-shrink-0 mt-1"}),l.jsx("span",{className:"text-sm",children:n})]},a))})})]})]}),l.jsx("div",{className:"text-center mt-12",children:l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"text-lg px-10 bg-primary hover:bg-primary/90",children:[e("landing.comparison.ctaButton")," ",l.jsx(ot,{className:"w-5 h-5 ml-1"})]})})}),l.jsxs("div",{className:"max-w-3xl mx-auto mt-16 bg-card rounded-2xl border p-8 relative",children:[l.jsx(ox,{className:"w-10 h-10 text-primary/10 absolute top-6 right-6"}),l.jsxs("p",{className:"text-foreground leading-relaxed italic mb-4",children:['"',e("landing.comparison.testimonialText"),'"']}),l.jsx("p",{className:"text-muted-foreground text-sm font-medium",children:e("landing.comparison.testimonialAuthor")})]})]})]})},UL="/assets/feature-ai-generator-C_csLBGN.jpg",$L="/assets/feature-target-audience-Dqe5_tRF.jpg",WL="/assets/feature-competitors-BM5UG3jd.jpg",VL="/assets/feature-financials-Cp_ULSLU.jpg",HL="/assets/feature-industry-trends-D2cO2tcB.jpg",GL="/assets/feature-industry-stats-C7rtnwAr.jpg",KL="/assets/feature-regulations-BVUUuD3D.jpg",YL="/assets/feature-next-steps-CJ8yOYIW.jpg",JL="/assets/feature-swot-CyZSYWAq.jpg",QL=[{key:"aiGenerator",image:UL},{key:"targetAudience",image:$L},{key:"competitors",image:WL},{key:"financials",image:VL},{key:"industryTrends",image:HL},{key:"industryStats",image:GL},{key:"regulations",image:KL},{key:"nextSteps",image:YL},{key:"swot",image:JL}],XL=["regenerate","editing","export"],ZL=()=>{const{t:e}=ft();return l.jsxs("section",{id:"features",className:"py-24 bg-secondary/30 relative overflow-hidden",children:[l.jsx("div",{className:"absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-border to-transparent"}),l.jsxs("div",{className:"section-container relative",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-primary text-sm font-semibold mb-4",children:e("landing.features.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display mb-6",children:[e("landing.features.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.features.titleHighlight")]})]}),l.jsx("p",{className:"text-lg text-muted-foreground",children:e("landing.features.subtitle")})]}),l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:QL.map((t,n)=>l.jsxs("div",{className:"bg-card rounded-2xl border shadow-sm hover:shadow-lg transition-all duration-300 overflow-hidden group",style:{animationDelay:`${n*50}ms`},children:[l.jsx("div",{className:"overflow-hidden",children:l.jsx("img",{src:t.image,alt:e(`landing.features.items.${t.key}.title`),className:"w-full h-48 object-cover group-hover:scale-105 transition-transform duration-500",loading:"lazy"})}),l.jsxs("div",{className:"p-5",children:[l.jsx("h3",{className:"text-base font-semibold font-display mb-2 text-card-foreground",children:e(`landing.features.items.${t.key}.title`)}),l.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:e(`landing.features.items.${t.key}.description`)})]})]},t.key))}),l.jsx("div",{className:"grid md:grid-cols-3 gap-6 mb-12",children:XL.map(t=>l.jsxs("div",{className:"bg-card rounded-2xl border p-6 shadow-sm",children:[l.jsx("h3",{className:"text-base font-semibold font-display mb-2 text-card-foreground",children:e(`landing.features.textItems.${t}.title`)}),l.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:e(`landing.features.textItems.${t}.description`)})]},t))}),l.jsx("div",{className:"text-center",children:l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"text-lg px-10 bg-primary hover:bg-primary/90",children:[e("landing.features.ctaButton")," ",l.jsx(ot,{className:"w-5 h-5 ml-1"})]})})})]})]})},ez="/assets/fiverr-comparison-BxGZqsS_.jpg",tz=()=>{const{t:e}=ft(),t=e("landing.pricing.features",{returnObjects:!0});return l.jsxs("section",{id:"pricing",className:"py-24 bg-background relative overflow-hidden",children:[l.jsx("div",{className:"absolute inset-0 bg-mesh opacity-30"}),l.jsxs("div",{className:"section-container relative",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-primary text-sm font-semibold mb-4 uppercase tracking-wide",children:e("landing.pricing.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bo
394ld font-display mb-6",children:[e("landing.pricing.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.pricing.titleHighlight")]})," ",e("landing.pricing.titleEnd")]})]}),l.jsxs("div",{className:"grid lg:grid-cols-2 gap-8 max-w-5xl mx-auto",children:[l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[l.jsx("div",{className:"w-6 h-6 rounded-full bg-primary flex items-center justify-center",children:l.jsx(Jl,{className:"w-4 h-4 text-primary-foreground"})}),l.jsx("span",{className:"text-lg font-semibold text-foreground",children:e("landing.pricing.withBizplanner")})]}),l.jsxs("div",{className:"bg-card rounded-2xl border shadow-lg p-8",children:[l.jsx("p",{className:"text-muted-foreground line-through text-lg mb-1",children:e("landing.pricing.originalPrice")}),l.jsx("p",{className:"text-5xl font-bold font-display text-foreground mb-2",children:e("landing.pricing.price")}),l.jsx("p",{className:"text-primary font-medium underline mb-8",children:e("landing.pricing.oneTimePayment")}),l.jsx("p",{className:"text-muted-foreground font-medium mb-4",children:e("landing.pricing.includesLabel")}),l.jsx("ul",{className:"space-y-3 mb-8",children:Array.isArray(t)&&t.map(n=>l.jsxs("li",{className:"flex items-start gap-3",children:[l.jsx(Jl,{className:"w-5 h-5 text-primary flex-shrink-0 mt-0.5"}),l.jsx("span",{className:"text-foreground",children:n})]},n))})]})]}),l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[l.jsx("div",{className:"w-6 h-6 rounded-full bg-destructive flex items-center justify-center",children:l.jsx("span",{className:"text-destructive-foreground text-xs font-bold",children:"✕"})}),l.jsx("span",{className:"text-lg font-semibold text-foreground",children:e("landing.pricing.consultant")})]}),l.jsxs("div",{className:"bg-muted/50 rounded-2xl border shadow-lg p-8 h-[calc(100%-3rem)]",children:[l.jsxs("p",{className:"text-foreground text-lg leading-relaxed mb-6",children:[e("landing.pricing.consultantText")," ",l.jsx("a",{href:"https://www.fiverr.com/search/gigs?query=business%20plan",target:"_blank",rel:"noopener noreferrer",className:"text-primary font-semibold underline hover:text-primary/80",children:e("landing.pricing.fiverrText")}),e("landing.pricing.consultantEnd")]}),l.jsx("img",{src:ez,alt:"Fiverr business plan pricing comparison",className:"rounded-xl w-full object-cover shadow-md",loading:"lazy"})]})]})]}),l.jsxs("div",{className:"text-center mt-12",children:[l.jsx(ee,{to:"/get-started",children:l.jsx(be,{size:"lg",className:"text-lg px-10 py-6 bg-primary hover:bg-primary/90",children:e("landing.pricing.ctaButton")})}),l.jsxs("p",{className:"text-muted-foreground mt-4",children:[e("landing.pricing.securePayment")," • ",e("cta.guarantee")]})]})]})]})},nz=[{name:"Joakim",role:'Owner, "Bälans Pilates Studio"',location:"UK",content:"I've spent many hours building a business plan for a proposal and your product will improve on the existing work. Next time I shall start with your plan and then tailor it to my needs which will save a lot of time!"},{name:"Moffat Dingalo",role:"R&D",location:"Botswana",content:"This plan is well articulated, the fact that I can edit it makes BizPlanner to be much better than option, also the customer service interaction is worth an applaud."},{name:"Jay McGhee",role:"Bar Side",location:"USA",content:"What a great program. It really came up with so in-depth information and gives a great starting point. With just a few information inputs and some pictures this will be fantastic business plan. Very easy to use and very quick!"},{name:"Tri Utomo",role:"Trivenly",location:"Indonesia",content:"At first, I thought this tool will be just like ChatGPT result. But then, it surprise me. The Information is very complete and almost 100% correct. The fact that I also can edit it directly through the web is very good."},{name:"Brandon Towner",role:"CEO, Faver",location:"USA",content:"Just used your bizplanner! Nice job! Great tool. Tons of value for $10."},{name:"Golden Moreme",role:"Director of Poultry farm",location:"South Africa",content:"This is just perfect."},{name:"Yubilet Reyes",role:'CEO, "SERVIS SEGUROS"',location:"Dominican Republic",content:"Me salvo la vida, es mas de lo que pensé. Lo pague pero tenia la duda de que funcionara pero es super completo."},{name:"Sheila Bolaños Mendoza",role:"Bhakti Yoga Studio",location:"Costa Rica",content:"Nos dio una guia integral para fortalecer y estructurar nuestro plan de negocios."},{name:"David Rollon Muñoz",role:"Fundación Altem",location:"Spain",content:"Simplemente espectacular, felicidades."}],az=()=>{const{t:e}=ft();return l.jsx("section",{id:"testimonials",className:"py-24 bg-background relative",children:l.jsxs("div",{className:"section-container",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-accent/10 text-accent text-sm font-semibold mb-4",children:e("landing.testimonials.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display mb-6",children:[e("landing.testimonials.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.testimonials.titleHighlight")]})]})]}),l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto",children:nz.map(t=>l.jsxs("div",{className:"bg-card rounded-2xl p-6 shadow-sm border hover:shadow-lg transition-all duration-300 relative",children:[l.jsx(ox,{className:"w-8 h-8 text-primary/10 absolute top-5 right-5"}),l.jsx("div",{className:"flex gap-0.5 mb-3",children:[1,2,3,4,5].map(n=>l.jsx(cx,{className:"w-4 h-4 fill-accent text-accent"},n))}),l.jsxs("p",{className:"text-sm text-card-foreground leading-relaxed mb-4",children:['"',t.content,'"']}),l.jsxs("div",{children:[l.jsx("div",{className:"font-semibold text-sm text-card-foreground",children:t.name}),l.jsxs("div",{className:"text-xs text-muted-foreground",children:[t.role," • ",t.location]})]})]},t.name))}),l.jsx("p",{className:"text-center text-muted-foreground mt-10",dangerouslySetInnerHTML:{__html:e("landing.testimonials.bottomText")}}),l.jsx("div",{className:"flex items-center justify-center gap-4 mt-6",children:l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"bg-primary hover:bg-primary/90",children:[e("landing.testimonials.ctaButton")," ",l.jsx(ot,{className:"w-5 h-5 ml-1"})]})})})]})})},rz=()=>{const{t:e}=ft(),t=e("landing.toc.sections",{returnObjects:!0});return l.jsxs("section",{className:"py-24 bg-background relative overflow-hidden",children:[l.jsx("div",{className:"absolute inset-0 bg-mesh opacity-20"}),l.jsxs("div",{className:"section-container relative",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-accent/10 text-accent text-sm font-semibold mb-4",children:e("landing.toc.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display mb-6",children:[e("landing.toc.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.toc.titleHighlight")]})]}),l.jsx("p",{className:"text-lg text-muted-foreground",children:e("landing.toc.subtitle")})]}
394),l.jsx("div",{className:"max-w-3xl mx-auto space-y-3",children:Array.isArray(t)&&t.map((n,a)=>l.jsx("div",{className:"bg-card rounded-xl border p-5 hover:shadow-md transition-all duration-200 group",children:l.jsxs("div",{className:"flex items-start gap-4",children:[l.jsx("div",{className:"w-8 h-8 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0 mt-0.5 group-hover:bg-primary/20 transition-colors",children:l.jsx("span",{className:"text-primary font-bold text-sm",children:a+1})}),l.jsxs("div",{children:[l.jsx("h3",{className:"font-semibold text-foreground mb-1",children:n.title}),l.jsx("p",{className:"text-sm text-muted-foreground",children:n.description})]})]})},a))}),l.jsx("p",{className:"text-center text-sm text-muted-foreground mt-8 max-w-2xl mx-auto italic",children:e("landing.toc.note")}),l.jsx("div",{className:"text-center mt-8",children:l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"bg-primary hover:bg-primary/90",children:[e("landing.toc.cta")," ",l.jsx(ot,{className:"w-5 h-5 ml-1"})]})})})]})]})},sz=["box-truck","airbnb","laundromat","hotel","hostel","personal-trainer","vending-machine","trucking","daycare","coffee-shop","family-entertainment-center","junk-removal","real-estate-development","music-studio","art-gallery","poultry-farm","indoor-golf","pharmacy","goat-farm","rv-park","lawn-care","juice-bar","dog-grooming","car-rental","event-management","wine-bar","staffing-agency","marketing-agency","convenience-store","moving-company"],Mv=e=>e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),iz=()=>{const{t:e}=ft();return l.jsx("section",{className:"py-24 bg-secondary/30 relative overflow-hidden",children:l.jsxs("div",{className:"section-container",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-primary/10 text-primary text-sm font-semibold mb-4",children:e("landing.templatesShowcase.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display mb-6",children:[e("landing.templatesShowcase.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.templatesShowcase.titleHighlight")]})]}),l.jsx("p",{className:"text-lg text-muted-foreground",children:e("landing.templatesShowcase.subtitle")})]}),l.jsxs("div",{className:"relative",children:[l.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4 max-h-[600px] overflow-hidden relative",children:sz.map(t=>l.jsxs(ee,{to:`/templates/${t}`,className:"group bg-card rounded-xl border overflow-hidden shadow-sm hover:shadow-lg transition-all duration-300",children:[l.jsx("div",{className:"overflow-hidden",children:l.jsx("img",{src:`https://static.bizplanner.ai/templates/${t}/thumb.jpg`,alt:`${Mv(t)} ${e("landing.templatesShowcase.planSuffix")}`,className:"w-full h-32 object-cover group-hover:scale-105 transition-transform duration-500",loading:"lazy"})}),l.jsx("div",{className:"p-3",children:l.jsxs("p",{className:"text-xs font-medium text-foreground leading-tight",children:[Mv(t)," ",e("landing.templatesShowcase.planSuffix")]})})]},t))}),l.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-secondary/90 to-transparent pointer-events-none"})]}),l.jsx("div",{className:"text-center mt-8",children:l.jsx(ee,{to:"/templates",children:l.jsxs(be,{variant:"outline",size:"lg",className:"gap-2",children:[e("landing.templatesShowcase.cta"),l.jsx(ot,{className:"w-4 h-4"})]})})})]})})},oz=[{title:"Introducing Visa Business Plans — AI-Powered Plans for Immigration Success",date:"Apr 10, 2026",excerpt:"BizPlanner AI now generates USCIS-compliant business plans for L-1A, L-1B, E-2, EB-1C, EB-2 NIW, and O-1 visa petitions.",thumb:"",slug:"visa-business-plan-launch"},{title:"BizPlanner AI Just Got a Major Upgrade — Here's What's New",date:"Feb 24, 2026",excerpt:"From a brand-new document editor to smarter AI generation, here's everything that's changed on BizPlanner AI.",thumb:"",slug:"platform-upgrade-2026"},{title:"Introducing Industry Pulse: Real-Time Market Insights",date:"Apr 15, 2025",excerpt:"When you're starting a business, the world around your idea matters just as much as the idea itself.",thumb:"https://static.bizplanner.ai/blog/industry-pulse/thumb.jpg",slug:"industry-pulse"},{title:"How Long Does It Take to Write a Business Plan",date:"Sep 15, 2024",excerpt:"Learn how long writing a business plan takes and how our AI saves time by providing a customizable plan.",thumb:"https://static.bizplanner.ai/blog/how-long-does-it-take-to-write-a-business-plan/thumb.jpg",slug:"how-long-does-it-take-to-write-a-business-plan"}],lz=()=>{const{t:e}=ft();return l.jsx("section",{className:"py-24 bg-background relative",children:l.jsxs("div",{className:"section-container",children:[l.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-12",children:[l.jsx("span",{className:"inline-block px-4 py-1.5 rounded-full bg-accent/10 text-accent text-sm font-semibold mb-4",children:e("landing.blog.badge")}),l.jsxs("h2",{className:"text-3xl sm:text-4xl font-bold font-display mb-6",children:[e("landing.blog.title"),l.jsxs("span",{className:"text-gradient",children:[" ",e("landing.blog.titleHighlight")]})]})]}),l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6",children:oz.map(t=>l.jsxs(ee,{to:`/insights/${t.slug}`,className:"group bg-card rounded-2xl border overflow-hidden shadow-sm hover:shadow-lg transition-all duration-300",children:[l.jsx("div",{className:"overflow-hidden",children:t.thumb?l.jsx("img",{src:t.thumb,alt:t.title,className:"w-full h-40 object-cover group-hover:scale-105 transition-transform duration-500",loading:"lazy"}):l.jsx("div",{className:"w-full h-40 bg-gradient-to-br from-primary/20 to-accent/20 flex items-center justify-center group-hover:scale-105 transition-transform duration-500",children:l.jsx("span",{className:"text-3xl font-bold text-primary/40",children:"BP"})})}),l.jsxs("div",{className:"p-5",children:[l.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:t.date}),l.jsx("h3",{className:"font-semibold text-foreground text-sm leading-snug mb-2 group-hover:text-primary transition-colors",children:t.title}),l.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2",children:t.excerpt})]})]},t.slug))}),l.jsx("div",{className:"text-center mt-10",children:l.jsxs(ee,{to:"/insights",className:"text-primary font-medium text-sm inline-flex items-center gap-1 hover:underline",children:[e("landing.blog.readMore")," ",l.jsx(ot,{className:"w-4 h-4"})]})})]})})};var Qc="Collapsible",[cz,H0]=Cr(Qc),[uz,Ch]=cz(Qc),G0=v.forwardRef((e,t)=>
394{const{__scopeCollapsible:n,open:a,defaultOpen:r,disabled:s,onOpenChange:i,...o}=e,[c,u]=vr({prop:a,defaultProp:r??!1,onChange:i,caller:Qc});return l.jsx(uz,{scope:n,disabled:s,contentId:$s(),open:c,onOpenToggle:v.useCallback(()=>u(d=>!d),[u]),children:l.jsx(de.div,{"data-state":jh(c),"data-disabled":s?"":void 0,...o,ref:t})})});G0.displayName=Qc;var K0="CollapsibleTrigger",Y0=v.forwardRef((e,t)=>{const{__scopeCollapsible:n,...a}=e,r=Ch(K0,n);return l.jsx(de.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":jh(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...a,ref:t,onClick:se(e.onClick,r.onOpenToggle)})});Y0.displayName=K0;var Th="CollapsibleContent",J0=v.forwardRef((e,t)=>{const{forceMount:n,...a}=e,r=Ch(Th,e.__scopeCollapsible);return l.jsx(Ic,{present:n||r.open,children:({present:s})=>l.jsx(dz,{...a,ref:t,present:s})})});J0.displayName=Th;var dz=v.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:a,children:r,...s}=e,i=Ch(Th,n),[o,c]=v.useState(a),u=v.useRef(null),d=Ce(t,u),p=v.useRef(0),h=p.current,m=v.useRef(0),w=m.current,f=i.open||o,x=v.useRef(f),b=v.useRef(void 0);return v.useEffect(()=>{const g=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(g)},[]),Ke(()=>{const g=u.current;if(g){b.current=b.current||{transitionDuration:g.style.transitionDuration,animationName:g.style.animationName},g.style.transitionDuration="0s",g.style.animationName="none";const y=g.getBoundingClientRect();p.current=y.height,m.current=y.width,x.current||(g.style.transitionDuration=b.current.transitionDuration,g.style.animationName=b.current.animationName),c(a)}},[i.open,a]),l.jsx(de.div,{"data-state":jh(i.open),"data-disabled":i.disabled?"":void 0,id:i.contentId,hidden:!f,...s,ref:d,style:{"--radix-collapsible-content-height":h?`${h}px`:void 0,"--radix-collapsible-content-width":w?`${w}px`:void 0,...e.style},children:f&&r})});function jh(e){return e?"open":"closed"}var pz=G0,mz=Y0,hz=J0,hn="Accordion",fz=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Ih,gz,vz]=Gm(hn),[Xc,YM]=Cr(hn,[vz,H0]),Rh=H0(),Q0=O.forwardRef((e,t)=>{const{type:n,...a}=e,r=a,s=a;return l.jsx(Ih.Provider,{scope:e.__scopeAccordion,children:n==="multiple"?l.jsx(xz,{...s,ref:t}):l.jsx(wz,{...r,ref:t})})});Q0.displayName=hn;var[X0,yz]=Xc(hn),[Z0,bz]=Xc(hn,{collapsible:!1}),wz=O.forwardRef((e,t)=>{const{value:n,defaultValue:a,onValueChange:r=()=>{},collapsible:s=!1,...i}=e,[o,c]=vr({prop:n,defaultProp:a??"",onChange:r,caller:hn});return l.jsx(X0,{scope:e.__scopeAccordion,value:O.useMemo(()=>o?[o]:[],[o]),onItemOpen:c,onItemClose:O.useCallback(()=>s&&c(""),[s,c]),children:l.jsx(Z0,{scope:e.__scopeAccordion,collapsible:s,children:l.jsx(eS,{...i,ref:t})})})}),xz=O.forwardRef((e,t)=>{const{value:n,defaultValue:a,onValueChange:r=()=>{},...s}=e,[i,o]=vr({prop:n,defaultProp:a??[],onChange:r,caller:hn}),c=O.useCallback(d=>o((p=[])=>[...p,d]),[o]),u=O.useCallback(d=>o((p=[])=>p.filter(h=>h!==d)),[o]);return l.jsx(X0,{scope:e.__scopeAccordion,value:i,onItemOpen:c,onItemClose:u,children:l.jsx(Z0,{scope:e.__scopeAccordion,collapsible:!0,children:l.jsx(eS,{...s,ref:t})})})}),[kz,Zc]=Xc(hn),eS=O.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:a,dir:r,orientation:s="vertical",...i}=e,o=O.useRef(null),c=Ce(o,t),u=gz(n),p=_k(r)==="ltr",h=se(e.onKeyDown,m=>{var A;if(!fz.includes(m.key))return;const w=m.target,f=u().filter(T=>{var j;return!((j=T.ref.current)!=null&&j.disabled)}),x=f.findIndex(T=>T.ref.current===w),b=f.length;if(x===-1)return;m.preventDefault();let g=x;const y=0,k=b-1,P=()=>{g=x+1,g>k&&(g=y)},E=()=>{g=x-1,g<y&&(g=k)};switch(m.key){case"Home":g=y;break;case"End":g=k;break;case"ArrowRight":s==="horizontal"&&(p?P():E());break;case"ArrowDown":s==="vertical"&&P();break;case"ArrowLeft":s==="horizontal"&&(p?E():P());break;case"ArrowUp":s==="vertical"&&E();break}const S=g%b;(A=f[S].ref.current)==null||A.focus()});return l.jsx(kz,{scope:n,disabled:a,direction:r,orientation:s,children:l.jsx(Ih.Slot,{scope:n,children:l.jsx(de.div,{...i,"data-orientation":s,ref:c,onKeyDown:a?void 0:h})})})}),pc="AccordionItem",[Sz,_h]=Xc(pc),tS=O.forwardRef((e,t)=>
394{const{__scopeAccordion:n,value:a,...r}=e,s=Zc(pc,n),i=yz(pc,n),o=Rh(n),c=$s(),u=a&&i.value.includes(a)||!1,d=s.disabled||e.disabled;return l.jsx(Sz,{scope:n,open:u,disabled:d,triggerId:c,children:l.jsx(pz,{"data-orientation":s.orientation,"data-state":oS(u),...o,...r,ref:t,disabled:d,open:u,onOpenChange:p=>{p?i.onItemOpen(a):i.onItemClose(a)}})})});tS.displayName=pc;var nS="AccordionHeader",aS=O.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,r=Zc(hn,n),s=_h(nS,n);return l.jsx(de.h3,{"data-orientation":r.orientation,"data-state":oS(s.open),"data-disabled":s.disabled?"":void 0,...a,ref:t})});aS.displayName=nS;var Jp="AccordionTrigger",rS=O.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,r=Zc(hn,n),s=_h(Jp,n),i=bz(Jp,n),o=Rh(n);return l.jsx(Ih.ItemSlot,{scope:n,children:l.jsx(mz,{"aria-disabled":s.open&&!i.collapsible||void 0,"data-orientation":r.orientation,id:s.triggerId,...o,...a,ref:t})})});rS.displayName=Jp;var sS="AccordionContent",iS=O.forwardRef((e,t)=>{const{__scopeAccordion:n,...a}=e,r=Zc(hn,n),s=_h(sS,n),i=Rh(n);return l.jsx(hz,{role:"region","aria-labelledby":s.triggerId,"data-orientation":r.orientation,...i,...a,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});iS.displayName=sS;function oS(e){return e?"open":"closed"}var Pz=Q0,Az=tS,Ez=aS,lS=rS,cS=iS;const Cz=Pz,uS=v.forwardRef(({className:e,...t},n)=>l.jsx(Az,{ref:n,className:We("border-b",e),...t}));uS.displayName="AccordionItem";const dS=v.forwardRef(({className:e,children:t,...n},a)=>l.jsx(Ez,{className:"flex",children:l.jsxs(lS,{ref:a,className:We("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",e),...n,children:[t,l.jsx(Zm,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));dS.displayName=lS.displayName;const pS=v.forwardRef(({className:e,children:t,...n},a)=>l.jsx(cS,{ref:a,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...n,children:l.jsx("div",{className:We("pb-4 pt-0",e),children:t})}));pS.displayName=cS.displayName;const Tz=["es","fr","de","pt","ko","ja"],jz="https://bizplanner.ai";function eu(){const{lang:e}=Ks();return e&&Tz.includes(e)?`/${e}`:""}function tu(e){const t=eu(),n=e.startsWith("/")?e:`/${e}`,a=n==="/"?t||"/":`${t}${n}`;return`${jz}${a}`}const mS=[{q:"What is an AI business plan generator?",text:"An AI business plan generator turns a short questionnaire about your business into a complete, investor-ready plan. BizPlanner AI writes the executive summary, market analysis, competitor research, SWOT, and 5-year financial projections for you, then lets you edit every section and export to PDF or Word.",a:l.jsxs(l.Fragment,{children:["An AI business plan generator turns a short questionnaire about your business into a complete, investor-ready plan. BizPlanner AI writes the executive summary, market analysis, competitor research, SWOT, and 5-year financial projections for you, then lets you edit every section and export to PDF or Word."," ",l.jsx(ee,{to:"/business-plan-generator",className:"text-primary hover:underline",children:"See how the generator works"}),"."]})},{q:"How long does it take to write a business plan with AI?",text:"Under 10 minutes. The questionnaire takes about five minutes, and the AI generates your full plan in seconds. Traditional business plan writing takes 20 to 40 hours, or several weeks with a consultant.",a:l.jsx(l.Fragment,{children:"Under 10 minutes. The questionnaire takes about five minutes, and the AI generates your full plan in seconds. Traditional business plan writing takes 20 to 40 hours, or several weeks with a consultant."})},{q:"Are AI-generated business plans accepted by banks and investors?",text:"Yes. BizPlanner AI plans follow the standard structure banks, SBA lenders, grant committees, and investors expect: executive summary, company description, market and competitor analysis, marketing plan, operations, SWOT, and detailed financial projections. Over 27,300 plans have been generated on the platform.",a:l.jsx(l.Fragment,{children:"Yes. BizPlanner AI plans follow the standard structure banks, SBA lenders, grant committees, and investors expect: executive summary, company description, market and competitor analysis, marketing plan, operations, SWOT, and detailed financial projections. Over 27,300 plans have been generated on the platform."})},{q:"Which industries are supported?",text:"More than 150 industries, each with its own template and benchmark data — restaurants, coffee shops, gyms, daycares, salons, trucking, e-commerce, Sa
394aS, consulting, agriculture, and more.",a:l.jsxs(l.Fragment,{children:["More than 150 industries, each with its own template and benchmark data — from"," ",l.jsx(ee,{to:"/templates/restaurant",className:"text-primary hover:underline",children:"restaurants"})," ","and ",l.jsx(ee,{to:"/templates/coffee-shop",className:"text-primary hover:underline",children:"coffee shops"})," ","to ",l.jsx(ee,{to:"/templates/gym",className:"text-primary hover:underline",children:"gyms"})," and"," ",l.jsx(ee,{to:"/templates/daycare",className:"text-primary hover:underline",children:"daycares"}),"."," ",l.jsx(ee,{to:"/templates",className:"text-primary hover:underline",children:"Browse all templates"}),"."]})},{q:"Can I use it for an immigration or visa business plan?",text:"Yes. BizPlanner AI has a dedicated visa business plan product covering E-2, L-1, EB-2 NIW, EB-5, and O-1 petitions, written to USCIS expectations with the required sections and supporting financials.",a:l.jsxs(l.Fragment,{children:["Yes — there is a dedicated"," ",l.jsx(ee,{to:"/visa-business-plan",className:"text-primary hover:underline",children:"visa business plan"})," ","product covering E-2, L-1, EB-2 NIW, EB-5, and O-1 petitions, written to USCIS expectations with the required sections and supporting financials."]})},{q:"How much does it cost?",text:"A complete, investor-ready business plan starts at $4.99 as a one-time payment. You can preview your generated plan before paying anything.",a:l.jsxs(l.Fragment,{children:["A complete, investor-ready plan starts at $4.99 as a one-time payment, and you can preview your generated plan before paying."," ",l.jsx(ee,{to:"/pricing",className:"text-primary hover:underline",children:"See pricing"}),"."]})}],Iz={"@context":"https://schema.org","@type":"FAQPage",mainEntity:mS.map(e=>({"@type":"Question",name:e.q,acceptedAnswer:{"@type":"Answer",text:e.text}}))},Rz=()=>eu()?null:l.jsxs("section",{className:"py-20 lg:py-24 bg-muted/30 border-t",children:[l.jsx(Gn,{children:l.jsx("script",{type:"application/ld+json",children:JSON.stringify(Iz)})}),l.jsxs("div",{className:"section-container max-w-3xl mx-auto",children:[l.jsx("h2",{className:"text-3xl sm:text-4xl font-bold font-display text-center mb-4 text-foreground",children:"AI Business Plan Generator FAQ"}),l.jsx("p",{className:"text-center text-muted-foreground mb-10",children:"Everything founders ask before writing a business plan with AI."}),l.jsx(Cz,{type:"single",collapsible:!0,className:"w-full",children:mS.map((t,n)=>l.jsxs(uS,{value:`home-faq-${n}`,children:[l.jsx(dS,{className:"text-left text-foreground",children:t.q}),l.jsx(pS,{className:"text-muted-foreground leading-relaxed",children:t.a})]},n))})]})]}),_z=()=>{const{t:e}=ft(),[t,n]=v.useState(!1);return v.useEffect(()=>{Oa.auth.getSession().then(({data:{session:r}})=>n(!!r));const{data:{subscription:a}}=Oa.auth.onAuthStateChange((r,s)=>n(!!s));return()=>a.unsubscribe()},[]),l.jsxs("section",{className:"py-24 bg-primary relative overflow-hidden",children:[l.jsxs("div",{className:"absolute inset-0 opacity-20",children:[l.jsx("div",{className:"absolute top-1/2 left-1/4 w-96 h-96 bg-white rounded-full blur-3xl"}),l.jsx("div",{className:"absolute top-1/2 right-1/4 w-80 h-80 bg-accent rounded-full blur-3xl"})]}),l.jsx("div",{className:"section-container relative",children:l.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[l.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/20 backdrop-blur mb-8",children:[l.jsx(Ls,{className:"w-4 h-4 text-white"}),l.jsx("span",{className:"text-sm font-medium text-white",children:e("cta.noSubscription")})]}),l.jsxs("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold font-display text-white mb-6",children:[e("cta.title"),l.jsx("br",{}),e("cta.titleHighlight")]}),l.jsx("p",{className:"text-lg text-white/80 mb-10 max-w-xl mx-auto",children:e("cta.subtitle")}),l.jsx(ee,{to:t?"/dashboard":"/get-started",children:l.jsx(be,{size:"xl",className:"group bg-white text-primary hover:bg-white/90 shadow-lg",children:t?l.jsxs(l.Fragment,{children:[l.jsx(Ql,{className:"w-5 h-5 mr-1"}),"Go to Dashboard"]}):l.jsxs(l.Fragment,{children:[e("cta.button"),l.jsx(ot,{className:"w-5 h-5 group-hover:translate-x-1 transition-transform"})]})})}),l.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-6 mt-12 text-white/70 text-sm",children:[l.jsxs("span",{children:["✓ ",e("cta.noSubscription")]}),l.jsxs("span",{children:["✓ ",e("cta.guarantee")]})]})]})})]})},Sr=()=>{const{t:e}=ft(),t={product:[{label:e("landing.footer.features"),href:"#features"},{label:e("landing.footer.pricing"),href:"/pricing"},{label:e("landing.footer.templates"),href:"/templates"},{label:e("landing.footer.tools"),href:"/tools"}],resources:[{label:e("landing.footer.blog"),href:"/insights"},{label:e("landing.footer.industries"),href:"/industries"},{label:e("landing.footer.businessNameGenerator"),href:"/tools/business-name-generator"},{label:"Business Plan Generator",href:"/business-plan-generator"},{label:"Free Business Plan Generator",href:"/free-business-plan-generator"},{label:"Best AI Business Plan Generator",href:"/best-ai-business-plan-generator"},{label:"AI Business Plan Writer",href:"/ai-business-plan-writer"},{label:"AI Startup Business Plan",href:"/ai-startup-business-plan"},{label:"Free Business Plan Template",href:"/free-business-plan-template"},{label:"SBA Business Plan Template",href:"/sba-business-plan-template"},{label:"Business Plan for a Bank Loan",href:"/business-plan-for-bank-loan"},{label:"Business Plan for an SBA Loan",href:"/business-plan-for-sba-loan"},{label:"Business Plan for Investors",href:"/business-plan-for-investors"},{label:"What Is a Business Plan?",href:"/what-is-a-business-plan"},{label:"Elements of a Business Plan",href:"/elements-of-a-business-plan"}],company:[{label:e("landing.footer.about"),href:"/about"},{label:e("landing.footer.contact"),href:"/contacts"}],legal:[{label:e("landing.footer.privacy"),href:"/privacy"},{label:e("landing.footer.terms"),href:"/terms"},{label:e("landing.footer.refundPolicy"),href:"/refund-policy"},{label:e("landing.footer.cookies"),href:"/cookies"}]},n=[{key:"product",title:e("landing.footer.product")}
394,{key:"resources",title:e("landing.footer.resources")},{key:"company",title:e("landing.footer.company")},{key:"legal",title:e("landing.footer.legal")}];return l.jsx("footer",{className:"bg-card border-t py-16",children:l.jsxs("div",{className:"section-container",children:[l.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8 lg:gap-12 mb-12",children:[l.jsxs("div",{className:"lg:col-span-2",children:[l.jsxs(ee,{to:"/",className:"flex items-center gap-2 mb-4",children:[l.jsx("div",{className:"w-10 h-10 rounded-xl bg-primary flex items-center justify-center",children:l.jsx(kn,{className:"w-5 h-5 text-primary-foreground"})}),l.jsxs("span",{className:"text-xl font-bold font-display text-foreground",children:["Bizplanner",l.jsx("span",{className:"text-primary",children:".ai"})]})]}),l.jsx("p",{className:"text-muted-foreground mb-6 max-w-xs",children:e("landing.footer.description")}),l.jsxs("div",{className:"flex gap-4",children:[l.jsx("a",{href:"https://x.com/bizplannerai",target:"_blank",rel:"noopener noreferrer","aria-label":"Follow BizPlanner AI on X (Twitter)",title:"Follow BizPlanner AI on X (Twitter)",className:"w-10 h-10 rounded-full bg-muted flex items-center justify-center hover:bg-primary/10 transition-colors",children:l.jsx(xE,{className:"w-5 h-5 text-muted-foreground"})}),l.jsx("a",{href:"https://www.youtube.com/@bizplannerai",target:"_blank",rel:"noopener noreferrer","aria-label":"Watch BizPlanner AI on YouTube",title:"Watch BizPlanner AI on YouTube",className:"w-10 h-10 rounded-full bg-muted flex items-center justify-center hover:bg-primary/10 transition-colors",children:l.jsx(kE,{className:"w-5 h-5 text-muted-foreground"})}),l.jsx("a",{href:"https://www.tiktok.com/@bizplannerai",target:"_blank",rel:"noopener noreferrer","aria-label":"Follow BizPlanner AI on TikTok",title:"Follow BizPlanner AI on TikTok",className:"w-10 h-10 rounded-full bg-muted flex items-center justify-center hover:bg-primary/10 transition-colors",children:l.jsx("svg",{className:"w-5 h-5 text-muted-foreground",viewBox:"0 0 24 24",fill:"currentColor",role:"img","aria-hidden":"true",focusable:"false",children:l.jsx("path",{d:"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-2.88 2.5 2.89 2.89 0 0 1-2.89-2.89 2.89 2.89 0 0 1 2.89-2.89c.28 0 .54.04.79.1v-3.5a6.37 6.37 0 0 0-.79-.05A6.34 6.34 0 0 0 3.15 15a6.34 6.34 0 0 0 6.34 6.34 6.34 6.34 0 0 0 6.34-6.34V8.72a8.19 8.19 0 0 0 4.76 1.52v-3.4a4.85 4.85 0 0 1-1-.15z"})})})]})]}),n.map(a=>l.jsxs("div",{children:[l.jsx("h4",{className:"font-semibold text-foreground mb-4",children:a.title}),l.jsx("ul",{className:"space-y-3",children:t[a.key].map(r=>l.jsx("li",{children:r.href.startsWith("/")?l.jsx(ee,{to:r.href,className:"text-muted-foreground hover:text-primary transition-colors text-sm",children:r.label}):l.jsx("a",{href:r.href,className:"text-muted-foreground hover:text-primary transition-colors text-sm",children:r.label})},r.label))})]},a.key))]}),l.jsxs("div",{className:"pt-8 border-t flex flex-col md:flex-row justify-between items-center gap-4",children:[l.jsx("p",{className:"text-muted-foreground text-sm",children:e("landing.footer.copyright",{year:new Date().getFullYear()})}),l.jsx("p",{className:"text-muted-foreground text-sm",children:e("landing.footer.madeWith")})]})]})})},Oz=["James","Maria","Ahmed","Sophie","Carlos","Yuki","Olga","David","Fatima","Liam","Priya","Marco","Amara","Chen","Isabella","Omar","Emma","Raj","Aisha","Lucas","Mei","Daniel","Sara","Kwame","Elena","Tariq","Anna","Diego","Nadia","Tom","Leila","Hassan"],Nz=["United States","United Kingdom","Canada","Australia","Germany","France","Nigeria","South Africa","India","Brazil","Mexico","Japan","Kenya","UAE","Netherlands","Singapore","Italy","Spain","Ghana","Sweden","New Zealand","Ireland","Portugal","Colombia"],Lz=["Restaurant","E-commerce","SaaS Startup","Coffee Shop","Consulting Firm","Fitness Studio","Real Estate Agency","Marketing Agency","Food Truck","Tech Startup","Beauty Salon","Bakery","Cleaning Service","Photography","Clothing Brand","Travel Agency","Landscaping","Tutoring Service"];function dd(e){return e[Math.floor(Math.random()*e.length)]}function zz(){return Math.floor(Math.random()*25)+2}const Bz=()=>{const[e,t]=v.useState(!1),[n,a]=v.useState({name:"",country:"",industry:"",minutesAgo:0}),r=v.useCallback(()=>{a({name:dd(Oz),country:dd(Nz),industry:dd(Lz),minutesAgo:zz()}),t(!0),setTimeout(()=>t(!1),5e3)},[]);return v.useEffect(()=>{const s=setTimeout(r,8e3),i=setInterval(r,15e3);return()=>{clearTimeout(s),clearInterval(i)}},[r]),e?l.jsx("div",{className:"fixed bottom-4 left-4 z-50 animate-in slide-in-from-bottom-4 fade-in duration-500 max-w-xs",children:l.jsxs("div",{className:"bg-card border shadow-lg rounded-xl p-4 flex items-start gap-3",children:[l.jsx("div",{className:"w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center shrink-0 mt-0.5",children:l.jsx(kn,{className:"w-5 h-5 text-primary"})}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsxs("p",{className:"text-sm font-medium text-foreground leading-snug",children:[n.name," from ",n.country]}),l.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5",children:["Generated a ",l.jsx("span",{className:"font-medium text-foreground",children:n.industry})," business plan"]}),l.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[n.minutesAgo," minutes ago"]})]}),l.jsx("button",{onClick:()=>t(!1),className:"text-muted-foreground hover:text-foreground transition-colors shrink-0",children:l.jsx(Qi,{className:"w-4 h-4"})})]})}):null},Dz={"@context":"https://schema.org","@type":"SoftwareApplication",name:"BizPlanner AI",description:"AI-powered business plan generator that creates comprehensive, investor-ready plans with financials, market analysis, SWOT analysis, and more.",url:"https://bizplanner.ai",applicationCategory:"BusinessApplication",operatingSystem:"Web",offers:{"@type":"Offer",price:"0",priceCurrency:"USD"},aggregateRating:{"@type":"AggregateRating",ratingValue:"4.8",ratingCount:"27300",bestRating:"5"}},Fv={en:{title:"AI Business Plan Generator — Bank & Investor Ready | BizPlanner AI",description:"Write a business plan in minutes with AI: 3-year financial projections, market analysis, SWOT and PDF/Word export lenders and investors accept. Free preview, $4.99 to unlock."},fr:{title:"Générateur de Business Plan par IA | Gratuit à essayer | BizPlanner AI",description:"Créez un business plan professionnel en quelques minutes avec l'IA : prévisions financières, étude de marché, SWOT et export PDF. Plus de 27 300 plans créés."},es:{title:"Generador de Plan de Negocios con IA | Gratis para Probar | BizPlanner AI",description:"Crea un plan de negocios profesional en minutos con IA: proyecciones financieras, análisis de mercado, DAFO y exportación a PDF. Más de 27.300 planes creados."},de:{title:"KI-Businessplan-Generator | Kostenlos testen | BizPlanner AI",description:"Erstellen Sie in Minuten einen professionellen Businessplan mit KI: Finanzprognosen, Marktanalyse, SWOT und PDF-Export. Über 27.300 Pläne er
394stellt."},pt:{title:"Gerador de Plano de Negócios com IA | Teste Grátis | BizPlanner AI",description:"Crie um plano de negócios profissional em minutos com IA: projeções financeiras, análise de mercado, SWOT e exportação em PDF. Mais de 27.300 planos criados."},ko:{title:"AI 사업계획서 생성기 | 무료 체험 | BizPlanner AI",description:"AI로 몇 분 만에 전문 사업계획서를 만드세요. 재무 예측, 시장 분석, SWOT, PDF 내보내기 포함. 27,300개 이상의 사업계획서 작성."},ja:{title:"AI事業計画書ジェネレーター | 無料で試せる | BizPlanner AI",description:"AIで数分でプロ品質の事業計画書を作成。財務予測、市場分析、SWOT、PDF出力に対応。27,300件以上の事業計画書を作成しています。"}},Uv=()=>{const{lang:e}=Ks(),t=e&&["es","fr","de","pt","ko","ja"].includes(e)?`/${e}`:"",n=`https://bizplanner.ai${t||"/"}`,a=Fv[t.replace("/","")]??Fv.en;return l.jsxs("div",{className:"min-h-screen",children:[l.jsxs(Gn,{children:[l.jsx("title",{children:a.title}),l.jsx("meta",{name:"description",content:a.description}),l.jsx("link",{rel:"canonical",href:n}),l.jsx("meta",{property:"og:title",content:a.title}),l.jsx("meta",{property:"og:description",content:a.description}),l.jsx("meta",{property:"og:type",content:"website"}),l.jsx("meta",{property:"og:url",content:n}),l.jsx("meta",{name:"twitter:title",content:a.title}),l.jsx("meta",{name:"twitter:description",content:a.description}),l.jsx("script",{type:"application/ld+json",children:JSON.stringify(Dz)})]}),l.jsx(kr,{}),l.jsx(Bz,{}),l.jsx(BL,{}),l.jsx(az,{}),l.jsx(FL,{}),l.jsx(ZL,{}),l.jsx(tz,{}),l.jsx(rz,{}),l.jsx(iz,{}),l.jsx(Rz,{}),l.jsx(_z,{}),l.jsx(lz,{}),l.jsx(Sr,{})]})},JM=["Food & Beverage","Health & Wellness","Retail","Services","Entertainment","Automotive","Real Estate","Agriculture","Professional Services","Technology"],ba=[{slug:"coffee-shop",name:"Coffee Shop",category:"Food & Beverage",description:"Start your own coffee shop with our comprehensive business plan template. Includes market analysis, financial projections, and operational strategies.",keywords:["coffee shop business plan","cafe business plan","coffee house startup"],priority:.7},{slug:"coffee-cart",name:"Coffee Cart",category:"Food & Beverage",description:"Launch a mobile coffee cart business with our detailed business plan. Perfect for entrepreneurs seeking a low-cost entry into the coffee industry.",keywords:["coffee cart business plan","mobile coffee business","coffee cart startup"],priority:.8},{slug:"cafe-restaurant",name:"Cafe Restaurant",category:"Food & Beverage",description:"Open a successful cafe restaurant with our proven business plan template. Covers menu development, staffing, and location strategy.",keywords:["cafe restaurant business plan","cafe startup","restaurant business plan"],priority:.8},{slug:"restaurant",name:"Restaurant",category:"Food & Beverage",description:"Create a thriving restaurant with our comprehensive business plan. Includes cuisine concepts, kitchen operations, and marketing strategies.",keywords:["restaurant business plan","restaurant startup","food service business plan"],priority:.7},{slug:"food-truck",name:"Food Truck",category:"Food & Beverage",description:"Start a successful food truck business with our mobile food service business plan template.",keywords:["food truck business plan","mobile food business","food truck startup"],priority:.7},{slug:"bakery",name:"Bakery",category:"Food & Beverage",description:"Open a profitable bakery with our detailed business plan covering production, retail, and wholesale strategies.",keywords:["bakery business plan","bakery startup","bread shop business plan"],priority:.7},{slug:"bagel-shop",name:"Bagel Shop",category:"Food & Beverage",description:"Launch a bagel shop with our specialized business plan template for breakfast-focused food businesses.",keywords:["bagel shop business plan","bagel store startup","breakfast shop business plan"],priority:.64},{slug:"sandwich-shop",name:"Sandwich Shop",category:"Food & Beverage",description:"Start a sandwich shop with our quick-service restaurant business plan template.",keywords:["sandwich shop business plan","deli business plan","sub shop startup"],priority:.64},{slug:"ice-cream-shop",name:"Ice Cream Shop",category:"Food & Beverage",description:"Open an ice cream shop with our seasonal dessert business plan template.",keywords:["ice cream shop business plan","gelato shop startup","frozen dessert business"],priority:.7},{slug:"juice-bar",name:"Juice Bar",category:"Food & Beverage",description:"Start a healthy juice bar with our wellness-focused business plan template.",keywords:["juice bar business plan","smoothie bar startup","health drink business"],priority:.7},{slug:"wine-bar",name:"Wine Bar",category:"Food & Beverage",description:"Open a sophisticated wine bar with our hospital
394ity business plan template.",keywords:["wine bar business plan","wine lounge startup","wine tasting business"],priority:.7},{slug:"mobile-bar",name:"Mobile Bar",category:"Food & Beverage",description:"Launch a mobile bartending service with our event-focused business plan.",keywords:["mobile bar business plan","bartending service startup","event bar business"],priority:.7},{slug:"brewery",name:"Brewery",category:"Food & Beverage",description:"Start a craft brewery with our comprehensive brewing business plan template.",keywords:["brewery business plan","craft beer startup","microbrewery business plan"],priority:.7},{slug:"liquor-store",name:"Liquor Store",category:"Food & Beverage",description:"Open a liquor store with our retail alcohol business plan template.",keywords:["liquor store business plan","alcohol retail startup","beverage store business"],priority:.7},{slug:"grocery-store",name:"Grocery Store",category:"Food & Beverage",description:"Start a grocery store with our retail food business plan template.",keywords:["grocery store business plan","supermarket startup","food retail business"],priority:.7},{slug:"gym",name:"Gym",category:"Health & Wellness",description:"Open a successful gym with our fitness center business plan template.",keywords:["gym business plan","fitness center startup","health club business plan"],priority:.7},{slug:"basketball-gym",name:"Basketball Gym",category:"Health & Wellness",description:"Start a basketball training facility with our sports-focused business plan.",keywords:["basketball gym business plan","sports facility startup","basketball training center"],priority:.8},{slug:"yoga-studio",name:"Yoga Studio",category:"Health & Wellness",description:"Open a yoga studio with our wellness business plan template.",keywords:["yoga studio business plan","yoga center startup","wellness studio business"],priority:.7},{slug:"nail-salon",name:"Nail Salon",category:"Health & Wellness",description:"Start a nail salon with our beauty services business plan template.",keywords:["nail salon business plan","manicure business startup","nail spa business"],priority:.7},{slug:"hair-salon",name:"Hair Salon",category:"Health & Wellness",description:"Open a hair salon with our beauty industry business plan template.",keywords:["hair salon business plan","beauty salon startup","hairdressing business"],priority:.7},{slug:"barber-shop",name:"Barber Shop",category:"Health & Wellness",description:"Start a barber shop with our men's grooming business plan template.",keywords:["barber shop business plan","barbershop startup","men's grooming business"],priority:.7},{slug:"dog-grooming",name:"Dog Grooming",category:"Health & Wellness",description:"Open a pet grooming business with our animal care business plan template.",keywords:["dog grooming business plan","pet grooming startup","animal grooming business"],priority:.7},{slug:"pharmacy",name:"Pharmacy",category:"Health & Wellness",description:"Start a pharmacy with our healthcare retail business plan template.",keywords:["pharmacy business plan","drugstore startup","pharmaceutical retail business"],priority:.7},{slug:"non-medical-home-care",name:"Non-Medical Home Care",category:"Health & Wellness",description:"Start a home care agency with our senior services business plan template.",keywords:["home care business plan","senior care startup","caregiving business"],priority:.7},{slug:"gift-shop",name:"Gift Shop",category:"Retail",description:"Open a gift shop with our specialty retail business plan template.",keywords:["gift shop business plan","gift store startup","specialty retail business"],priority:.64},{slug:"bookstore",name:"Bookstore",category:"Retail",description:"Start a bookstore with our literary retail business plan template.",keywords:["bookstore business plan","book shop startup","literary retail business"],priority:.7},{slug:"flower-shop",name:"Flower Shop",category:"Retail",description:"Open a flower shop with our floral business plan template.",keywords:["flower shop business plan","florist startup","floral retail business"],priority:.7},{slug:"convenience-store",name:"Convenience Store",category:"Retail",description:"Start a convenience store with our retail business plan template.",keywords:["convenience store business plan","c-store startup","quick-stop retail business"],priority:.7},{slug:"thrift-store",name:"Thrift Store",category:"Retail",description:"Open a thrift store with our resale retail business plan template.",keywords:["thrift store business plan","secondhand shop startup","resale business"],priority:.7},{slug:"vending-machine",name:"Vending Machine",category:"Retail",description:"Start a vending machine business with our automated retail business plan.",keywords:["vending machine business plan","vending startup","automated retail business"],priority:.7},{slug:"cleaning-company",name:"Cleaning Company",category:"Services",description:"Start a cleaning company with our janitorial services business plan template.",keywords:["cleaning company business plan","
394janitorial startup","cleaning service business"],priority:.7},{slug:"lawn-care",name:"Lawn Care",category:"Services",description:"Open a lawn care business with our landscaping services business plan.",keywords:["lawn care business plan","landscaping startup","yard maintenance business"],priority:.7},{slug:"moving-company",name:"Moving Company",category:"Services",description:"Start a moving company with our relocation services business plan template.",keywords:["moving company business plan","movers startup","relocation business"],priority:.7},{slug:"junk-removal",name:"Junk Removal",category:"Services",description:"Open a junk removal business with our waste hauling business plan template.",keywords:["junk removal business plan","hauling startup","waste removal business"],priority:.7},{slug:"laundromat",name:"Laundromat",category:"Services",description:"Start a laundromat with our laundry services business plan template.",keywords:["laundromat business plan","laundry startup","coin laundry business"],priority:.7},{slug:"car-wash",name:"Car Wash",category:"Services",description:"Open a car wash with our automotive cleaning business plan template.",keywords:["car wash business plan","auto detailing startup","car cleaning business"],priority:.7},{slug:"photography",name:"Photography",category:"Services",description:"Start a photography business with our creative services business plan template.",keywords:["photography business plan","photographer startup","photo studio business"],priority:.7},{slug:"tattoo-shop",name:"Tattoo Shop",category:"Services",description:"Open a tattoo shop with our body art business plan template.",keywords:["tattoo shop business plan","tattoo parlor startup","body art business"],priority:.7},{slug:"auto-repair-shop",name:"Auto Repair Shop",category:"Automotive",description:"Start an auto repair shop with our automotive services business plan template.",keywords:["auto repair business plan","mechanic shop startup","car repair business"],priority:.7},{slug:"tire-shop",name:"Tire Shop",category:"Automotive",description:"Open a tire shop with our automotive retail business plan template.",keywords:["tire shop business plan","tire store startup","automotive retail business"],priority:.64},{slug:"car-rental",name:"Car Rental",category:"Automotive",description:"Start a car rental business with our vehicle leasing business plan template.",keywords:["car rental business plan","vehicle rental startup","auto leasing business"],priority:.7},{slug:"escape-room",name:"Escape Room",category:"Entertainment",description:"Open an escape room with our entertainment venue business plan template.",keywords:["escape room business plan","puzzle room startup","entertainment venue business"],priority:.7},{slug:"family-entertainment-center",name:"Family Entertainment Center",category:"Entertainment",description:"Start a family entertainment center with our recreation business plan.",keywords:["FEC business plan","family fun center startup","entertainment center business"],priority:.7},{slug:"indoor-golf",name:"Indoor Golf",category:"Entertainment",description:"Open an indoor golf facility with our sports entertainment business plan.",keywords:["indoor golf business plan","golf simulator startup","virtual golf business"],priority:.7},{slug:"recording-studio",name:"Recording Studio",category:"Entertainment",description:"Start a recording studio with our music production business plan template.",keywords:["recording studio business plan","music studio startup","audio production business"],priority:.7},{slug:"music-studio",name:"Music Studio",category:"Entertainment",description:"Open a music studio with our creative arts business plan template.",keywords:["music studio business plan","music school startup","music education business"],priority:.7},{slug:"art-gallery",name:"Art Gallery",category:"Entertainment",description:"Start an art gallery with our fine arts business plan template.",keywords:["art gallery business plan","gallery startup","fine arts business"],priority:.7},{slug:"marketing-agency",name:"Marketing Agency",category:"Professional Services",description:"Start a marketing agency with our professional services business plan template.",keywords:["marketing agency business plan","digital agency startup","advertising business"],priority:.7},{slug:"staffing-agency",name:"Staffing Agency",category:"Professional Services",description:"Open a staffing agency with our HR services business plan template.",keywords:["staffing agency business plan","recruitment startup","employment agency business"],priority:.7},{slug:"insurance-agency",name:"Insurance Agency",category:"Professional Services",description:"Start an insurance agency with our financial services business plan template.",keywords:["insurance agency business plan","insurance broker startup","insurance sales business"],priority:.7},{slug:"travel-agency",name:"Travel Agency",category:"Professional Services",description:"Open a travel agency with our hospital
394ity services business plan template.",keywords:["travel agency business plan","travel consultant startup","tourism business"],priority:.7},{slug:"event-management",name:"Event Management",category:"Professional Services",description:"Start an event management company with our planning services business plan.",keywords:["event management business plan","event planner startup","party planning business"],priority:.7},{slug:"real-estate-development",name:"Real Estate Development",category:"Real Estate",description:"Start a real estate development company with our property business plan template.",keywords:["real estate development business plan","property developer startup","construction business"],priority:.7},{slug:"bed-and-breakfast",name:"Bed and Breakfast",category:"Real Estate",description:"Open a bed and breakfast with our hospitality business plan template.",keywords:["B&B business plan","bed and breakfast startup","inn business plan"],priority:.7},{slug:"rv-park",name:"RV Park",category:"Real Estate",description:"Start an RV park with our outdoor hospitality business plan template.",keywords:["RV park business plan","campground startup","RV resort business"],priority:.7},{slug:"goat-farm",name:"Goat Farm",category:"Agriculture",description:"Start a goat farm with our livestock business plan template.",keywords:["goat farm business plan","goat farming startup","livestock business"],priority:.7},{slug:"poultry-farm",name:"Poultry Farm",category:"Agriculture",description:"Open a poultry farm with our agricultural business plan template.",keywords:["poultry farm business plan","chicken farm startup","egg production business"],priority:.7},{slug:"microgreens",name:"Microgreens",category:"Agriculture",description:"Start a microgreens business with our urban farming business plan template.",keywords:["microgreens business plan","urban farming startup","microgreens growing business"],priority:.7},{slug:"farm",name:"Farm",category:"Agriculture",description:"Start a farm with our comprehensive agricultural business plan template.",keywords:["farm business plan","farming startup","agriculture business plan"],priority:.7},{slug:"catering",name:"Catering",category:"Food & Beverage",description:"Start a catering business with our food service business plan template.",keywords:["catering business plan","catering company startup","food catering business"],priority:.7},{slug:"daycare",name:"Daycare",category:"Services",description:"Open a daycare center with our childcare business plan template.",keywords:["daycare business plan","childcare center startup","daycare center business"],priority:.7},{slug:"landscaping",name:"Landscaping",category:"Services",description:"Start a landscaping business with our outdoor services business plan template.",keywords:["landscaping business plan","landscaping company startup","lawn and garden business"],priority:.7},{slug:"personal-trainer",name:"Personal Trainer",category:"Health & Wellness",description:"Start a personal training business with our fitness services business plan template.",keywords:["personal trainer business plan","fitness trainer startup","personal training business"],priority:.7},{slug:"trucking",name:"Trucking",category:"Automotive",description:"Start a trucking company with our transportation business plan template.",keywords:["trucking business plan","trucking company startup","freight business plan"],priority:.7},{slug:"box-truck",name:"Box Truck",category:"Automotive",description:"Start a box truck business with our delivery services business plan template.",keywords:["box truck business plan","box truck startup","delivery business plan"],priority:.7},{slug:"dump-truck",name:"Dump Truck",category:"Automotive",description:"Start a dump truck business with our hauling services business plan template.",keywords:["dump truck business plan","dump truck startup","hauling business plan"],priority:.7},{slug:"hotel",name:"Hotel",category:"Real Estate",description:"Open a hotel with our hospitality business plan template.",keywords:["hotel business plan","hotel startup","hospitality business plan"],priority:.7},{slug:"hostel",name:"Hostel",category:"Real Estate",description:"Open a hostel with our budget hospital
394ity business plan template.",keywords:["hostel business plan","hostel startup","budget accommodation business"],priority:.7},{slug:"airbnb",name:"Airbnb",category:"Real Estate",description:"Start an Airbnb rental business with our short-term rental business plan template.",keywords:["airbnb business plan","short-term rental startup","vacation rental business"],priority:.7},{slug:"real-estate",name:"Real Estate",category:"Real Estate",description:"Start a real estate business with our property services business plan template.",keywords:["real estate business plan","real estate agency startup","property business plan"],priority:.7},{slug:"house-flipping",name:"House Flipping",category:"Real Estate",description:"Start a house flipping business with our real estate investment business plan template.",keywords:["house flipping business plan","house flipping startup","real estate investment business"],priority:.7},{slug:"wedding-venue",name:"Wedding Venue",category:"Entertainment",description:"Open a wedding venue with our events business plan template.",keywords:["wedding venue business plan","wedding venue startup","event venue business"],priority:.7},{slug:"podcast",name:"Podcast",category:"Entertainment",description:"Start a podcast business with our media production business plan template.",keywords:["podcast business plan","podcast startup","media production business"],priority:.7},{slug:"flea-market",name:"Flea Market",category:"Retail",description:"Open a flea market with our marketplace business plan template.",keywords:["flea market business plan","flea market startup","marketplace business plan"],priority:.7},{slug:"nonprofit",name:"Nonprofit",category:"Professional Services",description:"Start a nonprofit organization with our mission-driven business plan template.",keywords:["nonprofit business plan","nonprofit startup","charitable organization business plan"],priority:.7},{slug:"drone",name:"Drone",category:"Technology",description:"Start a drone services business with our technology business plan template.",keywords:["drone business plan","drone services startup","UAV business plan"],priority:.7}],qz=e=>ba.find(t=>t.slug===e),Mz=e=>ba.filter(t=>t.category===e),Fz=()=>[...new Set(ba.map(e=>e.category))],Uz={"coffee-shop":"Café","coffee-cart":"Kiosque à Café","cafe-restaurant":"Café-Restaurant",restaurant:"Restaurant","food-truck":"Food Truck",bakery:"Boulangerie","bagel-shop":"Magasin de Bagels","sandwich-shop":"Sandwicherie","ice-cream-shop":"Glacier","juice-bar":"Bar à Jus","wine-bar":"Bar à Vin","mobile-bar":"Bar Mobile",brewery:"Brasserie","liquor-store":"Cave à Vins et Spiritueux","grocery-store":"Épicerie",gym:"Salle de Sport","basketball-gym":"Salle de Basket","yoga-studio":"Studio de Yoga","nail-salon":"Onglerie","hair-salon":"Salon de Coiffure","barber-shop":"Salon de Barbier","dog-grooming":"Toilettage Canin",pharmacy:"Pharmacie","non-medical-home-care":"Aide à Domicile","gift-shop":"Boutique de Cadeaux",bookstore:"Librairie","flower-shop":"Fleuriste","convenience-store":"Supérette","thrift-store":"Friperie","vending-machine":"Distributeurs Automatiques","cleaning-company":"Entreprise de Nettoyage","lawn-care":"Entretien de Pelouse","moving-company":"Entreprise de Déménagement","junk-removal":"Débarras et Enlèvement de Déchets",laundromat:"Laverie Automatique","car-wash":"Lavage Auto",photography:"Photographie","tattoo-shop":"Salon de Tatouage","auto-repair-shop":"Garage Automobile","tire-shop":"Magasin de Pneus","car-rental":"Location de Voitures","escape-room":"Escape Game","family-entertainment-center":"Parc de Loisirs Familial","indoor-golf":"Golf Indoor","recording-studio":"Studio d'Enregistrement","music-studio":"Studio de Musique","art-gallery":"Galerie d'Art","marketing-agency":"Agence Marketing","staffing-agency":"Agence d'Intérim","insurance-agency":"Agence d'Assurance","travel-agency":"Agence de Voyage","event-management":"Agence Événementielle","real-estate-development":"Promotion Immobilière","bed-and-breakfast":"Chambre d'Hôtes","rv-park":"Aire de Camping-Cars","goat-farm":"Élevage de Chèvres","poultry-farm":"Élevage de Poulets",microgreens:"Micro-Pousses",farm:"Exploitation Agricole",catering:"Traiteur",daycare:"Crèche",landscaping:"Paysagiste","personal-trainer":"Coach Sportif",trucking:"Trans
394port Routier","box-truck":"Camion de Livraison","dump-truck":"Camion Benne",hotel:"Hôtel",hostel:"Auberge de Jeunesse",airbnb:"Location Airbnb","real-estate":"Agence Immobilière","house-flipping":"Achat-Revente Immobilier","wedding-venue":"Salle de Mariage",podcast:"Podcast","flea-market":"Marché aux Puces",nonprofit:"Association à But Non Lucratif",drone:"Services de Drone"},$z={"coffee-shop":"Cafetería","coffee-cart":"Carrito de Café","cafe-restaurant":"Café Restaurante",restaurant:"Restaurante","food-truck":"Food Truck",bakery:"Panadería","bagel-shop":"Tienda de Bagels","sandwich-shop":"Sandwichería","ice-cream-shop":"Heladería","juice-bar":"Bar de Zumos","wine-bar":"Bar de Vinos","mobile-bar":"Bar Móvil",brewery:"Cervecería Artesanal","liquor-store":"Licorería","grocery-store":"Tienda de Comestibles",gym:"Gimnasio","basketball-gym":"Cancha de Baloncesto","yoga-studio":"Estudio de Yoga","nail-salon":"Salón de Uñas","hair-salon":"Peluquería","barber-shop":"Barbería","dog-grooming":"Peluquería Canina",pharmacy:"Farmacia","non-medical-home-care":"Cuidado en el Hogar","gift-shop":"Tienda de Regalos",bookstore:"Librería","flower-shop":"Floristería","convenience-store":"Tienda de Conveniencia","thrift-store":"Tienda de Segunda Mano","vending-machine":"Máquinas Expendedoras","cleaning-company":"Empresa de Limpieza","lawn-care":"Cuidado de Jardines","moving-company":"Empresa de Mudanzas","junk-removal":"Retirada de Escombros",laundromat:"Lavandería Automática","car-wash":"Lavado de Autos",photography:"Fotografía","tattoo-shop":"Estudio de Tatuajes","auto-repair-shop":"Taller Mecánico","tire-shop":"Tienda de Neumáticos","car-rental":"Alquiler de Coches","escape-room":"Sala de Escape","family-entertainment-center":"Centro de Entretenimiento Familiar","indoor-golf":"Golf Indoor","recording-studio":"Estudio de Grabación","music-studio":"Estudio de Música","art-gallery":"Galería de Arte","marketing-agency":"Agencia de Marketing","staffing-agency":"Agencia de Empleo","insurance-agency":"Agencia de Seguros","travel-agency":"Agencia de Viajes","event-management":"Organización de Eventos","real-estate-development":"Promoción Inmobiliaria","bed-and-breakfast":"Casa Rural","rv-park":"Parque de Autocaravanas","goat-farm":"Granja de Cabras","poultry-farm":"Granja Avícola",microgreens:"Microvegetales",farm:"Granja",catering:"Servicio de Catering",daycare:"Guardería",landscaping:"Jardinería y Paisajismo","personal-trainer":"Entrenador Personal",trucking:"Empresa de Transporte","box-truck":"Camión de Carga","dump-truck":"Camión Volquete",hotel:"Hotel",hostel:"Hostal",airbnb:"Alquiler Airbnb","real-estate":"Inmobiliaria","house-flipping":"Compra y Venta de Casas","wedding-venue":"Salón de Bodas",podcast:"Podcast","flea-market":"Mercadillo",nonprofit:"Organización sin Fines de Lucro",drone:"Servicios con Drones"},Wz={"coffee-shop":"Cafeteria","coffee-cart":"Carrinho de Café","cafe-restaurant":"Café Restaurante",restaurant:"Restaurante","food-truck":"Food Truck",bakery:"Padaria","bagel-shop":"Loja de Bagels","sandwich-shop":"Sanduicheria","ice-cream-shop":"Sorveteria","juice-bar":"Casa de Sucos","wine-bar":"Wine Bar","mobile-bar":"Bar Móvel",brewery:"Cervejaria Artesanal","liquor-store":"Loja de Bebidas","grocery-store":"Mercearia",gym:"Academia","basketball-gym":"Ginásio de Basquete","yoga-studio":"Estúdio de Yoga","nail-salon":"Salão de Unhas","hair-salon":"Salão de Beleza","barber-shop":"Barbearia","dog-grooming":"Banho e Tosa",pharmacy:"Farmácia","non-medical-home-care":"Cuidado de Idosos em Casa","gift-shop":"Loja de Presentes",bookstore:"Livraria","flower-shop":"Floricultura","convenience-store":"Loja de Conveniência","thrift-store":"Brechó","vending-machine":"Máquinas de Autoatendimento","cleaning-company":"Empresa de Limpeza","lawn-care":"Jardinagem","moving-company":"Empresa de Mudanças","junk-removal":"Remoção de Entulho",laundromat:"Lavanderia","car-wash":"Lava-Rápido",photography:"Fotografia","tattoo-shop":"Estúdio de Tatuagem","auto-repair-shop":"Oficina Mecânica","tire-shop":"Loja de Pneus","car-rental":"Locad
394ora de Veículos","escape-room":"Escape Room","family-entertainment-center":"Centro de Entretenimento Familiar","indoor-golf":"Golfe Indoor","recording-studio":"Estúdio de Gravação","music-studio":"Estúdio de Música","art-gallery":"Galeria de Arte","marketing-agency":"Agência de Marketing","staffing-agency":"Agência de Empregos","insurance-agency":"Corretora de Seguros","travel-agency":"Agência de Viagens","event-management":"Organização de Eventos","real-estate-development":"Incorporadora Imobiliária","bed-and-breakfast":"Pousada","rv-park":"Parque de Motorhomes","goat-farm":"Criação de Cabras","poultry-farm":"Granja Avícola",microgreens:"Microverdes",farm:"Fazenda",catering:"Buffet e Catering",daycare:"Creche",landscaping:"Paisagismo","personal-trainer":"Personal Trainer",trucking:"Transportadora","box-truck":"Caminhão Baú","dump-truck":"Caminhão Basculante",hotel:"Hotel",hostel:"Hostel",airbnb:"Aluguel por Temporada (Airbnb)","real-estate":"Imobiliária","house-flipping":"Compra e Venda de Imóveis","wedding-venue":"Espaço para Casamentos",podcast:"Podcast","flea-market":"Feira Livre",nonprofit:"Organização sem Fins Lucrativos",drone:"Serviços de Drone"},Vz={es:$z,fr:Uz,pt:Wz};function hS(e,t,n){if(!e||!t)return n;const a=Vz[t];return(a==null?void 0:a[e])??n}function Hz(e,t){switch(t){case"fr":return`Business Plan ${e}`;case"es":return`Plan de Negocios para ${e}`;case"pt":return`Plano de Negócios para ${e}`;default:return`${e} Business Plan`}}const Gz="https://bizplanner.ai",fS=e=>({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{name:"Home",path:"/"},...e].map((t,n)=>({"@type":"ListItem",position:n+1,name:t.name,item:t.path.startsWith("http")?t.path:`${Gz}${t.path}`}))}),$v=()=>{const e=Fz(),t=tu("/templates"),n=eu(),a=n.replace("/",""),r=fS([{name:"Templates",path:"/templates"}]),s={"@context":"https://schema.org","@type":"CollectionPage",name:"Free Business Plan Templates",description:`Browse ${ba.length}+ professionally crafted business plan templates by industry. Each includes financial projections, market analysis, and actionable strategies.`,url:"https://bizplanner.ai/templates",hasPart:ba.map(i=>({"@type":"ListItem",name:`${i.name} Business Plan`,description:i.description,url:`https://bizplanner.ai/templates/${i.slug}`}))};return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsxs(Gn,{children:[l.jsx("title",{children:"Templates | Free Business Plan Templates by Industry"}),l.jsx("meta",{name:"description",content:`Browse ${ba.length}+ professionally crafted business plan templates by industry. Each includes financial projections, market analysis, and actionable strategies.`}),l.jsx("link",{rel:"canonical",href:t}),l.jsx("meta",{property:"og:title",content:"Free Business Plan Templates | BizPlanner AI"}),l.jsx("meta",{property:"og:description",content:`Browse ${ba.length}+ professionally crafted business plan templates by industry.`}),l.jsx("meta",{property:"og:url",content:t}),l.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)}),l.jsx("script",{type:"application/ld+json",children:JSON.stringify(r)})]}),l.jsx(kr,{}),l.jsx("section",{className:"pt-32 pb-16 px-4",children:l.jsxs("div",{className:"max-w-6xl mx-auto text-center",children:[l.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-primary/10 rounded-full text-primary text-sm font-medium mb-6",children:[l.jsx(Ls,{className:"w-4 h-4"}),l.jsx("span",{children:"Free Business Plan Templates"})]}),l.jsxs("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-bold font-display mb-6",children:["Business Plan Templates for ",l.jsx("span",{className:"text-primary",children:"Every Industry"})]}),l.jsx("p",{className:"text-xl text-muted-foreground max-w-3xl mx-auto mb-8",children:"Get started with our professionally crafted business plan templates. Each template includes financial projections, market analysis, and actionable strategies."}),l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"text-lg px-8",children:["Create Your Custom Plan ",l.jsx(ot,{className:"ml-2 w-5 h-5"})]})})]})}),l.jsx("section",{className:"py-16 px-4",children:l.jsx("div",{className:"max-w-6xl mx-auto",children:e.map(i=>{const o=Mz(i);return l.jsxs("div",{className:"mb-16",children:[l.jsxs("h2",{className:"text-2xl md:text-3xl font-bold font-display mb-6 flex items-center gap-3",children:[l.jsx("span",{className:"w-2 h-8 bg-primary rounded-full"}),i]}),l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:o.map(c=>l.jsxs(ee,{to:`${n}/templates/${c.slug}`,className:"group p-6 bg-card border rounded-xl hover:border-primary hover:shadow-lg transition-all",children:[l.jsxs("div",{className:"flex items-start justify-between mb-4",children:[l.jsx("div",{className:"w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center",children:l.jsx(kn,{className:"w-6 h-6 text-primary"})}),l.jsx(ot,{className:"w-5 h-5 text-muted-foreground group-hover:text-primary group-hover:translate-x-1 transition-all"})]}),l.jsx("h3",{className:"text-lg font-semibold font-display mb-2 group-hover:text-primary transition-colors",children:Hz(hS(c.slug,a,c.name),a)}),l.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:c.description})]},c.slug))})]},i)})})}),l.jsx("section",{className:"py-16 px-4 bg-primary/5",children:l.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[l.jsx("h2",{className:"text-3xl md:text-4xl font-bold font-display mb-4",children:"Need a Custom Bu
394siness Plan?"}),l.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Our AI-powered platform creates personalized business plans tailored to your specific industry, market, and goals. Get started in minutes."}),l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"text-lg px-8",children:["Generate Your Plan Now ",l.jsx(Ls,{className:"ml-2 w-5 h-5"})]})})]})}),l.jsx(Sr,{})]})},Kz=e=>[{id:"executive-summary",title:"Executive Summary",content:`This ${e.name} business plan presents a comprehensive strategy for establishing and operating a successful venture in the ${e.category} sector. ${e.description} Our mission is to deliver exceptional products and services that exceed customer expectations while maintaining sustainable growth and profitability.`,subsections:[{title:"Business Objectives",content:"Our strategic objectives are designed to establish market presence and drive sustainable growth:",bullets:["Establish strong market presence within the first 12 months","Achieve 25% revenue growth year-over-year for the first 3 years","Build a loyal customer base with 40%+ retention rate","Expand service offerings based on market demand","Maintain profit margins of 20-30%"]},{title:"Key Financial Highlights",content:"Based on industry benchmarks and our business model:",bullets:["Projected Year 1 Revenue: $150,000 - $300,000","Initial Investment Required: $50,000 - $100,000","Break-even Point: 8-12 months","5-Year Revenue Target: $500,000 - $1,000,000"]}]},{id:"company-description",title:"Company Description",content:`Our ${e.name.toLowerCase()} business will be strategically positioned to serve the growing demand in the ${e.category.toLowerCase()} market. We combine industry expertise with innovative approaches to deliver superior value to our customers.`,subsections:[{title:"Business Model",content:"We operate on a service-based/product-based/hybrid business model, generating revenue through direct sales, recurring services, and strategic partnerships. Our competitive advantage lies in our commitment to quality, customer service, and operational efficiency.",bullets:[]},{title:"Location & Facilities",content:"The business will operate from a strategically located facility that provides optimal accessibility for our target customers. The location was selected based on demographic analysis, competition mapping, and growth potential.",bullets:[]}]},{id:"market-research",title:"Market Research",content:`The ${e.name.toLowerCase()} industry represents a significant opportunity with favorable market conditions. Our research indicates strong demand drivers and positive growth trends that support our business thesis.`,subsections:[{title:"Industry Analysis",content:`The ${e.category.toLowerCase()} sector continues to show resilience and growth. Key industry trends include digital transformation, changing consumer preferences, and increasing demand for quality and convenience.`,bullets:[]},{title:"Target Market",content:"Our primary target market consists of:",bullets:["Demographics: Adults aged 25-55 with middle to upper-middle income","Geographic: Local community and surrounding areas within 15-mile radius","Psychographics: Quality-conscious consumers who value reliability and service","Behavioral: Regular purchasers seeking trusted providers"]},{title:"Market Size Analysis",content:"Market opportunity analysis:",bullets:["Total Addressable Market: $XX billion nationally - the entire market demand for products/services like ours","Serviceable Addressable Market: $XX million in our region - the portion we can realistically target","Serviceable Obtainable Market: $XX thousand in Year 1, growing to $XX thousand by Year 5 - our realistic capture"]}]},{id:"swot-analysis",title:"SWOT Analysis",content:"A comprehensive SWOT analysis reveals our strategic position and guides our business decisions.",subsections:[{title:"Strengths",content:"Internal advantages that give us a competitive edge:",bullets:["Experienced management team with industry expertise","Strong focus on customer service and satisfaction","Competitive pricing strategy","Modern equipment and technology","Flexible service offerings"]}
394,{title:"Weaknesses",content:"Internal challenges we need to address:",bullets:["Limited initial brand recognition","Smaller marketing budget compared to established competitors","Initial capacity constraints","Dependency on key personnel"]},{title:"Opportunities",content:"External factors we can leverage for growth:",bullets:["Growing market demand in the region","Underserved customer segments","Technology adoption for efficiency gains","Strategic partnership possibilities","Expansion into adjacent services"]},{title:"Threats",content:"External challenges we must prepare for:",bullets:["Established competition with loyal customer bases","Economic uncertainty affecting consumer spending","Rising operational costs","Potential new market entrants","Regulatory changes"]}]},{id:"competitive-analysis",title:"Competitive Analysis",content:"Our competitive landscape includes established players and emerging competitors. We've identified key differentiators that will allow us to capture market share.",subsections:[{title:"Competitor Overview",content:"Key players in our market:",bullets:["Competitor A: Market leader with broad service offerings but higher prices","Competitor B: Price-focused competitor with limited service quality","Competitor C: Regional player with strong local presence","Competitor D: New entrant with innovative approach"]},{title:"Competitive Advantages",content:"What sets us apart from the competition:",bullets:["Superior customer service and personalized attention","Optimal price-to-value ratio","Faster turnaround times","Modern facilities and equipment","Loyalty and referral programs"]}]},{id:"products-services",title:"Products & Services",content:"Our comprehensive product and service portfolio is designed to meet the diverse needs of our target market while maximizing revenue opportunities.",subsections:[{title:"Core Offerings",content:"Our main products and services include:",bullets:["Primary Service/Product Line with competitive pricing","Secondary Services as add-on offerings","Premium Options for high-value customers","Packages and Bundles with value pricing"]},{title:"Pricing Strategy",content:"Our pricing strategy balances competitiveness with profitability:",bullets:["Standard pricing for core services","Premium pricing for specialized offerings","Volume discounts for repeat customers","Seasonal promotions and special offers"]}]},{id:"marketing-strategy",title:"Marketing & Sales Strategy",content:"Our integrated marketing approach combines digital and traditional channels to build brand awareness and drive customer acquisition.",subsections:[{title:"Digital Marketing",content:"Online presence and digital channels:",bullets:["Website: SEO-optimized site with online booking capability","Social Media: Active presence on Facebook, Instagram, and Google Business","Email Marketing: Newsletter and promotional campaigns","Online Reviews: Reputation management strategy"]},{title:"Traditional Marketing",content:"Offline marketing initiatives:",bullets:["Local Advertising: Community publications and local radio","Direct Mail: Targeted postcards and flyers","Networking: Chamber of Commerce and business associations","Referral Program: Customer incentives for referrals"]},{title:"Customer Metrics",content:"Key performance indicators:",bullets:["Target CAC: $XX-$XX per customer","Customer Lifetime Value (CLV): $XXX-$XXX","CLV:CAC Ratio Target: 3:1 or higher"]}]},{id:"operational-plan",title:"Operational Plan",content:"Our operations are designed for efficiency, quality control, and scalability.",subsections:[{title:"Daily Operations",content:"Day-to-day business operations:",bullets:["Operating Hours: Standard business hours with extended availability","Staffing: Appropriate coverage for customer demand","Service Capacity: Optimized for growth","Quality Checkpoints: Regular quality control measures"]},{title:"Suppliers & Vendors",content:"We maintain relationships with reliable suppliers to ensure consistent quality and competitive pricing. Key vendor criteria include reliability, quality, pricing, and payment terms.",bullets:[]},{title:"Technology & Equipment",content:"Modern systems and equipment:",bullets:["Point of Sale System: Modern POS for transactions and inventory","CRM Software: Customer relationship management","Scheduling System: Appointment and resource management","Industry-Specific Equipment: Relevant to our operations"]}]},{id:"organization-management",title:"Organization & Management",content:"Our experienced team brings diverse skills and industry knowledge to drive business success.",subsections:[{title:"Management Team",content:"Key leadership positions:",bullets:["Owner/CEO: Overall strategy and operations","Operations Manager: Day-to-day management and quality control","Marketing Lead: Customer acquisition and brand management","Finance/Admin: Bookkeeping and administrative functions"]},{title:"Hiring Plan",content:"Staffing growth strategy:",bullets:["Year 1: Core team of full-time and part-time employees","Year 2: Add positions for growth initiatives","Year 3-5: Scale team based on revenue and demand"]}]},{id:"financial-projections",title:"Financial Projections",content:"Our financial projections are based on conservative assumptions and industry benchmarks.",subsections:[{title:"Revenue Forecast",content:"Projected annual revenues:",bullets:["Year 1: $150,000 - $250,000","Year 2: $225,000 - $350,000","Year 3: $300,000 - $500,000","Year 4: $400,000 - $700,000","Year 5: $500,000 - $900,000"]},{title:"Expense Budget",content:"Major expense categories:",bullets:["Rent/Lease: $XX,XXX annually","Payroll: $XX,XXX annually","Inventory/Supplies: $XX,XXX annually","Marketing: $X,XXX annually","Utilities & Insurance: $X,XXX annually"]},{title:"Profitability",content:"Key profitability metrics:",bullets:["Gross Margin Target: 50-60%","Net Profit Margin Target: 15-25%","Break-even Timeline: 8-12 months"]}]},{id:"funding-request",title:"Funding Request",content:"This section outlines our capital requirements and intended use of funds.",subsections:[{title:"Capital Requirements",content:"Total Funding Required: $50,000 - $100,000",bullets:["Equipment & Fixtures: 40%","Initial Inventory: 25%","Marketing & Launch: 15%","Working Capital: 15%","Contingency: 5%"]},{title:"Investment Returns",content:"Expected returns for investors:",bullets:["Projected ROI: 25-40% annually by Year 3","Payback Period: 2-3 years","Equity Offered: Negotiable based on investment amount"]}]},{id:"risk-analysis",title:"Risk Analysis",content:"We've identified potential risks and developed mitigation strategies to protect the business.",subsections:[{title:"Key Risks & Mitigation",content:"Primary business risks and our response strategies:",bullets:["Market Risk: Diversified service offerings and flexible pricing","Operational Risk: Standard procedures and backup systems","Financial Risk: Conservative projections and cash reserves","Competition Risk: Differentiation through service quality","Regulatory Risk: Compliance monitoring and legal counsel"]}]}],Wv={es:{"travel-agency":{licenses:[{name:"Registro como vendedor de viajes (Seller of Travel)",note:"California, Florida, Hawái, Iowa y Washington exigen que cualquier empresa que venda viajes a sus residentes se registre como vendedor de viajes, constituya una fianza o mantenga fondos en fideicomiso, y muestre un número de registro en su publicidad, sin importar dónde esté radicada la agencia."},{name:"Licencia comercial local y registro de impuesto sobre ventas/actividad",note:"Exigida por la mayoría de ciudades y condados antes de facturar a los clientes, además de cualquier registro estatal como vendedor de viajes."},{name:"Seguro de errores y omisiones (E&O)",note:"No es una licencia gubernamental, pero aerolíneas, operadores turísticos y agencias anfitrionas suelen exigir esta cobertura antes de emitir una credencial IATA/CLIA o un nombramiento como proveedor."}],kpis:[{label:"Ingresos por comisiones y tarifas de servicio por reserva",benchmark:"Las agencias cobran cada vez más tarifas de planificación para compensar la caída de las comisiones de las aerolíneas, por lo que el ingreso por reserva combina la comisión del proveedor con tarifas directas al cliente."},{label:"Retención de clientes / tasa de reservas recurrentes",benchmark:"Una cartera de clientes basada en referidos y reservas recurrentes es la principal herramienta que tienen los agentes independientes frente a las agencias de viajes en línea (OTA) de venta directa al consumidor."},{label:"Valor promedio de reserva",benchmark:"Es más alto para especialistas en viajes de placer (cruceros, viajes de lujo, grupos o destinos) que para reservas simples de solo vuelo, que pagan una comisión mínima o nula."}],costDrivers:["Tarifas de acreditación de agencia anfitriona o IATAN/CLIA","Primas del seguro de errores y omisiones","Suscripciones a software de reservas y CRM","Costos de marketing y viajes de familiarización (FAM)","Registro estatal como vendedor de viajes y constitución de fianza","Comisiones que deben cederse a una agencia anfitriona si no se cuenta con acreditación independiente"],risks:[{risk:"Las agencias de viajes en línea y los canales de reserva directa de aerolíneas y hoteles reducen los ingresos por comisión.",mitigation:"Avanzar hacia un modelo de asesoría con tarifas fijas y especializarse en viajes complejos y de alto contacto (lujo, multigeneracionales, grupales, bodas de destino) donde los clientes valoran la planificación experta."},{risk:"La quiebra de un proveedor o una interrupción importante (por ejemplo, el colapso de una aerolínea u operador turístico) puede dejar a la agencia expuesta a solicitudes de reembolso de clientes.",mitigation:"Usar cuentas en fideicomiso donde la ley estatal lo exija, reservar a través de proveedores con fianza y contar con seguro de errores y omisiones."},{risk:"Los eventos globales (pandemias, inestabilidad geopolítica, desastres naturales) pueden detener las reservas con poco aviso.",mitigation:"Diversificar destinos y tipos de viaje, y mantener reservas de efectivo para cubrir los costos fijos durante un shock de demanda de varios meses."}]},"coffee-shop":{marketSizeValue:"75.500 millones de USD",licenses:[{name:"Permiso de servicio de alimentos del departamento de salud local",note:"Cubre equipos, suministro de agua, refrigeración y saneamiento; se inspecciona antes de la apertura y periódicamente después."}
394,{name:"Certificación de manipulador/gerente de alimentos",note:"La mayoría de estados o condados exige al menos un gerente certificado en protección de alimentos en el personal, además de tarjetas de manipulador de alimentos para el resto del equipo."},{name:"Licencia comercial y permiso de vendedor",note:"Exigidos por la ciudad o el condado, junto con un permiso de impuesto sobre ventas para la venta minorista de bebidas, comida y mercancía."}],kpis:[{label:"Crecimiento de la industria",benchmark:"Crecimiento anualizado del 2.5%, hasta alcanzar 75.500 millones de USD en ingresos en los cinco años previos a 2026."},{label:"Ticket promedio y tasa de venta cruzada",benchmark:"Los complementos de comida y mercancía por cada bebida vendida son una palanca clave en un negocio de ticket promedio por lo demás bajo."},{label:"Rendimiento en el turno pico",benchmark:"Bebidas preparadas por hora de trabajo durante la hora pico de la mañana, ya que las cafeterías generan una proporción desmedida de sus ventas diarias antes de las 10 a. m."},{label:"Frecuencia de visita del cliente",benchmark:"Las visitas recurrentes y habituales (varias veces por semana) generan la mayor parte de los ingresos de las cafeterías independientes, a diferencia de las ocasiones de consumo esporádico."}],costDrivers:["Compra y mantenimiento de máquinas espresso, molinos y equipo de preparación","Costos de café verde/tostado, leche y jarabes, que fluctúan con los precios de las materias primas y lácteos","Mano de obra concentrada en un pico matutino estrecho, lo que dificulta la eficiencia de personal","Alquiler en ubicaciones de alto tráfico peatonal","Vasos, tapas y empaques (una partida relevante del costo de ventas en un negocio orientado a pedidos para llevar)","Comisiones de punto de venta, aplicaciones de fidelización y plataformas de entrega de terceros"],risks:[{risk:"La volatilidad del precio del café (mercado C) y de los lácteos comprime los márgenes en una categoría donde los clientes resisten aumentos de precio frecuentes.",mitigation:"Fijar contratos con proveedores cuando sea posible, ajustar el costo de porciones o re
394cetas antes de subir los precios publicados, y diversificar hacia comida y mercancía con mayor flexibilidad de precios."},{risk:"Los ingresos están muy concentrados en dos o tres horas de la mañana, por lo que la programación de personal termina con falta de personal en el pico o exceso al mediodía.",mitigation:"Usar datos de ventas hora por hora para crear un horario de personal escalonado e impulsar el tráfico del mediodía con promociones de comida o incentivos para pedidos móviles."},{risk:"Las cadenas nacionales y los conceptos de autoservicio (drive-thru) compiten agresivamente en velocidad y precio dentro de la misma zona comercial.",mitigation:"Diferenciarse por calidad, ambiente y programas de comunidad/fidelización que un autoservicio de rápida rotación no puede replicar."}]},bakery:{licenses:[{name:"Licencia local de establecimiento minorista de alimentos",note:"Requerida para cualquier panadería que venda alimentos preparados en el local para consumo inmediato; cubre equipos, saneamiento y refrigeración."},{name:"Registro o exención de alimentos artesanales (cottage food, solo para producción en casa)",note:"La mayoría de estados permite elaborar ciertos productos horneados de bajo riesgo en una cocina doméstica sin licencia comercial completa, pero las ventas tienen un tope y un local comercial siempre requiere la licencia estándar."},{name:"Certificación de manipulador/gerente de alimentos y licencia comercial",note:"El personal que prepara alimentos suele necesitar una tarjeta de manipulador de alimentos, y el negocio necesita una licencia comercial local estándar y un permiso de impuesto sobre ventas."}],kpis:[{label:"Tasa de desperdicio / merma",benchmark:"El inventario perecedero no vendido, rebajado o descartado al final del día, es uno de los costos controlables más grandes de una panadería."},{label:"Mezcla de ventas mayoristas vs. minoristas",benchmark:"Las cuentas mayoristas (cafeterías, restaurantes, tiendas de abarrotes) suman volumen con un margen por unidad menor que las ventas minoristas directas."},{label:"Costo de mano de obra matutina como % de ventas",benchmark:"El personal de producción debe iniciar horas antes de la apertura, por lo que el costo laboral por unidad es muy sensible a la planificación del tamaño de los lotes."}],costDrivers:["Costos de harina, mantequilla, huevo y azúcar, que fluctúan con los mercados de materias primas","Hornos comerciales, batidoras y equipo de fermentación","Mano de obra de producción antes del amanecer","Empaques y desperdicio derivado de la corta vida útil de los productos","Alquiler minorista en una ubicación de tráfico peatonal","Permisos sanitarios y cumplimiento de normas de inocuidad alimentaria"],risks:[{risk:"Los productos horneados son altamente perecederos, por lo que cualquier error en el pronóstico de demanda se convierte en desperdicio el mismo día.",mitigation:"Dar seguimiento a las ventas por producto y franja horaria, y trasladar el exceso de inventario de la tarde a ventas con descuento de fin de día o estantes de productos del día anterior en lugar de desecharlo."},{risk:"Los aumentos en el precio de materias primas como harina, mantequilla y huevo afectan directamente el costo de ventas en una categoría donde los clientes resisten cambios de precio frecuentes.",mitigation:"Usar contratos de precio fijo con proveedores cuando estén disponibles y rediseñar recetas o tamaños de porción antes de subir los precios al público."},{risk:"La mano de obra de producción debe iniciar mucho antes de que abra el local, lo que dificulta ajustar el costo laboral a la demanda real del día.",mitigation:"Elaborar un horario de producción basado en un pronóstico de ventas continuo y escalonar el horneado para que los productos de mayor margen estén siempre frescos en las horas pico."}]},restaurant:{marketSizeValue:"1.1 billones de USD",licenses:[{name:"Permiso de servicio de alimentos del departamento de salud local",note:"Cubre el equipo de cocina, las temperaturas de refrigeración y el saneamiento; se inspecciona antes de la apertura y periódicamente después."},{name:"Licencia de licores (si se sirve alcohol)",note:"Emitida por la agencia estatal de control de bebidas alcohólicas, a menudo con un paso de aprobación local; puede representar un costo elevado y, en algunos mercados, su oferta está limitada."}
394,{name:"Certificación de manipulador/gerente de alimentos",note:"La mayoría de estados o condados exige que haya en todo momento al menos un gerente certificado en protección de alimentos."}],kpis:[{label:"Costo primario (comida + mano de obra como % de ventas)",benchmark:"Los costos de comida y de mano de obra representan cada uno alrededor de 33 centavos de cada dólar de ingresos en toda la industria, y juntos son el indicador de referencia que la mayoría de operadores monitorea semanalmente."},{label:"Tasa de rotación de mesas",benchmark:"Comensales atendidos por mesa en cada turno de servicio; la principal palanca de ingresos para restaurantes de servicio completo con capacidad de asientos fija."},{label:"Ticket promedio",benchmark:"Total facturado por comensal en comida, bebidas y alcohol; se monitorea por franja horaria para detectar problemas de menú o de venta adicional."},{label:"Utilización de asientos por hora de mano de obra",benchmark:"Ventas por hora de trabajo, usadas para ajustar el personal de sala y cocina frente a los comensales proyectados."}],costDrivers:["Costo de alimentos, expuesto a las fluctuaciones de precios de materias primas y de la cadena de suministro","Costo de mano de obra, incluidas las reglas de salario con propina, que varían mucho según el estado","Alquiler y remodelación de un espacio apto para cocina","Compra, mantenimiento y reparación de equipo de cocina","Costo y cumplimiento de la licencia de licores donde se sirve alcohol","Comisiones de plataformas de entrega de terceros"],risks:[{risk:"Los gastos operativos totales de los restaurantes han aumentado aproximadamente un 36% desde antes de la pandemia, comprimiendo márgenes ya ajustados.",mitigation:"Rediseñar los menús con ingredientes de suministro estable, renegociar periódicamente los contratos con proveedores y ajustar las porciones antes de subir los precios del menú."},{risk:"Los restaurantes de servicio completo están limitados por su capacidad de asientos y la rotación de mesas, por lo que un turno flojo pierde esos ingresos de forma permanente.",mitigation:"Usar datos de reservas y listas de espera para gestionar los comensales por franja horaria, y agregar promociones fuera de horas pico o eventos privados para llenar los turnos flojos."},{risk:"La rotación de personal de sala y cocina es crónicamente alta, lo que eleva los costos de contratación y capacitación.",mitigation:"Capacitar al personal en múltiples estaciones, crear rutas claras de ascenso y comparar los salarios con el mercado local para reducir la rotación."}]},"food-truck":{marketSizeValue:"2.800 millones de USD",licenses:[{name:"Permiso de establecimiento móvil de alimentos",note:"Emitido por el departamento de salud estatal o local específicamente para unidades móviles, además de (no en lugar de) un permiso estándar de servicio de alimentos."},{name:"Acuerdo con cocina comisaria (commissary)",note:"La mayoría de los códigos estatales y locales exigen que los vendedores móviles preparen, reabastezcan y limpien en una cocina comisaria autorizada en lugar de una cocina doméstica, y que documenten esa relación para los inspectores."},{name:"Inspección vehicular y de seguridad contra incendios, más permisos municipales de venta",note:"Cubre los sistemas de propano/GLP y la supresión de incendios en el camión, y a menudo se requieren permisos independientes por ciudad o evento para estacionarse y vender en propiedad pública."}],kpis:[{label:"Ventas diarias por ubicación/ruta",benchmark:"El ingreso por parada es la métrica central de planificación, ya que la ubicación del camión (zonas de almuerzo, eventos, cervecerías) explica la mayor parte de la variación en ventas."},{label:"Tiempo de preparación a servicio en un menú reducido",benchmark:"Un menú acotado y bien definido que pueda ejecutarse rápido desde una cocina pequeña es lo que hace viable el rendimiento del food truck en horas pico."},{label:"Mezcla de reservas para eventos/catering",benchmark:"Los eventos privados y reservas de catering suelen aportar mayores ingresos garantizados por hora que el servicio incierto en la calle o en un lote diario."}],costDrivers:["Compra o arrendamiento del camión y adaptación de la cocina","Tarifas de alquiler de la cocina comisaria","Combustible de propano y generador para el equipo de cocina","Permisos municipales de venta y tarifas de casetas en eventos/festivales, que varían mucho según la ubicación","Mantenimiento del vehículo y combustible para trasladarse entre ubicaciones","Almacenamiento limitado a bordo, que obliga a reabastecimientos frecuentes y en menor cantidad"],risks:[{risk:"Las normas locales de venta restringen dónde y por cuánto tiempo puede estacionarse un camión, y cambian de una ciudad a otra.",mitigation:"Diseñar una ruta basada en ubicaciones confirmadas y autorizadas, y en reservas de propiedad privada o eventos, en lugar de depender del estacionamiento improvisado en la calle."},{risk:"El clima y la estacionalidad pueden eliminar los ingresos de un día o una temporada entera 
394sin una opción de respaldo bajo techo.",mitigation:"Reservar mercados techados, cervecerías o recintos para eventos durante los meses fríos o lluviosos, y mantener una reserva de efectivo para los periodos flojos."},{risk:"Una falla mecánica deja fuera de operación a todo el negocio hasta que se repare el camión.",mitigation:"Presupuestar una reserva de mantenimiento, mantener una relación con un mecánico de confianza y considerar equipo de respaldo (por ejemplo, un generador de repuesto) para sistemas críticos."}]},"event-management":{licenses:[{name:"Licencia comercial local y permiso de impuesto sobre ventas",note:"La mayoría de ciudades y condados exige una licencia comercial general, y muchos estados exigen cobrar impuesto sobre ventas por las tarifas de planificación de eventos o los bienes revendidos a los clientes."},{name:"Certificado de seguro (COI) para cada recinto",note:"Casi todos los recintos exigen comprobante de cobertura de responsabilidad civil general, a menudo con el recinto como asegurado adicional, antes de firmar el contrato."},{name:"Permiso de servicio de alcohol (según se necesite)",note:"Si el organizador coordina o sirve alcohol directamente en lugar de hacerlo a través de un proveedor de catering o bar con licencia, generalmente se requiere un endoso estatal de responsabilidad por licor o un permiso temporal para eventos."}],kpis:[{label:"Presupuesto promedio de evento gestionado",benchmark:"Gasto total del cliente coordinado por evento: el principal impulsor de los ingresos por tarifas del organizador bajo modelos de precio basados en porcentaje."},{label:"Relación organizador-eventos",benchmark:"Número de eventos simultáneos que un solo organizador puede manejar sin que baje la calidad del servicio, típicamente limitado por las visitas al recinto y el personal del día del evento."},{label:"Ingresos por comisiones/referidos de proveedores",benchmark:"Proporción de los ingresos provenientes de comisiones y márgenes de proveedores preferidos frente a tarifas fijas de planificación."},{label:"Tasa de reservas repetidas y referidos",benchmark:"Proporción de nuevas reservas provenientes de clientes anteriores o referidos de proveedores en lugar de marketing pagado."}],costDrivers:["Mano de obra del organizador y del coordinador del día del evento (concentrada en gran medida en el día y la semana del evento)","Software para propuestas, cronogramas y CRM de clientes","Seguro de responsabilidad civil general y de responsabilidad profesional (errores y omisiones)","Marketing y producción de portafolio (sesiones estilizadas, fotografía, sitio web)","Depósitos a proveedores pagados por adelantado y recuperados de los anticipos del cliente","Costos de viaje y visitas al lugar para eventos fuera del mercado local"],risks:[{risk:"Los ingresos se concentran en fechas de fin de semana (especialmente bodas), por lo que las cancelaciones o una mala temporada de bodas golpean de forma desproporcionada.",mitigation:"Diversificarse hacia eventos corporativos y sin fines de lucro, que se reservan entre semana y siguen un ciclo estacional distinto al de las bodas."},{risk:"Las cancelaciones de clientes después de pagar los depósitos a proveedores pueden dejar al organizador cubriendo costos no reembolsables.",mitigation:"Usar contratos con anticipos escalonados no reembolsables y trasladar directamente al cliente las condiciones de los depósitos a proveedores."},{risk:"A los organizadores se les culpa personalmente por fallas de proveedores (falta de un catering, fallo audiovisual) que no controlan.",mitigation:"Evaluar a los proveedores en una lista corta aprobada con opciones de respaldo, y contar con personal y equipo de contingencia el día del evento."}]},laundromat:{marketSizeValue:"7.200 millones de USD",licenses:[{name:"Licencia comercial local y certificado de ocupación",note:"Exigida por la ciudad o el condado antes de abrir al público un espacio minorista de autoservicio."},{name:"Permiso de descarga de aguas residuales/alcantarillado",note:"Muchas autoridades municipales de agua exigen un permiso o una tarifa de conexión para la descarga de lavadoras comerciales de alto volumen."},{name:"Inspección de código de incendios y construcción para secadoras a gas/eléctricas",note:"Los cuerpos de bomberos locales inspeccionan la ventilación de las secadoras comerciales y la instalación de líneas de gas antes de aprobar la ocupación."}],kpis:[{label:"Ingreso por máquina",benchmark:"Recaudación semanal o mensual por lavadora/secadora: la forma estándar en que los operadores comparan el desempeño de sus locales."},{label:"Precio de venta por libra o por carga",benchmark:"Palanca de precio central, comparada con la competencia cercana y las tendencias de costos de servicios públicos."},{label:"Utilización de máquinas / ciclos por día",benchmark:"Número promedio de ciclos ejecutados por máquina al día, monitoreado para decidir cuándo agregar capacidad."}],costDrivers:["Agua, alcantarillado y gas/electricidad (por lo general el mayor costo recurrente)","Compra, financiamiento y ciclos de reemplazo de lavadoras y secadoras","Alquiler y adecuación de la plomería, ventilación y capacidad eléctrica","Mano de obra de encargados y sistemas de seguridad/cámaras para horarios sin supervisión","Reparación de máquinas e inventario de repuestos","Comisiones de sistemas de pago con tarjeta/aplicación para máquinas sin efectivo"],risks:[{risk:"Los costos de servicios públicos (agua, gas, electricidad) pueden subir más rápido que los precios de venta, comprimiendo los márgenes.",mitigation:"Instalar máquinas de alta eficiencia y monitorear las facturas de servicios frente al volumen para reajustar las tarifas de venta con regularid
394ad."},{risk:"Los locales sin supervisión son vulnerables al vandalismo, robo de monedas y merodeo.",mitigation:"Usar sistemas de pago sin efectivo con tarjeta/aplicación, cámaras y horarios programados de encargados en las horas pico."},{risk:"La nueva construcción de apartamentos con lavadora/secadora dentro de la unidad reduce con el tiempo la base local de clientes.",mitigation:"Monitorear las tendencias de construcción multifamiliar local antes de firmar un contrato de alquiler a largo plazo y diversificarse hacia el lavado por peso (wash-dry-fold) y cuentas comerciales."}]},daycare:{marketSizeValue:"72.800 millones de USD",licenses:[{name:"Licencia estatal de establecimiento de cuidado infantil",note:"Cada estado exige una licencia de su agencia estatal de licencias de cuidado infantil antes de que un centro u hogar familiar pueda operar legalmente, la cual cubre proporciones de personal por niño, verificaciones de antecedentes y seguridad de las instalaciones."},{name:"Verificación de antecedentes y exámenes de salud del personal",note:"Las leyes federales y estatales exigen verificaciones de antecedentes penales por huellas dactilares, revisión del registro de abuso infantil y exámenes de salud/tuberculosis para todo el personal con acceso no supervisado a menores."},{name:"Inspecciones locales de incendios, salud y construcción",note:"Las instalaciones deben aprobar las inspecciones del cuerpo de bomberos y del departamento de salud, que cubren salidas de emergencia, saneamiento y manipulación de alimentos, antes de obtener la licencia."}],kpis:[{label:"Cumplimiento de la proporción personal-niño",benchmark:"Establecida por las normas estatales de licencias y varía según el grupo de edad; el mayor determinante de la matrícula permitida y del costo laboral."},{label:"Utilización de matrícula / capacidad",benchmark:"Cupos ocupados divididos entre la capacidad autorizada: el principal impulsor de ingresos dado que los costos de personal e instalaciones son en gran parte fijos."},{label:"Tasa de rotación del personal",benchmark:"Se monitorea de cerca porque el cumplimiento de las proporciones se deteriora rápidamente cuando el personal se va y los reemplazos no reciben la verificación de antecedentes a tiempo."}],costDrivers:["Salarios de maestros y cuidadores (el mayor costo, determinado directamente por las proporciones obligatorias)","Alquiler de las instalaciones y requisitos de espacio de juego/exteriores","Seguro de responsabilidad civil, más alto que en la mayoría de pequeñas empresas por la exposición relacionada con la seguridad infantil","Verificaciones de antecedentes, tarifas de licencia y requisitos de educación continua para el personal","Comidas, insumos y materiales curriculares","Mejoras a las instalaciones para cumplir con los requisitos de incendios, salud y accesibilidad (ADA)"],risks:[{risk:"Las proporciones obligatorias de personal por niño implican que la ausencia de un solo cuidador puede obligar a rechazar familias o cerrar un salón por el día.",mitigation:"Capacitar al personal en varios grupos de edad y mantener un grupo de suplentes disponibles para cubrir ausencias sin infringir las proporciones."},{risk:"El aumento en los precios promedio del cuidado infantil está llevando al límite la capacidad de pago de muchas familias, lo que limita cuánto se puede subir la matrícula.",mitigation:"Combinar los ingresos con programas de vales subsidiados, alianzas con empleadores y matrícula en escala móvil para ampliar la base de pago."},{risk:"Una sola infracción de licencia o incidente de seguridad puede provocar el cierre y un daño reputacional que acabe con la matrícula.",mitigation:"Realizar auditorías internas de seguridad periódicas antes de las inspecciones estatales y mantener documentado el cumplimiento de proporciones y verificaciones de antecedentes."}]},trucking:{annualRevenueNote:"Ingreso anual promedio de 2023 por camión reportado por transportistas de carga por contrato, que va desde aproximadamente 210.000 USD para camiones de carga completa/plataforma hasta cerca de 457.000 USD para camiones de carga fraccionada (LTL); los operadores independientes de un solo camión tienden a ubicarse en el extremo inferior.",marketSizeValue:"732.300 millones de USD",licenses:[{name:"Número USDOT",note:"Exigido por la FMCSA (Administración Federal de Seguridad de Transportistas Motorizados) para todo operador de vehículo comercial que participe en el comercio interestatal, sin importar el tipo de carga."},{name:"Autoridad operativa (número MC)",note:"Requerida además del número USDOT para transportistas de carga por contrato que trasladen mercancías reguladas o pasajeros a cambio de pago entre estados."},{name:"Licencia de impuesto sobre combustible IFTA y registro prorrateado IRP",note:"Los operadores que trabajan en varios estados deben inscribirse en el Acuerdo Internacional de Impuesto sobre Combustible (IFTA) y en el Plan Internacional de Registro (IRP) para cruzar legalmente las fronteras estatales."}],kpis:[{label:"Millas anuales por camión",benchmark:"Promedió 80.159 millas (129.000 km) por camión en toda la industria de carga por contrato en 2023."},{label:"Costo por milla",benchmark:"El costo marginal promedio de operar un camión en la industria fue de aproximadamente 1.78-2.26 USD por milla (1.11-1.40 USD por km) en 2023-2024, según los precios del combustible."},{label:"Porcentaje de millas en vacío (deadhead)",benchmark:"Millas recorridas sin carga pagada, monitoreadas porque cada milla en vacío implica el costo total de combustible y desgaste sin ingresos que lo compensen."},{label:"Millas entre averías",benchmark:"Promedió 37.700 millas (60.700 km) en toda la industria en 2023, usado como referencia para los programas de mantenimiento preventivo."}],costDrivers:["Combustible: el costo marginal por milla más alto y volátil","Pagos de arrend
394amiento o compra del camión y el remolque","Salarios y beneficios de los conductores, que suben marcadamente durante la escasez de conductores","Reparación y mantenimiento, llantas y costos por averías imprevistas","Primas de seguro comercial de auto y de carga","Permisos, peajes y tarifas de registro IFTA/IRP en los estados donde se opera"],risks:[{risk:"Las tarifas de flete son muy cíclicas y pueden caer por debajo de los costos operativos durante recesiones del sector, como ocurrió entre 2023 y 2024.",mitigation:"Diversificar rutas de carga y contratos con clientes (una combinación de carga spot y carga bajo contrato dedicado) para evitar una exposición total a las fluctuaciones del mercado spot."},{risk:"La rotación de conductores, especialmente entre los transportistas de carga completa de larga distancia, interrumpe el servicio y eleva los costos de contratación.",mitigation:"Comparar la remuneración y las políticas de tiempo en casa de los conductores con datos de ATRI y priorizar horarios consistentes, lo que según los datos reduce la rotación."},{risk:"Una sola infracción grave de seguridad o un accidente puede suspender la autoridad operativa y cerrar el negocio.",mitigation:"Mantener un monitoreo proactivo del puntaje CSA, los expedientes de calificación de conductores y los registros de mantenimiento preventivo muy por encima de los mínimos exigidos por la FMCSA."}]},catering:{licenses:[{name:"Permiso de establecimiento de servicio de alimentos",note:"Emitido por el departamento de salud estatal o del condado tras inspeccionar la cocina comercial usada para preparar los alimentos que se venden."},{name:"Certificación de manipulador/gerente de alimentos",note:"La mayoría de estados exige al menos un gerente certificado en protección de alimentos en el personal, además de tarjetas de manipulador de alimentos para el personal de línea, conforme a los códigos de salud locales."},{name:"Permisos móviles/temporales de alimentos para eventos",note:"Muchos condados exigen un permiso temporal de servicio de alimentos independiente para cada evento fuera del local, especialmente cuando la comida se prepara o se mantiene en el sitio en lugar de en la cocina con licencia."}],kpis:[{label:"Costo por persona / precio por comensal",benchmark:"Unidad central de precio para eventos con catering, construida a partir del costo de alimentos, mano de obra y equipo de alquiler por invitado."},{label:"Porcentaje de costo de alimentos",benchmark:"Costo de alimentos y bebidas como proporción del ticket de catering, la principal palanca que los proveedores de catering controlan para proteger el margen."},{label:"Utilización de cocina y personal por día de evento",benchmark:"La concentración de bodas y eventos sociales en fin de semana hace que la capacidad entre semana (catering corporativo, pedidos para recoger) llene el tiempo de cocina que de otro modo estaría inactivo."}],costDrivers:["Costo de ventas de alimentos y bebidas","Mano de obra del día del evento (chefs, meseros, bartenders), pagada en gran parte por evento","Alquiler de cocina comercial o de cocina comisaria","Equipo, mantelería y artículos de alquiler (chafing dishes, mesas, cristalería)","Vehículos de reparto y combustible para eventos fuera del local","Seguro de responsabilidad por licor y responsabilidad civil general"],risks:[{risk:"Los ingresos se concentran en fines de semana y temporadas festivas, dejando ociosa la capacidad de cocina entre semana.",mitigation:"Construir un canal de catering corporativo y pedidos para recoger/loncheras que se reserve de lunes a viernes para suavizar la demanda."},{risk:"La volatilidad en el costo de los alimentos (precios de proteínas y productos frescos) puede erosionar los márgenes en contratos con precio fijo por comensal firmados meses antes.",mitigation:"Incluir una cláusula de ajuste por costo de alimentos en los contratos firmados con mucha anticipación al evento, y definir los menús más cerca de la fecha del evento cuando sea posible."},{risk:"Un incidente de enfermedad transmitida por alimentos en un solo evento puede desencadenar medidas del departamento de salud y daño reputacional para todo el negocio.",mitigation:"Aplicar un registro estricto de temperaturas y supervisión de un gerente certificado en alimentos en cada evento, no solo en la cocina base."}]},"barber-shop":{marketSizeValue:"7000 millones de USD",licenses:[{name:"Licencia estatal de barbero",note:"Todos los estados exigen que los barberos completen un programa de barbería con licencia y aprueben un examen del colegi
394o estatal antes de atender clientes."},{name:"Licencia de establecimiento de barbería",note:"La mayoría de los estados otorga la licencia del local físico por separado de la de cada barbero, con una inspección de salud y sanidad antes de abrir."},{name:"Licencia comercial local y permiso de impuesto sobre ventas",note:"Exigidos por tu ciudad o condado, además de un permiso de vendedor si vendes al por menor productos de cuidado personal."}],kpis:[{label:"Utilización de sillas",benchmark:"Horas reservadas divididas entre horas disponibles por silla — el principal impulsor de los ingresos del local."},{label:"Ticket promedio",benchmark:"Corte más servicios adicionales (barba, delineado, producto) por visita de cliente."},{label:"Tasa de reagendamiento",benchmark:"Porcentaje de clientes que agendan su próxima cita antes de salir."}],costDrivers:["Renta de silla que te pagan, o comisión que pagas a los barberos","Instalación de plomería y electricidad por estación de trabajo","Ciclos de reemplazo de máquinas, tijeras y sillas","Seguro de responsabilidad civil general y de accidentes laborales","Inventario de productos al por menor (pomadas, aceites, shampoos)","Renovaciones de licencia estatal y educación continua"],risks:[{risk:"Los barberos son dueños de la relación con sus clientes y pueden llevarse su cartera al irse.",mitigation:"Usa sistemas de reserva propios del local y programas de lealtad para que los clientes pertenezcan al negocio, y ofrece escalas de comisión o propiedad de silla para retener a los mejores barberos."},{risk:"Los ingresos están limitados por el número de sillas, así que un día lento entre semana pierde esa capacidad para siempre.",mitigation:"Mide la utilización por silla y por franja horaria, y ajusta el personal o aplica precios en horas valle para llenar los huecos entre semana."},{risk:"Las cadenas de descuento y los barberos que operan por app presionan los precios a la baja en mercados urbanos densos.",mitigation:"Compite con habilidades especializadas (degradados, arreglo de barba, navaja) y ambiente en lugar de precio."}]},"goat-farm":{startupCostNote:"Depende del acceso a pastura, cercado, animales reproductores y refugio para un rebaño pequeño a mediano.",annualRevenueNote:"Basado en un rebaño de 50 cabras paridas en primavera que vende cabritos de 25 a 32 kg (55–70 lbs); escala según el tamaño del rebaño.",licenses:[{name:"Identificación del predio / registro de ganado",note:"La mayoría de los estados exige registrar el predio de la granja para trazabilidad sanitaria animal antes de mover animales fuera de la finca."},{name:"Permiso lácteo Grado A (solo cabras lecheras)",note:"Exigido por los reguladores lácteos estatales antes de vender leche fluida o productos lácteos procesados."},{name:"Identificación de rebaño contra el scrapie",note:"El USDA (Departamento de Agricultura de EE. UU.) exige aretes oficiales de identificación contra el scrapie en ovejas y cabras vendidas o trasladadas entre estados."}],kpis:[{label:"Peso de mercado en la venta",benchmark:"25–32 kg (55–70 lbs)"},{label:"Tasa de parición por cabra",benchmark:"Crías por cabra expuesta a monta — el principal impulsor de ingresos por animal"},{label:"Mortalidad de cabritos hasta el destete",benchmark:"Se monitorea de cerca porque la carga de parásitos y la depredación son las causas más severas."}],costDrivers:["Alimento y heno suplementario durante el invierno o la temporada seca","Cercado — las cabras necesitan un cercado mucho más resistente que el ganado bovino u ovino","Control de parásitos y atención veterinaria","Reemplazo de animales reproductores y rotación de sementales","Control de depredadores (perros y burros guardianes, corrales nocturnos seguros)","Transporte a subasta o planta procesadora"],risks:[{risk:"El gusano barber pole (Haemonchus contortus) causa fuertes pérdidas de cabritos y cada vez es más resistente a los desparasitantes.",mitigation:"Rota las pasturas, monitorea con el sistema de puntuación FAMACHA y aplica desparasitación selectiva dirigid
394a en lugar de tratar a todo el rebaño."},{risk:"La depredación de coyotes y perros sueltos puede acabar con toda la camada de cabritos de una temporada.",mitigation:"Usa animales guardianes de ganado y encierra a los cabritos en corrales nocturnos seguros."},{risk:"Los precios de subasta fluctúan estacionalmente según la demanda de festividades étnicas y religiosas.",mitigation:"Programa las pariciones para coincidir con las ventanas de demanda festiva y desarrolla canales de venta directa al consumidor y de animales reproductores."}]},pharmacy:{licenses:[{name:"Permiso del colegio farmacéutico estatal (State Board of Pharmacy)",note:"Se otorga al local de la farmacia y exige tener registrado un farmacéutico responsable (pharmacist-in-charge)."},{name:"Registro ante la DEA (agencia antidroga de EE. UU.)",note:"Requerido antes de poder pedir, almacenar o dispensar cualquier sustancia controlada."},{name:"Número NPI e inscripción en redes de PBM (administradores de beneficios farmacéuticos)",note:"Sin contratos con PBM y Medicare Parte D no puedes facturar al seguro, que representa la gran mayoría del volumen de recetas."},{name:"Licencia estatal de mayorista/reenvasador",note:"Necesaria si preparas fórmulas magistrales o reenvasas medicamentos para otras instalaciones en lugar de dispensar solo a pacientes."}],kpis:[{label:"Participación de farmacias independientes en el retail farmacéutico de EE. UU.",benchmark:"35%"},{label:"Independientes que ofrecen vacunas contra la influenza",benchmark:"91%"},{label:"Recetas surtidas por día",benchmark:"La métrica de volumen clave que pedirán los prestamistas; determina el personal y la rotación de inventario."},{label:"Tasa de dispensación de genéricos",benchmark:"Una mayor proporción de genéricos generalmente implica mejor margen por receta que un volumen dominado por marcas."}],costDrivers:["Costo de mantener inventario de medicamentos, especialmente de marca y especialidad","Tasas de reembolso de los PBM y cargos DIR retroactivos","Salarios de farmacéuticos y técnicos","Software de dispensación, robótica y cuotas de recetas electrónicas","Responsabilidad profesional y cumplimiento regulatorio","Servicio de entrega a domicilio si lo ofreces localmente"],risks:[{risk:"El reembolso de los PBM puede quedar por debajo del costo de adquisición en algunas recetas, y los cargos DIR recortan el margen meses después de la venta.",mitigation:"Da seguimiento al margen bruto por receta, únete a una PSAO (organización de servicios farmacéuticos) para tener poder de negociación, y aumenta los servicios clínicos pagados en efectivo."},{risk:"Los ingresos están concentrados en una combinación de pagadores que no controlas.",mitigation:"Diversifícate hacia vacunación, manejo terapéutico de medicamentos (MTM), pruebas rápidas en el punto de atención, preparación magistral y equipo médico duradero."},{risk:"Las cadenas y las farmacias de pedido por correo propiedad de los PBM te quitan recetas de mantenimiento recurrentes.",mitigation:"Compite con empaque de adherencia, entrega a domicilio y servicio personalizado para pacientes complejos y de edad avanzada."}]},"ice-cream-shop":{marketSizeValue:"7400 millones de USD",licenses:[{name:"Permiso de servicio de alimentos del departamento de salud local",note:"Cubre equipos, temperaturas de refrigeración y almacenamiento; se inspecciona antes de abrir y periódicamente después."},{name:"Certificación de manipulador de alimentos / gerente",note:"El personal que sirve alimentos normalmente debe contar con un certificado de seguridad alimentaria reconocido por el estado."},{name:"Licencia de fabricante de postres congelados / lácteos",note:"Exigida en muchos estados si elaboras el helado en el local en lugar de revender producto terminado."}],kpis:[{label:"Crecimiento anualizado de la industria",benchmark:"5.8% en los cinco años hasta 2025"},{label:"Participación de la temporada alta en los ingresos anuales",benchmark:"La mayoría de las heladerías obtienen la mayor parte de sus ventas anuales en aproximadamente cuatro meses de verano."},{label:"Merma y desperdicio por tina",benchmark:"El producto perdido por quemadura de congelador, derretimiento y sobreservido golpea directamente un costo de mercancía ya ajustado."}],costDrivers:["Vitrinas de exhibición, congelador de lotes y refrigeración de respaldo","Fluctuaciones de precio de lácteos, crema e ingredientes adicionales","Aumento de personal en verano y alta rotación de personal joven","Renta en ubicaciones de alto tráfico peatonal que solo usas al máximo en verano","Electricidad para congelación continua","Permisos de salud y cumplimiento de seguridad alimentaria"],risks:[{risk:"La demanda es muy estacional y depende del clima, mientras la renta fija corre todo el año contra solo cuatro meses fuertes.",mitigation:"Negocia condiciones de arrend
394amiento estacionales cuando sea posible y agrega café, bebidas calientes, pasteles o catering para los meses fríos."},{risk:"Una falla del congelador destruye el inventario y cierra el local de inmediato.",mitigation:"Presupuesta refrigeración de respaldo, alarmas de temperatura y seguro contra fallas de equipo."},{risk:"Los picos de precio de los lácteos golpean el costo de mercancía en una categoría donde los clientes resisten los aumentos de precio.",mitigation:"Fija precios con proveedores antes de la temporada y ajusta el tamaño de las porciones en lugar del precio de lista."}]},"cleaning-company":{licenses:[{name:"Licencia comercial general",note:"La mayoría de las ciudades y condados exige una licencia comercial estándar antes de poder facturar a los clientes."},{name:"Fianza de limpieza (janitorial bond)",note:"Una fianza de garantía que cubre pérdidas del cliente por robo de empleados — comúnmente exigida antes de otorgar un contrato comercial."},{name:"Seguro de responsabilidad civil general y de accidentes laborales",note:"Exigido en casi todos los contratos comerciales, y el seguro de accidentes laborales es obligatorio en la mayoría de los estados una vez que tienes empleados."}],kpis:[{label:"Ingresos por cuadrilla por día",benchmark:"Los trabajos completados por turno de cuadrilla determinan si la densidad de ruta está funcionando."},{label:"Mano de obra como porcentaje de los ingresos",benchmark:"La partida de costo dominante; las pequeñas ineficiencias de programación se notan de inmediato aquí."},{label:"Tasa de retención de clientes",benchmark:"Los contratos recurrentes son todo el modelo de negocio — la pérdida de clientes es mucho más dañina que en servicios puntuales."},{label:"Tiempo de traslado entre trabajos",benchmark:"El traslado no facturable es el asesino oculto del margen en el trabajo de rutas residenciales."}],costDrivers:["Salarios del personal de limpieza e impuestos sobre nómina","Combustible, seguro y mantenimiento de vehículos en todas las rutas","Productos químicos y consumibles de limpieza","Primas de fianza y seguro de responsabilidad civil","Equipo (aspiradoras, máquinas de piso, hidrolavadoras)","Reclutamiento y capacitación para reemplazar rotación de personal"],risks:[{risk:"La rotación del personal de limpieza es estructuralmente alta, y las cuadrillas inconsistentes son la principal razón de cancelación de contratos.",mitigation:"Arma cuadrillas fijas por cliente, paga por encima del mercado local y usa listas de verificación con calificación de calidad visible para el cliente."},{risk:"Un solo contrato comercial grande puede representar la mayoría de los ingresos, y perderlo es una amenaza existencial.",mitigation:"Limita a cualquier cliente individual a un porcentaje objetivo de los ingresos y mantén una mezcla de trabajo residencial y comercial."},{risk:"Las reclamaciones por daños a la propiedad o robo pueden terminar una relación comercial y aumentar las primas.",mitigation:"Afianza a todo el personal, realiza verificaciones de antecedentes y documenta el estado de la propiedad al inicio de cada contrato."}]},"auto-repair-shop":{marketSizeValue:"92 100 millones de USD",licenses:[{name:"Registro estatal de distribuidor de reparación automotriz",note:"Estados como California exigen que todo taller que realice reparaciones pagadas se registre antes de abrir; los requisitos varían mucho en otros lugares."},{name:"Cumplimiento de residuos peligrosos ante la EPA (agencia ambiental de EE. UU.) y el estado",note:"El aceite usado, el anticongelante, los solventes y los refrigerantes son flujos de residuos regulados con registros de disposición obligatorios."},{name:"Certificación de técnico bajo la Sección 609 de la EPA",note:"Exigida a cualquier persona que dé servicio a sistemas de aire acondicionado de vehículos."},{name:"Seguro de responsabilidad de garaje (garagekeepers liability)",note:"El seguro de responsabilidad civil general estándar no cubre los vehículos de clientes bajo tu cuidado, custodia y control."}],kpis:[{label:"Utilización de bahías",benchmark:"Horas productivas de bahía frente a horas de bahía disponibles — esta capacidad es el techo de ingresos."},{label:"Tarifa laboral efectiva",benchmark:"Ingresos reales por mano de obra divididos entre horas trabajadas, normalmente por debajo de la tarifa publicada."},{label:"Valor promedio de orden de reparación",benchmark:"Piezas más mano de obra por ticket;
394 sube con disciplina de inspección y seguimiento de trabajo rechazado."},{label:"Eficiencia del técnico",benchmark:"Horas facturadas frente a horas registradas por técnico."}],costDrivers:["Costo de adquisición de piezas y obsolescencia de inventario","Salarios de técnicos calificados en un mercado laboral escaso","Elevadores, alineadoras y equipos de diagnóstico","Renta del taller, con límites de zonificación sobre dónde puedes operar","Seguro de garaje y de responsabilidad civil general","Capacitación y herramientas continuas para trabajo con vehículos eléctricos y sistemas ADAS (asistencia avanzada al conductor)"],risks:[{risk:"La escasez de técnicos significa que la capacidad está limitada por la contratación, no por la demanda.",mitigation:"Crea un programa de aprendizaje con un colegio técnico local y paga bien para retener en lugar de estar recontratando constantemente."},{risk:"Los vehículos eléctricos y los sistemas avanzados de asistencia al conductor requieren herramientas costosas, equipo de calibración y certificación.",mitigation:"Presupuesta una partida recurrente de herramientas y especialízate de forma deliberada en lugar de intentar atender todo."},{risk:"Las reparaciones que regresan (comebacks) destruyen tanto el margen como la reputación en un mercado local basado en referencias.",mitigation:"Aplica una inspección multipunto documentada y un control de calidad antes de entregar el vehículo."}]},hostel:{marketSizeValue:"651.7 millones de USD",licenses:[{name:"Licencia de hospedaje / alojamiento transitorio",note:"Exigida por el estado o la ciudad para cualquier propiedad que rente camas por noche."},{name:"Certificado de seguridad contra incendios y aforo",note:"Los dormitorios compartidos enfrentan reglas más estrictas de salidas de emergencia, alarmas y límites de aforo que el alojamiento de ocupación individual."},{name:"Registro del impuesto de ocupación transitoria",note:"Debes registrarte para cobrar y remitir el impuesto local de hospedaje por cada noche vendida."},{name:"Permiso del departamento de salud",note:"Aplica a los baños compartidos, y a cualquier cocina comunitaria o servicio de desayuno incluido."}],kpis:[{label:"Tasa de ocupación por cama",benchmark:"Se mide por cama en lugar de por habitación, lo que marca la principal diferencia con los reportes de hoteles."},{label:"RevPAB (ingreso por cama disponible)",benchmark:"El equivalente en hostales del RevPAR, y la cifra que pedirán los prestamistas."},{label:"Duración promedio de la estadía",benchmark:"Las estadías más largas reducen el costo de limpieza por rotación y la comisión de OTA por noche vendida."},{label:"Participación de reservas directas",benchmark:"Cada punto que se recupera de las OTA es margen recuperado."}],costDrivers:["Arrendamiento o hipoteca de la propiedad, el costo fijo dominante","Mano de obra de limpieza, que escala con la rotación de camas y no con el número de habitaciones","Comisiones de OTA (Hostelworld, Booking.com)","Servicios públicos en espacios comunes ocupados continuamente","Ciclos de reemplazo de literas, colchones y ropa de cama","Seguridad: casilleros, acceso con tarjeta y personal nocturno"],risks:[{risk:"La ocupación varía fuertemente con la estacionalidad turística mientras los costos de arrendamiento y personal se mantienen fijos.",mitigation:"Atrae segmentos de temporada baja como estudiantes, trabajadores viajeros y huéspedes de larga estadía con tarifas semanales."},{risk:"La dependencia de las OTA cede una parte importante de cada reserva a una plataforma que no controlas.",mitigation:"Invierte en reservas directas, incentivos para huéspedes recurrentes y un sitio móvil rápido."},{risk:"Los dormitorios compartidos generan exposición a robos, seguridad y responsabilidad civil entre desconocidos.",mitigation:"Instala casilleros por cama y acceso por piso con tarjeta, y mantén personal en el sitio durante la noche."}]},"flower-shop":{netMarginNote:"El inventario perecedero y la demanda concentrada en pocas festividades reducen el margen fuera de las semanas pico.",marketSizeValue:"7900 millones de USD",licenses:[{name:"Permiso de vendedor / licencia de impuesto sobre ventas",note:"Requerido para vender arreglos al por menor y remitir el impuesto estatal sobre ventas."},{name:"Licencia municipal de operación comercial",note:"Licencia municipal estándar para un local minorista."},{name:"Permiso de importación del USDA (tallos importados)",note:"Aplica si importas flores cortadas directamente en lugar de comprarlas a través de un mayorista nacional."}],kpis:[{label:"Valor promedio del pedido",benchmark:"$50–$80"},{label:"Tasa de merma de inventario",benchmark:"5–10% de los tallos"},{label:"Concentración de ingresos en festividades",benchmark:"El Día de San Valentín y el Día de la Madre por sí solos generan una parte desproporcionada de las ventas anuales."},{label:"Cartera de reservas de bodas y eventos",benchmark:"El trabajo de eventos por contrato es la principal forma en que los floristas equilibran los meses sin festividades."}],costDrivers:["Inventario perecedero de tallos y follaje dado de baja semanalmente","Electricidad de la cámara fría y mantenimiento de refrigeración","Vehículo de reparto, combustible y tiempo del conductor","Aumento de personal para San Valentín y el Día de la Madre","Cuotas y comisiones de servicios de transferencia de pedidos (wire service)","Plataforma de pedidos en línea y publicidad de búsqueda local"],risks:[{risk:"Los tallos no vendidos no valen nada en pocos días, así que los errores de pronóstico de demanda se convierten directamente en pérdidas.",mitigation:"Pide justo a tiempo según eventos confirmados y rebaja el inventario que envejece convirtién
394dolo en ramos ya armados."},{risk:"Los ingresos se concentran en un puñado de festividades, y una mala semana de San Valentín puede definir el año.",mitigation:"Desarrolla cuentas corporativas, de hospitalidad y de suscripción recurrentes que compren cada semana."},{risk:"Los servicios de transferencia de pedidos y las cadenas de supermercados captan a los clientes sensibles al precio y se quedan con una parte de los pedidos transferidos.",mitigation:"Impulsa el pedido directo local y compite con diseño personalizado y confiabilidad en la entrega el mismo día."}]},"personal-trainer":{licenses:[{name:"Certificación de entrenamiento acreditada (NASM, ACE, ACSM)",note:"No es una licencia gubernamental en la mayoría de los estados, pero los gimnasios, las aseguradoras y la mayoría de los clientes exigen una certificación acreditada."},{name:"Certificación de RCP/DEA",note:"Exigida por los organismos certificadores y las aseguradoras de responsabilidad civil antes de poder entrenar clientes."},{name:"Licencia comercial y seguro de responsabilidad civil profesional",note:"Una licencia comercial local para facturar a los clientes, más una cobertura de responsabilidad civil profesional para reclamos por lesiones."}],kpis:[{label:"Salario anual medio de entrenadores físicos",benchmark:"46 180 USD (mayo de 2024)"},{label:"Crecimiento proyectado del empleo 2023-2033",benchmark:"Alrededor del 12 %, mucho más rápido que el promedio"},{label:"Sesiones impartidas por semana",benchmark:"Tu techo de ingresos real en un modelo uno a uno."},{label:"Retención de clientes pasados los 90 días",benchmark:"Donde ocurre la mayor parte de la deserción; determina si las referencias llegan a acumularse."}],costDrivers:["Renovaciones de certificación y educación continua","Seguro de responsabilidad civil profesional","Cuotas de piso de gimnasio, alquiler de estudio o tiempo de traslado hacia clientes","Equipo para entrenamiento móvil o a domicilio","Software de agenda, pagos y programación de rutinas","Captación de clientes mediante anuncios y contenido"],risks:[{risk:"El ingreso tiene un tope estricto marcado por las horas facturables, porque el modelo es de un entrenador por un cliente.",mitigation:"Suma sesiones grupales pequeñas, programación en línea y coaching híbrido que desliguen el ingreso de las horas trabajadas."},{risk:"Los clientes abandonan por lesiones, vacaciones y caídas de motivación, lo que hace que el ingreso sea irregular.",mitigation:"Vende paquetes de varias sesiones y membresías en lugar de sesiones sueltas, y muestra el progreso de forma visible."},{risk:"Una lesión de un cliente durante la sesión genera una exposición directa a responsabilidad legal.",mitigation:"Realiza una evaluación de salud y un cuestionario PAR-Q (evaluación de aptitud física) a cada cliente y contrata un seguro de responsabilidad civil profesional."}]},"car-rental":{licenses:[{name:"Autorización estatal para negocio de alquiler de autos",note:"Varios estados exigen una autorización específica para alquiler de autos añadida a la licencia comercial general; Washington es un ejemplo."},{name:"Registro de vehículos de alquiler ante el DMV estatal (departamento de vehículos motorizados)",note:"La mayoría de los estados registra las flotas de alquiler por separado del registro de vehículos particulares."},{name:"Seguro comercial de auto y seguro de depositario de garaje (garagekeepers)",note:"Cobertura de flota que cumple los mínimos de responsabilidad financiera estatales, más altos para uso de alquiler."},{name:"Registro para cobro de impuesto/recargo de alquiler",note:"Muchos estados y aeropuertos cobran un recargo específico de alquiler que debes recaudar y remitir."}],kpis:[{label:"Tasa de utilización de la flota",benchmark:"Días alquilados divididos entre los días de flota disponibles: la medida clave de eficiencia."},{label:"Ingreso por unidad por día (RPD)",benchmark:"Tarifa diaria promedio realmente alcanzada en toda la flota."},{label:"Depreciación por unidad al mes",benchmark:"Suele ser la partida de costo individual más grande y la que determina la rentabilidad."},{label:"Tiempo de rotación entre alquileres",benchmark:"El tiempo de limpieza e inspección es tiempo de flota que no genera ingresos."}],costDrivers:["Adquisición de flota y depreciación mensual","Seguro de flota, considerablemente más alto que la cobertura particular","Mantenimiento, limpieza y reparación de daños entre alquileres","Arriendo del local, en especial cuotas de concesión aeroportuaria","Financiamiento de flota o interés de línea de crédito para inventario (floor-plan)","Personal de mostrador y software de reservas"],risks:[{risk:"Los valores residuales de los autos usados se mueven de forma independiente a tu negocio y pueden borrar el capital acumulado en tu flota.",mitigation:"Mantén un calendario disciplinado de rotación de flota y vende a través de varios canales de reventa en lugar de una sola subasta."},{risk:"La demanda sigue de cerca los ciclos de viaje, así que las caídas te golpean mientras los costos de financiamiento de flota siguen corriendo.",mitigation:"Diversifica más allá del tráfico aeroportuario y turístico hacia reemplazos por seguro, alquileres locales y de largo plazo."},{risk:"Las disputas por daños y los accidentes por culpa del arrendatario generan una responsabilidad legal continua y fricción por contracargos.",mitigation:"Fotografía cada vehículo al retirarlo y devolverlo, verifica el seguro del arrendatario y ofrece exenciones de daños claramente documentadas."}]},"liquor-store":{licenses:[{name:"Licencia estatal de venta minorista de licor para consumo fuera del local",note:"El costo individual más variable de este negocio. Algunos estados cobran unos pocos cientos de dólares; en mercados con cupo limitado, una licencia existente puede venderse por seis cifras."},{name:"Permiso de vendedor / registro de impuesto a las ventas",note:"Necesario para cobrar y remitir el impuesto a las ventas sobre el alcohol vendido al detalle."},{name:"Permiso de zonificación local o uso condicional",note:"Muchos municipios restringen la venta minorista de alcohol cerca de escuelas, lugares de culto y zonas residenciales."},{name:"Registro federal ante la TTB (oficina de alcohol y tabaco de EE. UU., si importas o distribuyes al por mayor)",note:"Solo se exige si vas más allá de la simple venta minorista."}],kpis:[{label:"Margen bruto por categoría",benchmark:"Los licores, vinos y cervezas manejan márgenes muy distintos; la mezcla de categorías define la rentabilidad combinada."},{label:"Rotaciones de inventario al año",benchmark:"El alcohol es capital de rotación lenta; el stock estancado inmoviliza efectivo indefinidamente."},{label:"Tasa de merma",benchmark:"El robo y la rotura pesan de forma desproporcionada contra márgenes netos ajustados."},{label:"Tamaño de la compra promedio",benchmark:"Adjunción de mezcladores, botanas y ventas premium adicionales por transacción."}],costDrivers:["Adquisición de la licencia de licor, muy dependiente del estado","Inventario inicial de cerveza, vino y licores","Sistemas de seguridad, cámaras y prevención de pérdidas","Arriendo del local minorista en una ubicación visible y permitida","Impuestos especiales estatales y reportes de cumplimiento","Punto de venta (POS) con verificación de edad y registro de cumplimiento"],risks:[{risk:"Las reglas de licencia varían tan drásticamente por estado y condado que un plan viable en un mercado resulta imposible en el siguiente.",mitigation:"Confirma las reglas de la ABC (control de bebidas alcohólicas) de tu estado y condado, el estatus de cupo y el mercado de traspaso de licencias antes de firmar cualquier arriendo."},{risk:"Un solo fallo en un control de cumplimiento sobre verificación de edad puede suspenderte o costarte por completo la licencia.",mitigation:"Capacita a cada empleado en la revisión de identificaciones, escanéalas electrónicamente y mantén registros documentados de cumplimiento."},{risk:"Que los estados permitan cada vez más la venta de vino y licores en supermercados y grandes cadenas erosiona el monopolio de la categoría.",mitigation:"Construye una selección con profundidad defendible, conocimiento del producto por parte del personal y catas que las cadenas no puedan igualar."}]},"recording-studio":{licenses:[{name:"Licencia comercial y registro de la entidad",note:"Permiso local estándar para operar una instalación comercial y facturar a los clientes."},{name:"Aprobación de zonificación y cumplimiento de la ordenanza de ruido",note:"Las instalaciones de audio comercial cerca de zonas residenciales frecuentemente necesitan una aprobación específica de zonificación sobre aislamiento acústico."},{name:"Licencias de PRO (sociedad de gestión de derechos) y mecánicas (si publicas grabaciones)",note:"Solo aplica si el estudio mismo produce o distribuye grabaciones originales en lugar de solo vender tiempo de sala."},{name:"Certificado de ocupación tras la remodelación",note:"La construcción acústica suele modificar el espacio lo suficiente como para requerir una nueva inspección."}],kpis:[{label:"Horas reservadas por mes",benchmark:"La utilización de la sala es todo el modelo de negocio."},{label:"Mezcla de ingresos: alquiler de sala vs. ingeniería",benchmark:"Los servicios de ingeniería y producción tienen un margen más alto que el simple alquiler de la sala."},{label:"Participación de clientes recurrentes",benchmark:"Los estudios subsisten gracias a un número reducido de artistas, sellos y productores que vuelven."},{label:"Costo de renovación de equipo por año",benchmark:"Postergarlo silenciosamente hace que la sala pierda competitividad."}],costDrivers:["Tratamiento acústico, aislamiento y remodelación estructural","Consola, conversores, micrófonos y monitoreo","Licencias de estación de audio digital (DAW) y suscripciones de plugins","Arriendo de un espacio con altura de techo y aislamiento adecuados","Personal o ingenieros contratados por sesión","Mantenimiento continuo y renovación de equipo"],risks:[{risk:"Los estudios caseros capaces y el software de producción económico han reducido de forma permanente la demanda de grabación básica.",mitigation:"Vende lo que un cuarto casero no puede reproducir: una s
394ala en vivo amplia, una cadena de señal de alta gama y experiencia técnica."},{risk:"Las reservas son irregulares y dependen de proyectos, mientras el arriendo y el financiamiento de equipo son fijos cada mes.",mitigation:"Agrega producción de pódcast, locución, mezcla, masterización y alquiler para rodajes de contenido para llenar la agenda."},{risk:"El fuerte capital inicial invertido en un espacio específico hace que mudarse sea muy costoso.",mitigation:"Negocia contratos de arriendo largos con opciones de renovación antes de invertir en construcción acústica permanente."}]},"juice-bar":{licenses:[{name:"Permiso local de establecimiento de servicio de alimentos",note:"Exigido por el departamento de salud municipal o del condado antes de servir bebidas preparadas."},{name:"Certificación de manipulador de alimentos / gerente",note:"El personal debe contar con un certificado de seguridad alimentaria reconocido por el estado."},{name:"Plan HACCP (análisis de peligros y puntos críticos de control) para jugo prensado en frío",note:"El jugo sin pasteurizar vendido fuera del local queda sujeto a las reglas HACCP de jugos de la FDA y a los requisitos de etiquetas de advertencia."},{name:"Aprobación de cocina comercial o comisaría (commissary)",note:"Se necesita si prensas fuera del local o vendes al por mayor jugo embotellado a otros minoristas."}],kpis:[{label:"Costo de insumos como porcentaje del ingreso",benchmark:"El prensado en frío consume varias libras de producto por botella, así que el costo de ventas es alto para un negocio de bebidas."},{label:"Tasa de desperdicio y merma",benchmark:"Tanto el producto fresco sin vender como el jugo prensado caducan en pocos días."},{label:"Ticket promedio y tasa de adjunción",benchmark:"Los complementos como boosters, shots y alimentos son donde se recupera el margen."},{label:"Rendimiento en horas pico",benchmark:"Las horas de la mañana y post-gimnasio concentran la mayoría de las transacciones diarias en ventanas estrechas."}],costDrivers:["Producto fresco, con alta pérdida de rendimiento en el prensado en frío","Equipo de prensado en frío y licuado, más mantenimiento","Arriendo del local en zonas de alto tráfico peatonal orientadas al bienestar","Electricidad de refrigeración y almacenamiento en frío","Botellas, vasos y empaque compostable","Personal a tiempo parcial programado alrededor de ventanas pico estrechas"],risks:[{risk:"La descomposición del producto es severa porque tanto los insumos crudos como el jugo terminado tienen una vida útil muy corta.",mitigation:"Mantén niveles de inventario ajustados, registra el desperdicio diario y convierte el producto que va envejeciendo en especiales licuados o embotellados."},{risk:"En los meses fríos la demanda de bebidas frías cae drásticamente.",mitigation:"Agrega sopas, bebidas funcionales calientes, bowls de açaí y limpiezas por suscripción para sostener el ingreso de invierno."},{risk:"Las barreras de entrada muy bajas permiten que cafeterías, gimnasios y cadenas de supermercados agreguen una línea de jugos en cualquier momento.",mitigation:"Diferénciate por calidad genuina de prensado en frío, transparencia en el abastecimiento y alianzas con gimnasios o estudios."}]},"coffee-cart":{marketSizeValue:"49 500 millones de USD (mercado de cafeterías de marca, la categoría adyacente)",licenses:[{name:"Permiso de vendedor ambulante de alimentos",note:"Un permiso del departamento de salud específico para venta de alimentos y bebidas desde carritos o kioscos."},{name:"Certificación de manipulador de alimentos",note:"Exigida al operador y a todo el personal que prepare bebidas."},{name:"Convenio de comisaría (commissary)",note:"Muchas jurisdicciones exigen que los vendedores ambulantes preparen y limpien en una cocina comisaría fija y aprobada."},{name:"Permiso de sitio o zona de venta",note:"Las zonas de venta callejera, mercados de agricultores y propiedades privadas necesitan cada uno su propio permiso."}],kpis:[{label:"Transacciones por hora en horas pico",benchmark:"Un carrito vive o muere según el rendimiento durante la hora pico de la mañana."},{label:"Ingreso por punto de venta o evento",benchmark:"Te permite clasificar ubicaciones y descartar las que no cubren su cuota de sitio."},{label:"Costo por taza (grano más leche más vaso)",benchmark:"Cifras pequeñas en términos absolutos, pero fijan el margen de cada venta."},{label:"Participación del ingreso proveniente de eventos reservados",benchmark:"El catering contratado es la mitad predecible del ingreso de un carrito."}],costDrivers:["Máquina de espresso, molino y construcción del carrito","Granos de café, lácteos y alternativas a la leche","Cuotas de punto de venta, alquiler de puesto de mercado o cuotas de sitio de evento","Fuente de energía (generador o batería) y suministro de agua","Vasos, tapas e insumos desechables","Permisos, cuotas de comisaría e inspecciones de salud"],risks:[{risk:"El ingreso depen
394de casi por completo del tráfico peatonal y del clima en un punto específico en un día específico.",mitigation:"Arma una rotación de puntos comprobados y suma catering corporativo y de bodas reservado para asegurar ingresos."},{risk:"Las reglas municipales de venta ambulante pueden eliminar tu mejor ubicación sin previo aviso.",mitigation:"Asegura acuerdos escritos con propietarios privados en lugar de depender solo de zonas públicas de venta."},{risk:"El almacenamiento limitado y un solo grupo de extracción limitan cuánto puedes vender en la hora pico que realmente importa.",mitigation:"Mantén el menú acotado, prepara por lotes cuando la calidad lo permita y considera un segundo molino antes que un segundo carrito."}]},hotel:{startupCostNote:"Basado en el costo de desarrollo por habitación de una propiedad de servicio limitado de 80 a 150 habitaciones; las conversiones cuestan considerablemente menos que las construcciones desde cero.",marketSizeValue:"758 600 millones de USD en gasto de huéspedes de hoteles en EE. UU.",licenses:[{name:"Licencia estatal de establecimiento de hospedaje",note:"Necesaria para operar alojamiento transitorio, con inspecciones periódicas de salud y seguridad."},{name:"Registro del impuesto de ocupación transitoria",note:"Los hoteles deben registrarse para cobrar y remitir el impuesto local de hospedaje sobre el ingreso por habitaciones."},{name:"Certificado de seguridad contra incendios y certificado de ocupación",note:"Cubre alarmas, rociadores, rutas de salida y límites de ocupación exhibidos."},{name:"Licencias de servicio de alimentos y licor",note:"Necesarias por separado si operas un restaurante, bar o servicio de desayuno."}],kpis:[{label:"Tarifa diaria promedio (ADR)",benchmark:"Aproximadamente 156,67 USD (promedio de EE. UU.)"},{label:"RevPAR (ingreso por habitación disponible)",benchmark:"Aproximadamente 83,30 USD (promedio de EE. UU.)"},{label:"Tasa de ocupación",benchmark:"Aproximadamente entre 53 % y 63 % según el mes"},{label:"GOPPAR (utilidad operativa bruta por habitación disponible)",benchmark:"Utilidad operativa bruta por habitación disponible: lo que usan los prestamistas para evaluar el servicio de la deuda."}],costDrivers:["Costo de desarrollo o adquisición por habitación","Cuotas de franquicia, estándares de marca y cargos del sistema de reservas","Mano de obra de limpieza y recepción","Servicios públicos en una propiedad grande y en operación continua","Seguro de propiedad e impuestos inmobiliarios","Reserva de mobiliario, accesorios y equipo (FF&E) para renovaciones periódicas obligatorias"],risks:[{risk:"La ADR y la ocupación siguen a la economía de viajes en general, mientras que el servicio de la deuda de la propiedad no se mueve en absoluto.",mitigation:"Proyecta de forma conservadora contra el RevPAR más bajo del ciclo y mantén reservas dimensionadas para una caída de varios trimestres."},{risk:"Los contratos de franquicia fijan cuotas y exigen planes costosos de mejora de la propiedad según el calendario de la marca.",mitigation:"Modela la economía de franquicia frente a la independiente durante todo el plazo del contrato antes de firmar."},{risk:"Las comisiones de las agencias de viaje en línea (OTA) junto con las cuotas de marca se llevan una parte sustancial de ca
394da noche de habitación vendida.",mitigation:"Construye una mayor participación de reservas directas y negocia contratos grupales y corporativos que eviten los canales de las OTA."}]},"poultry-farm":{marketSizeValue:"70 200 millones de USD en ventas totales del sector avícola estadounidense",licenses:[{name:"Contrato de crianza con integrador",note:"La mayor parte de la producción de pollo de engorde en EE. UU. opera bajo contrato con un integrador que suministra las aves y el alimento; los términos del contrato están sujetos a supervisión del USDA (Departamento de Agricultura de EE. UU.)."},{name:"Permiso estatal de manejo de desechos animales",note:"Las operaciones por encima de los umbrales de tamaño estatales necesitan un permiso de manejo de nutrientes o estiércol de la agencia ambiental estatal."},{name:"Permiso NPDES para CAFO grandes (operaciones concentradas de alimentación animal)",note:"Las operaciones concentradas de alimentación animal por encima de los umbrales federales requieren un permiso de descarga bajo la Ley de Agua Limpia."},{name:"Licencia de manipulador / clasificador de huevos (operaciones de ponedoras)",note:"Exigida por la mayoría de los estados para clasificar, empacar y vender huevos con cáscara."}],kpis:[{label:"Ventas totales del sector avícola en EE. UU.",benchmark:"70 200 millones de USD (2024)"},{label:"Tasa de conversión alimenticia (FCR)",benchmark:"Libras de alimento por libra de peso vivo: la métrica central de eficiencia en la producción de pollo de engorde."},{label:"Supervivencia hasta la edad de mercado",benchmark:"Porcentaje de pollitos colocados que llegan al mercado; pequeños cambios afectan de forma importante la liquidación del criador."},{label:"Ganancia diaria promedio",benchmark:"Determina cuántas parvadas por galpón al año puedes manejar."}],costDrivers:["Alimento, dominado por los precios del maíz y la harina de soya","Construcción del galpón de engorde o ponedoras y servicio de la deuda","Energía para ventilación, calefacción e iluminación","Reposición de pollitos o pollonas próximas a postura","Manejo de la cama del galpón, disposición y cumplimiento normativo","Mejoras obligatorias del galpón exigidas por el integrador"],risks:[{risk:"La influenza aviar altamente patógena puede exigir el sacrificio de toda una parvada con poco aviso previo.",mitigation:"Aplica bioseguridad estricta (acceso controlado, calzado dedicado, exclusión de aves silvestres) y contrata un seguro contra enfermedades avícolas donde esté disponible."},{risk:"Los criadores contratados cargan deuda de galpón a largo plazo mientras el integrador controla la colocación de aves y el pago de liquidación.",mitigation:"Modela el servicio de la deuda contra el calendario histórico más bajo de colocación del integrador, no contra el promedio, antes de construir."},{risk:"Las fluctuaciones del precio del alimento comprimen los márgenes de las operaciones independientes sin el respaldo de un integrador.",mitigation:"Usa compras a futuro o cobertura sobre maíz y harina de soya cuando la escala lo permita."}]}},fr:{"travel-agency":{licenses:[{name:"Enregistrement en tant que vendeur de voyages (Seller of Travel)",note:"La Californie, la Floride, Hawaï, l'Iowa et l'État de Washington exigent que toute entreprise vendant des voyages à leurs résidents s'enregistre comme vendeur de voyages, dépose une caution ou des fonds en fiducie, et affiche un numéro d'enregistrement dans sa publicité — quel que soit le lieu où l'agence est basée."},{name:"Licence commerciale locale et enregistrement à la taxe de vente/professionnelle",note:"Exigée par la plupart des villes et comtés avant de facturer les clients, en plus de tout enregistrement d'État en tant que vendeur de voyages."},{name:"Assurance erreurs et omissions (E&O)",note:"Ce n'est pas une licence gouvernementale, mais les compagnies aériennes, voyagistes et agences hôtes exigent généralement que les agents souscrivent une couverture E&O avant de délivrer une accréditation IATA/CLIA ou un mandat de fournisseur."}],kpis:[{label:"Revenus de commission et de frais de service par réservation",benchmark:"Les agences facturent de plus en plus des frais de planification pour compenser la baisse des commissions aériennes ; le revenu par réservation combine donc commission des fournisseurs et frais directs facturés au client."},{label:"Fidélisation client / taux de réservations répétées",benchmark:"Un portefeuille de clients fondé sur les recommandations et les réservations répétées est le principal levier dont disposent les agents indépendants face aux plateformes de voyage en ligne (OTA) directes."},{label:"Valeur moyenne de réservation",benchmark:"Plus élevée chez les spécialistes du loisir (croisières, luxe, voyages de groupe ou de destination) que pour les simples réservations aériennes, qui ne rapportent qu'une commission minime, voire nulle."}],costDrivers:["Frais d'accréditation auprès d'une agence hôte ou d'IATAN/CLIA","Primes d'assurance erreurs et omissions","Abonnements aux logiciels de réservation et de gestion de la relation client (CRM)","Frais de marketing et de voyages de familiarisation (FAM)","Enregistrement et cautionnement en tant que vendeur de voyages auprès de l'État","Partage de commissions dû à une agence hôte en l'absence d'accréditation indépendante"],risks:[{risk:"Les agences de voyage en ligne et les canaux de réservation directe des compagnies aériennes et hôtels compriment les revenus basés sur les commissions.",mitigation:"Évoluer vers un service-conseil facturé à l'honoraire et se spécialiser dans les voyages complexes et à forte valeur ajoutée (luxe, multigénérationnels, groupes, mariages à destination) où les clients valorisent une expertise de planification."},{risk:"La faillite d'un fournisseur ou une perturbation majeure (par exemple l'effondrement d'une compagnie aérienne ou d'un voyagiste) peut exposer l'agence à des demandes de remboursement des clients.",mitigation:"Utiliser des comptes en fiducie lorsque la loi de l'État l'exige, réserver via des fournisseurs cautionnés et souscrire une assurance E&O."},{risk:"Les événements mondiaux (pandémies, instabilité géopolitique, catastrophes naturelles) peuvent stopper les réservations sans préavis.",mitigation:"Diversifier les destinations et types de voyages, et 
394conserver des réserves de trésorerie pour couvrir les coûts fixes en cas de choc de la demande sur plusieurs mois."}]},"coffee-shop":{marketSizeValue:"75,5 milliards USD",licenses:[{name:"Permis de restauration du service de santé local",note:"Couvre l'équipement, l'approvisionnement en eau, la conservation au froid et l'hygiène ; inspecté avant l'ouverture puis périodiquement par la suite."},{name:"Certification de manipulateur d'aliments / de gestionnaire",note:"La plupart des États ou comtés exigent au moins un gestionnaire certifié en protection alimentaire dans l'équipe, ainsi que des cartes de manipulateur d'aliments pour les autres employés."},{name:"Licence commerciale et permis de vendeur",note:"Exigée par la ville ou le comté, ainsi qu'un permis de taxe de vente pour la vente au détail de boissons, de nourriture et d'articles dérivés."}],kpis:[{label:"Croissance du secteur",benchmark:"Croissance annualisée de 2,5 %, atteignant 75,5 milliards USD de revenus sur les cinq années jusqu'en 2026."},{label:"Ticket moyen et taux d'attachement",benchmark:"Les ventes additionnelles de nourriture et d'articles dérivés par boisson vendue constituent un levier majeur dans une activité où le ticket moyen est autrement faible."},{label:"Débit pendant la période de pointe",benchmark:"Nombre de boissons préparées par heure de travail pendant la pointe matinale, les cafés réalisant une part disproportionnée de leurs ventes quotidiennes avant 10 h."},{label:"Fréquence de visite de la clientèle",benchmark:"Les visites récurrentes et habituelles (plusieurs fois par semaine) génèrent l'essentiel du chiffre d'affaires des cafés indépendants, contrairement aux occasions de restauration ponctuelles."}],costDrivers:["Achat et entretien des machines à espresso, moulins et équipements d'infusion","Coûts du café vert/torréfié, du lait et des sirops, qui varient avec les prix des matières premières et des produits laitiers","Main-d'œuvre concentrée sur une brève pointe matinale, rendant l'efficacité des effectifs difficile à optimiser","Loyer pour des emplacements à fort passage piéton","Gobelets, couvercles et emballages (un poste de coûts des marchandises vendues important pour une activité fortement axée sur la vente à emporter)","Frais de point de vente, d'application de fidélité et de plateformes de livraison tierces"],risks:[{risk:"La volatilité des prix du café (marché C) et des produits laitiers comprime les marges dans une catégorie où les clients résistent aux hausses de prix fréquentes.",mitigation:"Verrouiller des contrats fournisseurs lorsque c'est possible, ajuster les portions ou les recettes avant d'augmenter les prix affichés, et diversifier vers la nourriture et les articles dérivés offrant plus de flexibilité tarifaire."},{risk:"Le chiffre d'affaires est fortement concentré sur une pointe matinale de deux à trois heures, ce qui rend la planification du personnel soit insuffisante à la pointe, soit excessive en milieu de journée.",mitigation:"Utiliser des données de ventes heure par heure pour établir un planning d'effectifs échelonné et stimuler le trafic de milieu de journée avec des offres spéciales ou des incitations à la commande mobile."},{risk:"Les grandes chaînes nationales et les concepts avec service au volant se livrent une concurrence agressive sur la rapidité et le prix dans la même zone de chalandise.",mitigation:"Se différencier par la qualité, l'ambiance et des programmes communautaires ou de fidélité qu'un service au volant rapide ne peut pas reproduire."}]},bakery:{licenses:[{name:"Licence locale d'établissement alimentaire au détail",note:"Requise pour toute boulangerie vendant des aliments préparés sur place pour consommation immédiate ; couvre l'équipement, l'hygiène et la conservation au froid."},{name:"Enregistrement ou exemption pour aliments artisanaux (cottage food, activité à domicile uniquement)",note:"La plupart des États autorisent la fabrication de certains produits de boulangerie à faible risque dans une cuisine domestique sans licence commerciale complète, mais les ventes sont plafonnées et une boutique commerciale nécessite toujours une licence standard."}
394,{name:"Certification de manipulateur d'aliments / de gestionnaire et licence commerciale",note:"Le personnel préparant les aliments a généralement besoin d'une carte de manipulateur d'aliments, et l'entreprise doit détenir une licence commerciale locale standard ainsi qu'un permis de taxe de vente."}],kpis:[{label:"Taux de gaspillage / de démarque",benchmark:"Les stocks périssables invendus, soldés ou jetés en fin de journée, constituent l'un des coûts contrôlables les plus importants d'une boulangerie."},{label:"Répartition des ventes gros / détail",benchmark:"Les comptes de vente en gros (cafés, restaurants, épiceries) ajoutent du volume mais à une marge unitaire plus faible que les ventes au détail en boutique."},{label:"Coût de main-d'œuvre matinale en % des ventes",benchmark:"Le personnel de production doit commencer plusieurs heures avant l'ouverture, rendant le coût de main-d'œuvre par unité très sensible à la planification des tailles de lots."}],costDrivers:["Coûts de la farine, du beurre, des œufs et du sucre, qui varient avec les marchés des matières premières","Fours commerciaux, mélangeurs et équipements de fermentation","Main-d'œuvre de production avant l'aube","Emballage et gaspillage lié à la courte durée de conservation","Bail commercial dans un emplacement à fort passage piéton","Permis sanitaires et conformité en matière de sécurité alimentaire"],risks:[{risk:"Les produits de boulangerie sont très périssables, si bien que toute erreur de prévision de la demande se traduit en gaspillage le jour même.",mitigation:"Suivre les ventes par produit et par période de la journée, et rediriger l'excédent de stock de l'après-midi vers des ventes soldées en fin de journée plutôt que de le jeter."},{risk:"Les flambées des prix de matières premières comme la farine, le beurre et les œufs pèsent directement sur le coût des marchandises vendues, dans une catégorie où les clients résistent aux changements de prix fréquents.",mitigation:"Utiliser des contrats fournisseurs à prix fixe lorsque disponibles et repenser les recettes ou les portions avant d'augmenter les prix affichés."},{risk:"La main-d'œuvre de production doit débuter bien avant l'ouverture de la boutique, rendant le coût de main-d'œuvre difficile à ajuster à la demande réelle du jour.",mitigation:"Construire un planning de production autour d'une prévision de ventes glissante et échelonner la cuisson pour que les articles à forte marge soient toujours frais aux heures de pointe."}]},restaurant:{marketSizeValue:"1,1 billion USD",licenses:[{name:"Permis de restauration du service de santé local",note:"Couvre l'équipement de cuisine, les températures de conservation au froid et l'hygiène ; inspecté avant l'ouverture puis selon un calendrier récurrent."},{name:"Licence de vente d'alcool (le cas échéant)",note:"Délivrée par l'agence de contrôle des boissons alcoolisées de l'État, souvent avec une étape d'approbation locale ; peut représenter un coût important et, sur certains marchés, être contingentée."},{name:"Certification de manipulateur d'aliments / de gestionnaire",note:"La plupart des États ou comtés exigent la présence en permanence d'au moins un gestionnaire certifié en protection alimentaire."}],kpis:[{label:"Coût premier (nourriture + main-d'œuvre en % des ventes)",benchmark:"Les coûts de la nourriture et de la main-d'œuvre représentent chacun environ 33 cents par dollar de chiffre d'affaires à l'échelle du secteur, et constituent ensemble l'indicateur de référence que la plupart des exploitants suivent chaque semaine."},{label:"Taux de rotation des tables",benchmark:"Nombre de couverts servis par table et par service ; principal levier de revenu pour les restaurants à service complet à capacité d'accueil fixe."},{label:"Ticket moyen",benchmark:"Total facturé par client, incluant nourriture, boissons et alcool ; suivi par période de la journée pour repérer les problèmes de menu ou de vente incitative."},{label:"Utilisation des heures de travail par siège",benchmark:"Ventes par heure de travail effectuée, utilisées pour ajuster les effectifs en salle et en cuisine par rapport aux couverts prévus."}],costDrivers:["Coût de la nourriture, exposé aux fluctuations des prix des matières premières et de la chaîne d'approvisionnement","Coût de la main-d'œuvre, y compris les règles de salaire minimum avec pourboire, qui varient fortement selon l'État","Loyer et aménagement d'un espace aux normes de cuisine professionnelle","Achat, entretien et réparation de l'équipement de cuisine","Coût et conformité de la licence d'alcool lorsque des boissons alcoolisées sont servies","Commissions des plateformes de livraison tierces"],risks:[{risk:"Les dépenses d'exploitation totales des restaurants ont augmenté d'environ 36 % depuis avant la pandémie, comprimant des marges déjà minces.",mitigation:"Repenser les menus autour d'ingrédients à l'approv
394isionnement stable, renégocier régulièrement les contrats fournisseurs, et ajuster les portions avant d'augmenter les prix du menu."},{risk:"Les restaurants à service complet sont limités par leur capacité d'accueil et la rotation des tables, si bien qu'un service creux fait perdre ce revenu de façon définitive.",mitigation:"Utiliser les données de réservation et de liste d'attente pour gérer les couverts par période de la journée, et ajouter des promotions hors pointe ou des événements privés pour combler les services creux."},{risk:"Le roulement de personnel en salle et en cuisine est chroniquement élevé, augmentant les coûts de recrutement et de formation.",mitigation:"Former le personnel de façon polyvalente sur plusieurs postes, offrir des perspectives d'évolution claires, et aligner les salaires sur le marché local pour réduire le turnover."}]},"food-truck":{marketSizeValue:"2,8 milliards USD",licenses:[{name:"Permis d'établissement alimentaire mobile",note:"Délivré par le service de santé de l'État ou local spécifiquement pour les unités mobiles, en complément (et non en remplacement) d'un permis de restauration standard."},{name:"Accord de cuisine commerciale partagée (commissary)",note:"La plupart des réglementations étatiques et locales exigent que les vendeurs mobiles préparent, réapprovisionnent et nettoient dans une cuisine commerciale agréée plutôt qu'à domicile, et documentent cette relation pour les inspecteurs."},{name:"Inspection du véhicule et de la sécurité incendie, plus permis municipaux de vente",note:"Couvre les systèmes propane/GPL et la suppression d'incendie sur le camion ; des permis distincts sont souvent requis par ville ou par événement pour se garer et vendre sur une propriété publique."}],kpis:[{label:"Ventes quotidiennes par emplacement/itinéraire",benchmark:"Le revenu par arrêt est l'indicateur de planification central, l'emplacement du camion (lieux de déjeuner, événements, brasseries) expliquant l'essentiel des écarts de ventes."},{label:"Temps de préparation-service sur un menu restreint",benchmark:"Un menu soigneusement limité, exécutable rapidement dans une petite cuisine, est ce qui rend le débit d'un food truck viable aux heures de pointe."},{label:"Part des réservations d'événements/traiteur",benchmark:"Les événements privés et les prestations traiteur offrent généralement un revenu garanti par heure plus élevé que le service quotidien incertain sur rue ou parking."}],costDrivers:["Achat ou location du camion et aménagement de la cuisine sur mesure","Frais de location de la cuisine commerciale partagée","Propane et carburant de générateur pour l'équipement de cuisson","Permis municipaux de vente et frais de stand pour événements/festivals, très variables selon le lieu","Entretien du véhicule et carburant pour les déplacements entre emplacements","Stockage embarqué limité, obligeant à des réapprov
394isionnements fréquents et de plus petite taille"],risks:[{risk:"Les règles locales de vente ambulante limitent où et combien de temps un camion peut se garer, et varient d'une ville à l'autre.",mitigation:"Construire un itinéraire autour d'emplacements confirmés et autorisés, ainsi que de réservations sur propriété privée ou lors d'événements, plutôt que de dépendre du stationnement de rue improvisé."},{risk:"La météo et la saisonnalité peuvent anéantir le revenu d'une journée ou d'une saison entière, sans solution de repli en intérieur.",mitigation:"Réserver des marchés couverts, des brasseries ou des lieux événementiels pour les mois froids ou pluvieux, et conserver une réserve de trésorerie pour les périodes creuses."},{risk:"Une panne mécanique immobilise toute l'activité jusqu'à la réparation du camion.",mitigation:"Prévoir une réserve pour l'entretien, entretenir une relation avec un mécanicien de confiance, et envisager un équipement de secours (par exemple un générateur de rechange) pour les systèmes critiques."}]},"event-management":{licenses:[{name:"Licence commerciale locale et permis de taxe de vente",note:"La plupart des villes et comtés exigent une licence commerciale générale, et de nombreux États exigent la collecte de la taxe de vente sur les frais de planification d'événements ou les biens revendus aux clients."},{name:"Attestation d'assurance (COI) pour chaque lieu",note:"Presque tous les lieux exigent une preuve d'assurance responsabilité civile générale, désignant souvent le lieu comme assuré additionnel, avant la signature d'un contrat."},{name:"Permis de service d'alcool (selon les besoins)",note:"Si l'organisateur fournit ou sert directement de l'alcool plutôt que de passer par un traiteur ou un fournisseur de bar agréé, une extension de responsabilité alcool de l'État ou un permis d'événement temporaire est généralement requis."}],kpis:[{label:"Budget moyen d'événement géré",benchmark:"Dépenses totales du client coordonnées par événement — principal moteur des revenus d'honoraires de l'organisateur sous les modèles de tarification au pourcentage."},{label:"Ratio organisateur/événements",benchmark:"Nombre d'événements simultanés qu'un seul organisateur peut gérer sans dégradation de la qualité de service, généralement limité par les visites de site et l'encadrement le jour J."},{label:"Revenus de commissions/recommandations fournisseurs",benchmark:"Part du revenu provenant des rétrocommissions et majorations des fournisseurs privilégiés, par rapport aux honoraires forfaitaires de planification."},{label:"Taux de re-réservation et de recommandation",benchmark:"Part des nouvelles réservations provenant d'anciens clients ou de recommandations de fournisseurs plutôt que du marketing payant."}],costDrivers:["Main-d'œuvre de l'organisateur et du coordinateur du jour J (largement concentrée sur le jour et la semaine de l'événement)","Logiciels de propositions, de calendriers et de gestion de la relation client (CRM)","Assurance responsabilité civile générale et professionnelle (erreurs et omissions)","Marketing et production de portfolio (séances photo stylisées, photographie, site web)","Acomptes versés aux fournisseurs à l'avance et récupérés sur les provisions des clients","Frais de déplacement et de visite de site pour les événements hors marché local"],risks:[{risk:"Le chiffre d'affaires est concentré sur les week-ends (en particulier les mariages), si bien que les annulations ou une mauvaise saison des mariages ont un impact disproportionné.",mitigation:"Se diversifier vers les événements d'entreprise et associatifs, qui se réservent en semaine et suivent un cycle saisonnier différent des mariages."},{risk:"Les annulations de clients après le versement des acomptes aux fournisseurs peuvent laisser l'organisateur assumer des coûts non remboursables.",mitigation:"Utiliser des contrats avec des provisions non remboursables échelonnées et répercuter directement sur le client les conditions d'acompte des fournisseurs."},{risk:"Les organisateurs sont tenus personnellement responsables des défaillances de fournisseurs (traiteur absent, panne audiovisuelle) qu'ils ne contrôlent pas.",mitigation:"Sélectionner les fournisseurs sur une courte liste approuvée avec options de secours, et prévoir du personnel et du matériel de contingence pour le jour J."}]},laundromat:{marketSizeValue:"7,2 milliards USD",licenses:[{name:"Licence commerciale locale et certificat d'occupation",note:"Exigés par la ville ou le comté avant l'ouverture d'un espace de vente en libre-service au public."},{name:"Permis de rejet des eaux usées / d'égout",note:"De nombreuses régies municipales des eaux exigent un permis ou des frais de raccordement pour les rejets à fort volume des laveuses commerciales."},{name:"Inspection incendie et code du bâtiment pour les sécheuses à gaz/électriques",note:"Les services d'incen
394die locaux inspectent la ventilation des sécheuses commerciales et l'installation des conduites de gaz avant l'autorisation d'occupation."}],kpis:[{label:"Revenu par machine",benchmark:"Recettes hebdomadaires ou mensuelles par laveuse/sécheuse — méthode standard pour comparer la performance des établissements."},{label:"Prix de vente par livre ou par cycle",benchmark:"Levier tarifaire central, comparé aux concurrents voisins et aux tendances des coûts des services publics."},{label:"Utilisation des machines / cycles par jour",benchmark:"Nombre moyen de cycles effectués par machine et par jour, suivi pour décider de l'ajout de capacité."}],costDrivers:["Eau, égouts et services publics gaz/électricité (généralement le plus grand coût récurrent)","Achat, financement et cycles de remplacement des laveuses et sécheuses","Loyer et aménagement pour la plomberie, la ventilation et la capacité électrique","Main-d'œuvre de préposé et systèmes de sécurité/caméras pour les heures sans surveillance","Réparation des machines et stock de pièces détachées","Frais des systèmes de paiement par carte/application pour les machines sans espèces"],risks:[{risk:"Les coûts des services publics (eau, gaz, électricité) peuvent augmenter plus vite que les prix de vente, comprimant les marges.",mitigation:"Installer des machines à haute efficacité et surveiller les factures de services publics par rapport au volume pour ajuster régulièrement les tarifs."},{risk:"Les établissements sans surveillance sont vulnérables au vandalisme, au vol de pièces et au flânage.",mitigation:"Utiliser des systèmes de paiement sans espèces par carte/application, des caméras et des heures de préposé programmées aux moments de pointe."},{risk:"La construction de nouveaux logements équipés de laveuses/sécheuses réduit progressivement la clientèle locale.",mitigation:"Suivre les tendances de construction d'immeubles collectifs locaux avant de signer un bail à long terme, et se diversifier vers le service de lavage-pliage et les comptes commerciaux."}]},daycare:{marketSizeValue:"72,8 milliards USD",licenses:[{name:"Licence d'établissement de garde d'enfants de l'État",note:"Chaque État exige une licence de son agence de réglementation de la garde d'enfants avant qu'un centre ou une garderie familiale puisse légalement fonctionner, couvrant les ratios personnel/enfants, les vérifications d'antécédents et la sécurité des locaux."},{name:"Vérifications des antécédents du personnel et bilans de santé",note:"La loi fédérale et étatique exige des vérifications d'antécédents criminels par empreintes digitales, des vérifications au registre de maltraitance des enfants et des dépistages de tuberculose/santé pour tout le personnel ayant un accès non supervisé aux enfants."},{name:"Inspections locales d'incendie, de santé et du bâtiment",note:"Les établissements doivent réussir les inspections des pompiers et du service de santé portant sur les issues, l'hygiène et la manipulation des aliments avant l'obtention de la licence."}],kpis:[{label:"Conformité au ratio personnel/enfants",benchmark:"Fixé par les règles de licence de l'État et variant selon la tranche d'âge ; le principal déterminant de la capacité d'accueil autorisée et du coût de main-d'œuvre."},{label:"Taux d'occupation / d'utilisation de la capacité",benchmark:"Places occupées divisées par la capacité autorisée — principal moteur de revenu compte tenu de coûts de personnel et d'installation largement fixes."},{label:"Taux de roulement du personnel",benchmark:"Suivi de près car la conformité aux ratios s'effondre rapidement lorsque des éducateurs partent et que les remplaçants ne sont pas vérifiés à temps."}],costDrivers:["Salaires des enseignants et éducateurs (le coût le plus important, directement lié aux ratios imposés)","Bail des locaux et exigences d'espace de jeu extérieur","Assurance responsabilité civile, plus élevée que pour la plupart des petites entreprises en raison des enjeux de sécurité des enfants","Vérifications d'antécédents, frais de licence et exigences de formation continue du personnel","Repas, fournitures et matériel pédagogique","Mises à niveau des locaux pour respecter les normes incendie, sanitaires et d'accessibilité (ADA)"],risks:[{risk:"Les ratios personnel/enfants imposés signifient que l'absence d'un seul éducateur peut forcer à refuser des familles ou à fermer une salle pour la journée.",mitigation:"Former le personnel de façon polyvalente sur plusieurs tranches d'âge et maintenir un bassin de remplaçants pour couvrir les absences sans enfreindre les ratios."},{risk:"La hausse des prix moyens de la garde d'enfants atteint les limites d'accessibilité financière pour de nombreuses familles, plafonnant les hausses de frais possibles.",mitigation:"Diversifier les revenus avec des programmes de bons subventionnés, des partenariats d'employeurs et des frais de scolarité à échelle variable pour élargir la base de clientèle payante."},{risk:"Une seule infraction à la licence ou un incident de sécurité peut entraîner une fermeture et nuire à la réputation au point de mettre fin aux inscriptions.",mitigation:"Réaliser des audits de sécurité internes réguliers en amont des inspections de l'État et documenter systématiquement la conformité aux ratios et aux vérifications d'antécédents."}]}
394,trucking:{annualRevenueNote:"Revenu annuel moyen 2023 par camion déclaré par les transporteurs pour compte d'autrui, allant d'environ 210 000 USD pour les camions de charge complète/plateau à environ 457 000 USD pour les camions de messagerie groupée (LTL) ; les chauffeurs-propriétaires exploitant un seul camion se situent plutôt vers le bas de cette fourchette.",marketSizeValue:"732,3 milliards USD",licenses:[{name:"Numéro USDOT",note:"Exigé par la FMCSA (agence fédérale de sécurité des transporteurs routiers) pour tout exploitant de véhicule utilitaire engagé dans le commerce interétatique, quel que soit le type de cargaison."},{name:"Autorisation d'exploitation (numéro MC)",note:"Exigée en plus du numéro USDOT pour les transporteurs pour compte d'autrui transportant des marchandises réglementées ou des passagers contre rémunération d'un État à l'autre."},{name:"Licence de taxe sur le carburant IFTA et immatriculation proportionnelle IRP",note:"Les exploitants opérant dans plusieurs États doivent s'enregistrer à l'Accord international sur la taxe des carburants (IFTA) et au plan d'immatriculation international (IRP) pour circuler légalement d'un État à l'autre."}],kpis:[{label:"Kilométrage annuel par camion",benchmark:"En moyenne 129 000 km (80 159 miles) par camion dans l'ensemble du secteur pour compte d'autrui en 2023."},{label:"Coût par mile",benchmark:"Le coût marginal moyen d'exploitation d'un camion dans le secteur était d'environ 1,78 à 2,26 USD par mile (soit environ 1,11 à 1,40 USD par km) en 2023-2024, selon les prix du carburant."},{label:"Pourcentage de kilomètres à vide (deadhead)",benchmark:"Kilomètres parcourus sans chargement payant, suivis car chaque kilomètre à vide entraîne un coût plein en carburant et en usure sans revenu correspondant."},{label:"Distance moyenne entre pannes",benchmark:"En moyenne 60 700 km (37 700 miles) à l'échelle du secteur en 2023, utilisée comme référence pour les programmes de maintenance préventive."}],costDrivers:["Carburant — le coût marginal le plus important et le plus volatil par mile","Paiements de location ou d'achat du camion et de la remorque","Salaires et avantages sociaux des chauffeurs, qui augmentent fortement en période de pénurie de conducteurs","Réparation et entretien, pneus, et coûts de pannes imprévues","Primes d'assurance auto commerciale et cargaison","Permis, péages et frais d'enregistrement IFTA/IRP dans les différents États d'exploitation"],risks:[{risk:"Les tarifs de fret sont hautement cycliques et peuvent tomber sous les coûts d'exploitation lors des récessions du fret, comme observé en 2023-2024.",mitigation:"Diversifier les corridors de fret et les contrats clients (mélange de fret au comptant et de fret contractuel dédié) pour éviter une exposition totale aux fluctuations du marché au comptant."},{risk:"Le roulement des chauffeurs, particulièrement chez les transporteurs de charge complète longue distance, perturbe le service et augmente les coûts de recrutement.",mitigation:"Comparer la rémunération et les politiques de temps à domicile des chauffeurs aux données de référence du secteur (ATRI) et privilégier des horaires stables, ce qui réduit, selon les données, le roulement."},{risk:"Une seule infraction grave de sécurité ou un accident peut entraîner la suspension de l'autorisation d'exploitation et fermer l'entreprise.",mitigation:"Maintenir une surveillance proactive du score de sécurité CSA, des dossiers de qualification des chauffeurs et des registres de maintenance préventive bien au-delà des minimums de la FMCSA."}]},catering:{licenses:[{name:"Permis d'établissement de restauration",note:"Délivré par le service de santé de l'État ou du comté après inspection de la cuisine commerciale utilisée pour préparer les aliments destinés à la vente."},{name:"Certification de manipulateur d'aliments / de gestionnaire",note:"La plupart des États exigent au moins un gestionnaire certifié en protection alimentaire dans l'équipe, ainsi que des cartes de mani
394pulateur d'aliments pour le personnel de service, conformément aux codes sanitaires locaux."},{name:"Permis alimentaires mobiles/temporaires pour événements",note:"De nombreux comtés exigent un permis de restauration temporaire distinct pour chaque événement hors site, en particulier lorsque la nourriture est préparée ou conservée sur place plutôt que dans la cuisine agréée."}],kpis:[{label:"Coût par personne / tarification à la tête",benchmark:"Unité de tarification centrale pour les événements traiteur, calculée à partir du coût de la nourriture, de la main-d'œuvre et du matériel loué par convive."},{label:"Pourcentage de coût de la nourriture",benchmark:"Coût de la nourriture et des boissons en part du ticket traiteur, principal levier utilisé par les traiteurs pour protéger leur marge."},{label:"Utilisation de la cuisine et du personnel selon le jour de l'événement",benchmark:"La concentration des mariages et événements sociaux le week-end fait que la capacité en semaine (restauration d'entreprise, commandes à emporter) permet de combler le temps de cuisine autrement inutilisé."}],costDrivers:["Coût des marchandises vendues (nourriture et boissons)","Main-d'œuvre du jour de l'événement (chefs, serveurs, barmans), payée en grande partie à la prestation","Bail de cuisine commerciale ou location de cuisine partagée","Équipement, linge et matériel loué (chauffe-plats, tables, verrerie)","Véhicules de livraison et carburant pour les événements hors site","Assurance responsabilité liée à l'alcool et responsabilité civile générale"],risks:[{risk:"Le chiffre d'affaires est concentré le week-end et autour des périodes de fêtes, laissant la capacité de cuisine inutilisée en semaine.",mitigation:"Développer un canal de restauration d'entreprise et de commandes à emporter/boîtes-repas qui se réserve du lundi au vendredi pour lisser la demande."},{risk:"La volatilité du coût des aliments (prix des protéines et des produits frais) peut éroder les marges sur des contrats à prix fixe par personne signés des mois à l'avance.",mitigation:"Intégrer une clause d'indexation du coût des aliments dans les contrats signés longtemps à l'avance, et finaliser les menus plus près de la date de l'événement lorsque c'est possible."},{risk:"Un incident de toxi-infection alimentaire lors d'un seul événement peut déclencher une action du service de santé et nuire à la réputation de toute l'entreprise.",mitigation:"Imposer un contrôle strict des températures et la supervision d'un gestionnaire certifié en protection alimentaire à chaque événement, pas seulement dans la cuisine principale."}]},"barber-shop":{marketSizeValue:"7 milliards USD",licenses:[{name:"Licence d'État de barbier",note:"Chaque État exige que les barbiers suivent un programme de formation agréé et réussissent l'examen du conseil d'État avant de pouvoir travailler avec des clients."},{name:"Licence d'exploitation du salon",note:"La plupart des États délivrent une licence au local commercial lui-même, distincte de celle des barbiers, avec une inspection sanitaire avant l'ouverture."},{name:"Licence commerciale locale et autorisation de collecte de la taxe de vente",note:"Exigée par votre ville ou comté, ainsi qu'une autorisation de revente si vous vendez des produits de coiffage."}],kpis:[{label:"Taux d'occupation des fauteuils",benchmark:"Heures réservées divisées par les heures de fauteuil disponibles — le principal moteur du chiffre d'affaires du salon."},{label:"Panier moyen",benchmark:"Coupe plus prestations complémentaires (barbe, contours, produits) par visite client."},{label:"Taux de reprise de rendez-vous",benchmark:"Part des clients qui réservent leur prochain rendez-vous avant de quitter le salon."}],costDrivers:["Loyer de fauteuil que vous encaissez, ou commission versée aux barbiers","Travaux de plomberie et d'électricité par poste de coiffage","Tondeuses, ciseaux et cycles de remplacement des fauteuils","Assurance responsabilité civile générale et assurance accidents du travail","Stock de produits de vente au détail (pommades, huiles, shampoings)","Renouvellements de licence d'État et formation continue"],risks:[{risk:"Les barbiers gardent la relation avec leurs clients et peuvent emmener leur clientèle avec eux en partant.",mitigation:"Utilisez des systèmes de réservation internes et des programmes de fidélité pour que les clients appartiennent au salon, et proposez des paliers de commission ou une part du fauteuil pour retenir les meilleurs barbiers."},{risk:"Le chiffre d'affaires est plafonné par le nombre de fauteuils, si bien qu'un milieu de semaine calme fait perdre cette capacité de façon définitive.",mitigation:"Suivez le taux d'occupation par fauteuil et par créneau horaire, ajustez les effectifs ou proposez une tarification hors pointe pour combler les creux de semaine."},{risk:"Les chaînes low-cost et les barbiers réservables par application compriment les prix dans les marchés urbains denses.",mitigation:"Misez sur une expertise spécialisée (dégradés, taille de barbe, rasoir traditionnel) et sur l'ambiance plutôt que sur le prix."}]},"goat-farm":{startupCostNote:"Déterminé par l'accès au pâturage, la clôture, le cheptel reproducteur et les abris pour un troupeau de taille petite à moyenne.",annualRevenueNote:"Basé sur un troupeau de 50 chèvres mettant bas au printemps et vendant les chevreaux entre 25 et 32 kg (55 à 70 lbs) ; évolue avec la taille du troupeau.",licenses:[{name:"Identifiant de site d'élevage / enregistrement du cheptel",note:"La plupart des États exigent l'enregistrement du site d'élevage pour la traçabilité sanitaire avant tout déplacement d'animaux hors de la ferme."},{name:"Permis laitier de catégorie A (chèvres laitières uniquement)",note:"Exigé par les autorités laitières de l'État avant de vendre du lait cru ou des produits laitiers transformés."},{name:"Identification du troupeau contre la tremblante (scrapie)",note:"L'USDA (ministère américain de l'Agriculture) exige des boucles d'identification officielles contre la tremblante sur les ovins et caprins vendus ou déplacés entre États."}],kpis:[{label:"Poids de marché à la vente",benchmark:"25 à 32 kg (55 à 70 lbs)"},{label:"Taux de mise bas par chèvre",benchmark:"Nombre de chevreaux par chèvre saillie — le principal moteur du revenu par tête"},{label:"Mortalité des chevreaux jusqu'au sevrage",benchmark:"Suivi de près car la charge parasitaire et la prédation pèsent le plus lourd sur ce chiffre."}],costDrivers:["Alimentation et foin d'appoint pendant l'hiver ou la saison sèche","Clôtures — les chèvres nécessitent des clôtures bien plus robustes que les bovins ou les ovins","Lutte contre les parasites et soins vétérinaires","Renouvellement du cheptel reproducteur et rotation des boucs","Lutte contre les prédateurs (chiens de garde, ânes, parcs nocturnes sécurisés)","Transport vers la vente aux enchères ou l'abattoir"],risks:[{risk:"Le ver de la caillette (Haemonchus contortus, dit « barber pole worm ») provoque de lourdes pertes chez les chevreaux et développe une résistance croissante aux vermifuges.",mitigation:"Pratiquez la rotation des pâturages, surveillez à l'aide de la méthode FAMACHA et appliquez un vermifugeage ciblé et sélectif plutôt qu'un traitement systématique du troupeau."},{risk:"La prédation par les coyotes et les chiens errants peut anéantir la production de chevreaux d'une saison entière.",mitigation:"Utilisez des animaux de garde du troupeau et rentrez les chevreaux dans des parcs nocturnes sécurisés."},{risk:"Les prix aux enchères varient fortement selon la demande saisonnière liée aux fêtes ethniques et religieuses.",mitigation:"Calez les mises bas sur les péri
394odes de forte demande festive et développez des circuits de vente directe et de reproducteurs."}]},pharmacy:{licenses:[{name:"Autorisation du State Board of Pharmacy (ordre des pharmaciens de l'État)",note:"Délivrée à l'officine elle-même et exige la déclaration d'un pharmacien responsable (« pharmacist-in-charge »)."},{name:"Enregistrement auprès de la DEA (agence antidrogue américaine)",note:"Requis avant de pouvoir commander, stocker ou dispenser toute substance contrôlée."},{name:"Numéro NPI et affiliation aux réseaux de PBM (gestionnaires de prestations pharmaceutiques)",note:"Sans contrats avec les PBM et Medicare Part D, vous ne pouvez pas facturer l'assurance, qui représente la grande majorité du volume d'ordonnances."},{name:"Licence d'État de grossiste-répartiteur / reconditionneur",note:"Nécessaire si vous préparez ou reconditionnez des médicaments pour d'autres établissements plutôt que de dispenser uniquement aux patients."}],kpis:[{label:"Part des pharmacies indépendantes dans le commerce de détail aux États-Unis",benchmark:"35 %"},{label:"Pharmacies indépendantes proposant la vaccination antigrippale",benchmark:"91 %"},{label:"Ordonnances délivrées par jour",benchmark:"L'indicateur de volume central que les prêteurs demanderont ; il détermine les effectifs et la rotation des stocks."},{label:"Taux de substitution générique",benchmark:"Une part plus élevée de génériques signifie généralement une meilleure marge par ordonnance qu'un volume dominé par les marques."}],costDrivers:["Coût de portage des stocks de médicaments, notamment les marques et produits spécialisés","Taux de remboursement des PBM et frais rétroactifs DIR (frais de rétention sur remboursement)","Salaires des pharmaciens et préparateurs","Logiciels de dispensation, robotique et frais de prescription électronique","Responsabilité civile professionnelle et conformité réglementaire","Service de livraison si vous le proposez localement"],risks:[{risk:"Le remboursement des PBM peut être inférieur au coût d'acquisition sur certaines ordonnances, et les frais DIR grignotent la marge des mois après la vente.",mitigation:"Suivez la marge brute par ordonnance, rejoignez un PSAO (organisation de services aux pharmacies) pour renforcer votre pouvoir de négociation, et développez les prestations cliniques payantes en direct."},{risk:"Le chiffre d'affaires dépend d'un mix de payeurs que vous ne contrôlez pas.",mitigation:"Diversifiez vers la vaccination, la gestion thérapeutique (MTM), les tests rapides, la préparation magistrale et le matériel médical durable."},{risk:"Les chaînes et les pharmacies de vente par correspondance détenues par les PBM captent les ordonnances récurrentes de traitement chronique.",mitigation:"Misez sur le conditionnement d'observance, la livraison et le service personnalisé pour les patients complexes et âgés."}]},"ice-cream-shop":{marketSizeValue:"7,4 milliards USD",licenses:[{name:"Permis de restauration du service de santé local",note:"Couvre l'équipement, les températures de conservation au froid et le stockage ; inspecté avant l'ouverture puis périodiquement."},{name:"Certification de manipulateur / gestionnaire de denrées alimentaires",note:"Le personnel servant des aliments doit généralement détenir un certificat de sécurité alimentaire reconnu par l'État."},{name:"Licence de fabricant de desserts glacés / produits laitiers",note:"Exigée dans de nombreux États si vous fabriquez la glace sur place plutôt que de revendre un produit fini."}],kpis:[{label:"Croissance annualisée du secteur",benchmark:"5,8 % sur les cinq années jusqu'en 2025"},{label:"Part de la haute saison dans le chiffre d'affaires annuel",benchmark:"La plupart des glaciers réalisent l'essentiel de leurs ventes annuelles sur environ quatre mois d'été."},{label:"Surrendement et pertes par bac",benchmark:"Le produit perdu à cause des brûlures de congélation, de la fonte et du surdosage pèse directement sur un coût des ventes déjà serré."}],costDrivers:["Vitrines réfrigérées, turbine à glace et réfrigération de secours","Fluctuations du prix des produits laitiers, de la crème et des ingrédients d'accompagnement","Pic d'effectifs estival et fort turnover chez les jeunes employés","Loyer d'emplacements à fort passage piéton que vous n'exploitez pleinement qu'en été","Électricité pour la congélation continue","Permis sanitaires et conformité en matière de sécurité alimentaire"],risks:[{risk:"La demande est fortement saisonnière et dépendante de la météo, alors que le loyer fixe court toute l'année contre seulement quatre mois porteurs.",mitigation:"Négociez des conditions de bail saisonnières lorsque c'est possible et ajoutez café, boissons chaudes, gâteaux ou traiteur pour les mois froids."},{risk:"Une panne de congélateur détruit le stock et ferme la boutique instantanément.",mitigation:"Prévoyez un budget pour une réfrigération de secours, des alarmes de température et une assurance bris de machine."},{risk:"Les hausses du prix des produits laitiers pèsent sur le coût des ventes dans une catégorie où les clients résistent aux hausses de prix.",mitigation:"Bloquez les prix fournisseurs avant le début de la saison et ajustez les portions plutôt que les prix affichés."}]},"cleaning-company":{licenses:[{name:"Licence commerciale générale",note:"La plupart des villes et comtés exigent une licence commerciale standard avant de pouvoir facturer les clients."},{name:"Caution de nettoyage (« janitorial bond »)",note:"Un cautionnement couvrant les pertes du client liées au vol par un employé — souvent exigé avant l'attribution d'un contrat commercial."},{name:"Assurance responsabilité civile générale et accidents du travail",note:"Exigée dans presque tous les contrats commerciaux, et l'assurance accidents du travail est obligatoire dans la plupart des États dès que vous avez des employés."}],kpis:[{label:"Chiffre d'affaires par équipe et par jour",benchmark:"Le nombre de missions réalisées par équipe et par vacation détermine si la densité des tournées est efficace."},{label:"Part de la main-d'œuvre dans le chiffre d'affaires",benchmark:"Le principal poste de coût ; les moindres inefficacités de planning s'y répercutent immédiatement."},{label:"Taux de fidélisation des clients",benchmark:"Les contrats récurrents constituent tout le modèle économique — l'attrition y est bien plus dommageable que pour des prestations ponctuelles."},{label:"Temps de trajet entre les missions",benchmark:"Le déplacement non facturable est le tueur de marge caché dans les tournées résidentielles."}],costDrivers:["Salaires des agents d'entretien et charges sociales","Carburant, assurance et entretien des véhicules sur les tournées","Produits chimiques et consommables de nettoyage","Primes de cautionnement et d'assurance responsabilité civile","Équipement (aspirateurs, monobrosses, nettoyeurs haute pression)","Recrutement et formation pour compenser le turnover"],risks:[{risk:"Le turnover du personnel de nettoyage est structurellement élevé, et des équipes instables sont la première cause de résiliation de contrats.",mitigation:"Constituez des équipes fixes par compte, payez au-dessus du marché local, et utilisez des check-lists avec un système de notation qualité visible par le client."},{risk:"Un gros contrat commercial peut représenter la majorité du chiffre d'affaires, et sa perte peut être existentielle.",mitigation:"Plafonnez la part de chiffre d'affaires de tout client unique et maintenez un mix de prestations résidentielles et commerciales."},{risk:"Les sinistres pour dégâts matériels ou vol peuvent mettre fin à une relation commerciale et faire grimper les primes.",mitigation:"Faites cautionner tout le personnel, effectuez des vérifications d'antécédents, et documentez l'état des lieux au début de chaque contrat."}]},"auto-repair-shop":{marketSizeValue:"92,1 milliards USD",licenses:[{name:"Enregistrement d'atelier de réparation automobile de l'État",note:"Des États comme la Californie exigent que tout atelier effectuant des réparations payantes s'enregistre avant l'ouverture ; les exigences varient fortement ailleurs."},{name:"Conformité EPA (agence fédérale de l'environnement) et de l'État en matière de déchets dangereux",note:"Huile usagée, liquide de refroidissement, solvants et fluides frigorigènes sont des flux de déchets réglementés avec obligation de tenue de registres d'élimination."},{name:"Certification technicien EPA section 609",note:"Requise pour toute personne intervenant sur les systèmes de climatisation des véhicules."},{name:"Assurance responsabilité de garagiste (« garagekeepers liability »)",note:"L'assurance responsabilité civile générale standard ne couvre pas les véhicules des clients placés sous votre garde et votre contrôle."}],kpis:[{label:"Taux d'occupation des postes de travail",benchmark:"Heures productives par poste rapportées aux heures disponibles — la capacité constitue ici le plafond de chiffre d'affaires."},{label:"Taux horaire effectif de main-d'œuvre",benchmark:"Chiffre d'affaires de main-d'œuvre réel divisé par les heures travaillées, généralement inférieur au tarif horaire affiché."},{label:"Valeur moyenne d'un ordre de réparation",benchmark:"Pièces plus main-d'œuvre par ticket ; augmente avec la rigueur d'inspection et le suivi des travaux refusés."},{label:"Efficacité des techniciens",benchmark:"Heures facturées rapportées aux heures pointées par technicien."}],costDrivers:["Coût d'acquisition des pièces et obsolescence des stocks","Salaires des techniciens qualifiés dans un marché du travail tendu","Ponts élévateurs, bancs de géométrie et outils de diagnostic","Loyer de l'atelier, avec des contraintes de zonage sur l'implantation","Assurance responsabilité de garagiste et responsabilité civile générale","Formation continue et outillage pour les véhicules électriques et les systèmes ADAS (aide à la conduite)"],risks:[{risk:"La pénurie de techniciens signifie que la capacité est limitée par le recrutement, et non par la demande.",mitigation:"Mettez en place une filière d'apprentissage avec un lycée te
394chnique local et payez pour fidéliser plutôt que de réembaucher sans cesse."},{risk:"Les véhicules électriques et les systèmes avancés d'aide à la conduite exigent un outillage, un matériel de calibration et des certifications coûteux.",mitigation:"Budgétez une ligne d'outillage récurrente et spécialisez-vous délibérément plutôt que de vouloir tout traiter."},{risk:"Les reprises pour réparations mal exécutées détruisent à la fois la marge et la réputation dans un marché local fondé sur le bouche-à-oreille.",mitigation:"Imposez une inspection multipoint documentée et un contrôle qualité avant la restitution du véhicule."}]},hostel:{marketSizeValue:"651,7 millions USD",licenses:[{name:"Licence d'hébergement / de logement temporaire",note:"Exigée par l'État ou la ville pour toute propriété louant des lits à la nuitée."},{name:"Certificat de sécurité incendie et d'occupation",note:"Les dortoirs partagés sont soumis à des règles d'issue de secours, d'alarme et de limite d'occupation plus strictes que l'hébergement individuel."},{name:"Enregistrement à la taxe de séjour (« transient occupancy tax »)",note:"Vous devez vous enregistrer pour collecter et reverser la taxe de séjour locale sur chaque nuitée vendue."},{name:"Permis du service de santé",note:"S'applique aux salles de bains partagées, ainsi qu'à toute cuisine commune ou service de petit-déjeuner inclus."}],kpis:[{label:"Taux d'occupation des lits",benchmark:"Mesuré par lit plutôt que par chambre, ce qui constitue la différence clé avec le reporting hôtelier."},{label:"RevPAB (revenu par lit disponible)",benchmark:"L'équivalent pour les auberges du RevPAR hôtelier, et le chiffre que les prêteurs demanderont."},{label:"Durée moyenne de séjour",benchmark:"Des séjours plus longs réduisent le coût de ménage lié à la rotation et la commission OTA (agence de voyage en ligne) par nuitée vendue."},{label:"Part de réservation directe",benchmark:"Chaque point repris aux OTA (agences de voyage en ligne) est de la marge récupérée."}],costDrivers:["Bail ou emprunt immobilier, le principal coût fixe","Main-d'œuvre de ménage, qui évolue avec la rotation des lits et non le nombre de chambres","Commissions des OTA (Hostelworld, Booking.com)","Charges dans des espaces communs occupés en continu","Cycles de remplacement des lits superposés, matelas et linge","Sécurité : casiers, accès par carte magnétique et personnel de nuit"],risks:[{risk:"L'occupation varie fortement selon la saisonnalité touristique alors que le loyer et les coûts de personnel restent constants.",mitigation:"Ciblez les segments hors saison comme les étudiants, les travailleurs itinérants et les voyageurs de longue durée avec des tarifs hebdomadaires."},{risk:"La dépendance aux OTA (agences de voyage en ligne) cède une part importante de chaque réservation à une plateforme que vous ne contrôlez pas.",mitigation:"Investissez dans la réservation directe, les incitations pour les clients fidèles et un site mobile rapide."},{risk:"Les dortoirs partagés créent des risques de vol, de sécurité et de responsabilité entre inconnus.",mitigation:"Installez des casiers individuels par lit et un accès par étage à carte magnétique, et gardez du personnel sur place la nuit."}]},"flower-shop":{netMarginNote:"Le stock périssable et une demande concentrée sur quelques fêtes compriment la marge en dehors des semaines de pointe.",marketSizeValue:"7,9 milliards USD",licenses:[{name:"Autorisation de revente / licence de taxe de vente",note:"Requise pour vendre des compositions au détail et reverser la taxe de vente de l'État."},{name:"Licence commerciale locale",note:"Licence municipale standard pour une boutique de vente au détail."},{name:"Permis d'importation de l'USDA (ministère de l'Agriculture) pour les fleurs importées",note:"S'applique si vous importez des fleurs coupées directement plutôt que de les acheter via un grossiste national."}],kpis:[{label:"Panier moyen",benchmark:"50 à 80 USD"},{label:"Taux de perte des stocks",benchmark:"5 à 10 % des tiges"},{label:"Concentration du chiffre d'affaires sur les fêtes",benchmark:"La Saint-Valentin et la fête des Mères à elles seules génèrent une part disproportionnée des ventes annuelles."},{label:"Carnet de réservation mariages et événements",benchmark:"Les contrats événementiels sont le principal moyen pour les fleuristes de lisser les mois hors fêtes."}],costDrivers:["Stock périssable de tiges et de verdure passé en perte chaque semaine","Électricité de la chambre froide et entretien du système de réfrigération","Véhicule de livraison, carburant et temps de conduite","Surcroît de main-d'œuvre pour la Saint-Valentin et la fête des Mères","Frais et commissions des services de transmission florale (« wire services »)","Plateforme de commande en ligne et publicité de recherche locale"],risks:[{risk:"Les tiges invendues ne valent plus rien au bout de quelques jours, si bien que les erreurs de prévision de la demande se transforment directement en pertes.",mitigation:"Commandez en flux tendu en fonction des événements confirmés et démarquez le stock vieillissant en bouquets prêts à vendre."},{risk:"Le chiffre d'affaires est concentré sur une poignée de fêtes, et une mauvaise semaine de la Saint-Valentin peut déterminer l'année entière.",mitigation:"Développez des comptes récurrents d'entreprise, d'hôtellerie et d'abonnement qui achètent chaque semaine."},{risk:"Les services de transmission florale et les chaînes de supermarchés captent les clients sensibles au prix et prélèvent une commission sur les commandes transmises.",mitigation:"Encouragez la commande directe locale et misez sur la création sur mesure et la fiabilité de la livraison le jour même."}]},"personal-trainer":{licenses:[{name:"Certification agréée en coaching sportif (NASM, ACE, ACSM)",note:"Ce n'est pas une licence gouvernementale dans la plupart des États, mais les salles de sport, les assureurs et la plupart des clients exigent une certification agréée."},{name:"Certification RCP/DEA (CPR/AED)",note:"Exigée par les organismes de certification et les assureurs en responsabilité civile avant de pouvoir entraîner des clients."},{name:"Licence d'exploitation commerciale et assurance responsabilité civile professionnelle",note:"Une licence commerciale locale pour facturer les clients, ainsi qu'une couverture de responsabilité professionnelle pour les réclamations liées aux blessures."}],kpis:[{label:"Salaire annuel médian des coachs sportifs",benchmark:"46 180 USD (mai 2024)"},{label:"Croissance de l'emploi projetée 2023-2033",benchmark:"Environ 12 %, bien plus rapide que la moyenne"},{label:"Séances données par semaine",benchmark:"Votre plafond de revenu réel dans un modèle en tête-à-tête."},{label:"Rétention client au-delà de 90 jours",benchmark:"C'est là que se produit la majorité de l'attrition ; cela détermine si les recommandations finissent par s'accumuler."}
394],costDrivers:["Renouvellements de certification et formation continue","Assurance responsabilité civile professionnelle","Frais d'accès en salle, loyer de studio ou temps de déplacement chez les clients","Équipement pour l'entraînement mobile ou à domicile","Logiciels de planification, de paiement et de programmation","Acquisition de clients via publicité et contenu"],risks:[{risk:"Le revenu est strictement plafonné par les heures facturables, car le modèle est un coach pour un client.",mitigation:"Ajoutez des séances en petit groupe, des programmes en ligne et du coaching hybride pour dissocier le revenu des heures travaillées."},{risk:"Les clients se désengagent en cas de blessure, de vacances ou de baisse de motivation, ce qui rend le revenu irrégulier.",mitigation:"Vendez des forfaits multi-séances et des abonnements plutôt que des séances à l'unité, et suivez visiblement les progrès."},{risk:"Une blessure d'un client pendant une séance crée une exposition directe à la responsabilité.",mitigation:"Effectuez un dépistage de santé et un questionnaire PAR-Q pour chaque client et souscrivez une assurance responsabilité civile professionnelle."}]},"car-rental":{licenses:[{name:"Autorisation d'État pour l'activité de location de véhicules",note:"Plusieurs États exigent une autorisation spécifique à la location de véhicules en complément de la licence commerciale générale — l'État de Washington en est un exemple."},{name:"Immatriculation des véhicules de location auprès du service des immatriculations de l'État (DMV)",note:"La plupart des États immatriculent les flottes de location séparément des véhicules privés."},{name:"Assurance auto commerciale et assurance « garagekeepers » (responsabilité du garagiste)",note:"Couverture de flotte respectant les minimums de responsabilité financière de l'État, plus élevés pour un usage locatif."},{name:"Enregistrement pour la collecte de la taxe/surtaxe de location",note:"De nombreux États et aéroports prélèvent une surtaxe de location spécifique que vous devez collecter et reverser."}],kpis:[{label:"Taux d'utilisation de la flotte",benchmark:"Jours loués divisés par les jours de flotte disponibles — la mesure d'efficacité principale."},{label:"Revenu par véhicule et par jour (RPD)",benchmark:"Tarif journalier moyen réellement obtenu sur l'ensemble de la flotte."},{label:"Dépréciation par véhicule et par mois",benchmark:"Généralement le poste de coût le plus important, celui qui détermine la rentabilité."},{label:"Délai de rotation entre deux locations",benchmark:"Le temps de nettoyage et d'inspection est du temps de flotte non louable."}],costDrivers:["Acquisition de la flotte et dépréciation mensuelle","Assurance de flotte, nettement plus élevée qu'une couverture privée","Entretien, nettoyage et réparation des dommages entre deux locations","Loyer de l'emplacement, notamment les redevances de concession aéroportuaire","Financement de flotte ou intérêts de « floor-plan » (crédit de stock)","Personnel de comptoir et logiciel de réservation"],risks:[{risk:"La valeur résiduelle des véhicules d'occasion évolue indépendamment de votre activité et peut effacer l'équité de votre flotte.",mitigation:"Appliquez un calendrier de rotation de flotte discipliné et vendez via plusieurs canaux de revente plutôt qu'une seule enchère."},{risk:"La demande suit étroitement les cycles de voyage, si bien que les ralentissements frappent alors que les coûts de financement de la flotte continuent de courir.",mitigation:"Diversifiez au-delà du trafic aéroportuaire et touristique vers les locations de remplacement d'assurance, locales et longue durée."},{risk:"Les litiges sur les dommages et les accidents imputables au locataire créent une exposition continue à la responsabilité et des rétrofacturations.",mitigation:"Photographiez chaque véhicule au départ et au retour, vérifiez l'assurance du locataire et proposez des exonérations de dommages clairement documentées."}]},"liquor-store":{licenses:[{name:"Licence d'État de vente d'alcool à emporter (off-premise)",note:"Le coût le plus variable de cette activité. Certains États facturent quelques centaines de dollars ; dans les marchés à quota limité, une licence existante peut se négocier à six chiffres."},{name:"Permis de revendeur / enregistrement à la taxe de vente",note:"Obligatoire pour collecter et reverser la taxe de vente sur l'alcool au détail."},{name:"Permis d'urbanisme local ou dérogation d'usage conditionnel",n
394ote:"De nombreuses municipalités restreignent la vente d'alcool à proximité des écoles, lieux de culte et zones résidentielles."},{name:"Enregistrement fédéral auprès du TTB (bureau américain de l'alcool et du tabac) (en cas d'importation ou de vente en gros)",note:"Requis uniquement si vous allez au-delà de la simple vente au détail."}],kpis:[{label:"Marge brute par catégorie",benchmark:"Spiritueux, vin et bière ont des marges très différentes — le mix de catégories détermine la rentabilité globale."},{label:"Rotation de stock par an",benchmark:"L'alcool est un capital à rotation lente ; le stock dormant immobilise durablement la trésorerie."},{label:"Taux de démarque (shrinkage)",benchmark:"Le vol et la casse pèsent de façon disproportionnée sur des marges nettes déjà faibles."},{label:"Panier moyen",benchmark:"Attachement de mixeurs, snacks et montées en gamme par transaction."}],costDrivers:["Acquisition de la licence d'alcool, très variable selon l'État","Stock initial de bière, vin et spiritueux","Systèmes de sécurité, caméras et prévention des pertes","Bail commercial dans un emplacement visible et autorisé","Taxes d'accise d'État et déclarations de conformité","Caisse (POS) avec vérification d'âge et journalisation de conformité"],risks:[{risk:"Les règles de licence varient tellement d'un État et d'un comté à l'autre qu'un plan viable dans un marché peut être impossible dans le suivant.",mitigation:"Vérifiez les règles ABC de votre État et comté, le statut de quota et le marché de transfert de licence avant de signer un bail."},{risk:"Un seul contrôle de conformité manqué sur la vérification d'âge peut suspendre ou vous faire perdre définitivement la licence.",mitigation:"Formez chaque employé au contrôle d'identité, scannez les pièces d'identité électroniquement et conservez des registres de conformité documentés."},{risk:"L'autorisation progressive de la vente de vin et spiritueux dans les supermarchés et grandes surfaces érode le monopole de la catégorie.",mitigation:"Construisez une profondeur de sélection défendable, une expertise produit du personnel et des dégustations que les chaînes ne peuvent égaler."}]},"recording-studio":{licenses:[{name:"Licence commerciale et enregistrement de l'entité",note:"Permis local standard pour exploiter un établissement commercial et facturer les clients."},{name:"Approbation d'urbanisme et conformité à la réglementation sur le bruit",note:"Les installations audio commerciales proches des zones résidentielles nécessitent souvent une validation spécifique d'urbanisme sur l'isolation acoustique."},{name:"Licences PRO / mécaniques (en cas de sortie d'enregistrements)",note:"S'applique uniquement si le studio produit ou distribue lui-même des enregistrements originaux plutôt que de vendre du temps de studio."},{name:"Certificat d'occupation après travaux",note:"Les travaux d'aménagement acoustique modifient généralement assez l'espace pour exiger une nouvelle inspection."}],kpis:[{label:"Heures réservées par mois",benchmark:"L'utilisation de la salle constitue tout le modèle économique."},{label:"Répartition du revenu : location de salle vs ingénierie",benchmark:"Les services d'ingénierie et de production sont plus rentables que la simple location de salle."},{label:"Part de clients récurrents",benchmark:"Les studios vivent d'un petit nombre d'artistes, labels et producteurs fidèles."},{label:"Coût de renouvellement d'équipement par an",benchmark:"Reporter cet investissement rend discrètement la salle non compétitive."}],costDrivers:["Traitement acoustique, isolation et aménagement structurel","Console, convertisseurs, microphones et monitoring","Licences DAW (station de travail audionumérique) et abonnements de plugins","Loyer d'un local avec hauteur sous plafond et isolation adéquates","Ingénieurs salariés ou indépendants par séance","Entretien continu et renouvellement d'équipement"],risks:[{risk:"Les home studios performants et les logiciels de production bon marché ont durablement réduit la demande de simple enregistrement de base.",mitigation:"Vendez ce qu'une chambre à coucher ne peut reproduire — une grande pièce live, une chaîne de signal haut de gamme et une ingénierie expérimentée."},{risk:"Les réservations sont irrégulières et liées aux projets, alors que le loyer et le financement d'équipement sont des charges fixes mensuelles.",mitigation:"Ajoutez la production de podcasts, la voix off, le mixage, le mastering et la location pour tournages afin de remplir le calendrier."},{risk:"Un capital initial important immobilisé dans un local spécifique rend tout déménagement très coûteux.",mitigation:"Négociez des baux longs avec options de renouvellement avant d'investir dans de
394s travaux acoustiques permanents."}]},"juice-bar":{licenses:[{name:"Permis local d'établissement de restauration",note:"Requis auprès du service de santé municipal ou du comté avant de servir des boissons préparées."},{name:"Certification de manipulation des aliments / gestion",note:"Le personnel doit détenir un certificat de sécurité alimentaire reconnu par l'État."},{name:"Plan HACCP pour le jus pressé à froid (cold-press)",note:"Le jus non pasteurisé vendu hors des locaux relève des règles HACCP de la FDA sur les jus et des exigences d'étiquetage d'avertissement."},{name:"Approbation de cuisine commerciale ou de « commissary » (cuisine centrale partagée)",note:"Nécessaire si vous pressez hors site ou vendez du jus embouteillé en gros à d'autres détaillants."}],kpis:[{label:"Coût des produits frais en part du revenu",benchmark:"Le pressage à froid (cold-press) consomme plusieurs livres de fruits et légumes par bouteille, ce qui fait grimper le coût des marchandises vendues pour une activité de boisson."},{label:"Taux de gaspillage et de péremption",benchmark:"Les produits frais invendus et le jus pressé expirent tous deux en quelques jours."},{label:"Ticket moyen et taux d'attachement",benchmark:"Les compléments (boosters), shots et produits alimentaires sont là où la marge se rattrape."},{label:"Débit aux heures de pointe",benchmark:"Les ruées du matin et post-salle de sport concentrent l'essentiel des transactions quotidiennes sur des créneaux étroits."}],costDrivers:["Produits frais, avec une forte perte de rendement au pressage à froid","Équipement de pressage à froid et de mixage, plus entretien","Bail commercial dans des emplacements à fort passage orientés bien-être","Électricité pour la réfrigération et le stockage au froid","Bouteilles, gobelets et emballages compostables","Personnel à temps partiel planifié autour des créneaux de pointe étroits"],risks:[{risk:"La péremption des produits frais est sévère, car les matières premières comme le jus fini ont une durée de conservation très courte.",mitigation:"Appliquez des niveaux de stock stricts, consignez le gaspillage quotidien et transformez les produits vieillissants en mélanges ou spéciaux embouteillés."},{risk:"Les mois froids voient une chute nette de la demande de boissons fraîches.",mitigation:"Ajoutez des soupes, boissons chaudes fonctionnelles, bols açaí et cures d'abonnement pour soutenir le revenu hivernal."},{risk:"Les barrières à l'entrée très faibles permettent aux cafés, salles de sport et chaînes d'épicerie d'ajouter une gamme de jus à tout moment.",mitigation:"Différenciez-vous par une véritable qualité de pressage à froid, la transparence sur l'approvisionnement et des partenariats avec salles de sport ou studios."}]},"coffee-cart":{marketSizeValue:"49,5 milliards USD (marché des cafés de marque, la catégorie adjacente)",licenses:[{name:"Permis de vendeur ambulant de nourriture",note:"Un permis du service de santé spécifique à la vente de nourriture et boissons sur chariot ou kiosque."},{name:"Certification de manipulation des aliments",note:"Requise pour l'opérateur et tout membre du personnel préparant des boissons."},{name:"Accord de « commissary » (cuisine centrale partagée)",note:"De nombreuses juridictions exigent que les vendeurs ambulants préparent et nettoient dans une cuisine centrale agréée fixe."},{name:"Permis d'emplacement ou de zone de vente",note:"Les zones de vente de rue, marchés fermiers et propriétés privées nécessitent chacun leur propre autorisation."}],kpis:[{label:"Transactions par heure en pointe",benchmark:"Un chariot vit ou meurt selon son débit lors de la ruée du matin."},{label:"Revenu par emplacement ou événement",benchmark:"Permet de classer les emplacements et d'abandonner ceux qui ne couvrent pas leurs frais de site."},{label:"Coût par tasse (grains, lait, gobelet)",benchmark:"Des montants faibles en valeur absolue, mais qui déterminent la marge de chaque vente."},{label:"Part du revenu issue des événements réservés",benchmark:"La restauration sous contrat constitue la moitié prévisible du revenu d'un chariot."}],costDrivers:["Machine à espresso, moulin et aménagement du chariot","Grains de café, produits laitiers et alternatives végétales","Frais d'emplacement, loyer de stand de marché ou frais de site d'événement","Source d'énergie (générateur ou batterie) et approvisionnement en eau","Gobelets, couvercles et consommables","Permis, frais de commissary et inspections sanitaires"],risks:[{risk:"Le revenu dépend presque entièrement du trafic piéton et de la météo à un endroit précis, un jour précis.",mitigation:"Construisez une rotation d'emplacements éprouvés et ajoutez de la restauration d'entreprise et de mariages réservée pour un revenu garanti."},{risk:"Les règles municipales de vente ambulante peuvent supprimer votre meilleur emplacement sans préavis.",mitigation:"Sécurisez des accords écrits avec des propriétaires privés plutôt que de dépendre uniquement des zone
394s de vente publiques."},{risk:"Un stockage limité et un seul groupe de percolation plafonnent ce que vous pouvez vendre pendant la ruée qui compte.",mitigation:"Gardez un menu resserré, pré-préparez par lots quand la qualité le permet, et envisagez un second moulin avant un second chariot."}]},hotel:{startupCostNote:"Basé sur le coût de développement par chambre pour un établissement de service limité de 80 à 150 chambres ; les conversions coûtent nettement moins cher que les constructions neuves.",marketSizeValue:"758,6 milliards USD de dépenses des clients d'hôtels aux États-Unis",licenses:[{name:"Licence d'État d'établissement d'hébergement",note:"Requise pour exploiter un hébergement transitoire, avec inspection périodique de santé et sécurité."},{name:"Enregistrement à la taxe de séjour (transient occupancy tax)",note:"Les hôtels doivent s'enregistrer pour collecter et reverser la taxe locale de séjour sur le revenu des chambres."},{name:"Certificat de sécurité incendie et certificat d'occupation",note:"Couvre les alarmes, gicleurs, issues de secours et limites d'occupation affichées."},{name:"Licences de restauration et de vente d'alcool",note:"Nécessaires séparément si vous exploitez un restaurant, un bar ou un service de petit-déjeuner."}],kpis:[{label:"Tarif journalier moyen (ADR)",benchmark:"Environ 156,67 USD (moyenne nationale américaine)"},{label:"RevPAR",benchmark:"Environ 83,30 USD (moyenne nationale américaine)"},{label:"Taux d'occupation",benchmark:"Environ 53 à 63 % selon le mois"},{label:"GOPPAR",benchmark:"Bénéfice d'exploitation brut par chambre disponible — ce que les prêteurs utilisent pour tester le service de la dette."}],costDrivers:["Coût de développement ou d'acquisition par chambre","Redevances de franchise, normes de marque et frais du système de réservation","Main-d'œuvre d'entretien ménager et de réception","Charges d'exploitation d'une grande propriété fonctionnant en continu","Assurance immobilière et taxes foncières","Réserve FF&E (mobilier, agencements, équipement) pour les rénovations périodiques obligatoires"],risks:[{risk:"L'ADR et le taux d'occupation suivent l'économie globale du voyage, alors que le service de la dette sur la propriété ne bouge pas du tout.",mitigation:"Souscrivez de manière prudente en vous basant sur le RevPAR le plus bas et constituez des réserves calibrées pour un ralentissement de plusieurs trimestres."},{risk:"Les contrats de franchise verrouillent des redevances et imposent des plans coûteux d'amélioration de la propriété selon le calendrier de la marque.",mitigation:"Modélisez l'économie franchise contre indépendant sur toute la durée du contrat avant de signer."},{risk:"Les commissions des OTA (agences de voyage en ligne) et les frais de marque prennent ensemble une part substantielle de chaque nuitée vendue.",mitigation:"Développez la part de réservation directe et négociez des contrats de groupe et d'entreprise contournant les canaux OTA."}]},"poultry-farm":{marketSizeValue:"70,2 milliards USD de ventes totales du secteur avicole américain",licenses:[{name:"Contrat d'éleveur avec intégrateur",note:"La plupart des productions de poulets de chair américains fonctionnent sous contrat avec un intégrateur qui fournit les oiseaux et l'aliment ; les termes du contrat sont soumis à la supervision de l'USDA."},{name:"Permis d'État de gestion des déjections animales",note:"Les exploitations dépassant les seuils de taille de l'État doivent obtenir un permis de gestion des nutriments ou du fumier auprès de l'agence environnementale de l'État."},{name:"Permis NPDES pour les grands CAFO (élevages intensifs)",note:"Les élevages intensifs (CAFO) dépassant les seuils fédéraux nécessitent un permis de rejet au titre du Clean Water Act (loi fédérale sur l'eau propre)."},{name:"Licence de manipulateur/classificateur d'œufs (élevages de poules pondeuses)",note:"Exigée par la plupart des États pour classer, conditionner et vendre des œufs en coquille."}],kpis:[{label:"Ventes totales du secteur avicole américain",benchmark:"70,2 milliards USD (2024)"},{label:"Indice de consommation (FCR, feed conversion ratio)",benchmark:"Livres d'aliment par livre de poids vif — la mesure d'efficacité centrale de la production de poulets de chair."},{label:"Taux de survie jusqu'à l'âge de marché",benchmark:"Part des poussins placés atteignant l'âge de marché ; de petites variations affectent nettement le règlement de l'éleveur."},{label:"Gain de poids moyen quotidien",benchmark:"Détermine combien de lots par bâtiment et par an vous pouvez faire tourner."}],costDrivers:["Aliment, dominé par les prix du maïs et du tourteau de soja","Construction de bâtiments pour poulets de chair ou pondeuses et service de la dette","Énergie pour la ventilation, le chauffage et l'éclairage","Remplacement des poussins ou des poulettes prÃ
394ªtes à pondre","Gestion, élimination et conformité liées à la litière","Mises à niveau des bâtiments imposées par l'intégrateur"],risks:[{risk:"La grippe aviaire hautement pathogène peut exiger l'abattage d'un troupeau entier avec peu de préavis.",mitigation:"Appliquez une biosécurité stricte — accès contrôlé, chaussures dédiées, exclusion des oiseaux sauvages — et souscrivez une assurance maladie avicole si disponible."},{risk:"Les éleveurs sous contrat portent une dette de bâtiment à long terme pendant que l'intégrateur contrôle le placement des oiseaux et le règlement.",mitigation:"Modélisez le service de la dette par rapport au calendrier de placement historique le plus bas de l'intégrateur, pas la moyenne, avant de construire."},{risk:"Les fluctuations du prix des matières premières agricoles compriment les marges des exploitations indépendantes sans amortisseur d'intégrateur.",mitigation:"Utilisez les achats à terme ou la couverture sur le maïs et le tourteau de soja lorsque l'échelle le permet."}]}},pt:{"travel-agency":{licenses:[{name:'Registo como Vendedor de Viagens ("Seller of Travel")',note:"Califórnia, Flórida, Havai, Iowa e Washington exigem que qualquer empresa que venda viagens a residentes desses estados se registe como vendedor de viagens, constitua uma caução ou conta fiduciária e indique o número de registo na publicidade — independentemente de onde a agência esteja sediada."},{name:"Licença comercial local e registo para impostos sobre vendas/atividade",note:"Exigida pela maioria das cidades e condados antes de faturar clientes, para além de qualquer registo estadual como vendedor de viagens."},{name:"Seguro de erros e omissões (E&O)",note:"Não é uma licença governamental, mas companhias aéreas, operadores turísticos e agências anfitriãs costumam exigir cobertura de E&O antes de emitir uma credencial IATA/CLIA ou nomeação de fornecedor."}],kpis:[{label:"Receita de comissões e taxas de serviço por reserva",benchmark:"As agências cobram cada vez mais taxas de planeamento para compensar a queda das comissões das companhias aéreas, pelo que a receita por reserva combina a comissão do fornecedor com taxas diretas ao cliente."},{label:"Retenção de clientes / taxa de reservas repetidas",benchmark:"Uma carteira de clientes assente em referências e reservas repetidas é a principal alavanca dos agentes independentes face às agências de viagens online (OTAs) diretas ao consumidor."},{label:"Valor médio por reserva",benchmark:"Mais elevado em especialistas de lazer (cruzeiros, luxo, viagens de grupo/destino) do que em reservas simples apenas de voos, que pagam comissão mínima ou nula."}],costDrivers:["Taxas de acreditação junto de agência anfitriã ou IATAN/CLIA","Prémios do seguro de erros e omissões","Subscrições de software de reservas e CRM","Custos de marketing e viagens de familiarização (FAM)","Registo estadual como vendedor de viagens e respetiva caução","Partilha de comissões devida a uma agência anfitriã quando não há acreditação independente"],risks:[{risk:"As agências de viagens online e os canais de reserva direta de companhias aéreas/hotéis comprimem a receita baseada em comissões.",mitigation:"Evoluir para um serviço de aconselhamento baseado em taxas e especializar-se em viagens complexas e de alto acompanhamento (luxo, multigeracionais, grupos, casamentos de destino), onde os clientes valorizam o planeamento especializado."},{risk:"A falência de um fornecedor ou uma disrupção grave (por exemplo, o colapso de uma companhia aérea ou operador turístico) pode expor a agência a pedidos de reembolso dos clientes.",mitigation:"Utilizar contas fiduciárias quando exigido por lei estadual, reservar através de fornecedores caucionados e manter um seguro de erros e omissões."},{risk:"Eventos globais (pandemias, instabilidade geopolítica, catástrofes naturais) podem interromper as reservas com pouco aviso prévio.",mitigation:"Diversificar destinos e tipos de viagem, e manter reservas de tesouraria para cobrir os custos fixos durante um choque de procura de vários meses."}]},"coffee-shop":{marketSizeValue:"75,5 mil milhões de USD",licenses:[{name:"Licença de serviço alimentar do departamento de saúde local",note:"Abrange equipamento, abastecimento de água, conservação a frio e saneamento; inspecionada antes da abertura e periodicamente depois."}
394,{name:"Certificação de manipulador de alimentos / gestor",note:"A maioria dos estados ou condados exige pelo menos um gestor certificado em proteção alimentar, além de cartões de manipulador de alimentos para os restantes funcionários."},{name:"Licença comercial e alvará de vendedor",note:"Exigida pela cidade ou condado, juntamente com um alvará de imposto sobre vendas para a venda a retalho de bebidas, alimentos e mercadorias."}],kpis:[{label:"Crescimento do setor",benchmark:"Crescimento anualizado de 2,5%, atingindo 75,5 mil milhões de USD em receita nos cinco anos até 2026"},{label:"Talão médio e taxa de venda cruzada",benchmark:"Os extras de comida e mercadorias por bebida vendida são uma alavanca importante num negócio de talão médio, por natureza, baixo."},{label:"Rendimento no horário de pico",benchmark:"Bebidas preparadas por hora de trabalho durante a azáfama matinal, já que as cafetarias obtêm uma fatia desproporcional das vendas diárias antes das 10h."},{label:"Frequência de visita dos clientes",benchmark:"Visitas repetidas e habituais (várias vezes por semana) impulsionam a maior parte da receita das cafetarias independentes, ao contrário de ocasões de refeição pontuais."}],costDrivers:["Compra e manutenção de máquinas de café espresso, moinhos e equipamento de preparação","Custos de café verde/torrado, leite e xaropes, que acompanham os preços das commodities e dos lacticínios","Mão de obra concentrada numa curta janela de pico matinal, dificultando a eficiência de escalas","Renda de espaços com grande afluência de pessoas","Copos, tampas e embalagens (uma linha de custo relevante num negócio muito virado para take-away)","Taxas de sistema de ponto de venda, aplicação de fidelização e plataformas de entrega de terceiros"],risks:[{risk:"A volatilidade do preço do café (mercado C) e dos lacticínios comprime as margens numa categoria em que os clientes resistem a subidas de preço frequentes.",mitigation:"Fixar contratos com fornecedores sempre que possível, ajustar as doses/receitas antes de aumentar os preços afixados, e diversificar para comida e mercadorias com maior flexibilidade de preços."},{risk:"A receita concentra-se fortemente numa azáfama matinal de duas a três horas, tornando a escala de trabalho ou insuficiente no pico ou excessiva ao meio-dia.",mitigation:"Usar dados de vendas hora a hora para construir uma escala de pessoal em camadas e impulsionar o tráfego ao meio-dia com promoções de comida ou incentivos a encomendas móveis."},{risk:"Cadeias nacionais e conceitos de drive-thru competem agressivamente em rapidez e preço na mesma área comercial.",mitigation:"Diferenciar pela qualidade, ambiente e programas de comunidade/fidelização que um drive-thru de rotação rápida não consegue replicar."}]},bakery:{licenses:[{name:"Licença local de estabelecimento alimentar de retalho",note:"Exigida para qualquer padaria que venda alimentos preparados no local para consumo imediato; abrange equipamento, saneamento e conservação a frio."},{name:'Registo ou isenção de "cottage food" (fabrico caseiro)',note:"A maioria dos estados permite que determinados produtos de padaria de baixo risco sejam feitos numa cozinha doméstica sem licença comercial completa, mas as vendas têm um limite e uma loja comercial continua a precisar de licenciamento padrão."},{name:"Certificação de manipulador de alimentos / gestor e licença comercial",note:"O pessoal que prepara alimentos precisa geralmente de um cartão de mani
394pulador de alimentos, e o negócio necessita de uma licença comercial local padrão e de um alvará de imposto sobre vendas."}],kpis:[{label:"Taxa de desperdício / quebra",benchmark:"O stock perecível não vendido, com desconto ou descartado no final do dia, é um dos maiores custos controláveis numa padaria."},{label:"Mix de vendas grossista vs. retalho",benchmark:"As contas grossistas (cafés, restaurantes, mercearias) acrescentam volume com margem por unidade mais baixa do que as vendas diretas ao público."},{label:"Custo de mão de obra matinal em % das vendas",benchmark:"O pessoal de produção tem de começar horas antes da abertura, pelo que o custo de mão de obra por unidade é muito sensível ao planeamento do tamanho dos lotes."}],costDrivers:["Custos de farinha, manteiga, ovos e açúcar, que acompanham os mercados de commodities","Fornos comerciais, batedeiras e equipamento de fermentação","Mão de obra de produção antes do amanhecer","Embalagens e desperdício associado ao curto prazo de validade","Arrendamento de retalho numa localização com afluência de pessoas","Licenças sanitárias e conformidade com a segurança alimentar"],risks:[{risk:"Os produtos de padaria são altamente perecíveis, pelo que qualquer erro na previsão da procura se torna desperdício no próprio dia.",mitigation:'Acompanhar o escoamento por item e período do dia, e transferir o excesso de stock da tarde para vendas com desconto no final do dia ou prateleiras de "dia anterior" em vez de o descartar.'},{risk:"As subidas de preço das commodities (farinha, manteiga e ovos) afetam diretamente o custo das mercadorias vendidas numa categoria em que os clientes resistem a alterações de preço frequentes.",mitigation:"Usar contratos de preço fixo com fornecedores sempre que disponíveis e reformular receitas ou doses antes de aumentar os preços de venda."},{risk:"A mão de obra de produção tem de começar bem antes da abertura da loja, dificultando ajustar o custo de mão de obra à procura real do dia.",mitigation:"Construir um plano de produção em torno de uma previsão de vendas contínua e escalonar a cozedura para que os artigos de maior margem estejam sempre frescos nas horas de pico."}]},restaurant:{marketSizeValue:"1,1 biliões de USD",licenses:[{name:"Licença de serviço alimentar do departamento de saúde local",note:"Abrange equipamento de cozinha, temperaturas de conservação a frio e saneamento; inspecionada antes da abertura e periodicamente depois."},{name:"Licença de bebidas alcoólicas (se servir álcool)",note:"Emitida pela agência estadual de controlo de bebidas alcoólicas, muitas vezes com uma etapa de aprovação local; pode representar um custo elevado e, nalguns mercados, tem oferta limitada."},{name:"Certificação de manipulador de alimentos / gestor",note:"A maioria dos estados ou condados exige a presença permanente de pelo menos um gestor certificado em proteção alimentar."}],kpis:[{label:"Custo primário (comida + mão de obra em % das vendas)",benchmark:"Os custos de comida e de mão de obra representam, cada um, cerca de 33 cêntimos por cada dólar de receita no setor, e em conjunto são o indicador que a maioria dos operadores acompanha semanalmente."},{label:"Taxa de rotação de mesas",benchmark:"Clientes sentados por mesa em cada período de refeição; a principal alavanca de receita em restaurantes de serviço completo com capacidade fixa de lugares."},{label:"Talão médio",benchmark:"Valor total da conta por cliente, incluindo comida, bebidas e álcool; acompanhado por período do dia para identificar problemas de menu ou de venda adicional."},{label:"Utilização por hora de trabalho/lugar",benchmark:"Vendas por hora de mão de obra trabalhada, usadas para ajustar o pessoal de sala e cozinha à previsão de clientes."}],costDrivers:["Custo da comida, exposto a variações de preços de commodities e da cadeia de abastecimento","Custo de mão de obra, incluindo regras de salário com gorjeta que variam muito por estado","Renda e obras de adaptação para espaço com nível de cozinha comercial","Compra, manutenção e reparação de equipamento de cozinha","Custo e c
394onformidade da licença de bebidas alcoólicas, quando aplicável","Comissões das plataformas de entrega de terceiros"],risks:[{risk:"As despesas operacionais totais dos restaurantes subiram cerca de 36% desde antes da pandemia, comprimindo margens já reduzidas.",mitigation:"Reformular os menus em torno de ingredientes com fornecimento estável, renegociar regularmente contratos com fornecedores e ajustar as doses antes de aumentar os preços do menu."},{risk:"Os restaurantes de serviço completo estão limitados pela capacidade de lugares e pela rotação de mesas, pelo que um turno fraco perde essa receita de forma definitiva.",mitigation:"Usar dados de reservas/lista de espera para gerir os lugares por período do dia e acrescentar promoções fora de horas de pico ou eventos privados para preencher turnos fracos."},{risk:"A rotatividade de pessoal de sala e de cozinha é cronicamente elevada, aumentando os custos de recrutamento e formação.",mitigation:"Dar formação cruzada ao pessoal em vários postos, criar percursos de progressão claros e comparar os salários com o mercado local para reduzir a rotatividade."}]},"food-truck":{marketSizeValue:"2,8 mil milhões de USD",licenses:[{name:"Licença de estabelecimento alimentar móvel",note:"Emitida pelo departamento de saúde estadual ou local especificamente para unidades móveis, para além de (e não em substituição de) uma licença padrão de serviço alimentar."},{name:"Acordo com uma cozinha comissária",note:"A maioria dos códigos estaduais e locais exige que os vendedores móveis preparem, reabasteçam e limpem numa cozinha comissária licenciada, e não numa cozinha doméstica, e documentem essa relação para os inspetores."},{name:"Inspeção de segurança do veículo e contra incêndios, além de licenças municipais de venda",note:"Abrange os sistemas de propano/GPL e a supressão de incêndios no camião, sendo muitas vezes exigidas licenças separadas por cidade ou evento para estacionar e vender em propriedade pública."}],kpis:[{label:"Vendas diárias por localização/rota",benchmark:"A receita por paragem é a métrica de planeamento central, já que a localização do camião (zonas de almoço, eventos, cervejeiras) explica a maior parte da variação nas vendas."},{label:"Tempo de preparação até ao serviço num menu reduzido",benchmark:"Um menu bem selecionado e rápido de executar numa cozinha pequena é o que torna viável o rendimento do food truck nas horas de pico."},{label:"Mix de reservas de eventos/catering",benchmark:"Eventos privados e reservas de catering costumam gerar uma receita garantida por hora superior à do serviço incerto de rua/parque diário."}],costDrivers:["Compra ou aluguer do camião e adaptação da cozinha personalizada","Taxas de aluguer da cozinha comissária","Propano e combustível do gerador para o equipamento de cozinha","Licenças municipais de venda e taxas de stand em eventos/festivais, que variam muito consoante a localização","Manutenção do veículo e combustível para deslocações entre locais","Armazenamento limitado a bordo, obrigando a reabastecimentos frequentes e em menor quantidade"],risks:[{risk:"As regras locais de venda ambulante restringem onde e por quanto tempo um camião pode estacionar, e variam entre cidades.",mitigation:"Construir uma rota com base em locais confirmados e licenciados e em reservas de propriedade privada/eventos, em vez de depender de estacionamento improvisado na rua."},{risk:"O clima e a sazonalidade podem eliminar a receita de um dia ou de uma época sem alternativa em espaço interior.",mitigation:"Reservar mercados cobertos, cervejeiras ou espaços de eventos para os meses frios/chuvosos, e manter uma reserva de tesouraria para períodos fracos."},{risk:"Uma avaria mecânica retira todo o negócio de circulação até o camião ser reparado.",mitigation:"Orçamentar uma reserva de manutenção, manter uma relação com um mecânico de confiança e considerar equipamento de reserva (por exemplo, um gerador sobresselente) para sistemas críticos."}]},"event-management":{licenses:[{name:"Licença comercial local e alvará de imposto sobre vendas",note:"A maioria das cidades e condados exige uma licença comercial geral, e muitos estados exigem a cobrança de imposto sobre vendas nas taxas de planeamento de eventos ou em bens revendidos a clientes."},{name:"Certificado de seguro (COI) para cada espaço",note:"Praticamente todos os espaços exigem prova de seguro de responsabilidade 
394civil geral, muitas vezes indicando o próprio espaço como segurado adicional, antes de assinar o contrato."},{name:"Licença de serviço de bebidas alcoólicas (quando aplicável)",note:"Se o organizador contratar ou servir álcool diretamente, em vez de recorrer a um fornecedor de catering ou bar licenciado, é geralmente necessário um endosso estadual de responsabilidade por álcool ou uma licença temporária de evento."}],kpis:[{label:"Orçamento médio de evento gerido",benchmark:"Despesa total do cliente coordenada por evento — o principal motor da receita do organizador em modelos de preços baseados em percentagem."},{label:"Rácio organizador/evento",benchmark:"Número de eventos simultâneos que um único organizador consegue gerir sem perder qualidade de serviço, geralmente limitado por visitas ao local e pessoal no dia do evento."},{label:"Receita de comissões/referências de fornecedores",benchmark:"Parte da receita proveniente de comissões e margens sobre fornecedores preferenciais, em comparação com taxas fixas de planeamento."},{label:"Taxa de repetição e de referências",benchmark:"Percentagem de novas reservas provenientes de clientes anteriores ou de referências de fornecedores, em vez de marketing pago."}],costDrivers:["Mão de obra do organizador e do coordenador do dia do evento (concentrada sobretudo no dia e na semana do evento)","Software para propostas, cronogramas e CRM de clientes","Seguro de responsabilidade 
394civil geral e profissional (erros e omissões)","Marketing e produção de portefólio (sessões fotográficas estilizadas, fotografia, website)","Depósitos a fornecedores pagos antecipadamente e recuperados através dos sinais dos clientes","Custos de deslocação e visitas ao local para eventos fora do mercado habitual"],risks:[{risk:"A receita concentra-se em datas de fim de semana (especialmente casamentos), pelo que cancelamentos ou uma má época de casamentos têm um impacto desproporcional.",mitigation:"Diversificar para eventos corporativos e sem fins lucrativos, que se realizam a meio da semana e seguem um ciclo sazonal diferente dos casamentos."},{risk:"Cancelamentos de clientes depois de pagos os depósitos a fornecedores podem deixar o organizador a suportar custos não reembolsáveis.",mitigation:"Usar contratos com sinais não reembolsáveis em camadas e repercutir diretamente no cliente as condições de depósito dos fornecedores."},{risk:"Os organizadores são responsabilizados pessoalmente por falhas de fornecedores (catering que não aparece, falha de AV) que não controlam.",mitigation:"Selecionar fornecedores numa lista curta aprovada com opções de reserva, e manter pessoal e equipamento de contingência no dia do evento."}]},laundromat:{marketSizeValue:"7,2 mil milhões de USD",licenses:[{name:"Licença comercial local e certificado de ocupação",note:"Exigida pela cidade ou condado antes de abrir ao público um espaço de retalho de self-service."},{name:"Licença de descarga de águas residuais / esgoto",note:"Muitas entidades municipais de água exigem uma licença ou taxa de ligação para a descarga de máquinas de lavar comerciais de grande volume."},{name:"Inspeção do código de incêndio e de construção para secadores a gás/elétricos",note:"Os bombeiros locais inspecionam a ventilação dos secadores comerciais e a instalação de linhas de gás antes de aprovar a ocupação."}],kpis:[{label:"Receita por máquina",benchmark:"Cobranças semanais ou mensais por máquina de lavar/secar — a forma padrão de os operadores compararem o desempenho das lojas."},{label:"Preço por libra ou por carga",benchmark:"Principal alavanca de preços, comparada com concorrentes próximos e com as tendências de custo dos serviços públicos."},{label:"Utilização das máquinas / ciclos por dia",benchmark:"Número médio de ciclos por máquina por dia, acompanhado para decidir quando aumentar a capacidade."}],costDrivers:["Água, esgoto e gás/eletricidade (normalmente o maior custo recorrente)","Compra, financiamento e ciclos de substituição de máquinas de lavar e secar","Renda e obras para capacidade de canalização, ventilação e eletricidade","Mão de obra de assistência e sistemas de segurança/câmaras para horários sem funcionários","Reparação de máquinas e inventário de peças","Taxas do sistema de pagamento por cartão/aplicação para máquinas sem dinheiro"],risks:[{risk:"Os custos dos serviços públicos (água, gás, eletricidade) podem subir mais depressa do que os preços cobrados, comprimindo as margens.",mitigation:"Instalar máquinas de alta eficiência e monitorizar as faturas de serviços públicos face ao volume, para rever os preços com regularidade."},{risk:"Locais sem supervisão são vulneráveis a vandalismo, furto de moedas e permanência indevida.",mitigation:"Usar sistemas de pagamento sem dinheiro por cartão/aplicação, câmaras e horários de assistência programados nos períodos de pico."},{risk:"A construção de novos prédios com máquinas de lavar/secar dentro das unidades reduz, ao longo do tempo, a base local de clientes.",mitigation:"Acompanhar as tendências de construção multifamiliar local antes de assinar um arrendamento de longo prazo, e diversificar para serviços de lavagem-secagem-dobragem e contas comerciais."}]},daycare:{marketSizeValue:"72,8 mil milhões de USD",licenses:[{name:"Licença estadual de estabelecimento de cuidados infantis",note:"Todos os estados exigem uma licença da respetiva agência de licenciamento de cuidados infantis antes de um centro ou lar familiar poder operar legalmente, abrangendo rácios pessoal-criança, verificações de antecedentes e segurança das instalações."},{name:"Verificações de antecedentes e rastreios de saúde do pessoal",note:"A lei federal e estadual exige verificações de antecedentes criminais por impressão digital, verificações do registo de abuso infantil e rastreios de tuberculose/saúde para todo o pessoal com acesso não supervisionado a crianças."},{name:"Inspeções locais de incêndio, saúde e construção",note:"As instalações têm de passar em inspeções dos bombeiros e do departamento de saúde relativas a saídas, saneamento e manuseamento de alimentos antes de o licenciamento ser concedido."}],kpis:[{label:"Conformidade do rácio pessoal-criança",benchmark:"Definido pelas regras de licenciamento estaduais e varia consoante a faixa etária; o principal fator que determina a lotação permitida e o custo de mão de obra."},{label:"Taxa de ocupação/inscrição",benchmark:"Vagas preenchidas a dividir pela capacidade licenciada — o principal motor de receita, dado que os custos de pessoal e instalações são em grande parte fixos."},{label:"Taxa de rotatividade do pessoal",benchmark:"Acompanhada de perto porque a conformidade com os rácios se degrada rapidamente quando os cuida
394dores saem e os substitutos não são verificados a tempo."}],costDrivers:["Salários de professores e cuidadores (o maior custo, diretamente ligado aos rácios obrigatórios)","Arrendamento das instalações e requisitos de espaço exterior/parque infantil","Seguro de responsabilidade civil, mais elevado do que na maioria das pequenas empresas devido à exposição associada à segurança infantil","Verificações de antecedentes, taxas de licenciamento e requisitos de formação contínua do pessoal","Refeições, materiais e conteúdos curriculares","Melhorias nas instalações para cumprir os requisitos de incêndio, saúde e acessibilidade (ADA)"],risks:[{risk:"Os rácios obrigatórios de pessoal por criança significam que a ausência de um único cuidador pode obrigar a recusar famílias ou a fechar uma sala nesse dia.",mitigation:"Dar formação cruzada ao pessoal em diferentes faixas etárias e manter uma bolsa de substitutos para cobrir ausências sem violar os rácios."},{risk:"A subida dos preços médios dos cuidados infantis está a atingir os limites de acessibilidade de muitas famílias, limitando quanto as propinas podem subir.",mitigation:"Combinar a receita com programas de vales subsidiados, parcerias com empregadores e propinas em escala variável para alargar a base de clientes pagantes."},{risk:"Uma única violação de licenciamento ou incidente de segurança pode desencadear o encerramento e danos de reputação que acabam com as inscrições.",mitigation:"Realizar auditorias internas de segurança regulares antes das inspeções estaduais e manter registos documentados de conformidade com rácios e verificações de antecedentes."}]},trucking:{annualRevenueNote:"Receita média por camião em 2023, reportada por transportadoras contratadas, variando entre cerca de 210 mil USD para camiões de carga completa/plataforma e cerca de 457 mil USD para camiões de carga fracionada (LTL); os operadores independentes de um só camião tendem a ficar perto do limite inferior.",marketSizeValue:"732,3 mil milhões de USD",licenses:[{name:"Número USDOT",note:"Exigido pela FMCSA (agência federal reguladora do transporte rodoviário) para qualquer operador de veículo motorizado comercial envolvido em comércio interestadual, independentemente do tipo de carga."},{name:"Autorização de operação (número MC)",note:"Exigida além do número USDOT para transportadoras contratadas que transportem mercadorias reguladas ou passageiros mediante pagamento entre estados."},{name:"Licença de imposto de combustível IFTA e registo proporcional IRP",note:"Os operadores que atuam em vários estados têm de se registar no International Fuel Tax Agreement e no International Registration Plan para poderem circular legalmente entre estados."}],kpis:[{label:"Quilómetros anuais por camião",benchmark:"Média de 129.000 km (80.159 milhas) por camião em todo o setor de transporte contratado em 2023."},{label:"Custo por milha",benchmark:"O custo marginal médio de operar um camião no setor foi de cerca de 1,78-2,26 USD por milha (aprox. 1,11-1,40 USD por km) em 2023-2024, dependendo dos preços do combustível."},{label:"Percentagem de quilómetros em vazio (deadhead)",benchmark:"Quilómetros percorridos sem carga paga, acompanhados porque cada quilómetro em vazio implica custo total de combustível e desgaste sem receita correspondente."},{label:"Quilómetros entre avarias",benchmark:"Média de cerca de 60.700 km (37.700 milhas) em todo o setor em 2023, usada como referência para os programas de manutenção preventiva."}],costDrivers:["Combustível — o maior e mais volátil custo marginal por milha","Pagamentos de aluguer ou compra de camiões e reboques","Salários e benefícios dos motoristas, que sobem acentuadamente em períodos de escassez de condutores","Reparação e manutenção, pneus e custos de avarias não programadas","Prémios de seguro automóvel comercial e de carga","Licenças, portagens e taxas de registo IFTA/IRP nos estados de operação"],risks:[{risk:"As tarifas de frete são altamente cíclicas e podem cair abaixo dos custos operacionais durante recessões do setor, como aconteceu entre 2023 e 2024.",mitigation:"Diversificar rotas de frete e contratos de clientes (combinando frete pontual e contratos dedicados) para evitar exposição total às oscilações do mercado à vista."},{risk:"A rotatividade de motoristas, sobretudo entre transportadoras de longa distância com carga completa, perturba o serviço e aumenta os custos de recrutamento.",mitigation:"Comparar os salários e as políticas de tempo em c
394asa dos motoristas com dados do setor (ATRI) e priorizar horários consistentes, que os dados mostram reduzir a rotatividade."},{risk:"Uma única violação grave de segurança ou acidente pode suspender a autorização de operação e encerrar o negócio.",mitigation:"Manter uma monitorização proativa da pontuação CSA, dos processos de qualificação dos motoristas e dos registos de manutenção preventiva bem acima dos mínimos exigidos pela FMCSA."}]},catering:{licenses:[{name:"Licença de estabelecimento de serviço alimentar",note:"Emitida pelo departamento de saúde estadual ou do condado após inspeção da cozinha comercial usada para preparar alimentos para venda."},{name:"Certificação de manipulador de alimentos / gestor",note:"A maioria dos estados exige pelo menos um gestor certificado em proteção alimentar, além de cartões de manipulador de alimentos para o pessoal de linha, segundo os códigos de saúde locais."},{name:"Licenças móveis/temporárias para eventos alimentares",note:"Muitos condados exigem uma licença temporária de serviço alimentar separada para cada evento fora das instalações, especialmente quando a comida é preparada ou mantida no local em vez de na cozinha licenciada."}],kpis:[{label:"Custo por pessoa / preço por cabeça",benchmark:"Unidade de preço central para eventos de catering, calculada a partir do custo dos alimentos, mão de obra e equipamento alugado por convidado."},{label:"Percentagem de custo alimentar",benchmark:"Custo de comida e bebida como percentagem do valor do catering, a principal alavanca que os fornecedores controlam para proteger a margem."},{label:"Utilização da cozinha e do pessoal por dia de evento",benchmark:"A concentração de casamentos e eventos sociais aos fins de semana faz com que a capacidade a meio da semana (catering corporativo, encomendas para entrega) preencha o tempo de cozinha que ficaria ocioso."}],costDrivers:["Custo das mercadorias vendidas em comida e bebida","Mão de obra do dia do evento (chefs, empregados de mesa, bartenders), paga em grande parte por evento","Arrendamento de cozinha comercial ou de cozinha comissária","Equipamento, roupa de mesa e material alugado (aquecedores de comida, mesas, copos)","Veículos de entrega e combustível para eventos fora das instalações","Seguro de responsabilidade por bebidas alcoólicas e seguro de responsabilidade 
394civil geral"],risks:[{risk:"A receita concentra-se nos fins de semana e em torno das épocas festivas, deixando ociosa a capacidade da cozinha a meio da semana.",mitigation:"Criar um canal de catering corporativo e de encomendas para entrega/marmitas que funcione de segunda a sexta, para suavizar a procura."},{risk:"A volatilidade do custo dos alimentos (preços de proteínas e produtos frescos) pode corroer as margens em contratos com preço fixo por pessoa, assinados meses antes do evento.",mitigation:"Incluir nos contratos assinados com muita antecedência uma cláusula de reajuste do custo alimentar, e fechar os menus mais perto da data do evento sempre que possível."},{risk:"Um incidente de doença de origem alimentar num único evento pode desencadear ação do departamento de saúde e danos de reputação em todo o negócio.",mitigation:"Aplicar um controlo rigoroso de registo de temperaturas e supervisão por um gestor certificado de alimentos em todos os eventos, não apenas na cozinha principal."}]},"barber-shop":{marketSizeValue:"7 mil milhões de USD",licenses:[{name:"Licença estadual de barbeiro",note:"Todos os estados exigem que os barbeiros concluam um programa de formação em barbearia licenciado e sejam aprovados num exame do state board (organismo regulador estadual) antes de atenderem clientes."},{name:"Licença de estabelecimento",note:"A maioria dos estados licencia o espaço físico separadamente dos barbeiros individuais, exigindo uma inspeção de saúde e sanitária antes da abertura."},{name:"Licença municipal de atividade e licença de imposto sobre vendas",note:"Exigida pela sua cidade ou condado, além de uma licença de revendedor (seller's permit) caso venda produtos de grooming a retalho."}],kpis:[{label:"Taxa de ocupação das cadeiras",benchmark:"Horas reservadas a dividir pelas horas de cadeira disponíveis — o maior determinante da faturação da barbearia."},{label:"Talão médio",benchmark:"Corte mais serviços adicionais (barba, riscas, produtos) por visita de cliente."},{label:"Taxa de remarcação",benchmark:"Percentagem de clientes que marcam a próxima marcação antes de sair."}],costDrivers:["Renda de cadeira que lhe é paga, ou comissão paga aos barbeiros","Instalação de canalização e eletricidade por posto de trabalho","Ciclos de substituição de máquinas de corte, tesouras e cadeiras","Seguro de responsabilidade 
394civil geral e de acidentes de trabalho","Inventário de produtos de venda a retalho (pomadas, óleos, champôs)","Renovações de licenças estaduais e formação contínua"],risks:[{risk:"Os barbeiros são donos da relação com os seus clientes e podem levar a carteira quando saem.",mitigation:"Utilize sistemas de marcações próprios da barbearia e programas de fidelização para que os clientes pertençam à loja, e ofereça escalões de comissão ou participação na cadeira para reter os melhores barbeiros."},{risk:"A faturação está limitada pelo número de cadeiras, pelo que um meio de semana fraco perde essa capacidade de forma permanente.",mitigation:"Acompanhe a ocupação por cadeira e por período do dia e ajuste o pessoal ou aplique preços fora de horas de ponta para preencher os vazios de semana."},{risk:"As cadeias de desconto e os barbeiros via aplicação comprimem os preços em mercados urbanos densos.",mitigation:"Concorra pela competência especializada (fades, trabalho de barba, navalha) e pelo ambiente, em vez do preço."}]},"goat-farm":{startupCostNote:"Determinado pelo acesso a pastagens, vedações, animais reprodutores e abrigo para um efetivo de pequena a média dimensão.",annualRevenueNote:"Baseado num efetivo de 50 cabras com partos na primavera, vendendo cabritos com 25-32 kg (55–70 lbs); escala com a dimensão do efetivo.",licenses:[{name:"Identificação das instalações / registo pecuário",note:"A maioria dos estados exige o registo das instalações da exploração para efeitos de rastreabilidade sanitária animal antes de deslocar animais para fora da exploração."},{name:"Licença de laticínios Grade A (apenas cabras leiteiras)",note:"Exigida pelos reguladores estaduais de laticínios antes de vender leite fluido ou produtos lácteos processados."},{name:"Identificação de rebanho para o scrapie",note:"O USDA (departamento de agricultura dos EUA) exige brincos oficiais de identificação para scrapie em ovinos e caprinos vendidos ou transportados entre estados."}],kpis:[{label:"Peso de mercado à venda",benchmark:"25–32 kg (55–70 lbs)"},{label:"Taxa de partos por cabra",benchmark:"Número de cabritos por cabra coberta — o principal fator de receita por animal"},{label:"Mortalidade de cabritos até ao desmame",benchmark:"Acompanhada de perto porque a carga parasitária e a predação afetam fortemente este número."}],costDrivers:["Ração e feno suplementar durante o inverno ou a estação seca","Vedações — as cabras precisam de vedações muito mais resistentes do que bovinos ou ovinos","Controlo de parasitas e cuidados veterinários","Substituição de reprodutores e rotação de bodes","Controlo de predadores (cães de guarda, burros, currais noturnos seguros)","Transporte para leilão ou processador"],risks:[{risk:"O verme barber pole (Haemonchus contortus) provoca perdas significativas de cabritos e é cada vez mais resistente a desparasitantes.",mitigation:"Faça rotação de pastagens, monitorize com a pontuação FAMACHA e use desparasitação seletiva direcionada em vez de tratar todo o efetivo."},{risk:"A predação por coiotes e cães soltos pode dizimar a produção de cabritos de uma época.",mitigation:"Utilize animais guardiões do efetivo e recolha os cabritos para currais noturnos seguros."},{risk:"Os preços em leilão oscilam sazonalmente conforme a procura ligada a feriados étnicos e religiosos.",mitigation:"Ajuste o calendário de partos para coincidir com as janelas de procura sazonal e desenvolva canais de venda direta ao consumidor e de animais reprodutores."}]},pharmacy:{licenses:[{name:"Licença do State Board of Pharmacy (ordem dos farmacêuticos estadual)",note:"Emitida para o próprio local da farmácia e exige um farmacêutico responsável nomeado em registo."},{name:"Registo na DEA (agência antidroga dos EUA)",note:"Exigido antes de poder encomendar, armazenar ou dispensar qualquer substância controlada."},{name:"Número NPI e inscrição em redes de PBM (gestores de benefícios farmacêuticos)",note:"Sem contratos com PBMs e com o Medicare Part D não pode faturar aos seguros, que representam a grande maioria do volume de receitas."},{name:"Licença estadual de distribuidor/reembalador",note:"Necessária se preparar (compounding) ou reembalar para outras instalações em vez de dispensar apenas a doentes."}
394],kpis:[{label:"Quota das farmácias independentes no retalho farmacêutico dos EUA",benchmark:"35%"},{label:"Independentes que oferecem vacinação contra a gripe",benchmark:"91%"},{label:"Receitas dispensadas por dia",benchmark:"A métrica de volume central que os financiadores irão pedir; determina o pessoal e a rotação de inventário."},{label:"Taxa de dispensação de genéricos",benchmark:"Uma maior proporção de genéricos geralmente significa melhor margem por receita do que um volume dominado por marcas."}],costDrivers:["Custo de manutenção do inventário de medicamentos, especialmente de marca e especializados","Taxas de reembolso dos PBM e taxas DIR retroativas","Salários de farmacêuticos e técnicos","Software de dispensação, robótica e taxas de prescrição eletrónica","Responsabilidade civil profissional e conformidade regulatória","Serviço de entrega, caso o ofereça localmente"],risks:[{risk:"O reembolso dos PBM pode ficar abaixo do custo de aquisição em algumas receitas, e as taxas DIR recuperam margem meses depois da venda.",mitigation:"Acompanhe a margem bruta por receita, junte-se a um PSAO (organização de serviços para farmácias) para ganhar poder negocial, e desenvolva serviços clínicos pagos diretamente pelo cliente."},{risk:"A faturação está concentrada numa combinação de pagadores que não controla.",mitigation:"Diversifique para vacinação, MTM (gestão da terapêutica medicamentosa), testes point-of-care, preparação de fórmulas e equipamento médico duradouro."},{risk:"As farmácias de cadeia e as farmácias por correio detidas por PBMs desviam receitas de medicação continuada e recorrente.",mitigation:"Concorra pela embalagem de adesão à terapêutica, entrega e atendimento pessoal para doentes complexos e idosos."}]},"ice-cream-shop":{marketSizeValue:"7,4 mil milhões de USD",licenses:[{name:"Licença de serviço alimentar do departamento de saúde local",note:"Cobre equipamento, temperaturas de conservação a frio e armazenamento; inspecionada antes da abertura e periodicamente depois."},{name:"Certificação de manipulador/gestor de alimentos",note:"O pessoal que serve al
394imentos deve normalmente possuir um certificado de segurança alimentar reconhecido pelo estado."},{name:"Licença de fabricante de sobremesas geladas / laticínios",note:"Exigida em muitos estados se fizer o gelado no próprio local em vez de revender produto já pronto."}],kpis:[{label:"Crescimento anualizado do setor",benchmark:"5,8% nos cinco anos até 2025"},{label:"Peso da época alta na faturação anual",benchmark:"A maioria das gelatarias obtém a maior parte das vendas anuais em cerca de quatro meses de verão."},{label:"Overrun e desperdício por tina",benchmark:"Produto perdido por queimadura de congelação, derretimento e excesso de dose afeta diretamente um COGS (custo dos produtos vendidos) já apertado."}],costDrivers:["Vitrinas de exposição, congelador de produção e refrigeração de reserva","Oscilações no preço dos laticínios, natas e ingredientes de mistura","Aumento de pessoal no verão e rotatividade elevada de jovens trabalhadores","Renda em locais de grande afluência que só usa plenamente no verão","Eletricidade para congelação contínua","Licenças de saúde e conformidade com segurança alimentar"],risks:[{risk:"A procura é fortemente sazonal e dependente do tempo, pelo que a renda fixa se mantém o ano todo contra apenas quatro meses fortes.",mitigation:"Negoceie condições de arrendamento sazonais sempre que possível e acrescente café, bebidas quentes, bolos ou catering para os meses frios."},{risk:"Uma avaria no congelador destrói o inventário e fecha a loja de imediato.",mitigation:"Preveja refrigeração de reserva, alarmes de temperatura e seguro de avaria de equipamento."},{risk:"Subidas no preço dos laticínios afetam o COGS numa categoria em que os clientes resistem a aumentos de preço.",mitigation:"Fixe os preços com os fornecedores antes da época e ajuste as doses em vez do preço de tabela."}]},"cleaning-company":{licenses:[{name:"Licença geral de atividade",note:"A maioria das cidades e condados exige uma licença de atividade padrão antes de poder faturar clientes."},{name:"Caução de fidelidade (janitorial bond)",note:"Um seguro-caução que cobre perdas do cliente por furto de colaboradores — frequentemente exigido antes da adjudicação de um contrato comercial."}
394,{name:"Seguro de responsabilidade civil geral e de acidentes de trabalho",note:"Exigido em quase todos os contratos comerciais, sendo o seguro de acidentes de trabalho obrigatório na maioria dos estados a partir do momento em que tem colaboradores."}],kpis:[{label:"Faturação por equipa por dia",benchmark:"Trabalhos concluídos por turno de equipa é o que determina se a densidade das rotas está a funcionar."},{label:"Mão de obra como percentagem da faturação",benchmark:"A linha de custo dominante; pequenas ineficiências de escalonamento refletem-se aqui de imediato."},{label:"Taxa de retenção de clientes",benchmark:"Os contratos recorrentes são todo o modelo de negócio — a perda de clientes é muito mais prejudicial do que em serviços pontuais."},{label:"Tempo de deslocação entre trabalhos",benchmark:"As deslocações não faturáveis são o destruidor de margem oculto no trabalho de rotas residenciais."}],costDrivers:["Salários dos limpadores e impostos sobre a folha de pagamentos","Combustível, seguro e manutenção dos veículos nas rotas","Produtos químicos de limpeza e consumíveis","Prémios de seguro de caução e de responsabilidade 
394civil","Equipamento (aspiradores, máquinas de piso, lavadoras de alta pressão)","Recrutamento e formação para substituir a rotatividade"],risks:[{risk:"A rotatividade do pessoal de limpeza é estruturalmente elevada, e equipas inconsistentes são o principal motivo de cancelamento de contratos.",mitigation:"Estabeleça equipas fixas por conta, pague acima do mercado local e utilize checklists com pontuação de qualidade visível ao cliente."},{risk:"Um único grande contrato comercial pode representar a maioria da faturação, e perdê-lo pode ser existencial.",mitigation:"Limite qualquer cliente a uma quota-alvo da faturação e mantenha uma combinação de trabalho residencial e comercial."},{risk:"Reclamações de danos materiais ou furto podem acabar com uma relação comercial e fazer subir os prémios de seguro.",mitigation:"Faça caução a todo o pessoal, realize verificações de antecedentes e documente o estado do imóvel no início de cada contrato."}]},"auto-repair-shop":{marketSizeValue:"92,1 mil milhões de USD",licenses:[{name:"Registo estadual de oficina de reparação automóvel",note:"Estados como a Califórnia exigem que qualquer oficina que realize reparações pagas se registe antes de abrir; os requisitos variam muito noutros estados."},{name:"Conformidade com a EPA (agência de proteção ambiental dos EUA) e regras estaduais sobre resíduos perigosos",note:"Óleo usado, líquido de refrigeração, solventes e refrigerantes são fluxos de resíduos regulados com registos de eliminação obrigatórios."},{name:"Certificação de técnico Secção 609 da EPA",note:"Exigida para quem faz manutenção de sistemas de ar condicionado de veículos motorizados."},{name:"Seguro de responsabilidade de garagista (garagekeepers liability)",note:"O seguro de responsabilidade 
394civil geral padrão não cobre os veículos de clientes à sua guarda, custódia e controlo."}],kpis:[{label:"Ocupação dos postos de trabalho",benchmark:"Horas produtivas de posto face às horas de posto disponíveis — esta capacidade é o teto da faturação."},{label:"Taxa horária efetiva de mão de obra",benchmark:"Receita real de mão de obra a dividir pelas horas trabalhadas, normalmente abaixo da tabela de preços afixada."},{label:"Valor médio da ordem de reparação",benchmark:"Peças mais mão de obra por talão; aumenta com disciplina de inspeção e acompanhamento de trabalho recusado."},{label:"Eficiência do técnico",benchmark:"Horas faturadas face às horas registadas por técnico."}],costDrivers:["Custo de aquisição de peças e obsolescência de inventário","Salários de técnicos qualificados num mercado de trabalho apertado","Elevadores, alinhadores e ferramentas de diagnóstico","Renda da oficina, com limitações de zoneamento sobre onde pode operar","Seguro de responsabilidade de garagista e responsabilidade 
394civil geral","Formação contínua e ferramentas para trabalho com veículos elétricos e ADAS (sistemas avançados de assistência ao condutor)"],risks:[{risk:"A escassez de técnicos significa que a capacidade é limitada pela contratação, não pela procura.",mitigation:"Crie um canal de estágios com uma escola técnica local e pague para reter em vez de recontratar repetidamente."},{risk:"Os veículos elétricos e os sistemas avançados de assistência ao condutor exigem ferramentas caras, equipamento de calibração e certificação.",mitigation:"Reserve uma verba recorrente para ferramentas e especialize-se deliberadamente em vez de tentar servir tudo."},{risk:"As reparações repetidas (comebacks) destroem margem e reputação num mercado local dependente de referências.",mitigation:"Imponha uma inspeção documentada de múltiplos pontos e um controlo de qualidade antes da entrega do veículo."}]},hostel:{marketSizeValue:"651,7 milhões de USD",licenses:[{name:"Licença de alojamento / acomodação transitória",note:"Exigida pelo estado ou município para qualquer propriedade que alugue camas por noite."},{name:"Certificado de segurança contra incêndio e ocupação",note:"Dormitórios partilhados enfrentam regras de saídas de emergência, alarmes e limite de ocupação mais rigorosas do que alojamento individual."},{name:"Registo de imposto sobre ocupação transitória",note:"Tem de se registar para cobrar e entregar o imposto local sobre dormida em cada noite vendida."},{name:"Licença do departamento de saúde",note:"Aplica-se a casas de banho partilhadas e a qualquer cozinha comunitária ou serviço de pequeno-almoço incluído."}],kpis:[{label:"Taxa de ocupação de camas",benchmark:"Medida por cama e não por quarto, o que é a principal diferença face ao reporte hoteleiro."},{label:"RevPAB (receita por cama disponível)",benchmark:"O equivalente do RevPAR (receita por quarto disponível) para hostels, e o número que os financiadores vão querer."},{label:"Duração média da estadia",benchmark:"Estadias mais longas reduzem o custo de limpeza por rotatividade e a comissão de OTA por noite vendida."},{label:"Quota de reservas diretas",benchmark:"Cada ponto percentual desviado das OTAs (agências de reserva online) é margem recuperada."}],costDrivers:["Arrendamento ou hipoteca do imóvel, o custo fixo dominante","Mão de obra de limpeza, que escala com a rotatividade de camas e não com o número de quartos","Comissões de OTA (Hostelworld, Booking.com)","Serviços de utilidade pública em espaço comunitário continuamente ocupado","Ciclos de substituição de beliches, colchões e roupa de cama","Segurança: cacifos, acesso por cartão-chave e pessoal noturno"],risks:[{risk:"A ocupação oscila muito com a sazonalidade turística enquanto os custos de arrendamento e pessoal se mantêm constantes.",mitigation:"Conquiste segmentos de época baixa como estudantes, trabalhadores em viagem e hóspedes de longa duração com tarifas semanais."},{risk:"A dependência de OTAs entrega uma parcela significativa de cada reserva a uma plataforma que não controla.",mitigation:"Invista em reservas diretas, incentivos para hóspedes recorrentes e um site móvel rápido."},{risk:"Os dormitórios partilhados criam exposição a furto, segurança e responsabilidade 
394civil entre desconhecidos.",mitigation:"Instale cacifos por cama e acesso por cartão-chave por piso, e mantenha pessoal no local durante a noite."}]},"flower-shop":{netMarginNote:"O stock perecível e a procura concentrada em poucos feriados comprimem a margem fora das semanas de pico.",marketSizeValue:"7,9 mil milhões de USD",licenses:[{name:"Licença de revendedor / imposto sobre vendas",note:"Exigida para vender arranjos a retalho e entregar o imposto estadual sobre vendas."},{name:"Licença municipal de atividade",note:"Licença municipal padrão para uma loja de retalho física."},{name:"Licença de importação do USDA (hastes importadas)",note:"Aplica-se se importar flores de corte diretamente em vez de comprar através de um grossista nacional."}],kpis:[{label:"Valor médio da encomenda",benchmark:"50 a 80 USD"},{label:"Taxa de desperdício de inventário",benchmark:"5–10% das hastes"},{label:"Concentração da faturação em feriados",benchmark:"O Dia dos Namorados e o Dia da Mãe, por si só, geram uma parcela desproporcionada das vendas anuais."},{label:"Pipeline de reservas de casamentos e eventos",benchmark:"O trabalho contratado para eventos é a principal forma de os floristas equilibrarem os meses sem feriados."}],costDrivers:["Inventário perecível de hastes e folhagens abatido semanalmente","Eletricidade da câmara fria e manutenção da refrigeração","Veículo de entrega, combustível e tempo do motorista","Aumento de pessoal para o Dia dos Namorados e o Dia da Mãe","Taxas e comissões de serviços de transmissão de encomendas (wire services)","Plataforma de encomendas online e publicidade em pesquisa local"],risks:[{risk:"As hastes não vendidas perdem o valor em poucos dias, pelo que erros de previsão de procura se transformam diretamente em prejuízo.",mitigation:"Encomende just-in-time em função de eventos confirmados e reduza o preço de stock envelhecido transformando-o em buquês prontos."},{risk:"A faturação está concentrada num punhado de feriados, e uma má semana de Dia dos Namorados pode definir o ano.",mitigation:"Desenvolva contas corporativas, de hotelaria e de subscrição recorrentes que comprem todas as semanas."},{risk:"Os serviços de transmissão de encomendas e as cadeias de supermercado captam clientes sensíveis ao preço e retêm uma parte das encomendas transmitidas.",mitigation:"Promova a encomenda local direta e concorra pelo design personalizado e pela fiabilidade da entrega no mesmo dia."}]},"personal-trainer":{licenses:[{name:"Certificação de treino acreditada (NASM, ACE, ACSM)",note:"Na maioria dos estados não é uma licença governamental, mas ginásios, seguradoras e a maioria dos clientes exigem uma certificação acreditada."},{name:"Certificação de RCP/DAE (CPR/AED)",note:"Exigida pelas entidades certificadoras e pelas seguradoras de responsabilidade 
394civil antes de poder treinar clientes."},{name:"Licença comercial e seguro de responsabilidade civil profissional",note:"Uma licença comercial local para faturar clientes, mais cobertura de responsabilidade civil profissional para reclamações por lesões."}],kpis:[{label:"Salário anual mediano dos personal trainers",benchmark:"46.180 USD (maio de 2024)"},{label:"Crescimento de emprego projetado 2023–2033",benchmark:"Cerca de 12%, muito mais rápido do que a média"},{label:"Sessões realizadas por semana",benchmark:"O seu teto de faturação real num modelo de acompanhamento individual."},{label:"Retenção de clientes além dos 90 dias",benchmark:"Onde ocorre a maior parte do abandono; determina se as recomendações chegam a compor."}],costDrivers:["Renovações de certificação e formação contínua","Seguro de responsabilidade civil profissional","Taxas de utilização do ginásio, renda de estúdio ou tempo de deslocação até ao cliente","Equipamento para treino móvel ou ao domicílio","Software de marcações, pagamentos e planos de treino","Angariação de clientes através de anúncios e conteúdos"],risks:[{risk:"O rendimento tem um teto rígido definido pelas horas faturáveis, porque a receita é de um treinador para um cliente.",mitigation:"Introduza sessões em pequenos grupos, planos de treino online e coaching híbrido que dissociem o rendimento das horas trabalhadas."},{risk:"Os clientes abandonam por lesões, férias e quebras de motivação, tornando a receita irregular.",mitigation:"Venda pacotes de várias sessões e assinaturas em vez de sessões avulsas, e acompanhe o progresso de forma visível."},{risk:"Uma lesão de um cliente durante uma sessão cria exposição direta a responsabilidade 
394civil.",mitigation:"Faça avaliação de saúde e o questionário PAR-Q a todos os clientes e mantenha um seguro de responsabilidade civil profissional."}]},"car-rental":{licenses:[{name:"Autorização estatal específica para o negócio de aluguer de automóveis",note:"Vários estados exigem uma autorização específica de aluguer de automóveis, adicional à licença comercial geral — Washington é um exemplo."},{name:"Registo de veículos de aluguer junto do DMV estadual (departamento de veículos motorizados)",note:"A maioria dos estados regista frotas de aluguer separadamente do registo de veículos particulares."},{name:"Seguro automóvel comercial e seguro garagekeepers (de guarda de veículos de terceiros)",note:"Cobertura de frota que cumpre os mínimos de responsabilidade financeira estaduais, mais elevados para uso em aluguer."},{name:"Registo para cobrança de imposto/sobretaxa de aluguer",note:"Muitos estados e aeroportos aplicam uma sobretaxa específica de aluguer que tem de cobrar e entregar ao fisco."}],kpis:[{label:"Taxa de utilização da frota",benchmark:"Dias alugados a dividir pelos dias de frota disponível — a medida central de eficiência."},{label:"Receita por unidade por dia (RPD)",benchmark:"Tarifa diária média efetivamente alcançada em toda a frota."},{label:"Depreciação por unidade por mês",benchmark:"Normalmente a maior rubrica de custo isolada e a que determina a rentabilidade."},{label:"Tempo de rotação entre alugueres",benchmark:"O tempo de limpeza e inspeção é tempo de frota não faturável."}],costDrivers:["Aquisição da frota e depreciação mensal","Seguro de frota, substancialmente mais caro do que a cobertura particular","Manutenção, limpeza e reparação de danos entre alugueres","Arrendamento do espaço, sobretudo taxas de concessão aeroportuária","Financiamento da frota ou juros de floor-plan financing (financiamento de inventário)","Pessoal de balcão e software de reservas"],risks:[{risk:"Os valores residuais dos veículos usados variam independentemente do seu negócio e podem eliminar o capital investido na frota.",mitigation:"Mantenha um plano disciplinado de rotação da frota e venda através de vários canais de revenda, não apenas num leilão."},{risk:"A procura acompanha de perto os ciclos de viagens, pelo que as quebras atingem o negócio enquanto os custos de financiamento da frota continuam.",mitigation:"Diversifique para além do tráfego aeroportuário e turístico, incluindo substituição de seguros, alugueres locais e de longa duração."},{risk:"Disputas por danos e acidentes por culpa do locatário geram responsabilidade 
394civil contínua e contestações de cobrança (chargebacks).",mitigation:"Fotografe cada veículo na entrega e na devolução, verifique o seguro do locatário e ofereça isenções de danos claramente documentadas."}]},"liquor-store":{licenses:[{name:"Licença estadual de venda a retalho de bebidas alcoólicas para consumo fora do estabelecimento",note:"O custo mais variável deste negócio. Alguns estados cobram algumas centenas de dólares; em mercados com quota limitada, uma licença existente pode ser vendida por seis dígitos."},{name:"Alvará de vendedor / registo para imposto sobre vendas",note:"Exigido para cobrar e entregar o imposto sobre vendas de álcool a retalho."},{name:"Licença de zonamento local ou autorização de uso condicional",note:"Muitos municípios restringem a venda a retalho de álcool perto de escolas, locais de culto e zonas residenciais."},{name:"Registo federal no TTB (gabinete norte-americano do álcool e tabaco), se importar ou vender por grosso",note:"Só é exigido se for além da simples venda a retalho."}],kpis:[{label:"Margem bruta por categoria",benchmark:"Bebidas espirituosas, vinho e cerveja têm margens substancialmente diferentes — o mix de categorias determina a rentabilidade combinada."},{label:"Rotação de inventário por ano",benchmark:"O álcool é um capital de rotação lenta; o stock parado imobiliza caixa indefinidamente."},{label:"Taxa de quebras/furtos (shrinkage)",benchmark:"Furtos e quebras pesam desproporcionadamente sobre margens líquidas reduzidas."},{label:"Valor médio do cesto de compra",benchmark:"Associação de misturadores, aperitivos e upsells premium por transação."}],costDrivers:["Aquisição da licença de bebidas alcoólicas, muito dependente do estado","Inventário inicial de cerveja, vinho e destilados","Sistemas de segurança, câmaras e prevenção de perdas","Arrendamento de retalho numa localização visível e autorizada","Impostos especiais de consumo estaduais e reporte de conformidade","Sistema POS com verificação de idade e registo de conformidade"],risks:[{risk:"As regras de licenciamento variam tão drasticamente por estado e condado que um plano viável num mercado é impossível noutro.",mitigation:"Confirme as regras da ABC (comissão de bebidas alcoólicas) do seu estado e condado, o estado da quota e o mercado de transferência de licenças antes de assinar qualquer arrendamento."},{risk:"Uma única falha na verificação de idade pode suspender ou custar-lhe totalmente a licença.",mitigation:"Forme todos os funcionários na verificação de identificação, digitalize os documentos eletronicamente e mantenha registos documentados de conformidade."},{risk:"A crescente permissão estatal para supermercados e grandes superfícies venderem vinho e destilados corrói o monopólio da categoria.",mitigation:"Construa uma seleção defensável e profunda, conhecimento de produto por parte da equipa e provas que as cadeias não conseguem igualar."}]},"recording-studio":{licenses:[{name:"Licença comercial e registo da entidade",note:"Alvará local padrão para operar uma instalação comercial e faturar clientes."},{name:"Aprovação de zonamento e conformidade com o regulamento de ruído",note:"Instalações de áudio comerciais perto de zonas residenciais frequentemente precisam de aprovação específica de zonamento quanto ao isolamento acústico."},{name:"Licenciamento PRO / mecânico (se lançar gravações)",note:"Só se aplica se o próprio estúdio produzir ou distribuir gravações originais em vez de apenas vender tempo de utilização."},{name:"Certificado de ocupação após obras",note:"A construção acústica normalmente altera o espaço o suficiente para exigir nova vistoria."}],kpis:[{label:"Horas reservadas por mês",benchmark:"A utilização da sala é todo o modelo de negócio."},{label:"Mix de receita: aluguer de sala vs. engenharia",benchmark:"Os serviços de engenharia e produção têm margem mais elevada do que o simples aluguer da sala."},{label:"Quota de clientes recorrentes",benchmark:"Os estúdios vivem de um número reduzido de artistas, editoras e produtores que voltam."},{label:"Custo anual de renovação de equipamento",benchmark:"Adiar este investimento torna a sala pouco competitiva sem se dar conta."}],costDrivers:["Tratamento acústico, isolamento e obras estruturais","Mesa de mistura, c
394onversores, microfones e monitorização","Licenças de DAW (software de gravação digital) e subscrições de plugins","Renda de um espaço com pé-direito e isolamento adequados","Funcionários ou engenheiros contratados por sessão","Manutenção contínua e renovação de equipamento"],risks:[{risk:"Home studios competentes e software de produção barato reduziram permanentemente a procura por tempo de gravação básico.",mitigation:"Venda o que um quarto de casa não consegue reproduzir — uma sala live ampla, uma cadeia de sinal topo de gama e engenharia experiente."},{risk:"As reservas são irregulares e dependentes de projetos, enquanto a renda e o financiamento de equipamento são fixos mensalmente.",mitigation:"Acrescente produção de podcasts, locução, mistura, masterização e aluguer para gravação de conteúdos para preencher a agenda."},{risk:"O forte investimento inicial num espaço específico torna a mudança de instalações muito dispendiosa.",mitigation:"Negoceie contratos de arrendamento longos com opções de renovação antes de investir em construção acústica permanente."}]},"juice-bar":{licenses:[{name:"Alvará local de estabelecimento de serviço alimentar",note:"Exigido pelo departamento de saúde municipal ou de condado antes de servir bebidas preparadas."},{name:"Certificação de manuseamento de alimentos / gestor",note:"Os funcionários devem possuir um certificado de segurança alimentar reconhecido pelo estado."},{name:"Plano HACCP para sumo prensado a frio (cold-press)",note:"Sumo não pasteurizado vendido fora do estabelecimento está sujeito às regras HACCP da FDA (autoridade norte-americana de alimentos e medicamentos) e a requisitos de rotulagem de advertência."},{name:"Aprovação de cozinha comercial ou commissary (cozinha partilhada certificada)",note:"Necessária se prensar fora das instalações ou vender sumo engarrafado por grosso a outros retalhistas."}],kpis:[{label:"Custo de produtos frescos em percentagem da receita",benchmark:"A prensagem a frio consome vários quilos de fruta e vegetais por garrafa, pelo que o custo das mercadorias vendidas é elevado para um negócio de bebidas."},{label:"Taxa de desperdício e deterioração",benchmark:"Tanto os produtos frescos por vender como o sumo prensado expiram em poucos dias."},{label:"Talão médio e taxa de complementos associados",benchmark:"Suplementos, shots e itens alimentares são onde a margem é recuperada."},{label:"Rendimento nas horas de pico",benchmark:"As correrias da manhã e pós-ginásio concentram a maioria das transações diárias em janelas estreitas."}],costDrivers:["Fruta e vegetais frescos, com elevada perda de rendimento na prensagem a frio","Equipamento de prensagem a frio e liquidificação, mais manutenção","Arrendamento de retalho em locais orientados para o bem-estar com muito tráfego pedonal","Eletricidade de refrigeração e armazenamento a frio","Garrafas, copos e embalagem compostável","Pessoal a tempo parcial escalado em torno das janelas de pico estreitas"],risks:[{risk:"A deterioração dos produtos é severa, porque tanto as matérias-primas como o sumo acabado têm prazos de validade muito curtos.",mitigation:"Mantenha níveis de stock apertados, registe o desperdício diário e converta produtos a envelhecer em ofertas especiais de misturas ou garrafas."},{risk:"Os meses de tempo frio veem uma queda acentuada na procura de bebidas geladas.",mitigation:"Acrescente sopas, bebidas funcionais quentes, taças de açaí e programas de desintoxicação por subscrição para manter a receita no inverno."},{risk:"Barreiras de entrada muito baixas significam que cafés, ginásios e cadeias de supermercados podem lançar uma linha de sumos a qualquer momento.",mitigation:"Diferencie-se pela qualidade genuína da prensagem a frio, transparência de origem e parcerias com ginásios ou estúdios."}]},"coffee-cart":{marketSizeValue:"49,5 mil milhões de USD (mercado de cafetarias de marca, a categoria adjacente)",licenses:[{name:"Licença de vendedor ambulante de alimentos",note:"Um alvará do departamento de saúde específico para venda ambulante de alimentos e bebidas em carrinhos e quiosques."},{name:"Certificação de manuseamento de alimentos",note:"Exigida para o operador e qualquer funcionário que prepare bebidas."},{name:"Acordo de commissary (cozinha partilhada certificada)",note:"Muitas jurisdições exigem que os vendedores ambulantes preparem e limpem numa cozinha commissary fixa e aprovada."},{name:"Autorização de local ou zona de venda",note:"Zonas de venda ambulante na via pública, mercados de produtores e propriedade privada exigem, cada uma, a sua própria autorização."}],kpis:[{label:"Transações por hora no pico",benchmark:"Um carrinho vive ou morre pelo rendimento na correria da manhã."},{label:"Receita por ponto de venda ou evento",benchmark:"Permite classificar localizações e eliminar as que não cobrem a sua taxa de local."},{label:"Custo por chávena (grãos mais leite mais copo)",benchmark:"Números absolutos pequenos, mas que definem a margem de cada venda."},{label:"Quota de receita proveniente de eventos reservados",benchmark:"O catering contratado é a metade previsível do rendimento de um carrinho."}],costDrivers:["Máquina de café expresso, moinho e construção do carrinho","Grãos de café, lacticínios e alternativas ao leite","Taxas de local, rend
394a de banca de mercado ou taxas de evento","Fonte de energia (gerador ou bateria) e abastecimento de água","Copos, tampas e consumíveis","Licenças, taxas de commissary e inspeções sanitárias"],risks:[{risk:"A receita depende quase inteiramente do tráfego pedonal e do clima num local específico num dia específico.",mitigation:"Construa uma rotação de locais comprovados e acrescente catering contratado para empresas e casamentos como rendimento garantido."},{risk:"As regras municipais de venda ambulante podem eliminar a sua melhor localização sem aviso prévio.",mitigation:"Garanta acordos escritos com proprietários privados em vez de depender apenas de zonas públicas de venda ambulante."},{risk:"O armazenamento limitado e um único grouphead (cabeça de extração) limitam quanto pode vender na correria que importa.",mitigation:"Mantenha o menu reduzido, pré-doseie onde a qualidade o permita, e considere um segundo moinho antes de um segundo carrinho."}]},hotel:{startupCostNote:"Baseado no custo de desenvolvimento por quarto para uma propriedade de serviço limitado com 80 a 150 quartos; as conversões custam substancialmente menos do que construções de raiz.",marketSizeValue:"758,6 mil milhões de USD em gastos de hóspedes em hotéis nos EUA",licenses:[{name:"Licença estadual de estabelecimento de alojamento",note:"Exigida para operar alojamento transitório, com inspeção periódica de saúde e segurança."},{name:"Registo do imposto sobre ocupação transitória",note:"Os hotéis devem registar-se para cobrar e entregar o imposto local sobre pernoitas (bed tax) sobre a receita de quartos."},{name:"Certificado de segurança contra incêndios e certificado de ocupação",note:"Cobre alarmes, sprinklers, saídas de emergência e limites de ocupação afixados."},{name:"Licenças de serviço de alimentação e de bebidas alcoólicas",note:"Necessárias separadamente caso opere um restaurante, bar ou serviço de pequeno-almoço."}],kpis:[{label:"Tarifa Média Diária (ADR)",benchmark:"Cerca de 156,67 USD (média nos EUA)"},{label:"RevPAR",benchmark:"Cerca de 83,30 USD (média nos EUA)"},{label:"Taxa de ocupação",benchmark:"Aproximadamente 53–63%, consoante o mês"},{label:"GOPPAR",benchmark:"Lucro operacional bruto por quarto disponível — o indicador que os credores usam para testar o serviço da dívida."}],costDrivers:["Custo de desenvolvimento ou aquisição por quarto","Taxas de franquia, normas de marca e encargos do sistema de reservas","Mão de obra de limpeza e receção","Consumos de uma propriedade grande em funcionamento contínuo","Seguro de propriedade e impostos sobre imóveis","Reserva FF&E (mobiliário, acessórios e equipamento) para renovações periódicas obrigatórias"],risks:[{risk:"A ADR e a ocupação acompanham a economia mais ampla das viagens, enquanto o serviço da dívida sobre a propriedade não se altera.",mitigation:"Subscreva de forma conservadora face ao RevPAR de vale e mantenha reservas dimensionadas para uma quebra de vários trimestres."},{risk:"Os contratos de franquia fixam taxas e exigem planos dispendiosos de melhoria de propriedade no calendário da marca.",mitigation:"Modele a economia de franquia versus independente ao longo de todo o prazo do contrato antes de assinar."},{risk:"As comissões das OTA (agências de viagens online) e as taxas de marca em conjunto absorvem uma parte substancial de ca
394da noite de quarto vendida.",mitigation:"Aumente a quota de reservas diretas e negoceie contratos de grupo e corporativos que contornem os canais das OTA."}]},"poultry-farm":{marketSizeValue:"70,2 mil milhões de USD em vendas totais do setor avícola dos EUA",licenses:[{name:"Contrato de produtor com integrador",note:"A maior parte da produção de frangos de corte nos EUA opera sob contrato com um integrador que fornece as aves e a ração; os termos do contrato estão sujeitos à supervisão do USDA (departamento de agricultura dos EUA)."},{name:"Autorização estadual de gestão de dejetos animais",note:"Explorações acima dos limiares de dimensão estaduais precisam de uma autorização de gestão de nutrientes ou estrume da agência ambiental estadual."},{name:"Autorização NPDES para grandes CAFO (explorações pecuárias intensivas)",note:"Explorações pecuárias intensivas acima dos limiares federais exigem uma autorização de descarga ao abrigo da Lei da Água Limpa (Clean Water Act)."},{name:"Licença de manuseador/classificador de ovos (explorações de poedeiras)",note:"Exigida pela maioria dos estados para classificar, embalar e vender ovos com casca."}],kpis:[{label:"Total de vendas do setor avícola dos EUA",benchmark:"70,2 mil milhões de USD (2024)"},{label:"Índice de conversão alimentar (FCR)",benchmark:"Quilos de ração por quilo de peso vivo — o indicador central de eficiência na produção de frangos de corte."},{label:"Taxa de sobrevivência até à idade de mercado",benchmark:"Percentagem de pintos colocados que chega ao mercado; pequenas variações alteram significativamente a liquidação ao produtor."},{label:"Ganho médio diário",benchmark:"Determina quantos lotes por pavilhão por ano é possível produzir."}],costDrivers:["Ração, dominada pelos preços do milho e da farinha de soja","Construção de pavilhões de frangos de corte ou poedeiras e serviço da dívida","Energia para ventilação, aquecimento e iluminação","Reposição de pintos ou de poedeiras em início de postura","Gestão, eliminação e c
394onformidade relativas à cama das aves","Melhorias obrigatórias no pavilhão exigidas pelo integrador"],risks:[{risk:"A gripe aviária altamente patogénica pode exigir o abate de todo um lote com pouco aviso prévio.",mitigation:"Aplique bioSegurança rigorosa — acesso controlado, calçado dedicado, exclusão de aves selvagens — e contrate seguro contra doenças avícolas onde disponível."},{risk:"Os produtores contratados suportam dívida de longo prazo sobre os pavilhões, enquanto o integrador controla a colocação de aves e o pagamento na liquidação.",mitigation:"Modele o serviço da dívida com base no calendário de colocação histórico mais baixo do integrador, não na média, antes de construir."},{risk:"As oscilações no preço da ração comprimem as margens de explorações independentes sem o amortecedor de um integrador.",mitigation:"Utilize compras a prazo ou cobertura de risco (hedging) sobre o milho e a farinha de soja onde a escala o permita."}]}}},na=(e,t)=>({label:"IBISWorld industry report",url:`https://www.ibisworld.com/united-states/industry/${e}/${t}/`}),Yz={"travel-agency":{slug:"travel-agency",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Seller of Travel registration",note:"California, Florida, Hawaii, Iowa and Washington require any business selling travel to their residents to register as a seller of travel, post a bond or trust-account funds, and display a registration number in advertising — regardless of where the agency itself is based.",source:{label:"Florida Department of Agriculture & Consumer Services — Sellers of Travel",url:"https://www.fdacs.gov/Business-Services/Sellers-of-Travel"}},{name:"Local business license and sales/occupational tax registration",note:"Required by most cities and counties before invoicing clients, in addition to any state seller-of-travel registration.",source:{label:"US Small Business Administration",url:"https://www.sba.gov/business-guide/launch-your-business/apply-licenses-permits"}},{name:"Errors & omissions insurance",note:"Not a government license, but airlines, tour operators and host agencies commonly require agents to carry E&O coverage before issuing an IATA/CLIA credential or supplier appointment."}],kpis:[{label:"Commission and service-fee revenue per booking",benchmark:"Agencies increasingly charge planning fees to offset falling airline commissions, so revenue per booking blends supplier commission with direct client fees."},{label:"Client retention / repeat booking rate",benchmark:"A referral- and repeat-driven book of business is the main lever independent agents have against direct-to-consumer OTAs."},{label:"Average booking value",benchmark:"Higher for leisure specialists (cruises, luxury, group/destination travel) than for simple air-only bookings, which pay minimal or no commission."}],costDrivers:["Host agency or IATAN/CLIA accreditation fees","Errors & omissions insurance premiums","Booking and CRM software subscriptions","Marketing and familiarization (FAM) trip costs","State seller-of-travel registration and bonding","Commission splits owed to a host agency if not independently accredited"],risks:[{risk:"Online travel agencies and airline/hotel direct-booking channels compress commission-based revenue.",mitigation:"Shift toward fee-based advisory service and specialize in complex, high-touch trips (luxury, multi-generational, group, destination weddings) where clients value expert planning."},{risk:"A supplier bankruptcy or major disruption (e.g., an airline or tour operator collapse) can leave the agency exposed to client refund demands.",mitigation:"Use trust accounts where required by state law, book through bonded suppliers, and carry E&O insurance."},{risk:"Global events (pandemics, geopolitical instability, natural disasters) can halt bookings with little warning.",mitigation:"Diversify across destinations and travel types, and maintain cash reserves to cover the fixed costs of a multi-month demand shock."}]},"coffee-shop":{slug:"coffee-shop",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$75.5 billion",year:2026,source:na("coffee-snack-shops","1973")},licenses:[{name:"Local health department food service permit",note:"Covers equipment, water supply, cold-holding and sanitation; inspected before opening and periodically after.",source:{label:"FDA Food Code",url:"https://www.fda.gov/food/retail-food-protection/food-code"}},{name:"Food handler / manager certification",note:"Most states or counties require at least one certified food protection manager on staff, plus food handler cards for other employees."},{name:"Business license and seller's permit",note:"Required by the city or county, plus a sales tax permit for retail sales of drinks, food and merchandise."}],kpis:[{label:"Industry growth",benchmark:"2.5% annualized growth, reaching $75.5 billion in revenue over the five years to 202
3946",source:na("coffee-snack-shops","1973")},{label:"Average ticket and attach rate",benchmark:"Food and merchandise add-ons per beverage sale are a major lever on an otherwise low-average-ticket business."},{label:"Peak daypart throughput",benchmark:"Drinks made per labor hour during the morning rush, since coffee shops earn a disproportionate share of daily sales before 10am."},{label:"Customer visit frequency",benchmark:"Repeat, habitual visits (multiple times per week) drive most independent-shop revenue, unlike one-off dining occasions."}],costDrivers:["Espresso machine, grinders and brewing equipment purchase and maintenance","Green/roasted coffee, milk and syrup costs, which move with commodity and dairy prices","Labor concentrated in a narrow morning peak, making staffing efficiency hard","Rent for high-foot-traffic locations","Cups, lids and packaging (a meaningful COGS line for a to-go-heavy business)","Point-of-sale, loyalty app and third-party delivery platform fees"],risks:[{risk:"Coffee (C-market) and dairy price volatility squeezes margins in a category where customers resist frequent price increases.",mitigation:"Lock in supplier contracts where possible, adjust portion/recipe costs before raising posted prices, and diversify into food and merchandise with more pricing flexibility."},{risk:"Revenue is heavily concentrated in a two-to-three-hour morning rush, so labor scheduling is either understaffed at peak or overstaffed midday.",mitigation:"Use hour-by-hour sales data to build a tiered staffing schedule and push midday traffic with food specials or mobile-order incentives."},{risk:"National chains and drive-thru concepts compete aggressively on speed and price in the same trade area.",mitigation:"Differentiate on quality, atmosphere, and community/loyalty programs that a fast-turn drive-thru cannot replicate."}]},bakery:{slug:"bakery",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Local health department retail food establishment license",note:"Required for any bakery selling food prepared on-site for immediate consumption; covers equipment, sanitation and cold-holding.",source:{label:"FDA Food Code",url:"https://www.fda.gov/food/retail-food-protection/food-code"}},{name:"Cottage food registration or exemption (home-based only)",note:"Most states allow certain low-risk baked goods to be made in a home kitchen without a full commercial license, but sales are capped and a commercial storefront still requires standard licensing.",source:{label:"Illinois Department of Public Health — Cottage Food",url:"https://dph.illinois.gov/topics-services/food-safety/cottage-food.html"}},{name:"Food handler / manager certification and business license",note:"Staff preparing food typically need a food handler card, and the business needs a standard local business license and sales tax permit."}],kpis:[{label:"Waste / shrink rate",benchmark:"Unsold, perishable inventory marked down or discarded at end of day is one of the largest controllable costs in a bakery."},{label:"Wholesale vs. retail sales mix",benchmark:"Wholesale accounts (cafes, restaurants, grocers) add volume at lower margin per unit than walk-in retail sales."},{label:"Early-morning labor cost as % of sales",benchmark:"Production staff must start hours before opening, so labor cost per unit is highly sensitive to batch-size planning."}],costDrivers:["Flour, butter, eggs and sugar costs, which move with commodity markets","Commercial ovens, mixers and proofing equipment","Pre-dawn production labor","Packaging and short shelf-life driven waste","Retail lease in a walk-in-traffic location","Health permits and food safety compliance"],risks:[{risk:"Baked goods are highly perishable, so any demand forecasting miss becomes same-day waste.",mitigation:"Track sell-through by item and daypart, and shift excess afternoon inventory to discounted end-of-day sales or day-old racks rather than discarding it."},{risk:"Commodity price spikes in flour, butter and eggs hit COGS directly in a category where customers resist frequent price changes.",mitigation:"Use fixed-price supplier contracts where available and re-engineer recipes or portion sizes before raising sticker prices."},{risk:"Production labor must start well before the storefront opens, making labor cost hard to flex with actual same-day demand.",mitigation:"Build a production schedule around a rolling sales forecast and stagger baking so high-margin items are always fresh at peak hours."}]},restaurant:{slug:"restaurant",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$1.1 trillion",year:2024,source:{label:"National Restaurant Association — 2024 State of the Restaurant Industry",url:"https://restaurant.org/research-and-media/media/press-releases/restaurant-industry-sales-forecast-to-set-1-1-trillion-record-in-2024/"}},licenses:[{name:"Local health department food service permit",note:"Covers kitchen equipment, cold-holding temperatures and sanitation; inspected before opening and on a recurring schedule after.",source:{label:"FDA Food Code",url:"https://www.fda.gov/food/retail-food-protection/food-code"}},{name:"Liquor license (if serving alcohol)",note:"Issued by the state alcohol beverage control agency, often with a local approval step; can be a major cost and, in some markets, capped in supply."},{name:"Food handler / manager certification",note:"Most states or counties require at least one certified food protection manager on staff at all times."}],kpis:[{label:"Prime cost (food + labor as % of sales)",benchmark:"Food and labor costs each run roughly 33 cents of every revenue dollar industry-wide, and together are the benchmark most operators track weekly.",source:{label:"National Restaurant Association — Bottom Line Impact of Rising Costs",url:"https://restaurant.org/research-and-media/research/restaurant-economic-insights/analysis-commentary/bottom-line-impact-of-rising-costs-for-restaurants/"}},{label:"Table turnover rate",benchmark:"Covers seated per table per meal peri
394od; the primary revenue lever for full-service restaurants with fixed seating capacity."},{label:"Average check",benchmark:"Total ticket per guest across food, beverage and alcohol; tracked by daypart to spot menu or upsell issues."},{label:"Seat/labor hour utilization",benchmark:"Sales per labor hour worked, used to set front- and back-of-house staffing against forecasted covers."}],costDrivers:["Food cost, which is exposed to commodity and supply-chain price swings","Labor cost, including tipped-wage rules that vary sharply by state","Rent and build-out for kitchen-grade space","Kitchen equipment purchase, maintenance and repair","Liquor license cost and compliance where alcohol is served","Third-party delivery platform commissions"],risks:[{risk:"Total restaurant operating expenses have risen roughly 36% since before the pandemic, compressing already-thin margins.",mitigation:"Re-engineer menus around ingredients with stable supply, renegotiate supplier contracts regularly, and adjust portioning before raising menu prices."},{risk:"Full-service restaurants are capped by seating capacity and table turnover, so a slow shift permanently loses that revenue.",mitigation:"Use reservation/waitlist data to manage covers by daypart and add off-peak promotions or private events to fill slow shifts."},{risk:"Front- and back-of-house turnover is chronically high, driving recruiting and training costs.",mitigation:"Cross-train staff across stations, build clear advancement paths, and benchmark pay against the local market to reduce churn."}]},"food-truck":{slug:"food-truck",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$2.8 billion",year:2026,source:na("food-trucks","4322")},licenses:[{name:"Mobile food establishment permit",note:"Issued by the state or local health department specifically for mobile units, in addition to (not instead of) a standard food service permit.",source:{label:"Florida Department of Agriculture & Consumer Services — Mobile Food Establishments",url:"https://www.fdacs.gov/Business-Services/Food-Establishments/Mobile-Food-Vendors"}},{name:"Commissary agreement",note:"Most state and local codes require mobile vendors to prep, restock and clean at a licensed commissary kitchen rather than a home kitchen, and to document that relationship for inspectors.",source:{label:"Utah Administrative Code R392-102-3 — Commissary Requirements",url:"https://www.law.cornell.edu/regulations/utah/Utah-Admin-Code-R392-102-3"}},{name:"Vehicle and fire safety inspection, plus city vending permits",note:"Covers propane/LPG systems and fire suppression on the truck, and separate permits are often required per city or event to park and vend on public property."}],kpis:[{label:"Daily sales by location/route",benchmark:"Revenue per stop is the core planning metric, since truck placement (lunch spots, events, breweries) drives most of the variance in sales."},{label:"Prep-to-service time on a limited menu",benchmark:"A tightly curated menu that can be executed fast from a small galley is what makes food truck throughput viable at peak times."},{label:"Event/catering booking mix",benchmark:"Private events and catering bookings typically carry higher guaranteed revenue per hour than uncertain daily street/lot service."}],costDrivers:["Truck purchase or lease and custom kitchen build-out","Commissary kitchen rental fees","Propane and generator fuel for cooking equipment","City vending permits and event/festival booth fees, which vary widely by location","Vehicle maintenance and fuel for driving between locations","Limited on-board storage forcing frequent, smaller supply restocks"],risks:[{risk:"Local vending rules restrict where and how long a truck can park, and change between cities.",mitigation:"Build a route around confirmed, permitted spots and private-property/event bookings rather than relying on ad hoc street parking."},{risk:"Weather and seasonality can wipe out a day's or a season's revenue with no indoor fallback.",mitigation:"Book indoor markets, breweries or event venues for cold/wet months and keep a cash buffer for slow stretches."},{risk:"A mechanical breakdown takes the entire business off the road until the truck is repaired.",mitigation:"Budget for a maintenance reserve, keep a preferred mechanic relationship, and consider backup equipment (e.g., a spare generator) for critical systems."}]},"event-management":{slug:"event-management",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Local business license and sales tax permit",note:"Most cities and counties require a general business license, and many states require collecting sales tax on event-planning fees or goods resold to clients."},{name:"Certificate of insurance (COI) for each venue",note:"Nearly every venue requires proof of general liability coverage, often naming the venue as additionally insured, before a contract is signed."},{name:"Alcohol service permit (as needed)",note:"If the planner arranges or serves alcohol directly rather than through a licensed caterer or bar vendor, a state liquor liability endorsement or temporary event permit is typically required."}],kpis:[{label:"Average event budget managed",benchmark:"Total client spend coordinated per event — the core driver of planner fee income under percentage-based pricing models."},{label:"Planner-to-event ratio",benchmark:"Number of concurrent events a single planner can run without service quality slipping, typically capped by venue walkthroughs and day-of staffing."},{label:"Vendor commission / referral income",benchmark:"Share of revenue from preferred-vendor kickbacks and markups versus flat planning fees."},{label:"Rebooking and referral rate",benchmark:"Share of new bookings s
394ourced from past clients or vendor referrals rather than paid marketing."}],costDrivers:["Planner and day-of coordinator labor (largely event-day and event-week concentrated)","Software for proposals, timelines and client CRM","General liability and professional liability (errors & omissions) insurance","Marketing and portfolio production (styled shoots, photography, website)","Vendor deposits paid upfront and recovered from client retainers","Travel and site-visit costs for out-of-market events"],risks:[{risk:"Revenue is concentrated in weekend dates (especially weddings), so cancellations or a bad wedding season hit disproportionately.",mitigation:"Diversify into corporate and nonprofit event work, which books mid-week and on a different seasonal cycle than weddings."},{risk:"Client cancellations after vendor deposits are paid can leave the planner covering non-refundable costs.",mitigation:"Use contracts with tiered non-refundable retainers and pass vendor deposit terms directly through to the client."},{risk:"Planners are personally blamed for vendor failures (caterer no-show, AV failure) they don't control.",mitigation:"Vet vendors on a short approved list with backup options, and carry day-of contingency staffing and equipment."}]},laundromat:{slug:"laundromat",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$7.2 billion",year:2026,source:{label:"IBISWorld — Laundromats in the US Industry Report",url:"https://www.ibisworld.com/united-states/industry/laundromats/1729/"}},licenses:[{name:"Local business license and certificate of occupancy",note:"Required by the city or county before opening a self-service retail space to the public."},{name:"Wastewater / sewer discharge permit",note:"Many municipal water authorities require a permit or connection fee for high-volume commercial washer discharge."},{name:"Fire and building code inspection for gas/electric dryers",note:"Local fire marshals inspect commercial dryer venting and gas line installation before occupancy is approved."}],kpis:[{label:"Revenue per machine",benchmark:"Weekly or monthly collections per washer/dryer — the standard way operators compare store performance."},{label:"Vend price per pound or per load",benchmark:"Core pricing lever, benchmarked against nearby competitors and utility cost trends."},{label:"Machine utilization / turns per day",benchmark:"Average number of cycles run per machine per day, tracked to decide when to add capacity."}],costDrivers:["Water, sewer and gas/electric utilities (typically the largest recurring cost)","Washer and dryer purchase, financing and replacement cycles","Rent and build-out for plumbing, venting and electrical capacity","Attendant labor and security/camera systems for unattended hours","Machine repair and parts inventory","Card/app payment system fees for cashless machines"],risks:[{risk:"Utility costs (water, gas, electricity) can rise faster than vend prices, compressing margins.",mitigation:"Install high-efficiency machines and monitor utility bills against volume to reprice vend rates on a regular schedule."},{risk:"Unattended locations are vulnerable to vandalism, coin theft and loitering.",mitigation:"Use cashless card/app payment systems, cameras and scheduled attendant hours during peak times."},{risk:"New apartment construction with in-unit washer/dryers shrinks the local customer base over time.",mitigation:"Track local multifamily construction trends before signing a long-term lease and diversify into wash-dry-fold and commercial accounts."}]},daycare:{slug:"daycare",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$72.8 billion",year:2025,source:{label:"IBISWorld — Day Care in the US Industry Report",url:"https://www.ibisworld.com/united-states/market-size/day-care/1618/"}},licenses:[{name:"State child care facility license",note:"Every state requires a license from its child care licensing agency before a center or family home can legally operate, covering staff-to-child ratios, background checks and facility safety.",source:{label:"Child Care Aware of America — Child Care Regulations Issue Brief",url:"https://www.childcareaware.org/wp-content/uploads/2025/07/Child-Care-Regulations.pdf"}}
394,{name:"Staff background checks and health screenings",note:"Federal and state law requires fingerprint-based criminal background checks, child abuse registry checks and TB/health screenings for all staff with unsupervised child access."},{name:"Local fire, health and building inspections",note:"Facilities must pass fire marshal and health department inspections covering exits, sanitation and food handling before licensure is granted."}],kpis:[{label:"Staff-to-child ratio compliance",benchmark:"Set by state licensing rules and varies by age group; the single biggest driver of allowable enrollment and labor cost.",source:{label:"Childcare.gov — Supervision: Ratios and Group Sizes",url:"https://childcare.gov/consumer-education/regulated-child-care/supervision-ratios-and-group-sizes"}},{label:"Enrollment / capacity utilization",benchmark:"Filled slots divided by licensed capacity — the core revenue driver given largely fixed staffing and facility costs."},{label:"Staff turnover rate",benchmark:"Tracked closely because ratio compliance collapses quickly when caregivers leave and replacements aren't background-checked in time."}],costDrivers:["Teacher and caregiver wages (the largest cost, driven directly by mandated ratios)","Facility lease and playground/outdoor space requirements","Liability insurance, which is higher than most small businesses due to child-safety exposure","Background checks, licensing fees and continuing-education requirements for staff","Meals, supplies and curriculum materials","Facility upgrades to meet fire, health and ADA code requirements"],risks:[{risk:"Mandated staff-to-child ratios mean a single caregiver absence can force turning families away or closing a room for the day.",mitigation:"Cross-train staff across age groups and maintain a substitute/float pool to cover call-out
394s without breaching ratios."},{risk:"Rising average child care prices are pushing affordability limits for many families, capping how much tuition can be raised.",mitigation:"Layer revenue with subsidized voucher programs, employer partnerships and sliding-scale tuition to broaden the paying base."},{risk:"A single licensing violation or safety incident can trigger closure and reputational damage that ends enrollment.",mitigation:"Run regular internal safety audits ahead of state inspections and maintain documented ratio and background-check compliance."}]},trucking:{slug:"trucking",startupCost:null,annualRevenue:{low:21e4,high:46e4,note:"Average 2023 annual revenue per truck reported by for-hire carriers, ranging from roughly $210,000 for truckload/flatbed trucks up to about $457,000 for LTL trucks; single-truck owner-operators fall toward the lower end.",source:{label:"ATRI — An Analysis of the Operational Costs of Trucking: 2024 Update",url:"https://truckingresearch.org/wp-content/uploads/2024/06/ATRI-Operational-Cost-of-Trucking-06-2024.pdf"}},netMargin:null,marketSize:{value:"$732.3 billion",year:2024,source:{label:"OOIDA Foundation — 2024 Owner-Operator Survey Report (FMCSA-sourced industry data)",url:"https://www.ooida.com/wp-content/uploads/2024/12/2024-OOMP-Survey-Report.pdf"}},licenses:[{name:"USDOT number",note:"Required by FMCSA for any commercial motor vehicle operator engaged in interstate commerce, regardless of cargo type.",source:{label:"FMCSA — Getting Started with Registration",url:"https://www.fmcsa.dot.gov/registration/getting-started"}},{name:"Operating authority (MC number)",note:"Required in addition to a USDOT number for for-hire carriers transporting regulated commodities or passengers for compensation across state lines.",source:{label:"FMCSA — Get Operating Authority (Docket Number)",url:"https://www.fmcsa.dot.gov/registration/get-mc-number-authority-operate"}},{name:"IFTA fuel tax license and IRP apportioned registration",note:"Multi-state operators must register for the International Fuel Tax Agreement and International Registration Plan to legally cross state lines."}],kpis:[{label:"Annual miles per truck",benchmark:"Averaged 80,159 miles per truck across the for-hire industry in 2023.",source:{label:"ATRI — Operational Costs of Trucking: 2024 Update",url:"https://truckingresearch.org/wp-content/uploads/2024/06/ATRI-Operational-Cost-of-Trucking-06-2024.pdf"}},{label:"Cost per mile",benchmark:"Industry average marginal cost of operating a truck was about $1.78-$2.26 per mile in 2023-2024 depending on fuel prices.",source:{label:"FreightWaves — ATRI report: Rising costs continue to squeeze trucking industry",url:"https://www.freightwaves.com/news/atri-report-rising-costs-continue-to-squeeze-trucking-industry"}},{label:"Deadhead / empty mile percentage",benchmark:"Miles run without a paying load, tracked because every deadhead mile carries full fuel and wear cost with no matching revenue."},{label:"Miles between breakdowns",benchmark:"Averaged 37,700 miles industry-wide in 2023, used to benchmark preventative maintenance programs.",source:{label:"ATRI — Operational Costs of Trucking: 2024 Update",url:"https://truckingresearch.org/wp-content/uploads/2024/06/ATRI-Operational-Cost-of-Trucking-06-2024.pdf"}}],costDrivers:["Fuel — the single largest and most volatile marginal cost per mile","Truck and trailer lease or purchase payments","Driver wages and benefits, which rise sharply during driver shortages","Repair and maintenance, tires, and unscheduled breakdown costs","Commercial auto and cargo insurance premiums","Permits, tolls, and IFTA/IRP registration fees across operating states"],r
394isks:[{risk:"Freight rates are highly cyclical and can fall below operating costs during freight recessions, as occurred through 2023-2024.",mitigation:"Diversify freight lanes and customer contracts (mix of spot and dedicated contract freight) to avoid full exposure to spot-market swings."},{risk:"Driver turnover, especially among long-haul truckload carriers, disrupts service and drives up recruiting costs.",mitigation:"Benchmark driver pay and home-time policies against ATRI data and prioritize consistent schedules, which the data shows reduces turnover."},{risk:"A single serious safety violation or crash can suspend operating authority and shut the business down.",mitigation:"Maintain proactive CSA score monitoring, driver qualification files and preventative maintenance records well above FMCSA minimums."}]},catering:{slug:"catering",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Food service establishment permit",note:"Issued by the state or county health department after inspecting the commercial kitchen used to prepare food for sale."},{name:"Food handler / manager certification",note:"Most states require at least one certified food protection manager on staff, plus food handler cards for line staff, under local health codes."},{name:"Mobile/temporary event food permits",note:"Many counties require a separate temporary food service permit for each off-site event, especially where food is prepared or held on-site rather than in the licensed kitchen."}],kpis:[{label:"Cost per person / per-head pricing",benchmark:"Core pricing unit for catered events, built up from food cost, labor and rental equipment per guest."},{label:"Food cost percentage",benchmark:"Food and beverage cost as a share of the catering ticket, the primary lever caterers control to protect margin."},{label:"Kitchen and staff utilization by event day",benchmark:"Weekend concentration of weddings and social events means midweek capacity (corporate catering, drop-off orders) fills otherwise idle kitchen time."}],costDrivers:["Food and beverage cost of goods sold","Event-day labor (chefs, servers, bartenders) paid largely on a per-event basis","Commercial kitchen lease or commissary rental","Equipment, linens and rental gear (chafing dishes, tables, glassware)","Delivery vehicles and fuel for off-site events","Liquor liability and general liability insurance"],risks:[{risk:"Revenue is concentrated on weekends and around holiday seasons, leaving midweek kitchen capacity idle.",mitigation:"Build a corporate catering and drop-off/box lunch channel that books Monday-Friday to smooth demand."},{risk:"Food cost volatility (protein and produce prices) can erode margins on fixed per-head contracts signed months in advance.",mitigation:"Build a food-cost escalation clause into contracts signed far ahead of the event date, and lock menus closer to the event when possible."},{risk:"A foodborne illness incident at a single event can trigger health department action and reputational damage across the whole business.",mitigation:"Enforce strict temperature logging and certified food manager oversight at every event, not just in the home kitchen."}]},"barber-shop":{slug:"barber-shop",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$7.0 billion",year:2026,source:na("barber-shops","5806")},licenses:[{name:"State barber license",note:"Every state requires barbers to complete a licensed barbering program and pass a state board exam before working on clients.",source:{label:"BLS Occupational Outlook Handbook",url:"https://www.bls.gov/ooh/personal-care-and-service/barbers-hairstylists-and-cosmetologists.htm"}},{name:"Shop establishment license",note:"Most states license the physical shop separately from the individual barbers, with a health and sanitation inspection before opening."},{name:"Local business license and sales tax permit",note:"Required by your city or county, plus a seller's permit if you retail grooming products."}],kpis:[{label:"Chair utilization",benchmark:"Booked hours divided by available chair hours — the single biggest driver of shop revenue."},{label:"Average ticket",benchmark:"Cut plus add-on services (beard, line-up, product) per 
394client visit."},{label:"Rebooking rate",benchmark:"Share of clients who book their next appointment before leaving."}],costDrivers:["Booth rent paid to you, or commission paid out to barbers","Plumbing and electrical build-out per styling station","Clippers, shears and chair replacement cycles","General liability and workers' compensation insurance","Retail product inventory (pomades, oils, shampoos)","State license renewals and continuing education"],risks:[{risk:"Barbers own their client relationships and can take the book with them when they leave.",mitigation:"Use house booking systems and loyalty programs so clients belong to the shop, and offer commission tiers or chair ownership to retain top barbers."},{risk:"Revenue is capped by chair count, so a slow midweek permanently loses that capacity.",mitigation:"Track utilization per chair per daypart and flex staffing or run off-peak pricing to fill weekday gaps."},{risk:"Discount chains and app-based barbers compress pricing in dense urban markets.",mitigation:"Compete on specialty skill (fades, beard work, straight-razor) and atmosphere rather than price."}]},"goat-farm":{slug:"goat-farm",startupCost:{low:15e3,high:75e3,note:"Driven by pasture access, fencing, breeding stock and shelter for a small-to-mid herd.",source:{label:"University of Missouri Extension — Meat Goat Planning Budget",url:"https://extension.missouri.edu/media/wysiwyg/Extensiondata/Pub/pdf/agguides/agecon/g00691.pdf"}},annualRevenue:{low:1e4,high:6e4,note:"Based on a 50-doe spring-kidding herd selling kids at 55-70 lbs; scales with herd size.",source:{label:"University of Missouri Extension — Meat Goat Planning Budget",url:"https://extension.missouri.edu/media/wysiwyg/Extensiondata/Pub/pdf/agguides/agecon/g00691.pdf"}},netMargin:null,marketSize:null,licenses:[{name:"Premises ID / livestock registration",note:"Most states require registering the farm premises for animal-health traceability before you move animals off-farm.",source:{label:"Penn State Extension — Meat Goat Production",url:"https://extension.psu.edu/meat-goat-production"}},{name:"Grade A dairy permit (dairy goats only)",note:"Required by state dairy regulators before selling fluid milk or processed dairy products.",source:{label:"Penn State Extension — Meat Goat Production",url:"https://extension.psu.edu/meat-goat-production"}},{name:"Scrapie flock identification",note:"USDA requires official scrapie ID tags on sheep and goats sold or moved interstate."}],kpis:[{label:"Market weight at sale",benchmark:"55–70 lbs",source:{label:"University of Missouri Extension",url:"https://extension.missouri.edu/media/wysiwyg/Extensiondata/Pub/pdf/agguides/agecon/g00691.pdf"}},{label:"Kidding rate per doe",benchmark:"Kid crop per doe exposed — the core driver of revenue per head",source:{label:"UNL Center for Agricultural Profitability — Meat Goat Budget",url:"https://cap.unl.edu/sites/unl.edu.ianr.agecon.center-for-ag-profitability/files/media/file/budget-template-meat-goats-2021-gm-2.pdf"}},{label:"Kid mortality to weaning",benchmark:"Tracked closely because parasite load and predation hit this number hardest."}],costDrivers:["Feed and supplemental hay through winter or dry season","Fencing — goats need far sturdier fencing than cattle or sheep","Parasite control and veterinary care","Breeding stock replacement and buck rotation","Predator control (guardian dogs, donkeys, secure night pens)","Hauling to auction or processor"],risks:[{risk:"Barber pole worm (Haemonchus contortus) causes heavy kid losses and is increasingly dewormer-resistant.",mitigation:"Rotate pasture, monitor with FAMACHA scoring and use targeted selective deworming rather than whole-herd treatment."},{risk:"Coyote and loose-dog predation can wipe out a season's kid crop.",mitigation:"Run livestock guardian animals and bring kids into secure night pens."},{risk:"Auction prices swing seasonally around ethnic and religious holiday demand.",mitigation:"Time kidding to hit holiday demand windows and build direct-to-consumer and breeding-stock channels."}]},pharmacy:{slug:"pharmacy",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"State board of pharmacy permit",note:"Issued to the pharmacy location itself and requires a named pharmacist-in-charge on file."},{name:"DEA registration",note:"Required before you can order, stock or dispense any controlled substance."}
394,{name:"NPI number and PBM network enrollment",note:"Without PBM and Medicare Part D contracts you cannot bill insurance, which is the large majority of prescription volume."},{name:"State wholesaler/repackager license",note:"Needed if you compound or repackage for other facilities rather than dispensing only to patients."}],kpis:[{label:"Independent share of US retail pharmacies",benchmark:"35%",source:{label:"NCPA 2024 Digest",url:"https://ncpa.org/newsroom/news-releases/2024/10/27/ncpa-releases-2024-digest-report"}},{label:"Independents offering flu immunizations",benchmark:"91%",source:{label:"NCPA 2024 Digest",url:"https://ncpa.org/newsroom/news-releases/2024/10/27/ncpa-releases-2024-digest-report"}},{label:"Prescriptions filled per day",benchmark:"The core volume metric lenders will ask for; drives staffing and inventory turns."},{label:"Generic dispensing rate",benchmark:"Higher generic mix generally means better margin per script than brand-heavy volume."}],costDrivers:["Drug inventory carrying cost, especially brand and specialty","PBM reimbursement rates and retroactive DIR fees","Pharmacist and technician wages","Dispensing software, robotics and e-prescribing fees","Professional liability and regulatory compliance","Delivery service if you offer it locally"],risks:[{risk:"PBM reimbursement can land below acquisition cost on some scripts, and DIR fees claw back margin months after the sale.",mitigation:"Track per-script gross margin, join a PSAO for contract leverage, and grow cash-pay clinical services."},{risk:"Revenue is concentrated in a payer mix you do not control.",mitigation:"Diversify into immunizations, MTM, point-of-care testing, compounding and durable medical equipment."},{risk:"Chain and PBM-owned mail-order pharmacies pull recurring maintenance prescriptions away.",mitigation:"Compete on adherence packaging, delivery, and personal service for complex and elderly patients."}]},"ice-cream-shop":{slug:"ice-cream-shop",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$7.4 billion",year:2025,source:na("ice-cream-stores","4317")},licenses:[{name:"Local health department food service permit",note:"Covers equipment, cold-holding temperatures and storage; inspected before opening and periodically after."},{name:"Food handler / manager certification",note:"Staff serving food typically must hold a state-recognised food safety certificate."},{name:"Frozen dessert / dairy manufacturer license",note:"Required in many states if you make ice cream on site rather than reselling finished product."}],kpis:[{label:"Industry annualised growth",benchmark:"5.8% over the five years to 2025",source:na("ice-cream-stores","4317")},{label:"Peak-season share of annual revenue",benchmark:"Most scoop shops earn the bulk of annual sales in roughly four summer months."},{label:"Overrun and waste per tub",benchmark:"Product lost to freezer burn, melt and over-scooping directly hits an already tight COGS."}],costDrivers:["Dipping cabinets, batch freezer and backup refrigeration","Dairy, cream and mix-in ingredient price swings","Summer staffing surge and teenage-heavy turnover","Rent on high-foot-traffic locations you only fully use in summer","Electricity for continuous freezing","Health permits and food safety compliance"],risks:[{risk:"Demand is sharply seasonal and weather-driven, so fixed rent runs year-round against four strong months.",mitigation:"Negotiate seasonal lease terms where possible and add coffee, hot drinks, cakes or catering for the cold months."},{risk:"A freezer failure destroys inventory and closes the shop instantly.",mitigation:"Budget for backup refrigeration, temperature alarms and equipment breakdown insurance."},{risk:"Dairy commodity price spikes hit COGS in a category where customers resist price rises.",mitigation:"Lock supplier pricing ahead of the season and adjust portion sizing rather than headline prices."}]},"cleaning-company":{slug:"cleaning-company",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"General business license",note:"Most cities and counties require a standard business license before you can invoice clients.",source:{label:"US Small Business Administration",url:"https://www.sba.gov/business-guide/launch-your-business/apply-licenses-permits"}},{name:"Janitorial bond",note:"A surety bond covering client losses from employee theft — commonly demanded before a commercial contract is awarded."},{name:"General liability and workers' compensation insurance",note:"Required in nearly all commercial contracts, and workers' comp is mandatory in most states once you have employees."}],kpis:[{label:"Revenue per crew per day",benchmark:"Jobs completed per 
394crew shift is what determines whether route density is working."},{label:"Labour as a share of revenue",benchmark:"The dominant cost line; small scheduling inefficiencies show up here immediately."},{label:"Client retention rate",benchmark:"Recurring contracts are the whole business model — churn is far more damaging than in one-off services."},{label:"Drive time between jobs",benchmark:"Unbillable travel is the hidden margin killer in residential route work."}],costDrivers:["Cleaner wages and payroll taxes","Vehicle fuel, insurance and maintenance across routes","Cleaning chemicals and consumables","Bonding and liability insurance premiums","Equipment (vacuums, floor machines, pressure washers)","Recruiting and training to replace turnover"],risks:[{risk:"Turnover in cleaning staff is structurally high, and inconsistent crews are the top reason contracts get cancelled.",mitigation:"Build fixed crews per account, pay above local market, and use checklists with client-visible quality scoring."},{risk:"One large commercial contract can be a majority of revenue, and losing it is existential.",mitigation:"Cap any single client at a target share of revenue and keep a mix of residential and commercial work."},{risk:"Property damage or theft claims can end a commercial relationship and raise premiums.",mitigation:"Bond all staff, run background checks, and document property condition at the start of each contract."}]},"auto-repair-shop":{slug:"auto-repair-shop",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$92.1 billion",year:2026,source:na("auto-mechanics","1689")},licenses:[{name:"State automotive repair dealer registration",note:"States such as California require any shop performing paid repairs to register before opening; requirements vary widely elsewhere."},{name:"EPA and state hazardous waste compliance",note:"Used oil, coolant, solvents and refrigerants are regulated waste streams with mandatory disposal records."},{name:"EPA Section 609 technician certification",note:"Required for anyone servicing motor vehicle air conditioning systems."},{name:"Garagekeepers liability insurance",note:"Standard general liability does not cover customer vehicles in your care, custody and control."}],kpis:[{label:"Bay utilisation",benchmark:"Productive bay hours against available bay hours — capacity here is the revenue ceiling."},{label:"Effective labour rate",benchmark:"Actual labour revenue divided by hours worked, which is usually below the posted door rate."},{label:"Average repair order value",benchmark:"Parts plus labour per ticket; rises with inspection discipline and declined-work follow-up."},{label:"Technician efficiency",benchmark:"Billed hours against clocked hours per technician."}],costDrivers:["Parts acquisition cost and inventory obsolescence","Skilled technician wages in a tight labour market","Lifts, alignment racks and diagnostic scan tools","Shop rent, with zoning limits on where you can operate","Garagekeepers and general liability insurance","Ongoing training and tooling for EV and ADAS work"],risks:[{risk:"The technician shortage means capacity is limited by hiring, not demand.",mitigation:"Run an apprenticeship pipeline with a local technical college and pay to retain rather than repeatedly rehire."},{risk:"EVs and advanced driver assistance systems require expensive tooling, calibration equipment and certification.",mitigation:"Budget a recurring tooling line and specialise deliberately rather than trying to service everything."},{risk:"Comeback repairs destroy both margin and reputation in a referral-driven local market.",mitigation:"Enforce a documented multi-point inspection and quality-control check before vehicle release."}]},hostel:{slug:"hostel",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$651.7 million",year:2025,source:{label:"Future Market Insights — USA Hostel Market",url:"https://www.futuremarketinsights.com/reports/united-states-hostel-market"}},licenses:[{name:"Lodging / transient accommodation license",note:"Required by state or city for any property renting beds on a nightly basis."},{name:"Fire safety and occupancy certificate",note:"Shared dorms face stricter egress, alarm and occupancy-limit rules than single-occupancy lodging."},{name:"Transient occupancy tax registration",note:"You must register to collect and remit local bed tax on every night sold."},{name:"Health department permit",note:"Applies to shared bathrooms, and to any communal kitchen or included breakfast service."}],kpis:[{label:"Bed occupancy rate",benchmark:"Measured per bed rather than per room, which is the key difference from hotel reporting."},{label:"RevPAB (revenue per available bed)",benchmark:"The hostel equivalent of RevPAR and the number lenders will want."},{label:"Average length of stay",benchmark:"Longer stays cut turnover cleaning cost and OTA commission per night sold."},{label:"Direct booking share",benchmark:"Every point shifted away from OTAs is margin recovered."}],costDrivers:["Property lease or mortgage, the dominant fixed cost","Housekeeping labour, which scales with bed turnover not room count","OTA commissions (Hostelworld, Booking.com)","Utilities across continuously occupied communal space","Bunk, mattress and linen replacement cycles","Security: lockers, key-card access and night staffing"],risks:[{risk:"Occupancy swings hard with tourist seasonality while lease and staffing costs stay flat.",mitigation:"Court off-season segments such as students, travelling workers and long-stay guests with weekly rates."},{risk:"OTA dependence hands a significant share of each booking to a platform you do not control.",mitigation:"Invest in direct booking, repeat-guest incentives and a fast mobile site."},{risk:"Shared dorms create theft, safety and liability exposure among strangers.",mitigation:"Install per-bed lockers and ke
394y-card floor access, and keep staff on site overnight."}]},"flower-shop":{slug:"flower-shop",startupCost:null,annualRevenue:null,netMargin:{low:5,high:15,note:"Perishable stock and demand concentrated in a few holidays squeeze margin outside peak weeks.",source:{label:"Business Reference Guide — Flower Shops / Florists",url:"https://www.bvresources.com/articles/business-reference-guide-online/flower-shops-florists"}},marketSize:{value:"$7.9 billion",year:2026,source:na("florists","1096")},licenses:[{name:"Seller's permit / sales tax license",note:"Required to sell arrangements at retail and remit state sales tax."},{name:"Local business operating license",note:"Standard municipal license for a retail storefront."},{name:"USDA import permit (imported stems)",note:"Applies if you import cut flowers directly rather than buying through a domestic wholesaler."}],kpis:[{label:"Average order value",benchmark:"$50–$80",source:{label:"Business Reference Guide",url:"https://www.bvresources.com/articles/business-reference-guide-online/flower-shops-florists"}},{label:"Inventory spoilage rate",benchmark:"5–10% of stems",source:{label:"Business Reference Guide",url:"https://www.bvresources.com/articles/business-reference-guide-online/flower-shops-florists"}},{label:"Holiday revenue concentration",benchmark:"Valentine's Day and Mother's Day alone drive an outsized share of annual sales."},{label:"Wedding and event booking pipeline",benchmark:"Contracted event work is the main way florists smooth non-holiday months."}],costDrivers:["Perishable stem and greenery inventory written off weekly","Cooler electricity and refrigeration maintenance","Delivery vehicle, fuel and driver time","Surge labour for Valentine's and Mother's Day","Wire service fees and commissions on relayed orders","Online ordering platform and local search advertising"],risks:[{risk:"Unsold stems are worthless within days, so demand forecasting errors convert straight into losses.",mitigation:"Order just-in-time against confirmed events and mark down aging stock into ready-made bouquets."},{risk:"Revenue is concentrated into a handful of holidays, and a single bad Valentine's week can define the year.",mitigation:"Build recurring corporate, hospitality and subscription accounts that buy every week."},{risk:"Wire services and grocery chains capture price-led customers and take a cut of relayed orders.",mitigation:"Push direct local ordering and compete on custom design and same-day delivery reliability."}]},"personal-trainer":{slug:"personal-trainer",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Accredited training certification (NASM, ACE, ACSM)",note:"Not a government license in most states, but gyms, insurers and most clients require an accredited certification.",source:{label:"BLS Occupational Outlook Handbook",url:"https://www.bls.gov/ooh/personal-care-and-service/fitness-trainers-and-instru
394ctors.htm"}},{name:"CPR/AED certification",note:"Required by certifying bodies and liability insurers before you can train clients.",source:{label:"BLS Occupational Outlook Handbook",url:"https://www.bls.gov/ooh/personal-care-and-service/fitness-trainers-and-instructors.htm"}},{name:"Business license and professional liability insurance",note:"A local business license to invoice clients, plus professional liability cover for injury claims."}],kpis:[{label:"Median annual wage, fitness trainers",benchmark:"$46,180 (May 2024)",source:{label:"BLS Occupational Outlook Handbook",url:"https://www.bls.gov/ooh/personal-care-and-service/fitness-trainers-and-instructors.htm"}},{label:"Projected job growth 2023–2033",benchmark:"About 12%, much faster than average",source:{label:"BLS Occupational Outlook Handbook",url:"https://www.bls.gov/ooh/personal-care-and-service/fitness-trainers-and-instructors.htm"}},{label:"Sessions delivered per week",benchmark:"Your hard revenue ceiling in a one-to-one model."},{label:"Client retention past 90 days",benchmark:"Where most attrition happens; drives whether referrals ever compound."}],costDrivers:["Certification and continuing education renewals","Professional liability insurance","Gym floor fees, studio rent or client travel time","Equipment for mobile or in-home training","Scheduling, payment and programming software","Client acquisition through ads and content"],risks:[{risk:"Income is hard-capped by billable hours because revenue is one trainer to one client.",mitigation:"Layer in small-group sessions, online programming and hybrid coaching that decouple income from hours."},{risk:"Clients churn on injury, holidays and motivation dips, making revenue lumpy.",mitigation:"Sell multi-session packages and memberships rather than single sessions, and track progress visibly."},{risk:"A client injury during a session creates direct liability exposure.",mitigation:"Run health screening and PAR-Q intake on every client and carry professional liability insurance."}]},"car-rental":{slug:"car-rental",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"State rental car business endorsement",note:"Several states require a rental-car-specific endorsement on the general business license — Washington is one example.",source:{label:"Washington State Department of Revenue",url:"https://dor.wa.gov/manage-business/state-endorsements/rental-car"}},{name:"Motor vehicle rental registration with the state DMV",note:"Most states register rental fleets separately from private vehicle registration."},{name:"Commercial auto and garagekeepers insurance",note:"Fleet cover meeting state financial responsibility minimums, which are higher for rental use."},{name:"Rental tax / surcharge collection registration",note:"Many states and airports levy a specific rental surcharge you must collect and remit."}],kpis:[{label:"Fleet utilisation rate",benchmark:"Rented days divided by available fleet days — the core efficiency measure."},{label:"Revenue per unit per day (RPD)",benchmark:"Average daily rate actually achieved across the fleet."},{label:"Depreciation per unit per month",benchmark:"Usually the largest single cost line and the one that decides profitability."},{label:"Turnaround time between rentals",benchmark:"Cleaning and inspection time is unrentable fleet time."}],costDrivers:["Fleet acquisition and monthly depreciation","Fleet insurance, materially higher than private cover","Maintenance, cleaning and damage repair between rentals","Location lease, especially airport concession fees","Fleet financing or floor-plan interest","Counter staffing and reservation software"],risks:[{risk:"Used-car residual values move independently of your business and can erase the equity in your fleet.",mitigation:"Hold a disciplined fleet rotation schedule and sell across multiple resale channels rather than one auction."},{risk:"Demand tracks travel cycles closely, so downturns hit while fleet financing costs continue.",mitigation:"Diversify beyond airport and tourist traffic into insurance-replacement, local and long-term rentals."},{risk:"Damage disputes and renter-at-fault accidents create ongoing liability and chargeback friction.",mitigation:"Photograph every vehicle at checkout and return, verify renter insurance, and offer clearly documented damage waivers."}]},"liquor-store":{slug:"liquor-store",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"State off-premise retail liquor license",note:"The single most variable cost in this business. Some states charge a few hundred dollars; in quota-limited markets an existing license can trade for six figures.",source:{label:"California Department of Alcoholic Beverage Control — license fees",url:"https://www.abc.ca.gov/licensing/license-fees/"}},{name:"Seller's permit / sales tax registration",note:"Required to collect and remit sales tax on retail alcohol."},{name:"Local zoning or conditional use permit",note:"Many municipalities restrict alcohol retail near schools, places of worship and residential zones."},{name:"Federal TTB registration (if importing or wholesaling)",note:"Only required if you move beyond straightforward retail sale."}],kpis:[{label:"Gross margin by category",benchmark:"Spirits, wine and beer carry materially different margins — category mix drives blended profitability."},{label:"Inventory turns per year",benchmark:"Alcohol is slow-turning c
394apital; dead stock ties up cash indefinitely."},{label:"Shrinkage rate",benchmark:"Theft and breakage matter disproportionately against thin net margins."},{label:"Basket size",benchmark:"Attachment of mixers, snacks and premium upsells per transaction."}],costDrivers:["Liquor license acquisition, wildly state-dependent","Initial inventory across beer, wine and spirits","Security systems, cameras and loss prevention","Retail lease in a visible, permitted location","State excise taxes and compliance reporting","POS with age-verification and compliance logging"],risks:[{risk:"Licensing rules vary so drastically by state and county that a viable plan in one market is impossible in the next.",mitigation:"Confirm your state and county ABC rules, quota status and license transfer market before signing any lease."},{risk:"A single failed compliance check on age verification can suspend or cost you the license entirely.",mitigation:"Train every employee on ID checks, scan IDs electronically, and keep documented compliance records."},{risk:"States progressively allowing grocery and big-box wine and spirits sales erode the category monopoly.",mitigation:"Build defensible selection depth, staff product knowledge and tastings that chains cannot match."}]},"recording-studio":{slug:"recording-studio",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Business license and entity registration",note:"Standard local permit to operate a commercial facility and invoice clients."},{name:"Zoning approval and noise ordinance compliance",note:"Commercial audio facilities near residential zones frequently need specific zoning sign-off on sound isolation."},{name:"PRO / mechanical licensing (if releasing recordings)",note:"Only applies if the studio itself produces or distributes original recordings rather than selling time."},{name:"Certificate of occupancy after build-out",note:"Acoustic construction usually changes the space enough to require re-inspection."}],kpis:[{label:"Booked hours per month",benchmark:"Utilisation of the room is the entire business model."},{label:"Revenue mix: room hire vs engineering",benchmark:"Engineering and production services carry higher margin than bare room rental."},{label:"Repeat client share",benchmark:"Studios live on a small number of returning artists, labels and producers."},{label:"Equipment refresh cost per year",benchmark:"Deferring this quietly makes the room uncompetitive."}],costDrivers:["Acoustic treatment, isolation and structural build-out","Console, converters, microphones and monitoring","DAW licences and plugin subscriptions","Rent on a space with adequate ceiling height and isolation","Staff or contract engineers per session","Ongoing maintenance and equipment refresh"],risks:[{risk:"Capable home studios and cheap production software have permanently reduced demand for basic tracking time.",mitigation:"Sell what a bedroom cannot reproduce — a large live room, high-end signal chain, and experienced engineering."},{risk:"Bookings are lumpy and project-driven while rent and equipment finance are fixed monthly.",mitigation:"Add podcast production, voiceover, mixing, mastering and content-shoot rental to fill the calendar."},{risk:"Heavy up-front capital sunk into a specific space makes relocation very expensive.",mitigation:"Negotiate long lease terms with renewal options before investing in permanent acoustic construction."}]},"juice-bar":{slug:"juice-bar",startupCost:null,annualRevenue:null,netMargin:null,marketSize:null,licenses:[{name:"Local food service establishment permit",note:"Required from the city or county health department before serving prepared beverages."},{name:"Food handler / manager certification",note:"Staff must hold a state-recognised food safety certificate."},{name:"HACCP plan for cold-pressed juice",note:"Unpasteurised juice sold beyond the premises falls under FDA juice HACCP rules and warning-label requirements."},{name:"Commercial kitchen or commissary approval",note:"Needed if you press off-site or wholesale bottled juice to other retailers."}],kpis:[{label:"Produce cost as a share of revenue",benchmark:"Cold-pressing consumes several pounds of produce per bottle, so COGS runs high for a beverage business."},{label:"Waste and spoilage rate",benchmark:"Unsold fresh produce and pressed juice both expire within days."},{label:"Average ticket and attachment rate",benchmark:"Add-on boosters, shots and food items are where margin is recovered."},{label:"Peak-hour throughput",benchmark:"Morning and post-gym rushes concentrate most daily transactions into narrow windows."}],costDrivers:["Fresh produce, with high yield loss in cold pressing","Cold-press and blending equipment plus maintenance","Retail lease in high-foot-traffic wellness-oriented locations","Refrigeration and cold-storage electricity","Bottles, cups and compostable packaging","Part-time staffing scheduled around narrow peak windows"],risks:[{risk:"Produce spoilage is severe because both raw inputs and finished juice have very short shelf lives.",mitigation:"Run tight par levels, log daily waste, and convert aging produce into blended or bottled specials."},{risk:"Cold-weather months see a sharp fall in demand for cold beverages.",mitigation:"Add soups, hot functional drinks, açaí bowls and subscription cleanses to hold winter revenue."},{risk:"Very low barriers to entry mean cafes, gyms and grocery chains can add a juice line at any time.",mitigation:"Differentiate on genuine cold-press quality, sourcing transparency and gym or studio partnerships."}]},"coffee-cart":{slug:"coffee-cart",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$49.5 billion (branded coffee shop market, the adjacent category)",year:2023,source:{label:"World Coffee Portal — Project Café USA 2024",url:"https://www.worldcoffeeportal.com/news/buoyant-us-branded-coffee-shop-market-exceeds-40-000-outlets-for-the-first-time/"}}
394,licenses:[{name:"Mobile food vendor permit",note:"A health department permit specific to cart and kiosk-based food and beverage vending."},{name:"Food handler certification",note:"Required for the operator and any staff preparing drinks."},{name:"Commissary agreement",note:"Many jurisdictions require mobile vendors to prep and clean at an approved fixed commissary kitchen."},{name:"Site or vending zone permit",note:"Street vending zones, farmers markets and private property each need their own permission."}],kpis:[{label:"Transactions per hour at peak",benchmark:"A cart lives or dies on morning rush throughput."},{label:"Revenue per pitch or event",benchmark:"Lets you rank locations and drop the ones that do not clear their site fee."},{label:"Cost per cup (beans plus milk plus cup)",benchmark:"Small absolute numbers, but they set the margin on every sale."},{label:"Share of revenue from booked events",benchmark:"Contracted catering is the predictable half of a cart's income."}],costDrivers:["Espresso machine, grinder and cart build","Coffee beans, dairy and milk alternatives","Pitch fees, market stall rent or event site fees","Power source (generator or battery) and water supply","Cups, lids and consumables","Permits, commissary fees and health inspections"],risks:[{risk:"Revenue depends almost entirely on foot traffic and weather at a specific spot on a specific day.",mitigation:"Build a rotation of proven pitches and layer in booked corporate and wedding catering for guaranteed income."},{risk:"Municipal vending rules can eliminate your best location with no notice.",mitigation:"Secure written agreements with private property owners rather than relying only on public vending zones."},{risk:"Limited storage and a single grouphead cap how much you can sell in the rush that matters.",mitigation:"Keep the menu tight, pre-batch where quality allows, and consider a second grinder before a second cart."}]},hotel:{slug:"hotel",startupCost:{low:8e6,high:2e7,note:"Based on per-key development cost for an 80–150 room limited-service property; conversions cost materially less than ground-up builds.",source:{label:"HVS US Hotel Development Cost Survey",url:"https://www.hvs.com/article/9999-HVS-US-Hotel-Development-Cost-Survey-2024"}},annualRevenue:null,netMargin:null,marketSize:{value:"$758.6 billion in US hotel guest spending",year:2024,source:{label:"Oxford Economics / STR for AHLA",url:"https://www.ahla.com/sites/default/files/Oxford.STR_.Guest_.Spending.pdf"}},licenses:[{name:"State lodging establishment license",note:"Required to operate transient accommodation, with periodic health and safety inspection."},{name:"Transient occupancy tax registration",note:"Hotels must register to collect and remit local bed tax on room revenue."},{name:"Fire safety certificate and certificate of occupancy",note:"Covers alarms, sprinklers, egress and posted occupancy limits."},{name:"Food service and liquor licenses",note:"Needed separately if you operate a restaurant, bar or breakfast service."}],kpis:[{label:"Average Daily Rate (ADR)",benchmark:"About $156.67 (US average)",source:{label:"CoStar / STR US Hotel Commentary",url:"https://www.costar.com/products/str-benchmark/resources/data-insights-blog/us-hotel-commentary-december-2024"}},{label:"RevPAR",benchmark:"About $83.30 (US average)",source:{label:"CoStar / STR US Hotel Commentary",url:"https://www.costar.com/products/str-benchmark/resources/data-insights-blog/us-hotel-commentary-december-2024"}},{label:"Occupancy rate",benchmark:"Roughly 53–63% depending on month",source:{label:"CoStar / STR US Hotel Commentary",url:"https://www.costar.com/products/str-benchmark/resources/data-insights-blog/us-hotel-commentary-december-2024"}},{label:"GOPPAR",benchmark:"Gross operating profit per available room — what lenders use to test debt service."}],costDrivers:["Development or acquisition cost per key","Franchise fees, brand standards and reservation system charges","Housekeeping and front-desk labour","Utilities across a large continuously operating property","Property insurance and real estate taxes","FF&E reserve for periodic mandated renovation"],risks:[{risk:"ADR and occupancy track the wider travel economy, while debt service on the property does not move at all.",mitigation:"Underwrite conservatively against trough RevPAR and hold reserves sized to a multi-quarter downtur
394n."},{risk:"Franchise agreements lock in fees and mandate costly property improvement plans on the brand's schedule.",mitigation:"Model franchise versus independent economics across the full agreement term before signing."},{risk:"OTA commissions and brand fees together take a substantial share of every room night sold.",mitigation:"Build direct booking share and negotiate group and corporate contracts that bypass OTA channels."}]},"poultry-farm":{slug:"poultry-farm",startupCost:null,annualRevenue:null,netMargin:null,marketSize:{value:"$70.2 billion in total US poultry sector sales",year:2024,source:{label:"USDA Economic Research Service — Poultry & Eggs Sector at a Glance",url:"https://www.ers.usda.gov/topics/animal-products/poultry-eggs/sector-at-a-glance"}},licenses:[{name:"Integrator grower contract",note:"Most US broiler production runs under contract with an integrator that supplies the birds and feed; contract terms are subject to USDA oversight.",source:{label:"USDA ERS — Fees paid to growers for raising broiler chickens",url:"https://ers.usda.gov/data-products/charts-of-note/chart-detail?chartId=104642"}},{name:"State animal waste management permit",note:"Operations above state size thresholds need a nutrient or manure management permit from the state environmental agency.",source:{label:"USDA ERS — Broiler Farms' Organization, Management, and Performance",url:"https://www.ers.usda.gov/sites/default/files/_laserfiche/publications/42203/13402_aib748a_1_.pdf"}},{name:"NPDES permit for large CAFOs",note:"Concentrated animal feeding operations above federal thresholds require a Clean Water Act discharge permit."},{name:"Egg handler / grader license (layer operations)",note:"Required by most states to grade, pack and sell shell eggs."}],kpis:[{label:"Total US poultry sector sales",benchmark:"$70.2 billion (2024)",source:{label:"USDA Economic Research Service",url:"https://www.ers.usda.gov/topics/animal-products/poultry-eggs/sector-at-a-glance"}},{label:"Feed conversion ratio (FCR)",benchmark:"Pounds of feed per pound of live weight — the central efficiency metric in broiler production."},{label:"Livability to market age",benchmark:"Share of placed chicks reaching market; small changes move grower settlement materially."},{label:"Average daily gain",benchmark:"Determines how many flocks per house per year you can run."}],costDrivers:["Feed, dominated by corn and soybean meal prices","Broiler house or layer barn construction and debt service","Energy for ventilation, heating and lighting","Chick or point-of-lay pullet replacement","Litter management, disposal and compliance","Mandated house upgrades required by the integrator"],risks:[{risk:"Highly pathogenic avian influenza can require depopulation of an entire flock with little warning.",mitigation:"Run strict biosecurity — controlled access, dedicated footwear, wild bird exclusion — and carry poultry disease insurance where available."},{risk:"Contract growers carry long-term barn debt while the integrator controls bird placement and settlement pay.",mitigation:"Model debt service against the integrator's lowest historical placement schedule, not the average, before building."},{risk:"Feed commodity swings compress margins on independent operations with no integrator buffer.",mitigation:"Use forward purchasing or hedging on corn and soybean meal where scale allows."}]}},Jz=(e,t)=>{if(!t)return e;const n=(a,r)=>r?a.map((s,i)=>({...s,...r[i]??{}})):a;return{...e,startupCost:e.startupCost&&t.startupCostNote?{...e.startupCost,note:t.startupCostNote}:e.startupCost,annualRevenue:e.annualRevenue&&t.annualRevenueNote?{...e.annualRevenue,note:t.annualRevenueNote}:e.annualRevenue,netMargin:e.netMargin&&t.netMarginNote?{...e.netMargin,note:t.netMarginNote}:e.netMargin,marketSize:e.marketSize&&t.marketSizeValue?{...e.marketSize,value:t.marketSizeValue}:e.marketSize,licenses:n(e.licenses,t.licenses),kpis:n(e.kpis,t.kpis),costDrivers:t.costDrivers??e.costDrivers,risks:n(e.risks,t.risks)}},Qz=(e,t)=>
394{const n=e?Yz[e]:void 0;if(!n||!e)return n;const a=t&&t in Wv?Wv[t][e]:void 0;return Jz(n,a)},Xz={en:"en-US",es:"es-ES",fr:"fr-FR",pt:"pt-PT"},Zz=e=>Xz[(e??"en").slice(0,2).toLowerCase()]??"en-US",eB=(e,t)=>{if(e>=1e6)return`$${(e/1e6).toFixed(e%1e6===0?0:1)}M`;try{return`$${e.toLocaleString(t)}`}catch{return`$${e.toLocaleString("en-US")}`}},Qp=({label:e,url:t})=>l.jsxs("a",{href:t,target:"_blank",rel:"nofollow noopener",className:"inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-primary underline underline-offset-2",children:[e,l.jsx(cE,{className:"w-3 h-3"})]}),rl=({icon:e,label:t,value:n,note:a,source:r})=>l.jsxs("div",{className:"p-5 bg-card border rounded-xl flex flex-col gap-2",children:[l.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[l.jsx(e,{className:"w-4 h-4 text-primary"}),t]}),l.jsx("div",{className:"text-2xl font-bold",children:n}),a&&l.jsx("p",{className:"text-sm text-muted-foreground",children:a}),l.jsx(Qp,{...r})]}),tB=({industry:e,insight:t})=>{const{t:n,i18n:a}=ft(),r=(x,b)=>n(`industryInsights.${x}`,b),s=Zz(a.language),i=x=>eB(x,s),{startupCost:o,annualRevenue:c,netMargin:u,marketSize:d,licenses:p,kpis:h,costDrivers:m,risks:w}=t,f=o||c||u||d;return l.jsxs("div",{className:"space-y-12",children:[f&&l.jsxs("section",{id:"industry-benchmarks",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-2",children:r("benchmarksHeading",{industry:e.name})}),l.jsx("p",{className:"text-muted-foreground mb-6",children:r("benchmarksIntro")}),l.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[o&&l.jsx(rl,{icon:rE,label:r("startupCost"),value:`${i(o.low)} – ${i(o.high)}`,note:o.note,source:o.source}),c&&l.jsx(rl,{icon:Ji,label:r("annualRevenue"),value:`${i(c.low)} – ${i(c.high)}`,note:c.note,source:c.source}),u&&l.jsx(rl,{icon:fE,label:r("netMargin"),value:`${u.low}% – ${u.high}%`,note:u.note,source:u.source}),d&&l.jsx(rl,{icon:lE,label:r("marketSize",{year:d.year}),value:d.value,source:d.source})]})]}),p.length>0&&l.jsxs("section",{id:"licenses-permits",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-2",children:r("licensesHeading",{industry:e.name})}),l.jsx("p",{className:"text-muted-foreground mb-6",children:r("licensesIntro")}),l.jsx("div",{className:"space-y-3",children:p.map(x=>l.jsxs("div",{className:"flex gap-3 p-4 bg-card border rounded-xl",children:[l.jsx(wE,{className:"w-5 h-5 text-primary flex-shrink-0 mt-0.5"}),l.jsxs("div",{children:[l.jsx("h3",{className:"font-semibold",children:x.name}),l.jsx("p",{className:"text-sm text-muted-foreground mb-1",children:x.note}),x.source&&l.jsx(Qp,{...x.source})]})]},x.name))})]}),h.length>0&&l.jsxs("section",{id:"key-metrics",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-2",children:r("metricsHeading",{industry:e.name})}),l.jsx("p",{className:"text-muted-foreground mb-6",children:r("metricsIntro")}),l.jsx("div",{className:"overflow-x-auto",children:l.jsxs("table",{className:"w-full text-left border rounded-xl overflow-hidden",children:[l.jsx("thead",{className:"bg-muted/50",children:l.jsxs("tr",{children:[l.jsx("th",{className:"p-4 font-semibold",children:r("colMetric")}),l.jsx("th",{className:"p-4 font-semibold",children:r("colBenchmark")}),l.jsx("th",{className:"p-4 font-semibold",children:r("colSource")})]})}),l.jsx("tbody",{children:h.map(x=>l.jsxs("tr",{className:"border-t",children:[l.jsxs("td",{className:"p-4 flex items-center gap-2",children:[l.jsx(uE,{className:"w-4 h-4 text-primary flex-shrink-0"}),x.label]}),l.jsx("td",{className:"p-4 font-medium",children:x.benchmark}),l.jsx("td",{className:"p-4",children:x.source?l.jsx(Qp,{...x.source}):l.jsx("span",{className:"text-muted-foreground/60 text-sm",children:"—"})})]},x.label))})]})})]}),m.length>0&&l.jsxs("section",{id:"cost-drivers",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-2",children:r("costHeading",{industry:e.name})}),l.jsx("div",{className:"grid sm:grid-cols-2 gap-3 mt-6",children:m.map(x=>l.jsxs("div",{className:"flex gap-3 p-4 bg-card border rounded-xl",children:[l.jsx(gE,{className:"w-5 h-5 text-primary flex-shrink-0 mt-0.5"}),l.jsx("span",{children:x})]},x))})]}),w.length>0&&l.jsxs("section",{id:"risks",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-2",children:r("risksHeading",{industry:e.name})}),l.jsx("p",{className:"text-muted-foreground mb-6",children:r("risksIntro")}),l.jsx("div",{className:"space-y-3",children:w.map(x=>l.jsxs("div",{className:"p-5 bg-card border rounded-xl",children:[l.jsxs("div",{className:"flex gap-3 mb-2",children:[l.jsx(ux,{className:"w-5 h-5 text-primary flex-shrink-0 mt-0.5"}),l.jsx("h3",{className:"font-semibold",children:x.risk})]}),l.jsxs("p",{className:"text-sm text-muted-foreground pl-8",children:[l.jsx("span",{className:"font-medium text-foreground",children:r("mitigation")}),x.mitigation]})]},x.risk))})]})]})},nB={"executive-summary":eh,"company-description":iE,"market-research":Ji,"swot-analysis":ax,"competitive-analysis":Xm,"products-services":hE,"marketing-strategy":pE,"operational-plan":bE,"organization-management":th,"financial-projections":rx,"funding-request":sE,"risk-analysis":ux},Vv={"barber-shop":{title:"Barber Shop Business Plan Template (Free PDF + Example) 2026",description:"Barber shop business plan with real startup costs, chair-rent vs employee models, 3-year projections and 
394SWOT — lender-ready. Free example PDF, or generate yours in minutes."},pharmacy:{title:"Pharmacy Business Plan Template & Example (Free PDF, 2026)",description:"Pharmacy business plan with inventory and reimbursement economics, licensing checklist, 3-year financials and SWOT — ready for a bank or SBA file. Free example included."},"goat-farm":{title:"Goat Farming Business Plan: Free Template, Example & PDF (2026)",description:"Goat farming business plan with herd build-up, feed costs, kidding cycles and 3-year cash flow — the numbers a lender checks. Free example PDF or generate your own."},"poultry-farm":{title:"Poultry Farm Business Plan Template (Free PDF + Example) 2026",description:"Poultry farm business plan with broiler/layer economics, feed conversion, housing capex and 3-year projections lenders can underwrite. Free example PDF or build yours now."},hostel:{title:"Hostel Business Plan Template & Example (Free PDF, 2026)",description:"Hostel business plan with occupancy, bed-night revenue, fit-out costs and 3-year cash flow — structured for lenders and investors. Free example PDF or generate your own."},"car-wash":{title:"Car Wash Business Plan Template (Free PDF + Example) 2026",description:"Car wash business plan with site and equipment capex, revenue per bay, labour model and 3-year projections for an SBA or bank file. Free example PDF or generate yours."},"coffee-shop":{title:"Coffee Shop Business Plan Template & Example (Free PDF, 2026)",description:"Coffee shop business plan with build-out costs, cup economics, staffing and 3-year cash flow a lender will actually read. Free example PDF or generate a custom plan."},"food-truck":{title:"Food Truck Business Plan Template (Free PDF + Example) 2026",description:"Food truck business plan with truck and permit costs, service-day revenue model, break-even and 3-year projections. Free example PDF or generate a lender-ready plan."},"liquor-store":{title:"Liquor Store Business Plan Template & Example (Free PDF, 2026)",description:"Liquor store business plan with licence costs, inventory investment, margin mix and 3-year projections for a bank or SBA file. Free example PDF or generate yours in minutes."},"travel-agency":{title:"Travel Agency Business Plan Template (Free PDF + Example) 2026",description:"Travel agency business plan with commission and booking-fee models, startup costs, marketing plan and 3-year financials. Free example PDF or generate a custom plan."},"cleaning-company":{title:"Cleaning Business Plan Template & Example (Free PDF, 2026)",description:"Cleaning company business plan with equipment and insurance costs, per-job pricing, crew scheduling and 3-year projections. Free example PDF or generate a lender-ready plan."},"event-management":{title:"Event Management Business Plan Template (Free PDF + Example)",description:"Event management business plan with per-event margins, staffing, deposit cash-flow timing and 3-year projections. Free example PDF or generate your own in minutes."},"dump-truck":{title:"Dump Truck Business Plan Template & Example (Free PDF, 2026)",description:"Dump truck business plan with truck financing, cost per loaded mile, hauling contracts and 3-year cash flow lenders can underwrite. Free example PDF or generate yours."},trucking:{title:"Trucking Business Plan Template (Free PDF + Example) 2026",description:"Trucking business plan with authority and insurance costs, cost per mile, lane mix and 3-year projections for an equipment or SBA loan. Free example PDF or generate yours."},bakery:{title:"Bakery Business Plan Template & Example (Free PDF, 2026)",description:"Bakery business plan with equipment capex, ingredient costing, wholesale vs retail mix and 3-year cash flow. Free example PDF or generate a lender-ready plan in minutes."},restaurant:{title:"Restaurant Business Plan Template (Free PDF + Example) 2026",description:"Restaurant business plan with build-out costs, prime-cost model, covers-per-day revenue build and 3-year projections lenders check. Free example PDF or generate yours."},daycare:{title:"Daycare Business Plan Template & Example (Free PDF, 2026)",description:"Daycare business plan with licensing, ratio-driven staffing costs, enrollment ramp and 3-year projections for a bank or SBA file. Free example PDF or generate your own."},gym:{title:"Gym Business Plan Template (Free PDF + Example) 2026",description:"Gym business plan with equipment and fit-out capex, membership retention model, break-even and 3-year cash flow. Free example PDF or generate a lender-ready plan."},"grocery-store":{title:"Grocery Store Business Plan Template & Example (Free PDF)",description:"Grocery store business plan with fixtures and inventory investment, basket size, category margins and 3-year projections. Free example PDF or generate a custom plan."},laundromat:{title:"Laundromat Business Plan Template (Free PDF + Example) 2026",description:"Laundromat business plan with machine capex, turns per day, utility costs and 3-year cash flow an SBA lender can underwrite. Free example PDF or generate yours."}
394,"hair-salon":{title:"Hair Salon Business Plan Template & Example (Free PDF, 2026)",description:"Hair salon business plan with fit-out costs, stylist commission vs booth rent, service mix and 3-year projections. Free example PDF or generate a lender-ready plan."},catering:{title:"Catering Business Plan Template (Free PDF + Example) 2026",description:"Catering business plan with kitchen and equipment costs, per-head pricing, event pipeline and 3-year cash flow. Free example PDF or generate a custom plan in minutes."},"real-estate-development":{title:"Real Estate Development Business Plan Template & Example (PDF)",description:"Real estate development business plan with project budget, draw schedule, exit assumptions and 3-year cash flow for lenders and equity partners. Free example PDF included."}},Hv=()=>{var P,E;const e={es:{title:S=>`Plan de Negocios para ${S}: Plantilla y Ejemplo PDF Gratis`,desc:S=>`Plantilla gratuita de plan de negocios para ${S.toLowerCase()} en PDF: proyecciones financieras a 3 años, costes de apertura, análisis de mercado y DAFO. Descarga el ejemplo o genera el tuyo en minutos.`},fr:{title:S=>`Business Plan ${S} : Modèle et Exemple PDF Gratuit`,desc:S=>`Modèle gratuit de business plan pour ${S.toLowerCase()} en PDF : prévisions financières sur 3 ans, coûts de démarrage, étude de marché et analyse SWOT. Téléchargez l'exemple ou créez le vôtre en quelques minutes.`},de:{title:S=>`Businessplan ${S}: Vorlage und Beispiel | BizPlanner AI`,desc:S=>`Kostenlose Businessplan-Vorlage für ${S.toLowerCase()} mit Finanzplanung, Marktanalyse und SWOT. Erstellen Sie Ihren individuellen Plan in wenigen Minuten.`},pt:{title:S=>`Plano de Negócios para ${S}: Modelo e Exemplo em PDF Grátis`,desc:S=>`Modelo gratuito de plano de negócios para ${S.toLowerCase()} em PDF: projeções financeiras de 3 anos, custos iniciais, análise de mercado e SWOT. Baixe o exemplo ou gere o seu em minutos.`},ko:{title:S=>`${S} 사업계획서 템플릿 및 예시 | BizPlanner AI`,desc:S=>`${S} 사업계획서 무료 템플릿 — 재무 예측, 시장 분석, SWOT 포함. 몇 분 만에 맞춤형 사업계획서를 생성하세요.`},ja:{title:S=>`${S}の事業計画書テンプレート・サンプル | BizPlanner AI`,desc:S=>`${S}向けの無料事業計画書テンプレート。財務予測、市場分析、SWOT分析付き。数分でカスタマイズされた計画書を作成できます。`}},{t}=ft(),{slug:n}=Ks(),a=n?qz(n):void 0,r=tu(`/templates/${n??""}`),i=eu().replace("/",""),[o,c]=v.useState(!1),[u,d]=v.useState("executive-summary"),p=v.useMemo(()=>a?Kz(a):[],[a]),h=Qz(n,i);v.useEffect(()=>{window.scrollTo(0,0)},[n]);const m=async()=>{if(a){c(!0);try{const{jsPDF:S}=await V(async()=>{const{jsPDF:M}=await import("./jspdf.es.min-BwPd3Nws.js").then(C=>C.j);return{jsPDF:M}},[]),A=new S,T=A.internal.pageSize.getWidth(),j=A.internal.pageSize.getHeight(),D=20,z=T-D*2;let _=20;const N=M=>_+M>j-30?(A.addPage(),_=20,!0):!1,$=(M,C,I)=>{const q=A.splitTextToSize(M,I);for(let W=0;W<q.length;W++)_>j-20&&(A.addPage(),_=20),A.text(q[W],C,_),_+=5};A.setFillColor(0,102,204),A.rect(0,0,T,60,"F"),A.setFontSize(28),A.setFont("helvetica","bold"),A.setTextColor(255),A.text(`${a.name}`,D,35),A.setFontSize(18),A.text("Business Plan",D,48),_=80,A.setTextColor(100),A.setFontSize(12),A.setFont("helvetica","normal"),A.text("Sample Template",D,_),_+=8,A.text(`Category: ${a.category}`,D,_),_+=8,A.text(`Generated: ${new Date().toLocaleDateString()}`,D,_),_+=20,A.setFontSize(16),A.setFont("helvetica","bold"),A.setTextColor(0),A.text("Table of Contents",D,_),_+=12,A.setFontSize(11),A.setFont("helvetica","normal"),p.forEach((M,C)=>{A.setTextColor(0,102,204),A.text(`${C+1}. ${M.title}`,D+5,_),_+=7}),p.forEach((M,C)=>{var I;A.addPage(),_=20,A.setFontSize(16),A.setFont("helvetica","bold"),A.setTextColor(0,102,204),A.text(`${C+1}. ${M.title}`,D,_),_+=10,A.setFontSize(10),A.setFont("helvetica","normal"),A.setTextColor(60),$(M.content,D,z),_+=8,(I=M.subsections)==null||I.forEach(q=>{N(30),A.setFontSize(12),A.setFont("helvetica","bold"),A.setTextColor(40),A.text(q.title,D,_),_+=7,A.setFontSize(10),A.setFont("helvetica","normal"),A.setTextColor(60),q.content&&($(q.content,D,z),_+=3),q.bullets&&q.bullets.length>
3940&&q.bullets.forEach(W=>{N(8),A.text(`• ${W}`,D+5,_),_+=5}),_+=5})}),A.addPage(),_=60,A.setFillColor(0,102,204),A.rect(D,_-20,z,80,"F"),A.setFontSize(20),A.setFont("helvetica","bold"),A.setTextColor(255),A.text("Ready to Create Your Personalized Plan?",D+10,_+10),A.setFontSize(12),A.setFont("helvetica","normal"),A.text("This is a sample template. Get your customized",D+10,_+30),A.text(`${a.name} business plan with AI-powered insights.`,D+10,_+42);const F=A.getNumberOfPages();for(let M=1;M<=F;M++)A.setPage(M),A.setFontSize(9),A.setTextColor(150),A.text(`Page ${M} of ${F}`,T-D-20,j-10),A.text("BizPlanner.ai - AI-Powered Business Plans",D,j-10);A.save(`${a.slug}-business-plan-sample.pdf`),ug.success("Sample PDF downloaded!")}catch(S){console.error("PDF generation error:",S),ug.error("Failed to generate PDF. Please try again.")}finally{c(!1)}}};if(!a)return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsx(kr,{}),l.jsxs("div",{className:"pt-32 pb-16 px-4 text-center",children:[l.jsx("h1",{className:"text-3xl font-bold mb-4",children:t("landing.templatePage.notFound")}),l.jsx("p",{className:"text-muted-foreground mb-8",children:t("landing.templatePage.notFoundDesc")}),l.jsx(ee,{to:"/templates",children:l.jsx(be,{children:t("landing.templatePage.viewAll")})})]}),l.jsx(Sr,{})]});const w=ba.filter(S=>S.category===a.category&&S.slug!==a.slug).slice(0,3),f=[{icon:eh,title:"Executive Summary"},{icon:Ji,title:"Market Analysis"},{icon:th,title:"Target Audience"},{icon:Xm,title:"Competitive Analysis"},{icon:ax,title:"SWOT Analysis"},{icon:rx,title:"Financial Projections"},{icon:yE,title:"Legal & Compliance"},{icon:kn,title:"Operations Plan"}],x=S=>{d(S);const A=document.getElementById(S);A&&A.scrollIntoView({behavior:"smooth",block:"start"})},b=e[i],g=hS(a.slug,i,a.name),y=b?b.title(g):((P=Vv[a.slug])==null?void 0:P.title)??`${a.name} Business Plan: Free Template, Example & PDF (2026)`,k=b?b.desc(g):((E=Vv[a.slug])==null?void 0:E.description)??`Free ${a.name.toLowerCase()} business plan with a ready-to-use template, worked example, 3-year financial projections, market analysis and SWOT. Download the PDF or generate yours in minutes.`;return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsxs(Gn,{children:[l.jsx("title",{children:y}),l.jsx("meta",{name:"description",content:k}),l.jsx("link",{rel:"canonical",href:r}),l.jsx("meta",{property:"og:title",content:y}),l.jsx("meta",{property:"og:description",content:k}),l.jsx("meta",{property:"og:url",content:r}),l.jsx("meta",{property:"og:type",content:"article"})]}),l.jsx(kr,{}),l.jsx("section",{className:"pt-32 pb-16 px-4 bg-gradient-to-b from-primary/5 to-background",children:l.jsx("div",{className:"max-w-6xl mx-auto",children:l.jsxs("div",{className:"flex flex-col lg:flex-row gap-12 items-center",children:[l.jsxs("div",{className:"flex-1",children:[l.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-primary/10 rounded-full text-primary text-sm font-medium mb-6",children:[l.jsx(kn,{className:"w-4 h-4"}),l.jsx("span",{children:a.category})]}),l.jsxs("h1",{className:"text-4xl md:text-5xl font-bold font-display mb-6",children:[g," ",l.jsx("span",{className:"text-primary",children:t("landing.templatePage.businessPlan")})]}),l.jsx("p",{className:"text-xl text-muted-foreground mb-8",children:a.description}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"w-full sm:w-auto text-lg px-8",children:[t("landing.templatePage.createYourPlan",{name:g})," ",l.jsx(Ls,{className:"ml-2 w-5 h-5"})]})}),l.jsxs(be,{size:"lg",variant:"outline",className:"w-full sm:w-auto text-lg px-8",onClick:m,disabled:o,children:[o?l.jsx(ix,{className:"mr-2 w-5 h-5 animate-spin"}):l.jsx(ig,{className:"mr-2 w-5 h-5"}),t(o?"landing.templatePage.generating":"landing.templatePage.downloadSample")]})]})]}),l.jsx("div",{className:"flex-1 max-w-md",children:l.jsxs("div",{className:"bg-card border rounded-2xl p-8 shadow-xl",children:[l.jsx("h3",{className:"text-lg font-semibold mb-6",children:t("landing.templatePage.whatsIncluded")}),l.jsxs("ul",{className:"space-y-4",children:[f.slice(0,6).map((S,A)=>l.jsxs("li",{className:"flex items-center gap-3",children:[l.jsx(sg,{className:"w-5 h-5 text-primary flex-shrink-0"}),l.jsx("span",{children:S.title})]},A)),l.jsx("li",{className:"text-muted-foreground text-sm",children:t("landing.templatePage.moreSections",{count:p.length-6})})]})]})})]})})}),l.jsx("section",{className:"py-8 px-4 border-b bg-background sticky top-16 z-40",children:l.jsx("div",{className:"max-w-6xl mx-auto",children:l.jsxs("div",{className:"flex items-center gap-2 overflow-x-auto pb-2 scrollbar-hide",children:[l.jsx("span",{className:"text-sm font-medium text-muted-foreground whitespace-nowrap",children:t("landing.templatePage.jumpTo")}),p.map(S=>l.jsx("button",{onClick:()=>x(S.id),className:`px-3 py-1.5 text-sm rounded-full whitespace-nowrap transition-colors ${u===S.id?"bg-primary text-primary-foreground":"bg-background border hover:bg-muted"}`,children:S.title},S.id))]})})}),l.jsx("section",{className:"py-16 px-4",children:l.jsxs("div",{className:"max-w-4xl mx-auto",children:[h&&l.jsx("div",{className:"mb-20",children:l.jsx(tB,{industry:a,insight:h})}),l.jsx("h2",{className:"text-3xl font-bold font-display text-center mb-4",children:t("landing.templatePage.planTemplate",{name:g})}),l.jsx("p",{className:"text-lg text-muted-foreground text-center mb-12 max-w-2xl mx-auto",children:t("landing.templatePage.reviewSubtitle")}),l.jsx("div",{className:"space-y-12",children:p.map((S,A)=>{const T=nB[S.id]||kn;return l.jsxs("article",{id:S.id,className:"scroll-mt-32 bg-card border rounded-2xl p-8 shadow-sm",children:[l.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[l.jsx("div",{className:"w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center flex-shrink-0",children:l.jsx(T,{className:"w-6 h-6 text-primary"})}),l.jsxs("div",{children:[l.jsx("span",{className:"text-sm text-muted-foreground",children:t("landing.templatePage.section",{num:A+1})}),l.jsx("h3",{className:"text-2xl font-bold font-display",children:S.title})]})]}),l.jsx("p",{className:"text-muted-foreground mb-6 leading-relaxed",children:S.content}),S.subsections&&S.subsections.length>0&&l.jsx("div",{className:"space-y-6 mt-8",children:S.subsections.map((j,D)=>l.jsxs("div",{className:"pl-4 border-l-2 border-primary/20",children:[l.jsx("h4",{className:"font-semibold text-lg mb-2",children:j.title}),j.content&&l.jsx("p",{className:"text-muted-foreground text-sm mb-3",children:j.content}),j.bullets&&j.bullets.length>0&&l.jsx("ul",{className:"space-y-2",children:j.bullets.map((z,_)=>l.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[l.jsx(sg,{className:"w-4 h-4 text-primary mt-0.5 flex-shrink-0"}),l.jsx("span",{children:z})]},_))})]},D))})]},S.id)})})]})}),l.jsx("section",{className:"py-16 px-4 bg-primary text-primary-foreground",children:l.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[l.jsx("h2",{className:"text-3xl md:text-4xl font-bold font-display mb-4",children:t("landing.templatePage.readyToStart",{name:g})}),l.jsx("p",{className:"text-lg opacity-90 mb-8",children:t("landing.templatePage.readyCta")}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",variant:"secondary",className:"text-lg px-8",children:[t("landing.templatePage.getStartedFree")," ",l.jsx(ot,{className:"ml-2 w-5 h-5"})]})}),l.jsxs(be,{size:"lg",variant:"outline",className:"text-lg px-8 bg-transparent border-white/30 hover:bg-white/10",onClick:m,disabled:o,children:[l.jsx(ig,{className:"mr-2 w-5 h-5"}),t("landing.templatePage.downloadSample")]})]})]})}),w.length>0&&l.jsx("section",{className:"py-16 px-4",children:l.jsxs("div",{className:"max-w-6xl mx-auto",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-8",children:t("landing.templatePage.relatedTemplates",{category:a.category})}),l.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:w.map(S=>l.jsxs(ee,{to:`/templates/${S.slug}`,className:"group p-6 bg-card border rounded-xl hover:border-primary hover:shadow-lg transition-all",children:[l.jsxs("div",{className:"flex items-start justify-between mb-4",children:[l.jsx("div",{className:"w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center",children:l.jsx(kn,{className:"w-6 h-6 text-primary"})}),l.jsx(ot,{className:"w-5 h-5 text-muted-foreground group-hover:text-primary group-hover:translate-x-1 transition-all"})]}),l.jsxs("h3",{className:"text-lg font-semibold font-display mb-2 group-hover:text-primary transition-colors",children:[S.name," ",t("landing.templatePage.businessPlan")]}),l.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:S.description})]},S.slug))})]})}),l.jsx(Sr,{})]})},nu=[{slug:"visa-business-plan-launch",title:"Introducing Visa Business Plans — AI-Powered Plans Built for Immigration Success",description:"BizPlanner AI now generates USCIS-compliant business plans for L-1A, L-1B, E-2, EB-1C, EB-2 NIW, and O-1 visa petitions. Purpose-built for immigration attorneys and applicants.",date:"Apr 10, 2026",category:"update",keywords:["visa business plan","immigration business plan","L1A visa","E2 visa","EB1C visa","EB2 NIW","O1 visa","USCIS business plan","immigration attorney"],priority:1,content:`# Introducing Visa Business Plans — AI-Powered Plans Built for Immigration Success
395
396Today we're thrilled to announce the launch of **Visa Business Plans** on BizPlanner AI — a purpose-built solution for immigration attorneys, petitioners, and beneficiaries who need professionally crafted, USCIS-compliant business plans.
397
398Whether you're filing an L-1A intracompany transfer, an E-2 investor visa, or an EB-2 National Interest Waiver, BizPlanner AI now generates a comprehensive business plan tailored to your specific visa category — in minutes, not weeks.
399
400## 🛂 Six Visa Categories, One Platform
401
402We support all major employment-based visa categories:
403
404- **L-1A** — Intracompany Transferee (Managerial/Executive)
405- **L-1B** — Intracompany Transferee (Specialized Knowledge)
406- **E-2** — Treaty Investor Visa
407- **EB-1C** — Multinational Manager/Executive Green Card
408- **EB-2 NIW** — National Interest Waiver
409- **O-1** — Extraordinary Ability
410
411Each plan is structured with the specific evidentiary requirements and legal standards that USCIS adjudicators look for in each visa category.
412
413## 📋 21 Specialized Sections
414
415Unlike a generic business plan, our visa plans include **21 purpose-built sections** designed for immigration cases:
416
417- **Executive Summary** framed around visa eligibility criteria
418- **Organizational Structure** with dual org charts (US & parent company)
419- **Staffing Plan** with detailed job creation projections
420- **Financial Projections** demonstrating economic impact and investment substantiality
421- **Market Analysis** with B2B firmographics aligned to USCIS standards
422- **Risk Analysis** addressing potential adjudicator concerns
423- **Parent Company Financials** for L-1 and EB-1C petitions
424- **SWOT Analysis** tailored to the immigration business case
425- And 13 more sections covering every angle of your petition
426
427## 🤖 AI That Understands Immigration Law
428
429Our AI doesn't just fill in a template — it generates content informed by:
430
431- **Your questionnaire responses** — job title, duties, investment amounts, employee counts, and more
432- **Uploaded documents** — resumes, job descriptions, certifications, and existing business plans are parsed and woven into the narrative
433- **Visa-specific legal standards** — each section is written to address the particular requirements of your visa category
434
435The result is a business plan that reads like it was prepared by an immigration consultant, not a generic AI.
436
437## 👨‍⚖️ Built for Immigration Attorneys
438
439We know that attorneys are the backbone of the immigration process. That's why we've built dedicated features for law firms:
440
441- **Attorney & Firm Branding** — your firm name, logo, and contact details appear on the cover page and throughout the plan
442- **Client Collaboration** — invite clients as collaborators with editor or viewer access so they can review and comment on sections
443- **Section Comments** — leave feedback on any section with threaded comments and real-time notification bells
444- **Subscription Plans** — monthly and annual tiers that include multiple visa business plans per billing cycle, with additional plans available at a reduced rate
445- **3-Day Free Trial** — try the full platform risk-free before committing
446
447## 📄 Professional Export
448
449When the plan is ready for filing, export it with one click:
450
451- **PDF** — polished, branded document ready for USCIS submission
452- **Word (.docx)** — fully editable for final attorney review and customization
453
454Both formats include the cover page, table of contents, and all 21 sections — formatted to the professional standard that adjudicators expect.
455
456## 🔒 Preview Before You Pay
457
458Every visa business plan starts with a **free preview** — we generate the Cover Page and Executive Summary at no cost so you can evaluate the quality before purchasing. No credit card required to get started.
459
460## 💰 Pricing
461
462- **Individual Plans** — $399 per visa business plan (one-time)
463- **Attorney Monthly** — $499/month, includes 2 plans per month
464- **Attorney Annual** — $399/month (billed annually), includes 2 plans per month
465- **Additional Plans** — $149 each for subscribed attorneys
466
467## 🚀 Get Started Today
468
469Ready to streamline your immigration business plan process?
470
471- **Applicants & Petitioners** — [Get started](/visa/get-started) with your visa business plan
472- **Immigration Attorneys** — [View pricing](/visa/pricing) and start your free trial
473
474We built this because we believe the immigration process shouldn't be held back by expensive, slow-turnaround business plan consultants. With BizPlanner AI, you get a professional, USCIS-compliant plan in minutes — so you can focus on what matters: building your case.
475
476---
477
478*Have questions? Reach out to us at [Contact](/contact) — we'd love to hear from you.*
479`},{slug:"platform-upgrade-2026",title:"BizPlanner AI Just Got a Major Upgrade — Here's What's New",description:"We've been busy building. From a brand-new document editor to smarter AI generation, here's everything that's changed on BizPlanner AI.",date:"Feb 24, 2026",category:"update",keywords:["bizplanner update","business plan editor","ai business plan","platform upgrade","new features"],priority:1,content:`# BizPlanner AI Just Got a Major Upgrade — Here's What's New
480
481We've been heads-down building, and today we're excited to share a wave of improvements that make creating your business plan faster, smarter, and more polished than ever.
482
483Whether you're a first-time founder or a seasoned entrepreneur, these upgrades are designed to save you time and give you a plan you're proud to share.
484
485## 🤖 Smarter AI-Powered Plan Generation
486
487Our AI engine has been completely overhauled. When you answer the questionnaire, BizPlanner AI now generates richer, more detailed content across all 12 sections of your business plan — from the Executive Summary to Financial Projections.
488
489**What's improved:**
490- **Deeper market analysis** — Industry trends, competitor insights, and regulatory landscape are now more specific to your location and niche
491- **Better financial projections** — Revenue forecasts, cost breakdowns, and funding requirements are more realistic and investor-ready
492- **Smarter SWOT analysis** — Strengths, weaknesses, opportunities, and threats are tailored to your exact business model
493- **Target audience profiling** — Detailed customer personas with demographics, behaviors, and pain points
494
495The result? A business plan that reads like it was written by a consultant — not a template.
496
497## ✍️ A Brand-New Document Editor
498
499Gone are the days of exporting and editing elsewhere. We've built a full **WYSIWYG editor** right inside the platform, so you can customize every section of your plan without leaving BizPlanner AI.
500
501**Editor highlights:**
502- **Rich text formatting** — Bold, italic, headings, lists, and more
503- **AI-assisted suggestions** — Stuck on 
503a paragraph? Let AI help you rewrite or expand any section
504- **Inline tables & charts** — Financial tables and org charts render beautifully right in the editor
505- **Auto-save** — Your changes are saved in real time, so you never lose work
506
507## 📄 Export to PDF & Word
508
509When your plan is ready, export it in one click:
510- **Professional PDF** — Clean, branded layout with your custom cover page, perfect for investors and banks
511- **Editable Word document** — Full .docx export so you can make final tweaks in Microsoft Word or Google Docs
512
513Both formats include your cover page, table of contents, and all 12 sections — formatted and ready to present.
514
515## 🎨 Custom Cover Pages
516
517First impressions matter. You can now fully customize your business plan's cover page with:
518- Your business name and tagline
519- Industry and location details
520- A professional layout that sets the tone for the rest of your plan
521
522## 🔄 Regenerate Any Section
523
524Not happy with a section? You can now **regenerate individual sections** with a single click. The AI will create a fresh version while keeping the rest of your plan intact. No need to start over.
525
526## 💡 What's Next
527
528We're just getting started. Coming soon:
529- **Pitch deck generation** — Turn your business plan into a slide deck
530- **Financial dashboard** — Interactive charts and scenario modeling
531- **Team collaboration** — Invite co-founders and advisors to edit together
532
533---
534
535We built BizPlanner AI to make business planning accessible to everyone. These upgrades bring us closer to that mission.
536
537**Ready to try it?** [Get started for free](/) and see the difference for yourself.
538
539Have feedback or ideas? We'd love to hear from you — reach out at [Contact Us](/contact).
540`},{slug:"industry-pulse",title:"Introducing Industry Pulse: Real-Time Market Insights",description:"When you're starting a business, the world around your idea matters just as much as the idea itself. What's trending in your industry?",date:"Apr 15, 2025",thumb:"https://static.bizplanner.ai/blog/industry-pulse/thumb.jpg",category:"update",content:`# Introducing Industry Pulse: Real-Time Market Insights
541
542When you're starting a business, the world around your idea matters just as much as the idea itself. What's trending in your industry? What laws are changing? Who just launched in your space?
543
544**We built Industry Pulse to give you those answers — instantly.**
545
546## What is Industry Pulse?
547
548Every time you create a new business in BizPlanner AI, we automatically start researching:
549
550- Emerging trends in your industry
551- Recent laws or regulatory changes
552- Notable competitors in your area
553- Market opportunities or risks you should know about
554
555All based on your industry and business location.
556
557And because it's a pulse, we keep it updated — so your insights stay fresh, even as the market shifts.
558
559## Why we built this
560
561A great business plan isn't just about what you want to do — it's about how the market is moving around you. Before, you'd have to Google this stuff or dig through outdated PDFs.
562
563Now, BizPlanner AI does it for you. Instantly. Using the latest models and live data from the internet.
564
565No fluff. Just facts that help you make smarter decisions.
566
567## How it works
568
569As soon as you create a business, Industry Pulse kicks in. We scan a massive knowledge base, plus real-time sources online, to surface insights specific to your business idea and your location.
570
571You don't need to wait until your plan is generated — you'll have access to your Pulse right away, and it continues to refresh in the background.
572
573## What you get
574
575- **Industry Trends** — What's moving in your market
576- **Industry Stats** — Hard numbers to back your pitch
577- **Regulations** — Laws, licenses, and compliance info
578- **Competitors** — Who's already in the space
579- **SWOT Analysis** — Strengths, weaknesses, opportunities, threats
580- **Target Audience** — Who you should be targeting and why
581
582Each insight is generated using live search data and AI analysis, tailored to your specific business.
583
584## Try it now
585
586Create a new business on BizPlanner AI and see your Industry Pulse come to life.`,keywords:["industry pulse","market insights","business trends","competitor analysis"],priority:1},{slug:"version-4",title:"BizPlanner AI v4: Dynamic Plans & Enhanced Regeneration",description:"We've reimagined how you create and refine your business plans with two major improvements: dynamic structure and enhanced regeneration.",date:"Feb 26, 2025",thumb:"https://static.bizplanner.ai/blog/version-4/thumb.jpg",category:"update",content:`# BizPlanner AI v4: Dynamic Plans & Enhanced Regeneration
587
588We are thrilled to announce the launch of BizPlanner AI Version 4! In this update, we've reimagined how you create and refine your business plans with two major improvements: a dynamic personalized business plan structure and an enhanced regeneration process.
589
590## Dynamic Personalized Business Plan Structure
591
592Gone are the days of one-size-fits-all business plans. Previously, our platform offered a static structure—tailored to the purpose of your plan, whether you were looking to attract investors or assess feasibility. With recent breakthroughs in AI, we've moved beyond fixed templates to offer a dynamic structure that adapts to your individual needs.
593
594What does this mean for you?
595
596- **Unique to Every Case:** Your business plan is no longer confined to a predetermined format. Instead, the AI tailors the plan to the specifics of your business, ensuring a custom-fit document that reflects your unique vision and requirements.
597- **Flexible and Adaptive:** The dynamic structure allows for greater flexibility. Whether you're tweaking sections or adding new insights, the plan evolves as your business does.
598
599## Enhanced Regeneration: More Control at Your Fingertips
600
601One of the most exciting features of Version 4 is the enhanced regeneration process. Now, when you regenerate your plan, you have the option to provide specific instructions for each section, giving you more control over the output.
602
603Here's what's new:
604
605- **Regenerate with Precision:** Want to update your financial projections or revise your marketing strategy? Simply specify your changes, and the AI will regenerate only those sections, keeping the rest intact.
606- **Tailored Instructions:** Each section can receive its own set of instructions, allowing for detailed and targeted revisions. This means your plan always reflects the latest developments and your evolving strategy.
607
608## What's Next?
609
610We're always looking to improve and add new features. Stay tuned for more updates that will make your business planning experience even better. Your feedback is invaluable—keep sharing your thoughts, and together, we'll keep making BizPlanner AI the best tool for entrepreneurs.`,keywords:["BizPlanner v4","dynamic business plans","AI regeneration","business plan generator"],priority:1},{slug:"how-long-does-it-take-to-write-a-business-plan",title:"How Long Does It Take to Write a Business Plan",description:"Learn how long writing a business plan takes and how our AI saves time by providing a customizable plan.",date:"Sep 15, 2024",thumb:"https://static.bizplanner.ai/blog/how-long-does-it-take-to-write-a-business-plan/thumb.jpg",category:"guide",content:`# How Long Does It Take to Write a Business Plan
611
612Writing a business plan is a foundational step for any entrepreneur aiming to turn an idea into a thriving enterprise. But **how long does it take to write a business plan**? The timeline can vary widely based on factors like business complexity, research depth, and whether you're starting from scratch or using tools to aid the process.
613
614## Factors Influencing the Time Frame
615
616### 1. Starting from Scratch vs. Using Tools
617
618- **Starting from Scratch**: Crafting a business plan from the ground up can be daunting and time-consuming. It involves brainstorming, structuring the document, and filling in each section without a predefined framework.
619- **Using AI Tools**: Utilizing platforms like our AI business plan generator can drastically reduce the time spent. Instead of building everything from zero, you receive a generated plan that you can edit and customize to your needs.
620
621### 2. Complexity of the Business
622
623- **Simple Business Models**: For straightforward businesses with a single product or service, the plan might take less time.
624- **Complex Business Models**: Businesses with multiple offerings, diverse markets, or intricate operations require more detailed planning.
625
626### 3. Research Requirements
627
628- **Market Analysis**: Gathering data on industry trends, competitors, and target demographics can extend the timeline.
629- **Financial Projections**: Developing accurate financial statements demands careful calculation and often, expert input.
630
631### 4. Experience Level
632
633- **First-Time Entrepreneurs**: May need additional time to understand business plan components and best practices.
634- **Seasoned Business Owners**: Can leverage prior experience to expedite the process.
635
636### 5. Purpose of the Plan
637
638- **Internal Use**: Plans meant for internal strategy might be shorter and less detailed.
639- **Investor-Ready Plans**: Plans intended to secure funding require meticulous detail and polished presentation, potentially extending the timeline.
640
641## Typical Timelines
642
643- **Traditional Method (From Scratch)**: Weeks to months, depending on the plan's complexity.
644- **Using an AI Business Plan Generator**: Minutes to hours for an initial draft, followed by customization time.
645- **With Professional Help**: Hiring a consultant can take 2–4 weeks, depending on availability and business complexity.
646
647## How Our AI Business Plan Generator Saves Time
648
649Our platform transforms the business planning process:
650
651- **Instant Generation**: Receive a comprehensive business plan in minutes.
652- **Customizable Sections**: Easily edit any section to match your specific needs.
653- **No Starting from Zero**: Begin with a well-structured plan and make it your own.
654- **AI-Powered Insights**: Benefit from data-driven suggestions throughout the process.
655
656## Tips to Speed Up the Process
657
6581. **Prepare Your Data**: Have your financial information, market research, and business details ready before you start.
6592. **Use Templates or AI Tools**: Don't reinvent the wheel — leverage existing frameworks.
6603. **Focus on Key Sections First**: Prioritize the executive summary, market analysis, and financial projections.
6614. **Iterate**: Start with a draft and refine over time rather than aiming for perfection immediately.
6625. **Seek Feedback Early**: Share drafts with mentors or advisors to catch issues early.
663
664## Conclusion
665
666The time it takes to write a business plan varies, but with the right tools, you can significantly reduce the effort involved. Our AI business plan generator provides a solid foundation, allowing you to focus on refining and personalizing rather than starting from scratch.`,keywords:["how long to write a business plan","business plan timeline","AI business plan generator"],priority:.9},{slug:"7-languages",title:"Generate Professional Business Plans in 7 Languages",description:"Our AI business plan generator now supports seven languages: English, Spanish, French, German, Portuguese, Japanese, and Korean!",date:"Sep 14, 2024",thumb:"https://static.bizplanner.ai/blog/7-languages/thumb.jpg",category:"update",content:`# Generate Professional Business Plans in 7 Languages
667
668At Bizplanner AI, we're excited to announce that our powerful AI business plan generator now supports **seven languages**: English, Spanish, French, German, Portuguese, Japanese, and Korean! This major update brings enhanced accessibility and flexibility to users worldwide.
669
670## Complete Business Plan in Your Language of Choice
671
672Our multilingual expansion isn't just about translating the interface; it extends to the entire business plan generation process. You can now generate a full, detailed business plan in any of the supported languages.
673
674Here's what's included:
675
676- **Executive Summary**: Capture your business goals, mission, and vision
677- **Business Description**: In-depth explanation of your business
678- **Market Research and Analysis**: Industry insights and competitive analysis
679- **Organizational Structure**: Team structure and leadership
680- **Products or Services**: Features and competitive advantages
681- **Marketing and Sales Strategy**: Channels and tactics
682- **Financial Projections**: Revenue forecasts and financial planning
683
684## How It Works
685
686Simply select your preferred language during the plan creation process. The AI will generate all content in your chosen language, ensuring natural, professional-quality output.
687
688## Why Multilingual Support Matters
689
690- **Global Reach**: Serve entrepreneurs worldwide in their native language
691- **Better Quality**: AI-native generation produces more natural content than translation
692- **Professional Output**: Each plan reads as if written by a native speaker
693- **Cultural Relevance**: Content adapts to regional business practices`,keywords:["multilingual business plan","business plan generator","7 languages","international"],priority:.9},{slug:"free-business-name-generator",title:"Introducing the Free Business N
693ame Generator",description:"Choosing a great name is one of the most critical steps when starting a business. Our Free Business Name Generator makes it easy.",date:"Jul 18, 2024",thumb:"https://static.bizplanner.ai/blog/free-business-name-generator/thumb.jpg",category:"update",content:`# Introducing the Free Business Name Generator
694
695Choosing a great name is one of the most critical steps when starting a business. A strong, memorable name can make a significant impact, attracting customers and setting the tone for your brand's identity.
696
697## How It Works
698
699Our Free Business Name Generator is simple and user-friendly. Just answer two questions:
700
701- **What kind of business are you?** (e.g., cafe, laundromat, etc.)
702- **Who is your target market?** (e.g., coffee lovers, etc.)
703
704Based on your answers, the generator will provide six unique business name suggestions tailored to your specific business type and target audience.
705
706## Why a Great Business Name Matters
707
708A great business name:
709
710- Creates a strong first impression
711- Differentiates you from competitors
712- Reflects your brand's values and mission
713- Helps in building customer loyalty
714
715## From Name to Plan
716
717Finding the right name is the first step in building a successful business. The next crucial step is writing a comprehensive business plan. A well-structured business plan outlines your business goals, strategies, and how you plan to achieve them, setting a clear path to success.
718
719Try our Free Business Name Generator today and take the first step towards building your brand!`,keywords:["business name generator","free tool","business naming","brand identity"],priority:.8},{slug:"bulk-purchase",title:"New Bulk Purchase Feature: Save on Multiple Business Plans",description:"We're excited to introduce bulk purchase packages designed for business consultants and entrepreneurs wanting to validate multiple ideas.",date:"Jul 17, 2024",thumb:"https://static.bizplanner.ai/blog/bulk-purchase/thumb.jpg",category:"update",content:`# New Bulk Purchase Feature: Save on Multiple Business Plans
720
721We're excited to introduce a new feature at BizPlanner AI designed specifically for business consultants and entrepreneurs wanting to validate multiple ideas. Our latest offering includes two bulk purchase packages:
722
723- **Business Plan x3:** Prepurchase three business plans and save up to 11%.
724- **Business Plan x10:** Prepurchase ten business plans and save up to 33%.
725
726This feature is perfect for those who need to create several business plans while saving money. By investing in these packages, you get significant discounts, ensuring you get the best value for your planning needs.
727
728You can easily purchase these packages in your account under the "Billing" tab. Additionally, you can check your balance at any time in your account.
729
730Explore our new bulk purchase options and streamline your business planning process with BizPlanner AI today!`,keywords:["bulk purchase","business plan discount","multiple plans","business consultant"],priority:.7},{slug:"inline-ai-and-save",title:"New Features: Manual Save and AI Text Rewrite",description:"Two new features: manual save button for changes and an inline AI text rewriting tool for your business plan.",date:"Jun 14, 2024",thumb:"https://static.bizplanner.ai/blog/inline-ai-and-save/thumb.jpg",category:"update",content:`# New Features: Manual Save and AI Text Rewrite
731
732At Bizplanner AI, we're always listening to your feedback. This month, we're excited to announce two new features designed to enhance your user experience.
733
734## 1. Manual Save Button for Changes
735
736We've introduced a manual save button for changes to your business plan.
737
738- **Manual Control:** Click the save button whenever you're ready, ensuring all your edits are captured exactly when you want.
739- **Preventing Loss:** Reduce the risk of any unsaved changes being lost.
740
741## 2. Inline Tool for AI-Powered Text Rewriting
742
743We've added an inline tool for our editor. This feature allows you to select a portion of your text and use our AI to rewrite only that selected part.
744
745- **Selective Editing:** Highlight any text in your business plan that you want to improve or change.
746- **AI-Powered Suggestions:** Our AI analyzes the context and generates a polished, improved version of the selected text.
747- **Maintain Consistency:** The rewritten text is seamlessly integrated, maintaining the overall tone and style of your business plan.
748
749These improvements will make your experience smoother and more reliable, allowing you to focus on crafting a compelling business plan.`,keywords:["manual save","AI text rewrite","business plan editor","inline editing"],priority:.7},{slug:"add-images",title:"New Feature: Add Images to Your Business Plan",description:"You can now insert images directly into your business plans using our easy-to-use editor.",date:"May 18, 2024",thumb:"https://static.bizplanner.ai/blog/add-images/thumb.jpg",category:"update",content:`# New Feature: Add Images to Your Business Plan
750
751Great news for BizPlanner AI users! We've added a new feature that lets you insert images directly into your business plans using our easy-to-use editor.
752
753## Bring Your Ideas to Life
754
755Adding images, like product photos or charts, can make your business plan more engaging and easier to understand.
756
757## How to Add Images
758
759- **Click the "+" icon** in your business plan where you want an image.
760- **Select "Image"** from the menu.
761- **Upload an image from your computer**, and it will appear in your plan.
762
763## Easy Export
764
765When you're ready, export your business plan with images intact to PDF or Word. Your visual
765s will look as sharp in your exported document as they do online.
766
767With this update, BizPlanner AI becomes more than just a tool for quickly generating business plans. It's a versatile platform that allows you to enhance and continuously update your plan with visual elements.`,keywords:["add images","business plan images","visual business plan","business plan editor"],priority:.7},{slug:"components-of-a-business-plan",title:"Components of a Business Plan",description:"A well-crafted business plan is crucial for securing investment and as a roadmap for the future. Explore the key components.",date:"May 9, 2024",thumb:"https://static.bizplanner.ai/blog/components-of-a-business-plan/thumb.jpg",category:"guide",content:`# Components of a Business Plan
768
769A well-crafted business plan is crucial not only for securing investment but also as a roadmap for the future of a company. It outlines strategies for growth, operations, and overcoming challenges.
770
771## Section 1: Executive Summary
772
773The Executive Summary is arguably the most critical component. It serves as the first impression and a concise overview of the entire business.
774
775## Section 2: Business Description
776
777This section provides a detailed overview of your business, including its history, structure, and unique value proposition.
778
779## Section 3: Market Research and Analysis
780
781Understanding your target market, competition, and industry trends is vital for any business plan.
782
783## Section 4: Organizational Structure
784
785Detail your business's organizational hierarchy, key team members, and their roles.
786
787## Section 5: Products or Services
788
789Describe your offerings, their benefits, and what differentiates them from competitors.
790
791## Section 6: Marketing and Sales Strategy
792
793Outline how you plan to reach and sell to your target market.
794
795## Section 7: Financial Plan
796
797Include revenue projections, cost analysis, cash flow forecasts, and break-even analysis.
798
799## Section 8: Appendix
800
801Supporting documents, resumes, permits, and additional data.
802
803## Conclusion
804
805Each component plays a vital role in painting a comprehensive picture of your business strategy. A well-structured plan can communicate your vision, guide your business towards strategic objectives, and engage potential investors.`,keywords:["components of a business plan","business plan sections","business plan template"],priority:.9},{slug:"version-2",title:"Introducing the Best AI Business Plan Generator Version 2.0",description:"We are committed to enhancing your experience with streamlined content, enhanced editing, and expanded financial tools.",date:"May 5, 2024",thumb:"https://static.bizplanner.ai/blog/version-2/thumb.jpg",category:"update",content:`# Introducing the Best AI Business Plan Generator Version 2.0
806
807Since the release of our initial version, our team has been diligently working on developing BizPlanner AI Version 2. A big thank you to everyone who has shared their feedback with us.
808
809## Streamlined Content
810
811We've simplified the content across all nine business plan sections. Now, instead of long blocks of text, you'll find clear, structured data. This change makes the business plans easier to understand and quicker to review.
812
813## Enhanced Editing Experience
814
815Editing your business plan is now easier than ever. We've upgraded from a basic WYSIWYG editor to a more advanced Notion-like block editor. This means you can make changes with just one click.
816
817## Expanded Financial Tools
818
819Version 2.0 brings enhanced financial tools to help you plan your business's financial future with more precision and detail.
820
821## Improved Navigation
822
823We've revamped how you navigate through your business plan, making it easier to jump between sections and find what you need.
824
825Thank you for being part of our journey. Your feedback continues to drive our improvements!`,keywords:["AI business plan generator","version 2","business plan software","BizPlanner update"],priority:.8},{slug:"financial-plan-2",title:"BizPlanner AI's Update: Advanced Financial Planning Capabilities",description:"Our latest update brings detailed financial forecasts including Sales Forecast, P&L, Cash Flow, and Balance Sheet.",date:"Apr 16, 2024",thumb:"https://static.bizplanner.ai/blog/financial-plan-2/thumb.jpg",category:"update",content:`# BizPlanner AI's Update: Advanced Financial Planning Capabilities
826
827Great news for users of BizPlanner AI! Our latest update brings a significant enhancement to the Financial Plan section. BizPlanner AI will now provide detailed financial forecasts for the next five years with four essential financial tables.
828
829## Why These Financial Tables Are Important
830
831### 1. Sales Forecast
832This table predicts your annual sales revenue, helping you and potential investors see the potential profitability of your business.
833
834### 2. Profit and Loss Forecast
835This forecast shows your expected income, expenses, and profits for each year, providing a clear picture of your financial health.
836
837### 3. Cash Flow Projection
838Managing your cash flow effectively is key to keeping your business operational. This table tracks the cash entering and leaving your business.
839
840### 4. Balance Sheet Forecast
841This provides an overview of what your business owns (assets), owes (liabilities), and the remaining value (equity) over five years.
842
843## How to Access These New Features
844
845Simply generate or update your business plan on BizPlanner AI and navigate to the Financial Plan section.`,keywords:["financial planning","sales forecast","profit and loss","cash flow projection","balance sheet"],priority:.8},{slug:"support-french",title:"French Language Option Now Available in Our AI Business Plan Generator",description:"Alongside English and Spanish, we're delighted to announce the introduction of French support.",date:"Apr 3, 2024",thumb:"https://static.bizplanner.ai/blog/support-french/thumb.jpg",category:"update",content:`# French Language Option Now Available
846
847Great news from the BizPlanner AI team! Alongside English and Spanish, we're delighted to announce the introduction of French support in our AI business plan generator.
848
849## How It Works
850
851When you're ready to draft your plan, simply follow the usual steps. At the final stage, you'll see an option labeled "language of the business plan," where French can now be selected.
852
853A language selector on the business plan page facilitates easy switching between languages.
854
855## A Step Towards Global Accessibility
856
857This addition of French is part of our ongoing commitment to making business planning universally accessible. We understand the importance of working in one's native language and are dedicated to expanding our language options.`,keywords:["French business plan","multilingual","AI business plan generator","French support"],priority:.7},{slug:"support-spanish",title:"Spanish Now Supported by Our AI Business Plan Generator",description:"BizPlanner AI now supports creating business plans in Spanish. Take your planning global!",date:"Feb 22, 2024",thumb:"https://static.bizplanner.ai/blog/support-spanish/thumb.jpg",category:"update",content:`# Spanish Now Supported by Our Business Plan Generator
858
859Exciting news! BizPlanner AI just got better. Now, you can create your business plan in Spanish too!
860
861## How It Works
862
863When you are ready to create your business plan, just go through the steps as usual. On the last step, you will see an option called "language of the business plan". Here, you can select Spanish.
864
865Plus, on your business plan page, you will find a language selector in the bottom left corner, making switching languages easy.
866
867## Breaking Down Barriers
868
869This update is all about breaking down barriers. We want everyone, no matter what language they speak, to bring their business ideas to life. And this is just the beginning — we are planning to add more languages.`,keywords:["Spanish business plan","multilingual","AI business plan generator","Spanish support"],priority:.7},{slug:"feature-suggestions",title:"Smart, AI-Powered Suggestions for Your Business Plan",description:"Explore our new feature offering AI-powered suggestions for uncertain areas in your business plan.",date:"Jan 18, 2024",thumb:"https://static.bizplanner.ai/blog/feature-suggestions/thumb.jpg",category:"update",content:`# Smart, AI-Powered Suggestions for Your Business Plan
870
871## Streamlining Business Planning with AI Assistance
872
873Creating a business plan is a critical step in the journey of entrepreneurship. To help you navigate this process more smoothly, we're excited to introduce our new feature: **"AI-Powered Suggestions"**.
874
875## How Does It Enhance Your Planning Process?
876
877Imagine you're drafting a business plan but are unsure about certain aspects like market analysis or financial projections. By clicking on the "I'm not sure... offer a suggestion!" button, our AI provides intelligent, context-specific recommendations.
878
879## Benefits
880
881- **Ease of Use:** Simplifying the business planning process for entrepreneurs at all levels.
882- **Time Efficiency:** Get quick, AI-powered suggestions to keep your planning process moving forward.
883- **Reliable Insights:** Our AI is informed by a comprehensive database, ensuring current and relevant advice.
884- **Customized for Your Business:** Tailored suggestions to your specific situation and needs.`,keywords:["AI suggestions","business plan help","AI-powered planning","business plan generator"],priority:.7},{slug:"pain-points",title:"Struggling with Your Business Plan? AI Business Plan Generator Can Help",description:"Creating a business plan is essential but challenging. Learn about common pain points and how AI can help.",date:"Jan 3, 2024",thumb:"https://static.bizplanner.ai/blog/pain-points/thumb.jpg",category:"guide",content:`# Struggling with Your Business Plan? AI Can Help
885
886Creating a business plan is an essential step for anyone starting or running a business. It's like making a roadmap that shows where you want your business to go and how you plan to get there. But, this important task is often filled with challenges.
887
888## Common Pain Points
889
890- **Getting Started:** The first step is often the hardest.
891- **Research Overload:** Figuring out what data is important can be over
891whelming.
892- **Financial Jargon:** Understanding complex financial terms and projections.
893- **Setting Clear Goals:** Defining what success looks like for your business.
894- **Market Analysis:** Understanding your market, customers, and competitors.
895- **Time Consumption:** The entire process can take weeks or months.
896- **Value Proposition:** Crafting a clear message about what makes your business special.
897- **Risk Assessment:** Identifying and planning for potential risks.
898
899## How AI Business Plan Generators Help
900
901AI business plan generators like BizPlanner AI address these challenges:
902
903- **Instant Structure:** Get a complete plan framework immediately.
904- **Data-Driven Insights:** AI analyzes market data and provides relevant insights.
905- **Financial Modeling:** Automated financial projections and forecasts.
906- **Time Savings:** Generate a complete plan in minutes, not months.
907- **Easy Editing:** Customize any section to match your vision.`,keywords:["business plan challenges","AI business plan","business planning","pain points"],priority:.8},{slug:"overview-2023",title:"AI Business Plan Generator Overview (Dec 2023)",description:"A comprehensive demo of the AI Business Plan Generator, showcasing features and capabilities.",date:"Dec 13, 2023",thumb:"https://static.bizplanner.ai/blog/overview-2023/thumb2.jpg",category:"update",content:`# AI Business Plan Generator Overview (Dec 2023)
908
909This comprehensive demo of the AI Business Plan Generator encapsulates the continuous enhancements and features we've integrated into the tool.
910
911## Part 1: Plan Generation
912
913The first part highlights the tool's ability to swiftly transform a blank page into a professional business plan, a testament to the AI's sophisticated understanding of user inputs and business concepts.
914
915## Part 2: Customization
916
917The second part emphasizes the tool's customization capabilities. Users can personalize their business plans by editing and adding specific details, while the AI seamlessly adapts and restructures sections.
918
919## Export Options
920
921The demonstration concludes by illustrating the tool's efficiency in exporting the finalized business plan in various formats like PDF and Word, underscoring the practicality and advanced functionality of the AI Business Plan Generator.`,keywords:["AI business plan generator","demo","overview","business plan software"],priority:.6},{slug:"mary-ann-and-nana",title:"Why Should Mary Ann and Nana Create a Business Plan?",description:"The entrepreneurial journey of Mary Ann and Nana hinges on creating a solid business plan. Here's why.",date:"Nov 18, 2023",thumb:"https://static.bizplanner.ai/blog/mary-ann-and-nana/thumb.jpg",category:"guide",content:`# Why Should Mary Ann and Nana Create a Business Plan?
922
923The entrepreneurial journey of Mary Ann and Nana, venturing into their dream business, hinges on an important question: **"Why should Mary Ann and Nana create a business plan?"**
924
925## A Roadmap for Success
926
927At its core, a business plan serves as a comprehensive roadmap. It's about outlining goals and detailing the strategies to achieve them.
928
929## Securing Financing
930
931One of the most compelling reasons for drafting a business plan is financing. Investors and financial institutions seek confidence and clarity — something a well-crafted business plan provides.
932
933## Executive Summary: Your First Impression
934
935The executive summary acts as the gateway to the business plan. It needs to be concise, engaging, and impactful.
936
937## Identifying Challenges and Opportunities
938
939A thorough business plan process involves extensive market research, helping identify potential challenges and opportunities within the industry.
940
941## Conclusion
942
943Creating a business plan is an indispensable step in the entrepreneurial journey. It lays down a clear, strategic path from concept to reality, encompassing everything from financial planning to market analysis.`,keywords:["why create a business plan","business plan importance","entrepreneurship"],priority:.7},{slug:"ai-business-plan-generator",title:"AI Business Plan Writer: Your Strategic Ally",description:"Starting a business plan can feel like navigating a maze. Learn how AI business plan writers are transforming strategic planning.",date:"Nov 16, 2023",thumb:"https://static.bizplanner.ai/blog/ai-business-plan-generator/thumb.jpg",category:"guide",content:`# AI Business Plan Writer: Your Strategic Ally
944
945## Introduction
946
947Starting a business plan can often feel like navigating a maze. Entrepreneurs frequently grapple with challenges like research overload, navigating financial jargon, and the complexities of market analysis.
948
949## AI Business Plan: The New Frontier
950
951Traditionally, crafting a business plan has been a daunting, time-consuming task. However, with the advent of AI business plan writers, this process has been significantly accelerated.
952
953## The Magic of AI Business Plan Creators
954
955AI business plan makers work by taking basic information about a business and transforming this data into a structured, detailed plan. This process not only saves time but also ensures a high level of accuracy and relevance.
956
957## Key Benefits
958
959- **Speed:** Generate comprehensive plans in minutes
960- **Accuracy:** Data-driven insights and projections
961- **Customization:** Tailored to your specific business
962- **Accessibility:** Professional-quality plans without consulting fees
963- **Iteration:** Easy to update and refine
964
965## Conclusion
966
967AI business plan writers represent a significant leap in how entrepreneurs approach strategic planning. They offer a blend of speed, precision, and customization, making business planning accessible to all.`,keywords:["AI business plan writer","strategic planning","business plan generator","AI planning"],priority:.8},{slug:"executive-summary",title:"How to Write an Executive Summary: A Step-by-Step Guide",description:"The Executive Summary is the most crucial part of a business plan. Learn how to make it compelling and effective.",date:"Nov 11, 2023",thumb:"https://static.bizplanner.ai/blog/executive-summary/thumb.jpg",category:"guide",content:`# How to Write an Executive Summary: A Step-by-Step Guide
968
969## Introduction
970
971The Executive Summary is often considered the most critical component of a business plan. It is the first section that investors, partners, and other stakeholders read.
972
973## What is an Executive Summary?
974
975An Executive Summary is a concise overview of your business plan. It provides a snapshot of your business and outlines your goals and strategy.
976
977## Key Components
978
979- **Business Concept**: A brief description of your business idea
980- **Business Goals and Vision**: Clear objectives and long-term vision
981- **Target Market**: Define your target audience
982- **Competitive Advantage**: What sets your business apart
983- **Financial Overview**: Key financial objectives and projections
984- **Management Team**: Key team members and their expertise
985
986## Best Practices
987
9881. **Keep it Concise**: Aim for 1-2 pages
9892. **Write it Last**: Complete the rest of your plan first
9903. **Be Compelling**: Make the reader want to learn more
9914. **Use Clear Language**: Avoid jargon and complex terminology
9925. **Highlight Key Data**: Include compelling statistics and projections
993
994## Conclusion
995
996A well-crafted Executive Summary can make the difference between securing investment and being overlooked. Take the time to refine it.`,keywords:["executive summary","how to write","business plan","investor pitch"],priority:.9},{slug:"business-plan-structure",title:"Business Plan Structure 101: Key Sections Explained",description:"Crafting a robust business plan is fundamental to the success of any enterprise. Learn the key sections explained.",date:"Nov 10, 2023",thumb:"https://static.bizplanner.ai/blog/business-plan-structure/thumb.jpg",category:"guide",content:`# Business Plan Structure 101: Key Sections Explained
997
998## Introduction
999
1000Crafting a robust business plan is fundamental to the success of any enterprise. It is a blueprint that guides your business through various stages of growth.
1001
1002## 1. Executive Summary
1003
1004The executive summary is the doorway to your business plan. It succinctly outlines your business goals and strategy.
1005
1006## 2. Business Description
1007
1008This section provides a deeper dive into your business, covering your mission, vision, history, and the nature of the industry.
1009
1010## 3. Market Research and Analysis
1011
1012Market research and analysis form the backbone of your business plan. Understanding your target market, competition, and industry trends is vital.
1013
1014## 4. Organizational Structure and Management
1015
1016Detail your business's organizational hierarchy, key team members, and their roles.
1017
1018## 5. Products or Services
1019
1020Describe what you're selling or offering, including details about the product lifecycle and intellectual property.
1021
1022## 6. Marketing and Sales Strategy
1023
1024Outline how you plan to attract and retain customers, including pricing strategy and sales tactics.
1025
1026## 7. Financial Plan
1027
1028This section should include projected income statements, balance sheets, cash flow statements, and capital expenditure budgets.
1029
1030## 8. Appendix
1031
1032Include any additional information that supports your business plan, such as resumes, permits, lease agreements, etc.`,keywords:["business plan structure","business plan sections","how to write a business plan"],priority:.9},{slug:"business-plan-for-ecommerce",title:"The Ultimate Business Plan for Ecommerce Startups: Crafted with AI",description:"A detailed example of a business plan specifically tailored for an e-commerce business, created with AI.",date:"Nov 3, 2023",thumb:"https://static.bizplanner.ai/blog/business-plan-for-ecommerce/thumb.jpg",category:"tutorial",content:`# The Ultimate Business Plan for Ecommerce Startups: Crafted with AI
1033
1034In the dynamic world of online entrepreneurship, crafting a meticulous business plan for ecommerce is crucial for success. This sample plan was created with the aid of BizPlanner.ai, an innovative tool that leverages artificial intelligence to streamline the business planning process.
1035
1036## How This Ecommerce Business Plan Was Created
1037
1038Using our AI Business Plan Generator, we entered basic information about a fictional e-commerce business and received a comprehensive plan in minutes. The plan covers all essential sections from executive summary to financial projections.
1039
1040## Key Sections Covered
1041
1042- Executive Summary
1043- Business Description
1044- Market Analysis
1045- Competitive Analysis
1046- Marketing Strategy
1047- Operations Plan
1048- Financial Projections
1049- Risk Analysis
1050
1051This template demonstrates the level of precision and care needed to navigate the digital market, providing a comprehensive guide for aspiring ecommerce entrepreneurs.`,keywords:["ecommerce business plan","online business","business plan template","AI business plan"],priority:.8},{slug:"business-plan-for-a-laundromat",title:"Laundromat Business Plan: Step-By-Step",description:"A step-by-step guide showing how BizPlanner.ai simplifies creating a business plan for a laundromat.",date:"Oct 8, 2023",thumb:"https://static.bizplanner.ai/blog/business-plan-for-a-lanrodmat/thumb.jpg",category:"tutorial",content:`# Laundromat Business Plan: Step-By-Step
1052
1053This article demonstrates the versatility of BizPlanner AI by presenting a meticulously structured business plan for a laundromat.
1054
1055## How This Laundromat Business Plan Template Was Created
1056
1057Using our AI-powered business plan generator, we input basic details about a laundromat business and received a comprehensive, professional plan covering all essential sections.
1058
1059## Key Highlights
1060
1061- Complete market analysis for the laundry industry
1062- Financial projections tailored to laundromat operations
1063- Marketing strategies for local service businesses
1064- Operational planning including equipment and staffing
1065
1066This guide shows how our platform simplifies the planning process, enabling you to focus on building your dream business.`,keywords:["laundromat business plan","laundry business","business plan template","step by step"],priority:.8},{slug:"business-plan-for-a-hotel",title:"Hotel Business Plan: Step-By-Step Guide",description:"Explore a full example of a business plan for a hotel, meticulously crafted using BizPlanner.ai.",date:"Sep 21, 2023",thumb:"https://static.bizplanner.ai/blog/business-plan-for-a-hotel/thumb.jpg",category:"tutorial",content:`# Hotel Business Plan: Step-By-Step Guide
1067
1068This manual presents a groundbreaking AI Business Plan Generator template, designed exclusively for entrepreneurs eager to start or grow their hotel business.
1069
1070## How This Hotel Business Plan Sample Was Created
1071
1072Click 'Generate your business plan' and proceed through a series of specific questions about your hotel venture. Our advanced AI technology will interpret your responses to devise a business plan that aligns with your unique goals.
1073
1074## What's Included
1075
1076- Comprehensive executive summary
1077- Detailed market analysis for the hospitality industry
1078- Financial projections specific to hotel operations
1079- Marketing and sales strategies
1080- Organizational structure
1081- Risk analysis and mitigation plans
1082
1083This step-by-step guide demonstrates how our platform simplifies the planning process, enabling you to focus on building your dream hotel.`,keywords:["hotel business plan","hospitality","business plan template","hotel management"],priority:.8},{slug:"business-plan-by-ai",title:"Crafting Your Business Plan with AI: The Future of Strategic Planning",description:"AI continues to make waves, redefining traditional processes. Learn how AI is transforming business planning.",date:"Sep 12, 2023",thumb:"https://static.bizplanner.ai/blog/business-plan-by-ai/thumb.jpg",category:"guide",content:`# Crafting Your Business Plan with AI: The Future of Strategic Planning
1084
1085In today's fast-paced digital landscape, AI continues to make waves, redefining traditional processes in various industries. One such transformation is the creation of a business plan by AI.
1086
1087## Why Opt for a Business Plan by AI?
1088
1089- **Tailored to Your Needs:** By feeding in specific inputs, you get a business plan that's unique to your vision and goals.
1090- **Efficiency and Speed:** Get results in a fraction of the time without compromising on quality.
1091- **Data-Driven Insights:** AI algorithms can analyze vast amounts of data, providing insights that might be overlooked manually.
1092- **Adaptability:** As market conditions change, updates can be made effortlessly.
1093
1094## The BizPlanner.ai Advantage
1095
1096BizPlanner.ai offers a streamlined process to generate your business plan with AI:
1097
10981. **Input Your Details:** Share your business name, offerings, target audience, and financial data.
10992. **AI Processing:** Our algorithms create a tailored plan.
11003. **Review & Customize:** Make adjustments as needed.
11014. **Export:** Download in PDF or Word format.
1102
1103## Conclusion
1104
1105The age of AI-assisted business planning is here, ensuring that every entrepreneur has access to a professional, comprehensive plan.`,keywords:["business plan by AI","AI strategic planning","business plan generator","AI planning"],priority:.8},{slug:"business-plans-aims-and-objectives",title:"Business Plans Aims and Objectives",description:"When embarking on a business journey, having clear aims and objectives in your business plan is paramount.",date:"Sep 10, 2023",thumb:"https://static.bizplanner.ai/blog/business-plans-aims-and-objectives/thumb.jpg",category:"guide",content:`# Business Plan Aims and Objectives: Charting the Path to Success
1106
1107When embarking on a business journey, having a clear direction is paramount. Central to this are the "Business Plan Aims and Objectives."
1108
1109## The Essence of Business Plan Aims and Objectives
1110
1111### Aims
1112
1113Aims are the broad, overarching goals that a business aspires to achieve in the long run. For instance: "To be the leading provider of organic skincare products in North America."
1114
1115### Objectives
1116
1117Objectives act as the stepping stones leading to those overarching aims. They are specific, measurable, achievable, relevant, and time-bound (SMART). For example: "To introduce three new organic skincare products by the end of Q2 and achieve a 15% increase in sales by year-end."
1118
1119## Why They Matter
1120
1121- **Direction and Focus:** They provide a clear path, ensuring that every decision aligns with the bigger picture.
1122- **Measurability:** Objectives allow you to track progress and adjust strategies.
1123- **Stakeholder Communication:** They help communicate your vision to investors, partners, and employees.
1124- **Resource Allocation:** They guide how you invest time, money, and effort.
1125
1126## Crafting Effective Aims and Objectives
1127
11281. Be specific and clear
11292. Ensure they are measurable
11303. Set realistic timeframes
11314. Align with your overall vision
11325. Review and adjust regularly`,keywords:["business plan aims","business objectives","SMART goals","strategic planning"],priority:.8},{slug:"vrio-analysis",title:"VRIO Analysis: A Complete Guide",description:"Learn how to conduct a VRIO analysis to identify your business's competitive advantages through Value, Rarity, Imitability, and Organization.",category:"seo",content:`# VRIO Analysis: A Complete Guide
1133
1134VRIO analysis is a strategic planning tool that helps businesses identify resources and capabilities that provide sustainable competitive advantage.
1135
1136## What is VRIO?
1137
1138VRIO stands for:
1139- **Value**: Does the resource provide value to customers?
1140- **Rarity**: Is the resource rare among competitors?
1141- **Imitability**: Is the resource costly for competitors to imitate?
1142- **Organization**: Is your company organized to capture value from this resource?
1143
1144## How to Conduct a VRIO Analysis
1145
11461. **List your resources and capabilities**
11472. **Evaluate each resource against the four criteria**
11483. **Determine competitive implications**
11494. **Develop strategies to leverage advantages**
1150
1151## VRIO Framework Benefits
1152
1153- Identifies sustainable competitive advantages
1154- Guides resource allocation decisions
1155- Highlights areas for improvement
1156- Supports strategic planning`,keywords:["VRIO analysis","competitive advantage","strategic planning","business strategy"],priority:.8},{slug:"business-continuity-plan",title:"Business Continuity Plan: Essential Guide",description:"Create a comprehensive business continuity plan to protect your organization from disruptions and ensure operational resilience.",category:"seo",content:`# Business Continuity Plan: Essential Guide
1157
1158A business continuity plan (BCP) ensures your organization can continue operating during and after a disaster or disruption.
1159
1160## Key Components
1161
11621. **Business Impact Analysis (BIA)**
11632. **Risk Assessment**
11643. **Recovery Strategies**
11654. **Plan Development**
11665. **Testing and Exercises**
11676. **Plan Maintenance**
1168
1169## Why You Need a BCP
1170
1171- Minimize financial losses
1172- Protect your reputation
1173- Ensure regulatory compliance
1174- Maintain customer trust
1175- Protect employees`,keywords:["business continuity plan","BCP","disaster recovery","risk management"],priority:.8},{slug:"business-succession-planning",title:"Business Succession Planning Guide",description:"Plan for the future of your business with our comprehensive succession planning guide. Ensure smooth leadership transitions.",category:"seo",content:`# Business Succession Planning Guide
1176
1177Succession planning ensures your business continues to thrive when key leaders depart or retire.
1178
1179## Steps for Effective Succession Planning
1180
11811. **Identify critical positions**
11822. **Assess current talent**
11833. **Develop succession candidates**
11844. **Create transition timelines**
11855. **Document knowledge transfer processes**
1186
1187## Benefits of Succession Planning
1188
1189- Business continuity
1190- Reduced recruitment costs
1191- Employee retention
1192- Preserved institutional knowledge`,keywords:["succession planning","business transition","leadership","exit strategy"],priority:.8},{slug:"business-plan-cover-page",title:"How to Create a Professional Business Plan Cover Page",description:"Learn how to create an impressive business plan cover page that makes a great first impression on investors and stakeholders.",category:"seo",content:`# How to Create a Professional Business Plan Cover Page
1193
1194Your business plan cover page is the first thing investors see. Make it count.
1195
1196## Essential Elements
1197
11981. **Business name and logo**
11992. **Business tagline or mission**
12003. **Contact information**
12014. **Date of preparation**
12025. **Confidentiality notice**
1203
1204## Design Tips
1205
1206- Keep it clean and professional
1207- Use your brand colors
1208- Include high-quality images
1209- Ensure readability`,keywords:["business plan cover page","business plan template","professional business plan"],priority:.8},{slug:"what-must-an-entrepreneur-assume-when-starting-a-business",title:"What Must an Entrepreneur Assume When Starting a Business?",description:"Discover the key assumptions every entrepreneur must make when launching a new business venture. Essential reading for startups.",category:"seo",content:`# What Must an Entrepreneur Assume When Starting a Business?
1210
1211Starting a business requires making several critical assumptions about your market, customers, and operations.
1212
1213## Key Assumptions to Consider
1214
1215### 1. Market Assumptions
1216- There is demand for your product/service
1217- Customers are willing to pay your price point
1218- The market is large enough to sustain your business
1219
1220### 2. Financial Assumptions
1221- You have adequate funding
1222- Revenue projections are realistic
1223- Costs are accurately estimated
1224
1225### 3. Operational Assumptions
1226- You can deliver your product/service at scale
1227- You can hire and retain talent
1228- Technology and infrastructure are available
1229
1230## Validating Your Assumptions
1231
1232Test your assumptions early through:
1233- Customer interviews
1234- Market research
1235- Prototype testing
1236- Financial modeling`,keywords:["entrepreneur assumptions","starting a business","business startup","entrepreneurship"],priority:.8},{slug:"why-business-plan-is-important-for-l1a-visa",title:"Why a Business Plan Is Critical for Your L-1A Visa Petition",description:"Learn why USCIS requires a detailed business plan for L-1A intracompany transferee petitions and how the right plan can strengthen your case for managerial or executive roles.",date:"Apr 11, 2026",category:"guide",keywords:["L1A visa business plan","L-1A intracompany transferee","L1A visa requirements","L1A business plan USCIS","managerial capacity visa","executive transfer visa","L1A petition business plan"],priority:.9,content:`# Why a Business Plan Is Critical for Your L-1A Visa Petition
1237
1238The L-1A visa allows multinational companies to transfer managers and executives from a foreign office to a U.S. office. While USCIS doesn't technically mandate a business plan, submitting one has become a practical necessity — especially for new office petitions where the U.S. entity is less than one year old.
1239
1240Without a business plan, adjudicators are left guessing about your company's trajectory. With one, you control the narrative.
1241
1242## What USCIS Adjudicators Look For
1243
1244For L-1A petitions, USCIS evaluates whether:
1245
1246- The beneficiary will serve in a **managerial or executive capacity** in the U.S.
1247- The U.S. entity has or will have a **sufficient organizational structure** to support a manager/executive role
1248- The company can **realistically grow** to the point where the beneficiary is managing people or functions — not performing day-to-day operational tasks
1249
1250A well-crafted business plan directly addresses each of these concerns.
1251
1252## The New Office L-1A Challenge
1253
1254New office L-1A petitions face extra scrutiny. The regulation at 8 CFR 214.2(l)(3)(v) requires petitioners to show:
1255
1256- The **size of the U.S. investment** and the financial ability to pay the beneficiary
1257- The **organizational structure** of the foreign and U.S. entities
1258- Evidence that the U.S. entity will grow enough within one year to supp
1258ort a managerial role
1259
1260This is where the business plan becomes your most powerful tool. It projects staffing growth, lays out the org chart evolution, and shows the financial runway to support it all.
1261
1262## Key Sections Your L-1A Business Plan Should Include
1263
1264### Organizational Structure & Staffing Plan
1265Show the current org chart and a phased hiring plan. USCIS needs to see that the beneficiary will supervise professional employees — not just contractors or a skeleton crew.
1266
1267### Financial Projections
1268Detail revenue forecasts, operating expenses, and investment capital. This demonstrates the company can sustain growth and compensate the beneficiary and future employees.
1269
1270### Market Analysis
1271Prove that the U.S. market opportunity justifies opening or expanding a U.S. office. Include industry data, target customers, and competitive positioning.
1272
1273### Executive Summary
1274Frame the entire petition around the beneficiary's managerial or executive role. Tie the business case directly to the legal standard.
1275
1276### Parent Company Overview
1277Show the relationship between the foreign and U.S. entities, including the parent company's financials, history, and global operations.
1278
1279## Common Mistakes That Lead to RFEs
1280
1281- **Vague job descriptions** — Saying "will manage operations" without specifics invites a Request for Evidence
1282- **No org chart progression** — If the Year 1 org chart shows only the beneficiary and one employee, USCIS will question the managerial capacity
1283- **Unrealistic financials** — Projecting $10M revenue with no market justification weakens credibility
1284- **Missing parent company context** — USCIS wants to see the foreign entity is legitimate and established
1285
1286## How BizPlanner AI Helps
1287
1288Our AI-powered visa business plan generator creates a comprehensive L-1A business plan in minutes. It includes:
1289
1290- Dual org charts (U.S. and parent company) with phased growth
1291- 5-year financial projections calibrated to your industry
1292- Staffing plans that demonstrate managerial capacity
1293- Market analysis using B2B firmographics
1294- All 21 sections tailored to USCIS standards
1295
1296Don't risk an RFE or denial because your business plan was an afterthought.
1297
1298[Get started with your L-1A business plan →](/visa/get-started)`},{slug:"why-business-plan-is-important-for-l1b-visa",title:"Why a Business Plan Matters for Your L-1B Visa Application",description:"Discover why a strong business plan strengthens L-1B specialized knowledge worker petitions and how to demonstrate the role's necessity to USCIS.",date:"Apr 11, 2026",category:"guide",keywords:["L1B visa business plan","L-1B specialized knowledge","L1B visa requirements","L1B petition","specialized knowledge worker visa","intracompany transfer L1B"],priority:.9,content:`# Why a Business Plan Matters for Your L-1B Visa Application
1299
1300The L-1B visa enables companies to transfer employees with **specialized knowledge** from a foreign office to a U.S. office. While the legal standard centers on the worker's expertise, a business plan plays a crucial role in establishing context — especially for new office petitions.
1301
1302## What Makes L-1B Different from L-1A
1303
1304The L-1A is about managerial capacity. The L-1B is about **specialized knowledge** — proprietary expertise that the beneficiary possesses about the company's products, services, processes, or procedures that isn't readily available in the U.S. labor market.
1305
1306This distinction matters for the business plan. Instead of focusing on org charts and staffing hierarchies, the L-1B plan must demonstrate:
1307
1308- **Why this specialized knowledge is critical** to U.S. operations
1309- **How the U.S. entity will utilize** this expertise
1310- **What the company's U.S. growth strategy** looks like and why it depends on this knowledge transfer
1311
1312## Why USCIS Requests Business Plans for L-1B
1313
1314USCIS has increasingly scrutinized L-1B petitions, especially after the 2015 Johnson memo that narrowed the definition of specialized knowledge. Adjudicators want to understand:
1315
1316- The **nature of the company's products or services** in the U.S.
1317- Why the knowledge can't be **easily transferred to a U.S. worker**
1318- How the beneficiary's role fits into the **broader business strategy**
1319
1320A business plan answers all of these questions in a structured, professional format.
1321
1322## Essential Components of an L-1B Business Plan
1323
1324### Company & Product Overview
1325Detail the company's proprietary products, services, or technology. Explain what makes them unique and why they require specialized knowledge to implement or sell in the U.S. market.
1326
1327### Role Justification
1328Connect the beneficiary's specific knowledge to the company's U.S. operations. Show how their expertise accelerates the business plan execution.
1329
1330### Market Opportunity
1331Demonstrate that the U.S. market opportunity justifies the knowledge transfer. Include industry anal
1331ysis, customer segments, and competitive landscape.
1332
1333### Financial Projections
1334Show that the company has the financial resources to support the position and that the U.S. operations will be viable.
1335
1336### Technology or Process Documentation
1337If the specialized knowledge involves proprietary systems, include descriptions of the technology stack, methodologies, or processes that the beneficiary uniquely understands.
1338
1339## Avoiding Common L-1B Pitfalls
1340
1341- **Generic job descriptions** — "Software engineer" isn't specialized knowledge. Be specific about what makes this person's knowledge unique
1342- **No business context** — USCIS wants to see why this role exists in the context of a real business strategy
1343- **Insufficient company background** — The foreign entity's operations and the beneficiary's role there must be well-documented
1344
1345## Build Your L-1B Business Plan with AI
1346
1347BizPlanner AI generates L-1B business plans that contextualize the beneficiary's specialized knowledge within a comprehensive business strategy. Our plans include market analysis, financial projections, and operational details — all calibrated to the L-1B standard.
1348
1349[Create your L-1B business plan →](/visa/get-started)`},{slug:"why-business-plan-is-important-for-e2-visa",title:"Why a Business Plan Is Essential for E-2 Treaty Investor Visa Applications",description:"An E-2 visa business plan is one of the most important documents in your petition. Learn what USCIS expects and how to build a plan that proves your investment is real and substantial.",date:"Apr 11, 2026",category:"guide",keywords:["E2 visa business plan","E-2 treaty investor","E2 visa requirements","E2 business plan template","treaty investor visa","E2 investment visa business plan","substantial investment E2"],priority:.9,content:`# Why a Business Plan Is Essential for E-2 Treaty Investor Visa Applications
1350
1351Of all the visa categories, the E-2 Treaty Investor visa arguably has the strongest need for a comprehensive business plan. The entire petition revolves around proving that your investment is **real, substantial, and not marginal** — and a business plan is the primary vehicle for making that case.
1352
1353## The E-2 Standard: Real, Substantial, Not Marginal
1354
1355USCIS and consular officers evaluate E-2 petitions against three key criteria:
1356
1357- **Real** — The investment must be committed and irrevocable. You can't just park money in a bank account
1358- **Substantial** — The investment must be proportional to the total cost of establishing or purchasing the business
1359- **Not marginal** — The business must have the capacity to generate significantly more income than just supporting the investor and their family. It should create jobs and contribute to the economy
1360
1361A business plan is the document that proves all three points.
1362
1363## Why the Business Plan Is Non-Negotiable for E-2
1364
1365Unlike some other visa categories where a business plan is "strongly recommended," E-2 petitions practically require one. Consular officers at the interview will often review the business plan directly. Without it, you're asking them to take your word for it — and that's a fast path to a denial.
1366
1367### What the Business Plan Must Demonstrate
1368
1369**Investment Substantiality**
1370Detail every dollar invested — equipment, inventory, lease deposits, renovations, marketing, working capital. Show that the investment is proportional to the business type.
1371
1372**Job Creation**
1373E-2 businesses must not be marginal. Your plan needs to project realistic job creation — full-time employees, not just contractors. A staffing plan with roles, salaries, and a hiring timeline is essential.
1374
1375**Revenue Viability**
1376Show 5-year financial projections demonstrating the business will generate revenue well beyond the investor's personal needs. Include income statements, cash flow projections, and break-even analysis.
1377
1378**Market Demand**
1379Prove there's a real market for your product or service. Include industry data, local market analysis, target customers, and competitive positioning.
1380
1381**Operational Plan**
1382Detail how the business will operate day-to-day. Where will it be located? What are the hours? What suppliers will you use? This shows the investment is real, not theoretical.
1383
1384## E-2 Business Plans for Different Scenarios
1385
1386### Buying an Existing Business
1387If you're purchasing an existing business, the plan should include historical financials, the acquisition terms, and how you plan to grow the business under new ownership.
1388
1389### Starting a New Business
1390For startups, the plan carries even more weight because there's no track record. Every projection must be well-researched and defensible.
1391
1392### Franchise Operations
1393E-2 is popular for franchises. The plan should include the franchise agreement details, territory analysis, and franchisor-provided performance data.
1394
1395## Common E-2 Business Plan Mistakes
1396
1397- **Inflated projections** — Consular officers will challenge unrealistic revenue numbers. Be conservative and defensible
1398- **No proof of investment source** — The plan should reference the lawful source of funds
1399- **Missing job creation details** — Vague statements about "hiring employees" won't 
1399cut it. Provide specific roles, salaries, and timelines
1400- **Cookie-cutter templates** — Officers review hundreds of E-2 plans. A generic template signals a weak case
1401
1402## Create Your E-2 Business Plan with BizPlanner AI
1403
1404Our AI generates E-2 business plans specifically structured to meet the real, substantial, and not-marginal standard. Every section — from financial projections to staffing plans — is calibrated for E-2 adjudication.
1405
1406[Start your E-2 business plan →](/visa/get-started)`},{slug:"why-business-plan-is-important-for-eb1c-visa",title:"Why a Business Plan Strengthens Your EB-1C Multinational Manager Green Card Petition",description:"Learn how a well-structured business plan supports your EB-1C multinational manager or executive green card application and helps avoid common RFEs.",date:"Apr 11, 2026",category:"guide",keywords:["EB1C visa business plan","EB-1C green card","multinational manager green card","EB1C requirements","EB1C business plan","multinational executive green card","EB-1C petition"],priority:.9,content:`# Why a Business Plan Strengthens Your EB-1C Multinational Manager Green Card Petition
1407
1408The EB-1C is a first-preference employment-based green card for multinational managers and executives. It shares DNA with the L-1A visa — but the stakes are higher because it leads to permanent residency. A strong business plan can be the difference between approval and a lengthy RFE cycle.
1409
1410## EB-1C vs. L-1A: Same Standard, Higher Stakes
1411
1412Both categories require the beneficiary to serve in a managerial or executive capacity. However, EB-1C is the permanent version — and USCIS applies greater scrutiny because the stakes are permanent.
1413
1414Key differences that affect the business plan:
1415
1416- **No "new office" exception** — The U.S. entity must already be operational for at least one year
1417- **Established organizational structure** — USCIS expects to see a functioning hierarchy, not just projections
1418- **Demonstrated track record** — Revenue, employees, and operations should be documented, not just forecasted
1419
1420## What the Business Plan Must Prove
1421
1422### Managerial or Executive Capacity
1423The plan must clearly show that the beneficiary manages an organization, department, or function — or directs the management of the organization. This requires:
1424
1425- A detailed org chart showing reporting lines
1426- Descriptions of subordinate roles and their professional qualifications
1427- Evidence that the beneficiary is not primarily performing the tasks of the function they manage
1428
1429### Organizational Legitimacy
1430USCIS wants evidence that the U.S. entity is a real, operating business — not a shell company created for immigration purposes. The business plan should detail:
1431
1432- Current operations, clients, and revenue
1433- Physical office or facility details
1434- Number of current employees and their roles
1435
1436### Qualifying Relationship
1437The plan must establish the corporate relationship between the U.S. and foreign entities — parent, subsidiary, branch, or affiliate. Include ownership structure and control details.
1438
1439### Growth Trajectory
1440Even though the company should be established, showing a forward-looking growth plan strengthens the case. It demonstrates that the managerial role will continue to be necessary.
1441
1442## Common EB-1C RFE Triggers
1443
1444- **Thin org chart** — If the beneficiary only supervises 1-2 employees, USCIS will question managerial capacity
1445- **No clear corporate relationship** — The qualifying relationship must be documented with precision
1446- **Beneficiary performing operational tasks** — If the plan suggests the beneficiary will "manage and also do sales," expect an RFE
1447- **Insufficient company history** — EB-1C requires the U.S. entity to have been doing business for at least one year
1448
1449## How BizPlanner AI Builds EB-1C Plans
1450
1451Our platform generates EB-1C business plans with dual organizational charts (U.S. and parent company), detailed staffing tables, parent company financials, and growth projections — all formatted to the standards USCIS adjudicators expect.
1452
1453[Create your EB-1C business plan →](/visa/get-started)`},{slug:"why-business-plan-is-important-for-eb2-niw-visa",title:"Why a Business Plan Is Key to Your EB-2 NIW (National Interest Waiver) Petition",description:"The EB-2 National Interest Waiver requires proving your work benefits the U.S. Learn why a business plan is essential to meeting the Dhanasar framework.",date:"Apr 11, 2026",category:"guide",keywords:["EB2 NIW business plan","
1453national interest waiver","EB-2 NIW requirements","Dhanasar framework","EB2 NIW petition","self-petition green card","national interest waiver business plan"],priority:.9,content:`# Why a Business Plan Is Key to Your EB-2 NIW (National Interest Waiver) Petition
1454
1455The EB-2 National Interest Waiver is unique among employment-based green cards because it allows you to **self-petition** — no employer sponsorship required. But this freedom comes with a burden: you must prove that your proposed endeavor is in the **national interest of the United States**.
1456
1457A business plan is one of the most effective tools for meeting this standard.
1458
1459## The Dhanasar Framework
1460
1461Since the 2016 *Matter of Dhanasar* decision, USCIS evaluates NIW petitions using a three-prong test:
1462
14631. **The proposed endeavor has substantial merit and national importance**
14642. **The petitioner is well-positioned to advance the endeavor**
14653. **On balance, it would benefit the United States to waive the job offer and labor certification requirements**
1466
1467Your business plan directly supports all three prongs.
1468
1469## How a Business Plan Addresses Each Prong
1470
1471### Prong 1: Substantial Merit and National Importance
1472
1473The plan must articulate **what you plan to do** and **why it matters** at a national level. This goes beyond personal success — you need to show broader impact:
1474
1475- Job creation across multiple states or regions
1476- Economic impact and tax revenue generation
1477- Innovation or technology advancement
1478- Addressing critical industry gaps
1479- Contributing to U.S. competitiveness in a global market
1480
1481A detailed business plan with market analysis, industry data, and projected economic contributions provides the evidence USCIS needs.
1482
1483### Prong 2: Well-Positioned to Advance
1484
1485This prong asks: can you actually pull this off? The business plan demonstrates your readiness:
1486
1487- **Your background** — Education, experience, publications, patents, or prior business success
1488- **Your plan** — A concrete, actionable roadmap (not a vague aspiration)
1489- **Your resources** — Financial projections, funding sources, partnerships, or existing traction
1490- **Your progress** — If you've already started, show what you've accomplished
1491
1492### Prong 3: National Interest Balance
1493
1494The third prong is about convenience — it would be impractical to require a job offer or labor certification. Your business plan helps by showing:
1495
1496- The endeavor is **entrepreneurial in nature** (you are the founder/principal)
1497- Requiring an employer sponsor would **undermine the endeavor**
1498- The benefits to the U.S. **outweigh the normal process requirements**
1499
1500## NIW Business Plans Are Different
1501
1502Unlike E-2 or L-1A business plans that focus on corporate operations, NIW plans must emphasize **national-level impact**. Common elements include:
1503
1504- **Impact projections** — Jobs created, revenue generated, communities served
1505- **Industry significance** — How your work addresses a critical national need
1506- **Scalability** — Potential to impact multiple markets or regions
1507- **Innovation** — What's new or different about your approach
1508- **Letters of support** — Referenced in the plan and appended as exhibits
1509
1510## Common NIW Mistakes
1511
1512- **Too personal, not national** — "I want to start a restaurant" doesn't meet the standard. "I will create a scalable food technology platform addressing food insecurity" does
1513- **No concrete plan** — Vague aspirations without a structured business plan will not satisfy Prong 2
1514- **Ignoring Prong 3** — Many petitions fail because they don't argue why the waiver itself is justified
1515- **Weak financial projections** — Even for NIW, USCIS wants to see that the endeavor is financially viable
1516
1517## Build Your NIW Business Plan with BizPlanner AI
1518
1519Our AI generates EB-2 NIW business plans structured around the Dhanasar framework. Each section is written to address the three-prong test, with market analysis, impact projections, and financial data that demonstrate national importance.
1520
1521[Start your EB-2 NIW business plan →](/visa/get-started)`},{slug:"why-business-plan-is-important-for-o1-visa",title:"Why a Business Plan Supports Your O-1 Extraordinary Ability Visa Petition",description:"Learn how a business plan strengthens O-1 visa petitions by providing structure to your extraordinary ability claims and demonstrating your future plans in the U.S.",date:"Apr 11, 2026",category:"guide",keywords:["O1 visa business plan","O-1 extraordinary ability","O1 visa requirements","O1 business plan","extraordinary ability visa","O-1A visa business plan","O1 petition"],priority:.9,content:`# Why a Business Plan Supports Your O-1 Extraordinary Ability Visa Petition
1522
1523The O-1 visa is reserved for individuals with **extraordinary ability or achievement** in their field — whether that's sciences, business, education, athletics, or the arts. While the O-1 isn't traditionally associated with business plans the way E-2 or L-1 visas are, a well-crafted plan can significantly strengthen your petition.
1524
1525## When an O-1 Petition Needs a Business Plan
1526
1527Not every O-1 case requires a business plan, but many do. You'll benefit from one if:
1528
1529- You're an **entrepreneur** using the O-1 to launch or run a U.S. business
1530- You're a **consultant or freelancer** who needs to show a structured plan for your U.S. activities
1531- Your **agent petition** requires documentation of your planned engagements and itinerary
1532- You need to demonstrate that your extraordinary ability will be **applied productively** in the U.S.
1533
1534## What USCIS Evaluates for O-1
1535
1536The O-1A (business/sciences) requires meeting at least 3 of 8 criteria, such as:
1537
1538- Published material about you in major media
1539- High salary or remuneration
1540- Membership in associations requiring outstanding achievement
1541- Judging the work of others in your field
1542- Original contributions of major significance
1543- Authorship of scholarly articles
1544- Employment in a critical or essential capacity at distinguished organizations
1545- Awards or prizes for excellence
1546
1547While the business plan doesn't directly prove these criteria, it provides **context** for your application. It shows USCIS how your extraordinary ability translates into a concrete, beneficial plan for your time in the U.S.
1548
1549## How the Business Plan Helps O-1 Petitions
1550
1551### Demonstrates Purpose and Structure
1552USCIS wants to know what you'll actually be doing in the U.S. A business plan shows you have a specific, achievable plan — not just a vague intention to "work in your field."
1553
1554### Supports the Advisory Opinion
1555O-1 petitions require an advisory opinion from a peer group or labor organization. A business plan gives the advisory body concrete material to evaluate.
1556
1557### Strengthens Agent Petitions
1558If you're filing through an agent (common for entrepreneurs and freelancers), the business plan documents your planned activities, clients, and engagements.
1559
1560### Shows Economic Contribution
1561While not required for O-1, demonstrating that your work will create jobs, generate revenue, or advance your field makes the petition more compelling.
1562
1563## Key Sections for an O-1 Business Plan
1564
1565- **Executive Summary** — Your extraordinary ability and how it drives your U.S. venture
1566- **Professional Background** — Achievements, awards, publications, and recognition that establish your extraordinary status
1567- **Business Model** — How your expertise translates into a viable business or engagement
1568- **Market Opportunity** — Why the U.S. market needs your specific expertise
1569- **Financial Projections** — Revenue, job creation, and growth trajectory
1570- **Impact Statement** — How your work benefits the field and the broader U.S. economy
1571
1572## Common O-1 Business Plan Mistakes
1573
1574- **Focusing only on credentials** — The plan should be forward-looking, not just a resume
1575- **No clear U.S. activity** — USCIS needs to see specific plans, not "I'll figure it out when I get there"
1576- **Ignoring the business viability** — Even for O-1, showing financial sustainability matters
1577- **Overly generic** — The plan should be specific to your field and your unique expertise
1578
1579## Create Your O-1 Business Plan with BizPlanner AI
1580
1581Our platform generates O-1 business plans that contextualize your extraordinary ability within a structured business framework. We include market analysis, financial projections, and impact assessments — all tailored to the O-1 standard.
1582
1583[Start your O-1 business plan →](/visa/get-started)`},{slug:"l1a-vs-l1b-visa-business-plan-differences",title:"L-1A vs L-1B Visa Business Plan: Key Differences You Need to Know",description:"Understand the critical differences between L-1A and L-1B visa business plans. Learn what USCIS looks for in each category and how to position your petition for success.",date:"Apr 12, 2026",category:"guide",keywords:["L1A vs L1B","L-1A vs L-1B visa","intracompany transferee differences","L1A L1B business plan comparison","manager vs specialized knowledge"],priority:.9,content:`# L-1A vs L-1B Visa Business Plan: Key Differences You Need to Know
1584
1585When transferring an employee from a foreign office to the United States, one of the most critical decisions is whether to file under the L-1A (Manager/Executive) or L-1B (Specialized Knowledge) classification. While both fall under the L-1 intracompany transferee umbrella, the business plan requirements differ significantly.
1586
1587## The Core Distinction
1588
1589The L-1A visa is designed for managers and executives who oversee people, departments, or essential functions. The L-1B visa is for employees possessing specialized knowledge of the company's products, services, processes, or procedures.
1590
1591This fundamental difference changes everything about how your business plan should be structured.
1592
1593## L-1A Business Plan: Proving Managerial Capacity
1594
1595For an L-1A petition, the business plan must demonstrate:
1596
1597- **Organizational hierarchy**: A detailed org chart showing the beneficiary manages professional employees or an essential function
1598- **Supervisory scope**: Clear reporting lines with at least two layers of management for executives
1599- **Staffing projections**: Hiring plans that show the managerial role will be sustained and expand
1600- **Operational complexity**: The U.S. operation is substantial enough to require a managerial role
1601
1602The org chart is arguably the single most important exhibit in an L-1A business plan. USCIS closely scrutinizes whether the beneficiary will primarily manage people or primarily perform operational tasks.
1603
1604## L-1B Business Plan: Articulating Specialized Knowledge
1605
1606For an L-1B petition, the focus shifts entirely:
1607
1608- **Knowledge definition**: Precisely articulate what makes the beneficiary's knowledge "specialized" — meaning not generally known in the industry
1609- **Product/technology context**: Describe the proprietary systems, products, or processes the beneficiary has expertise in
1610- **Business necessity**: Explain why this knowledge is critical to U.S. operations and cannot be easily transferred
1611- **Training timeline**: Address how long it would take to train a U.S. worker (reinforcing the need for the transfer)
1612
1613## Common Pitfalls
1614
1615### L-1A Mistakes
1616- Org charts that show the beneficiary doing operational work alongside 1-2 subordinates
1617- Insufficient staffing to justify a managerial role
1618- Failing to distinguish between managing people and performing the function
1619
1620### L-1B Mistakes
1621- Describing knowledge that is industry-standard rather than company-specific
1622- Not linking the specialized knowledge to concrete business operations
1623- Weak articulation of why the knowledge can't be quickly transferred to a domestic hire
1624
1625## Financial Projections: Different Emphasis
1626
1627Both visa types require financial projections, but the emphasis differs:
1628
1629- **L-1A**: Projections should show revenue growth that necessitates expanding the team under the manager's direction
1630- **L-1B**: Projections should show the revenue impact of the specialized knowledge — such as product launches, market entries, or technical implementations that only the beneficiary can execute
1631
1632## Choosing the Right Classification
1633
1634Consider L-1A when:
1635- The beneficiary will manage a team of 3+ professional employees
1636- The role is primarily supervisory and strategic
1637- You want the option to transition to EB-1C for a green card
1638
1639Consider L-1B when:
1640- The beneficiary has deep knowledge of proprietary technology or processes
1641- The role is primarily technical or specialist in nature
1642- The knowledge is genuinely uncommon in the industry
1643
1644## Conclusion
1645
1646The business plan is your opportunity to tell a compelling story about why this particular employee needs to be in the United States. Whether you're filing L-1A or L-1B, the plan must be laser-focused on the specific evidentiary requirements of that classification. A generic business plan that doesn't address the managerial hierarchy (L-1A) or specialized knowledge definition (L-1B) is one of the leading causes of RFEs and denials.
1647
1648[Create your visa business plan →](/visa/get-started)`},{slug:"e2-visa-investment-amount-guide",title:"How Much Investment Do You Need for an E-2 Visa? Complete 2026 Guide",description:"Learn how much investment is required for an E-2 treaty investor visa in 2026. Covers the proportionality test, industry benchmarks, and how to prove your investment is substantial.",date:"Apr 11, 2026",category:"guide",keywords:["E2 visa investment amount","E-2 visa how much money","E2 substantial investment","E2 visa minimum investment","treaty investor investment requirements"],priority:.9,content:`# How Much Investment Do You Need for an E-2 Visa? Complete 2026 Guide
1649
1650One of the most common questions about the E-2 treaty investor visa is: "How much do I need to invest?" The answer isn't a simple dollar amount — it depends on the proportionality test, your business type, and how you structure your investment.
1651
1652## There Is No Fixed Minimum
1653
1654Unlike the EB-5 immigrant investor visa (which requires $1,050,000 or $800,000 in a Targeted Employment Area), the E-2 visa has no statutory minimum investment amount. Instead, USCIS applies a **proportionality test**.
1655
1656## The Proportionality Test
1657
1658Your investment must be "substantial" in relation to the total cost of either:
1659
16601. **Purchasing an existing business** — The investment should be a significant percentage of the purchase price
16612. **Starting a new business** — The investment should be sufficient to ensure the business can successfully operate
1662
1663### General Benchmarks by Business Type
1664
1665| Business Type | Typical Investment Range | Notes |
1666|---|---|---|
1667| Service Business | $80,000 – $150,000 | Consulting, marketing, IT services |
1668| Restaurant/Food | $100,000 – $300,000 | Depends on location and build-out |
1669| Franchise | $100,000 – $500,000+ | Varies widely by franchise brand |
1670| Retail Store | $80,000 – $200,000 | Inventory and build-out costs |
1671| Tech Startup | $100,000 – $250,000 | Development, team, infrastructure |
1672| Manufacturing | $200,000 – $500,000+ | Equipment and facility costs |
1673
1674## What Counts as "Invested" or "In the Process of Being Invested"?
1675
1676USCIS requires that funds be **irrevocably committed** to the enterprise. This includes:
1677
1678- **Lease deposits and rent** paid for business premises
1679- **Equipment and inventory** purchased for the business
1680- **Franchise fees** and licensing costs
1681- **Renovation and build-out** expenses
1682- **Marketing and operational** launch costs
1683- **Working capital** committed to bank accounts
1684
1685## The "Marginality" Standard
1686
1687Beyond being substantial, your business must not be **marginal** — meaning it must generate more than enough income to provide a minimal living for you and your family. Your business plan must demonstrate:
1688
1689- **Job creation**: The enterprise will create jobs for U.S. workers (typically 3-5+ within 5 years)
1690- **Revenue growth**: Projections showing the business will grow beyond a lifestyle business
1691- **Economic impact**: Contribution to the local economy through employment and spending
1692
1693## How Your Business Plan Proves Substantial Investment
1694
1695A well-crafted E-2 business plan addresses the investment question head-on:
1696
16971. **Source of Funds**: Documenting where the investment money comes from (savings, loans, business proceeds)
16982. **Funds Deployed**: Showing exactly how much has been invested and in what
16993. **Total Enterprise Cost**: Demonstrating the investment is proportional
17004. **5-Year Projections**: Proving the business is not marginal with detailed financials
17015. **Job Creation Timeline**: Year-by-year hiring plan showing U.S. employment impact
1702
1703## Red Flags That Trigger RFEs
1704
1705- Investment that appears too small relative to the business type
1706- Large amounts of uncommitted funds sitting in a bank account
1707- No clear documentation of how funds were spent
1708- Financial projections showing minimal growth or no job creation
1709- Investment that appears to be primarily for personal living expenses
1710
1711## Tips for Strengthening Your E-2 Investment Case
1712
17131. **Invest before filing**: Show you're committed by making irrevocable investments before submitting the petition
17142. **Document everything**: Keep receipts, contracts, and bank statements for every dollar invested
17153. **Show proportionality**: If your total enterprise cost is $200K, investing $150K (75%) is much stronger than $50K (25%)
17164. **Project job creation**: Even if you start small, show USCIS your plan to hire Americans
17175. **Professional business plan**: A detailed business plan is your strongest evidence that the investment is substantial and the business is not marginal
1718
1719[Create your E-2 business plan →](/visa/get-started)`},{slug:"eb2-niw-dhanasar-framework-explained",title:"The Dhanasar Framework Explained: How to Build Your EB-2 NIW Business Plan",description:"Complete guide to the Dhanasar three-prong test for EB-2 National Interest Waiver petitions. Learn how to structure your business plan to satisfy all three prongs.",date:"Apr 11, 2026",category:"guide",keywords:["Dhanasar framework","EB2 NIW three prong test","national interest waiver requirements","EB-2 NIW business plan structure","Matter of Dhanasar"],priority:.9,content:`# The Dhanasar Framework Explained: How to Build Your EB-2 NIW Business Plan
1720
1721The EB-2 National Interest Waiver (NIW) is one of the most attractive paths to a U.S. green card for entrepreneurs, researchers, and professionals — because it doesn't require a job offer or labor certification. But to succeed, your petition must satisfy the **Dhanasar three-prong test** established in *Matter of Dhanasar* (2016).
1722
1723Your business plan is the primary vehicle for proving all three prongs. Here's how to structure it.
1724
1725## Prong 1: Substantial Merit and National Importance
1726
1727This prong asks two questions:
17281. Does your proposed endeavor have **substantial merit**?
17292. Does it have **national importance**?
1730
1731### Substantial Merit
1732Your business plan must demonstrate that your endeavor has intrinsic value. USCIS has found merit in a wide range of fields including business, entrepreneurship, science, technology, healthcare, and education.
1733
1734**How to prove it in your business plan:**
1735- Clearly describe your business or research endeavor
1736- Show the problem you're solving and why it matters
1737- Provide market data demonstrating real demand
1738- Include any patents, publications, or innovations
1739
1740### National Importance
1741This is the harder element. Your endeavor must have impact beyond your local area. USCIS looks for endeavors that benefit the nation as a whole or a significant segment of it.
1742
1743**Strategies for demonstrating national importance:**
1744- **Job creation**: Plans to create significant employment across multiple locations
1745- **Economic impact**: Revenue projections showing meaningful economic contribution
1746- **Innovation**: Technology or methods that advance an entire industry
1747- **Critical needs**: Addressing documented shortages (healthcare in rural areas, STEM education, clean energy)
1748- **Scalability**: A business model that can scale nationally, not just locally
1749
1750## Prong 2: Well-Positioned to Advance the Endeavor
1751
1752This prong asks: Are **you** the right person to execute this plan?
1753
1754**Evidence to include in your business plan:**
1755- Your education, degrees, and certifications
1756- Relevant work experience and track record
1757- Past achievements and their measurable impact
1758- Letters of recommendation from industry experts
1759- A realistic, detailed plan showing how you'll execute
1760- Current progress — funds raised, partnerships established, customers acquired
1761
1762The business plan should tell the story of why your unique background makes you exceptionally qualified to succeed in this endeavor.
1763
1764## Prong 3: On Balance, Beneficial to the United States
1765
1766This is the "balancing test." USCIS weighs whether it would benefit the U.S. to waive the job offer and labor certification requirements.
1767
1768**Your business plan should address:**
1769- Why your endeavor would be significantly impacted by the labor certification process
1770- How the delay of going through PERM could harm the endeavor's timeline
1771- Why no U.S. employer sponsor is needed — you are self-petitioning because you ARE the business leader
1772- The urgency or time-sensitivity of your endeavor
1773
1774## Common NIW Business Plan Mistakes
1775
17761. **Too local**: Describing a business that only serves one city without explaining national significance
17772. **Vague impact**: Using general statements about "helping the economy" without specific projections
17783. **Weak qualifications section**: Not connecting your background to your ability to execute
17794. **No evidence of progress**: Filing with just an idea and no demonstrable steps taken
17805. **Ignoring Prong 3**: Forgetting to explicitly address why waiving labor certification benefits the U.S.
1781
1782## Entrepreneur-Specific NIW Tips
1783
1784If you're an entrepreneur (not a researcher or academic), your path to NIW requires extra attention:
1785
1786- **Quantify job creation**: USCIS responds well to specific hiring projections (e.g., "15 full-time U.S. employees by Year 3")
1787- **Show traction**: Revenue, customers, partnerships, or investments demonstrate you're already advancing the endeavor
1788- **Address scalability**: Explain how your business model scales beyond a single location
1789- **Industry context**: Show that your industry is of national importance (healthcare, technology, clean energy, infrastru
1789cture)
1790
1791## Conclusion
1792
1793The Dhanasar framework provides a clear structure for your EB-2 NIW business plan. Every section of your plan should map back to one or more of the three prongs. A well-structured business plan doesn't just describe your business — it builds a legal argument for why you deserve a national interest waiver.
1794
1795[Create your EB-2 NIW business plan →](/visa/get-started)`},{slug:"visa-business-plan-common-mistakes",title:"10 Common Mistakes in Visa Business Plans (And How to Avoid Them)",description:"Avoid these 10 costly mistakes that lead to RFEs and denials in visa business plans. Expert tips for L-1A, L-1B, E-2, EB-1C, EB-2 NIW, and O-1 petitions.",date:"Apr 12, 2026",category:"guide",keywords:["visa business plan mistakes","visa petition RFE","immigration business plan errors","USCIS business plan tips","visa business plan denial"],priority:.85,content:`# 10 Common Mistakes in Visa Business Plans (And How to Avoid Them)
1796
1797A business plan is often the most important piece of evidence in a visa petition. Yet many applicants and even some attorneys submit plans with critical errors that trigger Requests for Evidence (RFEs) or outright denials. Here are the 10 most common mistakes — and how to avoid them.
1798
1799## 1. Using a Generic Template
1800
1801**The mistake**: Submitting a standard business plan that could apply to any company, with no visa-specific content.
1802
1803**The fix**: Your business plan must be tailored to your specific visa category. An E-2 plan needs to address the "substantial investment" and "not marginal" standards. An L-1A plan must demonstrate managerial capacity. A one-size-fits-all approach signals to USCIS that the plan wasn't purpose-built for the petition.
1804
1805## 2. Weak or Missing Organizational Charts
1806
1807**The mistake**: Providing a flat org chart with the beneficiary on top and two employees below, or no org chart at all.
1808
1809**The fix**: Org charts are critical for L-1A, EB-1C, and even L-1B petitions. Show multiple layers of management, clear reporting lines, job titles, and whether positions are filled or planned. For L-1A, the chart must demonstrate that the beneficiary primarily manages people, not performs operational tasks.
1810
1811## 3. Unrealistic Financial Projections
1812
1813**The mistake**: Showing hockey-stick revenue growth with no basis, or projections that are too conservative to demonstrate the business is "not marginal."
1814
1815**The fix**: Financial projections should be realistic, well-sourced, and internally consistent. Base revenue projections on comparable businesses, industry benchmarks, and documented market data. Show your assumptions clearly.
1816
1817## 4. No Immigration Context
1818
1819**The mistake**: Writing a pure business plan with no connection to the immigration petition.
1820
1821**The fix**: Your executive summary should explicitly address the immigration context — why this person needs to be in the U.S., what role they'll fill, and how the business plan supports the visa petition. USCIS officers are reviewing this as evidence, not as a loan application.
1822
1823## 5. Insufficient Market Research
1824
1825**The mistake**: Claiming a huge market opportunity without data, or using outdated statistics.
1826
1827**The fix**: Include current (within 2 years) market data from reputable sources. Use TAM/SAM/SOM analysis to show realistic market capture. Cite specific industry reports and include local market data when relevant.
1828
1829## 6. Ignoring the "Not Marginal" Standard (E-2)
1830
1831**The mistake**: Financial projections that show the business barely supporting the investor's family, with minimal job creation.
1832
1833**The fix**: E-2 plans must demonstrate the enterprise is "not marginal" — it will generate significantly more than a minimal living. Show meaningful job creation (typically 3-5+ employees within 5 years) and revenue that demonstrates economic significance.
1834
1835## 7. Vague Specialized Knowledge (L-1B)
1836
1837**The mistake**: Describing the beneficiary's knowledge in general terms that could apply to any qualified professional in the industry.
1838
1839**The fix**: Be specific about what makes the knowledge "specialized" — proprietary systems, company-specific processes, or advanced knowledge not generally available. Explain why this knowledge can't be quickly learned by a U.S. hire.
1840
1841## 8. No Milestones or Timeline
1842
1843**The mistake**: Presenting a static snapshot with no forward-looking milestones or implementation timeline.
1844
1845**The fix**: Include a detailed milestone chart showing what the business will achieve in months 1-3, 3-6, 6-12, and years 2-5. This is especially critical for new office L-1A petitions and E-2 startup applications.
1846
1847## 9. Poorly Documented Source of Funds (E-2)
1848
1849**The mistake**: Stating the investment amount without documenting where the money came from.
1850
1851**The fix**: Include a clear source of funds section showing the money trail — savings, business proceeds, inheritance, loans, etc. USCIS needs to verify the investment is legitimate and that funds are irrevocably committed.
1852
1853## 10. Not Addressing Previous RFEs
1854
1855**The mistake**: Resubmitting after an RFE without specifically addressing the issues raised.
1856
1857**The fix**: If you've received an RFE, your updated business plan should directly address each point raised. Structure the response so USCIS can easily find answers to their specific concerns.
1858
1859## The Bottom Line
1860
1861A visa business plan is not a standard business plan. It's a legal document that serves as evidence in an immigration petition. Every section should be written with the specific visa category's evidentiary requirements in mind. Taking shortcuts here can cost months of delays, thousands in additional legal fees, and potentially a denied petition.
1862
1863[Create your USCIS-compliant business plan →](/visa/get-started)`},{slug:"how-immigration-attorneys-use-business-plans",title:"How Immigration Attorneys Use Business Plans to Win Visa Cases",description:"Learn how top immigration attorneys leverage professional business plans as strategic evidence in L-1A, E-2, EB-1C, EB-2 NIW, and O-1 visa petitions.",date:"Apr 13, 2026",category:"guide",keywords:["immigration attorney business plan","visa lawyer business plan","immigration business plan strategy","attorney visa petition evidence","USCIS evidence business plan"],priority:.85,content:`# How Immigration Attorneys Use Business Plans to Win Visa Cases
1864
1865For immigration attorneys, a business plan is far more than a financial document — it's a strategic piece of evidence that can make or break a visa petition. Here's how leading attorneys leverage business plans across different visa categories.
1866
1867## The Business Plan as Legal Evidence
1868
1869Unlike business plans written for banks or investors, a visa business plan must serve a dual purpose:
1870
18711. **Demonstrate business viability** — showing the enterprise is real, operating, and sustainable
18722. **Address legal standards** — directly satisfying the evidentiary requirements of the specific visa category
1873
1874Top attorneys understand that the business plan is often the single document that ties together all other evidence — from org charts and financial statements to market data and employment projections.
1875
1876## Category-Specific Strategies
1877
1878### L-1A: Building the Managerial Narrative
1879
1880Experienced L-1A attorneys use the business plan to:
1881- **Preempt "primarily managerial" challenges** by showing the org structure supports a genuine managerial role
1882- **Phase staffing growth** to demonstrate how the management hierarchy will develop
1883- **Differentiate between managing functions and performing functions** through detailed position descriptions
1884
1885### E-2: Proving Non-Marginality
1886
1887Savvy E-2 attorneys structure the plan to:
1888- **Lead with the investment narrative** — how much, where it went, and why it's proportional
1889- **Front-load job creation** — showing USCIS that U.S. workers will benef
1889it
1890- **Address the marginality test head-on** with projections exceeding the "minimal living" threshold by a significant margin
1891
1892### EB-2 NIW: The Dhanasar Playbook
1893
1894For NIW petitions, attorneys use the business plan to:
1895- **Map each section to a Dhanasar prong** — every paragraph should advance one of the three prongs
1896- **Build the "national importance" argument** with data-driven market analysis
1897- **Document the petitioner's track record** as evidence they're well-positioned to advance the endeavor
1898
1899### EB-1C: From L-1A to Green Card
1900
1901EB-1C attorneys build on the L-1A business plan by:
1902- **Showing operational maturity** — the business has grown and sustained itself since the L-1A was approved
1903- **Demonstrating sustained managerial capacity** — the beneficiary's role has remained (or grown) managerial
1904- **Projecting long-term viability** — the business will continue to support the position permanently
1905
1906## What Attorneys Look for in a Business Plan
1907
1908Based on feedback from 150+ immigration attorney partners, here's what matters most:
1909
19101. **USCIS-aware language**: Using terminology that mirrors the legal standards
19112. **Evidence-quality content**: Every claim should be supportable with additional documentation
19123. **Logical flow**: The plan should tell a coherent story from the executive summary through financial projections
19134. **Visual elements**: Professional org charts, financial tables, and market analysis charts
19145. **Specificity**: Names, dates, dollar amounts — not vague generalizations
1915
1916## The AI Advantage
1917
1918Modern AI-powered business plan tools allow attorneys to:
1919- Generate first drafts in hours instead of weeks
1920- Customize content for each client's specific case
1921- Ensure consistency across all sections
1922- Quickly iterate when case strategy changes
1923- Scale their practice without sacrificing quality
1924
1925## Conclusion
1926
1927Immigration attorneys who treat the business plan as a strategic legal document — not an afterthought — consistently achieve better outcomes for their clients. The business plan is your opportunity to control the narrative, address potential concerns before they become RFEs, and present a compelling case for why this visa petition should be approved.
1928
1929[Create your attorney-grade business plan →](/visa/get-started)`},{slug:"eb1c-vs-l1a-green-card-path",title:"From L-1A to EB-1C: Your Complete Green Card Transition Guide",description:"Step-by-step guide for transitioning from an L-1A visa to an EB-1C green card. Learn the business plan requirements, timeline, and common pitfalls.",date:"Apr 13, 2026",category:"guide",keywords:["L1A to EB1C","L-1A to green card","EB-1C transition","multinational manager green card path","L1A EB1C business plan"],priority:.85,content:`# From L-1A to EB-1C: Your Complete Green Card Transition Guide
1930
1931The L-1A to EB-1C pathway is one of the most efficient routes to a U.S. green card for multinational managers and executives. But it requires careful planning — and your business plan plays a crucial role at both stages.
1932
1933## Understanding the L-1A → EB-1C Pipeline
1934
1935The L-1A visa provides temporary work authorization for up to 7 years as an intracompany transferee in a managerial or executive capacity. The EB-1C is the green card equivalent — permanent residency for multinational managers/executives.
1936
1937### Key Differences
1938
1939| Factor | L-1A | EB-1C |
1940|---|---|---|
1941| Duration | 1-3 years (renewable to 7) | Permanent |
1942| Business maturity | Can be new office | Must be operating 1+ year |
1943| Managerial proof | Must manage or direct | Must demonstrate sustained capacity |
1944| Business plan focus | Growth potential | Proven track record + future |
1945
1946## When to Start Planning Your EB-1C
1947
1948Most attorneys recommend beginning EB-1C planning during the first year of L-1A status:
1949
19501. **Year 1 (L-1A)**: Focus on establishing the U.S. office, hiring staff, and building the organizational structure
19512. **Year 2**: Ensure the company has been "doing business" for at least one year — this is an EB-1C requirement
19523. **Year 2-3**: File the I-140 (EB-1C petition) once the business meets all requirements
1953
1954## How Your Business Plan Evolves
1955
1956### L-1A Business Plan (Initial Filing)
1957- Forward-looking and aspirational
1958- Emphasizes growth plans and potential
1959- Projected org charts showing planned hires
1960- Revenue forecasts based on market opportunity
1961
1962### EB-1C Business Plan (Green Card Filing)
1963- Demonstrates achieved milestones
1964- Shows sustained managerial capacity over 1+ year
1965- Actual org charts with real employees
1966- Historical financials alongside future projections
1967- Evidence of business maturity and stability
1968
1969## Critical EB-1C Requirements
1970
1971### 1. One Year of Doing Business
1972The U.S. company must have been "doing business" (not just registered) for at least one year before the EB-1C petition. Your business plan should document this operational history with:
1973- Revenue generated
1974- Clients served
1975- Employees hired
1976- Milestones achieved
1977
1978### 2. Sustained Managerial Capacity
1979Unlike L-1A where you can project future management responsibilities, EB-1C requires proof that the beneficiary has been functioning in a managerial or executive capacity. Your business plan should include:
1980- Current org chart with all positions filled
1981- Reporting relationships and supervisory scope
1982- Comparison of planned vs. actual organizational growth
1983
1984### 3. Qualifying Relationship
1985Both the U.S. and foreign entities must still maintain a qualifying relationship (parent, subsidiary, branch, or affiliate). Document the corporate structure and ownership chain.
1986
1987## Common Pitfalls in the Transition
1988
19891. **Filing too early**: The company must have 1+ year of actual operations
19902. **Org chart hasn't grown**: If you filed L-1A with plans to hire 10 people and only have 3, USCIS will question the managerial capacity
19913. **Inconsistent financials**: Revenue projections from the L-1A plan should roughly match actual results — major discrepancies need explanation
19924. **Same plan, different cover**: Don't just resubmit your L-1A business plan. The EB-1C plan must show evolution and maturity
1993
1994## Timeline for Success
1995
1996- **Month 0-3**: L-1A approved, arrive in the U.S., begin operations
1997- **Month 3-6**: Hire initial staff, establish clients, generate revenue
1998- **Month 6-12**: Build out the team, achieve first-year milestones
1999- **Month 12-18**: Company has 1+ year of operations — eligible for EB-1C
2000- **Month 15-18**: Prepare EB-1C business plan showing matured operations
2001- **Month 18-24**: File I-140 petition with comprehensive evidence package
2002
2003## Conclusion
2004
2005The L-1A to EB-1C transition is a proven pathway, but it requires intentional planning from day one. Your business plan is the thread that connects both petitions — showing USCIS a consistent, credible narrative of a multinational executive building a successful U.S. operation.
2006
2007[Create your EB-1C business plan →](/visa/get-started)`},{slug:"l1a-new-office-business-plan-requirements",title:"L-1A New Office Business Plan: USCIS Requirements & 1-Year Plan",description:"A complete guide to the L-1A new office business plan: what USCIS requires, the 1-year operating plan, hiring timeline, financial projections, and the standard for the extension petition.",date:"May 14, 2026",category:"seo",keywords:["L-1A new office","L-1A new office business plan","new office L1A requirements","L1A 1 year extension","L1A new office USCIS","L1A startup visa"],priority:2,content:`# L-1A New Office Business Plan: USCIS Requirements & 1-Year Plan
2008
2009The **L-1A "new office"** petition is one of the most scrutinized categories on the USCIS docket. When the U.S. entity has been operating for less than one year, the petitioner must convince adjudicators that a real, viable business will exist within twelve months — and that it will support a bona fide executive or managerial role.
2010
2011The business plan is the single most important piece of evidence in that petition. This guide walks through exactly what USCIS expects, what the 1-year operating plan must demonstrate, and how to set up the file for a smooth extension a year later.
2012
2013## What Makes a New Office L-1A Different
2014
2015A standard L-1A petition relies on an established U.S. office. A new office L-1A relies on a *promise* — that within one year of approval, the U.S. entity will:
2016
2017- Be operating in a business sense (not just incorporated)
2018- Generate revenue and employ U.S. workers
2019- Support the beneficiary in a primarily executive or managerial capacity
2020
20218 CFR 214.2(l)(3)(v) and the related USCIS Policy Manual chapters spell out the documentary burden. The business plan ties the regulatory criteria to a concrete, time-bound operating roadmap.
2022
2023## The Five Things USCIS Reads For
2024
2025Every new office L-1A business plan should make these five points obvious to a busy adjudicator skimming on a deadline:
2026
20271. **Physical premises** — the U.S. entity has secured sufficient physical space (a signed lease, not just a virtual office)
20282. **Qualifying corporate relationship** — parent, subsidiary, affiliate, or branch relationship with the foreign employer is documented
20293. **Financial ability** — the foreign or U.S. entity has the resources to compensate the beneficiary and start operations
20304. **Bona fide business activity** — the entity will be "doing business" regularly, systematically, and continuously (not a shell)
20315. **Future managerial role** — within one year, the company will be large and complex enough to support the executive or managerial duties claimed
2032
2033The plan should not bury these points. Lead with them in the executive summary, then prove each one in the body.
2034
2035## The 1-Year Operating Plan
2036
2037The heart of a new office L-1A plan is a month-by-month or quarter-by-quarter operating plan covering the full first year. Adjudicators want to see realistic, sequenced milestones — not generic optimism.
2038
2039A strong 12-month plan includes:
2040
2041- **Months 1-3** — beneficiary relocates, finalizes premises, registers state/local tax accounts, opens U.S. bank accounts, completes initial vendor onboarding, hires first 1-2 administrative or operational employees
2042- **Months 4-6** — first revenue contracts close, marketing and sales infrastru
2042cture stands up, second wave of hires (operations, sales)
2043- **Months 7-9** — middle-management layer comes online, allowing the beneficiary to delegate day-to-day execution
2044- **Months 10-12** — organization has 5-10+ U.S. employees with documented reporting lines, the beneficiary's role is clearly executive or managerial, revenue run-rate supports the extension narrative
2045
2046The point of this timeline isn't to commit the company to specific dates — it's to demonstrate that the petitioner has thought through how an executive role *materializes* over twelve months.
2047
2048## Org Chart: Now vs. Year One
2049
2050Include two org charts:
2051
2052- **Day 1** — beneficiary plus initial hires (often just the beneficiary at filing)
2053- **Month 12** — projected structure with named or role-based positions, reporting lines, and a clear span of control under the beneficiary
2054
2055The Month 12 chart should show enough layers and headcount that the beneficiary is primarily directing the organization or a major function — not personally performing the day-to-day work.
2056
2057## Financial Projections That Hold Up
2058
2059New office L-1A financials are often where petitions fall apart. Common mistakes:
2060
2061- Hockey-stick revenue with no customer pipeline to back it up
2062- Payroll that doesn't match the org chart
2063- No working capital cushion to bridge the pre-revenue months
2064- Assumptions that contradict the parent company's stated financial commitment
2065
2066At minimum, include a 12-month P&L by month, a 3-year annual P&L, a cash flow statement, and a clear statement of capitalization (how much the parent or investors are committing, and when funds will land in the U.S. account).
2067
2068Every assumption should reconcile with another exhibit: payroll matches the org chart, marketing spend matches the customer acquisition plan, rent matches the lease.
2069
2070## Don't Forget the Extension
2071
2072A new office L-1A is approved for **one year only**. The extension petition will be evaluated against what you promised in the original plan.
2073
2074Smart counsel treats the original plan as a forward-looking contract: the company will be measured against it 10-11 months from now. That means projections should be ambitious enough to satisfy adjudicators today, but credible enough that the extension package can demonstrate substantial progress toward those milestones.
2075
2076Keep the original plan, all questionnaire inputs, and the supporting financial model on file. At extension time, you'll need to map actuals against projections and explain any meaningful variances.
2077
2078## A Reusable Structure
2079
2080A new office L-1A plan typically runs 30-50 pages and includes:
2081
20821. Executive Summary (with the five USCIS points front-loaded)
20832. The Beneficiary — qualifications and role
20843. Corporate Structure & Qualifying Relationship
20854. The U.S. Entity — premises, registrations, banking
20865. Products & Services
20876. Market Analysis & Industry Outlook
20887. Customer Acquisition & Sales Strategy
20898. Operations Plan
20909. 12-Month Operating Roadmap
209110. Organizational Structure (Day 1 and Month 12)
209211. Staffing Plan & Hiring Timeline
209312. Financial Projections (monthly Year 1, annual Years 2-3)
209413. Capitalization & Source of Funds
209514. Risk Analysis
209615. Conclusion
2097
2098## How BizPlanner AI Helps
2099
2100BizPlanner AI generates a USCIS-formatted new office L-1A business plan from a structured questionnaire and your uploaded documents (lease, parent company financials, beneficiary resume, organizational documents). The output is a 21-section plan with two org charts, a monthly Year 1 financial model, and a 3-year projection — editable and exportable as PDF or Word.
2101
2102[Start your L-1A new office plan →](/visa/get-started)`},{slug:"eb5-business-plan-requirements-guide",title:"EB-5 Business Plan: Matter of Ho Requirements & Job Creation Proof",description:"Everything an EB-5 investor needs in a Matter of Ho compliant business plan: 10 job creation methodology, capital deployment, market analysis, and economic impact documentation.",date:"May 7, 2026",category:"seo",keywords:["EB-5 business plan","Matter of Ho business plan","EB-5 job creation","EB-5 direct investment","EB-5 requirements","EB-5 investor visa business plan"],priority:2,content:`# EB-5 Business Plan: Matter of Ho Requirements & Job Creation Proof
2103
2104The EB-5 investor visa is one of the most documentation-heavy categories USCIS adjudicates. For direct investments — outside the Regional Center program — the business plan carries an enormous evidentiary burden. It must satisfy the standard set in **Matter of Ho** and demonstrate, on its own, that the investment will create at least 10 qualifying U.S. jobs within a reasonable time.
2105
2106This guide covers what the Ho standard actually requires, what a USCIS-ready EB-5 plan looks like, and the most common reasons direct EB-5 petitions are issued an RFE or denial.
2107
2108## The Matter of Ho Standard
2109
2110Matter of Ho, 22 I&N Dec. 206 (Assoc. Comm'r 1998), set the modern bar for EB-5 business plans. The decision established that the plan must be **comprehe
2110nsive** and **credible**, and it identified the elements every plan must include:
2111
2112- Description of the business and its products or services
2113- Analysis of the market, customers, and competition
2114- Marketing strategy
2115- Organizational structure
2116- Personnel experience
2117- Hiring plan with a job-by-job timeline
2118- Permits and licenses required
2119- Sales, cost, and income projections — with the assumptions behind them
2120
2121An adjudicator should be able to read the plan and reach the same conclusion the petitioner reached: that 10 qualifying jobs will exist within a reasonable time after the investor is admitted as a conditional permanent resident.
2122
2123## What Counts as a Qualifying Job
2124
2125Not every U.S. employee counts toward the 10-job requirement. For direct EB-5 cases:
2126
2127- The job must be **full-time** — at least 35 hours per week
2128- The position must be **permanent**, not seasonal or temporary
2129- The employee must be a **U.S. worker** — citizen, lawful permanent resident, or other work-authorized status (the investor, spouse, and children do not count)
2130- The job must be **created by the new commercial enterprise** — not jobs that existed before the investment, except in the limited "troubled business" context
2131
2132Job-sharing arrangements that together total 35 hours can count, but the plan needs to document this clearly. Independent contractors generally do not count.
2133
2134## The Job Creation Timeline
2135
2136The plan should include a month-by-month or quarter-by-quarter hiring schedule for the full conditional residence period (typically 24 months). For each position, include:
2137
2138- Job title and a substantive description of duties
2139- Required qualifications
2140- Start date relative to capital deployment
2141- Salary or wage range
2142- Reporting relationship
2143
2144The cumulative headcount curve should reach at least 10 qualifying positions within a defensible window — ideally well before the I-829 (removal of conditions) petition is filed.
2145
2146## Capital at Risk and Source of Funds
2147
2148While source of funds documentation lives largely outside the business plan, the plan must demonstrate that the full required investment — currently **$1,050,000** for standard investments, or **$800,000** in a Targeted Employment Area (TEA) — is being put **at risk** in the new commercial enterprise, with a credible plan for deployment.
2149
2150The plan should walk through:
2151
2152- The total capital required to execute the business
2153- How and when the EB-5 funds will be deployed (equipment, leasehold improvements, working c
2153apital, payroll, marketing)
2154- Any additional capital sources (founder equity, debt, other investors) and how they fit into the structure
2155
2156Idle capital sitting in a bank account does not satisfy the "at risk" requirement. The deployment schedule should align with the hiring timeline and operating milestones.
2157
2158## Market Analysis That Justifies the Projections
2159
2160EB-5 financial projections are scrutinized harder than almost any other visa category, because the entire job creation case rests on them. Adjudicators look for projections grounded in:
2161
2162- Industry data with named, citable sources
2163- A defined target market with size and growth estimates
2164- Competitive analysis showing realistic share assumptions
2165- Customer acquisition costs and channels that match the marketing budget
2166
2167If the plan projects $5M in Year 2 revenue, the market section must make $5M look achievable — not aspirational.
2168
2169## Financial Statements
2170
2171A complete EB-5 plan includes:
2172
2173- **Sources & Uses** — total capital and where it goes
2174- **5-year P&L** — monthly for Year 1, annual thereafter
2175- **5-year Cash Flow** — showing the business can fund itself once deployment is complete
2176- **5-year Balance Sheet**
2177- **Break-even analysis** and key sensitivity scenarios
2178
2179Every assumption should reconcile with the operating narrative. The payroll line should match the staffing plan to the dollar.
2180
2181## Common RFE Triggers
2182
2183The most frequent RFEs on direct EB-5 business plans cluster around:
2184
2185- Job projections without a credible hiring timeline
2186- Revenue projections disconnected from market analysis
2187- Insufficient detail on capital deployment
2188- Generic, off-the-shelf market analysis that doesn't reference the specific industry or geography
2189- Missing licensing or regulatory analysis for regulated businesses
2190- Inconsistencies between the plan, the I-526E form, and the source of funds package
2191
2192## Direct vs. Regional Center
2193
2194This guide focuses on **direct** EB-5 cases. Regional Center investments rely on an approved exemplar and an economist's job creation analysis (typically RIMS II or IMPLAN), and the standalone business plan requirements are different. If you're investing through a Regional Center, work directly with the Regional Center's documentation rather than building a plan from scratch.
2195
2196## How BizPlanner AI Helps
2197
2198BizPlanner AI produces a Matter of Ho aligned business plan for direct EB-5 cases, including a job-by-job hiring schedule, 5-year financial model, sources and uses, and a market analysis section grounded in industry data. The plan is generated from a structured questionnaire and your uploaded supporting documents, and exports to PDF or Word for attorney review.
2199
2200[Start your EB-5 business plan →](/visa/get-started)`},{slug:"uscis-business-plan-checklist",title:"USCIS Business Plan Checklist: The 14 Elements Every Adjudicator Looks For",description:"A practical, attorney-tested checklist of the 14 elements USCIS adjudicators look for in any employment-based visa business plan — L-1, E-2, EB-1C, EB-2 NIW, EB-5, and O-1.",date:"Apr 30, 2026",category:"seo",keywords:["USCIS business plan","USCIS business plan requirements","immigration business plan checklist","visa business plan elements","Matter of Ho checklist"],priority:2,content:`# USCIS Business Plan Checklist: The 14 Elements Every Adjudicator Looks For
2201
2202Across L-1, E-2, EB-1C, EB-2 NIW, EB-5, and O-1 petitions, USCIS adjudicators look for the same core building blocks in a business plan — even when the underlying legal standard differs. The visa category determines emphasis; it doesn't change the structure.
2203
2204This is the working checklist we use at BizPlanner AI to validate that a plan is RFE-resistant before it ships. Use it as a final pass before filing.
2205
2206## 1. Executive Summary Aligned to the Visa Category
2207
2208The first page should signal — without ambiguity — which visa category the plan supports and which legal standard it satisfies. An L-1A plan leads with managerial capacity. An E-2 plan leads with substantiality of investment and non-marginality. An EB-2 NIW plan leads with the three Dhanasar prongs.
2209
2210A generic "About the Company" opener wastes the most valuable real estate in the entire document.
2211
2212## 2. Beneficiary or Investor Profile
2213
2214A short, focused section establishing the beneficiary's qualifications and connection to the petition: title, prior experience, the specific role they will hold in the U.S. entity, and (where relevant) their ownership and capital contribution.
2215
2216## 3. Corporate Structure and Qualifying Relationship
2217
2218For L-1 and EB-1C, the qualifying relationship between the foreign and U.S. entities must be unmistakable: ownership percentages, formation documents, board structure. A clean entity diagram solves more problems than a paragraph of prose.
2219
2220## 4. Products and Services
2221
2222Concrete description of what the company sells, who buys it, and what differentiates it. Avoid jargon. An adjudicator with no industry background should be able to summarize the business in two sentences after reading this section.
2223
2224## 5. Market Analysis with Citable Sources
2225
2226Industry size, growth rate, segmentation, and trends — with named sources (IBISWorld, Statista, Census, BLS, peer-reviewed studies, trade associations). "Industry experts predict" is not a source.
2227
2228## 6. Target Market and Customer Profile
2229
2230B2B firmographics or B2C demographics that show the petitioner knows exactly who the customer is. Include geography, size, buying behavior, and pain points the company addresses.
2231
2232## 7. Competitive Landscape
2233
2234Three to five named competitors with positioning, pricing, and a clear-eyed view of how the petitioner's company differentiates. Claiming "no competition" almost always reads as a red flag.
2235
2236## 8. Marketing and Sales Strategy
2237
2238How the company will actually acquire customers, broken down by channel, with budget and conversion assumptions that reconcile with the financial model.
2239
2240## 9. Operations Plan
2241
2242Where the business operates, how it produces or delivers, key vendors and partners, technology stack, and any regulatory or licensing requirements. For E-2 and L-1 cases, premises documentation belongs here.
2243
2244## 10. Organizational Structure
2245
2246Visual org chart with named positions, reporting lines, and span of control. For L-1A and EB-1C, this chart is the heart of the petition — it has to show, on its face, that the beneficiary is primarily directing the organization or a major function.
2247
2248## 11. Staffing Plan and Hiring Timeline
2249
2250Position-by-position hiring schedule with titles, job descriptions, qualifications, salaries, and start dates. For EB-5, this is the job creation evidence. For L-1A new office, this is how managerial capacity becomes credible.
2251
2252## 12. Financial Projections
2253
2254Five-year P&L, cash flow, and balance sheet. Monthly granularity for Year 1 in new office and EB-5 cases. Every line item should trace back to an assumption stated elsewhere in the plan.
2255
2256## 13. Capitalization and Sources of Funds
2257
2258Total capital required, where it comes from, when it arrives, and how it will be deployed. For E-2 and EB-5, this section must align precisely with the source of funds package and any wire confirmations in the file.
2259
2260## 14. Risk Analysis and Mitigation
2261
2262A short, honest section identifying the three to five most material risks and how the company will address them. Adjudicators trust petitioners who acknowledge risk far more than petitioners who pretend none exists.
2263
2264## Cross-Cutting Quality Checks
2265
2266Before the plan ships, run these final checks:
2267
2268- **Internal consistency** — payroll matches the org chart, marketing matches the customer acquisition plan, rent matches the lease, capital matches the source of funds
2269- **Citations** — every market claim has a named source
2270- **Tense and voice** — projections are forward-looking; achievements are documented in the past tense with evidence
2271- **Length** — most strong plans run 30-60 pages; padding doesn't help and dilutive content hurts
2272- **Visuals** — at least one clean org chart, ideally one market sizing graphic, and clean financial tables
2273
2274## How BizPlanner AI Helps
2275
2276Every plan generated by BizPlanner AI includes all 14 elements above, structured into 21 USCIS-aligned sections, with the emphasis automatically adjusted for the visa category selected at intake. The output is editable, exportable to PDF or Word, and ready for attorney review.
2277
2278[Generate a USCIS-ready business plan →](/visa/get-started)`},{slug:"e2-visa-business-plan-5-year-projections",title:"E-2 Visa 5-Year Projections: How to Prove Non-Marginality",description:"How to build E-2 visa five-year financial projections that demonstrate non-marginality, job creation, and the economic impact USCIS expects from a treaty investor.",date:"Apr 23, 2026",category:"seo",keywords:["E-2 visa 5 year projections","E-2 non-marginality","E-2 financial projections","E-2 business plan","E-2 treaty investor","E2 visa requirements"],priority:2,content:`# E-2 Visa 5-Year Projections: How to Prove Non-Marginality
2279
2280The E-2 treaty investor visa requires the investment to be **substantial** and the enterprise to be **more than marginal**. Marginality is where most weak E-2 petitions fall apart — and the five-year financial projection is the single most important exhibit for proving the business will generate more than just a living for the investor and family.
2281
2282This guide walks through how to build E-2 projections that adjudicators trust.
2283
2284## What "Non-Marginal" Actually Means
2285
2286Per 9 FAM 402.9-6(E), a marginal enterprise is one that does not have the present or future capacity to generate more than enough income to provide a minimal living for the investor and family. The bar is not "the business will eventually be profitable" — it's "the business will, within five years of E-2 status, generate income or job creation that meaningfully exceeds the investor's personal needs."
2287
2288There are two recognized paths to demonstrate non-marginality:
2289
22901. **Income** — the business will produce significantly more income than what the investor needs to live on
22912. **Job creation** — the business will employ U.S. workers in numbers and roles that produce real economic impact
2292
2293Either path works. Strong plans cover both.
2294
2295## The Five-Year Horizon
2296
2297Consular officers and USCIS examiners expect projections covering five full years of operation from the initial filing date. The trajectory matters as much as the absolute numbers — a flat or declining curve undermines the case, while steady, defensible growth supports it.
2298
2299At minimum, the financial section should include:
2300
2301- **Year 1 monthly P&L** — to show the ramp from launch to operating cadence
2302- **Years 2-5 annual P&L** — revenue, COGS, operating expenses, EBITDA, net income
2303- **5-year cash flow statement** — to demonstrate the business can self-fund after initial deployment
2304- **5-year balance sheet** — particularly important when the investment is partially in fixed assets
2305- **Sources and uses of funds** — tracing the investor's capital from origin to deployment
2306
2307## Building Projections That Hold Up
2308
2309The single biggest mistake in E-2 financials is unsourced optimism. Every revenue line should trace back to:
2310
2311- A defined customer count or transaction volume
2312- A defined average price or ticket size
2313- A defined growth rate, supported by either market data or operational levers (ad
2313ditional locations, sales hires, capacity expansion)
2314
2315If the plan projects $1.2M in Year 3 revenue, the reader should be able to follow it to "180 customers per month at $550 per transaction, growing 8% per quarter from a Year 2 base of 130 customers per month, driven by the second sales hire in Q2 and the marketing budget expansion in Q3."
2316
2317Vague projections invite RFEs. Granular, traceable projections close them out before they start.
2318
2319## The Personal Needs Threshold
2320
2321Document the investor's personal living expenses explicitly — household budget, family size, location, anticipated lifestyle. Then compare projected net business income to that figure across the five-year window.
2322
2323By Year 3 or Year 4 at the latest, projected net income to the investor should clearly exceed the household need by a meaningful multiple. By Year 5, the business should be producing income that is unmistakably beyond a "minimal living."
2324
2325## The Job Creation Path
2326
2327Even when the income path looks strong, including a credible job creation narrative strengthens the case. The five-year staffing plan should show:
2328
2329- Hiring sequence by position and quarter
2330- Salary or wage ranges per position
2331- Total annual payroll growth
2332- U.S. worker vs. non-U.S. worker breakdown (only U.S. workers contribute to the non-marginality argument)
2333
2334A business that grows from 1 employee at filing to 6-10 U.S. employees by Year 5 makes non-marginality almost self-evident.
2335
2336## Assumptions Section
2337
2338Treat the assumptions section as the most important part of the financial exhibit. Pull every key input into a single, readable table:
2339
2340- Revenue assumptions by segment or product
2341- Gross margin by line
2342- Headcount and fully loaded payroll
2343- Rent, marketing, technology, and other major operating lines
2344- Tax assumptions
2345- Working capital and capital expenditure
2346
2347If an adjudicator wants to interrogate any single number, they should be able to find the underlying assumption in one place.
2348
2349## Sensitivity and Conservatism
2350
2351Strong E-2 plans include at least a brief sensitivity analysis — what happens to the trajectory if revenue comes in 20% below plan, or if a key cost runs 15% higher. The point is not to show a perfect outcome in every scenario; it's to show the investor has thought through the downside and the business still avoids marginality in a reasonable adverse case.
2352
2353## Common Reasons Projections Fail
2354
2355- Top-line growth with no corresponding sales or marketing infrastructure
2356- Headcount that doesn't reconcile with payroll
2357- Net income margins inconsistent with industry benchmarks for the sector
2358- No working capital plan to bridge pre-revenue months
2359- Projections that assume zero competition or unrealistic market share
2360- Year 5 projections that imply triple-digit growth without a credible scaling path
2361
2362## How BizPlanner AI Helps
2363
2364BizPlanner AI generates E-2 five-year projections from a structured questionnaire, with revenue and cost assumptions linked to the staffing plan and the operating narrative. The output includes monthly Year 1, annual Years 2-5, cash flow, balance sheet, and a sources and uses statement — formatted to the standard adjudicators and consular officers expect.
2365
2366[Start your E-2 business plan →](/visa/get-started)`},{slug:"immigration-business-plan-cost-comparison",title:"How Much Does an Immigration Business Plan Cost? (2026 Pricing Breakdown)",description:"A breakdown of what immigration business plans cost in 2026 — traditional consultants, freelance writers, boutique firms, and AI-generated plans — with what to expect at each price point.",date:"Apr 16, 2026",category:"seo",keywords:["immigration business plan cost","visa business plan price","EB-5 business plan cost","L-1 business plan cost","E-2 business plan cost","USCIS business plan price"],priority:2,content:`# How Much Does an Immigration Business Plan Cost? (2026 Pricing Breakdown)
2367
2368Immigration business plans range from a few hundred dollars to well over $10,000, depending on who writes them and what visa category they support. Before paying anyone, it helps to understand what each price tier actually buys — and where the quality differences show up in front of an adjudicator.
2369
2370This guide breaks down what to expect at each price point in 2026, by visa category.
2371
2372## What Drives the Price
2373
2374Three factors set the price of an immigration business plan:
2375
23761. **Visa category complexity** — EB-5 and EB-1C plans are the most documentation-heavy and price the highest; E-2 and L-1A new office are mid-tier; O-1 and EB-2 NIW are typically lighter on quantitative requirements
23772. **Financial modeling depth** — a plan with a real five-year monthly model, sources and uses, cash flow, and balance sheet costs meaningfully more than one with a two-page P&L
23783. **Research and customization** — named market data sources, real competitor analysis, and industry-specific operating detail add hours
2379
2380## Price Tiers in the Market
2381
2382### Freelance writers ($300-$1,500)
2383
2384The bottom of the market. Often delivered by general-purpose business plan writers without immigration experience. Common failure modes: generic templates, no visa-specific framing, financials that don't reconcile internally, market analysis with uncited claims. Cheap, but typically requires substantial attorney rework — often more than the plan saved.
2385
2386### Online template providers ($500-$2,500)
2387
2388Form-fill templates with limited customization. Adequate for the most straightforward E-2 or O-1 cases where the business is genuinely simple. Rarely sufficient for EB-5, EB-1C, or L-1A new office without substantial supplementation.
2389
2390### AI-generated plans ($299-$799)
2391
2392A newer category. Quality varies widely. The best AI-generated plans are written to a USCIS-aligned structure, pull in your specific business details and uploaded documents, and produce financial projections that reconcile internally. The worst are repackaged generic content. Look for: visa-specific section structure, the ability to upload supporting documents, and editable output (not a locked PDF).
2393
2394BizPlanner AI's visa business plan is priced at **$399** for a single plan, with attorney subscription tiers for firms handling multiple cases per month.
2395
2396### Boutique immigration plan firms ($3,500-$8,000)
2397
2398The mid-to-upper end of the professional market. Typically a former immigration paralegal or business writer with focused experience in one or two visa categories. Higher quality than freelance, more customization than templates, but turnaround is usually 2-4 weeks and revisions cost extra.
2399
2400### Specialized EB-5 and EB-1C firms ($7,500-$15,000+)
2401
2402The top of the market. Used primarily for EB-5 direct investment cases and complex EB-1C petitions where the documentary burden is highest. Often includes an economist on the team for EB-5 job creation analysis. Worth the price for the highest-stakes cases; overkill for most L-1 and E-2 work.
2403
2404## What You Should Expect at Each Tier
2405
2406Regardless of price, a USCIS-ready plan should include all 14 core elements: executive summary tied to the visa standard, benef
2406iciary profile, corporate structure, products and services, market analysis with sources, target market, competitive landscape, marketing and sales strategy, operations plan, org chart, staffing plan and hiring timeline, five-year financials, capitalization and sources of funds, and risk analysis.
2407
2408If a quoted plan — at any price — doesn't cover all 14, that's a quality red flag before it's a pricing question.
2409
2410## When AI-Generated Plans Make Sense
2411
2412AI-generated plans are particularly well-suited for:
2413
2414- L-1A new office petitions with clean corporate structures
2415- E-2 cases in established industries with strong market data
2416- O-1 and EB-2 NIW petitions where the business plan supports the petition but isn't the centerpiece
2417- Attorneys handling high volume who need a strong first draft to customize, not a finished document from scratch
2418
2419They're a less obvious fit when:
2420
2421- The case involves complex multi-entity structures or unusual capital arrangements
2422- The industry is niche enough that public market data is sparse
2423- The petition has already received an RFE and needs a targeted response
2424
2425In those cases, AI can still produce the structural backbone, but expect to do meaningful editorial work on top.
2426
2427## Hidden Costs
2428
2429A few costs that don't show up in the quoted price:
2430
2431- **Revision rounds** — most traditional firms include 1-2 revisions; additional rounds cost extra
2432- **Rush turnaround** — anything under 2 weeks typically carries a 25-50% premium at boutique firms
2433- **Translations** — if supporting documents are in another language, certified translations are billed separately
2434- **Attorney review time** — the cheaper the plan, the more time the attorney spends fixing it
2435
2436## The Real Question
2437
2438The right question isn't "what's the cheapest plan I can buy" — it's "what's the total cost to get a filing-ready plan in front of the adjudicator on time." Counting attorney rework, a $500 freelance plan often costs more than a $399 AI plan or a $4,500 boutique plan once the case actually ships.
2439
2440## How BizPlanner AI Compares
2441
2442BizPlanner AI generates a 21-section, USCIS-aligned visa business plan from a structured intake and your uploaded documents, with a five-year financial model and editable PDF and Word output. Individual plans are $399. Attorney subscription tiers are available at $499/month and $399/month (billed annually), each including 2 plans per cycle and additional plans at $149.
2443
2444[Compare pricing →](/visa/pricing) · [Start a plan →](/visa/get-started)`},{slug:"l1a-visa-business-plan-guide",title:"L-1A Visa Business Plan: What USCIS Actually Wants to See",description:"A practical guide to writing an L-1A intracompany transferee business plan that proves managerial capacity and U.S. operational viability.",date:"Jul 06, 2026",category:"guide",keywords:["L1A visa business plan","L-1A intracompany transferee","L1A managerial capacity","USCIS L1A","L1A new office","immigration business plan"],priority:2,content:`# L-1A Visa Business Plan: What USCIS Actually Wants to See
2445
2446The L-1A visa lets multinational companies transfer executives or managers from a foreign office to a U.S. entity. For new-office L-1A petitions in particular, USCIS expects a detailed business plan that proves two things: the beneficiary will function in a genuinely managerial or executive role, and the U.S. operation is real, funded, and viable.
2447
2448This guide walks through what an L-1A business plan needs to cover — and where most petitions fall short.
2449
2450## Who the L-1A Business Plan Is For
2451
2452L-1A petitions typically require a business plan when:
2453
2454- The U.S. entity is a **new office** (less than 1 year of operations)
2455- The petitioner is a **small or growth-stage** company where managerial capacity isn't obvious from headcount alone
2456- USCIS issues an **RFE** asking for evidence of the beneficiary's duties, the organizational hierarchy, or the U.S. entity's ability to support an executive role within one year
2457
2458## The Core Argument
2459
2460Every L-1A business plan is really answering one question: *within one year of admission, will the beneficiary primarily perform managerial or executive duties in a real operating business?*
2461
2462To answer that, your plan needs to demonstrate:
2463
24641. A **qualifying relationship** between the foreign parent and U.S. entity (parent, subsidiary, affiliate, or branch)
24652. **Physical premises** secured for the U.S. operation
24663. **Financial ability** of the foreign entity to compensate the beneficiary and support the U.S. office
24674. A **staffing plan** that produces subordinates for the beneficiary to manage
24685. A **role definition** that is managerial or executive in substance, not just in title
2469
2470## Sections Every L-1A Plan Should Include
2471
2472- **Executive Summary** — framed around the L-1A eligibility criteria, not generic business goals
2473- **Company Background** — history and operations of both the foreign parent and the U.S. entity
2474- **Qualifying Relationship** — corporate structure diagram and ownership evidence
2475- **Position Description** — the beneficiary's duties broken down by percentage of time, with each duty tagged as managerial, executive, or operational
2476- **Organizational Structure** — org charts for the U.S. entity at filing and at the end of year one, with the beneficiary at the top of a real hierarchy
2477- **Market Analysis** — U.S. market opportunity, target customers, and competitive landscape
2478- **Operations Plan** — facilities, equipment, technology, and daily workflows
2479- **Staffing Plan** — hiring timeline showing at least a small team of subordinates by month 12
2480- **Marketing Strategy** — how the U.S. entity will acquire customers
2481- **Financial Projections** — 5-year revenue, expenses, and profitability, with year one funded from committed capital
2482- **Risk Analysis** — SWOT and mitigation, especially around adjudicator concerns
2483- **Milestones & Timeline** — measurable goals for months 3, 6, 9, and 12
2484
2485## Common Mistakes That Trigger RFEs
2486
2487- **Vague duty descriptions.** "Oversees operations" isn't managerial evidence. Break duties into concrete tasks with percentages and identify who the beneficiary supervises for each.
2488- **Flat org charts.** If the beneficiary has no direct reports or only reports to themselves, USCIS will read the role as operational, not managerial.
2489- **Financials disconnected from the plan.** Revenue projections must line up with the staffing plan and marketing spend. Adjudicators check the math.
2490- **Generic market analysis.** Cite specific U.S. market data, not global industry commentary.
2491- **New-office plans that skip year one.** USCIS specifically wants to know what will exist in month 12. Missing that section is a near-guaranteed RFE.
2492
2493## How AI Speeds This Up
2494
2495Drafting an L-1A plan from scratch typically takes 20-40 hours between the attorney and the client. BizPlanner AI generates the full 21-section L-1A structure from a structured intake and uploaded documents (resumes, corporate records, foreign parent financials), then lets the attorney edit each section directly. Most attorneys use it to produce a strong first draft in under an hour and spend their time refining rather than writing.
2496
2497[Start an L-1A plan →](/visa/get-started) · [See L-1A template →](/visa/templates/l1a-visa-business-plan)`},{slug:"l1b-visa-business-plan-guide",title:"L-1B Visa Business Plan: Making Specialized Knowledge Legible to USCIS",description:"How to write an L-1B business plan that clearly articulates specialized knowledge and explains why the U.S. operation needs the beneficiary's specific expertise.",date:"Jul 06, 2026",category:"guide",keywords:["L1B visa business plan","L-1B specialized knowledge","USCIS L1B","L1B RFE","immigration business plan","knowledge transfer plan"],priority:2,content:`# L-1B Visa Business Plan: Making Specialized Knowledge Legible to USCIS
2498
2499L-1B petitions are often harder than L-1A. "Specialized knowledge" is a slippery standard, and RFE rates on L-1B remain high. A well-structured business plan won't win a weak case, but it can turn a defensible case into a clear one.
2500
2501## What Specialized Knowledge Actually Means
2502
2503USCIS defines specialized knowledge as either:
2504
2505- **Special knowledge** — advanced knowledge of the petitioning organization's product, service, research, equipment, techniques, management, or other interests and its application in international markets, OR
2506- **Advanced knowledge** — an advanced level of knowledge or expertise in the organization's processes and procedures
2507
2508The keyword in both definitions is *the organization's*. Generic industry expertise isn't specialized knowledge. Your plan has to tie the beneficiary's expertise to something proprietary about your company.
2509
2510## The Core Argument
2511
2512An L-1B plan needs to establish:
2513
25141. The company has **proprietary** products, technology, methodology, or processes
25152. The beneficiary has **specific knowledge** of those proprietary elements that isn't generally available in the U.S. labor market
25163. The U.S. operation has a **concrete business need** for that knowledge right now
25174. Transferring the knowledge to a U.S. worker is **not feasible in the short term**
2518
2519## Sections That Do the Heavy Lifting
2520
2521- **Executive Summary** — positions the specialized knowledge and business context in a single page
2522- **Company Background** — history of proprietary technology and products developed
2523- **Specialized Knowledge Definition** — a clear, evidence-backed articulation of what makes the beneficiary's expertise unique
2524- **Product & Technology Context** — description of proprietary systems, products, or processes the beneficiary works with
2525- **U.S. Business Need** — the specific U.S. project, client, or initiative that requires this expertise
2526- **Market Analysis** — industry context and competitive positioning
2527- **Operations Plan** — how the beneficiary's role fits into daily U.S. operations
2528- **Staffing Plan** — team structure and why domestic hiring or short-term training isn't a realistic substitute
2529- **Financial Projections** — revenue impact tied to the specialized role
2530- **Knowledge Transfer Plan** — long-term plan for developing domestic expertise
2531
2532## What USCIS Adjudicators Look For
2533
2534- **Specificity over adjectives.** "Deep expertise" isn't evidence. Which product, which module, which methodology, and how many years of proprietary training?
2535- **A knowledge transfer plan.** Petitions that ignore this section imply the company will never train U.S. workers, which reads as substitution rather than augmentation.
2536- **Alignment with the foreign role.** If the U.S. duties don't map back to the beneficiary's actual role abroad, the specialized-knowledge story falls apart.
2537
2538## Where Petitions Fall Short
2539
2540The most common weakness is treating the plan as a formality. L-1B business plans that recycle L-1A templates almost always trigger RFEs because the specialized-knowledge argument gets buried instead of foregrounded.
2541
2542## How BizPlanner AI Helps
2543
2544Our L-1B template puts specialized knowledge front and center. The AI drafts the Specialized Knowledge Definition and Knowledge Transfer Plan sections directly from your questionnaire responses and any technical documentation you upload — patents, internal training materials, or product architecture docs — and structures the rest of the plan around that argument.
2545
2546[Start an L-1B plan →](/visa/get-started) · [See L-1B template →](/visa/templates/l1b-visa-business-plan)`},{slug:"e2-visa-business-plan-guide",title:"E-2 Visa Business Plan: Substantial, Real, Not Marginal",description:"How to structure an E-2 treaty investor business plan that satisfies the substantial investment, real enterprise, and non-marginality requirements.",date:"Jul 06, 2026",category:"guide",keywords:["E2 visa business plan","E-2 treaty investor","E2 substantial investment","E2 marginality","USCIS E2","immigration business plan"],priority:2,content:`# E-2 Visa Business Plan: Substantial, Real, Not Marginal
2547
2548The E-2 treaty investor visa turns on three pillars: the investment is **substantial**, the enterprise is **real and active**, and the business is **not marginal**. Every section of an E-2 business plan should reinforce at least one of those three points.
2549
2550## The Three Pillars in Plain Language
2551
2552- **Substantial investment.** The amount invested must be substantial in relation to the total cost of purchasing or establishing the business. There's no fixed dollar threshold — a $70,000 investment in a $100,000 business is more substantial than $500,000 in a $10M business.
2553- **Real and operating enterprise.** The business must be a real, active commercial undertaking that produces goods or services for profit. Idle investments, undeveloped land, and paper companies don't qualify.
2554- **Not marginal.** The enterprise must generate more than enough income to provide a minimal living for the investor and family, or make a significant economic contribution (usually through job creation).
2555
2556## Sections Every E-2 Plan Should Include
2557
2558- **Executive Summary** — investment overview, business concept, and immigration context
2559- **Investment Details** — source of funds, investment amount to date, and remaining committed capital
2560- **Business Description** — products/services, business model, and value proposition
2561- **Market Analysis** — target market, TAM/SAM/SOM, and industry trends
2562- **Competitive Analysis** — competitor landscape and defensible advantages
2563- **Marketing Strategy** — customer acquisition, pricing, and growth channels
2564- **Operations Plan** — location, facilities, technology, and daily operations
2565- **Staffing & Job Creation** — hiring plan showing U.S. job creation over 5 years
2566- **Financial Projections** — 5-year P&L, cash flow, and break-even analysis
2567- **Economic Impact** — jobs, tax revenue, and community contribution
2568- **Risk Analysis** — SWOT and contingency planning
2569
2570## Substantiality: Show the Math
2571
2572Consular officers want to see a substantiality ratio, not just an absolute number. Structure the Investment Details section around:
2573
2574- Total cost to acquire or establish the business
2575- Amount already spent (with receipts, wire transfers, invoices)
2576- Amount irrevocably committed
2577- Percentage of total cost represented by the investment
2578
2579Anything below ~50% for a small business tends to draw scrutiny. Very large investments in low-cost businesses can also raise questions — the ratio is what matters.
2580
2581## Marginality: Beat It With the Financials
2582
2583You beat the marginality test in one of two ways:
2584
25851. **Income beyond minimal living** — the 5-year P&L shows the investor's household drawing well above the U.S. median for the family size, with the business still profitable.
25862. **Significant economic contribution** — the staffing plan shows meaningful U.S. job creation, typically 3-5 employees by year 3 for smaller investments, more for larger ones.
2587
2588The staffing plan and the financials must be internally consistent. If year-three revenue is $500K but the staffing plan shows 10 employees, adjudicators will spot the mismatch immediately.
2589
2590## Source of Funds
2591
2592E-2 filings live and die on source-of-funds documentation. The plan should reference (not replace) the underlying evidence: bank statements, sale-of-property records, gift affidavits, loan documents, business sale proceeds. If the funds come from multiple sources, the Investment Details section should walk through each tranche.
2593
2594## How BizPlanner AI Helps
2595
2596Our E-2 template pre-structures the Investment Details, Economic Impact, and Financial Projections sections around the three pillars. The AI generates realistic 5-year projections and a staffing plan tied to your specific investment amount and industry, then flags marginality risks so you can address them before filing.
2597
2598[Start an E-2 plan →](/visa/get-started) · [See E-2 template →](/visa/templates/e2-visa-business-plan)`},{slug:"eb1c-visa-business-plan-guide",title:"EB-1C Business Plan: Proving Sustained Managerial Capacity for a Green Card",description:"How to write an EB-1C business plan that demonstrates long-term U.S. operational viability and sustained managerial or executive capacity for permanent residency.",date:"Jul 06, 2026",category:"guide",keywords:["EB1C visa business plan","EB-1C multinational manager","EB1C green card","sustained managerial capacity","USCIS EB1C","immigration business plan"],priority:2,content:`# EB-1C Business Plan: Proving Sustained Managerial Capacity for a Green Card
2599
2600EB-1C is the permanent residency counterpart to L-1A. The elements look similar on paper — qualifying relationship, managerial or executive role, one year of foreign employment — but the standard is meaningfully higher. EB-1C petitions are permanent, and adjudicators want to see a business that will continue to require an executive for the long term, not just survive year one.
2601
2602## Where EB-1C Differs From L-1A
2603
2604- **U.S. entity maturity.** The U.S. entity must have been doing business for at least one year before filing. New-office logic doesn't apply.
2605- **Sustained managerial capacity.** The plan must show the role is managerial today *and* will continue to require managerial oversight for years to come.
2606- **Doing business.** USCIS wants evidence of regular, systematic, and continuous provision of goods or services — not preparatory activity.
2607
2608## Sections Every EB-1C Plan Should Include
2609
2610- **Executive Summary** — green card petition context and business sustainability overview
2611- **Company Background** — history of both foreign and U.S. entities and their qualifying relationship
2612- **Organizational Structure** — advanced org charts showing sustained managerial hierarchy at the U.S. entity
2613- **Managerial Capacity** — detailed analysis of executive duties, supervisory scope, and decision-making authority
2614- **Market Analysis** — U.S. market position and long-term growth opportunities
2615- **Operations Plan** — established operations demonstrating business maturity
2616- **Staffing & Growth** — current team and multi-year hiring plan
2617- **Financial Projections** — 5-year outlook proving ongoing sustainability
2618- **Business Achievements** — milestones already achieved that demonstrate operational success
2619- **Future Growth Strategy** — long-term expansion plans and market development
2620
2621## The Sustained Capacity Argument
2622
2623A common EB-1C failure mode is treating the plan like a snapshot. The plan should walk the adjudicator through three time horizons:
2624
26251. **Today** — current org chart, headcount, revenue, and the beneficiary's current duties
26262. **Years 1-3** — growth trajectory, additional layers of management, and expanded scope
26273. **Years 3-5** — long-term positioning that continues to require an executive at the top
2628
2629If growth flatlines in year two, the sustained-capacity story weakens. The financials and staffing plan need to show a trajectory that keeps the executive role necessary.
2630
2631## Business Achievements Matter More Than People Realize
2632
2633Because EB-1C requires an established U.S. entity, the plan is your chance to translate paperwork into narrative. Actual revenue, actual clients, actual hires, actual contracts — all belong in the Business Achievements section. Adjudicators use it as a reality check against the financial projections.
2634
2635## Common RFE Triggers
2636
2637- **Small teams.** Fewer than 5-8 employees invites first-line-supervisor scrutiny. Emphasize professional staff and multiple management layers.
2638- **Founder-heavy duties.** If the beneficiary is still selling, coding, or performing operational work, the plan must show that shifting away from those duties is already underway.
2639- **Weak foreign-entity ties.** The qualifying relationship must be evidenced through the plan and supporting documents; don't assume prior L-1A approval carries over.
2640
2641## How BizPlanner AI Helps
2642
2643Our EB-1C template pushes the sustained-capacity argument into every relevant section — org charts, staffing plan, financial projections, and future growth strategy — and drafts a Business Achievements section from your existing corporate records so the plan reads as a mature, operating business rather than a hopeful startup.
2644
2645[Start an EB-1C plan →](/visa/get-started) · [See EB-1C template →](/visa/templates/eb1c-visa-business-plan)`},{slug:"eb2-niw-visa-business-plan-guide",title:"EB-2 NIW Business Plan: Winning the Dhanasar Three-Prong Test",description:"How to write an EB-2 National Interest Waiver business plan that satisfies the Dhanasar prongs — substantial merit, national importance, and waiver justification.",date:"Jul 06, 2026",category:"guide",keywords:["EB2 NIW business plan","national interest waiver","Dhanasar three prong","EB-2 NIW petition","USCIS NIW","immigration business plan"],priority:2,content:`# EB-2 NIW Business Plan: Winning the Dhanasar Three-Prong Test
2646
2647EB-2 National Interest Waiver petitions live and die on the Dhanasar framework. AAO's 2016 *Matter of Dhanasar* decision established three prongs, and every serious NIW business plan is really an argument for all three.
2648
2649## The Three Prongs
2650
26511. **Substantial merit and national importance** of the proposed endeavor
26522. The petitioner is **well positioned** to advance the endeavor
26533. On balance, it would be **beneficial to the United States** to waive the labor certification requirement
2654
2655A plan that only argues one prong strongly and hand-waves the other two rarely succeeds. Adjudicators score all three.
2656
2657## Sections Every NIW Plan Should Include
2658
2659- **Executive Summary** — proposed endeavor overview aligned with all three Dhanasar prongs
2660- **Proposed Endeavor** — detailed description of your business or research endeavor
2661- **Substantial Merit** — evidence of intrinsic value and significance to the field
2662- **National Importance** — impact analysis showing broad national benefit, not just local
2663- **Petitioner's Qualifications** — education, experience, and achievements that position you to succeed
2664- **Market Analysis** — industry landscape and market opportunity
2665- **Business Model** — revenue streams, pricing, and go-to-market strategy
2666- **Economic Impact** — job creation, tax revenue, and community benefit projections
2667- **Financial Projections** — 5-year financial model demonstrating viability
2668- **Waiver Justification** — why waiving labor certification benefits the United States
2669
2670## Framing the Endeavor
2671
2672The proposed endeavor should be specific enough that an adjudicator can evaluate it. "Advance AI in healthcare" is too broad. "Develop and commercialize an FDA-cleared computer-vision tool for early detection of diabetic retinopathy in underserved primary care clinics" is specific, testable, and easier to tie to national importance.
2673
2674## Prong 1: Substantial Merit and National Importance
2675
2676Substantial merit is usually the easiest prong. National importance is where petitions get stuck. Adjudicators want to see impact that extends beyond a single employer or region:
2677
2678- **Geographic scope** — does the endeavor benefit multiple states or the country as a whole?
2679- **Sector-wide impact** — does it advance an industry, not just one company?
2680- **Alignment with U.S. priorities** — public health, national security, infrastructure, climate, workforce development, technological leadership
2681
2682## Prong 2: Well Positioned
2683
2684This prong is about the petitioner, not the endeavor. Evidence includes:
2685
2686- Education, training, and skills relevant to the endeavor
2687- Record of success in similar work
2688- A **realistic plan** for how the endeavor will progress — this is where the business plan does its heaviest lifting
2689- Progress toward the endeavor already achieved
2690- Interest from potential customers, users, investors, or collaborators
2691
2692A strong Prong 2 argument reads more like a startup pitch than a resume — milestones, traction, funding, letters of interest.
2693
2694## Prong 3: Beneficial to Waive Labor Certification
2695
2696This is often the shortest section but should not be an afterthought. Argue that:
2697
2698- It would be impractical or against the national interest to require a labor certification for this specific endeavor
2699- The petitioner's contribution outweighs the interest of protecting U.S. workers through PERM
2700- Urgency, uniqueness, or entrepreneurial nature of the endeavor makes PERM ill-suited
2701
2702## How BizPlanner AI Helps
2703
2704Our EB-2 NIW template structures every section around the Dhanasar prongs, drafts the Substantial Merit and National Importance sections from your questionnaire and uploaded credentials, and produces a five-year financial model that supports the Well Positioned argument.
2705
2706[Start an EB-2 NIW plan →](/visa/get-started) · [See EB-2 NIW template →](/visa/templates/eb2-niw-visa-business-plan)`},{slug:"o1-visa-business-plan-guide",title:"O-1 Visa Business Plan: Turning Extraordinary Ability Into a Business Case",description:"How to write an O-1 business plan that showcases extraordinary ability through entrepreneurial achievements, innovation, and a credible U.S. venture.",date:"Jul 06, 2026",category:"guide",keywords:["O1 visa business plan","O-1 extraordinary ability","O1 entrepreneur","USCIS O1","immigration business plan","founder visa"],priority:2,content:`# O-1 Visa Business Plan: Turning Extraordinary Ability Into a Business Case
2707
2708O-1 petitions don't strictly require a business plan, but self-petitioning founders and entrepreneurs almost always benefit from one. The plan does two jobs: it substantiates the extraordinary-ability evidence with a real venture, and it explains what the beneficiary will actually *do* in the U.S.
2709
2710## What the O-1 Plan Is Really For
2711
2712USCIS wants to see:
2713
27141. **Extraordinary ability** in the sciences, arts, education, business, or athletics — evidenced by sustained national or international acclaim
27152. A **U.S. engagement** for services that require someone of extraordinary ability
27163. A **credible plan of activities** during the O-1 validity period
2717
2718For entrepreneurs, the business plan is the "plan of activities." It ties the acclaim to a specific U.S. business that requires that acclaim.
2719
2720## Sections Every O-1 Plan Should Include
2721
2722- **Executive Summary** — extraordinary ability profile and business concept in one page
2723- **Beneficiary Profile** — narrative bio establishing extraordinary ability with references to underlying evidence
2724- **Extraordinary Achievements** — awards, publications, media coverage, judging roles, and other qualifying evidence, contextualized
2725- **Company Overview** — the U.S. venture the beneficiary will lead
2726- **Role Description** — the beneficiary's role and why it requires extraordinary ability
2727- **Market Analysis** — industry landscape and opportunity
2728- **Business Model** — how the venture makes money
2729- **Operations Plan** — how the business will run day to day
2730- **Staffing Plan** — team structure and hiring roadmap
2731- **Financial Projections** — 5-year outlook demonstrating viability
2732- **Impact & Recognition** — expected industry impact and continued acclaim
2733
2734## Turning Acclaim Into a Business Argument
2735
2736The Extraordinary Achievements section should not read as a résumé dump. Each achievement should be tied back to how it enables the U.S. venture:
2737
2738- A publication in a top-tier journal → credibility with enterprise customers
2739- A patent → defensible product moat
2740- Speaking at industry conferences → distribution channel and reputational advantage
2741- Prior venture exits → operating experience that de-risks execution
2742
2743Adjudicators reading an entrepreneur O-1 want to understand *why the acclaim matters commercially*, not just that it exists.
2744
2745## The Role Description
2746
2747The role should be one that clearly requires extraordinary ability. Founder-CEO of a research-driven company, chief scientist, principal investigator, artistic director — these read cleanly. Generic "COO" or "General Manager" titles for a small startup can invite scrutiny unless the duties are tightly tied to the beneficiary's specific expertise.
2748
2749## For Founders on the O-1A
2750
2751Since USCIS's 2022 policy update clarifying O-1A eligibility for STEM entrepreneurs, more founders are self-petitioning. In those cases the business plan should also address:
2752
2753- Ownership structure and whether an appropriate U.S. agent or petitioner arrangement is in place
2754- Traction to date — funding raised, users, revenue, hires
2755- How the venture continues to build on the beneficiary's acclaim
2756
2757## How BizPlanner AI Helps
2758
2759Our O-1 template weaves the extraordinary-ability narrative through the business plan instead of confining it to a single section. The AI drafts the Beneficiary Profile and Impact & Recognition sections from your questionnaire and uploaded evidence (publications, press, awards, patents) and generates a five-year plan that shows the venture requires exactly the acclaim the petition claims.
2760
2761[Start an O-1 plan →](/visa/get-started) · [See O-1 template →](/visa/templates/o1-visa-business-plan)`},{slug:"business-plan-for-a-restaurant",title:"How to Write a Restaurant Business Plan (With Real Numbers)",description:"A step-by-step restaurant business plan guide covering concept, menu engineering, prime cost, staffing, and the financial model lenders expect.",date:"Aug 10, 2026",category:"guide",keywords:["restaurant business plan","how to write a restaurant business plan","restaurant financial projections","restaurant startup costs","food service business plan"],priority:2,content:`# How to Write a Restaurant Business Plan (With Real Numbers)
2762
2763Restaurants fail on math more often than on food. A restaurant business plan is where you prove — to yourself first, then to a landlord, lender, or investor — that the concept can cover rent, labor, and food cost and still leave something behind.
2764
2765## 1. Concept and Positioning
2766
2767Open with a paragraph anyone can repeat back: cuisine, service format, average check, and who eats there. "Fast-casual Oaxacan with a $17 average check serving the lunch crowd in a 40,000-employee office district" tells a reader more than three pages of ambience copy.
2768
2769## 2. Location and Market Analysis
2770
2771Lenders read this section for foot traffic and competition density. Cover:
2772
2773- Daytime and residential population within a 1-mile radius
2774- Competing concepts and their price points
2775- Lease terms: base rent, CAM charges, escalations, term length
2776- Rent as a percentage of projected sales — aim for 6-10%
2777
2778## 3. Menu Engineering
2779
2780Show a sample menu with a food cost percentage per item. Group items into stars (high margin, high popularity), plowhorses, puzzles, and dogs. A reader wants to see that your best-selling items are also your most profitable ones.
2781
2782## 4. Prime Cost — The Number That Matters
2783
2784Prime cost = cost of goods sold + total labor. Healthy full-service restaurants land at 60-65% of sales; fast casual can run lower. If your model shows 72%, no amount of narrative fixes it.
2785
2786| Line item | Typical % of sales |
2787| --- | --- |
2788| Food & beverage cost | 28-35% |
2789| Labor (incl. taxes/benefits) | 28-33% |
2790| Occupancy | 6-10% |
2791| Other operating | 12-18% |
2792| Target net margin | 5-12% |
2793
2794## 5. Staffing Plan
2795
2796List positions, headcount by shift, hourly rate, and total weekly hours. Then tie it back to a labor cost percentage at your projected volume. Include a ramp: most restaurants overstaff for the first 60 days on purpose.
2797
2798## 6. Startup Costs and Funding
2799
2800Break out build-out, kitchen equipment, smallwares, POS, permits and licenses, initial inventory, pre-opening payroll and marketing, and — critically — working capital for the first 90 days. Undercapitalization at opening is the single most common cause of a first-year close.
2801
2802## 7. Financial Projections
2803
2804Provide three years of monthly-to-annual projections: revenue by daypart, cost of sales, labor, operating expenses, EBITDA, and a break-even analysis expressed in covers per day. Include a downside case at 70% of projected volume.
2805
2806## 8. Marketing and Ramp Plan
2807
2808Pre-opening (soft launch, neighborhood press, local influencers), opening month, and steady-state. Cover the channels you'll actually run: Google Business Profile, delivery marketplaces, loyalty, and community partnerships.
2809
2810## Common Mistakes
2811
2812- Projecting full capacity from month one
2813- Ignoring delivery commission (25-30%) in the margin math
2814- Leaving out owner compensation
2815- No downside scenario
2816
2817## Generate It in Minutes
2818
2819BizPlanner AI builds a full restaurant business plan — market analysis, competitor set, staffing, and a linked five-year financial model — from a short questionnaire, then lets you edit every line before exporting to PDF or Word.
2820
2821[Create your restaurant plan →](/get-started) · [Browse templates →](/templates)`},{slug:"how-to-write-a-market-analysis",title:"How to Write a Market Analysis for Your Business Plan",description:"A practical framework for market analysis: TAM/SAM/SOM sizing, customer segmentation, competitor mapping, and sourcing data investors trust.",date:"Aug 09, 2026",category:"guide",keywords:["market analysis","how to write a market analysis","TAM SAM SOM","business plan market research","competitive analysis"],priority:2,content:`# How to Write a Market Analysis for Your Business Plan
2822
2823The market analysis is where most business plans quietly lose credibility. Either it's a wall of borrowed industry statistics with no connection to the business, or it's a single sentence claiming a "$400 billion market." Here's how to write one that holds up.
2824
2825## Step 1: Define the Market You're Actually In
2826
2827Be narrower than feels comfortable. You are not in "the global wellness market." You are in "boutique reformer Pilates studios in metro Austin." A defensible narrow market beats an impressive broad one every time.
2828
2829## Step 2: Size It — TAM, SAM, SOM
2830
2831- **TAM (Total Addressable Market):** everyone who could theoretically buy the category
2832- **SAM (Serviceable Available Market):** the slice your model and geography can reach
2833- **SOM (Serviceable Obtainable Market):** what you can realistically capture in 3-5 years
2834
2835Build SOM bottom-up: units × price × realistic penetration. Top-down percentages ("we only need 1% of the market") are a red flag to every investor who has heard it before.
2836
2837## Step 3: Segment the Customer
2838
2839For each segment, document: who they are, the problem they're solving, what they currently do instead, willingness to pay, and how you reach them. Two or three well-drawn segments beat six vague ones.
2840
2841## Step 4: Map the Competition
2842
2843Build a table comparing direct competitors, indirect substitutes, and the status quo across price, feature set, distribution, and positioning. Then state — in one sentence — why a customer switches to you. If you can't, the plan has a strategy problem, not a writing problem.
2844
2845## Step 5: Identify Trends and Drivers
2846
2847Regulation, technology shifts, demographics, and cost curves. Each trend should be tied to a consequence for your business, not listed for color.
2848
2849## Step 6: Cite Real Sources
2850
2851Trustworthy sources include government statistics agencies, trade associations, public company filings, and primary research you conducted (surveys, interviews, pilot data). Cite them inline so a reader can verify. Never invent a number.
2852
2853## What Good Looks Like
2854
2855A strong market analysis answers four questions in order: How big is the opportunity? Who exactly buys? Who else wants them? Why do you win? Anything that doesn't serve one of those questions belongs in an appendix.
2856
2857## Do It Automatically
2858
2859BizPlanner AI generates industry trends, a competitor landscape, and a target-audience profile specific to your business and location, with editable sections you can refine with your own research.
2860
2861[Generate your market analysis →](/get-started) · [Try the competitive landscape tool →](/tools/compet
2861itive-landscape)`},{slug:"business-plan-for-sba-loan",title:"The Business Plan an SBA Lender Actually Reads",description:"What SBA 7(a) and 504 lenders look for in a business plan: debt service coverage, collateral, management experience, and the documents that come with it.",date:"Aug 08, 2026",category:"guide",keywords:["SBA loan business plan","SBA 7a business plan","business plan for a bank loan","debt service coverage ratio","small business loan application"],priority:2,content:`# The Business Plan an SBA Lender Actually Reads
2862
2863An SBA lender is not an investor. They are not buying upside — they are underwriting downside. That single difference should reshape how you write the plan.
2864
2865## What the Underwriter Is Testing
2866
28671. **Can the business service the debt?** Most lenders want a debt service coverage ratio (DSCR) of at least 1.15x-1.25x, calculated on projected cash flow after owner compensation.
28682. **Does management know this business?** Direct industry experience is the strongest single qualitative factor.
28693. **Is there collateral and equity injection?** SBA 7(a) loans commonly expect a 10% or greater injection from the borrower for startups or acquisitions.
28704. **Are the assumptions defensible?** Every revenue line must trace to something: signed contracts, comparable locations, historical financials, or industry benchmarks.
2871
2872## Sections to Prioritize
2873
2874- **Executive summary** with loan amount, use of proceeds, and repayment source stated in the first paragraph
2875- **Management team** with a résumé-level treatment of relevant operating experience
2876- **Use of proceeds table** itemizing every dollar
2877- **Three-year projections** with monthly detail for year one — income statement, balance sheet, and cash flow
2878- **Break-even analysis** and a sensitivity case at 80% of projected revenue
2879- **Collateral schedule** listing business and, where applicable, personal assets
2880
2881## The DSCR Math
2882
2883DSCR = net operating income ÷ annual debt service. If your projected NOI is $180,000 and annual principal and interest total $140,000, your DSCR is 1.29x — comfortably above most thresholds. Show this calculation explicitly in the plan; don't make the underwriter build it.
2884
2885## Documents That Travel With the Plan
2886
2887Personal financial statement (SBA Form 413), business and personal tax returns, interim financials, a debt schedule, lease or letter of intent, and licenses. The plan is the narrative; these are the proof.
2888
2889## Tone Matters
2890
2891Conservative beats ambitious. A plan that projects steady, well-supported growth with an explicit downside case reads as credible. Hockey sticks read as risk.
2892
2893## Build It Faster
2894
2895BizPlanner AI produces a lender-ready plan with linked income statement, cash flow, and balance sheet projections, plus break-even analysis — editable end to end and exportable to PDF or Word.
2896
2897[Start your loan-ready plan →](/get-started) · [See pricing →](/pricing)`},{slug:"one-page-business-plan-guide",title:"The One-Page Business Plan: When to Use It and What Goes On It",description:"A one-page business plan forces clarity. Here's the exact structure, when a lean plan is enough, and when you still need the full document.",date:"Aug 07, 2026",category:"guide",keywords:["one page business plan","lean business plan","business model canvas","simple business plan template","startup planning"],priority:2,content:`# The One-Page Business Plan: When to Use It and What Goes On It
2898
2899Not every situation calls for a 40-page document. A one-page plan is a thinking tool: it forces you to say what the business is, who pays, and how the money works — without room to hide.
2900
2901## When One Page Is Enough
2902
2903- Validating an early idea before you commit capital
2904- Internal alignment with a co-founder or first hires
2905- A quick pitch to a potential partner or advisor
2906- Annual planning for an established small business
2907
2908## When You Need the Full Plan
2909
2910- Bank or SBA financing
2911- Investor due diligence
2912- Immigration petitions (USCIS expects detail and evidence)
2913- Grant applications and franchise approvals
2914- Commercial lease negotiations with a skeptical landlord
2915
2916## The Nine Blocks
2917
29181. **Problem** — the specific pain, stated in the customer's words
29192. **Solution** — what you sell, in one sentence
29203. **Target customer** — the narrowest defensible segment
29214. **Unique value** — why you, not the incumbent or the status quo
29225. **Channels** — how customers find and buy
29236. **Revenue model** — pricing, unit economics, and repeat behavior
29247. **Cost structure** — the three largest cost lines
29258. **Key metrics** — the two or three numbers that tell you it's working
29269. **Milestones** — the next four quarters, with dates
2927
2928## Rules for Writing It
2929
2930Every block gets one to three sentences. No adjectives that can't be measured. If a block takes a paragraph, the underlying thinking isn't finished yet.
2931
2932## From One Page to a Full Plan
2933
2934The one-pager is the skeleton. When you need financing, a petition, or a partner's signature, the same nine blocks expand into an executive summary, market analysis, operations plan, and financial model.
2935
2936BizPlanner AI works both ways: answer a short questionnaire and get a complete plan you can trim to a summary, or start lean and expand section by section.
2937
2938[Start free →](/get-started) · [Browse templates →](/templates)`},{slug:"o1a-vs-eb1a-which-self-petition",title:"O-1A vs EB-1A: Which Self-Petition Fits Your Profile?",description:"A side-by-side comparison of the O-1A visa and EB-1A green card — evidentiary standards, business plan role, timelines, and how founders choose between them.",date:"Aug 10, 2026",category:"guide",keywords:["O-1A vs EB-1A","EB1A self petition","O1A visa requirements","extraordinary ability green card","founder immigration options"],priority:2,content:`# O-1A vs EB-1A: Which Self-Petition Fits Your Profile?
2939
2940Both categories turn on "extraordinary ability," and both are open to founders and researchers. They are not, however, the same bar — and the evidence package looks different.
2941
2942## The Core Difference
2943
2944| | O-1A | EB-1A |
2945| --- | --- | --- |
2946| Status | Nonimmigrant (temporary) | Immigrant (green card) |
2947| Standard | Extraordinary ability, national or international acclaim | Sustained 
2947national or international acclaim, top of the field |
2948| Self-petition | No — needs a U.S. petitioner or agent | Yes |
2949| Criteria | Meet 3 of 8 | Meet 3 of 10, plus final merits |
2950| Initial validity | Up to 3 years, extendable in 1-year increments | Permanent residence |
2951| Practical bar | High | Higher |
2952
2953## The Two-Step Reality
2954
2955Most founders do not choose one — they sequence. O-1A first to enter and build, EB-1A later once the record has thickened with U.S.-based traction: revenue, hires, funding, press, patents granted rather than filed.
2956
2957## Where the Business Plan Fits
2958
2959**For the O-1A**, the business plan proves the venture requires the beneficiary's specific extraordinary ability and that the itinerary of work is real. It should show why the role could not be filled by an ordinary manager.
2960
2961**For the EB-1A**, the plan supports the "prospective benefit to the United States" element and demonstrates that the beneficiary will continue working in the area of extraordinary ability. It documents the venture's economic footprint, hiring plan, and the beneficiary's ongoing central role.
2962
2963In both cases, the plan is supporting evidence — never a substitute for the criteria themselves.
2964
2965## Building the Evidence Record
2966
2967Strong records usually combine:
2968
2969- Original contributions of major significance, corroborated by independent expert letters
2970- Published material about the beneficiary in major media or trade press
2971- Judging the work of others (peer review, competition judging, grant panels)
2972- High remuneration relative to the field
2973- Membership in associations requiring outstanding achievement
2974- Awards recognized beyond a single employer
2975
2976For EB-1A, quality and independence of the corroboration matters more than volume.
2977
2978## Common Missteps
2979
2980- Filing EB-1A on an O-1A-strength record and receiving an RFE on final merits
2981- Business plans that read like generic startup plans with a beneficiary bio bolted on
2982- Recommendation letters written by close collaborators only
2983- Treating "filed" patents or preprints as equivalent to granted patents or peer-reviewed publications
2984
2985## How BizPlanner AI Helps
2986
2987Our O-1 and EB-1A templates are built as self-petition frameworks: the extraordinary-ability narrative runs through the plan rather than sitting in one section, and the AI drafts the beneficiary profile, impact and recognition, and prospective-benefit sections from your questionnaire and uploaded evidence.
2988
2989[Start a self-petition plan →](/visa/get-started) · [Compare visa templates →](/visa/templates)`},{slug:"consulate-interview-condensed-business-plan",title:"The 10-Page Consulate Brief: A Condensed Visa Business Plan That Works",description:"Consular officers have minutes, not hours. Here's how to condense a full visa business plan into a 10-page brief without losing the evidence that matters.",date:"Aug 09, 2026",category:"guide",keywords:["consulate interview business plan","E2 visa interview","condensed business plan","visa interview preparation","consular officer business plan"],priority:2,content:`# The 10-Page Consulate Brief: A Condensed Visa Business Plan That Works
2990
2991A USCIS adjudicator may spend an hour with your file. A consular officer at an E-2 or L-1 interview often has a few minutes and a stack of applications. The full 40-to-60-page business plan is the right document for the petition. It is the wrong document for the window.
2992
2993## Why a Condensed Version
2994
2995- Officers skim; they look for the two or three facts that resolve the category question
2996- Applicants who can walk through their own plan in five minutes present as credible operators
2997- A tight document reduces the chance of an inconsistency between what's on the page and what's said out loud
2998
2999## What Belongs in the 10 Pages
3000
30011. **Cover page** — applicant, entity, visa category, prepared-for line
30022. **Executive summary** — one page, the whole case
30033. **The business** — what it does, where, and current status
30044. **Investment or qualifying relationship** — amount irrevocably committed and its source, or the parent-subsidiary structure
30055. **Market and customers** — the demand evidence, compressed
30066. **Operations** — location, suppliers, licenses, and what's already in place
30077. **Organizational chart and staffing** — headcount today and the hiring plan by year
30088. **Financial summary** — revenue, expenses, and net income by year, on one page
30099. **Job creation and economic impact** — the number the officer wants
301010. **Milestones** — what happens in the first 12 months
3011
3012## What to Cut
3013
3014Long industry background, extended competitor profiles, generic risk boilerplate, appendices, and anything that doesn't change the eligibility answer. Keep the full plan available — reference it, don't reprint it.
3015
3016## Formatting Rules
3017
3018- One idea per page; the page title should state the conclusion
3019- Numbers in tables, not paragraphs
3020- Consistent figures with the full plan and the DS-160 or petition — inconsistency is the most damaging thing in the room
3021- Print-ready, letter size, with the firm or applicant branding on the cover
3022
3023## Rehearse Against It
3024
3025Every page should map to a question you can answer in two sentences: How much did you invest? Where did the money come from? How many people will you employ? Who buys from you? What happens if revenue is half your projection?
3026
3027## Generate It in One Click
3028
3029BizPlanner AI can condense any full visa plan into a formatted 10-page consulate brief that preserves the cover branding, financial summary, org chart, and j
3029ob-creation figures — exportable to PDF or Word.
3030
3031[See visa plans →](/visa-business-plan) · [Visa pricing →](/visa/pricing)`},{slug:"rfe-response-business-plan-strategy",title:"Responding to an RFE With a Business Plan: What Actually Moves the Needle",description:"How to use a business plan in a Request for Evidence response — addressing the officer's stated concerns, correcting inconsistencies, and adding verifiable proof.",date:"Aug 08, 2026",category:"guide",keywords:["RFE response business plan","USCIS request for evidence","L1A RFE","E2 RFE","immigration RFE strategy"],priority:2,content:`# Responding to an RFE With a Business Plan: What Actually Moves the Needle
3032
3033An RFE is a specific complaint. The most common mistake in a response is answering a different question than the one the officer asked — usually by resubmitting a longer version of the same plan.
3034
3035## Read the RFE Literally
3036
3037Officers typically use standardized paragraphs. Underline the operative sentence in each. Typical asks:
3038
3039- **Managerial capacity (L-1A):** the record does not establish the beneficiary will primarily manage staff or an essential function
3040- **Substantiality (E-2):** the investment appears marginal relative to the cost of establishing the business
3041- **Marginality (E-2):** insufficient evidence the enterprise will generate more than minimal living for the investor
3042- **Doing business (L-1/EB-1C):** insufficient evidence of regular, systematic, continuous operations
3043- **Position offered (EB-1C):** the U.S. role does not appear managerial or executive
3044
3045## Structure the Response Around the Complaint
3046
3047Build the response with a heading for each RFE paragraph, then answer it directly with (1) a short legal-standard restatement, (2) the specific evidence, and (3) a citation to the exhibit and page. The business plan supports this structure — it does not replace it.
3048
3049## What the Revised Plan Should Add
3050
3051- **A defensible org chart** showing subordinate positions with titles, duties, and either offer letters, payroll records, or a dated hiring schedule tied to revenue triggers
3052- **A time allocation table** for the beneficiary — percentage of time by function — when managerial capacity is challenged
3053- **Source-of-funds tracing** with bank records, wire confirmations, and a narrative for E-2 substantiality
3054- **Job creation projections** tied to specific revenue thresholds, not round numbers
3055- **Executed evidence of operations**: leases, licenses, insurance, contracts, invoices, and payroll filings
3056
3057## Fix Inconsistencies Before You File
3058
3059If the original plan projected 12 employees and payroll shows 3, address the variance explicitly with an updated plan and a short explanation. An unexplained inconsistency is more damaging than a modest number.
3060
3061## Avoid
3062
3063- Rewriting projections upward to "look better" — officers compare versions
3064- Adding pages of industry research that address no stated concern
3065- Letters of support that assert conclusions without documents behind them
3066
3067## How BizPlanner AI Helps
3068
3069You can regenerate any section of a visa plan with targeted instructions — for example, deepening the managerial-capacity narrative or rebuilding the staffing table around a documented hiring schedule — while keeping the rest of the plan and its financial model intact. Uploaded documents feed directly into the regenerated text.
3070
3071[Open the visa platform →](/visa-business-plan) · [Start a plan →](/visa/get-started)`},{slug:"visa-business-plan-job-creation-projections",title:"Job Creation Projections in a Visa Business Plan: Getting the Numbers Right",description:"How to build defensible hiring and job creation projections for L-1A, E-2, EB-1C, and EB-5 business plans — with the documentation adjudicators expect.",date:"Aug 07, 2026",category:"guide",keywords:["job creation projections visa","E2 visa job creation","L1A staffing plan","EB5 job creation","immigration business plan hiring"],priority:2,content:`# Job Creation Projections in a Visa Business Plan: Getting the Numbers Right
3072
3073Job creation is where adjudicators check whether a plan is grounded or aspirational. Round numbers that grow smoothly year over year — 5, 10, 15, 20 — signal that nobody did the math.
3074
3075## Build Headcount From Workload, Not From a Target
3076
3077Start with the operating driver: covers served, units shipped, tickets closed, clients managed. Then derive the staff required.
3078
3079Example for a services firm:
3080
3081- Each consultant serves 8 active clients
3082- Year 2 projects 34 active clients → 4.25 consultants → hire 4, with the fifth in Q4
3083- One operations coordinator per 6 consultants
3084- Management layer added when direct reports exceed 7
3085
3086Now the number has a reason behind it, and the reason survives an RFE.
3087
3088## Tie Hires to Revenue Triggers
3089
3090State the condition, not just the date: "Second sales hire onboards when monthly recurring revenue exceeds $65,000, projected Q3 of Year 2." This shows financial discipline and explains variance if the hire slips.
3091
3092## Specify Each Position Properly
3093
3094For every role include: title, FTE or part-time, start month, annual salary, and a two-sentence duty description. For managerial petitions, subordinate roles must be substantive — professionals or supervisors, not a list of generic assistants.
3095
3096## Category-Specific Notes
3097
3098- **L-1A new office:** USCIS expects the plan to show the U.S. entity will support a managerial role within one year. Show the subordinate structure that exists by month 12.
3099- **E-2:** the marginality test turns on the enterprise generating more than minimal living for the investor and family — U.S. hires are the strongest evidence.
3100- **EB-1C:** the U.S. entity must already be doing business; projections supplement payroll records rather than replacing them.
3101- **EB-5:** 10 full-time positions per investor, measured against program definitions of qualifying employees and full-time equivalency.
3102
3103## Reconcile With the Financial Model
3104
3105Total payroll in the staffing table must equal the payroll line in the income statement, including employer taxes and benefits (typically 12-20% on top of base). A mismatch between the narrative and the model is a fast credibility loss.
3106
3107## Document What Already Exists
3108
3109Offer letters, signed employment agreements, payroll registers, quarterly wage filings, and contractor invoices. Evidence of hires already made makes projected hires believable.
3110
3111## Automate the Consistency
3112
3113BizPlanner AI builds the staffing table, the org chart, and the five-year financial model from one intake, so headcount, salaries, and payroll expense stay reconciled across every section and every export.
3114
3115[Start a visa plan →](/visa/get-started) · [See visa templates →](/visa/templates)`},{slug:"bizplanner-vs-venturekit-comparison",title:"BizPlanner AI vs VentureKit: Which AI Business Plan Generator Fits Your Situation?",description:"An honest comparison of BizPlanner AI and VentureKit across output depth, industry templates, financials, exports and pricing — plus how to test any AI business plan tool before you pay.",date:"Aug 19, 2026",category:"guide",keywords:["bizplanner vs venturekit","best ai business plan generator","ai business plan generator comparison","venturekit alternative","ai business plan tools"],priority:.9,content:`# BizPlanner AI vs VentureKit: Which AI Business Plan Generator Fits Your Situation?
3116
3117Most "best AI business plan generator" lists rank tools by feature count. That is the wrong test. What matters is whether the document that comes out survives contact with the person reading it — a lender, an investor, a franchisor, or an immigration adjudicator.
3118
3119Here is how we compare BizPlanner AI to VentureKit, what each is good at, and how to judge any tool yourself before paying.
3120
3121## The short version
3122
3123| | BizPlanner AI | VentureKit |
3124|---|---|---|
3125| Core promise | A complete, investor-ready plan with financials in minutes | AI-assisted planning and startup ideation workflow |
3126| Industry starting points | 150+ industry-specific templates with real benchmarks | General-purpose generation |
3127| Financials | Auto-generated P&L, cash flow and five-year projections synced to the narrative | Included, lighter emphasis on statement-level detail |
3128| Editing | Full WYSIWYG editor with section-by-section regeneration | In-app editing |
3129| Exports | PDF and Word with formatting preserved | PDF export |
3130| Specialist output | USCIS visa business plans (L-1A, E-2, EB-5, EB-2 NIW, O-1, EB-1A and more) | Not a focus |
3131| Languages | 7 languages | English-first |
3132| Pricing model | One-time unlock per plan, no subscription | Subscription |
3133
3134This table is our own view. Verify anything on the VentureKit side against their current site before deciding — AI tools ship fast and pricing changes.
3135
3136## Where BizPlanner AI is the better fit
3137
3138**You need a specific industry, not a generic outline.** Our library covers 150+ industries, each with its own cost structure, margin bands and KPI set. A [bakery plan](/templates/bakery) opens with food cost percentage and daily covers; a [trucking plan](/templates/trucking-company) opens with cost per mile and deadhead ratio. Generic generators produce the same skeleton for both.
3139
3140**You need financials that reconcile.** Revenue assumptions flow into COGS, payroll, operating expenses and cash flow automatically. Change a number in the editor and the statements move with it. A plan where the narrative says twelve employees and the payroll line implies four is the fastest way to lose a reader.
3141
3142**You need a visa plan.** [Visa business plans](/visa-business-plan) are a separate product line with 21 USCIS-oriented sections, dual org charts, job-creation schedules and a 10-page condensed brief for consular interviews. General-purpose AI planners do not do this.
3143
3144**You want to pay once.** BizPlanner AI charges a one-time unlock per plan. If you are writing one plan, a monthly subscription is money you spend after you have stopped needing the tool.
3145
3146## Where another tool may fit better
3147
3148**You want an idea-validation workspace.** If you are still choosing between three ideas and want a tool that lives with you through that exploration, a subscription workspace makes more sense than per-plan pricing.
3149
3150**You need company-wide collaboration.** Multi-seat editing with granular permissions across a whole organisation is not what our standard product optimises for — though our visa product does support lawyer/client collaboration with Editor and Viewer roles.
3151
3152**You are locked into an existing stack.** If your accelerator or accountant already standardises on a specific tool, matching them beats switching.
3153
3154## How to test any AI business plan generator in 10 minutes
3155
31561. **Ask for your exact industry.** Does the output name real cost lines from that industry, or does it say "supplies and materials"?
31572. **Read the market analysis for numbers.** No market size, no growth rate, no named competitor means filler.
31583. **Open the financials.** Does gross margin match the cost structure in the narrative? Is there a stated growth assumption?
31594. **Change one input and re-check.** Raise your price 20%. If the statements do not move, the financials are decoration.
31605. **Export it.** Open the PDF and the Word file. Tables, charts and headings should survive.
3161
3162Most tools pass the first check and fail the third and fifth. That is the real difference between them.
3163
3164## Our position
3165
3166BizPlanner AI is built for people who need a finished, defensible document — a loan application, an investor packet, a franchise approval, an immigration petition — not a brainstorming canvas. If that is your situation, [generate a free preview](/get-started) and run the five checks on it before unlocking anything.
3167
3168[Compare industry templates →](/templates) · [See pricing →](/pricing)`},{slug:"best-ai-business-plan-generator-how-to-choose",title:"How to Choose the Best AI Business Plan Generator (2026 Buyer's Guide)",de
3168scription:"A practical framework for picking an AI business plan generator: output depth, financial modeling, industry specificity, export fidelity and pricing — with the tests that separate real tools from demos.",date:"Aug 19, 2026",category:"guide",keywords:["best ai business plan generator","ai business plan writer","business plan software comparison","ai business plan tool","how to choose business plan software"],priority:.95,content:`# How to Choose the Best AI Business Plan Generator (2026 Buyer's Guide)
3169
3170Every AI business plan generator can produce a document. Few produce a document that holds up when a lender, investor or adjudicator reads it closely. This is the framework we use — and the one we invite people to apply to us.
3171
3172## 1. Industry specificity beats template count
3173
3174"500+ templates" usually means one skeleton with 500 cover pages. The test is whether the output knows your unit economics.
3175
3176A restaurant plan should discuss food cost percentage, prime cost, covers per day and average check. A [car wash plan](/templates/car-wash) should discuss cars per hour, water reclamation and membership attach rate. If both talk about "operational efficiency" instead, the tool has industry labels but no industry knowledge.
3177
3178## 2. Financials must be a model, not a paragraph
3179
3180Ask three questions of any financial section:
3181
3182- Are there real statements — P&L, cash flow, balance sheet — or just a revenue chart?
3183- Is there a stated assumption behind the growth rate?
3184- Does changing an input change the outputs?
3185
3186A plan with static numbers cannot be defended in a meeting, because the first question you will get is "what happens if you hit half of that?"
3187
3188## 3. The narrative and the numbers must agree
3189
3190The most common failure in AI-generated plans is internal contradiction: a staffing section listing twelve employees, a payroll line implying four, and a market size no one sourced. Reviewers find these in minutes.
3191
3192Tools that generate each section independently create this problem structurally. Tools that generate from one shared model of your business do not.
3193
3194## 4. Export fidelity is part of the product
3195
3196You will hand this document to someone. Export to PDF and Word and check whether tables stay tables, org charts and SWOT grids render, the cover page is usable unedited, and page numbering survives.
3197
3198## 5. Match the pricing model to your need
3199
3200- **One plan, one time?** Per-plan pricing beats any subscription.
3201- **Ongoing advisory or agency work?** A subscription with multiple plans wins.
3202- **Specialist filings (immigration, SBA, franchise)?** Price matters less than whether the format matches what the reviewer expects.
3203
3204## 6. Check the specialist path before you commit
3205
3206Generic plans and [visa business plans](/visa-business-plan) are different documents. A USCIS plan needs job-creation schedules, org charts for two entities, evidentiary framing tied to the visa category and often a condensed brief for a consular interview. A generic generator will not produce these no matter how good its prose is.
3207
3208## 7. Editability is where the time actually goes
3209
3210Generation takes minutes; editing takes hours — unless the tool gives you section-level regeneration with instructions ("make this more conservative", "focus on B2B customers"), find-and-replace and a real editor. Judge the editing experience, not the first draft.
3211
3212## Run the test on us
3213
3214Every point above is checkable without paying: [start a plan](/get-started), read the free preview, and look for industry-specific cost lines, reconciled financials and a clean export.
3215
3216Want a head-to-head? Read [BizPlanner AI vs VentureKit](/insights/bizplanner-vs-venturekit-comparison).
3217
3218[Browse 150+ industry templates →](/templates) · [See pricing →](/pricing)`},{slug:"chatgpt-vs-business-plan-generator",title:"ChatGPT vs a Dedicated Business Plan Generator: What Actually Differs",description:"ChatGPT can write business plan prose. Here is where it breaks down — financial models, internal consistency, industry benchmarks, formatting and lender-ready exports — and when it is still the right tool.",date:"Aug 19, 2026",category:"guide",keywords:["chatgpt business plan","chatgpt vs business plan software","ai business plan generator","write business plan with ai","free ai business plan"],priority:.9,content:`# ChatGPT vs a Dedicated Business Plan Generator: What Actually Differs
3219
3220You can get business plan text out of ChatGPT. The question is what happens between that text and a document someone will fund.
3221
3222## What ChatGPT does well
3223
3224- **Drafting prose.** Executive summaries, mission statements and product descriptions come out fluent and fast.
3225- **Brainstorming.** Positioning options, customer segments, naming, objection handling.
3226- **Editing your own writing.** Tightening and reframing text you supply.
3227
3228If you are early and thinking out loud, this is genuinely useful.
3229
3230## Where it breaks down
3231
3232**1. Financial models.** A chat window returns numbers as text. It does not maintain a linked P&L, cash flow and balance sheet where changing your price updates gross margin, tax and closing cash. Ask for five-year projections twice and you get two different sets of numbers.
3233
3234**2. Internal consistency.** Each answer is generated independently, so section 3 hires twelve people while section 9's payroll implies four.
3235
3236**3. Industry benchmarks.** General models produce plausible-sounding averages. A plan claiming a 40% net margin for a grocery store tells the reader you have never run one.
3237
3238**4. Formatting and export.** You get markdown in a chat box. Turning that into a paginated PDF with a cover page, tables, an org chart and a SWOT grid is hours of manual work on every revision.
3239
3240**5. Specialist standards.** [Visa business plans](/visa-business-plan) are judged against category-specific expectations — Matter of Ho comprehensiveness for EB-5, managerial capacity for L-1A, the Dhanasar framework for EB-2 NIW. Generic prose does not satisfy them.
3241
3242## The honest comparison
3243
3244| Task | ChatGPT | Dedicated generator |
3245|---|---|---|
3246| First-draft prose | Excellent | Excellent |
3247| Linked financial statements | No | Yes |
3248| Consistency across sections | Manual | Structural |
3249| Industry cost structures | Generic | Benchmarked per industry |
3250| PDF / Word export | Manual | One click, formatted |
3251| Revision cycles | Re-prompt and re-format | Edit and re-export |
3252
3253## The practical workflow
3254
3255Use both. Think in ChatGPT, build in a plan tool:
3256
32571. Explore positioning, customers and pricing in a chat.
32582. Bring the decisions — not the prose — into a structured intake.
32593. Generate the plan with real financial statements attached.
32604. Edit section by section, regenerating anything that misses.
32615. Export to PDF and Word for whoever asked.
3262
3263That is how BizPlanner AI is designed: the AI writes, but the financial model, the industry benchmarks and the export pipeline are the parts a chat window cannot provide.
3264
3265[Generate a free preview →](/get-started) · [Read the buyer's guide →](/insights/best-ai-business-plan-generator-how-to-choose)`}],aB=()=>nu.filter(e=>e.category!=="seo").sort((e,t)=>!e.date||!t.date?0:new Date(t.date).getTime()-new Date(e.date).getTime()),rB=()=>nu.filter(e=>e.category==="seo"),sB=e=>nu.find(t=>t.slug===e),Gv=()=>{const e=aB(),t=rB(),n=tu("/insights"),a=fS([{name:"Insights",path:"/insights"}]);return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsxs(Gn,{children:[l.jsx("title",{children:"Insights & Business Planning Guides | BizPlanner AI"}),l.jsx("meta",{name:"description",content:"Expert guides, industry insights, and practical tips to help entrepreneurs write winning business plans and grow their startups."}),l.jsx("link",{rel:"canonical",href:n}),l.jsx("meta",{property:"og:title",content:"BizPlanner AI Insights"}),l.jsx("meta",{property:"og:description",content:"Guides and insights for entrepreneurs building investor-ready business plans."}),l.jsx("meta",{property:"og:url",content:n}),l.jsx("script",{type:"application/ld+json",children:JSON.stringify(a)})]}),l.jsx(kr,{}),l.jsx("section",{className:"pt-32 pb-16 px-4",children:l.jsxs("div",{className:"max-w-6xl mx-auto text-center",children:[l.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-primary/10 rounded-full text-primary text-sm font-medium mb-6",children:[l.jsx(sx,{className:"w-4 h-4"}),l.jsx("span",{children:"Blog"})]}),l.jsxs("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-bold font-display mb-6",children:["Latest ",l.jsx("span",{className:"text-primary",children:"Insights & Updates"})]}),l.jsx("p",{className:"text-xl text-muted-foreground max-w-3xl mx-auto mb-8",children:"Product updates, guides, and resources to help you build better business plans."})]})}),l.jsx("section",{className:"py-16 px-4",children:l.jsx("div",{className:"max-w-6xl mx-auto",children:l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-8",children:e.map(r=>l.jsxs(ee,{to:`/insights/${r.slug}`,className:"group flex flex-col bg-card border rounded-xl overflow-hidden hover:border-primary hover:shadow-lg transition-all",children:[r.thumb&&l.jsx("div",{className:"overflow-hidden",children:l.jsx("img",{src:r.thumb,alt:r.title,className:"w-full h-48 object-cover group-hover:scale-105 transition-transform duration-500",loading:"lazy"})}),l.jsxs("div",{className:"p-6 flex-1 flex flex-col",children:[r.date&&l.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:r.date}),l.jsx("h3",{className:"text-lg font-semibold font-display mb-3 group-hover:text-primary transition-colors",children:r.title}),l.jsx("p",{className:"text-muted-foreground text-sm line-clamp-3 flex-1",children:r.description}),l.jsxs("span",{className:"flex items-center gap-2 text-sm font-medium text-primary mt-4",children:["Read Article ",l.jsx(ot,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform"})]})]})]},r.slug))})})}),t.length>0&&l.jsx("section",{className:"py-16 px-4 bg-muted/30",children:l.jsxs("div",{className:"max-w-6xl mx-auto",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-8",children:"Business Guides"}),l.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-8",children:t.map(r=>l.jsxs(ee,{to:`/insights/${r.slug}`,className:"group flex flex-col bg-card border rounded-xl overflow-hidden hover:border-primary hover:shadow-lg transition-all",children:[l.jsxs("div",{className:"p-6 flex-1",children:[l.jsx("div",{className:"w-12 h-12 rounded-lg bg-primary/10 flex items-center justify-center mb-4",children:l.jsx(nx,{className:"w-6 h-6 text-primary"})}),l.jsx("h3",{className:"text-xl font-semibold font-display mb-3 group-hover:text-primary transition-colors",children:r.title}),l.jsx("p",{className:"text-muted-foreground line-clamp-3",children:r.description})]}),l.jsx("div",{className:"px-6 py-4 border-t bg-muted/30",children:l.jsxs("span",{className:"flex items-center gap-2 text-sm font-medium text-primary",children:["Read Article ",l.jsx(ot,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform"})]})})]},r.slug))})]})}),l.jsx("section",{className:"py-16 px-4 bg-primary/5",children:l.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[l.jsx("h2",{className:"text-3xl md:text-4xl font-bold font-display mb-4",children:"Ready to Put Your Knowledge Into Action?"}),l.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Use our AI-powered platform to create a comprehensive business plan incorporating all these best practices."}),l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",className:"text-lg px-8",children:["Create Your Business Plan ",l.jsx(Ls,{className:"ml-2 w-5 h-5"})]})})]})}),l.jsx(Sr,{})]})},Kv=()=>{const{slug:e}=Ks(),t=e?sB(e):void 0,n=tu(`/insights/${e??""}`);if(v.useEffect(()=>{window.scrollTo(0,0)},[e]),!t)return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsx(kr,{}),l.jsxs("div",{className:"pt-32 pb-16 px-4 text-center",children:[l.jsx("h1",{className:"text-3xl font-bold mb-4",children:"Article Not Found"}),l.jsx("p",{className:"text-muted-foreground mb-8",children:"The article you're looking for doesn't exist."}),l.jsx(ee,{to:"/insights",children:l.jsx(be,{children:"View All Insights"})})]}),l.jsx(Sr,{})]});const a=nu.filter(s=>s.slug!==t.slug).slice(0,3),r={"@context":"https://schema.org","@type":"Article",headline:t.title,de
3265scription:t.description,image:t.thumb||"https://bizplanner.ai/favicon.png",datePublished:t.date?new Date(t.date).toISOString():void 0,author:{"@type":"Organization",name:"BizPlanner AI",url:"https://bizplanner.ai"},publisher:{"@type":"Organization",name:"BizPlanner AI",logo:{"@type":"ImageObject",url:"https://bizplanner.ai/favicon.png"}},mainEntityOfPage:{"@type":"WebPage","@id":`https://bizplanner.ai/insights/${t.slug}`}};return l.jsxs("div",{className:"min-h-screen bg-background",children:[l.jsxs(Gn,{children:[l.jsxs("title",{children:[t.title," | BizPlanner AI Insights"]}),l.jsx("meta",{name:"description",content:t.description}),l.jsx("link",{rel:"canonical",href:n}),l.jsx("meta",{property:"og:title",content:t.title}),l.jsx("meta",{property:"og:description",content:t.description}),l.jsx("meta",{property:"og:url",content:n}),l.jsx("meta",{property:"og:type",content:"article"}),t.thumb&&l.jsx("meta",{property:"og:image",content:t.thumb}),l.jsx("script",{type:"application/ld+json",children:JSON.stringify(r)})]}),l.jsx(kr,{}),l.jsx("div",{className:"pt-24 px-4",children:l.jsx("div",{className:"max-w-4xl mx-auto",children:l.jsxs(ee,{to:"/insights",className:"inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-primary transition-colors",children:[l.jsx(tx,{className:"w-4 h-4"}),"Back to Insights"]})})}),l.jsx("section",{className:"py-8 px-4",children:l.jsxs("div",{className:"max-w-4xl mx-auto",children:[t.date&&l.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t.date}),l.jsx("h1",{className:"text-3xl md:text-4xl lg:text-5xl font-bold font-display mb-6",children:t.title}),l.jsx("p",{className:"text-xl text-muted-foreground",children:t.description}),t.thumb&&l.jsx("img",{src:t.thumb,alt:t.title,className:"w-full rounded-xl mt-8",loading:"lazy"})]})}),l.jsx("section",{className:"py-8 px-4",children:l.jsx("div",{className:"max-w-4xl mx-auto",children:l.jsx("div",{className:"prose prose-lg dark:prose-invert max-w-none",children:t.content.split(`
3266`).map((s,i)=>s.startsWith("# ")?l.jsx("h2",{className:"text-3xl font-bold mt-8 mb-4",children:s.replace("# ","")},i):s.startsWith("## ")?l.jsx("h3",{className:"text-2xl font-bold mt-6 mb-3",children:s.replace("## ","")},i):s.startsWith("### ")?l.jsx("h4",{className:"text-xl font-semibold mt-4 mb-2",children:s.replace("### ","")},i):s.startsWith("- ")?l.jsx("li",{className:"ml-4",children:s.replace("- ","")},i):s.trim()===""?null:l.jsx("p",{className:"mb-4 text-muted-foreground",children:s},i))})})}),l.jsx("section",{className:"py-16 px-4 bg-primary text-primary-foreground my-12",children:l.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[l.jsx("h2",{className:"text-2xl md:text-3xl font-bold font-display mb-4",children:"Apply These Insights to Your Business"}),l.jsx("p",{className:"text-lg opacity-90 mb-8",children:"Create a comprehensive business plan with AI-powered analysis and personalized recommendations."}),l.jsx(ee,{to:"/get-started",children:l.jsxs(be,{size:"lg",variant:"secondary",className:"text-lg px-8",children:["Get Started Free ",l.jsx(Ls,{className:"ml-2 w-5 h-5"})]})})]})}),a.length>0&&l.jsx("section",{className:"py-16 px-4",children:l.jsxs("div",{className:"max-w-6xl mx-auto",children:[l.jsx("h2",{className:"text-2xl font-bold font-display mb-8",children:"Continue Reading"}),l.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:a.map(s=>l.jsxs(ee,{to:`/insights/${s.slug}`,className:"group p-6 bg-card border rounded-xl hover:border-primary hover:shadow-lg transition-all",children:[l.jsx("div",{className:"w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center mb-4",children:l.jsx(nx,{className:"w-5 h-5 text-primary"})}),l.jsx("h3",{className:"font-semibold font-display mb-2 group-hover:text-primary transition-colors",children:s.title}),l.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:s.description}),l.jsxs("span",{className:"flex items-center gap-2 text-sm font-medium text-primary mt-4",children:["Read ",l.jsx(ot,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform"})]})]},s.slug))})]})}),l.jsx(Sr,{})]})},iB=()=>{const e=$t();return v.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",e.pathname)},[e.pathname]),l.jsxs("div",{className:"flex min-h-screen items-center justify-center bg-muted",children:[l.jsxs(Gn,{children:[l.jsx("title",{children:"Page not found — BizPlanner AI"}),l.jsx("meta",{name:"robots",content:"noindex, follow"})]}),l.jsxs("div",{className:"text-center",children:[l.jsx("h1",{className:"mb-4 text-4xl font-bold",children:"404"}),l.jsx("p",{className:"mb-4 text-xl text-muted-foreground",children:"Oops! Page not found"}),l.jsx("a",{href:"/",className:"text-primary underline hover:text-primary/90",children:"Return to Home"})]})]})},sl=["es","fr","de","pt","ko","ja"],gS=["es","fr","pt"],oB=["en",...gS],pd="https://bizplanner.ai",Ve=({children:e})=>{const{lang:t}=Ks(),{i18n:n}=ft(),a=$t();v.useEffect(()=>(t&&sl.includes(t)&&n.language!==t&&n.changeLanguage(t),t&&sl.includes(t)&&(document.documentElement.lang=t),()=>{document.documentElement.lang="en"}),[t,n]);const r=a.pathname.split("/")[1],s=(sl.includes(r)?a.pathname.slice(r.length+1):a.pathname)||"/",i=sl.includes(r)&&!gS.includes(r);return l.jsxs(l.Fragment,{children:[l.jsxs(Gn,{children:[i&&l.jsx("meta",{name:"robots",content:"noindex, follow"}),l.jsx("link",{rel:"alternate",hrefLang:"x-default",href:`${pd}${s}`}),oB.map(o=>{const c=o==="en"?`${pd}${s}`:`${pd}/${o}${s==="/"?"":s}`;return l.jsx("link",{rel:"alternate",hrefLang:o,href:c},o)})]}),e]})},lB=()=>{const{pathname:e}=$t();return v.useEffect(()=>{window.scrollTo(0,0)},[e]),null},cB="bp_referral_code",uB=()=>{const e=$t();return v.useEffect(()=>{const n=new URLSearchParams(e.search).get("ref");if(!n)return;const a=n.trim().toUpperCase().slice(0,40);if(/^[A-Z0-9_-]+$/.test(a))try{localStorage.setItem(cB,a)}catch{}},[e.search]),null},md="cookie_consent",dB=()=>{const[e,t]=v.useState(!1);v.useEffect(()=>{localStorage.getItem(md)||t(!0)},[]);const n=()=>{localStorage.setItem(md,"accepted"),t(!1)},a=()=>{localStorage.setItem(md,"declined"),t(!1)};return e?l.jsx("div",{className:"fixed bottom-0 left-0 right-0 z-50 p-4 bg-card border-t shadow-lg",children:l.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col sm:flex-row items-center justify-between gap-4",children:[l.jsxs("p",{className:"text-sm text-muted-foreground text-center sm:text-left",children:["We use cookies to improve your experience. By continuing, you agree to our"," ",l.jsx(ee,{to:"/cookies",className:"text-primary underline hover:text-primary/80",children:"Cookie Policy"}),"."]}),l.jsxs("div",{className:"flex gap-3 shrink-0",children:[l.jsx(be,{variant:"outline",size:"sm",onClick:a,children:"Decline"}),l.jsx(be,{size:"sm",onClick:n,children:"Accept"})]})]})}):null},le=({children:e})=>{const[t,n]=v.useState(null),[a,r]=v.useState(!0),s=$t();if(v.useEffect(()=>{let i=!0;const{data:{subscription:o}}=Oa.auth.onAuthStateChange((d,p)=>
3266{i&&(n(p),r(!1))});(async()=>{try{const{data:{session:d}}=await Oa.auth.getSession();if(!i)return;n(d)}catch(d){console.error("ProtectedRoute getSession failed:",d)}finally{i&&r(!1)}})();const u=setTimeout(()=>{i&&r(!1)},8e3);return()=>{i=!1,clearTimeout(u),o.unsubscribe()}},[]),a)return l.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:l.jsx(ix,{className:"w-8 h-8 animate-spin text-primary"})});if(!t){const o=s.pathname.startsWith("/visa/")?"/visa/auth":"/auth";return l.jsx(gk,{to:o,state:{from:s.pathname+s.search},replace:!0})}return l.jsx(l.Fragment,{children:e})},ce=({to:e})=>{const t=Ks(),n=$t(),a=typeof e=="function"?e(t,n.search):`${e}${n.search}`;v.useEffect(()=>{document.title="Redirecting…"},[]);const r=`https://bizplanner.ai${a}`;return l.jsxs(l.Fragment,{children:[l.jsxs(Gn,{children:[l.jsx("meta",{name:"robots",content:"noindex, follow"}),l.jsx("link",{rel:"canonical",href:r}),l.jsx("meta",{httpEquiv:"refresh",content:`0; url=${a}`})]}),l.jsx(gk,{to:a,replace:!0})]})};class pB extends v.Component{constructor(n){super(n);Gt(this,"handleReload",()=>{window.location.reload()});Gt(this,"handleGoHome",()=>{window.location.href="/"});this.state={hasError:!1,error:null}}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,a){console.error("[ErrorBoundary] Caught error:",n.message,a.componentStack)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:l.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:l.jsxs("div",{className:"max-w-md w-full text-center",children:[l.jsx("div",{className:"w-16 h-16 rounded-2xl bg-primary/10 flex items-center justify-center mx-auto mb-6",children:l.jsx(kn,{className:"w-8 h-8 text-primary"})}),l.jsx("h1",{className:"text-2xl font-bold font-display mb-2",children:"Something went wrong"}),l.jsx("p",{className:"text-muted-foreground mb-6",children:"An unexpected error occurred. Please try refreshing the page."}),l.jsxs("div",{className:"flex gap-3 justify-center",children:[l.jsxs("button",{onClick:this.handleGoHome,className:"inline-flex items-center gap-2 px-4 py-2 rounded-lg border bg-card text-sm font-medium hover:bg-accent transition-colors",children:[l.jsx(tx,{className:"w-4 h-4"}),"Go Home"]}),l.jsxs("button",{onClick:this.handleReload,className:"inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-primary text-primary-foreground text-sm font-medium hover:bg-primary/90 transition-colors",children:[l.jsx(vE,{className:"w-4 h-4"}),"Refresh Page"]})]})]})}):this.props.children}}const{slice:mB,forEach:hB}=[];function fB(e){return hB.call(mB.call(arguments,1),t=>{if(t)for(const n in t)e[n]===void 0&&(e[n]=t[n])}),e}
vendor: 6,616 bytes, line 3266
3266function gB(e){return typeof e!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(e))}const Yv=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,vB=function(e,t){const a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(t);let s=`${e}=${r}`;if(a.maxAge>0){const i=a.maxAge-0;if(Number.isNaN(i))throw new Error("maxAge should be a Number");s+=`; Max-Age=${Math.floor(i)}`}if(a.domain){if(!Yv.test(a.domain))throw new TypeError("option domain is invalid");s+=`; Domain=${a.domain}`}if(a.path){if(!Yv.test(a.path))throw new TypeError("option path is invalid");s+=`; Path=${a.path}`}if(a.expires){if(typeof a.expires.toUTCString!="function")throw new TypeError("option expires is invalid");s+=`; Expires=${a.expires.toUTCString()}`}if(a.httpOnly&&(s+="; HttpOnly"),a.secure&&(s+="; Secure"),a.sameSite)switch(typeof a.sameSite=="string"?a.sameSite.toLowerCase():a.sameSite){case!0:s+="; SameSite=Strict";break;case"lax":s+="; SameSite=Lax";break;case"strict":s+="; SameSite=Strict";break;case"none":s+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a.partitioned&&(s+="; Partitioned"),s},Jv={create(e,t,n,a){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+n*60*1e3)),a&&(r.domain=a),document.cookie=vB(e,t,r)},read(e){const t=`${e}=`,n=document.cookie.split(";");for(let a=0;a<n.length;a++){let r=n[a];for(;r.charAt(0)===" ";)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,"",-1,t)}};var yB={name:"cookie",lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<"u")return Jv.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:a,cookieDomain:r,cookieOptions:s}=t;n&&typeof document<"u"&&Jv.create(n,e,a,r,s)}},bB={name:"querystring",lookup(e){var a;let{lookupQuerystring:t}=e,n;if(typeof window<"u"){let{search:r}=window.location;!window.location.search&&((a=window.location.hash)==null?void 0:a.indexOf("?"))>-1&&(r=window.location.hash.substring(window.location.hash.indexOf("?")));const i=r.substring(1).split("&");for(let o=0;o<i.length;o++){const c=i[o].indexOf("=");c>0&&i[o].substring(0,c)===t&&(n=i[o].substring(c+1))}}return n}},wB={name:"hash",lookup(e){var r;let{lookupHash:t,lookupFromHashIndex:n}=e,a;if(typeof window<"u"){const{hash:s}=window.location;if(s&&s.length>2){const i=s.substring(1);if(t){const o=i.split("&");for(let c=0;c<o.length;c++){const u=o[c].indexOf("=");u>0&&o[c].substring(0,u)===t&&(a=o[c].substring(u+1))}}if(a)return a;if(!a&&n>-1){const o=s.match(/\/([a-zA-Z-]*)/g);return Array.isArray(o)?(r=o[typeof n=="number"?n:0])==null?void 0:r.replace("/",""):void 0}}}return a}};let Wr=null;const Qv=()=>{if(Wr!==null)return Wr;try{if(Wr=typeof window<"u"&&window.localStorage!==null,!Wr)return!1;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch{Wr=!1}return Wr};var xB={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&Qv())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Qv()&&window.localStorage.setItem(n,e)}};let Vr=null;const Xv=()=>{if(Vr!==null)return Vr;try{if(Vr=typeof window<"u"&&window.sessionStorage!==null,!Vr)return!1;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch{Vr=!1}return Vr};var kB={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&Xv())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&Xv()&&window.sessionStorage.setItem(n,e)}},SB={name:"navigator",lookup(e){const t=[];if(typeof navigator<"u"){const{languages:n,userLanguage:a,language:r}=navigator;if(n)for(let s=0;s<n.length;s++)t.push(n[s]);a&&t.push(a),r&&t.push(r)}return t.length>0?t:void 0}},PB={name:"htmlTag",lookup(e){let{htmlTag:t}=e,n;const a=t||(typeof document<"u"?document.documentElement:null);return a&&typeof a.getAttribute=="function"&&(n=a.getAttribute("lang")),n}},AB={name:"path",lookup(e){var r;let{lookupFromPathIndex:t}=e;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?(r=n[typeof t=="number"?t:0])==null?void 0:r.replace("/",""):void 0}},EB={name:"subdomain",lookup(e){var r,s;let{lookupFromSubdomainIndex:t}=e;const n=typeof t=="number"?t+1:1,a=typeof window<"u"&&((s=(r=window.location)==null?void 0:r.hostname)==null?void 0:s.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(a)return a[n]}};let vS=!1;try{document.cookie,vS=!0}catch{}const yS=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];vS||yS.splice(1,1);const CB=()=>({order:yS,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e});class bS{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(t,n)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=t,this.options=fB(n,this.options||{},CB()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=a,this.addDetector(yB),this.addDetector(bB),this.addDetector(xB),this.addDetector(kB),this.addDetector(SB),this.addDetector(PB),this.addDetector(AB),this.addDetector(EB),this.addDetector(wB)}addDetector(t){return this.detectors[t.name]=t,this}detect(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return t.forEach(a=>{if(this.detectors[a]){let r=this.detectors[a].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(n=n.concat(r))}}),n=n.filter(a=>a!=null&&!gB(a)).map(a=>this.options.convertDetectedLanguage(a)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}
3266cacheUserLanguage(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(t)>-1||n.forEach(a=>{this.detectors[a]&&this.detectors[a].cacheUserLanguage(t,this.options)}))}}bS.type="languageDetector";const TB={features:"Features",howItWorks:"How It Works",pricing:"Pricing",testimonials:"Testimonials",signIn:"Sign In",getStarted:"Get Started"},jB={badge:"Trusted by 27,300+ entrepreneurs worldwide",title:"Create a Professional",titleHighlight:"Business Plan",titleEnd:"in Minutes",subtitle:"Our AI-powered platform helps you create comprehensive, investor-ready business plans. Answer a few questions and let our AI do the heavy lifting.",cta:"Create Your Business Plan",secondaryCta:"See Sample Plan",plansCreated:"Plans Created",avgTime:"Avg. Time to Complete",minutes:"minutes",satisfaction:"Satisfaction Rate",samplePlan:"Sample Business Plan",executiveSummary:"Executive Summary",sampleContent:"TechFlow Solutions is an innovative SaaS company focused on streamlining workflow automation for small to medium businesses..."}
3266,IB={title:"Everything You Need to",titleHighlight:"Succeed",subtitle:"Our platform provides all the tools and features you need to create a winning business plan.",aiPowered:{title:"AI-Powered Writing",description:"Our advanced AI analyzes your inputs and generates professional, customized content for each section of your business plan."},financialProjections:{title:"Financial Projections",description:"Automatically generate realistic financial forecasts, including revenue projections, cash flow statements, and break-even analysis."},marketAnalysis:{title:"Market Analysis",description:"Get comprehensive market research and competitive analysis tailored to your specific industry and target market."},exportOptions:{title:"Export Options",description:"Download your completed business plan in multiple formats including PDF, Word, and PowerPoint presentations."},collaboration:{title:"Team Collaboration",description:"Invite team members to collaborate on your business plan in real-time with role-based permissions."},templates:{title:"Industry Templates",description:"Start with professionally designed templates tailored for your specific industry and business type."}},RB={title:"Create Your Plan in",titleHighlight:"3 Simple Steps",subtitle:"Our streamlined process makes it easy to go from idea to professional business plan.",step1:{title:"Answer Questions",description:"Tell us about your business idea, target market, and goals through our guided questionnaire."},step2:{title:"AI Generates Your Plan",description:"Our AI analyzes your responses and creates a comprehensive, customized business plan."},step3:{title:"Review & Export",description:"Edit your plan, add finishing touches, and export in your preferred format."}},_B={title:"Simple,",titleHighlight:"Transparent Pricing",subtitle:"Choose the plan that works best for you. No hidden fees, no subscriptions.",perPlan:"per plan",oneTime:"One-time payment",popular:"Most Popular",starter:{name:"Starter",description:"Perfect for testing the waters",features:["1 Complete Business Plan","All Standard Sections","PDF Export","Email Support"]},professional:{name:"Professional",description:"Best for serious entrepreneurs",features:["1 Complete Business Plan","All Standard Sections","Financial Projections","Market Analysis","PDF & Word Export","Priority Support"]},enterprise:{name:"Enterprise",description:"For teams and consultants",features:["5 Complete Business Plans","All Professional Features","Custom Branding","Team Collaboration","API Access","Dedicated Support"]},cta:"Get Started"},OB={title:"Loved by",titleHighlight:"Entrepreneurs",titleEnd:"Worldwide",subtitle:"Join thousands of satisfied users who have created winning business plans with Bizplanner.ai"},NB={title:"Ready to Create Your",titleHighlight:"Business Plan?",subtitle:"Join over 27,300 entrepreneurs who have used Bizplanner.ai to bring their business ideas to life.",button:"Create Your Business Plan Now",guarantee:"30-day money-back guarantee",noSubscription:"No subscription required"},LB={description:"Create professional, investor-ready business plans in minutes with AI-powered assistance.",product:"Product",features:"Features",pricing:"Pricing",templates:"Templates",examples:"Examples",resources:"Resources",blog:"Blog",guides:"Guides",helpCenter:"Help Center",webinars:"Webinars",company:"Company",about:"About Us",careers:"Careers",contact:"Contact",press:"Press",legal:"Legal",privacy:"Privacy Policy",terms:"Terms of Service",cookies:"Cookie Policy",copyright:"© {{year}} Bizplanner.ai. All rights reserved."},zB={welcomeBack:"Welcome back",signInToContinue:"Sign in to continue to your dashboard",createAccount:"Create your account",startCreating:"Start creating professional business plans",email:"Email",password:"Password",fullName:"Full Name",signIn:"Sign In",signUp:"Create Account",signingIn:"Signing in...",creatingAccount:"Creating account...",noAccount:"Don't have an account?",haveAccount:"Already have an account?",signUpLink:"Sign up",signInLink:"Sign in",backToHome:"Back to home",checkEmail:"Check your email",magicLinkSentTo:"We sent a magic link to",useDifferentEmail:"Use a different email",continueWithGoogle:"Continue with Google",orContinueWithEmail:"or continue with email",sendMagicLink:"Send magic link",sendingMagicLink:"Sending magic link...",magicLinkToast:"Check your email for a magic link to sign in!"},BB={nav:{templates:"Templates",blog:"Blog",contact:"Contact Us",login:"Login",dashboard:"Dashboard",getStarted:"Get Started"},hero:{mainTitle:"Best AI Business Plan",mainTitleHighlight:"Generator",mainTitleEnd:"& Writer",h2:"Write your business plan in minutes, not days",description:"Skip the frustration of writing a business plan from scratch. Our AI business plan generator creates a comprehensive, investor-ready plan with your business model, target market, financial projections, and more — so you can focus on growing your business.",ctaButton:"Get My Business Plan",dashboardButton:"Go to Dashboard",socialCount:"27,300+",socialText:"AI business plans already created",features:{businessPlan:"Business Plan",marketingPlan:"Marketing Plan",targetAudience:"Target Audience",competitors:"Competitors Analysis",swot:"SWOT Analysis",financials:"Financial Projections",industryTrends:"Industry Trends",industryStats:"Industry Stats",regulations:"Relevant regulations",nextSteps:"Suggested Next Steps"}},features:{badge:"Features",title:"All-in-one planning —",titleHighlight:"Write, generate, & edit",subt
3266itle:"Discover the core functionalities of our business plan generator, from intuitive in-browser editing to flexible AI regeneration and convenient export options.",items:{aiGenerator:{title:"AI business plan section generator",description:'Choose, customize, and instantly generate key sections of your business plan, from "Executive Summary" to "Risk Analysis".'},targetAudience:{title:"Target audience analysis",description:"AI creates a detailed target audience profile, covering demographics, psychographics, needs, pain points, and customer personas."},competitors:{title:"Competitors Analysis",description:"Analyze key competitors, their strengths, weaknesses, market positioning, and audience overlap using AI insights."},financials:{title:"Financial Projections",description:"Get AI-powered financial projections including startup costs, revenue forecasts, and profitability analysis."},industryTrends:{title:"Industry Trends",description:"Understand the latest market trends, growth drivers, and potential challenges in your industry via AI."},industryStats:{title:"Industry Stats",description:"Get key industry statistics curated by AI, including market overview, customer behavior insights, and specific trends."},regulations:{title:"Relevant regulations",description:"Receive an AI-compiled overview of important regulations, licenses, and compliance requirements."},nextSteps:{title:"Suggested Next Steps",description:"Get actionable, AI-driven recommendations based on your business plan analysis to guide your next moves."},swot:{title:"SWOT Analysis",description:"Identify your business's Strengths, Weaknesses, Opportunities, and Threats with an AI-powered analysis."}},textItems:{regenerate:{title:"Regenerate Document",description:"Easily rewrite and paraphrase any section by providing specific details or prompts."},editing:{title:"In-Browser editing",description:"Edit and format your business plan directly in your browser with a user-friendly, Notion-like interface."},export:{title:"Export options",description:"Export your finalized business documents to professional PDF or Word documents."}},ctaButton:"Get Started"},comparison:{badge:"Why choose BizPlanner AI",title:"How your idea becomes a",titleHighlight:"professional business plan",subtitle:"Save hundreds of dollars and hours of time by using BizPlanner AI to generate your new professional business plan.",withTitle:"With BizPlanner AI",withoutTitle:"Writing it yourself",step1:{title:"Answer a few simple questions",time:"~5 minutes",desc:"Answer a few questions about your business idea."},step2:{title:"Let our AI work its magic",time:"~15 minutes",desc:"Sit back while our AI generates a full, professional business plan tailored to your inputs."},step3:{title:"Review, edit or regenerate",desc:"Review, edit or regenerate your business plan sections."},step4:{title:"Download your business plan",desc:"Download your business plan in Word or PDF format."},pains:["Spending hours or days on market research.","Struggling to structure the business plan correctly.","Difficulty creating accurate financial projections.","Rewriting sections multiple times to sound professional.","Formatting issues that make the plan look unpolished.","Risk of missing key sections investors expect.","Time lost searching for reliable data sources.","Uncertainty about industry-specific terminology.","Hiring a freelancer will cost $100+ and still require your input."],ctaButton:"Get Started",testimonialText:"BizPlanner is a fantastic tool. I have been struggling for the last 3 months to put together my business plan, and here I am, sorted and saved from a time consuming effort.",testimonialAuthor:"— Morris, Uganda"},pricing:{badge:"Pricing | BizPlanner AI",title:"Professional business plan for",titleHighlight:"10x less",titleEnd:"than hiring a consultant",withBizplanner:"With BizPlanner AI",consultant:"Consultant",originalPrice:"$9.99 / month",price:"$9.99",oneTimePayment:"One-time payment. No subscription.",includesLabel:"Every package includes:",features:["Complete Business Plan","2 FREE Full Regenerations After Edits","Competitors Analysis","SWOT Analysis","Financial Projections","Industry Trends","Industry Stats","Relevant Regulations","Suggested Next Steps"],consultantText:"Business plans on",fiverrText:"Fiverr can cost $90 or more",consultantEnd:". Our offer at just $9.99 delivers great value, making quality business planning affordable.",ctaButton:"Get Started →",securePayment:"🔒 Secure payment"},testimonials:{badge:"Client testimonials",title:"Join 26,100+ entrepreneurs like you",titleHighlight:"building their businesses",bottomText:"Entrepreneurs worldwide have crafted over 27,300+ successful business plans using our AI business plan generator.",ctaButton:"Get Started"},footer:{description:"AI-powered business plan generator that helps entrepreneurs create professional, investor-ready plans in minutes.",product:"Product",features:"Features",pricing:"Pricing",templates:"Templates",tools:"Tools",resources:"Resources",blog:"Blog",industries:"Industries",businessNameGenerator:"Business N
3266ame Generator",company:"Company",about:"About",contact:"Contact Us",legal:"Legal",privacy:"Privacy Policy",terms:"Terms of Service",refundPolicy:"Refund Policy",cookies:"Cookie Policy",copyright:"© {{year}} BizPlanner.ai. All rights reserved.",madeWith:"Made with ❤️ for entrepreneurs worldwide"},toc:{badge:"Table of contents",title:"Your business plan's",titleHighlight:"table of contents",subtitle:"Generate detailed sections covering everything from your Executive Summary to Financial Projections, providing a complete overview of your business strategy.",note:"Note: The above is a general table of contents. For each business plan, our AI generates a customized structure based on your specific business needs.",cta:"Start writing",sections:[{title:"Executive summary",description:"A brief overview of your business, including mission, leadership, and financial highlights."},{title:"Business description",description:"A snapshot of your business, including industry, history, and future prospects."},{title:"Market research and analysis",description:"Analysis of target market, trends, and competition + SWOT analysis."},{title:"Organizational structure and management",description:"Details of business structure and management team roles."},{title:"Products or services",description:"Overview of what your business offers and how it's produced."},{title:"Marketing and sales strategy",description:"Brief strategy for marketing and selling your products or services."},{title:"Operations Plan",description:"Outline of daily business operations, logistics, and facilities."},{title:"Financial plan",description:"Financial projections, including Sales Forecast, Profit and Loss, Cash Flow, and Balance Sheet."},{title:"Risk analysis",description:"Identification of potential risks and strategies to mitigate them."}]},blog:{badge:"From the blog",title:"Latest insights &",titleHighlight:"updates",readMore:"Read more articles"},templatesShowcase:{badge:"Examples & Templates",title:"Business plan",titleHighlight:"examples",subtitle:"Explore examples created with our AI Business Plan Generator. These are real outputs showcasing the depth and personalization achievable for your own plan.",cta:"See more business plan templates",planSuffix:"business plan"},templatePage:{notFound:"Template Not Found",notFoundDesc:"The template you're looking for doesn't exist.",viewAll:"View All Templates",businessPlan:"Business Plan",createYourPlan:"Create Your {{name}} Plan",downloadSample:"Download Sample PDF",generating:"Generating...",whatsIncluded:"What's Included:",moreSections:"+ {{count}} more sections",jumpTo:"Jump to:",section:"Section {{num}}",planTemplate:"{{name}} Business Plan Template",reviewSubtitle:"Review our comprehensive sample business plan below. Create your personalized version with AI-powered insights.",readyToStart:"Ready to Start Your {{name}}?",readyCta:"Generate a complete, personalized business plan in minutes with our AI-powered platform.",getStartedFree:"Get Started Free",relatedTemplates:"Related Templates in {{category}}"}},DB={title:"Dashboard: {{name}}",home:"Home",coverPage:"Cover Page",executiveSummary:"Executive Summary",businessDetails:"Business details",yourDocuments:"Your documents",targetAudience:"Target Audience",competitorsAnalysis:"Competitors Analysis",swotAnalysis:"SWOT Analysis",financialProjections:"Financial Projections",industryTrends:"Industry Trends",industryStats:"Industry Stats",relevantRegulations:"Relevant regulations",suggestedNextSteps:"Suggested Next Steps",newBusiness:"New business",generationCredits:"Generation Credits",accountSettings:"Account Settings",signOut:"Sign Out",selectBusiness:"Select Business",viewAllDocuments:"View All Documents",seeMore:"See More",viewFinancialPlan:"View Financial Plan",editBusinessDetails:"Edit Business Details",viewFullProfile:"View Full Profile",exploreData:"Explore Data",viewAllSteps:"View All Steps",viewAnalysis:"View Analysis",viewFullAnalysis:"View Full Analysis",checkDetails:"Check Details",businessPlan:"Business Plan",startupCosts:"Startup Costs",fundingGoal:"Funding Goal",projectedBreakeven:"Projected Breakeven",months:"Months",marketSize:"Market Size",variesByRegion:"Varies by region",growthRate:"Growth Rate",industryDependent:"Industry depen
3266dent",strength:"Strength",strengths:"Strengths",weaknesses:"Weaknesses",generating:"Generating...",unlockToView:"Unlock this business to view this section",generatingBanner:"Hang tight — we're generating your business plan!",generatingBannerSub:"This usually takes 5–10 minutes. Sections will appear automatically as they're ready.",planReady:"🎉 Your business plan is ready!",planReadySub:'Click on <strong>"Your documents"</strong> below to view and edit your full plan.',unlockWelcome:"🎉 Welcome to your business!",unlockResearch:"Our AI models went to work and researched",unlockAnd:"and",unlockForYou:"for you.",unlockAccess:"✨ If you unlock your business, you'll get access to:",unlockFeature1:"All the sections below with detailed insights",unlockFeature2:'Your complete business plan (available in "Your Documents" section)',unlockFeature3:"AI-powered industry research and analysis",creditsAvailable:"You have {{count}} credit(s) available",unlockNowCredit:"Unlock Now (1 credit)",unlockNow:"Unlock Your Business Now 🚀",discoverTrends:"Discover trends relevant to {{industry}}.",targetMarketAnalysis:"Target market analysis for your business.",reviewBusinessInfo:"Review and update your core business information, team members, products/services, etc.",insightsGenerated:"Industry insights generated!"},qB={skipToDashboard:"Skip to Dashboard",title:"Your Business Plan Preview",subtitle:"Here's a sneak peek of your personalized business plan",generatingPlan:"We're generating your business plan...",generatingWait:"This usually takes 30–60 seconds. Feel free to wait here — we'll also send you an email once your preview is ready, so you can safely close this page.",generationTimedOut:"Generation timed out — this can happen during high demand.",dataSaved:"Don't worry, your questionnaire data is saved. Click below to try again.",retryGeneration:"Retry Generation",retry:"Retry",generatingCover:"Generating cover page...",generatingSummary:"Generating executive summary...",pageOf:"Page {{current}} of {{total}}",coverPage:"Cover Page",executiveSummary:"Executive Summary",businessPlan:"Business Plan",preparedBy:"Prepared by",problem:"Problem",solution:"Solution",targetMarket:"Target Market",competitiveAdvantage:"Competitive Advantage",unlockToRead:"Unlock to continue reading",unlockFullPlan:"Unlock Full Plan",unlockDescription:"Get your complete AI-generated business plan with detailed insights",unlockNow:"Unlock Now",continuePreview:"Continue with free preview",oneTimePayment:"One-time payment • Lifetime access",features:{swot:"Complete SWOT Analysis",financials:"Detailed Financial Projections",audience:"Target Audience Research",competitors:"Competitor Analysis",trends:"Industry Trends & Statistics",regulations:"Regulatory Requirements",nextSteps:"Actionable Next Steps",pdf:"Downloadable PDF Report"}},MB={title:"Executive Summary",overview:"Overview",theProblem:"The Problem",ourSolution:"Our Solution",targetMarket:"Target Market",businessModel:"Business Model",competitiveAdvantage:"Competitive Advantage",financialHighlights:"Financial Highlights",unlockFinancials:"Unlock to view full financial details",keyMilestones:"Key Milestones",unlockFullPlan:"Unlock Full Business Plan",noSummaryTitle:"No Executive Summary Yet",noSummaryDesc:"Generate a professional executive summary for your business plan",generateButton:"Generate Executive Summary",generated:"Executive summary generated!",generateFailed:"Failed to generate executive summary"},FB={purchaseRequired:"Please purchase unlock / generation credits to access this section.",signInRequired:"Please sign in to generate this section",invalidPlanId:"Invalid business plan ID",audience:{title:"Target Audience",subtitle:"Its a {{industry}} for {{name}}",summary:"Audience Summary",demographics:"Demographics",psychographics:"Psychographics",ageRange:"Age Range:",occupation:"Occupation:",incomeLevel:"Income Level:",education:"Education:",lifestyle:"Lifestyle:",values:"Values:",interests:"Interests:",needsAndPainPoints:"Needs & Pain Points",painPoint:"Pain point: ",customerPersonas:"Customer Personas",goals:"GOALS",frustrations:"FRUSTRATIONS",noData:"No target audience data yet",generate:"Generate Target Audience",generated:"Target audience generated!",generateFailed:"Failed to generate target audience"},competitors:{title:"Competitors Analysis",subtitle:"Analysis of key competitors for {{name}} in {{industry}}",strengths:"Strengths",weaknesses:"Weaknesses",pricingTier:"Pricing Tier",audienceOverlap:"Audience Overlap",noData:"No competitors analysis yet",generate:"Generate Competitors Analysis",generated:"Competitors analysis generated!",generateFailed:"Failed to generate competitors analysis"},swot:{title:"SWOT Analysis",subtitle:"Strengths, Weaknesses, Opportunities, and Threats for {{name}}",strengths:"Strengths",weaknesses:"Weaknesses",opportunities:"Opportunities",threats:"Threats",noData:"No SWOT analysis yet",generate:"Generate SWOT Analysis",generated:"SWOT analysis generated!",generateFailed:"Failed to generate SWOT analysis",loadFailed:"Failed to load SWOT analysis data"},financials:{title:"Financial Projections",subtitle:"Key financial metrics and projections for {{name}}",financialOverview:"Financial Overview",initialBudget:"Initial Budget",investmentNeeds:"Investment Needs",keyMetricsOverview:"Key Metrics Overview",year1Revenue:"Year 1 Revenue",year1NetIncome:"Year 1 Net Income",grossProfitMargin:"Gross Profit Margin",netProfitMargin:"Net Profit Margin",revenueByProduct:"Revenue by Product/Service",productService:"Product/Service",year1:"Year 1",year2:"Year 2",year3:"Year 3",totalRevenue:"Total Revenue",profitLossSummary:"Profit & Loss Summary",metric:"Metric",revenue:"Revenue",cogs:"Cost of Goods Sold",grossProfit:"Gross Profit",operatingExpenses:"Operating Expenses",netIncome:"Net Income",balanceSheetSummary:"Balance Sheet Summary",totalAssets:"Total Assets",totalLiabilities:"Total Liabilities",totalEquity:"Total Equity",keyAssumptions:"Key Assumptions",syncedInfo:"This financial data is synced with your complete business plan. Edit the Sales Forecast or Financial Plan sections to update these projections.",viewEditFinancials:"View & Edit Full Financial Plan",summaryQuestion:"What are your financial projections for the next 3-5 years?",budgetQuestion:"What is your initial budget?",totalStartupCosts:"Total Startup Costs",year1ProjectedRevenue:"Year 1 Projected Revenue",projectedBreakeven:"Projected Breakeven",months:"Months",year1NetProfitMargin:"Year 1 Net Profit Margin",startupCostsBreakdown:"Startup Costs Breakdown",totalEstimatedCosts:"Total Estimated Costs",fundingOverview:"Funding Overview",totalFundingNeeded:"Total Funding Needed",keyProjections:"Key Projections & Profitability (Year 1 Estimates)",projections:"Projections",estRevenue:"Est. Revenue:",avgMonthlyRevenue:"Avg. Monthly Revenue:",revenueForecast:"REVENUE FORECAST",profitability:"Profitability",projectedNetProfit:"Projected Net Profit:",breakevenPoint:"Breakeven Point:",est3YearROI:"Est. 3-Year ROI:",snapshotInfo:"This is a high-level financial snapshot. Generate your full business plan to see detailed Sales Forecast, P&L, Balance Sheet, and Cash Flow projections.",viewAllDocuments:"View All Documents",noData:"No financial projections yet",generate:"Generate Financial Projections",generated:"Financial projections generated!",generateFailed:"Failed to generate financial projections"},trends:{title:"Industry Trends",subtitle:"Relevant trends for {{name}} in {{industry}}",generating:"Generating AI-powered industry trends...",noData:"No trends generated yet.",generate:"Generate Industry Trends",generated:"Industry trends generated!"},stats:{title:"Industry Stats",subtitle:"Key statistics for {{name}} in {{industry}}",generating:"Generating AI-powered industry statistics...",marketOverview:"Market Overview",customerBehavior:"Customer Behavior",industryInsights:"Industry Specific Insights",noData:"No statistics generated yet.",generate:"Generate Industry Stats",generated:"Industry stats generated!"},regulations:{title:"Relevant Regulations",subtitle:"Compliance requirements for {{name}} in {{industry}}",checkDetails:"Check Details",noData:"No regulations data yet",generate:"Generate Regulations",generated:"Regulations generated!",generateFailed:"Failed to generate regulations"},nextSteps:{title:"Suggested Next Steps",subtitle:"Actionable steps to launch {{name}}",noData:"No next steps yet",generate:"Generate Next Steps",generated:"Next steps generated!",generateFailed:"Failed to generate next steps"}},UB={benchmarksHeading:"{{industry}} Industry Benchmarks",benchmarksIntro:"Figures below are drawn from published industry and government sources, each linked so you can verify them before putt
3266ing them in your own plan.",startupCost:"Typical startup cost",annualRevenue:"Typical annual revenue",netMargin:"Net profit margin",marketSize:"US market size ({{year}})",licensesHeading:"Licenses & Permits for a {{industry}}",licensesIntro:"Requirements vary by state and municipality — confirm with your local authority before filing.",metricsHeading:"Metrics That Matter in a {{industry}}",metricsIntro:"Lenders and investors expect these to appear in your financial section.",colMetric:"Metric",colBenchmark:"Industry benchmark",colSource:"Source",costHeading:"What Actually Drives Cost in a {{industry}}",risksHeading:"{{industry}} Risks & How to Address Them",risksIntro:"A credible risk section names the specific threats to this business model — not generic market risk.",mitigation:"Mitigation: "},$B={nav:TB,hero:jB,features:IB,howItWorks:RB,pricing:_B,testimonials:OB,cta:NB,footer:LB,auth:zB,landing:BB,dashboard:DB,preview:qB,executiveSummaryPage:MB,sections:FB,industryInsights:UB},WB={features:"Características",howItWorks:"Cómo Funciona",pricing:"Precios",testimonials:"Testimonios",signIn:"Iniciar Sesión",getStarted:"Comenzar"},VB={badge:"Con la confianza de más de 27,300 emprendedores en todo el mund
3266o",title:"Crea un",titleHighlight:"Plan de Negocios",titleEnd:"Profesional en Minutos",subtitle:"Nuestra plataforma impulsada por IA te ayuda a crear planes de negocios completos y listos para inversores. Responde algunas preguntas y deja que nuestra IA haga el trabajo pesado.",cta:"Crea Tu Plan de Negocios",secondaryCta:"Ver Plan de Ejemplo",plansCreated:"Planes Creados",avgTime:"Tiempo Promedio",minutes:"minutos",satisfaction:"Tasa de Satisfacción",samplePlan:"Plan de Negocios de Ejemplo",executiveSummary:"Resumen Ejecutivo",sampleContent:"TechFlow Solutions es una empresa SaaS innovadora enfocada en optimizar la automatización de flujos de trabajo para pequeñas y medianas empresas..."},HB={title:"Todo lo que Necesitas para",titleHighlight:"Triunfar",subtitle:"Nuestra plataforma proporciona todas las herramientas y características que necesitas para crear un plan de negocios ganador.",aiPowered:{title:"Escritura con IA",description:"Nuestra IA avanzada analiza tus datos y genera contenido profesional y personalizado para cada sección de tu plan de negocios."},financialProjections:{title:"Proyecciones Financieras",description:"Genera automáticamente pronósticos financieros realistas, incluyendo proyecciones de ingresos, estados de flujo de caja y análisis de punto de equilibrio."},marketAnalysis:{title:"Análisis de Mercado",description:"Obtén investigación de mercado completa y análisis competitivo adaptado a tu industria específica y mercado objetivo."},exportOptions:{title:"Opciones de Exportación",description:"Descarga tu plan de negocios completo en múltiples formatos incluyendo PDF, Word y presentaciones de PowerPoint."},collaboration:{title:"Colaboración en Equipo",description:"Invita a miembros del equipo a colaborar en tu plan de negocios en tiempo real con permisos basados en roles."},templates:{title:"Plantillas por Industria",description:"Comienza con plantillas diseñadas profesionalmente y adaptadas a tu industria y tipo de negocio específico."}},GB={title:"Crea Tu Plan en",titleHighlight:"3 Simples Pasos",subtitle:"Nuestro proceso optimizado facilita pasar de la idea a un plan de negocios profesional.",step1:{title:"Responde Preguntas",description:"Cuéntanos sobre tu idea de negocio, mercado objetivo y metas a través de nuestro cuestionario guiado."},step2:{title:"La IA Genera Tu Plan",description:"Nuestra IA analiza tus respuestas y crea un plan de negocios completo y personalizado."},step3:{title:"Revisa y Exporta",description:"Edita tu plan, agrega los toques finales y expórtalo en tu formato preferido."}},KB={title:"Precios",titleHighlight:"Simples y Transparentes",subtitle:"Elige el plan que mejor funcione para ti. Sin cargos ocultos, sin suscripciones.",perPlan:"por plan",oneTime:"Pago único",popular:"Más Popular",starter:{name:"Inicial",description:"Perfecto para probar",features:["1 Plan de Negocios Completo","Todas las Secciones Estándar","Exportación PDF","Soporte por Email"]},professional:{name:"Profesional",description:"Ideal para emprendedores serios",features:["1 Plan de Negocios Completo","Todas las Secciones Estándar","Proyecciones Financieras","Análisis de Mercado","Exportación PDF y Word","Soporte Prioritario"]},enterprise:{name:"Empresarial",description:"Para equipos y consultores",features:["5 Planes de Negocios Completos","Todas las Características Profesionales","Marca Personalizada","Colaboración en Equipo","Acceso API","Soporte Dedicado"]},cta:"Comenzar"},YB={title:"Amado por",titleHighlight:"Emprendedores",titleEnd:"en Todo el Mundo",subtitle:"Únete a miles de usuarios satisfechos que han creado planes de negocios exitosos con Bizplanner.ai"},JB={title:"¿Listo para Crear Tu",titleHighlight:"Plan de Negocios?",subtitle:"Únete a más de 27,300 emprendedores que han usado Bizplanner.ai para dar vida a sus ideas de negocio.",button:"Crea Tu Plan de Negocios Ahora",guarantee:"Garantía de devolución de 30 días",noSubscription:"Sin suscripción requerida"},QB={description:"Crea planes de negocios profesionales y listos para inversores en minutos con asistencia de IA.",product:"Producto",features:"Características",pricing:"Precios",templates:"Plantillas",examples:"Ejemplos",resources:"Recursos",blog:"Blog",guides:"Guías",helpCenter:"Centro de Ayuda",webinars:"Webinars",company:"Empresa",about:"Sobre Nosotros",careers:"Carreras",contact:"Contacto",press:"Prensa",legal:"Legal",privacy:"Política de Privacidad",terms:"Términos de Servicio",cookies:"Política de Cookies",copyright:"© {{year}} Bizplanner.ai. Todos los derechos reservados."},XB={welcomeBack:"Bienvenido de nuevo",signInToContinue:"Inicia sesión para continuar a tu panel",createAccount:"Crea tu cuenta",startCreating:"Comienza a crear planes de negocios profesionales",email:"Correo Electrónico",password:"Contraseña",fullName:"Nombre Completo",signIn:"Iniciar Sesión",signUp:"Crear Cuenta",signingIn:"Iniciando sesión...",creatingAccount:"Creando cuenta...",noAccount:"¿No tienes cuenta?",haveAccount:"¿Ya tienes cuenta?",signUpLink:"Regístrate",signInLink:"Inicia sesión",backToHome:"Volver al inicio",checkEmail:"Revisa tu correo",magicLinkSentTo:"Enviamos un enlace mágico a",useDifferentEmail:"Usar otro correo",continueWithGoogle:"Continuar con Google",orContinueWithEmail:"o continuar con correo",sendMagicLink:"Enviar enlace mágico",sendingMagicLink:"Enviando enlace mágico...",magicLinkToast:"¡Revisa tu correo para un enlace mágico de inicio de sesión!"},ZB={nav:{templates:"Plantillas",blog:"Blog",contact:"Contáctenos",login:"Iniciar Sesión",dashboard:"Panel",getStarted:"Comenzar"},hero:{mainTitle:"El Mejor Generador de",mainTitleHighlight:"Plan de Negocios",mainTitleEnd:"con IA",h2:"Escribe tu plan de negocios en minutos, no en días",description:"Olvídate de la frustración de escribir un plan de negocios desde cero. Nuestro generador de planes de negocio con IA crea un plan completo y listo para inversores con tu modelo de negocio, mercado objetivo, proyecciones financieras y más.",ctaButton:"Obtener Mi Plan de Negocios",dashboardButton:"Ir al Panel",socialCount:"27.300+",socialText:"Planes de negocio IA ya creados",features:{businessPlan:"Plan de Negocios",marketingPlan:"Plan de Marketing",targetAudience:"Público Objetivo",competitors:"Análisis de Competidores",swot:"Análisis FODA",financials:"Proyecciones Financieras",industryTrends:"Tendencias del Sector",industryStats:"Estadísticas del Sector",regulations:"Regulaciones",nextSteps:"Próximos Pasos"}},features:{badge:"Características",title:"Planificación todo en uno —",titleHighlight:"Escribe, genera y edita",subtitle:"Descubre las funcionalidades clave de nuestro generador de planes de negocio, desde la edición intuitiva en el navegador hasta la regeneración IA flexible y opciones de exportación convenientes.",items:{aiGenerator:{title:"Generador de secciones con IA",description:"Elige, personaliza y genera instantáneamente las secciones clave de tu plan de negocios."}
3266,targetAudience:{title:"Análisis del público objetivo",description:"La IA crea un perfil detallado de tu público objetivo, cubriendo demografía, psicografía, necesidades y personas."},competitors:{title:"Análisis de competidores",description:"Analiza competidores clave, sus fortalezas, debilidades, posicionamiento y superposición de audiencia con IA."},financials:{title:"Proyecciones financieras",description:"Obtén proyecciones financieras con IA incluyendo costos iniciales, previsiones de ingresos y análisis de rentabilidad."},industryTrends:{title:"Tendencias del sector",description:"Comprende las últimas tendencias del mercado, impulsores de crecimiento y desafíos potenciales de tu sector."},industryStats:{title:"Estadísticas del sector",description:"Obtén estadísticas clave del sector curadas por IA, incluyendo panorama del mercado y comportamiento del cliente."},regulations:{title:"Regulaciones relevantes",description:"Recibe un resumen compilado por IA de regulaciones importantes, licencias y requisitos de cumplimiento."},nextSteps:{title:"Próximos pasos sugeridos",description:"Obtén recomendaciones concretas basadas en IA para guiar tus próximas acciones."},swot:{title:"Análisis FODA",description:"Identifica las Fortalezas, Oportunidades, Debilidades y Amenazas de tu negocio con análisis IA."}},textItems:{regenerate:{title:"Regenerar documento",description:"Reescribe y reformula fácilmente cualquier sección proporcionando detalles o instrucciones específicas."},editing:{title:"Edición en el navegador",description:"Edita y formatea tu plan de negocios directamente en tu navegador con una interfaz intuitiva tipo Notion."},export:{title:"Opciones de exportación",description:"Exporta tus documentos business finalizados a PDF o Word profesionales."}},ctaButton:"Comenzar"},comparison:{badge:"Por qué elegir BizPlanner AI",title:"Cómo tu idea se convierte en un",titleHighlight:"plan de negocios profesional",subtitle:"Ahorra cientos de dólares y horas de tiempo usando BizPlanner AI para generar tu nuevo plan de negocios profesional.",withTitle:"Con BizPlanner AI",withoutTitle:"Escribirlo tú mismo",step1:{title:"Responde unas preguntas simples",time:"~5 minutos",desc:"Responde algunas preguntas sobre tu idea de negocio."},step2:{title:"Deja que nuestra IA haga su magia",time:"~15 minutos",desc:"Relájate mientras nuestra IA genera un plan de negocios completo y profesional."},step3:{title:"Revisa, edita o regenera",desc:"Revisa, edita o regenera las secciones de tu plan de negocios."},step4:{title:"Descarga tu plan de negocios",desc:"Descarga tu plan en formato Word o PDF."},pains:["Pasar horas o días en investigación de mercado.","Dificultad para estructurar correctamente el plan.","Dificultad para crear proyecciones financieras precisas.","Reescribir secciones varias veces para sonar profesional.","Problemas de formato que hacen ver el plan poco pulido.","Riesgo de omitir secciones clave que esperan los inversores.","Tiempo perdido buscando fuentes de datos confiables.","Incertidumbre sobre terminología específica del sector.","Contratar un freelancer costará $100+ y aún requerirá tu participación."],ctaButton:"Comenzar",testimonialText:"BizPlanner es una herramienta fantástica. He luchado durante 3 meses para armar mi plan de negocios, y aquí estoy, organizado y salvado de un esfuerzo que consume tiempo.",testimonialAuthor:"— Morris, Uganda"},pricing:{badge:"Precios | BizPlanner AI",title:"Plan de negocios profesional por",titleHighlight:"10x menos",titleEnd:"que contratar un consultor",withBizplanner:"Con BizPlanner AI",consultant:"Consultor",originalPrice:"$9.99 / mes",price:"$9.99",oneTimePayment:"Pago único. Sin suscripción.",includesLabel:"Cada paquete incluye:",features:["Plan de Negocios Completo","2 Regeneraciones Completas GRATIS","Análisis de Competidores","Análisis FODA","Proyecciones Financieras","Tendencias del Sector","Estadísticas del Sector","Regulaciones Relevantes","Próximos Pasos Sugeridos"],consultantText:"Los planes de negocio en",fiverrText:"Fiverr pueden costar $90 o más",consultantEnd:". Nuestra oferta por solo $9.99 ofrece una excelente relación calidad-precio.",ctaButton:"Comenzar →",securePayment:"🔒 Pago seguro"},testimonials:{badge:"Testimonios de clientes",title:"Únete a más de 26,100 emprendedores como tú",titleHighlight:"construyendo sus negocios",bottomText:"Emprendedores de todo el mund
3266o han creado más de 27,300+ planes de negocio exitosos usando nuestro generador de planes con IA.",ctaButton:"Comenzar"},footer:{description:"Generador de planes de negocio con IA que ayuda a emprendedores a crear planes profesionales en minutos.",product:"Producto",features:"Características",pricing:"Precios",templates:"Plantillas",tools:"Herramientas",resources:"Recursos",blog:"Blog",industries:"Industrias",businessNameGenerator:"Generador de Nombres",company:"Empresa",about:"Sobre Nosotros",contact:"Contáctenos",legal:"Legal",privacy:"Política de Privacidad",terms:"Términos de Servicio",refundPolicy:"Política de Reembolso",cookies:"Política de Cookies",copyright:"© {{year}} BizPlanner.ai. Todos los derechos reservados.",madeWith:"Hecho con ❤️ para emprendedores de todo el mundo"},toc:{badge:"Tabla de contenidos",title:"La tabla de contenidos de",titleHighlight:"tu plan de negocios",subtitle:"Genera secciones detalladas que cubren todo, desde el resumen ejecutivo hasta las proyecciones financieras.",note:"Nota: Lo anterior es una tabla de contenidos general. Para cada plan, nuestra IA genera una estructura personalizada según tus necesidades.",cta:"Empezar a escribir",sections:[{title:"Resumen ejecutivo",de
3266scription:"Una breve descripción de tu negocio, incluyendo misión, liderazgo y datos financieros clave."},{title:"Descripción del negocio",description:"Una visión general de tu negocio, incluyendo sector, historia y perspectivas."},{title:"Investigación y análisis de mercado",description:"Análisis del mercado objetivo, tendencias y competencia + análisis FODA."},{title:"Estructura organizacional y gestión",description:"Detalles de la estructura empresarial y roles del equipo directivo."},{title:"Productos o servicios",description:"Descripción de lo que ofrece tu negocio y cómo se produce."},{title:"Estrategia de marketing y ventas",description:"Estrategia para comercializar y vender tus productos o servicios."},{title:"Plan operativo",description:"Esquema de operaciones diarias, logística e instalaciones."},{title:"Plan financiero",description:"Proyecciones financieras, incluyendo previsión de ventas, pérdidas y ganancias, flujo de caja y balance."},{title:"Análisis de riesgos",description:"Identificación de riesgos potenciales y estrategias para mitigarlos."}]},blog:{badge:"Del blog",title:"Últimas novedades y",titleHighlight:"actualizaciones",readMore:"Leer más artículos"},templatesShowcase:{badge:"Ejemplos y plantillas",title:"Ejemplos de",titleHighlight:"planes de negocio",subtitle:"Explora ejemplos creados con nuestro generador de planes de negocio con IA. Son resultados reales que muestran la profundidad y personalización posibles.",cta:"Ver más plantillas de planes de negocio",planSuffix:"plan de negocios"},templatePage:{notFound:"Plantilla no encontrada",notFoundDesc:"La plantilla que buscas no existe.",viewAll:"Ver todas las plantillas",businessPlan:"Plan de Negocios",createYourPlan:"Crear tu plan {{name}}",downloadSample:"Descargar ejemplo PDF",generating:"Generando...",whatsIncluded:"Qué incluye:",moreSections:"+ {{count}} secciones más",jumpTo:"Ir a:",section:"Sección {{num}}",planTemplate:"Plantilla de plan de negocios {{name}}",reviewSubtitle:"Revisa nuestro modelo completo a continuación. Crea tu versión personalizada con insights impulsados por IA.",readyToStart:"¿Listo para iniciar tu {{name}}?",readyCta:"Genera un plan de negocios completo y personalizado en minutos con nuestra plataforma de IA.",getStartedFree:"Comenzar gratis",relatedTemplates:"Plantillas relacionadas en {{category}}"}},eD={title:"Panel: {{name}}",home:"Inicio",coverPage:"Portada",executiveSummary:"Resumen ejecutivo",businessDetails:"Detalles del negocio",yourDocuments:"Tus documentos",targetAudience:"Público objetivo",competitorsAnalysis:"Análisis de competidores",swotAnalysis:"Análisis FODA",financialProjections:"Proyecciones financieras",industryTrends:"Tendencias del sector",industryStats:"Estadísticas del sector",relevantRegulations:"Regulaciones relevantes",suggestedNextSteps:"Próximos pasos sugeridos",newBusiness:"Nuevo negocio",generationCredits:"Créditos de generación",accountSettings:"Configuración de cuenta",signOut:"Cerrar sesión",selectBusiness:"Seleccionar negocio",viewAllDocuments:"Ver todos los documentos",seeMore:"Ver más",viewFinancialPlan:"Ver plan financiero",editBusinessDetails:"Editar detalles",viewFullProfile:"Ver perfil completo",exploreData:"Explorar datos",viewAllSteps:"Ver todos los pasos",viewAnalysis:"Ver análisis",viewFullAnalysis:"Ver análisis completo",checkDetails:"Ver detalles",businessPlan:"Plan de Negocios",startupCosts:"Costos iniciales",fundingGoal:"Meta de financiamiento",projectedBreakeven:"Punto de equilibrio previsto",months:"Meses",marketSize:"Tamaño del mercado",variesByRegion:"Varía por región",growthRate:"Tasa de crecimiento",industryDependent:"Depende del sector",strength:"Fortaleza",strengths:"Fortalezas",weaknesses:"Debilidades",generating:"Generando...",unlockToView:"Desbloquea este negocio para ver esta sección",generatingBanner:"¡Espera — estamos generando tu plan de negocios!",generatingBannerSub:"Esto suele tardar 1-2 minutos. Las secciones aparecerán automáticamente.",planReady:"🎉 ¡Tu plan de negocios está listo!",planReadySub:'Haz clic en <strong>"Tus documentos"</strong> abajo para ver y editar tu plan completo.',unlockWelcome:"🎉 ¡Bienvenido a tu negocio!",unlockResearch:"Nuestros modelos de IA investigaron",unlockAnd:"y",unlockForYou:"para ti.",unlockAccess:"✨ Si desbloqueas tu negocio, tendrás acceso a:",unlockFeature1:"Todas las secciones con información detallada",unlockFeature2:'Tu plan de negocios completo (disponible en "Tus documentos")',unlockFeature3:"Investigación y análisis del sector con IA",creditsAvailable:"Tienes {{count}} crédito(s) disponible(s)",unlockNowCredit:"Desbloquear ahora (1 crédito)",unlockNow:"Desbloquea tu negocio ahora 🚀",discoverTrends:"Descubre tendencias relevantes para {{industry}}.",targetMarketAnalysis:"Análisis del mercado objetivo para tu negocio.",reviewBusinessInfo:"Revisa y actualiza la información principal de tu negocio, equipo, productos/servicios, etc.",insightsGenerated:"¡Insights del sector generados!"},tD={skipToDashboard:"Ir al panel",title:"Vista previa de tu plan de negocios",subtitle:"Aquí tienes un adelanto de tu plan de negocios personalizado",generatingPlan:"Estamos generando tu plan de negocios...",generatingWait:"Esto suele tardar 30-60 segundos. Quédate aquí o cierra la página — te enviaremos un email cuando esté listo.",generationTimedOut:"La generación expiró — esto puede ocurrir en momentos de alta demanda.",dataSaved:"No te preocupes, tus datos están guardados. Haz clic abajo para reintentar.",retryGeneration:"Reintentar generación",retry:"Reintentar",generatingCover:"Generando portada...",generatingSummary:"Generando resumen ejecutivo...",pageOf:"Página {{current}} de {{total}}",coverPage:"Portada",executiveSummary:"Resumen ejecutivo",businessPlan:"Plan de Negocios",preparedBy:"Preparado por",problem:"Problema",solution:"Solución",targetMarket:"Mercado objetivo",competitiveAdvantage:"Ventaja competitiva",unlockToRead:"Desbloquea para seguir leyendo",unlockFullPlan:"Desbloquear plan completo",unlockDescription:"Obtén tu plan de negocios completo generado por IA con análisis detallados",unlockNow:"Desbloquear ahora",continuePreview:"Continuar con vista previa gratuita",oneTimePayment:"Pago único • Acceso de por vida",features:{swot:"Análisis FODA completo",financials:"Proyecciones financieras detalladas",audie
3266nce:"Investigación del público objetivo",competitors:"Análisis de competidores",trends:"Tendencias y estadísticas del sector",regulations:"Requisitos regulatorios",nextSteps:"Próximos pasos concretos",pdf:"Informe PDF descargable"}},nD={title:"Resumen Ejecutivo",overview:"Descripción General",theProblem:"El Problema",ourSolution:"Nuestra Solución",targetMarket:"Mercado Objetivo",businessModel:"Modelo de Negocio",competitiveAdvantage:"Ventaja Competitiva",financialHighlights:"Aspectos Financieros Clave",unlockFinancials:"Desbloquea para ver los detalles financieros completos",keyMilestones:"Hitos Clave",unlockFullPlan:"Desbloquear Plan de Negocio Completo",noSummaryTitle:"Aún no hay resumen ejecutivo",noSummaryDesc:"Genera un resumen ejecutivo profesional para tu plan de negocio",generateButton:"Generar Resumen Ejecutivo",generated:"¡Resumen ejecutivo generado!",generateFailed:"Error al generar el resumen ejecutivo"},aD={purchaseRequired:"Por favor, adquiera créditos de desbloqueo / generación para acceder a esta sección.",signInRequired:"Inicie sesión para generar esta sección",invalidPlanId:"ID de plan de negocio inválido",audience:{title:"Público Objetivo",subtitle:"Es un(a) {{industry}} para {{name}}",summary:"Resumen del público",demographics:"Demografía",psychographics:"Psicografía",ageRange:"Rango de edad:",occupation:"Ocupación:",incomeLevel:"Nivel de ingresos:",education:"Educación:",lifestyle:"Estilo de vida:",values:"Valores:",interests:"Intereses:",needsAndPainPoints:"Necesidades y puntos de dolor",painPoint:"Punto de dolor: ",customerPersonas:"Personas de clientes",goals:"OBJETIVOS",frustrations:"FRUSTRACIONES",noData:"Aún no hay datos del público objetivo",generate:"Generar público objetivo",generated:"¡Público objetivo generado!",generateFailed:"Error al generar el público objetivo"},competitors:{title:"Análisis de Competidores",subtitle:"Análisis de competidores clave de {{name}} en {{industry}}",strengths:"Fortalezas",weaknesses:"Debilidades",pricingTier:"Nivel de precios",audienceOverlap:"Superposición de audiencia",noData:"Aún no hay análisis de competidores",generate:"Generar análisis de competidores",generated:"¡Análisis de competidores generado!",generateFailed:"Error al generar el análisis de competidores"},swot:{title:"Análisis SWOT",subtitle:"Fortalezas, Debilidades, Oportunidades y Amenazas de {{name}}",strengths:"Fortalezas",weaknesses:"Debilidades",opportunities:"Oportunidades",threats:"Amenazas",noData:"Aún no hay análisis SWOT",generate:"Generar análisis SWOT",generated:"¡Análisis SWOT generado!",generateFailed:"Error al generar el análisis SWOT",loadFailed:"Error al cargar los datos del análisis SWOT"},financials:{title:"Proyecciones Financieras",subtitle:"Métricas financieras clave y proyecciones para {{name}}",financialOverview:"Resumen financiero",initialBudget:"Presupuesto inicial",investmentNeeds:"Necesidades de inversión",keyMetricsOverview:"Resumen de métricas clave",year1Revenue:"Ingresos Año 1",year1NetIncome:"Ingreso neto Año 1",grossProfitMargin:"Margen bruto",netProfitMargin:"Margen neto",revenueByProduct:"Ingresos por producto/servicio",productService:"Producto/Servicio",year1:"Año 1",year2:"Año 2",year3:"Año 3",totalRevenue:"Ingresos totales",profitLossSummary:"Estado de resultados",metric:"Métrica",revenue:"Ingresos",cogs:"Costo de ventas",grossProfit:"Utilidad bruta",operatingExpenses:"Gastos operativos",netIncome:"Ingreso neto",balanceSheetSummary:"Balance general resumido",totalAssets:"Total activos",totalLiabilities:"Total pasivos",totalEquity:"Total patrimonio",keyAssumptions:"Supuestos clave",syncedInfo:"Estos datos financieros están sincronizados con su plan de negocio completo.",viewEditFinancials:"Ver y editar plan financiero completo",summaryQuestion:"¿Cuáles son sus proyecciones financieras para los próximos 3-5 años?",budgetQuestion:"¿Cuál es su presupuesto inicial?",totalStartupCosts:"Costos de inicio totales",year1ProjectedRevenue:"Ingresos proyectados Año 1",projectedBreakeven:"Punto de equilibrio proyectado",months:"Meses",year1NetProfitMargin:"Margen neto Añ
3266o 1",startupCostsBreakdown:"Desglose de costos de inicio",totalEstimatedCosts:"Costos estimados totales",fundingOverview:"Resumen de financiamiento",totalFundingNeeded:"Financiamiento total necesario",keyProjections:"Proyecciones clave y rentabilidad (Estimaciones Año 1)",projections:"Proyecciones",estRevenue:"Ingresos est.:",avgMonthlyRevenue:"Ingreso mensual prom.:",revenueForecast:"PRONÓSTICO DE INGRESOS",profitability:"Rentabilidad",projectedNetProfit:"Beneficio neto proyectado:",breakevenPoint:"Punto de equilibrio:",est3YearROI:"ROI est. a 3 años:",snapshotInfo:"Esta es una vista financiera de alto nivel. Genere su plan completo para ver proyecciones detalladas.",viewAllDocuments:"Ver todos los documentos",noData:"Aún no hay proyecciones financieras",generate:"Generar proyecciones financieras",generated:"¡Proyecciones financieras generadas!",generateFailed:"Error al generar proyecciones financieras"},trends:{title:"Tendencias del Sector",subtitle:"Tendencias relevantes para {{name}} en {{industry}}",generating:"Generando tendencias del sector con IA...",noData:"Aún no se han generado tendencias.",generate:"Generar tendencias del sector",generated:"¡Tendencias del sector generadas!"},stats:{title:"Estadísticas del Sector",subtitle:"Estadísticas clave para {{name}} en {{industry}}",generating:"Generando estadísticas del sector con IA...",marketOverview:"Resumen del mercado",customerBehavior:"Comportamiento del consumidor",industryInsights:"Insights específicos del sector",noData:"Aún no se han generado estadísticas.",generate:"Generar estadísticas del sector",generated:"¡Estadísticas del sector generadas!"},regulations:{title:"Regulaciones Relevantes",subtitle:"Requisitos de cumplimiento para {{name}} en {{industry}}",checkDetails:"Ver detalles",noData:"Aún no hay datos de regulaciones",generate:"Generar regulaciones",generated:"¡Regulaciones generadas!",generateFailed:"Error al generar regulaciones"},nextSteps:{title:"Próximos Pasos Sugeridos",subtitle:"Pasos concretos para lanzar {{name}}",noData:"Aún no hay próximos pasos",generate:"Generar próximos pasos",generated:"¡Próximos pasos generados!",generateFailed:"Error al generar próximos pasos"}},rD={benchmarksHeading:"Referencias del sector: {{industry}}",benchmarksIntro:"Las cifras siguientes proceden de fuentes sectoriales y gubernamentales publicadas. Cada una incluye su enlace para que puedas verificarla antes de incorporarla a tu propio plan.",startupCost:"Inversión inicial habitual",annualRevenue:"Facturación anual habitual",netMargin:"Margen de beneficio neto",marketSize:"Tamaño del mercado en EE. UU. ({{year}})",licensesHeading:"Licencias y permisos para {{industry}}",licensesIntro:"Los requisitos varían según el estado y el municipio: confírmalos con tu autoridad local antes de presentar la solicitud.",metricsHeading:"Métricas clave en {{industry}}",metricsIntro:"Los prestamistas e inversores esperan encontrar estas métricas en tu sección financiera.",colMetric:"Métrica",colBenchmark:"Referencia del sector",colSource:"Fuente",costHeading:"Qué determina realmente los costes en {{industry}}",risksHeading:"Riesgos de {{industry}} y cómo abordarlos",risksIntro:"Una sección de riesgos creíble nombra las amenazas concretas de este modelo de negocio, no el riesgo de mercado genérico.",mitigation:"Mitigación: "}
3266,sD={nav:WB,hero:VB,features:HB,howItWorks:GB,pricing:KB,testimonials:YB,cta:JB,footer:QB,auth:XB,landing:ZB,dashboard:eD,preview:tD,executiveSummaryPage:nD,sections:aD,industryInsights:rD},iD={features:"Fonctionnalités",howItWorks:"Comment ça marche",pricing:"Tarifs",testimonials:"Témoignages",signIn:"Connexion",getStarted:"Commencer"},oD={badge:"Approuvé par plus de 27 300 entrepreneurs dans le monde",title:"Créez un",titleHighlight:"Business Plan",titleEnd:"Professionnel en Minutes",subtitle:"Notre plateforme alimentée par l'IA vous aide à créer des business plans complets et prêts pour les investisseurs. Répondez à quelques questions et laissez notre IA faire le gros du travail.",cta:"Créez Votre Business Plan",secondaryCta:"Voir un Exemple",plansCreated:"Plans Créés",avgTime:"Temps Moyen",minutes:"minutes",satisfaction:"Taux de Satisfaction",samplePlan:"Exemple de Business Plan",executiveSummary:"Résumé Exécutif",sampleContent:"TechFlow Solutions est une entreprise SaaS innovante spécialisée dans l'automatisation des flux de travail pour les petites et moyennes entreprises..."},lD={title:"Tout ce Dont Vous Avez Besoin pour",titleHighlight:"Réussir",subtitle:"Notre plateforme fournit tous les outils et fonctionnalités nécessaires pour créer un business plan gagnant.",aiPowered:{title:"Rédaction par IA",description:"Notre IA avancée analyse vos données et génère un contenu professionnel et personnalisé pour chaque section de votre business plan."},financialProjections:{title:"Projections Financières",description:"Générez automatiquement des prévisions financières réalistes, y compris les projections de revenus, les états de trésorerie et l'analyse du seuil de rentabilité."},marketAnalysis:{title:"Analyse de Marché",description:"Obtenez une étude de marché complète et une analyse concurrentielle adaptées à votre secteur et marché cible."},exportOptions:{title:"Options d'Export",description:"Téléchargez votre business plan complet dans plusieurs formats, notamment PDF, Word et présentations PowerPoint."},collaboration:{title:"Collaboration d'Équipe",description:"Invitez des membres de l'équipe à collaborer sur votre business plan en temps réel avec des permissions basées sur les rôles."},templates:{title:"Modèles par Secteur",description:"Commencez avec des modèles conçus professionnellement et adaptés à votre secteur et type d'entreprise."}},cD={title:"Créez Votre Plan en",titleHighlight:"3 Étapes Simples",subtitle:"Notre processus simplifié facilite le passage de l'idée au business plan professionnel.",step1:{title:"Répondez aux Questions",description:"Parlez-nous de votre idée d'entreprise, de votre marché cible et de vos objectifs via notre questionnaire guidé."},step2:{title:"L'IA Génère Votre Plan",description:"Notre IA analyse vos réponses et crée un business plan complet et personnalisé."},step3:{title:"Révisez et Exportez",description:"Modifiez votre plan, ajoutez les touches finales et exportez dans votre format préféré."}},uD={title:"Tarification",titleHighlight:"Simple et Transparente",subtitle:"Choisissez le plan qui vous convient le mieux. Sans frais cachés, sans abonnement.",perPlan:"par plan",oneTime:"Paiement unique",popular:"Le Plus Populaire",starter:{name:"Débutant",description:"Parfait pour tester",features:["1 Business Plan Complet","Toutes les Sections Standard","Export PDF","Support par Email"]},professional:{name:"Professionnel",description:"Idéal pour les entrepreneurs sérieux",features:["1 Business Plan Complet","Toutes les Sections Standard","Projections Financières","Analyse de Marché","Export PDF et Word","Support Prioritaire"]},enterprise:{name:"Entreprise",description:"Pour les équipes et consultants",features:["5 Business Plans Complets","Toutes les Fonctionnalités Pro","Marque Personnalisée","Collaboration d'Équipe","Accès API","Support Dédié"]},cta:"Commencer"},dD={title:"Apprécié par les",titleHighlight:"Entrepreneurs",titleEnd:"du Monde Entier",subtitle:"Rejoignez des milliers d'utilisateurs satisfaits qui ont créé des business plans gagnants avec Bizplanner.ai"},pD={title:"Prêt à Créer Votre",titleHighlight:"Business Plan ?",subtitle:"Rejoignez plus de 27 300 entrepreneurs qui ont utilisé Bizplanner.ai pour concrétiser leurs idées d'entreprise.",button:"Créez Votre Business Plan Maintenant",guarantee:"Garantie satisfait ou remboursé 30 jours",noSubscription:"Sans abonnement requis"},mD={description:"Créez des business plans professionnels et prêts pour les investisseurs en minutes grâce à l'assistance de l'IA.",product:"Produit",features:"Fonctionnalités",pricing:"Tarifs",templates:"Modèles",examples:"Exemples",resources:"Ressources",blog:"Blog",guides:"Guides",helpCenter:"Centre d'Aide",webinars:"Webinaires",company:"Entreprise",about:"À Propos",careers:"Carrières",contact:"Contact",press:"Presse",legal:"Mentions Légales",privacy:"Politique de Confidentialité",terms:"Conditions d'Utilisation",cookies:"Politique de Cookies",copyright:"© {{year}} Bizplanner.ai. Tous droits réservés."},hD={welcomeBack:"Bon retour",signInToContinue:"Connectez-vous pour accéder à votre tableau de bord",createAccount:"Créez votre compte",startCreating:"Commencez à créer des business plans professionnels",email:"Email",password:"Mot de passe",fullName:"Nom Complet",signIn:"Connexion",signUp:"Créer un Compte",signingIn:"Connexion en cours...",creatingAccount:"Création du compte...",noAccount:"Pas encore de compte ?",haveAccount:"Déjà un compte ?",signUpLink:"Inscrivez-vous",signInLink:"Connectez-vous",backToHome:"Retour à l'accueil",checkEmail:"Vérifiez votre email",magicLinkSentTo:"Nous avons envoyé un lien magique à",useDifferentEmail:"Utiliser un autre email",continueWithGoogle:"Continuer avec Google",orContinueWithEmail:"ou continuer avec email",sendMagicLink:"Envoyer le lien magique",sendingMagicLink:"Envoi du lien magique...",magicLinkToast:"Vérifiez votre email pour un lien magique de connexion !"},fD={nav:{templates:"Modèles",blog:"Blog",contact:"Contactez-nous",login:"Connexion",dashboard:"Tableau de bord",getStarted:"Commencer"},hero:{mainTitle:"Le Meilleur Générateur de",mainTitleHighlight:"Business Plan",mainTitleEnd:"par IA",h2:"Rédigez votre business plan en minutes, pas en jours",description:"Oubliez la frustration de rédiger un business plan à partir de zéro. Notre générateur de business plan par IA crée un plan complet, prêt pour les investisseurs, avec votre modèle d'affaires, marché cible, projections financières et plus — pour que vous puissiez vous concentrer sur la croissance de votre entreprise.",ctaButton:"Obtenir Mon Business Plan",dashboardButton:"Accéder au Tableau de Bord",socialCount:"27 300+",
3266socialText:"Business plans IA déjà créés",features:{businessPlan:"Business Plan",marketingPlan:"Plan Marketing",targetAudience:"Public Cible",competitors:"Analyse Concurrentielle",swot:"Analyse SWOT",financials:"Projections Financières",industryTrends:"Tendances du Secteur",industryStats:"Statistiques du Secteur",regulations:"Réglementations",nextSteps:"Prochaines Étapes"}},features:{badge:"Fonctionnalités",title:"Planification tout-en-un —",titleHighlight:"Rédigez, générez et éditez",subtitle:"Découvrez les fonctionnalités clés de notre générateur de business plan, de l'édition intuitive dans le navigateur à la régénération IA flexible et aux options d'export pratiques.",items:{aiGenerator:{title:"Générateur de sections par IA",description:`Choisissez, personnalisez et générez instantanément les sections clés de votre business plan, du "Résumé Exécutif" à l'"Analyse des Risques".`},targetAudience:{title:"Analyse du public cible",description:"L'IA crée un profil détaillé de votre public cible, couvrant démographie, psychographie, besoins, problèmes et personas clients."},competitors:{title:"Analyse concurrentielle",description:"Analysez les concurrents clés, leurs forces, faiblesses, positionnement et chevauchement d'audience grâce à l'IA."},financials:{title:"Projections financières",description:"Obtenez des projections financières par IA incluant coûts de démarrage, prévisions de revenus et analyse de rentabilité."},industryTrends:{title:"Tendances du secteur",description:"Comprenez les dernières tendances du marché, les moteurs de croissance et les défis potentiels de votre secteur via l'IA."},industryStats:{title:"Statistiques du secteur",description:"Obtenez des statistiques clés du secteur compilées par l'IA, incluant aperçu du marché, comportement des clients et tendances."},regulations:{title:"Réglementations pertinentes",description:"Recevez un aperçu compilé par l'IA des réglementations importantes, licences et exigences de conformité."},nextSteps:{title:"Prochaines étapes suggérées",description:"Obtenez des recommandations concrètes basées sur l'IA pour guider vos prochaines actions."},swot:{title:"Analyse SWOT",description:"Identifiez les Forces, Faiblesses, Opportunités et Menaces de votre entreprise avec une analyse IA."}},textItems:{regenerate:{title:"Régénérer le document",description:"Réécrivez et reformulez facilement toute section en fournissant des détails ou instructions spécifiques."},editing:{title:"Édition dans le navigateur",description:"Éditez et formatez votre business plan directement dans votre navigateur avec une interface intuitive de type Notion."},export:{title:"Options d'export",description:"Exportez vos documents business finalisés en PDF ou Word professionnels."}},ctaButton:"Commencer"},comparison:{badge:"Pourquoi choisir BizPlanner AI",title:"Comment votre idée devient un",titleHighlight:"business plan professionnel",subtitle:"Économisez des centaines de dollars et des heures de travail en utilisant BizPlanner AI pour générer votre business plan professionnel.",withTitle:"Avec BizPlanner AI",withoutTitle:"Le rédiger vous-même",step1:{title:"Répondez à quelques questions simples",time:"~5 minutes",desc:"Répondez à quelques questions sur votre idée d'entreprise."},step2:{title:"Laissez notre IA faire sa magie",time:"~15 minutes",desc:"Détendez-vous pendant que notre IA génère un business plan complet et professionnel adapté à vos données."},step3:{title:"Révisez, éditez ou régénérez",desc:"Révisez, éditez ou régénérez les sections de votre business plan."},step4:{title:"Téléchargez votre business plan",desc:"Téléchargez votre business plan au format Word ou PDF."},pains:["Passer des heures ou des jours en recherche de marché.","Difficulté à structurer correctement le business plan.","Difficulté à créer des projections financières précises.","Réécrire des sections plusieurs fois pour un ton professionnel.","Problèmes de mise en forme rendant le plan peu soigné.","Risque d'oublier des sections clés attendues par les investisseurs.","Temps perdu à chercher des sources de données fiables.","Incertitude sur la terminologie spécifique au secteur.","Engager un freelance coûtera plus de 100 $ et nécessitera votre contribution."],ctaButton:"Commencer",testimonialText:"BizPlanner est un outil fantastique. J'ai lutté pendant 3 mois pour mettre en place mon business plan, et me voilà, organisé et sauvé d'un effort chronophage.",testimonialAuthor:"— Morris, Ouganda"},pricing:{badge:"Tarifs | BizPlanner AI",title:"Un business plan professionnel pour",titleHighlight:"10x moins cher",titleEnd:"qu'un consultant",withBizplanner:"Avec BizPlanner AI",consultant:"Consultant",originalPrice
3266:"9,99 $ / mois",price:"9,99 $",oneTimePayment:"Paiement unique. Sans abonnement.",includesLabel:"Chaque offre inclut :",features:["Business Plan Complet","2 Régénérations Complètes GRATUITES","Analyse Concurrentielle","Analyse SWOT","Projections Financières","Tendances du Secteur","Statistiques du Secteur","Réglementations Pertinentes","Prochaines Étapes Suggérées"],consultantText:"Les business plans sur",fiverrText:"Fiverr peuvent coûter 90 $ ou plus",consultantEnd:". Notre offre à seulement 9,99 $ offre un excellent rapport qualité-prix, rendant la planification d'entreprise accessible.",ctaButton:"Commencer →",securePayment:"🔒 Paiement sécurisé"},testimonials:{badge:"Témoignages clients",title:"Rejoignez plus de 26 100 entrepreneurs comme vous",titleHighlight:"qui développent leurs entreprises",bottomText:"Des entrepreneurs du monde entier ont rédigé plus de 27 300+ business plans réussis grâce à notre générateur de business plan par IA.",ctaButton:"Commencer"},footer:{description:"Générateur de business plan par IA qui aide les entrepreneurs à créer des plans professionnels, prêts pour les investisseurs, en quelques minutes.",product:"Produit",features:"Fonctionnalités",pricing:"Tarifs",templates:"Modèles",tools:"Outils",resources:"Ressources",blog:"Blog",industries:"Secteurs",businessNameGenerator:"Générateur de Nom d'Entreprise",company:"Entreprise",about:"À Propos",contact:"Contactez-nous",legal:"Mentions Légales",privacy:"Politique de Confidentialité",terms:"Conditions d'Utilisation",refundPolicy:"Politique de Remboursement",cookies:"Politique de Cookies",copyright:"© {{year}} BizPlanner.ai. Tous droits réservés.",madeWith:"Fait avec ❤️ pour les entrepreneurs du monde entier"},toc:{badge:"Table des matières",title:"La table des matières de",titleHighlight:"votre business plan",subtitle:"Générez des sections détaillées couvrant tout, du résumé exécutif aux projections financières, offrant une vue complète de votre stratégie d'entreprise.",note:"Note : Ce qui précède est une table des matières générale. Pour chaque business plan, notre IA génère une structure personnalisée en fonction de vos besoins spécifiques.",cta:"Commencer à rédiger",sections:[{title:"Résumé exécutif",description:"Un bref aperçu de votre entreprise, y compris la mission, la direction et les points financiers clés."},{title:"Description de l'entreprise",description:"Un aperçu de votre entreprise, y compris le secteur, l'historique et les perspectives."},{title:"Étude et analyse de marché",description:"Analyse du marché cible, des tendances et de la concurrence + anal
3266yse SWOT."},{title:"Structure organisationnelle et gestion",description:"Détails de la structure de l'entreprise et des rôles de l'équipe de direction."},{title:"Produits ou services",description:"Aperçu de ce que votre entreprise offre et comment c'est produit."},{title:"Stratégie marketing et commerciale",description:"Stratégie pour commercialiser et vendre vos produits ou services."},{title:"Plan opérationnel",description:"Aperçu des opérations quotidiennes, de la logistique et des installations."},{title:"Plan financier",description:"Projections financières, incluant prévisions de ventes, compte de résultat, trésorerie et bilan."},{title:"Analyse des risques",description:"Identification des risques potentiels et stratégies pour les atténuer."}]},blog:{badge:"Du blog",title:"Dernières actualités &",titleHighlight:"mises à jour",readMore:"Lire plus d'articles"},templatesShowcase:{badge:"Exemples & Modèles",title:"Exemples de",titleHighlight:"business plan",subtitle:"Explorez des exemples créés avec notre générateur de business plan par IA. Ce sont de vrais résultats démontrant la profondeur et la personnalisation possibles pour votre propre plan.",cta:"Voir plus de modèles de business plan",planSuffix:"business plan"},templatePage:{notFound:"Modèle introuvable",notFoundDesc:"Le modèle que vous recherchez n'existe pas.",viewAll:"Voir tous les modèles",businessPlan:"Business Plan",createYourPlan:"Créer votre plan {{name}}",downloadSample:"Télécharger l'exemple PDF",generating:"Génération...",whatsIncluded:"Ce qui est inclus :",moreSections:"+ {{count}} sections supplémentaires",jumpTo:"Aller à :",section:"Section {{num}}",planTemplate:"Modèle de business plan {{name}}",reviewSubtitle:"Consultez notre modèle complet ci-dessous. Créez votre version personnalisée avec des insights alimentés par l'IA.",readyToStart:"Prêt à lancer votre {{name}} ?",readyCta:"Générez un business plan complet et personnalisé en quelques minutes avec notre plateforme alimentée par l'IA.",getStartedFree:"Commencer gratuitement",relatedTemplates:"Modèles similaires dans {{category}}"}},gD={title:"Tableau de bord : {{name}}",home:"Accueil",coverPage:"Page de couverture",executiveSummary:"Résumé exécutif",businessDetails:"Détails de l'entreprise",yourDocuments:"Vos documents",targetAudience:"Public cible",competitorsAnalysis:"Analyse concurrentielle",swotAnalysis:"Analyse SWOT",financialProjections:"Projections financières",industryTrends:"Tendances du secteur",industryStats:"Statistiques du secteur",relevantRegulations:"Réglementations pertinentes",suggestedNextSteps:"Prochaines étapes suggérées",newBusiness:"Nouvelle entreprise",generationCredits:"Crédits de génération",accountSettings:"Paramètres du compte",signOut:"Déconnexion",selectBusiness:"Sélectionner une entreprise",viewAllDocuments:"Voir tous les documents",seeMore:"Voir plus",viewFinancialPlan:"Voir le plan financier",editBusinessDetails:"Modifier les détails",viewFullProfile:"Voir le profil complet",exploreData:"Explorer les données",viewAllSteps:"Voir toutes les étapes",viewAnalysis:"Voir l'analyse",viewFullAnalysis:"Voir l'analyse complète",checkDetails:"Vérifier les détails",businessPlan:"Business Plan",startupCosts:"Coûts de démarrage",fundingGoal:"Objectif de financement",projectedBreakeven:"Seuil de rentabilité prévu",months:"Mois",marketSize:"Taille du marché",variesByRegion:"Varie selon la région",growthRate:"Taux de croissance",industryDependent:"Dépend du secteur",strength:"Force",strengths:"Forces",weaknesses:"Faiblesses",generating:"Génération en cours...",unlockToView:"Débloquez cette entreprise pour voir cette section",generatingBanner:"Patientez — nous générons votre business plan !",generatingBannerSub:"Cela prend généralement 1 à 2 minutes. Les sections apparaîtront automatiquement.",planReady:"🎉 Votre business plan est prêt !",planReadySub:'Cliquez sur <strong>"Vos documents"</strong> ci-dessous pour voir et modifier votre plan complet.',unlockWelcome:"🎉 Bienvenue dans votre entreprise !",unlockResearch:"Nos modèles IA ont recherché",unlockAnd:"et",unlockForYou:"pour vous.",unlockAccess:"✨ Si vous débloquez votre entreprise, vous aurez accès à :",unlockFeature1:"Toutes les sections ci-dessous avec des analyses détaillées",unlockFeature2:'Votre business plan complet (disponible dans la section "Vos documents")',unlockFeature3:"Recherche et analyse du secteur par IA",creditsAvailable:"Vous avez {{count}} crédit(s) disponible(s)",unlockNowCredit:"Débloquer maintenant (1 crédit)",unlockNow:"Débloquer votre entreprise maintenant 🚀",discoverTrends:"Découvrez les tendances pertinentes pour {{industry}}.",targetMarketAnalysis:"Analyse du marché cible pour votre entreprise.",reviewBusinessInfo:"Consultez et mettez à jour les informations principales de votre entreprise, équipe, produits/services, etc.",insightsGenerated:"Insights du secteur générés !"}
3266,vD={skipToDashboard:"Aller au tableau de bord",title:"Aperçu de votre business plan",subtitle:"Voici un aperçu de votre business plan personnalisé",generatingPlan:"Nous générons votre business plan...",generatingWait:"Cela prend généralement 30 à 60 secondes. Restez ici ou fermez cette page — nous vous enverrons un email quand l'aperçu sera prêt.",generationTimedOut:"La génération a expiré — cela peut arriver en période de forte demande.",dataSaved:"Pas d'inquiétude, vos données sont sauvegardées. Cliquez ci-dessous pour réessayer.",retryGeneration:"Réessayer la génération",retry:"Réessayer",generatingCover:"Génération de la page de couverture...",generatingSummary:"Génération du résumé exécutif...",pageOf:"Page {{current}} sur {{total}}",coverPage:"Page de couverture",executiveSummary:"Résumé exécutif",businessPlan:"Business Plan",preparedBy:"Préparé par",problem:"Problème",solution:"Solution",targetMarket:"Marché cible",competitiveAdvantage:"Avantage concurrentiel",unlockToRead:"Débloquez pour continuer la lecture",unlockFullPlan:"Débloquer le plan complet",unlockDescription:"Obtenez votre business plan complet généré par IA avec des analyses détaillées",unlockNow:"Débloquer maintenant",continuePreview:"Continuer avec l'aperçu gratuit",oneTimePayment:"Paiement unique • Accès à vie",features:{swot:"Analyse SWOT complète",financials:"Projections financières détaillées",audience:"Étude du public cible",competitors:"Analyse concurrentielle",trends:"Tendances et statistiques du secteur",regulations:"Exigences réglementaires",nextSteps:"Prochaines étapes concrètes",pdf:"Rapport PDF téléchargeable"}},yD={title:"Résumé Exécutif",overview:"Vue d'ensemble",theProblem:"Le Problème",ourSolution:"Notre Solution",targetMarket:"Marché Cible",businessModel:"Modèle d'Affaires",competitiveAdvantage:"Avantage Concurrentiel",financialHighlights:"Points Financiers Clés",unlockFinancials:"Débloquez pour voir les détails financiers complets",keyMilestones:"Étapes Clés",unlockFullPlan:"Débloquer le Business Plan Complet",noSummaryTitle:"Pas encore de résumé exécutif",noSummaryDesc:"Générez un résumé exécutif professionnel pour votre business plan",generateButton:"Générer le Résumé Exécutif",generated:"Résumé exécutif généré !",generateFailed:"Échec de la génération du résumé exécutif"},bD={purchaseRequired:"Veuillez acheter des crédits de déblocage / génération pour accéder à cette section.",signInRequired:"Veuillez vous connecter pour générer cette section",invalidPlanId:"Identifiant de plan d'affaires invalide",audience:{title:"Public Cible",subtitle:"C'est un(e) {{industry}} pour {{name}}",summary:"Résumé du public",demographics:"Données démographiques",psychographics:"Psychographie",ageRange:"Tranche d'âge :",occupation:"Profession :",incomeLevel:"Niveau de revenu :",education:"Éducation :",lifestyle:"Style de vie :",values:"Valeurs :",interests:"
3266Centres d'intérêt :",needsAndPainPoints:"Besoins et points de douleur",painPoint:"Point de douleur : ",customerPersonas:"Personas clients",goals:"OBJECTIFS",frustrations:"FRUSTRATIONS",noData:"Pas encore de données sur le public cible",generate:"Générer le public cible",generated:"Public cible généré !",generateFailed:"Échec de la génération du public cible"},competitors:{title:"Analyse concurrentielle",subtitle:"Analyse des principaux concurrents de {{name}} dans {{industry}}",strengths:"Forces",weaknesses:"Faiblesses",pricingTier:"Gamme de prix",audienceOverlap:"Chevauchement d'audience",noData:"Pas encore d'analyse concurrentielle",generate:"Générer l'analyse concurrentielle",generated:"Analyse concurrentielle générée !",generateFailed:"Échec de la génération de l'analyse concurrentielle"},swot:{title:"Analyse SWOT",subtitle:"Forces, Faiblesses, Opportunités et Menaces pour {{name}}",strengths:"Forces",weaknesses:"Faiblesses",opportunities:"Opportunités",threats:"Menaces",noData:"Pas encore d'analyse SWOT",generate:"Générer l'analyse SWOT",generated:"Analyse SWOT générée !",generateFailed:"Échec de la génération de l'analyse SWOT",loadFailed:"Échec du chargement des données SWOT"},financials:{title:"Projections Financières",subtitle:"Métriques financières clés et projections pour {{name}}",financialOverview:"Aperçu financier",initialBudget:"Budget initial",investmentNeeds:"Besoins d'investissement",keyMetricsOverview:"Aperçu des métriques clés",year1Revenue:"Chiffre d'affaires Année 1",year1NetIncome:"Résultat net Année 1",grossProfitMargin:"Marge brute",netProfitMargin:"Marge nette",revenueByProduct:"Chiffre d'affaires par produit/service",productService:"Produit/Service",year1:"Année 1",year2:"Année 2",year3:"Année 3",totalRevenue:"Chiffre d'affaires total",profitLossSummary:"Compte de résultat",metric:"Métrique",revenue:"Chiffre d'affaires",cogs:"Coût des marchandises vendues",grossProfit:"Résultat brut",operatingExpenses:"Charges d'exploitation",netIncome:"Résultat net",balanceSheetSummary:"Bilan résumé",totalAssets:"Total actifs",totalLiabilities:"Total passifs",totalEquity:"Total capitaux propres",keyAssumptions:"Hypothèses clés",syncedInfo:"Ces données financières sont synchronisées avec votre business plan complet. Modifiez les sections Prévisions de ventes ou Plan financier pour mettre à jour ces projections.",viewEditFinancials:"Voir et modifier le plan financier complet",summaryQuestion:"Quelles sont vos projections financières pour les 3 à 5 prochaines années ?",budgetQuestion:"Quel est votre budget initial ?",totalStartupCosts:"Coûts de démarrage totaux",year1ProjectedRevenue:"CA prévu Année 1",projectedBreakeven:"Seuil de rentabilité prévu",months:"Mois",year1NetProfitMargin:"Marge nette Année 1",startupCostsBreakdown:"Détail des coûts de démarrage",totalEstimatedCosts:"Coûts estimés totaux",fundingOverview:"Aperçu du financement",totalFundingNeeded:"Financement total nécessaire",keyProjections:"Projections clés et rentabilité (Estimations Année 1)",projections:"Projections",estRevenue:"CA estimé :",avgMonthlyRevenue:"CA mensuel moyen :",revenueForecast:"PRÉVISIONS DE CA",profitability:"Rentabilité",projectedNetProfit:"Bénéfice net prévu :",breakevenPoint:"Seuil de rentabilité :",est3YearROI:"ROI estimé sur 3 ans :",snapshotInfo:"Ceci est un aperçu financier de haut niveau. Générez votre business plan complet pour voir les prévisions détaillées de ventes, compte de résultat, bilan et trésorerie.",viewAllDocuments:"Voir tous les documents",noData:"Pas encore de projections financières",generate:"Générer les projections financières",generated:"Projections financières générées !",generateFailed:"Échec de la génération des projections financières"},trends:{title:"Tendances du Secteur",subtitle:"Tendances pertinentes pour {{name}} dans {{industry}}",generating:"Génération des tendances du secteur par IA...",noData:"Aucune tendance générée pour le moment.",generate:"Générer les tendances du secteur",generated:"Tendances du secteur générées !"},stats:{title:"Statistiques du Secteur",subtitle:"Statistiques clés pour {{name}} dans {{industry}}",generating:"Génération des statistiques du secteur par IA...",marketOverview:"Aperçu du marché",customerBehavior:"Comportement des consommateurs",industryInsights:"Insights spécifiques au secteur",noData:"Aucune statistique générée pour le moment.",generate:"Générer les statistiques du secteur",generated:"Statistiques du secteur générées !"},regulations:{title:"Réglementations Pertinentes",subtitle:"Exigences de conformité pour {{name}} dans {{industry}}",checkDetails:"Vérifier les détails",noData:"Pas encore de données réglementaires",generate:"Générer les réglementations",generated:"Réglementations générées !",generateFailed:"Échec de la génération des réglementations"},nextSteps:{title:"Prochaines Étapes Suggérées",subtitle:"Actions concrètes pour lancer {{name}}",noData:"Pas encore de prochaines étapes",generate:"Générer les prochaines étapes",generated:"Prochaines étapes générées !",generateFailed:"Échec de la génération des proch
3266aines étapes"}},wD={benchmarksHeading:"Références du secteur : {{industry}}",benchmarksIntro:"Les chiffres ci-dessous proviennent de sources sectorielles et gouvernementales publiées. Chacune est liée afin que vous puissiez la vérifier avant de l'intégrer à votre propre plan.",startupCost:"Investissement de départ courant",annualRevenue:"Chiffre d'affaires annuel courant",netMargin:"Marge bénéficiaire nette",marketSize:"Taille du marché américain ({{year}})",licensesHeading:"Licences et autorisations pour {{industry}}",licensesIntro:"Les exigences varient selon l'État et la municipalité : vérifiez auprès de votre autorité locale avant de déposer votre dossier.",metricsHeading:"Les indicateurs qui comptent pour {{industry}}",metricsIntro:"Les prêteurs et les investisseurs s'attendent à retrouver ces indicateurs dans votre partie financière.",colMetric:"Indicateur",colBenchmark:"Référence du secteur",colSource:"Source",costHeading:"Ce qui pèse réellement sur les coûts : {{industry}}",risksHeading:"Risques de {{industry}} et comment y répondre",risksIntro:"Une section risques crédible nomme les menaces propres à ce modèle économique, et non un risque de marché générique.",mitigation:"Mesure d'atténuation : "},xD={nav:iD,hero:oD,features:lD,howItWorks:cD,pricing:uD,testimonials:dD,cta:pD,footer:mD,auth:hD,landing:fD,dashboard:gD,preview:vD,executiveSummaryPage:yD,sections:bD,industryInsights:wD},kD={features:"Funktionen",howItWorks:"So funktioniert's",pricing:"Preise",testimonials:"Referenzen",signIn:"Anmelden",getStarted:"Loslegen"},SD={badge:"Vertraut von über 27.300 Unternehmern weltweit",title:"Erstellen Sie einen professionellen",titleHighlight:"Businessplan",titleEnd:"in Minuten",subtitle:"Unsere KI-gestützte Plattform hilft Ihnen, umfassende, investorenreife Businesspläne zu erstellen. Beantworten Sie einige Fragen und lassen Sie unsere KI die schwere Arbeit erledigen.",cta:"Erstellen Sie Ihren Businessplan",secondaryCta:"Beispielplan ansehen",plansCreated:"Erstellte Pläne",avgTime:"Durchschn. Zeit",minutes:"Minuten",satisfaction:"Zufriedenheitsrate",samplePlan:"Beispiel-Businessplan",executiveSummary:"Zusammenfassung",sampleContent:"TechFlow Solutions ist ein innovatives SaaS-Unternehmen, das sich auf die Optimierung der Workflow-Automatisierung für kleine und mittlere Unternehmen konzentriert..."},PD={title:"Alles was Sie brauchen um",titleHighlight:"Erfolgreich zu sein",subtitle:"Unsere Plattform bietet alle Tools und Funktionen, die Sie für einen erfolgreichen Businessplan benötigen.",aiPowered:{title:"KI-gestütztes Schreiben",description:"Unsere fortschrittliche KI analysiert Ihre Eingaben und generiert professionelle, maßgeschneiderte Inhalte für jeden Abschnitt Ihres Businessplans."},financialProjections:{title:"Finanzprognosen",description:"Generieren Sie automatisch realistische Finanzprognosen, einschließlich Umsatzprognosen, Cashflow-Analysen und Break-Even-Analysen."},marketAnalysis:{title:"Marktanalyse",description:"Erhalten Sie umfassende Marktforschung und Wettbewerbsanalysen, die auf Ihre spezifische Branche und Zielmarkt zugeschnitten sind."},exportOptions:{title:"Exportoptionen",description:"Laden Sie Ihren fertigen Businessplan in verschiedenen Formaten herunter, darunter PDF, Word und PowerPoint-Präsentationen."},collaboration:{title:"Team-Zusammenarbeit",description:"Laden Sie Teammitglieder ein, in Echtzeit an Ihrem Businessplan mitzuarbeiten, mit rollenbasierten Berechtigungen."},templates:{title:"Branchenvorlagen",description:"Starten Sie mit professionell gestalteten Vorlagen, die auf Ihre spezifische Branche und Unternehmensart zugeschnitten sind."}},AD={title:"Erstellen Sie Ihren Plan in",titleHighlight:"3 einfachen Schritten",subtitle:"Unser optimierter Prozess macht es einfach, von der Idee zum professionellen Businessplan zu gelangen.",step1:{title:"Fragen beantworten",description:"Erzählen Sie uns von Ihrer Geschäftsidee, Zielmarkt und Zielen durch unseren geführten Fragebogen."},step2:{title:"KI erstellt Ihren Plan",description:"Unsere KI analysiert Ihre Antworten und erstellt einen umfassenden, maßgeschneiderten Businessplan."},step3:{title:"Überprüfen & Exportieren",description:"Bearbeiten Sie Ihren Plan, fügen Sie letzte Details hinzu und exp
3266ortieren Sie ihn in Ihrem bevorzugten Format."}},ED={title:"Einfache,",titleHighlight:"transparente Preise",subtitle:"Wählen Sie den Plan, der am besten zu Ihnen passt. Keine versteckten Gebühren, keine Abonnements.",perPlan:"pro Plan",oneTime:"Einmalzahlung",popular:"Am Beliebtesten",starter:{name:"Starter",description:"Perfekt zum Ausprobieren",features:["1 Vollständiger Businessplan","Alle Standardabschnitte","PDF-Export","E-Mail-Support"]},professional:{name:"Professionell",description:"Ideal für ernsthafte Unternehmer",features:["1 Vollständiger Businessplan","Alle Standardabschnitte","Finanzprognosen","Marktanalyse","PDF- & Word-Export","Prioritäts-Support"]},enterprise:{name:"Unternehmen",description:"Für Teams und Berater",features:["5 Vollständige Businesspläne","Alle Professional-Funktionen","Individuelles Branding","Team-Zusammenarbeit","API-Zugang","Dedizierter Support"]},cta:"Loslegen"},CD={title:"Geliebt von",titleHighlight:"Unternehmern",titleEnd:"weltweit",subtitle:"Schließen Sie sich Tausenden zufriedener Nutzer an, die erfolgreiche Businesspläne mit Bizplanner.ai erstellt haben"},TD={title:"Bereit, Ihren",titleHighlight:"Businessplan zu erstellen?",subtitle:"Schließen Sie sich über 27.300 Unternehmern an, die Bizplanner.ai genutzt haben, um ihre Geschäftsideen zum Leben zu erwecken.",button:"Erstellen Sie jetzt Ihren Businessplan",guarantee:"30-Tage-Geld-zurück-Garantie",noSubscription:"Kein Abonnement erforderlich"},jD={description:"Erstellen Sie professionelle, investorenreife Businesspläne in Minuten mit KI-Unterstützung.",product:"Produkt",features:"Funktionen",pricing:"Preise",templates:"Vorlagen",examples:"Beispiele",resources:"Ressourcen",blog:"Blog",guides:"Anleitungen",helpCenter:"Hilfezentrum",webinars:"Webinare",company:"Unternehmen",about:"Über uns",careers:"Karriere",contact:"Kontakt",press:"Presse",legal:"Rechtliches",privacy:"Datenschutzrichtlinie",terms:"Nutzungsbedingungen",cookies:"Cookie-Richtlinie",copyright:"© {{year}} Bizplanner.ai. Alle Rechte vorbehalten."},ID={welcomeBack:"Willkommen zurück",signInToContinue:"Melden Sie sich an, um zu Ihrem Dashboard zu gelangen",createAccount:"Konto erstellen",startCreating:"Beginnen Sie mit der Erstellung professioneller Businesspläne",email:"E-Mail",password:"Passwort",fullName:"Vollständiger Name",signIn:"Anmelden",signUp:"Konto erstellen",signingIn:"Anmeldung...",creatingAccount:"Konto wird erstellt...",noAccount:"Noch kein Konto?",haveAccount:"Bereits ein Konto?",signUpLink:"Registrieren",signInLink:"Anmelden",backToHome:"Zurück zur Startseite",checkEmail:"Überprüfen Sie Ihre E-Mail",magicLinkSentTo:"Wir haben einen Magic Link gesendet an",useDifferentEmail:"Andere E-Mail verwenden",continueWithGoogle:"Weiter mit Google",orContinueWithEmail:"oder weiter mit E-Mail",sendMagicLink:"Magic Link senden",sendingMagicLink:"Magic Link wird gesendet...",magicLinkToast:"Überprüfen Sie Ihre E-Mail für einen Magic Link zur Anmeldung!"},RD={nav:{templates:"Vorlagen",blog:"Blog",contact:"Kontakt",login:"Anmelden",dashboard:"Dashboard",getStarted:"Loslegen"},hero:{mainTitle:"Der Beste KI",mainTitleHighlight:"Businessplan",mainTitleEnd:"Generator",h2:"Schreiben Sie Ihren Businessplan in Minuten, nicht in Tagen",description:"Vergessen Sie die Frustration, einen Businessplan von Grund auf zu schreiben. Unser KI-Businessplan-Generator erstellt einen umfassenden, investorenreifen Plan mit Ihrem Geschäftsmodell, Zielmarkt, Finanzprognosen und mehr.",ctaButton:"Meinen Businessplan erstellen",dashboardButton:"Zum Dashboard",socialCount:"27.300+",socialText:"KI-Businesspläne bereits erstellt",features:{businessPlan:"Businessplan",marketingPlan:"Marketingplan",targetAudience:"Zielgruppe",competitors:"Wettbewerbsanalyse",swot:"SWOT-Analyse",financials:"Finanzprognosen",industryTrends:"Branchentrends",industryStats:"Branchenstatistiken",regulations:"Vorschriften",nextSteps:"Nächste Schritte"}},features:{badge:"Funktionen",title:"Alles-in-einem-Planung —",titleHighlight:"Schreiben, generieren & bearbeiten",subtitle:"Entdecken Sie die Kernfunktionen unseres Businessplan-Generators, von der intuitiven Bearbeitung im Browser bis zur flexiblen KI-Regeneration und praktischen Exportoptionen.",items:{aiGenerator:{title:"KI-Businessplan-Abschnittgenerator",description:"Wählen, passen Sie an und generieren Sie sofort Schlüsselabschnitte Ihres Businessplans."},targetAudience:{title:"Zielgruppenanalyse",description:"KI erstellt ein detailliertes Zielgruppenprofil mit Demografie, Psychografie, Bedürfnissen und 
3266Kundenpersonas."},competitors:{title:"Wettbewerbsanalyse",description:"Analysieren Sie wichtige Wettbewerber, deren Stärken, Schwächen, Marktpositionierung und Zielgruppenüberschneidung."},financials:{title:"Finanzprognosen",description:"Erhalten Sie KI-gestützte Finanzprognosen inkl. Startkosten, Umsatzprognosen und Rentabilitätsanalyse."},industryTrends:{title:"Branchentrends",description:"Verstehen Sie aktuelle Markttrends, Wachstumstreiber und potenzielle Herausforderungen Ihrer Branche."},industryStats:{title:"Branchenstatistiken",description:"Erhalten Sie von KI kuratierte Branchenstatistiken inkl. Marktüberblick und Kundenverhaltensdaten."},regulations:{title:"Relevante Vorschriften",description:"Erhalten Sie einen KI-kompilierten Überblick über wichtige Vorschriften, Lizenzen und Compliance-Anforderungen."},nextSteps:{title:"Vorgeschlagene nächste Schritte",description:"Erhalten Sie umsetzbare KI-Empfehlungen basierend auf Ihrer Businessplan-Analyse."},swot:{title:"SWOT-Analyse",description:"Identifizieren Sie Stärken, Schwächen, Chancen und Risiken Ihres Unternehmens mit KI-Analyse."}},textItems:{regenerate:{title:"Dokument regenerieren",description:"Schreiben Sie jeden Abschnitt einfach um, indem Sie spezifische Details oder Anweisungen angeben."},editing:{title:"Bearbeitung im Browser",description:"Bearbeiten und formatieren Sie Ihren Businessplan direkt im Browser mit einer Notion-ähnlichen Oberfläche."},export:{title:"Exportoptionen",description:"Exportieren Sie Ihre fertigen Geschäftsdokumente als professionelle PDF- oder Word-Dateien."}},ctaButton:"Loslegen"},comparison:{badge:"Warum BizPlanner AI wählen",title:"Wie Ihre Idee zu einem",titleHighlight:"professionellen Businessplan wird",subtitle:"Sparen Sie Hunderte von Dollar und Stunden an Zeit, indem Sie BizPlanner AI verwenden.",withTitle:"Mit BizPlanner AI",withoutTitle:"Selbst schreiben",step1:{title:"Beantworten Sie einige einfache Fragen",time:"~5 Minuten",desc:"Beantworten Sie einige Fragen zu Ihrer Geschäftsidee."},step2:{title:"Lassen Sie unsere KI ihre Magie wirken",time:"~15 Minuten",desc:"Lehnen Sie sich zurück, während unsere KI einen vollständigen, professionellen Businessplan generiert."},step3:{title:"Überprüfen, bearbeiten oder regenerieren",desc:"Überprüfen, bearbeiten oder regenerieren Sie die Abschnitte Ihres Businessplans."},step4:{title:"Laden Sie Ihren Businessplan herunter",desc:"Laden Sie Ihren Businessplan im Word- oder PDF-Format herunter."},pains:["Stunden oder Tage für Marktforschung aufwenden.","Schwierigkeiten, den Businessplan korrekt zu strukturieren.","Schwierigkeiten, genaue Finanzprognosen zu erstellen.","Abschnitte mehrmals umschreiben, um professionell zu klingen.","Formatierungsprobleme, die den Plan unprofessionell wirken lassen.","Risiko, wichtige Abschnitte zu übersehen, die Investoren erwarten.","Zeitverlust bei der Suche nach zuverlässigen Datenquellen.","Unsicherheit über branchenspezifische Terminologie.","Einen Freelancer zu engagieren kostet $100+ und erfordert trotzdem Ihren Input."],ctaButton:"Loslegen",testimonialText:"BizPlanner ist ein fantastisches Tool. Ich habe 3 Monate lang gekämpft, meinen Businessplan zusammenzustellen, und jetzt bin ich sortiert und vor einem zeitaufwändigen Aufwand gerettet.",testimonialAuthor:"— Morris, Uganda"},pricing:{badge:"Preise | BizPlanner AI",title:"Professioneller Businessplan für",titleHighlight:"10x weniger",titleEnd:"als einen Berater zu engagieren",withBizplanner:"Mit BizPlanner AI",consultant:"Berater",originalPrice:"9,99 $ / Monat",price:"9,99 $",oneTimePayment:"Einmalzahlung. Kein Abo.",includesLabel:"Jedes Paket enthält:",features:["Vollständiger Businessplan","2 KOSTENLOSE vollständige Regenerationen","Wettbewerbsanalyse","SWOT-Analyse","Finanzprognosen","Branchentrends","Branchenstatistiken","Relevante Vorschriften","Vorgeschlagene nächste Schritte"],consultantText:"Businesspläne auf",fiverrText:"Fiverr können 90 $ oder mehr kosten",consultantEnd:". Unser Angebot für nur 9,99 $ bietet ein hervorragendes Preis-Leistungs-Verhältnis.",ctaButton:"Loslegen →",securePayment:"🔒 Sichere Zahlung"},testimonials:{badge:"Kundenstimmen",title:"Schließen Sie sich 26.100+ Unternehmern wie Ihnen an",titleHighlight:"die ihre Unternehmen aufbauen",bottomText:"Unternehmer weltweit haben über 27.300+ erfolgreiche Businesspläne mit unserem KI-Generator erstellt.",ctaButton:"Loslegen"},footer:{description:"KI-gestützter Businessplan-Generator, der Unternehmern hilft, professionelle Pläne in Minuten zu erstellen.",product:"Produkt",features:"Funktionen",pricing:"Preise",templates:"Vorlagen",tools:"Tools",resources:"Ressourcen",blog:"Blog",industries:"Branchen",businessNameGenerator:"Firmennamen-Generator",company:"Unternehmen",about:"Über uns",contact:"Kontakt",legal:"Rechtliches",privacy:"Datenschutz",terms:"Nutzungsbedingungen",refundPolicy:"Rückerstattung",cookies:"Cookie-Richtlinie",copyright:"© {{year}} BizPlanner.ai. Alle Rechte vorbehalten.",madeWith:"Mit ❤️ für Unternehmer weltweit gemacht"},toc:{badge:"Inhaltsverzeichnis",title:"Das Inhaltsverzeichnis Ihres",titleHighlight:"Businessplans",subtitle:"Erstellen Sie detaillierte Abschnitte, die alles abdecken, von der Zusammenfassung bis zu den Finanzprognosen.",note:"Hinweis: Die
3266s ist ein allgemeines Inhaltsverzeichnis. Für jeden Businessplan generiert unsere KI eine maßgeschneiderte Struktur.",cta:"Mit dem Schreiben beginnen",sections:[{title:"Zusammenfassung",description:"Ein kurzer Überblick über Ihr Unternehmen, einschließlich Mission, Führung und Finanzdaten."},{title:"Unternehmensbeschreibung",description:"Ein Überblick über Ihr Unternehmen, einschließlich Branche, Geschichte und Zukunftsaussichten."},{title:"Marktforschung und -analyse",description:"Analyse des Zielmarktes, Trends und Wettbewerb + SWOT-Analyse."},{title:"Organisationsstruktur und Management",description:"Details zur Unternehmensstruktur und Managementrollen."},{title:"Produkte oder Dienstleistungen",description:"Überblick über das Angebot Ihres Unternehmens."},{title:"Marketing- und Vertriebsstrategie",description:"Strategie für Marketing und Vertrieb Ihrer Produkte oder Dienstleistungen."},{title:"Betriebsplan",description:"Überblick über den täglichen Geschäftsbetrieb, Logistik und Einrichtungen."},{title:"Finanzplan",description:"Finanzprognosen, einschließlich Umsatzprognose, Gewinn und Verlust, Cashflow und Bilanz."},{title:"Risikoanalyse",description:"Identifizierung potenzieller Risiken und Strategien zu deren Minderung."}]},blog:{badge:"Aus dem Blog",title:"Neueste Einblicke &",titleHighlight:"Updates",readMore:"Mehr Artikel lesen"},templatesShowcase:{badge:"Beispiele & Vorlagen",title:"Businessplan-",titleHighlight:"Beispiele",subt
3266itle:"Entdecken Sie Beispiele, die mit unserem KI-Businessplan-Generator erstellt wurden. Echte Ergebnisse, die Tiefe und Personalisierung zeigen.",cta:"Mehr Businessplan-Vorlagen ansehen",planSuffix:"Businessplan"},templatePage:{notFound:"Vorlage nicht gefunden",notFoundDesc:"Die gesuchte Vorlage existiert nicht.",viewAll:"Alle Vorlagen anzeigen",businessPlan:"Businessplan",createYourPlan:"Ihren {{name}}-Plan erstellen",downloadSample:"Beispiel-PDF herunterladen",generating:"Wird generiert...",whatsIncluded:"Was enthalten ist:",moreSections:"+ {{count}} weitere Abschnitte",jumpTo:"Springe zu:",section:"Abschnitt {{num}}",planTemplate:"{{name}} Businessplan-Vorlage",reviewSubtitle:"Sehen Sie sich unsere umfassende Mustervorlage unten an. Erstellen Sie Ihre personalisierte Version mit KI-Einblicken.",readyToStart:"Bereit, Ihr {{name}} zu starten?",readyCta:"Erstellen Sie in Minuten einen vollständigen, personalisierten Businessplan mit unserer KI-Plattform.",getStartedFree:"Kostenlos starten",relatedTemplates:"Verwandte Vorlagen in {{category}}"}},_D={title:"Dashboard: {{name}}",home:"Startseite",coverPage:"Deckblatt",executiveSummary:"Zusammenfassung",businessDetails:"Unternehmensdetails",yourDocuments:"Ihre Dokumente",targetAudience:"Zielgruppe",competitorsAnalysis:"Wettbewerbsanalyse",swotAnalysis:"SWOT-Analyse",financialProjections:"Finanzprognosen",industryTrends:"Branchentrends",industryStats:"Branchenstatistiken",relevantRegulations:"Relevante Vorschriften",suggestedNextSteps:"Vorgeschlagene nächste Schritte",newBusiness:"Neues Unternehmen",generationCredits:"Generierungsguthaben",accountSettings:"Kontoeinstellungen",signOut:"Abmelden",selectBusiness:"Unternehmen wählen",viewAllDocuments:"Alle Dokumente anzeigen",seeMore:"Mehr anzeigen",viewFinancialPlan:"Finanzplan anzeigen",editBusinessDetails:"Details bearbeiten",viewFullProfile:"Vollständiges Profil anzeigen",exploreData:"Daten erkunden",viewAllSteps:"Alle Schritte anzeigen",viewAnalysis:"Analyse anzeigen",viewFullAnalysis:"Vollständige Analyse anzeigen",checkDetails:"Details prüfen",businessPlan:"Businessplan",startupCosts:"Startkosten",fundingGoal:"Finanzierungsziel",projectedBreakeven:"Geplanter Break-Even",months:"Monate",marketSize:"Marktgröße",variesByRegion:"Variiert nach Region",growthRate:"Wachstumsrate",industryDependent:"Branchenabhängig",strength:"Stärke",strengths:"Stärken",weaknesses:"Schwächen",generating:"Wird generiert...",unlockToView:"Schalten Sie dieses Unternehmen frei, um diesen Abschnitt anzuzeigen",generatingBanner:"Einen Moment — wir generieren Ihren Businessplan!",generatingBannerSub:"Dies dauert normalerweise 1–2 Minuten. Abschnitte erscheinen automatisch.",planReady:"🎉 Ihr Businessplan ist fertig!",planReadySub:'Klicken Sie unten auf <strong>"Ihre Dokumente"</strong>, um Ihren vollständigen Plan anzuzeigen und zu bearbeiten.',unlockWelcome:"🎉 Willkommen in Ihrem Unternehmen!",unlockResearch:"Unsere KI-Modelle haben",unlockAnd:"und",unlockForYou:"für Sie recherchiert.",unlockAccess:"✨ Wenn Sie Ihr Unternehmen freischalten, erhalten Sie Zugang zu:",unlockFeature1:"Allen Abschnitten mit detaillierten Einblicken",unlockFeature2:'Ihrem vollständigen Businessplan (verfügbar im Abschnitt "Ihre Dokumente")',unlockFeature3:"KI-gestützte Branchenforschung und -analyse",creditsAvailable:"Sie haben {{count}} Guthaben verfügbar",unlockNowCredit:"Jetzt freischalten (1 Guthaben)",unlockNow:"Schalten Sie Ihr Unternehmen jetzt frei 🚀",discoverTrends:"Entdecken Sie relevante Trends für {{industry}}.",targetMarketAnalysis:"Zielmarktanalyse für Ihr Unternehmen.",reviewBusinessInfo:"Überprüfen und aktualisieren Sie Ihre Unternehmensinformationen, Teammitglieder, Produkte/Dienstleistungen usw.",insightsGenerated:"Brancheneinblicke generiert!"},OD={skipToDashboard:"Zum Dashboard",title:"Vorschau Ihres Businessplans",subtitle:"Hier ist eine Vorschau Ihres personalisierten Businessplans",generatingPlan:"Wir generieren Ihren Businessplan...",generatingWait:"Dies dauert normalerweise 30–60 Sekunden. Bleiben Sie hier oder schließen Sie die Seite — wir senden Ihnen eine E-Mail, wenn die Vorschau fertig ist.",generationTimedOut:"Generierung abgelaufen — dies kann bei hoher Nachfrage passieren.",dataSaved:"Keine Sorge, Ihre Daten sind gespeichert. Klicken Sie unten, um es erneut zu versuchen.",retryGeneration:"Generierung wiederholen",retry:"Wiederholen",generatingCover:"Deckblatt wird generiert...",generatingSummary:"Zusammenfassung wird generiert...",pageOf:"Seite {{current}} von {{total}}",coverPage:"Deckblatt",executiveSummary:"Zusammenfassung",businessPlan:"Businessplan",preparedBy:"Erstellt von",problem:"Problem",solution:"Lösung",targetMarket:"Zielmarkt",competitiveAdvantage:"Wettbewerbsvorteil",unlockToRead:"Freischalten um weiterzulesen",unlockFullPlan:"Vollständigen Plan freischalten",unlockDescription:"Erhalten Sie Ihren vollständigen KI-generierten Businessplan mit detaillierten Einblicken",unlockNow:"Jetzt freischalten",continuePreview:"Mit kostenloser Vorschau fortfahren",oneTimePayment:"Einmalzahlung • Lebenslanger Zugang",features:{swot:"Vollständige SWOT-Analyse",financials:"Detaillierte Finanzprognosen",audience:"Zielgruppenforschung",competitors:"Wettbewerbsanalyse",trends:"Branchentrends & Statistiken",regulations:"Regulatorische Anforderungen",nextSteps:"Umsetzbare nächste Schritte",pdf:"Herunterladbarer PDF-Bericht"}},ND={title:"Zusammenfassung",overview:"Überblick",theProblem:"Das Problem",ourSolution:"Unsere Lösung",targetMarket:"Zielmarkt",businessModel:"Geschäftsmodell",competitiveAdvantage:"Wettbewerbsvorteil",financialHighlights:"Finanzielle Highlights",unlockFinancials:"Freischalten, um vollständige Finanzdetails zu sehen",keyMilestones:"Wichtige Meilensteine",unlockFullPlan:"Vollständigen Businessplan freischalten",noSummaryTitle:"Noch keine Zusammenfassung",noSummaryDesc:"Erstellen Sie eine professionelle Zusammenfassung für Ihren Businessplan",generateButton:"Zusammenfassung generieren",generated:"Zusammenfassung erstellt!",generateFailed:"Fehler beim Erstellen der Zusammenfassung"},LD={purchaseRequired:"Bitte erwerben Sie Freischalt-/Generierungsguthaben, um auf diesen Bereich zuzugreifen.",signInRequired:"Bitte melden Sie sich an, um diesen Bereich zu generieren",invali
3266dPlanId:"Ungültige Businessplan-ID",audience:{title:"Zielgruppe",subtitle:"Ein(e) {{industry}} für {{name}}",summary:"Zielgruppenübersicht",demographics:"Demografie",psychographics:"Psychografie",ageRange:"Altersgruppe:",occupation:"Beruf:",incomeLevel:"Einkommensniveau:",education:"Bildung:",lifestyle:"Lebensstil:",values:"Werte:",interests:"Interessen:",needsAndPainPoints:"Bedürfnisse & Schmerzpunkte",painPoint:"Schmerzpunkt: ",customerPersonas:"Kundenpersonas",goals:"ZIELE",frustrations:"FRUSTRATIONEN",noData:"Noch keine Zielgruppendaten",generate:"Zielgruppe generieren",generated:"Zielgruppe generiert!",generateFailed:"Fehler beim Generieren der Zielgruppe"},competitors:{title:"Wettbewerbsanalyse",subtitle:"Analyse der wichtigsten Wettbewerber von {{name}} in {{industry}}",strengths:"Stärken",weaknesses:"Schwächen",pricingTier:"Preissegment",audienceOverlap:"Zielgruppenüberschneidung",noData:"Noch keine Wettbewerbsanalyse",generate:"Wettbewerbsanalyse generieren",generated:"Wettbewerbsanalyse generiert!",generateFailed:"Fehler beim Generieren der Wettbewerbsanalyse"},swot:{title:"SWOT-Analyse",subtitle:"Stärken, Schwächen, Chancen und Risiken für {{name}}",strengths:"Stärken",weaknesses:"Schwächen",opportunities:"Chancen",threats:"Risiken",noData:"Noch keine SWOT-Analyse",generate:"SWOT-Analyse generieren",generated:"SWOT-Analyse generiert!",generateFailed:"Fehler beim Generieren der SWOT-Analyse",loadFailed:"Fehler beim Laden der SWOT-Daten"},financials:{title:"Finanzprognosen",subtitle:"Wichtige Finanzkennzahlen und Prognosen für {{name}}",financialOverview:"Finanzübersicht",initialBudget:"Anfangsbudget",investmentNeeds:"Investitionsbedarf",keyMetricsOverview:"Übersicht Kennzahlen",year1Revenue:"Umsatz Jahr 1",year1NetIncome:"Nettoergebnis Jahr 1",grossProfitMargin:"Bruttomarge",netProfitMargin:"Nettomarge",revenueByProduct:"Umsatz nach Produkt/Dienstleistung",productService:"Produkt/Dienstleistung",year1:"Jahr 1",year2:"Jahr 2",year3:"Jahr 3",totalRevenue:"Gesamtumsatz",profitLossSummary:"Gewinn- und Verlustrechnung",metric:"Kennzahl",revenue:"Umsatz",cogs:"Herstellungskosten",grossProfit:"Bruttogewinn",operatingExpenses:"Betriebskosten",netIncome:"Nettoergebnis",balanceSheetSummary:"Bilanzübersicht",totalAssets:"Gesamtvermögen",totalLiabilities:"Gesamtverbindlichkeiten",totalEquity:"Gesamteigenkapital",keyAssumptions:"Wichtige Annahmen",syncedInfo:"Diese Finanzdaten sind mit Ihrem vollständigen Businessplan synchronisiert.",viewEditFinancials:"Finanzplan ansehen und bearbeiten",summaryQuestion:"Wie sind Ihre Finanzprognosen für die nächsten 3-5 Jahre?",budgetQuestion:"Wie hoch ist Ihr Anfangsbudget?",totalStartupCosts:"Gesamte Gründungskosten",year1ProjectedRevenue:"Prognostizierter Umsatz Jahr 1",projectedBreakeven:"Prognostizierter Break-Even",months:"Monate",year1NetProfitMargin:"Nettomarge Jahr 1",startupCostsBreakdown:"Aufschlüsselung Gründungskosten",totalEstimatedCosts:"Geschätzte Gesamtkosten",fundingOverview:"Finanzierungsübersicht",totalFundingNeeded:"Gesamtfinanzierungsbedarf",keyProjections:"Prognosen & Rentabilität (Schätzungen Jahr 1)",projections:"Prognosen",estRevenue:"Geschätzter Umsatz:",avgMonthlyRevenue:"Durchschnittlicher Monatsumsatz:",revenueForecast:"UMSATZPROGNOSE",profitability:"Rentabilität",projectedNetProfit:"Prognostizierter Nettogewinn:",breakevenPoint:"Break-Even-Punkt:",est3YearROI:"Geschätzter 3-Jahres-ROI:",snapshotInfo:"Dies ist eine Finanzübersicht auf hoher Ebene.",viewAllDocuments:"Alle Dokumente anzeigen",noData:"Noch keine Finanzprognosen",generate:"Finanzprognosen generieren",generated:"Finanzprognosen generiert!",generateFailed:"Fehler beim Generieren der Finanzprognosen"},trends:{title:"Branchentrends",subtitle:"Relevante Trends für {{name}} in {{industry}}",generating:"KI-gestützte Branchentrends werden generiert...",noData:"Noch keine Trends generiert.",generate:"Branchentrends generieren",generated:"Branchentrends generiert!"},stats:{title:"Branchenstatistiken",subtitle:"Wichtige Statistiken für {{name}} in {{industry}}",generating:"KI-gestützte Branchenstatistiken werden generiert...",marketOverview:"Marktübersicht",customerBehavior:"Kundenverhalten",industryInsights:"Branchenspezifische Einblicke",noData:"Noch keine Statistiken generiert.",generate:"Branchenstatistiken generieren",generated:"Branchenstatistiken generiert!"},regulations:{title:"Relevante Vorschriften",subtitle:"Compliance-Anforderungen für {{name}} in {{industry}}",checkDetails:"Details prüfen",noData:"Noch keine Vorschriftendaten",generate:"Vorschriften generieren",generated:"Vorschriften generiert!",generateFailed:"Fehler beim Generieren der Vorschriften"},nextSteps:{title:"Empfohlene nächste Schritte",subtitle:"Konkrete Maßnahmen zum Start von {{name}}",noData:"Noch keine nächsten Schritte",generate:"Nächste Schritte generieren",generated:"Nächste Schritte generiert!",generateFailed:"Fehler beim Generieren der nächsten Schritte"}},zD={nav:kD,hero:SD,features:PD,howItWorks:AD,pricing:ED,testimonials:CD,cta:TD,footer:jD,auth:ID,landing:RD,dashboard:_D,preview:OD,executiveSummaryPage:ND,sections:LD},BD={features:"Recursos",howItWorks:"Como Funciona",pricing:"Preços",testimonials:"Depoimentos",signIn:"Entrar",getStarted:"Começar"},DD={badge:"Confiado por mais de 27.300 empreendedores em todo o mundo",title:"Crie um",titleHighlight:"Plano de Negócios",titleEnd:"Profissional em Minutos",subtitle:"Nossa plataforma com IA ajuda você a criar planos de negócios completos e prontos para investidores. Responda algumas perguntas e deixe nossa IA fazer o trabalho pesado.",cta:"Crie Seu Plano de Negócios",secondaryCta:"Ver Plano de Exemplo",plansCreated:"Planos Criados",avgTime:"Tempo Médio",minutes:"minutos",satisfaction:"Taxa de Satisfação",samplePlan:"Plano de Negócios de Exemplo",executiveSummary:"Sumário Executivo",sampleC
3266ontent:"TechFlow Solutions é uma empresa SaaS inovadora focada em otimizar a automação de fluxos de trabalho para pequenas e médias empresas..."},qD={title:"Tudo o que Você Precisa para",titleHighlight:"Ter Sucesso",subtitle:"Nossa plataforma fornece todas as ferramentas e recursos necessários para criar um plano de negócios vencedor.",aiPowered:{title:"Escrita com IA",description:"Nossa IA avançada analisa suas informações e gera conteúdo profissional e personalizado para cada seção do seu plano de negócios."},financialProjections:{title:"Projeções Financeiras",description:"Gere automaticamente previsões financeiras realistas, incluindo projeções de receita, demonstrativos de fluxo de caixa e análise de ponto de equilíbrio."},marketAnalysis:{title:"Análise de Mercado",description:"Obtenha pesquisa de mercado completa e análise competitiva adaptadas ao seu setor específico e mercado-alvo."},exportOptions:{title:"Opções de Exportação",description:"Baixe seu plano de negócios completo em múltiplos formatos, incluindo PDF, Word e apresentações em PowerPoint."},collaboration:{title:"Colaboração em Equipe",description:"Convide membros da equipe para colaborar no seu plano de negócios em tempo real com permissões baseadas em funções."},templates:{title:"Modelos por Setor",description:"Comece com modelos projetados profissionalmente e adaptados ao seu setor e tipo de negócio específico."}},MD={title:"Crie Seu Plano em",titleHighlight:"3 Passos Simples",subtitle:"Nosso processo simplificado facilita ir da ideia ao plano de negócios profissional.",step1:{title:"Responda Perguntas",description:"Conte-nos sobre sua ideia de negócio, mercado-alvo e objetivos através do nosso questionário guiado."},step2:{title:"IA Gera Seu Plano",description:"Nossa IA analisa suas respostas e cria um plano de negócios completo e personalizado."},step3:{title:"Revise e Exporte",description:"Edite seu plano, adicione os toques finais e exporte no seu formato preferido."}},FD={title:"Preços",titleHighlight:"Simples e Transparentes",subtitle:"Escolha o plano que funciona melhor para você. Sem taxas ocultas, sem assinaturas.",perPlan:"por plano",oneTime:"Pagamento único",popular:"Mais Popular",starter:{name:"Iniciante",description:"Perfeito para testar",features:["1 Plano de Negócios Completo","Todas as Seções Padrão","Exportação PDF","Suporte por Email"]},professional:{name:"Profissional",description:"Ideal para empreendedores sérios",features:["1 Plano de Negócios Completo","Todas as Seções Padrão","Projeções Financeiras","Análise de Mercado","Exportação PDF e Word","Suporte Prioritário"]},enterprise:{name:"Empresarial",description:"Para equipes e consultores",features:["5 Planos de Negócios Completos","Todos os Recursos Profissionais","Marca Personalizada","Colaboração em Equipe","Acesso API","Suporte Dedicado"]},cta:"Começar"},UD={title:"Amado por",titleHighlight:"Empreendedores",titleEnd:"em Todo o Mundo",subtitle:"Junte-se a milhares de usuários satisfeitos que criaram planos de negócios vencedores com Bizplanner.ai"},$D={title:"Pronto para Criar Seu",titleHighlight:"Plano de Negócios?",subtitle:"Junte-se a mais de 27.300 empreendedores que usaram Bizplanner.ai para dar vida às suas ideias de negócio.",button:"Crie Seu Plano de Negócios Agora",guarantee:"Garantia de devolução em 30 dias",noSubscription:"Sem assinatura necessária"},WD={description:"Crie planos de negócios profissionais e prontos para investidores em minutos com assistência de IA.",product:"Produto",features:"Recursos",pricing:"Preços",templates:"Modelos",examples:"Exemplos",resources:"Recursos",blog:"Blog",guides:"Guias",helpCenter:"Central de Ajuda",webinars:"Webinars",company:"Empresa",about:"Sobre Nós",careers:"Carreiras",contact:"Contato",press:"Imprensa",legal:"Legal",privacy:"Política de Privacidade",terms:"Termos de Serviço",cookies:"Política de Cookies",copyright:"© {{year}} Bizplanner.ai. Todos os direitos reservados."},VD={welcomeBack:"Bem-vindo de volta",signInToContinue:"Entre para continuar ao seu painel",createAccount:"Crie sua conta",startCreating:"Comece a criar planos de negócios profissionais",email:"Email",password:"Senha",fullName:"Nome Completo",signIn:"Entrar",signUp:"Criar Conta",signingIn:"Entrando...",creatingAccount:"Criando conta...",noAccount:"Não tem conta?",haveAccount:"Já tem conta?",signUpLink:"Cadastre-se",signInLink:"Entre",backToHome:"Voltar ao início",checkEmail:"Verifique seu email",magicLinkSentTo:"Enviamos um link mágico para",useDifferentEmail:"Usar outro email",continueWithGoogle:"Continuar com Google",orContinueWithEmail:"ou continuar com email",sendMagicLink:"Enviar link mágico",sendingMagicLink:"Enviando link mágico...",magicLinkToast:"Verifique seu email para um link mágico de login!"},HD={nav:{templates:"Modelos",blog:"Blog",contact:"Contato",login:"Entrar",dashboard:"Painel",getStarted:"Começar"},hero:{mainTitle:"O Melhor Gerador de",mainTitleHighlight:"Plano de Negócios",mainTitleEnd:"com IA",h2:"Escreva seu plano de negócios em minutos, não em dias",description:"Esqueça a frustração de escrever um plano de negócios do zero. Nosso gerador de planos de negócios com IA cria um plano completo e pronto para investidores com seu modelo de negócios, mercado-alvo, projeções financeiras e mais.",ctaButton:"Obter Meu Plano de Negócios",dashboardButton:"Ir ao Painel",socialCount:"27.300+",socialText:"Planos de negócios IA já criados",features:{businessPlan:"Plano de Negócios",marketingPlan:"Plano de Marketing",targetAudience:"Público-Alvo",competitors:"Análise de Concorrentes",swot:"Análise SWOT",financials:"Projeções Financeiras",industryTrends:"Tendências do Setor",industryStats:"Estatísticas do Setor",regulations:"Regulamentações",nextSteps:"Próximos Passos"}},features:{badge:"Recursos",title:"Planejamento completo —",titleHighlight:"Escreva, gere e edite",subt
3266itle:"Descubra as funcionalidades principais do nosso gerador de planos de negócios, desde edição intuitiva no navegador até regeneração IA flexível e opções de exportação convenientes.",items:{aiGenerator:{title:"Gerador de seções com IA",description:"Escolha, personalize e gere instantaneamente seções-chave do seu plano de negócios."},targetAudience:{title:"Análise do público-alvo",description:"A IA cria um perfil detalhado do seu público-alvo, cobrindo demografia, psicografia, necessidades e personas."},competitors:{title:"Análise de concorrentes",description:"Analise concorrentes-chave, suas forças, fraquezas, posicionamento e sobreposição de audiência com IA."},financials:{title:"Projeções financeiras",description:"Obtenha projeções financeiras com IA incluindo custos iniciais, previsões de receita e análise de rentabilidade."},industryTrends:{title:"Tendências do setor",description:"Compreenda as últimas tendências do mercado, impulsionadores de crescimento e desafios potenciais do seu setor."},industryStats:{title:"Estatísticas do setor",description:"Obtenha estatísticas-chave do setor curadas por IA, incluindo panorama do mercado e comportamento do cliente."},regulations:{title:"Regulamentações relevantes",description:"Receba um resumo compilado por IA de regulamentações importantes, licenças e requisitos de conformidade."},nextSteps:{title:"Próximos passos sugeridos",description:"Obtenha recomendações concretas baseadas em IA para guiar suas próximas ações."},swot:{title:"Análise SWOT",description:"Identifique Forças, Fraquezas, Oportunidades e Ameaças do seu negócio com análise IA."}},textItems:{regenerate:{title:"Regenerar documento",description:"Reescreva e reformule facilmente qualquer seção fornecendo detalhes ou instruções específicas."},editing:{title:"Edição no navegador",description:"Edite e formate seu plano de negócios diretamente no navegador com interface intuitiva tipo Notion."},export:{title:"Opções de exportação",description:"Exporte seus documentos business finalizados em PDF ou Word profissionais."}},ctaButton:"Começar"},comparison:{badge:"Por que escolher BizPlanner AI",title:"Como sua ideia se torna um",titleHighlight:"plano de negócios profissional",subtitle:"Economize centenas de dólares e horas de tempo usando BizPlanner AI para gerar seu plano de negócios profissional.",withTitle:"Com BizPlanner AI",withoutTitle:"Escrevendo sozinho",step1:{title:"Responda algumas perguntas simples",time:"~5 minutos",desc:"Responda perguntas sobre sua ideia de negócio."},step2:{title:"Deixe nossa IA fazer sua mágica",time:"~15 minutos",desc:"Relaxe enquanto nossa IA gera um plano completo e profissional."},step3:{title:"Revise, edite ou regenere",desc:"Revise, edite ou regenere as seções do seu plano."},step4:{title:"Baixe seu plano de negócios",desc:"Baixe seu plano em formato Word ou PDF."},pains:["Passar horas ou dias em pesquisa de mercado.","Dificuldade em estruturar o plano corretamente.","Dificuldade em criar projeções financeiras precisas.","Reescrever seções várias vezes para soar profissional.","Problemas de formatação que tornam o plano pouco profissional.","Risco de omitir seções-chave esperadas por investidores.","Tempo perdido procurando fontes de dados confiáveis.","Incerteza sobre terminologia específica do setor.","Contratar um freelancer custará $100+ e ainda requer sua participação."],ctaButton:"Começar",testimonialText:"BizPlanner é uma ferramenta fantástica. Lutei durante 3 meses para montar meu plano de negócios, e aqui estou, organizado e salvo de um esforço que consome tempo.",testimonialAuthor:"— Morris, Uganda"},pricing:{badge:"Preços | BizPlanner AI",title:"Plano de negócios profissional por",titleHighlight:"10x menos",titleEnd:"que contratar um consultor",withBizplanner:"Com BizPlanner AI",consultant:"Consultor",originalPrice:"$9,99 / mês",price:"$9,99",oneTimePayment:"Pagamento único. Sem assinatura.",includesLabel:"Cada pacote inclui:",features:["Plano de Negócios Completo","2 Regenerações Completas GRÁTIS","Análise de Concorrentes","Análise SWOT","Projeções Financeiras","Tendências do Setor","Estatísticas do Setor","Regulamentações Relevantes","Próximos Passos Sugeridos"],consultantText:"Planos de negócios no",fiverrText:"Fiverr podem custar $90 ou mais",consultantEnd:". Nossa oferta por apenas $9,99 oferece excelente custo-benefício.",ctaButton:"Começar →",securePayment:"🔒 Pagamento seguro"},testimonials:{badge:"Depoimentos de clientes",title:"Junte-se a mais de 26.100 empreendedores como você",titleHighlight:"construindo seus negócios",bottomText:"Empreendedores de todo o mundo criaram mais de 27.300+ planos de negócios bem-sucedidos usando nosso gerador com IA.",ctaButton:"Começar"},footer:{description:"Gerador de planos de negócios com IA que ajuda empreendedores a criar planos profissionais em minutos.",product:"Produto",features:"Recursos",pricing:"Preços",templates:"Modelos",tools:"Ferramentas",resources:"Recursos",blog:"Blog",industries:"Setores",businessNameGenerator:"Gerador de Nomes",company:"Empresa",about:"Sobre Nós",contact:"Contato",legal:"Legal",privacy:"Política de Privacidade",terms:"Termos de Serviço",refundPolicy:"Política de Reembolso",cookies:"Política de Cookies",copyright:"© {{year}} BizPlanner.ai. Todos os direitos reservados.",madeWith:"Feito com ❤️ para empreendedores do mundo todo"},toc:{badge:"Índice",title:"O índice do seu",titleHighlight:"plano de negócios",subtitle:"Gere seções detalhadas cobrindo tudo, do resumo executivo às projeções financeiras.",note:"Nota: O acima é um índice geral. Para cada plano, nossa IA gera uma estrutura personalizada.",cta:"Começar a escrever",sections:[{title:"Resumo executivo",de
3266scription:"Uma breve visão geral do seu negócio, incluindo missão, liderança e destaques financeiros."},{title:"Descrição do negócio",description:"Um panorama do seu negócio, incluindo setor, história e perspectivas."},{title:"Pesquisa e análise de mercado",description:"Análise do mercado-alvo, tendências e concorrência + análise SWOT."},{title:"Estrutura organizacional e gestão",description:"Detalhes da estrutura empresarial e funções da equipe de gestão."},{title:"Produtos ou serviços",description:"Visão geral do que seu negócio oferece e como é produzido."},{title:"Estratégia de marketing e vendas",description:"Estratégia para comercializar e vender seus produtos ou serviços."},{title:"Plano operacional",description:"Esboço das operações diárias, logística e instalações."},{title:"Plano financeiro",description:"Projeções financeiras, incluindo previsão de vendas, demonstração de resultados, fluxo de caixa e balanço."},{title:"Análise de riscos",description:"Identificação de riscos potenciais e estratégias para mitigá-los."}]},blog:{badge:"Do blog",title:"Últimas novidades &",titleHighlight:"atualizações",readMore:"Ler mais artigos"},templatesShowcase:{badge:"Exemplos e modelos",title:"Exemplos de",titleHighlight:"planos de negócios",subtitle:"Explore exemplos criados com nosso gerador de planos de negócios com IA. São resultados reais mostrando a profundidade e personalização possíveis.",cta:"Ver mais modelos de planos de negócios",planSuffix:"plano de negócios"},templatePage:{notFound:"Modelo não encontrado",notFoundDesc:"O modelo que você procura não existe.",viewAll:"Ver todos os modelos",businessPlan:"Plano de Negócios",createYourPlan:"Criar seu plano {{name}}",downloadSample:"Baixar exemplo PDF",generating:"Gerando...",whatsIncluded:"O que está incluído:",moreSections:"+ {{count}} seções adicionais",jumpTo:"Ir para:",section:"Seção {{num}}",planTemplate:"Modelo de plano de negócios {{name}}",reviewSubtitle:"Revise nosso modelo completo abaixo. Crie sua versão personalizada com insights de IA.",readyToStart:"Pronto para iniciar seu {{name}}?",readyCta:"Gere um plano de negócios completo e personalizado em minutos com nossa plataforma de IA.",getStartedFree:"Começar grátis",relatedTemplates:"Modelos relacionados em {{category}}"}},GD={title:"Painel: {{name}}",home:"Início",coverPage:"Capa",executiveSummary:"Resumo executivo",businessDetails:"Detalhes do negócio",yourDocuments:"Seus documentos",targetAudience:"Público-alvo",competitorsAnalysis:"Análise de concorrentes",swotAnalysis:"Análise SWOT",financialProjections:"Projeções financeiras",industryTrends:"Tendências do setor",industryStats:"Estatísticas do setor",relevantRegulations:"Regulamentações relevantes",suggestedNextSteps:"Próximos passos sugeridos",newBusiness:"Novo negócio",generationCredits:"Créditos de geração",accountSettings:"Configurações da conta",signOut:"Sair",selectBusiness:"Selecionar negócio",viewAllDocuments:"Ver todos os documentos",seeMore:"Ver mais",viewFinancialPlan:"Ver plano financeiro",editBusinessDetails:"Editar detalhes",viewFullProfile:"Ver perfil completo",exploreData:"Explorar dados",viewAllSteps:"Ver todos os passos",viewAnalysis:"Ver análise",viewFullAnalysis:"Ver análise completa",checkDetails:"Verificar detalhes",businessPlan:"Plano de Negócios",startupCosts:"Custos iniciais",fundingGoal:"Meta de financiamento",projectedBreakeven:"Ponto de equilíbrio previsto",months:"Meses",marketSize:"Tamanho do mercado",variesByRegion:"Varia por região",growthRate:"Taxa de crescimento",industryDependent:"Depende do setor",strength:"Força",strengths:"Forças",weaknesses:"Fraquezas",generating:"Gerando...",unlockToView:"Desbloqueie este negócio para ver esta seção",generatingBanner:"Aguarde — estamos gerando seu plano de negócios!",generatingBannerSub:"Isso geralmente leva 1-2 minutos. As seções aparecerão automaticamente.",planReady:"🎉 Seu plano de negócios está pronto!",planReadySub:'Clique em <strong>"Seus documentos"</strong> abaixo para ver e editar seu plano completo.',unlockWelcome:"🎉 Bem-vindo ao seu negócio!",unlockResearch:"Nossos modelos de IA pesquisaram",unlockAnd:"e",unlockForYou:"para você.",unlockAccess:"✨ Se você desbloquear seu negócio, terá acesso a:",unlockFeature1:"Todas as seções com insights detalhados",unlockFeature2:'Seu plano de negócios completo (disponível em "Seus documentos")',unlockFeature3:"Pesquisa e análise do setor com IA",creditsAvailable:"Você tem {{count}} crédito(s) disponível(is)",unlockNowCredit:"Desbloquear agora (1 crédito)",unlockNow:"Desbloqueie seu negócio agora 🚀",discoverTrends:"Descubra tendências relevantes para {{industry}}.",targetMarketAnalysis:"Análise do mercado-alvo para seu negócio.",reviewBusinessInfo:"Revise e atualize as informações principais do seu negócio, equipe, produtos/serviços, etc.",insightsGenerated:"Insights do setor gerados!"},KD={skipToDashboard:"Ir ao painel",title:"Prévia do seu plano de negócios",subtitle:"Aqui está uma prévia do seu plano de negócios personalizado",generatingPlan:"Estamos gerando seu plano de negócios...",generatingWait:"Isso geralmente leva 30-60 segundos. Fique aqui ou feche a página — enviaremos um email quando a prévia estiver pronta.",generationTimedOut:"A geração expirou — isso pode acontecer em momentos de alta demanda.",dataSaved:"Não se preocupe, seus dados estão salvos. Clique abaixo para tentar novamente.",retryGeneration:"Tentar novamente",retry:"Tentar novamente",generatingCover:"Gerando capa...",generatingSummary:"Gerando resumo executivo...",pageOf:"Página {{current}} de {{total}}",coverPage:"Capa",executiveSummary:"Resumo executivo",businessPlan:"Plano de Negócios",preparedBy:"Preparado por",problem:"Problema",solution:"Solução",targetMarket:"Mercado-alvo",competitiveAdvantage:"Vantagem competitiva",unlockToRead:"Desbloqueie para continuar lendo",unlockFullPlan:"Desbloquear plano completo",unlockDescription:"Obtenha seu plano de negócios completo gerado por IA com insights detalhados",unlockNow:"Desbloquear agora",continuePreview:"Continuar com prévia gratuita",oneTimePayment:"Pagamento único • Acesso vitalício",features:{swot:"Análise SWOT completa",financials:"Projeções financeiras detalhadas",audie
3266nce:"Pesquisa de público-alvo",competitors:"Análise de concorrentes",trends:"Tendências e estatísticas do setor",regulations:"Requisitos regulatórios",nextSteps:"Próximos passos concretos",pdf:"Relatório PDF para download"}},YD={title:"Resumo Executivo",overview:"Visão Geral",theProblem:"O Problema",ourSolution:"Nossa Solução",targetMarket:"Mercado-Alvo",businessModel:"Modelo de Negócio",competitiveAdvantage:"Vantagem Competitiva",financialHighlights:"Destaques Financeiros",unlockFinancials:"Desbloqueie para ver os detalhes financeiros completos",keyMilestones:"Marcos Principais",unlockFullPlan:"Desbloquear Plano de Negócio Completo",noSummaryTitle:"Ainda sem resumo executivo",noSummaryDesc:"Gere um resumo executivo profissional para seu plano de negócio",generateButton:"Gerar Resumo Executivo",generated:"Resumo executivo gerado!",generateFailed:"Falha ao gerar o resumo executivo"},JD={purchaseRequired:"Por favor, adquira créditos de desbloqueio / geração para acessar esta seção.",signInRequired:"Faça login para gerar esta seção",invalidPlanId:"ID do plano de negócio inválido",audience:{title:"Público-Alvo",subtitle:"É um(a) {{industry}} para {{name}}",summary:"Resumo do público",demographics:"Demografia",psychographics:"Psicografia",ageRange:"Faixa etária:",occupation:"Ocupação:",incomeLevel:"Nível de renda:",education:"Educação:",lifestyle:"Estilo de vida:",values:"Valores:",interests:"Interesses:",needsAndPainPoints:"Necessidades e pontos de dor",painPoint:"Ponto de dor: ",customerPersonas:"Personas de clientes",goals:"OBJETIVOS",frustrations:"FRUSTRAÇÕES",noData:"Ainda sem dados do público-alvo",generate:"Gerar público-alvo",generated:"Público-alvo gerado!",generateFailed:"Falha ao gerar público-alvo"},competitors:{title:"Análise de Concorrentes",subtitle:"Análise dos principais concorrentes de {{name}} em {{industry}}",strengths:"Pontos fortes",weaknesses:"Pontos fracos",pricingTier:"Faixa de preço",audienceOverlap:"Sobreposição de público",noData:"Ainda sem análise de concorrentes",generate:"Gerar análise de concorrentes",generated:"Análise de concorrentes gerada!",generateFailed:"Falha ao gerar análise de concorrentes"},swot:{title:"Análise SWOT",subtitle:"Forças, Fraquezas, Oportunidades e Ameaças de {{name}}",strengths:"Forças",weaknesses:"Fraquezas",opportunities:"Oportunidades",threats:"Ameaças",noData:"Ainda sem análise SWOT",generate:"Gerar análise SWOT",generated:"Análise SWOT gerada!",generateFailed:"Falha ao gerar análise SWOT",loadFailed:"Falha ao carregar dados SWOT"},financials:{title:"Projeções Financeiras",subtitle:"Métricas financeiras e projeções para {{name}}",financialOverview:"Visão financeira",initialBudget:"Orçamento inicial",investmentNeeds:"Necessidades de investimento",keyMetricsOverview:"Visão geral de métricas",year1Revenue:"Receita Ano 1",year1NetIncome:"Lucro líquido Ano 1",grossProfitMargin:"Margem bruta",netProfitMargin:"Margem líquida",revenueByProduct:"Receita por produto/serviço",productService:"Produto/Serviço",year1:"Ano 1",year2:"Ano 2",year3:"Ano 3",totalRevenue:"Receita total",profitLossSummary:"Demonstração de resultados",metric:"Métrica",revenue:"Receita",cogs:"Custo dos produtos vendidos",grossProfit:"Lucro bruto",operatingExpenses:"Despesas operacionais",netIncome:"Lucro líquido",balanceSheetSummary:"Balanço resumido",totalAssets:"Total de ativos",totalLiabilities:"Total de passivos",totalEquity:"Total patrimônio",keyAssumptions:"Premissas-chave",syncedInfo:"Esses dados financeiros estão sincronizados com seu plano de negócio completo.",viewEditFinancials:"Ver e editar plano financeiro",summaryQuestion:"Quais são suas projeções financeiras para os próximos 3-5 anos?",budgetQuestion:"Qual é seu orçamento inicial?",totalStartupCosts:"Custos de início totais",year1ProjectedRevenue:"Receita projetada Ano 1",projectedBreakeven:"Ponto de equilíbrio projetado",months:"Meses",year1NetProfitMargin:"Margem líquida Ano 1",startupCostsBreakdown:"Detalhamento custos de início",totalEstimatedCosts:"Custos estimados totais",fundingOverview:"Visão de financiamento",totalFundingNeeded:"Financiamento total necessário",keyProjections:"Projeções e rentabilidade (Estimativas Ano 1)",projections:"Projeções",estRevenue:"Receita est.:",avgMonthlyRevenue:"Receita mensal média:",revenueForecast:"PREVISÃO DE RECEITA",profitability:"Rentabilidade",projectedNetProfit:"Lucro líquido projetado:",breakevenPoint:"Ponto de equilíbrio:",est3YearROI:"ROI est. 3 anos:",snapshotInfo:"Esta é uma visão financeira de alto nível.",viewAllDocuments:"Ver todos os documentos",noData:"Ainda sem projeções financeiras",generate:"Gerar projeções financeiras",generated:"Projeções financeiras geradas!",generateFailed:"Falha ao gerar projeções financeiras"},trends:{title:"Tendências do Setor",subtitle:"Tendências relevantes para {{name}} em {{industry}}",generating:"Gerando tendências do setor com IA...",noData:"Nenhuma tendência gerada ainda.",generate:"Gerar tendências do setor",generated:"Tendências do setor geradas!"},stats:{title:"Estatísticas do Setor",subtitle:"Estatísticas-chave para {{name}} em {{industry}}",generating:"Gerando estatísticas do setor com IA...",marketOverview:"Visão do mercado",customerBehavior:"Comportamento do consumidor",industryInsights:"Insights do setor",noData:"Nenhuma estatística gerada ainda.",generate:"Gerar estatísticas do setor",generated:"Estatísticas do setor geradas!"},regulations:{title:"Regulamentações Relevantes",subtitle:"Requisitos de conformidade para {{name}} em {{industry}}",checkDetails:"Ver detalhes",noData:"Ainda sem dados de regulamentação",generate:"Gerar regulamentações",generated:"Regulamentações geradas!",generateFailed:"Falha ao gerar regulamentações"}
3266,nextSteps:{title:"Próximos Passos Sugeridos",subtitle:"Ações concretas para lançar {{name}}",noData:"Ainda sem próximos passos",generate:"Gerar próximos passos",generated:"Próximos passos gerados!",generateFailed:"Falha ao gerar próximos passos"}},QD={benchmarksHeading:"Referências do setor: {{industry}}",benchmarksIntro:"Os números abaixo têm origem em fontes setoriais e governamentais publicadas. Cada uma está ligada para que possa verificá-la antes de a incluir no seu próprio plano.",startupCost:"Investimento inicial habitual",annualRevenue:"Faturação anual habitual",netMargin:"Margem de lucro líquida",marketSize:"Dimensão do mercado nos EUA ({{year}})",licensesHeading:"Licenças e autorizações para {{industry}}",licensesIntro:"Os requisitos variam consoante o estado e o município — confirme junto da sua autoridade local antes de submeter o pedido.",metricsHeading:"Métricas decisivas em {{industry}}",metricsIntro:"Os credores e investidores esperam encontrar estas métricas na sua secção financeira.",colMetric:"Métrica",colBenchmark:"Referência do setor",colSource:"Fonte",costHeading:"O que realmente determina os custos em {{industry}}",risksHeading:"Riscos de {{industry}} e como os enfrentar",risksIntro:"Uma secção de riscos credível identifica as ameaças concretas deste modelo de negócio, e não o risco de mercado genérico.",mitigation:"Mitigação: "},XD={nav:BD,hero:DD,features:qD,howItWorks:MD,pricing:FD,testimonials:UD,cta:$D,footer:WD,auth:VD,landing:HD,dashboard:GD,preview:KD,executiveSummaryPage:YD,sections:JD,industryInsights:QD},ZD={features:"기능",howItWorks:"이용 방법",pricing:"가격",testimonials:"고객 후기",signIn:"로그인",getStarted:"시작하기"},eq={badge:"전 세계 27,300명 이상의 기업가들이 신뢰합니다",title:"몇 분 만에 전문적인",titleHighlight:"사업 계획서",titleEnd:"를 만드세요",subtitle:"AI 기반 플랫폼이 투자자에게 어필할 수 있는 종합적인 사업 계획서 작성을 도와드립니다. 몇 가지 질문에 답하면 AI가 나머지를 처리합니다.",cta:"사업 계획서 만들기",secondaryCta:"샘플 계획서 보기",plansCreated:"생성된 계획서",avgTime:"평균 소요 시간",minutes:"분",satisfaction:"만족도",samplePlan:"샘플 사업 계획서",executiveSummary:"요약",sampleContent:"TechFlow Solutions는 중소기업을 위한 워크플로우 자동화 최적화에 집중하는 혁신적인 SaaS 회사입니다..."},tq={title:"성공에 필요한",titleHighlight:"모든 것",subtitle:"성공적인 사업 계획서를 만들기 위해 필요한 모든 도구와 기능을 제공합니다.",aiPowered:{title:"AI 기반 작성",description:"고급 AI가 입력 내용을 분석하고 사업 계획서의 각 섹션에 맞는 전문적이고 맞춤화된 콘텐츠를 생성합니다."},financialProjections:{title:"재무 예측",description:"수익 예측, 현금 흐름 분석, 손익분기점 분석을 포함한 현실적인 재무 예측을 자동으로 생성합니다."},marketAnalysis:{title:"시장 분석",description:"귀하의 특정 산업과 목표 시장에 맞춤화된 종합적인 시장 조사와 경쟁 분석을 받으세요."},exportOptions:{title:"내보내기 옵션",description:"PDF, Word, PowerPoint 프레젠테이션 등 다양한 형식으로 완성된 사업 계획서를 다운로드하세요."},collaboration:{title:"팀 협업",description:"역할 기반 권한으로 팀원을 초대하여 실시간으로 사업 계획서를 함께 작성하세요."},templates:{title:"산업별 템플릿",description:"귀하의 특정 산업과 비즈니스 유형에 맞게 전문적으로 디자인된 템플릿으로 시작하세요."}},nq={title:"간단한",titleHighlight:"3단계",subtitle:"아이디어에서 전문적인 사업 계획서까지 쉽ê²
3266Œ 진행할 수 있습니다.",step1:{title:"질문에 답하기",description:"안내된 설문지를 통해 사업 아이디어, 목표 시장, 목표에 대해 알려주세요."},step2:{title:"AI가 계획서 생성",description:"AI가 답변을 분석하고 종합적이고 맞춤화된 사업 계획서를 작성합니다."},step3:{title:"검토 및 내보내기",description:"계획서를 편집하고 마무리 작업을 한 후 원하는 형식으로 내보내세요."}},aq={title:"간단하고",titleHighlight:"투명한 가격",subtitle:"가장 적합한 플랜을 선택하세요. 숨겨진 비용이나 구독이 없습니다.",perPlan:"플랜당",oneTime:"일회성 결제",popular:"가장 인기",starter:{name:"스타터",description:"테스트에 완벽",features:["1개의 완전한 사업 계획서","모든 표준 섹션","PDF 내보내기","이메일 지원"]},professional:{name:"프로페셔널",description:"진지한 기업가에게 적합",features:["1개의 완전한 사업 계획서","모든 표준 섹션","재무 예측","시장 분석","PDF & Word 내보내기","우선 지원"]},enterprise:{name:"엔터프라이즈",description:"팀과 컨설턴트를 위해",features:["5개의 완전한 사업 계획서","모든 프로페셔널 기능","맞춤 브랜딩","팀 협업","API 액세스","전담 지원"]},cta:"시작하기"},rq={title:"전 세계",titleHighlight:"기업가들이",titleEnd:"사랑합니다",subtitle:"Bizplanner.ai로 성공적인 사업 계획서를 만든 수천 명의 만족한 사용자들과 함께하세요"},sq={title:"사업 계획서를",titleHighlight:"만들 준비가 되셨나요?",subtitle:"Bizplanner.ai를 사용하여 사업 아이디어를 실현한 27,300명 이상의 기업가들과 함께하세요.",button:"지금 사업 계획서 만들기",guarantee:"30일 환불 보장",noSubscription:"구독 필요 없음"},iq={description:"AI 지원으로 몇 분 만에 전문적이고 투자자에게 어필할 수 있는 사업 계획서를 만드세요.",product:"제품",features:"기능",pricing:"가격",templates:"템플릿",examples:"예시",resources:"리소스",blog:"블로그",guides:"가이드",helpCenter:"고객센터",webinars:"웨비나",company:"회사",about:"회사 소개",careers:"채용",contact:"문의",press:"보도자료",legal:"법적 고지",privacy:"개인정보 처리방침",terms:"이용약관",cookies:"쿠키 정책",copyright:"© {{year}} Bizplanner.ai. 모든 권리 보유."},oq={welcomeBack:"다시 오신 것을 환영합니다",signInToContinue:"대시보드로 이동하려면 로그인하세요",createAccount:"계정 만들기",startCreating:"전문적인 사업 계획서 만들기 시작",email:"이메일",password:"비밀번호",fullName:"이름",signIn:"로그인",signUp:"계정 만들기",signingIn:"로그인 중...",creatingAccount:"계정 생성 중...",noAccount:"계정이 없으신가요?",haveAccount:"이미 계정이 있으신가요?",signUpLink:"가입하기",signInLink:"로그인",backToHome:"홈으로 돌아가기",checkEmail:"이메일을 확인하세요",magicLinkSentTo:"매직 링크를 보냈습니다:",useDifferentEmail:"다른 이메일 사용",continueWithGoogle:"Google로 계속하기",orContinueWithEmail:"또는 이메일로 계속하기",sendMagicLink:"매직 링크 보내기",sendingMagicLink:"매직 링크 보내는 중...",magicLinkToast:"로그인을 위한 매직 링크를 이메일에서 확인하세요!"},lq={nav:{templates:"템플릿",blog:"블로그",contact:"문의하기",login:"로그인",dashboard:"대시보드",getStarted:"시작하기"},hero:{mainTitle:"최고의 AI",mainTitleHighlight:"사업 계획서",mainTitleEnd:"생성기",h2:"사업 계획서를 며칠이 아닌 몇 분 만에 작성하세요",description:"사업 계획서를 처음부터 작성하는 고통을 잊으세요. AI 사업 계획서 생성기가 비즈니스 모델, 타겟 시장, 재무 예측 등을 포함한 투자자 맞춤형 종합 계획서를 만들어 드립니다.",ctaButton:"내 사업 계획서 받기",dashboardButton:"대시보드로 이동",socialCount:"27,300+",socialText:"AI 사업 계획서가 이미 생성됨",features:{businessPlan:"사업 계획서",marketingPlan:"마케팅 계획",targetAudience:"타겟 고객",competitors:"ê²½
3266쟁사 분석",swot:"SWOT 분석",financials:"재무 예측",industryTrends:"산업 트렌드",industryStats:"산업 통계",regulations:"관련 규제",nextSteps:"다음 단계"}},features:{badge:"기능",title:"올인원 기획 —",titleHighlight:"작성, 생성 및 편집",subtitle:"직관적인 브라우저 편집부터 유연한 AI 재생성과 편리한 내보내기 옵션까지, 사업 계획서 생성기의 핵심 기능을 알아보세요.",items:{aiGenerator:{title:"AI 사업 계획서 섹션 생성기",description:"사업 계획서의 핵심 섹션을 선택, 맞춤 설정하고 즉시 생성하세요."},targetAudience:{title:"타겟 고객 분석",description:"AI가 인구통계, 심리통계, 니즈, 고객 페르소나를 포함한 상세한 타겟 고객 프로필을 생성합니다."},competitors:{title:"경쟁사 분석",description:"AI를 통해 주요 경쟁사의 강점, 약점, 시장 포지셔닝을 분석하세요."},financials:{title:"재무 예측",description:"초기 비용, 매출 예측, 수익성 분석을 포함한 AI 기반 재무 예측을 받으세요."},industryTrends:{title:"산업 트렌드",description:"AI를 통해 최신 시장 트렌드, 성장 동인, 잠재적 과제를 파악하세요."},industryStats:{title:"산업 통계",description:"시장 개요, 고객 행동 인사이트를 포함한 AI 큐레이션 산업 통계를 받으세요."},regulations:{title:"관련 규제",description:"중요한 규제, 라이선스, 컴플라이언스 요건에 대한 AI 컴파일 개요를 받으세요."},nextSteps:{title:"제안된 다음 단계",description:"AI 기반의 실행 가능한 권장 사항으로 다음 행동을 안내받으세요."},swot:{title:"SWOT 분석",description:"AI 분석으로 비즈니스의 강점, 약점, 기회, 위협을 식별하세요."}},textItems:{regenerate:{title:"문서 재생성",description:"구체적인 세부 사항이나 지침을 제공하여 모든 섹션을 쉽게 다시 작성하세요."},editing:{title:"브라우저 내 편집",description:"Notion과 유사한 사용자 친화적 인터페이스로 브라우저에서 직접 편집하세요."},export:{title:"내보내기 옵션",description:"완성된 비즈니스 문서를 전문적인 PDF 또는 Word로 내보내세요."}},ctaButton:"시작하기"},comparison:{badge:"BizPlanner AI를 선택하는 이유",title:"아이디어가",titleHighlight:"전문적인 사업 계획서로 변하는 방법",subtitle:"BizPlanner AI를 사용하여 수백 달러와 수 시간의 시간을 절약하세요.",withTitle:"BizPlanner AI 사용",withoutTitle:"직접 작성",step1:{title:"간단한 질문에 답하기",time:"~5분",desc:"비즈니스 아이디어에 대한 몇 가지 질문에 답하세요."},step2:{title:"AI가 마법을 부립니다",time:"~15분",desc:"AI가 맞춤형 전문 사업 계획서를 생성하는 동안 편안히 쉬세요."},step3:{title:"검토, 편집 또는 재생성",desc:"사업 계획서 섹션을 검토, 편집 또는 재생성하세요."},step4:{title:"사업 계획서 다운로드",desc:"Word 또는 PDF 형식으로 다운로드하세요."},pains:["시장 조사에 몇 시간 또는 며칠 소요","사업 계획서를 올바르게 구조화하기 어려움","정확한 재무 예측 작성 어려움","전문적으로 들리도록 섹션을 여러 번 다시 작성","계획서를 세련되지 않게 만드는 서식 문제","투자자가 기대하는 핵심 섹션 누락 위험","신뢰할 수 있는 데이터 소스 검색에 낭비되는 시간","업종별 전문 용어에 대한 불확실성","프리랜서 고용 시 $100+ 비용에 여전히 본인 참여 필요"],ctaButton:"시작하기",testimonialText:"BizPlanner는 환상적인 도구입니다. 3개월 동안 사업 계획서를 만들려고 고생했는데, 시간 소모적인 노력에서 구해졌습니다.",testimonialAuthor:"— Morris, 우간다"},pricing:{badge:"가격 | BizPlanner AI",title:"전문 사업 계획서를",titleHighlight:"10배 저렴하게",titleEnd:"컨설턴트 고용 대비",withBizplanner:"BizPlanner AI 사용",consultant:"컨설턴트",originalPrice
3266:"$9.99 / 월",price:"$9.99",oneTimePayment:"일회성 결제. 구독 없음.",includesLabel:"모든 패키지 포함:",features:["완전한 사업 계획서","2회 무료 전체 재생성","경쟁사 분석","SWOT 분석","재무 예측","산업 트렌드","산업 통계","관련 규제","제안된 다음 단계"],consultantText:"",fiverrText:"Fiverr의 사업 계획서는 $90 이상",consultantEnd:"일 수 있습니다. $9.99의 합리적인 가격으로 품질 높은 사업 기획을 제공합니다.",ctaButton:"시작하기 →",securePayment:"🔒 안전한 결제"},testimonials:{badge:"고객 후기",title:"26,100명 이상의 기업가들과 함께하세요",titleHighlight:"비즈니스를 성장시키는",bottomText:"전 세계 기업가들이 AI 사업 계획서 생성기로 27,300개 이상의 성공적인 사업 계획서를 작성했습니다.",ctaButton:"시작하기"},footer:{description:"기업가들이 몇 분 만에 전문적인 투자자 맞춤형 계획서를 만들도록 돕는 AI 사업 계획서 생성기.",product:"제품",features:"기능",pricing:"가격",templates:"템플릿",tools:"도구",resources:"리소스",blog:"블로그",industries:"산업",businessNameGenerator:"비즈니스 이름 생성기",company:"회사",about:"회사 소개",contact:"문의하기",legal:"법적 고지",privacy:"개인정보 처리방침",terms:"이용약관",refundPolicy:"환불 정책",cookies:"쿠키 정책",copyright:"© {{year}} BizPlanner.ai. 모든 권리 보유.",madeWith:"전 세계 기업가를 위해 ❤️으로 제작"},toc:{badge:"목차",title:"사업 계획서의",titleHighlight:"목차",subtitle:"경영 요약부터 재무 예측까지 모든 것을 다루는 상세한 섹션을 생성합니다.",note:"참고: 위는 일반적인 목차입니다. 각 사업 계획서에 대해 AI가 맞춤형 구조를 생성합니다.",cta:"작성 시작",sections:[{title:"경영 요약",description:"미션, 리더십, 재무 하이라이트를 포함한 비즈니스 개요."},{title:"사업 설명",description:"산업, 역사, 미래 전망을 포함한 비즈니스 스냅샷."},{title:"시장 조사 및 분석",description:"타겟 시장, 트렌드, 경쟁 분석 + SWOT 분석."},{title:"조직 구조 및 관리",description:"사업 구조 및 경영진 역할 상세."},{title:"제품 또는 서비스",description:"비즈니스 제공 및 생산 방법 개요."},{title:"마케팅 및 영업 전략",description:"제품 또는 서비스의 마케팅 및 판매 전략."},{title:"운영 계획",description:"일상 운영, 물류 및 시설 개요."},{title:"재무 계획",description:"매출 예측, 손익, 현금 흐름, 대차대조표를 포함한 재무 예측."},{title:"리스크 분석",description:"잠재적 리스크 식별 및 완화 전략."}]},blog:{badge:"블로그에서",title:"최신 인사이트 &",titleHighlight:"업데이트",readMore:"더 많은 기사 읽기"},templatesShowcase:{badge:"예시 & 템플릿",title:"사업 계획서",titleHighlight:"예시",subtitle:"AI 사업 계획서 생성기로 만든 예시를 살펴보세요. 실제 결과물로 깊이와 맞춤화를 확인하세요.",cta:"더 많은 사업 계획서 템플릿 보기",planSuffix:"사업 계획서"},templatePage:{notFound:"템플릿을 찾을 수 없음",notFoundDesc:"찾고 있는 템플릿이 존재하지 않습니다.",viewAll:"모든 템플릿 보기",businessPlan:"사업 계획서",createYourPlan:"{{name}} 계획서 만들기",downloadSample:"샘플 PDF 다운로드",generating:"생성 중...",whatsIncluded:"포함 내용:",moreSections:"+ {{count}}개 추가 섹션",jumpTo:"이동:",section:"섹션 {{num}}",planTemplate:"{{name}} 사업 계획서 템플릿",reviewSubtitle:"아래의 종합 샘플 사업 계획서를 검토하세요. AI 인사이트로 맞춤 버전을 만드세요.",readyToStart:"{{name}} 시작 준비 되셨나요?",readyCta:"AI 플랫폼으로 몇 분 만에 완전한 맞춤형 사업 계획서를 생성하세요.",getStartedFree:"무료로 시작",relatedTemplates:"{{category}} 관련 템플릿"}},cq={title:"대시보드: {{name}}",home:"홈",coverPage:"표지",executiveSummary:"경영 요약",businessDetail
3266s:"사업 세부정보",yourDocuments:"내 문서",targetAudience:"타겟 고객",competitorsAnalysis:"경쟁사 분석",swotAnalysis:"SWOT 분석",financialProjections:"재무 예측",industryTrends:"산업 트렌드",industryStats:"산업 통계",relevantRegulations:"관련 규제",suggestedNextSteps:"제안된 다음 단계",newBusiness:"새 사업",generationCredits:"생성 크레딧",accountSettings:"계정 설정",signOut:"로그아웃",selectBusiness:"사업 선택",viewAllDocuments:"모든 문서 보기",seeMore:"더 보기",viewFinancialPlan:"재무 계획 보기",editBusinessDetails:"세부정보 편집",viewFullProfile:"전체 프로필 보기",exploreData:"데이터 탐색",viewAllSteps:"모든 단계 보기",viewAnalysis:"분석 보기",viewFullAnalysis:"전체 분석 보기",checkDetails:"세부사항 확인",businessPlan:"사업 계획서",startupCosts:"초기 비용",fundingGoal:"자금 목표",projectedBreakeven:"예상 손익분기점",months:"개월",marketSize:"시장 규모",variesByRegion:"지역에 따라 다름",growthRate:"성장률",industryDependent:"산업에 따라 다름",strength:"강점",strengths:"강점",weaknesses:"약점",generating:"생성 중...",unlockToView:"이 섹션을 보려면 사업을 잠금 해제하세요",generatingBanner:"잠시만 기다려 주세요 — 사업 계획서를 생성 중입니다!",generatingBannerSub:"보통 1-2분 소요됩니다. 준비되는 대로 섹션이 자동으로 표시됩니다.",planReady:"🎉 사업 계획서가 준비되었습니다!",planReadySub:'아래의 <strong>"내 문서"</strong>를 클릭하여 전체 계획서를 ë³´ê³  편집하세요.',unlockWelcome:"🎉 사업에 오신 것을 환영합니다!",unlockResearch:"AI 모델이",unlockAnd:"및",unlockForYou:"을(를) 조사했습니다.",unlockAccess:"✨ 사업을 잠금 해제하면 다음에 접근할 수 있습니다:",unlockFeature1:"상세한 인사이트가 포함된 모든 섹션",unlockFeature2:'완전한 사업 계획서 ("내 문서" 섹션에서 사용 가능)',unlockFeature3:"AI 기반 산업 조사 및 분석",creditsAvailable:"{{count}}개의 크레딧이 있습니다",unlockNowCredit:"지금 잠금 해제 (1 크레딧)",unlockNow:"지금 사업을 잠금 해제하세요 🚀",discoverTrends:"{{industry}}에 관련된 트렌드를 발견하세요.",targetMarketAnalysis:"귀하의 사업을 위한 타겟 시장 분석.",reviewBusinessInfo:"핵심 사업 정보, 팀원, 제품/서비스 등을 검토하고 업데이트하세요.",insightsGenerated:"산업 인사이트가 생성되었습니다!"},uq={skipToDashboard:"대시보드로 이동",title:"사업 계획서 미리보기",subtitle:"맞춤형 사업 계획서의 미리보기입니다",generatingPlan:"사업 계획서를 생성 중입니다...",generatingWait:"보통 30-60초 소요됩니다. 여기서 기다리시거나 페이지를 닫으셔도 됩니다 — 미리보기가 준비되면 이메일을 보내드립니다.",generationTimedOut:"생성 시간이 초과되었습니다 — 수요가 많을 때 발생할 수 있습니다.",dataSaved:"걱정하지 마세요, 데이터가 저장되어 있습니다. 아래를 클릭하여 다시 시도하세요.",retryGeneration:"다시 생성",retry:"재시도",generatingCover:"표지 생성 중...",generatingSummary:"경영 요약 생성 중...",pageOf:"{{total}}페이지 중 {{current}}페이지",coverPage:"표지",executiveSummary:"경영 요약",businessPlan:"사업 계획서",preparedBy:"작성자",problem:"문제",solution:"해결책",targetMarket:"타겟 시장",competitiveAdvantage:"경쟁 우위",unlockToRead:"계속 읽으려면 잠금 해제하세요",unlockFullPlan:"전체 계획서 잠금 해제",unlockDescription:"상세한 인사이트가 포함된 완전한 AI 생성 사업 계획서를 받으세요",unlockNow:"지금 잠금 해제",continuePreview:"무료 미리보기로 계속",oneTimePayment:"일회성 결제 • 평생 액세스",features:{swot:"완전한 SWOT 분석",financials:"상세한 재무 예측",audience:"타겟 고객 조사",competitors:"경쟁사 분석",trends:"산업 트렌드 및 통계",regulations:"규제 요건",nextSteps:"실행 가능한 다음 단계",pdf:"다운로드 가능한 PDF 보고서"}},dq={title:"경영 요약",overview:"개요",theProblem:"문제점",ourSolution:"우리의 솔루션",targetMarket:"목표 시장",businessModel:"비즈니스 모델",competitiveAdvantage:"경쟁 우위",financialHighlights:"재무 하이라이트",unlockFinancials:"전체 재무 세부 정보를 보려면 잠금 해제하세요",keyMilestones:"주요 마일스톤",unlockFullPlan:"전체 사업 계획서 잠금 해제",noSummaryTitle:"아직 경영 요약이 없습니다",noSummaryDesc:"사업 계획서를 위한 전문적인 경영 요약을 생성하세요",generateButton:"경영 요약 생성",generated:"경영 요약이 생성되었습니다!",generateFailed:"경영 요약 생성에 실패했습니다"},pq={purchaseRequired:"이 섹션에 접근하려면 잠금 해제 / 생성 크레딧을 구매하세요.",signInRequired:"이 섹션을 생성하려면 로그인하세요",invalidPlanId:"유효하지 않은 사업 계획서 ID",audience:{title:"목표 고객",subtitle:"{{name}}을 위한 {{industry}}",summary:"고객 요약",demographics:"인구통계",psychographics:"심리통계",ageRange:"연령대:",occupation:"직업:",incomeLevel:"소득 수준:",education:"학력:",lifestyle:"라이프스타일:",values:"가치관:",interests:"관심사:",needsAndPainPoints:"니즈 및 페인포인트",painPoint:"페인포인트: ",customerPersonas:"고객 페르소나",goals:"목표",frustrations:"불만",noData:"아직 목표 고객 데이터가 없습니다",generate:"목표 고객 생성",generated:"목표 고객이 생성되었습니다!",generateFailed:"목표 고객 생성에 실패했습니다"},competitors:{title:"경쟁사 분석",subtitle:"{{industry}}에서 {{name}}의 주요 경쟁사 분석",strengths:"강점",weaknesses:"약점",pricingTier:"가격대",audienceOverlap:"고객 중복",noData:"아직 경쟁사 분석이 없습니다",generate:"경쟁사 분석 생성",generated:"경쟁사 분석이 생성되었습니다!",generateFailed:"경쟁사 분석 생성에 실패했습니다"},swot:{title:"SWOT 분석",subtitle:"{{name}}의 강점, 약점, 기회, 위협",strengths:"강점",weaknesses:"약점",opportunities:"기회",threats:"위협",noData:"아직 SWOT 분석이 없습니다",generate:"SWOT 분석 생성",generated:"SWOT 분석이 생성되었습니다!",generateFailed:"SWOT 분석 생성에 실패했습니다",loadFailed:"SWOT 데이터 로드에 실패했습니다"},financials:{title:"재무 전망",subtitle:"{{name}}의 주요 재무 지표 및 전망",financialOverview:"재무 개요",initialBudget:"초기 예산",investmentNeeds:"투자 필요",keyMetricsOverview:"주요 지표 개요",year1Revenue:"1년차 매출",year1NetIncome:"1년차 순이익",grossProfitMargin:"매출 총이익률",netProfitMargin:"순이익률",revenueByProduct:"제품/서비스별 매출",productService:"제품/서비스",year1:"1년차",year2:"2년차",year3:"3년차",totalRevenue:"총 매출",profitLossSummary:"손익 요약",metric:"지표",revenue:"매출",cogs:"매출원가",grossProfit:"매출총이익",operatingExpenses:"영업비용",netIncome:"순이익",balanceSheetSummary:"재무상태표 요약",totalAssets:"총 자산",totalLiabilities:"총 부채",totalEquity:"총 자본",keyAssumptions:"주요 가정",syncedInfo:"이 재무 데이터는 전체 사업 계획서와 동기화되어 있습니다.",viewEditFinancials:"재무 계획 보기 및 편집",summaryQuestion:"향후 3-5년 재무 전망은?",budgetQuestion:"초기 예산은 얼마입니까?",totalStartupCosts:"총 창업 비용",year1ProjectedRevenue:"1년차 예상 매출",projectedBreakeven:"예상 손익분기점",months:"개월",year1NetProfitMargin:"1년차 순이익률",startupCostsBreakdown:"창업 비용 상세",totalEstimatedCosts:"총 예상 비용",fundingOverview:"자금 조달 개요",totalFundingNeeded:"필요 총 자금",keyProjections:"주요 전망 및 수익성 (1년차 추정)",projections:"전망",estRevenue:"예상 매출:",avgMonthlyRevenue:"월평균 매출:",revenueForecast:"매출 전망",profitability:"수익성",projectedNetProfit:"예상 순이익:",breakevenPoint:"손익분기점:",est3YearROI:"3년 예ìƒ
3266 ROI:",snapshotInfo:"이것은 상위 수준 재무 개요입니다.",viewAllDocuments:"모든 문서 보기",noData:"아직 재무 전망이 없습니다",generate:"재무 전망 생성",generated:"재무 전망이 생성되었습니다!",generateFailed:"재무 전망 생성에 실패했습니다"},trends:{title:"업계 동향",subtitle:"{{industry}}에서 {{name}}에 관련된 동향",generating:"AI 기반 업계 동향 생성 중...",noData:"아직 생성된 동향이 없습니다.",generate:"업계 동향 생성",generated:"업계 동향이 생성되었습니다!"},stats:{title:"업계 통계",subtitle:"{{industry}}에서 {{name}}의 주요 통계",generating:"AI 기반 업계 통계 생성 중...",marketOverview:"시장 개요",customerBehavior:"고객 행동",industryInsights:"업계 인사이트",noData:"아직 생성된 통계가 없습니다.",generate:"업계 통계 생성",generated:"업계 통계가 생성되었습니다!"},regulations:{title:"관련 규정",subtitle:"{{industry}}에서 {{name}}의 규정 준수 요구사항",checkDetails:"자세히 보기",noData:"아직 규정 데이터가 없습니다",generate:"규정 생성",generated:"규정이 생성되었습니다!",generateFailed:"규정 생성에 실패했습니다"},nextSteps:{title:"추천 다음 단계",subtitle:"{{name}} 출시를 위한 실행 단계",noData:"아직 다음 단계가 없습니다",generate:"다음 단계 생성",generated:"다음 단계가 생성되었습니다!",generateFailed:"다음 단계 생성에 실패했습니다"}},mq={nav:ZD,hero:eq,features:tq,howItWorks:nq,pricing:aq,testimonials:rq,cta:sq,footer:iq,auth:oq,landing:lq,dashboard:cq,preview:uq,executiveSummaryPage:dq,sections:pq},hq={features:"機能",howItWorks:"使い方",pricing:"料金",testimonials:"お客様の声",signIn:"ログイン",getStarted:"始める"},fq={badge:"世界中の27,300人以上の起業家に信頼されています",title:"プロフェッショナルな",titleHighlight:"事業計画書",titleEnd:"を数分で作成",subtitle:"AI搭載プラットフォームが、投資家向けの包括的な事業計画書の作成をサポートします。いくつかの質問に答えるだけで、AIが重い作業を行います。",cta:"事業計画書を作成する",secondaryCta:"サンプルを見る",plansCreated:"作成された計画書",avgTime:"平均所要時間",minutes:"分",satisfaction:"満足度",samplePlan:"サンプル事業計画書",executiveSummary:"エグゼクティブサマリー",sampleContent:"TechFlow Solutionsは、中小企業向けのワークフロー自動化の効率化に焦点を当てた革新的なSaaS企業です..."},gq={title:"成功に必要な",titleHighlight:"すべて",subtitle:"成功する事業計画書を作成するために必要なすべてのツールと機能を提供します。",aiPowered:{title:"AI搭載ライティング",description:"高度なAIが入力を分析し、事業計画書の各セクションに合わせたプロフェッショナルでカスタマイズされたコンテンツを生成します。"},financialProjections:{title:"財務予測",description:"収益予測、キャッシュフロー計算書、損益分岐点分析を含む現実的な財務予測を自動生成します。"},marketAnalysis:{title:"市場分析",description:"特定の業界とターゲット市場に合わせた包括的な市場調査と競合分析を入手できます。"},exportOptions:{title:"エクスポートオプション",description:"PDF、Word、PowerPointプレゼンテーションなど、複数の形式で完成した事業計画書をダウンロードできます。"},collaboration:{title:"チームコラボレーション",description:"役割ベースの権限で、チームメンバーを招待してリアルタイムで事業計画書を共同作成できます。"},templates:{title:"業界テンプレート",description:"特定の業界とビジネスタイプに合わせて専門的にデザインされたテンプレートから始められます。"}}
3266,vq={title:"シンプルな",titleHighlight:"3ステップ",subtitle:"効率化されたプロセスで、アイデアからプロフェッショナルな事業計画書まで簡単に進めます。",step1:{title:"質問に回答",description:"ガイド付きアンケートで、ビジネスアイデア、ターゲット市場、目標について教えてください。"},step2:{title:"AIが計画書を生成",description:"AIが回答を分析し、包括的でカスタマイズされた事業計画書を作成します。"},step3:{title:"レビューとエクスポート",description:"計画書を編集し、仕上げを加えて、お好みの形式でエクスポートします。"}},yq={title:"シンプルで",titleHighlight:"透明な料金",subtitle:"最適なプランをお選びください。隠れた料金やサブスクリプションはありません。",perPlan:"プランごと",oneTime:"一回払い",popular:"最も人気",starter:{name:"スターター",description:"お試しに最適",features:["1つの完全な事業計画書","すべての標準セクション","PDFエクスポート","メールサポート"]},professional:{name:"プロフェッショナル",description:"本格的な起業家向け",features:["1つの完全な事業計画書","すべての標準セクション","財務予測","市場分析","PDF & Wordエクスポート","優先サポート"]},enterprise:{name:"エンタープライズ",description:"チームとコンサルタント向け",features:["5つの完全な事業計画書","すべてのプロフェッショナル機能","カスタムブランディング","チームコラボレーション","APIアクセス","専任サポート"]},cta:"始める"},bq={title:"世界中の",titleHighlight:"起業家に",titleEnd:"愛されています",subtitle:"Bizplanner.aiで成功する事業計画書を作成した何千人もの満足したユーザーに参加しましょう"},wq={title:"事業計画書を",titleHighlight:"作成する準備はできましたか?",subtitle:"Bizplanner.aiを使ってビジネスアイデアを実現した27,300人以上の起業家に参加しましょう。",button:"今すぐ事業計画書を作成",guarantee:"30日間返金保証",noSubscription:"サブスクリプション不要"},xq={description:"AI支援で数分でプロフェッショナルで投資家向けの事業計画書を作成します。",product:"製品",features:"機能",pricing:"料金",templates:"テンプレート",examples:"例",resources:"リソース",blog:"ブログ",guides:"ガイド",helpCenter:"ヘルプセンター",webinars:"ウェビナー",company:"会社",about:"会社概要",careers:"採用情報",contact:"お問い合わせ",press:"プレス",legal:"法的情報",privacy:"プライバシーポリシー",terms:"利用規約",cookies:"Cookieポリシー",copyright:"© {{year}} Bizplanner.ai. 全著作権所有。"},kq={welcomeBack:"おかえりなさい",signInToContinue:"ダッシュボードにアクセスするにはログインしてください",createAccount:"アカウントを作成",startCreating:"プロフェッショナルな事業計画書の作成を始めましょう",email:"メールアドレス",password:"パスワード",fullName:"氏名",signIn:"ログイン",signUp:"アカウント作成",signingIn:"ログイン中...",creatingAccount:"アカウント作成中...",noAccount:"アカウントをお持ちでないですか?",haveAccount:"すでにアカウントをお持ちですか?",signUpLink:"登録する",signInLink:"ログイン",backToHome:"ホームに戻る",checkEmail:"メールを確認してください",magicLinkSentTo:"マジックリンクを送信しました:",useDifferentEmail:"別のメールを使用",continueWithGoogle:"Googleで続ける",orContinueWithEmail:"またはメールで続ける",sendMagicLink:"マジックリンクを送信",sendingMagicLink:"マジックリンク送信中...",magicLinkToast:"サインイン用のマジックリンクをメールで確認してください!"},Sq={nav:{templates:"テンプレート",blog:"ブログ",contact:"お問い合わせ",login:"ログイン",dashboard:"ダッシュボード",getStarted:"始める"},hero:{mainTitle:"最高のAI",mainTitleHighlight:"事業計画書",mainTitleEnd:"ジェネレーター",h2:"事業計画書を数日ではなく数分で作成",description:"事業計画書をゼロから書く苦労を忘れてください。AI事業計画書ジェネレーターが、ビジネスモデル、ターゲット市場、財務予測などを含む投資家向けの包括的な計画書を作成します。",ctaButton:"事業計画書を作成する",dashboardButton:"ダッシュボードへ",socialCount:"27,300+",socialText:"のAI事業計画書が作成済み",features:{businessPlan:"事業計画書",marketingPlan:"マーケティング計画",targetAudience:"ターゲット層",competitors:"競合分析",swot:"SWOT分析",financials:"財務予測",industryTrends:"業界トレンド",industryStats:"業界統計",regulations:"関連規制",nextSteps:"次ã
3266®ã‚¹ãƒ†ãƒƒãƒ—"}},features:{badge:"機能",title:"オールインワンの計画 —",titleHighlight:"作成、生成、編集",subtitle:"直感的なブラウザ内編集から柔軟なAI再生成、便利なエクスポートオプションまで、事業計画書ジェネレーターのコア機能をご覧ください。",items:{aiGenerator:{title:"AI事業計画書セクション生成",description:"事業計画書の重要なセクションを選択、カスタマイズし、即座に生成します。"},targetAudience:{title:"ターゲット層分析",description:"AIが人口統計、心理統計、ニーズ、顧客ペルソナを含む詳細なターゲットプロファイルを作成します。"},competitors:{title:"競合分析",description:"AIを使用して主要な競合他社の強み、弱み、市場ポジショニングを分析します。"},financials:{title:"財務予測",description:"初期費用、売上予測、収益性分析を含むAI搭載の財務予測を取得します。"},industryTrends:{title:"業界トレンド",description:"AIを通じて最新の市場トレンド、成長ドライバー、潜在的な課題を把握します。"},industryStats:{title:"業界統計",description:"市場概要、顧客行動インサイトを含むAIキュレーションの業界統計を取得します。"},regulations:{title:"関連規制",description:"重要な規制、ライセンス、コンプライアンス要件のAIコンパイル概要を受け取ります。"},nextSteps:{title:"推奨される次のステップ",description:"事業計画書分析に基づくAI駆動の
3266実行可能な推奨事項を取得します。"},swot:{title:"SWOT分析",description:"AI分析でビジネスの強み、弱み、機会、脅威を特定します。"}},textItems:{regenerate:{title:"ドキュメント再生成",description:"具体的な詳細や指示を提供して、任意のセクションを簡単に書き直します。"},editing:{title:"ブラウザ内編集",description:"Notionのような使いやすいインターフェースでブラウザ内で直接編集・書式設定します。"},export:{title:"エクスポートオプション",description:"完成したビジネス文書をプロフェッショナルなPDFまたはWordにエクスポートします。"}},ctaButton:"始める"},comparison:{badge:"BizPlanner AIを選ぶ理由",title:"アイデアが",titleHighlight:"プロフェッショナルな事業計画書になる方法",subtitle:"BizPlanner AIを使って数百ドルと数時間の時間を節約しましょう。",withTitle:"BizPlanner AI利用",withoutTitle:"自分で書く",step1:{title:"簡単な質問に答える",time:"約5分",desc:"ビジネスアイデアについての質問に答えてください。"},step2:{title:"AIが魔法をかけます",time:"約15分",desc:"AIがカスタマイズされた完全なプロフェッショナル事業計画書を生成します。"},step3:{title:"レビュー、編集、再生成",desc:"事業計画書のセクションをレビュー、編集、再生成します。"},step4:{title:"事業計画書をダウンロード",desc:"WordまたはPDF形式でダウンロードします。"},pains:["市場調査に数時間〜数日かかる","事業計画書を正しく構成するのが難しい","正確な財務予測の作成が困難","プロフェッショナルに聞こえるようにセクションを何度も書き直す","計画書を粗末に見せるフォーマットの問題","投資家が期待する重要なセクションの欠落リスク","信頼できるデータソースの検索に費やされる時間","業界固有の用語についての不確実性","フリーランサーの雇用は$100以上で、なお自分の参加が必要"],ctaButton:"始める",testimonialText:"BizPlannerは素晴らしいツールです。3ヶ月間事業計画書の作成に苦労していましたが、時間のかかる作業から救われました。",testimonialAuthor:"— Morris、ウガンダ"},pricing:{badge:"料金 | BizPlanner AI",title:"プロフェッショナルな事業計画書を",titleHighlight:"10分の1の価格で",titleEnd:"コンサルタント雇用と比較して",withBizplanner:"BizPlanner AI利用",consultant:"コンサルタント",originalPrice:"$9.99 / 月",price:"$9.99",oneTimePayment:"一回払い。サブスクリプションなし。",includesLabel:"すべてのパッケージに含まれるもの:",features:["完全な事業計画書","2回の無料フル再生成","競合分析","SWOT分析","財務予測","業界トレンド","業界統計","関連規制","推奨される次のステップ"],consultantText:"",fiverrText:"Fiverrの事業計画書は$90以上",consultantEnd:"する場合があります。わずか$9.99の当社のオファーは、優れたコストパフォーマンスを提供します。",ctaButton:"始める →",securePayment:"🔒 安全な支払い"},testimonials:{badge:"お客様の声",title:"26,100人以上の起業家に参加しましょう",titleHighlight:"ビジネスを構築する",bottomText:"世界中の起業家がAI事業計画書ジェネレーターで27,300以上の成功した事業計画書を作成しました。",ctaButton:"始める"},footer:{description:"起業家がプロフェッショナルな投資家向け計画書を数分で作成できるAI事業計画書ジェネレーター。",product:"製品",features:"機能",pricing:"料金",templates:"テンプレート",tools:"ツール",resources:"リソース",blog:"ブログ",industries:"業界",businessNameGenerator:"ビジネス名ジェネレーター",company:"会社",about:"会社概要",contact:"お問い合わせ",legal:"法的情報",privacy:"プライバシーポリシー",terms:"利用規約",refundPolicy:"返金ポリシー",cookies:"Cookieポリシー",copyright:"© {{year}}
3266 BizPlanner.ai. 全著作権所有。",madeWith:"世界中の起業家のために❤️で作成"},toc:{badge:"目次",title:"事業計画書の",titleHighlight:"目次",subtitle:"エグゼクティブサマリーから財務予測まで、ビジネス戦略の完全な概要を提供する詳細なセクションを生成します。",note:"注意:上記は一般的な目次です。各事業計画書に対して、AIがお客様のニーズに合わせた構造を生成します。",cta:"作成を開始",sections:[{title:"エグゼクティブサマリー",description:"ミッション、リーダーシップ、財務ハイライトを含むビジネスの概要。"},{title:"事業説明",description:"業界、歴史、将来の見通しを含むビジネスのスナップショット。"},{title:"市場調査・分析",description:"ターゲット市場、トレンド、競合分析 + SWOT分析。"},{title:"組織構造と経営",description:"事業構造と経営チームの役割の詳細。"},{title:"製品またはサービス",description:"ビジネスの提供内容と生産方法の概要。"},{title:"マーケティング・営業戦略",description:"製品またはサービスのマーケティングと販売の戦略。"},{title:"運営計画",description:"日常業務、物流、施設の概要。"},{title:"財務計画",description:"売上予測、損益、キャッシュフロー、貸借対照表を含む財務予測。"},{title:"リスク分析",description:"潜在的なリスクの特定とその軽減策。"}]},blog:{badge:"ブログから",title:"最新のインサイト &",titleHighlight:"アップデート",readMore:"もっと記事を読む"},templatesShowcase:{badge:"例とテンプレート",title:"事業計画書の",titleHighlight:"例",subtitle:"AI事業計画書ジェネレーターで作成された例をご覧ください。実際の出力で深さとカスタマイズ性を確認できます。",cta:"もっと事業計画書テンプレートを見る",planSuffix:"事業計画書"},templatePage:{notFound:"テンプレートが見つかりません",notFoundDesc:"お探しのテンプレートは存在しません。",viewAll:"すべてのテンプレートを表示",businessPlan:"事業計画書",createYourPlan:"{{name}}プランを作成",downloadSample:"サンプルPDFをダウンロード",generating:"生成中...",whatsIncluded:"含まれる内容:",moreSections:"+ {{count}}セクション追加",jumpTo:"移動:",section:"セクション {{num}}",planTemplate:"{{name}} 事業計画書テンプレート",reviewSubtitle:"以下の包括的なサンプル事業計画書をご覧ください。AIインサイトでカスタマイズ版を作成しましょう。",readyToStart:"{{name}}を始める準備はできましたか?",readyCta:"AIプラットフォームで数分で完全なカスタマイズ事業計画書を生成します。",getStartedFree:"無料で始める",relatedTemplates:"{{category}}の関連テンプレート"}},Pq={title:"ダッシュボード:{{name}}",home:"ホーム",coverPage:"表紙",executiveSummary:"エグゼクティブサマリー",businessDetails:"事業詳細",yourDocuments:"ドキュメント",targetAudience:"ターゲット層",competitorsAnalysis:"競合分析",swotAnalysis:"SWOT分析",financialProjections:"財務予測",industryTrends:"業界トレンド",industryStats:"業界統計",relevantRegulations:"関連規制",suggestedNextSteps:"推奨される次のステップ",newBusiness:"新しい事業",generationCredits:"生成クレジット",accountSettings:"アカウント設定",signOut:"ログアウト",selectBusiness:"事業を選択",viewAllDocuments:"すべてのドキュメントを表示",seeMore:"もっと見る",viewFinancialPlan:"財務計画を表示",editBusinessDetails:"詳細を編集",viewFullProfile:"完全なプロフィールを表示",exploreData:"データを探索",viewAllSteps:"すべてのステップを表示",viewAnalysis:"分析を表示",viewFullAnalysis:"完全な分析を表示",checkDetails:"詳細を確認",businessPlan:"事業計画書",startupCosts:"初期費用",fundingGoal:"資金調達目標",projectedBreakeven:"予想損益分岐点",months:"ヶ月",marketSize:"市場規模",variesByRegion:"地域により異なる",growthRate:"成長率",industryDependent:"業界により異なる",strength:"強み",strengths:"強み",weaknesses:"弱み",generating:"生成中...",unlockToView:"このセクションを表示するには事業をロック解除してください",generatingBanner:"お待ちください — 事業計画書を生成中です!",generatingBannerSub:"通常1〜2分かかります。準備ができ次第セクションが自動的に表示されます。",planReady:"🎉 事業計画書が完成しました!",planReadySub:'下の<strong>"ドキュメント"</strong>をクリックして、計画書全体を表示・編集してください。',unlockWelcome:"🎉 あなたの事業へようこそ!",unlockResearch:"AIモデルが",unlockAnd:"と",unlockForYou:"を調査しました。",unlockAccess:"✨ 事業をロック解除すると、以下にアクセスできます:",unlockFeature1:"詳細なインサイトを含むすべてのセクション",unlockFeature2:'完全な事業計画書("ドキュメント"セクションで利用可能)',unlockFeature3:"AI搭載の業界調査と分析",creditsAvailable:"{{count}}クレジットが利用可能です",unlockNowCredit:"今すぐロック解除(1クレジット)",unlockNow:"今すぐ事業をロック解除 🚀",discoverTrends:"{{industry}}に関連するトレンドを発見しましょう。",targetMarketAnalysis:"あなたの事業のターゲット市場分析。",reviewBusinessInfo:"事業の基本情報、チームメンバー、製品・サービスなどを確認・更新してください。",insightsGenerated:"業界インサイトが生成されました!"},Aq={skipToDashboard:"ダッシュボードへ",title:"事業計画書プレビュー",subt
3266itle:"パーソナライズされた事業計画書のプレビューです",generatingPlan:"事業計画書を生成中です...",generatingWait:"通常30〜60秒かかります。ここでお待ちいただくか、ページを閉じてください — プレビューの準備ができたらメールでお知らせします。",generationTimedOut:"生成がタイムアウトしました — 需要が高い時に発生することがあります。",dataSaved:"ご安心ください、データは保存されています。下をクリックして再試行してください。",retryGeneration:"生成を再試行",retry:"再試行",generatingCover:"表紙を生成中...",generatingSummary:"エグゼクティブサマリーを生成中...",pageOf:"{{total}}ページ中{{current}}ページ",coverPage:"表紙",executiveSummary:"エグゼクティブサマリー",businessPlan:"事業計画書",preparedBy:"作成者",problem:"課題",solution:"解決策",targetMarket:"ターゲット市場",competitiveAdvantage:"競争優位性",unlockToRead:"ロック解除して続きを読む",unlockFullPlan:"完全な計画書をロック解除",unlockDescription:"詳細なインサイトを含む完全なAI生成事業計画書を入手できます",unlockNow:"今すぐロック解除",continuePreview:"無料プレビューで続ける",oneTimePayment:"一回払い • 永久アクセス",features:{swot:"完全なSWOT分析",financials:"詳細な財務予測",audience:"ターゲット層調査",competitors:"競合分析",trends:"業界トレンドと統計",regulations:"規制要件",nextSteps:"実行可能な次のステップ",pdf:"ダウンロード可能なPDFレポート"}},Eq={title:"エグゼクティブサマリー",overview:"概要",theProblem:"課題",ourSolution:"ソリューション",targetMarket:"ターゲット市場",businessModel:"ビジネスモデル",competitiveAdvantage:"競争優位性",financialHighlights:"財務ハイライト",unlockFinancials:"完全な財務詳細を表示するにはロックを解除してください",keyMilestones:"主要マイルストーン",unlockFullPlan:"完全な事業計画書をロック解除",noSummaryTitle:"エグゼクティブサマリーがまだありません",noSummaryDesc:"事業計画書のプロフェッショナルなエグゼクティブサマリーを生成します",generateButton:"エグゼクティブサマリーを生成",generated:"エグゼクティブサマリーが生成されました!",generateFailed:"エグゼクティブサマリーの生成に失敗しました"},Cq={purchaseRequired:"このセクションにアクセスするには、ロック解除/生成クレジットを購入してください。",signInRequired:"このセクションを生成するにはログインしてください",invali
3266dPlanId:"無効な事業計画ID",audience:{title:"ターゲット層",subtitle:"{{name}}のための{{industry}}",summary:"ターゲット層の概要",demographics:"人口統計",psychographics:"心理統計",ageRange:"年齢層:",occupation:"職業:",incomeLevel:"所得水準:",education:"学歴:",lifestyle:"ライフスタイル:",values:"価値観:",interests:"関心事:",needsAndPainPoints:"ニーズとペインポイント",painPoint:"ペインポイント: ",customerPersonas:"顧客ペルソナ",goals:"目標",frustrations:"不満点",noData:"ターゲット層のデータがまだありません",generate:"ターゲット層を生成",generated:"ターゲット層が生成されました!",generateFailed:"ターゲット層の生成に失敗しました"},competitors:{title:"競合分析",subtitle:"{{industry}}における{{name}}の主要競合分析",strengths:"強み",weaknesses:"弱み",pricingTier:"価格帯",audienceOverlap:"顧客重複",noData:"競合分析がまだありません",generate:"競合分析を生成",generated:"競合分析が生成されました!",generateFailed:"競合分析の生成に失敗しました"},swot:{title:"SWOT分析",subtitle:"{{name}}の強み、弱み、機会、脅威",strengths:"強み",weaknesses:"弱み",opportunities:"機会",threats:"脅威",noData:"SWOT分析がまだありません",generate:"SWOT分析を生成",generated:"SWOT分析が生成されました!",generateFailed:"SWOT分析の生成に失敗しました",loadFailed:"SWOTデータの読み込みに失敗しました"},financials:{title:"財務予測",subtitle:"{{name}}の主要な財務指標と予測",financialOverview:"財務概要",initialBudget:"初期予算",investmentNeeds:"投資ニーズ",keyMetricsOverview:"主要指標の概要",year1Revenue:"1年目売上",year1NetIncome:"1年目純利益",grossProfitMargin:"粗利益率",netProfitMargin:"純利益率",revenueByProduct:"製品/サービス別売上",productService:"製品/サービス",year1:"1年目",year2:"2年目",year3:"3年目",totalRevenue:"総売上",profitLossSummary:"損益計算書",metric:"指標",revenue:"売上",cogs:"売上原価",grossProfit:"粗利益",operatingExpenses:"営業費用",netIncome:"純利益",balanceSheetSummary:"貸借対照表",totalAssets:"総資産",totalLiabilities:"総負債",totalEquity:"純資産",keyAssumptions:"主要な前提",syncedInfo:"この財務データは完全な事業計画書と同期しています。",viewEditFinancials:"財務計画を表示・編集",summaryQuestion:"今後3〜5年の財務予測は?",budgetQuestion:"初期予算はいくらですか?",totalStartupCosts:"総創業費用",year1ProjectedRevenue:"1年目予想売上",projectedBreakeven:"予想損益分岐点",months:"ヶ月",year1NetProfitMargin:"1年目純利益率",startupCostsBreakdown:"創業費用の内訳",totalEstimatedCosts:"総推定費用",fundingOverview:"資金調達概要",totalFundingNeeded:"必要総資金",keyProjections:"主要予測と収益性(1年目推定)",projections:"予測",estRevenue:"推定売上:",avgMonthlyRevenue:"月平均売上:",revenueForecast:"売上予測",profitability:"収益性",projectedNetProfit:"予想純利益:",breakevenPoint:"損益分岐点:",est3YearROI:"3年間推定ROI:",snapshotInfo:"これはハイレベルな財務概要です。",viewAllDocuments:"すべての文書を見る",noData:"財務予測がまだありません",generate:"財務予測を生成",generated:"財務予測が生成されました!",generateFailed:"財務予測の生成に失敗しました"},trends:{title:"業界トレンド",subtitle:"{{industry}}における{{name}}の関連トレンド",generating:"AI搭載の業界トレンドを生成中...",noData:"まだトレンドが生成されていません。",generate:"業界トレンドを生成",generated:"業界トレンドが生成されました!"},stats:{title:"業界統計",subtitle:"{{industry}}における{{name}}の主要統計",generating:"AI搭載の業界統計を生成中...",marketOverview:"市場概要",customerBehavior:"顧客行動",industryInsights:"業界インサイト",noData:"まだ統計が生成されていません。",generate:"業界統計を生成",generated:"業界統計が生成されました!"},regulations:{title:"関連規制",subtitle:"{{industry}}における{{name}}のコンプライアンス要件",checkDetails:"詳細を確認",noData:"規制データがまだありません",generate:"規制を生成",generated:"規制が生成されました!",generateFailed:"規制の生成に失敗しました"},nextSteps:{title:"推奨される次のステップ",subtitle:"{{name}}を立ち上げるための具体的なステップ",noData:"次ã
3266®ã‚¹ãƒ†ãƒƒãƒ—がまだありません",generate:"次のステップを生成",generated:"次のステップが生成されました!",generateFailed:"次のステップの生成に失敗しました"}},Tq={nav:hq,hero:fq,features:gq,howItWorks:vq,pricing:yq,testimonials:bq,cta:wq,footer:xq,auth:kq,landing:Sq,dashboard:Pq,preview:Aq,executiveSummaryPage:Eq,sections:Cq},jq={en:{translation:$B},es:{translation:sD},fr:{translation:xD},de:{translation:zD},pt:{translation:XD},ko:{translation:mq},ja:{translation:Tq}};ht.use(bS).use(n_).init({resources:jq,fallbackLng:"en",supportedLngs:["en","es","fr","de","pt","ko","ja"],load:"languageOnly",detection:{order:["localStorage","navigator","htmlTag","path","subdomain"],caches:["localStorage"],lookupLocalStorage:"i18nextLng"},interpolation:{escapeValue:!1}});const Iq=v.lazy(()=>V(()=>import("./Auth-CRat-Lwr.js"),__vite__mapDeps([0,1,2,3,4,5]))),Rq=v.lazy(()=>V(()=>import("./Dashboard-BKn6M97l.js"),__vite__mapDeps([6,7,8,9,10,11,12,13]))),Zv=v.lazy(()=>V(()=>import("./GetStarted-gmxE5DzK.js"),__vite__mapDeps([14,1,2,4,15,16,17,5,18]))),_q=v.lazy(()=>V(()=>import("./VerifyOTP-BQ7Kdd7j.js"),[])),Oq=v.lazy(()=>V(()=>import("./Questionnaire-pY_T9GKW.js"),__vite__mapDeps([19,2,20,17,21,22,11,23]))),Nq=v.lazy(()=>V(()=>import("./PlanHome-nHu0wdD4.js"),__vite__mapDeps([24,25,26,9,11,27,10,28,29,30,31,32,33,34,35,36]))),Lq=v.lazy(()=>V(()=>import("./IndustryTrends-CPfui0qr.js"),__vite__mapDeps([37,25,26,9,11,27,10,28,29,30,31,32,33,34,23]))),zq=v.lazy(()=>V(()=>import("./IndustryStats-X1pAzHyV.js"),__vite__mapDeps([38,25,26,9,11,27,10,28,29,30,31,32,33,34,39,21,40]))),Bq=v.lazy(()=>V(()=>import("./TargetAudience-Df_4D2wh.js"),__vite__mapDeps([41,25,26,9,11,27,10,28,29,30,31,32,33,34,42,43]))),Dq=v.lazy(()=>V(()=>import("./CompetitorsAnalysis-IXUKnEQ-.js"),__vite__mapDeps([44,25,26,9,11,27,10,28,29,30,31,32,33,34,39,36]))),qq=v.lazy(()=>V(()=>import("./SwotAnalysis-B9ZvRp7s.js"),__vite__mapDeps([45,25,26,9,11,27,10,28,29,30,31,32,33,34,46]))),Mq=v.lazy(()=>V(()=>import("./FinancialProjections-B4_SUZ3g.js"),__vite__mapDeps([47,25,26,9,11,27,10,28,29,30,31,32,33,34,23]))),Fq=v.lazy(()=>V(()=>import("./Regulations-C3MGYaZO.js"),__vite__mapDeps([48,25,26,9,11,27,10,28,29,30,31,32,33,34]))),Uq=v.lazy(()=>V(()=>import("./SuggestedNextSteps-DXfld21K.js"),__vite__mapDeps([49,25,26,9,11,27,10,28,29,30,31,32,33,34]))),$q=v.lazy(()=>V(()=>import("./Tools-Cr1gbTnP.js"),__vite__mapDeps([50,51]))),Wq=v.lazy(()=>V(()=>import("./BusinessNameGenerator-CaR74s3-.js"),__vite__mapDeps([52,2,3,51,53]))),Vq=v.lazy(()=>V(()=>import("./CoverPage-BCdJLe07.js"),__vite__mapDeps([54,25,26,9,11,27,10,28,55,56,57]))),Hq=v.lazy(()=>V(()=>import("./ExecutiveSummary-UwwacSd2.js"),__vite__mapDeps([58,25,26,9,11,27,10,28,29,30,31,32,33,34,59]))),Gq=v.lazy(()=>V(()=>import("./PlanPreview-B2xRNYKY.js"),__vite__mapDeps([60,32,33,34,31,28,9,61]))),Kq=v.lazy(()=>V(()=>import("./PaymentSuccess-s40DCD61.js"),__vite__mapDeps([62,1,9,63,36]))),Yq=v.lazy(()=>V(()=>import("./Documents-DnQvhIlE.js"),__vite__mapDeps([64,25,26,9,11,27,10,28,65,66,30,40]))),Jq=v.lazy(()=>V(()=>import("./SectionEditor-DuOkBvLy.js"),__vite__mapDeps([67,25,26,9,11,27,10,28,68,69,70,39,42,71,22,72,73,74,56,75,55,57,33,34,20,2,76,65,66,77,78,79,80]))),Qq=v.lazy(()=>V(()=>import("./BusinessDetails-DVG3Hcza.js"),__vite__mapDeps([81,25,26,9,11,27,10,28,2,15,16,20,82,34,23,21,39,22]))),ey=v.lazy(()=>V(()=>import("./PricingPage-CoyyO_Ct.js"),[])),ty=v.lazy(()=>V(()=>import("./About-DYOMpaxj.js"),__vite__mapDeps([83,43]))),Xq=v.lazy(()=>V(()=>import("./Contact-Cau1uz4X.js"),__vite__mapDeps([84,2,20,85]))),Zq=v.lazy(()=>V(()=>import("./HelpCenter-Gwl0cNZ0.js"),__vite__mapDeps([86,2,85,76,13]))),ny=v.lazy(()=>V(()=>import("./Industries-vc8GT_cF.js"),__vite__mapDeps([87,39]))),eM=v.lazy(()=>V(()=>import("./Affiliate-i1fQXJa2.js"),__vite__mapDeps([88,2,20,3,89,18]))),tM=v.lazy(()=>V(()=>import("./CompetitiveLandscape-BFKWjRQJ.js"),[])),nM=v.lazy(()=>V(()=>import("./BusinessPlanGenerator-x-WsFmei.js"),__vite__mapDeps([90,63]))),aM=v.lazy(()=>V(()=>import("./FreeBusinessPlanGenerator-Bw1YtIiW.js"),[])),rM=v.lazy(()=>V(()=>import("./BestAIBusinessPlanGenerator-UEwEWSlp.js"),[])),sM=v.lazy(()=>V(()=>import("./AIBusinessPlanWriter-CD_Gr4zZ.js"),__vite__mapDeps([91,92,76,80]))),iM=v.lazy(()=>V(()=>import("./AIStartupBusinessPlan-dgUUG3rC.js"),[])),Ga=v.lazy(()=>V(()=>import("./GuidePage-B_fKVTth.js"),__vite__mapDeps([93,63]))),oM=v.lazy(()=>V(()=>import("./PrivacyPolicy-D3CALyjz.js"),[])),lM=v.lazy(()=>V(()=>import("./TermsOfService-DrXTsQi5.js"),[])),cM=v.lazy(()=>V(()=>
3266import("./RefundPolicy-YgGk_WO4.js"),__vite__mapDeps([94,36,5]))),uM=v.lazy(()=>V(()=>import("./CookiePolicy-qmzSSjBs.js"),[])),dM=v.lazy(()=>V(()=>import("./Unsubscribe-CsK0rSZT.js"),__vite__mapDeps([95,96,63]))),pM=v.lazy(()=>V(()=>import("./ClaimPlan-BTrG0ZWi.js"),[])),mM=v.lazy(()=>V(()=>import("./AdminDashboard-DEeDSDhY.js"),__vite__mapDeps([97,98,9,10,76,55,7,71,39,99,73]))),hM=v.lazy(()=>V(()=>import("./AdminUsers-D9qh7rb8.js"),__vite__mapDeps([100,98,9,10,76,55,2,7,71,68,69,5,101,102,103,104,105]))),fM=v.lazy(()=>V(()=>import("./AdminPlans-BfhySkGH.js"),__vite__mapDeps([106,98,9,10,76,55,2,7,71,68,69,101,102,107,78,108,57,103,104,30,31,22]))),gM=v.lazy(()=>V(()=>import("./AdminManagement-BLQUzs0G.js"),__vite__mapDeps([109,98,9,10,76,55,2,7,71,68,69,5,103,105,104,30,31,22,101,102]))),vM=v.lazy(()=>V(()=>import("./AdminImport-DjYF6eYg.js"),__vite__mapDeps([110,98,9,10,76,55,2,3,111,112,69,39,5,63]))),yM=v.lazy(()=>V(()=>import("./AdminMonitoring-D21Ype8Q.js"),__vite__mapDeps([113,98,9,10,76,55,114,7,36,40,99,73,101,102]))),bM=v.lazy(()=>V(()=>import("./AdminSeo-B-f1Owc_.js"),__vite__mapDeps([115,98,9,10,76,55,114,2,3,71,104]))),wM=v.lazy(()=>V(()=>import("./AdminAffiliates-B9Ti5JSq.js"),__vite__mapDeps([116,98,9,10,76,55,7,20,71,33,34,5,22,101,102]))),xM=v.lazy(()=>V(()=>import("./Account-P3B5JLve.js"),__vite__mapDeps([117,74,82,34,32,33,31,9,42,27,13,22]))),kM=v.lazy(()=>V(()=>import("./VisaBusinessPlan-RATkt3NZ.js"),__vite__mapDeps([118,119,120,63,39,59,40]))),SM=v.lazy(()=>V(()=>import("./VisaGetStarted-BSQSTzc9.js"),__vite__mapDeps([121,1,2,20,4,17,33,34,39,5,63,55,59,18]))),PM=v.lazy(()=>V(()=>import("./VisaPlanHome-Ca_L6sEs.js"),__vite__mapDeps([122,123,7,9,11,39,42,26,10,55,104,27,35,30,111,82,34,2,3,33,5,108,124,102,107,40,22,8,119,66,77,68,69,92,80,12,13]))),AM=v.lazy(()=>V(()=>import("./VisaSectionEditor-BWq3RW1z.js"),__vite__mapDeps([125,123,7,9,11,39,42,26,10,55,104,27,8,72,73,74,56,33,34,2,3,112,69,126,57,22,70,127,20,124,102,107,63,30,78,79,12,13]))),EM=v.lazy(()=>V(()=>import("./VisaPlanPreview-Dx2Q-d5g.js"),__vite__mapDeps([128,75,123,7,9,11,39,42,26,10,55,104,27,119,126,57,22,70,8,66,77,61,12]))),CM=v.lazy(()=>V(()=>import("./VisaDocumentUploads-BL19CfGq.js"),__vite__mapDeps([129,123,7,9,11,39,42,26,10,55,104,27,111,46,63,40,22]))),TM=v.lazy(()=>V(()=>import("./VisaAuth-DdDIcy1b.js"),__vite__mapDeps([130,2,3,96,39]))),jM=v.lazy(()=>V(()=>import("./VisaPaymentSuccess-DbAzlyoz.js"),__vite__mapDeps([131,1,63,36]))),IM=v.lazy(()=>V(()=>import("./FirmSettings-Cfr1dKRM.js"),__vite__mapDeps([132,2,3,96,74,79,39,55,127,5,16]))),RM=v.lazy(()=>V(()=>import("./VisaPricing-D2MMK-ri.js"),__vite__mapDeps([133,119,120,12,9]))),_M=v.lazy(()=>V(()=>import("./VisaAccount-DKQBnvld.js"),__vite__mapDeps([134,8,74,7,111,82,34,9,42,39,12,57,13,89,53,22]))),OM=v.lazy(()=>V(()=>import("./VisaTemplates-DcLFUS5r.js"),__vite__mapDeps([135,136,120,119]))),NM=v.lazy(()=>V(()=>import("./VisaTemplatePage-WcKjyWbo.js"),__vite__mapDeps([137,136,120,119]))),LM=v.lazy(()=>V(()=>import("./VisaLandingPage-y1cgCCsm.js"),__vite__mapDeps([138,136,120,119,9,59,40]))),zM=v.lazy(()=>V(()=>import("./OAuthConsent-DbeOmmX-.js"),[])),BM=new Gj,DM=()=>l.jsx(pB,{children:l.jsx(Sk,{children:l.jsx(v.Suspense,{fallback:l.jsx("div",{className:"min-h-screen flex items-center justify-center",children:"Loading..."}),children:l.jsx(Yj,{client:BM,children:l.jsxs(Sj,{children:[l.jsx(rC,{}),l.jsx(zC,{}),l.jsxs(HI,{children:[l.jsx(lB,{}),l.jsx(uB,{}),l.jsxs(DI,{children:[l.jsx(R,{path:"/",element:l.jsx(Ve,{children:l.jsx(Uv,{})})}),l.jsx(R,{path:"/auth",element:l.jsx(Iq,{})}),l.jsx(R,{path:"/.lovable/oauth/consent",element:l.jsx(zM,{})}),l.jsx(R,{path:"/get-started",element:l.jsx(Ve,{children:l.jsx(Zv,{})})}),l.jsx(R,{path:"/start",element:l.jsx(ce,{to:"/get-started"})}),l.jsx(R,{path:"/login",element:l.jsx(ce,{to:"/auth"})}),l.jsx(R,{path:"/signup",element:l.jsx(ce,{to:"/auth"})}),l.jsx(R,{path:"/register",element:l.jsx(ce,{to:"/auth"})}),l.jsx(R,{path:"/reviews",element:l.jsx(ce,{to:"/"})}),l.jsx(R,{path:"/blog",element:l.jsx(ce,{to:"/insights"})}),l.jsx(R,{path:"/blog/:slug",element:l.jsx(ce,{to:e=>`/insights/${e.slug}`})}),l.jsx(R,{path:"/verify-otp",element:l.jsx(_q,{})}),l.jsx(R,{path:"/questionnaire",element:l.jsx(le,{children:l.jsx(Oq,{})})}),l.jsx(R,{path:"/dashboard",element:l.jsx(le,{children:l.jsx(Rq,{})})}),l.jsx(R,{path:"/payment-success",element:l.jsx(le,{children:l.jsx(Kq,{})})}),l.jsx(R,{path:"/account",element:l.jsx(le,{children:l.jsx(xM,{})})}),l.jsx(R,{path:"/pricing",element:l.jsx(Ve,{children:l.jsx(ey,{})})}),l.jsx(R,{path:"/claim",element:l.jsx(pM,{})}),l.jsx(R,{path:"/about",element:l.jsx(Ve,{children:l.jsx(ty,{})})}),l.jsx(R,{path:"/contacts",element:l.jsx(Xq,{})}),l.jsx(R,{path:"/help",element:l.jsx(Zq,{})}),l.jsx(R,{path:"/industries",element:l.jsx(Ve,{children:l.jsx(ny,{})})}),l.jsx(R,{path:"/affiliate",element:l.jsx(eM,{})}),l.jsx(R,{path:"/privacy",element:l.jsx(oM,{})}),l.jsx(R,{path:"/terms",element:l.jsx(lM,{})}),l.jsx(R,{path:"/refund-policy",element:l.jsx(cM,{})}),l.jsx(R,{path:"/cookies",element:l.jsx(uM,{})}),l.jsx(R,{path:"/unsubscribe",element:l.jsx(dM,{})}),l.jsx(R,{path:"/templates",element:l.jsx(Ve,{children:l.jsx($v,{})})}),l.jsx(R,{path:"/templates/:slug",element:l.jsx(Ve,{children:l.jsx(Hv,{})})}),l.jsx(R,{path:"/templates/:slug/*",element:l.jsx(ce,{to:e=>`/templates/${e.slug}`})}),l.jsx(R,{path:"/templates/spa-salon",element:l.jsx(ce,{to:"/templates/nail-salon"})}),l.jsx(R,{path:"/templates/gas-station",element:l.jsx(ce,{to:"/templates/convenience-store"})}),l.jsx(R,{path:"/templates/retail-store",element:l.jsx(ce,{to:"/templates"})}),l.jsx(R,{path:"/templates/fitness-center",element:l.jsx(ce,{to:"/templates/gym"})}),l.jsx(R,{path:"/marketing",element:l.jsx(ce,{to:"/"})}),l.jsx(R,{path:"/insights",element:l.jsx(Ve,{children:l.jsx(Gv,{})})}),l.jsx(R,{path:"/insights/:slug",element:l.jsx(Ve,{children:l.jsx(Kv,{})})}),l.jsx(R,{path:"/tools",element:l.jsx($q,{})}),l.jsx(R,{path:"/tools/business-name-generator",element:l.jsx(Wq,{})}
3266),l.jsx(R,{path:"/tools/competitive-landscape",element:l.jsx(tM,{})}),l.jsx(R,{path:"/business-plan-generator",element:l.jsx(nM,{})}),l.jsx(R,{path:"/free-business-plan-generator",element:l.jsx(aM,{})}),l.jsx(R,{path:"/best-ai-business-plan-generator",element:l.jsx(rM,{})}),l.jsx(R,{path:"/ai-business-plan-writer",element:l.jsx(sM,{})}),l.jsx(R,{path:"/ai-startup-business-plan",element:l.jsx(iM,{})}),l.jsx(R,{path:"/what-is-a-business-plan",element:l.jsx(Ga,{slug:"what-is-a-business-plan"})}),l.jsx(R,{path:"/elements-of-a-business-plan",element:l.jsx(Ga,{slug:"elements-of-a-business-plan"})}),l.jsx(R,{path:"/free-business-plan-template",element:l.jsx(Ga,{slug:"free-business-plan-template"})}),l.jsx(R,{path:"/sba-business-plan-template",element:l.jsx(Ga,{slug:"sba-business-plan-template"})}),l.jsx(R,{path:"/business-plan-for-bank-loan",element:l.jsx(Ga,{slug:"business-plan-for-bank-loan"})}),l.jsx(R,{path:"/business-plan-for-sba-loan",element:l.jsx(Ga,{slug:"business-plan-for-sba-loan"})}),l.jsx(R,{path:"/business-plan-for-investors",element:l.jsx(Ga,{slug:"business-plan-for-investors"})}),l.jsxs(l.Fragment,{children:[l.jsx(R,{path:"/visa/auth",element:l.jsx(TM,{})}),l.jsx(R,{path:"/visa-business-plan",element:l.jsx(kM,{})}),l.jsx(R,{path:"/visa/get-started",element:l.jsx(SM,{})}),l.jsx(R,{path:"/visa/plan/:planId",element:l.jsx(le,{children:l.jsx(PM,{})})}),l.jsx(R,{path:"/visa/plan/:planId/edit/:sectionType",element:l.jsx(le,{children:l.jsx(AM,{})})}),l.jsx(R,{path:"/visa/plan/:planId/preview",element:l.jsx(le,{children:l.jsx(EM,{})})}),l.jsx(R,{path:"/visa/plan/:planId/documents",element:l.jsx(le,{children:l.jsx(CM,{})})}),l.jsx(R,{path:"/visa/payment-success",element:l.jsx(le,{children:l.jsx(jM,{})})}),l.jsx(R,{path:"/visa/firm/settings",element:l.jsx(le,{children:l.jsx(IM,{})})}),l.jsx(R,{path:"/visa/pricing",element:l.jsx(RM,{})}),l.jsx(R,{path:"/visa/account",element:l.jsx(le,{children:l.jsx(_M,{})})}),l.jsx(R,{path:"/visa/templates",element:l.jsx(OM,{})}),l.jsx(R,{path:"/visa/templates/:slug",element:l.jsx(NM,{})}),l.jsx(R,{path:"/visa/:visaType",element:l.jsx(LM,{})})]}),l.jsx(R,{path:"/:lang/templates",element:l.jsx(Ve,{children:l.jsx($v,{})})}),l.jsx(R,{path:"/:lang/templates/:slug",element:l.jsx(Ve,{children:l.jsx(Hv,{})})}),l.jsx(R,{path:"/:lang/about",element:l.jsx(Ve,{children:l.jsx(ty,{})})}),l.jsx(R,{path:"/:lang/pricing",element:l.jsx(Ve,{children:l.jsx(ey,{})})}),l.jsx(R,{path:"/:lang/industries",element:l.jsx(Ve,{children:l.jsx(ny,{})})}),l.jsx(R,{path:"/:lang/insights",element:l.jsx(Ve,{children:l.jsx(Gv,{})})}),l.jsx(R,{path:"/:lang/insights/:slug",element:l.jsx(Ve,{children:l.jsx(Kv,{})})}),l.jsx(R,{path:"/:lang/blog",element:l.jsx(ce,{to:e=>`/${e.lang}/insights`})}),l.jsx(R,{path:"/:lang/blog/:slug",element:l.jsx(ce,{to:e=>`/${e.lang}/insights/${e.slug}`})}),l.jsx(R,{path:"/:lang/get-started",element:l.jsx(Ve,{children:l.jsx(Zv,{})})}),l.jsx(R,{path:"/:lang/start",element:l.jsx(ce,{to:e=>`/${e.lang}/get-started`})}),l.jsx(R,{path:"/:lang/login",element:l.jsx(ce,{to:"/auth"})}),l.jsx(R,{path:"/:lang/affiliate",element:l.jsx(ce,{to:"/affiliate"})}),l.jsx(R,{path:"/:lang/contacts",element:l.jsx(ce,{to:"/contacts"})}),l.jsx(R,{path:"/:lang/contact",element:l.jsx(ce,{to:"/contacts"})}),l.jsx(R,{path:"/:lang/reviews",element:l.jsx(ce,{to:"/"})}),l.jsx(R,{path:"/:lang/marketing",element:l.jsx(ce,{to:"/"})}),l.jsx(R,{path:"/:lang/privacy",element:l.jsx(ce,{to:"/privacy"})}),l.jsx(R,{path:"/:lang/terms",element:l.jsx(ce,{to:"/terms"})}),l.jsx(R,{path:"/:lang/cookies",element:l.jsx(ce,{to:"/cookies"})}),l.jsx(R,{path:"/:lang/refund-policy",element:l.jsx(ce,{to:"/refund-policy"})}),l.jsx(R,{path:"/:lang/help",element:l.jsx(ce,{to:"/help"})}),l.jsx(R,{path:"/:lang/tools",element:l.jsx(ce,{to:"/tools"})}),l.jsx(R,{path:"/:lang/tools/business-name-generator",element:l.jsx(ce,{to:"/tools/business-name-generator"})}),l.jsx(R,{path:"/:lang/tools/competitive-landscape",element:l.jsx(ce,{to:"/tools/competitive-landscape"})}),l.jsx(R,{path:"/:lang/templates/spa-salon",element:l.jsx(ce,{to:"/templates/nail-salon"})}),l.jsx(R,{path:"/:lang/templates/gas-station",element:l.jsx(ce,{to:"/templates/convenience-store"})}),l.jsx(R,{path:"/:lang/templates/retail-store",element:l.jsx(ce,{to:"/templates"})}),l.jsx(R,{path:"/:lang/templates/fitness-center",element:l.jsx(ce,{to:"/templates/gym"})}),l.jsx(R,{path:"/:lang",element:l.jsx(Ve,{children:l.jsx(Uv,{})})}),l.jsx(R,{path:"/plan/:planId",element:l.jsx(le,{children:l.jsx(Nq,{})})}),l.jsx(R,{path:"/plan/:planId/preview",element:l.jsx(le,{children:l.jsx(Gq,{})})}),l.jsx(R,{path:"/plan/:planId/cover",element:l.jsx(le,{children:l.jsx(Vq,{})})}),l.jsx(R,{path:"/plan/:planId/summary",element:l.jsx(le,{children:l.jsx(Hq,{})})}),l.jsx(R,{path:"/plan/:planId/details",element:l.jsx(le,{children:l.jsx(Qq,{})})}),l.jsx(R,{path:"/plan/:planId/documents",element:l.jsx(le,{children:l.jsx(Yq,{})})}),l.jsx(R,{path:"/plan/:planId/edit/:sectionType",element:l.jsx(le,{children:l.jsx(Jq,{})})}),l.jsx(R,{path:"/plan/:planId/trends",element:l.jsx(le,{children:l.jsx(Lq,{})})}),l.jsx(R,{path:"/plan/:planId/stats",element:l.jsx(le,{children:l.jsx(zq,{})})}),l.jsx(R,{path:"/plan/:planId/audience",element:l.jsx(le,{children:l.jsx(Bq,{})})}
3266),l.jsx(R,{path:"/plan/:planId/competitors",element:l.jsx(le,{children:l.jsx(Dq,{})})}),l.jsx(R,{path:"/plan/:planId/swot",element:l.jsx(le,{children:l.jsx(qq,{})})}),l.jsx(R,{path:"/plan/:planId/financials",element:l.jsx(le,{children:l.jsx(Mq,{})})}),l.jsx(R,{path:"/plan/:planId/regulations",element:l.jsx(le,{children:l.jsx(Fq,{})})}),l.jsx(R,{path:"/plan/:planId/next-steps",element:l.jsx(le,{children:l.jsx(Uq,{})})}),l.jsx(R,{path:"/admin",element:l.jsx(le,{children:l.jsx(mM,{})})}),l.jsx(R,{path:"/admin/manage",element:l.jsx(le,{children:l.jsx(gM,{})})}),l.jsx(R,{path:"/admin/users",element:l.jsx(le,{children:l.jsx(hM,{})})}),l.jsx(R,{path:"/admin/plans",element:l.jsx(le,{children:l.jsx(fM,{})})}),l.jsx(R,{path:"/admin/import",element:l.jsx(le,{children:l.jsx(vM,{})})}),l.jsx(R,{path:"/admin/monitoring",element:l.jsx(le,{children:l.jsx(yM,{})})}),l.jsx(R,{path:"/admin/seo",element:l.jsx(le,{children:l.jsx(bM,{})})}),l.jsx(R,{path:"/admin/affiliates",element:l.jsx(le,{children:l.jsx(wM,{})})}),l.jsx(R,{path:"*",element:l.jsx(iB,{})})]}),l.jsx(dB,{})]})]})})})})});Pw(document.getElementById("root")).render(l.jsx(DM,{}));export{Pj as $,tx as A,be as B,sg as C,rx as D,fS as E,kn as F,dE as G,Gn as H,Sr as I,JM as J,Jl as K,ee as L,ig as M,kr as N,lx as O,Zw as P,pz as Q,vE as R,bE as S,Ji as T,th as U,Y0 as V,J0 as W,Qi as X,Sj as Y,VM as Z,HM as _,GM as a,Zm as a0,tu as a1,ez as a2,ox as a3,cx as a4,u1 as a5,Cz as a6,uS as a7,dS as a8,pS as a9,Aw as aA,Cw as aB,_k as aC,Ux as aD,C_ as aE,QT as aF,h_ as aG,O as aH,Sw as aI,MM as aJ,h1 as aK,AR as aL,gk as aM,Gz as aN,Xw as aO,Ql as aP,fo as aQ,cE as aR,c1 as aS,fE as aT,nx as aU,Ke as aV,sv as aW,iE as aX,cB as aY,Fz as aa,ba as ab,Mz as ac,qz as ad,de as ae,Cr as af,Ce as ag,se as ah,Ic as ai,Uk as aj,R_ as ak,b_ as al,Ok as am,jc as an,FM as ao,vr as ap,$s as aq,Km as ar,Yi as as,V as at,Gm as au,zc as av,$x as aw,Wx as ax,dn as ay,Vx as az,$t as b,bh as c,ix as d,ug as e,yE as f,ae as g,ot as h,sE as i,l as j,$2 as k,P0 as l,W2 as m,C0 as n,T0 as o,We as p,Ls as q,v as r,Oa as s,Ks as t,ft as u,Xm as v,sx as w,ax as x,eh as y,ux as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.