PageSourceSearch

https://chal-consulting.fr/assets/index-BDUOIZoK.js

js chal-consulting.fr collected 2026-10-07 22:41:23 UTC 1,543,479 bytes, 4,171 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-wZEASjZy.js","assets/framer-motion-BycaRa9-.js","assets/OrangeBreadcrumb-Bllzxhoa.js","assets/react-vendor-C7YyPGGN.js","assets/InternalLinks-K5McZnL2.js","assets/handshake-ONFFv2aw.js","assets/FounderSignature-CX-GifeB.js","assets/CTAFinalCharte-DdyFWUKO.js","assets/map-pin-DRRbKpbR.js","assets/lightbulb-DylPtKZx.js","assets/globe-CQdIonbo.js","assets/circle-check-big-Dxg6aOik.js","assets/circle-x-nv0NZPBC.js","assets/compass-J8Do2jVH.js","assets/brain-CQjzVj5E.js","assets/target-gWABdIx6.js","assets/leaf-C3-0yiR0.js","assets/bot-BwPXfgmS.js","assets/ui-vendor-B1B3fLHn.js","assets/Formation-Ccf6iNcv.js","assets/accordion-B_D126Zq.js","assets/zap-DDtTgdBX.js","assets/building-QUduJdNn.js","assets/cpu-EC20SXSQ.js","assets/eye-C_t-WxG3.js","assets/users-round-DGY6TK5o.js","assets/badge-check-An9R2y6H.js","assets/Formations-BHKsuW_h.js","assets/RainerPartnerBadge-B8f_EQG8.js","assets/settings-CYuzGArs.js","assets/layout-grid-DqQvqbno.js","assets/Tarifs-BmJlMJjt.js","assets/CTAButton-DgbHogyU.js","assets/Lab-CQjcG49d.js","assets/InsightArticle-COmwchVN.js","assets/ReadingProgress-CrdfKfGA.js","assets/use-mobile-CYbreCAq.js","assets/chevron-right-BrZ5PJn1.js","assets/badge-Bp-Cjt7L.js","assets/ShareBar-CfCLcBOu.js","assets/link-2-06ANTtO3.js","assets/chal-michel-portrait-auteur-ByLUOpdr.js","assets/arrow-left-Bnzh2-g_.js","assets/user-B4cEoNwB.js","assets/index-IyY8R9bw.js","assets/message-circle-vu6O3Giw.js","assets/Contact-aN_uhv4V.js","assets/input-B6a3iWqf.js","assets/index-CBmpVIAX.js","assets/calendar-days-Nuu2yEnz.js","assets/building-2-TWIsAkbB.js","assets/circle-check-CtvLEbWc.js","assets/unplug-DgClrvqb.js","assets/MentionsLegales-ChPPjAel.js","assets/scale-zdLHQPWG.js","assets/NotFound-CWRnc-PE.js","assets/house-DE3G09bf.js","assets/DiagnosticIA-CPuBfVMg.js","assets/diagnostic-data-DlJujYh_.js","assets/triangle-alert-Big_a_dq.js","assets/rotate-ccw-B9mipi41.js","assets/printer-1jQ8oGL5.js","assets/Methode-B4ow6eJ0.js","assets/EditorialCard-BiViniej.js","assets/arrow-down-D0-41JMV.js","assets/MethodeFiabiliser-DWL-xE9i.js","assets/PhasePageLayout-0qZN_MYV.js","assets/MethodeLire-DyBt3f2v.js","assets/MethodeUnifier-B0kVYRWY.js","assets/MethodeExecuter-Z-JJuVmI.js","assets/Resultats-JvoZxhom.js","assets/Services-DgjUyCKQ.js","assets/ServiceDiagnostic-DmBNqiNn.js","assets/ServicePageLayout-CX9wW7Ei.js","assets/progress-BDnsYzG-.js","assets/ServiceAccompagnement-q8zCGz1w.js","assets/gauge-Wc38GNdg.js","assets/scan-line-CcUHSwrQ.js","assets/circle-help-BzDncBBz.js","assets/ServiceTransition-5K2iMVy2.js","assets/ServiceDirectionFractionnee-Oz_C16d6.js","assets/FormationLogistiqueResponsable-1JUO_eGt.js","assets/chal-michel-formateur-CsU8V4bd.js","assets/truck-C2OwhOH1.js","assets/flame-CIhhlinQ.js","assets/package-CKkDvjRV.js","assets/clipboard-list-BKoBuBK5.js","assets/refresh-cw-DdsXj04u.js","assets/clipboard-check-CpYAnLEi.js","assets/FormationIAManagers-yjXf1eGN.js","assets/FormationBasCarbone-BwZ-XDqh.js","assets/git-branch-eNZYLDFl.js","assets/calculator-DGip6ylg.js","assets/network-PctnXMe8.js","assets/chart-no-axes-column-C3idyCIc.js","assets/FormationTarifs-aS2Xy150.js","assets/FormationEcoles-COkQ_F7P.js","assets/Engagements-D5tdgnj0.js","assets/AnalysesOutils-BNuidPHu.js","assets/chevron-up-D9yWTbwt.js","assets/WarehouseMapTeaser-C74J_hdi.js","assets/IAOperationnelle-DM8gVYAA.js","assets/workflow-DBHSPXW4.js","assets/boxes-UT6cOLFd.js","assets/activity-r-xWa8KN.js","assets/CarteVisite-BHDfniAb.js","assets/download-ChvK6ROc.js","assets/CarteEntrepot-CKv5MJtA.js","assets/lock-DAegupii.js","assets/flask-conical-iv3h-Dr7.js","assets/ArticleWMSGoLive-H1x4SASZ.js","assets/BackToArticles-UqRCT5jm.js","assets/ArticleIALogistique-DuPy0TTU.js","assets/ArticleAuditLogistique-DBtgTPET.js","assets/chal-michel-portrait-vegetation-DF8wGinL.js","assets/warehouse-QCTsf7FR.js","assets/package-search-CgCiYmuu.js","assets/box-BBoKPlD1.js","assets/ArticleColdChainGDP-SXgmvx6M.js","assets/arrow-up-down-DaPUjaAt.js","assets/ArticleFluxEntrepot-D4yZ0Xp3.js","assets/move-CCkBHoYy.js","assets/list-checks-BLp0wSDq.js","assets/ArticleAutomatiserOuPiloter-C50sH6gK.js","assets/Glossaire-BQz-XUEL.js","assets/ArticleMet
1iersEntrepot2026-Cpm6xp1i.js","assets/ArticleMars2026Logistique-CSPGQU_M.js","assets/ArticleFormationLogistiquePenurie-IpvrsKeA.js","assets/ArticleSlottingEntrepot-CnB9VbD0.js","assets/ArticleEntrepotSature-B9ajU4Ls.js","assets/ArticleExcelVsWms-BohrpCqR.js","assets/ArticleLeanLogistics-B-oxHyyA.js","assets/circle-alert-DGcvOSX9.js","assets/ArticleDecarbonationTransport-9WbnvqVP.js","assets/ship-CPq2bqp1.js","assets/ArticleGuideIALogistique-D0DugjMd.js","assets/ArticleSitl2026-DNemSzNp.js","assets/ArticleAvril2026Logistique-BTsEVVFF.js","assets/ArticleCrossDocking-CNfdGg-D.js","assets/ArticlePologneEntrepotsAutomatises-Dygxep5X.js","assets/ArticleIndeBoomEntrepots-Ca2lQdDg.js","assets/ArticleEcartPmeGrandsGroupes-DjJXFzHZ.js","assets/ArticleTransporteursLogisticiens-DfTuNKA8.js","assets/ArticleIALogistiqueAllemagne-BlHgajCM.js","assets/ArticleRobotisationAmazonLyon-lNmcW9JN.js","assets/SimulateurFlux-DTUJBfqW.js","assets/rocket-Bd5sppWV.js","assets/SimulateurROI-CWW1KI4c.js","assets/SeoAudit-DEUqdI2j.js","assets/IASupplyChain-KTMfpTJK.js","assets/PartenariatRainerSchool-CeyLag-I.js","assets/Plaquette-CuPOzRXx.js","assets/ArticleRobotsEntrepotJapon-DWKvA3WG.js","assets/ArticleFerreroEntrepotCleon-RVHld0BC.js","assets/ArticleIncendieEntrepotCoupang-CX_VeWe2.js","assets/ArticleAgentQuai-DkoQFAKR.js","assets/ArticleTangerMedMaroc-CSVDf2Pr.js","assets/ArticleIaDonneesLogistiquePme-CoLTUnzA.js","assets/ArticleConsolidationLogistiquePme-BrAeld1u.js","assets/ArticleNearshoringMexique-CqKzScx-.js","assets/ArticleEcommerceChinoisLogistique-3V_PjDSv.js","assets/ArticleDubaiJafzaBoom-B1jELpdg.js","assets/ArticleFormationIaEcart-DxQpr2VP.js","assets/ArticleRendezVousQuai-DAI9IUBA.js","assets/ArticleAfriqueSudEntrepots-gf_hzPWU.js","assets/ArticleWmsSousExploite-B_j4FSAz.js","assets/ArticleKardexMadrigall-Dm7acVTF.js","assets/ArticleCoteIvoireAbidjan-DyfMNh3p.js","assets/ArticlePrologisSegroRachat-DTiMnbUq.js","assets/ArticleKenyaNaivashaCorridor-Cce2mXX9.js","assets/ArticleRepEmballagesPme-D-7gUKbp.js","assets/ArticleSenegalIfriaHubFroid-CHtfhdu2.js","assets/ArticleSunrockPhotovoltaique-C9I6cJ2g.js","assets/ArticleTurnoverFormationLogistique-BIz_D7fJ.js","assets/ArticleAtelierLogistiqueChampsElysees-CGcKokDK.js","assets/ArticleGpeSaintVulbas-BuF27be2.js","assets/ArticleValoisEmballagesWms-BwZBL3WN.js","assets/ArticleGxoExotecGuessVenlo-BofZusgh.js","assets/ArticleSkechersKnappLiege-DRMjsdpo.js"])))=>i.map(i=>d[i]);
2var iE=Object.defineProperty;var rg=e=>{throw TypeError(e)};var sE=(e,t,n)=>t in e?iE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;
2var pr=(e,t,n)=>sE(e,typeof t!="symbol"?t+"":t,n),Zc=(e,t,n)=>t.has(e)||rg("Cannot "+n);var K=(e,t,n)=>(Zc(e,t,"read from private field"),n?n.call(e):t.get(e)),Ne=(e,t,n)=>t.has(e)?rg("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),ke=(e,t,n,r)=>(Zc(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Vt=(e,t,n)=>(Zc(e,t,"access private method"),n);var rl=(e,t,n,r)=>({set _(i){ke(e,t,i,n)},get _(){return K(e,t,r)}});import{r as E,j as d,a as O,g as De,c as br,A as Wl,m as Gr}from"./framer-motion-BycaRa9-.js";import{r as a1,R as aE,L as Ke,u as Bo,B as oE,a as lE,b as Q,N as bn}from"./react-vendor-C7YyPGGN.js";import{c as uE,a as cE,u as o1,B as dE,P as Qs,V as l1,b as pE,d as mE,e as Hl,f as nr,R as fE,g as hE,h as gE,i as vE,C as u1,j as yE,S as bE,_ as xE,k as Xu,O as c1,l as d1,m as wE,T as p1,D as m1,n as qE,o as SE,p as AE}from"./ui-vendor-B1B3fLHn.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var f1,ig=a1;f1=ig.createRoot,ig.hydrateRoot;const EE="modulepreload",_E=function(e){return"/"+e},sg={},ee=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),o=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=Promise.allSettled(n.map(l=>{if(l=_E(l),l in sg)return;sg[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${c}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":EE,u||(p.as="script"),p.crossOrigin="",p.href=l,o&&p.setAttribute("nonce",o),document.head.appendChild(p),u)return new Promise((f,m)=>{p.addEventListener("load",f),p.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return i.then(a=>{for(const o of a||[])o.status==="rejected"&&s(o.reason);return t().catch(s)})},kE=1,CE=1e6;let ed=0;function jE(){return ed=(ed+1)%Number.MAX_SAFE_INTEGER,ed.toString()}const td=new Map,ag=e=>{if(td.has(e))return;const t=setTimeout(()=>{td.delete(e),Da({type:"REMOVE_TOAST",toastId:e})},CE);td.set(e,t)},PE=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,kE)};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?ag(n):e.toasts.forEach(r=>{ag(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==t.toastId)}}},Rl=[];let $l={toasts:[]};function Da(e){$l=PE($l,e),Rl.forEach(t=>{t($l)})}function TE({...e}){const t=jE(),n=i=>Da({type:"UPDATE_TOAST",toast:{...i,id:t}}),r=()=>Da({type:"DISMISS_TOAST",toastId:t});return Da({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:i=>{i||r()}}}),{id:t,dismiss:r,update:n}}function IE(){const[e,t]=E.useState($l);return E.useEffect(()=>(Rl.push(t),()=>{const n=Rl.indexOf(t);n>-1&&Rl.splice(n,1)}),[e]),{...e,toast:TE,dismiss:n=>Da({type:"DISMISS_TOAST",toastId:n})}}var qf="ToastProvider",[Sf,OE,LE]=uE("Toast"),[h1,Gde]=cE("Toast",[LE]),[ME,Qu]=h1(qf),g1=e=>{const{__scopeToast:t,label:n="Notification",duration:r=5e3,swipeDirection:i="right",swipeThreshold:s=50,children:a}=e,[o,l]=E.useState(null),[u,c]=E.useState(0),p=E.useRef(!1),f=E.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${qf}\`. Expected non-empty \`string\`.`),d.jsx(Sf.Provider,{scope:t,children:d.jsx(ME,{scope:t,label:n,duration:r,swipeDirection:i,swipeThreshold:s,toastCount:u,viewport:o,onViewportChange:l,onToastAdd:E.useCallback(()=>c(m=>m+1),[]),onToastRemove:E.useCallback(()=>c(m=>m-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:f,children:a})})};g1.displayName=qf;var v1="ToastViewport",NE=["F8"],dp="toast.viewportPause",pp="toast.viewportResume",y1=E.forwardRef((e,t)=>
2{const{__scopeToast:n,hotkey:r=NE,label:i="Notifications ({hotkey})",...s}=e,a=Qu(v1,n),o=OE(n),l=E.useRef(null),u=E.useRef(null),c=E.useRef(null),p=E.useRef(null),f=o1(t,p,a.onViewportChange),m=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),g=a.toastCount>0;E.useEffect(()=>{const v=b=>{var y;r.length!==0&&r.every(A=>b[A]||b.code===A)&&((y=p.current)==null||y.focus())};return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[r]),E.useEffect(()=>{const v=l.current,b=p.current;if(g&&v&&b){const w=()=>{if(!a.isClosePausedRef.current){const x=new CustomEvent(dp);b.dispatchEvent(x),a.isClosePausedRef.current=!0}},y=()=>{if(a.isClosePausedRef.current){const x=new CustomEvent(pp);b.dispatchEvent(x),a.isClosePausedRef.current=!1}},A=x=>{!v.contains(x.relatedTarget)&&y()},q=()=>{v.contains(document.activeElement)||y()};return v.addEventListener("focusin",w),v.addEventListener("focusout",A),v.addEventListener("pointermove",w),v.addEventListener("pointerleave",q),window.addEventListener("blur",w),window.addEventListener("focus",y),()=>{v.removeEventListener("focusin",w),v.removeEventListener("focusout",A),v.removeEventListener("pointermove",w),v.removeEventListener("pointerleave",q),window.removeEventListener("blur",w),window.removeEventListener("focus",y)}}},[g,a.isClosePausedRef]);const h=E.useCallback(({tabbingDirection:v})=>{const w=o().map(y=>{const A=y.ref.current,q=[A,...XE(A)];return v==="forwards"?q:q.reverse()});return(v==="forwards"?w.reverse():w).flat()},[o]);return E.useEffect(()=>{const v=p.current;if(v){const b=w=>{var q,x,_;const y=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!y){const I=document.activeElement,S=w.shiftKey;if(w.target===v&&S){(q=u.current)==null||q.focus();return}const T=h({tabbingDirection:S?"backwards":"forwards"}),M=T.findIndex(L=>L===I);nd(T.slice(M+1))?w.preventDefault():S?(x=u.current)==null||x.focus():(_=c.current)==null||_.focus()}};return v.addEventListener("keydown",b),()=>v.removeEventListener("keydown",b)}},[o,h]),d.jsxs(dE,{ref:l,role:"region","aria-label":i.replace("{hotkey}",m),tabIndex:-1,style:{pointerEvents:g?void 0:"none"},children:[g&&d.jsx(mp,{ref:u,onFocusFromOutsideViewport:()=>{const v=h({tabbingDirection:"forwards"});nd(v)}}),d.jsx(Sf.Slot,{scope:n,children:d.jsx(Qs.ol,{tabIndex:-1,...s,ref:f})}),g&&d.jsx(mp,{ref:c,onFocusFromOutsideViewport:()=>{const v=h({tabbingDirection:"backwards"});nd(v)}})]})});y1.displayName=v1;var b1="ToastFocusProxy",mp=E.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...i}=e,s=Qu(b1,n);return d.jsx(l1,{"aria-hidden":!0,tabIndex:0,...i,ref:t,style:{position:"fixed"},onFocus:a=>{var u;const o=a.relatedTarget;!((u=s.viewport)!=null&&u.contains(o))&&r()}})});mp.displayName=b1;var Wo="Toast",RE="toast.swipeStart",$E="toast.swipeMove",DE="toast.swipeCancel",FE="toast.swipeEnd",x1=E.forwardRef((e,t)=>{const{forceMount:n,open:r,defaultOpen:i,onOpenChange:s,...a}=e,[o,l]=pE({prop:r,defaultProp:i??!0,onChange:s,caller:Wo});return d.jsx(mE,{present:n||o,children:d.jsx(BE,{open:o,...a,ref:t,onClose:()=>l(!1),onPause:Hl(e.onPause),onResume:Hl(e.onResume),onSwipeStart:nr(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nr(e.onSwipeMove,u=>{const{x:c,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:nr(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:nr(e.onSwipeEnd,u=>{const{x:c,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",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),l(!1)})})})});x1.displayName=Wo;var[UE,zE]=h1(Wo,{onClose(){}}),BE=E.forwardRef((e,t)=>
2{const{__scopeToast:n,type:r="foreground",duration:i,open:s,onClose:a,onEscapeKeyDown:o,onPause:l,onResume:u,onSwipeStart:c,onSwipeMove:p,onSwipeCancel:f,onSwipeEnd:m,...g}=e,h=Qu(Wo,n),[v,b]=E.useState(null),w=o1(t,L=>b(L)),y=E.useRef(null),A=E.useRef(null),q=i||h.duration,x=E.useRef(0),_=E.useRef(q),I=E.useRef(0),{onToastAdd:S,onToastRemove:k}=h,C=Hl(()=>{var N;(v==null?void 0:v.contains(document.activeElement))&&((N=h.viewport)==null||N.focus()),a()}),T=E.useCallback(L=>{!L||L===1/0||(window.clearTimeout(I.current),x.current=new Date().getTime(),I.current=window.setTimeout(C,L))},[C]);E.useEffect(()=>{const L=h.viewport;if(L){const N=()=>{T(_.current),u==null||u()},R=()=>{const $=new Date().getTime()-x.current;_.current=_.current-$,window.clearTimeout(I.current),l==null||l()};return L.addEventListener(dp,R),L.addEventListener(pp,N),()=>{L.removeEventListener(dp,R),L.removeEventListener(pp,N)}}},[h.viewport,q,l,u,T]),E.useEffect(()=>{s&&!h.isClosePausedRef.current&&T(q)},[s,q,h.isClosePausedRef,T]),E.useEffect(()=>(S(),()=>k()),[S,k]);const M=E.useMemo(()=>v?k1(v):null,[v]);return h.viewport?d.jsxs(d.Fragment,{children:[M&&d.jsx(WE,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite","aria-atomic":!0,children:M}),d.jsx(UE,{scope:n,onClose:C,children:a1.createPortal(d.jsx(Sf.ItemSlot,{scope:n,children:d.jsx(fE,{asChild:!0,onEscapeKeyDown:nr(o,()=>{h.isFocusedToastEscapeKeyDownRef.current||C(),h.isFocusedToastEscapeKeyDownRef.current=!1}),children:d.jsx(Qs.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":s?"open":"closed","data-swipe-direction":h.swipeDirection,...g,ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:nr(e.onKeyDown,L=>{L.key==="Escape"&&(o==null||o(L.nativeEvent),L.nativeEvent.defaultPrevented||(h.isFocusedToastEscapeKeyDownRef.current=!0,C()))}),onPointerDown:nr(e.onPointerDown,L=>{L.button===0&&(y.current={x:L.clientX,y:L.clientY})}),onPointerMove:nr(e.onPointerMove,L=>{if(!y.current)return;const N=L.clientX-y.current.x,R=L.clientY-y.current.y,$=!!A.current,B=["left","right"].includes(h.swipeDirection),D=["left","up"].includes(h.swipeDirection)?Math.min:Math.max,j=B?D(0,N):0,J=B?0:D(0,R),z=L.pointerType==="touch"?10:2,P={x:j,y:J},G={originalEvent:L,delta:P};$?(A.current=P,il($E,p,G,{discrete:!1})):og(P,h.swipeDirection,z)?(A.current=P,il(RE,c,G,{discrete:!1}),L.target.setPointerCapture(L.pointerId)):(Math.abs(N)>z||Math.abs(R)>z)&&(y.current=null)}),onPointerUp:nr(e.onPointerUp,L=>{const N=A.current,R=L.target;if(R.hasPointerCapture(L.pointerId)&&R.releasePointerCapture(L.pointerId),A.current=null,y.current=null,N){const $=L.currentTarget,B={originalEvent:L,delta:N};og(N,h.swipeDirection,h.swipeThreshold)?il(FE,m,B,{discrete:!0}):il(DE,f,B,{discrete:!0}),$.addEventListener("click",D=>D.preventDefault(),{once:!0})}})})})}),h.viewport)})]}):null}),WE=e=>{const{__scopeToast:t,children:n,...r}=e,i=Qu(Wo,t),[s,a]=E.useState(!1),[o,l]=E.useState(!1);return GE(()=>a(!0)),E.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),o?null:d.jsx(hE,{asChild:!0,children:d.jsx(l1,{...r,children:s&&d.jsxs(d.Fragment,{children:[i.label," ",n]})})})},HE="ToastTitle",w1=E.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e;return d.jsx(Qs.div,{...r,ref:t})});w1.displayName=HE;var VE="ToastDescription",q1=E.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e;return d.jsx(Qs.div,{...r,ref:t})});q1.displayName=VE;var S1="ToastAction",A1=E.forwardRef((e,t)=>{const{altText:n,...r}=e;return n.trim()?d.jsx(_1,{altText:n,asChild:!0,children:d.jsx(Af,{...r,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${S1}\`. Expected non-empty \`string\`.`),null)});A1.displayName=S1;var E1="ToastClose",Af=E.forwardRef((e,t)=>{const{__scopeToast:n,...r}=e,i=zE(E1,n);return d.jsx(_1,{asChild:!0,children:d.jsx(Qs.button,{type:"button",...r,ref:t,onClick:nr(e.onClick,i.onClose)})})});Af.displayName=E1;var _1=E.forwardRef((e,t)=>{const{__scopeToast:n,altText:r,...i}=e;return d.jsx(Qs.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...i,ref:t})});function k1(e){const t=[];
vendor: 3,823 bytes, lines 2-22
2return Array.from(e.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&t.push(r.textContent),KE(r)){const i=r.ariaHidden||r.hidden||r.style.display==="none",s=r.dataset.radixToastAnnounceExclude==="";if(!i)if(s){const a=r.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...k1(r))}}),t}function il(e,t,n,{discrete:r}){const i=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?vE(i,s):i.dispatchEvent(s)}var og=(e,t,n=0)=>{const r=Math.abs(e.x),i=Math.abs(e.y),s=r>i;return t==="left"||t==="right"?s&&r>n:!s&&i>n};function GE(e=()=>{}){const t=Hl(e);gE(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[t])}function KE(e){return e.nodeType===e.ELEMENT_NODE}function XE(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const i=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||i?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function nd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}var QE=g1,C1=y1,j1=x1,P1=w1,T1=q1,I1=A1,O1=Af;function L1(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=L1(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Le(){for(var e,t,n=0,r="",i=arguments.length;n<i;n++)(e=arguments[n])&&(t=L1(e))&&(r&&(r+=" "),r+=t);return r}const lg=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,ug=Le,M1=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return ug(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:i,defaultVariants:s}=t,a=Object.keys(i).map(u=>{const c=n==null?void 0:n[u],p=s==null?void 0:s[u];if(c===null)return null;const f=lg(c)||lg(p);return i[u][f]}),o=n&&Object.entries(n).reduce((u,c)=>{let[p,f]=c;return f===void 0||(u[p]=f),u},{}),l=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((u,c)=>{let{class:p,className:f,...m}=c;return Object.entries(m).every(g=>{let[h,v]=g;return Array.isArray(v)?v.includes({...s,...o}[h]):{...s,...o}[h]===v})?[...u,p,f]:u},[]);return ug(e,a,l,n==null?void 0:n.class,n==null?void 0:n.className)};/**
3 * @license lucide-react v0.462.0 - ISC
4 *
5 * This source code is licensed under the ISC license.
6 * See the LICENSE file in the root directory of this source tree.
7 */const JE=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),N1=(...e)=>e.filter((t,n,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===n).join(" ").trim();/**
8 * @license lucide-react v0.462.0 - ISC
9 *
10 * This source code is licensed under the ISC license.
11 * See the LICENSE file in the root directory of this source tree.
12 */var YE={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"};/**
13 * @license lucide-react v0.462.0 - ISC
14 *
15 * This source code is licensed under the ISC license.
16 * See the LICENSE file in the root directory of this source tree.
17 */const ZE=E.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i="",children:s,iconNode:a,...o},l)=>E.createElement("svg",{ref:l,...YE,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:N1("lucide",i),...o},[...a.map(([u,c])=>E.createElement(u,c)),...Array.isArray(s)?s:[s]]));/**
18 * @license lucide-react v0.462.0 - ISC
19 *
20 * This source code is licensed under the ISC license.
21 * See the LICENSE file in the root directory of this source tree.
22 */const Ae=(e,t)=>
22{const n=E.forwardRef(({className:r,...i},s)=>E.createElement(ZE,{ref:s,iconNode:t,className:N1(`lucide-${JE(e)}`,r),...i}));return n.displayName=`${e}`,n};/**
23 * @license lucide-react v0.462.0 - ISC
24 *
25 * This source code is licensed under the ISC license.
26 * See the LICENSE file in the root directory of this source tree.
27 */const jn=Ae("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
28 * @license lucide-react v0.462.0 - ISC
29 *
30 * This source code is licensed under the ISC license.
31 * See the LICENSE file in the root directory of this source tree.
32 */const Ef=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"}]]);/**
33 * @license lucide-react v0.462.0 - ISC
34 *
35 * This source code is licensed under the ISC license.
36 * See the LICENSE file in the root directory of this source tree.
37 */const R1=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"}]]);/**
38 * @license lucide-react v0.462.0 - ISC
39 *
40 * This source code is licensed under the ISC license.
41 * See the LICENSE file in the root directory of this source tree.
42 */const e_=Ae("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/**
43 * @license lucide-react v0.462.0 - ISC
44 *
45 * This source code is licensed under the ISC license.
46 * See the LICENSE file in the root directory of this source tree.
47 */const t_=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"}]]);/**
48 * @license lucide-react v0.462.0 - ISC
49 *
50 * This source code is licensed under the ISC license.
51 * See the LICENSE file in the root directory of this source tree.
52 */const n_=Ae("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
53 * @license lucide-react v0.462.0 - ISC
54 *
55 * This source code is licensed under the ISC license.
56 * See the LICENSE file in the root directory of this source tree.
57 */const _f=Ae("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
58 * @license lucide-react v0.462.0 - ISC
59 *
60 * This source code is licensed under the ISC license.
61 * See the LICENSE file in the root directory of this source tree.
62 */const r_=Ae("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
63 * @license lucide-react v0.462.0 - ISC
64 *
65 * This source code is licensed under the ISC license.
66 * See the LICENSE file in the root directory of this source tree.
67 */const i_=Ae("Cog",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);/**
68 * @license lucide-react v0.462.0 - ISC
69 *
70 * This source code is licensed under the ISC license.
71 * See the LICENSE file in the root directory of this source tree.
72 */const s_=Ae("Cookie",[["path",{d:"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5",key:"laymnq"}],["path",{d:"M8.5 8.5v.01",key:"ue8clq"}],["path",{d:"M16 15.5v.01",key:"14dtrp"}],["path",{d:"M12 12v.01",key:"u5ubse"}],["path",{d:"M11 17v.01",key:"1hyl5a"}],["path",{d:"M7 14v.01",key:"uct60s"}]]);/**
73 * @license lucide-react v0.462.0 - ISC
74 *
75 * This source code is licensed under the ISC license.
76 * See the LICENSE file in the root directory of this source tree.
77 */const $1=Ae("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/**
78 * @license lucide-react v0.462.0 - ISC
79 *
80 * This source code is licensed under the ISC license.
81 * See the LICENSE file in the root directory of this source tree.
82 */const a_=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"}]]);/**
83 * @license lucide-react v0.462.0 - ISC
84 *
85 * This source code is licensed under the ISC license.
86 * See the LICENSE file in the root directory of this source tree.
87 */const D1=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"}]]);/**
88 * @license lucide-react v0.462.0 - ISC
89 *
90 * This source code is licensed under the ISC license.
91 * See the LICENSE file in the root directory of this source tree.
92 */const o_=Ae("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/**
93 * @license lucide-react v0.462.0 - ISC
94 *
95 * This source code is licensed under the ISC license.
96 * See the LICENSE file in the root directory of this source tree.
97 */const F1=Ae("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);/**
98 * @license lucide-react v0.462.0 - ISC
99 *
100 * This source code is licensed under the ISC license.
101 * See the LICENSE file in the root directory of this source tree.
102 */const l_=Ae("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/**
103 * @license lucide-react v0.462.0 - ISC
104 *
105 * This source code is licensed under the ISC license.
106 * See the LICENSE file in the root directory of this source tree.
107 */const kf=Ae("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/**
108 * @license lucide-react v0.462.0 - ISC
109 *
110 * This source code is licensed under the ISC license.
111 * See the LICENSE file in the root directory of this source tree.
112 */const u_=Ae("Linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/**
113 * @license lucide-react v0.462.0 - ISC
114 *
115 * This source code is licensed under the ISC license.
116 * See the LICENSE file in the root directory of this source tree.
117 */const cg=Ae("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
118 * @license lucide-react v0.462.0 - ISC
119 *
120 * This source code is licensed under the ISC license.
121 * See the LICENSE file in the root directory of this source tree.
122 */const Cf=Ae("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
123 * @license lucide-react v0.462.0 - ISC
124 *
125 * This source code is licensed under the ISC license.
126 * See the LICENSE file in the root directory of this source tree.
127 */const c_=Ae("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
128 * @license lucide-react v0.462.0 - ISC
129 *
130 * This source code is licensed under the ISC license.
131 * See the LICENSE file in the root directory of this source tree.
132 */const d_=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"}]]);/**
133 * @license lucide-react v0.462.0 - ISC
134 *
135 * This source code is licensed under the ISC license.
136 * See the LICENSE file in the root directory of this source tree.
137 */const p_=Ae("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
138 * @license lucide-react v0.462.0 - ISC
139 *
140 * This source code is licensed under the ISC license.
141 * See the LICENSE file in the root directory of this source tree.
142 */const m_=Ae("MicOff",[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M18.89 13.23A7.12 7.12 0 0 0 19 12v-2",key:"80xlxr"}],["path",{d:"M5 10v2a7 7 0 0 0 12 5",key:"p2k8kg"}],["path",{d:"M15 9.34V5a3 3 0 0 0-5.68-1.33",key:"1gzdoj"}],["path",{d:"M9 9v3a3 3 0 0 0 5.12 2.12",key:"r2i35w"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/**
143 * @license lucide-react v0.462.0 - ISC
144 *
145 * This source code is licensed under the ISC license.
146 * See the LICENSE file in the root directory of this source tree.
147 */const rd=Ae("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/**
148 * @license lucide-react v0.462.0 - ISC
149 *
150 * This source code is licensed under the ISC license.
151 * See the LICENSE file in the root directory of this source tree.
152 */const f_=Ae("MoveHorizontal",[["path",{d:"m18 8 4 4-4 4",key:"1ak13k"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}]]);/**
153 * @license lucide-react v0.462.0 - ISC
154 *
155 * This source code is licensed under the ISC license.
156 * See the LICENSE file in the root directory of this source tree.
157 */const h_=Ae("PackageCheck",[["path",{d:"m16 16 2 2 4-4",key:"gfu2re"}],["path",{d:"M21 10V8a2 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.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);/**
158 * @license lucide-react v0.462.0 - ISC
159 *
160 * This source code is licensed under the ISC license.
161 * See the LICENSE file in the root directory of this source tree.
162 */const g_=Ae("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/**
163 * @license lucide-react v0.462.0 - ISC
164 *
165 * This source code is licensed under the ISC license.
166 * See the LICENSE file in the root directory of this source tree.
167 */const U1=Ae("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/**
168 * @license lucide-react v0.462.0 - ISC
169 *
170 * This source code is licensed under the ISC license.
171 * See the LICENSE file in the root directory of this source tree.
172 */const v_=Ae("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
173 * @license lucide-react v0.462.0 - ISC
174 *
175 * This source code is licensed under the ISC license.
176 * See the LICENSE file in the root directory of this source tree.
177 */const fp=Ae("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
178 * @license lucide-react v0.462.0 - ISC
179 *
180 * This source code is licensed under the ISC license.
181 * See the LICENSE file in the root directory of this source tree.
182 */const y_=Ae("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/**
183 * @license lucide-react v0.462.0 - ISC
184 *
185 * This source code is licensed under the ISC license.
186 * See the LICENSE file in the root directory of this source tree.
187 */const b_=Ae("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/**
188 * @license lucide-react v0.462.0 - ISC
189 *
190 * This source code is licensed under the ISC license.
191 * See the LICENSE file in the root directory of this source tree.
192 */const x_=Ae("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/**
193 * @license lucide-react v0.462.0 - ISC
194 *
195 * This source code is licensed under the ISC license.
196 * See the LICENSE file in the root directory of this source tree.
197 */const w_=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",ke
197y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
198 * @license lucide-react v0.462.0 - ISC
199 *
200 * This source code is licensed under the ISC license.
201 * See the LICENSE file in the root directory of this source tree.
202 */const q_=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"}]]);/**
203 * @license lucide-react v0.462.0 - ISC
204 *
205 * This source code is licensed under the ISC license.
206 * See the LICENSE file in the root directory of this source tree.
207 */const S_=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"}]]);/**
208 * @license lucide-react v0.462.0 - ISC
209 *
210 * This source code is licensed under the ISC license.
211 * See the LICENSE file in the root directory of this source tree.
212 */const A_=Ae("Store",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]]);/**
213 * @license lucide-react v0.462.0 - ISC
214 *
215 * This source code is licensed under the ISC license.
216 * See the LICENSE file in the root directory of this source tree.
217 */const z1=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"}]]);/**
218 * @license lucide-react v0.462.0 - ISC
219 *
220 * This source code is licensed under the ISC license.
221 * See the LICENSE file in the root directory of this source tree.
222 */const E_=Ae("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/**
223 * @license lucide-react v0.462.0 - ISC
224 *
225 * This source code is licensed under the ISC license.
226 * See the LICENSE file in the root directory of this source tree.
227 */const __=Ae("UserCheck",[["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"}],["polyline",{points:"16 11 18 13 22 9",key:"1pwet4"}]]);/**
228 * @license lucide-react v0.462.0 - ISC
229 *
230 * This source code is licensed under the ISC license.
231 * See the LICENSE file in the root directory of this source tree.
232 */const k_=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"}]]);/**
233 * @license lucide-react v0.462.0 - ISC
234 *
235 * This source code is licensed under the ISC license.
236 * See the LICENSE file in the root directory of this source tree.
237 */const C_=Ae("Volume2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]);/**
238 * @license lucide-react v0.462.0 - ISC
239 *
240 * This source code is licensed under the ISC license.
241 * See the LICENSE file in the root directory of this source tree.
242 */const j_=Ae("VolumeX",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]]);/**
243 * @license lucide-react v0.462.0 - ISC
244 *
245 * This source code is licensed under the ISC license.
246 * See the LICENSE file in the root directory of this source tree.
247 */const P_=Ae("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/**
248 * @license lucide-react v0.462.0 - ISC
249 *
250 * This source code is licensed under the ISC license.
251 * See the LICENSE file in the root directory of this source tree.
252 */const Ho=Ae("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
vendor: 4,999 bytes, line 252
252],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),jf="-",T_=e=>{const t=O_(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:a=>{const o=a.split(jf);return o[0]===""&&o.length!==1&&o.shift(),B1(o,t)||I_(a)},getConflictingClassGroupIds:(a,o)=>{const l=n[a]||[];return o&&r[a]?[...l,...r[a]]:l}}},B1=(e,t)=>{var a;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),i=r?B1(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;const s=e.join(jf);return(a=t.validators.find(({validator:o})=>o(s)))==null?void 0:a.classGroupId},dg=/^\[(.+)\]$/,I_=e=>{if(dg.test(e)){const t=dg.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},O_=e=>{const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return M_(Object.entries(e.classGroups),n).forEach(([s,a])=>{hp(a,r,s,t)}),r},hp=(e,t,n,r)=>{e.forEach(i=>{if(typeof i=="string"){const s=i===""?t:pg(t,i);s.classGroupId=n;return}if(typeof i=="function"){if(L_(i)){hp(i(r),t,n,r);return}t.validators.push({validator:i,classGroupId:n});return}Object.entries(i).forEach(([s,a])=>{hp(a,pg(t,s),n,r)})})},pg=(e,t)=>{let n=e;return t.split(jf).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},L_=e=>e.isThemeGetter,M_=(e,t)=>t?e.map(([n,r])=>{const i=r.map(s=>typeof s=="string"?t+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([a,o])=>[t+a,o])):s);return[n,i]}):e,N_=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const i=(s,a)=>{n.set(s,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(s){let a=n.get(s);if(a!==void 0)return a;if((a=r.get(s))!==void 0)return i(s,a),a},set(s,a){n.has(s)?n.set(s,a):i(s,a)}}},W1="!",R_=e=>{const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],s=t.length,a=o=>{const l=[];let u=0,c=0,p;for(let v=0;v<o.length;v++){let b=o[v];if(u===0){if(b===i&&(r||o.slice(v,v+s)===t)){l.push(o.slice(c,v)),c=v+s;continue}if(b==="/"){p=v;continue}}b==="["?u++:b==="]"&&u--}const f=l.length===0?o:o.substring(c),m=f.startsWith(W1),g=m?f.substring(1):f,h=p&&p>c?p-c:void 0;return{modifiers:l,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:h}};return n?o=>n({className:o,parseClassName:a}):a},$_=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t},D_=e=>({cache:N_(e.cacheSize),parseClassName:R_(e),...T_(e)}),F_=/\s+/,U_=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,s=[],a=e.trim().split(F_);let o="";for(let l=a.length-1;l>=0;l-=1){const u=a[l],{modifiers:c,hasImportantModifier:p,baseClassName:f,maybePostfixModifierPosition:m}=n(u);let g=!!m,h=r(g?f.substring(0,m):f);if(!h){if(!g){o=u+(o.length>0?" "+o:o);continue}if(h=r(f),!h){o=u+(o.length>0?" "+o:o);continue}g=!1}const v=$_(c).join(":"),b=p?v+W1:v,w=b+h;if(s.includes(w))continue;s.push(w);const y=i(h,g);for(let A=0;A<y.length;++A){const q=y[A];s.push(b+q)}o=u+(o.length>0?" "+o:o)}return o};function z_(){let e=0,t,n,r="";for(;e<arguments.length;)(t=arguments[e++])&&(n=H1(t))&&(r&&(r+=" "),r+=n);return r}const H1=e=>{if(typeof e=="string")return e;let t,n="";for(let r=0;r<e.length;r++)e[r]&&(t=H1(e[r]))&&(n&&(n+=" "),n+=t);return n};function B_(e,...t){let n,r,i,s=a;function a(l){const u=t.reduce((c,p)=>p(c),e());return n=D_(u),r=n.cache.get,i=n.cache.set,s=o,o(l)}function o(l){const u=r(l);if(u)return u;const c=U_(l,n);return i(l,c),c}return function(){return s(z_.apply(null,arguments))}}const at=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},V1=/^\[(?:([a-z-]+):)?(.+)\]$/i,W_=/^\d+\/\d+$/,H_=new Set(["px","full","screen"]),V_=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,G_=/\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$/,K_=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,X_=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Q_=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,mr=e=>ds(e)||H_.has(e)||W_.test(e),Or=e=>Js(e,"length",ik),ds=e=>!!e&&!Number.isNaN(Number(e)),id=e=>Js(e,"number",ds),ha=e=>!!e&&Number.isInteger(Number(e)),J_=e=>e.endsWith("%")&&ds(e.slice(0,-1)),Ce=e=>V1.test(e),Lr=e=>V_.test(e),Y_=new Set(["length","size","percentage"]),Z_=e=>Js(e,Y_,G1),ek=e=>Js(e,"position",G1),tk=new Set(["image","url"]),nk=e=>Js(e,tk,ak),rk=e=>Js(e,"",sk),ga=()=>!0,Js=(e,t,n)=>{const r=V1.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1},ik=e=>G_.test(e)&&!K_.test(e),G1=()=>!1,sk=e=>X_.test(e),ak=e=>Q_.test(e),ok=()=>{const e=at("colors"),t=at("spacing"),n=at("blur"),r=at("brightness"),i=at("borderColor"),s=at("borderRadius"),a=at("borderSpacing"),o=at("borderWidth"),l=at("contrast"),u=at("grayscale"),c=at("hueRotate"),p=at("invert"),f=at("gap"),m=at("gradientColorStops"),g=at("gradientColorStopPositions"),h=at("inset"),v=at("margin"),b=at("op
252acity"),w=at("padding"),y=at("saturate"),A=at("scale"),q=at("sepia"),x=at("skew"),_=at("space"),I=at("translate"),S=()=>["auto","contain","none"],k=()=>["auto","hidden","clip","visible","scroll"],C=()=>["auto",Ce,t],T=()=>[Ce,t],M=()=>["",mr,Or],L=()=>["auto",ds,Ce],N=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],R=()=>["solid","dashed","dotted","double","none"],$=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],B=()=>["start","end","center","between","around","evenly","stretch"],D=()=>["","0",Ce],j=()=>["auto","avoid","all","avoid-page","page","left","right","column"],J=()=>[ds,Ce];return{cacheSize:500,separator:":",theme:{colors:[ga],spacing:[mr,Or],blur:["none","",Lr,Ce],brightness:J(),borderColor:[e],borderRadius:["none","","full",Lr,Ce],borderSpacing:T(),borderWidth:M(),contrast:J(),grayscale:D(),hueRotate:J(),invert:D(),gap:T(),gradientColorStops:[e],gradientColorStopPositions:[J_,Or],inset:C(),margin:C(),opacity:J(),padding:T(),saturate:J(),scale:J(),sepia:D(),skew:J(),space:T(),translate:T()},classGroups:{aspect:[{aspect:["auto","square","video",Ce]}],container:["container"],columns:[{columns:[Lr]}],"break-after":[{"break-after":j()}],"break-before":[{"break-before":j()}],"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:[...N(),Ce]}],overflow:[{overflow:k()}],"overflow-x":[{"overflow-x":k()}],"overflow-y":[{"overflow-y":k()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ha,Ce]}],basis:[{basis:C()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ce]}],grow:[{grow:D()}],shrink:[{shrink:D()}],order:[{order:["first","last","none",ha,Ce]}],"grid-cols":[{"grid-cols":[ga]}],"col-start-end":[{col:["auto",{span:["full",ha,Ce]},Ce]}],"col-start":[{"col-start":L()}],"col-end":[{"col-end":L()}],"grid-rows":[{"grid-rows":[ga]}],"row-start-end":[{row:["auto",{span:[ha,Ce]},Ce]}],"row-start":[{"row-start":L()}],"row-end":[{"row-end":L()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ce]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ce]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...B()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...B(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...B(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[v]}],mx:[{mx:[v]}],my:[{my:[v]}],ms:[{ms:[v]}],me:[{me:[v]}],mt:[{mt:[v]}],mr:[{mr:[v]}],mb:[{mb:[v]}],ml:[{ml:[v]}],"space-x":[{"space-x":[_]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[_]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",Ce,t]}],"min-w":[{"min-w":[Ce,t,"min","max","fit"]}],"max-w":[{"max-w":[Ce,t,"none","full","min","max","fit","prose",{screen:[Lr]},Lr]}],h:[{h:[Ce,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[Ce,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[Ce,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[Ce,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Lr,Or]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",id]}],"font-family":[{font:[ga]}],"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",Ce]}],"line-clamp":[{"line-clamp":["none",ds,id]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",mr,Ce]}],"list-image":[{"list-image":["none",Ce]}],"list-style-type":[{list:["none","disc","decimal",Ce]}],"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:[...R(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",mr,Or]}],"underline-offset":[{"underline-offset":["auto",mr,Ce]}],"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:T()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ce]}],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",Ce]}],"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:[...N(),ek]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Z_]}
vendor: 5,319 bytes, line 252
252],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},nk]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"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:[...R(),"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:R()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:["",...R()]}],"outline-offset":[{"outline-offset":[mr,Ce]}],"outline-w":[{outline:[mr,Or]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:M()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[b]}],"ring-offset-w":[{"ring-offset":[mr,Or]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Lr,rk]}],"shadow-color":[{shadow:[ga]}],opacity:[{opacity:[b]}],"mix-blend":[{"mix-blend":[...$(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":$()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",Lr,Ce]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[c]}],invert:[{invert:[p]}],saturate:[{saturate:[y]}],sepia:[{sepia:[q]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[c]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[b]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[q]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[a]}],"border-spacing-x":[{"border-spacing-x":[a]}],"border-spacing-y":[{"border-spacing-y":[a]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ce]}],duration:[{duration:J()}],ease:[{ease:["linear","in","out","in-out",Ce]}],delay:[{delay:J()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ce]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[A]}],"scale-x":[{"scale-x":[A]}],"scale-y":[{"scale-y":[A]}],rotate:[{rotate:[ha,Ce]}],"translate-x":[{"translate-x":[I]}],"translate-y":[{"translate-y":[I]}],"skew-x":[{"skew-x":[x]}],"skew-y":[{"skew-y":[x]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ce]}],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",Ce]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":T()}],"scroll-mx":[{"scroll-mx":T()}],"scroll-my":[{"scroll-my":T()}],"scroll-ms":[{"scroll-ms":T()}],"scroll-me":[{"scroll-me":T()}],"scroll-mt":[{"scroll-mt":T()}],"scroll-mr":[{"scroll-mr":T()}],"scroll-mb":[{"scroll-mb":T()}],"scroll-ml":[{"scroll-ml":T()}],"scroll-p":[{"scroll-p":T()}],"scroll-px":[{"scroll-px":T()}],"scroll-py":[{"scroll-py":T()}],"scroll-ps":[{"scroll-ps":T()}],"scroll-pe":[{"scroll-pe":T()}],"scroll-pt":[{"scroll-pt":T()}],"scroll-pr":[{"scroll-pr":T()}],"scroll-pb":[{"scroll-pb":T()}],"scroll-pl":[{"scroll-pl":T()}],"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"]}
252],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",Ce]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[mr,Or,id]}],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"]}}},lk=B_(ok);function bt(...e){return lk(Le(e))}const uk=QE,K1=E.forwardRef(({className:e,...t},n)=>d.jsx(C1,{ref:n,className:bt("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}));K1.displayName=C1.displayName;const ck=M1("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"}}),X1=E.forwardRef(({className:e,variant:t,...n},r)=>d.jsx(j1,{ref:r,className:bt(ck({variant:t}),e),...n}));X1.displayName=j1.displayName;const dk=E.forwardRef(({className:e,...t},n)=>d.jsx(I1,{ref:n,className:bt("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}));dk.displayName=I1.displayName;const Q1=E.forwardRef(({className:e,...t},n)=>d.jsx(O1,{ref:n,className:bt("absolute right-2 top-2 rounded-md p-1 text-foreground
252/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:d.jsx(Ho,{className:"h-4 w-4"})}));Q1.displayName=O1.displayName;const J1=E.forwardRef(({className:e,...t},n)=>d.jsx(P1,{ref:n,className:bt("text-sm font-semibold",e),...t}));J1.displayName=P1.displayName;const Y1=E.forwardRef(({className:e,...t},n)=>d.jsx(T1,{ref:n,className:bt("text-sm opacity-90",e),...t}));Y1.displayName=T1.displayName;function pk(){const{toasts:e}=IE();return d.jsxs(uk,{children:[e.map(function({id:t,title:n,description:r,action:i,...s}){return d.jsxs(X1,{...s,children:[d.jsxs("div",{className:"grid gap-1",children:[n&&d.jsx(J1,{children:n}),r&&d.jsx(Y1,{children:r})]}),i,d.jsx(Q1,{})]},t)}),d.jsx(K1,{})]})}var mg=["light","dark"],mk="(prefers-color-scheme: dark)",fk=E.createContext(void 0),hk={setTheme:e=>{},themes:[]},gk=()=>{var e;return(e=E.useContext(fk))!=null?e:hk};E.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:s,value:a,attrs:o,nonce:l})=>{let u=s==="system",c=n==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${o.map(g=>`'${g}'`).join(",")})`};`:`var d=document.documentElement,n='${n}',s='setAttribute';`,p=i?mg.includes(s)&&s?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",f=(g,h=!1,v=!0)=>{let b=a?a[g]:g,w=h?g+"|| ''":`'${b}'`,y="";return i&&v&&!h&&mg.includes(g)&&(y+=`d.style.colorScheme = '${g}';`),n==="class"?h||b?y+=`c.add(${w})`:y+="null":b&&(y+=`d[s](n,${w})`),y},m=e?`!function(){${c}${f(e)}}()`:r?`!function(){try{${c}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${u})){var t='${mk}',m=window.matchMedia(t);if(m.media!==t||m.matches){${f("dark")}}else{${f("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${f(a?"x[e]":"e",!0)}}${u?"":"else{"+f(s,!1,!1)+"}"}${p}}catch(e){}}()`:`!function(){try{${c}var e=localStorage.getItem('${t}');if(e){${a?`var x=${JSON.stringify(a)};`:""}${f(a?"x[e]":"e",!0)}}else{${f(s,!1,!1)};}${p}}catch(t){}}();`;return E.createElement("script",{nonce:l,dangerouslySetInnerHTML:{__html:m}})});var vk=e=>{switch(e){case"success":return xk;case"info":return qk;case"warning":return wk;case"error":return Sk;default:return null}},yk=Array(12).fill(0),bk=({visible:e,className:t})=>O.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},O.createElement("div",{className:"sonner-spinner"},yk.map((n,r)=>O.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),xk=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"})),wk=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"})),qk=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"})),Sk=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"})),Ak=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"})),Ek=()=>{let[e,t]=O.useState(document.hidden);return O.useEffect(()=>{let n=()=>{t(document.hidden)};
252return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e},gp=1,_k=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,...r}=e,i=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:gp++,s=this.toasts.find(o=>o.id===i),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(i)&&this.dismissedToasts.delete(i),s?this.toasts=this.toasts.map(o=>o.id===i?(this.publish({...o,...e,id:i,title:n}),{...o,...e,id:i,dismissible:a,title:n}):o):this.addToast({title:n,...r,dismissible:a,id:i}),i},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)=>
252this.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 r=e instanceof Promise?e:e(),i=n!==void 0,s,a=r.then(async l=>{if(s=["resolve",l],O.isValidElement(l))i=!1,this.create({id:n,type:"default",message:l});else if(Ck(l)&&!l.ok){i=!1;let u=typeof t.error=="function"?await t.error(`HTTP error! status: ${l.status}`):t.error,c=typeof t.description=="function"?await t.description(`HTTP error! status: ${l.status}`):t.description;this.create({id:n,type:"error",message:u,description:c})}else if(t.success!==void 0){i=!1;let u=typeof t.success=="function"?await t.success(l):t.success,c=typeof t.description=="function"?await t.description(l):t.description;this.create({id:n,type:"success",message:u,description:c})}}).catch(async l=>{if(s=["reject",l],t.error!==void 0){i=!1;let u=typeof t.error=="function"?await t.error(l):t.error,c=typeof t.description=="function"?await t.description(l):t.description;this.create({id:n,type:"error",message:u,description:c})}}).finally(()=>{var l;i&&(this.dismiss(n),n=void 0),(l=t.finally)==null||l.call(t)}),o=()=>new Promise((l,u)=>a.then(()=>s[0]==="reject"?u(s[1]):l(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)||gp++;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}},an=new _k,kk=(e,t)=>{let n=(t==null?void 0:t.id)||gp++;return an.addToast({title:e,...t,id:n}),n},Ck=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",jk=kk,Pk=()=>an.toasts,Tk=()=>an.getActiveToasts(),Wi=Object.assign(jk,{success:an.success,info:an.info,warning:an.warning,error:an.error,custom:an.custom,message:an.message,promise:an.promise,dismiss:an.dismiss,loading:an.loading},{getHistory:Pk,getToasts:Tk});function Ik(e,{insertAt:t}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}Ik(`: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;
252left: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}
252: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%);
252--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%)}
253`);function sl(e){return e.label!==void 0}var Ok=3,Lk="32px",Mk="16px",fg=4e3,Nk=356,Rk=14,$k=20,Dk=200;function Ln(...e){return e.filter(Boolean).join(" ")}function Fk(e){let[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}var Uk=e=>{var t,n,r,i,s,a,o,l,u,c,p;let{invert:f,toast:m,unstyled:g,interacting:h,setHeights:v,visibleToasts:b,heights:w,index:y,toasts:A,expanded:q,removeToast:x,defaultRichColors:_,closeButton:I,style:S,cancelButtonStyle:k,actionButtonStyle:C,className:T="",descriptionClassName:M="",duration:L,position:N,gap:R,loadingIcon:$,expandByDefault:B,classNames:D,icons:j,closeButtonAriaLabel:J="Close toast",pauseWhenPageIsHidden:z}=e,[P,G]=O.useState(null),[ae,se]=O.useState(null),[ie,_e]=O.useState(!1),[H,Y]=O.useState(!1),[te,F]=O.useState(!1),[he,ce]=O.useState(!1),[me,fe]=O.useState(!1),[de,Me]=O.useState(0),[ge,Ie]=O.useState(0),Be=O.useRef(m.duration||L||fg),ft=O.useRef(null),Fe=O.useRef(null),Jt=y===0,st=y+1<=b,W=m.type,X=m.dismissible!==!1,le=m.className||"",ve=m.descriptionClassName||"",Pe=O.useMemo(()=>w.findIndex(Ee=>Ee.toastId===m.id)||0,[w,m.id]),Ze=O.useMemo(()=>{var Ee;return(Ee=m.closeButton)!=null?Ee:I},[m.closeButton,I]),qt=O.useMemo(()=>m.duration||L||fg,[m.duration,L]),Qe=O.useRef(0),xt=O.useRef(0),Bt=O.useRef(0),ut=O.useRef(null),[Wt,Ht]=N.split("-"),nl=O.useMemo(()=>w.reduce((Ee,We,et)=>et>=Pe?Ee:Ee+We.height,0),[w,Pe]),pa=Ek(),ma=m.invert||f,fa=W==="loading";xt.current=O.useMemo(()=>Pe*R+nl,[Pe,nl]),O.useEffect(()=>{Be.current=qt},[qt]),O.useEffect(()=>{_e(!0)},[]),O.useEffect(()=>{let Ee=Fe.current;if(Ee){let We=Ee.getBoundingClientRect().height;return Ie(We),v(et=>[{toastId:m.id,height:We,position:m.position},...et]),()=>v(et=>et.filter(dn=>dn.toastId!==m.id))}},[v,m.id]),O.useLayoutEffect(()=>{if(!ie)return;let Ee=Fe.current,We=Ee.style.height;Ee.style.height="auto";let et=Ee.getBoundingClientRect().height;Ee.style.height=We,Ie(et),v(dn=>dn.find(Mt=>Mt.toastId===m.id)?dn.map(Mt=>Mt.toastId===m.id?{...Mt,height:et}:Mt):[{toastId:m.id,height:et,position:m.position},...dn])},[ie,m.title,m.description,v,m.id]);let On=O.useCallback(()=>{Y(!0),Me(xt.current),v(Ee=>Ee.filter(We=>We.toastId!==m.id)),setTimeout(()=>{x(m)},Dk)},[m,x,v,xt]);O.useEffect(()=>{if(m.promise&&W==="loading"||m.duration===1/0||m.type==="loading")return;let Ee;return q||h||z&&pa?(()=>{if(Bt.current<Qe.current){let We=new Date().getTime()-Qe.current;Be.current=Be.current-We}
253Bt.current=new Date().getTime()})():Be.current!==1/0&&(Qe.current=new Date().getTime(),Ee=setTimeout(()=>{var We;(We=m.onAutoClose)==null||We.call(m,m),On()},Be.current)),()=>clearTimeout(Ee)},[q,h,m,W,z,pa,On]),O.useEffect(()=>{m.delete&&On()},[On,m.delete]);function ii(){var Ee,We,et;return j!=null&&j.loading?O.createElement("div",{className:Ln(D==null?void 0:D.loader,(Ee=m==null?void 0:m.classNames)==null?void 0:Ee.loader,"sonner-loader"),"data-visible":W==="loading"},j.loading):$?O.createElement("div",{className:Ln(D==null?void 0:D.loader,(We=m==null?void 0:m.classNames)==null?void 0:We.loader,"sonner-loader"),"data-visible":W==="loading"},$):O.createElement(bk,{className:Ln(D==null?void 0:D.loader,(et=m==null?void 0:m.classNames)==null?void 0:et.loader),visible:W==="loading"})}return O.createElement("li",{tabIndex:0,ref:Fe,className:Ln(T,le,D==null?void 0:D.toast,(t=m==null?void 0:m.classNames)==null?void 0:t.toast,D==null?void 0:D.default,D==null?void 0:D[W],(n=m==null?void 0:m.classNames)==null?void 0:n[W]),"data-sonner-toast":"","data-rich-colors":(r=m.richColors)!=null?r:_,"data-styled":!(m.jsx||m.unstyled||g),"data-mounted":ie,"data-promise":!!m.promise,"data-swiped":me,"data-removed":H,"data-visible":st,"data-y-position":Wt,"data-x-position":Ht,"data-index":y,"data-front":Jt,"data-swiping":te,"data-dismissible":X,"data-type":W,"data-invert":ma,"data-swipe-out":he,"data-swipe-direction":ae,"data-expanded":!!(q||B&&ie),style:{"--index":y,"--toasts-before":y,"--z-index":A.length-y,"--offset":`${H?de:xt.current}px`,"--initial-height":B?"auto":`${ge}px`,...S,...m.style},onDragEnd:()=>{F(!1),G(null),ut.current=null},onPointerDown:Ee=>{fa||!X||(ft.current=new Date,Me(xt.current),Ee.target.setPointerCapture(Ee.pointerId),Ee.target.tagName!=="BUTTON"&&(F(!0),ut.current={x:Ee.clientX,y:Ee.clientY}))},onPointerUp:()=>{var Ee,We,et,dn;if(he||!X)return;ut.current=null;let Mt=Number(((Ee=Fe.current)==null?void 0:Ee.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),ct=Number(((We=Fe.current)==null?void 0:We.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Kn=new Date().getTime()-((et=ft.current)==null?void 0:et.getTime()),U=P==="x"?Mt:ct,ne=Math.abs(U)/Kn;if(Math.abs(U)>=$k||ne>.11){Me(xt.current),(dn=m.onDismiss)==null||dn.call(m,m),se(P==="x"?Mt>0?"right":"left":ct>0?"down":"up"),On(),ce(!0),fe(!1);return}F(!1),G(null)},onPointerMove:Ee=>{var We,et,dn,Mt;if(!ut.current||!X||((We=window.getSelection())==null?void 0:We.toString().length)>0)return;let ct=Ee.clientY-ut.current.y,Kn=Ee.clientX-ut.current.x,U=(et=e.swipeDirections)!=null?et:Fk(N);!P&&(Math.abs(Kn)>1||Math.abs(ct)>1)&&G(Math.abs(Kn)>Math.abs(ct)?"x":"y");let ne={x:0,y:0};P==="y"?(U.includes("top")||U.includes("bottom"))&&(U.includes("top")&&ct<0||U.includes("bottom")&&ct>0)&&(ne.y=ct):P==="x"&&(U.includes("left")||U.includes("right"))&&(U.includes("left")&&Kn<0||U.includes("right")&&Kn>0)&&(ne.x=Kn),(Math.abs(ne.x)>0||Math.abs(ne.y)>0)&&fe(!0),(dn=Fe.current)==null||dn.style.setProperty("--swipe-amount-x",`${ne.x}px`),(Mt=Fe.current)==null||Mt.style.setProperty("--swipe-amount-y",`${ne.y}px`)}},Ze&&!m.jsx?O.createElement("button",{"aria-label":J,"data-disabled":fa,"data-close-button":!0,onClick:fa||!X?()=>{}:()=>{var Ee;On(),(Ee=m.onDismiss)==null||Ee.call(m,m)},className:Ln(D==null?void 0:D.closeButton,(i=m==null?void 0:m.classNames)==null?void 0:i.closeButton)},(s=j==null?void 0:j.close)!=null?s:Ak):null,m.jsx||E.isValidElement(m.title)?m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title:O.createElement(O.Fragment,null,W||m.icon||m.promise?O.createElement("div",{"data-icon":"",className:Ln(D==null?void 0:D.icon,(a=m==null?void 0:m.classNames)==null?void 0:a.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||ii():null,m.type!=="loading"?m.
253icon||(j==null?void 0:j[W])||vk(W):null):null,O.createElement("div",{"data-content":"",className:Ln(D==null?void 0:D.content,(o=m==null?void 0:m.classNames)==null?void 0:o.content)},O.createElement("div",{"data-title":"",className:Ln(D==null?void 0:D.title,(l=m==null?void 0:m.classNames)==null?void 0:l.title)},typeof m.title=="function"?m.title():m.title),m.description?O.createElement("div",{"data-description":"",className:Ln(M,ve,D==null?void 0:D.description,(u=m==null?void 0:m.classNames)==null?void 0:u.description)},typeof m.description=="function"?m.description():m.description):null),E.isValidElement(m.cancel)?m.cancel:m.cancel&&sl(m.cancel)?O.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||k,onClick:Ee=>{var We,et;sl(m.cancel)&&X&&((et=(We=m.cancel).onClick)==null||et.call(We,Ee),On())},className:Ln(D==null?void 0:D.cancelButton,(c=m==null?void 0:m.classNames)==null?void 0:c.cancelButton)},m.cancel.label):null,E.isValidElement(m.action)?m.action:m.action&&sl(m.action)?O.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||C,onClick:Ee=>{var We,et;sl(m.action)&&((et=(We=m.action).onClick)==null||et.call(We,Ee),!Ee.defaultPrevented&&On())},className:Ln(D==null?void 0:D.actionButton,(p=m==null?void 0:m.classNames)==null?void 0:p.actionButton)},m.action.label):null))};function hg(){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 zk(e,t){let n={};return[e,t].forEach((r,i)=>{let s=i===1,a=s?"--mobile-offset":"--offset",o=s?Mk:Lk;function l(u){["top","right","bottom","left"].forEach(c=>{n[`${a}-${c}`]=typeof u=="number"?`${u}px`:u})}typeof r=="number"||typeof r=="string"?l(r):typeof r=="object"?["top","right","bottom","left"].forEach(u=>{r[u]===void 0?n[`${a}-${u}`]=o:n[`${a}-${u}`]=typeof r[u]=="number"?`${r[u]}px`:r[u]}):l(o)}),n}var Bk=E.forwardRef(function(e,t){let{invert:n,position:r="bottom-right",hotkey:i=["altKey","KeyT"],expand:s,closeButton:a,className:o,offset:l,mobileOffset:u,theme:c="light",richColors:p,duration:f,style:m,visibleToasts:g=Ok,toastOptions:h,dir:v=hg(),gap:b=Rk,loadingIcon:w,icons:y,containerAriaLabel:A="Notifications",pauseWhenPageIsHidden:q}=e,[x,_]=O.useState([]),I=O.useMemo(()=>Array.from(new Set([r].concat(x.filter(z=>z.position).map(z=>z.position)))),[x,r]),[S,k]=O.useState([]),[C,T]=O.useState(!1),[M,L]=O.useState(!1),[N,R]=O.useState(c!=="system"?c:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=O.useRef(null),B=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),D=O.useRef(null),j=O.useRef(!1),J=O.useCallback(z=>{_(P=>{var G;return(G=P.find(ae=>ae.id===z.id))!=null&&G.delete||an.dismiss(z.id),P.filter(({id:ae})=>ae!==z.id)})},[]);return O.useEffect(()=>an.subscribe(z=>{if(z.dismiss){_(P=>P.map(G=>G.id===z.id?{...G,delete:!0}:G));return}setTimeout(()=>{aE.flushSync(()=>{_(P=>{let G=P.findIndex(ae=>ae.id===z.id);return G!==-1?[...P.slice(0,G),{...P[G],...z},...P.slice(G+1)]:[z,...P]})})})}),[]),O.useEffect(()=>{if(c!=="system"){R(c);return}if(c==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?R("dark"):R("light")),typeof window>"u")return;let z=window.matchMedia("(prefers-color-scheme: dark)");try{z.addEventListener("change",({matches:P})=>{R(P?"dark":"light")})}catch{z.addListener(({matches:G})=>{try{R(G?"dark":"light")}catch(ae){console.error(ae)}})}},[c]),O.useEffect(()=>{x.length<=1&&T(!1)},[x]),O.useEffect(()=>{let z=P=>{var G,ae;i.every(se=>P[se]||P.code===se)&&(T(!0),(G=$.current)==null||G.focus()),P.code==="Escape"&&(document.activeElement===$.current||(ae=$.current)!=null&&ae.contains(document.activeElement))&&T(!1)};return document.addEventListener("keydown",z),()=>document.removeEventListener("keydown",z)},[i]),O.useEffect(()=>{if($.current)return()=>{D.current&&(D.current.focus({preventScroll:!0}),D.current=null,j.current=!1)}},[$.current]),O.createElement("section",{ref:t,"aria-label":`${A} ${B}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},I.map((z,P)=>{var G;let[ae,se]=z.split("-");return x.length?O.createElement("ol",{key:z,dir:v==="auto"?hg():v,tabIndex:-1,ref:$,className:o,"data-sonner-toaster":!0,"data-theme":N,"data-y-position":ae,"data-lifted":C&&x.length>1&&!s,"data-x-position":se,style:{"--front-toast-height":`${((G=S[0])==null?void 0:G.height)||0}px`,"--width":`${Nk}px`,"--gap":`${b}px`,...m,...zk(l,u)},onBlur:ie=>{j.current&&!ie.currentTarget.contains(ie.relatedTarget)&&(j.current=!1,D.current&&(D.current.focus({preventScroll:!0}),D.current=null))},onFocus:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||j.current||(j.current=!0,D.current=ie.relatedTarget)},onMouseEnter:()=>T(!0),onMouseMove:()=>T(!0),onMouseLeave:()=>{M||T(!1)},onDragEnd:()=>T(!1),onPointerDown:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||L(!0)},onPointerUp:()=>L(!1)},x.filter(ie=>!ie.position&&P===0||ie.position===z).map((ie,_e)=>{var H,Y;return O.createElement(Uk,{key:ie.id,icons:y,index:_e,toast:ie,defaultRichColors:p,duration:(H=h==null?void 0:h.duration)!=null?H:f,className:h==null?void 0:h.className,descriptionClassName:h==null?void 0:h.descriptionClassName,invert:n,visibleToasts:g,closeButton:(Y=h==null?void 0:h.closeButton)!=null?Y:a,interacting:M,position:z,style:h==null?void 0:h.style,unstyled:h==null?void 0:h.unstyled,classNames:h==null?void 0:h.classNames,cancelButtonStyle:h==null?void 0:h.cancelButtonStyle,actionButtonStyle:h==null?void 0:h.actionButtonStyle,removeToast:J,toasts:x.filter(te=>te.position==ie.position),heights:S.filter(te=>te.position==ie.position),setHeights:k,expandByDefault:s,gap:b,loadingIcon:w,exp
253anded:C,pauseWhenPageIsHidden:q,swipeDirections:e.swipeDirections})})):null}))});const Wk=({...e})=>{const{theme:t="system"}=gk();return d.jsx(Bk,{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})},Hk=yE,Vk=E.forwardRef(({className:e,sideOffset:t=4,...n},r)=>d.jsx(u1,{ref:r,sideOffset:t,className:bt("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}));Vk.displayName=u1.displayName;var Ju=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(){}},Yu=typeof window>"u"||"Deno"in globalThis;function Rn(){}function Gk(e,t){return typeof e=="function"?e(t):e}function Kk(e){return typeof e=="number"&&e>=0&&e!==1/0}function Xk(e,t){return Math.max(e+(t||0)-Date.now(),0)}function vp(e,t){return typeof e=="function"?e(t):e}function Qk(e,t){return typeof e=="function"?e(t):e}function gg(e,t){const{type:n="all",exact:r,fetchStatus:i,predicate:s,queryKey:a,stale:o}=e;if(a){if(r){if(t.queryHash!==Pf(a,t.options))return!1}else if(!Ja(t.queryKey,a))return!1}if(n!=="all"){const l=t.isActive();if(n==="active"&&!l||n==="inactive"&&l)return!1}return!(typeof o=="boolean"&&t.isStale()!==o||i&&i!==t.state.fetchStatus||s&&!s(t))}function vg(e,t){const{exact:n,status:r,predicate:i,mutationKey:s}=e;if(s){if(!t.options.mutationKey)return!1;if(n){if(Qa(t.options.mutationKey)!==Qa(s))return!1}else if(!Ja(t.options.mutationKey,s))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function Pf(e,t){return((t==null?void 0:t.queryKeyHashFn)||Qa)(e)}function Qa(e){return JSON.stringify(e,(t,n)=>yp(n)?Object.keys(n).sort().reduce((r,i)=>(r[i]=n[i],r),{}):n)}function Ja(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(n=>Ja(e[n],t[n])):!1}function Z1(e,t){if(e===t)return e;const n=yg(e)&&yg(t);if(n||yp(e)&&yp(t)){const r=n?e:Object.keys(e),i=r.length,s=n?t:Object.keys(t),a=s.length,o=n?[]:{},l=new Set(r);let u=0;for(let c=0;c<a;c++){const p=n?c:s[c];(!n&&l.has(p)||n)&&e[p]===void 0&&t[p]===void 0?(o[p]=void 0,u++):(o[p]=Z1(e[p],t[p]),o[p]===e[p]&&e[p]!==void 0&&u++)}return i===a&&u===i?e:o}return t}function yg(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function yp(e){if(!bg(e))return!1;const t=e.constructor;if(t===void 0)return!0;const n=t.prototype;return!(!bg(n)||!n.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function bg(e){return Object.prototype.toString.call(e)==="[object Object]"}function Jk(e){return new Promise(t=>{setTimeout(t,e)})}function Yk(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?Z1(e,t):t}function Zk(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function eC(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var Tf=Symbol();function ew(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===Tf?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var Si,zr,ws,Yx,tC=(Yx=class extends Ju{constructor(){super();Ne(this,Si);Ne(this,zr);Ne(this,ws);ke(this,ws,t=>{if(!Yu&&window.addEventListener){const n=()=>t();return window.addEventListener("visibilitychange",n,!1),()=>{window.removeEventListener("visibilitychange",n)}}})}onSubscribe(){K(this,zr)||this.setEventListener(K(this,ws))}onUnsubscribe(){var t;this.hasListeners()||((t=K(this,zr))==null||t.call(this),ke(this,zr,void 0))}setEventListener(t){var n;ke(this,ws,t),(n=K(this,zr))==null||n.call(this),ke(this,zr,t(r=>{typeof r=="boolean"?this.setFocused(r):this.onFocus()}))}setFocused(t){K(this,Si)!==t&&(ke(this,Si,t),this.onFocus())}onFocus(){const t=this.isFocused();
vendor: 4,924 bytes, line 253
253this.listeners.forEach(n=>{n(t)})}isFocused(){var t;return typeof K(this,Si)=="boolean"?K(this,Si):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},Si=new WeakMap,zr=new WeakMap,ws=new WeakMap,Yx),tw=new tC,qs,Br,Ss,Zx,nC=(Zx=class extends Ju{constructor(){super();Ne(this,qs,!0);Ne(this,Br);Ne(this,Ss);ke(this,Ss,t=>{if(!Yu&&window.addEventListener){const n=()=>t(!0),r=()=>t(!1);return window.addEventListener("online",n,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r)}}})}onSubscribe(){K(this,Br)||this.setEventListener(K(this,Ss))}onUnsubscribe(){var t;this.hasListeners()||((t=K(this,Br))==null||t.call(this),ke(this,Br,void 0))}setEventListener(t){var n;ke(this,Ss,t),(n=K(this,Br))==null||n.call(this),ke(this,Br,t(this.setOnline.bind(this)))}setOnline(t){K(this,qs)!==t&&(ke(this,qs,t),this.listeners.forEach(r=>{r(t)}))}isOnline(){return K(this,qs)}},qs=new WeakMap,Br=new WeakMap,Ss=new WeakMap,Zx),Vl=new nC;function rC(){let e,t;const n=new Promise((i,s)=>{e=i,t=s});n.status="pending",n.catch(()=>{});function r(i){Object.assign(n,i),delete n.resolve,delete n.reject}return n.resolve=i=>{r({status:"fulfilled",value:i}),e(i)},n.reject=i=>{r({status:"rejected",reason:i}),t(i)},n}function iC(e){return Math.min(1e3*2**e,3e4)}function nw(e){return(e??"online")==="online"?Vl.isOnline():!0}var rw=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function sd(e){return e instanceof rw}function iw(e){let t=!1,n=0,r=!1,i;const s=rC(),a=h=>{var v;r||(f(new rw(h)),(v=e.abort)==null||v.call(e))},o=()=>{t=!0},l=()=>{t=!1},u=()=>tw.isFocused()&&(e.networkMode==="always"||Vl.isOnline())&&e.canRun(),c=()=>nw(e.networkMode)&&e.canRun(),p=h=>{var v;r||(r=!0,(v=e.onSuccess)==null||v.call(e,h),i==null||i(),s.resolve(h))},f=h=>{var v;r||(r=!0,(v=e.onError)==null||v.call(e,h),i==null||i(),s.reject(h))},m=()=>new Promise(h=>{var v;i=b=>{(r||u())&&h(b)},(v=e.onPause)==null||v.call(e)}).then(()=>{var h;i=void 0,r||(h=e.onContinue)==null||h.call(e)}),g=()=>{if(r)return;let h;const v=n===0?e.initialPromise:void 0;try{h=v??e.fn()}catch(b){h=Promise.reject(b)}Promise.resolve(h).then(p).catch(b=>{var x;if(r)return;const w=e.retry??(Yu?0:3),y=e.retryDelay??iC,A=typeof y=="function"?y(n,b):y,q=w===!0||typeof w=="number"&&n<w||typeof w=="function"&&w(n,b);if(t||!q){f(b);return}n++,(x=e.onFail)==null||x.call(e,n,b),Jk(A).then(()=>u()?void 0:m()).then(()=>{t?f(b):g()})})};return{promise:s,cancel:a,continue:()=>(i==null||i(),s),cancelRetry:o,continueRetry:l,canStart:c,start:()=>(c()?g():m().then(g),s)}}var sC=e=>setTimeout(e,0);function aC(){let e=[],t=0,n=o=>{o()},r=o=>{o()},i=sC;const s=o=>{t?e.push(o):i(()=>{n(o)})},a=()=>{const o=e;e=[],o.length&&i(()=>{r(()=>{o.forEach(l=>{n(l)})})})};return{batch:o=>{let l;t++;try{l=o()}finally{t--,t||a()}return l},batchCalls:o=>(...l)=>{s(()=>{o(...l)})},schedule:s,setNotifyFunction:o=>{n=o},setBatchNotifyFunction:o=>{r=o},setScheduler:o=>{i=o}}}var nn=aC(),Ai,e1,sw=(e1=class{constructor(){Ne(this,Ai)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Kk(this.gcTime)&&ke(this,Ai,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Yu?1/0:5*60*1e3))}clearGcTimeout(){K(this,Ai)&&(clearTimeout(K(this,Ai)),ke(this,Ai,void 0))}},Ai=new WeakMap,e1),As,Ei,En,_i,Gt,Uo,ki,$n,hr,t1,oC=(t1=class extends sw{constructor(t){super();Ne(this,$n);Ne(this,As);Ne(this,Ei);Ne(this,En);Ne(this,_i);Ne(this,Gt);Ne(this,Uo);Ne(this,ki);ke(this,ki,!1),ke(this,Uo,t.defaultOptions),this.setOptions(t.options),this.observers=[],ke(this,_i,t.client),ke(this,En,K(this,_i).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,ke(this,As,uC(this.options)),this.state=t.state??K(this,As),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=K(this,Gt))==null?void 0:t.promise}setOptions(t){this.options={...K(this,Uo),...t},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&K(this,En).remove(this)}setData(t,n){const r=Yk(this.state.data,t,this.options);return Vt(this,$n,hr).call(this,{data:r,type:"success",dataUpdatedAt:n==null?void 0:n.updatedAt,manual:n==null?void 0:n.manual}),r}setState(t,n){Vt(this,$n,hr).call(this,{type:"setState",state:t,setStateOptions:n})}cancel(t){var r,i;const n=(r=K(this,Gt))==null?void 0:r.promise;return(i=K(this,Gt))==null||i.cancel(t),n?n.then(Rn).catch(Rn):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(K(this,As))}isActive(){return this.observers.some(t=>Qk(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Tf||this.state.dataUpdateCount+this.state.errorUpdate
vendor: 1,274 bytes, line 253
253Count===0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>vp(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:!Xk(this.state.dataUpdatedAt,t)}onFocus(){var n;const t=this.observers.find(r=>r.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(n=K(this,Gt))==null||n.continue()}onOnline(){var n;const t=this.observers.find(r=>r.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(n=K(this,Gt))==null||n.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),K(this,En).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(n=>n!==t),this.observers.length||(K(this,Gt)&&(K(this,ki)?K(this,Gt).cancel({revert:!0}):K(this,Gt).cancelRetry()),this.scheduleGc()),K(this,En).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||Vt(this,$n,hr).call(this,{type:"invalidate"})}
vendor: 4,428 bytes, line 253
253fetch(t,n){var u,c,p;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(n!=null&&n.cancelRefetch))this.cancel({silent:!0});else if(K(this,Gt))return K(this,Gt).continueRetry(),K(this,Gt).promise}if(t&&this.setOptions(t),!this.options.queryFn){const f=this.observers.find(m=>m.options.queryFn);f&&this.setOptions(f.options)}const r=new AbortController,i=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(ke(this,ki,!0),r.signal)})},s=()=>{const f=ew(this.options,n),g=(()=>{const h={client:K(this,_i),queryKey:this.queryKey,meta:this.meta};return i(h),h})();return ke(this,ki,!1),this.options.persister?this.options.persister(f,g,this):f(g)},o=(()=>{const f={fetchOptions:n,options:this.options,queryKey:this.queryKey,client:K(this,_i),state:this.state,fetchFn:s};return i(f),f})();(u=this.options.behavior)==null||u.onFetch(o,this),ke(this,Ei,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((c=o.fetchOptions)==null?void 0:c.meta))&&Vt(this,$n,hr).call(this,{type:"fetch",meta:(p=o.fetchOptions)==null?void 0:p.meta});const l=f=>{var m,g,h,v;sd(f)&&f.silent||Vt(this,$n,hr).call(this,{type:"error",error:f}),sd(f)||((g=(m=K(this,En).config).onError)==null||g.call(m,f,this),(v=(h=K(this,En).config).onSettled)==null||v.call(h,this.state.data,f,this)),this.scheduleGc()};return ke(this,Gt,iw({initialPromise:n==null?void 0:n.initialPromise,fn:o.fetchFn,abort:r.abort.bind(r),onSuccess:f=>{var m,g,h,v;if(f===void 0){l(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(f)}catch(b){l(b);return}(g=(m=K(this,En).config).onSuccess)==null||g.call(m,f,this),(v=(h=K(this,En).config).onSettled)==null||v.call(h,f,this.state.error,this),this.scheduleGc()},onError:l,onFail:(f,m)=>{Vt(this,$n,hr).call(this,{type:"failed",failureCount:f,error:m})},onPause:()=>{Vt(this,$n,hr).call(this,{type:"pause"})},onContinue:()=>{Vt(this,$n,hr).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),K(this,Gt).start()}},As=new WeakMap,Ei=new WeakMap,En=new WeakMap,_i=new WeakMap,Gt=new WeakMap,Uo=new WeakMap,ki=new WeakMap,$n=new WeakSet,hr=function(t){const n=r=>{switch(t.type){case"failed":return{...r,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...r,fetchStatus:"paused"};case"continue":return{...r,fetchStatus:"fetching"};case"fetch":return{...r,...lC(r.data,this.options),fetchMeta:t.meta??null};case"success":return ke(this,Ei,void 0),{...r,data:t.data,dataUpdateCount:r.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=t.error;return sd(i)&&i.revert&&K(this,Ei)?{...K(this,Ei),fetchStatus:"idle"}:{...r,error:i,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...r,isInvalidated:!0};case"setState":return{...r,...t.state}}};this.state=n(this.state),nn.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),K(this,En).notify({query:this,type:"updated",action:t})})},t1);function lC(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:nw(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function uC(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var Zn,n1,cC=(n1=class extends Ju{constructor(t={}){super();Ne(this,Zn);this.config=t,ke(this,Zn,new Map)}build(t,n,r){const i=n.queryKey,s=n.queryHash??Pf(i,n);let a=this.get(s);return a||(a=new oC({client:t,queryKey:i,queryHash:s,options:t.defaultQueryOptions(n),state:r,defaultOptions:t.getQueryDefaults(i)}),this.add(a)),a}add(t){K(this,Zn).has(t.queryHash)||(K(this,Zn).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const n=K(this,Zn).get(t.queryHash);n&&(t.destroy(),n===t&&K(this,Zn).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){nn.batch(()=>
253{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return K(this,Zn).get(t)}getAll(){return[...K(this,Zn).values()]}find(t){const n={exact:!0,...t};return this.getAll().find(r=>gg(n,r))}findAll(t={}){const n=this.getAll();return Object.keys(t).length>0?n.filter(r=>gg(t,r)):n}notify(t){nn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}onFocus(){nn.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){nn.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Zn=new WeakMap,n1),er,tn,Ci,tr,Rr,r1,dC=(r1=class extends sw{constructor(t){super();Ne(this,tr);Ne(this,er);Ne(this,tn);Ne(this,Ci);this.mutationId=t.mutationId,ke(this,tn,t.mutationCache),ke(this,er,[]),this.state=t.state||pC(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){K(this,er).includes(t)||(K(this,er).push(t),this.clearGcTimeout(),K(this,tn).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){ke(this,er,K(this,er).filter(n=>n!==t)),this.scheduleGc(),K(this,tn).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){K(this,er).length||(this.state.status==="pending"?this.scheduleGc():K(this,tn).remove(this))}continue(){var t;return((t=K(this,Ci))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var s,a,o,l,u,c,p,f,m,g,h,v,b,w,y,A,q,x,_,I;const n=()=>{Vt(this,tr,Rr).call(this,{type:"continue"})};ke(this,Ci,iw({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(S,k)=>{Vt(this,tr,Rr).call(this,{type:"failed",failureCount:S,error:k})},onPause:()=>{Vt(this,tr,Rr).call(this,{type:"pause"})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>K(this,tn).canRun(this)}));const r=this.state.status==="pending",i=!K(this,Ci).canStart();try{if(r)n();else{Vt(this,tr,Rr).call(this,{type:"pending",variables:t,isPaused:i}),await((a=(s=K(this,tn).config).onMutate)==null?void 0:a.call(s,t,this));const k=await((l=(o=this.options).onMutate)==null?void 0:l.call(o,t));k!==this.state.context&&Vt(this,tr,Rr).call(this,{type:"pending",context:k,variables:t,isPaused:i})}const S=await K(this,Ci).start();return await((c=(u=K(this,tn).config).onSuccess)==null?void 0:c.call(u,S,t,this.state.context,this)),await((f=(p=this.options).onSuccess)==null?void 0:f.call(p,S,t,this.state.context)),await((g=(m=K(this,tn).config).onSettled)==null?void 0:g.call(m,S,null,this.state.variables,this.state.context,this)),await((v=(h=this.options).onSettled)==null?void 0:v.call(h,S,null,t,this.state.context)),Vt(this,tr,Rr).call(this,{type:"success",data:S}),S}catch(S){try{throw await((w=(b=K(this,tn).config).onError)==null?void 0:w.call(b,S,t,this.state.context,this)),await((A=(y=this.options).onError)==null?void 0:A.call(y,S,t,this.state.context)),await((x=(q=K(this,tn).config).onSettled)==null?void 0:x.call(q,void 0,S,this.state.variables,this.state.context,this)),await((I=(_=this.options).onSettled)==null?void 0:I.call(_,void 0,S,t,this.state.context)),S}finally{Vt(this,tr,Rr).call(this,{type:"error",error:S})}}finally{K(this,tn).runNext(this)}}},er=new WeakMap,tn=new WeakMap,Ci=new WeakMap,tr=new WeakSet,Rr=function(t){const n=r=>{switch(t.type){case"failed":return{...r,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...r,isPaused:!0};case"continue":return{...r,isPaused:!1};case"pending":return{...r,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{...r,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...r,data:void 0,error:t.error,failureCount:r.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=n(this.state),nn.batch(()=>{K(this,er).forEach(r=>{r.onMutationUpdate(t)}),K(this,tn).notify({mutation:this,type:"updated",action:t})})},r1);function pC(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var yr,Dn,zo,i1,mC=(i1=class extends Ju{constructor(t={}){super();Ne(this,yr);Ne(this,Dn);Ne(this,zo);this.config=t,ke(this,yr,new Set),ke(this,Dn,new Map),ke(this,zo,0)}build(t,n,r){const i=new dC({mutationCache:this,mutationId:++rl(this,zo)._,options:t.defaultMutationOptions(n),state:r});return this.add(i),i}add(t){K(this,yr).add(t);const n=al(t);if(typeof n=="string"){const r=K(this,Dn).get(n);r?r.push(t):K(this,Dn).set(n,[t])}this.notify({type:"added",mutation:t})}remove(t){if(K(this,yr).delete(t)){const n=al(t);if(typeof n=="string"){const r=K(this,Dn).get(n);if(r)if(r.length>1){const i=r.indexOf(t);i!==-1&&r.splice(i,1)}else r[0]===t&&K(this,Dn).delete(n)}}this.notify({type:"removed",mutation:t})}canRun(t){const n=al(t);if(typeof n=="string"){const r=K(this,Dn).get(n),i=r==null?void 0:r.find(s=>
253s.state.status==="pending");return!i||i===t}else return!0}runNext(t){var r;const n=al(t);if(typeof n=="string"){const i=(r=K(this,Dn).get(n))==null?void 0:r.find(s=>s!==t&&s.state.isPaused);return(i==null?void 0:i.continue())??Promise.resolve()}else return Promise.resolve()}clear(){nn.batch(()=>{K(this,yr).forEach(t=>{this.notify({type:"removed",mutation:t})}),K(this,yr).clear(),K(this,Dn).clear()})}getAll(){return Array.from(K(this,yr))}find(t){const n={exact:!0,...t};return this.getAll().find(r=>vg(n,r))}findAll(t={}){return this.getAll().filter(n=>vg(t,n))}notify(t){nn.batch(()=>{this.listeners.forEach(n=>{n(t)})})}resumePausedMutations(){const t=this.getAll().filter(n=>n.state.isPaused);return nn.batch(()=>Promise.all(t.map(n=>n.continue().catch(Rn))))}},yr=new WeakMap,Dn=new WeakMap,zo=new WeakMap,i1);function al(e){var t;return(t=e.options.scope)==null?void 0:t.id}function xg(e){return{onFetch:(t,n)=>{var c,p,f,m,g;const r=t.options,i=(f=(p=(c=t.fetchOptions)==null?void 0:c.meta)==null?void 0:p.fetchMore)==null?void 0:f.direction,s=((m=t.state.data)==null?void 0:m.pages)||[],a=((g=t.state.data)==null?void 0:g.pageParams)||[];let o={pages:[],pageParams:[]},l=0;const u=async()=>{let h=!1;const v=y=>{Object.defineProperty(y,"signal",{enumerable:!0,get:()=>(t.signal.aborted?h=!0:t.signal.addEventListener("abort",()=>{h=!0}),t.signal)})},b=ew(t.options,t.fetchOptions),w=async(y,A,q)=>{if(h)return Promise.reject();if(A==null&&y.pages.length)return Promise.resolve(y);const _=(()=>{const C={client:t.client,queryKey:t.queryKey,pageParam:A,direction:q?"backward":"forward",meta:t.options.meta};return v(C),C})(),I=await b(_),{maxPages:S}=t.options,k=q?eC:Zk;return{pages:k(y.pages,I,S),pageParams:k(y.pageParams,A,S)}};if(i&&s.length){const y=i==="backward",A=y?fC:wg,q={pages:s,pageParams:a},x=A(r,q);o=await w(q,x,y)}else{const y=e??s.length;do{const A=l===0?a[0]??r.initialPageParam:wg(r,o);if(l>0&&A==null)break;o=await w(o,A),l++}while(l<y)}return o};t.options.persister?t.fetchFn=()=>{var h,v;return(v=(h=t.options).persister)==null?void 0:v.call(h,u,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n)}:t.fetchFn=u}}}function wg(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function fC(e,{pages:t,pageParams:n}){var r;return t.length>0?(r=e.getPreviousPageParam)==null?void 0:r.call(e,t[0],t,n[0],n):void 0}var gt,Wr,Hr,Es,_s,Vr,ks,Cs,s1,hC=(s1=class{constructor(e={}){Ne(this,gt);Ne(this,Wr);Ne(this,Hr);Ne(this,Es);Ne(this,_s);Ne(this,Vr);Ne(this,ks);Ne(this,Cs);ke(this,gt,e.queryCache||new cC),ke(this,Wr,e.mutationCache||new mC),ke(this,Hr,e.defaultOptions||{}),ke(this,Es,new Map),ke(this,_s,new Map),ke(this,Vr,0)}mount(){rl(this,Vr)._++,K(this,Vr)===1&&(ke(this,ks,tw.subscribe(async e=>{e&&(await this.resumePausedMutations(),K(this,gt).onFocus())})),ke(this,Cs,Vl.subscribe(async e=>{e&&(await this.resumePausedMutations(),K(this,gt).onOnline())})))}unmount(){var e,t;rl(this,Vr)._--,K(this,Vr)===0&&((e=K(this,ks))==null||e.call(this),ke(this,ks,void 0),(t=K(this,Cs))==null||t.call(this),ke(this,Cs,void 0))}isFetching(e){return K(this,gt).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return K(this,Wr).findAll({...e,status:"pending"}).length}getQueryData(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=K(this,gt).get(t.queryHash))==null?void 0:n.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),n=K(this,gt).build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(vp(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return K(this,gt).findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),i=K(this,gt).get(r.queryHash),s=i==null?void 0:i.state.data,a=Gk(t,s);if(a!==void 0)return K(this,gt).build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return nn.batch(()=>K(this,gt).findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){var n;const t=this.defaultQueryOptions({queryKey:e});return(n=K(this,gt).get(t.queryHash))==null?void 0:n.state}removeQueries(e){const t=K(this,gt);nn.batch(()=>
253{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=K(this,gt);return nn.batch(()=>(n.findAll(e).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const n={revert:!0,...t},r=nn.batch(()=>K(this,gt).findAll(e).map(i=>i.cancel(n)));return Promise.all(r).then(Rn).catch(Rn)}invalidateQueries(e,t={}){return nn.batch(()=>(K(this,gt).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},r=nn.batch(()=>K(this,gt).findAll(e).filter(i=>!i.isDisabled()&&!i.isStatic()).map(i=>{let s=i.fetch(void 0,n);return n.throwOnError||(s=s.catch(Rn)),i.state.fetchStatus==="paused"?Promise.resolve():s}));return Promise.all(r).then(Rn)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=K(this,gt).build(this,t);return n.isStaleByTime(vp(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Rn).catch(Rn)}fetchInfiniteQuery(e){return e.behavior=xg(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Rn).catch(Rn)}ensureInfiniteQueryData(e){return e.behavior=xg(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return Vl.isOnline()?K(this,Wr).resumePausedMutations():Promise.resolve()}getQueryCache(){return K(this,gt)}getMutationCache(){return K(this,Wr)}getDefaultOptions(){return K(this,Hr)}setDefaultOptions(e){ke(this,Hr,e)}setQueryDefaults(e,t){K(this,Es).set(Qa(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...K(this,Es).values()],n={};return t.forEach(r=>{Ja(e,r.queryKey)&&Object.assign(n,r.defaultOptions)}),n}setMutationDefaults(e,t){K(this,_s).set(Qa(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...K(this,_s).values()],n={};return t.forEach(r=>{Ja(e,r.mutationKey)&&Object.assign(n,r.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...K(this,Hr).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Pf(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===Tf&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...K(this,Hr).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){K(this,gt).clear(),K(this,Wr).clear()}},gt=new WeakMap,Wr=new WeakMap,Hr=new WeakMap,Es=new WeakMap,_s=new WeakMap,Vr=new WeakMap,ks=new WeakMap,Cs=new WeakMap,s1),gC=E.createContext(void 0),vC=({client:e,children:t})=>(E.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),d.jsx(gC.Provider,{value:e,children:t})),yC=typeof Element<"u",bC=typeof Map=="function",xC=typeof Set=="function",wC=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Dl(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,r,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Dl(e[r],t[r]))return!1;return!0}var s;if(bC&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(s=e.entries();!(r=s.next()).done;)if(!t.has(r.value[0]))return!1;for(s=e.entries();!(r=s.next()).done;)if(!Dl(r.value[1],t.get(r.value[0])))return!1;return!0}if(xC&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(s=e.entries();!(r=s.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(wC&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])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(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;if(yC&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!Dl(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var qC=function(t,n){try{return Dl(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const SC=De(qC);var AC=function(e,t,n,r,i,s,a,o){if(!e){var l;if(t===void 0)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,i,s,a,o],c=0;
253l=new Error(t.replace(/%s/g,function(){return u[c++]})),l.name="Invariant Violation"}throw l.framesToPop=1,l}},EC=AC;const qg=De(EC);var _C=function(t,n,r,i){var s=r?r.call(i,t,n):void 0;if(s!==void 0)return!!s;if(t===n)return!0;if(typeof t!="object"||!t||typeof n!="object"||!n)return!1;var a=Object.keys(t),o=Object.keys(n);if(a.length!==o.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(n),u=0;u<a.length;u++){var c=a[u];if(!l(c))return!1;var p=t[c],f=n[c];if(s=r?r.call(i,p,f,c):void 0,s===!1||s===void 0&&p!==f)return!1}return!0};const kC=De(_C);var aw=(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))(aw||{}),ad={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"]}},Sg=Object.values(aw),If={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},CC=Object.entries(If).reduce((e,[t,n])=>(e[n]=t,e),{}),Bn="data-rh",ps={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},ms=(e,t)=>{for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},jC=e=>{let t=ms(e,"title");const n=ms(e,ps.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,()=>t);const r=ms(e,ps.DEFAULT_TITLE);return t||r||void 0},PC=e=>ms(e,ps.ON_CHANGE_CLIENT_STATE)||(()=>{}),od=(e,t)=>t.filter(n=>typeof n[e]<"u").map(n=>n[e]).reduce((n,r)=>({...n,...r}),{}),TC=(e,t)=>t.filter(n=>typeof n.base<"u").map(n=>n.base).reverse().reduce((n,r)=>{if(!n.length){const i=Object.keys(r);for(let s=0;s<i.length;s+=1){const o=i[s].toLowerCase();if(e.indexOf(o)!==-1&&r[o])return n.concat(r)}}return n},[]),IC=e=>console&&typeof console.warn=="function"&&console.warn(e),va=(e,t,n)=>{const r={};return n.filter(i=>Array.isArray(i[e])?!0:(typeof i[e]<"u"&&IC(`Helmet: ${e} should be of type "Array". Instead found type "${typeof i[e]}"`),!1)).map(i=>i[e]).reverse().reduce((i,s)=>{const a={};s.filter(l=>{let u;const c=Object.keys(l);for(let f=0;f<c.length;f+=1){const m=c[f],g=m.toLowerCase();t.indexOf(g)!==-1&&!(u==="rel"&&l[u].toLowerCase()==="canonical")&&!(g==="rel"&&l[g].toLowerCase()==="stylesheet")&&(u=g),t.indexOf(m)!==-1&&(m==="innerHTML"||m==="cssText"||m==="itemprop")&&(u=m)}if(!u||!l[u])return!1;const p=l[u].toLowerCase();return r[u]||(r[u]={}),a[u]||(a[u]={}),r[u][p]?!1:(a[u][p]=!0,!0)}).reverse().forEach(l=>i.push(l));const o=Object.keys(a);for(let l=0;l<o.length;l+=1){const u=o[l],c={...r[u],...a[u]};r[u]=c}return i},[]).reverse()},OC=(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},LC=e=>({baseTag:TC(["href"],e),bodyAttributes:od("bodyAttributes",e),defer:ms(e,ps.DEFER),encode:ms(e,ps.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:od("htmlAttributes",e),linkTags:va("link",["rel","href"],e),metaTags:va("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:va("noscript",["innerHTML"],e),onChangeClientState:PC(e),scriptTags:va("script",["src","innerHTML"],e),styleTags:va("style",["cssText"],e),title:jC(e),titleAttributes:od("titleAttributes",e),prioritizeSeoTags:OC(e,ps.PRIORITIZE_SEO_TAGS)}),ow=e=>Array.isArray(e)?e.join(""):e,MC=(e,t)=>{const n=Object.keys(e);for(let r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1},ld=(e,t)=>Array.isArray(e)?e.reduce((n,r)=>(MC(r,t)?n.priority.push(r):n.default.push(r),n),{priority:[],default:[]}):{default:e,priority:[]},Ag=(e,t)=>({...e,[t]:void 0}),NC=["noscript","script","style"],bp=(e,t=!0)=>t===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),lw=e=>Object.keys(e).reduce((t,n)=>{const r=typeof e[n]<"u"?`${n}="${e[n]}"`:`${n}`;return t?`${t} ${r}`:r},""),RC=(e,t,n,r)=>{const i=lw(n),s=ow(t);return i?`<${e} ${Bn}="true" ${i}>${bp(s,r)}</${e}>`:`<${e} ${Bn}="true">${bp(s,r)}</${e}>`},$C=(e,t,n=!0)=>t.reduce((r,i)=>{const s=i,a=Object.keys(s).filter(u=>!(u==="innerHTML"||u==="cssText")).reduce((u,c)=>{const p=typeof s[c]>"u"?c:`${c}="${bp(s[c],n)}"`;return u?`${u} ${p}`:p},""),o=s.innerHTML||s.cssText||"",l=NC.indexOf(e)===-1;return`${r}<${e} ${Bn}="true" ${a}${l?"/>":`>${o}</${e}>`}`},""),uw=(e,t={})=>Object.keys(e).reduce((n,r)=>{const i=If[r];return n[i||r]=e[r],n},t),DC=(e,t,n)=>{const r={key:t,[Bn]:!0},i=uw(n,r);return[O.createElement("title",i,t)]},Fl=(e,t)=>t.map((n,r)=>{const i={key:r,[Bn]:!0};
253return Object.keys(n).forEach(s=>{const o=If[s]||s;if(o==="innerHTML"||o==="cssText"){const l=n.innerHTML||n.cssText;i.dangerouslySetInnerHTML={__html:l}}else i[o]=n[s]}),O.createElement(e,i)}),An=(e,t,n=!0)=>{switch(e){case"title":return{toComponent:()=>DC(e,t.title,t.titleAttributes),toString:()=>RC(e,t.title,t.titleAttributes,n)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>uw(t),toString:()=>lw(t)};default:return{toComponent:()=>Fl(e,t),toString:()=>$C(e,t,n)}}},FC=({metaTags:e,linkTags:t,scriptTags:n,encode:r})=>{const i=ld(e,ad.meta),s=ld(t,ad.link),a=ld(n,ad.script);return{priorityMethods:{toComponent:()=>[...Fl("meta",i.priority),...Fl("link",s.priority),...Fl("script",a.priority)],toString:()=>`${An("meta",i.priority,r)} ${An("link",s.priority,r)} ${An("script",a.priority,r)}`},metaTags:i.default,linkTags:s.default,scriptTags:a.default}},UC=e=>{const{baseTag:t,bodyAttributes:n,encode:r=!0,htmlAttributes:i,noscriptTags:s,styleTags:a,title:o="",titleAttributes:l,prioritizeSeoTags:u}=e;let{linkTags:c,metaTags:p,scriptTags:f}=e,m={toComponent:()=>{},toString:()=>""};return u&&({priorityMethods:m,linkTags:c,metaTags:p,scriptTags:f}=FC(e)),{priority:m,base:An("base",t,r),bodyAttributes:An("bodyAttributes",n,r),htmlAttributes:An("htmlAttributes",i,r),link:An("link",c,r),meta:An("meta",p,r),noscript:An("noscript",s,r),script:An("script",f,r),style:An("style",a,r),title:An("title",{title:o,titleAttributes:l},r)}},xp=UC,ol=[],cw=!!(typeof window<"u"&&window.document&&window.document.createElement),wp=class{constructor(e,t){pr(this,"instances",[]);pr(this,"canUseDOM",cw);pr(this,"context");pr(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?ol:this.instances,add:e=>{(this.canUseDOM?ol:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?ol:this.instances).indexOf(e);(this.canUseDOM?ol:this.instances).splice(t,1)}}});this.context=e,this.canUseDOM=t||!1,t||(e.helmet=xp({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},zC={},dw=O.createContext(zC),ji,pw=(ji=class extends E.Component{constructor(n){super(n);pr(this,"helmetData");this.helmetData=new wp(this.props.context||{},ji.canUseDOM)}render(){return O.createElement(dw.Provider,{value:this.helmetData.value},this.props.children)}},pr(ji,"canUseDOM",cw),ji),Hi=(e,t)=>{const n=document.head||document.querySelector("head"),r=n.querySelectorAll(`${e}[${Bn}]`),i=[].slice.call(r),s=[];let a;return t&&t.length&&t.forEach(o=>{const l=document.createElement(e);for(const u in o)if(Object.prototype.hasOwnProperty.call(o,u))if(u==="innerHTML")l.innerHTML=o.innerHTML;else if(u==="cssText")l.styleSheet?l.styleSheet.cssText=o.cssText:l.appendChild(document.createTextNode(o.cssText));else{const c=u,p=typeof o[c]>"u"?"":o[c];l.setAttribute(u,p)}l.setAttribute(Bn,"true"),i.some((u,c)=>(a=c,l.isEqualNode(u)))?i.splice(a,1):s.push(l)}),i.forEach(o=>{var l;return(l=o.parentNode)==null?void 0:l.removeChild(o)}),s.forEach(o=>n.appendChild(o)),{oldTags:i,newTags:s}},qp=(e,t)=>{const n=document.getElementsByTagName(e)[0];if(!n)return;const r=n.getAttribute(Bn),i=r?r.split(","):[],s=[...i],a=Object.keys(t);for(const o of a){const l=t[o]||"";n.getAttribute(o)!==l&&n.setAttribute(o,l),i.indexOf(o)===-1&&i.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]);i.length===s.length?n.removeAttribute(Bn):n.getAttribute(Bn)!==a.join(",")&&n.setAttribute(Bn,a.join(","))},BC=(e,t)=>{typeof e<"u"&&document.title!==e&&(document.title=ow(e)),qp("title",t)},Eg=(e,t)=>{const{baseTag:n,bodyAttributes:r,htmlAttributes:i,linkTags:s,metaTags:a,noscriptTags:o,onChangeClientState:l,scriptTags:u,styleTags:c,title:p,titleAttributes:f}=e;qp("body",r),qp("html",i),BC(p,f);const m={baseTag:Hi("base",n),linkTags:Hi("link",s),metaTags:Hi("meta",a),noscriptTags:Hi("noscript",o),scriptTags:Hi("script",u),styleTags:Hi("style",c)},g={},h={};Object.keys(m).forEach(v=>{const{newTags:b,oldTags:w}=m[v];b.length&&(g[v]=b),w.length&&(h[v]=m[v].oldTags)}),t&&t(),l(e,g,h)},ya=null,WC=e=>{ya&&cancelAnimationFrame(ya),e.defer?ya=requestAnimationFrame(()=>{Eg(e,()=>{ya=null})}):(Eg(e),ya=null)}
253,HC=WC,_g=class extends E.Component{constructor(){super(...arguments);pr(this,"rendered",!1)}shouldComponentUpdate(t){return!kC(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 r=null;const i=LC(t.get().map(s=>{const a={...s.props};return delete a.context,a}));pw.canUseDOM?HC(i):xp&&(r=xp(i)),n(r)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},cp,VC=(cp=class extends E.Component{shouldComponentUpdate(e){return!SC(Ag(this.props,"helmetData"),Ag(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,r){return{...t,[e.type]:[...t[e.type]||[],{...n,...this.mapNestedChildrenToProps(e,r)}]}}mapObjectTypeChildren(e,t,n,r){switch(e.type){case"title":return{...t,[e.type]:r,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(r=>{n={...n,[r]:e[r]}}),n}warnOnInvalidChildren(e,t){return qg(Sg.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 ${Sg.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),qg(!t||typeof t=="string"||Array.isArray(t)&&!t.some(n=>typeof 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,r=>{if(!r||!r.props)return;const{children:i,...s}=r.props,a=Object.keys(s).reduce((l,u)=>(l[CC[u]||u]=s[u],l),{});let{type:o}=r;
253switch(typeof o=="symbol"?o=o.toString():this.warnOnInvalidChildren(r,i),o){case"Symbol(react.fragment)":t=this.mapChildrenToProps(i,t);break;case"link":case"meta":case"noscript":case"script":case"style":n=this.flattenArrayTypeChildren(r,n,a,i);break;default:t=this.mapObjectTypeChildren(r,t,a,i);break}}),this.mapArrayTypeChildrenToProps(n,t)}render(){const{children:e,...t}=this.props;let n={...t},{helmetData:r}=t;if(e&&(n=this.mapChildrenToProps(e,n)),r&&!(r instanceof wp)){const i=r;r=new wp(i.context,!0),delete n.helmetData}return r?O.createElement(_g,{...n,context:r.value}):O.createElement(dw.Consumer,null,i=>O.createElement(_g,{...n,context:i}))}},pr(cp,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),cp);const GC=M1("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-semibold ring-offset-background transition-all duration-200 ease-out 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 hover:brightness-110 shadow-sm hover:shadow-md hover:-translate-y-0.5",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border-2 border-primary bg-transparent text-primary hover:bg-primary hover:text-primary-foreground hover:-translate-y-0.5",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent/10 hover:text-accent",link:"text-primary underline-offset-4 hover:underline",hero:"bg-accent text-accent-foreground hover:bg-accent/90 hover:brightness-110 shadow-lg hover:shadow-xl hover:shadow-accent/20 hover:-translate-y-0.5 animate-subtle-pulse",heroOutline:"border-2 border-white/30 bg-white/10 text-white backdrop-blur-sm hover:bg-white/20 hover:border-white/50 hover:-translate-y-0.5",cta:"bg-accent text-accent-foreground shadow-lg hover:shadow-xl hover:shadow-accent/25 hover:-translate-y-0.5 hover:brightness-110 animate-subtle-pulse"},size:{default:"h-10 px-5 py-2",sm:"h-9 rounded-lg px-4 text-xs",lg:"h-12 rounded-xl px-8 text-base",xl:"h-14 roun
253ded-xl px-10 text-lg",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),xr=E.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},s)=>{const a=r?bE:"button";return d.jsx(a,{className:bt(GC({variant:t,size:n,className:e})),ref:s,...i})});xr.displayName="Button";const KC="chal-cookie-consent";let Sp=!1;const mw="shopinzen-chatbot-script",kg="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1RFUxQUV6RFE2IiwiaWF0IjoxNzczNjU4MTgwfQ.IRtHUF_yYd80ZPlrHAswRu_GgsQJjRlohOGybRzxi1E";function Ap(){if(typeof window>"u")return null;try{const e=localStorage.getItem(KC);return e?JSON.parse(e):null}catch{return null}}function XC(){typeof document>"u"||document.cookie.split(";").forEach(e=>{var n;const t=(n=e.split("=")[0])==null?void 0:n.trim();!t||!t.startsWith("_ga")&&t!=="_gid"&&t!=="_gat"||(document.cookie=`${t}=; Max-Age=0; path=/; SameSite=Lax`,document.cookie=`${t}=; Max-Age=0; path=/; domain=.${window.location.hostname}; SameSite=Lax`)})}function QC(){XC()}function fw(){if(Sp||typeof document>"u")return;Sp=!0;const e=document.createElement("script");e.id=mw,e.src=`https://console.shopinzen.com/freemium/chatbot-integrator.js?v=${Date.now()}`,e.defer=!0,e.dataset.shopinzenBot=kg,e.dataset.bubblecolor="#b8734f",e.dataset.typescreen="MOBILE",e.dataset.pkey=kg,e.dataset.customicon="false",e.dataset.botavatarurl="https://storage.googleapis.com/shopinzen_freemium_images/bots/691f44682755d6f0afbf3882/avatars/379abeec-717a-4d6b-bb22-85f9d66b5bb5.png",document.body.appendChild(e)}function JC(){var e;(e=document.getElementById(mw))==null||e.remove(),document.querySelectorAll('[id*="shopinzen"], [class*="shopinzen"], iframe[src*="shopinzen.com"]').forEach(t=>t.remove()),Sp=!1}function YC(){const e=Ap();e!=null&&e.accepted&&e.analytics,e!=null&&e.accepted&&e.marketing&&fw()}function ZC(e){e.analytics||QC(),e.marketing?fw():JC()}const ej="chal-cookie-consent",Ep="chal:open-cookie-preferences";function tj(){const[e,t]=E.useState(!1),[n,r]=E.useState(!1),[i,s]=E.useState({analytics:!1,marketing:!1,accepted:!1,timestamp:""});E.useEffect(()=>{const c=Ap();if(!(c!=null&&c.accepted)){const p=setTimeout(()=>t(!0),1e3);return()=>clearTimeout(p)}YC()},[]),E.useEffect(()=>{const c=()=>{const p=Ap();s(p??{analytics:!1,marketing:!1,accepted:!1,timestamp:""}),r(!1),t(!0)};return window.addEventListener(Ep,c),()=>window.removeEventListener(Ep,c)},[]);const a=c=>{const p={...c,accepted:!0,timestamp:new Date().toISOString()};localStorage.setItem(ej,JSON.stringify(p)),t(!1),ZC({analytics:p.analytics,marketing:p.marketing})},o=()=>{a({...i,analytics:!0,marketing:!0})},l=()=>{a({...i,analytics:!1,marketing:!1})},u=()=>{a(i)};return e?d.jsx("aside",{"aria-label":"Préférences de cookies",className:"fixed bottom-2 left-2 right-2 z-50 max-h-[33dvh] overflow-hidden rounded-lg border border-border bg-card shadow-xl sm:bottom-5 sm:left-5 sm:right-auto sm:w-[420px] sm:max-h-[70vh]",children:d.jsxs("div",{className:"p-2.5 sm:p-4",children:[d.jsxs("div",{className:"hidden items-center gap-2 sm:flex",children:[d.jsx(s_,{className:"h-4 w-4 shrink-0 text-accent","aria-hidden":"true"}),d.jsx("h2",{className:"text-sm font-semibold text-primary",children:"Votre vie privée"})]}),d.jsxs("p",{className:"line-clamp-1 text-[11px] leading-4 text-muted-foreground sm:mt-1.5 sm:line-clamp-2 sm:text-xs sm:leading-5",children:["Cookies de mesure et services externes, avec votre accord."," ",d.jsx(Ke,{to:"/mentions-legales#rgpd",className:"font-medium text-primary underline underline-offset-2",children:"Politique de confidentialité"})]}),n&&d.jsxs("div",{className:"mt-3 max-h-[calc(33dvh-142px)] space-y-2 overflow-y-auto border-t border-border pt-3 sm:max-h-72",children:[d.jsxs("div",{className:"flex items-center justify-between gap-3",children:[d.jsx("span",{className:"text-xs font-semibold text-primary",children:"Nécessaires"}),d.jsx("span",{className:"text-[11px] text-muted-foreground",children:"Toujours actifs"})]}),d.jsxs("label",{className:"flex cursor-pointer items-center justify-between gap-3 text-xs text-primary",children:["Mesure d’audience",d.jsx("input",{type:"checkbox",checked:i.analytics,onChange:c=>s({...i,analytics:c.target.checked}),className:"h-4 w-4 accent-accent"})]}),d.jsxs("label",{className:"flex cursor-pointer items-center justify-between gap-3 text-xs text-primary",children:["Services marketing et chat externe",d.jsx("input",{type:"checkbox",checked:i.marketing,onChange:c=>s({...i,marketing:c.target.checked}),className:"h-4 w-4 accent-accent"})]})]}),d.jsxs("div",{className:"mt-1.5 grid grid-cols-2 gap-2 sm:mt-3",children:[d.jsx(xr,{onClick:o,size:"sm",className:"h-7 w-full bg-accent text-accent-foreground hover:bg-accent/90 sm:h-9",children:"Tout accepter"}),d.jsx(xr,{onClick:l,size:"sm",variant:"outline",className:"h-7 w-full sm:h-9",children:"Tout refuser"})]}),d.jsx("div",{className:"mt-1 flex justify-center sm:mt-2",children:n?d.jsx(xr,{variant:"link",size:"sm",onClick:u,className:"h-auto p-0 text-xs text-primary",children:"Enregistrer mes préférences"}):d.jsx(xr,{variant:"link",size:"sm",onClick:()=>r(!0),className:"h-auto p-0 text-xs text-primary",children:"Personnaliser"})})]})}):null}function nj(){const{pathname:e}=Bo();return E.useEffect(()=>{window.scrollTo(0,0)},[e]),null}function hw(){const[e,t]=E.useState(0);return E.useEffect(()=>{const n=()=>{const r=window.scrollY,i=document.documentElement.scrollHeight-window.innerHeight;t(i>0?r/i*100:0)};return window.addEventListener("scroll",n,{passive:!0}),()=>window.removeEventListener("scroll",n)},[]),d.jsx("div",{className:"scroll-progress",style:{width:`${e}%`}})}function Kde(){}function rj(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const ij=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sj=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,aj={};function Cg(e,t){return(aj.jsx?sj:ij).test(e)}const oj=/[ \t\n\f\r]/g;function lj(e){return typeof e=="object"?e.type==="text"?jg(e.value):!1:jg(e)}function jg(e){return e.replace(oj,"")===""}class Vo{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}}Vo.prototype.normal={};Vo.prototype.property={};Vo.prototype.space=void 0;function gw(e,t){const n={},r={};for(const i of e)Object.assign(n,i.property),Object.assign(r,i.normal);return new Vo(n,r,t)}function _p(e){return e.toLowerCase()}class un{constructor(t,n){this.attribute=n,this.property=t}}un.prototype.attribute="";un.prototype.booleanish=!1;un.prototype.boolean=!1;un.prototype.commaOrSpaceSeparated=!1;un.prototype.commaSeparated=!1;un.prototype.defined=!1;un.prototype.mustUseProperty=!1;un.prototype.number=!1;un.prototype.overloadedBoolean=!1;un.prototype.property="";un.prototype.spaceSeparated=!1;un.prototype.space=void 0;let uj=0;const je=$i(),St=$i(),kp=$i(),Z=$i(),nt=$i(),fs=$i(),pn=$i();function $i(){return 2**++uj}const Cp=Object.freeze(Object.defineProperty({__proto__:null,boolean:je,booleanish:St,commaOrSpaceSeparated:pn,commaSeparated:fs,number:Z,overloadedBoolean:kp,spaceSeparated:nt},Symbol.toStringTag,{value:"Module"})),ud=Object.keys(Cp);class Of extends un{constructor(t,n,r,i){let s=-1;if(super(t,n),Pg(this,"space",i),typeof r=="number")for(;++s<ud.length;){const a=ud[s];Pg(this,ud[s],(r&Cp[a])===Cp[a])}}}Of.prototype.defined=!0;function Pg(e,t,n){n&&(e[t]=n)}function Ys(e){const t={},n={};for(const[r,i]of Object.entries(e.properties)){const s=new Of(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(s.mustUseProperty=!0),t[r]=s,n[_p(r)]=r,n[_p(s.attribute)]=r}return new Vo(t,n,e.space)}const vw=Ys({properties:{ariaActiveDescendant:null,ariaAtomic:St,ariaAutoComplete:null,ariaBusy:St,ariaChecked:St,ariaColCount:Z,ariaColIndex:Z,ariaColSpan:Z,ariaControl
vendor: 3,984 bytes, line 253
253s:nt,ariaCurrent:null,ariaDescribedBy:nt,ariaDetails:null,ariaDisabled:St,ariaDropEffect:nt,ariaErrorMessage:null,ariaExpanded:St,ariaFlowTo:nt,ariaGrabbed:St,ariaHasPopup:null,ariaHidden:St,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:nt,ariaLevel:Z,ariaLive:null,ariaModal:St,ariaMultiLine:St,ariaMultiSelectable:St,ariaOrientation:null,ariaOwns:nt,ariaPlaceholder:null,ariaPosInSet:Z,ariaPressed:St,ariaReadOnly:St,ariaRelevant:null,ariaRequired:St,ariaRoleDescription:nt,ariaRowCount:Z,ariaRowIndex:Z,ariaRowSpan:Z,ariaSelected:St,ariaSetSize:Z,ariaSort:null,ariaValueMax:Z,ariaValueMin:Z,ariaValueNow:Z,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function yw(e,t){return t in e?e[t]:t}function bw(e,t){return yw(e,t.toLowerCase())}const cj=Ys({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:fs,acceptCharset:nt,accessKey:nt,action:null,allow:null,allowFullScreen:je,allowPaymentRequest:je,allowUserMedia:je,alt:null,as:null,async:je,autoCapitalize:null,autoComplete:nt,autoFocus:je,autoPlay:je,blocking:nt,capture:null,charSet:null,checked:je,cite:null,className:nt,cols:Z,colSpan:null,content:null,contentEditable:St,controls:je,controlsList:nt,coords:Z|fs,crossOrigin:null,data:null,dateTime:null,decoding:null,default:je,defer:je,dir:null,dirName:null,disabled:je,download:kp,draggable:St,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:je,formTarget:null,headers:nt,height:Z,hidden:kp,high:Z,href:null,hrefLang:null,htmlFor:nt,httpEquiv:nt,id:null,imageSizes:null,imageSrcSet:null,inert:je,inputMode:null,integrity:null,is:null,isMap:je,itemId:null,itemProp:nt,itemRef:nt,itemScope:je,itemType:nt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:je,low:Z,manifest:null,max:null,maxLength:Z,media:null,method:null,min:null,minLength:Z,multiple:je,muted:je,name:null,nonce:null,noModule:je,noValidate:je,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:je,optimum:Z,pattern:null,ping:nt,placeholder:null,playsInline:je,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:je,referrerPolicy:null,rel:nt,required:je,reversed:je,rows:Z,rowSpan:Z,sandbox:nt,scope:null,scoped:je,seamless:je,selected:je,shadowRootClonable:je,shadowRootDelegatesFocus:je,shadowRootMode:null,shape:null,size:Z,sizes:null,slot:null,span:Z,spellCheck:St,src:null,
253srcDoc:null,srcLang:null,srcSet:null,start:Z,step:null,style:null,tabIndex:Z,target:null,title:null,translate:null,type:null,typeMustMatch:je,useMap:null,value:St,width:Z,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:nt,axis:null,background:null,bgColor:null,border:Z,borderColor:null,bottomMargin:Z,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:je,declare:je,event:null,face:null,frame:null,frameBorder:null,hSpace:Z,leftMargin:Z,link:null,longDesc:null,lowSrc:null,marginHeight:Z,marginWidth:Z,noResize:je,noHref:je,noShade:je,noWrap:je,object:null,profile:null,prompt:null,rev:null,rightMargin:Z,rules:null,scheme:null,scrolling:St,standby:null,summary:null,text:null,topMargin:Z,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Z,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:je,disableRemotePlayback:je,prefix:null,property:null,results:Z,security:null,unselectable:null},space:"html",transform:bw}),dj=Ys({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav
253-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:pn,accentHeight:Z,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Z,amplitude:Z,arabicForm:null,ascent:Z,attributeName:null,attributeType:null,azimuth:Z,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Z,by:null,calcMode:null,capHeight:Z,className:nt,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Z,diffuseConstant:Z,direction:null,display:null,dur:null,divisor:Z,dominantBaseline:null,download:je,dx:null,dy:null,edgeMode:null,editable:null,elevation:Z,enableBackground:null,end:null,event:null,exponent:Z,externalResourcesRequired:null,fill:null,fillOpacity:Z,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:fs,g2:fs,glyphName:fs,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Z,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Z,horizOriginX:Z,horizOriginY:Z,id:null,ideographic:Z,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Z,k:Z,k1:Z,k2:Z,k3:Z,k4:Z,kernelMatrix:pn,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Z,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Z,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,on
253Zoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Z,overlineThickness:Z,paintOrder:null,panose1:null,path:null,pathLength:Z,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:nt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Z,pointsAtY:Z,pointsAtZ:Z,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:pn,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:pn,rev:pn,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:pn,requiredFeatures:pn,requiredFonts:pn,requiredFormats:pn,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Z,specularExponent:Z,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Z,strikethroughThickness:Z,string:null,stroke:null,strokeDashArray:pn,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Z,strokeOpacity:Z,strokeWidth:null,style:null,surfaceScale:Z,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:pn,tabIndex:Z,tableValues:null,target:null,targetX:Z,targetY:Z,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:pn,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Z,underlineThickness:Z,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Z,values:null,vAlphabetic:Z,vMathematical:Z,vectorEffect:null,vHanging:Z,vIdeographic:Z,version:null,vertAdvY:Z,vertOriginX:Z,vertOriginY:Z,viewB
vendor: 4,206 bytes, lines 253-254
253ox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Z,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:yw}),xw=Ys({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}}),ww=Ys({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:bw}),qw=Ys({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),pj={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},mj=/[A-Z]/g,Tg=/-[a-z]/g,fj=/^data[-\w.:]+$/i;function hj(e,t){const n=_p(t);let r=t,i=un;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&fj.test(t)){if(t.charAt(4)==="-"){const s=t.slice(5).replace(Tg,vj);r="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=t.slice(4);if(!Tg.test(s)){let a=s.replace(mj,gj);a.charAt(0)!=="-"&&(a="-"+a),t="data"+a}}i=Of}return new i(r,t)}function gj(e){return"-"+e.toLowerCase()}function vj(e){return e.charAt(1).toUpperCase()}const yj=gw([vw,cj,xw,ww,qw],"html"),Lf=gw([vw,dj,xw,ww,qw],"svg");function bj(e){return e.join(" ").trim()}var Mf={},Ig=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,xj=/\n/g,wj=/^\s*/,qj=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,Sj=/^:\s*/,Aj=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Ej=/^[;\s]*/,_j=/^\s+|\s+$/g,kj=`
254`,Og="/",Lg="*",hi="",Cj="comment",jj="declaration";function Pj(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function i(g){var h=g.match(xj);h&&(n+=h.length);var v=g.lastIndexOf(kj);r=~v?g.length-v:r+g.length}function s(){var g={line:n,column:r};return function(h){return h.position=new a(g),u(),h}}function a(g){this.start=g,this.end={line:n,column:r},this.source=t.source}a.prototype.content=e;function o(g){var h=new Error(t.source+":"+n+":"+r+": "+g);if(h.reason=g,h.filename=t.source,h.line=n,h.column=r,h.source=e,!t.silent)throw h}function l(g){var h=g.exec(e);if(h){var v=h[0];return i(v),e=e.slice(v.length),h}}function u(){l(wj)}function c(g){var h;for(g=g||[];h=p();)h!==!1&&g.push(h);return g}function p(){var g=s();if(!(Og!=e.charAt(0)||Lg!=e.charAt(1))){for(var h=2;hi!=e.charAt(h)&&(Lg!=e.charAt(h)||Og!=e.charAt(h+1));)++h;if(h+=2,hi===e.charAt(h-1))return o("End of comment missing");var v=e.slice(2,h-2);return r+=2,i(v),e=e.slice(h),r+=2,g({type:Cj,comment:v})}}function f(){var g=s(),h=l(qj);if(h){if(p(),!l(Sj))return o("property missing ':'");var v=l(Aj),b=g({type:jj,property:Mg(h[0].replace(Ig,hi)),value:v?Mg(v[0].replace(Ig,hi)):hi});return l(Ej),b}}function m(){var g=[];c(g);for(var h;h=f();)h!==!1&&(g.push(h),c(g));return g}return u(),m()}function Mg(e){return e?e.replace(_j,hi):hi}var Tj=Pj,Ij=br&&br.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Mf,"__esModule",{value:!0});Mf.default=Lj;const Oj=Ij(Tj);function Lj(e,t){let n=null;if(!e||typeof e!="string")return n;const r=(0,Oj.default)(e),i=typeof t=="function";return r.forEach(s=>{if(s.type!=="declaration")return;const{property:a,value:o}=s;i?t(a,o,s):o&&(n=n||{},n[a]=o)}),n}var Zu={};Object.defineProperty(Zu,"__esModule",{value:!0});Zu.camelCase=void 0;var Mj=/^--[a-zA-Z0-9_-]+$/,Nj=/-([a-z])/g,Rj=/^[^-]+$/,$j=/^-(webkit|moz|ms|o|khtml)-/,Dj=/^-(ms)-/,Fj=function(e){return!e||Rj.test(e)||Mj.test(e)},Uj=function(e,t){return t.toUpperCase()},Ng=function(e,t){return"".concat(t,"-")},zj=function(e,t){return t===void 0&&(t={}),Fj(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Dj,Ng):e=e.replace($j,Ng),e.replace(Nj,Uj))};Zu.camelCase=zj;
vendor: 2,843 bytes, line 254
254var Bj=br&&br.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Wj=Bj(Mf),Hj=Zu;function jp(e,t){var n={};return!e||typeof e!="string"||(0,Wj.default)(e,function(r,i){r&&i&&(n[(0,Hj.camelCase)(r,t)]=i)}),n}jp.default=jp;var Vj=jp;const Gj=De(Vj),Sw=Aw("end"),Nf=Aw("start");function Aw(e){return t;function t(n){const r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Kj(e){const t=Nf(e),n=Sw(e);if(t&&n)return{start:t,end:n}}function Fa(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Rg(e.position):"start"in e||"end"in e?Rg(e):"line"in e||"column"in e?Pp(e):""}function Pp(e){return $g(e&&e.line)+":"+$g(e&&e.column)}function Rg(e){return Pp(e&&e.start)+"-"+Pp(e&&e.end)}function $g(e){return e&&typeof e=="number"?e:1}class Qt extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let i="",s={},a=!1;if(n&&("line"in n&&"column"in n?s={place:n}:"start"in n&&"end"in n?s={place:n}:"type"in n?s={ancestors:[n],place:n.position}:s={...n}),typeof t=="string"?i=t:!s.cause&&t&&(a=!0,i=t.message,s.cause=t),!s.ruleId&&!s.source&&typeof r=="string"){const l=r.indexOf(":");l===-1?s.ruleId=r:(s.source=r.slice(0,l),s.ruleId=r.slice(l+1))}if(!s.place&&s.ancestors&&s.ancestors){const l=s.ancestors[s.ancestors.length-1];l&&(s.place=l.position)}const o=s.place&&"start"in s.place?s.place.start:s.place;this.ancestors=s.ancestors||void 0,this.cause=s.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file="",this.message=i,this.line=o?o.line:void 0,this.name=Fa(s.place)||"1:1",this.place=s.place||void 0,this.reason=this.message,this.ruleId=s.ruleId||void 0,this.source=s.source||void 0,this.stack=a&&s.cause&&typeof s.cause.stack=="string"?s.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Qt.prototype.file="";Qt.prototype.name="";Qt.prototype.reason="";Qt.prototype.message="";Qt.prototype.stack="";Qt.prototype.column=void 0;Qt.prototype.line=void 0;Qt.prototype.ancestors=void 0;Qt.prototype.cause=void 0;Qt.prototype.fatal=void 0;Qt.prototype.place=void 0;Qt.prototype.ruleId=void 0;Qt.prototype.source=void 0;const Rf={}.hasOwnProperty,Xj=new Map,Qj=/[A-Z]/g,Jj=new Set(["table","tbody","thead","tfoot","tr"]),Yj=new Set(["td","th"]),Ew="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Zj(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=t.filePath||void 0;let r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=oP(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");
vendor: 6,302 bytes, line 254
254if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=aP(n,t.jsx,t.jsxs)}const i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?Lf:yj,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},s=_w(i,e,void 0);return s&&typeof s!="string"?s:i.create(e,i.Fragment,{children:s||void 0},void 0)}function _w(e,t,n){if(t.type==="element")return eP(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return tP(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return rP(e,t,n);if(t.type==="mdxjsEsm")return nP(e,t);if(t.type==="root")return iP(e,t,n);if(t.type==="text")return sP(e,t)}function eP(e,t,n){const r=e.schema;let i=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(i=Lf,e.schema=i),e.ancestors.push(t);const s=Cw(e,t.tagName,!1),a=lP(e,t);let o=Df(e,t);return Jj.has(t.tagName)&&(o=o.filter(function(l){return typeof l=="string"?!lj(l):!0})),kw(e,a,s,t),$f(a,o),e.ancestors.pop(),e.schema=r,e.create(t,s,a,n)}function tP(e,t){if(t.data&&t.data.estree&&e.evaluater){const r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Ya(e,t.position)}function nP(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Ya(e,t.position)}function rP(e,t,n){const r=e.schema;let i=r;t.name==="svg"&&r.space==="html"&&(i=Lf,e.schema=i),e.ancestors.push(t);const s=t.name===null?e.Fragment:Cw(e,t.name,!0),a=uP(e,t),o=Df(e,t);return kw(e,a,s,t),$f(a,o),e.ancestors.pop(),e.schema=r,e.create(t,s,a,n)}function iP(e,t,n){const r={};return $f(r,Df(e,t)),e.create(t,e.Fragment,r,n)}function sP(e,t){return t.value}function kw(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function $f(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function aP(e,t,n){return r;function r(i,s,a,o){const u=Array.isArray(a.children)?n:t;return o?u(s,a,o):u(s,a)}}function oP(e,t){return n;function n(r,i,s,a){const o=Array.isArray(s.children),l=Nf(r);return t(i,s,a,o,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function lP(e,t){const n={};let r,i;for(i in t.properties)if(i!=="children"&&Rf.call(t.properties,i)){const s=cP(e,i,t.properties[i]);if(s){const[a,o]=s;e.tableCellAlignToStyle&&a==="align"&&typeof o=="string"&&Yj.has(t.tagName)?r=o:n[a]=o}}if(r){const s=n.style||(n.style={});s[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function uP(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const s=r.data.estree.body[0];s.type;const a=s.expression;a.type;const o=a.properties[0];o.type,Object.assign(n,e.evaluater.evaluateExpression(o.argument))}else Ya(e,t.position);else{const i=r.name;let s;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){const o=r.value.data.estree.body[0];o.type,s=e.evaluater.evaluateExpression(o.expression)}else Ya(e,t.position);else s=r.value===null?!0:r.value;n[i]=s}return n}function Df(e,t){const n=[];let r=-1;const i=e.passKeys?new Map:Xj;for(;++r<t.children.length;){const s=t.children[r];let a;if(e.passKeys){const l=s.type==="element"?s.tagName:s.type==="mdxJsxFlowElement"||s.type==="mdxJsxTextElement"?s.name:void 0;if(l){const u=i.get(l)||0;a=l+"-"+u,i.set(l,u+1)}}const o=_w(e,s,a);o!==void 0&&n.push(o)}return n}function cP(e,t,n){const r=hj(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?rj(n):bj(n)),r.property==="style"){let i=typeof n=="object"?n:dP(e,String(n));return e.stylePropertyNameCase==="css"&&(i=pP(i)),["style",i]}return[e.elementAttributeNameCase==="react"&&r.space?pj[r.property]||r.property:r.attribute,n]}}function dP(e,t){try{return Gj(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};const r=n,i=new Qt("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw i.file=e.filePath||void 0,i.url=Ew+"#cannot-parse-style-attribute",i}}function Cw(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){const i=t.split(".");let s=-1,a;for(;++s<i.length;){const o=Cg(i[s])?{type:"Identifier",name:i[s]}:{type:"Literal",value:i[s]};a=a?{type:"MemberExpression",object:a,property:o,computed:!!(s&&o.type==="Literal"),optional:!1}:o}r=a}else r=Cg(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){const i=r.value;return Rf.call(e.components,i)?e.components[i]:i}if(e.evaluater)return e.evaluater.evaluateExpression(r);Ya(e)}function Ya(e,t){const n=new Qt("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=e.filePath||void 0,n.url=Ew+"#cannot-handle-mdx-estrees-without-createevaluater",n}function pP(e){const t={};let n;for(n in e)Rf.call(e,n)&&(t[mP(n)]=e[n]);return t}function mP(e){let t=e.replace(Qj,fP);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function fP(e){return"-"+e.toLowerCase()}const cd={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},hP={};function gP(e,t){const n=hP,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return jw(e,r,i)}function jw(e,t,n){if(vP(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return Dg(e.children,t,n)}return Array.isArray(e)?Dg(e,t,n):""}function Dg(e,t,n){const r=[];let i=-1;for(;++i<e.length;)r[i]=jw(e[i],t,n);return r.join("")}function vP(e){return!!(e&&typeof e=="object")}const Fg=document.createElement("i");function Ff(e){const t="&"+e+";";Fg.innerHTML=t;const n=Fg.textContent;
vendor: 10,880 bytes, line 254
254return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function lr(e,t,n,r){const i=e.length;let s=0,a;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(t,n),e.splice(...a);else for(n&&e.splice(t,n);s<r.length;)a=r.slice(s,s+1e4),a.unshift(t,0),e.splice(...a),s+=1e4,t+=1e4}function _n(e,t){return e.length>0?(lr(e,e.length,0,t),e):t}const Ug={}.hasOwnProperty;function yP(e){const t={};let n=-1;for(;++n<e.length;)bP(t,e[n]);return t}function bP(e,t){let n;for(n in t){const i=(Ug.call(e,n)?e[n]:void 0)||(e[n]={}),s=t[n];let a;if(s)for(a in s){Ug.call(i,a)||(i[a]=[]);const o=s[a];xP(i[a],Array.isArray(o)?o:o?[o]:[])}}}function xP(e,t){let n=-1;const r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);lr(e,0,0,r)}function Pw(e,t){const n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function hs(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const rr=Yr(/[A-Za-z]/),yn=Yr(/[\dA-Za-z]/),wP=Yr(/[#-'*+\--9=?A-Z^-~]/);function Tp(e){return e!==null&&(e<32||e===127)}const Ip=Yr(/\d/),qP=Yr(/[\dA-Fa-f]/),SP=Yr(/[!-/:-@[-`{-~]/);function Se(e){return e!==null&&e<-2}function ln(e){return e!==null&&(e<0||e===32)}function ze(e){return e===-2||e===-1||e===32}const AP=Yr(new RegExp("\\p{P}|\\p{S}","u")),EP=Yr(/\s/);function Yr(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function Zs(e){const t=[];let n=-1,r=0,i=0;for(;++n<e.length;){const s=e.charCodeAt(n);let a="";if(s===37&&yn(e.charCodeAt(n+1))&&yn(e.charCodeAt(n+2)))i=2;else if(s<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(s))||(a=String.fromCharCode(s));else if(s>55295&&s<57344){const o=e.charCodeAt(n+1);s<56320&&o>56319&&o<57344?(a=String.fromCharCode(s,o),i=1):a="�"}else a=String.fromCharCode(s);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+i+1,a=""),i&&(n+=i,i=0)}return t.join("")+e.slice(r)}function it(e,t,n,r){const i=r?r-1:Number.POSITIVE_INFINITY;let s=0;return a;function a(l){return ze(l)?(e.enter(n),o(l)):t(l)}function o(l){return ze(l)&&s++<i?(e.consume(l),o):(e.exit(n),t(l))}}const _P={tokenize:kP};function kP(e){const t=e.attempt(this.parser.constructs.contentInitial,r,i);let n;return t;function r(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),it(e,t,"linePrefix")}function i(o){return e.enter("paragraph"),s(o)}function s(o){const l=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=l),n=l,a(o)}function a(o){if(o===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(o);return}return Se(o)?(e.consume(o),e.exit("chunkText"),s):(e.consume(o),a)}}const CP={tokenize:jP},zg={tokenize:PP};function jP(e){const t=this,n=[];let r=0,i,s,a;return o;function o(y){if(r<n.length){const A=n[r];return t.containerState=A[1],e.attempt(A[0].continuation,l,u)(y)}return u(y)}function l(y){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,i&&w();const A=t.events.length;let q=A,x;for(;q--;)if(t.events[q][0]==="exit"&&t.events[q][1].type==="chunkFlow"){x=t.events[q][1].end;break}b(r);let _=A;for(;_<t.events.length;)t.events[_][1].end={...x},_++;return lr(t.events,q+1,0,t.events.slice(A)),t.events.length=_,u(y)}return o(y)}function u(y){if(r===n.length){if(!i)return f(y);if(i.currentConstruct&&i.currentConstruct.concrete)return g(y);t.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(zg,c,p)(y)}function c(y){return i&&w(),b(r),f(y)}function p(y){return t.parser.lazy[t.now().line]=r!==n.length,a=t.now().offset,g(y)}function f(y){return t.containerState={},e.attempt(zg,m,g)(y)}function m(y){return r++,n.push([t.currentConstruct,t.containerState]),f(y)}function g(y){if(y===null){i&&w(),b(0),e.consume(y);return}return i=i||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:i,contentType:"flow",previous:s}),h(y)}function h(y){if(y===null){v(e.exit("chunkFlow"),!0),b(0),e.consume(y);return}return Se(y)?(e.consume(y),v(e.exit("chunkFlow")),r=0,t.interrupt=void 0,o):(e.consume(y),h)}function v(y,A){const q=t.sliceStream(y);if(A&&q.push(null),y.previous=s,s&&(s.next=y),s=y,i.defineSkip(y.start),i.write(q),t.parser.lazy[y.start.line]){let x=i.events.length;for(;x--;)if(i.events[x][1].start.offset<a&&(!i.events[x][1].end||i.events[x][1].end.offset>a))return;const _=t.events.length;let I=_,S,k;for(;I--;)if(t.events[I][0]==="exit"&&t.events[I][1].type==="chunkFlow"){if(S){k=t.events[I][1].end;break}S=!0}for(b(r),x=_;x<t.events.length;)t.events[x][1].end={...k},x++;lr(t.events,I+1,0,t.events.slice(_)),t.events.length=x}}function b(y){let A=n.length;for(;A-- >y;){const q=n[A];t.containerState=q[1],q[0].exit.call(t,e)}n.length=y}function w(){i.write([null]),s=void 0,i=void 0,t.containerState._closeFlow=void 0}}function PP(e,t,n){return it(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Bg(e){if(e===null||ln(e)||EP(e))return 1;if(AP(e))return 2}function Uf(e,t,n){const r=[];let i=-1;for(;++i<e.length;){const s=e[i].resolveAll;s&&!r.includes(s)&&(t=s(t,n),r.push(s))}return t}const Op={name:"attention",resolveAll:TP,tokenize:IP};function TP(e,t){let n=-1,r,i,s,a,o,l,u,c;for(;++n<e.length;)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){for(r=n;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;l=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const p={...e[r][1].end},f={...e[n][1].start};Wg(p,-l),Wg(f,l),a={type:l>1?"strongSequence":"emphasisSequence",start:p,end:{...e[r][1].end}},o={type:l>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:f},s={type:l>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},i={type:l>1?"strong":"emphasis",start:{...a.start},end:{...o.end}},e[r][1].end={...a.start},e[n][1].start={...o.end},u=[],e[r][1].end.offset-e[r][1].start.offset&&(u=_n(u,[["enter",e[r][1],t],["exit",e[r][1],t]])),u=_n(u,[["enter",i,t],["enter",a,t],["exit",a,t],["enter",s,t]]),u=_n(u,Uf(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=_n(u,[["exit",s,t],["enter",o,t],["exit",o,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset?(c=2,u=_n(u,[["enter",e[n][1],t],["exit",e[n][1],t]])):c=0,lr(e,r-1,n-r+3,u),n=r+u.length-c-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function IP(e,t){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=Bg(r);let s;return a;function a(l){return s=l,e.enter("attentionSequence"),o(l)}function o(l){if(l===s)return e.consume(l),o;const u=e.exit("attentionSequence"),c=Bg(l),p=!c||c===2&&i||n.includes(l),f=!i||i===2&&c||n.includes(r);return u._open=!!(s===42?p:p&&(i||!f)),u._close=!!(s===42?f:f&&(c||!p)),t(l)}}function Wg(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const OP={name:"autolink",tokenize:LP};function LP(e,t,n){let r=0;return i;function i(m){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),s}function s(m){return rr(m)?(e.consume(m),a):m===64?n(m):u(m)}function a(m){return m===43||m===45||m===46||yn(m)?(r=1,o(m)):u(m)}function o(m){return m===58?(e.consume(m),r=0,l):(m===43||m===45||m===46||yn(m))&&r++<32?(e.consume(m),o):(r=0,u(m))}function l(m){return m===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.exit("autolink"),t):m===null||m===32||m===60||Tp(m)?n(m):(e.consume(m),l)}function u(m){return m===64?(e.consume(m),c):wP(m)?(e.consume(m),u):n(m)}function c(m){return yn(m)?p(m):n(m)}function p(m){return m===46?(e.consume(m),r=0,c):m===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.exit("autolink"),t):f(m)}function f(m){if((m===45||yn(m))&&r++<63){const g=m===45?f:p;return e.consume(m),g}return n(m)}}const ec={partial:!0,tokenize:MP};function MP(e,t,n){return r;function r(s){return ze(s)?it(e,i,"linePrefix")(s):i(s)}function i(s){return s===null||Se(s)?t(s):n(s)}}const Tw={continuation:{tokenize:RP},exit:$P,name:"blockQuote",tokenize:NP};function NP(e,t,n){const r=this;return i;function i(a){if(a===62){const o=r.containerState;return o.open||(e.enter("blockQuote",{_container:!0}),o.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(a),e.exit("blockQuoteMarker"),s}return n(a)}function s(a){return ze(a)?(e.enter("blockQuotePrefixWhitespace"),e.consume(a),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(a))}}function RP(e,t,n){const r=this;return i;function i(a){return ze(a)?it(e,s,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a):s(a)}function s(a){return e.attempt(Tw,t,n)(a)}}function $P(e){e.exit("blockQuote")}const Iw={name:"characterEscape",tokenize:DP};function DP(e,t,n){return r;function r(s){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(s),e.exit("escapeMarker"),i}function i(s){return SP(s)?(e.enter("characterEscapeValue"),e.consume(s),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(s)}}const Ow={name:"characterReference",tokenize:FP};function FP(e,t,n){const r=this;let i=0,s,a;return o;function o(p){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(p),e.exit("characterReferenceMarker"),l}function l(p){return p===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(p),e.exit("characterReferenceMarkerNumeric"),u):(e.enter("characterReferenceValue"),s=31,a=yn,c(p))}function u(p){return p===88||p===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(p),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),s=6,a=qP,c):(e.enter("characterReferenceValue"),s=7,a=Ip,c(p))}function c(p){if(p===59&&i){const f=e.exit("characterReferenceValue");return a===yn&&!Ff(r.sliceSerialize(f))?n(p):(e.enter("characterReferenceMarker"),e.consume(p),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return a(p)&&i++<s?(e.consume(p),c):n(p)}}const Hg={partial:!0,tokenize:zP},Vg={concrete:!0,name:"codeFenced",tokenize:UP};function UP(e,t,n){const r=this,i={partial:!0,tokenize:q};let s=0,a=0,o;return l;function l(x){return u(x)}function u(x){const _=r.events[r.events.length-1];return s=_&&_[1].type==="linePrefix"?_[2].sliceSerialize(_[1],!0).length:0,o=x,e.enter("co
254deFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),c(x)}function c(x){return x===o?(a++,e.consume(x),c):a<3?n(x):(e.exit("codeFencedFenceSequence"),ze(x)?it(e,p,"whitespace")(x):p(x))}function p(x){return x===null||Se(x)?(e.exit("codeFencedFence"),r.interrupt?t(x):e.check(Hg,h,A)(x)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),f(x))}function f(x){return x===null||Se(x)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),p(x)):ze(x)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),it(e,m,"whitespace")(x)):x===96&&x===o?n(x):(e.consume(x),f)}function m(x){return x===null||Se(x)?p(x):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),g(x))}function g(x){return x===null||Se(x)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),p(x)):x===96&&x===o?n(x):(e.consume(x),g)}function h(x){return e.attempt(i,A,v)(x)}function v(x){return e.enter("lineEnding"),e.consume(x),e.exit("lineEnding"),b}function b(x){return s>0&&ze(x)?it(e,w,"linePrefix",s+1)(x):w(x)}function w(x){return x===null||Se(x)?e.check(Hg,h,A)(x):(e.enter("codeFlowValue"),y(x))}function y(x){return x===null||Se(x)?(e.exit("codeFlowValue"),w(x)):(e.consume(x),y)}function A(x){return e.exit("codeFenced"),t(x)}function q(x,_,I){let S=0;return k;function k(N){return x.enter("lineEnding"),x.consume(N),x.exit("lineEnding"),C}function C(N){return x.enter("codeFencedFence"),ze(N)?it(x,T,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(N):T(N)}function T(N){return N===o?(x.enter("codeFencedFenceSequence"),M(N)):I(N)}function M(N){return N===o?(S++,x.consume(N),M):S>=a?(x.exit("codeFencedFenceSequence"),ze(N)?it(x,L,"whitespace")(N):L(N)):I(N)}function L(N){return N===null||Se(N)?(x.exit("codeFencedFence"),_(N)):I(N)}}}function zP(e,t,n){const r=this;return i;function i(a){return a===null?n(a):(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),s)}function s(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}const dd={name:"codeIndented",tokenize:WP},BP={partial:!0,tokenize:HP};function WP(e,t,n){const r=this;return i;function i(u){return e.enter("codeIndented"),it(e,s,"linePrefix",5)(u)}function s(u){const c=r.events[r.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?a(u):n(u)}function a(u){return u===null?l(u):Se(u)?e.attempt(BP,a,l)(u):(e.enter("codeFlowValue"),o(u))}function o(u){return u===null||Se(u)?(e.exit("codeFlowValue"),a(u)):(e.consume(u),o)}function l(u){return e.exit("codeIndented"),t(u)}}function HP(e,t,n){const r=this;return i;function i(a){return r.parser.lazy[r.now().line]?n(a):Se(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),i):it(e,s,"linePrefix",5)(a)}function s(a){const o=r.events[r.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(a):Se(a)?i(a):n(a)}}const VP={name:"codeText",previous:KP,resolve:GP,tokenize:XP};function GP(e){let t=e.length-4,n=3,r,i;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r<t;)if(e[r][1].type==="codeTextData"){e[n][1].type="codeTextPadding",e[t][1].type="codeTextPadding",n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)i===void 0?r!==t&&e[r][1].type!=="lineEnding"&&(i=r):(r===t||e[r][1].type==="lineEnding")&&(e[i][1].type="codeTextData",r!==i+2&&(e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2),i=void 0);return e}function KP(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function XP(e,t,n){let r=0,i,s;return a;function a(p){return e.enter("codeText"),e.enter("codeTextSequence"),o(p)}function o(p){return p===96?(e.consume(p),r++,o):(e.exit("codeTextSequence"),l(p))}function l(p){return p===null?n(p):p===32?(e.enter("space"),e.consume(p),e.exit("space"),l):p===96?(s=e.enter("codeTextSequence"),i=0,c(p)):Se(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),l):(e.enter("codeTextData"),u(p))}function u(p){return p===null||p===32||p===96||Se(p)?(e.exit("codeTextData"),l(p)):(e.consume(p),u)}function c(p){return p===96?(e.consume(p),i++,c):i===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(p)):(s.type="codeTextData",u(p))}}class QP{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,n){const r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(t,r):t>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){const i=n||0;this.setCursor(Math.trunc(t));const s=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return r&&ba(this.left,r),s.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),ba(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),ba(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){const n=this.left.splice(t,Number.POSITIVE_INFINITY);ba(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);ba(this.left,n.reverse())}}}function ba(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function Lw(e){const t={};let n=-1,r,i,s,a,o,l,u;const c=new QP(e);for(;++n<c.length;){for(;n in t;)n=t[n];if(r=c.get(n),n&&r[1].type==="chunkFlow"&&c.get(n-1)[1].type==="listItemPrefix"&&(l=r[1]._tokenizer.events,s=0,s<l.length&&l[s][1].type==="lineEndingBlank"&&(s+=2),s<l.length&&l[s][1].type==="content"))for(;++s<l.length&&l[s][1].type!=="content";)l[s][1].type==="chunkText"&&(l[s][1]._isInFirstContentOfListItem=!0,s++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,JP(c,n)),n=t[n],u=!0);else if(r[1]._container){for(s=n,i=void 0;s--;)if(a=c.get(s),a[1].type==="lineEnding"||a[1].type==="lineEndingBlank")a[0]==="enter"&&(i&&(c.get(i)[1].type="lineEndingBlank"),a[1].type="lineEnding",i=s);else if(!(a[1].type==="linePrefix"||a[1].type==="listItemIndent"))break;i&&(r[1].end={...c.get(i)[1].start},o=c.slice(i,n),o.unshift(r),c.splice(i,n-i+1,o))}}return lr(e,0,Number.POSITIVE_INFINITY,c.slice(0)),!u}function JP(e,t){const n=e.get(t)[1],r=e.get(t)[2];let i=t-1;const s=[];let a=n._tokenizer;a||(a=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(a._contentTypeTextTrailing=!0));const o=a.events,l=[],u={};let c,p,f=-1,m=n,g=0,h=0;const v=[h];for(;m;){for(;e.get(++i)[1]!==m;);s.push(i),m._tokenizer||(c=r.sliceStream(m),m.next||c.push(null),p&&a.defineSki
vendor: 18,552 bytes, line 254
254p(m.start),m._isInFirstContentOfListItem&&(a._gfmTasklistFirstContentOfListItem=!0),a.write(c),m._isInFirstContentOfListItem&&(a._gfmTasklistFirstContentOfListItem=void 0)),p=m,m=m.next}for(m=n;++f<o.length;)o[f][0]==="exit"&&o[f-1][0]==="enter"&&o[f][1].type===o[f-1][1].type&&o[f][1].start.line!==o[f][1].end.line&&(h=f+1,v.push(h),m._tokenizer=void 0,m.previous=void 0,m=m.next);for(a.events=[],m?(m._tokenizer=void 0,m.previous=void 0):v.pop(),f=v.length;f--;){const b=o.slice(v[f],v[f+1]),w=s.pop();l.push([w,w+b.length-1]),e.splice(w,2,b)}for(l.reverse(),f=-1;++f<l.length;)u[g+l[f][0]]=g+l[f][1],g+=l[f][1]-l[f][0]-1;return u}const YP={resolve:eT,tokenize:tT},ZP={partial:!0,tokenize:nT};function eT(e){return Lw(e),e}function tT(e,t){let n;return r;function r(o){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),i(o)}function i(o){return o===null?s(o):Se(o)?e.check(ZP,a,s)(o):(e.consume(o),i)}function s(o){return e.exit("chunkContent"),e.exit("content"),t(o)}function a(o){return e.consume(o),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,i}}function nT(e,t,n){const r=this;return i;function i(a){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),it(e,s,"linePrefix")}function s(a){if(a===null||Se(a))return n(a);const o=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(a):e.interrupt(r.parser.constructs.flow,n,t)(a)}}function Mw(e,t,n,r,i,s,a,o,l){const u=l||Number.POSITIVE_INFINITY;let c=0;return p;function p(b){return b===60?(e.enter(r),e.enter(i),e.enter(s),e.consume(b),e.exit(s),f):b===null||b===32||b===41||Tp(b)?n(b):(e.enter(r),e.enter(a),e.enter(o),e.enter("chunkString",{contentType:"string"}),h(b))}function f(b){return b===62?(e.enter(s),e.consume(b),e.exit(s),e.exit(i),e.exit(r),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),m(b))}function m(b){return b===62?(e.exit("chunkString"),e.exit(o),f(b)):b===null||b===60||Se(b)?n(b):(e.consume(b),b===92?g:m)}function g(b){return b===60||b===62||b===92?(e.consume(b),m):m(b)}function h(b){return!c&&(b===null||b===41||ln(b))?(e.exit("chunkString"),e.exit(o),e.exit(a),e.exit(r),t(b)):c<u&&b===40?(e.consume(b),c++,h):b===41?(e.consume(b),c--,h):b===null||b===32||b===40||Tp(b)?n(b):(e.consume(b),b===92?v:h)}function v(b){return b===40||b===41||b===92?(e.consume(b),h):h(b)}}function Nw(e,t,n,r,i,s){const a=this;let o=0,l;return u;function u(m){return e.enter(r),e.enter(i),e.consume(m),e.exit(i),e.enter(s),c}function c(m){return o>999||m===null||m===91||m===93&&!l||m===94&&!o&&"_hiddenFootnoteSupport"in a.parser.constructs?n(m):m===93?(e.exit(s),e.enter(i),e.consume(m),e.exit(i),e.exit(r),t):Se(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),p(m))}function p(m){return m===null||m===91||m===93||Se(m)||o++>999?(e.exit("chunkString"),c(m)):(e.consume(m),l||(l=!ze(m)),m===92?f:p)}function f(m){return m===91||m===92||m===93?(e.consume(m),o++,p):p(m)}}function Rw(e,t,n,r,i,s){let a;return o;function o(f){return f===34||f===39||f===40?(e.enter(r),e.enter(i),e.consume(f),e.exit(i),a=f===40?41:f,l):n(f)}function l(f){return f===a?(e.enter(i),e.consume(f),e.exit(i),e.exit(r),t):(e.enter(s),u(f))}function u(f){return f===a?(e.exit(s),l(a)):f===null?n(f):Se(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),it(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===a||f===null||Se(f)?(e.exit("chunkString"),u(f)):(e.consume(f),f===92?p:c)}function p(f){return f===a||f===92?(e.consume(f),c):c(f)}}function Ua(e,t){let n;return r;function r(i){return Se(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r):ze(i)?it(e,r,n?"linePrefix":"lineSuffix")(i):t(i)}}const rT={name:"definition",tokenize:sT},iT={partial:!0,tokenize:aT};function sT(e,t,n){const r=this;let i;return s;function s(m){return e.enter("definition"),a(m)}function a(m){return Nw.call(r,e,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(m)}function o(m){return i=hs(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),m===58?(e.enter("definitionMarker"),e.consume(m),e.exit("definitionMarker"),l):n(m)}function l(m){return ln(m)?Ua(e,u)(m):u(m)}function u(m){return Mw(e,c,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(m)}function c(m){return e.attempt(iT,p,p)(m)}function p(m){return ze(m)?it(e,f,"whitespace")(m):f(m)}function f(m){return m===null||Se(m)?(e.exit("definition"),r.parser.defined.push(i),t(m)):n(m)}}function aT(e,t,n){return r;function r(o){return ln(o)?Ua(e,i)(o):n(o)}function i(o){return Rw(e,s,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function s(o){return ze(o)?it(e,a,"whitespace")(o):a(o)}function a(o){return o===null||Se(o)?t(o):n(o)}}const oT={name:"hardBreakEscape",tokenize:lT};function lT(e,t,n){return r;function r(s){return e.enter("hardBreakEscape"),e.consume(s),i}function i(s){return Se(s)?(e.exit("hardBreakEscape"),t(s)):n(s)}}const uT={name:"headingAtx",resolve:cT,tokenize:dT};function cT(e,t){let n=e.length-2,r=3,i,s;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},s={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},lr(e,r,n-r+1,[["enter",i,t],["enter",s,t],["exit",s,t],["exit",i,t]])),e}function dT(e,t,n){let r=0;return i;function i(c){return e.enter("atxHeading"),s(c)}function s(c){return e.enter("atxHeadingSequence"),a(c)}function a(c){return c===35&&r++<6?(e.consume(c),a):c===null||ln(c)?(e.exit("atxHeadingSequence"),o(c)):n(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||Se(c)?(e.exit("atxHeading"),t(c)):ze(c)?it(e,o,"whitespace")(c):(e.enter("atxHeadingText"),u(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function u(c){return c===null||c===35||ln(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),u)}}const pT=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Gg=["pre","script","style","textarea"],mT={concrete:!0,name:"htmlFlow",resolveTo:gT,tokenize:vT},fT={partial:!0,tokenize:bT},hT={partial:!0,tokenize:yT};function gT(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function vT(e,t,n){const r=this;let i,s,a,o,l;return u;function u(P){return c(P)}function c(P){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(P),p}function p(P){return P===33?(e.consume(P),f):P===47?(e.consume(P),s=!0,h):P===63?(e.consume(P),i=3,r.interrupt?t:j):rr(P)?(e.consume(P),a=String.fromCharCode(P),v):n(P)}function f(P){return P===45?(e.consume(P),i=2,m):P===91?(e.consume(P),i=5,o=0,g):rr(P)?(e.consume(P),i=4,r.interrupt?t:j):n(P)}function m(P){return P===45?(e.consume(P),r.interrupt?t:j):n(P)}function g(P){const G="CDATA[";return P===G.charCodeAt(o++)?(e.consume(P),o===G.length?r.interrupt?t:T:g):n(P)}function h(P){return rr(P)?(e.consume(P),a=String.fromCharCode(P),v):n(P)}function v(P){if(P===null||P===47||P===62||ln(P)){const G=P===47,ae=a.toLowerCase();return!G&&!s&&Gg.includes(ae)?(i=1,r.interrupt?t(P):T(P)):pT.includes(a.toLowerCase())?(i=6,G?(e.consume(P),b):r.interrupt?t(P):T(P)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(P):s?w(P):y(P))}return P===45||yn(P)?(e.consume(P),a+=String.fromCharCode(P),v):n(P)}function b(P){return P===62?(e.consume(P),r.interrupt?t:T):n(P)}function w(P){return ze(P)?(e.consume(P),w):k(P)}function y(P){return P===47?(e.consume(P),k):P===58||P===95||rr(P)?(e.consume(P),A):ze(P)?(e.consume(P),y):k(P)}function A(P){return P===45||P===46||P===58||P===95||yn(P)?(e.consume(P),A):q(P)}function q(P){return P===61?(e.consume(P),x):ze(P)?(e.consume(P),q):y(P)}function x(P){return P===null||P===60||P===61||P===62||P===96?n(P):P===34||P===39?(e.consume(P),l=P,_):ze(P)?(e.consume(P),x):I(P)}function _(P){return P===l?(e.consume(P),l=null,S):P===null||Se(P)?n(P):(e.consume(P),_)}function I(P){return P===null||P===34||P===39||P===47||P===60||P===61||P===62||P===96||ln(P)?q(P):(e.consume(P),I)}function S(P){return P===47||P===62||ze(P)?y(P):n(P)}function k(P){return P===62?(e.consume(P),C):n(P)}function C(P){return P===null||Se(P)?T(P):ze(P)?(e.consume(P),C):n(P)}function T(P){return P===45&&i===2?(e.consume(P),R):P===60&&i===1?(e.consume(P),$):P===62&&i===4?(e.consume(P),J):P===63&&i===3?(e.consume(P),j):P===93&&i===5?(e.consume(P),D):Se(P)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(fT,z,M)(P)):P===null||Se(P)?(e.exit("htmlFlowData"),M(P)):(e.consume(P),T)}function M(P){return e.check(hT,L,z)(P)}function L(P){return e.enter("lineEnding"),e.consume(P),e.exit("lineEnding"),N}function N(P){return P===null||Se(P)?M(P):(e.enter("htmlFlowData"),T(P))}function R(P){return P===45?(e.consume(P),j):T(P)}function $(P){return P===47?(e.consume(P),a="",B):T(P)}function B(P){if(P===62){const G=a.toLowerCase();return Gg.includes(G)?(e.consume(P),J):T(P)}return rr(P)&&a.length<8?(e.consume(P),a+=String.fromCharCode(P),B):T(P)}function D(P){return P===93?(e.consume(P),j):T(P)}function j(P){return P===62?(e.consume(P),J):P===45&&i===2?(e.consume(P),j):T(P)}function J(P){return P===null||Se(P)?(e.exit("htmlFlowData"),z(P)):(e.consume(P),J)}function z(P){return e.exit("htmlFlow"),t(P)}}function yT(e,t,n){const r=this;return i;function i(a){return Se(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),s):n(a)}function s(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}function bT(e,t,n){return r;function r(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(ec,t,n)}}const xT={name:"htmlText",tokenize:wT};function wT(e,t,n){const r=this;let i,s,a;return o;function o(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),l}function l(j){return j===33?(e.consume(j),u):j===47?(e.consume(j),q):j===63?(e.consume(j),y):rr(j)?(e.consume(j),I):n(j)}function u(j){return j===45?(e.consume(j),c):j===91?(e.consume(j),s=0,g):rr(j)?(e.consume(j),w):n(j)}function c(j){return j===45?(e.consume(j),m):n(j)}function p(j){return j===null?n(j):j===45?(e.consume(j),f):Se(j)?(a=p,$(j)):(e.consume(j),p)}function f(j){return j===45?(e.consume(j),m):p(j)}function m(j){return j===62?R(j):j===45?f(j):p(j)}function g(j){const J="CDATA[";return j===J.charCodeAt(s++)?(e.consume(j),s===J.length?h:g):n(j)}function h(j){return j===null?n(j):j===93?(e.consume(j),v):Se(j)?(a=h,$(j)):(e.consume(j),h)}function v(j){return j===93?(e.consume(j),b):h(j)}function b(j){return j===62?R(j):j===93?(e.consume(j),b):h(j)}function w(j){return j===null||j===62?R(j):Se(j)?(a=w,$(j)):(e.consume(j),w)}function y(j){return j===null?n(j):j===63?(e.consume(j),A):Se(j)?(a=y,$(j)):(e.consume(j),y)}function A(j){return j===62?R(j):y(j)}function q(j){return rr(j)?(e.consume(j),x):n(j)}function x(j){return j===45||yn(j)?(e.consume(j),x):_(j)}function _(j){return Se(j)?(a=_,$(j)):ze(j)?(e.consume(j),_):R(j)}function I(j){return j===45||yn(j)?(e.consume(j),I):j===47||j===62||ln(j)?S(j):n(j)}function S(j){return j===47?(e.consume(j),R):j===58||j===95||rr(j)?(e.consume(j),k):Se(j)?(a=S,$(j)):ze(j)?(e.consume(j),S):R(j)}function k(j){return j===45||j===46||j===58||j===95||yn(j)?(e.consume(j),k):C(j)}function C(j){return j===61?(e.consume(j),T):Se(j)?(a=C,$(j)):ze(j)?(e.consume(j),C):S(j)}function T(j){return j===null||j===60||j===61||j===62||j===96?n(j):j===34||j===39?(e.consume(j),i=j,M):Se(j)?(a=T,$(j)):ze(j)?(e.consume(j),T):(e.consume(j),L)}function M(j){return j===i?(e.consume(j),i=void 0,N):j===null?n(j):Se(j)?(a=M,$(j)):(e.consume(j),M)}function L(j){return j===null||j===34||j===39||j===60||j===61||j===96?n(j):j===47||j===62||ln(j)?S(j):(e.consume(j),L)}function N(j){return j===47||j===62||ln(j)?S(j):n(j)}function R(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),t):n(j)}function $(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),B}function B(j){return ze(j)?it(e,D,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):D(j)}function D(j){return e.enter("htmlTextData"),a(j)}}const zf={name:"labelEnd",resolveAll:ET,resolveTo:_T,tokenize:kT},qT={tokenize:CT},ST={tokenize:jT},AT={tokenize:PT};function ET(e){let t=-1;const n=[];for(;++t<e.length;){const r=e[t][1];if(n.push(e[t]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const i=r.type==="labelImage"?4:2;r.type="data",t+=i}}return e.length!==n.length&&lr(e,0,e.length,n),e}function _T(e,t){let n=e.length,r=0,i,s,a,o;for(;n--;)if(i=e[n][1],s){if(i.type==="link"||i.type==="labelLink"&&i._inactive)break;e[n][0]==="enter"&&i.type==="labelLink"&&(i._inactive=!0)}else if(a){if(e[n][0]==="enter"&&(i.type==="labelImage"||i.type==="labelLink")&&!i._balanced&&(s=n,i.type!=="labelLink")){r=2;break}}else i.type==="labelEnd"&&(a=n);const l={type:e[s][1].type==="labelLink"?"link":"image",start:{...e[s][1].start},end:{...e[e.length-1][1].end}},u={type:"label",start:{...e[s][1].start},end:{...e[a][1].end}},c={type:"labelText",start:{...e[s+r+2][1].end},end:{...e[a-2][1].start}};return o=[["enter",l,t],["enter",u,t]],o=_n(o,e.slice(s+1,s+r+3)),o=_n(o,[["enter",c,t]]),o=_n(o,Uf(t.parser.constructs.insideSpan.null,e.slice(s+r+4,a-3),t)),o=_n(o,[["exit",c,t],e[a-2],e[a-1],["exit",u,t]]),o=_n(o,e.slice(a+1)),o=_n(o,[["exit",l,t]]),lr(e,s,e.length,o),e}function kT(e,t,n){const r=this;let i=r.events.length,s,a;for(;i--;)if((r.events[i][1].type==="labelImage"||r.events[i][1].type==="labelLink")&&!r.events[i][1]._balanced){s=r.events[i][1];break}return o;function o(f){return s?s._inactive?p(f):(a=r.parser.defined.includes(hs(r.sliceSerialize({start:s.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(f),e.exit("labelMarker"),e.exit("labelEnd"),l):n(f)}function l(f){return f===40?e.attempt(qT,c,a?c:p)(f):f===91?e.attempt(ST,c,a?u:p)(f):a?c(f):p(f)}function u(f){return e.attempt(AT,c,p)(f)}function c(f){return t(f)}function p(f){return s._balanced=!0,n(f)}}function CT(e,t,n){return r;function r(p){return e.enter("resource"),e.enter("resourceMarker"),e.consume(p),e.exit("resourceMarker"),i}function i(p){return ln(p)?Ua(e,s)(p):s(p)}function s(p){return p===41?c(p):Mw(e,a,o,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(p)}function a(p){return ln(p)?Ua(e,l)(p):c(p)}function o(p){return n(p)}function l(p){return p===34||p===39||p===40?Rw(e,u,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(p):c(p)}function u(p){return ln(p)?Ua(e,c)(p):c(p)}function c(p){return p===41?(e.enter("resourceMarker"),e.consume(p),e.exit("resourceMarker"),e.exit("resource"),t):n(p)}}function jT(e,t,n){const r=this;return i;function i(o){return Nw.call(r,e,s,a,"reference","referenceMarker","referenceString")(o)}function s(o){return r.parser.defined.includes(hs(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(o):n(o)}function a(o){return n(o)}}function PT(e,t,n){return r;function r(s){return e.enter("reference"),e.enter("referenceMarker"),e.consume(s),e.exit("referenceMarker"),i}function i(s){return s===93?(e.enter("referenceMarker"),e.consume(s),e.exit("referenceMarker"),e.exit("reference"),t):n(s)}}const TT={name:"labelStartImage",resolveAll:zf.resolveAll,tokenize:IT};function IT(e,t,n){const r=this;return i;function i(o){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(o),e.exit("labelImageMarker"),s}function s(o){return o===91?(e.enter("labelMarker"),e.consume(o),e.exit("labelMarker"),e.exit("labelImage"),a):n(o)}function a(o){return o===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(o):t(o)}}const OT={name:"labelStartLink",resolveAll:zf.resolveAll,tokenize:LT};function LT(e,t,n){const r=this;return i;function i(a){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(a),e.exit("labelMarker"),e.exit("labelLink"),s}function s(a){return a===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(a):t(a)}}const pd={name:"lineEnding",tokenize:MT};function MT(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),it(e,t,"linePrefix")}}const Ul={name:"thematicBreak",tokenize:NT};function NT(e,t,n){let r=0,i;return s;function s(u){return e.enter("thematicBreak"),a(u)}function a(u){return i=u,o(u)}function o(u){return u===i?(e.enter("thematicBreakSequence"),l(u)):r>=3&&(u===null||Se(u))?(e.exit("thematicBreak"),t(u)):n(u)}function l(u){return u===i?(e.consume(u),r++,l):(e.exit("thematicBreakSequence"),ze(u)?it(e,o,"whitespace")(u):o(u))}}const sn={continuation:{tokenize:FT},exit:zT,name:"list",tokenize:DT},RT={partial:!0,tokenize:BT},$T={partial:!0,tokenize:UT};function DT(e,t,n){const r=this,i=r.events[r.events.length-1];let s=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,a=0;return o;function o(m){const g=r.containerState.type||(m===42||m===43||m===45?"listUnordered":"listOrdered");if(g==="listUnordered"?!r.containerState.marker||m===r.containerState.marker:Ip(m)){if(r.containerState.type||(r.containerState.type=g,e.enter(g,{_container:!0})),g==="listUnordered")return e.enter("listItemPrefix"),m===42||m===45?e.check(Ul,n,u)(m):u(m);if(!r.interrupt||m===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(m)}return n(m)}function l(m){return Ip(m)&&++a<10?(e.consume(m),l):(!r.interrupt||a<2)&&(r.containerState.marker?m===r.containerState.marker:m===41||m===46)?(e.exit("listItemValue"),u(m)):n(m)}function u(m){return e.enter("listItemMarker"),e.consume(m),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||m,e.check(ec,r.interrupt?n:c,e.attempt(RT,f,p))}
vendor: 5,359 bytes, line 254
254function c(m){return r.containerState.initialBlankLine=!0,s++,f(m)}function p(m){return ze(m)?(e.enter("listItemPrefixWhitespace"),e.consume(m),e.exit("listItemPrefixWhitespace"),f):n(m)}function f(m){return r.containerState.size=s+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(m)}}function FT(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(ec,i,s);function i(o){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,it(e,t,"listItemIndent",r.containerState.size+1)(o)}function s(o){return r.containerState.furtherBlankLines||!ze(o)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(o)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt($T,t,a)(o))}function a(o){return r.containerState._closeFlow=!0,r.interrupt=void 0,it(e,e.attempt(sn,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function UT(e,t,n){const r=this;return it(e,i,"listItemIndent",r.containerState.size+1);function i(s){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?t(s):n(s)}}function zT(e){e.exit(this.containerState.type)}function BT(e,t,n){const r=this;return it(e,i,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(s){const a=r.events[r.events.length-1];return!ze(s)&&a&&a[1].type==="listItemPrefixWhitespace"?t(s):n(s)}}const Kg={name:"setextUnderline",resolveTo:WT,tokenize:HT};function WT(e,t){let n=e.length,r,i,s;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(i=n)}else e[n][1].type==="content"&&e.splice(n,1),!s&&e[n][1].type==="definition"&&(s=n);const a={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type="setextHeadingText",s?(e.splice(i,0,["enter",a,t]),e.splice(s+1,0,["exit",e[r][1],t]),e[r][1].end={...e[s][1].end}):e[r][1]=a,e.push(["exit",a,t]),e}function HT(e,t,n){const r=this;let i;return s;function s(u){let c=r.events.length,p;for(;c--;)if(r.events[c][1].type!=="lineEnding"&&r.events[c][1].type!=="linePrefix"&&r.events[c][1].type!=="content"){p=r.events[c][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||p)?(e.enter("setextHeadingLine"),i=u,a(u)):n(u)}function a(u){return e.enter("setextHeadingLineSequence"),o(u)}function o(u){return u===i?(e.consume(u),o):(e.exit("setextHeadingLineSequence"),ze(u)?it(e,l,"lineSuffix")(u):l(u))}function l(u){return u===null||Se(u)?(e.exit("setextHeadingLine"),t(u)):n(u)}}const VT={tokenize:GT};function GT(e){const t=this,n=e.attempt(ec,r,e.attempt(this.parser.constructs.flowInitial,i,it(e,e.attempt(this.parser.constructs.flow,i,e.attempt(YP,i)),"linePrefix")));return n;function r(s){if(s===null){e.consume(s);return}return e.enter("lineEndingBlank"),e.consume(s),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function i(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const KT={resolveAll:Dw()},XT=$w("string"),QT=$w("text");function $w(e){return{resolveAll:Dw(e==="text"?JT:void 0),tokenize:t};function t(n){const r=this,i=this.parser.constructs[e],s=n.attempt(i,a,o);return a;function a(c){return u(c)?s(c):o(c)}function o(c){if(c===null){n.consume(c);return}return n.enter("data"),n.consume(c),l}function l(c){return u(c)?(n.exit("data"),s(c)):(n.consume(c),l)}function u(c){if(c===null)return!0;const p=i[c];let f=-1;if(p)for(;++f<p.length;){const m=p[f];if(!m.previous||m.previous.call(r,r.previous))return!0}return!1}}}function Dw(e){return t;function t(n,r){let i=-1,s;for(;++i<=n.length;)s===void 0?n[i]&&n[i][1].type==="data"&&(s=i,i++):(!n[i]||n[i][1].type!=="data")&&(i!==s+2&&(n[s][1].end=n[i-1][1].end,n.splice(s+2,i-s-2),i=s+2),s=void 0);return e?e(n,r):n}}function JT(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type==="lineEnding")&&e[n-1][1].type==="data"){const r=e[n-1][1],i=t.sliceStream(r);let s=i.length,a=-1,o=0,l;for(;s--;){const u=i[s];if(typeof u=="string"){for(a=u.length;u.charCodeAt(a-1)===32;)o++,a--;if(a)break;a=-1}else if(u===-2)l=!0,o++;else if(u!==-1){s++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(o=0),o){const u={type:n===e.length||l||o<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:s?a:r.start._bufferIndex+a,_index:r.start._index+s,line:r.end.line,column:r.end.column-o,offset:r.end.offset-o},end:{...r.end}};r.end={...u.start},r.start.offset===r.end.offset?Object.assign(r,u):(e.splice(n,0,["enter",u,t],["exit",u,t]),n+=2)}n++}return e}const YT={42:sn,43:sn,45:sn,48:sn,49:sn,50:sn,51:sn,52:sn,53:sn,54:sn,55:sn,56:sn,57:sn,62:Tw},ZT={91:rT},eI={[-2]:dd,[-1]:dd,32:dd},tI={35:uT,42:Ul,45:[Kg,Ul],60:mT,61:Kg,95:Ul,96:Vg,126:Vg},nI={38:Ow,92:Iw},rI={[-5]:pd,[-4]:pd,[-3]:pd,33:TT,38:Ow,42:Op,60:[OP,xT],91:OT,92:[oT,Iw],93:zf,95:Op,96:VP},iI={null:[Op,KT]},sI={null:[42,95]},aI={null:[]},oI=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:sI,contentInitial:ZT,disable:aI,document:YT,flow:tI,flowInitial:eI,insideSpan:iI,string:nI,text:rI},Symbol.toStringTag,{value:"Module"}));function lI(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,c
vendor: 14,592 bytes, lines 254-256
254olumn:n&&n.column||1,offset:n&&n.offset||0};const i={},s=[];let a=[],o=[];const l={attempt:_(q),check:_(x),consume:w,enter:y,exit:A,interrupt:_(x,{interrupt:!0})},u={code:null,containerState:{},defineSkip:h,events:[],now:g,parser:e,previous:null,sliceSerialize:f,sliceStream:m,write:p};let c=t.tokenize.call(u,l);return t.resolveAll&&s.push(t),u;function p(C){return a=_n(a,C),v(),a[a.length-1]!==null?[]:(I(t,0),u.events=Uf(s,u.events,u),u.events)}function f(C,T){return cI(m(C),T)}function m(C){return uI(a,C)}function g(){const{_bufferIndex:C,_index:T,line:M,column:L,offset:N}=r;return{_bufferIndex:C,_index:T,line:M,column:L,offset:N}}function h(C){i[C.line]=C.column,k()}function v(){let C;for(;r._index<a.length;){const T=a[r._index];if(typeof T=="string")for(C=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===C&&r._bufferIndex<T.length;)b(T.charCodeAt(r._bufferIndex));else b(T)}}function b(C){c=c(C)}function w(C){Se(C)?(r.line++,r.column=1,r.offset+=C===-3?2:1,k()):C!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===a[r._index].length&&(r._bufferIndex=-1,r._index++)),u.previous=C}function y(C,T){const M=T||{};return M.type=C,M.start=g(),u.events.push(["enter",M,u]),o.push(M),M}function A(C){const T=o.pop();return T.end=g(),u.events.push(["exit",T,u]),T}function q(C,T){I(C,T.from)}function x(C,T){T.restore()}function _(C,T){return M;function M(L,N,R){let $,B,D,j;return Array.isArray(L)?z(L):"tokenize"in L?z([L]):J(L);function J(se){return ie;function ie(_e){const H=_e!==null&&se[_e],Y=_e!==null&&se.null,te=[...Array.isArray(H)?H:H?[H]:[],...Array.isArray(Y)?Y:Y?[Y]:[]];return z(te)(_e)}}function z(se){return $=se,B=0,se.length===0?R:P(se[B])}function P(se){return ie;function ie(_e){return j=S(),D=se,se.partial||(u.currentConstruct=se),se.name&&u.parser.constructs.disable.null.includes(se.name)?ae():se.tokenize.call(T?Object.assign(Object.create(u),T):u,l,G,ae)(_e)}}function G(se){return C(D,j),N}function ae(se){return j.restore(),++B<$.length?P($[B]):R}}}function I(C,T){C.resolveAll&&!s.includes(C)&&s.push(C),C.resolve&&lr(u.events,T,u.events.length-T,C.resolve(u.events.slice(T),u)),C.resolveTo&&(u.events=C.resolveTo(u.events,u))}function S(){const C=g(),T=u.previous,M=u.currentConstruct,L=u.events.length,N=Array.from(o);return{from:L,restore:R};function R(){r=C,u.previous=T,u.currentConstruct=M,u.events.length=L,o=N,k()}}function k(){r.line in i&&r.column<2&&(r.column=i[r.line],r.offset+=i[r.line]-1)}}function uI(e,t){const n=t.start._index,r=t.start._bufferIndex,i=t.end._index,s=t.end._bufferIndex;let a;if(n===i)a=[e[n].slice(r,s)];else{if(a=e.slice(n,i),r>-1){const o=a[0];typeof o=="string"?a[0]=o.slice(r):a.shift()}s>0&&a.push(e[i].slice(0,s))}return a}function cI(e,t){let n=-1;const r=[];let i;for(;++n<e.length;){const s=e[n];let a;if(typeof s=="string")a=s;else switch(s){case-5:{a="\r";break}case-4:{a=`
255`;break}case-3:{a=`\r
256`;break}case-2:{a=t?" ":"	";break}case-1:{if(!t&&i)continue;a=" ";break}default:a=String.fromCharCode(s)}i=s===-2,r.push(a)}return r.join("")}function dI(e){const r={constructs:yP([oI,...(e||{}).extensions||[]]),content:i(_P),defined:[],document:i(CP),flow:i(VT),lazy:{},string:i(XT),text:i(QT)};return r;function i(s){return a;function a(o){return lI(r,s,o)}}}function pI(e){for(;!Lw(e););return e}const Xg=/[\0\t\n\r]/g;function mI(){let e=1,t="",n=!0,r;return i;function i(s,a,o){const l=[];let u,c,p,f,m;for(s=t+(typeof s=="string"?s.toString():new TextDecoder(a||void 0).decode(s)),p=0,t="",n&&(s.charCodeAt(0)===65279&&p++,n=void 0);p<s.length;){if(Xg.lastIndex=p,u=Xg.exec(s),f=u&&u.index!==void 0?u.index:s.length,m=s.charCodeAt(f),!u){t=s.slice(p);break}if(m===10&&p===f&&r)l.push(-3),r=void 0;else switch(r&&(l.push(-5),r=void 0),p<f&&(l.push(s.slice(p,f)),e+=f-p),m){case 0:{l.push(65533),e++;break}case 9:{for(c=Math.ceil(e/4)*4,l.push(-2);e++<c;)l.push(-1);break}case 10:{l.push(-4),e=1;break}default:r=!0,e=1}p=f+1}return o&&(r&&l.push(-5),t&&l.push(t),l.push(null)),l}}const fI=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function hI(e){return e.replace(fI,gI)}function gI(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){const i=n.charCodeAt(1),s=i===120||i===88;return Pw(n.slice(s?2:1),s?16:10)}return Ff(n)||e}const Fw={}.hasOwnProperty;function vI(e,t,n){return typeof t!="string"&&(n=t,t=void 0),yI(n)(pI(dI(n).document().write(mI()(e,t,!0))))}function yI(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(ge),autolinkProtocol:S,autolinkEmail:S,atxHeading:s(me),blockQuote:s(Y),characterEscape:S,characterReference:S,codeFenced:s(te),codeFencedFenceInfo:a,codeFencedFenceMeta:a,codeIndented:s(te,a),codeText:s(F,a),codeTextData:S,data:S,codeFlowValue:S,definition:s(he),definitionDestinationString:a,definitionLabelString:a,definitionTitleString:a,emphasis:s(ce),hardBreakEscape:s(fe),hardBreakTrailing:s(fe),htmlFlow:s(de,a),htmlFlowData:S,htmlText:s(de,a),htmlTextData:S,image:s(Me),label:a,link:s(ge),listItem:s(Be),listItemValue:f,listOrdered:s(Ie,p),listUnordered:s(Ie),paragraph:s(ft),reference:P,referenceString:a,resourceDestinationString:a,resourceTitleString:a,setextHeading:s(me),strong:s(Fe),thematicBreak:s(st)},exit:{atxHeading:l(),atxHeadingSequence:q,autolink:l(),autolinkEmail:H,autolinkProtocol:_e,blockQuote:l(),characterEscapeValue:k,characterReferenceMarkerHexadecimal:ae,characterReferenceMarkerNumeric:ae,characterReferenceValue:se,characterReference:ie,codeFenced:l(v),codeFencedFence:h,codeFencedFenceInfo:m,codeFencedFenceMeta:g,codeFlowValue:k,codeIndented:l(b),codeText:l(N),codeTextData:k,data:k,definition:l(),definitionDestinationString:A,definitionLabelString:w,definitionTitleString:y,emphasis:l(),hardBreakEscape:l(T),hardBreakTrailing:l(T),htmlFlow:l(M),htmlFlowData:k,htmlText:l(L),htmlTextData:k,image:l($),label:D,labelText:B,lineEnding:C,link:l(R),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:G,resourceDestinationString:j,resourceTitleString:J,resource:z,setextHeading:l(I),setextHeadingLineSequence:_,setextHeadingText:x,strong:l(),thematicBreak:l()}};Uw(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(W){let X={type:"root",children:[]};const le={stack:[X],tokenStack:[],config:t,enter:o,exit:u,buffer:a,resume:c,data:n},ve=[];let Pe=-1;for(;++Pe<W.length;)if(W[Pe][1].type==="listOrdered"||W[Pe][1].type==="listUnordered")if(W[Pe][0]==="enter")ve.push(Pe);else{const Ze=ve.pop();Pe=i(W,Ze,Pe)}for(Pe=-1;++Pe<W.length;){const Ze=t[W[Pe][0]];Fw.call(Ze,W[Pe][1].type)&&Ze[W[Pe][1].type].call(Object.assign({sliceSerialize:W[Pe][2].sliceSerialize},le),W[Pe][1])}if(le.tokenStack.length>0){const Ze=le.tokenStack[le.tokenStack.length-1];(Ze[1]||Qg).call(le,void 0,Ze[0])}for(X.position={start:Mr(W.length>0?W[0][1].start:{line:1,column:1,offset:0}),end:Mr(W.length>0?W[W.length-2][1].end:{line:1,column:1,offset:0})},Pe=-1;++Pe<t.transforms.length;)X=t.transforms[Pe](X)||X;return X}function i(W,X,le){let ve=X-1,Pe=-1,Ze=!1,qt,Qe,xt,Bt;for(;++ve<=le;){const ut=W[ve];switch(ut[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{ut[0]==="enter"?Pe++:Pe--,Bt=void 0;break}case"lineEndingBlank":{ut[0]==="enter"&&(qt&&!Bt&&!Pe&&!xt&&(xt=ve),Bt=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:Bt=void 0}if(!Pe&&ut[0]==="enter"&&ut[1].type==="listItemPrefix"||Pe===-1&&ut[0]==="exit"&&(ut[1].type==="listUnordered"||ut[1].type==="listOrdered")){if(qt){let Wt=ve;for(Qe=void 0;Wt--;){const Ht=W[Wt];if(Ht[1].type==="lineEnding"||Ht[1].type==="lineEndingBlank"){if(Ht[0]==="exit")continue;Qe&&(W[Qe][1].type="lineEndingBlank",Ze=!0),Ht[1].type="lineEnding",Qe=Wt}else if(!(Ht[1].type==="linePrefix"||Ht[1].type==="blockQuotePrefix"||Ht[1].type==="blockQuotePrefixWhitespace"||Ht[1].type==="blockQuoteMarker"||Ht[1].type==="listItemIndent"))break}xt&&(!Qe||xt<Qe)&&(qt._spread=!0),qt.end=Object.assign({},Qe?W[Qe][1].start:ut[1].end),W.splice(Qe||ve,0,["exit",qt,ut[2]]),ve++,le++}if(ut[1].type==="listItemPrefix"){const Wt={type:"listItem",_spread:!1,start:Object.assign({},ut[1].start),end:void 0};qt=Wt,W.splice(ve,0,["enter",Wt,ut[2]]),ve++,le++,xt=void 0,Bt=!0}}}return W[X][1]._spread=Ze,le}function s(W,X){return le;function le(ve){o.call(this,W(ve),ve),X&&X.call(this,ve)}}function a(){this.stack.push({type:"fragment",children:[]})}function o(W,X,le){this.stack[this.stack.length-1].children.push(W),this.stack.push(W),this.tokenStack.push([X,le||void 0]),W.position={start:Mr(X.start),end:void 0}}function l(W){return X;function X(le){W&&W.call(this,le),u.call(this,le)}}function u(W,X){const le=this.stack.pop(),ve=this.tokenStack.pop();if(ve)ve[0].type!==W.type&&(X?X.call(this,W,ve[0]):(ve[1]||Qg).call(this,W,ve[0]));else throw new Error("Cannot close `"+W.type+"` ("+Fa({start:W.start,end:W.end})+"): it’s not open");le.position.end=Mr(W.end)}function c(){return gP(this.stack.pop())}function p(){this.data.expectingFirstListItemValue=!0}function f(W){if(this.data.expectingFirstListItemValue){const X=this.stack[this.stack.length-2];X.start=Number.parseInt(this.sliceSerialize(W),10),this.data.expectingFirstListItemValue=void 0}}function m(){const W=this.resume(),X=this.stack[this.stack.length-1];X.lang=W}function g(){const W=this.resume(),X=this.stack[this.stack.length-1];X.meta=W}function h(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function v(){const W=this.resume(),X=this.stack[this.stack.length-1];X.value=W.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function b(){const W=this.resume(),X=this.stack[this.stack.length-1];X.value=W.replace(/(\r?\n|\r)$/g,"")}function w(W){const X=this.resume(),le=this.stack[this.stack.length-1];le.label=X,le.identifier=hs(this.sliceSerialize(W)).toLowerCase()}function y(){const W=this.resume(),X=this.stack[this.stack.length-1];X.title=W}function A(){const W=this.resume(),X=this.stack[this.stack.length-1];X.url=W}function q(W){const X=this.stack[this.stack.length-1];if(!X.depth){const le=this.sliceSerialize(W).length;X.depth=le}}function x(){this.data.setextHeadingSlurpLineEnding=!0}function _(W){const X=this.stack[this.stack.length-1];X.depth=this.sliceSerialize(W).codePointAt(0)===61?1:2}function I(){this.data.setextHeadingSlurpLineEnding=void 0}function S(W){const le=this.stack[this.stack.length-1].children;let ve=le[le.length-1];(!ve||ve.type!=="text")&&(ve=Jt(),ve.position={start:Mr(W.start),end:void 0},le.push(ve)),this.stack.push(ve)}function k(W){const X=this.stack.pop();X.value+=this.sliceSerialize(W),X.position.end=Mr(W.end)}function C(W){const X=this.stack[this.stack.length-1];if(this.data.atHardBreak){const le=X.children[X.children.length-1];le.position.end=Mr(W.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(X.type)&&(S.call(this,W),k.call(this,W))}function T(){this.data.atHardBreak=!0}function M(){const W=this.resume(),X=this.stack[this.stack.length-1];X.value=W}function L(){const W=this.resume(),X=this.stack[this.stack.length-1];X.value=W}function N(){const W=this.resume(),X=this.stack[this.stack.length-1];X.value=W}function R(){const W=this.stack[this.stack.length-1];if(this.data.inReference){const X=this.data.referenceType||"shortcut";W.type+="Reference",W.referenceType=X,delete W.url,delete W.title}else delete W.identifier,delete W.label;this.data.referenceType=void 0}function $(){const W=this.stack[this.stack.length-1];if(this.data.inReference){const X=this.data.referenceType||"shortcut";W.type+="Reference",W.referenceType=X,delete W.url,delete W.title}else delete W.identifier,delete W.label;this.data.referenceType=void 0}function B(W){const X=this.sliceSerialize(W),le=this.stack[this.stack.length-2];le.label=hI(X),le.identifier=hs(X).toLowerCase()}function D(){const W=this.stack[this.stack.length-1],X=this.resume(),le=this.stack[this.stack.length-1];if(this.data.inReference=!0,le.type==="link"){const ve=W.children;le.children=ve}else le.alt=X}function j(){const W=this.resume(),X=this.stack[this.stack.length-1];X.url=W}function J(){const W=this.resume(),X=this.stack[this.stack.length-1];X.title=W}function z(){this.data.inReference=void 0}function P(){this.data.referenceType="collapsed"}function G(W){const X=this.resume(),le=this.stack[this.stack.length-1];le.label=X,le.identifier=hs(this.sliceSerialize(W)).toLowerCase(),this.data.referenceType="full"}function ae(W){this.data.characterReferenceType=W.type}function se(W){const X=this.sliceSerialize(W),le=this.data.characterReferenceType;let ve;le?(ve=Pw(X,le==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):ve=Ff(X);const Pe=this.stack[this.stack.length-1];Pe.value+=ve}function ie(W){const X=this.stack.pop();X.position.end=Mr(W.end)}function _e(W){k.call(this,W);const X=this.stack[this.stack.length-1];X.url=this.sliceSerialize(W)}function H(W){k.call(this,W);const X=this.stack[this.stack.length-1];X.url="mailto:"+this.sliceSerialize(W)}function Y(){return{type:"blockquote",children:[]}}function te(){return{type:"code",lang:null,meta:null,value:""}}function F(){return{type:"inlineCode",value:""}}function he(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function ce(){return{type:"emphasis",children:[]}}function me(){return{type:"heading",depth:0,children:[]}}function fe(){return{type:"break"}}function de(){return{type:"html",value:""}}function Me(){return{type:"image",title:null,url:"",alt:null}}function ge(){return{type:"link",title:null,url:"",children:[]}}function Ie(W){return{type:"list",ordered:W.type==="listOrdered",start:null,spread:W._spread,children:[]}}function Be(W){return{type:"listItem",spread:W._spread,checked:null,children:[]}}function ft(){return{type:"paragraph",children:[]}}function Fe(){return{type:"strong",children:[]}}function Jt(){return{type:"text",value:""}}function st(){return{type:"thematicBreak"}}}function Mr(e){return{line:e.line,column:e.column,offset:e.offset}}function Uw(e,t){let n=-1;for(;++n<t.length;){const r=t[n];Array.isArray(r)?Uw(e,r):bI(e,r)}}function bI(e,t){let n;for(n in t)if(Fw.call(t,n))switch(n){case"canContainEols":{const r=t[n];r&&e[n].push(...r);break}case"transforms":{const r=t[n];r&&e[n].push(...r);break}case"enter":case"exit":{const r=t[n];r&&Object.assign(e[n],r);break}}}function Qg(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+Fa({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+Fa({start:t.start,end:t.end}
vendor: 12,156 bytes, lines 256-261
256)+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+Fa({start:t.start,end:t.end})+") is still open")}function xI(e){const t=this;t.parser=n;function n(r){return vI(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}function wI(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function qI(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:`
257`}]}function SI(e,t){const n=t.value?t.value+`
258`:"",r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=["language-"+i[0]]);let s={type:"element",tagName:"code",properties:r,children:[{type:"text",value:n}]};return t.meta&&(s.data={meta:t.meta}),e.patch(t,s),s=e.applyData(t,s),s={type:"element",tagName:"pre",properties:{},children:[s]},e.patch(t,s),s}function AI(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function EI(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function _I(e,t){const n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=String(t.identifier).toUpperCase(),i=Zs(r.toLowerCase()),s=e.footnoteOrder.indexOf(r);let a,o=e.footnoteCounts.get(r);o===void 0?(o=0,e.footnoteOrder.push(r),a=e.footnoteOrder.length):a=s+1,o+=1,e.footnoteCounts.set(r,o);const l={type:"element",tagName:"a",properties:{href:"#"+n+"fn-"+i,id:n+"fnref-"+i+(o>1?"-"+o:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};e.patch(t,l);const u={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,u),e.applyData(t,u)}function kI(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function CI(e,t){if(e.options.allowDangerousHtml){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}}function zw(e,t){const n=t.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+r}];const i=e.all(t),s=i[0];s&&s.type==="text"?s.value="["+s.value:i.unshift({type:"text",value:"["});const a=i[i.length-1];return a&&a.type==="text"?a.value+=r:i.push({type:"text",value:r}),i}function jI(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return zw(e,t);const i={src:Zs(r.url||""),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);const s={type:"element",tagName:"img",properties:i,children:[]};return e.patch(t,s),e.applyData(t,s)}function PI(e,t){const n={src:Zs(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function TI(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function II(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return zw(e,t);const i={href:Zs(r.url||"")};r.title!==null&&r.title!==void 0&&(i.title=r.title);const s={type:"element",tagName:"a",properties:i,children:e.all(t)};return e.patch(t,s),e.applyData(t,s)}function OI(e,t){const n={href:Zs(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function LI(e,t,n){const r=e.all(t),i=n?MI(n):Bw(t),s={},a=[];if(typeof t.checked=="boolean"){const c=r[0];let p;c&&c.type==="element"&&c.tagName==="p"?p=c:(p={type:"element",tagName:"p",properties:{},children:[]},r.unshift(p)),p.children.length>0&&p.children.unshift({type:"text",value:" "}),p.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),s.className=["task-list-item"]}let o=-1;for(;++o<r.length;){const c=r[o];(i||o!==0||c.type!=="element"||c.tagName!=="p")&&a.push({type:"text",value:`
259`}),c.type==="element"&&c.tagName==="p"&&!i?a.push(...c.children):a.push(c)}const l=r[r.length-1];l&&(i||l.type!=="element"||l.tagName!=="p")&&a.push({type:"text",value:`
260`});const u={type:"element",tagName:"li",properties:s,children:a};return e.patch(t,u),e.applyData(t,u)}function MI(e){let t=!1;if(e.type==="list"){t=e.spread||!1;const n=e.children;let r=-1;for(;!t&&++r<n.length;)t=Bw(n[r])}return t}function Bw(e){const t=e.spread;return t??e.children.length>1}function NI(e,t){const n={},r=e.all(t);let i=-1;for(typeof t.start=="number"&&t.start!==1&&(n.start=t.start);++i<r.length;){const a=r[i];if(a.type==="element"&&a.tagName==="li"&&a.properties&&Array.isArray(a.properties.className)&&a.properties.className.includes("task-list-item")){n.className=["contains-task-list"];break}}const s={type:"element",tagName:t.ordered?"ol":"ul",properties:n,children:e.wrap(r,!0)};return e.patch(t,s),e.applyData(t,s)}function RI(e,t){const n={type:"element",tagName:"p",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function $I(e,t){const n={type:"root",children:e.wrap(e.all(t))};return e.patch(t,n),e.applyData(t,n)}function DI(e,t){const n={type:"element",tagName:"strong",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function FI(e,t){const n=e.all(t),r=n.shift(),i=[];if(r){const a={type:"element",tagName:"thead",properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],a),i.push(a)}if(n.length>0){const a={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},o=Nf(t.children[1]),l=Sw(t.children[t.children.length-1]);o&&l&&(a.position={start:o,end:l}),i.push(a)}const s={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,s),e.applyData(t,s)}function UI(e,t,n){const r=n?n.children:void 0,s=(r?r.indexOf(t):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,o=a?a.length:t.children.length;let l=-1;const u=[];for(;++l<o;){const p=t.children[l],f={},m=a?a[l]:void 0;m&&(f.align=m);let g={type:"element",tagName:s,properties:f,children:[]};p&&(g.children=e.all(p),e.patch(p,g),g=e.applyData(p,g)),u.push(g)}const c={type:"element",tagName:"tr",properties:{},children:e.wrap(u,!0)};return e.patch(t,c),e.applyData(t,c)}function zI(e,t){const n={type:"element",tagName:"td",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}const Jg=9,Yg=32;function BI(e){const t=String(e),n=/\r?\n|\r/g;let r=n.exec(t),i=0;const s=[];for(;r;)s.push(Zg(t.slice(i,r.index),i>0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return s.push(Zg(t.slice(i),i>0,!1)),s.join("")}function Zg(e,t,n){let r=0,i=e.length;if(t){let s=e.codePointAt(r);for(;s===Jg||s===Yg;)r++,s=e.codePointAt(r)}if(n){let s=e.codePointAt(i-1);for(;s===Jg||s===Yg;)i--,s=e.codePointAt(i-1)}return i>r?e.slice(r,i):""}function WI(e,t){const n={type:"text",value:BI(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function HI(e,t){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}const VI={blockquote:wI,break:qI,code:SI,delete:AI,emphasis:EI,footnoteReference:_I,heading:kI,html:CI,imageReference:jI,image:PI,inlineCode:TI,linkReference:II,link:OI,listItem:LI,list:NI,paragraph:RI,root:$I,strong:DI,table:FI,tableCell:zI,tableRow:UI,text:WI,thematicBreak:HI,toml:ll,yaml:ll,definition:ll,footnoteDefinition:ll};function ll(){}const Ww=-1,tc=0,za=1,Gl=2,Bf=3,Wf=4,Hf=5,Vf=6,Hw=7,Vw=8,ev=typeof self=="object"?self:globalThis,GI=(e,t)=>{const n=(i,s)=>(e.set(s,i),i),r=i=>{if(e.has(i))return e.get(i);const[s,a]=t[i];switch(s){case tc:case Ww:return n(a,i);case za:{const o=n([],i);for(const l of a)o.push(r(l));return o}case Gl:{const o=n({},i);for(const[l,u]of a)o[r(l)]=r(u);return o}case Bf:return n(new Date(a),i);case Wf:{const{source:o,flags:l}=a;return n(new RegExp(o,l),i)}case Hf:{const o=n(new Map,i);for(const[l,u]of a)o.set(r(l),r(u));return o}case Vf:{const o=n(new Set,i);for(const l of a)o.add(r(l));return o}case Hw:{const{name:o,message:l}=a;return n(new ev[o](l),i)}case Vw:return n(BigInt(a),i);case"BigInt":return n(Object(BigInt(a)),i);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:o}=new Uint8Array(a);return n(new DataView(o),a)}}return n(new ev[s](a),i)};return r},tv=e=>GI(new Map,e)(0),Vi="",{toString:KI}={},{keys:XI}=Object,xa=e=>{const t=typeof e;if(t!=="object"||!e)return[tc,t];const n=KI.call(e).slice(8,-1);switch(n){case"Array":return[za,Vi];case"Object":return[Gl,Vi];case"Date":return[Bf,Vi];case"RegExp":return[Wf,Vi];case"Map":return[Hf,Vi];case"Set":return[Vf,Vi];case"DataView":return[za,n]}return n.includes("Array")?[za,n]:n.includes("Error")?[Hw,n]:[Gl,n]},ul=([e,t])=>e===tc&&(t==="function"||t==="symbol"),QI=(e,t,n,r)=>{const i=(a,o)=>{const l=r.push(a)-1;return n.set(o,l),l},s=a=>{if(n.has(a))return n.get(a);let[o,l]=xa(a);switch(o){case tc:{let c=a;switch(l){case"bigint":o=Vw,c=a.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);c=null;break;case"undefined":return i([Ww],a)}return i([o,c],a)}case za:{if(l){let f=a;return l==="DataView"?f=new Uint8Array(a.buffer):l==="ArrayBuffer"&&(f=new Uint8Array(a)),i([l,[...f]],a)}const c=[],p=i([o,c],a);for(const f of a)c.push(s(f));return p}case Gl:{if(l)switch(l){case"BigInt":return i([l,a.toString()],a);case"Boolean":case"Number":case"String":return i([l,a.valueOf()],a)}if(t&&"toJSON"in a)return s(a.toJSON());const c=[],p=i([o,c],a);for(const f of XI(a))(e||!ul(xa(a[f])))&&c.push([s(f),s(a[f])]);return p}case Bf:return i([o,a.toISOString()],a);case Wf:{const{source:c,flags:p}=a;return i([o,{source:c,flags:p}],a)}case Hf:{const c=[],p=i([o,c],a);for(const[f,m]of a)(e||!(ul(xa(f))||ul(xa(m))))&&c.push([s(f),s(m)]);return p}case Vf:{const c=[],p=i([o,c],a);for(const f of a)(e||!ul(xa(f)))&&c.push(s(f));return p}}const{message:u}=a;return i([o,{name:l,message:u}],a)};return s},nv=(e,{json:t,lossy:n}={})=>{const r=[];return QI(!(t||n),!!t,new Map,r)(e),r},Kl=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?tv(nv(e,t)):structuredClone(e):(e,t)=>tv(nv(e,t));function JI(e,t){const n=[{type:"text",value:"↩"}];return t>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),n}function YI(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function ZI(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=e.options.footnoteBackContent||JI,r=e.options.footnoteBackLabel||YI,i=e.options.footnoteLabel||"Footnotes",s=e.options.footnoteLabelTagName||"h2",a=e.options.footnoteLabelProperties||{className:["sr-only"]},o=[];let l=-1;for(;++l<e.footnoteOrder.length;){const u=e.footnoteById.get(e.footnoteOrder[l]);if(!u)continue;const c=e.all(u),p=String(u.identifier).toUpperCase(),f=Zs(p.toLowerCase());let m=0;const g=[],h=e.footnoteCounts.get(p);for(;h!==void 0&&++m<=h;){g.length>0&&g.push({type:"text",value:" "});let w=typeof n=="string"?n:n(l,m);typeof w=="string"&&(w={type:"text",value:w}),g.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+f+(m>1?"-"+m:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(l,m),className:["data-footnote-backref"]},children:Array.isArray(w)?w:[w]})}const v=c[c.length-1];if(v&&v.type==="element"&&v.tagName==="p"){const w=v.children[v.children.length-1];w&&w.type==="text"?w.value+=" ":v.children.push({type:"text",value:" "}),v.children.push(...g)}else c.push(...g);const b={type:"element",tagName:"li",properties:{id:t+"fn-"+f},children:e.wrap(c,!0)};e.patch(u,b),o.push(b)}if(o.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:s,properties:{...Kl(a),id:"footnote-label"},children:[{type:"text",value:i}]},{type:"text",value:`
261`},{type:"element",tagName:"ol",properties:{},children:e.wrap(o,!0)}
vendor: 17,954 bytes, lines 261-266
261,{type:"text",value:`
262`}]}}const Gw=function(e){if(e==null)return rO;if(typeof e=="function")return nc(e);if(typeof e=="object")return Array.isArray(e)?eO(e):tO(e);if(typeof e=="string")return nO(e);throw new Error("Expected function, string, or object as test")};function eO(e){const t=[];let n=-1;for(;++n<e.length;)t[n]=Gw(e[n]);return nc(r);function r(...i){let s=-1;for(;++s<t.length;)if(t[s].apply(this,i))return!0;return!1}}function tO(e){const t=e;return nc(n);function n(r){const i=r;let s;for(s in e)if(i[s]!==t[s])return!1;return!0}}function nO(e){return nc(t);function t(n){return n&&n.type===e}}function nc(e){return t;function t(n,r,i){return!!(iO(n)&&e.call(this,n,typeof r=="number"?r:void 0,i||void 0))}}function rO(){return!0}function iO(e){return e!==null&&typeof e=="object"&&"type"in e}const Kw=[],sO=!0,rv=!1,aO="skip";function oO(e,t,n,r){let i;typeof t=="function"&&typeof n!="function"?(r=n,n=t):i=t;const s=Gw(i),a=r?-1:1;o(e,void 0,[])();function o(l,u,c){const p=l&&typeof l=="object"?l:{};if(typeof p.type=="string"){const m=typeof p.tagName=="string"?p.tagName:typeof p.name=="string"?p.name:void 0;Object.defineProperty(f,"name",{value:"node ("+(l.type+(m?"<"+m+">":""))+")"})}return f;function f(){let m=Kw,g,h,v;if((!t||s(l,u,c[c.length-1]||void 0))&&(m=lO(n(l,c)),m[0]===rv))return m;if("children"in l&&l.children){const b=l;if(b.children&&m[0]!==aO)for(h=(r?b.children.length:-1)+a,v=c.concat(b);h>-1&&h<b.children.length;){const w=b.children[h];if(g=o(w,h,v)(),g[0]===rv)return g;h=typeof g[1]=="number"?g[1]:h+a}}return m}}}function lO(e){return Array.isArray(e)?e:typeof e=="number"?[sO,e]:e==null?Kw:[e]}function Xw(e,t,n,r){let i,s,a;typeof t=="function"&&typeof n!="function"?(s=void 0,a=t,i=n):(s=t,a=n,i=r),oO(e,s,o,i);function o(l,u){const c=u[u.length-1],p=c?c.children.indexOf(l):void 0;return a(l,p,c)}}const Lp={}.hasOwnProperty,uO={};function cO(e,t){const n=t||uO,r=new Map,i=new Map,s=new Map,a={...VI,...n.handlers},o={all:u,applyData:pO,definitionById:r,footnoteById:i,footnoteCounts:s,footnoteOrder:[],handlers:a,one:l,options:n,patch:dO,wrap:fO};return Xw(e,function(c){if(c.type==="definition"||c.type==="footnoteDefinition"){const p=c.type==="definition"?r:i,f=String(c.identifier).toUpperCase();p.has(f)||p.set(f,c)}}),o;function l(c,p){const f=c.type,m=o.handlers[f];if(Lp.call(o.handlers,f)&&m)return m(o,c,p);if(o.options.passThrough&&o.options.passThrough.includes(f)){if("children"in c){const{children:h,...v}=c,b=Kl(v);return b.children=o.all(c),b}return Kl(c)}return(o.options.unknownHandler||mO)(o,c,p)}function u(c){const p=[];if("children"in c){const f=c.children;let m=-1;for(;++m<f.length;){const g=o.one(f[m],c);if(g){if(m&&f[m-1].type==="break"&&(!Array.isArray(g)&&g.type==="text"&&(g.value=iv(g.value)),!Array.isArray(g)&&g.type==="element")){const h=g.children[0];h&&h.type==="text"&&(h.value=iv(h.value))}Array.isArray(g)?p.push(...g):p.push(g)}}}return p}}function dO(e,t){e.position&&(t.position=Kj(e))}function pO(e,t){let n=t;if(e&&e.data){const r=e.data.hName,i=e.data.hChildren,s=e.data.hProperties;if(typeof r=="string")if(n.type==="element")n.tagName=r;else{const a="children"in n?n.children:[n];n={type:"element",tagName:r,properties:{},children:a}}n.type==="element"&&s&&Object.assign(n.properties,Kl(s)),"children"in n&&n.children&&i!==null&&i!==void 0&&(n.children=i)}return n}function mO(e,t){const n=t.data||{},r="value"in t&&!(Lp.call(n,"hProperties")||Lp.call(n,"hChildren"))?{type:"text",value:t.value}:{type:"element",tagName:"div",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function fO(e,t){const n=[];let r=-1;for(t&&n.push({type:"text",value:`
263`});++r<e.length;)r&&n.push({type:"text",value:`
264`}),n.push(e[r]);return t&&e.length>0&&n.push({type:"text",value:`
265`}),n}function iv(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function sv(e,t){const n=cO(e,t),r=n.one(e,void 0),i=ZI(n),s=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return i&&s.children.push({type:"text",value:`
266`},i),s}function hO(e,t){return e&&"run"in e?async function(n,r){const i=sv(n,{file:r,...t});await e.run(i,r)}:function(n,r){return sv(n,{file:r,...e||t})}}function av(e){if(e)throw e}var zl=Object.prototype.hasOwnProperty,Qw=Object.prototype.toString,ov=Object.defineProperty,lv=Object.getOwnPropertyDescriptor,uv=function(t){return typeof Array.isArray=="function"?Array.isArray(t):Qw.call(t)==="[object Array]"},cv=function(t){if(!t||Qw.call(t)!=="[object Object]")return!1;var n=zl.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&zl.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var i;for(i in t);return typeof i>"u"||zl.call(t,i)},dv=function(t,n){ov&&n.name==="__proto__"?ov(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},pv=function(t,n){if(n==="__proto__")if(zl.call(t,n)){if(lv)return lv(t,n).value}else return;return t[n]},gO=function e(){var t,n,r,i,s,a,o=arguments[0],l=1,u=arguments.length,c=!1;for(typeof o=="boolean"&&(c=o,o=arguments[1]||{},l=2),(o==null||typeof o!="object"&&typeof o!="function")&&(o={});l<u;++l)if(t=arguments[l],t!=null)for(n in t)r=pv(o,n),i=pv(t,n),o!==i&&(c&&i&&(cv(i)||(s=uv(i)))?(s?(s=!1,a=r&&uv(r)?r:[]):a=r&&cv(r)?r:{},dv(o,{name:n,newValue:e(c,a,i)})):typeof i<"u"&&dv(o,{name:n,newValue:i}));return o};const md=De(gO);function Mp(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)}function vO(){const e=[],t={run:n,use:r};return t;function n(...i){let s=-1;const a=i.pop();if(typeof a!="function")throw new TypeError("Expected function as last argument, not "+a);o(null,...i);function o(l,...u){const c=e[++s];let p=-1;if(l){a(l);return}for(;++p<i.length;)(u[p]===null||u[p]===void 0)&&(u[p]=i[p]);i=u,c?yO(c,o)(...u):a(null,...u)}}function r(i){if(typeof i!="function")throw new TypeError("Expected `middelware` to be a function, not "+i);return e.push(i),t}}function yO(e,t){let n;return r;function r(...a){const o=e.length>a.length;let l;o&&a.push(i);try{l=e.apply(this,a)}catch(u){const c=u;if(o&&n)throw c;return i(c)}o||(l&&l.then&&typeof l.then=="function"?l.then(s,i):l instanceof Error?i(l):s(l))}function i(a,...o){n||(n=!0,t(a,...o))}function s(a){i(null,a)}}const Jn={basename:bO,dirname:xO,extname:wO,join:qO,sep:"/"};function bO(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Go(e);let n=0,r=-1,i=e.length,s;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(s){n=i+1;break}}else r<0&&(s=!0,r=i+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let a=-1,o=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(s){n=i+1;break}}else a<0&&(s=!0,a=i+1),o>-1&&(e.codePointAt(i)===t.codePointAt(o--)?o<0&&(r=i):(o=-1,r=a));return n===r?r=a:r<0&&(r=e.length),e.slice(n,r)}function xO(e){if(Go(e),e.length===0)return".";let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||(r=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function wO(e){Go(e);let t=e.length,n=-1,r=0,i=-1,s=0,a;for(;t--;){const o=e.codePointAt(t);if(o===47){if(a){r=t+1;break}continue}n<0&&(a=!0,n=t+1),o===46?i<0?i=t:s!==1&&(s=1):i>-1&&(s=-1)}return i<0||n<0||s===0||s===1&&i===n-1&&i===r+1?"":e.slice(i,n)}function qO(...e){let t=-1,n;for(;++t<e.length;)Go(e[t]),e[t]&&(n=n===void 0?e[t]:n+"/"+e[t]);return n===void 0?".":SO(n)}function SO(e){Go(e);const t=e.codePointAt(0)===47;let n=AO(e,!t);return n.length===0&&!t&&(n="."),n.length>0&&e.codePointAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function AO(e,t){let n="",r=0,i=-1,s=0,a=-1,o,l;for(;++a<=e.length;){if(a<e.length)o=e.codePointAt(a);else{if(o===47)break;o=47}if(o===47){if(!(i===a-1||s===1))if(i!==a-1&&s===2){if(n.length<2||r!==2||n.codePointAt(n.length-1)!==46||n.codePointAt(n.length-2)!==46){if(n.length>2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",r=0):(n=n.slice(0,l),r=n.length-1-n.lastIndexOf("/")),i=a,s=0;continue}}else if(n.length>0){n="",r=0,i=a,s=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(i+1,a):n=e.slice(i+1,a),r=a-i-1;i=a,s=0}else o===46&&s>-1?s++:s=-1}return n}function Go(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const EO={cwd:_O};function _O(){return"/"}function Np(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function kO(e){if(typeof e=="string")e=new URL(e);else if(!Np(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return CO(e)}function CO(e){if(e.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const t=e.pathname;let n=-1;for(;++n<t.length;)if(t.codePointAt(n)===37&&t.codePointAt(n+1)===50){const r=t.codePointAt(n+2);if(r===70||r===102){const i=new TypeError("File URL path must not include encoded / characters");throw i.code="ERR_INVALID_FILE_URL_PATH",i}}return decodeURIComponent(t)}const fd=["history","path","basename","stem","extname","dirname"];class Jw{constructor(t){let n;t?Np(t)?n={path:t}:typeof t=="string"||jO(t)?n={value:t}:n=t:n={},this.cwd="cwd"in n?"":EO.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let r=-1;for(;++r<fd.length;){const s=fd[r];s in n&&n[s]!==void 0&&n[s]!==null&&(this[s]=s==="history"?[...n[s]]:n[s])}let i;for(i in n)fd.includes(i)||(this[i]=n[i])}get basename(){return typeof this.path=="string"?Jn.basename(this.path):void 0}set basename(t){gd(t,"basename"),hd(t,"basename"),this.path=Jn.join(this.dirname||"",t)}get dirname(){return typeof this.path=="string"?Jn.dirname(this.path):void 0}set dirname(t){mv(this.basename,"dirname"),this.path=Jn.join(t||"",this.basename)}get extname(){return typeof this.path=="string"?Jn.extname(this.path):void 0}set extname(t){if(hd(t,"extname"),mv(this.dirname,"extname"),t){if(t.codePointAt(0)!==46)throw new Error("`extname` must start with `.`");if(t.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Jn.join(this.dirname,this.stem+(t||""))}get path(){return this.history[this.history.length-1]}set path(t){Np(t)&&(t=kO(t)),gd(t,"path"),this.path!==t&&this.history.push(t)}get stem(){return typeof this.path=="string"?Jn.basename(this.path,this.extname):void 0}set stem(t){gd(t,"stem"),hd(t,"stem"),this.path=Jn.join(this.dirname||"",t+(this.extname||""))}fail(t,n,r){const i=this.message(t,n,r);throw i.fatal=!0,i}info(t,n,r){const i=this.message(t,n,r);return i.fatal=void 0,i}message(t,n,r){const i=new Qt(t,n,r);return this.path&&(i.name=this.path+":"+i.name,i.file=this.path),i.fatal=!1,this.messages.push(i),i}toString(t){return this.value===void 0?"":typeof this.value=="string"?this.value:new TextDecoder(t||void 0).decode(this.value)}}function hd(e,t){if(e&&e.includes(Jn.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Jn.sep+"`")}function gd(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function mv(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}function jO(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const PO=function(e){const r=this.constructor.prototype,i=r[e],s=function(){return i.apply(s,arguments)};return Object.setPrototypeOf(s,r),s},TO={}.hasOwnProperty;class Gf extends PO{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=vO()}copy(){const t=new Gf;let n=-1;for(;++n<this.attachers.length;){const r=this.attachers[n];t.use(...r)}return t.data(md(!0,{},this.namespace)),t}data(t,n){return typeof t=="string"?arguments.length===2?(bd("data",this.frozen),this.namespace[t]=n,this):TO.call(this.namespace,t)&&this.namespace[t]||void 0:t?(bd("data",this.frozen),this.namespace=t,this):this.namespace}freeze(){if(this.frozen)return this;const t=this;for(;++this.freezeIndex<this.attachers.length;){const[n,...r]=this.attachers[this.freezeIndex];if(r[0]===!1)continue;r[0]===!0&&(r[0]=void 0);const i=n.call(t,...r);typeof i=="function"&&this.transformers.use(i)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(t){this.freeze();const n=cl(t),r=this.parser||this.Parser;return vd("parse",r),r(String(n),n)}process(t,n){const r=this;return this.freeze(),vd("process",this.parser||this.Parser),yd("process",this.compiler||this.Compiler),n?i(void 0,n):new Promise(i);function i(s,a){const o=cl(t),l=r.parse(o);r.run(l,o,function(c,p,f){if(c||!p||!f)return u(c);const m=p,g=r.stringify(m,f);LO(g)?f.value=g:f.result=g,u(c,f)});function u(c,p){c||!p?a(c):s?s(p):n(void 0,p)}}}processSync(t){let n=!1,r;return this.freeze(),vd("processSync",this.parser||this.Parser),yd("processSync",this.compiler||this.Compiler),this.process(t,i),hv("processSync","process",n),r;function i(s,a){n=!0,av(s),r=a}}run(t,n,r){fv(t),this.freeze();const i=this.transformers;return!r&&typeof n=="function"&&(r=n,n=void 0),r?s(void 0,r):new Promise(s);function s(a,o){const l=cl(n);i.run(t,l,u);function u(c,p,f){const m=p||t;c?o(c):a?a(m):r(void 0,m,f)}}}runSync(t,n){let r=!1,i;return this.run(t,n,s),hv("runSync","run",r),i;function s(a,o){av(a),i=o,r=!0}}stringify(t,n){this.freeze();const r=cl(n),i=this.compiler||this.Compiler;return yd("stringify",i),fv(t),i(t,r)}use(t,...n){const r=this.attachers,i=this.namespace;if(bd("use",this.frozen),t!=null)if(typeof t=="function")l(t,n);else if(typeof t=="object")Array.isArray(t)?o(t):a(t);else throw new TypeError("Expected usable value, not `"+t+"`");return this;function s(u){if(typeof u=="function")l(u,[]);else if(typeof u=="object")if(Array.isArray(u)){const[c,...p]=u;l(c,p)}else a(u);else throw new TypeError("Expected usable value, not `"+u+"`")}function a(u){if(!("plugins"in u)&&!("settings"in u))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");o(u.plugins),u.settings&&(i.settings=md(!0,i.settings,u.settings))}function o(u){let c=-1;if(u!=null)if(Array.isArray(u))for(;++c<u.length;){const p=u[c];s(p)}else throw new TypeError("Expected a list of plugins, not `"+u+"`")}function l(u,c){let p=-1,f=-1;for(;++p<r.length;)if(r[p][0]===u){f=p;break}if(f===-1)r.push([u,...c]);else if(c.length>0){let[m,...g]=c;const h=r[f][1];Mp(h)&&Mp(m)&&(m=md(!0,h,m)),r[f]=[u,m,...g]}}}}const IO=new Gf().freeze();function vd(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function yd(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function bd(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function fv(e){if(!Mp(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function hv(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function cl(e){return OO(e)?e:new Jw(e)}function OO(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function LO(e){return typeof e=="string"||MO(e)}function MO(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const NO="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",gv=[],vv={allowDangerousHtml:!0},RO=/^(https?|ircs?|mailto|xmpp)$/i,$O=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Rp(e){const t=DO(e),n=FO(e);return UO(t.runSync(t.parse(n),n),e)}function DO(e){const t=e.rehypePlugins||gv,n=e.remarkPlugins||gv,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vv}:vv;return IO().use(xI).use(n).use(hO,r).use(t)}function FO(e){const t=e.children||"",n=new Jw;return typeof t=="string"&&(n.value=t),n}function UO(e,t){const n=t.allowedElements,r=t.allowElement,i=t.components,s=t.disallowedElements,a=t.skipHtml,o=t.unwrapDisallowed,l=t.urlTransform||zO;for(const c of $O)Object.hasOwn(t,c.from)&&(""+c.from+(c.to?"use `"+c.to+"` instead":"remove it")+NO+c.id,void 0);return Xw(e,u),Zj(e,{Fragment:d.Fragment,components:i,ignoreInvalidStyle:!0,jsx:d.jsx,jsxs:d.jsxs,passKeys:!0,passNode:!0});function u(c,p,f){if(c.type==="raw"&&f&&typeof p=="number")return a?f.children.splice(p,1):f.children[p]={type:"text",value:c.value},p;if(c.type==="element"){let m;
266for(m in cd)if(Object.hasOwn(cd,m)&&Object.hasOwn(c.properties,m)){const g=c.properties[m],h=cd[m];(h===null||h.includes(c.tagName))&&(c.properties[m]=l(String(g||""),m,c))}}if(c.type==="element"){let m=n?!n.includes(c.tagName):s?s.includes(c.tagName):!1;if(!m&&r&&typeof p=="number"&&(m=!r(c,p,f)),m&&f&&typeof p=="number")return o&&c.children?f.children.splice(p,1,...c.children):f.children.splice(p,1),p}}}function zO(e){const t=e.indexOf(":"),n=e.indexOf("?"),r=e.indexOf("#"),i=e.indexOf("/");return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||RO.test(e.slice(0,t))?e:""}const BO=e=>e?(...t)=>e(...t):(...t)=>fetch(...t);class Kf extends Error{constructor(t,n="FunctionsError",r){super(t),this.name=n,this.context=r}}class WO extends Kf{constructor(t){super("Failed to send a request to the Edge Function","FunctionsFetchError",t)}}class yv extends Kf{constructor(t){super("Relay Error invoking the Edge Function","FunctionsRelayError",t)}}class bv extends Kf{constructor(t){super("Edge Function returned a non-2xx status code","FunctionsHttpError",t)}}var $p;(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"})($p||($p={}));class HO{constructor(t,{headers:n={},customFetch:r,region:i=$p.Any}={}){this.url=t,this.headers=n,this.region=i,this.fetch=BO(r)}setAuth(t){this.headers.Authorization=`Bearer ${t}`}invoke(t){return xE(this,arguments,void 0,function*(n,r={}){var i;let s,a;try{const{headers:o,method:l,body:u,signal:c,timeout:p}=r;let f={},{region:m}=r;m||(m=this.region);const g=new URL(`${this.url}/${n}`);m&&m!=="any"&&(f["x-region"]=m,g.searchParams.set("forceFunctionRegion",m));let h;u&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o)?typeof Blob<"u"&&u instanceof Blob||u instanceof ArrayBuffer?(f["Content-Type"]="application/octet-stream",h=u):typeof u=="string"?(f["Content-Type"]="text/plain",h=u):typeof FormData<"u"&&u instanceof FormData?h=u:(f["Content-Type"]="application/json",h=JSON.stringify(u)):u&&typeof u!="string"&&!(typeof Blob<"u"&&u instanceof Blob)&&!(u instanceof ArrayBuffer)&&!(typeof FormData<"u"&&u instanceof FormData)?h=JSON.stringify(u):h=u;let v=c;p&&(a=new AbortController,s=setTimeout(()=>a.abort(),p),c?(v=a.signal,c.addEventListener("abort",()=>a.abort())):v=a.signal);const b=yield this.fetch(g.toString(),{method:l||"POST",headers:Object.assign(Object.assign(Object.assign({},f),this.headers),o),body:h,signal:v}).catch(q=>{throw new WO(q)}),w=b.headers.get("x-relay-error");if(w&&w==="true")throw new yv(b);if(!b.ok)throw new bv(b);let y=((i=b.headers.get("Content-Type"))!==null&&i!==void 0?i:"text/plain").split(";")[0].trim(),A;return y==="application/json"?A=yield b.json():y==="application/octet-stream"||y==="application/pdf"?A=yield b.blob():y==="text/event-stream"?A=b:y==="multipart/form-data"?A=yield b.formData():A=yield b.text(),{data:A,error:null,response:b}}catch(o){return{data:null,error:o,response:o instanceof bv||o instanceof yv?o.context:void 0}}finally{s&&clearTimeout(s)}})}}var VO=class extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.co
266de=e.code}},GO=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 r=this.fetch;let i=r(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async s=>{let a=null,o=null,l=null,u=s.status,c=s.statusText;if(s.ok){var p,f;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 h=(p=n.headers.get("Prefer"))===null||p===void 0?void 0:p.match(/count=(exact|planned|estimated)/),v=(f=s.headers.get("content-range"))===null||f===void 0?void 0:f.split("/");h&&v&&v.length>1&&(l=parseInt(v[1])),n.isMaybeSingle&&n.method==="GET"&&Array.isArray(o)&&(o.length>1?(a={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,l=null,u=406,c="Not Acceptable"):o.length===1?o=o[0]:o=null)}else{var g;const h=await s.text();try{a=JSON.parse(h),Array.isArray(a)&&s.status===404&&(o=[],a=null,u=200,c="OK")}catch{s.status===404&&h===""?(u=204,c="No Content"):a={message:h}}if(a&&n.isMaybeSingle&&(!(a==null||(g=a.details)===null||g===void 0)&&g.includes("0 rows"))&&(a=null,u=200,c="OK"),a&&n.shouldThrowOnError)throw new VO(a)}return{error:a,data:o,count:l,status:u,statusText:c}});return this.shouldThrowOnError||(i=i.catch(s=>{var a;let o="";const l=s==null?void 0:s.cause;if(l){var u,c,p,f;const g=(u=l==null?void 0:l.message)!==null&&u!==void 0?u:"",h=(c=l==null?void 0:l.code)!==null&&c!==void 0?c:"";o=`${(p=s==null?void 0:s.name)!==null&&p!==void 0?p:"FetchError"}: ${s==null?void 0:s.message}`,o+=`
267
268Caused by: ${(f=l==null?void 0:l.name)!==null&&f!==void 0?f:"Error"}: ${g}`,h&&(o+=` (${h})`),l!=null&&l.stack&&(o+=`
269${l.stack}`)}else{var m;o=(m=s==null?void 0:s.stack)!==null&&m!==void 0?m:""}return{error:{message:`${(a=s==null?void 0:s.name)!==null&&a!==void 0?a:"FetchError"}: ${s==null?void 0:s.message}`,details:o,hint:"",code:""},data:null,count:null,status:0,statusText:""}})),i.then(e,t)}returns(){return this}overrideTypes(){return this}},KO=class extends GO{select(e){let t=!1;const n=(e??"*").split("").map(r=>/\s/.test(r)&&!t?"":(r==='"'&&(t=!t),r)).join("");return this.url.searchParams.set("select",n),this.headers.append("Prefer","return=representation"),this}order(e,{ascending:t=!0,nullsFirst:n,foreignTable:r,referencedTable:i=r}={}){const s=i?`${i}.order`:"order",a=this.url.searchParams.get(s);return this.url.searchParams.set(s,`${a?`${a},`:""}${e}.${t?"asc":"desc"}${n===void 0?"":n?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:t,referencedTable:n=t}={}){const r=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(r,`${e}`),this}range(e,t,{foreignTable:n,referencedTable:r=n}={}){const i=typeof r>"u"?"offset":`${r}.offset`,s=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(i,`${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}
269explain({analyze:e=!1,verbose:t=!1,settings:n=!1,buffers:r=!1,wal:i=!1,format:s="text"}={}){var a;const o=[e?"analyze":null,t?"verbose":null,n?"settings":null,r?"buffers":null,i?"wal":null].filter(Boolean).join("|"),l=(a=this.headers.get("Accept"))!==null&&a!==void 0?a:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${s}; for="${l}"; 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 xv=new RegExp("[,()]");var is=class extends KO{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(r=>typeof r=="string"&&xv.test(r)?`"${r}"`:`${r}`).join(",");return this.url.searchParams.append(e,`in.(${n})`),this}notIn(e,t){const n=Array.from(new Set(t)).map(r=>typeof r=="string"&&xv.test(r)?`"${r}"`:`${r}`).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:r}={}){let i="";r==="plain"?i="pl":r==="phrase"?i="ph":r==="websearch"&&(i="w");const s=n===void 0?"":`(${n})`;return this.url.searchParams.append(e,`${i}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 r=n?`${n}.or`:"or";return this.url.searchParams.append(r,`(${e})`),this}filter(e,t,n){return this.url.searchParams.append(e,`${t}.${n}`),this}},XO=class{constructor(e,{headers:t={},schema:n,fetch:r}){this.url=e,this.headers=new Headers(t),this.schema=n,this.fetch=r}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(e,t){const{head:n=!1,count:r}=t??{},i=n?"HEAD":"GET";let s=!1;const a=(e??"*").split("").map(u=>/\s/.test(u)&&!s?"":(u==='"'&&(s=!s),u)).join(""),{url:o,headers:l}=this.cloneRequestState();return o.searchParams.set("select",a),r&&l.append("Prefer",`count=${r}`),new is({method:i,url:o,headers:l,schema:this.schema,fetch:this.fetch})}insert(e,{count:t,defaultToNull:n=!0}={}){var r;const i="POST",{url:s,headers:a}=this.cloneRequestState();if(t&&a.append("Prefer",`count=${t}`),n||a.append("Prefer","missing=default"),Array.isArray(e)){const o=e.reduce((l,u)=>l.concat(Object.keys(u)),[]);if(o.length>0){const l=[...new Set(o)].map(u=>`"${u}"`);s.searchParams.set("columns",l.join(","))}}return new is({method:i,url:s,headers:a,schema:this.schema,body:e,fetch:(r=this.fetch)!==null&&r!==void 0?r:fetch})}upsert(e,{onConflict:t,ignoreDuplicates:n=!1,count:r,defaultToNull:i=!0}={}){var s;const a="POST",{url:o,headers:l}=this.cloneRequestState();if(l.append("Prefer",`resolution=${n?"ignore":"merge"}-duplicates`),t!==void 0&&o.searchParams.set("on_conflict",t),r&&l.append("Prefer",`count=${r}`),i||l.append("Prefer","missing=default"),Array.isArray(e)){const u=e.reduce((c,p)=>c.concat(Object.keys(p)),[]);if(u.length>0){const c=[...new Set(u)].map(p=>`"${p}"`);o.searchParams.set("columns",c.join(","))}}return new is({method:a,url:o,headers:l,schema:this.schema,body:e,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch})}update(e,{count:t}={}){var n;const r="PATCH",{url:i,headers:s}=this.cloneRequestState();return t&&s.append("Prefer",`count=${t}`),new is({method:r,url:i,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:r,headers:i}=this.cloneRequestState();return e&&i.append("Prefer",`count=${e}`),new is({method:n,url:r,headers:i,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch})}},QO=class Yw{constructor(t,{headers:n={},schema:r,fetch:i}={}){this.url=t,this.headers=new Headers(n),this.schemaName=r,this.fetch=i}from(t){if(!t||typeof t!="string"||t.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new XO(new URL(`${this.url}/${t}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(t){return new Yw(this.url,{headers:this.headers,schema:t,fetch:this.fetch})}rpc(t,n={},{head:r=!1,get:i=!1,count:s}={}){var a;let o;const l=new URL(`${this.url}/rpc/${t}`);let u;const c=m=>m!==null&&typeof m=="object"&&(!Array.isArray(m)||m.some(c)),p=r&&Object.values(n).some(c);p?(o="POST",u=n):r||i?(o=r?"HEAD":"GET",Object.entries(n).filter(([m,g])=>g!==void 0).map(([m,g])=>[m,Array.isArray(g)?`{${g.join(",")}}`:`${g}
269`]).forEach(([m,g])=>{l.searchParams.append(m,g)})):(o="POST",u=n);const f=new Headers(this.headers);return p?f.set("Prefer",s?`count=${s},return=minimal`:"return=minimal"):s&&f.set("Prefer",`count=${s}`),new is({method:o,url:l,headers:f,schema:this.schemaName,body:u,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch})}};class JO{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 r=n.versions;if(r&&r.node){const i=r.node,s=parseInt(i.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:
270import ws from "ws"
271new 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+=`
272
273Suggested solution: ${t.workaround}`),new Error(n)}static createWebSocket(t,n){const r=this.getWebSocketConstructor();return new r(t,n)}static isWebSocketSupported(){try{const t=this.detectEnvironment();return t.type==="native"||t.type==="ws"}catch{return!1}}}const YO="2.93.2",ZO=`realtime-js/${YO}`,eL="1.0.0",Zw="2.0.0",wv=Zw,Dp=1e4,tL=1e3,nL=100;var $r;(function(e){e[e.connecting=0]="connecting",e[e.open=1]="open",e[e.closing=2]="closing",e[e.closed=3]="closed"})($r||($r={}));var It;(function(e){e.closed="closed",e.errored="errored",e.joined="joined",e.joining="joining",e.leaving="leaving"})(It||(It={}));var Fn;(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"})(Fn||(Fn={}));var Fp;(function(e){e.websocket="websocket"})(Fp||(Fp={}));var gi;(function(e){e.Connecting="connecting",e.Open="open",e.Closing="closing",e.Closed="closed"})(gi||(gi={}));class rL{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 r=[t.join_ref,t.ref,t.topic,t.event,t.payload];return n(JSON.stringify(r))}_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,r;const i=(r=(n=t.payload)===null||n===void 0?void 0:n.payload)!==null&&r!==void 0?r:new ArrayBuffer(0);return this._encodeUserBroadcastPush(t,this.BINARY_ENCODING,i)}_encodeJsonUserBroadcastPush(t){var n,r;const i=(r=(n=t.payload)===null||n===void 0?void 0:n.payload)!==null&&r!==void 0?r:{},a=new TextEncoder().encode(JSON.stringify(i)).buffer;return this._encodeUserBroadcastPush(t,this.JSON_ENCODING,a)}_encodeUserBroadcastPush(t,n,r){var i,s;const a=t.topic,o=(i=t.ref)!==null&&i!==void 0?i:"",l=(s=t.join_ref)!==null&&s!==void 0?s:"",u=t.payload.event,c=this.allowedMetadataKeys?this._pick(t.payload,this.allowedMetadataKeys):{},p=Object.keys(c).length===0?"":JSON.stringify(c);if(l.length>255)throw new Error(`joinRef length ${l.length} exceeds maximum of 255`);if(o.length>255)throw new Error(`ref length ${o.length} exceeds maximum of 255`);if(a.length>255)throw new Error(`topic length ${a.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 f=this.USER_BROADCAST_PUSH_META_LENGTH+l.length+o.length+a.length+u.length+p.length,m=new ArrayBuffer(this.HEADER_LENGTH+f);let g=new DataView(m),h=0;g.setUint8(h++,this.KINDS.userBroadcastPush),g.setUint8(h++,l.length),g.setUint8(h++,o.length),g.setUint8(h++,a.length),g.setUint8(h++,u.length),g.setUint8(h++,p.length),g.setUint8(h++,n),Array.from(l,b=>g.setUint8(h++,b.charCodeAt(0))),Array.from(o,b=>g.setUint8(h++,b.charCodeAt(0))),Array.from(a,b=>g.setUint8(h++,b.charCodeAt(0))),Array.from(u,b=>g.setUint8(h++,b.charCodeAt(0))),Array.from(p,b=>g.setUint8(h++,b.charCodeAt(0)));var v=new Uint8Array(m.byteLength+r.byteLength);return v.set(new Uint8Array(m),0),v.set(new Uint8Array(r),m.byteLength),v.buffer}decode(t,n){if(this._isArrayBuffer(t)){let r=this._binaryDecode(t);return n(r)}if(typeof t=="string"){const r=JSON.parse(t),[i,s,a,o,l]=r;
273return n({join_ref:i,ref:s,topic:a,event:o,payload:l})}return n({})}_binaryDecode(t){const n=new DataView(t),r=n.getUint8(0),i=new TextDecoder;switch(r){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(t,n,i)}}_decodeUserBroadcast(t,n,r){const i=n.getUint8(1),s=n.getUint8(2),a=n.getUint8(3),o=n.getUint8(4);let l=this.HEADER_LENGTH+4;const u=r.decode(t.slice(l,l+i));l=l+i;const c=r.decode(t.slice(l,l+s));l=l+s;const p=r.decode(t.slice(l,l+a));l=l+a;const f=t.slice(l,t.byteLength),m=o===this.JSON_ENCODING?JSON.parse(r.decode(f)):f,g={type:this.BROADCAST_EVENT,event:c,payload:m};return a>0&&(g.meta=JSON.parse(p)),{join_ref:null,ref:null,topic:u,event:this.BROADCAST_EVENT,payload:g}}_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(([r])=>n.includes(r)))}}class eq{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 tt;(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"})(tt||(tt={}));const qv=(e,t,n={})=>{var r;const i=(r=n.skipTypes)!==null&&r!==void 0?r:[];return t?Object.keys(t).reduce((s,a)=>(s[a]=iL(a,e,t,i),s),{}):{}},iL=(e,t,n,r)=>{const i=t.find(o=>o.name===e),s=i==null?void 0:i.type,a=n[e];return s&&!r.includes(s)?tq(s,a):Up(a)},tq=(e,t)=>{if(e.charAt(0)==="_"){const n=e.slice(1,e.length);return lL(t,n)}switch(e){case tt.bool:return sL(t);case tt.float4:case tt.float8:case tt.int2:case tt.int4:case tt.int8:case tt.numeric:case tt.oid:return aL(t);case tt.json:case tt.jsonb:return oL(t);case tt.timestamp:return uL(t);case tt.abstime:case tt.date:case tt.daterange:case tt.int4range:case tt.int8range:case tt.money:case tt.reltime:case tt.text:case tt.time:case tt.timestamptz:case tt.timetz:case tt.tsrange:case tt.tstzrange:return Up(t);default:return Up(t)}},Up=e=>e,sL=e=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},aL=e=>{if(typeof e=="string"){const t=parseFloat(e);if(!Number.isNaN(t))return t}return e},oL=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},lL=(e,t)=>{if(typeof e!="string")return e;const n=e.length-1,r=e[n];if(e[0]==="{"&&r==="}"){let s;const a=e.slice(1,n);try{s=JSON.parse("["+a+"]")}catch{s=a?a.split(","):[]}return s.map(o=>tq(t,o))}return e},uL=e=>typeof e=="string"?e.replace(" ","T"):e,nq=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 xd{constructor(t,n,r={},i=Dp){this.channel=t,this.event=n,this.payload=r,this.timeout=i,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 r;return this._hasReceived(t)&&n((r=this.receivedResp)===null||r===void 0?void 0:r.response),this.recHo
273oks.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(r=>r.status===t).forEach(r=>r.callback(n))}_hasReceived(t){return this.receivedResp&&this.receivedResp.status===t}}var Sv;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(Sv||(Sv={}));class Ba{constructor(t,n){this.channel=t,this.state={},this.pendingDiffs=[],this.joinRef=null,this.enabled=!1,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const r=(n==null?void 0:n.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(r.state,{},i=>{const{onJoin:s,onLeave:a,onSync:o}=this.caller;this.joinRef=this.channel._joinRef(),this.state=Ba.syncState(this.state,i,s,a),this.pendingDiffs.forEach(l=>{this.state=Ba.syncDiff(this.state,l,s,a)}),this.pendingDiffs=[],o()}),this.channel._on(r.diff,{},i=>{const{onJoin:s,onLeave:a,onSync:o}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(i):(this.state=Ba.syncDiff(this.state,i,s,a),o())}),this.onJoin((i,s,a)=>{this.channel._trigger("presence",{event:"join",key:i,currentPresences:s,newPresences:a})}),this.onLeave((i,s,a)=>{this.channel._trigger("presence",{event:"leave",key:i,currentPresences:s,leftPresences:a})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(t,n,r,i){const s=this.cloneDeep(t),a=this.transformState(n),o={},l={};return this.map(s,(u,c)=>{a[u]||(l[u]=c)}),this.map(a,(u,c)=>{const p=s[u];if(p){const f=c.map(v=>v.presence_ref),m=p.map(v=>v.presence_ref),g=c.filter(v=>m.indexOf(v.presence_ref)<0),h=p.filter(v=>f.indexOf(v.presence_ref)<0);g.length>0&&(o[u]=g),h.length>0&&(l[u]=h)}else o[u]=c}),this.syncDiff(s,{joins:o,leaves:l},r,i)}static syncDiff(t,n,r,i){const{joins:s,leaves:a}={joins:this.transformState(n.joins),leaves:this.transformState(n.leaves)};return r||(r=()=>{}),i||(i=()=>{}),this.map(s,(o,l)=>{var u;const c=(u=t[o])!==null&&u!==void 0?u:[];if(t[o]=this.cloneDeep(l),c.length>0){const p=t[o].map(m=>m.presence_ref),f=c.filter(m=>p.indexOf(m.presence_ref)<0);t[o].unshift(...f)}r(o,c,l)}),this.map(a,(o,l)=>{let u=t[o];if(!u)return;const c=l.map(p=>p.presence_ref);u=u.filter(p=>c.indexOf(p.presence_ref)<0),t[o]=u,i(o,u,l),u.length===0&&delete t[o]}),t}static map(t,n){return Object.getOwnPropertyNames(t).map(r=>n(r,t[r]))}static transformState(t){return t=this.cloneDeep(t),Object.getOwnPropertyNames(t).reduce((n,r)=>{const i=t[r];return"metas"in i?n[r]=i.metas.map(s=>(s.presence_ref=s.phx_ref,delete s.phx_ref,delete s.phx_ref_prev,s)):n[r]=i,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 Av;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Av||(Av={}));var Wa;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(Wa||(Wa={}));var gr;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(gr||(gr={}));class os{constructor(t,n={config:{}},r){var i,s;if(this.topic=t,this.params=n,this.socket=r,this.bindings={},this.state=It.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 xd(this,Fn.join,this.params,this.timeout),this.rejoinTimer=new eq(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=It.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(a=>a.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=It.closed,this.socket._remove(this)}),this._onError(a=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,a),this.state=It.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=It.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("error",a=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,a),this.state=It.errored,this.rejoinTimer.scheduleTimeout())}),this._on(Fn.reply,{},(a,o)=>{this._trigger(this._replyEventName(o),a)}),this.presence=new Ba(this),this.broadcastEndpointURL=nq(this.socket.endPoint),this.private=this.params.config.private||!1,!this.private&&(!((s=(i=this.params.config)===null||i===void 0?void 0:i.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 r,i,s;if(this.socket.isConnected()||this.socket.connect(),this.state==It.closed){const{config:{broadcast:a,presence:o,private:l}}=this.params,u=(i=(r=this.bindings.postgres_changes)===null||r===void 0?void 0:r.map(m=>m.filter))!==null&&i!==void 0?i:[],c=!!this.bindings[Wa.PRESENCE]&&this.bindings[Wa.PRESENCE].length>0||((s=this.params.config.presence)===null||s===void 0?void 0:s.enabled)===!0,p={},f={broadcast:a,presence:Object.assign(Object.assign({},o),{enabled:c}),postgres_changes:u,private:l};this.socket.accessTokenValue&&(p.access_token=this.socket.accessTokenValue),this._onError(m=>t==null?void 0:t(gr.CHANNEL_ERROR,m)),this._onClose(()=>t==null?void 0:t(gr.CLOSED)),this.updateJoinPayload(Object.assign({config:f},p)),this.joinedOnce=!0,this._rejoin(n),this.joinPush.receive("ok",async({postgres_changes:m})=>{var g;if(this.socket._isManualToken()||this.socket.setAuth(),m===void 0){t==null||t(gr.SUBSCRIBED);return}else{const h=this.bindings.postgres_changes,v=(g=h==null?void 0:h.length)!==null&&g!==void 0?g:0,b=[];for(let w=0;w<v;w++){const y=h[w],{filter:{event:A,schema:q,table:x,filter:_}}=y,I=m&&m[w];if(I&&I.event===A&&os.isFilterValueEqual(I.schema,q)&&os.isFilterValueEqual(I.table,x)&&os.isFilterValueEqual(I.filter,_))b.push(Object.assign(Object.assign({},y),{id:I.id}));else{this.unsubscribe(),this.state=It.errored,t==null||t(gr.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=b,t&&t(gr.SUBSCRIBED);return}}).receive("error",m=>{this.state=It.errored,t==null||t(gr.CHANNEL_ERROR,new Error(JSON.stringify(Object.values(m).join(", ")||"error")))}).receive("timeout",()=>{t==null||t(gr.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,r){return this.state===It.joined&&t===Wa.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,r)}async httpSend(t,n,r={}){var i;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 a={method:"POST",headers:s,body:JSON.stringify({messages:[{topic:this.subTopic,event:t,payload:n,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,a,(i=r.timeout)!==null&&i!==void 0?i:this.timeout);if(o.status===202)return{success:!0};let l=o.statusText;
273try{const u=await o.json();l=u.error||u.message||l}catch{}return Promise.reject(new Error(l))}async send(t,n={}){var r,i;if(!this._canPush()&&t.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");const{event:s,payload:a}=t,o={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(o.Authorization=`Bearer ${this.socket.accessTokenValue}`);const l={method:"POST",headers:o,body:JSON.stringify({messages:[{topic:this.subTopic,event:s,payload:a,private:this.private}]})};try{const u=await this._fetchWithTimeout(this.broadcastEndpointURL,l,(r=n.timeout)!==null&&r!==void 0?r:this.timeout);return await((i=u.body)===null||i===void 0?void 0:i.cancel()),u.ok?"ok":"error"}catch(u){return u.name==="AbortError"?"timed out":"error"}}else return new Promise(s=>{var a,o,l;const u=this._push(t.type,t,n.timeout||this.timeout);t.type==="broadcast"&&!(!((l=(o=(a=this.params)===null||a===void 0?void 0:a.config)===null||o===void 0?void 0:o.broadcast)===null||l===void 0)&&l.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=It.leaving;const n=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(Fn.close,"leave",this._joinRef())};this.joinPush.destroy();let r=null;return new Promise(i=>{r=new xd(this,Fn.leave,{},t),r.receive("ok",()=>{n(),i("ok")}).receive("timeout",()=>{n(),i("timed out")}).receive("error",()=>{i("error")}),r.send(),this._canPush()||r.trigger("ok",{})}).finally(()=>{r==null||r.destroy()})}teardown(){this.pushBuffer.forEach(t=>t.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=It.closed,this.bindings={}}async _fetchWithTimeout(t,n,r){const i=new AbortController,s=setTimeout(()=>i.abort(),r),a=await this.socket.fetch(t,Object.assign(Object.assign({},n),{signal:i.signal}));return clearTimeout(s),a}_push(t,n,r=this.timeout){if(!this.joinedOnce)throw`tried to push '${t}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let i=new xd(this,t,n,r);return this._canPush()?i.send():this._addToPushBuffer(i),i}_addToPushBuffer(t){if(t.startTimeout(),this.pushBuffer.push(t),this.pushBuffer.length>nL){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,r){return n}_isMember(t){return this.topic===t}_joinRef(){return this.joinPush.ref}_trigger(t,n,r){var i,s;const a=t.toLocaleLowerCase(),{close:o,error:l,leave:u,join:c}=Fn;if(r&&[o,l,u,c].indexOf(a)>=0&&r!==this._joinRef())return;let f=this._onMessage(a,n,r);if(n&&!f)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(a)?(i=this.bindings.postgres_changes)===null||i===void 0||i.filter(m=>{var g,h,v;return((g=m.filter)===null||g===void 0?void 0:g.event)==="*"||((v=(h=m.filter)===null||h===void 0?void 0:h.event)===null||v===void 0?void 0:v.toLocaleLowerCase())===a}).map(m=>m.callback(f,r)):(s=this.bindings[a])===null||s===void 0||s.filter(m=>{var g,h,v,b,w,y;if(["broadcast","presence","postgres_changes"].includes(a))if("id"in m){const A=m.id,q=(g=m.filter)===null||g===void 0?void 0:g.event;return A&&((h=n.ids)===null||h===void 0?void 0:h.includes(A))&&(q==="*"||(q==null?void 0:q.toLocaleLowerCase())===((v=n.data)===null||v===void 0?void 0:v.type.toLocaleLowerCase()))}else{const A=(w=(b=m==null?void 0:m.filter)===null||b===void 0?void 0:b.event)===null||w===void 0?void 0:w.toLocaleLowerCase();return A==="*"||A===((y=n==null?void 0:n.event)===null||y===void 0?void 0:y.toLocaleLowerCase())}else return m.type.toLocaleLowerCase()===a}).map(m=>{if(typeof f=="object"&&"ids"in f){const g=f.data,{schema:h,table:v,commit_timestamp:b,type:w,errors:y}=g;f=Object.assign(Object.assign({},{schema:h,table:v,commit_timestamp:b,eventType:w,new:{},old:{},errors:y}),this._getPayloadRecords(g))}m.callback(f,r)}
273)}_isClosed(){return this.state===It.closed}_isJoined(){return this.state===It.joined}_isJoining(){return this.state===It.joining}_isLeaving(){return this.state===It.leaving}_replyEventName(t){return`chan_reply_${t}`}_on(t,n,r){const i=t.toLocaleLowerCase(),s={type:i,filter:n,callback:r};return this.bindings[i]?this.bindings[i].push(s):this.bindings[i]=[s],this}_off(t,n){const r=t.toLocaleLowerCase();return this.bindings[r]&&(this.bindings[r]=this.bindings[r].filter(i=>{var s;return!(((s=i.type)===null||s===void 0?void 0:s.toLocaleLowerCase())===r&&os.isEqual(i.filter,n))})),this}static isEqual(t,n){if(Object.keys(t).length!==Object.keys(n).length)return!1;for(const r in t)if(t[r]!==n[r])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(Fn.close,{},t)}_onError(t){this._on(Fn.error,{},n=>t(n))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(t=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=It.joining,this.joinPush.resend(t))}_getPayloadRecords(t){const n={new:{},old:{}};return(t.type==="INSERT"||t.type==="UPDATE")&&(n.new=qv(t.columns,t.record)),(t.type==="UPDATE"||t.type==="DELETE")&&(n.old=qv(t.columns,t.old_record)),n}}const wd=()=>{},dl={HEARTBEAT_INTERVAL:25e3,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},cL=[1e3,2e3,5e3,1e4],dL=1e4,pL=`
274  addEventListener("message", (e) => {
275    if (e.data.event === "start") {
276      setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval);
277    }
278  });`;class mL{constructor(t,n){var r;if(this.accessTokenValue=null,this.apiKey=null,this._manuallySetToken=!1,this.channels=new Array,this.endPoint="",this.httpEndpoint="",this.headers={},this.params={},this.timeout=Dp,this.transport=null,this.heartbeatIntervalMs=dl.HEARTBEAT_INTERVAL,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.heartbeatCallback=wd,this.ref=0,this.reconnectTimer=null,this.vsn=wv,this.logger=wd,this.conn=null,this.sendBuffer=[],this.serializer=new rL,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.accessToken=null,this._connectionState="disconnected",this._wasManualDisconnect=!1,this._authPromise=null,this._heartbeatSentAt=null,this._resolveFetch=i=>i?(...s)=>i(...s):(...s)=>fetch(...s),!(!((r=n==null?void 0:n.params)===null||r===void 0)&&r.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=n.params.apikey,this.endPoint=`${t}/${Fp.websocket}`,this.httpEndpoint=nq(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=JO.createWebSocket(this.endpointURL())}catch(t){this._setConnectionState("disconnected");const n=t.message;throw n.includes("Node.js")?new Error(`${n}
279
280To use Realtime in Node.js, you need to provide a WebSocket implementation:
281
282Option 1: Use Node.js 22+ which has native WebSocket support
283Option 2: Install and provide the "ws" package:
284
285  npm install ws
286
287  import ws from "ws"
288  const client = new RealtimeClient(url, {
289    ...options,
290    transport: ws
291  })`):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 r=setTimeout(()=>{this._setConnectionState("disconnected")},100);this.conn.onclose=()=>{clearTimeout(r),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,r){this.logger(t,n,r)}connectionState(){switch(this.conn&&this.conn.readyState){case $r.connecting:return gi.Connecting;case $r.open:return gi.Open;case $r.closing:return gi.Closing;default:return gi.Closed}}isConnected(){return this.connectionState()===gi.Open}isConnecting(){return this._connectionState==="connecting"}isDisconnecting(){return this._connectionState==="disconnecting"}
291channel(t,n={config:{}}){const r=`realtime:${t}`,i=this.getChannels().find(s=>s.topic===r);if(i)return i;{const s=new os(`realtime:${t}`,n,this);return this.channels.push(s),s}}push(t){const{topic:n,event:r,payload:i,ref:s}=t,a=()=>{this.encode(t,o=>{var l;(l=this.conn)===null||l===void 0||l.send(o)})};this.log("push",`${n} ${r} (${s})`,i),this.isConnected()?a():this.sendBuffer.push(a)}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(tL,"heartbeat timeout"),setTimeout(()=>{var n;this.isConnected()||(n=this.reconnectTimer)===null||n===void 0||n.scheduleTimeout()},dl.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(r=>r.topic===t&&(r._isJoined()||r._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=>{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(c){this.log("error","error in heartbeat callback",c)}this._heartbeatSentAt=null,this.pendingHeartbeatRef=null}const{topic:r,event:i,payload:s,ref:a}=n,o=a?`(${a})`:"",l=s.status||"";this.log("receive",`${l} ${r} ${i} ${o}`.trim(),s),this.channels.filter(u=>u._isMember(r)).forEach(u=>u._trigger(i,s,a)),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===$r.open&&this._onConnOpen())}_teardownConnection(){if(this.conn){if(this.conn.readyState===$r.open||this.conn.readyState===$r.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);try{this.heartbeatCallback("error")}catch(n){this.log("error","error in heartbeat callback",n)}}
291_triggerChanError(){this.channels.forEach(t=>t._trigger(Fn.error))}_appendParams(t,n){if(Object.keys(n).length===0)return t;const r=t.match(/\?/)?"&":"?",i=new URLSearchParams(n);return`${t}${r}${i}`}_workerObjectUrl(t){let n;if(t)n=t;else{const r=new Blob([pL],{type:"application/javascript"});n=URL.createObjectURL(r)}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,r=!1;if(t)n=t,r=!0;else if(this.accessToken)try{n=await this.accessToken()}catch(i){this.log("error","Error fetching access token from callback",i),n=this.accessTokenValue}else n=this.accessTokenValue;r?this._manuallySetToken=!0:this.accessToken&&(this._manuallySetToken=!1),this.accessTokenValue!=n&&(this.accessTokenValue=n,this.channels.forEach(i=>{const s={access_token:n,version:ZO};n&&i.updateJoinPayload(s),i.joinedOnce&&i._isJoined()&&i._push(Fn.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(r=>{try{r(n)}catch(i){this.log("error",`error in ${t} callback`,i)}})}catch(r){this.log("error",`error triggering ${t} callbacks`,r)}}_setupReconnectionTimer(){this.reconnectTimer=new eq(async()=>{setTimeout(async()=>{await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()},dl.RECONNECT_DELAY)},this.reconnectAfterMs)}_initializeOptions(t){var n,r,i,s,a,o,l,u,c,p,f,m;switch(this.transport=(n=t==null?void 0:t.transport)!==null&&n!==void 0?n:null,this.timeout=(r=t==null?void 0:t.timeout)!==null&&r!==void 0?r:Dp,this.heartbeatIntervalMs=(i=t==null?void 0:t.heartbeatIntervalMs)!==null&&i!==void 0?i:dl.HEARTBEAT_INTERVAL,this.worker=(s=t==null?void 0:t.worker)!==null&&s!==void 0?s:!1,this.accessToken=(a=t==null?void 0:t.accessToken)!==null&&a!==void 0?a:null,this.heartbeatCallback=(o=t==null?void 0:t.heartbeatCallback)!==null&&o!==void 0?o:wd,this.vsn=(l=t==null?void 0:t.vsn)!==null&&l!==void 0?l: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:g=>cL[g-1]||dL,this.vsn){case eL:this.encode=(c=t==null?void 0:t.encode)!==null&&c!==void 0?c:(g,h)=>h(JSON.stringify(g)),this.decode=(p=t==null?void 0:t.decode)!==null&&p!==void 0?p:(g,h)=>h(JSON.parse(g));break;case Zw:this.encode=(f=t==null?void 0:t.encode)!==null&&f!==void 0?f: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 Za=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 fL(e,t,n){const r=new URL(t,e);if(n)for(const[i,s]of Object.entries(n))s!==void 0&&r.searchParams.set(i,s);return r.toString()}async function hL(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 gL(e){const t=e.fetchImpl??globalThis.fetch;return{async request({method:n,path:r,query:i,body:s,headers:a}){const o=fL(e.baseUrl,r,i),l=await hL(e.auth),u=await t(o,{method:n,headers:{...s?{"Content-Type":"application/json"}:{},...l,...a},body:s?JSON.stringify(s):void 0}),c=await u.text(),p=(u.headers.get("content-type")||"").includes("application/json"),f=p&&c?JSON.parse(c):c;if(!u.ok){const m=p?f:void 0,g=m==null?void 0:m.error;throw new Za((g==null?void 0:g.message)??`Request failed with status ${u.status}`,{status:u.status,icebergType:g==null?void 0:g.type,icebergCode:g==null?void 0:g.code,details:m})}return{status:u.status,headers:u.headers,data:f}}}}function pl(e){return e.join("�")}var vL=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){const t=e?{parent:pl(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(r=>({namespace:r}))}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/${pl(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${pl(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${pl(e.namespace)}`}),!0}catch(t){if(t instanceof Za&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(n){if(n instanceof Za&&n.status===409)return;throw n}}};function Gi(e){return e.join("�")}var yL=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/${Gi(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/${Gi(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/${Gi(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/${Gi(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/${Gi(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/${Gi(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(n){if(n instanceof Za&&n.status===404)return!1;throw n}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(n){if(n instanceof Za&&n.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw n}}},bL=class{constructor(e){var r;let t="v1";e.catalogName&&(t+=`/${e.catalogName}`);const n=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=gL({baseUrl:n,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=(r=e.accessDelegation)==null?void 0:r.join(","),this.namespaceOps=new vL(this.client,t),this.tableOps=new yL(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)}
291async 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)}},rc=class extends Error{constructor(e,t="storage",n,r){super(e),this.__isStorageError=!0,this.namespace=t,this.name=t==="vectors"?"StorageVectorsError":"StorageError",this.status=n,this.statusCode=r}};function ic(e){return typeof e=="object"&&e!==null&&"__isStorageError"in e}var ml=class extends rc{constructor(e,t,n,r="storage"){super(e,r,t,n),this.name=r==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},rq=class extends rc{constructor(e,t,n="storage"){super(e,n),this.name=n==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};const xL=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),wL=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)},zp=e=>{if(Array.isArray(e))return e.map(n=>zp(n));if(typeof e=="function"||e!==Object(e))return e;const t={};return Object.entries(e).forEach(([n,r])=>{const i=n.replace(/([-_][a-z])/gi,s=>s.toUpperCase().replace(/[-_]/g,""));t[i]=zp(r)}),t},qL=e=>!e||typeof e!="string"||e.length===0||e.length>100||e.trim()!==e||e.includes("/")||e.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e);function eo(e){"@babel/helpers - typeof";return eo=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},eo(e)}function SL(e,t){if(eo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(eo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function AL(e){var t=SL(e,"string");return eo(t)=="symbol"?t:t+""}function EL(e,t,n){return(t=AL(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ev(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function we(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Ev(Object(n),!0).forEach(function(r){EL(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ev(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}const _v=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)},_L=async(e,t,n,r)=>{if(e&&typeof e=="object"&&"status"in e&&"ok"in e&&typeof e.status=="number"&&!(n!=null&&n.noResolveJson)){const i=e,s=i.status||500;if(typeof i.json=="function")i.json().then(a=>{const o=(a==null?void 0:a.statusCode)||(a==null?void 0:a.code)||s+"";t(new ml(_v(a),s,o,r))}).catch(()=>{if(r==="vectors"){const a=s+"";t(new ml(i.statusText||`HTTP ${s} error`,s,a,r))}else{const a=s+"";t(new ml(i.statusText||`HTTP ${s} error`,s,a,r))}});else{const a=s+"";t(new ml(i.statusText||`HTTP ${s} error`,s,a,r))}}else t(new rq(_v(e),e,r))},kL=(e,t,n,r)=>{const i={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"||e==="HEAD"||!r?we(we({},i),n):(wL(r)?(i.headers=we({"Content-Type":"application/json"},t==null?void 0:t.headers),i.body=JSON.stringify(r)):i.body=r,t!=null&&t.duplex&&(i.duplex=t.duplex),we(we({},i),n))};async function wa(e,t,n,r,i,s,a){return new Promise((o,l)=>{e(n,kL(t,r,i,s)).then(u=>{if(!u.ok)throw u;if(r!=null&&r.noResolveJson)return u;if(a==="vectors"){const c=u.headers.get("content-type");if(!c||!c.includes("application/json"))return{}}return u.json()}).then(u=>o(u)).catch(u=>_L(u,l,r,a))})}function CL(e="storage"){return{get:async(t,n,r,i)=>wa(t,"GET",n,r,i,void 0,e),post:async(t,n,r,i,s)=>wa(t,"POST",n,i,s,r,e),put:async(t,n,r,i,s)=>wa(t,"PUT",n,i,s,r,e),head:async(t,n,r,i)=>wa(t,"HEAD",n,we(we({},r),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,n,r,i,s)=>wa(t,"DELETE",n,i,s,r,e)}}const jL=CL("storage"),{get:to,post:dt,put:Bp,head:PL,remove:Xf}=jL;var ea=class{constructor(e,t={},n,r="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=t,this.fetch=xL(n),this.namespace=r}throwOnError(){return this.shouldThrowOnError=!0,this}async handleOperation(e){var t=this;try{return{data:await e(),error:null}}catch(n){if(t.shouldThrowOnError)throw n;if(ic(n))return{data:null,error:n};throw n}}},TL=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(ic(t))return{data:null,error:t};throw t}}};let iq;iq=Symbol.toStringTag;var IL=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[iq]="BlobDownloadBuilder",this.promise=null}asStream(){return new TL(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(ic(t))return{data:null,error:t};throw t}}};const OL={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},kv={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var LL=class extends ea{constructor(e,t={},n,r){super(e,t,r,"storage"),this.bucketId=n}async uploadOrUpdate(e,t,n,r){var i=this;return i.handleOperation(async()=>{let s;const a=we(we({},kv),r);let o=we(we({},i.headers),e==="POST"&&{"x-upsert":String(a.upsert)});const l=a.metadata;typeof Blob<"u"&&n instanceof Blob?(s=new FormData,s.append("cacheControl",a.cacheControl),l&&s.append("metadata",i.encodeMetadata(l)),s.append("",n)):typeof FormData<"u"&&n instanceof FormData?(s=n,s.has("cacheControl")||s.append("cacheControl",a.cacheControl),l&&!s.has("metadata")&&s.append("metadata",i.encodeMetadata(l))):(s=n,o["cache-control"]=`max-age=${a.cacheControl}`,o["content-type"]=a.contentType,l&&(o["x-metadata"]=i.toBase64(i.encodeMetadata(l))),(typeof ReadableStream<"u"&&s instanceof ReadableStream||s&&typeof s=="object"&&"pipe"in s&&typeof s.pipe=="function")&&!a.duplex&&(a.duplex="half")),r!=null&&r.headers&&(o=we(we({},o),r.headers));const u=i._removeEmptyFolders(t),c=i._getFinalPath(u),p=await(e=="PUT"?Bp:dt)(i.fetch,`${i.url}/object/${c}`,s,we({headers:o},a!=null&&a.duplex?{duplex:a.duplex}:{}));return{path:u,id:p.Id,fullPath:p.Key}})}async upload(e,t,n){return this.uploadOrUpdate("POST",e,t,n)}async uploadToSignedUrl(e,t,n,r){var i=this;const s=i._removeEmptyFolders(e),a=i._getFinalPath(s),o=new URL(i.url+`/object/upload/sign/${a}`);return o.searchParams.set("token",t),i.handleOperation(async()=>{let l;const u=we({upsert:kv.upsert},r),c=we(we({},i.headers),{"x-upsert":String(u.upsert)});return typeof Blob<"u"&&n instanceof Blob?(l=new FormData,l.append("cacheControl",u.cacheControl),l.append("",n)):typeof FormData<"u"&&n instanceof FormData?(l=n,l.append("cacheControl",u.cacheControl)):(l=n,c["cache-control"]=`max-age=${u.cacheControl}`,c["content-type"]=u.contentType),{path:s,fullPath:(await Bp(i.fetch,o.toString(),l,{headers:c})).Key}})}async createSignedUploadUrl(e,t){var n=this;return n.handleOperation(async()=>{let r=n._getFinalPath(e);const i=we({},n.headers);t!=null&&t.upsert&&(i["x-upsert"]="true");const s=await dt(n.fetch,`${n.url}/object/upload/sign/${r}`,{},{headers:i}),a=new URL(n.url+s.url),o=a.searchParams.get("token");if(!o)throw new rc("No token returned by API");return{signedUrl:a.toString(),path:e,token:o}})}async update(e,t,n){return this.uploadOrUpdate("PUT",e,t,n)}async move(e,t,n){var r=this;return r.handleOperation(async()=>await dt(r.fetch,`${r.url}/object/move`,{bucketId:r.bucketId,sourceKey:e,destinationKey:t,de
291stinationBucket:n==null?void 0:n.destinationBucket},{headers:r.headers}))}async copy(e,t,n){var r=this;return r.handleOperation(async()=>({path:(await dt(r.fetch,`${r.url}/object/copy`,{bucketId:r.bucketId,sourceKey:e,destinationKey:t,destinationBucket:n==null?void 0:n.destinationBucket},{headers:r.headers})).Key}))}async createSignedUrl(e,t,n){var r=this;return r.handleOperation(async()=>{let i=r._getFinalPath(e),s=await dt(r.fetch,`${r.url}/object/sign/${i}`,we({expiresIn:t},n!=null&&n.transform?{transform:n.transform}:{}),{headers:r.headers});const a=n!=null&&n.download?`&download=${n.download===!0?"":n.download}`:"";return{signedUrl:encodeURI(`${r.url}${s.signedURL}${a}`)}})}async createSignedUrls(e,t,n){var r=this;return r.handleOperation(async()=>{const i=await dt(r.fetch,`${r.url}/object/sign/${r.bucketId}`,{expiresIn:t,paths:e},{headers:r.headers}),s=n!=null&&n.download?`&download=${n.download===!0?"":n.download}`:"";return i.map(a=>we(we({},a),{},{signedUrl:a.signedURL?encodeURI(`${r.url}${a.signedURL}${s}`):null}))})}download(e,t){const n=typeof(t==null?void 0:t.transform)<"u"?"render/image/authenticated":"object",r=this.transformOptsToQueryString((t==null?void 0:t.transform)||{}),i=r?`?${r}`:"",s=this._getFinalPath(e),a=()=>to(this.fetch,`${this.url}/${n}/${s}${i}`,{headers:this.headers,noResolveJson:!0});return new IL(a,this.shouldThrowOnError)}async info(e){var t=this;const n=t._getFinalPath(e);return t.handleOperation(async()=>zp(await to(t.fetch,`${t.url}/object/info/${n}`,{headers:t.headers})))}async exists(e){var t=this;const n=t._getFinalPath(e);try{return await PL(t.fetch,`${t.url}/object/${n}`,{headers:t.headers}),{data:!0,error:null}}catch(r){if(t.shouldThrowOnError)throw r;if(ic(r)&&r instanceof rq){const i=r.originalError;if([400,404].includes(i==null?void 0:i.status))return{data:!1,error:r}}throw r}}getPublicUrl(e,t){const n=this._getFinalPath(e),r=[],i=t!=null&&t.download?`download=${t.download===!0?"":t.download}`:"";i!==""&&r.push(i);const s=typeof(t==null?void 0:t.transform)<"u"?"render/image":"object",a=this.transformOptsToQueryString((t==null?void 0:t.transform)||{});a!==""&&r.push(a);let o=r.join("&");return o!==""&&(o=`?${o}`),{data:{publicUrl:encodeURI(`${this.url}/${s}/public/${n}${o}`)}}}async remove(e){var t=this;return t.handleOperation(async()=>await Xf(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async list(e,t,n){var r=this;return r.handleOperation(async()=>{const i=we(we(we({},OL),t),{},{prefix:e||""});return await dt(r.fetch,`${r.url}/object/list/${r.bucketId}`,i,{headers:r.headers},n)})}async listV2(e,t){var n=this;return n.handleOperation(async()=>{const r=we({},e);return await dt(n.fetch,`${n.url}/object/list-v2/${n.bucketId}`,r,{headers:n.headers},t)})}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 ML="2.93.2",Ko={"X-Client-Info":`storage-js/${ML}`};var NL=class extends ea{constructor(e,t={},n,r){const i=new URL(e);r!=null&&r.useNewHostname&&/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes("storage.supabase.")&&(i.hostname=i.hostname.replace("supabase.","storage.supabase."));const s=i.href.replace(/\/$/,""),a=we(we({},Ko),t);super(s,a,n,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{const n=t.listBucketOptionsToQueryString(e);return await to(t.fetch,`${t.url}/bucket${n}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await to(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var n=this;return n.handleOperation(async()=>await dt(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}))}async updateBucket(e,t){var n=this;return n.handleOperation(async()=>await Bp(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}))}async emptyBucket(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Xf(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}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():""}},RL=class extends ea{constructor(e,t={},n){const r=e.replace(/\/$/,""),i=we(we({},Ko),t);super(r,i,n,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}))}async listBuckets(e){var t=this;return t.handleOperation(async()=>{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 r=n.toString(),i=r?`${t.url}/bucket?${r}`:`${t.url}/bucket`;return await to(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Xf(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!qL(e))throw new rc("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 bL({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}
291),r=this.shouldThrowOnError;return new Proxy(n,{get(i,s){const a=i[s];return typeof a!="function"?a:async(...o)=>{try{return{data:await a.apply(i,o),error:null}}catch(l){if(r)throw l;return{data:null,error:l}}}}})}},$L=class extends ea{constructor(e,t={},n){const r=e.replace(/\/$/,""),i=we(we({},Ko),{},{"Content-Type":"application/json"},t);super(r,i,n,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var n=this;return n.handleOperation(async()=>await dt(n.fetch,`${n.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:n.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var n=this;return n.handleOperation(async()=>await dt(n.fetch,`${n.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:n.headers})||{})}},DL=class extends ea{constructor(e,t={},n){const r=e.replace(/\/$/,""),i=we(we({},Ko),{},{"Content-Type":"application/json"},t);super(r,i,n,"vectors")}async putVectors(e){var t=this;if(e.vectors.length<1||e.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}))}async listVectors(e){var t=this;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 t.handleOperation(async()=>await dt(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}))}async deleteVectors(e){var t=this;if(e.keys.length<1||e.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},FL=class extends ea{constructor(e,t={},n){const r=e.replace(/\/$/,""),i=we(we({},Ko),{},{"Content-Type":"application/json"},t);super(r,i,n,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await dt(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},UL=class extends FL{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new zL(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)}},zL=class extends $L{constructor(e,t,n,r){super(e,t,r),this.vectorBucketName=n}async createIndex(e){var t=()=>super.createIndex,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,n=this;return t().call(n,we(we({},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 BL(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},BL=class extends DL{constructor(e,t,n,r,i){super(e,t,i),this.vectorBucketName=n,this.indexName=r}async putVectors(e){var t=()=>super.putVectors,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async getVectors(e){var t=()=>super.getVectors,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,n=this;return t().call(n,we(we({},e),{},{vectorBucketName:n.vectorBucketName,indexName:n.indexName}))}},WL=class extends NL{constructor(e,t={},n,r){super(e,t,n,r)}from(e){return new LL(this.url,this.headers,e,this.fetch)}get vectors(){return new UL(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new RL(this.url+"/iceberg",this.headers,this.fetch)}};const sq="2.93.2",ss=30*1e3,Wp=3,qd=Wp*ss,HL="http://localhost:9999",VL="supabase.auth.token",GL={"X-Client-Info":`gotrue-js/${sq}`},Hp="X-Supabase-Api-Version",aq={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},KL=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,XL=10*60*1e3;
291class no extends Error{constructor(t,n,r){super(t),this.__isAuthError=!0,this.name="AuthError",this.status=n,this.code=r}}function pe(e){return typeof e=="object"&&e!==null&&"__isAuthError"in e}class QL extends no{constructor(t,n,r){super(t,n,r),this.name="AuthApiError",this.status=n,this.code=r}}function JL(e){return pe(e)&&e.name==="AuthApiError"}class vi extends no{constructor(t,n){super(t),this.name="AuthUnknownError",this.originalError=n}}class Cr extends no{constructor(t,n,r,i){super(t,r,i),this.name=n,this.status=r}}class mn extends Cr{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Sd(e){return pe(e)&&e.name==="AuthSessionMissingError"}class Ki extends Cr{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class fl extends Cr{constructor(t){super(t,"AuthInvalidCredentialsError",400,void 0)}}class hl extends Cr{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 YL(e){return pe(e)&&e.name==="AuthImplicitGrantRedirectError"}class Cv extends Cr{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 ZL extends Cr{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 Vp extends Cr{constructor(t,n){super(t,"AuthRetryableFetchError",n,void 0)}}function Ad(e){return pe(e)&&e.name==="AuthRetryableFetchError"}class jv extends Cr{constructor(t,n,r){super(t,"AuthWeakPasswordError",n,"weak_password"),this.reasons=r}}class Gp extends Cr{constructor(t){super(t,"AuthInvalidJwtError",400,"invalid_jwt")}}const Xl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),Pv=` 	
292\r=`.split(""),eM=(()=>{const e=new Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<Pv.length;t+=1)e[Pv[t].charCodeAt(0)]=-2;for(let t=0;t<Xl.length;t+=1)e[Xl[t].charCodeAt(0)]=t;return e})();function Tv(e,t,n){if(e!==null)for(t.queue=t.queue<<8|e,t.queuedBits+=8;t.queuedBits>=6;){const r=t.queue>>t.queuedBits-6&63;n(Xl[r]),t.queuedBits-=6}else if(t.queuedBits>0)for(t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;t.queuedBits>=6;){const r=t.queue>>t.queuedBits-6&63;n(Xl[r]),t.queuedBits-=6}}function oq(e,t,n){const r=eM[e];if(r>-1)for(t.queue=t.queue<<6|r,t.queuedBits+=6;t.queuedBits>=8;)n(t.queue>>t.queuedBits-8&255),t.queuedBits-=8;else{if(r===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}}function Iv(e){const t=[],n=a=>{t.push(String.fromCodePoint(a))},r={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},s=a=>{rM(a,r,n)};for(let a=0;a<e.length;a+=1)oq(e.charCodeAt(a),i,s);return t.join("")}function tM(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 nM(e,t){for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r>55295&&r<=56319){const i=(r-55296)*1024&65535;r=(e.charCodeAt(n+1)-56320&65535|i)+65536,n+=1}tM(r,t)}}function rM(e,t,n){if(t.utf8seq===0){if(e<=127){n(e);return}for(let r=1;r<6;r+=1)if(!(e>>7-r&1)){t.utf8seq=r;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 gs(e){const t=[],n={queue:0,queuedBits:0},r=i=>{t.push(i)};for(let i=0;i<e.length;i+=1)oq(e.charCodeAt(i),n,r);return new Uint8Array(t)}function iM(e){const t=[];return nM(e,n=>t.push(n)),new Uint8Array(t)}function yi(e){const t=[],n={queue:0,queuedBits:0},r=i=>{t.push(i)};return e.forEach(i=>
292Tv(i,n,r)),Tv(null,n,r),t.join("")}function sM(e){return Math.round(Date.now()/1e3)+e}function aM(){return Symbol("auth-callback")}const Ft=()=>typeof window<"u"&&typeof document<"u",si={tested:!1,writable:!1},lq=()=>{if(!Ft())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(si.tested)return si.writable;const e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),si.tested=!0,si.writable=!0}catch{si.tested=!0,si.writable=!1}return si.writable};function oM(e){const t={},n=new URL(e);if(n.hash&&n.hash[0]==="#")try{new URLSearchParams(n.hash.substring(1)).forEach((i,s)=>{t[s]=i})}catch{}return n.searchParams.forEach((r,i)=>{t[i]=r}),t}const uq=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),lM=e=>typeof e=="object"&&e!==null&&"status"in e&&"ok"in e&&"json"in e&&typeof e.json=="function",as=async(e,t,n)=>{await e.setItem(t,JSON.stringify(n))},ai=async(e,t)=>{const n=await e.getItem(t);if(!n)return null;try{return JSON.parse(n)}catch{return n}},Dt=async(e,t)=>{await e.removeItem(t)};class sc{constructor(){this.promise=new sc.promiseConstructor((t,n)=>{this.resolve=t,this.reject=n})}}sc.promiseConstructor=Promise;function gl(e){const t=e.split(".");if(t.length!==3)throw new Gp("Invalid JWT structure");for(let r=0;r<t.length;r++)if(!KL.test(t[r]))throw new Gp("JWT not in base64url format");return{header:JSON.parse(Iv(t[0])),payload:JSON.parse(Iv(t[1])),signature:gs(t[2]),raw:{header:t[0],payload:t[1]}}}async function uM(e){return await new Promise(t=>{setTimeout(()=>t(null),e)})}function cM(e,t){return new Promise((r,i)=>{(async()=>{for(let s=0;s<1/0;s++)try{const a=await e(s);if(!t(s,null,a)){r(a);return}}catch(a){if(!t(s,a)){i(a);return}}})()})}function dM(e){return("0"+e.toString(16)).substr(-2)}function pM(){const t=new Uint32Array(56);if(typeof crypto>"u"){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",r=n.length;let i="";for(let s=0;s<56;s++)i+=n.charAt(Math.floor(Math.random()*r));return i}return crypto.getRandomValues(t),Array.from(t,dM).join("")}async function mM(e){const n=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",n),i=new Uint8Array(r);return Array.from(i).map(s=>String.fromCharCode(s)).join("")}async function fM(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 mM(e);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Xi(e,t,n=!1){const r=pM();let i=r;n&&(i+="/PASSWORD_RECOVERY"),await as(e,`${t}-code-verifier`,i);const s=await fM(r);return[s,r===s?"plain":"s256"]}const hM=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function gM(e){const t=e.headers.get(Hp);if(!t||!t.match(hM))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch{return null}}function vM(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 yM(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 bM=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function Qi(e){if(!bM.test(e))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Ed(){const e={};return new Proxy(e,{get:(t,n)=>{if(n==="__isUserNotAvailableProxy")return!0;if(typeof n=="symbol"){const r=n.toString();if(r==="Symbol(Symbol.toPrimitive)"||r==="Symbol(Symbol.toStringTag)"||r==="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 xM(e,t){return new Proxy(e,{get:(n,r,i)=>{if(r==="__isInsecureUserWarningProxy")return!0;
292if(typeof r=="symbol"){const s=r.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,r,i)}return!t.value&&typeof r=="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,r,i)}})}function Ov(e){return JSON.parse(JSON.stringify(e))}const di=e=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),wM=[502,503,504];async function Lv(e){var t;if(!lM(e))throw new Vp(di(e),0);if(wM.includes(e.status))throw new Vp(di(e),e.status);let n;try{n=await e.json()}catch(s){throw new vi(di(s),s)}let r;const i=gM(e);if(i&&i.getTime()>=aq["2024-01-01"].timestamp&&typeof n=="object"&&n&&typeof n.code=="string"?r=n.code:typeof n=="object"&&n&&typeof n.error_code=="string"&&(r=n.error_code),r){if(r==="weak_password")throw new jv(di(n),e.status,((t=n.weak_password)===null||t===void 0?void 0:t.reasons)||[]);if(r==="session_not_found")throw new mn}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,a)=>s&&typeof a=="string",!0))throw new jv(di(n),e.status,n.weak_password.reasons);throw new QL(di(n),e.status||500,r)}const qM=(e,t,n,r)=>{const i={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"?i:(i.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t==null?void 0:t.headers),i.body=JSON.stringify(r),Object.assign(Object.assign({},i),n))};async function xe(e,t,n,r){var i;const s=Object.assign({},r==null?void 0:r.headers);s[Hp]||(s[Hp]=aq["2024-01-01"].name),r!=null&&r.jwt&&(s.Authorization=`Bearer ${r.jwt}`);const a=(i=r==null?void 0:r.query)!==null&&i!==void 0?i:{};r!=null&&r.redirectTo&&(a.redirect_to=r.redirectTo);const o=Object.keys(a).length?"?"+new URLSearchParams(a).toString():"",l=await SM(e,t,n+o,{headers:s,noResolveJson:r==null?void 0:r.noResolveJson},{},r==null?void 0:r.body);return r!=null&&r.xform?r==null?void 0:r.xform(l):{data:Object.assign({},l),error:null}}async function SM(e,t,n,r,i,s){const a=qM(t,r,i,s);let o;try{o=await e(n,Object.assign({},a))}catch(l){throw console.error(l),new Vp(di(l),0)}if(o.ok||await Lv(o),r!=null&&r.noResolveJson)return o;try{return await o.json()}catch(l){await Lv(l)}}function Nn(e){var t;let n=null;_M(e)&&(n=Object.assign({},e),e.expires_at||(n.expires_at=sM(e.expires_in)));const r=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:n,user:r},error:null}}function Mv(e){const t=Nn(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,r)=>n&&typeof r=="string",!0)&&(t.data.weak_password=e.weak_password),t}function Fr(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function AM(e){return{data:e,error:null}}function EM(e){const{action_link:t,email_otp:n,hashed_token:r,redirect_to:i,verification_type:s}=e,a=Xu(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),o={action_link:t,email_otp:n,hashed_token:r,redirect_to:i,verification_type:s},l=Object.assign({},a);return{data:{properties:o,user:l},error:null}}function Nv(e){return e}function _M(e){return e.access_token&&e.refresh_token&&e.expires_in}const _d=["global","local","others"];class kM{constructor({url:t="",headers:n={},fetch:r}){this.url=t,this.headers=n,this.fetch=uq(r),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=_d[0]){if(_d.indexOf(n)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${_d.join(", ")}`);try{return await xe(this.fetch,"POST",`${this.url}/logout?scope=${n}`,{headers:this.headers,jwt:t,noResolveJson:!0}),{data:null,error:null}}catch(r){if(pe(r))return{data:null,error:r};throw r}}async inviteUserByEmail(t,n={}){try{return await xe(this.fetch,"POST",`${this.url}/invite`,{body:{email:t,data:n.data},headers:this.headers,redirectTo:n.redirectTo,xform:Fr})}catch(r){if(pe(r))return{data:{user:null},error:r};throw r}}async generateLink(t){try{const{options:n}=t,r=Xu(t,["options"]),i=Object.assign(Object.assign({},r),n);return"newEmail"in r&&(i.new_email=r==null?void 0:r.newEmail,delete i.newEmail),await xe(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:i,headers:this.headers,xform:EM,redirectTo:n==null?void 0:n.redirectTo})}catch(n){if(pe(n))return{data:{properties:null,user:null},error:n};throw n}}async createUser(t){try{return await xe(this.fetch,"POST",`${this.url}/admin/users`,{body:t,headers:this.headers,xform:Fr})}catch(n){if(pe(n))return{data:{user:null},error:n};throw n}}async listUsers(t){var n,r,i,s,a,o,l;try{const u={nextPage:null,lastPage:0,total:0},c=await xe(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(n=t==null?void 0:t.page)===null||n===void 0?void 0:n.toString())!==null&&r!==void 0?r:"",per_page:(s=(i=t==null?void 0:t.perPage)===null||i===void 0?void 0:i.toString())!==null&&s!==void 0?s:""},xform:Nv});if(c.error)throw c.error;const p=await c.json(),f=(a=c.headers.get("x-total-count"))!==null&&a!==void 0?a:0,m=(l=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&l!==void 0?l:[];return m.length>0&&(m.forEach(g=>{const h=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),v=JSON.parse(g.split(";")[1].split("=")[1]);u[`${v}Page`]=h}),u.total=parseInt(f)),{data:Object.assign(Object.assign({},p),u),error:null}}catch(u){if(pe(u))return{data:{users:[]},error:u};throw u}}async getUserById(t){Qi(t);try{return await xe(this.fetch,"GET",`${this.url}/admin/users/${t}`,{headers:this.headers,xform:Fr})}catch(n){if(pe(n))return{data:{user:null},error:n};throw n}}async updateUserById(t,n){Qi(t);try{return await xe(this.fetch,"PUT",`${this.url}/admin/users/${t}`,{body:n,headers:this.headers,xform:Fr})}catch(r){if(pe(r))return{data:{user:null},error:r};throw r}}async deleteUser(t,n=!1){Qi(t);
292try{return await xe(this.fetch,"DELETE",`${this.url}/admin/users/${t}`,{headers:this.headers,body:{should_soft_delete:n},xform:Fr})}catch(r){if(pe(r))return{data:{user:null},error:r};throw r}}async _listFactors(t){Qi(t.userId);try{const{data:n,error:r}=await xe(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/factors`,{headers:this.headers,xform:i=>({data:{factors:i},error:null})});return{data:n,error:r}}catch(n){if(pe(n))return{data:null,error:n};throw n}}async _deleteFactor(t){Qi(t.userId),Qi(t.id);try{return{data:await xe(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/factors/${t.id}`,{headers:this.headers}),error:null}}catch(n){if(pe(n))return{data:null,error:n};throw n}}async _listOAuthClients(t){var n,r,i,s,a,o,l;try{const u={nextPage:null,lastPage:0,total:0},c=await xe(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(n=t==null?void 0:t.page)===null||n===void 0?void 0:n.toString())!==null&&r!==void 0?r:"",per_page:(s=(i=t==null?void 0:t.perPage)===null||i===void 0?void 0:i.toString())!==null&&s!==void 0?s:""},xform:Nv});if(c.error)throw c.error;const p=await c.json(),f=(a=c.headers.get("x-total-count"))!==null&&a!==void 0?a:0,m=(l=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&l!==void 0?l:[];return m.length>0&&(m.forEach(g=>{const h=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),v=JSON.parse(g.split(";")[1].split("=")[1]);u[`${v}Page`]=h}),u.total=parseInt(f)),{data:Object.assign(Object.assign({},p),u),error:null}}catch(u){if(pe(u))return{data:{clients:[]},error:u};throw u}}async _createOAuthClient(t){try{return await xe(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:t,headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(pe(n))return{data:null,error:n};throw n}}async _getOAuthClient(t){try{return await xe(this.fetch,"GET",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(pe(n))return{data:null,error:n};throw n}}async _updateOAuthClient(t,n){try{return await xe(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${t}`,{body:n,headers:this.headers,xform:r=>({data:r,error:null})})}catch(r){if(pe(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(t){try{return await xe(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(n){if(pe(n))return{data:null,error:n};throw n}}async _regenerateOAuthClientSecret(t){try{return await xe(this.fetch,"POST",`${this.url}/admin/oauth/clients/${t}/regenerate_secret`,{headers:this.headers,xform:n=>({data:n,error:null})})}catch(n){if(pe(n))return{data:null,error:n};throw n}}}function Rv(e={}){return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n},removeItem:t=>{delete e[t]}}}const Ji={debug:!!(globalThis&&lq()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class cq extends Error{constructor(t){super(t),this.isAcquireTimeout=!0}}class CM extends cq{}async function jM(e,t,n){Ji.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);const r=new globalThis.AbortController;return t>0&&setTimeout(()=>{r.abort(),Ji.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:r.signal},async i=>{if(i){Ji.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",e,i.name);try{return await n()}finally{Ji.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",e,i.name)}}else{if(t===0)throw Ji.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e),new CM(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`);if(Ji.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 PM(){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 dq(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw new Error(`@supabase/auth-js: Address "${e}
292" is invalid.`);return e.toLowerCase()}function TM(e){return parseInt(e,16)}function IM(e){const t=new TextEncoder().encode(e);return"0x"+Array.from(t,r=>r.toString(16).padStart(2,"0")).join("")}function OM(e){var t;const{chainId:n,domain:r,expirationTime:i,issuedAt:s=new Date,nonce:a,notBefore:o,requestId:l,resources:u,scheme:c,uri:p,version:f}=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(!r)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(a&&a.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${a}`);if(!p)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(f!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${f}`);if(!((t=e.statement)===null||t===void 0)&&t.includes(`
293`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}const m=dq(e.address),g=c?`${c}://${r}`:r,h=e.statement?`${e.statement}
294`:"",v=`${g} wants you to sign in with your Ethereum account:
295${m}
296
297${h}`;let b=`URI: ${p}
298Version: ${f}
299Chain ID: ${n}${a?`
300Nonce: ${a}`:""}
301Issued At: ${s.toISOString()}`;if(i&&(b+=`
302Expiration Time: ${i.toISOString()}`),o&&(b+=`
303Not Before: ${o.toISOString()}`),l&&(b+=`
304Request ID: ${l}`),u){let w=`
305Resources:`;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}`);w+=`
306- ${y}`}b+=w}return`${v}
307${b}`}class Et extends Error{constructor({message:t,code:n,cause:r,name:i}){var s;super(t,{cause:r}),this.__isWebAuthnError=!0,this.name=(s=i??(r instanceof Error?r.name:void 0))!==null&&s!==void 0?s:"Unknown Error",this.code=n}}class Ql extends Et{constructor(t,n){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:n,message:t}),this.name="WebAuthnUnknownError",this.originalError=n}}function LM({error:e,options:t}){var n,r,i;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 Et({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 Et({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&((r=s.authenticatorSelection)===null||r===void 0?void 0:r.userVerification)==="required")return new Et({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(((i=s.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new Et({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 Et({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new Et({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 Et({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new Et({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 a=window.location.hostname;if(pq(a)){if(s.rp.id!==a)return new Et({message:`The RP ID "${s.rp.id}
307" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Et({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 Et({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 Et({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 Et({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function MM({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 Et({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if(e.name==="NotAllowedError")return new Et({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){const r=window.location.hostname;if(pq(r)){if(n.rpId!==r)return new Et({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Et({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new Et({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 Et({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class NM{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 RM=new NM;function $M(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:r}=e,i=Xu(e,["challenge","user","excludeCredentials"]),s=gs(t).buffer,a=Object.assign(Object.assign({},n),{id:gs(n.id).buffer}),o=Object.assign(Object.assign({},i),{challenge:s,user:a});if(r&&r.length>0){o.excludeCredentials=new Array(r.length);for(let l=0;l<r.length;l++){const u=r[l];o.excludeCredentials[l]=Object.assign(Object.assign({},u),{id:gs(u.id).buffer,type:u.type||"public-key",transports:u.transports})}}return o}function DM(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,r=Xu(e,["challenge","allowCredentials"]),i=gs(t).buffer,s=Object.assign(Object.assign({},r),{challenge:i});if(n&&n.length>0){s.allowCredentials=new Array(n.length);for(let a=0;a<n.length;a++){const o=n[a];s.allowCredentials[a]=Object.assign(Object.assign({},o),{id:gs(o.id).buffer,type:o.type||"public-key",transports:o.transports})}}return s}function FM(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:yi(new Uint8Array(e.response.attestationObject)),clientDataJSON:yi(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=n.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function UM(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const n=e,r=e.getClientExtensionResults(),i=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:yi(new Uint8Array(i.authenticatorData)),clientDataJSON:yi(new Uint8Array(i.clientDataJSON)),signature:yi(new Uint8Array(i.signature)),userHandle:i.userHandle?yi(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:r,authenticatorAttachment:(t=n.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function pq(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function $v(){var e,t;return!!(Ft()&&"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 zM(e){try{const t=await navigator.credentials.create(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ql("Browser returned unexpected credential type",t)}:{data:null,error:new Ql("Empty credential response",t)}}
307catch(t){return{data:null,error:LM({error:t,options:e})}}}async function BM(e){try{const t=await navigator.credentials.get(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ql("Browser returned unexpected credential type",t)}:{data:null,error:new Ql("Empty credential response",t)}}catch(t){return{data:null,error:MM({error:t,options:e})}}}const WM={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},HM={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Jl(...e){const t=i=>i!==null&&typeof i=="object"&&!Array.isArray(i),n=i=>i instanceof ArrayBuffer||ArrayBuffer.isView(i),r={};for(const i of e)if(i)for(const s in i){const a=i[s];if(a!==void 0)if(Array.isArray(a))r[s]=a;else if(n(a))r[s]=a;else if(t(a)){const o=r[s];t(o)?r[s]=Jl(o,a):r[s]=Jl(a)}else r[s]=a}return r}function VM(e,t){return Jl(WM,e,t||{})}function GM(e,t){return Jl(HM,e,t||{})}class KM{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:r,signal:i},s){try{const{data:a,error:o}=await this.client.mfa.challenge({factorId:t,webauthn:n});if(!a)return{data:null,error:o};const l=i??RM.createNewAbortSignal();if(a.webauthn.type==="create"){const{user:u}=a.webauthn.credential_options.publicKey;u.name||(u.name=`${u.id}:${r}`),u.displayName||(u.displayName=u.name)}switch(a.webauthn.type){case"create":{const u=VM(a.webauthn.credential_options.publicKey,s==null?void 0:s.create),{data:c,error:p}=await zM({publicKey:u,signal:l});return c?{data:{factorId:t,challengeId:a.id,webauthn:{type:a.webauthn.type,credential_response:c}},error:null}:{data:null,error:p}}case"request":{const u=GM(a.webauthn.credential_options.publicKey,s==null?void 0:s.request),{data:c,error:p}=await BM(Object.assign(Object.assign({},a.webauthn.credential_options),{publicKey:u,signal:l}));return c?{data:{factorId:t,challengeId:a.id,webauthn:{type:a.webauthn.type,credential_response:c}},error:null}:{data:null,error:p}}}}catch(a){return pe(a)?{data:null,error:a}:{data:null,error:new vi("Unexpected error in challenge",a)}}}async _verify({challengeId:t,factorId:n,webauthn:r}){return this.client.mfa.verify({factorId:n,challengeId:t,webauthn:r})}async _authenticate({factorId:t,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},s){if(!n)return{data:null,error:new no("rpId is required for WebAuthn authentication")};try{if(!$v())return{data:null,error:new vi("Browser does not support WebAuthn",null)};const{data:a,error:o}=await this.challenge({factorId:t,webauthn:{rpId:n,rpOrigins:r},signal:i},{request:s});if(!a)return{data:null,error:o};const{webauthn:l}=a;return this._verify({factorId:t,challengeId:a.challengeId,webauthn:{type:l.type,rpId:n,rpOrigins:r,credential_response:l.credential_response}})}catch(a){return pe(a)?{data:null,error:a}:{data:null,error:new vi("Unexpected error in authenticate",a)}}}async _register({friendlyName:t,webauthn:{rpId:n=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:i}={}},s){if(!n)return{data:null,error:new no("rpId is required for WebAuthn registration")};try{if(!$v())return{data:null,error:new vi("Browser does not support WebAuthn",null)};const{data:a,error:o}=await this._enroll({friendlyName:t});if(!a)return await this.client.mfa.listFactors().then(c=>{var p;return(p=c.data)===null||p===void 0?void 0:p.all.find(f=>f.factor_type==="webauthn"&&f.friendly_name===t&&f.status!=="unverified")}).then(c=>c?this.client.mfa.unenroll({factorId:c==null?void 0:c.id}):void 0),{data:null,error:o};const{data:l,error:u}=await this._challenge({factorId:a.id,friendlyName:a.friendly_name,webauthn:{rpId:n,rpOrigins:r},signal:i},{create:s});return l?this._verify({factorId:a.id,challengeId:l.challengeId,webauthn:{rpId:n,rpOrigins:r,type:l.webauthn.type,credential_response:l.webauthn.credential_response}}):{data:null,error:u}}catch(a){return pe(a)?{data:null,error:a}:{data:null,error:new vi("Unexpected error in register",a)}}}}PM();const XM={url:HL,storageKey:VL,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:GL,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:1e4};async function Dv(e,t,n){return await n()}const Yi={};class ro{get jwks(){var t,n;return(n=(t=Yi[this.storageKey])===null||t===void 0?void 0:t.jwks)!==null&&n!==void 0?n:{keys:[]}}set jwks(t){Yi[this.storageKey]=Object.assign(Object.assign({},Yi[this.storageKey]),{jwks:t})}get jwks_cached_at(){var t,n;return(n=(t=Yi[this.storageKey])===null||t===void 0?void 0:t.cachedAt)!==null&&n!==void 0?n:Number.MIN_SAFE_INTEGER}set jwks_cached_at(t){Yi[this.storageKey]=Object.assign(Object.assign({},Yi[this.storageKey]),{cachedAt:t})}constructor(t){var n,r,i;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({}
307,XM),t);if(this.storageKey=s.storageKey,this.instanceID=(n=ro.nextInstanceID[this.storageKey])!==null&&n!==void 0?n:0,ro.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!s.debug,typeof s.debug=="function"&&(this.logger=s.debug),this.instanceID>0&&Ft()){const a=`${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(a),this.logDebugMessages&&console.trace(a)}if(this.persistSession=s.persistSession,this.autoRefreshToken=s.autoRefreshToken,this.admin=new kM({url:s.url,headers:s.headers,fetch:s.fetch}),this.url=s.url,this.headers=s.headers,this.fetch=uq(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&&Ft()&&(!((r=globalThis==null?void 0:globalThis.navigator)===null||r===void 0)&&r.locks)?this.lock=jM: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 KM(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:lq()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=Rv(this.memoryStorage)),s.userStorage&&(this.userStorage=s.userStorage)):(this.memoryStorage={},this.storage=Rv(this.memoryStorage)),Ft()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(a){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",a)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async a=>{this._debug("received broadcast notification from other tab or client",a);try{await this._notifyAllSubscribers(a.data.event,a.data.session,!1)}catch(o){this._debug("#broadcastChannel","error",o)}})}this.initialize().catch(a=>{this._debug("#initialize()","error",a)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(t){if(this.throwOnError&&t&&t.error)throw t.error;return t}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${sq}) ${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={},r="none";if(Ft()&&(n=oM(window.location.href),this._isImplicitGrantCallback(n)?r="implicit":await this._isPKCECallback(n)&&(r="pkce")),Ft()&&this.detectSessionInUrl&&r!=="none"){const{data:i,error:s}=await this._getSessionFromURL(n,r);if(s){if(this._debug("#_initialize()","error detecting session from URL",s),YL(s)){const l=(t=s.details)===null||t===void 0?void 0:t.code;if(l==="identity_already_exists"||l==="identity_not_found"||l==="single_identity_not_deletable")return{error:s}}return{error:s}}const{session:a,redirectType:o}=i;return this._debug("#_initialize()","detected session in URL",a,"redirect type",o),await this._saveSession(a),setTimeout(async()=>{o==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",a):await this._notifyAllSubscribers("SIGNED_IN",a)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(n){return pe(n)?this._returnResult({error:n}):this._returnResult({error:new vi("Unexpected error during initialization",n)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(t){var n,r,i;try{const s=await xe(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(r=(n=t==null?void 0:t.options)===null||n===void 0?void 0:n.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:(i=t==null?void 0:t.options)===null||i===void 0?void 0:i.captchaToken}},xform:Nn}),{data:a,error:o}=s;
307if(o||!a)return this._returnResult({data:{user:null,session:null},error:o});const l=a.session,u=a.user;return a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",l)),this._returnResult({data:{user:u,session:l},error:null})}catch(s){if(pe(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signUp(t){var n,r,i;try{let s;if("email"in t){const{email:c,password:p,options:f}=t;let m=null,g=null;this.flowType==="pkce"&&([m,g]=await Xi(this.storage,this.storageKey)),s=await xe(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:f==null?void 0:f.emailRedirectTo,body:{email:c,password:p,data:(n=f==null?void 0:f.data)!==null&&n!==void 0?n:{},gotrue_meta_security:{captcha_token:f==null?void 0:f.captchaToken},code_challenge:m,code_challenge_method:g},xform:Nn})}else if("phone"in t){const{phone:c,password:p,options:f}=t;s=await xe(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:p,data:(r=f==null?void 0:f.data)!==null&&r!==void 0?r:{},channel:(i=f==null?void 0:f.channel)!==null&&i!==void 0?i:"sms",gotrue_meta_security:{captcha_token:f==null?void 0:f.captchaToken}},xform:Nn})}else throw new fl("You must provide either an email or phone number and a password");const{data:a,error:o}=s;if(o||!a)return await Dt(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});const l=a.session,u=a.user;return a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",l)),this._returnResult({data:{user:u,session:l},error:null})}catch(s){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(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:a,options:o}=t;n=await xe(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:a,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:Mv})}else if("phone"in t){const{phone:s,password:a,options:o}=t;n=await xe(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:a,gotrue_meta_security:{captcha_token:o==null?void 0:o.captchaToken}},xform:Mv})}else throw new fl("You must provide either an email or phone number and a password");const{data:r,error:i}=n;if(i)return this._returnResult({data:{user:null,session:null},error:i});if(!r||!r.session||!r.user){const s=new Ki;return this._returnResult({data:{user:null,session:null},error:s})}return r.session&&(await this._saveSession(r.session),await this._notifyAllSubscribers("SIGNED_IN",r.session)),this._returnResult({data:Object.assign({user:r.user,session:r.session},r.weak_password?{weakPassword:r.weak_password}:null),error:i})}catch(n){if(pe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOAuth(t){var n,r,i,s;return await this._handleProviderSignIn(t.provider,{redirectTo:(n=t.options)===null||n===void 0?void 0:n.redirectTo,scopes:(r=t.options)===null||r===void 0?void 0:r.scopes,queryParams:(i=t.options)===null||i===void 0?void 0:i.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,r,i,s,a,o,l,u,c,p,f;let m,g;if("message"in t)m=t.message,g=t.signature;else{const{chain:h,wallet:v,statement:b,options:w}=t;let y;if(Ft())if(typeof v=="object")y=v;else{const S=window;if("ethereum"in S&&typeof S.ethereum=="object"&&"request"in S.ethereum&&typeof S.ethereum.request=="function")y=S.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 v!="object"||!(w!=null&&w.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");y=v}const A=new URL((n=w==null?void 0:w.url)!==null&&n!==void 0?n:window.location.href),q=await y.request({method:"eth_requestAccounts"}).then(S=>S).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!q||q.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const x=dq(q[0]);let _=(r=w==null?void 0:w.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!_){const S=await y.request({method:"eth_chainId"});_=TM(S)}const I={domain:A.host,address:x,statement:b,uri:A.href,version:"1",chainId:_,nonce:(i=w==null?void 0:w.signInWithEthereum)===null||i===void 0?void 0:i.nonce,issuedAt:(a=(s=w==null?void 0:w.signInWithEthereum)===null||s===void 0?void 0:s.issuedAt)!==null&&a!==void 0?a:new Date,expirationTime:(o=w==null?void 0:w.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(l=w==null?void 0:w.signInWithEthereum)===null||l===void 0?void 0:l.notBefore,requestId:(u=w==null?void 0:w.signInWithEthereum)===null||u===void 0?void 0:u.requestId,resources:(c=w==null?void 0:w.signInWithEthereum)===null||c===void 0?void 0:c.resources};m=OM(I),g=await y.request({method:"personal_sign",params:[IM(m),x]})}try{const{data:h,error:v}=await xe(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:m,signature:g},!((p=t.options)===null||p===void 0)&&p.captchaToken?{gotrue_meta_security:{captcha_token:(f=t.options)===null||f===void 0?void 0:f.captchaToken}}:null),xform:Nn});if(v)throw v;if(!h||!h.session||!h.user){const b=new Ki;return this._returnResult({data:{user:null,session:null},error:b})}return h.session&&(await this._saveSession(h.session),await this._notifyAllSubscribers("SIGNED_IN",h.session)),this._returnResult({data:Object.assign({},h),error:v})}catch(h){if(pe(h))return this._returnResult({data:{user:null,session:null},error:h});throw h}}async signInWithSolana(t){var n,r,i,s,a,o,l,u,c,p,f,m;let g,h;if("message"in t)g=t.message,h=t.signature;else{const{chain:v,wallet:b,statement:w,options:y}=t;let A;
307if(Ft())if(typeof b=="object")A=b;else{const x=window;if("solana"in x&&typeof x.solana=="object"&&("signIn"in x.solana&&typeof x.solana.signIn=="function"||"signMessage"in x.solana&&typeof x.solana.signMessage=="function"))A=x.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.");A=b}const q=new URL((n=y==null?void 0:y.url)!==null&&n!==void 0?n:window.location.href);if("signIn"in A&&A.signIn){const x=await A.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},y==null?void 0:y.signInWithSolana),{version:"1",domain:q.host,uri:q.href}),w?{statement:w}:null));let _;if(Array.isArray(x)&&x[0]&&typeof x[0]=="object")_=x[0];else if(x&&typeof x=="object"&&"signedMessage"in x&&"signature"in x)_=x;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in _&&"signature"in _&&(typeof _.signedMessage=="string"||_.signedMessage instanceof Uint8Array)&&_.signature instanceof Uint8Array)g=typeof _.signedMessage=="string"?_.signedMessage:new TextDecoder().decode(_.signedMessage),h=_.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in A)||typeof A.signMessage!="function"||!("publicKey"in A)||typeof A!="object"||!A.publicKey||!("toBase58"in A.publicKey)||typeof A.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");g=[`${q.host} wants you to sign in with your Solana account:`,A.publicKey.toBase58(),...w?["",w,""]:[""],"Version: 1",`URI: ${q.href}`,`Issued At: ${(i=(r=y==null?void 0:y.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&i!==void 0?i:new Date().toISOString()}`,...!((s=y==null?void 0:y.signInWithSolana)===null||s===void 0)&&s.notBefore?[`Not Before: ${y.signInWithSolana.notBefore}`]:[],...!((a=y==null?void 0:y.signInWithSolana)===null||a===void 0)&&a.expirationTime?[`Expiration Time: ${y.signInWithSolana.expirationTime}`]:[],...!((o=y==null?void 0:y.signInWithSolana)===null||o===void 0)&&o.chainId?[`Chain ID: ${y.signInWithSolana.chainId}`]:[],...!((l=y==null?void 0:y.signInWithSolana)===null||l===void 0)&&l.nonce?[`Nonce: ${y.signInWithSolana.nonce}`]:[],...!((u=y==null?void 0:y.signInWithSolana)===null||u===void 0)&&u.requestId?[`Request ID: ${y.signInWithSolana.requestId}`]:[],...!((p=(c=y==null?void 0:y.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||p===void 0)&&p.length?["Resources",...y.signInWithSolana.resources.map(_=>`- ${_}`)]:[]].join(`
308`);const x=await A.signMessage(new TextEncoder().encode(g),"utf8");if(!x||!(x instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");h=x}}try{const{data:v,error:b}=await xe(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:g,signature:yi(h)},!((f=t.options)===null||f===void 0)&&f.captchaToken?{gotrue_meta_security:{captcha_token:(m=t.options)===null||m===void 0?void 0:m.captchaToken}}:null),xform:Nn});if(b)throw b;if(!v||!v.session||!v.user){const w=new Ki;return this._returnResult({data:{user:null,session:null},error:w})}return v.session&&(await this._saveSession(v.session),await this._notifyAllSubscribers("SIGNED_IN",v.session)),this._returnResult({data:Object.assign({},v),error:b})}catch(v){if(pe(v))return this._returnResult({data:{user:null,session:null},error:v});throw v}}async _exchangeCodeForSession(t){const n=await ai(this.storage,`${this.storageKey}-code-verifier`),[r,i]=(n??"").split("/");try{if(!r&&this.flowType==="pkce")throw new ZL;const{data:s,error:a}=await xe(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:t,code_verifier:r},xform:Nn});if(await Dt(this.storage,`${this.storageKey}-code-verifier`),a)throw a;if(!s||!s.session||!s.user){const o=new Ki;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session)),this._returnResult({data:Object.assign(Object.assign({},s),{redirectType:i??null}),error:a})}catch(s){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(s))return this._returnResult({data:{user:null,session:null,redirectType:null},error:s});throw s}}async signInWithIdToken(t){try{const{options:n,provider:r,token:i,access_token:s,nonce:a}=t,o=await xe(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:r,id_token:i,access_token:s,nonce:a,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}},xform:Nn}),{data:l,error:u}=o;if(u)return this._returnResult({data:{user:null,session:null},error:u});if(!l||!l.session||!l.user){const c=new Ki;return this._returnResult({data:{user:null,session:null},error:c})}return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",l.session)),this._returnResult({data:l,error:u})}catch(n){if(pe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithOtp(t){var n,r,i,s,a;try{if("email"in t){const{email:o,options:l}=t;let u=null,c=null;this.flowType==="pkce"&&([u,c]=await Xi(this.storage,this.storageKey));const{error:p}=await xe(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(n=l==null?void 0:l.data)!==null&&n!==void 0?n:{},create_user:(r=l==null?void 0:l.shouldCreateUser)!==null&&r!==void 0?r:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},code_challenge:u,code_challenge_method:c},redirectTo:l==null?void 0:l.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:p})}if("phone"in t){const{phone:o,options:l}=t,{data:u,error:c}=await xe(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(i=l==null?void 0:l.data)!==null&&i!==void 0?i:{},create_user:(s=l==null?void 0:l.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},channel:(a=l==null?void 0:l.channel)!==null&&a!==void 0?a:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:c})}throw new fl("You must provide either an email or phone number.")}catch(o){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(t){var n,r;try{let i,s;"options"in t&&(i=(n=t.options)===null||n===void 0?void 0:n.redirectTo,s=(r=t.options)===null||r===void 0?void 0:r.captchaToken);const{data:a,error:o}=await xe(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},t),{gotrue_meta_security:{captcha_token:s}}),redirectTo:i,xform:Nn});if(o)throw o;if(!a)throw new Error("An error occurred on token verification.");const l=a.session,u=a.user;return l!=null&&l.access_token&&(await this._saveSession(l),await this._notifyAllSubscribers(t.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",l)),this._returnResult({data:{user:u,session:l},error:null})}catch(i){if(pe(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithSSO(t){var n,r,i,s,a;try{let o=null,l=null;this.flowType==="pkce"&&([o,l]=await Xi(this.storage,this.storageKey));const u=await xe(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:(r=(n=t.options)===null||n===void 0?void 0:n.redirectTo)!==null&&r!==void 0?r:void 0}),!((i=t==null?void 0:t.options)===null||i===void 0)&&i.captchaToken?{gotrue_meta_security:{captcha_token:t.options.captchaToken}}
308:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:l}),headers:this.headers,xform:AM});return!((s=u.data)===null||s===void 0)&&s.url&&Ft()&&!(!((a=t.options)===null||a===void 0)&&a.skipBrowserRedirect)&&window.location.assign(u.data.url),this._returnResult(u)}catch(o){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(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:r}=t;if(r)throw r;if(!n)throw new mn;const{error:i}=await xe(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:n.access_token});return this._returnResult({data:{user:null,session:null},error:i})})}catch(t){if(pe(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:r,type:i,options:s}=t,{error:a}=await xe(this.fetch,"POST",n,{headers:this.headers,body:{email:r,type:i,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:a})}else if("phone"in t){const{phone:r,type:i,options:s}=t,{data:a,error:o}=await xe(this.fetch,"POST",n,{headers:this.headers,body:{phone:r,type:i,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:a==null?void 0:a.message_id},error:o})}throw new fl("You must provide either an email or phone number and a type")}catch(n){if(pe(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 r=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),i=(async()=>(await r,await n()))();return this.pendingInLock.push((async()=>{try{await i}catch{}})()),i}return await this.lock(`lock:${this.storageKey}`,t,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const r=n();for(this.pendingInLock.push((async()=>{try{await r}catch{}})()),await r;this.pendingInLock.length;){const i=[...this.pendingInLock];await Promise.all(i),this.pendingInLock.splice(0,i.length)}return await r}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 ai(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 r=t.expires_at?t.expires_at*1e3-Date.now()<qd:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",t.expires_at),!r){if(this.userStorage){const a=await ai(this.userStorage,this.storageKey+"-user");a!=null&&a.user?t.user=a.user:t.user=Ed()}if(this.storage.isServer&&t.user&&!t.user.__isUserNotAvailableProxy){const a={value:this.suppressGetSessionWarning};t.user=xM(t.user,a),a.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:t},error:null}}const{data:i,error:s}=await this._callRefreshToken(t.refresh_token);return s?this._returnResult({data:{session:null},error:s}):this._returnResult({data:{session:i},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 xe(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:t,xform:Fr}):await this._useSession(async n=>{var r,i,s;const{data:a,error:o}=n;
308if(o)throw o;return!(!((r=a.session)===null||r===void 0)&&r.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new mn}:await xe(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(i=a.session)===null||i===void 0?void 0:i.access_token)!==null&&s!==void 0?s:void 0,xform:Fr})})}catch(n){if(pe(n))return Sd(n)&&(await this._removeSession(),await Dt(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 r=>{const{data:i,error:s}=r;if(s)throw s;if(!i.session)throw new mn;const a=i.session;let o=null,l=null;this.flowType==="pkce"&&t.email!=null&&([o,l]=await Xi(this.storage,this.storageKey));const{data:u,error:c}=await xe(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:l}),jwt:a.access_token,xform:Fr});if(c)throw c;return a.user=u.user,await this._saveSession(a),await this._notifyAllSubscribers("USER_UPDATED",a),this._returnResult({data:{user:a.user},error:null})})}catch(r){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(r))return this._returnResult({data:{user:null},error:r});throw r}}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 mn;const n=Date.now()/1e3;let r=n,i=!0,s=null;const{payload:a}=gl(t.access_token);if(a.exp&&(r=a.exp,i=r<=n),i){const{data:o,error:l}=await this._callRefreshToken(t.refresh_token);if(l)return this._returnResult({data:{user:null,session:null},error:l});if(!o)return{data:{user:null,session:null},error:null};s=o}else{const{data:o,error:l}=await this._getUser(t.access_token);if(l)return this._returnResult({data:{user:null,session:null},error:l});s={access_token:t.access_token,refresh_token:t.refresh_token,user:o.user,token_type:"bearer",expires_in:r-n,expires_at:r},await this._saveSession(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return this._returnResult({data:{user:s.user,session:s},error:null})}catch(n){if(pe(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 r;if(!t){const{data:a,error:o}=n;if(o)throw o;t=(r=a.session)!==null&&r!==void 0?r:void 0}if(!(t!=null&&t.refresh_token))throw new mn;const{data:i,error:s}=await this._callRefreshToken(t.refresh_token);return s?this._returnResult({data:{user:null,session:null},error:s}):i?this._returnResult({data:{user:i.user,session:i},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(n){if(pe(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async _getSessionFromURL(t,n){try{if(!Ft())throw new hl("No browser detected.");if(t.error||t.error_description||t.error_code)throw new hl(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 hl("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:w,error:y}=await this._exchangeCodeForSession(t.code);if(y)throw y;const A=new URL(window.location.href);return A.searchParams.delete("code"),window.history.replaceState(window.history.state,"",A.toString()),{data:{session:w.session,redirectType:null},error:null}}const{provider_token:r,provider_refresh_token:i,access_token:s,refresh_token:a,expires_in:o,expires_at:l,token_type:u}=t;if(!s||!o||!a||!u)throw new hl("No session defined in URL");const c=Math.round(Date.now()/1e3),p=parseInt(o);let f=c+p;l&&(f=parseInt(l));const m=f-c;
308m*1e3<=ss&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${m}s, should have been closer to ${p}s`);const g=f-p;c-g>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",g,f,c):c-g<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",g,f,c);const{data:h,error:v}=await this._getUser(s);if(v)throw v;const b={provider_token:r,provider_refresh_token:i,access_token:s,expires_in:p,expires_at:f,refresh_token:a,token_type:u,user:h.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:b,redirectType:t.type},error:null})}catch(r){if(pe(r))return this._returnResult({data:{session:null,redirectType:null},error:r});throw r}}_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 ai(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 r;const{data:i,error:s}=n;if(s&&!Sd(s))return this._returnResult({error:s});const a=(r=i.session)===null||r===void 0?void 0:r.access_token;if(a){const{error:o}=await this.admin.signOut(a,t);if(o&&!(JL(o)&&(o.status===404||o.status===401||o.status===403)||Sd(o)))return this._returnResult({error:o})}return t!=="others"&&(await this._removeSession(),await Dt(this.storage,`${this.storageKey}-code-verifier`)),this._returnResult({error:null})})}onAuthStateChange(t){const n=aM(),r={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,r),(async()=>(await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(n)})))(),{data:{subscription:r}}}async _emitInitialSession(t){return await this._useSession(async n=>{var r,i;try{const{data:{session:s},error:a}=n;if(a)throw a;await((r=this.stateChangeEmitters.get(t))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",t,"session",s)}catch(s){await((i=this.stateChangeEmitters.get(t))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",t,"error",s),console.error(s)}})}async resetPasswordForEmail(t,n={}){let r=null,i=null;this.flowType==="pkce"&&([r,i]=await Xi(this.storage,this.storageKey,!0));try{return await xe(this.fetch,"POST",`${this.url}/recover`,{body:{email:t,code_challenge:r,code_challenge_method:i,gotrue_meta_security:{captcha_token:n.captchaToken}},headers:this.headers,redirectTo:n.redirectTo})}catch(s){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(s))return this._returnResult({data:null,error:s});throw s}}async getUserIdentities(){var t;try{const{data:n,error:r}=await this.getUser();if(r)throw r;return this._returnResult({data:{identities:(t=n.user.identities)!==null&&t!==void 0?t:[]},error:null})}catch(n){if(pe(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:r,error:i}=await this._useSession(async s=>{var a,o,l,u,c;const{data:p,error:f}=s;if(f)throw f;const m=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,t.provider,{redirectTo:(a=t.options)===null||a===void 0?void 0:a.redirectTo,scopes:(o=t.options)===null||o===void 0?void 0:o.scopes,queryParams:(l=t.options)===null||l===void 0?void 0:l.queryParams,skipBrowserRedirect:!0});return await xe(this.fetch,"GET",m,{headers:this.headers,jwt:(c=(u=p.session)===null||u===void 0?void 0:u.access_token)!==null&&c!==void 0?c:void 0})});if(i)throw i;return Ft()&&!(!((n=t.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(r==null?void 0:r.url),this._returnResult({data:{provider:t.provider,url:r==null?void 0:r.url},error:null})}catch(r){if(pe(r))return this._returnResult({data:{provider:t.provider,url:null},error:r});throw r}}async linkIdentityIdToken(t){return await this._useSession(async n=>{var r;try{const{error:i,data:{session:s}}=n;
308if(i)throw i;const{options:a,provider:o,token:l,access_token:u,nonce:c}=t,p=await xe(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(r=s==null?void 0:s.access_token)!==null&&r!==void 0?r:void 0,body:{provider:o,id_token:l,access_token:u,nonce:c,link_identity:!0,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:Nn}),{data:f,error:m}=p;return m?this._returnResult({data:{user:null,session:null},error:m}):!f||!f.session||!f.user?this._returnResult({data:{user:null,session:null},error:new Ki}):(f.session&&(await this._saveSession(f.session),await this._notifyAllSubscribers("USER_UPDATED",f.session)),this._returnResult({data:f,error:m}))}catch(i){if(await Dt(this.storage,`${this.storageKey}-code-verifier`),pe(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}})}async unlinkIdentity(t){try{return await this._useSession(async n=>{var r,i;const{data:s,error:a}=n;if(a)throw a;return await xe(this.fetch,"DELETE",`${this.url}/user/identities/${t.identity_id}`,{headers:this.headers,jwt:(i=(r=s.session)===null||r===void 0?void 0:r.access_token)!==null&&i!==void 0?i:void 0})})}catch(n){if(pe(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 r=Date.now();return await cM(async i=>(i>0&&await uM(200*Math.pow(2,i-1)),this._debug(n,"refreshing attempt",i),await xe(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:t},headers:this.headers,xform:Nn})),(i,s)=>{const a=200*Math.pow(2,i);return s&&Ad(s)&&Date.now()+a-r<ss})}catch(r){if(this._debug(n,"error",r),pe(r))return this._returnResult({data:{session:null,user:null},error:r});throw r}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 r=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",r),Ft()&&!n.skipBrowserRedirect&&window.location.assign(r),{data:{provider:t,url:r},error:null}}async _recoverAndRefresh(){var t,n;const r="#_recoverAndRefresh()";this._debug(r,"begin");try{const i=await ai(this.storage,this.storageKey);if(i&&this.userStorage){let a=await ai(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!a&&(a={user:i.user},await as(this.userStorage,this.storageKey+"-user",a)),i.user=(t=a==null?void 0:a.user)!==null&&t!==void 0?t:Ed()}else if(i&&!i.user&&!i.user){const a=await ai(this.storage,this.storageKey+"-user");a&&(a!=null&&a.user)?(i.user=a.user,await Dt(this.storage,this.storageKey+"-user"),await as(this.storage,this.storageKey,i)):i.user=Ed()}if(this._debug(r,"session from storage",i),!this._isValidSession(i)){this._debug(r,"session is not valid"),i!==null&&await this._removeSession();return}const s=((n=i.expires_at)!==null&&n!==void 0?n:1/0)*1e3-Date.now()<qd;if(this._debug(r,`session has${s?"":" not"} expired with margin of ${qd}s`),s){if(this.autoRefreshToken&&i.refresh_token){const{error:a}=await this._callRefreshToken(i.refresh_token);a&&(console.error(a),Ad(a)||(this._debug(r,"refresh failed with a non-retryable error, removing the session",a),await this._removeSession()))}}else if(i.user&&i.user.__isUserNotAvailableProxy===!0)try{const{data:a,error:o}=await this._getUser(i.access_token);!o&&(a!=null&&a.user)?(i.user=a.user,await this._saveSession(i),await this._notifyAllSubscribers("SIGNED_IN",i)):this._debug(r,"could not get user data, skipping SIGNED_IN notification")}catch(a){console.error("Error getting user data:",a),this._debug(r,"error getting user data, skipping SIGNED_IN notification",a)}else await this._notifyAllSubscribers("SIGNED_IN",i)}catch(i){this._debug(r,"error",i),console.error(i);return}finally{this._debug(r,"end")}}async _callRefreshToken(t){var n,r;if(!t)throw new mn;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const i=`#_callRefreshToken(${t.substring(0,5)}...)`;this._debug(i,"begin");try{this.refreshingDeferred=new sc;const{data:s,error:a}=await this._refreshAccessToken(t);if(a)throw a;if(!s.session)throw new mn;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(i,"error",s),pe(s)){const a={data:null,error:s};return Ad(s)||await this._removeSession(),(n=this.refreshingDeferred)===null||n===void 0||n.resolve(a),a}throw(r=this.refreshingDeferred)===null||r===void 0||r.reject(s),s}finally{this.refreshingDeferred=null,this._debug(i,"end")}}async _notifyAllSubscribers(t,n,r=!0){const i=`#_notifyAllSubscribers(${t})`;this._debug(i,"begin",n,`broadcast = ${r}`);try{this.broadcastChannel&&r&&this.broadcastChannel.postMessage({event:t,session:n});const s=[],a=Array.from(this.stateChangeEmitters.values()).map(async o=>{try{await o.callback(t,n)}catch(l){s.push(l)}});if(await Promise.all(a),s.length>0){for(let o=0;o<s.length;o+=1)console.error(s[o]);throw s[0]}}finally{this._debug(i,"end")}}async _saveSession(t){this._debug("#_saveSession()",t),this.suppressGetSessionWarning=!0,await Dt(this.storage,`${this.storageKey}-code-verifier`);const n=Object.assign({},t),r=n.user&&n.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!r&&n.user&&await as(this.userStorage,this.storageKey+"-user",{user:n.user});const i=Object.assign({},n);delete i.user;const s=Ov(i);await as(this.storage,this.storageKey,s)}else{const i=Ov(n);await as(this.storage,this.storageKey,i)}}async _removeSession(){this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Dt(this.storage,this.storageKey),await Dt(this.storage,this.storageKey+"-code-verifier"),await Dt(this.storage,this.storageKey+"-user"),this.userStorage&&await Dt(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const t=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{t&&Ft()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",t)}
308catch(n){console.error("removing visibilitychange callback failed",n)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const t=setInterval(()=>this._autoRefreshTokenTick(),ss);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:r}}=n;if(!r||!r.refresh_token||!r.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const i=Math.floor((r.expires_at*1e3-t)/ss);this._debug("#_autoRefreshTokenTick()",`access token expires in ${i} ticks, a tick lasts ${ss}ms, refresh threshold is ${Wp} ticks`),i<=Wp&&await this._callRefreshToken(r.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 cq)this._debug("auto refresh token tick lock not available");else throw t}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Ft()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(t){this._debug("#visibilityChangedCallback","error",t)}},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,r){const i=[`provider=${encodeURIComponent(n)}`];if(r!=null&&r.redirectTo&&i.push(`redirect_to=${encodeURIComponent(r.redirectTo)}`),r!=null&&r.scopes&&i.push(`scopes=${encodeURIComponent(r.scopes)}`),this.flowType==="pkce"){const[s,a]=await Xi(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(a)}`});i.push(o.toString())}if(r!=null&&r.queryParams){const s=new URLSearchParams(r.queryParams);i.push(s.toString())}return r!=null&&r.skipBrowserRedirect&&i.push(`skip_http_redirect=${r.skipBrowserRedirect}`),`${t}?${i.join("&")}`}async _unenroll(t){try{return await this._useSession(async n=>{var r;const{data:i,error:s}=n;return s?this._returnResult({data:null,error:s}):await xe(this.fetch,"DELETE",`${this.url}/factors/${t.factorId}`,{headers:this.headers,jwt:(r=i==null?void 0:i.session)===null||r===void 0?void 0:r.access_token})})}catch(n){if(pe(n))return this._returnResult({data:null,error:n});throw n}}async _enroll(t){try{return await this._useSession(async n=>{var r,i;const{data:s,error:a}=n;
308if(a)return this._returnResult({data:null,error:a});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:l,error:u}=await xe(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(r=s==null?void 0:s.session)===null||r===void 0?void 0:r.access_token});return u?this._returnResult({data:null,error:u}):(t.factorType==="totp"&&l.type==="totp"&&(!((i=l==null?void 0:l.totp)===null||i===void 0)&&i.qr_code)&&(l.totp.qr_code=`data:image/svg+xml;utf-8,${l.totp.qr_code}`),this._returnResult({data:l,error:null}))})}catch(n){if(pe(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 r;const{data:i,error:s}=n;if(s)return this._returnResult({data:null,error:s});const a=Object.assign({challenge_id:t.challengeId},"webauthn"in t?{webauthn:Object.assign(Object.assign({},t.webauthn),{credential_response:t.webauthn.type==="create"?FM(t.webauthn.credential_response):UM(t.webauthn.credential_response)})}:{code:t.code}),{data:o,error:l}=await xe(this.fetch,"POST",`${this.url}/factors/${t.factorId}/verify`,{body:a,headers:this.headers,jwt:(r=i==null?void 0:i.session)===null||r===void 0?void 0:r.access_token});return l?this._returnResult({data:null,error:l}):(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:l}))})}catch(n){if(pe(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 r;const{data:i,error:s}=n;if(s)return this._returnResult({data:null,error:s});const a=await xe(this.fetch,"POST",`${this.url}/factors/${t.factorId}/challenge`,{body:t,headers:this.headers,jwt:(r=i==null?void 0:i.session)===null||r===void 0?void 0:r.access_token});if(a.error)return a;const{data:o}=a;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:$M(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:DM(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(n){if(pe(n))return this._returnResult({data:null,error:n});throw n}})}async _challengeAndVerify(t){const{data:n,error:r}=await this._challenge({factorId:t.factorId});return r?this._returnResult({data:null,error:r}):await this._verify({factorId:t.factorId,challengeId:n.id,code:t.code})}async _listFactors(){var t;const{data:{user:n},error:r}=await this.getUser();if(r)return{data:null,error:r};const i={all:[],phone:[],totp:[],webauthn:[]};for(const s of(t=n==null?void 0:n.factors)!==null&&t!==void 0?t:[])i.all.push(s),s.status==="verified"&&i[s.factor_type].push(s);return{data:i,error:null}}async _getAuthenticatorAssuranceLevel(t){var n,r,i,s;if(t)try{const{payload:m}=gl(t);let g=null;m.aal&&(g=m.aal);let h=g;const{data:{user:v},error:b}=await this.getUser(t);if(b)return this._returnResult({data:null,error:b});((r=(n=v==null?void 0:v.factors)===null||n===void 0?void 0:n.filter(A=>A.status==="verified"))!==null&&r!==void 0?r:[]).length>0&&(h="aal2");const y=m.amr||[];return{data:{currentLevel:g,nextLevel:h,currentAuthenticationMethods:y},error:null}}catch(m){if(pe(m))return this._returnResult({data:null,error:m});throw m}const{data:{session:a},error:o}
308=await this.getSession();if(o)return this._returnResult({data:null,error:o});if(!a)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:l}=gl(a.access_token);let u=null;l.aal&&(u=l.aal);let c=u;((s=(i=a.user.factors)===null||i===void 0?void 0:i.filter(m=>m.status==="verified"))!==null&&s!==void 0?s:[]).length>0&&(c="aal2");const f=l.amr||[];return{data:{currentLevel:u,nextLevel:c,currentAuthenticationMethods:f},error:null}}async _getAuthorizationDetails(t){try{return await this._useSession(async n=>{const{data:{session:r},error:i}=n;return i?this._returnResult({data:null,error:i}):r?await xe(this.fetch,"GET",`${this.url}/oauth/authorizations/${t}`,{headers:this.headers,jwt:r.access_token,xform:s=>({data:s,error:null})}):this._returnResult({data:null,error:new mn})})}catch(n){if(pe(n))return this._returnResult({data:null,error:n});throw n}}async _approveAuthorization(t,n){try{return await this._useSession(async r=>{const{data:{session:i},error:s}=r;if(s)return this._returnResult({data:null,error:s});if(!i)return this._returnResult({data:null,error:new mn});const a=await xe(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"approve"},xform:o=>({data:o,error:null})});return a.data&&a.data.redirect_url&&Ft()&&!(n!=null&&n.skipBrowserRedirect)&&window.location.assign(a.data.redirect_url),a})}catch(r){if(pe(r))return this._returnResult({data:null,error:r});throw r}}async _denyAuthorization(t,n){try{return await this._useSession(async r=>{const{data:{session:i},error:s}=r;if(s)return this._returnResult({data:null,error:s});if(!i)return this._returnResult({data:null,error:new mn});const a=await xe(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:i.access_token,body:{action:"deny"},xform:o=>({data:o,error:null})});return a.data&&a.data.redirect_url&&Ft()&&!(n!=null&&n.skipBrowserRedirect)&&window.location.assign(a.data.redirect_url),a})}catch(r){if(pe(r))return this._returnResult({data:null,error:r});throw r}}async _listOAuthGrants(){try{return await this._useSession(async t=>{const{data:{session:n},error:r}=t;return r?this._returnResult({data:null,error:r}):n?await xe(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:n.access_token,xform:i=>({data:i,error:null})}):this._returnResult({data:null,error:new mn})})}catch(t){if(pe(t))return this._returnResult({data:null,error:t});throw t}}async _revokeOAuthGrant(t){try{return await this._useSession(async n=>{const{data:{session:r},error:i}=n;return i?this._returnResult({data:null,error:i}):r?(await xe(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,query:{client_id:t.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new mn})})}catch(n){if(pe(n))return this._returnResult({data:null,error:n});throw n}}async fetchJwk(t,n={keys:[]}){let r=n.keys.find(o=>o.kid===t);if(r)return r;const i=Date.now();if(r=this.jwks.keys.find(o=>o.kid===t),r&&this.jwks_cached_at+XL>i)return r;const{data:s,error:a}=await xe(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(a)throw a;return!s.keys||s.keys.length===0||(this.jwks=s,this.jwks_cached_at=i,r=s.keys.find(o=>o.kid===t),!r)?null:r}async getClaims(t,n={}){try{let r=t;if(!r){const{data:m,error:g}
308=await this.getSession();if(g||!m.session)return this._returnResult({data:null,error:g});r=m.session.access_token}const{header:i,payload:s,signature:a,raw:{header:o,payload:l}}=gl(r);n!=null&&n.allowExpired||vM(s.exp);const u=!i.alg||i.alg.startsWith("HS")||!i.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(i.kid,n!=null&&n.keys?{keys:n.keys}:n==null?void 0:n.jwks);if(!u){const{error:m}=await this.getUser(r);if(m)throw m;return{data:{claims:s,header:i,signature:a},error:null}}const c=yM(i.alg),p=await crypto.subtle.importKey("jwk",u,c,!0,["verify"]);if(!await crypto.subtle.verify(c,p,a,iM(`${o}.${l}`)))throw new Gp("Invalid JWT signature");return{data:{claims:s,header:i,signature:a},error:null}}catch(r){if(pe(r))return this._returnResult({data:null,error:r});throw r}}}ro.nextInstanceID={};const QM=ro,JM="2.93.2";let Na="";typeof Deno<"u"?Na="deno":typeof document<"u"?Na="web":typeof navigator<"u"&&navigator.product==="ReactNative"?Na="react-native":Na="node";const YM={"X-Client-Info":`supabase-js-${Na}/${JM}`},ZM={headers:YM},eN={schema:"public"},tN={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},nN={};function io(e){"@babel/helpers - typeof";return io=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},io(e)}function rN(e,t){if(io(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(io(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function iN(e){var t=rN(e,"string");return io(t)=="symbol"?t:t+""}function sN(e,t,n){return(t=iN(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function vt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Fv(Object(n),!0).forEach(function(r){sN(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fv(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}const aN=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),oN=()=>Headers,lN=(e,t,n)=>{const r=aN(n),i=oN();return async(s,a)=>{var o;const l=(o=await t())!==null&&o!==void 0?o:e;let u=new i(a==null?void 0:a.headers);return u.has("apikey")||u.set("apikey",e),u.has("Authorization")||u.set("Authorization",`Bearer ${l}`),r(s,vt(vt({},a),{},{headers:u}))}};function uN(e){return e.endsWith("/")?e:e+"/"}function cN(e,t){var n,r;const{db:i,auth:s,realtime:a,global:o}=e,{db:l,auth:u,realtime:c,global:p}=t,f={db:vt(vt({},l),i),auth:vt(vt({},u),s),realtime:vt(vt({},c),a),storage:{},global:vt(vt(vt({},p),o),{},{headers:vt(vt({},(n=p==null?void 0:p.headers)!==null&&n!==void 0?n:{}),(r=o==null?void 0:o.headers)!==null&&r!==void 0?r:{})}),accessToken:async()=>""};return e.accessToken?f.accessToken=e.accessToken:delete f.accessToken,f}function dN(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(uN(t))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var pN=class extends QM{constructor(e){super(e)}},mN=class{constructor(e,t,n){var r,i;this.supabaseUrl=e,this.supabaseKey=t;const s=dN(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 a=`sb-${s.hostname.split(".")[0]}-auth-token`,o={db:eN,realtime:nN,auth:vt(vt({},tN),{},{storageKey:a}),global:ZM},l=cN(n??{},o);if(this.storageKey=(r=l.auth.storageKey)!==null&&r!==void 0?r:"",this.headers=(i=l.global.headers)!==null&&i!==void 0?i:{},l.accessToken)this.accessToken=l.accessToken,this.auth=new Proxy({},{get:(c,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=l.auth)!==null&&u!==void 0?u:{},this.headers,l.global.fetch)}this.fetch=lN(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(vt({headers:this.headers,accessToken:this._getAccessToken.bind(this)},l.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(c=>this.realtime.setAuth(c)).catch(c=>console.warn("Failed to set initial Realtime auth token:",c)),this.rest=new QO(new URL("rest/v1",s).href,{headers:this.headers,schema:l.db.schema,fetch:this.fetch}),this.storage=new WL(this.storageUrl.href,this.headers,this.fetch,n==null?void 0:n.storage),l.accessToken||this._listenForAuthEvents()}get functions(){return new HO(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)}
308channel(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:r}=await e.auth.getSession();return(t=(n=r.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:r,userStorage:i,storageKey:s,flowType:a,lock:o,debug:l,throwOnError:u},c,p){const f={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new pN({url:this.authUrl.href,headers:vt(vt({},f),c),storageKey:s,autoRefreshToken:e,persistSession:t,detectSessionInUrl:n,storage:r,userStorage:i,flowType:a,lock:o,debug:l,throwOnError:u,fetch:p,hasCustomAuthorizationHeader:Object.keys(this.headers).some(m=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new mL(this.realtimeUrl.href,vt(vt({},e),{},{params:vt(vt({},{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 fN=(e,t,n)=>new mN(e,t,n);function hN(){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}hN()&&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 gN(){var v,b;if(typeof window>"u")return;const e=location.hostname,n=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(w=>e===w||e.endsWith("."+w)),r="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",i=n?((v=e.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+r+")(?:-dev)?(?=\\.|$)","i")))==null?void 0:v[1])??((b=e.match(new RegExp("^("+r+")(?=[.-])","i")))==null?void 0:b[1]):void 0,s=window.parent&&window.parent!==window;if(!i||!s)return localStorage;const a=e.endsWith(".lovableproject-dev.com")||e.endsWith(".gpt-eng.com"),o=a?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,l=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),u=l&&o.test(l)?[l]:a?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],c="lovable-preview-auth:result",p=2e3,f=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),m=(w,y,A)=>new Promise(q=>{const x=f();let _=!1,I;const S=T=>{_||(_=!0,clearTimeout(I),window.removeEventListener("message",k),q(T))},k=T=>{if(u.indexOf(T.origin)<0)return;const M=T.data;M&&M.type===c&&M.requestId===x&&S(M)};window.addEventListener("message",k);const C={type:w,requestId:x,projectId:i,key:y};A!==void 0&&(C.value=A);for(const T of u)window.parent.postMessage(C,T);I=setTimeout(()=>S(null),p)});let g=!0;const h=250;return{getItem:async w=>{let y=await m("lovable-preview-auth:get",w);return!y&&g&&(await new Promise(A=>setTimeout(A,h)),y=await m("lovable-preview-auth:get",w)),g=!1,y&&y.ok&&typeof y.value=="string"?y.value===""?(localStorage.removeItem(w),null):y.value:localStorage.getItem(w)},setItem:(w,y)=>(localStorage.setItem(w,y),m("lovable-preview-auth:set",w,y).then(A=>{A&&A.ok&&typeof A.value=="string"&&localStorage.getItem(w)===y&&(A.value===""?localStorage.removeItem(w):localStorage.setItem(w,A.value))})),removeItem:w=>(localStorage.removeItem(w),m("lovable-preview-auth:remove",w).then(()=>{}))}}const vN="https://pmrgfsomhgexwxtvhfvk.supabase.co",yN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBtcmdmc29taGdleHd4dHZoZnZrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Njk1ODg2NDUsImV4cCI6MjA4NTE2NDY0NX0.Zo6SHcyUjGDNgQ_4xTScvu7BN05MvH9koLqvvIx8QQI",Uv=fN(vN,yN,{auth:{storage:gN(),persistSession:!0,autoRefreshToken:!0}}),Kp="chalmichel",Ha=`https://calendly.com/${Kp}`,ac=`${Ha}/30min`,Xde=`${ac}?hide_gdpr_banner=1&background_color=fafafa&text_color=1a1a2e&primary_color=b8734f`;var mq={exports:{}};/* @license
309Papa Parse
310v5.5.4
311https://github.com/mholt/PapaParse
312License: MIT
313*/(function(e,t){((n,r)=>{e.exports=r()})(br,function n(){var r=typeof self<"u"?self:typeof window<"u"?window:r!==void 0?r:{},i,s=!r.document&&!!r.postMessage,a=r.IS_PAPA_WORKER||!1,o={},l=0,u={};function c(S){return S.charCodeAt(0)===65279?S.slice(1):S}function p(S){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},(function(k){var C=x(k);C.chunkSize=parseInt(C.chunkSize),k.step||k.chunk||(C.chunkSize=null),this._handle=new v(C),(this._handle.streamer=this)._config=C}).call(this,S),this.parseChunk=function(k,C){var T=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<T){let L=this._config.newline;L||(M=this._config.quoteChar||'"',L=this._handle.guessLineEndings(k,M)),k=[...k.split(L).slice(T)].join(L)}this.isFirstChunk&&I(this._config.beforeFirstChunk)&&(M=this._config.beforeFirstChunk(k))!==void 0&&(k=M),this.isFirstChunk=!1,this._halted=!1;var T=this._partialLine+k,M=(this._partialLine="",this._handle.parse(T,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(k=M.meta.cursor,T=(this._finished||(this._partialLine=T.substring(k-this._baseIndex),this._baseIndex=k),M&&M.data&&(this._rowCount+=M.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),a)r.postMessage({results:M,workerId:u.WORKER_ID,finished:T});else if(I(this._config.chunk)&&!C){if(this._config.chunk(M,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=M=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(M.data),this._completeResults.errors=this._completeResults.errors.concat(M.errors),this._completeResults.meta=M.meta),this._completed||!T||!I(this._config.complete)||M&&M.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),T||M&&M.meta.paused||this._nextChunk(),M}this._halted=!0},this._sendError=function(k){I(this._config.error)?this._config.error(k):a&&this._config.error&&r.postMessage({workerId:u.WORKER_ID,error:k,finished:!1})}}function f(S){var k;(S=S||{}).chunkSize||(S.chunkSize=u.RemoteChunkSize),p.call(this,S),this._nextChunk=s?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(C){this._input=C,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(k=new XMLHttpRequest,this._config.withCredentials&&(k.withCredentials=this._config.withCredentials),s||(k.onload=_(this._chunkLoaded,this),k.onerror=_(this._chunkError,this)),k.open(this._config.downloadRequestBody?"POST":"GET",this._input,!s),this._config.downloadRequestHeaders){var C,T=this._config.downloadRequestHeaders;for(C in T)k.setRequestHeader(C,T[C])}var M;this._config.chunkSize&&(M=this._start+this._config.chunkSize-1,k.setRequestHeader("Range","bytes="+this._start+"-"+M));try{k.send(this._config.downloadRequestBody)}catch(L){this._chunkError(L.message)}s&&k.status===0&&this._chunkError()}},this._chunkLoaded=function(){k.readyState===4&&(k.status<200||400<=k.status?this._chunkError():(this._start+=this._config.chunkSize||k.responseText.length,this._finished=!this._config.chunkSize||this._start>=(C=>(C=C.getResponseHeader("Content-Range"))!==null?parseInt(C.substring(C.lastIndexOf("/")+1)):-1)(k),this.parseChunk(k.responseText)))},this._chunkError=function(C){C=k.statusText||C,this._sendError(new Error(C))}}function m(S){(S=S||{}).chunkSize||(S.chunkSize=u.LocalChunkSize),p.call(this,S);var k,C,T=typeof FileReader<"u";this.stream=function(M){this._input=M,C=M.slice||M.webkitSlice||M.mozSlice,T?((k=new FileReader).onload=_(this._chunkLoaded,this),k.onerror=_(this._chunkError,this)):k=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var M=this._input,L=(this._config.chunkSize&&(L=Math.min(this._start+this._config.chunkSize,this._input.size),M=C.call(M,this._start,L)),k.readAsText(M,this._config.encoding));T||this._chunkLoaded({target:{result:L}})},this._chunkLoaded=function(M){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(M.target.result)},this._chunkError=function(){this._sendError(k.error)}}function g(S){var k;p.call(this,S=S||{}),this.stream=function(C){return k=C,this._nextChunk()},this._nextChunk=function(){var C,T;if(!this._finished)return C=this._config.chunkSize,k=C?(T=k.substring(0,C),k.substring(C)):(T=k,""),this._finished=!k,this.parseChunk(T)}}function h(S){p.call(this,S=S||{});var k=[],C=!0,T=!1;this.pause=function(){p.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){p.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(M){this._input=M,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){T&&k.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),k.length?this.parseChunk(k.shift()):C=!0}
vendor: 14,902 bytes, lines 313-322
313,this._streamData=_(function(M){try{k.push(typeof M=="string"?M:M.toString(this._config.encoding)),C&&(C=!1,this._checkIsFinished(),this.parseChunk(k.shift()))}catch(L){this._streamError(L)}},this),this._streamError=_(function(M){this._streamCleanUp(),this._sendError(M)},this),this._streamEnd=_(function(){this._streamCleanUp(),T=!0,this._streamData("")},this),this._streamCleanUp=_(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function v(S){var k,C,T,M,L=Math.pow(2,53),N=-L,R=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,$=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,B=this,D=0,j=0,J=!1,z=!1,P=[],G={data:[],errors:[],meta:{}};function ae(H){return S.skipEmptyLines==="greedy"?H.join("").trim()==="":H.length===1&&H[0].length===0}function se(){if(G&&T&&(_e("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+u.DefaultDelimiter+"'"),T=!1),S.skipEmptyLines&&(G.data=G.data.filter(function(F){return!ae(F)})),ie()){let F=function(he,ce){he=c(he),I(S.transformHeader)&&(he=S.transformHeader(he,ce)),P.push(he)};if(G)if(Array.isArray(G.data[0])){for(var H=0;ie()&&H<G.data.length;H++)G.data[H].forEach(F);G.data.splice(0,1)}else G.data.forEach(F)}function Y(F,he){for(var ce=S.header?{}:[],me=0;me<F.length;me++){var fe=me,de=F[me],de=((Me,ge)=>(Ie=>(S.dynamicTypingFunction&&S.dynamicTyping[Ie]===void 0&&(S.dynamicTyping[Ie]=S.dynamicTypingFunction(Ie)),(S.dynamicTyping[Ie]||S.dynamicTyping)===!0))(Me)?ge==="true"||ge==="TRUE"||ge!=="false"&&ge!=="FALSE"&&((Ie=>{if(R.test(Ie)&&(Ie=parseFloat(Ie),N<Ie&&Ie<L))return 1})(ge)?parseFloat(ge):$.test(ge)?new Date(ge):ge===""?null:ge):ge)(fe=S.header?me>=P.length?"__parsed_extra":P[me]:fe,de=S.transform?S.transform(de,fe):de);fe==="__parsed_extra"?(ce[fe]=ce[fe]||[],ce[fe].push(de)):ce[fe]=de}return S.header&&(me>P.length?_e("FieldMismatch","TooManyFields","Too many fields: expected "+P.length+" fields but parsed "+me,j+he):me<P.length&&_e("FieldMismatch","TooFewFields","Too few fields: expected "+P.length+" fields but parsed "+me,j+he)),ce}var te;G&&(S.header||S.dynamicTyping||S.transform)&&(te=1,!G.data.length||Array.isArray(G.data[0])?(G.data=G.data.map(Y),te=G.data.length):G.data=Y(G.data,0),S.header&&G.meta&&(G.meta.fields=P),j+=te)}function ie(){return S.header&&P.length===0}function _e(H,Y,te,F){H={type:H,code:Y,message:te},F!==void 0&&(H.row=F),G.errors.push(H)}I(S.step)&&(M=S.step,S.step=function(H){G=H,ie()?se():(se(),G.data.length!==0&&(D+=H.data.length,S.preview&&D>S.preview?C.abort():(G.data=G.data[0],M(G,B))))}),this.parse=function(H,Y,te){var F=S.quoteChar||'"',F=(S.newline||(S.newline=this.guessLineEndings(H,F)),T=!1,S.delimiter?I(S.delimiter)&&(S.delimiter=S.delimiter(H),G.meta.delimiter=S.delimiter):((F=((he,ce,me,fe,de)=>{var Me,ge,Ie,Be;de=de||[",","	","|",";",u.RECORD_SEP,u.UNIT_SEP];for(var ft=0;ft<de.length;ft++){for(var Fe,Jt=de[ft],st=0,W=0,X=0,le=(Ie=void 0,new w({comments:fe,delimiter:Jt,newline:ce,preview:10}).parse(he)),ve=0;ve<le.data.length;ve++)me&&ae(le.data[ve])?X++:(Fe=le.data[ve].length,W+=Fe,Ie===void 0?Ie=Fe:0<Fe&&(st+=Math.abs(Fe-Ie),Ie=Fe));0<le.data.length&&(W/=le.data.length-X),(ge===void 0||st<=ge)&&(Be===void 0||Be<W)&&1.99<W&&(ge=st,Me=Jt,Be=W)}return{successful:!!(S.delimiter=Me),bestDelimiter:Me}})(H,S.newline,S.skipEmptyLines,S.comments,S.delimitersToGuess)).successful?S.delimiter=F.bestDelimiter:(T=!0,S.delimiter=u.DefaultDelimiter),G.meta.delimiter=S.delimiter),x(S));return S.preview&&S.header&&F.preview++,k=H,C=new w(F),G=C.parse(k,Y,te),se(),J?{meta:{paused:!0}}:G||{meta:{paused:!1}}},this.paused=function(){return J},this.pause=function(){J=!0,C.abort(),k=I(S.chunk)?"":k.substring(C.getCharIndex())},this.resume=function(){B.streamer._halted?(J=!1,B.streamer.parseChunk(k,!0)):setTimeout(B.resume,3)},this.aborted=function(){return z},this.abort=function(){z=!0,C.abort(),G.meta.aborted=!0,I(S.complete)&&S.complete(G),k=""},this.guessLineEndings=function(he,F){he=he.substring(0,1048576);var F=new RegExp(b(F)+"([^]*?)"+b(F),"gm"),te=(he=he.replace(F,"")).split("\r"),F=he.split(`
314`),he=1<F.length&&F[0].length<te[0].length;if(te.length===1||he)return`
315`;for(var ce=0,me=0;me<te.length;me++)te[me][0]===`
316`&&ce++;return ce>=te.length/2?`\r
317`:"\r"}}function b(S){return S.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function w(S){var k=(S=S||{}).delimiter,C=S.newline,T=S.comments,M=S.step,L=S.preview,N=S.fastMode,R=null,$=!1,B=S.quoteChar==null?'"':S.quoteChar,D=B;if(S.escapeChar!==void 0&&(D=S.escapeChar),(typeof k!="string"||-1<u.BAD_DELIMITERS.indexOf(k))&&(k=","),T===k)throw new Error("Comment character same as delimiter");T===!0?T="#":(typeof T!="string"||-1<u.BAD_DELIMITERS.indexOf(T))&&(T=!1),C!==`
318`&&C!=="\r"&&C!==`\r
319`&&(C=`
320`);var j=0,J=!1;this.parse=function(z,P,G){if(typeof z!="string")throw new Error("Input must be a string");var ae=z.length,se=k.length,ie=C.length,_e=T.length,H=I(M),Y=[],te=[],F=[],he=j=0;if(!z)return st();if(N||N!==!1&&z.indexOf(B)===-1){for(var ce=z.split(C),me=0;me<ce.length;me++){if(F=ce[me],j+=F.length,me!==ce.length-1)j+=C.length;else if(G)return st();if(!T||F.substring(0,_e)!==T){if(H){if(Y=[],Be(F.split(k)),W(),J)return st()}else Be(F.split(k));if(L&&L<=me)return Y=Y.slice(0,L),st(!0)}}return st()}for(var fe=z.indexOf(k,j),de=z.indexOf(C,j),Me=new RegExp(b(D)+b(B),"g"),ge=z.indexOf(B,j);;)if(z[j]===B)for(ge=j,j++;;){if((ge=z.indexOf(B,ge+1))===-1)return G||te.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:Y.length,index:j}),Fe();if(ge===ae-1)return Fe(z.substring(j,ge).replace(Me,B));if(B===D&&z[ge+1]===D)ge++;else if(B===D||ge===0||z[ge-1]!==D){fe!==-1&&fe<ge+1&&(fe=z.indexOf(k,ge+1));var Ie=ft((de=de!==-1&&de<ge+1?z.indexOf(C,ge+1):de)===-1?fe:Math.min(fe,de));if(z.substr(ge+1+Ie,se)===k){F.push(z.substring(j,ge).replace(Me,B)),z[j=ge+1+Ie+se]!==B&&(ge=z.indexOf(B,j)),fe=z.indexOf(k,j),de=z.indexOf(C,j);break}if(Ie=ft(de),z.substring(ge+1+Ie,ge+1+Ie+ie)===C){if(F.push(z.substring(j,ge).replace(Me,B)),Jt(ge+1+Ie+ie),fe=z.indexOf(k,j),ge=z.indexOf(B,j),H&&(W(),J))return st();if(L&&Y.length>=L)return st(!0);break}te.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:Y.length,index:j}),ge++}}else if(T&&F.length===0&&z.substring(j,j+_e)===T){if(de===-1)return st();j=de+ie,de=z.indexOf(C,j),fe=z.indexOf(k,j)}else if(fe!==-1&&(fe<de||de===-1))F.push(z.substring(j,fe)),j=fe+se,fe=z.indexOf(k,j);else{if(de===-1)break;if(F.push(z.substring(j,de)),Jt(de+ie),H&&(W(),J))return st();if(L&&Y.length>=L)return st(!0)}return Fe();function Be(X){Y.push(X),he=j}function ft(X){var le=0;return le=X!==-1&&(X=z.substring(ge+1,X))&&X.trim()===""?X.length:le}function Fe(X){return G||(X===void 0&&(X=z.substring(j)),F.push(X),j=ae,Be(F),H&&W()),st()}function Jt(X){j=X,Be(F),F=[],de=z.indexOf(C,j)}function st(X){if(S.header&&!P&&Y.length&&!$){var le=Y[0],ve=Object.create(null),Pe=new Set(le);let Ze=!1;for(let qt=0;qt<le.length;qt++){let Qe=c(le[qt]);if(ve[Qe=I(S.transformHeader)?S.transformHeader(Qe,qt):Qe]){let xt,Bt=ve[Qe];for(;xt=Qe+"_"+Bt,Bt++,Pe.has(xt););Pe.add(xt),le[qt]=xt,ve[Qe]++,Ze=!0,(R=R===null?{}:R)[xt]=Qe}else ve[Qe]=1,le[qt]=Qe;Pe.add(Qe)}Ze&&console.warn("Duplicate headers found and renamed."),$=!0}return{data:Y,errors:te,meta:{delimiter:k,linebreak:C,aborted:J,truncated:!!X,cursor:he+(P||0),renamedHeaders:R}}}function W(){M(st()),Y=[],te=[]}},this.abort=function(){J=!0},this.getCharIndex=function(){return j}}function y(S){var k=S.data,C=o[k.workerId],T=!1;if(k.error)C.userError(k.error,k.file);else if(k.results&&k.results.data){var M={abort:function(){T=!0,A(k.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:q,resume:q};if(I(C.userStep)){for(var L=0;L<k.results.data.length&&(C.userStep({data:k.results.data[L],errors:k.results.errors,meta:k.results.meta},M),!T);L++);delete k.results}else I(C.userChunk)&&(C.userChunk(k.results,M,k.file),delete k.results)}k.finished&&!T&&A(k.workerId,k.results)}function A(S,k){var C=o[S];I(C.userComplete)&&C.userComplete(k),C.terminate(),delete o[S]}function q(){throw new Error("Not implemented.")}function x(S){if(typeof S!="object"||S===null)return S;var k,C=Array.isArray(S)?[]:{};for(k in S)C[k]=x(S[k]);return C}function _(S,k){return function(){S.apply(k,arguments)}}function I(S){return typeof S=="function"}return u.parse=function(S,k){var C=(k=k||{}).dynamicTyping||!1;if(I(C)&&(k.dynamicTypingFunction=C,C={}),k.dynamicTyping=C,k.transform=!!I(k.transform)&&k.transform,!k.worker||!u.WORKERS_SUPPORTED)return C=null,u.NODE_STREAM_INPUT,typeof S=="string"?(S=c(S),C=new(k.download?f:g)(k)):S.readable===!0&&I(S.read)&&I(S.on)?C=new h(k):(r.File&&S instanceof File||S instanceof Object)&&(C=new m(k)),C.stream(S);(C=(()=>{var T;return!!u.WORKERS_SUPPORTED&&(T=(()=>{var M=r.URL||r.webkitURL||null,L=n.toString();return u.BLOB_URL||(u.BLOB_URL=M.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",L,")();"],{type:"text/javascript"})))})(),(T=new r.Worker(T)).onmessage=y,T.id=l++,o[T.id]=T)})()).userStep=k.step,C.userChunk=k.chunk,C.userComplete=k.complete,C.userError=k.error,k.step=I(k.step),k.chunk=I(k.chunk),k.complete=I(k.complete),k.error=I(k.error),delete k.worker,C.postMessage({input:S,config:k,workerId:C.id})},u.unparse=function(S,k){var C=!1,T=!0,M=",",L=`\r
321`,N='"',R=N+N,$=!1,B=null,D=!1,j=((()=>{if(typeof k=="object"){if(typeof k.delimiter!="string"||u.BAD_DELIMITERS.filter(function(P){return k.delimiter.indexOf(P)!==-1}).length||(M=k.delimiter),typeof k.quotes!="boolean"&&typeof k.quotes!="function"&&!Array.isArray(k.quotes)||(C=k.quotes),typeof k.skipEmptyLines!="boolean"&&typeof k.skipEmptyLines!="string"||($=k.skipEmptyLines),typeof k.newline=="string"&&(L=k.newline),typeof k.quoteChar=="string"&&(N=k.quoteChar,R=N+N),typeof k.header=="boolean"&&(T=k.header),Array.isArray(k.columns)){if(k.columns.length===0)throw new Error("Option columns is empty");B=k.columns}k.escapeChar!==void 0&&(R=k.escapeChar+N),k.escapeFormulae instanceof RegExp?D=k.escapeFormulae:typeof k.escapeFormulae=="boolean"&&k.escapeFormulae&&(D=/^[=+\-@\t\r].*$/)}})(),new RegExp(b(N),"g"));if(typeof S=="string"&&(S=JSON.parse(S)),Array.isArray(S)){if(!S.length||Array.isArray(S[0]))return J(null,S,$);if(typeof S[0]=="object")return J(B||Object.keys(S[0]),S,$)}else if(typeof S=="object")return typeof S.data=="string"&&(S.data=JSON.parse(S.data)),Array.isArray(S.data)&&(S.fields||(S.fields=S.meta&&S.meta.fields||B),S.fields||(S.fields=Array.isArray(S.data[0])?S.fields:typeof S.data[0]=="object"?Object.keys(S.data[0]):[]),Array.isArray(S.data[0])||typeof S.data[0]=="object"||(S.data=[S.data])),J(S.fields||[],S.data||[],$);throw new Error("Unable to serialize unrecognized input");function J(P,G,ae){var se="",ie=(typeof P=="string"&&(P=JSON.parse(P)),typeof G=="string"&&(G=JSON.parse(G)),Array.isArray(P)&&0<P.length),_e=!Array.isArray(G[0]);if(ie&&T){for(var H=0;H<P.length;H++)0<H&&(se+=M),se+=z(P[H],H);0<G.length&&(se+=L)}for(var Y=0;Y<G.length;Y++){var te=(ie?P:G[Y]).length,F=!1,he=ie?Object.keys(G[Y]).length===0:G[Y].length===0;if(ae&&!ie&&(F=ae==="greedy"?G[Y].join("").trim()==="":G[Y].length===1&&G[Y][0].length===0),ae==="greedy"&&ie){for(var ce=[],me=0;me<te;me++){var fe=_e?P[me]:me;ce.push(G[Y][fe])}F=ce.join("").trim()===""}if(!F){for(var de=0;de<te;de++){0<de&&!he&&(se+=M);var Me=ie&&_e?P[de]:de;se+=z(G[Y][Me],de)}Y<G.length-1&&(!ae||0<te&&!he)&&(se+=L)}}return se}function z(P,G){var ae,se,ie;return P==null?"":P.constructor===Date?JSON.stringify(P).slice(1,25):(ie=!1,D&&typeof P=="string"&&D.test(P)&&(P="'"+P,ie=!0),se=(ae=P.toString()).replace(j,R),(ie=ie||C===!0||typeof C=="function"&&C(P,G)||Array.isArray(C)&&C[G]||((_e,H)=>{for(var Y=0;Y<H.length;Y++)if(-1<_e.indexOf(H[Y]))return!0;return!1})(se,u.BAD_DELIMITERS)||-1<se.indexOf(M)||-1<ae.indexOf(N)||se.charAt(0)===" "||se.charAt(se.length-1)===" ")?N+se+N:se)}},u.RECORD_SEP="�",u.UNIT_SEP="�",u.BYTE_ORDER_MARK="\uFEFF",u.BAD_DELIMITERS=["\r",`
322`,'"',u.BYTE_ORDER_MARK],u.WORKERS_SUPPORTED=!s&&!!r.Worker,u.NODE_STREAM_INPUT=1,u.LocalChunkSize=10485760,u.RemoteChunkSize=5242880,u.DefaultDelimiter=",",u.Parser=w,u.ParserHandle=v,u.NetworkStreamer=f,u.FileStreamer=m,u.StringStreamer=g,u.ReadableStreamStreamer=h,r.jQuery&&((i=r.jQuery).fn.parse=function(S){var k=S.config||{},C=[];return this.each(function(L){if(!(i(this).prop("tagName").toUpperCase()==="INPUT"&&i(this).attr("type").toLowerCase()==="file"&&r.FileReader)||!this.files||this.files.length===0)return!0;for(var N=0;N<this.files.length;N++)C.push({file:this.files[N],inputElem:this,instanceConfig:i.extend({},k)})}),T(),this;function T(){if(C.length===0)I(S.complete)&&S.complete();else{var L,N,R,$,B=C[0];if(I(S.before)){var D=S.before(B.file,B.inputElem);if(typeof D=="object"){if(D.action==="abort")return L="AbortError",N=B.file,R=B.inputElem,$=D.reason,void(I(S.error)&&S.error({name:L},N,R,$));if(D.action==="skip")return void M();typeof D.config=="object"&&(B.instanceConfig=i.extend(B.instanceConfig,D.config))}else if(D==="skip")return void M()}var j=B.instanceConfig.complete;B.instanceConfig.complete=function(J){I(j)&&j(J,B.file,B.inputElem),M()},u.parse(B.file,B.instanceConfig)}}function M(){C.splice(0,1),T()}}),a&&(r.onmessage=function(S){S=S.data,u.WORKER_ID===void 0&&S&&(u.WORKER_ID=S.workerId),typeof S.input=="string"?r.postMessage({workerId:u.WORKER_ID,results:u.parse(S.input,S.config),finished:!0}):(r.File&&S.input instanceof File||S.input instanceof Object)&&(S=u.parse(S.input,S.config))&&r.postMessage({workerId:u.WORKER_ID,results:S,finished:!0})}),(f.prototype=Object.create(p.prototype)).constructor=f,(m.prototype=Object.create(p.prototype)).constructor=m,(g.prototype=Object.create(g.prototype)).constructor=g,(h.prototype=Object.create(p.prototype)).constructor=h,u})})(mq);var bN=mq.exports;const xN=De(bN);var wN=Array.isArray,cn=wN,qN=typeof br=="object"&&br&&br.Object===Object&&br,fq=qN,SN=fq,AN=typeof self=="object"&&self&&self.Object===Object&&self,EN=SN||AN||Function("return this")(),dr=EN,_N=dr,kN=_N.Symbol,Xo=kN,zv=Xo,hq=Object.prototype,CN=hq.hasOwnProperty,jN=hq.toString,qa=zv?zv.toStringTag:void 0;function PN(e){var t=CN.call(e,qa),n=e[qa];try{e[qa]=void 0;var r=!0}catch{}var i=jN.call(e);return r&&(t?e[qa]=n:delete e[qa]),i}var TN=PN,IN=Object.prototype,ON=IN.toString;function LN(e){return ON.call(e)}var MN=LN,Bv=Xo,NN=TN,RN=MN,$N="[object Null]",DN="[object Undef
322ined]",Wv=Bv?Bv.toStringTag:void 0;function FN(e){return e==null?e===void 0?DN:$N:Wv&&Wv in Object(e)?NN(e):RN(e)}var jr=FN;function UN(e){return e!=null&&typeof e=="object"}var Pr=UN,zN=jr,BN=Pr,WN="[object Symbol]";function HN(e){return typeof e=="symbol"||BN(e)&&zN(e)==WN}var ta=HN,VN=cn,GN=ta,KN=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,XN=/^\w*$/;function QN(e,t){if(VN(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||GN(e)?!0:XN.test(e)||!KN.test(e)||t!=null&&e in Object(t)}var Qf=QN;function JN(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Zr=JN;const na=De(Zr);var YN=jr,ZN=Zr,eR="[object AsyncFunction]",tR="[object Function]",nR="[object GeneratorFunction]",rR="[object Proxy]";function iR(e){if(!ZN(e))return!1;var t=YN(e);return t==tR||t==nR||t==eR||t==rR}var Jf=iR;const Oe=De(Jf);var sR=dr,aR=sR["__core-js_shared__"],oR=aR,kd=oR,Hv=function(){var e=/[^.]+$/.exec(kd&&kd.keys&&kd.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function lR(e){return!!Hv&&Hv in e}var uR=lR,cR=Function.prototype,dR=cR.toString;function pR(e){if(e!=null){try{return dR.call(e)}catch{}try{return e+""}catch{}}return""}var gq=pR,mR=Jf,fR=uR,hR=Zr,gR=gq,vR=/[\\^$.*+?()[\]{}|]/g,yR=/^\[object .+?Constructor\]$/,bR=Function.prototype,xR=Object.prototype,wR=bR.toString,qR=xR.hasOwnProperty,SR=RegExp("^"+wR.call(qR).replace(vR,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function AR(e){if(!hR(e)||fR(e))return!1;var t=mR(e)?SR:yR;return t.test(gR(e))}var ER=AR;function _R(e,t){return e==null?void 0:e[t]}var kR=_R,CR=ER,jR=kR;function PR(e,t){var n=jR(e,t);return CR(n)?n:void 0}var Di=PR,TR=Di,IR=TR(Object,"create"),oc=IR,Vv=oc;function OR(){this.__data__=Vv?Vv(null):{},this.size=0}var LR=OR;function MR(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var NR=MR,RR=oc,$R="__lodash_hash_undefined__",DR=Object.prototype,FR=DR.hasOwnProperty;function UR(e){var t=this.__data__;if(RR){var n=t[e];return n===$R?void 0:n}return FR.call(t,e)?t[e]:void 0}var zR=UR,BR=oc,WR=Object.prototype,HR=WR.hasOwnProperty;function VR(e){var t=this.__data__;return BR?t[e]!==void 0:HR.call(t,e)}var GR=VR,KR=oc,XR="__lodash_hash_undefined__";function QR(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=KR&&t===void 0?XR:t,this}var JR=QR,YR=LR,ZR=NR,e$=zR,t$=GR,n$=JR;function ra(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}ra.prototype.clear=YR;ra.prototype.delete=ZR;ra.prototype.get=e$;ra.prototype.has=t$;ra.prototype.set=n$;var r$=ra;function i$(){this.__data__=[],this.size=0}var s$=i$;function a$(e,t){return e===t||e!==e&&t!==t}var Yf=a$,o$=Yf;function l$(e,t){for(var n=e.length;n--;)if(o$(e[n][0],t))return n;return-1}var lc=l$,u$=lc,c$=Array.prototype,d$=c$.splice;function p$(e){var t=this.__data__,n=u$(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():d$.call(t,n,1),--this.size,!0}var m$=p$,f$=lc;function h$(e){var t=this.__data__,n=f$(t,e);return n<0?void 0:t[n][1]}var g$=h$,v$=lc;function y$(e){return v$(this.__data__,e)>-1}var b$=y$,x$=lc;function w$(e,t){var n=this.__data__,r=x$(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var q$=w$,S$=s$,A$=m$,E$=g$,_$=b$,k$=q$;function ia(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}ia.prototype.clear=S$;ia.prototype.delete=A$;ia.prototype.get=E$;ia.prototype.has=_$;ia.prototype.set=k$;var uc=ia,C$=Di,j$=dr,P$=C$(j$,"Map"),Zf=P$,Gv=r$,T$=uc,I$=Zf;function O$(){this.size=0,this.__data__={hash:new Gv,map:new(I$||T$),string:new Gv}}var L$=O$;function M$(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var N$=M$,R$=N$;function $$(e,t){var n=e.__data__;return R$(t)?n[typeof t=="string"?"string":"hash"]:n.map}var cc=$$,D$=cc;function F$(e){var t=D$(this,e).delete(e);return this.size-=t?1:0,t}var U$=F$,z$=cc;function B$(e){return z$(this,e).get(e)}var W$=B$,H$=cc;function V$(e){return H$(this,e).has(e)}var G$=V$,K$=cc;
322function X$(e,t){var n=K$(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Q$=X$,J$=L$,Y$=U$,Z$=W$,eD=G$,tD=Q$;function sa(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}sa.prototype.clear=J$;sa.prototype.delete=Y$;sa.prototype.get=Z$;sa.prototype.has=eD;sa.prototype.set=tD;var eh=sa,vq=eh,nD="Expected a function";function th(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(nD);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var a=e.apply(this,r);return n.cache=s.set(i,a)||s,a};return n.cache=new(th.Cache||vq),n}th.Cache=vq;var yq=th;const rD=De(yq);var iD=yq,sD=500;function aD(e){var t=iD(e,function(r){return n.size===sD&&n.clear(),r}),n=t.cache;return t}var oD=aD,lD=oD,uD=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cD=/\\(\\)?/g,dD=lD(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(uD,function(n,r,i,s){t.push(i?s.replace(cD,"$1"):r||n)}),t}),pD=dD;function mD(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var nh=mD,Kv=Xo,fD=nh,hD=cn,gD=ta,vD=1/0,Xv=Kv?Kv.prototype:void 0,Qv=Xv?Xv.toString:void 0;function bq(e){if(typeof e=="string")return e;if(hD(e))return fD(e,bq)+"";if(gD(e))return Qv?Qv.call(e):"";var t=e+"";return t=="0"&&1/e==-vD?"-0":t}var yD=bq,bD=yD;function xD(e){return e==null?"":bD(e)}var xq=xD,wD=cn,qD=Qf,SD=pD,AD=xq;function ED(e,t){return wD(e)?e:qD(e,t)?[e]:SD(AD(e))}var wq=ED,_D=ta,kD=1/0;function CD(e){if(typeof e=="string"||_D(e))return e;var t=e+"";return t=="0"&&1/e==-kD?"-0":t}var dc=CD,jD=wq,PD=dc;function TD(e,t){t=jD(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[PD(t[n++])];return n&&n==r?e:void 0}var rh=TD,ID=rh;function OD(e,t,n){var r=e==null?void 0:ID(e,t);return r===void 0?n:r}var qq=OD;const Cn=De(qq);function LD(e){return e==null}var MD=LD;const Re=De(MD);var ND=jr,RD=cn,$D=Pr,DD="[object String]";function FD(e){return typeof e=="string"||!RD(e)&&$D(e)&&ND(e)==DD}var UD=FD;const Li=De(UD);var Sq={exports:{}},Xe={};/**
323 * @license React
324 * react-is.production.min.js
325 *
326 * Copyright (c) Facebook, Inc. and its affiliates.
327 *
328 * This source code is licensed under the MIT license found in the
329 * LICENSE file in the root directory of this source tree.
330 */var ih=Symbol.for("react.element"),sh=Symbol.for("react.portal"),pc=Symbol.for("react.fragment"),mc=Symbol.for("react.strict_mode"),fc=Symbol.for("react.profiler"),hc=Symbol.for("react.provider"),gc=Symbol.for("react.context"),zD=Symbol.for("react.server_context"),vc=Symbol.for("react.forward_ref"),yc=Symbol.for("react.suspense"),bc=Symbol.for("react.suspense_list"),xc=Symbol.for("react.memo"),wc=Symbol.for("react.lazy"),BD=Symbol.for("react.offscreen"),Aq;Aq=Symbol.for("react.module.reference");function Tn(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case ih:switch(e=e.type,e){case pc:case fc:case mc:case yc:case bc:return e;default:switch(e=e&&e.$$typeof,e){case zD:case gc:case vc:case wc:case xc:case hc:return e;default:return t}}case sh:return t}}}Xe.ContextConsumer=gc;Xe.ContextProvider=hc;Xe.Element=ih;Xe.ForwardRef=vc;Xe.Fragment=pc;Xe.Lazy=wc;Xe.Memo=xc;Xe.Portal=sh;Xe.Profiler=fc;Xe.StrictMode=mc;Xe.Suspense=yc;Xe.SuspenseList=bc;Xe.isAsyncMode=function(){return!1};Xe.isConcurrentMode=function(){return!1};Xe.isContextConsumer=function(e){return Tn(e)===gc};Xe.isContextProvider=function(e){return Tn(e)===hc};Xe.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===ih};Xe.isForwardRef=function(e){return Tn(e)===vc};Xe.isFragment=function(e){return Tn(e)===pc};Xe.isLazy=function(e){return Tn(e)===wc};Xe.isMemo=function(e){return Tn(e)===xc};Xe.isPortal=function(e){return Tn(e)===sh};Xe.isProfiler=function(e){return Tn(e)===fc};Xe.isStrictMode=function(e){return Tn(e)===mc};Xe.isSuspense=function(e){return Tn(e)===yc};Xe.isSuspenseList=function(e){return Tn(e)===bc};Xe.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===pc||e===fc||e===mc||e===yc||e===bc||e===BD||typeof e=="object"&&e!==null&&(e.$$typeof===wc||e.$$typeof===xc||e.$$typeof===hc||e.$$typeof===gc||e.$$typeof===vc||e.$$typeof===Aq||e.getModuleId!==void 0)};Xe.typeOf=Tn;Sq.exports=Xe;var WD=Sq.exports,HD=jr,VD=Pr,GD="[object Number]";function KD(e){return typeof e=="number"||VD(e)&&HD(e)==GD}var Eq=KD;const XD=De(Eq);var QD=Eq;function JD(e){return QD(e)&&e!=+e}var YD=JD;const Qo=De(YD);var Wn=function(t){return t===0?0:t>0?1:-1},bi=function(t){return Li(t)&&t.indexOf("%")===t.length-1}
vendor: 5,704 bytes, line 330
330,re=function(t){return XD(t)&&!Qo(t)},ZD=function(t){return Re(t)},Ot=function(t){return re(t)||Li(t)},e5=0,qc=function(t){var n=++e5;return"".concat(t||"").concat(n)},Hn=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!re(t)&&!Li(t))return r;var s;if(bi(t)){var a=t.indexOf("%");s=n*parseFloat(t.slice(0,a))/100}else s=+t;return Qo(s)&&(s=r),i&&s>n&&(s=n),s},Ur=function(t){if(!t)return null;var n=Object.keys(t);return n&&n.length?t[n[0]]:null},t5=function(t){if(!Array.isArray(t))return!1;for(var n=t.length,r={},i=0;i<n;i++)if(!r[t[i]])r[t[i]]=!0;else return!0;return!1},Zi=function(t,n){return re(t)&&re(n)?function(r){return t+r*(n-t)}:function(){return n}};function Xp(e,t,n){return!e||!e.length?null:e.find(function(r){return r&&(typeof t=="function"?t(r):Cn(r,t))===n})}var n5=function(t,n){return re(t)&&re(n)?t-n:Li(t)&&Li(n)?t.localeCompare(n):t instanceof Date&&n instanceof Date?t.getTime()-n.getTime():String(t).localeCompare(String(n))};function vs(e,t){for(var n in e)if({}.hasOwnProperty.call(e,n)&&(!{}.hasOwnProperty.call(t,n)||e[n]!==t[n]))return!1;for(var r in t)if({}.hasOwnProperty.call(t,r)&&!{}.hasOwnProperty.call(e,r))return!1;return!0}function Qp(e){"@babel/helpers - typeof";return Qp=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},Qp(e)}var r5=["viewBox","children"],i5=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","className","color","height","id","lang","max","media","method","min","name","style","target","width","role","tabIndex","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","d","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","format","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","href","ideographic","imageRendering","in2","in","intercept","k1","k2","k3","k4","k","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","result","rotate","rx","ry","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","string","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","values","vectorEffect","version","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","widths","wordSpacing","writingMode","x1","x2","x","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","y","yChannelSelector","z","zoomAndPan","ref","key","angle"],Jv=["points","pathLength"],Cd={svg:r5,polygon:Jv,polyline:Jv},ah=["dangerouslySetInnerHTML","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onF
330ocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],Yl=function(t,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var r=t;if(E.isValidElement(t)&&(r=t.props),!na(r))return null;var i={};return Object.keys(r).forEach(function(s){ah.includes(s)&&(i[s]=n||function(a){return r[s](r,a)})}),i},s5=function(t,n,r){return function(i){return t(n,r,i),null}},Zl=function(t,n,r){if(!na(t)||Qp(t)!=="object")return null;var i=null;return Object.keys(t).forEach(function(s){var a=t[s];ah.includes(s)&&typeof a=="function"&&(i||(i={}),i[s]=s5(a,n,r))}),i},a5=["children"],o5=["children"];function Yv(e,t){if(e==null)return{};var n=l5(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function l5(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var Zv={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},Sr=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},ey=null,jd=null,oh=function e(t){if(t===ey&&Array.isArray(jd))return jd;var n=[];return E.Children.forEach(t,function(r){Re(r)||(WD.isFragment(r)?n=n.concat(e(r.props.children)):n.push(r))}),jd=n,ey=t,n};function Vn(e,t){var n=[],r=[];return Array.isArray(t)?r=t.map(function(i){return Sr(i)}):r=[Sr(t)],oh(e).forEach(function(i){var s=Cn(i,"type.displayName")||Cn(i,"type.n
330ame");r.indexOf(s)!==-1&&n.push(i)}),n}function gn(e,t){var n=Vn(e,t);return n&&n[0]}var ty=function(t){if(!t||!t.props)return!1;var n=t.props,r=n.width,i=n.height;return!(!re(r)||r<=0||!re(i)||i<=0)},u5=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],c5=function(t){return t&&t.type&&Li(t.type)&&u5.indexOf(t.type)>=0},d5=function(t,n,r,i){var s,a=(s=Cd==null?void 0:Cd[i])!==null&&s!==void 0?s:[];return n.startsWith("data-")||!Oe(t)&&(i&&a.includes(n)||i5.includes(n))||r&&ah.includes(n)},Ge=function(t,n,r){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(E.isValidElement(t)&&(i=t.props),!na(i))return null;var s={};
vendor: 4,076 bytes, line 330
330return Object.keys(i).forEach(function(a){var o;d5((o=i)===null||o===void 0?void 0:o[a],a,n,r)&&(s[a]=i[a])}),s},Jp=function e(t,n){if(t===n)return!0;var r=E.Children.count(t);if(r!==E.Children.count(n))return!1;if(r===0)return!0;if(r===1)return ny(Array.isArray(t)?t[0]:t,Array.isArray(n)?n[0]:n);for(var i=0;i<r;i++){var s=t[i],a=n[i];if(Array.isArray(s)||Array.isArray(a)){if(!e(s,a))return!1}else if(!ny(s,a))return!1}return!0},ny=function(t,n){if(Re(t)&&Re(n))return!0;if(!Re(t)&&!Re(n)){var r=t.props||{},i=r.children,s=Yv(r,a5),a=n.props||{},o=a.children,l=Yv(a,o5);return i&&o?vs(s,l)&&Jp(i,o):!i&&!o?vs(s,l):!1}return!1},ry=function(t,n){var r=[],i={};return oh(t).forEach(function(s,a){if(c5(s))r.push(s);else if(s){var o=Sr(s.type),l=n[o]||{},u=l.handler,c=l.once;if(u&&(!c||!i[o])){var p=u(s,o,a);r.push(p),i[o]=!0}}}),r},p5=function(t){var n=t&&t.type;return n&&Zv[n]?Zv[n]:null},m5=function(t,n){return oh(n).indexOf(t)},f5=["children","width","height","viewBox","className","style","title","desc"];function Yp(){return Yp=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yp.apply(this,arguments)}function h5(e,t){if(e==null)return{};var n=g5(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function g5(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Zp(e){var t=e.children,n=e.width,r=e.height,i=e.viewBox,s=e.className,a=e.style,o=e.title,l=e.desc,u=h5(e,f5),c=i||{width:n,height:r,x:0,y:0},p=Le("recharts-surface",s);return O.createElement("svg",Yp({},Ge(u,!0,"svg"),{className:p,width:n,height:r,style:a,viewBox:"".concat(c.x," ").concat(c.y," ").concat(c.width," ").concat(c.height)}),O.createElement("title",null,o),O.createElement("desc",null,l),t)}var v5=["children","className"];function em(){return em=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},em.apply(this,arguments)}function y5(e,t){if(e==null)return{};var n=b5(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function b5(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var Rt=O.forwardRef(function(e,t){var n=e.children,r=e.className,i=y5(e,v5),s=Le("recharts-layer",r);return O.createElement("g",em({className:s},Ge(i,!0),{ref:t}),n)}),Pi=function(t,n){for(var r=arguments.length,i=new Array(r>2?r-2:0),s=2;s<r;s++)i[s-2]=arguments[s]};function x5(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s}var w5=x5,q5=w5;function S5(e,t,n){var r=e.length;return n=n===void 0?r:n,!t&&n>=r?e:q5(e,t,n)}var A5=S5,E5="\\ud800-\\udfff",_5="\\u0300-\\u036f",k5="\\ufe20-\\ufe2f",C5="\\u20d0-\\u20ff",j5=_5+k5+C5,P5="\\ufe0e\\ufe0f",T5="\\u200d",I5=RegExp("["+T5+E5+j5+P5+"]");function O5(e){return I5.test(e)}var _q=O5;function L5(e){return e.split("")}var M5=L5,kq="\\ud800-\\udfff",N5="\\u0300-\\u036f",R5="\\ufe20-\\ufe2f",$5="\\u20d0-\\u20ff",D5=N5+R5+$5,F5="\\ufe0e\\ufe0f",U5="["+kq+"]",tm="["+D5+"]",nm="\\ud83c[\\udffb-\\udfff]",z5="(?:"+tm+"|"+nm+")",Cq="[^"+kq+"]",jq="(?:\\ud83c[\\udde6-\\uddff]){2}",Pq="[\\ud800-\\udbff][\\udc00-\\udfff]",B5="\\u200d",Tq=z5+"?",Iq="["+F5+"]?",W5="(?:"+B5+"(?:"+[Cq,jq,Pq].join("|")+")"+Iq+Tq+")*",H5=Iq+Tq+W5,V5="(?:"+[Cq+tm+"?",tm,jq,Pq,U5].join("|")+")",G5=RegExp(nm+"(?="+nm+")|"+V5+H5,"g");function K5(e){return e.match(G5)||[]}var X5=K5,Q5=M5,J5=_q,Y5=X5;function Z5(e){return J5(e)?Y5(e):Q5(e)}
vendor: 5,750 bytes, line 330
330var e4=Z5,t4=A5,n4=_q,r4=e4,i4=xq;function s4(e){return function(t){t=i4(t);var n=n4(t)?r4(t):void 0,r=n?n[0]:t.charAt(0),i=n?t4(n,1).join(""):t.slice(1);return r[e]()+i}}var a4=s4,o4=a4,l4=o4("toUpperCase"),u4=l4;const Sc=De(u4);function rt(e){return function(){return e}}const Oq=Math.cos,eu=Math.sin,Gn=Math.sqrt,tu=Math.PI,Ac=2*tu,rm=Math.PI,im=2*rm,pi=1e-6,c4=im-pi;function Lq(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}function d4(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Lq;const n=10**t;return function(r){this._+=r[0];for(let i=1,s=r.length;i<s;++i)this._+=Math.round(arguments[i]*n)/n+r[i]}}class p4{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Lq:d4(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,r,i){this._append`Q${+t},${+n},${this._x1=+r},${this._y1=+i}`}bezierCurveTo(t,n,r,i,s,a){this._append`C${+t},${+n},${+r},${+i},${this._x1=+s},${this._y1=+a}`}arcTo(t,n,r,i,s){if(t=+t,n=+n,r=+r,i=+i,s=+s,s<0)throw new Error(`negative radius: ${s}`);let a=this._x1,o=this._y1,l=r-t,u=i-n,c=a-t,p=o-n,f=c*c+p*p;if(this._x1===null)this._append`M${this._x1=t},${this._y1=n}`;else if(f>pi)if(!(Math.abs(p*l-u*c)>pi)||!s)this._append`L${this._x1=t},${this._y1=n}`;else{let m=r-a,g=i-o,h=l*l+u*u,v=m*m+g*g,b=Math.sqrt(h),w=Math.sqrt(f),y=s*Math.tan((rm-Math.acos((h+f-v)/(2*b*w)))/2),A=y/w,q=y/b;Math.abs(A-1)>pi&&this._append`L${t+A*c},${n+A*p}`,this._append`A${s},${s},0,0,${+(p*m>c*g)},${this._x1=t+q*l},${this._y1=n+q*u}`}}arc(t,n,r,i,s,a){if(t=+t,n=+n,r=+r,a=!!a,r<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(i),l=r*Math.sin(i),u=t+o,c=n+l,p=1^a,f=a?i-s:s-i;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>pi||Math.abs(this._y1-c)>pi)&&this._append`L${u},${c}`,r&&(f<0&&(f=f%im+im),f>c4?this._append`A${r},${r},0,1,${p},${t-o},${n-l}A${r},${r},0,1,${p},${this._x1=u},${this._y1=c}`:f>pi&&this._append`A${r},${r},0,${+(f>=rm)},${p},${this._x1=t+r*Math.cos(s)},${this._y1=n+r*Math.sin(s)}`)}rect(t,n,r,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function lh(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{const r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);t=r}return e},()=>new p4(t)}function uh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Mq(e){this._context=e}Mq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ec(e){return new Mq(e)}function Nq(e){return e[0]}function Rq(e){return e[1]}function $q(e,t){var n=rt(!0),r=null,i=Ec,s=null,a=lh(o);e=typeof e=="function"?e:e===void 0?Nq:rt(e),t=typeof t=="function"?t:t===void 0?Rq:rt(t);function o(l){var u,c=(l=uh(l)).length,p,f=!1,m;for(r==null&&(s=i(m=a())),u=0;u<=c;++u)!(u<c&&n(p=l[u],u,l))===f&&((f=!f)?s.lineStart():s.lineEnd()),f&&s.point(+e(p,u,l),+t(p,u,l));if(m)return s=null,m+""||null}return o.x=function(l){return arguments.length?(e=typeof l=="function"?l:rt(+l),o):e},o.y=function(l){return arguments.length?(t=typeof l=="function"?l:rt(+l),o):t},o.defined=function(l){return arguments.length?(n=typeof l=="function"?l:rt(!!l),o):n},o.curve=function(l){return arguments.length?(i=l,r!=null&&(s=i(r)),o):i},o.context=function(l){return arguments.length?(l==null?r=s=null:s=i(r=l),o):r},o}function vl(e,t,n){var r=null,i=rt(!0),s=null,a=Ec,o=null,l=lh(u);e=typeof e=="function"?e:e===void 0?Nq:rt(+e),t=typeof t=="function"?t:rt(t===void 0?0:+t),n=typeof n=="function"?n:n===void 0?Rq:rt(+n);function u(p){var f,m,g,h=(p=uh(p)).length,v,b=!1,w,y=new Array(h),A=new Array(h);for(s==null&&(o=a(w=l())),f=0;f<=h;++f){if(!(f<h&&i(v=p[f],f,p))===b)if(b=!b)m=f,o.areaStart(),o.lineStart();else{for(o.lineEnd(),o.lineStart(),g=f-1;g>=m;--g)o.point(y[g],A[g]);o.lineEnd(),o.areaEnd()}b&&(y[f]=+e(v,f,p),A[f]=+t(v,f,p),o.point(r?+r(v,f,p):y[f],n?+n(v,f,p):A[f]))}if(w)return o=null,w+""||null}function c(){return $q().defined(i).curve(a).context(s)}return u.x=function(p){return arguments.length?(e=typeof p=="function"?p:rt(+p),r=null,u):e},u.x0=function(p){return arguments.length?(e=typeof p=="function"?p:rt(+p),u):e},u.x1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:rt(+p),u):r},u.y=function(p){return arguments.length?(t=typeof p=="function"?p:rt(+p),n=null,u):t},u.y0=function(p){return arguments.length?(t=typeof p=="function"?p:rt(+p),u):t},u.y1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:rt(+p),u):n},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(n)},u.lineX1=function(){return c().x(r).y(t)},u.defined=function(p){return arguments.length?(i=typeof p=="function"?p:rt(!!p),u):i},u.curve=function(p){return arguments.length?(a=p,s!=null&&(o=a(s)),u):a},u.context=function(p){return arguments.length?(p==null?s=o=null:o=a(s=p),u):s},u}class Dq{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}
330point(t,n){switch(t=+t,n=+n,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n);break}}this._x0=t,this._y0=n}}function m4(e){return new Dq(e,!0)}function f4(e){return new Dq(e,!1)}const ch={draw(e,t){const n=Gn(t/tu);e.moveTo(n,0),e.arc(0,0,n,0,Ac)}},h4={draw(e,t){const n=Gn(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},Fq=Gn(1/3),g4=Fq*2,v4={draw(e,t){const n=Gn(t/g4),r=n*Fq;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},y4={draw(e,t){const n=Gn(t),r=-n/2;e.rect(r,r,n,n)}},b4=.8908130915292852,Uq=eu(tu/10)/eu(7*tu/10),x4=eu(Ac/10)*Uq,w4=-Oq(Ac/10)*Uq,q4={draw(e,t){const n=Gn(t*b4),r=x4*n,i=w4*n;e.moveTo(0,-n),e.lineTo(r,i);for(let s=1;s<5;++s){const a=Ac*s/5,o=Oq(a),l=eu(a);e.lineTo(l*n,-o*n),e.lineTo(o*r-l*i,l*r+o*i)}e.closePath()}},Pd=Gn(3),S4={draw(e,t){const n=-Gn(t/(Pd*3));e.moveTo(0,n*2),e.lineTo(-Pd*n,-n),e.lineTo(Pd*n,-n),e.closePath()}},xn=-.5,wn=Gn(3)/2,sm=1/Gn(12),A4=(sm/2+1)*3,E4={draw(e,t){const n=Gn(t/A4),r=n/2,i=n*sm,s=r,a=n*sm+n,o=-s,l=a;e.moveTo(r,i),e.lineTo(s,a),e.lineTo(o,l),e.lineTo(xn*r-wn*i,wn*r+xn*i),e.lineTo(xn*s-wn*a,wn*s+xn*a),e.lineTo(xn*o-wn*l,wn*o+xn*l),e.lineTo(xn*r+wn*i,xn*i-wn*r),e.lineTo(xn*s+wn*a,xn*a-wn*s),e.lineTo(xn*o+wn*l,xn*l-wn*o),e.closePath()}};function _4(e,t){let n=null,r=lh(i);e=typeof e=="function"?e:rt(e||ch),t=typeof t=="function"?t:rt(t===void 0?64:+t);function i(){let s;if(n||(n=s=r()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),s)return n=null,s+""||null}return i.type=function(s){return arguments.length?(e=typeof s=="function"?s:rt(s),i):e},i.size=function(s){return arguments.length?(t=typeof s=="function"?s:rt(+s),i):t},i.context=function(s){return arguments.length?(n=s??null,i):n},i}function nu(){}function ru(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function zq(e){this._context=e}zq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ru(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ru(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function k4(e){return new zq(e)}function Bq(e){this._context=e}Bq.prototype={areaStart:nu,areaEnd:nu,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:ru(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function C4(e){return new Bq(e)}function Wq(e){this._context=e}Wq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:ru(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function j4(e){return new Wq(e)}function Hq(e){this._context=e}Hq.prototype={areaStart:nu,areaEnd:nu,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function P4(e){return new Hq(e)}function iy(e){return e<0?-1:1}function sy(e,t,n){var r=e._x1-e._x0,i=t-e._x1,s=(e._y1-e._y0)/(r||i<0&&-0),a=(n-e._y1)/(i||r<0&&-0),o=(s*i+a*r)/(r+i);return(iy(s)+iy(a))*Math.min(Math.abs(s),Math.abs(a),.5*Math.abs(o))||0}function ay(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Td(e,t,n){var r=e._x0,i=e._y0,s=e._x1,a=e._y1,o=(s-r)/3;e._context.bezierCurveTo(r+o,i+o*t,s-o,a-o*n,s,a)}function iu(e){this._context=e}iu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Td(this,this._t0,ay(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Td(this,ay(this,n=sy(this,e,t)),n);break;default:Td(this,this._t0,n=sy(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function Vq(e){this._context=new Gq(e)}(Vq.prototype=Object.create(iu.prototype)).point=function(e,t){iu.prototype.point.call(this,t,e)};function Gq(e){this._context=e}Gq.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,s){this._context.bezierCurveTo(t,e,r,n,s,i)}};function T4(e){return new iu(e)}function I4(e){return new Vq(e)}function Kq(e){this._context=e}Kq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=oy(e),i=oy(t),s=0,a=1;a<n;++s,++a)this._context.bezierCurveTo(r[0][s],i[0][s],r[1][s],i[1][s],e[a],t[a]);(this._line||this._line!==0&&n===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}};function oy(e){var t,n=e.length-1,r,i=new Array(n),s=new Array(n),a=new Array(n);for(i[0]=0,s[0]=2,a[0]=e[0]+2*e[1],t=1;t<n-1;++t)i[t]=1,s[t]=4,a[t]=4*e[t]+2*e[t+1];for(i[n-1]=2,s[n-1]=7,a[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)r=i[t]/s[t-1],s[t]-=r,a[t]-=r*a[t-1];for(i[n-1]=a[n-1]/s[n-1],t=n-2;t>=0;--t)i[t]=(a[t]-i[t+1])/s[t];for(s[n-1]=(e[n]+i[n-1])/2,t=0;t<n-1;++t)s[t]=2*e[t+1]-i[t+1];return[i,s]}function O4(e){return new Kq(e)}function _c(e,t){this._context=e,this._t=t}_c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;
vendor: 4,736 bytes, line 330
330default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}}this._x=e,this._y=t}};function L4(e){return new _c(e,.5)}function M4(e){return new _c(e,0)}function N4(e){return new _c(e,1)}function js(e,t){if((a=e.length)>1)for(var n=1,r,i,s=e[t[0]],a,o=s.length;n<a;++n)for(i=s,s=e[t[n]],r=0;r<o;++r)s[r][1]+=s[r][0]=isNaN(i[r][1])?i[r][0]:i[r][1]}function am(e){for(var t=e.length,n=new Array(t);--t>=0;)n[t]=t;return n}function R4(e,t){return e[t]}function $4(e){const t=[];return t.key=e,t}function D4(){var e=rt([]),t=am,n=js,r=R4;function i(s){var a=Array.from(e.apply(this,arguments),$4),o,l=a.length,u=-1,c;for(const p of s)for(o=0,++u;o<l;++o)(a[o][u]=[0,+r(p,a[o].key,u,s)]).data=p;for(o=0,c=uh(t(a));o<l;++o)a[c[o]].index=o;return n(a,c),a}return i.keys=function(s){return arguments.length?(e=typeof s=="function"?s:rt(Array.from(s)),i):e},i.value=function(s){return arguments.length?(r=typeof s=="function"?s:rt(+s),i):r},i.order=function(s){return arguments.length?(t=s==null?am:typeof s=="function"?s:rt(Array.from(s)),i):t},i.offset=function(s){return arguments.length?(n=s??js,i):n},i}function F4(e,t){if((r=e.length)>0){for(var n,r,i=0,s=e[0].length,a;i<s;++i){for(a=n=0;n<r;++n)a+=e[n][i][1]||0;if(a)for(n=0;n<r;++n)e[n][i][1]/=a}js(e,t)}}function U4(e,t){if((i=e.length)>0){for(var n=0,r=e[t[0]],i,s=r.length;n<s;++n){for(var a=0,o=0;a<i;++a)o+=e[a][n][1]||0;r[n][1]+=r[n][0]=-o/2}js(e,t)}}function z4(e,t){if(!(!((a=e.length)>0)||!((s=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,s,a;r<s;++r){for(var o=0,l=0,u=0;o<a;++o){for(var c=e[t[o]],p=c[r][1]||0,f=c[r-1][1]||0,m=(p-f)/2,g=0;g<o;++g){var h=e[t[g]],v=h[r][1]||0,b=h[r-1][1]||0;m+=v-b}l+=p,u+=m*p}i[r-1][1]+=i[r-1][0]=n,l&&(n-=u/l)}i[r-1][1]+=i[r-1][0]=n,js(e,t)}}function so(e){"@babel/helpers - typeof";return so=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},so(e)}var B4=["type","size","sizeType"];function om(){return om=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},om.apply(this,arguments)}function ly(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function uy(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?ly(Object(n),!0).forEach(function(r){W4(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ly(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function W4(e,t,n){return t=H4(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function H4(e){var t=V4(e,"string");return so(t)=="symbol"?t:t+""}function V4(e,t){if(so(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(so(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function G4(e,t){if(e==null)return{};var n=K4(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function K4(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var Xq={symbolCircle:ch,symbolCross:h4,symbolDiamond:v4,symbolSquare:y4,symbolStar:q4,symbolTriangle:S4,symbolWye:E4},X4=Math.PI/180,Q4=function(t){var n="symbol".concat(Sc(t));return Xq[n]||ch},J4=function(t,n,r){if(n==="area")return t;switch(r){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*X4;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},Y4=function(t,n){Xq["symbol".concat(Sc(t))]=n},dh=function(t){var n=t.type,r=n===void 0?"circle":n,i=t.size,s=i===void 0?64:i,a=t.sizeType,o=a===void 0?"area":a,l=G4(t,B4),u=uy(uy({},l),{},{type:r,size:s,sizeType:o}),c=function(){var v=Q4(r),b=_4().type(v).size(J4(s,o,r));return b()},p=u.className,f=u.cx,m=u.cy,g=Ge(u,!0);return f===+f&&m===+m&&s===+s?O.createElement("path",om({}
330,g,{className:Le("recharts-symbols",p),transform:"translate(".concat(f,", ").concat(m,")"),d:c()})):null};dh.registerSymbol=Y4;function Ps(e){"@babel/helpers - typeof";return Ps=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},Ps(e)}function lm(){return lm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lm.apply(this,arguments)}function cy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Z4(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?cy(Object(n),!0).forEach(function(r){ao(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function e3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t3(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Jq(r.key),r)}}function n3(e,t,n){return t&&t3(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function r3(e,t,n){return t=su(t),i3(e,Qq()?Reflect.construct(t,n||[],su(e).constructor):t.apply(e,n))}function i3(e,t){if(t&&(Ps(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return s3(e)}function s3(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Qq(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Qq=function(){return!!e})()}function su(e){return su=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},su(e)}function a3(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&um(e,t)}function um(e,t){return um=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},um(e,t)}function ao(e,t,n){return t=Jq(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Jq(e){var t=o3(e,"string");return Ps(t)=="symbol"?t:t+""}function o3(e,t){if(Ps(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ps(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var qn=32,ph=function(e){function t(){return e3(this,t),r3(this,t,arguments)}return a3(t,e),n3(t,[{key:"renderIcon",value:function(r){var i=this.props.inactiveColor,s=qn/2,a=qn/6,o=qn/3,l=r.inactive?i:r.color;if(r.type==="plainline")return O.createElement("line",{strokeWidth:4,fill:"none",stroke:l,strokeDasharray:r.payload.strokeDasharray,x1:0,y1:s,x2:qn,y2:s,className:"recharts-legend-icon"});if(r.type==="line")return O.createElement("path",{strokeWidth:4,fill:"none",stroke:l,d:"M0,".concat(s,"h").concat(o,`
331            A`).concat(a,",").concat(a,",0,1,1,").concat(2*o,",").concat(s,`
332            H`).concat(qn,"M").concat(2*o,",").concat(s,`
333            A`).concat(a,",").concat(a,",0,1,1,").concat(o,",").concat(s),className:"recharts-legend-icon"});if(r.type==="rect")return O.createElement("path",{stroke:"none",fill:l,d:"M0,".concat(qn/8,"h").concat(qn,"v").concat(qn*3/4,"h").concat(-qn,"z"),className:"recharts-legend-icon"});if(O.isValidElement(r.legendIcon)){var u=Z4({},r);return delete u.legendIcon,O.cloneElement(r.legendIcon,u)}return O.createElement(dh,{fill:l,cx:s,cy:s,size:qn,sizeType:"diameter",type:r.type})}},{key:"renderItems",value:function(){var r=this,i=this.props,s=i.payload,a=i.iconSize,o=i.layout,l=i.formatter,u=i.inactiveColor,c={x:0,y:0,width:qn,height:qn},p={display:o==="horizontal"?"inline-block":"block",marginRight:10},f={display:"inline-block",verticalAlign:"middle",marginRight:4};return s.map(function(m,g){var h=m.formatter||l,v=Le(ao(ao({"recharts-legend-item":!0},"legend-item-".concat(g),!0),"inactive",m.inactive));if(m.type==="none")return null;var b=Oe(m.value)?null:m.value;Pi(!Oe(m.value),`The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name="Name of my Data"/>`);var w=m.inactive?u:m.color;return O.createElement("li",lm({className:v,style:p,key:"legend-item-".concat(g)},Zl(r.props,m,g)),O.createElement(Zp,{width:a,height:a,viewBox:c,style:f},r.renderIcon(m)),O.createElement("span",{className:"recharts-legend-item-text",style:{color:w}},h?h(b,m,g):b))})}},{key:"render",value:function(){var r=this.props,i=r.payload,s=r.layout,a=r.align;if(!i||!i.length)return null;var o={padding:0,margin:0,textAlign:s==="horizontal"?a:"left"};return O.createElement("ul",{className:"recharts-default-legend",style:o},this.renderItems())}}])}(E.PureComponent);ao(ph,"displayName","Legend");ao(ph,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});var l3=uc;function u3(){this.__data__=new l3,this.size=0}var c3=u3;function d3(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var p3=d3;function m3(e){return this.__data__.get(e)}var f3=m3;function h3(e){return this.__data__.has(e)}var g3=h3,v3=uc,y3=Zf,b3=eh,x3=200;function w3(e,t){var n=this.__data__;if(n instanceof v3){var r=n.__data__;if(!y3||r.length<x3-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new b3(r)}return n.set(e,t),this.size=n.size,this}var q3=w3,S3=uc,A3=c3,E3=p3,_3=f3,k3=g3,C3=q3;function aa(e){var t=this.__data__=new S3(e);this.size=t.size}aa.prototype.clear=A3;aa.prototype.delete=E3;aa.prototype.get=_3;aa.prototype.has=k3;aa.prototype.set=C3;var Yq=aa,j3="__lodash_hash_undefined__";function P3(e){return this.__data__.set(e,j3),this}var T3=P3;function I3(e){return this.__data__.has(e)}var O3=I3,L3=eh,M3=T3,N3=O3;function au(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new L3;++t<n;)this.add(e[t])}au.prototype.add=au.prototype.push=M3;au.prototype.has=N3;var Zq=au;function R3(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var eS=R3;function $3(e,t){return e.has(t)}var tS=$3,D3=Zq,F3=eS,U3=tS,z3=1,B3=2;function W3(e,t,n,r,i,s){var a=n&z3,o=e.length,l=t.length;if(o!=l&&!(a&&l>o))return!1;var u=s.get(e),c=s.get(t);if(u&&c)return u==t&&c==e;var p=-1,f=!0,m=n&B3?new D3:void 0;for(s.set(e,t),s.set(t,e);++p<o;){var g=e[p],h=t[p];if(r)var v=a?r(h,g,p,t,e,s):r(g,h,p,e,t,s);if(v!==void 0){if(v)continue;f=!1;break}
vendor: 6,739 bytes, line 333
333if(m){if(!F3(t,function(b,w){if(!U3(m,w)&&(g===b||i(g,b,n,r,s)))return m.push(w)})){f=!1;break}}else if(!(g===h||i(g,h,n,r,s))){f=!1;break}}return s.delete(e),s.delete(t),f}var nS=W3,H3=dr,V3=H3.Uint8Array,G3=V3;function K3(e){var t=-1,n=Array(e.size);return e.forEach(function(r,i){n[++t]=[i,r]}),n}var X3=K3;function Q3(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var mh=Q3,dy=Xo,py=G3,J3=Yf,Y3=nS,Z3=X3,e6=mh,t6=1,n6=2,r6="[object Boolean]",i6="[object Date]",s6="[object Error]",a6="[object Map]",o6="[object Number]",l6="[object RegExp]",u6="[object Set]",c6="[object String]",d6="[object Symbol]",p6="[object ArrayBuffer]",m6="[object DataView]",my=dy?dy.prototype:void 0,Id=my?my.valueOf:void 0;function f6(e,t,n,r,i,s,a){switch(n){case m6:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case p6:return!(e.byteLength!=t.byteLength||!s(new py(e),new py(t)));case r6:case i6:case o6:return J3(+e,+t);case s6:return e.name==t.name&&e.message==t.message;case l6:case c6:return e==t+"";case a6:var o=Z3;case u6:var l=r&t6;if(o||(o=e6),e.size!=t.size&&!l)return!1;var u=a.get(e);if(u)return u==t;r|=n6,a.set(e,t);var c=Y3(o(e),o(t),r,i,s,a);return a.delete(e),c;case d6:if(Id)return Id.call(e)==Id.call(t)}return!1}var h6=f6;function g6(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var rS=g6,v6=rS,y6=cn;function b6(e,t,n){var r=t(e);return y6(e)?r:v6(r,n(e))}var x6=b6;function w6(e,t){for(var n=-1,r=e==null?0:e.length,i=0,s=[];++n<r;){var a=e[n];t(a,n,e)&&(s[i++]=a)}return s}var q6=w6;function S6(){return[]}var A6=S6,E6=q6,_6=A6,k6=Object.prototype,C6=k6.propertyIsEnumerable,fy=Object.getOwnPropertySymbols,j6=fy?function(e){return e==null?[]:(e=Object(e),E6(fy(e),function(t){return C6.call(e,t)}))}:_6,P6=j6;function T6(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var I6=T6,O6=jr,L6=Pr,M6="[object Arguments]";function N6(e){return L6(e)&&O6(e)==M6}var R6=N6,hy=R6,$6=Pr,iS=Object.prototype,D6=iS.hasOwnProperty,F6=iS.propertyIsEnumerable,U6=hy(function(){return arguments}())?hy:function(e){return $6(e)&&D6.call(e,"callee")&&!F6.call(e,"callee")},fh=U6,ou={exports:{}};function z6(){return!1}var B6=z6;ou.exports;(function(e,t){var n=dr,r=B6,i=t&&!t.nodeType&&t,s=i&&!0&&e&&!e.nodeType&&e,a=s&&s.exports===i,o=a?n.Buffer:void 0,l=o?o.isBuffer:void 0,u=l||r;e.exports=u})(ou,ou.exports);var sS=ou.exports,W6=9007199254740991,H6=/^(?:0|[1-9]\d*)$/;function V6(e,t){var n=typeof e;return t=t??W6,!!t&&(n=="number"||n!="symbol"&&H6.test(e))&&e>-1&&e%1==0&&e<t}var hh=V6,G6=9007199254740991;function K6(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=G6}var gh=K6,X6=jr,Q6=gh,J6=Pr,Y6="[object Arguments]",Z6="[object Array]",eF="[object Boolean]",tF="[object Date]",nF="[object Error]",rF="[object Function]",iF="[object Map]",sF="[object Number]",aF="[object Object]",oF="[object RegExp]",lF="[object Set]",uF="[object String]",cF="[object WeakMap]",dF="[object ArrayBuffer]",pF="[object DataView]",mF="[object Float32Array]",fF="[object Float64Array]",hF="[object Int8Array]",gF="[object Int16Array]",vF="[object Int32Array]",yF="[object Uint8Array]",bF="[object Uint8ClampedArray]",xF="[object Uint16Array]",wF="[object Uint32Array]",ot={};ot[mF]=ot[fF]=ot[hF]=ot[gF]=ot[vF]=ot[yF]=ot[bF]=ot[xF]=ot[wF]=!0;ot[Y6]=ot[Z6]=ot[dF]=ot[eF]=ot[pF]=ot[tF]=ot[nF]=ot[rF]=ot[iF]=ot[sF]=ot[aF]=ot[oF]=ot[lF]=ot[uF]=ot[cF]=!1;function qF(e){return J6(e)&&Q6(e.length)&&!!ot[X6(e)]}var SF=qF;function AF(e){return function(t){return e(t)}}var aS=AF,lu={exports:{}};lu.exports;(function(e,t){var n=fq,r=t&&!t.nodeType&&t,i=r&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===r,a=s&&n.process,o=function(){try{var l=i&&i.require&&i.require("util").types;return l||a&&a.binding&&a.binding("util")}catch{}}();e.exports=o})(lu,lu.exports);var EF=lu.exports,_F=SF,kF=aS,gy=EF,vy=gy&&gy.isTypedArray,CF=vy?kF(vy):_F,oS=CF,jF=I6,PF=fh,TF=cn,IF=sS,OF=hh,LF=oS,MF=Object.prototype,NF=MF.hasOwnProperty;function RF(e,t){var n=TF(e),r=!n&&PF(e),i=!n&&!r&&IF(e),s=!n&&!r&&!i&&LF(e),a=n||r||i||s,o=a?jF(e.length,String):[],l=o.length;for(var u in e)(t||NF.call(e,u))&&!(a&&(u=="length"||i&&(u=="offset"||u=="parent")||s&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||OF(u,l)))&&o.push(u);return o}var $F=RF,DF=Object.prototype;function FF(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||DF;return e===n}var UF=FF;function zF(e,t){return function(n){return e(t(n))}}var lS=zF,BF=lS,WF=BF(Object.keys,Object),HF=WF,VF=UF,GF=HF,KF=Object.prototype,XF=KF.hasOwnProperty;function QF(e){if(!VF(e))return GF(e);var t=[];for(var n in Object(e))XF.call(e,n)&&n!="constructor"&&t.push(n);return t}var JF=QF,YF=Jf,ZF=gh;function eU(e){return e!=null&&ZF(e.length)&&!YF(e)}var Jo=eU,tU=$F,nU=JF,rU=Jo;function iU(e){return rU(e)?tU(e):nU(e)}var kc=iU,sU=x6,aU=P6,oU=kc;function lU(e){return sU(e,oU,aU)}var uU=lU,yy=uU,cU=1,dU=Object.prototype,pU=dU.hasOwnProperty;function mU(e,t,n,r,i,s){var a=n&cU,o=yy(e),l=o.length,u=yy(t),c=u.length;if(l!=c&&!a)return!1;for(var p=l;p--;){var f=o[p];if(!(a?f in t:pU.call(t,f)))return!1}var m=s.get(e),g=s.get(t);if(m&&g)return m==t&&g==e;var h=!0;s.set(e,t),s.set(t,e);for(var v=a;++p<l;){f=o[p];var b=e[f],w=t[f];if(r)var y=a?r(w,b,f,t,e,s):r(b,w,f,e,t,s);if(!(y===void 0?b===w||i(b,w,n,r,s):y)){h=!1;break}v||(v=f=="constructor")}if(h&&!v){var A=e.constructor,q=t.constructor;A!=q&&"constructor"in e&&"constructor"in t&&!(typeof A=="function"&&A instanceof A&&typeof q=="function"&&q instanceof q)&&(h=!1)}return s.delete(e),s.delete(t),h}var fU=mU,hU=Di,gU=dr,vU=hU(gU,"DataView"),yU=vU,bU=Di,xU=dr,wU=bU(xU,"Promise"),qU=wU,SU=Di,AU=dr,EU=SU(AU,"Set"),uS=EU,_U=Di,kU=dr,CU=_U(kU,"WeakMap"),jU=CU,cm=yU,dm=Zf,pm=qU,mm=uS,fm=jU,cS=jr,oa=gq,by="[object Map]",PU="[object Object]",xy="[object Promise]",wy="[object Set]",qy="[object WeakMap]",Sy="[object DataView]",TU=oa(cm),IU=oa(dm),OU=oa(pm),LU=oa(mm),MU=oa(fm),mi=cS;(cm&&mi(new cm(new ArrayBuffer(1)))!=Sy||dm&&mi(new dm)!=by||pm&&mi(pm.resolve())!=xy||mm&&mi(new mm)!=wy||fm&&mi(new fm)!=qy)&&(mi=function(e){var t=cS(e),n=t==PU?e.constructor:void 0,r=n?oa(n):"";if(r)switch(r){case TU:return Sy;case IU:return by;case OU:return xy;case LU:return wy;case MU:return qy}return t});var NU=mi,Od=Yq,RU=nS,$U=h6,DU=fU,Ay=NU,Ey=cn,_y=sS,FU=oS,UU=1,ky="[object Arguments]",Cy="[object Array]",yl="[object Object]",zU=Object.prototype,jy=zU.hasOwnProperty;function BU(e,t,n,r,i,s){var a=Ey(e),o=Ey(t),l=a?Cy:Ay(e),u=o?Cy:Ay(t);l=l==ky?yl:l,u=u==ky?yl:u;var c=l==yl,p=u==yl,f=l==u;if(f&&_y(e)){if(!_y(t))return!1;a=!0,c=!1}if(f&&!c)return s||(s=new Od),a||FU(e)?RU(e,t,n,r,i,s):$U(e,t,l,n,r,i,s);if(!(n&UU)){var m=c&&jy.call(e,"__wrapped__"),g=p&&jy.call(t,"__wrapped__");
333if(m||g){var h=m?e.value():e,v=g?t.value():t;return s||(s=new Od),i(h,v,n,r,s)}}return f?(s||(s=new Od),DU(e,t,n,r,i,s)):!1}var WU=BU,HU=WU,Py=Pr;function dS(e,t,n,r,i){return e===t?!0:e==null||t==null||!Py(e)&&!Py(t)?e!==e&&t!==t:HU(e,t,n,r,dS,i)}var vh=dS,VU=Yq,GU=vh,KU=1,XU=2;function QU(e,t,n,r){var i=n.length,s=i,a=!r;if(e==null)return!s;for(e=Object(e);i--;){var o=n[i];if(a&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++i<s;){o=n[i];var l=o[0],u=e[l],c=o[1];if(a&&o[2]){if(u===void 0&&!(l in e))return!1}else{var p=new VU;if(r)var f=r(u,c,l,e,t,p);if(!(f===void 0?GU(c,u,KU|XU,r,p):f))return!1}}return!0}var JU=QU,YU=Zr;function ZU(e){return e===e&&!YU(e)}var pS=ZU,ez=pS,tz=kc;function nz(e){for(var t=tz(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,ez(i)]}return t}var rz=nz;function iz(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var mS=iz,sz=JU,az=rz,oz=mS;function lz(e){var t=az(e);return t.length==1&&t[0][2]?oz(t[0][0],t[0][1]):function(n){return n===e||sz(n,e,t)}}var uz=lz;function cz(e,t){return e!=null&&t in Object(e)}var dz=cz,pz=wq,mz=fh,fz=cn,hz=hh,gz=gh,vz=dc;function yz(e,t,n){t=pz(t,e);for(var r=-1,i=t.length,s=!1;++r<i;){var a=vz(t[r]);if(!(s=e!=null&&n(e,a)))break;e=e[a]}return s||++r!=i?s:(i=e==null?0:e.length,!!i&&gz(i)&&hz(a,i)&&(fz(e)||mz(e)))}var bz=yz,xz=dz,wz=bz;function qz(e,t){return e!=null&&wz(e,t,xz)}var Sz=qz,Az=vh,Ez=qq,_z=Sz,kz=Qf,Cz=pS,jz=mS,Pz=dc,Tz=1,Iz=2;function Oz(e,t){return kz(e)&&Cz(t)?jz(Pz(e),t):function(n){var r=Ez(n,e);return r===void 0&&r===t?_z(n,e):Az(t,r,Tz|Iz)}}var Lz=Oz;function Mz(e){return e}var la=Mz;function Nz(e){return function(t){return t==null?void 0:t[e]}}var Rz=Nz,$z=rh;function Dz(e){return function(t){return $z(t,e)}}var Fz=Dz,Uz=Rz,zz=Fz,Bz=Qf,Wz=dc;function Hz(e){return Bz(e)?Uz(Wz(e)):zz(e)}var Vz=Hz,Gz=uz,Kz=Lz,Xz=la,Qz=cn,Jz=Vz;function Yz(e){return typeof e=="function"?e:e==null?Xz:typeof e=="object"?Qz(e)?Kz(e[0],e[1]):Gz(e):Jz(e)}var ei=Yz;function Zz(e,t,n,r){for(var i=e.length,s=n+(r?1:-1);r?s--:++s<i;)if(t(e[s],s,e))return s;return-1}var fS=Zz;function e8(e){return e!==e}var t8=e8;function n8(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}var r8=n8,i8=fS,s8=t8,a8=r8;function o8(e,t,n){return t===t?a8(e,t,n):i8(e,s8,n)}var l8=o8,u8=l8;function c8(e,t){var n=e==null?0:e.length;return!!n&&u8(e,t,0)>-1}var d8=c8;function p8(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}var m8=p8;function f8(){}var h8=f8,Ld=uS,g8=h8,v8=mh,y8=1/0,b8=Ld&&1/v8(new Ld([,-0]))[1]==y8?function(e){return new Ld(e)}:g8,x8=b8,w8=Zq,q8=d8,S8=m8,A8=tS,E8=x8,_8=mh,k8=200;function C8(e,t,n){var r=-1,i=q8,s=e.length,a=!0,o=[],l=o;if(n)a=!1,i=S8;else if(s>=k8){var u=t?null:E8(e);if(u)return _8(u);a=!1,i=A8,l=new w8}else l=t?[]:o;e:for(;++r<s;){var c=e[r],p=t?t(c):c;if(c=n||c!==0?c:0,a&&p===p){for(var f=l.length;f--;)if(l[f]===p)continue e;t&&l.push(p),o.push(c)}else i(l,p,n)||(l!==o&&l.push(p),o.push(c))}return o}var j8=C8,P8=ei,T8=j8;function I8(e,t){return e&&e.length?T8(e,P8(t)):[]}var O8=I8;const Ty=De(O8);function hS(e,t,n){return t===!0?Ty(e,n):Oe(t)?Ty(e,t):e}function Ts(e){"@babel/helpers - typeof";return Ts=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},Ts(e)}var L8=["ref"];function Iy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function fr(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Iy(Object(n),!0).forEach(function(r){Cc(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Iy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function M8(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Oy(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,vS(r.key),r)}}function N8(e,t,n){return t&&Oy(e.prototype,t),n&&Oy(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function R8(e,t,n){return t=uu(t),$8(e,gS()?Reflect.construct(t,n||[],uu(e).constructor):t.apply(e,n))}function $8(e,t){if(t&&(Ts(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return D8(e)}function D8(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function gS(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(gS=function(){return!!e})()}function uu(e){return uu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},uu(e)}function F8(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&hm(e,t)}function hm(e,t){return hm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},hm(e,t)}function Cc(e,t,n){return t=vS(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function vS(e){var t=U8(e,"string");return Ts(t)=="symbol"?t:t+""}function U8(e,t){if(Ts(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ts(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function z8(e,t){if(e==null)return{};var n=B8(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function B8(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function W8(e){return e.value}function H8(e,t){if(O.isValidElement(e))return O.cloneElement(e,t);if(typeof e=="function")return O.createElement(e,t);t.ref;var n=z8(t,L8);return O.createElement(ph,n)}var Ly=1,ys=function(e){function t(){var n;M8(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=R8(this,t,[].concat(i)),Cc(n,"lastBoundingBox",{width:-1,height:-1}),n}
333return F8(t,e),N8(t,[{key:"componentDidMount",value:function(){this.updateBBox()}},{key:"componentDidUpdate",value:function(){this.updateBBox()}},{key:"getBBox",value:function(){if(this.wrapperNode&&this.wrapperNode.getBoundingClientRect){var r=this.wrapperNode.getBoundingClientRect();return r.height=this.wrapperNode.offsetHeight,r.width=this.wrapperNode.offsetWidth,r}return null}},{key:"updateBBox",value:function(){var r=this.props.onBBoxUpdate,i=this.getBBox();i?(Math.abs(i.width-this.lastBoundingBox.width)>Ly||Math.abs(i.height-this.lastBoundingBox.height)>Ly)&&(this.lastBoundingBox.width=i.width,this.lastBoundingBox.height=i.height,r&&r(i)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,r&&r(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?fr({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(r){var i=this.props,s=i.layout,a=i.align,o=i.verticalAlign,l=i.margin,u=i.chartWidth,c=i.chartHeight,p,f;if(!r||(r.left===void 0||r.left===null)&&(r.right===void 0||r.right===null))if(a==="center"&&s==="vertical"){var m=this.getBBoxSnapshot();p={left:((u||0)-m.width)/2}}else p=a==="right"?{right:l&&l.right||0}:{left:l&&l.left||0};if(!r||(r.top===void 0||r.top===null)&&(r.bottom===void 0||r.bottom===null))if(o==="middle"){var g=this.getBBoxSnapshot();f={top:((c||0)-g.height)/2}}else f=o==="bottom"?{bottom:l&&l.bottom||0}:{top:l&&l.top||0};return fr(fr({},p),f)}},{key:"render",value:function(){var r=this,i=this.props,s=i.content,a=i.width,o=i.height,l=i.wrapperStyle,u=i.payloadUniqBy,c=i.payload,p=fr(fr({position:"absolute",width:a||"auto",height:o||"auto"},this.getDefaultPosition(l)),l);return O.createElement("div",{className:"recharts-legend-wrapper",style:p,ref:function(m){r.wrapperNode=m}},H8(s,fr(fr({},this.props),{},{payload:hS(c,u,W8)})))}}],[{key:"getWithHeight",value:function(r,i){var s=fr(fr({},this.defaultProps),r.props),a=s.layout;return a==="vertical"&&re(r.props.height)?{height:r.props.height}:a==="horizontal"?{width:r.props.width||i}:null}}])}(E.PureComponent);Cc(ys,"displayName","Legend");Cc(ys,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});var My=Xo,V8=fh,G8=cn,Ny=My?My.isConcatSpreadable:void 0;function K8(e){return G8(e)||V8(e)||!!(Ny&&e&&e[Ny])}var X8=K8,Q8=rS,J8=X8;function yS(e,t,n,r,i){var s=-1,a=e.length;for(n||(n=J8),i||(i=[]);++s<a;){var o=e[s];t>0&&n(o)?t>1?yS(o,t-1,n,r,i):Q8(i,o):r||(i[i.length]=o)}return i}var bS=yS;function Y8(e){return function(t,n,r){for(var i=-1,s=Object(t),a=r(t),o=a.length;o--;){var l=a[e?o:++i];if(n(s[l],l,s)===!1)break}return t}}var Z8=Y8,eB=Z8,tB=eB(),nB=tB,rB=nB,iB=kc;function sB(e,t){return e&&rB(e,t,iB)}var xS=sB,aB=Jo;function oB(e,t){return function(n,r){if(n==null)return n;if(!aB(n))return e(n,r);for(var i=n.length,s=t?i:-1,a=Object(n);(t?s--:++s<i)&&r(a[s],s,a)!==!1;);return n}}var lB=oB,uB=xS,cB=lB,dB=cB(uB),yh=dB,pB=yh,mB=Jo;function fB(e,t){var n=-1,r=mB(e)?Array(e.length):[];return pB(e,function(i,s,a){r[++n]=t(i,s,a)}),r}var wS=fB;function hB(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}var gB=hB,Ry=ta;function vB(e,t){if(e!==t){var n=e!==void 0,r=e===null,i=e===e,s=Ry(e),a=t!==void 0,o=t===null,l=t===t,u=Ry(t);if(!o&&!u&&!s&&e>t||s&&a&&l&&!o&&!u||r&&a&&l||!n&&l||!i)return 1;if(!r&&!s&&!u&&e<t||u&&n&&i&&!r&&!s||o&&n&&i||!a&&i||!l)return-1}return 0}var yB=vB,bB=yB;function xB(e,t,n){for(var r=-1,i=e.criteria,s=t.criteria,a=i.length,o=n.length;++r<a;){var l=bB(i[r],s[r]);if(l){if(r>=o)return l;var u=n[r];return l*(u=="desc"?-1:1)}}return e.index-t.index}var wB=xB,Md=nh,qB=rh,SB=ei,AB=wS,EB=gB,_B=aS,kB=wB,CB=la,jB=cn;function PB(e,t,n){t.length?t=Md(t,function(s){return jB(s)?function(a){return qB(a,s.length===1?s[0]:s)}:s}):t=[CB];var r=-1;t=Md(t,_B(SB));var i=AB(e,function(s,a,o){var l=Md(t,function(u){return u(s)});return{criteria:l,index:++r,value:s}});return EB(i,function(s,a){return kB(s,a,n)})}var TB=PB;
333function IB(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var OB=IB,LB=OB,$y=Math.max;function MB(e,t,n){return t=$y(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,s=$y(r.length-t,0),a=Array(s);++i<s;)a[i]=r[t+i];i=-1;for(var o=Array(t+1);++i<t;)o[i]=r[i];return o[t]=n(a),LB(e,this,o)}}var NB=MB;function RB(e){return function(){return e}}var $B=RB,DB=Di,FB=function(){try{var e=DB(Object,"defineProperty");return e({},"",{}),e}catch{}}(),qS=FB,UB=$B,Dy=qS,zB=la,BB=Dy?function(e,t){return Dy(e,"toString",{configurable:!0,enumerable:!1,value:UB(t),writable:!0})}:zB,WB=BB,HB=800,VB=16,GB=Date.now;function KB(e){var t=0,n=0;return function(){var r=GB(),i=VB-(r-n);if(n=r,i>0){if(++t>=HB)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var XB=KB,QB=WB,JB=XB,YB=JB(QB),ZB=YB,e7=la,t7=NB,n7=ZB;function r7(e,t){return n7(t7(e,t,e7),e+"")}var i7=r7,s7=Yf,a7=Jo,o7=hh,l7=Zr;function u7(e,t,n){if(!l7(n))return!1;var r=typeof t;return(r=="number"?a7(n)&&o7(t,n.length):r=="string"&&t in n)?s7(n[t],e):!1}var jc=u7,c7=bS,d7=TB,p7=i7,Fy=jc,m7=p7(function(e,t){if(e==null)return[];var n=t.length;return n>1&&Fy(e,t[0],t[1])?t=[]:n>2&&Fy(t[0],t[1],t[2])&&(t=[t[0]]),d7(e,c7(t,1),[])}),f7=m7;const bh=De(f7);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 gm(){return gm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gm.apply(this,arguments)}function h7(e,t){return b7(e)||y7(e,t)||v7(e,t)||g7()}function g7(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
334In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function v7(e,t){if(e){if(typeof e=="string")return Uy(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Uy(e,t)}}function Uy(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function y7(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function b7(e){if(Array.isArray(e))return e}function zy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Nd(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?zy(Object(n),!0).forEach(function(r){x7(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function x7(e,t,n){return t=w7(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w7(e){var t=q7(e,"string");return oo(t)=="symbol"?t:t+""}function q7(e,t){if(oo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(oo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function S7(e){return Array.isArray(e)&&Ot(e[0])&&Ot(e[1])?e.join(" ~ "):e}var A7=function(t){var n=t.separator,r=n===void 0?" : ":n,i=t.contentStyle,s=i===void 0?{}:i,a=t.itemStyle,o=a===void 0?{}:a,l=t.labelStyle,u=l===void 0?{}:l,c=t.payload,p=t.formatter,f=t.itemSorter,m=t.wrapperClassName,g=t.labelClassName,h=t.label,v=t.labelFormatter,b=t.accessibilityLayer,w=b===void 0?!1:b,y=function(){if(c&&c.length){var T={padding:0,margin:0},M=(f?bh(c,f):c).map(function(L,N){if(L.type==="none")return null;var R=Nd({display:"block",paddingTop:4,paddingBottom:4,color:L.color||"#000"},o),$=L.formatter||p||S7,B=L.value,D=L.name,j=B,J=D;
vendor: 4,496 bytes, line 334
334if($&&j!=null&&J!=null){var z=$(B,D,L,N,c);if(Array.isArray(z)){var P=h7(z,2);j=P[0],J=P[1]}else j=z}return O.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(N),style:R},Ot(J)?O.createElement("span",{className:"recharts-tooltip-item-name"},J):null,Ot(J)?O.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,O.createElement("span",{className:"recharts-tooltip-item-value"},j),O.createElement("span",{className:"recharts-tooltip-item-unit"},L.unit||""))});return O.createElement("ul",{className:"recharts-tooltip-item-list",style:T},M)}return null},A=Nd({margin:0,padding:10,backgroundColor:"#fff",border:"1px solid #ccc",whiteSpace:"nowrap"},s),q=Nd({margin:0},u),x=!Re(h),_=x?h:"",I=Le("recharts-default-tooltip",m),S=Le("recharts-tooltip-label",g);x&&v&&c!==void 0&&c!==null&&(_=v(h,c));var k=w?{role:"status","aria-live":"assertive"}:{};return O.createElement("div",gm({className:I,style:A},k),O.createElement("p",{className:S,style:q},O.isValidElement(_)?_:"".concat(_)),y())};function lo(e){"@babel/helpers - typeof";return lo=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},lo(e)}function bl(e,t,n){return t=E7(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E7(e){var t=_7(e,"string");return lo(t)=="symbol"?t:t+""}function _7(e,t){if(lo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(lo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Sa="recharts-tooltip-wrapper",k7={visibility:"hidden"};function C7(e){var t=e.coordinate,n=e.translateX,r=e.translateY;return Le(Sa,bl(bl(bl(bl({},"".concat(Sa,"-right"),re(n)&&t&&re(t.x)&&n>=t.x),"".concat(Sa,"-left"),re(n)&&t&&re(t.x)&&n<t.x),"".concat(Sa,"-bottom"),re(r)&&t&&re(t.y)&&r>=t.y),"".concat(Sa,"-top"),re(r)&&t&&re(t.y)&&r<t.y))}function By(e){var t=e.allowEscapeViewBox,n=e.coordinate,r=e.key,i=e.offsetTopLeft,s=e.position,a=e.reverseDirection,o=e.tooltipDimension,l=e.viewBox,u=e.viewBoxDimension;if(s&&re(s[r]))return s[r];var c=n[r]-o-i,p=n[r]+i;if(t[r])return a[r]?c:p;if(a[r]){var f=c,m=l[r];return f<m?Math.max(p,l[r]):Math.max(c,l[r])}var g=p+o,h=l[r]+u;return g>h?Math.max(c,l[r]):Math.max(p,l[r])}function j7(e){var t=e.translateX,n=e.translateY,r=e.useTranslate3d;return{transform:r?"translate3d(".concat(t,"px, ").concat(n,"px, 0)"):"translate(".concat(t,"px, ").concat(n,"px)")}}function P7(e){var t=e.allowEscapeViewBox,n=e.coordinate,r=e.offsetTopLeft,i=e.position,s=e.reverseDirection,a=e.tooltipBox,o=e.useTranslate3d,l=e.viewBox,u,c,p;return a.height>0&&a.width>0&&n?(c=By({allowEscapeViewBox:t,coordinate:n,key:"x",offsetTopLeft:r,position:i,reverseDirection:s,tooltipDimension:a.width,viewBox:l,viewBoxDimension:l.width}),p=By({allowEscapeViewBox:t,coordinate:n,key:"y",offsetTopLeft:r,position:i,reverseDirection:s,tooltipDimension:a.height,viewBox:l,viewBoxDimension:l.height}),u=j7({translateX:c,translateY:p,useTranslate3d:o})):u=k7,{cssProperties:u,cssClasses:C7({translateX:c,translateY:p,coordinate:n})}}function Is(e){"@babel/helpers - typeof";return Is=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},Is(e)}function Wy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Hy(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Wy(Object(n),!0).forEach(function(r){ym(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function T7(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function I7(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,AS(r.key),r)}}function O7(e,t,n){return t&&I7(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}
334function L7(e,t,n){return t=cu(t),M7(e,SS()?Reflect.construct(t,n||[],cu(e).constructor):t.apply(e,n))}function M7(e,t){if(t&&(Is(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return N7(e)}function N7(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function SS(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(SS=function(){return!!e})()}function cu(e){return cu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},cu(e)}function R7(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&vm(e,t)}function vm(e,t){return vm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},vm(e,t)}function ym(e,t,n){return t=AS(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function AS(e){var t=$7(e,"string");return Is(t)=="symbol"?t:t+""}function $7(e,t){if(Is(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Is(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Vy=1,D7=function(e){function t(){var n;T7(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=L7(this,t,[].concat(i)),ym(n,"state",{dismissed:!1,dismissedAtCoordinate:{x:0,y:0},lastBoundingBox:{width:-1,height:-1}}),ym(n,"handleKeyDown",function(a){if(a.key==="Escape"){var o,l,u,c;n.setState({dismissed:!0,dismissedAtCoordinate:{x:(o=(l=n.props.coordinate)===null||l===void 0?void 0:l.x)!==null&&o!==void 0?o:0,y:(u=(c=n.props.coordinate)===null||c===void 0?void 0:c.y)!==null&&u!==void 0?u:0}})}}),n}return R7(t,e),O7(t,[{key:"updateBBox",value:function(){if(this.wrapperNode&&this.wrapperNode.getBoundingClientRect){var r=this.wrapperNode.getBoundingClientRect();(Math.abs(r.width-this.state.lastBoundingBox.width)>Vy||Math.abs(r.height-this.state.lastBoundingBox.height)>Vy)&&this.setState({lastBoundingBox:{width:r.width,height:r.height}})}else(this.state.lastBoundingBox.width!==-1||this.state.lastBoundingBox.height!==-1)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var r,i;this.props.active&&this.updateBBox(),this.state.dismissed&&(((r=this.props.coordinate)===null||r===void 0?void 0:r.x)!==this.state.dismissedAtCoordinate.x||((i=this.props.coordinate)===null||i===void 0?void 0:i.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var r=this,i=this.props,s=i.active,a=i.allowEscapeViewBox,o=i.animationDuration,l=i.animationEasing,u=i.children,c=i.coordinate,p=i.hasPayload,f=i.isAnimationActive,m=i.offset,g=i.position,h=i.reverseDirection,v=i.useTranslate3d,b=i.viewBox,w=i.wrapperStyle,y=P7({allowEscapeViewBox:a,coordinate:c,offsetTopLeft:m,position:g,reverseDirection:h,tooltipBox:this.state.lastBoundingBox,useTranslate3d:v,viewBox:b}),A=y.cssClasses,q=y.cssProperties,x=Hy(Hy({transition:f&&s?"transform ".concat(o,"ms ").concat(l):void 0},q),{},{pointerEvents:"none",visibility:!this.state.dismissed&&s&&p?"visible":"hidden",position:"absolute",top:0,left:0},w);return O.createElement("div",{tabIndex:-1,className:A,style:x,ref:function(I){r.wrapperNode=I}},u)}}])}(E.PureComponent),F7=function(){return!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout)},Xr={isSsr:F7(),get:function(t){return Xr[t]},set:function(t,n){if(typeof t=="string")Xr[t]=n;else{var r=Object.keys(t);r&&r.length&&r.forEach(function(i){Xr[i]=t[i]})}}};function Os(e){"@babel/helpers - typeof";return Os=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},Os(e)}function Gy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Ky(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
334t%2?Gy(Object(n),!0).forEach(function(r){xh(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function U7(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function z7(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_S(r.key),r)}}function B7(e,t,n){return t&&z7(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function W7(e,t,n){return t=du(t),H7(e,ES()?Reflect.construct(t,n||[],du(e).constructor):t.apply(e,n))}function H7(e,t){if(t&&(Os(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return V7(e)}function V7(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ES(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ES=function(){return!!e})()}function du(e){return du=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},du(e)}function G7(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&bm(e,t)}function bm(e,t){return bm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},bm(e,t)}function xh(e,t,n){return t=_S(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _S(e){var t=K7(e,"string");return Os(t)=="symbol"?t:t+""}function K7(e,t){if(Os(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Os(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function X7(e){return e.dataKey}function Q7(e,t){return O.isValidElement(e)?O.cloneElement(e,t):typeof e=="function"?O.createElement(e,t):O.createElement(A7,t)}var Yn=function(e){function t(){return U7(this,t),W7(this,t,arguments)}return G7(t,e),B7(t,[{key:"render",value:function(){var r=this,i=this.props,s=i.active,a=i.allowEscapeViewBox,o=i.animationDuration,l=i.animationEasing,u=i.content,c=i.coordinate,p=i.filterNull,f=i.isAnimationActive,m=i.offset,g=i.payload,h=i.payloadUniqBy,v=i.position,b=i.reverseDirection,w=i.useTranslate3d,y=i.viewBox,A=i.wrapperStyle,q=g??[];p&&q.length&&(q=hS(g.filter(function(_){return _.value!=null&&(_.hide!==!0||r.props.includeHidden)}),h,X7));var x=q.length>0;return O.createElement(D7,{allowEscapeViewBox:a,animationDuration:o,animationEasing:l,isAnimationActive:f,active:s,coordinate:c,hasPayload:x,offset:m,position:v,reverseDirection:b,useTranslate3d:w,viewBox:y,wrapperStyle:A},Q7(u,Ky(Ky({},this.props),{},{payload:q})))}}])}(E.PureComponent);xh(Yn,"displayName","Tooltip");xh(Yn,"defaultProps",{accessibilityLayer:!1,allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:"ease",contentStyle:{},coordinate:{x:0,y:0},cursor:!0,cursorStyle:{},filterNull:!0,isAnimationActive:!Xr.isSsr,itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:" : ",trigger:"hover",useTranslate3d:!1,viewBox:{x:0,y:0,height:0,width:0},wrapperStyle:{}});var J7=dr,Y7=function(){return J7.Date.now()},Z7=Y7,e9=/\s/;function t9(e){for(var t=e.length;t--&&e9.test(e.charAt(t)););return t}var n9=t9,r9=n9,i9=/^\s+/;function s9(e){return e&&e.slice(0,r9(e)+1).replace(i9,"")}var a9=s9,o9=a9,Xy=Zr,l9=ta,Qy=NaN,u9=/^[-+]0x[0-9a-f]+$/i,c9=/^0b[01]+$/i,d9=/^0o[0-7]+$/i,p9=parseInt;function m9(e){if(typeof e=="number")return e;if(l9(e))return Qy;if(Xy(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Xy(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=o9(e);var n=c9.test(e);return n||d9.test(e)?p9(e.slice(2),n?2:8):u9.test(e)?Qy:+e}var kS=m9,f9=Zr,Rd=Z7,Jy=kS,h9="Expected a function",g9=Math.max,v9=Math.min;function y9(e,t,n){var r,i,s,a,o,l,u=0,c=!1,p=!1,f=!0;if(typeof e!="function")throw new TypeError(h9);t=Jy(t)||0,f9(n)&&(c=!!n.leading,p="maxWait"in n,s=p?g9(Jy(n.maxWait)||0,t):s,f="trailing"in n?!!n.trailing:f);function m(x){var _=r,I=i;return r=i=void 0,u=x,a=e.apply(I,_),a}function g(x){return u=x,o=setTimeout(b,t),c?m(x):a}function h(x){var _=x-l,I=x-u,S=t-_;return p?v9(S,s-I):S}function v(x){var _=x-l,I=x-u;return l===void 0||_>=t||_<0||p&&I>=s}function b(){var x=Rd();if(v(x))return w(x);o=setTimeout(b,h(x))}function w(x){return o=void 0,f&&r?m(x):(r=i=void 0,a)}function y(){o!==void 0&&clearTimeout(o),u=0,r=l=i=o=void 0}function A(){return o===void 0?a:w(Rd())}function q(){var x=Rd(),_=v(x);if(r=arguments,i=this,l=x,_){if(o===void 0)return g(l);if(p)return clearTimeout(o),o=setTimeout(b,t),m(l)}return o===void 0&&(o=setTimeout(b,t)),a}return q.cancel=y,q.flush=A,q}var b9=y9,x9=b9,w9=Zr,q9="Expected a function";function S9(e,t,n){var r=!0,i=!0;if(typeof e!="function")throw new TypeError(q9);return w9(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),x9(e,t,{leading:r,maxWait:t,trailing:i})}var A9=S9;const CS=De(A9);function uo(e){"@babel/helpers - typeof";return uo=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},uo(e)}function Yy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function xl(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
vendor: 14,389 bytes, lines 334-341
334t%2?Yy(Object(n),!0).forEach(function(r){E9(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yy(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function E9(e,t,n){return t=_9(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _9(e){var t=k9(e,"string");return uo(t)=="symbol"?t:t+""}function k9(e,t){if(uo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(uo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function C9(e,t){return I9(e)||T9(e,t)||P9(e,t)||j9()}function j9(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
335In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function P9(e,t){if(e){if(typeof e=="string")return Zy(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Zy(e,t)}}function Zy(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function T9(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function I9(e){if(Array.isArray(e))return e}var O9=E.forwardRef(function(e,t){var n=e.aspect,r=e.initialDimension,i=r===void 0?{width:-1,height:-1}:r,s=e.width,a=s===void 0?"100%":s,o=e.height,l=o===void 0?"100%":o,u=e.minWidth,c=u===void 0?0:u,p=e.minHeight,f=e.maxHeight,m=e.children,g=e.debounce,h=g===void 0?0:g,v=e.id,b=e.className,w=e.onResize,y=e.style,A=y===void 0?{}:y,q=E.useRef(null),x=E.useRef();x.current=w,E.useImperativeHandle(t,function(){return Object.defineProperty(q.current,"current",{get:function(){return console.warn("The usage of ref.current.current is deprecated and will no longer be supported."),q.current},configurable:!0})});var _=E.useState({containerWidth:i.width,containerHeight:i.height}),I=C9(_,2),S=I[0],k=I[1],C=E.useCallback(function(M,L){k(function(N){var R=Math.round(M),$=Math.round(L);return N.containerWidth===R&&N.containerHeight===$?N:{containerWidth:R,containerHeight:$}})},[]);E.useEffect(function(){var M=function(D){var j,J=D[0].contentRect,z=J.width,P=J.height;C(z,P),(j=x.current)===null||j===void 0||j.call(x,z,P)};h>0&&(M=CS(M,h,{trailing:!0,leading:!1}));var L=new ResizeObserver(M),N=q.current.getBoundingClientRect(),R=N.width,$=N.height;return C(R,$),L.observe(q.current),function(){L.disconnect()}},[C,h]);var T=E.useMemo(function(){var M=S.containerWidth,L=S.containerHeight;if(M<0||L<0)return null;Pi(bi(a)||bi(l),`The width(%s) and height(%s) are both fixed numbers,
336       maybe you don't need to use a ResponsiveContainer.`,a,l),Pi(!n||n>0,"The aspect(%s) must be greater than zero.",n);var N=bi(a)?M:a,R=bi(l)?L:l;n&&n>0&&(N?R=N/n:R&&(N=R*n),f&&R>f&&(R=f)),Pi(N>0||R>0,`The width(%s) and height(%s) of chart should be greater than 0,
337       please check the style of container, or the props width(%s) and height(%s),
338       or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the
339       height and width.`,N,R,a,l,c,p,n);var $=!Array.isArray(m)&&Sr(m.type).endsWith("Chart");return O.Children.map(m,function(B){return O.isValidElement(B)?E.cloneElement(B,xl({width:N,height:R},$?{style:xl({height:"100%",width:"100%",maxHeight:R,maxWidth:N},B.props.style)}:{})):B})},[n,m,l,f,p,c,S,a]);return O.createElement("div",{id:v?"".concat(v):void 0,className:Le("recharts-responsive-container",b),style:xl(xl({},A),{},{width:a,height:l,minWidth:c,minHeight:p,maxHeight:f}),ref:q},T)}),wh=function(t){return null};wh.displayName="Cell";function co(e){"@babel/helpers - typeof";return co=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},co(e)}function eb(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function xm(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?eb(Object(n),!0).forEach(function(r){L9(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):eb(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function L9(e,t,n){return t=M9(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function M9(e){var t=N9(e,"string");return co(t)=="symbol"?t:t+""}function N9(e,t){if(co(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(co(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var es={widthCache:{},cacheCount:0},R9=2e3,$9={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},tb="recharts_measurement_span";function D9(e){var t=xm({},e);return Object.keys(t).forEach(function(n){t[n]||delete t[n]}),t}var Va=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Xr.isSsr)return{width:0,height:0};var r=D9(n),i=JSON.stringify({text:t,copyStyle:r});if(es.widthCache[i])return es.widthCache[i];try{var s=document.getElementById(tb);s||(s=document.createElement("span"),s.setAttribute("id",tb),s.setAttribute("aria-hidden","true"),document.body.appendChild(s));var a=xm(xm({},$9),r);Object.assign(s.style,a),s.textContent="".concat(t);var o=s.getBoundingClientRect(),l={width:o.width,height:o.height};return es.widthCache[i]=l,++es.cacheCount>R9&&(es.cacheCount=0,es.widthCache={}),l}catch{return{width:0,height:0}}},F9=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}};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 pu(e,t){return W9(e)||B9(e,t)||z9(e,t)||U9()}function U9(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
340In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function z9(e,t){if(e){if(typeof e=="string")return nb(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return nb(e,t)}}function nb(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B9(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function W9(e){if(Array.isArray(e))return e}function H9(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rb(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,G9(r.key),r)}}function V9(e,t,n){return t&&rb(e.prototype,t),n&&rb(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function G9(e){var t=K9(e,"string");return po(t)=="symbol"?t:t+""}function K9(e,t){if(po(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(po(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var ib=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,sb=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,X9=/^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/,Q9=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,jS={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},J9=Object.keys(jS),ls="NaN";function Y9(e,t){return e*jS[t]}var wl=function(){function e(t,n){H9(this,e),this.num=t,this.unit=n,this.num=t,this.unit=n,Number.isNaN(t)&&(this.unit=""),n!==""&&!X9.test(n)&&(this.num=NaN,this.unit=""),J9.includes(n)&&(this.num=Y9(t,n),this.unit="px")}return V9(e,[{key:"add",value:function(n){return this.unit!==n.unit?new e(NaN,""):new e(this.num+n.num,this.unit)}},{key:"subtract",value:function(n){return this.unit!==n.unit?new e(NaN,""):new e(this.num-n.num,this.unit)}},{key:"multiply",value:function(n){return this.unit!==""&&n.unit!==""&&this.unit!==n.unit?new e(NaN,""):new e(this.num*n.num,this.unit||n.unit)}},{key:"divide",value:function(n){return this.unit!==""&&n.unit!==""&&this.unit!==n.unit?new e(NaN,""):new e(this.num/n.num,this.unit||n.unit)}},{key:"toString",value:function(){return"".concat(this.num).concat(this.unit)}},{key:"isNaN",value:function(){return Number.isNaN(this.num)}}],[{key:"parse",value:function(n){var r,i=(r=Q9.exec(n))!==null&&r!==void 0?r:[],s=pu(i,3),a=s[1],o=s[2];return new e(parseFloat(a),o??"")}}])}();function PS(e){if(e.includes(ls))return ls;for(var t=e;t.includes("*")||t.includes("/");){var n,r=(n=ib.exec(t))!==null&&n!==void 0?n:[],i=pu(r,4),s=i[1],a=i[2],o=i[3],l=wl.parse(s??""),u=wl.parse(o??""),c=a==="*"?l.multiply(u):l.divide(u);if(c.isNaN())return ls;t=t.replace(ib,c.toString())}for(;t.includes("+")||/.-\d+(?:\.\d+)?/.test(t);){var p,f=(p=sb.exec(t))!==null&&p!==void 0?p:[],m=pu(f,4),g=m[1],h=m[2],v=m[3],b=wl.parse(g??""),w=wl.parse(v??""),y=h==="+"?b.add(w):b.subtract(w);if(y.isNaN())return ls;t=t.replace(sb,y.toString())}return t}var ab=/\(([^()]*)\)/;function Z9(e){for(var t=e;t.includes("(");){var n=ab.exec(t),r=pu(n,2),i=r[1];t=t.replace(ab,PS(i))}return t}function eW(e){var t=e.replace(/\s+/g,"");return t=Z9(t),t=PS(t),t}function tW(e){try{return eW(e)}catch{return ls}}function $d(e){var t=tW(e.slice(5,-1));return t===ls?"":t}var nW=["x","y","lineHeight","capHeight","scaleToFit","textAnchor","verticalAnchor","fill"],rW=["dx","dy","angle","className","breakAll"];function wm(){return wm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wm.apply(this,arguments)}function ob(e,t){if(e==null)return{};var n=iW(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function iW(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function lb(e,t){return lW(e)||oW(e,t)||aW(e,t)||sW()}function sW(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
341In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function aW(e,t){if(e){if(typeof e=="string")return ub(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ub(e,t)}}function ub(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function oW(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function lW(e){if(Array.isArray(e))return e}var TS=/[ \f\n\r\t\v\u2028\u2029]+/,IS=function(t){var n=t.children,r=t.breakAll,i=t.style;try{var s=[];Re(n)||(r?s=n.toString().split(""):s=n.toString().split(TS));var a=s.map(function(l){return{word:l,width:Va(l,i).width}}),o=r?0:Va(" ",i).width;return{wordsWithComputedWidth:a,spaceWidth:o}}catch{return null}},uW=function(t,n,r,i,s){var a=t.maxLines,o=t.children,l=t.style,u=t.breakAll,c=re(a),p=o,f=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return N.reduce(function(R,$){var B=$.word,D=$.width,j=R[R.length-1];if(j&&(i==null||s||j.width+D+r<Number(i)))j.words.push(B),j.width+=D+r;else{var J={words:[B],width:D};R.push(J)}return R},[])},m=f(n),g=function(N){return N.reduce(function(R,$){return R.width>$.width?R:$})};if(!c)return m;for(var h="…",v=function(N){var R=p.slice(0,N),$=IS({breakAll:u,style:l,children:R+h}).wordsWithComputedWidth,B=f($),D=B.length>a||g(B).width>Number(i);return[D,B]},b=0,w=p.length-1,y=0,A;b<=w&&y<=p.length-1;){var q=Math.floor((b+w)/2),x=q-1,_=v(x),I=lb(_,2),S=I[0],k=I[1],C=v(q),T=lb(C,1),M=T[0];if(!S&&!M&&(b=q+1),S&&M&&(w=q-1),!S&&M){A=k;break}y++}return A||m},cb=function(t){var n=Re(t)?[]:t.toString().split(TS);return[{words:n}]},cW=function(t){var n=t.width,r=t.scaleToFit,i=t.children,s=t.style,a=t.breakAll,o=t.maxLines;if((n||r)&&!Xr.isSsr){var l,u,c=IS({breakAll:a,children:i,style:s});if(c){var p=c.wordsWithComputedWidth,f=c.spaceWidth;l=p,u=f}else return cb(i);return uW({breakAll:a,children:i,maxLines:o,style:s},l,u,n,r)}return cb(i)},db="#808080",mu=function(t){var n=t.x,r=n===void 0?0:n,i=t.y,s=i===void 0?0:i,a=t.lineHeight,o=a===void 0?"1em":a,l=t.capHeight,u=l===void 0?"0.71em":l,c=t.scaleToFit,p=c===void 0?!1:c,f=t.textAnchor,m=f===void 0?"start":f,g=t.verticalAnchor,h=g===void 0?"end":g,v=t.fill,b=v===void 0?db:v,w=ob(t,nW),y=E.useMemo(function(){return cW({breakAll:w.breakAll,children:w.
341children,maxLines:w.maxLines,scaleToFit:p,style:w.style,width:w.width})},[w.breakAll,w.children,w.maxLines,p,w.style,w.width]),A=w.dx,q=w.dy,x=w.angle,_=w.className,I=w.breakAll,S=ob(w,rW);if(!Ot(r)||!Ot(s))return null;var k=r+(re(A)?A:0),C=s+(re(q)?q:0),T;switch(h){case"start":T=$d("calc(".concat(u,")"));break;case"middle":T=$d("calc(".concat((y.length-1)/2," * -").concat(o," + (").concat(u," / 2))"));break;default:T=$d("calc(".concat(y.length-1," * -").concat(o,")"));break}var M=[];if(p){var L=y[0].width,N=w.width;M.push("scale(".concat((re(N)?N/L:1)/L,")"))}return x&&M.push("rotate(".concat(x,", ").concat(k,", ").concat(C,")")),M.length&&(S.transform=M.join(" ")),O.createElement("text",wm({},Ge(S,!0),{x:k,y:C,className:Le("recharts-text",_),textAnchor:m,fill:b.includes("url")?db:b}),y.map(function(R,$){var B=R.words.join(I?"":" ");return O.createElement("tspan",{x:k,dy:$===0?T:o,key:"".concat(B,"-").concat($)},B)}))};function Qr(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function dW(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function qh(e){let t,n,r;e.length!==2?(t=Qr,n=(o,l)=>Qr(e(o),l),r=(o,l)=>e(o)-l):(t=e===Qr||e===dW?e:pW,n=e,r=e);function i(o,l,u=0,c=o.length){if(u<c){if(t(l,l)!==0)return c;do{const p=u+c>>>1;n(o[p],l)<0?u=p+1:c=p}while(u<c)}return u}function s(o,l,u=0,c=o.length){if(u<c){if(t(l,l)!==0)return c;do{const p=u+c>>>1;n(o[p],l)<=0?u=p+1:c=p}while(u<c)}return u}function a(o,l,u=0,c=o.length){const p=i(o,l,u,c-1);return p>u&&r(o[p-1],l)>-r(o[p],l)?p-1:p}return{left:i,center:a,right:s}}function pW(){return 0}function OS(e){return e===null?NaN:+e}function*mW(e,t){for(let n of e)n!=null&&(n=+n)>=n&&(yield n)}const fW=qh(Qr),Yo=fW.right;qh(OS).center;class pb extends Map{constructor(t,n=vW){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(mb(this,t))}has(t){return super.has(mb(this,t))}set(t,n){return super.set(hW(this,t),n)}delete(t){return super.delete(gW(this,t))}}function mb({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function hW({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function gW({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function vW(e){return e!==null&&typeof e=="object"?e.valueOf():e}function yW(e=Qr){if(e===Qr)return LS;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,n)=>{const r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function LS(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}const bW=Math.sqrt(50),xW=Math.sqrt(10),wW=Math.sqrt(2);function fu(e,t,n){const r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),a=s>=bW?10:s>=xW?5:s>=wW?2:1;let o,l,u;return i<0?(u=Math.pow(10,-i)/a,o=Math.round(e*u),l=Math.round(t*u),o/u<e&&++o,l/u>t&&--l,u=-u):(u=Math.pow(10,i)*a,o=Math.round(e/u),l=Math.round(t/u),o*u<e&&++o,l*u>t&&--l),l<o&&.5<=n&&n<2?fu(e,t,n*2):[o,l,u]}function qm(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];const r=t<e,[i,s,a]=r?fu(t,e,n):fu(e,t,n);if(!(s>=i))return[];const o=s-i+1,l=new Array(o);if(r)if(a<0)for(let u=0;u<o;++u)l[u]=(s-u)/-a;else for(let u=0;u<o;++u)l[u]=(s-u)*a;else if(a<0)for(let u=0;u<o;++u)l[u]=(i+u)/-a;else for(let u=0;u<o;++u)l[u]=(i+u)*a;return l}function Sm(e,t,n){return t=+t,e=+e,n=+n,fu(e,t,n)[2]}function Am(e,t,n){t=+t,e=+e,n=+n;const r=t<e,i=r?Sm(t,e,n):Sm(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function fb(e,t){let n;for(const r of e)r!=null&&(n<r||n===void 0&&r>=r)&&(n=r);return n}function hb(e,t){let n;for(const r of e)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);return n}function MS(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?LS:yW(i);r>n;){if(r-n>600){const l=r-n+1,u=t-n+1,c=Math.log(l),p=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*p*(l-p)/l)*(u-l/2<0?-1:1),m=Math.max(n,Math.floor(t-u*p/l+f)),g=Math.min(r,Math.floor(t+(l-u)*p/l+f));MS(e,t,m,g,i)}const s=e[t];let a=n,o=r;for(Aa(e,n,t),i(e[r],s)>0&&Aa(e,n,r);a<o;){for(Aa(e,a,o),++a,--o;i(e[a],s)<0;)++a;for(;i(e[o],s)>0;)--o}i(e[n],s)===0?Aa(e,n,o):(++o,Aa(e,o,r)),o<=t&&(n=o+1),t<=o&&(r=o-1)}return e}function Aa(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function qW(e,t,n){if(e=Float64Array.from(mW(e)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return hb(e);if(t>=1)return fb(e);var r,i=(r-1)*t,s=Math.floor(i),a=fb(MS(e,s).subarray(0,s+1)),o=hb(e.subarray(s+1));return a+(o-a)*(i-s)}}function SW(e,t,n=OS){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,s=Math.floor(i),a=+n(e[s],s,e),o=+n(e[s+1],s+1,e);return a+(o-a)*(i-s)}}function AW(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,s=new Array(i);++r<i;)s[r]=e+r*n;return s}function In(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Tr(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}
vendor: 8,984 bytes, line 341
341const Em=Symbol("implicit");function Sh(){var e=new pb,t=[],n=[],r=Em;function i(s){let a=e.get(s);if(a===void 0){if(r!==Em)return r;e.set(s,a=t.push(s)-1)}return n[a%n.length]}return i.domain=function(s){if(!arguments.length)return t.slice();t=[],e=new pb;for(const a of s)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(s){return arguments.length?(n=Array.from(s),i):n.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return Sh(t,n).unknown(r)},In.apply(i,arguments),i}function mo(){var e=Sh().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,s,a,o=!1,l=0,u=0,c=.5;delete e.unknown;function p(){var f=t().length,m=i<r,g=m?i:r,h=m?r:i;s=(h-g)/Math.max(1,f-l+u*2),o&&(s=Math.floor(s)),g+=(h-g-s*(f-l))*c,a=s*(1-l),o&&(g=Math.round(g),a=Math.round(a));var v=AW(f).map(function(b){return g+s*b});return n(m?v.reverse():v)}return e.domain=function(f){return arguments.length?(t(f),p()):t()},e.range=function(f){return arguments.length?([r,i]=f,r=+r,i=+i,p()):[r,i]},e.rangeRound=function(f){return[r,i]=f,r=+r,i=+i,o=!0,p()},e.bandwidth=function(){return a},e.step=function(){return s},e.round=function(f){return arguments.length?(o=!!f,p()):o},e.padding=function(f){return arguments.length?(l=Math.min(1,u=+f),p()):l},e.paddingInner=function(f){return arguments.length?(l=Math.min(1,f),p()):l},e.paddingOuter=function(f){return arguments.length?(u=+f,p()):u},e.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),p()):c},e.copy=function(){return mo(t(),[r,i]).round(o).paddingInner(l).paddingOuter(u).align(c)},In.apply(p(),arguments)}function NS(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return NS(t())},e}function Ga(){return NS(mo.apply(null,arguments).paddingInner(1))}function Ah(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function RS(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Zo(){}var fo=.7,hu=1/fo,bs="\\s*([+-]?\\d+)\\s*",ho="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",EW=/^#([0-9a-f]{3,8})$/,_W=new RegExp(`^rgb\\(${bs},${bs},${bs}\\)$`),kW=new RegExp(`^rgb\\(${ar},${ar},${ar}\\)$`),CW=new RegExp(`^rgba\\(${bs},${bs},${bs},${ho}\\)$`),jW=new RegExp(`^rgba\\(${ar},${ar},${ar},${ho}\\)$`),PW=new RegExp(`^hsl\\(${ho},${ar},${ar}\\)$`),TW=new RegExp(`^hsla\\(${ho},${ar},${ar},${ho}\\)$`),gb={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Ah(Zo,go,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:vb,formatHex:vb,formatHex8:IW,formatHsl:OW,formatRgb:yb,toString:yb});function vb(){return this.rgb().formatHex()}function IW(){return this.rgb().formatHex8()}function OW(){return $S(this).formatHsl()}function yb(){return this.rgb().formatRgb()}function go(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=EW.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?bb(t):n===3?new on(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?ql(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?ql(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=_W.exec(e))?new on(t[1],t[2],t[3],1):(t=kW.exec(e))?new on(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=CW.exec(e))?ql(t[1],t[2],t[3],t[4]):(t=jW.exec(e))?ql(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=PW.exec(e))?qb(t[1],t[2]/100,t[3]/100,1):(t=TW.exec(e))?qb(t[1],t[2]/100,t[3]/100,t[4]):gb.hasOwnProperty(e)?bb(gb[e]):e==="transparent"?new on(NaN,NaN,NaN,0):null}function bb(e){return new on(e>>16&255,e>>8&255,e&255,1)}function ql(e,t,n,r){return r<=0&&(e=t=n=NaN),new on(e,t,n,r)}function LW(e){return e instanceof Zo||(e=go(e)),e?(e=e.rgb(),new on(e.r,e.g,e.b,e.opacity)):new on}function _m(e,t,n,r){return arguments.length===1?LW(e):new on(e,t,n,r??1)}function on(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Ah(on,_m,RS(Zo,{brighter(e){return e=e==null?hu:Math.pow(hu,e),new on(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new on(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new on(Ti(this.r),Ti(this.g),Ti(this.b),gu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:xb,formatHex:xb,formatHex8:MW,formatRgb:wb,toString:wb}));function xb(){return`#${xi(this.r)}${xi(this.g)}${xi(this.b)}`}function MW(){return`#${xi(this.r)}${xi(this.g)}${xi(this.b)}${xi((isNaN(this.opacity)?1:this.opacity)*255)}`}function wb(){const e=gu(this.opacity);return`${e===1?"rgb(":"rgba("}${Ti(this.r)}, ${Ti(this.g)}, ${Ti(this.b)}${e===1?")":`, ${e})`}`}function gu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ti(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function xi(e){return e=Ti(e),(e<16?"0":"")+e.toString(16)}function qb(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new zn(e,t,n,r)}function $S(e){if(e instanceof zn)return new zn(e.h,e.s,e.l,e.opacity);if(e instanceof Zo||(e=go(e)),!e)return new zn;if(e instanceof zn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),s=Math.max(t,n,r),a=NaN,o=s-i,l=(s+i)/2;return o?(t===s?a=(n-r)/o+(n<r)*6:n===s?a=(r-t)/o+2:a=(t-n)/o+4,o/=l<.5?s+i:2-s-i,a*=60):o=l>0&&l<1?0:a,new zn(a,o,l,e.opacity)}function NW(e,t,n,r){return arguments.length===1?$S(e):new zn(e,t,n,r??1)}function zn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Ah(zn,NW,RS(Zo,{brighter(e){return e=e==null?hu:Math.pow(hu,e),new zn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new zn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new on(Dd(e>=240?e-240:e+120,i,r),Dd(e,i,r),Dd(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new zn(Sb(this.h),Sl(this.s),Sl(this.l),gu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=gu(this.opacity);return`${e===1?"hsl(":"hsla("}${Sb(this.h)}, ${Sl(this.s)*100}%, ${Sl(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Sb(e){return e=(e||0)%360,e<0?e+360:e}function Sl(e){return Math.max(0,Math.min(1,e||0))}
vendor: 4,187 bytes, line 341
341function Dd(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Eh=e=>()=>e;function RW(e,t){return function(n){return e+n*t}}function $W(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function DW(e){return(e=+e)==1?DS:function(t,n){return n-t?$W(t,n,e):Eh(isNaN(t)?n:t)}}function DS(e,t){var n=t-e;return n?RW(e,n):Eh(isNaN(e)?t:e)}const Ab=function e(t){var n=DW(t);function r(i,s){var a=n((i=_m(i)).r,(s=_m(s)).r),o=n(i.g,s.g),l=n(i.b,s.b),u=DS(i.opacity,s.opacity);return function(c){return i.r=a(c),i.g=o(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function FW(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(s){for(i=0;i<n;++i)r[i]=e[i]*(1-s)+t[i]*s;return r}}function UW(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function zW(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=new Array(r),s=new Array(n),a;for(a=0;a<r;++a)i[a]=ua(e[a],t[a]);for(;a<n;++a)s[a]=t[a];return function(o){for(a=0;a<r;++a)s[a]=i[a](o);return s}}function BW(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function vu(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function WW(e,t){var n={},r={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?n[i]=ua(e[i],t[i]):r[i]=t[i];return function(s){for(i in n)r[i]=n[i](s);return r}}var km=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Fd=new RegExp(km.source,"g");function HW(e){return function(){return e}}function VW(e){return function(t){return e(t)+""}}function GW(e,t){var n=km.lastIndex=Fd.lastIndex=0,r,i,s,a=-1,o=[],l=[];for(e=e+"",t=t+"";(r=km.exec(e))&&(i=Fd.exec(t));)(s=i.index)>n&&(s=t.slice(n,s),o[a]?o[a]+=s:o[++a]=s),(r=r[0])===(i=i[0])?o[a]?o[a]+=i:o[++a]=i:(o[++a]=null,l.push({i:a,x:vu(r,i)})),n=Fd.lastIndex;return n<t.length&&(s=t.slice(n),o[a]?o[a]+=s:o[++a]=s),o.length<2?l[0]?VW(l[0].x):HW(t):(t=l.length,function(u){for(var c=0,p;c<t;++c)o[(p=l[c]).i]=p.x(u);return o.join("")})}function ua(e,t){var n=typeof t,r;return t==null||n==="boolean"?Eh(t):(n==="number"?vu:n==="string"?(r=go(t))?(t=r,Ab):GW:t instanceof go?Ab:t instanceof Date?BW:UW(t)?FW:Array.isArray(t)?zW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?WW:vu)(e,t)}function _h(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function KW(e,t){t===void 0&&(t=e,e=ua);for(var n=0,r=t.length-1,i=t[0],s=new Array(r<0?0:r);n<r;)s[n]=e(i,i=t[++n]);return function(a){var o=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return s[o](a-o)}}function XW(e){return function(){return e}}function yu(e){return+e}var Eb=[0,1];function rn(e){return e}function Cm(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:XW(isNaN(t)?NaN:.5)}function QW(e,t){var n;return e>t&&(n=e,e=t,t=n),function(r){return Math.max(e,Math.min(t,r))}}function JW(e,t,n){var r=e[0],i=e[1],s=t[0],a=t[1];return i<r?(r=Cm(i,r),s=n(a,s)):(r=Cm(r,i),s=n(s,a)),function(o){return s(r(o))}}function YW(e,t,n){var r=Math.min(e.length,t.length)-1,i=new Array(r),s=new Array(r),a=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++a<r;)i[a]=Cm(e[a],e[a+1]),s[a]=n(t[a],t[a+1]);return function(o){var l=Yo(e,o,1,r)-1;return s[l](i[l](o))}}function el(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Pc(){var e=Eb,t=Eb,n=ua,r,i,s,a=rn,o,l,u;function c(){var f=Math.min(e.length,t.length);return a!==rn&&(a=QW(e[0],e[f-1])),o=f>2?YW:JW,l=u=null,p}function p(f){return f==null||isNaN(f=+f)?s:(l||(l=o(e.map(r),t,n)))(r(a(f)))}return p.invert=function(f){return a(i((u||(u=o(t,e.map(r),vu)))(f)))},p.domain=function(f){return arguments.length?(e=Array.from(f,yu),c()):e.slice()},p.range=function(f){return arguments.length?(t=Array.from(f),c()):t.slice()},p.rangeRound=function(f){return t=Array.from(f),n=_h,c()},p.clamp=function(f){return arguments.length?(a=f?!0:rn,c()):a!==rn},p.interpolate=function(f){return arguments.length?(n=f,c()):n},p.unknown=function(f){return arguments.length?(s=f,p):s},function(f,m){return r=f,i=m,c()}}function kh(){return Pc()(rn,rn)}
vendor: 7,874 bytes, line 341
341function ZW(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function bu(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Ls(e){return e=bu(Math.abs(e)),e?e[1]:NaN}function eH(e,t){return function(n,r){for(var i=n.length,s=[],a=0,o=e[0],l=0;i>0&&o>0&&(l+o+1>r&&(o=Math.max(1,r-l)),s.push(n.substring(i-=o,i+o)),!((l+=o+1)>r));)o=e[a=(a+1)%e.length];return s.reverse().join(t)}}function tH(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var nH=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function vo(e){if(!(t=nH.exec(e)))throw new Error("invalid format: "+e);var t;return new Ch({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}vo.prototype=Ch.prototype;function Ch(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Ch.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function rH(e){e:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+e[n])break e;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var FS;function iH(e,t){var n=bu(e,t);if(!n)return e+"";var r=n[0],i=n[1],s=i-(FS=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return s===a?r:s>a?r+new Array(s-a+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+bu(e,Math.max(0,t+s-1))[0]}function _b(e,t){var n=bu(e,t);if(!n)return e+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const kb={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:ZW,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>_b(e*100,t),r:_b,s:iH,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Cb(e){return e}var jb=Array.prototype.map,Pb=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function sH(e){var t=e.grouping===void 0||e.thousands===void 0?Cb:eH(jb.call(e.grouping,Number),e.thousands+""),n=e.currency===void 0?"":e.currency[0]+"",r=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",s=e.numerals===void 0?Cb:tH(jb.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",o=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(p){p=vo(p);var f=p.fill,m=p.align,g=p.sign,h=p.symbol,v=p.zero,b=p.width,w=p.comma,y=p.precision,A=p.trim,q=p.type;q==="n"?(w=!0,q="g"):kb[q]||(y===void 0&&(y=12),A=!0,q="g"),(v||f==="0"&&m==="=")&&(v=!0,f="0",m="=");var x=h==="$"?n:h==="#"&&/[boxX]/.test(q)?"0"+q.toLowerCase():"",_=h==="$"?r:/[%p]/.test(q)?a:"",I=kb[q],S=/[defgprs%]/.test(q);y=y===void 0?6:/[gprs]/.test(q)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function k(C){var T=x,M=_,L,N,R;if(q==="c")M=I(C)+M,C="";else{C=+C;var $=C<0||1/C<0;if(C=isNaN(C)?l:I(Math.abs(C),y),A&&(C=rH(C)),$&&+C==0&&g!=="+"&&($=!1),T=($?g==="("?g:o:g==="-"||g==="("?"":g)+T,M=(q==="s"?Pb[8+FS/3]:"")+M+($&&g==="("?")":""),S){for(L=-1,N=C.length;++L<N;)if(R=C.charCodeAt(L),48>R||R>57){M=(R===46?i+C.slice(L+1):C.slice(L))+M,C=C.slice(0,L);break}}}w&&!v&&(C=t(C,1/0));var B=T.length+C.length+M.length,D=B<b?new Array(b-B+1).join(f):"";switch(w&&v&&(C=t(D+C,D.length?b-M.length:1/0),D=""),m){case"<":C=T+C+M+D;break;case"=":C=T+D+C+M;break;case"^":C=D.slice(0,B=D.length>>1)+T+C+M+D.slice(B);break;default:C=D+T+C+M;break}return s(C)}return k.toString=function(){return p+""},k}function c(p,f){var m=u((p=vo(p),p.type="f",p)),g=Math.max(-8,Math.min(8,Math.floor(Ls(f)/3)))*3,h=Math.pow(10,-g),v=Pb[8+g/3];return function(b){return m(h*b)+v}}return{format:u,formatPrefix:c}}var Al,jh,US;aH({thousands:",",grouping:[3],currency:["$",""]});function aH(e){return Al=sH(e),jh=Al.format,US=Al.formatPrefix,Al}function oH(e){return Math.max(0,-Ls(Math.abs(e)))}function lH(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ls(t)/3)))*3-Ls(Math.abs(e)))}function uH(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ls(t)-Ls(e))+1}function zS(e,t,n,r){var i=Am(e,t,n),s;switch(r=vo(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(s=lH(i,a))&&(r.precision=s),US(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=uH(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=oH(i))&&(r.precision=s-(r.type==="%")*2);break}}return jh(r)}function ti(e){var t=e.domain;return e.ticks=function(n){var r=t();return qm(r[0],r[r.length-1],n??10)},e.tickFormat=function(n,r){var i=t();return zS(i[0],i[i.length-1],n??10,r)},e.nice=function(n){n==null&&(n=10);var r=t(),i=0,s=r.length-1,a=r[i],o=r[s],l,u,c=10;for(o<a&&(u=a,a=o,o=u,u=i,i=s,s=u);c-- >0;){if(u=Sm(a,o,n),u===l)return r[i]=a,r[s]=o,t(r);if(u>0)a=Math.floor(a/u)*u,o=Math.ceil(o/u)*u;else if(u<0)a=Math.ceil(a*u)/u,o=Math.floor(o*u)/u;else break;l=u}return e},e}function xu(){var e=kh();return e.copy=function(){return el(e,xu())},In.apply(e,arguments),ti(e)}function BS(e){var t;function n(r){return r==null||isNaN(r=+r)?t:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(e=Array.from(r,yu),n):e.slice()},n.unknown=function(r){return arguments.length?(t=r,n):t},n.copy=function(){return BS(e).unknown(t)},e=arguments.length?Array.from(e,yu):[0,1],ti(n)}function WS(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],s=e[r],a;return s<i&&(a=n,n=r,r=a,a=i,i=s,s=a),e[n]=t.floor(i),e[r]=t.ceil(s),e}function Tb(e){return Math.log(e)}function Ib(e){return Math.exp(e)}function cH(e){return-Math.log(-e)}function dH(e){return-Math.exp(-e)}function pH(e){return isFinite(e)?+("1e"+e):e<0?0:e}function mH(e){return e===10?pH:e===Math.E?Math.exp:t=>Math.pow(e,t)}function fH(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function Ob(e){return(t,n)=>-e(-t,n)}function Ph(e){const t=e(Tb,Ib),n=t.domain;let r=10,i,s;function a(){return i=fH(r),s=mH(r),n()[0]<0?(i=Ob(i),s=Ob(s),e(cH,dH)):e(Tb,Ib),t}return t.base=function(o){return arguments.length?(r=+o,a()):r},t.domain=function(o){return arguments.length?(n(o),a()):n()},t.ticks=o=>{const l=n();let u=l[0],c=l[l.length-1];const p=c<u;p&&([u,c]=[c,u]);let f=i(u),m=i(c),g,h;const v=o==null?10:+o;let b=[];if(!(r%1)&&m-f<v){if(f=Math.floor(f),m=Math.ceil(m),u>0){for(;f<=m;++f)for(g=1;g<r;++g)if(h=f<0?g/s(-f):g*s(f),!(h<u)){if(h>c)break;b.push(h)}}else for(;f<=m;++f)for(g=r-1;g>=1;--g)if(h=f>0?g/s(-f):g*s(f),!(h<u)){if(h>c)break;b.push(h)}b.length*2<v&&(b=qm(u,c,v))}else b=qm(f,m,Math.min(m-f,v)).map(s);return p?b.reverse():b},t.tickFormat=(o,l)=>{if(o==null&&(o=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=vo(l)).precision==null&&(l.trim=!0),l=jh(l)),o===1/0)return l;const u=Math.max(1,r*o/t.ticks().length);return c=>{let p=c/s(Math.round(i(c)));return p*r<r-.5&&(p*=r),p<=u?l(c):""}},t.nice=()=>n(WS(n(),{floor:o=>s(Math.floor(i(o))),ceil:o=>s(Math.ceil(i(o)))})),t}function HS(){const e=Ph(Pc()).domain([1,10]);return e.copy=()=>el(e,HS()).base(e.base()),In.apply(e,arguments),e}
341function Lb(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Mb(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Th(e){var t=1,n=e(Lb(t),Mb(t));return n.constant=function(r){return arguments.length?e(Lb(t=+r),Mb(t)):t},ti(n)}function VS(){var e=Th(Pc());return e.copy=function(){return el(e,VS()).constant(e.constant())},In.apply(e,arguments)}function Nb(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function hH(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function gH(e){return e<0?-e*e:e*e}function Ih(e){var t=e(rn,rn),n=1;function r(){return n===1?e(rn,rn):n===.5?e(hH,gH):e(Nb(n),Nb(1/n))}return t.exponent=function(i){return arguments.length?(n=+i,r()):n},ti(t)}function Oh(){var e=Ih(Pc());return e.copy=function(){return el(e,Oh()).exponent(e.exponent())},In.apply(e,arguments),e}function vH(){return Oh.apply(null,arguments).exponent(.5)}function Rb(e){return Math.sign(e)*e*e}function yH(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function GS(){var e=kh(),t=[0,1],n=!1,r;function i(s){var a=yH(e(s));return isNaN(a)?r:n?Math.round(a):a}return i.invert=function(s){return e.invert(Rb(s))},i.domain=function(s){return arguments.length?(e.domain(s),i):e.domain()},i.range=function(s){return arguments.length?(e.range((t=Array.from(s,yu)).map(Rb)),i):t.slice()},i.rangeRound=function(s){return i.range(s).round(!0)},i.round=function(s){return arguments.length?(n=!!s,i):n},i.clamp=function(s){return arguments.length?(e.clamp(s),i):e.clamp()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return GS(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},In.apply(i,arguments),ti(i)}function KS(){var e=[],t=[],n=[],r;function i(){var a=0,o=Math.max(1,t.length);for(n=new Array(o-1);++a<o;)n[a-1]=SW(e,a/o);return s}function s(a){return a==null||isNaN(a=+a)?r:t[Yo(n,a)]}return s.invertExtent=function(a){var o=t.indexOf(a);return o<0?[NaN,NaN]:[o>0?n[o-1]:e[0],o<n.length?n[o]:e[e.length-1]]},s.domain=function(a){if(!arguments.length)return e.slice();e=[];for(let o of a)o!=null&&!isNaN(o=+o)&&e.push(o);return e.sort(Qr),i()},s.range=function(a){return arguments.length?(t=Array.from(a),i()):t.slice()},s.unknown=function(a){return arguments.length?(r=a,s):r},s.quantiles=function(){return n.slice()},s.copy=function(){return KS().domain(e).range(t).unknown(r)},In.apply(s,arguments)}function XS(){var e=0,t=1,n=1,r=[.5],i=[0,1],s;function a(l){return l!=null&&l<=l?i[Yo(r,l,0,n)]:s}function o(){var l=-1;for(r=new Array(n);++l<n;)r[l]=((l+1)*t-(l-n)*e)/(n+1);return a}return a.domain=function(l){return arguments.length?([e,t]=l,e=+e,t=+t,o()):[e,t]},a.range=function(l){return arguments.length?(n=(i=Array.from(l)).length-1,o()):i.slice()},a.invertExtent=function(l){var u=i.indexOf(l);return u<0?[NaN,NaN]:u<1?[e,r[0]]:u>=n?[r[n-1],t]:[r[u-1],r[u]]},a.unknown=function(l){return arguments.length&&(s=l),a},a.thresholds=function(){return r.slice()},a.copy=function(){return XS().domain([e,t]).range(i).unknown(s)},In.apply(ti(a),arguments)}function QS(){var e=[.5],t=[0,1],n,r=1;function i(s){return s!=null&&s<=s?t[Yo(e,s,0,r)]:n}return i.domain=function(s){return arguments.length?(e=Array.from(s),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(s){return arguments.length?(t=Array.from(s),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(s){var a=t.indexOf(s);return[e[a-1],e[a]]},i.unknown=function(s){return arguments.length?(n=s,i):n},i.copy=function(){return QS().domain(e).range(t).unknown(n)},In.apply(i,arguments)}const Ud=new Date,zd=new Date;function Lt(e,t,n,r){function i(s){return e(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(e(s=new Date(+s)),s),i.ceil=s=>(e(s=new Date(s-1)),t(s,1),e(s),s),i.round=s=>{const a=i(s),o=i.ceil(s);return s-a<o-s?a:o},i.offset=(s,a)=>(t(s=new Date(+s),a==null?1:Math.floor(a)),s),i.range=(s,a,o)=>{const l=[];if(s=i.ceil(s),o=o==null?1:Math.floor(o),!(s<a)||!(o>0))return l;let u;do l.push(u=new Date(+s)),t(s,o),e(s);while(u<s&&s<a);return l},i.filter=s=>Lt(a=>{if(a>=a)for(;e(a),!s(a);)a.setTime(a-1)},(a,o)=>
vendor: 3,980 bytes, line 341
341{if(a>=a)if(o<0)for(;++o<=0;)for(;t(a,-1),!s(a););else for(;--o>=0;)for(;t(a,1),!s(a););}),n&&(i.count=(s,a)=>(Ud.setTime(+s),zd.setTime(+a),e(Ud),e(zd),Math.floor(n(Ud,zd))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?a=>r(a)%s===0:a=>i.count(0,a)%s===0):i)),i}const wu=Lt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);wu.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Lt(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):wu);wu.range;const wr=1e3,kn=wr*60,qr=kn*60,Er=qr*24,Lh=Er*7,$b=Er*30,Bd=Er*365,wi=Lt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*wr)},(e,t)=>(t-e)/wr,e=>e.getUTCSeconds());wi.range;const Mh=Lt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*wr)},(e,t)=>{e.setTime(+e+t*kn)},(e,t)=>(t-e)/kn,e=>e.getMinutes());Mh.range;const Nh=Lt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*kn)},(e,t)=>(t-e)/kn,e=>e.getUTCMinutes());Nh.range;const Rh=Lt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*wr-e.getMinutes()*kn)},(e,t)=>{e.setTime(+e+t*qr)},(e,t)=>(t-e)/qr,e=>e.getHours());Rh.range;const $h=Lt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*qr)},(e,t)=>(t-e)/qr,e=>e.getUTCHours());$h.range;const tl=Lt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*kn)/Er,e=>e.getDate()-1);tl.range;const Tc=Lt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Er,e=>e.getUTCDate()-1);Tc.range;const JS=Lt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Er,e=>Math.floor(e/Er));JS.range;function Fi(e){return Lt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,n)=>{t.setDate(t.getDate()+n*7)},(t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*kn)/Lh)}const Ic=Fi(0),qu=Fi(1),bH=Fi(2),xH=Fi(3),Ms=Fi(4),wH=Fi(5),qH=Fi(6);Ic.range;qu.range;bH.range;xH.range;Ms.range;wH.range;qH.range;function Ui(e){return Lt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCDate(t.getUTCDate()+n*7)},(t,n)=>(n-t)/Lh)}const Oc=Ui(0),Su=Ui(1),SH=Ui(2),AH=Ui(3),Ns=Ui(4),EH=Ui(5),_H=Ui(6);Oc.range;Su.range;SH.range;AH.range;Ns.range;EH.range;_H.range;const Dh=Lt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Dh.range;const Fh=Lt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Fh.range;const _r=Lt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());_r.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Lt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)});_r.range;const kr=Lt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());kr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Lt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)});kr.range;function YS(e,t,n,r,i,s){const a=[[wi,1,wr],[wi,5,5*wr],[wi,15,15*wr],[wi,30,30*wr],[s,1,kn],[s,5,5*kn],[s,15,15*kn],[s,30,30*kn],[i,1,qr],[i,3,3*qr],[i,6,6*qr],[i,12,12*qr],[r,1,Er],[r,2,2*Er],[n,1,Lh],[t,1,$b],[t,3,3*$b],[e,1,Bd]];function o(u,c,p){const f=c<u;f&&([u,c]=[c,u]);const m=p&&typeof p.range=="function"?p:l(u,c,p),g=m?m.range(u,+c+1):[];return f?g.reverse():g}function l(u,c,p){const f=Math.abs(c-u)/p,m=qh(([,,v])=>v).right(a,f);if(m===a.length)return e.every(Am(u/Bd,c/Bd,p));if(m===0)return wu.every(Math.max(Am(u,c,p),1));const[g,h]=a[f/a[m-1][2]<a[m][2]/f?m-1:m];return g.every(h)}return[o,l]}
vendor: 8,810 bytes, line 341
341const[kH,CH]=YS(kr,Fh,Oc,JS,$h,Nh),[jH,PH]=YS(_r,Dh,Ic,tl,Rh,Mh);function Wd(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Hd(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ea(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function TH(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,s=e.days,a=e.shortDays,o=e.months,l=e.shortMonths,u=_a(i),c=ka(i),p=_a(s),f=ka(s),m=_a(a),g=ka(a),h=_a(o),v=ka(o),b=_a(l),w=ka(l),y={a:$,A:B,b:D,B:j,c:null,d:Wb,e:Wb,f:eV,g:cV,G:pV,H:JH,I:YH,j:ZH,L:ZS,m:tV,M:nV,p:J,q:z,Q:Gb,s:Kb,S:rV,u:iV,U:sV,V:aV,w:oV,W:lV,x:null,X:null,y:uV,Y:dV,Z:mV,"%":Vb},A={a:P,A:G,b:ae,B:se,c:null,d:Hb,e:Hb,f:vV,g:kV,G:jV,H:fV,I:hV,j:gV,L:tA,m:yV,M:bV,p:ie,q:_e,Q:Gb,s:Kb,S:xV,u:wV,U:qV,V:SV,w:AV,W:EV,x:null,X:null,y:_V,Y:CV,Z:PV,"%":Vb},q={a:k,A:C,b:T,B:M,c:L,d:zb,e:zb,f:GH,g:Ub,G:Fb,H:Bb,I:Bb,j:BH,L:VH,m:zH,M:WH,p:S,q:UH,Q:XH,s:QH,S:HH,u:NH,U:RH,V:$H,w:MH,W:DH,x:N,X:R,y:Ub,Y:Fb,Z:FH,"%":KH};y.x=x(n,y),y.X=x(r,y),y.c=x(t,y),A.x=x(n,A),A.X=x(r,A),A.c=x(t,A);function x(H,Y){return function(te){var F=[],he=-1,ce=0,me=H.length,fe,de,Me;for(te instanceof Date||(te=new Date(+te));++he<me;)H.charCodeAt(he)===37&&(F.push(H.slice(ce,he)),(de=Db[fe=H.charAt(++he)])!=null?fe=H.charAt(++he):de=fe==="e"?" ":"0",(Me=Y[fe])&&(fe=Me(te,de)),F.push(fe),ce=he+1);return F.push(H.slice(ce,he)),F.join("")}}function _(H,Y){return function(te){var F=Ea(1900,void 0,1),he=I(F,H,te+="",0),ce,me;if(he!=te.length)return null;if("Q"in F)return new Date(F.Q);if("s"in F)return new Date(F.s*1e3+("L"in F?F.L:0));if(Y&&!("Z"in F)&&(F.Z=0),"p"in F&&(F.H=F.H%12+F.p*12),F.m===void 0&&(F.m="q"in F?F.q:0),"V"in F){if(F.V<1||F.V>53)return null;"w"in F||(F.w=1),"Z"in F?(ce=Hd(Ea(F.y,0,1)),me=ce.getUTCDay(),ce=me>4||me===0?Su.ceil(ce):Su(ce),ce=Tc.offset(ce,(F.V-1)*7),F.y=ce.getUTCFullYear(),F.m=ce.getUTCMonth(),F.d=ce.getUTCDate()+(F.w+6)%7):(ce=Wd(Ea(F.y,0,1)),me=ce.getDay(),ce=me>4||me===0?qu.ceil(ce):qu(ce),ce=tl.offset(ce,(F.V-1)*7),F.y=ce.getFullYear(),F.m=ce.getMonth(),F.d=ce.getDate()+(F.w+6)%7)}else("W"in F||"U"in F)&&("w"in F||(F.w="u"in F?F.u%7:"W"in F?1:0),me="Z"in F?Hd(Ea(F.y,0,1)).getUTCDay():Wd(Ea(F.y,0,1)).getDay(),F.m=0,F.d="W"in F?(F.w+6)%7+F.W*7-(me+5)%7:F.w+F.U*7-(me+6)%7);return"Z"in F?(F.H+=F.Z/100|0,F.M+=F.Z%100,Hd(F)):Wd(F)}}function I(H,Y,te,F){for(var he=0,ce=Y.length,me=te.length,fe,de;he<ce;){if(F>=me)return-1;if(fe=Y.charCodeAt(he++),fe===37){if(fe=Y.charAt(he++),de=q[fe in Db?Y.charAt(he++):fe],!de||(F=de(H,te,F))<0)return-1}else if(fe!=te.charCodeAt(F++))return-1}return F}function S(H,Y,te){var F=u.exec(Y.slice(te));return F?(H.p=c.get(F[0].toLowerCase()),te+F[0].length):-1}function k(H,Y,te){var F=m.exec(Y.slice(te));return F?(H.w=g.get(F[0].toLowerCase()),te+F[0].length):-1}function C(H,Y,te){var F=p.exec(Y.slice(te));return F?(H.w=f.get(F[0].toLowerCase()),te+F[0].length):-1}function T(H,Y,te){var F=b.exec(Y.slice(te));return F?(H.m=w.get(F[0].toLowerCase()),te+F[0].length):-1}function M(H,Y,te){var F=h.exec(Y.slice(te));return F?(H.m=v.get(F[0].toLowerCase()),te+F[0].length):-1}function L(H,Y,te){return I(H,t,Y,te)}function N(H,Y,te){return I(H,n,Y,te)}function R(H,Y,te){return I(H,r,Y,te)}function $(H){return a[H.getDay()]}function B(H){return s[H.getDay()]}function D(H){return l[H.getMonth()]}function j(H){return o[H.getMonth()]}function J(H){return i[+(H.getHours()>=12)]}function z(H){return 1+~~(H.getMonth()/3)}function P(H){return a[H.getUTCDay()]}function G(H){return s[H.getUTCDay()]}function ae(H){return l[H.getUTCMonth()]}function se(H){return o[H.getUTCMonth()]}function ie(H){return i[+(H.getUTCHours()>=12)]}function _e(H){return 1+~~(H.getUTCMonth()/3)}return{format:function(H){var Y=x(H+="",y);return Y.toString=function(){return H},Y},parse:function(H){var Y=_(H+="",!1);return Y.toString=function(){return H},Y},utcFormat:function(H){var Y=x(H+="",A);return Y.toString=function(){return H},Y},utcParse:function(H){var Y=_(H+="",!0);return Y.toString=function(){return H},Y}}}var Db={"-":"",_:" ",0:"0"},$t=/^\s*\d+/,IH=/^%/,OH=/[\\^$*+?|[\]().{}]/g;function $e(e,t,n){var r=e<0?"-":"",i=(r?-e:e)+"",s=i.length;return r+(s<n?new Array(n-s+1).join(t)+i:i)}function LH(e){return e.replace(OH,"\\$&")}function _a(e){return new RegExp("^(?:"+e.map(LH).join("|")+")","i")}function ka(e){return new Map(e.map((t,n)=>[t.toLowerCase(),n]))}function MH(e,t,n){var r=$t.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function NH(e,t,n){var r=$t.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function RH(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function $H(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function DH(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Fb(e,t,n){var r=$t.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ub(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function FH(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function UH(e,t,n){var r=$t.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function zH(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function zb(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function BH(e,t,n){var r=$t.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Bb(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function WH(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function HH(e,t,n){var r=$t.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function VH(e,t,n){var r=$t.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function GH(e,t,n){var r=$t.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function KH(e,t,n){var r=IH.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function XH(e,t,n){var r=$t.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function QH(e,t,n){var r=$t.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Wb(e,t){return $e(e.getDate(),t,2)}function JH(e,t){return $e(e.getHours(),t,2)}function YH(e,t){return $e(e.getHours()%12||12,t,2)}function ZH(e,t){return $e(1+tl.count(_r(e),e),t,3)}function ZS(e,t){return $e(e.getMilliseconds(),t,3)}function eV(e,t){return ZS(e,t)+"000"}function tV(e,t){return $e(e.getMonth()+1,t,2)}function nV(e,t){return $e(e.getMinutes(),t,2)}function rV(e,t){return $e(e.getSeconds(),t,2)}function iV(e){var t=e.getDay();return t===0?7:t}function sV(e,t){return $e(Ic.count(_r(e)-1,e),t,2)}function eA(e){var t=e.getDay();return t>=4||t===0?Ms(e):Ms.ceil(e)}function aV(e,t){return e=eA(e),$e(Ms.count(_r(e),e)+(_r(e).getDay()===4),t,2)}function oV(e){return e.getDay()}function lV(e,t){return $e(qu.count(_r(e)-1,e),t,2)}function uV(e,t){return $e(e.getFullYear()%100,t,2)}function cV(e,t){return e=eA(e),$e(e.getFullYear()%100,t,2)}function dV(e,t){return $e(e.getFullYear()%1e4,t,4)}function pV(e,t){var n=e.getDay();return e=n>=4||n===0?Ms(e):Ms.ceil(e),$e(e.getFullYear()%1e4,t,4)}function mV(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+$e(t/60|0,"0",2)+$e(t%60,"0",2)}function Hb(e,t){return $e(e.getUTCDate(),t,2)}function fV(e,t){return $e(e.getUTCHours(),t,2)}function hV(e,t){return $e(e.getUTCHours()%12||12,t,2)}function gV(e,t){return $e(1+Tc.count(kr(e),e),t,3)}function tA(e,t){return $e(e.getUTCMilliseconds(),t,3)}function vV(e,t){return tA(e,t)+"000"}function yV(e,t){return $e(e.getUTCMonth()+1,t,2)}function bV(e,t){return $e(e.getUTCMinutes(),t,2)}function xV(e,t){return $e(e.getUTCSeconds(),t,2)}function wV(e){var t=e.getUTCDay();return t===0?7:t}function qV(e,t){return $e(Oc.count(kr(e)-1,e),t,2)}function nA(e){var t=e.getUTCDay();return t>=4||t===0?Ns(e):Ns.ceil(e)}function SV(e,t){return e=nA(e),$e(Ns.count(kr(e),e)+(kr(e).getUTCDay()===4),t,2)}function AV(e){return e.getUTCDay()}function EV(e,t){return $e(Su.count(kr(e)-1,e),t,2)}function _V(e,t){return $e(e.getUTCFullYear()%100,t,2)}function kV(e,t){return e=nA(e),$e(e.getUTCFullYear()%100,t,2)}function CV(e,t){return $e(e.getUTCFullYear()%1e4,t,4)}function jV(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Ns(e):Ns.ceil(e),$e(e.getUTCFullYear()%1e4,t,4)}function PV(){return"+0000"}function Vb(){return"%"}function Gb(e){return+e}function Kb(e){return Math.floor(+e/1e3)}var ts,rA,iA;TV({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
341ay","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function TV(e){return ts=TH(e),rA=ts.format,ts.parse,iA=ts.utcFormat,ts.utcParse,ts}function IV(e){return new Date(e)}function OV(e){return e instanceof Date?+e:+new Date(+e)}function Uh(e,t,n,r,i,s,a,o,l,u){var c=kh(),p=c.invert,f=c.domain,m=u(".%L"),g=u(":%S"),h=u("%I:%M"),v=u("%I %p"),b=u("%a %d"),w=u("%b %d"),y=u("%B"),A=u("%Y");function q(x){return(l(x)<x?m:o(x)<x?g:a(x)<x?h:s(x)<x?v:r(x)<x?i(x)<x?b:w:n(x)<x?y:A)(x)}return c.invert=function(x){return new Date(p(x))},c.domain=function(x){return arguments.length?f(Array.from(x,OV)):f().map(IV)},c.ticks=function(x){var _=f();return e(_[0],_[_.length-1],x??10)},c.tickFormat=function(x,_){return _==null?q:u(_)},c.nice=function(x){var _=f();return(!x||typeof x.range!="function")&&(x=t(_[0],_[_.length-1],x??10)),x?f(WS(_,x)):c},c.copy=function(){return el(c,Uh(e,t,n,r,i,s,a,o,l,u))},c}function LV(){return In.apply(Uh(jH,PH,_r,Dh,Ic,tl,Rh,Mh,wi,rA).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function MV(){return In.apply(Uh(kH,CH,kr,Fh,Oc,Tc,$h,Nh,wi,iA).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Lc(){var e=0,t=1,n,r,i,s,a=rn,o=!1,l;function u(p){return p==null||isNaN(p=+p)?l:a(i===0?.5:(p=(s(p)-n)*i,o?Math.max(0,Math.min(1,p)):p))}u.domain=function(p){return arguments.length?([e,t]=p,n=s(e=+e),r=s(t=+t),i=n===r?0:1/(r-n),u):[e,t]},u.clamp=function(p){return arguments.length?(o=!!p,u):o},u.interpolator=function(p){return arguments.length?(a=p,u):a};function c(p){return function(f){var m,g;return arguments.length?([m,g]=f,a=p(m,g),u):[a(0),a(1)]}}return u.range=c(ua),u.rangeRound=c(_h),u.unknown=function(p){return arguments.length?(l=p,u):l},function(p){return s=p,n=p(e),r=p(t),i=n===r?0:1/(r-n),u}}function ni(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function sA(){var e=ti(Lc()(rn));return e.copy=function(){return ni(e,sA())},Tr.apply(e,arguments)}function aA(){var e=Ph(Lc()).domain([1,10]);return e.copy=function(){return ni(e,aA()).base(e.base())},Tr.apply(e,arguments)}function oA(){var e=Th(Lc());return e.copy=function(){return ni(e,oA()).constant(e.constant())},Tr.apply(e,arguments)}function zh(){var e=Ih(Lc());return e.copy=function(){return ni(e,zh()).exponent(e.exponent())},Tr.apply(e,arguments)}function NV(){return zh.apply(null,arguments).exponent(.5)}function lA(){var e=[],t=rn;function n(r){if(r!=null&&!isNaN(r=+r))return t((Yo(e,r,1)-1)/(e.length-1))}return n.domain=function(r){if(!arguments.length)return e.slice();e=[];for(let i of r)i!=null&&!isNaN(i=+i)&&e.push(i);return e.sort(Qr),n},n.interpolator=function(r){return arguments.length?(t=r,n):t},n.range=function(){return e.map((r,i)=>t(i/(e.length-1)))},n.quantiles=function(r){return Array.from({length:r+1},(i,s)=>qW(e,s/r))},n.copy=function(){return lA(t).domain(e)},Tr.apply(n,arguments)}function Mc(){var e=0,t=.5,n=1,r=1,i,s,a,o,l,u=rn,c,p=!1,f;function m(h){return isNaN(h=+h)?f:(h=.5+((h=+c(h))-s)*(r*h<r*s?o:l),u(p?Math.max(0,Math.min(1,h)):h))}m.domain=function(h){return arguments.length?([e,t,n]=h,i=c(e=+e),s=c(t=+t),a=c(n=+n),o=i===s?0:.5/(s-i),l=s===a?0:.5/(a-s),r=s<i?-1:1,m):[e,t,n]},m.clamp=function(h){return arguments.length?(p=!!h,m):p},m.interpolator=function(h){return arguments.length?(u=h,m):u};function g(h){return function(v){var b,w,y;return arguments.length?([b,w,y]=v,u=KW(h,[b,w,y]),m):[u(0),u(.5),u(1)]}}return m.range=g(ua),m.rangeRound=g(_h),m.unknown=function(h){return arguments.length?(f=h,m):f},function(h){return c=h,i=h(e),s=h(t),a=h(n),o=i===s?0:.5/(s-i),l=s===a?0:.5/(a-s),r=s<i?-1:1,m}}function uA(){var e=ti(Mc()(rn));return e.copy=function(){return ni(e,uA())},Tr.apply(e,arguments)}function cA(){var e=Ph(Mc()).domain([.1,1,10]);return e.copy=function(){return ni(e,cA()).base(e.base())},Tr.apply(e,arguments)}function dA(){var e=Th(Mc());return e.copy=function(){return ni(e,dA()).constant(e.constant())},Tr.apply(e,arguments)}function Bh(){var e=Ih(Mc());return e.copy=function(){return ni(e,Bh()).exponent(e.exponent())},Tr.apply(e,arguments)}function RV(){return Bh.apply(null,arguments).exponent(.5)}const Xb=Object.freeze(Object.defineProperty({__proto__:null,scaleBand:mo,scaleDiverging:uA,scaleDivergingLog:cA,scaleDivergingPow:Bh,scaleDivergingSqrt:RV,scaleDivergingSymlog:dA,scaleIdentity:BS,scaleImplicit:Em,scaleLinear:xu,scaleLog:HS,scaleOrdinal:Sh,scalePoint:Ga,scalePow:Oh,scaleQuantile:KS,scaleQuantize:XS,scaleRadial:GS,scaleSequential:sA,scaleSequentialLog:aA,scaleSequentialPow:zh,scaleSequentialQuantile:lA,scaleSequentialSqrt:NV,scaleSequentialSymlog:oA,scaleSqrt:vH,scaleSymlog:VS,scaleThreshold:QS,scaleTime:LV,scaleUtc:MV,tickFormat:zS},Symbol.toStringTag,{value:"Module"}));var $V=ta;function DV(e,t,n){for(var r=-1,i=e.length;++r<i;){var s=e[r],a=t(s);if(a!=null&&(o===void 0?a===a&&!$V(a):n(a,o)))var o=a,l=s}return l}var pA=DV;function FV(e,t){return e>t}var UV=FV,zV=pA,BV=UV,WV=la;function HV(e){return e&&e.length?zV(e,WV,BV):void 0}var VV=HV;const Nc=De(VV);function GV(e,t){return e<t}var KV=GV,XV=pA,QV=KV,JV=la;function YV(e){return e&&e.length?XV(e,JV,QV):void 0}var ZV=YV;const Rc=De(ZV);var eG=nh,tG=ei,nG=wS,rG=cn;function iG(e,t){var n=rG(e)?eG:nG;return n(e,tG(t))}var sG=iG,aG=bS,oG=sG;function lG(e,t){return aG(oG(e,t),1)}var uG=lG;const cG=De(uG);var dG=vh;function pG(e,t){return dG(e,t)}var mG=pG;const Wh=De(mG);
vendor: 64,726 bytes, lines 341-368
341var ca=1e9,fG={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},Vh,pt=!0,Pn="[DecimalError] ",Ii=Pn+"Invalid argument: ",Hh=Pn+"Exponent out of range: ",da=Math.floor,fi=Math.pow,hG=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,vn,Nt=1e7,lt=7,mA=9007199254740991,Au=da(mA/lt),oe={};oe.absoluteValue=oe.abs=function(){var e=new this.constructor(this);return e.s&&(e.s=1),e};oe.comparedTo=oe.cmp=function(e){var t,n,r,i,s=this;if(e=new s.constructor(e),s.s!==e.s)return s.s||-e.s;if(s.e!==e.e)return s.e>e.e^s.s<0?1:-1;for(r=s.d.length,i=e.d.length,t=0,n=r<i?r:i;t<n;++t)if(s.d[t]!==e.d[t])return s.d[t]>e.d[t]^s.s<0?1:-1;return r===i?0:r>i^s.s<0?1:-1};oe.decimalPlaces=oe.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*lt;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n};oe.dividedBy=oe.div=function(e){return Ar(this,new this.constructor(e))};oe.dividedToIntegerBy=oe.idiv=function(e){var t=this,n=t.constructor;return Ye(Ar(t,new n(e),0,1),n.precision)};oe.equals=oe.eq=function(e){return!this.cmp(e)};oe.exponent=function(){return kt(this)};oe.greaterThan=oe.gt=function(e){return this.cmp(e)>0};oe.greaterThanOrEqualTo=oe.gte=function(e){return this.cmp(e)>=0};oe.isInteger=oe.isint=function(){return this.e>this.d.length-2};oe.isNegative=oe.isneg=function(){return this.s<0};oe.isPositive=oe.ispos=function(){return this.s>0};oe.isZero=function(){return this.s===0};oe.lessThan=oe.lt=function(e){return this.cmp(e)<0};oe.lessThanOrEqualTo=oe.lte=function(e){return this.cmp(e)<1};oe.logarithm=oe.log=function(e){var t,n=this,r=n.constructor,i=r.precision,s=i+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(vn))throw Error(Pn+"NaN");if(n.s<1)throw Error(Pn+(n.s?"NaN":"-Infinity"));return n.eq(vn)?new r(0):(pt=!1,t=Ar(yo(n,s),yo(e,s),s),pt=!0,Ye(t,i))};oe.minus=oe.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?gA(t,e):fA(t,(e.s=-e.s,e))};oe.modulo=oe.mod=function(e){var t,n=this,r=n.constructor,i=r.precision;if(e=new r(e),!e.s)throw Error(Pn+"NaN");return n.s?(pt=!1,t=Ar(n,e,0,1).times(e),pt=!0,n.minus(t)):Ye(new r(n),i)};oe.naturalExponential=oe.exp=function(){return hA(this)};oe.naturalLogarithm=oe.ln=function(){return yo(this)};oe.negated=oe.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};oe.plus=oe.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?fA(t,e):gA(t,(e.s=-e.s,e))};oe.precision=oe.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Ii+e);if(t=kt(i)+1,r=i.d.length-1,n=r*lt+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n};oe.squareRoot=oe.sqrt=function(){var e,t,n,r,i,s,a,o=this,l=o.constructor;if(o.s<1){if(!o.s)return new l(0);throw Error(Pn+"NaN")}for(e=kt(o),pt=!1,i=Math.sqrt(+o),i==0||i==1/0?(t=sr(o.d),(t.length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=da((e+1)/2)-(e<0||e%2),i==1/0?t="5e"+e:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),r=new l(t)):r=new l(i.toString()),n=l.precision,i=a=n+3;;)if(s=r,r=s.plus(Ar(o,s,a+2)).times(.5),sr(s.d).slice(0,a)===(t=sr(r.d)).slice(0,a)){if(t=t.slice(a-3,a+1),i==a&&t=="4999"){if(Ye(s,n+1,0),s.times(s).eq(o)){r=s;break}}else if(t!="9999")break;a+=4}return pt=!0,Ye(r,n)};oe.times=oe.mul=function(e){var t,n,r,i,s,a,o,l,u,c=this,p=c.constructor,f=c.d,m=(e=new p(e)).d;if(!c.s||!e.s)return new p(0);for(e.s*=c.s,n=c.e+e.e,l=f.length,u=m.length,l<u&&(s=f,f=m,m=s,a=l,l=u,u=a),s=[],a=l+u,r=a;r--;)s.push(0);for(r=u;--r>=0;){for(t=0,i=l+r;i>r;)o=s[i]+m[r]*f[i-r-1]+t,s[i--]=o%Nt|0,t=o/Nt|0;s[i]=(s[i]+t)%Nt|0}for(;!s[--a];)s.pop();return t?++n:s.shift(),e.d=s,e.e=n,pt?Ye(e,p.precision):e};oe.toDecimalPlaces=oe.todp=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(ur(e,0,ca),t===void 0?t=r.rounding:ur(t,0,8),Ye(n,e+kt(n)+1,t))};oe.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=Mi(r,!0):(ur(e,0,ca),t===void 0?t=i.rounding:ur(t,0,8),r=Ye(new i(r),e+1,t),n=Mi(r,!0,e+1)),n};oe.toFixed=function(e,t){var n,r,i=this,s=i.constructor;return e===void 0?Mi(i):(ur(e,0,ca),t===void 0?t=s.rounding:ur(t,0,8),r=Ye(new s(i),e+kt(i)+1,t),n=Mi(r.abs(),!1,e+kt(r)+1),i.isneg()&&!i.isZero()?"-"+n:n)};oe.toInteger=oe.toint=function(){var e=this,t=e.constructor;return Ye(new t(e),kt(e)+1,t.rounding)};oe.toNumber=function(){return+this};oe.toPower=oe.pow=function(e){var t,n,r,i,s,a,o=this,l=o.constructor,u=12,c=+(e=new l(e));if(!e.s)return new l(vn);if(o=new l(o),!o.s){if(e.s<1)throw Error(Pn+"Infinity");return o}if(o.eq(vn))return o;if(r=l.precision,e.eq(vn))return Ye(o,r);if(t=e.e,n=e.d.length-1,a=t>=n,s=o.s,a){if((n=c<0?-c:c)<=mA){for(i=new l(vn),t=Math.ceil(r/lt+4),pt=!1;n%2&&(i=i.times(o),Jb(i.d,t)),n=da(n/2),n!==0;)o=o.times(o),Jb(o.d,t);return pt=!0,e.s<0?new l(vn).div(i):Ye(i,r)}}else if(s<0)throw Error(Pn+"NaN");return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,o.s=1,pt=!1,i=e.times(yo(o,r+u)),pt=!0,i=hA(i),i.s=s,i};oe.toPrecision=function(e,t){var n,r,i=this,s=i.constructor;return e===void 0?(n=kt(i),r=Mi(i,n<=s.toExpNeg||n>=s.toExpPos)):(ur(e,1,ca),t===void 0?t=s.rounding:ur(t,0,8),i=Ye(new s(i),e,t),n=kt(i),r=Mi(i,e<=n||n<=s.toExpNeg,e)),r};oe.toSignificantDigits=oe.tosd=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(ur(e,1,ca),t===void 0?t=r.rounding:ur(t,0,8)),Ye(new r(n),e,t)};oe.toString=oe.valueOf=oe.val=oe.toJSON=oe[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=kt(e),n=e.constructor;return Mi(e,t<=n.toExpNeg||t>=n.toExpPos)};function fA(e,t){var n,r,i,s,a,o,l,u,c=e.constructor,p=c.precision;if(!e.s||!t.s)return t.s||(t=new c(e)),pt?Ye(t,p):t;if(l=e.d,u=t.d,a=e.e,i=t.e,l=l.slice(),s=a-i,s){for(s<0?(r=l,s=-s,o=u.length):(r=u,i=a,o=l.length),a=Math.ceil(p/lt),o=a>o?a+1:o+1,s>o&&(s=o,r.length=1),r.reverse();s--;)r.push(0);r.reverse()}for(o=l.length,s=u.length,o-s<0&&(s=o,r=u,u=l,l=r),n=0;s;)n=(l[--s]=l[s]+u[s]+n)/Nt|0,l[s]%=Nt;for(n&&(l.unshift(n),++i),o=l.length;l[--o]==0;)l.pop();return t.d=l,t.e=i,pt?Ye(t,p):t}function ur(e,t,n){if(e!==~~e||e<t||e>n)throw Error(Ii+e)}function sr(e){var t,n,r,i=e.length-1,s="",a=e[0];if(i>0){for(s+=a,t=1;t<i;t++)r=e[t]+"",n=lt-r.length,n&&(s+=Dr(n)),s+=r;a=e[t],r=a+"",n=lt-r.length,n&&(s+=Dr(n))}else if(a===0)return"0";for(;a%10===0;)a/=10;return s+a}var Ar=function(){function e(r,i){var s,a=0,o=r.length;for(r=r.slice();o--;)s=r[o]*i+a,r[o]=s%Nt|0,a=s/Nt|0;return a&&r.unshift(a),r}function t(r,i,s,a){var o,l;if(s!=a)l=s>a?1:-1;else for(o=l=0;o<s;o++)if(r[o]!=i[o]){l=r[o]>i[o]?1:-1;break}return l}function n(r,i,s){for(var a=0;s--;)r[s]-=a,a=r[s]<i[s]?1:0,r[s]=a*Nt+r[s]-i[s];for(;!r[0]&&r.length>1;)r.shift()}return function(r,i,s,a){var o,l,u,c,p,f,m,g,h,v,b,w,y,A,q,x,_,I,S=r.constructor,k=r.s==i.s?1:-1,C=r.d,T=i.d;if(!r.s)return new S(r);if(!i.s)throw Error(Pn+"Division by zero");for(l=r.e-i.e,_=T.length,q=C.length,m=new S(k),g=m.d=[],u=0;T[u]==(C[u]||0);)++u;if(T[u]>(C[u]||0)&&--l,s==null?w=s=S.precision:a?w=s+(kt(r)-kt(i))+1:w=s,w<0)return new S(0);if(w=w/lt+2|0,u=0,_==1)for(c=0,T=T[0],w++;(u<q||c)&&w--;u++)y=c*Nt+(C[u]||0),g[u]=y/T|0,c=y%T|0;else{for(c=Nt/(T[0]+1)|0,c>1&&(T=e(T,c),C=e(C,c),_=T.length,q=C.length),A=_,h=C.slice(0,_),v=h.length;v<_;)h[v++]=0;I=T.slice(),I.unshift(0),x=T[0],T[1]>=Nt/2&&++x;do c=0,o=t(T,h,_,v),o<0?(b=h[0],_!=v&&(b=b*Nt+(h[1]||0)),c=b/x|0,c>1?(c>=Nt&&(c=Nt-1),p=e(T,c),f=p.length,v=h.length,o=t(p,h,f,v),o==1&&(c--,n(p,_<f?I:T,f))):(c==0&&(o=c=1),p=T.slice()),f=p.length,f<v&&p.unshift(0),n(h,p,v),o==-1&&(v=h.length,o=t(T,h,_,v),o<1&&(c++,n(h,_<v?I:T,v))),v=h.length):o===0&&(c++,h=[0]),g[u++]=c,o&&h[0]?h[v++]=C[A]||0:(h=[C[A]],v=1);while((A++<q||h[0]!==void 0)&&w--)}return g[0]||g.shift(),m.e=l,Ye(m,a?s+kt(m)+1:s)}}();function hA(e,t){var n,r,i,s,a,o,l=0,u=0,c=e.constructor,p=c.precision;if(kt(e)>16)throw Error(Hh+kt(e));if(!e.s)return new c(vn);for(t==null?(pt=!1,o=p):o=t,a=new c(.03125);e.abs().gte(.1);)e=e.times(a),u+=5;for(r=Math.log(fi(2,u))/Math.LN10*2+5|0,o+=r,n=i=s=new c(vn),c.precision=o;;){if(i=Ye(i.times(e),o),n=n.times(++l),a=s.plus(Ar(i,n,o)),sr(a.d).slice(0,o)===sr(s.d).slice(0,o)){for(;u--;)s=Ye(s.times(s),o);return c.precision=p,t==null?(pt=!0,Ye(s,p)):s}s=a}}function kt(e){for(var t=e.e*lt,n=e.d[0];n>=10;n/=10)t++;return t}function Vd(e,t,n){if(t>e.LN10.sd())throw pt=!0,n&&(e.precision=n),Error(Pn+"LN10 precision limit exceeded");return Ye(new e(e.LN10),t)}function Dr(e){for(var t="";e--;)t+="0";return t}function yo(e,t){var n,r,i,s,a,o,l,u,c,p=1,f=10,m=e,g=m.d,h=m.constructor,v=h.precision;if(m.s<1)throw Error(Pn+(m.s?"NaN":"-Infinity"));if(m.eq(vn))return new h(0);if(t==null?(pt=!1,u=v):u=t,m.eq(10))return t==null&&(pt=!0),Vd(h,u);if(u+=f,h.precision=u,n=sr(g),r=n.charAt(0),s=kt(m),Math.abs(s)<15e14){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)m=m.times(e),n=sr(m.d),r=n.charAt(0),p++;s=kt(m),r>1?(m=new h("0."+n),s++):m=new h(r+"."+n.slice(1))}else return l=Vd(h,u+2,v).times(s+""),m=yo(new h(r+"."+n.slice(1)),u-f).plus(l),h.precision=v,t==null?(pt=!0,Ye(m,v)):m;for(o=a=m=Ar(m.minus(vn),m.plus(vn),u),c=Ye(m.times(m),u),i=3;;){if(a=Ye(a.times(c),u),l=o.plus(Ar(a,new h(i),u)),sr(l.d).slice(0,u)===sr(o.d).slice(0,u))return o=o.times(2),s!==0&&(o=o.plus(Vd(h,u+2,v).times(s+""))),o=Ar(o,new h(p),u),h.precision=v,t==null?(pt=!0,Ye(o,v)):o;o=l,i+=2}}function Qb(e,t){var n,r,i;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(i=t.length;t.charCodeAt(i-1)===48;)--i;if(t=t.slice(r,i),t){if(i-=r,n=n-r-1,e.e=da(n/lt),e.d=[],r=(n+1)%lt,n<0&&(r+=lt),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=lt;r<i;)e.d.push(+t.slice(r,r+=lt));t=t.slice(r),r=lt-t.length}else r-=i;for(;r--;)t+="0";if(e.d.push(+t),pt&&(e.e>Au||e.e<-Au))throw Error(Hh+n)}else e.s=0,e.e=0,e.d=[0];return e}function Ye(e,t,n){var r,i,s,a,o,l,u,c,p=e.d;for(a=1,s=p[0];s>=10;s/=10)a++;if(r=t-a,r<0)r+=lt,i=t,u=p[c=0];else{if(c=Math.ceil((r+1)/lt),s=p.length,c>=s)return e;for(u=s=p[c],a=1;s>=10;s/=10)a++;r%=lt,i=r-lt+a}if(n!==void 0&&(s=fi(10,a-i-1),o=u/s%10|0,l=t<0||p[c+1]!==void 0||u%s,l=n<4?(o||l)&&(n==0||n==(e.s<0?3:2)):o>5||o==5&&(n==4||l||n==6&&(r>0?i>0?u/fi(10,a-i):0:p[c-1])%10&1||n==(e.s<0?8:7))),t<1||!p[0])return l?(s=kt(e),p.length=1,t=t-s-1,p[0]=fi(10,(lt-t%lt)%lt),e.e=da(-t/lt)||0):(p.length=1,p[0]=e.e=e.s=0),e;if(r==0?(p.length=c,s=1,c--):(p.length=c+1,s=fi(10,lt-r),p[c]=i>0?(u/fi(10,a-i)%fi(10,i)|0)*s:0),l)for(;;)if(c==0){(p[0]+=s)==Nt&&(p[0]=1,++e.e);break}else{if(p[c]+=s,p[c]!=Nt)break;p[c--]=0,s=1}for(r=p.length;p[--r]===0;)p.pop();if(pt&&(e.e>Au||e.e<-Au))throw Error(Hh+kt(e));return e}function gA(e,t){var n,r,i,s,a,o,l,u,c,p,f=e.constructor,m=f.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new f(e),pt?Ye(t,m):t;if(l=e.d,p=t.d,r=t.e,u=e.e,l=l.slice(),a=u-r,a){for(c=a<0,c?(n=l,a=-a,o=p.length):(n=p,r=u,o=l.length),i=Math.max(Math.ceil(m/lt),o)+2,a>i&&(a=i,n.length=1),n.reverse(),i=a;i--;)n.push(0);n.reverse()}else{for(i=l.length,o=p.length,c=i<o,c&&(o=i),i=0;i<o;i++)if(l[i]!=p[i]){c=l[i]<p[i];break}a=0}for(c&&(n=l,l=p,p=n,t.s=-t.s),o=l.length,i=p.length-o;i>0;--i)l[o++]=0;for(i=p.length;i>a;){if(l[--i]<p[i]){for(s=i;s&&l[--s]===0;)l[s]=Nt-1;--l[s],l[i]+=Nt}l[i]-=p[i]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--r;return l[0]?(t.d=l,t.e=r,pt?Ye(t,m):t):new f(0)}function Mi(e,t,n){var r,i=kt(e),s=sr(e.d),a=s.length;return t?(n&&(r=n-a)>0?s=s.charAt(0)+"."+s.slice(1)+Dr(r):a>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(i<0?"e":"e+")+i):i<0?(s="0."+Dr(-i-1)+s,n&&(r=n-a)>0&&(s+=Dr(r))):i>=a?(s+=Dr(i+1-a),n&&(r=n-i-1)>0&&(s=s+"."+Dr(r))):((r=i+1)<a&&(s=s.slice(0,r)+"."+s.slice(r)),n&&(r=n-a)>0&&(i+1===a&&(s+="."),s+=Dr(r))),e.s<0?"-"+s:s}function Jb(e,t){if(e.length>t)return e.length=t,!0}function vA(e){var t,n,r;function i(s){var a=this;if(!(a instanceof i))return new i(s);if(a.constructor=i,s instanceof i){a.s=s.s,a.e=s.e,a.d=(s=s.d)?s.slice():s;return}if(typeof s=="number"){if(s*0!==0)throw Error(Ii+s);if(s>0)a.s=1;else if(s<0)s=-s,a.s=-1;else{a.s=0,a.e=0,a.d=[0];return}if(s===~~s&&s<1e7){a.e=0,a.d=[s];return}return Qb(a,s.toString())}else if(typeof s!="string")throw Error(Ii+s);if(s.charCodeAt(0)===45?(s=s.slice(1),a.s=-1):a.s=1,hG.test(s))Qb(a,s);else throw Error(Ii+s)}if(i.prototype=oe,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=vA,i.config=i.set=gG,e===void 0&&(e={}),e)for(r=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return i.config(e),i}function gG(e){if(!e||typeof e!="object")throw Error(Pn+"Object expected");var t,n,r,i=["precision",1,ca,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(t=0;t<i.length;t+=3)if((r=e[n=i[t]])!==void 0)if(da(r)===r&&r>=i[t+1]&&r<=i[t+2])this[n]=r;else throw Error(Ii+n+": "+r);if((r=e[n="LN10"])!==void 0)if(r==Math.LN10)this[n]=new this(r);else throw Error(Ii+n+": "+r);return this}var Vh=vA(fG);vn=new Vh(1);const Je=Vh;function vG(e){return wG(e)||xG(e)||bG(e)||yG()}function yG(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
342In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function bG(e,t){if(e){if(typeof e=="string")return jm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jm(e,t)}}function xG(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function wG(e){if(Array.isArray(e))return jm(e)}function jm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var qG=function(t){return t},yA={"@@functional/placeholder":!0},bA=function(t){return t===yA},Yb=function(t){return function n(){return arguments.length===0||arguments.length===1&&bA(arguments.length<=0?void 0:arguments[0])?n:t.apply(void 0,arguments)}},SG=function e(t,n){return t===1?n:Yb(function(){for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];var a=i.filter(function(o){return o!==yA}).length;return a>=t?n.apply(void 0,i):e(t-a,Yb(function(){for(var o=arguments.length,l=new Array(o),u=0;u<o;u++)l[u]=arguments[u];var c=i.map(function(p){return bA(p)?l.shift():p});return n.apply(void 0,vG(c).concat(l))}))})},$c=function(t){return SG(t.length,t)},Pm=function(t,n){for(var r=[],i=t;i<n;++i)r[i-t]=i;return r},AG=$c(function(e,t){return Array.isArray(t)?t.map(e):Object.keys(t).map(function(n){return t[n]}).map(e)}),EG=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return qG;var i=n.reverse(),s=i[0],a=i.slice(1);return function(){return a.reduce(function(o,l){return l(o)},s.apply(void 0,arguments))}},Tm=function(t){return Array.isArray(t)?t.reverse():t.split("").reverse.join("")},xA=function(t){var n=null,r=null;return function(){for(var i=arguments.length,s=new Array(i),a=0;a<i;a++)s[a]=arguments[a];return n&&s.every(function(o,l){return o===n[l]})||(n=s,r=t.apply(void 0,s)),r}};function _G(e){var t;return e===0?t=1:t=Math.floor(new Je(e).abs().log(10).toNumber())+1,t}function kG(e,t,n){for(var r=new Je(e),i=0,s=[];r.lt(t)&&i<1e5;)s.push(r.toNumber()),r=r.add(n),i++;return s}var CG=$c(function(e,t,n){var r=+e,i=+t;return r+n*(i-r)}),jG=$c(function(e,t,n){var r=t-+e;return r=r||1/0,(n-e)/r}),PG=$c(function(e,t,n){var r=t-+e;return r=r||1/0,Math.max(0,Math.min(1,(n-e)/r))});const Dc={rangeStep:kG,getDigitCount:_G,interpolateNumber:CG,uninterpolateNumber:jG,uninterpolateTruncation:PG};function Im(e){return OG(e)||IG(e)||wA(e)||TG()}function TG(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
343In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function IG(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function OG(e){if(Array.isArray(e))return Om(e)}function bo(e,t){return NG(e)||MG(e,t)||wA(e,t)||LG()}function LG(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
344In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function wA(e,t){if(e){if(typeof e=="string")return Om(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Om(e,t)}}function Om(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function MG(e,t){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(e)))){var n=[],r=!0,i=!1,s=void 0;try{for(var a=e[Symbol.iterator](),o;!(r=(o=a.next()).done)&&(n.push(o.value),!(t&&n.length===t));r=!0);}catch(l){i=!0,s=l}finally{try{!r&&a.return!=null&&a.return()}finally{if(i)throw s}}return n}}function NG(e){if(Array.isArray(e))return e}function qA(e){var t=bo(e,2),n=t[0],r=t[1],i=n,s=r;return n>r&&(i=r,s=n),[i,s]}function SA(e,t,n){if(e.lte(0))return new Je(0);var r=Dc.getDigitCount(e.toNumber()),i=new Je(10).pow(r),s=e.div(i),a=r!==1?.05:.1,o=new Je(Math.ceil(s.div(a).toNumber())).add(n).mul(a),l=o.mul(i);return t?l:new Je(Math.ceil(l))}function RG(e,t,n){var r=1,i=new Je(e);if(!i.isint()&&n){var s=Math.abs(e);s<1?(r=new Je(10).pow(Dc.getDigitCount(e)-1),i=new Je(Math.floor(i.div(r).toNumber())).mul(r)):s>1&&(i=new Je(Math.floor(e)))}else e===0?i=new Je(Math.floor((t-1)/2)):n||(i=new Je(Math.floor(e)));var a=Math.floor((t-1)/2),o=EG(AG(function(l){return i.add(new Je(l-a).mul(r)).toNumber()}),Pm);return o(0,t)}function AA(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;if(!Number.isFinite((t-e)/(n-1)))return{step:new Je(0),tickMin:new Je(0),tickMax:new Je(0)};var s=SA(new Je(t).sub(e).div(n-1),r,i),a;e<=0&&t>=0?a=new Je(0):(a=new Je(e).add(t).div(2),a=a.sub(new Je(a).mod(s)));var o=Math.ceil(a.sub(e).div(s).toNumber()),l=Math.ceil(new Je(t).sub(a).div(s).toNumber()),u=o+l+1;return u>n?AA(e,t,n,r,i+1):(u<n&&(l=t>0?l+(n-u):l,o=t>0?o:o+(n-u)),{step:s,tickMin:a.sub(new Je(o).mul(s)),tickMax:a.add(new Je(l).mul(s))})}function $G(e){var t=bo(e,2),n=t[0],r=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=Math.max(i,2),o=qA([n,r]),l=bo(o,2),u=l[0],c=l[1];if(u===-1/0||c===1/0){var p=c===1/0?[u].concat(Im(Pm(0,i-1).map(function(){return 1/0}))):[].concat(Im(Pm(0,i-1).map(function(){return-1/0})),[c]);return n>r?Tm(p):p}if(u===c)return RG(u,i,s);var f=AA(u,c,a,s),m=f.step,g=f.tickMin,h=f.tickMax,v=Dc.rangeStep(g,h.add(new Je(.1).mul(m)),m);return n>r?Tm(v):v}function DG(e,t){var n=bo(e,2),r=n[0],i=n[1],s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=qA([r,i]),o=bo(a,2),l=o[0],u=o[1];if(l===-1/0||u===1/0)return[r,i];if(l===u)return[l];var c=Math.max(t,2),p=SA(new Je(u).sub(l).div(c-1),s,0),f=[].concat(Im(Dc.rangeStep(new Je(l),new Je(u).sub(new Je(.99).mul(p)),p)),[u]);return r>i?Tm(f):f}var FG=xA($G),UG=xA(DG),zG="Invariant failed";function Ni(e,t){throw new Error(zG)}var BG=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function Rs(e){"@babel/helpers - typeof";return Rs=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},Rs(e)}function Eu(){return Eu=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Eu.apply(this,arguments)}function WG(e,t){return KG(e)||GG(e,t)||VG(e,t)||HG()}function HG(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
345In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function VG(e,t){if(e){if(typeof e=="string")return Zb(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Zb(e,t)}}function Zb(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function GG(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function KG(e){if(Array.isArray(e))return e}function XG(e,t){if(e==null)return{};var n=QG(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function QG(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function JG(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function YG(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,kA(r.key),r)}}function ZG(e,t,n){return t&&YG(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function eK(e,t,n){return t=_u(t),tK(e,EA()?Reflect.construct(t,n||[],_u(e).constructor):t.apply(e,n))}function tK(e,t){if(t&&(Rs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return nK(e)}function nK(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function EA(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(EA=function(){return!!e})()}function _u(e){return _u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},_u(e)}function rK(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Lm(e,t)}function Lm(e,t){return Lm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Lm(e,t)}function _A(e,t,n){return t=kA(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kA(e){var t=iK(e,"string");return Rs(t)=="symbol"?t:t+""}function iK(e,t){if(Rs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Rs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Fc=function(e){function t(){return JG(this,t),eK(this,t,arguments)}return rK(t,e),ZG(t,[{key:"render",value:function(){var r=this.props,i=r.offset,s=r.layout,a=r.width,o=r.dataKey,l=r.data,u=r.dataPointFormatter,c=r.xAxis,p=r.yAxis,f=XG(r,BG),m=Ge(f,!1);this.props.direction==="x"&&c.type!=="number"&&Ni();var g=l.map(function(h){var v=u(h,o),b=v.x,w=v.y,y=v.value,A=v.errorVal;if(!A)return null;var q=[],x,_;if(Array.isArray(A)){var I=WG(A,2);x=I[0],_=I[1]}else x=_=A;if(s==="vertical"){var S=c.scale,k=w+i,C=k+a,T=k-a,M=S(y-x),L=S(y+_);q.push({x1:L,y1:C,x2:L,y2:T}),q.push({x1:M,y1:k,x2:L,y2:k}),q.push({x1:M,y1:C,x2:M,y2:T})}else if(s==="horizontal"){var N=p.scale,R=b+i,$=R-a,B=R+a,D=N(y-x),j=N(y+_);q.push({x1:$,y1:j,x2:B,y2:j}),q.push({x1:R,y1:D,x2:R,y2:j}),q.push({x1:$,y1:D,x2:B,y2:D})}return O.createElement(Rt,Eu({className:"recharts-errorBar",key:"bar-".concat(q.map(function(J){return"".concat(J.x1,"-").concat(J.x2,"-").concat(J.y1,"-").concat(J.y2)}))},m),q.map(function(J){return O.createElement("line",Eu({},J,{key:"line-".concat(J.x1,"-").concat(J.x2,"-").concat(J.y1,"-").concat(J.y2)}))}))});return O.createElement(Rt,{className:"recharts-errorBars"},g)}}])}(O.Component);_A(Fc,"defaultProps",{stroke:"black",strokeWidth:1.5,width:5,offset:0,layout:"horizontal"});_A(Fc,"displayName","ErrorBar");function xo(e){"@babel/helpers - typeof";return xo=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},xo(e)}function e0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function oi(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?e0(Object(n),!0).forEach(function(r){sK(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):e0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function sK(e,t,n){return t=aK(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function aK(e){var t=oK(e,"string");return xo(t)=="symbol"?t:t+""}function oK(e,t){if(xo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(xo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var CA=function(t){var n=t.children,r=t.formattedGraphicalItems,i=t.legendWidth,s=t.legendContent,a=gn(n,ys);if(!a)return null;var o=ys.defaultProps,l=o!==void 0?oi(oi({},o),a.props):{},u;return a.props&&a.props.payload?u=a.props&&a.props.payload:s==="children"?u=(r||[]).reduce(function(c,p){var f=p.item,m=p.props,g=m.sectors||m.data||[];return c.concat(g.map(function(h){return{type:a.props.iconType||f.props.legendType,value:h.name,color:h.fill,payload:h}}))},[]):u=(r||[]).map(function(c){var p=c.item,f=p.type.defaultProps,m=f!==void 0?oi(oi({},f),p.props):{},g=m.dataKey,h=m.name,v=m.legendType,b=m.hide;return{inactive:b,dataKey:g,type:l.iconType||v||"square",color:Gh(p),value:h||g,payload:m}}),oi(oi(oi({},l),ys.getWithHeight(a,i)),{},{payload:u,item:a})};function wo(e){"@babel/helpers - typeof";return wo=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},wo(e)}function t0(e){return dK(e)||cK(e)||uK(e)||lK()}function lK(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
346In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function uK(e,t){if(e){if(typeof e=="string")return Mm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Mm(e,t)}}function cK(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function dK(e){if(Array.isArray(e))return Mm(e)}function Mm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function yt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?n0(Object(n),!0).forEach(function(r){xs(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):n0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function xs(e,t,n){return t=pK(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pK(e){var t=mK(e,"string");return wo(t)=="symbol"?t:t+""}function mK(e,t){if(wo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(wo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function cr(e,t,n){return Re(e)||Re(t)?n:Ot(t)?Cn(e,t,n):Oe(t)?t(e):n}function Ka(e,t,n,r){var i=cG(e,function(o){return cr(o,t)});if(n==="number"){var s=i.filter(function(o){return re(o)||parseFloat(o)});return s.length?[Rc(s),Nc(s)]:[1/0,-1/0]}var a=r?i.filter(function(o){return!Re(o)}):i;return a.map(function(o){return Ot(o)||o instanceof Date?o:""})}var fK=function(t){var n,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,s=arguments.length>3?arguments[3]:void 0,a=-1,o=(n=r==null?void 0:r.length)!==null&&n!==void 0?n:0;if(o<=1)return 0;if(s&&s.axisType==="angleAxis"&&Math.abs(Math.abs(s.range[1]-s.range[0])-360)<=1e-6)for(var l=s.range,u=0;u<o;u++){var c=u>0?i[u-1].coordinate:i[o-1].coordinate,p=i[u].coordinate,f=u>=o-1?i[0].coordinate:i[u+1].coordinate,m=void 0;if(Wn(p-c)!==Wn(f-p)){var g=[];if(Wn(f-p)===Wn(l[1]-l[0])){m=f;var h=p+l[1]-l[0];g[0]=Math.min(h,(h+c)/2),g[1]=Math.max(h,(h+c)/2)}else{m=c;var v=f+l[1]-l[0];g[0]=Math.min(p,(v+p)/2),g[1]=Math.max(p,(v+p)/2)}var b=[Math.min(p,(m+p)/2),Math.max(p,(m+p)/2)];if(t>b[0]&&t<=b[1]||t>=g[0]&&t<=g[1]){a=i[u].index;break}}else{var w=Math.min(c,f),y=Math.max(c,f);if(t>(w+p)/2&&t<=(y+p)/2){a=i[u].index;break}}}else for(var A=0;A<o;A++)if(A===0&&t<=(r[A].coordinate+r[A+1].coordinate)/2||A>0&&A<o-1&&t>(r[A].coordinate+r[A-1].coordinate)/2&&t<=(r[A].coordinate+r[A+1].coordinate)/2||A===o-1&&t>(r[A].coordinate+r[A-1].coordinate)/2){a=r[A].index;break}return a},Gh=function(t){var n,r=t,i=r.type.displayName,s=(n=t.type)!==null&&n!==void 0&&n.defaultProps?yt(yt({},t.type.defaultProps),t.props):t.props,a=s.stroke,o=s.fill,l;switch(i){case"Line":l=a;break;case"Area":case"Radar":l=a&&a!=="none"?a:o;break;default:l=o;break}return l},hK=function(t){var n=t.barSize,r=t.totalSize,i=t.stackGroups,s=i===void 0?{}:i;if(!s)return{};for(var a={},o=Object.keys(s),l=0,u=o.length;l<u;l++)for(var c=s[o[l]].stackGroups,p=Object.keys(c),f=0,m=p.length;f<m;f++){var g=c[p[f]],h=g.items,v=g.cateAxisId,b=h.filter(function(_){return Sr(_.type).indexOf("Bar")>=0});if(b&&b.length){var w=b[0].type.defaultProps,y=w!==void 0?yt(yt({},w),b[0].props):b[0].props,A=y.barSize,q=y[v];a[q]||(a[q]=[]);var x=Re(A)?n:A;a[q].push({item:b[0],stackList:b.slice(1),barSize:Re(x)?void 0:Hn(x,r,0)})}}return a},gK=function(t){var n=t.barGap,r=t.barCategoryGap,i=t.bandSize,s=t.sizeList,a=s===void 0?[]:s,o=t.maxBarSize,l=a.length;if(l<1)return null;var u=Hn(n,i,0,!0),c,p=[];if(a[0].barSize===+a[0].barSize){var f=!1,m=i/l,g=a.reduce(function(A,q){return A+q.barSize||0},0);g+=(l-1)*u,g>=i&&(g-=(l-1)*u,u=0),g>=i&&m>0&&(f=!0,m*=.9,g=l*m);var h=(i-g)/2>>0,v={offset:h-u,size:0};c=a.reduce(function(A,q){var x={item:q.item,position:{offset:v.offset+v.size+u,size:f?m:q.barSize}},_=[].concat(t0(A),[x]);return v=_[_.length-1].position,q.stackList&&q.stackList.length&&q.stackList.forEach(function(I){_.push({item:I,position:v})}),_},p)}else{var b=Hn(r,i,0,!0);i-2*b-(l-1)*u<=0&&(u=0);var w=(i-2*b-(l-1)*u)/l;w>1&&(w>>=0);var y=o===+o?Math.min(w,o):w;c=a.reduce(function(A,q,x){var _=[].concat(t0(A),[{item:q.item,position:{offset:b+(w+u)*x+(w-y)/2,size:y}}]);return q.stackList&&q.stackList.length&&q.stackList.forEach(function(I){_.push({item:I,position:_[_.length-1].position})}),_},p)}return c},vK=function(t,n,r,i){var s=r.children,a=r.width,o=r.margin,l=a-(o.left||0)-(o.right||0),u=CA({children:s,legendWidth:l});if(u){var c=i||{},p=c.width,f=c.height,m=u.align,g=u.verticalAlign,h=u.layout;if((h==="vertical"||h==="horizontal"&&g==="middle")&&m!=="center"&&re(t[m]))return yt(yt({},t),{},xs({},m,t[m]+(p||0)));if((h==="horizontal"||h==="vertical"&&m==="center")&&g!=="middle"&&re(t[g]))return yt(yt({},t),{},xs({},g,t[g]+(f||0)))}return t},yK=function(t,n,r){return Re(n)?!0:t==="horizontal"?n==="yAxis":t==="vertical"||r==="x"?n==="xAxis":r==="y"?n==="yAxis":!0},jA=function(t,n,r,i,s){var a=n.props.children,o=Vn(a,Fc).filter(function(u){return yK(i,s,u.props.direction)});if(o&&o.length){var l=o.map(function(u){return u.props.dataKey});return t.reduce(function(u,c){var p=cr(c,r);if(Re(p))return u;var f=Array.isArray(p)?[Rc(p),Nc(p)]:[p,p],m=l.reduce(function(g,h){var v=cr(c,h,0),b=f[0]-Math.abs(Array.isArray(v)?v[0]:v),w=f[1]+Math.abs(Array.isArray(v)?v[1]:v);return[Math.min(b,g[0]),Math.max(w,g[1])]},[1/0,-1/0]);return[Math.min(m[0],u[0]),Math.max(m[1],u[1])]},[1/0,-1/0])}return null},bK=function(t,n,r,i,s){var a=n.map(function(o){return jA(t,o,r,s,i)}).filter(function(o){return!Re(o)});return a&&a.length?a.reduce(function(o,l){return[Math.min(o[0],l[0]),Math.max(o[1],l[1])]},[1/0,-1/0]):null},PA=function(t,n,r,i,s){var a=n.map(function(l){var u=l.props.dataKey;return r==="number"&&u&&jA(t,l,u,i)||Ka(t,u,r,s)});if(r==="number")return a.reduce(function(l,u){return[Math.min(l[0],u[0]),Math.max(l[1],u[1])]},[1/0,-1/0]);var o={};return a.reduce(function(l,u){for(var c=0,p=u.length;c<p;c++)o[u[c]]||(o[u[c]]=!0,l.push(u[c]));return l},[])},TA=function(t,n){return t==="horizontal"&&n==="xAxis"||t==="vertical"&&n==="yAxis"||t==="centric"&&n==="angleAxis"||t==="radial"&&n==="radiusAxis"},Qde=function(t,n,r,i){if(i)return t.map(function(l){return l.coordinate});var s,a,o=t.map(function(l){return l.coordinate===n&&(s=!0),l.coordinate===r&&(a=!0),l.coordinate});return s||o.push(n),a||o.push(r),o},qi=function(t,n,r){if(!t)return null;var i=t.scale,s=t.duplicateDomain,a=t.type,o=t.range,l=t.realScaleType==="scaleBand"?i.bandwidth()/2:2,u=(n||r)&&a==="category"&&i.bandwidth?i.bandwidth()/l:0;if(u=t.axisType==="angleAxis"&&(o==null?void 0:o.length)>=2?Wn(o[0]-o[1])*2*u:u,n&&(t.ticks||t.niceTicks)){var c=(t.ticks||t.niceTicks).map(function(p){var f=s?s.indexOf(p):p;return{coordinate:i(f)+u,value:p,offset:u}});return c.filter(function(p){return!Qo(p.coordinate)})}return t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(p,f){return{coordinate:i(p)+u,value:p,index:f,offset:u}}):i.ticks&&!r?i.ticks(t.tickCount).map(function(p){return{coordinate:i(p)+u,value:p,offset:u}}):i.domain().map(function(p,f){return{coordinate:i(p)+u,value:s?s[p]:p,index:f,offset:u}})},Gd=new WeakMap,El=function(t,n){if(typeof n!="function")return t;Gd.has(t)||Gd.set(t,new WeakMap);var r=Gd.get(t);if(r.has(n))return r.get(n);var i=function(){t.apply(void 0,arguments),n.apply(void 0,arguments)};return r.set(n,i),i},IA=function(t,n,r){var i=t.scale,s=t.type,a=t.layout,o=t.axisType;if(i==="auto")return a==="radial"&&o==="radiusAxis"?{scale:mo(),realScaleType:"band"}:a==="radial"&&o==="angleAxis"?{scale:xu(),realScaleType:"linear"}:s==="category"&&n&&(n.indexOf("LineChart")>=0||n.indexOf("AreaChart")>=0||n.indexOf("ComposedChart")>=0&&!r)?{scale:Ga(),realScaleType:"point"}:s==="category"?{scale:mo(),realScaleType:"band"}:{scale:xu(),realScaleType:"linear"};if(Li(i)){var l="scale".concat(Sc(i));return{scale:(Xb[l]||Ga)(),realScaleType:Xb[l]?l:"point"}}return Oe(i)?{scale:i}:{scale:Ga(),realScaleType:"point"}},r0=1e-4,OA=function(t){var n=t.domain();if(!(!n||n.length<=2)){var r=n.length,i=t.range(),s=Math.min(i[0],i[1])-r0,a=Math.max(i[0],i[1])+r0,o=t(n[0]),l=t(n[r-1]);(o<s||o>a||l<s||l>a)&&t.domain([n[0],n[r-1]])}},xK=function(t,n){if(!t)return null;for(var r=0,i=t.length;r<i;r++)if(t[r].item===n)return t[r].position;return null},wK=function(t,n){if(!n||n.length!==2||!re(n[0])||!re(n[1]))return t;var r=Math.min(n[0],n[1]),i=Math.max(n[0],n[1]),s=[t[0],t[1]];return(!re(t[0])||t[0]<r)&&(s[0]=r),(!re(t[1])||t[1]>i)&&(s[1]=i),s[0]>i&&(s[0]=i),s[1]<r&&(s[1]=r),s},qK=function(t){var n=t.length;if(!(n<=0))for(var r=0,i=t[0].length;r<i;++r)for(var s=0,a=0,o=0;o<n;++o){var l=Qo(t[o][r][1])?t[o][r][0]:t[o][r][1];l>=0?(t[o][r][0]=s,t[o][r][1]=s+l,s=t[o][r][1]):(t[o][r][0]=a,t[o][r][1]=a+l,a=t[o][r][1])}},SK=function(t){var n=t.length;if(!(n<=0))for(var r=0,i=t[0].length;r<i;++r)for(var s=0,a=0;a<n;++a){var o=Qo(t[a][r][1])?t[a][r][0]:t[a][r][1];o>=0?(t[a][r][0]=s,t[a][r][1]=s+o,s=t[a][r][1]):(t[a][r][0]=0,t[a][r][1]=0)}},AK={sign:qK,expand:F4,none:js,silhouette:U4,wiggle:z4,positive:SK},EK=function(t,n,r){var i=n.map(function(o){return o.props.dataKey}),s=AK[r],a=D4().keys(i).value(function(o,l){return+cr(o,l,0)}).order(am).offset(s);return a(t)},_K=function(t,n,r,i,s,a){if(!t)return null;var o=a?n.reverse():n,l={},u=o.reduce(function(p,f){var m,g=(m=f.type)!==null&&m!==void 0&&m.defaultProps?yt(yt({},f.type.defaultProps),f.props):f.props,h=g.stackId,v=g.hide;if(v)return p;var b=g[r],w=p[b]||{hasStack:!1,stackGroups:{}};if(Ot(h)){var y=w.stackGroups[h]||{numericAxisId:r,cateAxisId:i,items:[]};y.items.push(f),w.hasStack=!0,w.stackGroups[h]=y}else w.stackGroups[qc("_stackId_")]={numericAxisId:r,cateAxisId:i,items:[f]};return yt(yt({},p),{},xs({},b,w))},l),c={};return Object.keys(u).reduce(function(p,f){var m=u[f];if(m.hasStack){var g={};m.stackGroups=Object.keys(m.stackGroups).reduce(function(h,v){var b=m.stackGroups[v];return yt(yt({},h),{},xs({},v,{numericAxisId:r,cateAxisId:i,items:b.items,stackedData:EK(t,b.items,s)}))},g)}return yt(yt({},p),{},xs({},f,m))},c)},LA=function(t,n){var r=n.realScaleType,i=n.type,s=n.tickCount,a=n.originalDomain,o=n.allowDecimals,l=r||n.scale;if(l!=="auto"&&l!=="linear")return null;if(s&&i==="number"&&a&&(a[0]==="auto"||a[1]==="auto")){var u=t.domain();if(!u.length)return null;var c=FG(u,s,o);return t.domain([Rc(c),Nc(c)]),{niceTicks:c}}if(s&&i==="number"){var p=t.domain(),f=UG(p,s,o);return{niceTicks:f}}return null},i0=function(t){var n=t.axis,r=t.ticks,i=t.offset,s=t.bandSize,a=t.entry,o=t.index;if(n.type==="category")return r[o]?r[o].coordinate+i:null;var l=cr(a,n.dataKey,n.domain[o]);return Re(l)?null:n.scale(l)-s/2+i},kK=function(t){var n=t.numericAxis,r=n.scale.domain();if(n.type==="number"){var i=Math.min(r[0],r[1]),s=Math.max(r[0],r[1]);return i<=0&&s>=0?0:s<0?s:i}return r[0]},CK=function(t,n){var r,i=(r=t.type)!==null&&r!==void 0&&r.defaultProps?yt(yt({},t.type.defaultProps),t.props):t.props,s=i.stackId;if(Ot(s)){var a=n[s];if(a){var o=a.items.indexOf(t);return o>=0?a.stackedData[o]:null}}return null},jK=function(t){return t.reduce(function(n,r){return[Rc(r.concat([n[0]]).filter(re)),Nc(r.concat([n[1]]).filter(re))]},[1/0,-1/0])},MA=function(t,n,r){return Object.keys(t).reduce(function(i,s){var a=t[s],o=a.stackedData,l=o.reduce(function(u,c){var p=jK(c.slice(n,r+1));return[Math.min(u[0],p[0]),Math.max(u[1],p[1])]},[1/0,-1/0]);return[Math.min(l[0],i[0]),Math.max(l[1],i[1])]},[1/0,-1/0]).map(function(i){return i===1/0||i===-1/0?0:i})},s0=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,a0=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Nm=function(t,n,r){if(Oe(t))return t(n,r);if(!Array.isArray(t))return n;var i=[];if(re(t[0]))i[0]=r?t[0]:Math.min(t[0],n[0]);else if(s0.test(t[0])){var s=+s0.exec(t[0])[1];i[0]=n[0]-s}else Oe(t[0])?i[0]=t[0](n[0]):i[0]=n[0];if(re(t[1]))i[1]=r?t[1]:Math.max(t[1],n[1]);else if(a0.test(t[1])){var a=+a0.exec(t[1])[1];i[1]=n[1]+a}else Oe(t[1])?i[1]=t[1](n[1]):i[1]=n[1];return i},ku=function(t,n,r){if(t&&t.scale&&t.scale.bandwidth){var i=t.scale.bandwidth();if(!r||i>0)return i}if(t&&n&&n.length>=2){for(var s=bh(n,function(p){return p.coordinate}),a=1/0,o=1,l=s.length;o<l;o++){var u=s[o],c=s[o-1];a=Math.min((u.coordinate||0)-(c.coordinate||0),a)}return a===1/0?0:a}return r?void 0:0},o0=function(t,n,r){return!t||!t.length||Wh(t,Cn(r,"type.defaultProps.domain"))?n:t},NA=function(t,n){var r=t.type.defaultProps?yt(yt({},t.type.defaultProps),t.props):t.props,i=r.dataKey,s=r.name,a=r.unit,o=r.formatter,l=r.tooltipType,u=r.chartType,c=r.hide;return yt(yt({},Ge(t,!1)),{},{dataKey:i,unit:a,formatter:o,name:s||i,color:Gh(t),value:cr(n,i),type:l,payload:n,chartType:u,hide:c})};function qo(e){"@babel/helpers - typeof";return qo=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},qo(e)}function l0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function vr(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?l0(Object(n),!0).forEach(function(r){RA(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function RA(e,t,n){return t=PK(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function PK(e){var t=TK(e,"string");return qo(t)=="symbol"?t:t+""}function TK(e,t){if(qo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(qo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function IK(e,t){return NK(e)||MK(e,t)||LK(e,t)||OK()}function OK(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
347In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function LK(e,t){if(e){if(typeof e=="string")return u0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u0(e,t)}}function u0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function MK(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function NK(e){if(Array.isArray(e))return e}var Cu=Math.PI/180,RK=function(t){return t*180/Math.PI},zt=function(t,n,r,i){return{x:t+Math.cos(-Cu*i)*r,y:n+Math.sin(-Cu*i)*r}},$K=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(r.left||0)-(r.right||0)),Math.abs(n-(r.top||0)-(r.bottom||0)))/2},Jde=function(t,n,r,i,s){var a=t.width,o=t.height,l=t.startAngle,u=t.endAngle,c=Hn(t.cx,a,a/2),p=Hn(t.cy,o,o/2),f=$K(a,o,r),m=Hn(t.innerRadius,f,0),g=Hn(t.outerRadius,f,f*.8),h=Object.keys(n);return h.reduce(function(v,b){var w=n[b],y=w.domain,A=w.reversed,q;if(Re(w.range))i==="angleAxis"?q=[l,u]:i==="radiusAxis"&&(q=[m,g]),A&&(q=[q[1],q[0]]);else{q=w.range;var x=q,_=IK(x,2);l=_[0],u=_[1]}var I=IA(w,s),S=I.realScaleType,k=I.scale;k.domain(y).range(q),OA(k);var C=LA(k,vr(vr({},w),{},{realScaleType:S})),T=vr(vr(vr({},w),C),{},{range:q,radius:g,realScaleType:S,scale:k,cx:c,cy:p,innerRadius:m,outerRadius:g,startAngle:l,endAngle:u});return vr(vr({},v),{},RA({},b,T))},{})},DK=function(t,n){var r=t.x,i=t.y,s=n.x,a=n.y;return Math.sqrt(Math.pow(r-s,2)+Math.pow(i-a,2))},FK=function(t,n){var r=t.x,i=t.y,s=n.cx,a=n.cy,o=DK({x:r,y:i},{x:s,y:a});if(o<=0)return{radius:o};var l=(r-s)/o,u=Math.acos(l);return i>a&&(u=2*Math.PI-u),{radius:o,angle:RK(u),angleInRadian:u}},UK=function(t){var n=t.startAngle,r=t.endAngle,i=Math.floor(n/360),s=Math.floor(r/360),a=Math.min(i,s);return{startAngle:n-a*360,endAngle:r-a*360}},zK=function(t,n){var r=n.startAngle,i=n.endAngle,s=Math.floor(r/360),a=Math.floor(i/360),o=Math.min(s,a);return t+o*360},c0=function(t,n){var r=t.x,i=t.y,s=FK({x:r,y:i},n),a=s.radius,o=s.angle,l=n.innerRadius,u=n.outerRadius;if(a<l||a>u)return!1;if(a===0)return!0;var c=UK(n),p=c.startAngle,f=c.endAngle,m=o,g;if(p<=f){for(;m>f;)m-=360;for(;m<p;)m+=360;g=m>=p&&m<=f}else{for(;m>p;)m-=360;for(;m<f;)m+=360;g=m>=f&&m<=p}return g?vr(vr({},n),{},{radius:a,angle:zK(m,n)}):null},Yde=function(t){return!E.isValidElement(t)&&!Oe(t)&&typeof t!="boolean"?t.className:""};function So(e){"@babel/helpers - typeof";return So=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},So(e)}var BK=["offset"];function WK(e){return KK(e)||GK(e)||VK(e)||HK()}function HK(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
348In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function VK(e,t){if(e){if(typeof e=="string")return Rm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Rm(e,t)}}function GK(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function KK(e){if(Array.isArray(e))return Rm(e)}function Rm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function XK(e,t){if(e==null)return{};var n=QK(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function QK(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function d0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Tt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?d0(Object(n),!0).forEach(function(r){JK(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function JK(e,t,n){return t=YK(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function YK(e){var t=ZK(e,"string");return So(t)=="symbol"?t:t+""}function ZK(e,t){if(So(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(So(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}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 r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ao.apply(this,arguments)}var eX=function(t){var n=t.value,r=t.formatter,i=Re(t.children)?n:t.children;return Oe(r)?r(i):i},tX=function(t,n){var r=Wn(n-t),i=Math.min(Math.abs(n-t),360);return r*i},nX=function(t,n,r){var i=t.position,s=t.viewBox,a=t.offset,o=t.className,l=s,u=l.cx,c=l.cy,p=l.innerRadius,f=l.outerRadius,m=l.startAngle,g=l.endAngle,h=l.clockWise,v=(p+f)/2,b=tX(m,g),w=b>=0?1:-1,y,A;i==="insideStart"?(y=m+w*a,A=h):i==="insideEnd"?(y=g-w*a,A=!h):i==="end"&&(y=g+w*a,A=h),A=b<=0?A:!A;var q=zt(u,c,v,y),x=zt(u,c,v,y+(A?1:-1)*359),_="M".concat(q.x,",").concat(q.y,`
349    A`).concat(v,",").concat(v,",0,1,").concat(A?0:1,`,
350    `).concat(x.x,",").concat(x.y),I=Re(t.id)?qc("recharts-radial-line-"):t.id;return O.createElement("text",Ao({},r,{dominantBaseline:"central",className:Le("recharts-radial-bar-label",o)}),O.createElement("defs",null,O.createElement("path",{id:I,d:_})),O.createElement("textPath",{xlinkHref:"#".concat(I)},n))},rX=function(t){var n=t.viewBox,r=t.offset,i=t.position,s=n,a=s.cx,o=s.cy,l=s.innerRadius,u=s.outerRadius,c=s.startAngle,p=s.endAngle,f=(c+p)/2;if(i==="outside"){var m=zt(a,o,u+r,f),g=m.x,h=m.y;return{x:g,y:h,textAnchor:g>=a?"start":"end",verticalAnchor:"middle"}}if(i==="center")return{x:a,y:o,textAnchor:"middle",verticalAnchor:"middle"};if(i==="centerTop")return{x:a,y:o,textAnchor:"middle",verticalAnchor:"start"};if(i==="centerBottom")return{x:a,y:o,textAnchor:"middle",verticalAnchor:"end"};var v=(l+u)/2,b=zt(a,o,v,f),w=b.x,y=b.y;return{x:w,y,textAnchor:"middle",verticalAnchor:"middle"}},iX=function(t){var n=t.viewBox,r=t.parentViewBox,i=t.offset,s=t.position,a=n,o=a.x,l=a.y,u=a.width,c=a.height,p=c>=0?1:-1,f=p*i,m=p>0?"end":"start",g=p>0?"start":"end",h=u>=0?1:-1,v=h*i,b=h>0?"end":"start",w=h>0?"start":"end";if(s==="top"){var y={x:o+u/2,y:l-p*i,textAnchor:"middle",verticalAnchor:m};return Tt(Tt({},y),r?{height:Math.max(l-r.y,0),width:u}:{})}if(s==="bottom"){var A={x:o+u/2,y:l+c+f,textAnchor:"middle",verticalAnchor:g};return Tt(Tt({},A),r?{height:Math.max(r.y+r.height-(l+c),0),width:u}:{})}if(s==="left"){var q={x:o-v,y:l+c/2,textAnchor:b,verticalAnchor:"middle"};return Tt(Tt({},q),r?{width:Math.max(q.x-r.x,0),height:c}:{})}if(s==="right"){var x={x:o+u+v,y:l+c/2,textAnchor:w,verticalAnchor:"middle"};return Tt(Tt({},x),r?{width:Math.max(r.x+r.width-x.x,0),height:c}:{})}var _=r?{width:u,height:c}:{};return s==="insideLeft"?Tt({x:o+v,y:l+c/2,textAnchor:w,verticalAnchor:"middle"},_):s==="insideRight"?Tt({x:o+u-v,y:l+c/2,textAnchor:b,verticalAnchor:"middle"},_):s==="insideTop"?Tt({x:o+u/2,y:l+f,textAnchor:"middle",verticalAnchor:g},_):s==="insideBottom"?Tt({x:o+u/2,y:l+c-f,textAnchor:"middle",verticalAnchor:m},_):s==="insideTopLeft"?Tt({x:o+v,y:l+f,textAnchor:w,verticalAnchor:g},_):s==="insideTopRight"?Tt({x:o+u-v,y:l+f,textAnchor:b,verticalAnchor:g},_):s==="insideBottomLeft"?Tt({x:o+v,y:l+c-f,textAnchor:w,verticalAnchor:m},_):s==="insideBottomRight"?Tt({x:o+u-v,y:l+c-f,textAnchor:b,verticalAnchor:m},_):na(s)&&(re(s.x)||bi(s.x))&&(re(s.y)||bi(s.y))?Tt({x:o+Hn(s.x,u),y:l+Hn(s.y,c),textAnchor:"end",verticalAnchor:"end"},_):Tt({x:o+u/2,y:l+c/2,textAnchor:"middle",verticalAnchor:"middle"},_)},sX=function(t){return"cx"in t&&re(t.cx)};function Xt(e){var t=e.offset,n=t===void 0?5:t,r=XK(e,BK),i=Tt({offset:n},r),s=i.viewBox,a=i.position,o=i.value,l=i.children,u=i.content,c=i.className,p=c===void 0?"":c,f=i.textBreakAll;if(!s||Re(o)&&Re(l)&&!E.isValidElement(u)&&!Oe(u))return null;if(E.isValidElement(u))return E.cloneElement(u,i);var m;if(Oe(u)){if(m=E.createElement(u,i),E.isValidElement(m))return m}else m=eX(i);var g=sX(s),h=Ge(i,!0);if(g&&(a==="insideStart"||a==="insideEnd"||a==="end"))return nX(i,m,h);var v=g?rX(i):iX(i);return O.createElement(mu,Ao({className:Le("recharts-label",p)},h,v,{breakAll:f}),m)}Xt.displayName="Label";var $A=function(t){var n=t.cx,r=t.cy,i=t.angle,s=t.startAngle,a=t.endAngle,o=t.r,l=t.radius,u=t.innerRadius,c=t.outerRadius,p=t.x,f=t.y,m=t.top,g=t.left,h=t.width,v=t.height,b=t.clockWise,w=t.labelViewBox;if(w)return w;if(re(h)&&re(v)){if(re(p)&&re(f))return{x:p,y:f,width:h,height:v};if(re(m)&&re(g))return{x:m,y:g,width:h,height:v}}return re(p)&&re(f)?{x:p,y:f,width:0,height:0}:re(n)&&re(r)?{cx:n,cy:r,startAngle:s||i||0,endAngle:a||i||0,innerRadius:u||0,outerRadius:c||l||o||0,clockWise:b}:t.viewBox?t.viewBox:{}},aX=function(t,n){return t?t===!0?O.createElement(Xt,{key:"label-implicit",viewBox:n}):Ot(t)?O.createElement(Xt,{key:"label-implicit",viewBox:n,value:t}):E.isValidElement(t)?t.type===Xt?E.cloneElement(t,{key:"label-implicit",viewBox:n}):O.createElement(Xt,{key:"label-implicit",content:t,viewBox:n}):Oe(t)?O.createElement(Xt,{key:"label-implicit",content:t,viewBox:n}):na(t)?O.createElement(Xt,Ao({viewBox:n},t,{key:"label-implicit"})):null:null},oX=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!t||!t.children&&r&&!t.label)return null;var i=t.children,s=$A(t),a=Vn(i,Xt).map(function(l,u){return E.cloneElement(l,{viewBox:n||s,key:"label-".concat(u)})});if(!r)return a;var o=aX(t.label,n||s);return[o].concat(WK(a))};Xt.parseViewBox=$A;Xt.renderCallByParent=oX;function lX(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var uX=lX;const cX=De(uX);function Eo(e){"@babel/helpers - typeof";return Eo=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},Eo(e)}var dX=["valueAccessor"],pX=["data","dataKey","clockWise","id","textBreakAll"];function mX(e){return vX(e)||gX(e)||hX(e)||fX()}function fX(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
351In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function hX(e,t){if(e){if(typeof e=="string")return $m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $m(e,t)}}function gX(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function vX(e){if(Array.isArray(e))return $m(e)}function $m(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ju(){return ju=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ju.apply(this,arguments)}function p0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function m0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?p0(Object(n),!0).forEach(function(r){yX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function yX(e,t,n){return t=bX(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bX(e){var t=xX(e,"string");return Eo(t)=="symbol"?t:t+""}function xX(e,t){if(Eo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Eo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function f0(e,t){if(e==null)return{};var n=wX(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function wX(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var qX=function(t){return Array.isArray(t.value)?cX(t.value):t.value};function Oi(e){var t=e.valueAccessor,n=t===void 0?qX:t,r=f0(e,dX),i=r.data,s=r.dataKey,a=r.clockWise,o=r.id,l=r.textBreakAll,u=f0(r,pX);return!i||!i.length?null:O.createElement(Rt,{className:"recharts-label-list"},i.map(function(c,p){var f=Re(s)?n(c,p):cr(c&&c.payload,s),m=Re(o)?{}:{id:"".concat(o,"-").concat(p)};return O.createElement(Xt,ju({},Ge(c,!0),u,m,{parentViewBox:c.parentViewBox,value:f,textBreakAll:l,viewBox:Xt.parseViewBox(Re(a)?c:m0(m0({},c),{},{clockWise:a})),key:"label-".concat(p),index:p}))}))}Oi.displayName="LabelList";function SX(e,t){return e?e===!0?O.createElement(Oi,{key:"labelList-implicit",data:t}):O.isValidElement(e)||Oe(e)?O.createElement(Oi,{key:"labelList-implicit",data:t,content:e}):na(e)?O.createElement(Oi,ju({data:t},e,{key:"labelList-implicit"})):null:null}function AX(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&n&&!e.label)return null;var r=e.children,i=Vn(r,Oi).map(function(a,o){return E.cloneElement(a,{data:t,key:"labelList-".concat(o)})});if(!n)return i;var s=SX(e.label,t);return[s].concat(mX(i))}Oi.renderCallByParent=AX;function _o(e){"@babel/helpers - typeof";return _o=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},_o(e)}function Dm(){return Dm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dm.apply(this,arguments)}function h0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function g0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?h0(Object(n),!0).forEach(function(r){EX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function EX(e,t,n){return t=_X(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _X(e){var t=kX(e,"string");return _o(t)=="symbol"?t:t+""}function kX(e,t){if(_o(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(_o(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var CX=function(t,n){var r=Wn(n-t),i=Math.min(Math.abs(n-t),359.999);return r*i},_l=function(t){var n=t.cx,r=t.cy,i=t.radius,s=t.angle,a=t.sign,o=t.isExternal,l=t.cornerRadius,u=t.cornerIsExternal,c=l*(o?1:-1)+i,p=Math.asin(l/c)/Cu,f=u?s:s+a*p,m=zt(n,r,c,f),g=zt(n,r,i,f),h=u?s-a*p:s,v=zt(n,r,c*Math.cos(p*Cu),h);return{center:m,circleTangency:g,lineTangency:v,theta:p}},DA=function(t){var n=t.cx,r=t.cy,i=t.innerRadius,s=t.outerRadius,a=t.startAngle,o=t.endAngle,l=CX(a,o),u=a+l,c=zt(n,r,s,a),p=zt(n,r,s,u),f="M ".concat(c.x,",").concat(c.y,`
352    A `).concat(s,",").concat(s,`,0,
353    `).concat(+(Math.abs(l)>180),",").concat(+(a>u),`,
354    `).concat(p.x,",").concat(p.y,`
355  `);if(i>0){var m=zt(n,r,i,a),g=zt(n,r,i,u);f+="L ".concat(g.x,",").concat(g.y,`
356            A `).concat(i,",").concat(i,`,0,
357            `).concat(+(Math.abs(l)>180),",").concat(+(a<=u),`,
358            `).concat(m.x,",").concat(m.y," Z")}else f+="L ".concat(n,",").concat(r," Z");return f},jX=function(t){var n=t.cx,r=t.cy,i=t.innerRadius,s=t.outerRadius,a=t.cornerRadius,o=t.forceCornerRadius,l=t.cornerIsExternal,u=t.startAngle,c=t.endAngle,p=Wn(c-u),f=_l({cx:n,cy:r,radius:s,angle:u,sign:p,cornerRadius:a,cornerIsExternal:l}),m=f.circleTangency,g=f.lineTangency,h=f.theta,v=_l({cx:n,cy:r,radius:s,angle:c,sign:-p,cornerRadius:a,cornerIsExternal:l}),b=v.circleTangency,w=v.lineTangency,y=v.theta,A=l?Math.abs(u-c):Math.abs(u-c)-h-y;if(A<0)return o?"M ".concat(g.x,",").concat(g.y,`
359        a`).concat(a,",").concat(a,",0,0,1,").concat(a*2,`,0
360        a`).concat(a,",").concat(a,",0,0,1,").concat(-a*2,`,0
361      `):DA({cx:n,cy:r,innerRadius:i,outerRadius:s,startAngle:u,endAngle:c});var q="M ".concat(g.x,",").concat(g.y,`
362    A`).concat(a,",").concat(a,",0,0,").concat(+(p<0),",").concat(m.x,",").concat(m.y,`
363    A`).concat(s,",").concat(s,",0,").concat(+(A>180),",").concat(+(p<0),",").concat(b.x,",").concat(b.y,`
364    A`).concat(a,",").concat(a,",0,0,").concat(+(p<0),",").concat(w.x,",").concat(w.y,`
365  `);if(i>0){var x=_l({cx:n,cy:r,radius:i,angle:u,sign:p,isExternal:!0,cornerRadius:a,cornerIsExternal:l}),_=x.circleTangency,I=x.lineTangency,S=x.theta,k=_l({cx:n,cy:r,radius:i,angle:c,sign:-p,isExternal:!0,cornerRadius:a,cornerIsExternal:l}),C=k.circleTangency,T=k.lineTangency,M=k.theta,L=l?Math.abs(u-c):Math.abs(u-c)-S-M;if(L<0&&a===0)return"".concat(q,"L").concat(n,",").concat(r,"Z");q+="L".concat(T.x,",").concat(T.y,`
366      A`).concat(a,",").concat(a,",0,0,").concat(+(p<0),",").concat(C.x,",").concat(C.y,`
367      A`).concat(i,",").concat(i,",0,").concat(+(L>180),",").concat(+(p>0),",").concat(_.x,",").concat(_.y,`
368      A`).concat(a,",").concat(a,",0,0,").concat(+(p<0),",").concat(I.x,",").concat(I.y,"Z")}else q+="L".concat(n,",").concat(r,"Z");return q},PX={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},FA=function(t){var n=g0(g0({},PX),t),r=n.cx,i=n.cy,s=n.innerRadius,a=n.outerRadius,o=n.cornerRadius,l=n.forceCornerRadius,u=n.cornerIsExternal,c=n.startAngle,p=n.endAngle,f=n.className;if(a<s||c===p)return null;var m=Le("recharts-sector",f),g=a-s,h=Hn(o,g,0,!0),v;return h>0&&Math.abs(c-p)<360?v=jX({cx:r,cy:i,innerRadius:s,outerRadius:a,cornerRadius:Math.min(h,g/2),forceCornerRadius:l,cornerIsExternal:u,startAngle:c,endAngle:p}):v=DA({cx:r,cy:i,innerRadius:s,outerRadius:a,startAngle:c,endAngle:p}),O.createElement("path",Dm({},Ge(n,!0),{className:m,d:v,role:"img"}))};function ko(e){"@babel/helpers - typeof";return ko=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},ko(e)}function Fm(){return Fm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fm.apply(this,arguments)}function v0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function y0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?v0(Object(n),!0).forEach(function(r){TX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function TX(e,t,n){return t=IX(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function IX(e){var t=OX(e,"string");return ko(t)=="symbol"?t:t+""}function OX(e,t){if(ko(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(ko(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var b0={curveBasisClosed:C4,curveBasisOpen:j4,curveBasis:k4,curveBumpX:m4,curveBumpY:f4,curveLinearClosed:P4,curveLinear:Ec,curveMonotoneX:T4,curveMonotoneY:I4,curveNatural:O4,curveStep:L4,curveStepAfter:N4,curveStepBefore:M4},kl=function(t){return t.x===+t.x&&t.y===+t.y},Ca=function(t){return t.x},ja=function(t){return t.y},LX=function(t,n){if(Oe(t))return t;var r="curve".concat(Sc(t));return(r==="curveMonotone"||r==="curveBump")&&n?b0["".concat(r).concat(n==="vertical"?"Y":"X")]:b0[r]||Ec},MX=function(t){var n=t.type,r=n===void 0?"linear":n,i=t.points,s=i===void 0?[]:i,a=t.baseLine,o=t.layout,l=t.connectNulls,u=l===void 0?!1:l,c=LX(r,o),p=u?s.filter(function(h){return kl(h)}):s,f;if(Array.isArray(a)){var m=u?a.filter(function(h){return kl(h)}):a,g=p.map(function(h,v){return y0(y0({},h),{},{base:m[v]})});return o==="vertical"?f=vl().y(ja).x1(Ca).x0(function(h){return h.base.x}):f=vl().x(Ca).y1(ja).y0(function(h){return h.base.y}),f.defined(kl).curve(c),f(g)}return o==="vertical"&&re(a)?f=vl().y(ja).x1(Ca).x0(a):re(a)?f=vl().x(Ca).y1(ja).y0(a):f=$q().x(Ca).y(ja),f.defined(kl).curve(c),f(p)},x0=function(t){var n=t.className,r=t.points,i=t.path,s=t.pathRef;if((!r||!r.length)&&!i)return null;var a=r&&r.length?MX(t):i;return E.createElement("path",Fm({},Ge(t,!1),Yl(t),{className:Le("recharts-curve",n),d:a,ref:s}))},UA={exports:{}},NX="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",RX=NX,$X=RX;function zA(){}function BA(){}BA.resetWarningCache=zA;var DX=function(){function e(r,i,s,a,o,l){if(l!==$X){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol
368:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:BA,resetWarningCache:zA};return n.PropTypes=n,n};UA.exports=DX();var FX=UA.exports;const He=De(FX);var UX=Object.getOwnPropertyNames,zX=Object.getOwnPropertySymbols,BX=Object.prototype.hasOwnProperty;function w0(e,t){return function(r,i,s){return e(r,i,s)&&t(r,i,s)}}function Cl(e){return function(n,r,i){if(!n||!r||typeof n!="object"||typeof r!="object")return e(n,r,i);var s=i.cache,a=s.get(n),o=s.get(r);if(a&&o)return a===r&&o===n;s.set(n,r),s.set(r,n);var l=e(n,r,i);return s.delete(n),s.delete(r),l}}function q0(e){return UX(e).concat(zX(e))}var WX=Object.hasOwn||function(e,t){return BX.call(e,t)};function zi(e,t){return e===t||!e&&!t&&e!==e&&t!==t}var HX="__v",VX="__o",GX="_owner",S0=Object.getOwnPropertyDescriptor,A0=Object.keys;function KX(e,t,n){var r=e.length;if(t.length!==r)return!1;for(;r-- >0;)if(!n.equals(e[r],t[r],r,r,e,t,n))return!1;return!0}function XX(e,t){return zi(e.getTime(),t.getTime())}function QX(e,t){return e.name===t.name&&e.message===t.message&&e.cause===t.cause&&e.stack===t.stack}function JX(e,t){return e===t}function E0(e,t,n){var r=e.size;if(r!==t.size)return!1;if(!r)return!0;for(var i=new Array(r),s=e.entries(),a,o,l=0;(a=s.next())&&!a.done;){for(var u=t.entries(),c=!1,p=0;(o=u.next())&&!o.done;){if(i[p]){p++;continue}var f=a.value,m=o.value;if(n.equals(f[0],m[0],l,p,e,t,n)&&n.equals(f[1],m[1],f[0],m[0],e,t,n)){c=i[p]=!0;break}p++}if(!c)return!1;l++}return!0}var YX=zi;function ZX(e,t,n){var r=A0(e),i=r.length;if(A0(t).length!==i)return!1;for(;i-- >0;)if(!WA(e,t,n,r[i]))return!1;return!0}function Pa(e,t,n){var r=q0(e),i=r.length;if(q0(t).length!==i)return!1;for(var s,a,o;i-- >0;)if(s=r[i],!WA(e,t,n,s)||(a=S0(e,s),o=S0(t,s),(a||o)&&(!a||!o||a.configurable!==o.configurable||a.enumerable!==o.enumerable||a.writable!==o.writable)))return!1;return!0}function eQ(e,t){return zi(e.valueOf(),t.valueOf())}function tQ(e,t){return e.source===t.source&&e.flags===t.flags}function _0(e,t,n){var r=e.size;if(r!==t.size)return!1;if(!r)return!0;for(var i=new Array(r),s=e.values(),a,o;(a=s.next())&&!a.done;){for(var l=t.values(),u=!1,c=0;(o=l.next())&&!o.done;){if(!i[c]&&n.equals(a.value,o.value,a.value,o.value,e,t,n)){u=i[c]=!0;break}c++}if(!u)return!1}return!0}function nQ(e,t){var n=e.length;if(t.length!==n)return!1;for(;n-- >0;)if(e[n]!==t[n])return!1;return!0}function rQ(e,t){return e.hostname===t.hostname&&e.pathname===t.pathname&&e.protocol===t.protocol&&e.port===t.port&&e.hash===t.hash&&e.username===t.username&&e.password===t.password}function WA(e,t,n,r){return(r===GX||r===VX||r===HX)&&(e.$$typeof||t.$$typeof)?!0:WX(t,r)&&n.equals(e[r],t[r],r,r,e,t,n)}var iQ="[object Arguments]",sQ="[object Boolean]",aQ="[object Date]",oQ="[object Error]",lQ="[object Map]",uQ="[object Number]",cQ="[object Object]",dQ="[object RegExp]",pQ="[object Set]",mQ="[object String]",fQ="[object URL]",hQ=Array.isArray,k0=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,C0=Object.assign,gQ=Object.prototype.toString.call.bind(Object.prototype.toString);function vQ(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areErrorsEqual,i=e.areFunctionsEqual,s=e.areMapsEqual,a=e.areNumbersEqual,o=e.areObjectsEqual,l=e.arePrimitiveWrappersEqual,u=e.areRegExpsEqual,c=e.areSetsEqual,p=e.areTypedArraysEqual,f=e.areUrlsEqual;return function(g,h,v){if(g===h)return!0;if(g==null||h==null)return!1;var b=typeof g;if(b!==typeof h)return!1;if(b!=="object")return b==="number"?a(g,h,v):b==="function"?i(g,h,v):!1;var w=g.constructor;if(w!==h.constructor)return!1;if(w===Object)return o(g,h,v);if(hQ(g))return t(g,h,v);if(k0!=null&&k0(g))return p(g,h,v);if(w===Date)return n(g,h,v);if(w===RegExp)return u(g,h,v);if(w===Map)return s(g,h,v);if(w===Set)return c(g,h,v);var y=gQ(g);return y===aQ?n(g,h,v):y===dQ?u(g,h,v):y===lQ?s(g,h,v):y===pQ?c(g,h,v):y===cQ?typeof g.then!="function"&&typeof h.then!="function"&&o(g,h,v):y===fQ?f(g,h,v):y===oQ?r(g,h,v):y===iQ?o(g,h,v):y===sQ||y===uQ||y===mQ?l(g,h,v):!1}}
368function yQ(e){var t=e.circular,n=e.createCustomConfig,r=e.strict,i={areArraysEqual:r?Pa:KX,areDatesEqual:XX,areErrorsEqual:QX,areFunctionsEqual:JX,areMapsEqual:r?w0(E0,Pa):E0,areNumbersEqual:YX,areObjectsEqual:r?Pa:ZX,arePrimitiveWrappersEqual:eQ,areRegExpsEqual:tQ,areSetsEqual:r?w0(_0,Pa):_0,areTypedArraysEqual:r?Pa:nQ,areUrlsEqual:rQ};if(n&&(i=C0({},i,n(i))),t){var s=Cl(i.areArraysEqual),a=Cl(i.areMapsEqual),o=Cl(i.areObjectsEqual),l=Cl(i.areSetsEqual);i=C0({},i,{areArraysEqual:s,areMapsEqual:a,areObjectsEqual:o,areSetsEqual:l})}return i}function bQ(e){return function(t,n,r,i,s,a,o){return e(t,n,o)}}function xQ(e){var t=e.circular,n=e.comparator,r=e.createState,i=e.equals,s=e.strict;if(r)return function(l,u){var c=r(),p=c.cache,f=p===void 0?t?new WeakMap:void 0:p,m=c.meta;return n(l,u,{cache:f,equals:i,meta:m,strict:s})};if(t)return function(l,u){return n(l,u,{cache:new WeakMap,equals:i,meta:void 0,strict:s})};var a={cache:void 0,equals:i,meta:void 0,strict:s};return function(l,u){return n(l,u,a)}}var wQ=ri();ri({strict:!0});ri({circular:!0});ri({circular:!0,strict:!0});ri({createInternalComparator:function(){return zi}});ri({strict:!0,createInternalComparator:function(){return zi}});ri({circular:!0,createInternalComparator:function(){return zi}});ri({circular:!0,createInternalComparator:function(){return zi},strict:!0});function ri(e){e===void 0&&(e={});var t=e.circular,n=t===void 0?!1:t,r=e.createInternalComparator,i=e.createState,s=e.strict,a=s===void 0?!1:s,o=yQ(e),l=vQ(o),u=r?r(l):bQ(l);return xQ({circular:n,comparator:l,createState:i,equals:u,strict:a})}function qQ(e){typeof requestAnimationFrame<"u"&&requestAnimationFrame(e)}function j0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=-1,r=function i(s){n<0&&(n=s),s-n>t?(e(s),n=-1):qQ(i)};requestAnimationFrame(r)}function Um(e){"@babel/helpers - typeof";return Um=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},Um(e)}function SQ(e){return kQ(e)||_Q(e)||EQ(e)||AQ()}function AQ(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
369In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function EQ(e,t){if(e){if(typeof e=="string")return P0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P0(e,t)}}function P0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _Q(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function kQ(e){if(Array.isArray(e))return e}function CQ(){var e={},t=function(){return null},n=!1,r=function i(s){if(!n){if(Array.isArray(s)){if(!s.length)return;var a=s,o=SQ(a),l=o[0],u=o.slice(1);if(typeof l=="number"){j0(i.bind(null,u),l);return}i(l),j0(i.bind(null,u));return}Um(s)==="object"&&(e=s,t(e)),typeof s=="function"&&s()}};return{stop:function(){n=!0},start:function(s){n=!1,r(s)},subscribe:function(s){return t=s,function(){t=function(){return null}}}}}function Co(e){"@babel/helpers - typeof";return Co=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},Co(e)}function T0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function I0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?T0(Object(n),!0).forEach(function(r){HA(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):T0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function HA(e,t,n){return t=jQ(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jQ(e){var t=PQ(e,"string");return Co(t)==="symbol"?t:String(t)}function PQ(e,t){if(Co(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Co(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var TQ=function(t,n){return[Object.keys(t),Object.keys(n)].reduce(function(r,i){return r.filter(function(s){return i.includes(s)})})},IQ=function(t){return t},OQ=function(t){return t.replace(/([A-Z])/g,function(n){return"-".concat(n.toLowerCase())})},Xa=function(t,n){return Object.keys(n).reduce(function(r,i){return I0(I0({},r),{},HA({},i,t(i,n[i])))},{})},O0=function(t,n,r){return t.map(function(i){return"".concat(OQ(i)," ").concat(n,"ms ").concat(r)}).join(",")};function LQ(e,t){return RQ(e)||NQ(e,t)||VA(e,t)||MQ()}
vendor: 22,520 bytes, lines 369-385
369function MQ(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
370In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function NQ(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function RQ(e){if(Array.isArray(e))return e}function $Q(e){return UQ(e)||FQ(e)||VA(e)||DQ()}function DQ(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
371In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function VA(e,t){if(e){if(typeof e=="string")return zm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return zm(e,t)}}function FQ(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function UQ(e){if(Array.isArray(e))return zm(e)}function zm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Pu=1e-4,GA=function(t,n){return[0,3*t,3*n-6*t,3*t-3*n+1]},KA=function(t,n){return t.map(function(r,i){return r*Math.pow(n,i)}).reduce(function(r,i){return r+i})},L0=function(t,n){return function(r){var i=GA(t,n);return KA(i,r)}},zQ=function(t,n){return function(r){var i=GA(t,n),s=[].concat($Q(i.map(function(a,o){return a*o}).slice(1)),[0]);return KA(s,r)}},M0=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var i=n[0],s=n[1],a=n[2],o=n[3];if(n.length===1)switch(n[0]){case"linear":i=0,s=0,a=1,o=1;break;case"ease":i=.25,s=.1,a=.25,o=1;break;case"ease-in":i=.42,s=0,a=1,o=1;break;case"ease-out":i=.42,s=0,a=.58,o=1;break;case"ease-in-out":i=0,s=0,a=.58,o=1;break;default:{var l=n[0].split("(");if(l[0]==="cubic-bezier"&&l[1].split(")")[0].split(",").length===4){var u=l[1].split(")")[0].split(",").map(function(v){return parseFloat(v)}),c=LQ(u,4);i=c[0],s=c[1],a=c[2],o=c[3]}}}var p=L0(i,a),f=L0(s,o),m=zQ(i,a),g=function(b){return b>1?1:b<0?0:b},h=function(b){for(var w=b>1?1:b,y=w,A=0;A<8;++A){var q=p(y)-w,x=m(y);if(Math.abs(q-w)<Pu||x<Pu)return f(y);y=g(y-q/x)}return f(y)};return h.isStepper=!1,h},BQ=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.stiff,r=n===void 0?100:n,i=t.damping,s=i===void 0?8:i,a=t.dt,o=a===void 0?17:a,l=function(c,p,f){var m=-(c-p)*r,g=f*s,h=f+(m-g)*o/1e3,v=f*o/1e3+c;return Math.abs(v-p)<Pu&&Math.abs(h)<Pu?[p,0]:[v,h]};return l.isStepper=!0,l.dt=o,l},WQ=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var i=n[0];if(typeof i=="string")switch(i){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return M0(i);case"spring":return BQ();default:if(i.split("(")[0]==="cubic-bezier")return M0(i)}return typeof i=="function"?i:null};function jo(e){"@babel/helpers - typeof";return jo=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},jo(e)}function N0(e){return GQ(e)||VQ(e)||XA(e)||HQ()}function HQ(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
372In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function VQ(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function GQ(e){if(Array.isArray(e))return Wm(e)}function R0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Ut(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?R0(Object(n),!0).forEach(function(r){Bm(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):R0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Bm(e,t,n){return t=KQ(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function KQ(e){var t=XQ(e,"string");return jo(t)==="symbol"?t:String(t)}function XQ(e,t){if(jo(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(jo(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function QQ(e,t){return ZQ(e)||YQ(e,t)||XA(e,t)||JQ()}function JQ(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
373In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function XA(e,t){if(e){if(typeof e=="string")return Wm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wm(e,t)}}function Wm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function YQ(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function ZQ(e){if(Array.isArray(e))return e}var Tu=function(t,n,r){return t+(n-t)*r},Hm=function(t){var n=t.from,r=t.to;return n!==r},eJ=function e(t,n,r){var i=Xa(function(s,a){if(Hm(a)){var o=t(a.from,a.to,a.velocity),l=QQ(o,2),u=l[0],c=l[1];return Ut(Ut({},a),{},{from:u,velocity:c})}return a},n);return r<1?Xa(function(s,a){return Hm(a)?Ut(Ut({},a),{},{velocity:Tu(a.velocity,i[s].velocity,r),from:Tu(a.from,i[s].from,r)}):a},n):e(t,i,r-1)};const tJ=function(e,t,n,r,i){var s=TQ(e,t),a=s.reduce(function(v,b){return Ut(Ut({},v),{},Bm({},b,[e[b],t[b]]))},{}),o=s.reduce(function(v,b){return Ut(Ut({},v),{},Bm({},b,{from:e[b],velocity:0,to:t[b]}))},{}),l=-1,u,c,p=function(){return null},f=function(){return Xa(function(b,w){return w.from},o)},m=function(){return!Object.values(o).filter(Hm).length},g=function(b){u||(u=b);var w=b-u,y=w/n.dt;o=eJ(n,o,y),i(Ut(Ut(Ut({},e),t),f())),u=b,m()||(l=requestAnimationFrame(p))},h=function(b){c||(c=b);var w=(b-c)/r,y=Xa(function(q,x){return Tu.apply(void 0,N0(x).concat([n(w)]))},a);if(i(Ut(Ut(Ut({},e),t),y)),w<1)l=requestAnimationFrame(p);else{var A=Xa(function(q,x){return Tu.apply(void 0,N0(x).concat([n(1)]))},a);i(Ut(Ut(Ut({},e),t),A))}};return p=n.isStepper?g:h,function(){return requestAnimationFrame(p),function(){cancelAnimationFrame(l)}}};function $s(e){"@babel/helpers - typeof";return $s=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},$s(e)}var nJ=["children","begin","duration","attributeName","easing","isActive","steps","from","to","canBegin","onAnimationEnd","shouldReAnimate","onAnimationReStart"];function rJ(e,t){if(e==null)return{};var n=iJ(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function iJ(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,s;for(s=0;s<r.length;s++)i=r[s],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Kd(e){return lJ(e)||oJ(e)||aJ(e)||sJ()}function sJ(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
374In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function aJ(e,t){if(e){if(typeof e=="string")return Vm(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Vm(e,t)}}function oJ(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function lJ(e){if(Array.isArray(e))return Vm(e)}function Vm(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Mn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$0(Object(n),!0).forEach(function(r){Ra(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Ra(e,t,n){return t=QA(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function uJ(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function cJ(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,QA(r.key),r)}}function dJ(e,t,n){return t&&cJ(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function QA(e){var t=pJ(e,"string");return $s(t)==="symbol"?t:String(t)}function pJ(e,t){if($s(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if($s(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function mJ(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Gm(e,t)}function Gm(e,t){return Gm=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Gm(e,t)}function fJ(e){var t=hJ();return function(){var r=Iu(e),i;if(t){var s=Iu(this).constructor;i=Reflect.construct(r,arguments,s)}else i=r.apply(this,arguments);return Km(this,i)}}function Km(e,t){if(t&&($s(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Xm(e)}function Xm(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function hJ(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Iu(e){return Iu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Iu(e)}var Jr=function(e){mJ(n,e);var t=fJ(n);function n(r,i){var s;uJ(this,n),s=t.call(this,r,i);var a=s.props,o=a.isActive,l=a.attributeName,u=a.from,c=a.to,p=a.steps,f=a.children,m=a.duration;if(s.handleStyleChange=s.handleStyleChange.bind(Xm(s)),s.changeStyle=s.changeStyle.bind(Xm(s)),!o||m<=0)return s.state={style:{}},typeof f=="function"&&(s.state={style:c}),Km(s);if(p&&p.length)s.state={style:p[0].style};else if(u){if(typeof f=="function")return s.state={style:u},Km(s);s.state={style:l?Ra({},l,u):u}}else s.state={style:{}};return s}return dJ(n,[{key:"componentDidMount",value:function(){var i=this.props,s=i.isActive,a=i.canBegin;this.mounted=!0,!(!s||!a)&&this.runAnimation(this.props)}},{key:"componentDidUpdate",value:function(i){var s=this.props,a=s.isActive,o=s.canBegin,l=s.attributeName,u=s.shouldReAnimate,c=s.to,p=s.from,f=this.state.style;if(o){if(!a){var m={style:l?Ra({},l,c):c};this.state&&f&&(l&&f[l]!==c||!l&&f!==c)&&this.setState(m);return}if(!(wQ(i.to,c)&&i.canBegin&&i.isActive)){var g=!i.canBegin||!i.isActive;this.manager&&this.manager.stop(),this.stopJSAnimation&&this.stopJSAnimation();var h=g||u?p:i.to;if(this.state&&f){var v={style:l?Ra({},l,h):h};(l&&f[l]!==h||!l&&f!==h)&&this.setState(v)}this.runAnimation(Mn(Mn({},this.props),{},{from:h,begin:0}))}}}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var i=this.props.onAnimationEnd;this.unSubscribe&&this.unSubscribe(),this.manager&&(this.manager.stop(),this.manager=null),this.stopJSAnimation&&this.stopJSAnimation(),i&&i()}},{key:"handleStyleChange",value:function(i){this.changeStyle(i)}},{key:"changeStyle",value:function(i){this.mounted&&this.setState({style:i})}},{key:"runJSAnimation",value:function(i){var s=this,a=i.from,o=i.to,l=i.duration,u=i.easing,c=i.begin,p=i.onAnimationEnd,f=i.onAnimationStart,m=tJ(a,o,WQ(u),l,this.changeStyle),g=function(){s.stopJSAnimation=m()};this.manager.start([f,c,g,l,p])}},{key:"runStepAnimation",value:function(i){var s=this,a=i.steps,o=i.begin,l=i.onAnimationStart,u=a[0],c=u.style,p=u.duration,f=p===void 0?0:p,m=function(h,v,b){if(b===0)return h;var w=v.duration,y=v.easing,A=y===void 0?"ease":y,q=v.style,x=v.properties,_=v.onAnimationEnd,I=b>0?a[b-1]:v,S=x||Object.keys(q);if(typeof A=="function"||A==="spring")return[].concat(Kd(h),[s.runJSAnimation.bind(s,{from:I.style,to:q,duration:w,easing:A}),w]);var k=O0(S,w,A),C=Mn(Mn(Mn({},I.style),q),{},{transition:k});return[].concat(Kd(h),[C,w,_]).filter(IQ)};return this.manager.start([l].concat(Kd(a.reduce(m,[c,Math.max(f,o)])),[i.onAnimationEnd]))}},{key:"runAnimation",value:function(i){this.manager||(this.manager=CQ());var s=i.begin,a=i.duration,o=i.attributeName,l=i.to,u=i.easing,c=i.onAnimationStart,p=i.onAnimationEnd,f=i.steps,m=i.children,g=this.manager;if(this.unSubscribe=g.subscribe(this.handleStyleChange),typeof u=="function"||typeof m=="function"||u==="spring"){this.runJSAnimation(i);return}if(f.length>1){this.runStepAnimation(i);return}var h=o?Ra({},o,l):l,v=O0(Object.keys(h),a,u);g.start([c,s,Mn(Mn({},h),{},{transition:v}),a,p])}},{key:"render",value:function(){var i=this.props,s=i.children;i.begin;var a=i.duration;i.attributeName,i.easing;var o=i.isActive;i.steps,i.from,i.to,i.canBegin,i.onAnimationEnd,i.shouldReAnimate,i.onAnimationReStart;var l=rJ(i,nJ),u=E.Children.count(s),c=this.state.style;if(typeof s=="function")return s(c);if(!o||u===0||a<=0)return s;var p=function(m){var g=m.props,h=g.style,v=h===void 0?{}:h,b=g.className,w=E.cloneElement(m,Mn(Mn({},l),{},{style:Mn(Mn({},v),c),className:b}));return w};return u===1?p(E.Children.only(s)):O.createElement("div",null,E.Children.map(s,function(f){return p(f)}))}}]),n}(E.PureComponent);Jr.displayName="Animate";Jr.defaultProps={begin:0,duration:1e3,from:"",to:"",attributeName:"",easing:"ease",isActive:!0,canBegin:!0,steps:[],onAnimationEnd:function(){},onAnimationStart:function(){}};Jr.propTypes={from:He.oneOfType([He.object,He.string]),to:He.oneOfType([He.object,He.string]),attributeName:He.string,duration:He.number,begin:He.number,easing:He.oneOfType([He.string,He.func]),steps:He.arrayOf(He.shape({duration:He.number.isRequired,style:He.object.isRequired,easing:He.oneOfType([He.oneOf(["ease","ease-in","ease-out","ease-in-out","linear"]),He.func]),properties:He.arrayOf("string"),onAnimationEnd:He.func})),children:He.oneOfType([He.node,He.func]),isActive:He.bool,canBegin:He.bool,onAnimationEnd:He.func,shouldReAnimate:He.bool,onAnimationStart:He.func,onAnimationReStart:He.func};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 Ou(){return Ou=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ou.apply(this,arguments)}function gJ(e,t){return xJ(e)||bJ(e,t)||yJ(e,t)||vJ()}function vJ(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
375In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yJ(e,t){if(e){if(typeof e=="string")return D0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return D0(e,t)}}function D0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function bJ(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function xJ(e){if(Array.isArray(e))return e}function F0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function U0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?F0(Object(n),!0).forEach(function(r){wJ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function wJ(e,t,n){return t=qJ(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qJ(e){var t=SJ(e,"string");return Po(t)=="symbol"?t:t+""}function SJ(e,t){if(Po(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Po(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var z0=function(t,n,r,i,s){var a=Math.min(Math.abs(r)/2,Math.abs(i)/2),o=i>=0?1:-1,l=r>=0?1:-1,u=i>=0&&r>=0||i<0&&r<0?1:0,c;if(a>0&&s instanceof Array){for(var p=[0,0,0,0],f=0,m=4;f<m;f++)p[f]=s[f]>a?a:s[f];c="M".concat(t,",").concat(n+o*p[0]),p[0]>0&&(c+="A ".concat(p[0],",").concat(p[0],",0,0,").concat(u,",").concat(t+l*p[0],",").concat(n)),c+="L ".concat(t+r-l*p[1],",").concat(n),p[1]>0&&(c+="A ".concat(p[1],",").concat(p[1],",0,0,").concat(u,`,
376        `).concat(t+r,",").concat(n+o*p[1])),c+="L ".concat(t+r,",").concat(n+i-o*p[2]),p[2]>0&&(c+="A ".concat(p[2],",").concat(p[2],",0,0,").concat(u,`,
377        `).concat(t+r-l*p[2],",").concat(n+i)),c+="L ".concat(t+l*p[3],",").concat(n+i),p[3]>0&&(c+="A ".concat(p[3],",").concat(p[3],",0,0,").concat(u,`,
378        `).concat(t,",").concat(n+i-o*p[3])),c+="Z"}else if(a>0&&s===+s&&s>0){var g=Math.min(a,s);c="M ".concat(t,",").concat(n+o*g,`
379            A `).concat(g,",").concat(g,",0,0,").concat(u,",").concat(t+l*g,",").concat(n,`
380            L `).concat(t+r-l*g,",").concat(n,`
381            A `).concat(g,",").concat(g,",0,0,").concat(u,",").concat(t+r,",").concat(n+o*g,`
382            L `).concat(t+r,",").concat(n+i-o*g,`
383            A `).concat(g,",").concat(g,",0,0,").concat(u,",").concat(t+r-l*g,",").concat(n+i,`
384            L `).concat(t+l*g,",").concat(n+i,`
385            A `).concat(g,",").concat(g,",0,0,").concat(u,",").concat(t,",").concat(n+i-o*g," Z")}else c="M ".concat(t,",").concat(n," h ").concat(r," v ").concat(i," h ").concat(-r," Z");return c},AJ=function(t,n){if(!t||!n)return!1;var r=t.x,i=t.y,s=n.x,a=n.y,o=n.width,l=n.height;if(Math.abs(o)>0&&Math.abs(l)>0){var u=Math.min(s,s+o),c=Math.max(s,s+o),p=Math.min(a,a+l),f=Math.max(a,a+l);return r>=u&&r<=c&&i>=p&&i<=f}return!1},EJ={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},Kh=function(t){var n=U0(U0({},EJ),t),r=E.useRef(),i=E.useState(-1),s=gJ(i,2),a=s[0],o=s[1];E.useEffect(function(){if(r.current&&r.current.getTotalLength)try{var A=r.current.getTotalLength();A&&o(A)}catch{}},[]);var l=n.x,u=n.y,c=n.width,p=n.height,f=n.radius,m=n.className,g=n.animationEasing,h=n.animationDuration,v=n.animationBegin,b=n.isAnimationActive,w=n.isUpdateAnimationActive;if(l!==+l||u!==+u||c!==+c||p!==+p||c===0||p===0)return null;var y=Le("recharts-rectangle",m);return w?O.createElement(Jr,{canBegin:a>0,from:{width:c,height:p,x:l,y:u},to:{width:c,height:p,x:l,y:u},duration:h,animationEasing:g,isActive:w},function(A){var q=A.width,x=A.height,_=A.x,I=A.y;return O.createElement(Jr,{canBegin:a>0,from:"0px ".concat(a===-1?1:a,"px"),to:"".concat(a,"px 0px"),attributeName:"strokeDasharray",begin:v,duration:h,isActive:b,easing:g},O.createElement("path",Ou({},Ge(n,!0),{className:y,d:z0(_,I,q,x,f),ref:r})))}):O.createElement("path",Ou({},Ge(n,!0),{className:y,d:z0(l,u,c,p,f)}))};function Qm(){return Qm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Qm.apply(this,arguments)}var JA=function(t){var n=t.cx,r=t.cy,i=t.r,s=t.className,a=Le("recharts-dot",s);return n===+n&&r===+r&&i===+i?E.createElement("circle",Qm({},Ge(t,!1),Yl(t),{className:a,cx:n,cy:r,r:i})):null};function To(e){"@babel/helpers - typeof";return To=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},To(e)}var _J=["x","y","top","left","width","height","className"];function Jm(){return Jm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jm.apply(this,arguments)}function B0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function kJ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
385t%2?B0(Object(n),!0).forEach(function(r){CJ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):B0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function CJ(e,t,n){return t=jJ(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jJ(e){var t=PJ(e,"string");return To(t)=="symbol"?t:t+""}function PJ(e,t){if(To(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(To(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function TJ(e,t){if(e==null)return{};var n=IJ(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function IJ(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}var OJ=function(t,n,r,i,s,a){return"M".concat(t,",").concat(s,"v").concat(i,"M").concat(a,",").concat(n,"h").concat(r)},LJ=function(t){var n=t.x,r=n===void 0?0:n,i=t.y,s=i===void 0?0:i,a=t.top,o=a===void 0?0:a,l=t.left,u=l===void 0?0:l,c=t.width,p=c===void 0?0:c,f=t.height,m=f===void 0?0:f,g=t.className,h=TJ(t,_J),v=kJ({x:r,y:s,top:o,left:u,width:p,height:m},h);return!re(r)||!re(s)||!re(p)||!re(m)||!re(o)||!re(u)?null:O.createElement("path",Jm({},Ge(v,!0),{className:Le("recharts-cross",g),d:OJ(r,s,p,m,o,u)}))},MJ=lS,NJ=MJ(Object.getPrototypeOf,Object),RJ=NJ,$J=jr,DJ=RJ,FJ=Pr,UJ="[object Object]",zJ=Function.prototype,BJ=Object.prototype,YA=zJ.toString,WJ=BJ.hasOwnProperty,HJ=YA.call(Object);function VJ(e){if(!FJ(e)||$J(e)!=UJ)return!1;var t=DJ(e);if(t===null)return!0;var n=WJ.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&YA.call(n)==HJ}var GJ=VJ;const KJ=De(GJ);var XJ=jr,QJ=Pr,JJ="[object Boolean]";
vendor: 19,898 bytes, lines 385-386
385function YJ(e){return e===!0||e===!1||QJ(e)&&XJ(e)==JJ}var ZJ=YJ;const eY=De(ZJ);function Io(e){"@babel/helpers - typeof";return Io=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},Io(e)}function Lu(){return Lu=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Lu.apply(this,arguments)}function tY(e,t){return sY(e)||iY(e,t)||rY(e,t)||nY()}function nY(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
386In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function rY(e,t){if(e){if(typeof e=="string")return W0(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return W0(e,t)}}function W0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function iY(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function sY(e){if(Array.isArray(e))return e}function H0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function V0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?H0(Object(n),!0).forEach(function(r){aY(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):H0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function aY(e,t,n){return t=oY(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function oY(e){var t=lY(e,"string");return Io(t)=="symbol"?t:t+""}function lY(e,t){if(Io(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Io(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var G0=function(t,n,r,i,s){var a=r-i,o;return o="M ".concat(t,",").concat(n),o+="L ".concat(t+r,",").concat(n),o+="L ".concat(t+r-a/2,",").concat(n+s),o+="L ".concat(t+r-a/2-i,",").concat(n+s),o+="L ".concat(t,",").concat(n," Z"),o},uY={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},cY=function(t){var n=V0(V0({},uY),t),r=E.useRef(),i=E.useState(-1),s=tY(i,2),a=s[0],o=s[1];E.useEffect(function(){if(r.current&&r.current.getTotalLength)try{var y=r.current.getTotalLength();y&&o(y)}catch{}},[]);var l=n.x,u=n.y,c=n.upperWidth,p=n.lowerWidth,f=n.height,m=n.className,g=n.animationEasing,h=n.animationDuration,v=n.animationBegin,b=n.isUpdateAnimationActive;if(l!==+l||u!==+u||c!==+c||p!==+p||f!==+f||c===0&&p===0||f===0)return null;var w=Le("recharts-trapezoid",m);return b?O.createElement(Jr,{canBegin:a>0,from:{upperWidth:0,lowerWidth:0,height:f,x:l,y:u},to:{upperWidth:c,lowerWidth:p,height:f,x:l,y:u},duration:h,animationEasing:g,isActive:b},function(y){var A=y.upperWidth,q=y.lowerWidth,x=y.height,_=y.x,I=y.y;return O.createElement(Jr,{canBegin:a>0,from:"0px ".concat(a===-1?1:a,"px"),to:"".concat(a,"px 0px"),attributeName:"strokeDasharray",begin:v,duration:h,easing:g},O.createElement("path",Lu({},Ge(n,!0),{className:w,d:G0(_,I,A,q,x),ref:r})))}):O.createElement("g",null,O.createElement("path",Lu({},Ge(n,!0),{className:w,d:G0(l,u,c,p,f)})))},dY=["option","shapeType","propTransformer","activeClassName","isActive"];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 pY(e,t){if(e==null)return{};var n=mY(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function mY(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function K0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Mu(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?K0(Object(n),!0).forEach(function(r){fY(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function fY(e,t,n){return t=hY(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hY(e){var t=gY(e,"string");return Oo(t)=="symbol"?t:t+""}function gY(e,t){if(Oo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Oo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function vY(e,t){return Mu(Mu({},t),e)}function yY(e,t){return e==="symbols"}function X0(e){var t=e.shapeType,n=e.elementProps;switch(t){case"rectangle":return O.createElement(Kh,n);case"trapezoid":return O.createElement(cY,n);case"sector":return O.createElement(FA,n);case"symbols":if(yY(t))return O.createElement(dh,n);break;default:return null}}function bY(e){return E.isValidElement(e)?e.props:e}function xY(e){var t=e.option,n=e.shapeType,r=e.propTransformer,i=r===void 0?vY:r,s=e.activeClassName,a=s===void 0?"recharts-active-shape":s,o=e.isActive,l=pY(e,dY),u;if(E.isValidElement(t))u=E.cloneElement(t,Mu(Mu({},l),bY(t)));else if(Oe(t))u=t(l);else if(KJ(t)&&!eY(t)){var c=i(t,l);u=O.createElement(X0,{shapeType:n,elementProps:c})}else{var p=l;u=O.createElement(X0,{shapeType:n,elementProps:p})}return o?O.createElement(Rt,{className:a},u):u}function Uc(e,t){return t!=null&&"trapezoids"in e.props}function zc(e,t){return t!=null&&"sectors"in e.props}function Lo(e,t){return t!=null&&"points"in e.props}function wY(e,t){var n,r,i=e.x===(t==null||(n=t.labelViewBox)===null||n===void 0?void 0:n.x)||e.x===t.x,s=e.y===(t==null||(r=t.labelViewBox)===null||r===void 0?void 0:r.y)||e.y===t.y;return i&&s}function qY(e,t){var n=e.endAngle===t.endAngle,r=e.startAngle===t.startAngle;return n&&r}function SY(e,t){var n=e.x===t.x,r=e.y===t.y,i=e.z===t.z;return n&&r&&i}function AY(e,t){var n;return Uc(e,t)?n=wY:zc(e,t)?n=qY:Lo(e,t)&&(n=SY),n}function EY(e,t){var n;return Uc(e,t)?n="trapezoids":zc(e,t)?n="sectors":Lo(e,t)&&(n="points"),n}function _Y(e,t){if(Uc(e,t)){var n;return(n=t.tooltipPayload)===null||n===void 0||(n=n[0])===null||n===void 0||(n=n.payload)===null||n===void 0?void 0:n.payload}if(zc(e,t)){var r;return(r=t.tooltipPayload)===null||r===void 0||(r=r[0])===null||r===void 0||(r=r.payload)===null||r===void 0?void 0:r.payload}return Lo(e,t)?t.payload:{}}function kY(e){var t=e.activeTooltipItem,n=e.graphicalItem,r=e.itemData,i=EY(n,t),s=_Y(n,t),a=r.filter(function(l,u){var c=Wh(s,l),p=n.props[i].filter(function(g){var h=AY(n,t);return h(g,t)}),f=n.props[i].indexOf(p[p.length-1]),m=u===f;return c&&m}),o=r.indexOf(a[a.length-1]);return o}var CY=Math.ceil,jY=Math.max;function PY(e,t,n,r){for(var i=-1,s=jY(CY((t-e)/(n||1)),0),a=Array(s);s--;)a[r?s:++i]=e,e+=n;return a}var TY=PY,IY=kS,Q0=1/0,OY=17976931348623157e292;function LY(e){if(!e)return e===0?e:0;if(e=IY(e),e===Q0||e===-Q0){var t=e<0?-1:1;return t*OY}return e===e?e:0}var ZA=LY,MY=TY,NY=jc,Xd=ZA;function RY(e){return function(t,n,r){return r&&typeof r!="number"&&NY(t,n,r)&&(n=r=void 0),t=Xd(t),n===void 0?(n=t,t=0):n=Xd(n),r=r===void 0?t<n?1:-1:Xd(r),MY(t,n,r,e)}}var $Y=RY,DY=$Y,FY=DY(),UY=FY;const Nu=De(UY);function Mo(e){"@babel/helpers - typeof";return Mo=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},Mo(e)}function J0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Y0(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?J0(Object(n),!0).forEach(function(r){e2(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function e2(e,t,n){return t=zY(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zY(e){var t=BY(e,"string");return Mo(t)=="symbol"?t:t+""}function BY(e,t){if(Mo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Mo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var WY=["Webkit","Moz","O","ms"],HY=function(t,n){var r=t.replace(/(\w)/,function(s){return s.toUpperCase()}),i=WY.reduce(function(s,a){return Y0(Y0({},s),{},e2({},a+r,n))},{});return i[t]=n,i};function Ds(e){"@babel/helpers - typeof";return Ds=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},Ds(e)}function Ru(){return Ru=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ru.apply(this,arguments)}function Z0(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Qd(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Z0(Object(n),!0).forEach(function(r){hn(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Z0(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function VY(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ex(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,n2(r.key),r)}}function GY(e,t,n){return t&&ex(e.prototype,t),n&&ex(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function KY(e,t,n){return t=$u(t),XY(e,t2()?Reflect.construct(t,n||[],$u(e).constructor):t.apply(e,n))}function XY(e,t){if(t&&(Ds(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return QY(e)}function QY(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function t2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(t2=function(){return!!e})()}function $u(e){return $u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},$u(e)}function JY(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ym(e,t)}function Ym(e,t){return Ym=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Ym(e,t)}function hn(e,t,n){return t=n2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n2(e){var t=YY(e,"string");return Ds(t)=="symbol"?t:t+""}function YY(e,t){if(Ds(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ds(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var ZY=function(t){var n=t.data,r=t.startIndex,i=t.endIndex,s=t.x,a=t.width,o=t.travellerWidth;if(!n||!n.length)return{};var l=n.length,u=Ga().domain(Nu(0,l)).range([s,s+a-o]),c=u.domain().map(function(p){return u(p)});return{isTextActive:!1,isSlideMoving:!1,isTravellerMoving:!1,isTravellerFocused:!1,startX:u(r),endX:u(i),scale:u,scaleValues:c}},tx=function(t){return t.changedTouches&&!!t.changedTouches.length},Fs=function(e){function t(n){var r;return VY(this,t),r=KY(this,t,[n]),hn(r,"handleDrag",function(i){r.leaveTimer&&(clearTimeout(r.leaveTimer),r.leaveTimer=null),r.state.isTravellerMoving?r.handleTravellerMove(i):r.state.isSlideMoving&&r.handleSlideDrag(i)}),hn(r,"handleTouchMove",function(i){i.changedTouches!=null&&i.changedTouches.length>0&&r.handleDrag(i.changedTouches[0])}),hn(r,"handleDragEnd",function(){r.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var i=r.props,s=i.endIndex,a=i.onDragEnd,o=i.startIndex;a==null||a({endIndex:s,startIndex:o})}),r.detachDragEndListener()}),hn(r,"handleLeaveWrapper",function(){(r.state.isTravellerMoving||r.state.isSlideMoving)&&(r.leaveTimer=window.setTimeout(r.handleDragEnd,r.props.leaveTimeOut))}),hn(r,"handleEnterSlideOrTraveller",function(){r.setState({isTextActive:!0})}),hn(r,"handleLeaveSlideOrTraveller",function(){r.setState({isTextActive:!1})}),hn(r,"handleSlideDragStart",function(i){var s=tx(i)?i.changedTouches[0]:i;r.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:s.pageX}),r.attachDragEndListener()}),r.travellerDragStartHandlers={startX:r.handleTravellerDragStart.bind(r,"startX"),endX:r.handleTravellerDragStart.bind(r,"endX")},r.state={},r}return JY(t,e),GY(t,[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(r){var i=r.startX,s=r.endX,a=this.state.scaleValues,o=this.props,l=o.gap,u=o.data,c=u.length-1,p=Math.min(i,s),f=Math.max(i,s),m=t.getIndexInRange(a,p),g=t.getIndexInRange(a,f);return{startIndex:m-m%l,endIndex:g===c?c:g-g%l}}},{key:"getTextOfTick",value:function(r){var i=this.props,s=i.data,a=i.tickFormatter,o=i.dataKey,l=cr(s[r],o,r);return Oe(a)?a(l,r):l}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(r){var i=this.state,s=i.slideMoveStartX,a=i.startX,o=i.endX,l=this.props,u=l.x,c=l.width,p=l.travellerWidth,f=l.startIndex,m=l.endIndex,g=l.onChange,h=r.pageX-s;h>0?h=Math.min(h,u+c-p-o,u+c-p-a):h<0&&(h=Math.max(h,u-a,u-o));var v=this.getIndex({startX:a+h,endX:o+h});(v.startIndex!==f||v.endIndex!==m)&&g&&g(v),this.setState({startX:a+h,endX:o+h,slideMoveStartX:r.pageX})}},{key:"handleTravellerDragStart",value:function(r,i){var s=tx(i)?i.changedTouches[0]:i;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:r,brushMoveStartX:s.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(r){var i=this.state,s=i.brushMoveStartX,a=i.movingTravellerId,o=i.endX,l=i.startX,u=this.state[a],c=this.props,p=c.x,f=c.width,m=c.travellerWidth,g=c.onChange,h=c.gap,v=c.data,b={startX:this.state.startX,endX:this.state.endX},w=r.pageX-s;w>0?w=Math.min(w,p+f-m-u):w<0&&(w=Math.max(w,p-u)),b[a]=u+w;var y=this.getIndex(b),A=y.startIndex,q=y.endIndex,x=function(){var I=v.length-1;return a==="startX"&&(o>l?A%h===0:q%h===0)||o<l&&q===I||a==="endX"&&(o>l?q%h===0:A%h===0)||o>l&&q===I};this.setState(hn(hn({},a,u+w),"brushMoveStartX",r.pageX),function(){g&&x()&&g(y)})}},{key:"handleTravellerMoveKeyboard",value:function(r,i){var s=this,a=this.state,o=a.scaleValues,l=a.startX,u=a.endX,c=this.state[i],p=o.indexOf(c);if(p!==-1){var f=p+r;if(!(f===-1||f>=o.length)){var m=o[f];i==="startX"&&m>=u||i==="endX"&&m<=l||this.setState(hn({},i,m),function(){s.props.onChange(s.getIndex({startX:s.state.startX,endX:s.state.endX}))})}}}},{key:"renderBackground",value:function(){var r=this.props,i=r.x,s=r.y,a=r.width,o=r.height,l=r.fill,u=r.stroke;return O.createElement("rect",{stroke:u,fill:l,x:i,y:s,width:a,height:o})}},{key:"renderPanorama",value:function(){var r=this.props,i=r.x,s=r.y,a=r.width,o=r.height,l=r.data,u=r.children,c=r.padding,p=E.Children.only(u);return p?O.cloneElement(p,{x:i,y:s,width:a,height:o,margin:c,compact:!0,data:l}):null}},{key:"renderTravellerLayer",value:function(r,i){var s,a,o=this,l=this.props,u=l.y,c=l.travellerWidth,p=l.height,f=l.traveller,m=l.ariaLabel,g=l.data,h=l.startIndex,v=l.endIndex,b=Math.max(r,this.props.x),w=Qd(Qd({},Ge(this.props,!1)),{},{x:b,y:u,width:c,height:p}),y=m||"Min value: ".concat((s=g[h])===null||s===void 0?void 0:s.name,", Max value: ").concat((a=g[v])===null||a===void 0?void 0:a.name);return O.createElement(Rt,{tabIndex:0,role:"slider","aria-label":y,"aria-valuenow":r,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[i],onTouchStart:this.travellerDragStartHandlers[i],onKeyDown:function(q){["ArrowLeft","ArrowRight"].includes(q.key)&&(q.preventDefault(),q.stopPropagation(),o.handleTravellerMoveKeyboard(q.key==="ArrowRight"?1:-1,i))},onFocus:function(){o.setState({isTravellerFocused:!0})},onBlur:function(){o.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},t.renderTraveller(f,w))}},{key:"renderSlide",value:function(r,i){var s=this.props,a=s.y,o=s.height,l=s.stroke,u=s.travellerWidth,c=Math.min(r,i)+u,p=Math.max(Math.abs(i-r)-u,0);return O.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:l,fillOpacity:.2,x:c,y:a,width:p,height:o})}},{key:"renderText",value:function(){var r=this.props,i=r.startIndex,s=r.endIndex,a=r.y,o=r.height,l=r.travellerWidth,u=r.stroke,c=this.state,p=c.startX,f=c.endX,m=5,g={pointerEvents:"none",fill:u};return O.createElement(Rt,{className:"recharts-brush-texts"},O.createElement(mu,Ru({textAnchor:"end",verticalAnchor:"middle",x:Math.min(p,f)-m,y:a+o/2},g),this.getTextOfTick(i)),O.createElement(mu,Ru({textAnchor:"start",verticalAnchor:"middle",x:Math.max(p,f)+l+m,y:a+o/2},g),this.getTextOfTick(s)))}},{key:"render",value:function(){var r=this.props,i=r.data,s=r.className,a=r.children,o=r.x,l=r.y,u=r.width,c=r.height,p=r.alwaysShowText,f=this.state,m=f.startX,g=f.endX,h=f.isTextActive,v=f.isSlideMoving,b=f.isTravellerMoving,w=f.isTravellerFocused;
386if(!i||!i.length||!re(o)||!re(l)||!re(u)||!re(c)||u<=0||c<=0)return null;var y=Le("recharts-brush",s),A=O.Children.count(a)===1,q=HY("userSelect","none");return O.createElement(Rt,{className:y,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:q},this.renderBackground(),A&&this.renderPanorama(),this.renderSlide(m,g),this.renderTravellerLayer(m,"startX"),this.renderTravellerLayer(g,"endX"),(h||v||b||w||p)&&this.renderText())}}],[{key:"renderDefaultTraveller",value:function(r){var i=r.x,s=r.y,a=r.width,o=r.height,l=r.stroke,u=Math.floor(s+o/2)-1;return O.createElement(O.Fragment,null,O.createElement("rect",{x:i,y:s,width:a,height:o,fill:l,stroke:"none"}),O.createElement("line",{x1:i+1,y1:u,x2:i+a-1,y2:u,fill:"none",stroke:"#fff"}),O.createElement("line",{x1:i+1,y1:u+2,x2:i+a-1,y2:u+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(r,i){var s;return O.isValidElement(r)?s=O.cloneElement(r,i):Oe(r)?s=r(i):s=t.renderDefaultTraveller(i),s}},{key:"getDerivedStateFromProps",value:function(r,i){var s=r.data,a=r.width,o=r.x,l=r.travellerWidth,u=r.updateId,c=r.startIndex,p=r.endIndex;if(s!==i.prevData||u!==i.prevUpdateId)return Qd({prevData:s,prevTravellerWidth:l,prevUpdateId:u,prevX:o,prevWidth:a},s&&s.length?ZY({data:s,width:a,x:o,travellerWidth:l,startIndex:c,endIndex:p}):{scale:null,scaleValues:null});if(i.scale&&(a!==i.prevWidth||o!==i.prevX||l!==i.prevTravellerWidth)){i.scale.range([o,o+a-l]);var f=i.scale.domain().map(function(m){return i.scale(m)});return{prevData:s,prevTravellerWidth:l,prevUpdateId:u,prevX:o,prevWidth:a,startX:i.scale(r.startIndex),endX:i.scale(r.endIndex),scaleValues:f}}return null}},{key:"getIndexInRange",value:function(r,i){for(var s=r.length,a=0,o=s-1;o-a>1;){var l=Math.floor((a+o)/2);r[l]>i?o=l:a=l}return i>=r[o]?o:a}}])}(E.PureComponent);hn(Fs,"displayName","Brush");hn(Fs,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var eZ=yh;function tZ(e,t){var n;return eZ(e,function(r,i,s){return n=t(r,i,s),!n}),!!n}var nZ=tZ,rZ=eS,iZ=ei,sZ=nZ,aZ=cn,oZ=jc;function lZ(e,t,n){var r=aZ(e)?rZ:sZ;return n&&oZ(e,t,n)&&(t=void 0),r(e,iZ(t))}var uZ=lZ;const cZ=De(uZ);var or=function(t,n){var r=t.alwaysShow,i=t.ifOverflow;return r&&(i="extendDomain"),i===n},nx=qS;function dZ(e,t,n){t=="__proto__"&&nx?nx(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var pZ=dZ,mZ=pZ,fZ=xS,hZ=ei;function gZ(e,t){var n={};return t=hZ(t),fZ(e,function(r,i,s){mZ(n,i,t(r,i,s))}),n}var vZ=gZ;const yZ=De(vZ);function bZ(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}var xZ=bZ,wZ=yh;function qZ(e,t){var n=!0;return wZ(e,function(r,i,s){return n=!!t(r,i,s),n}),n}var SZ=qZ,AZ=xZ,EZ=SZ,_Z=ei,kZ=cn,CZ=jc;function jZ(e,t,n){var r=kZ(e)?AZ:EZ;return n&&CZ(e,t,n)&&(t=void 0),r(e,_Z(t))}var PZ=jZ;const r2=De(PZ);var TZ=["x","y"];function No(e){"@babel/helpers - typeof";return No=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},No(e)}function Zm(){return Zm=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Zm.apply(this,arguments)}function rx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Ta(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?rx(Object(n),!0).forEach(function(r){IZ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function IZ(e,t,n){return t=OZ(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function OZ(e){var t=LZ(e,"string");return No(t)=="symbol"?t:t+""}function LZ(e,t){if(No(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(No(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function MZ(e,t){if(e==null)return{};var n=NZ(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function NZ(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function RZ(e,t){var n=e.x,r=e.y,i=MZ(e,TZ),s="".concat(n),a=parseInt(s,10),o="".concat(r),l=parseInt(o,10),u="".concat(t.height||i.height),c=parseInt(u,10),p="".concat(t.width||i.width),f=parseInt(p,10);return Ta(Ta(Ta(Ta(Ta({},t),i),a?{x:a}:{}),l?{y:l}:{}),{},{height:c,width:f,name:t.name,radius:t.radius})}function ix(e){return O.createElement(xY,Zm({shapeType:"rectangle",propTransformer:RZ,activeClassName:"recharts-active-bar"},e))}var $Z=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return function(r,i){if(typeof t=="number")return t;var s=re(r)||ZD(r);return s?t(r,i):(s||Ni(),n)}},DZ=["value","background"],i2;function Us(e){"@babel/helpers - typeof";return Us=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},Us(e)}function FZ(e,t){if(e==null)return{};var n=UZ(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function UZ(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Du(){return Du=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Du.apply(this,arguments)}function sx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function At(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};
vendor: 86,969 bytes, lines 386-390
386t%2?sx(Object(n),!0).forEach(function(r){Kr(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function zZ(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ax(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,a2(r.key),r)}}function BZ(e,t,n){return t&&ax(e.prototype,t),n&&ax(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function WZ(e,t,n){return t=Fu(t),HZ(e,s2()?Reflect.construct(t,n||[],Fu(e).constructor):t.apply(e,n))}function HZ(e,t){if(t&&(Us(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return VZ(e)}function VZ(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(s2=function(){return!!e})()}function Fu(e){return Fu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Fu(e)}function GZ(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ef(e,t)}function ef(e,t){return ef=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},ef(e,t)}function Kr(e,t,n){return t=a2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a2(e){var t=KZ(e,"string");return Us(t)=="symbol"?t:t+""}function KZ(e,t){if(Us(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Us(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Bi=function(e){function t(){var n;zZ(this,t);for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];return n=WZ(this,t,[].concat(i)),Kr(n,"state",{isAnimationFinished:!1}),Kr(n,"id",qc("recharts-bar-")),Kr(n,"handleAnimationEnd",function(){var a=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),a&&a()}),Kr(n,"handleAnimationStart",function(){var a=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),a&&a()}),n}return GZ(t,e),BZ(t,[{key:"renderRectanglesStatically",value:function(r){var i=this,s=this.props,a=s.shape,o=s.dataKey,l=s.activeIndex,u=s.activeBar,c=Ge(this.props,!1);return r&&r.map(function(p,f){var m=f===l,g=m?u:a,h=At(At(At({},c),p),{},{isActive:m,option:g,index:f,dataKey:o,onAnimationStart:i.handleAnimationStart,onAnimationEnd:i.handleAnimationEnd});return O.createElement(Rt,Du({className:"recharts-bar-rectangle"},Zl(i.props,p,f),{key:"rectangle-".concat(p==null?void 0:p.x,"-").concat(p==null?void 0:p.y,"-").concat(p==null?void 0:p.value,"-").concat(f)}),O.createElement(ix,h))})}},{key:"renderRectanglesWithAnimation",value:function(){var r=this,i=this.props,s=i.data,a=i.layout,o=i.isAnimationActive,l=i.animationBegin,u=i.animationDuration,c=i.animationEasing,p=i.animationId,f=this.state.prevData;return O.createElement(Jr,{begin:l,duration:u,isActive:o,easing:c,from:{t:0},to:{t:1},key:"bar-".concat(p),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(m){var g=m.t,h=s.map(function(v,b){var w=f&&f[b];if(w){var y=Zi(w.x,v.x),A=Zi(w.y,v.y),q=Zi(w.width,v.width),x=Zi(w.height,v.height);return At(At({},v),{},{x:y(g),y:A(g),width:q(g),height:x(g)})}if(a==="horizontal"){var _=Zi(0,v.height),I=_(g);return At(At({},v),{},{y:v.y+v.height-I,height:I})}var S=Zi(0,v.width),k=S(g);return At(At({},v),{},{width:k})});return O.createElement(Rt,null,r.renderRectanglesStatically(h))})}},{key:"renderRectangles",value:function(){var r=this.props,i=r.data,s=r.isAnimationActive,a=this.state.prevData;return s&&i&&i.length&&(!a||!Wh(a,i))?this.renderRectanglesWithAnimation():this.renderRectanglesStatically(i)}},{key:"renderBackground",value:function(){var r=this,i=this.props,s=i.data,a=i.dataKey,o=i.activeIndex,l=Ge(this.props.background,!1);return s.map(function(u,c){u.value;var p=u.background,f=FZ(u,DZ);if(!p)return null;var m=At(At(At(At(At({},f),{},{fill:"#eee"},p),l),Zl(r.props,u,c)),{},{onAnimationStart:r.handleAnimationStart,onAnimationEnd:r.handleAnimationEnd,dataKey:a,index:c,className:"recharts-bar-background-rectangle"});return O.createElement(ix,Du({key:"background-bar-".concat(c),option:r.props.background,isActive:c===o},m))})}},{key:"renderErrorBar",value:function(r,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var s=this.props,a=s.data,o=s.xAxis,l=s.yAxis,u=s.layout,c=s.children,p=Vn(c,Fc);if(!p)return null;var f=u==="vertical"?a[0].height/2:a[0].width/2,m=function(v,b){var w=Array.isArray(v.value)?v.value[1]:v.value;return{x:v.x,y:v.y,value:w,errorVal:cr(v,b)}},g={clipPath:r?"url(#clipPath-".concat(i,")"):null};return O.createElement(Rt,g,p.map(function(h){return O.cloneElement(h,{key:"error-bar-".concat(i,"-").concat(h.props.dataKey),data:a,xAxis:o,yAxis:l,layout:u,offset:f,dataPointFormatter:m})}))}},{key:"render",value:function(){var r=this.props,i=r.hide,s=r.data,a=r.className,o=r.xAxis,l=r.yAxis,u=r.left,c=r.top,p=r.width,f=r.height,m=r.isAnimationActive,g=r.background,h=r.id;if(i||!s||!s.length)return null;var v=this.state.isAnimationFinished,b=Le("recharts-bar",a),w=o&&o.allowDataOverflow,y=l&&l.allowDataOverflow,A=w||y,q=Re(h)?this.id:h;return O.createElement(Rt,{className:b},w||y?O.createElement("defs",null,O.createElement("clipPath",{id:"clipPath-".concat(q)},O.createElement("rect",{x:w?u:u-p/2,y:y?c:c-f/2,width:w?p:p*2,height:y?f:f*2}))):null,O.createElement(Rt,{className:"recharts-bar-rectangles",clipPath:A?"url(#clipPath-".concat(q,")"):null},g?this.renderBackground():null,this.renderRectangles()),this.renderErrorBar(A,q),(!m||v)&&Oi.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(r,i){return r.animationId!==i.prevAnimationId?{prevAnimationId:r.animationId,curData:r.data,prevData:i.curData}:r.data!==i.curData?{curData:r.data}:null}}])}(E.PureComponent);i2=Bi;Kr(Bi,"displayName","Bar");Kr(Bi,"defaultProps",{xAxisId:0,yAxisId:0,legendType:"rect",minPointSize:0,hide:!1,data:[],layout:"vertical",activeBar:!1,isAnimationActive:!Xr.isSsr,animationBegin:0,animationDuration:400,animationEasing:"ease"});Kr(Bi,"getComposedData",function(e){var t=e.props,n=e.item,r=e.barPosition,i=e.bandSize,s=e.xAxis,a=e.yAxis,o=e.xAxisTicks,l=e.yAxisTicks,u=e.stackedData,c=e.dataStartIndex,p=e.displayedData,f=e.offset,m=xK(r,n);if(!m)return null;var g=t.layout,h=n.type.defaultProps,v=h!==void 0?At(At({},h),n.props):n.props,b=v.dataKey,w=v.children,y=v.minPointSize,A=g==="horizontal"?a:s,q=u?A.scale.domain():null,x=kK({numericAxis:A}),_=Vn(w,wh),I=p.map(function(S,k){var C,T,M,L,N,R;u?C=wK(u[c+k],q):(C=cr(S,b),Array.isArray(C)||(C=[x,C]));var $=$Z(y,i2.defaultProps.minPointSize)(C[1],k);if(g==="horizontal"){var B,D=[a.scale(C[0]),a.scale(C[1])],j=D[0],J=D[1];T=i0({axis:s,ticks:o,bandSize:i,offset:m.offset,entry:S,index:k}),M=(B=J??j)!==null&&B!==void 0?B:void 0,L=m.size;var z=j-J;if(N=Number.isNaN(z)?0:z,R={x:T,y:a.y,width:L,height:a.height},Math.abs($)>0&&Math.abs(N)<Math.abs($)){var P=Wn(N||$)*(Math.abs($)-Math.abs(N));M-=P,N+=P}}else{var G=[s.scale(C[0]),s.scale(C[1])],ae=G[0],se=G[1];if(T=ae,M=i0({axis:a,ticks:l,bandSize:i,offset:m.offset,entry:S,index:k}),L=se-ae,N=m.size,R={x:s.x,y:M,width:s.width,height:N},Math.abs($)>0&&Math.abs(L)<Math.abs($)){var ie=Wn(L||$)*(Math.abs($)-Math.abs(L));L+=ie}}return At(At(At({},S),{},{x:T,y:M,width:L,height:N,value:u?C:C[1],payload:S,background:R},_&&_[k]&&_[k].props),{},{tooltipPayload:[NA(n,S)],tooltipPosition:{x:T+L/2,y:M+N/2}})});return At({data:I,layout:g},f)});function Ro(e){"@babel/helpers - typeof";return Ro=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},Ro(e)}function XZ(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ox(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o2(r.key),r)}}function QZ(e,t,n){return t&&ox(e.prototype,t),n&&ox(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function lx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Un(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?lx(Object(n),!0).forEach(function(r){Bc(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Bc(e,t,n){return t=o2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o2(e){var t=JZ(e,"string");return Ro(t)=="symbol"?t:t+""}function JZ(e,t){if(Ro(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ro(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var YZ=function(t,n,r,i,s){var a=t.width,o=t.height,l=t.layout,u=t.children,c=Object.keys(n),p={left:r.left,leftMirror:r.left,right:a-r.right,rightMirror:a-r.right,top:r.top,topMirror:r.top,bottom:o-r.bottom,bottomMirror:o-r.bottom},f=!!gn(u,Bi);return c.reduce(function(m,g){var h=n[g],v=h.orientation,b=h.domain,w=h.padding,y=w===void 0?{}:w,A=h.mirror,q=h.reversed,x="".concat(v).concat(A?"Mirror":""),_,I,S,k,C;if(h.type==="number"&&(h.padding==="gap"||h.padding==="no-gap")){var T=b[1]-b[0],M=1/0,L=h.categoricalDomain.sort(n5);if(L.forEach(function(G,ae){ae>0&&(M=Math.min((G||0)-(L[ae-1]||0),M))}),Number.isFinite(M)){var N=M/T,R=h.layout==="vertical"?r.height:r.width;if(h.padding==="gap"&&(_=N*R/2),h.padding==="no-gap"){var $=Hn(t.barCategoryGap,N*R),B=N*R/2;_=B-$-(B-$)/R*$}}}i==="xAxis"?I=[r.left+(y.left||0)+(_||0),r.left+r.width-(y.right||0)-(_||0)]:i==="yAxis"?I=l==="horizontal"?[r.top+r.height-(y.bottom||0),r.top+(y.top||0)]:[r.top+(y.top||0)+(_||0),r.top+r.height-(y.bottom||0)-(_||0)]:I=h.range,q&&(I=[I[1],I[0]]);var D=IA(h,s,f),j=D.scale,J=D.realScaleType;j.domain(b).range(I),OA(j);var z=LA(j,Un(Un({},h),{},{realScaleType:J}));i==="xAxis"?(C=v==="top"&&!A||v==="bottom"&&A,S=r.left,k=p[x]-C*h.height):i==="yAxis"&&(C=v==="left"&&!A||v==="right"&&A,S=p[x]-C*h.width,k=r.top);var P=Un(Un(Un({},h),z),{},{realScaleType:J,x:S,y:k,scale:j,width:i==="xAxis"?r.width:h.width,height:i==="yAxis"?r.height:h.height});return P.bandSize=ku(P,z),!h.hide&&i==="xAxis"?p[x]+=(C?-1:1)*P.height:h.hide||(p[x]+=(C?-1:1)*P.width),Un(Un({},m),{},Bc({},g,P))},{})},l2=function(t,n){var r=t.x,i=t.y,s=n.x,a=n.y;return{x:Math.min(r,s),y:Math.min(i,a),width:Math.abs(s-r),height:Math.abs(a-i)}},ZZ=function(t){var n=t.x1,r=t.y1,i=t.x2,s=t.y2;return l2({x:n,y:r},{x:i,y:s})},u2=function(){function e(t){XZ(this,e),this.scale=t}return QZ(e,[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.bandAware,s=r.position;if(n!==void 0){if(s)switch(s){case"start":return this.scale(n);case"middle":{var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(n)+a}case"end":{var o=this.bandwidth?this.bandwidth():0;return this.scale(n)+o}default:return this.scale(n)}if(i){var l=this.bandwidth?this.bandwidth()/2:0;return this.scale(n)+l}return this.scale(n)}}},{key:"isInRange",value:function(n){var r=this.range(),i=r[0],s=r[r.length-1];return i<=s?n>=i&&n<=s:n>=s&&n<=i}}],[{key:"create",value:function(n){return new e(n)}}])}();Bc(u2,"EPS",1e-4);var Xh=function(t){var n=Object.keys(t).reduce(function(r,i){return Un(Un({},r),{},Bc({},i,u2.create(t[i])))},{});return Un(Un({},n),{},{apply:function(i){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=s.bandAware,o=s.position;return yZ(i,function(l,u){return n[u].apply(l,{bandAware:a,position:o})})},isInRange:function(i){return r2(i,function(s,a){return n[a].isInRange(s)})}})};function eee(e){return(e%180+180)%180}var tee=function(t){var n=t.width,r=t.height,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,s=eee(i),a=s*Math.PI/180,o=Math.atan(r/n),l=a>o&&a<Math.PI-o?r/Math.sin(a):n/Math.cos(a);return Math.abs(l)},nee=ei,ree=Jo,iee=kc;function see(e){return function(t,n,r){var i=Object(t);if(!ree(t)){var s=nee(n);t=iee(t),n=function(o){return s(i[o],o,i)}}var a=e(t,n,r);return a>-1?i[s?t[a]:a]:void 0}}var aee=see,oee=ZA;function lee(e){var t=oee(e),n=t%1;return t===t?n?t-n:t:0}var uee=lee,cee=fS,dee=ei,pee=uee,mee=Math.max;function fee(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:pee(n);return i<0&&(i=mee(r+i,0)),cee(e,dee(t),i)}var hee=fee,gee=aee,vee=hee,yee=gee(vee),bee=yee;const xee=De(bee);var wee=rD(function(e){return{x:e.left,y:e.top,width:e.width,height:e.height}},function(e){return["l",e.left,"t",e.top,"w",e.width,"h",e.height].join("")}),Qh=E.createContext(void 0),Jh=E.createContext(void 0),c2=E.createContext(void 0),d2=E.createContext({}),p2=E.createContext(void 0),m2=E.createContext(0),f2=E.createContext(0),ux=function(t){var n=t.state,r=n.xAxisMap,i=n.yAxisMap,s=n.offset,a=t.clipPathId,o=t.children,l=t.width,u=t.height,c=wee(s);return O.createElement(Qh.Provider,{value:r},O.createElement(Jh.Provider,{value:i},O.createElement(d2.Provider,{value:s},O.createElement(c2.Provider,{value:c},O.createElement(p2.Provider,{value:a},O.createElement(m2.Provider,{value:u},O.createElement(f2.Provider,{value:l},o)))))))},qee=function(){return E.useContext(p2)},h2=function(t){var n=E.useContext(Qh);n==null&&Ni();var r=n[t];return r==null&&Ni(),r},Zde=function(){var t=E.useContext(Qh);return Ur(t)},epe=function(){var t=E.useContext(Jh),n=xee(t,function(r){return r2(r.domain,Number.isFinite)});return n||Ur(t)},g2=function(t){var n=E.useContext(Jh);n==null&&Ni();var r=n[t];return r==null&&Ni(),r},See=function(){var t=E.useContext(c2);return t},tpe=function(){return E.useContext(d2)},v2=function(){return E.useContext(f2)},y2=function(){return E.useContext(m2)};function zs(e){"@babel/helpers - typeof";return zs=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},zs(e)}function Aee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Eee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,x2(r.key),r)}}function _ee(e,t,n){return t&&Eee(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function kee(e,t,n){return t=Uu(t),Cee(e,b2()?Reflect.construct(t,n||[],Uu(e).constructor):t.apply(e,n))}function Cee(e,t){if(t&&(zs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jee(e)}function jee(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(b2=function(){return!!e})()}function Uu(e){return Uu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Uu(e)}function Pee(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&tf(e,t)}function tf(e,t){return tf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},tf(e,t)}function cx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function dx(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?cx(Object(n),!0).forEach(function(r){Yh(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Yh(e,t,n){return t=x2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x2(e){var t=Tee(e,"string");return zs(t)=="symbol"?t:t+""}function Tee(e,t){if(zs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(zs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Iee(e,t){return Nee(e)||Mee(e,t)||Lee(e,t)||Oee()}function Oee(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
387In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Lee(e,t){if(e){if(typeof e=="string")return px(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return px(e,t)}}function px(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Mee(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function Nee(e){if(Array.isArray(e))return e}function nf(){return nf=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},nf.apply(this,arguments)}var Ree=function(t,n){var r;return O.isValidElement(t)?r=O.cloneElement(t,n):Oe(t)?r=t(n):r=O.createElement("line",nf({},n,{className:"recharts-reference-line-line"})),r},$ee=function(t,n,r,i,s,a,o,l,u){var c=s.x,p=s.y,f=s.width,m=s.height;if(r){var g=u.y,h=t.y.apply(g,{position:a});if(or(u,"discard")&&!t.y.isInRange(h))return null;var v=[{x:c+f,y:h},{x:c,y:h}];return l==="left"?v.reverse():v}if(n){var b=u.x,w=t.x.apply(b,{position:a});if(or(u,"discard")&&!t.x.isInRange(w))return null;var y=[{x:w,y:p+m},{x:w,y:p}];return o==="top"?y.reverse():y}if(i){var A=u.segment,q=A.map(function(x){return t.apply(x,{position:a})});return or(u,"discard")&&cZ(q,function(x){return!t.isInRange(x)})?null:q}return null};function Dee(e){var t=e.x,n=e.y,r=e.segment,i=e.xAxisId,s=e.yAxisId,a=e.shape,o=e.className,l=e.alwaysShow,u=qee(),c=h2(i),p=g2(s),f=See();if(!u||!f)return null;Pi(l===void 0,'The alwaysShow prop is deprecated. Please use ifOverflow="extendDomain" instead.');var m=Xh({x:c.scale,y:p.scale}),g=Ot(t),h=Ot(n),v=r&&r.length===2,b=$ee(m,g,h,v,f,e.position,c.orientation,p.orientation,e);if(!b)return null;var w=Iee(b,2),y=w[0],A=y.x,q=y.y,x=w[1],_=x.x,I=x.y,S=or(e,"hidden")?"url(#".concat(u,")"):void 0,k=dx(dx({clipPath:S},Ge(e,!0)),{},{x1:A,y1:q,x2:_,y2:I});return O.createElement(Rt,{className:Le("recharts-reference-line",o)},Ree(a,k),Xt.renderCallByParent(e,ZZ({x1:A,y1:q,x2:_,y2:I})))}var Zh=function(e){function t(){return Aee(this,t),kee(this,t,arguments)}return Pee(t,e),_ee(t,[{key:"render",value:function(){return O.createElement(Dee,this.props)}}])}(O.Component);Yh(Zh,"displayName","ReferenceLine");Yh(Zh,"defaultProps",{isFront:!1,ifOverflow:"discard",xAxisId:0,yAxisId:0,fill:"none",stroke:"#ccc",fillOpacity:1,strokeWidth:1,position:"middle"});function rf(){return rf=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rf.apply(this,arguments)}function Bs(e){"@babel/helpers - typeof";return Bs=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},Bs(e)}function mx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function fx(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?mx(Object(n),!0).forEach(function(r){Wc(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Fee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Uee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,q2(r.key),r)}}function zee(e,t,n){return t&&Uee(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Bee(e,t,n){return t=zu(t),Wee(e,w2()?Reflect.construct(t,n||[],zu(e).constructor):t.apply(e,n))}function Wee(e,t){if(t&&(Bs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Hee(e)}function Hee(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function w2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(w2=function(){return!!e})()}function zu(e){return zu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},zu(e)}function Vee(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&sf(e,t)}function sf(e,t){return sf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},sf(e,t)}function Wc(e,t,n){return t=q2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q2(e){var t=Gee(e,"string");return Bs(t)=="symbol"?t:t+""}function Gee(e,t){if(Bs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Bs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Kee=function(t){var n=t.x,r=t.y,i=t.xAxis,s=t.yAxis,a=Xh({x:i.scale,y:s.scale}),o=a.apply({x:n,y:r},{bandAware:!0});return or(t,"discard")&&!a.isInRange(o)?null:o},Hc=function(e){function t(){return Fee(this,t),Bee(this,t,arguments)}return Vee(t,e),zee(t,[{key:"render",value:function(){var r=this.props,i=r.x,s=r.y,a=r.r,o=r.alwaysShow,l=r.clipPathId,u=Ot(i),c=Ot(s);if(Pi(o===void 0,'The alwaysShow prop is deprecated. Please use ifOverflow="extendDomain" instead.'),!u||!c)return null;var p=Kee(this.props);if(!p)return null;var f=p.x,m=p.y,g=this.props,h=g.shape,v=g.className,b=or(this.props,"hidden")?"url(#".concat(l,")"):void 0,w=fx(fx({clipPath:b},Ge(this.props,!0)),{},{cx:f,cy:m});return O.createElement(Rt,{className:Le("recharts-reference-dot",v)},t.renderDot(h,w),Xt.renderCallByParent(this.props,{x:f-a,y:m-a,width:2*a,height:2*a}))}}])}(O.Component);Wc(Hc,"displayName","ReferenceDot");Wc(Hc,"defaultProps",{isFront:!1,ifOverflow:"discard",xAxisId:0,yAxisId:0,r:10,fill:"#fff",stroke:"#ccc",fillOpacity:1,strokeWidth:1});Wc(Hc,"renderDot",function(e,t){var n;return O.isValidElement(e)?n=O.cloneElement(e,t):Oe(e)?n=e(t):n=O.createElement(JA,rf({},t,{cx:t.cx,cy:t.cy,className:"recharts-reference-dot-dot"})),n});function af(){return af=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},af.apply(this,arguments)}function Ws(e){"@babel/helpers - typeof";return Ws=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},Ws(e)}function hx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function gx(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?hx(Object(n),!0).forEach(function(r){Vc(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Xee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,A2(r.key),r)}}function Jee(e,t,n){return t&&Qee(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Yee(e,t,n){return t=Bu(t),Zee(e,S2()?Reflect.construct(t,n||[],Bu(e).constructor):t.apply(e,n))}function Zee(e,t){if(t&&(Ws(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return ete(e)}function ete(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function S2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(S2=function(){return!!e})()}function Bu(e){return Bu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Bu(e)}function tte(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&of(e,t)}function of(e,t){return of=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},of(e,t)}function Vc(e,t,n){return t=A2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A2(e){var t=nte(e,"string");return Ws(t)=="symbol"?t:t+""}function nte(e,t){if(Ws(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ws(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var rte=function(t,n,r,i,s){var a=s.x1,o=s.x2,l=s.y1,u=s.y2,c=s.xAxis,p=s.yAxis;if(!c||!p)return null;var f=Xh({x:c.scale,y:p.scale}),m={x:t?f.x.apply(a,{position:"start"}):f.x.rangeMin,y:r?f.y.apply(l,{position:"start"}):f.y.rangeMin},g={x:n?f.x.apply(o,{position:"end"}):f.x.rangeMax,y:i?f.y.apply(u,{position:"end"}):f.y.rangeMax};return or(s,"discard")&&(!f.isInRange(m)||!f.isInRange(g))?null:l2(m,g)},Gc=function(e){function t(){return Xee(this,t),Yee(this,t,arguments)}return tte(t,e),Jee(t,[{key:"render",value:function(){var r=this.props,i=r.x1,s=r.x2,a=r.y1,o=r.y2,l=r.className,u=r.alwaysShow,c=r.clipPathId;Pi(u===void 0,'The alwaysShow prop is deprecated. Please use ifOverflow="extendDomain" instead.');var p=Ot(i),f=Ot(s),m=Ot(a),g=Ot(o),h=this.props.shape;if(!p&&!f&&!m&&!g&&!h)return null;var v=rte(p,f,m,g,this.props);if(!v&&!h)return null;var b=or(this.props,"hidden")?"url(#".concat(c,")"):void 0;return O.createElement(Rt,{className:Le("recharts-reference-area",l)},t.renderRect(h,gx(gx({clipPath:b},Ge(this.props,!0)),v)),Xt.renderCallByParent(this.props,v))}}])}(O.Component);Vc(Gc,"displayName","ReferenceArea");Vc(Gc,"defaultProps",{isFront:!1,ifOverflow:"discard",xAxisId:0,yAxisId:0,r:10,fill:"#ccc",fillOpacity:.5,stroke:"none",strokeWidth:1});Vc(Gc,"renderRect",function(e,t){var n;return O.isValidElement(e)?n=O.cloneElement(e,t):Oe(e)?n=e(t):n=O.createElement(Kh,af({},t,{className:"recharts-reference-area-rect"})),n});function E2(e,t,n){if(t<1)return[];if(t===1&&n===void 0)return e;for(var r=[],i=0;i<e.length;i+=t)r.push(e[i]);return r}function ite(e,t,n){var r={width:e.width+t.width,height:e.height+t.height};return tee(r,n)}function ste(e,t,n){var r=n==="width",i=e.x,s=e.y,a=e.width,o=e.height;return t===1?{start:r?i:s,end:r?i+a:s+o}:{start:r?i+a:s+o,end:r?i:s}}function Wu(e,t,n,r,i){if(e*t<e*r||e*t>e*i)return!1;var s=n();return e*(t-e*s/2-r)>=0&&e*(t+e*s/2-i)<=0}function ate(e,t){return E2(e,t+1)}function ote(e,t,n,r,i){for(var s=(r||[]).slice(),a=t.start,o=t.end,l=0,u=1,c=a,p=function(){var g=r==null?void 0:r[l];if(g===void 0)return{v:E2(r,u)};var h=l,v,b=function(){return v===void 0&&(v=n(g,h)),v},w=g.coordinate,y=l===0||Wu(e,w,b,c,o);y||(l=0,c=a,u+=1),y&&(c=w+e*(b()/2+i),l+=u)},f;u<=s.length;)if(f=p(),f)return f.v;return[]}function $o(e){"@babel/helpers - typeof";return $o=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},$o(e)}function vx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Kt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?vx(Object(n),!0).forEach(function(r){lte(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function lte(e,t,n){return t=ute(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ute(e){var t=cte(e,"string");return $o(t)=="symbol"?t:t+""}function cte(e,t){if($o(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if($o(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function dte(e,t,n,r,i){for(var s=(r||[]).slice(),a=s.length,o=t.start,l=t.end,u=function(f){var m=s[f],g,h=function(){return g===void 0&&(g=n(m,f)),g};if(f===a-1){var v=e*(m.coordinate+e*h()/2-l);s[f]=m=Kt(Kt({},m),{},{tickCoord:v>0?m.coordinate-v*e:m.coordinate})}else s[f]=m=Kt(Kt({},m),{},{tickCoord:m.coordinate});var b=Wu(e,m.tickCoord,h,o,l);b&&(l=m.tickCoord-e*(h()/2+i),s[f]=Kt(Kt({},m),{},{isShow:!0}))},c=a-1;c>=0;c--)u(c);return s}function pte(e,t,n,r,i,s){var a=(r||[]).slice(),o=a.length,l=t.start,u=t.end;if(s){var c=r[o-1],p=n(c,o-1),f=e*(c.coordinate+e*p/2-u);a[o-1]=c=Kt(Kt({},c),{},{tickCoord:f>0?c.coordinate-f*e:c.coordinate});var m=Wu(e,c.tickCoord,function(){return p},l,u);m&&(u=c.tickCoord-e*(p/2+i),a[o-1]=Kt(Kt({},c),{},{isShow:!0}))}for(var g=s?o-1:o,h=function(w){var y=a[w],A,q=function(){return A===void 0&&(A=n(y,w)),A};if(w===0){var x=e*(y.coordinate-e*q()/2-l);a[w]=y=Kt(Kt({},y),{},{tickCoord:x<0?y.coordinate-x*e:y.coordinate})}else a[w]=y=Kt(Kt({},y),{},{tickCoord:y.coordinate});var _=Wu(e,y.tickCoord,q,l,u);_&&(l=y.tickCoord+e*(q()/2+i),a[w]=Kt(Kt({},y),{},{isShow:!0}))},v=0;v<g;v++)h(v);return a}function mte(e,t,n){var r=e.tick,i=e.ticks,s=e.viewBox,a=e.minTickGap,o=e.orientation,l=e.interval,u=e.tickFormatter,c=e.unit,p=e.angle;if(!i||!i.length||!r)return[];if(re(l)||Xr.isSsr)return ate(i,typeof l=="number"&&re(l)?l:0);var f=[],m=o==="top"||o==="bottom"?"width":"height",g=c&&m==="width"?Va(c,{fontSize:t,letterSpacing:n}):{width:0,height:0},h=function(y,A){var q=Oe(u)?u(y.value,A):y.value;return m==="width"?ite(Va(q,{fontSize:t,letterSpacing:n}),g,p):Va(q,{fontSize:t,letterSpacing:n})[m]},v=i.length>=2?Wn(i[1].coordinate-i[0].coordinate):1,b=ste(s,v,m);return l==="equidistantPreserveStart"?ote(v,b,h,i,a):(l==="preserveStart"||l==="preserveStartEnd"?f=pte(v,b,h,i,a,l==="preserveStartEnd"):f=dte(v,b,h,i,a),f.filter(function(w){return w.isShow}))}var fte=["viewBox"],hte=["viewBox"],gte=["ticks"];function Hs(e){"@babel/helpers - typeof";return Hs=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},Hs(e)}function us(){return us=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},us.apply(this,arguments)}function yx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Ct(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?yx(Object(n),!0).forEach(function(r){eg(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Jd(e,t){if(e==null)return{};var n=vte(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function vte(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function yte(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bx(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,k2(r.key),r)}}function bte(e,t,n){return t&&bx(e.prototype,t),n&&bx(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function xte(e,t,n){return t=Hu(t),wte(e,_2()?Reflect.construct(t,n||[],Hu(e).constructor):t.apply(e,n))}function wte(e,t){if(t&&(Hs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return qte(e)}function qte(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(_2=function(){return!!e})()}function Hu(e){return Hu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Hu(e)}function Ste(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&lf(e,t)}function lf(e,t){return lf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},lf(e,t)}function eg(e,t,n){return t=k2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k2(e){var t=Ate(e,"string");return Hs(t)=="symbol"?t:t+""}function Ate(e,t){if(Hs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Hs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Kc=function(e){function t(n){var r;return yte(this,t),r=xte(this,t,[n]),r.state={fontSize:"",letterSpacing:""},r}return Ste(t,e),bte(t,[{key:"shouldComponentUpdate",value:function(r,i){var s=r.viewBox,a=Jd(r,fte),o=this.props,l=o.viewBox,u=Jd(o,hte);return!vs(s,l)||!vs(a,u)||!vs(i,this.state)}},{key:"componentDidMount",value:function(){var r=this.layerReference;if(r){var i=r.getElementsByClassName("recharts-cartesian-axis-tick-value")[0];i&&this.setState({fontSize:window.getComputedStyle(i).fontSize,letterSpacing:window.getComputedStyle(i).letterSpacing})}}},{key:"getTickLineCoord",value:function(r){var i=this.props,s=i.x,a=i.y,o=i.width,l=i.height,u=i.orientation,c=i.tickSize,p=i.mirror,f=i.tickMargin,m,g,h,v,b,w,y=p?-1:1,A=r.tickSize||c,q=re(r.tickCoord)?r.tickCoord:r.coordinate;switch(u){case"top":m=g=r.coordinate,v=a+ +!p*l,h=v-y*A,w=h-y*f,b=q;break;case"left":h=v=r.coordinate,g=s+ +!p*o,m=g-y*A,b=m-y*f,w=q;break;case"right":h=v=r.coordinate,g=s+ +p*o,m=g+y*A,b=m+y*f,w=q;break;default:m=g=r.coordinate,v=a+ +p*l,h=v+y*A,w=h+y*f,b=q;break}return{line:{x1:m,y1:h,x2:g,y2:v},tick:{x:b,y:w}}}},{key:"getTickTextAnchor",value:function(){var r=this.props,i=r.orientation,s=r.mirror,a;switch(i){case"left":a=s?"start":"end";break;case"right":a=s?"end":"start";break;default:a="middle";break}return a}},{key:"getTickVerticalAnchor",value:function(){var r=this.props,i=r.orientation,s=r.mirror,a="end";switch(i){case"left":case"right":a="middle";break;case"top":a=s?"start":"end";break;default:a=s?"end":"start";break}return a}},{key:"renderAxisLine",value:function(){var r=this.props,i=r.x,s=r.y,a=r.width,o=r.height,l=r.orientation,u=r.mirror,c=r.axisLine,p=Ct(Ct(Ct({},Ge(this.props,!1)),Ge(c,!1)),{},{fill:"none"});if(l==="top"||l==="bottom"){var f=+(l==="top"&&!u||l==="bottom"&&u);p=Ct(Ct({},p),{},{x1:i,y1:s+f*o,x2:i+a,y2:s+f*o})}else{var m=+(l==="left"&&!u||l==="right"&&u);p=Ct(Ct({},p),{},{x1:i+m*a,y1:s,x2:i+m*a,y2:s+o})}return O.createElement("line",us({},p,{className:Le("recharts-cartesian-axis-line",Cn(c,"className"))}))}},{key:"renderTicks",value:function(r,i,s){var a=this,o=this.props,l=o.tickLine,u=o.stroke,c=o.tick,p=o.tickFormatter,f=o.unit,m=mte(Ct(Ct({},this.props),{},{ticks:r}),i,s),g=this.getTickTextAnchor(),h=this.getTickVerticalAnchor(),v=Ge(this.props,!1),b=Ge(c,!1),w=Ct(Ct({},v),{},{fill:"none"},Ge(l,!1)),y=m.map(function(A,q){var x=a.getTickLineCoord(A),_=x.line,I=x.tick,S=Ct(Ct(Ct(Ct({textAnchor:g,verticalAnchor:h},v),{},{stroke:"none",fill:u},b),I),{},{index:q,payload:A,visibleTicksCount:m.length,tickFormatter:p});return O.createElement(Rt,us({className:"recharts-cartesian-axis-tick",key:"tick-".concat(A.value,"-").concat(A.coordinate,"-").concat(A.tickCoord)},Zl(a.props,A,q)),l&&O.createElement("line",us({},w,_,{className:Le("recharts-cartesian-axis-tick-line",Cn(l,"className"))})),c&&t.renderTickItem(c,S,"".concat(Oe(p)?p(A.value,q):A.value).concat(f||"")))});return O.createElement("g",{className:"recharts-cartesian-axis-ticks"},y)}},{key:"render",value:function(){var r=this,i=this.props,s=i.axisLine,a=i.width,o=i.height,l=i.ticksGenerator,u=i.className,c=i.hide;if(c)return null;var p=this.props,f=p.ticks,m=Jd(p,gte),g=f;return Oe(l)&&(g=f&&f.length>0?l(this.props):l(m)),a<=0||o<=0||!g||!g.length?null:O.createElement(Rt,{className:Le("recharts-cartesian-axis",u),ref:function(v){r.layerReference=v}},s&&this.renderAxisLine(),this.renderTicks(g,this.state.fontSize,this.state.letterSpacing),Xt.renderCallByParent(this.props))}}],[{key:"renderTickItem",value:function(r,i,s){var a,o=Le(i.className,"recharts-cartesian-axis-tick-value");return O.isValidElement(r)?a=O.cloneElement(r,Ct(Ct({},i),{},{className:o})):Oe(r)?a=r(Ct(Ct({},i),{},{className:o})):a=O.createElement(mu,us({},i,{className:"recharts-cartesian-axis-tick-value"}),s),a}}])}(E.Component);eg(Kc,"displayName","CartesianAxis");eg(Kc,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});function Vs(e){"@babel/helpers - typeof";return Vs=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},Vs(e)}function Ete(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _te(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,P2(r.key),r)}}function kte(e,t,n){return t&&_te(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Cte(e,t,n){return t=Vu(t),jte(e,C2()?Reflect.construct(t,n||[],Vu(e).constructor):t.apply(e,n))}function jte(e,t){if(t&&(Vs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Pte(e)}function Pte(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function C2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(C2=function(){return!!e})()}function Vu(e){return Vu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Vu(e)}function Tte(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&uf(e,t)}function uf(e,t){return uf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},uf(e,t)}function j2(e,t,n){return t=P2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function P2(e){var t=Ite(e,"string");return Vs(t)=="symbol"?t:t+""}function Ite(e,t){if(Vs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Vs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function cf(){return cf=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},cf.apply(this,arguments)}function Ote(e){var t=e.xAxisId,n=v2(),r=y2(),i=h2(t);return i==null?null:E.createElement(Kc,cf({},i,{className:Le("recharts-".concat(i.axisType," ").concat(i.axisType),i.className),viewBox:{x:0,y:0,width:n,height:r},ticksGenerator:function(a){return qi(a,!0)}}))}var Xc=function(e){function t(){return Ete(this,t),Cte(this,t,arguments)}return Tte(t,e),kte(t,[{key:"render",value:function(){return E.createElement(Ote,this.props)}}])}(E.Component);j2(Xc,"displayName","XAxis");j2(Xc,"defaultProps",{allowDecimals:!0,hide:!1,orientation:"bottom",width:0,height:30,mirror:!1,xAxisId:0,tickCount:5,type:"category",padding:{left:0,right:0},allowDataOverflow:!1,scale:"auto",reversed:!1,allowDuplicatedCategory:!0});function Gs(e){"@babel/helpers - typeof";return Gs=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},Gs(e)}function Lte(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Mte(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,O2(r.key),r)}}function Nte(e,t,n){return t&&Mte(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function Rte(e,t,n){return t=Gu(t),$te(e,T2()?Reflect.construct(t,n||[],Gu(e).constructor):t.apply(e,n))}function $te(e,t){if(t&&(Gs(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Dte(e)}function Dte(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function T2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(T2=function(){return!!e})()}function Gu(e){return Gu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Gu(e)}function Fte(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&df(e,t)}function df(e,t){return df=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},df(e,t)}function I2(e,t,n){return t=O2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O2(e){var t=Ute(e,"string");return Gs(t)=="symbol"?t:t+""}function Ute(e,t){if(Gs(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Gs(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pf(){return pf=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pf.apply(this,arguments)}var zte=function(t){var n=t.yAxisId,r=v2(),i=y2(),s=g2(n);return s==null?null:E.createElement(Kc,pf({},s,{className:Le("recharts-".concat(s.axisType," ").concat(s.axisType),s.className),viewBox:{x:0,y:0,width:r,height:i},ticksGenerator:function(o){return qi(o,!0)}}))},Qc=function(e){function t(){return Lte(this,t),Rte(this,t,arguments)}return Fte(t,e),Nte(t,[{key:"render",value:function(){return E.createElement(zte,this.props)}}])}(E.Component);I2(Qc,"displayName","YAxis");I2(Qc,"defaultProps",{allowDuplicatedCategory:!0,allowDecimals:!0,hide:!1,orientation:"left",width:60,height:0,mirror:!1,yAxisId:0,tickCount:5,type:"number",padding:{top:0,bottom:0},allowDataOverflow:!1,scale:"auto",reversed:!1});function xx(e){return Vte(e)||Hte(e)||Wte(e)||Bte()}function Bte(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
388In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Wte(e,t){if(e){if(typeof e=="string")return mf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return mf(e,t)}}function Hte(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Vte(e){if(Array.isArray(e))return mf(e)}function mf(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ff=function(t,n,r,i,s){var a=Vn(t,Zh),o=Vn(t,Hc),l=[].concat(xx(a),xx(o)),u=Vn(t,Gc),c="".concat(i,"Id"),p=i[0],f=n;if(l.length&&(f=l.reduce(function(h,v){if(v.props[c]===r&&or(v.props,"extendDomain")&&re(v.props[p])){var b=v.props[p];return[Math.min(h[0],b),Math.max(h[1],b)]}return h},f)),u.length){var m="".concat(p,"1"),g="".concat(p,"2");f=u.reduce(function(h,v){if(v.props[c]===r&&or(v.props,"extendDomain")&&re(v.props[m])&&re(v.props[g])){var b=v.props[m],w=v.props[g];return[Math.min(h[0],b,w),Math.max(h[1],b,w)]}return h},f)}return s&&s.length&&(f=s.reduce(function(h,v){return re(v)?[Math.min(h[0],v),Math.max(h[1],v)]:h},f)),f},L2={exports:{}};(function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1));function i(l,u,c){this.fn=l,this.context=u,this.once=c||!1}function s(l,u,c,p,f){if(typeof c!="function")throw new TypeError("The listener must be a function");var m=new i(c,p||l,f),g=n?n+u:u;return l._events[g]?l._events[g].fn?l._events[g]=[l._events[g],m]:l._events[g].push(m):(l._events[g]=m,l._eventsCount++),l}function a(l,u){--l._eventsCount===0?l._events=new r:delete l._events[u]}function o(){this._events=new r,this._eventsCount=0}o.prototype.eventNames=function(){var u=[],c,p;if(this._eventsCount===0)return u;for(p in c=this._events)t.call(c,p)&&u.push(n?p.slice(1):p);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(c)):u},o.prototype.listeners=function(u){var c=n?n+u:u,p=this._events[c];if(!p)return[];if(p.fn)return[p.fn];for(var f=0,m=p.length,g=new Array(m);f<m;f++)g[f]=p[f].fn;return g},o.prototype.listenerCount=function(u){var c=n?n+u:u,p=this._events[c];return p?p.fn?1:p.length:0},o.prototype.emit=function(u,c,p,f,m,g){var h=n?n+u:u;if(!this._events[h])return!1;var v=this._events[h],b=arguments.length,w,y;if(v.fn){switch(v.once&&this.removeListener(u,v.fn,void 0,!0),b){case 1:return v.fn.call(v.context),!0;case 2:return v.fn.call(v.context,c),!0;case 3:return v.fn.call(v.context,c,p),!0;case 4:return v.fn.call(v.context,c,p,f),!0;case 5:return v.fn.call(v.context,c,p,f,m),!0;case 6:return v.fn.call(v.context,c,p,f,m,g),!0}for(y=1,w=new Array(b-1);y<b;y++)w[y-1]=arguments[y];v.fn.apply(v.context,w)}else{var A=v.length,q;for(y=0;y<A;y++)switch(v[y].once&&this.removeListener(u,v[y].fn,void 0,!0),b){case 1:v[y].fn.call(v[y].context);break;case 2:v[y].fn.call(v[y].context,c);break;case 3:v[y].fn.call(v[y].context,c,p);break;case 4:v[y].fn.call(v[y].context,c,p,f);break;default:if(!w)for(q=1,w=new Array(b-1);q<b;q++)w[q-1]=arguments[q];v[y].fn.apply(v[y].context,w)}}return!0},o.prototype.on=function(u,c,p){return s(this,u,c,p,!1)},o.prototype.once=function(u,c,p){return s(this,u,c,p,!0)},o.prototype.removeListener=function(u,c,p,f){var m=n?n+u:u;if(!this._events[m])return this;if(!c)return a(this,m),this;var g=this._events[m];if(g.fn)g.fn===c&&(!f||g.once)&&(!p||g.context===p)&&a(this,m);else{for(var h=0,v=[],b=g.length;h<b;h++)(g[h].fn!==c||f&&!g[h].once||p&&g[h].context!==p)&&v.push(g[h]);v.length?this._events[m]=v.length===1?v[0]:v:a(this,m)}return this},o.prototype.removeAllListeners=function(u){var c;return u?(c=n?n+u:u,this._events[c]&&a(this,c)):(this._events=new r,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=n,o.EventEmitter=o,e.exports=o})(L2);var Gte=L2.exports;const Kte=De(Gte);var Yd=new Kte,Zd="recharts.syncMouseEvents";function Do(e){"@babel/helpers - typeof";return Do=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},Do(e)}function Xte(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qte(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,M2(r.key),r)}}function Jte(e,t,n){return t&&Qte(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function ep(e,t,n){return t=M2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function M2(e){var t=Yte(e,"string");return Do(t)=="symbol"?t:t+""}function Yte(e,t){if(Do(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(Do(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var Zte=function(){function e(){Xte(this,e),ep(this,"activeIndex",0),ep(this,"coordinateList",[]),ep(this,"layout","horizontal")}return Jte(e,[{key:"setDetails",value:function(n){var r,i=n.coordinateList,s=i===void 0?null:i,a=n.container,o=a===void 0?null:a,l=n.layout,u=l===void 0?null:l,c=n.offset,p=c===void 0?null:c,f=n.mouseHandlerCallback,m=f===void 0?null:f;this.coordinateList=(r=s??this.coordinateList)!==null&&r!==void 0?r:[],this.container=o??this.container,this.layout=u??this.layout,this.offset=p??this.offset,this.mouseHandlerCallback=m??this.mouseHandlerCallback,this.activeIndex=Math.min(Math.max(this.activeIndex,0),this.coordinateList.length-1)}},{key:"focus",value:function(){this.spoofMouse()}},{key:"keyboardEvent",value:function(n){if(this.coordinateList.length!==0)switch(n.key){case"ArrowRight":{if(this.layout!=="horizontal")return;this.activeIndex=Math.min(this.activeIndex+1,this.coordinateList.length-1),this.spoofMouse();break}case"ArrowLeft":{if(this.layout!=="horizontal")return;this.activeIndex=Math.max(this.activeIndex-1,0),this.spoofMouse();break}}}},{key:"setIndex",value:function(n){this.activeIndex=n}},{key:"spoofMouse",value:function(){var n,r;if(this.layout==="horizontal"&&this.coordinateList.length!==0){var i=this.container.getBoundingClientRect(),s=i.x,a=i.y,o=i.height,l=this.coordinateList[this.activeIndex].coordinate,u=((n=window)===null||n===void 0?void 0:n.scrollX)||0,c=((r=window)===null||r===void 0?void 0:r.scrollY)||0,p=s+l+u,f=a+this.offset.top+o/2+c;this.mouseHandlerCallback({pageX:p,pageY:f})}}}])}();function ene(e,t,n){if(n==="number"&&t===!0&&Array.isArray(e)){var r=e==null?void 0:e[0],i=e==null?void 0:e[1];if(r&&i&&re(r)&&re(i))return!0}return!1}function tne(e,t,n,r){var i=r/2;return{stroke:"none",fill:"#ccc",x:e==="horizontal"?t.x-i:n.left+.5,y:e==="horizontal"?n.top+.5:t.y-i,width:e==="horizontal"?r:n.width-1,height:e==="horizontal"?n.height-1:r}}function N2(e){var t=e.cx,n=e.cy,r=e.radius,i=e.startAngle,s=e.endAngle,a=zt(t,n,r,i),o=zt(t,n,r,s);return{points:[a,o],cx:t,cy:n,radius:r,startAngle:i,endAngle:s}}function nne(e,t,n){var r,i,s,a;if(e==="horizontal")r=t.x,s=r,i=n.top,a=n.top+n.height;else if(e==="vertical")i=t.y,a=i,r=n.left,s=n.left+n.width;else if(t.cx!=null&&t.cy!=null)if(e==="centric"){var o=t.cx,l=t.cy,u=t.innerRadius,c=t.outerRadius,p=t.angle,f=zt(o,l,u,p),m=zt(o,l,c,p);r=f.x,i=f.y,s=m.x,a=m.y}else return N2(t);return[{x:r,y:i},{x:s,y:a}]}function Fo(e){"@babel/helpers - typeof";return Fo=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},Fo(e)}function wx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function jl(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?wx(Object(n),!0).forEach(function(r){rne(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wx(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function rne(e,t,n){return t=ine(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ine(e){var t=sne(e,"string");return Fo(t)=="symbol"?t:t+""}function sne(e,t){if(Fo(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Fo(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ane(e){var t,n,r=e.element,i=e.tooltipEventType,s=e.isActive,a=e.activeCoordinate,o=e.activePayload,l=e.offset,u=e.activeTooltipIndex,c=e.tooltipAxisBandSize,p=e.layout,f=e.chartName,m=(t=r.props.cursor)!==null&&t!==void 0?t:(n=r.type.defaultProps)===null||n===void 0?void 0:n.cursor;if(!r||!m||!s||!a||f!=="ScatterChart"&&i!=="axis")return null;var g,h=x0;if(f==="ScatterChart")g=a,h=LJ;else if(f==="BarChart")g=tne(p,a,l,c),h=Kh;else if(p==="radial"){var v=N2(a),b=v.cx,w=v.cy,y=v.radius,A=v.startAngle,q=v.endAngle;g={cx:b,cy:w,startAngle:A,endAngle:q,innerRadius:y,outerRadius:y},h=FA}else g={points:nne(p,a,l)},h=x0;var x=jl(jl(jl(jl({stroke:"#ccc",pointerEvents:"none"},l),g),Ge(m,!1)),{},{payload:o,payloadIndex:u,className:Le("recharts-tooltip-cursor",m.className)});return E.isValidElement(m)?E.cloneElement(m,x):E.createElement(h,x)}var one=["item"],lne=["children","className","width","height","style","compact","title","desc"];function Ks(e){"@babel/helpers - typeof";return Ks=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},Ks(e)}function cs(){return cs=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},cs.apply(this,arguments)}function qx(e,t){return dne(e)||cne(e,t)||$2(e,t)||une()}function une(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
389In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function cne(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,i,s,a,o=[],l=!0,u=!1;try{if(s=(n=n.call(e)).next,t!==0)for(;!(l=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw i}}return o}}function dne(e){if(Array.isArray(e))return e}function Sx(e,t){if(e==null)return{};var n=pne(e,t),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i<s.length;i++)r=s[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function pne(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function mne(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fne(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,D2(r.key),r)}}function hne(e,t,n){return t&&fne(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function gne(e,t,n){return t=Ku(t),vne(e,R2()?Reflect.construct(t,n||[],Ku(e).constructor):t.apply(e,n))}function vne(e,t){if(t&&(Ks(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return yne(e)}function yne(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function R2(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(R2=function(){return!!e})()}function Ku(e){return Ku=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Ku(e)}function bne(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&hf(e,t)}function hf(e,t){return hf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},hf(e,t)}function Xs(e){return qne(e)||wne(e)||$2(e)||xne()}function xne(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
390In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $2(e,t){if(e){if(typeof e=="string")return gf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return gf(e,t)}}function wne(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function qne(e){if(Array.isArray(e))return gf(e)}function gf(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ax(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function V(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Ax(Object(n),!0).forEach(function(r){be(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ax(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function be(e,t,n){return t=D2(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function D2(e){var t=Sne(e,"string");return Ks(t)=="symbol"?t:t+""}function Sne(e,t){if(Ks(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Ks(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Ane={xAxis:["bottom","top"],yAxis:["left","right"]},Ene={width:"100%",height:"100%"},F2={x:0,y:0};function Pl(e){return e}var _ne=function(t,n){return n==="horizontal"?t.x:n==="vertical"?t.y:n==="centric"?t.angle:t.radius},kne=function(t,n,r,i){var s=n.find(function(c){return c&&c.index===r});if(s){if(t==="horizontal")return{x:s.coordinate,y:i.y};if(t==="vertical")return{x:i.x,y:s.coordinate};if(t==="centric"){var a=s.coordinate,o=i.radius;return V(V(V({},i),zt(i.cx,i.cy,o,a)),{},{angle:a,radius:o})}var l=s.coordinate,u=i.angle;return V(V(V({},i),zt(i.cx,i.cy,l,u)),{},{angle:u,radius:l})}return F2},Jc=function(t,n){var r=n.graphicalItems,i=n.dataStartIndex,s=n.dataEndIndex,a=(r??[]).reduce(function(o,l){var u=l.props.data;return u&&u.length?[].concat(Xs(o),Xs(u)):o},[]);return a.length>0?a:t&&t.length&&re(i)&&re(s)?t.slice(i,s+1):[]};function U2(e){return e==="number"?[0,"auto"]:void 0}var vf=function(t,n,r,i){var s=t.graphicalItems,a=t.tooltipAxis,o=Jc(n,t);return r<0||!s||!s.length||r>=o.length?null:s.reduce(function(l,u){var c,p=(c=u.props.data)!==null&&c!==void 0?c:n;p&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=r&&(p=p.slice(t.dataStartIndex,t.dataEndIndex+1));var f;if(a.dataKey&&!a.allowDuplicatedCategory){var m=p===void 0?o:p;f=Xp(m,a.dataKey,i)}else f=p&&p[r]||o[r];return f?[].concat(Xs(l),[NA(u,f)]):l},[])},Ex=function(t,n,r,i){var s=i||{x:t.chartX,y:t.chartY},a=_ne(s,r),o=t.orderedTooltipTicks,l=t.tooltipAxis,u=t.tooltipTicks,c=fK(a,o,u,l);if(c>=0&&u){var p=u[c]&&u[c].value,f=vf(t,n,c,p),m=kne(r,o,c,s);return{activeTooltipIndex:c,activeLabel:p,activePayload:f,activeCoordinate:m}}return null},Cne=function(t,n){var r=n.axes,i=n.graphicalItems,s=n.axisType,a=n.axisIdKey,o=n.stackGroups,l=n.dataStartIndex,u=n.dataEndIndex,c=t.layout,p=t.children,f=t.stackOffset,m=TA(c,s);return r.reduce(function(g,h){var v,b=h.type.defaultProps!==void 0?V(V({},h.type.defaultProps),h.props):h.props,w=b.type,y=b.dataKey,A=b.allowDataOverflow,q=b.allowDuplicatedCategory,x=b.scale,_=b.ticks,I=b.includeHidden,S=b[a];if(g[S])return g;var k=Jc(t.data,{graphicalItems:i.filter(function(z){var P,G=a in z.props?z.props[a]:(P=z.type.defaultProps)===null||P===void 0?void 0:P[a];return G===S}),dataStartIndex:l,dataEndIndex:u}),C=k.length,T,M,L;ene(b.domain,A,w)&&(T=Nm(b.domain,null,A),m&&(w==="number"||x!=="auto")&&(L=Ka(k,y,"category")));var N=U2(w);if(!T||T.length===0){var R,$=(R=b.domain)!==null&&R!==void 0?R:N;if(y){if(T=Ka(k,y,w),w==="category"&&m){var B=t5(T);q&&B?(M=T,T=Nu(0,C)):q||(T=o0($,T,h).reduce(function(z,P){return z.indexOf(P)>=0?z:[].concat(Xs(z),[P])},[]))}else if(w==="category")q?T=T.filter(function(z){return z!==""&&!Re(z)}):T=o0($,T,h).reduce(function(z,P){return z.indexOf(P)>=0||P===""||Re(P)?z:[].concat(Xs(z),[P])},[]);else if(w==="number"){var D=bK(k,i.filter(function(z){var P,G,ae=a in z.props?z.props[a]:(P=z.type.defaultProps)===null||P===void 0?void 0:P[a],se="hide"in z.props?z.props.hide:(G=z.type.defaultProps)===null||G===void 0?void 0:G.hide;return ae===S&&(I||!se)}),y,s,c);D&&(T=D)}m&&(w==="number"||x!=="auto")&&(L=Ka(k,y,"category"))}else m?T=Nu(0,C):o&&o[S]&&o[S].hasStack&&w==="number"?T=f==="expand"?[0,1]:MA(o[S].stackGroups,l,u):T=PA(k,i.filter(function(z){var P=a in z.props?z.props[a]:z.type.defaultProps[a],G="hide"in z.props?z.props.hide:z.type.defaultProps.hide;return P===S&&(I||!G)}),w,c,!0);if(w==="number")T=ff(p,T,S,s,_),$&&(T=Nm($,T,A));else if(w==="category"&&$){var j=$,J=T.every(function(z){return j.indexOf(z)>=0});J&&(T=j)}}return V(V({},g),{},be({},S,V(V({},b),{},{axisType:s,domain:T,categoricalDomain:L,duplicateDomain:M,originalDomain:(v=b.domain)!==null&&v!==void 0?v:N,isCategorical:m,layout:c})))},{})},jne=function(t,n){var r=n.graphicalItems,i=n.Axis,s=n.axisType,a=n.axisIdKey,o=n.stackGroups,l=n.dataStartIndex,u=n.dataEndIndex,c=t.layout,p=t.children,f=Jc(t.data,{graphicalItems:r,dataStartIndex:l,dataEndIndex:u}),m=f.length,g=TA(c,s),h=-1;return r.reduce(function(v,b){var w=b.type.defaultProps!==void 0?V(V({},b.type.defaultProps),b.props):b.props,y=w[a],A=U2("number");if(!v[y]){h++;var q;return g?q=Nu(0,m):o&&o[y]&&o[y].hasStack?(q=MA(o[y].stackGroups,l,u),q=ff(p,q,y,s)):(q=Nm(A,PA(f,r.filter(function(x){var _,I,S=a in x.props?x.props[a]:(_=x.type.defaultProps)===null||_===void 0?void 0:_[a],k="hide"in x.props?x.props.hide:(I=x.type.defaultProps)===null||I===void 0?void 0:I.hide;return S===y&&!k}),"number",c),i.defaultProps.allowDataOverflow),q=ff(p,q,y,s)),V(V({},v),{},be({},y,V(V({axisType:s},i.defaultProps),{},{hide:!0,orientation:Cn(Ane,"".concat(s,".").concat(h%2),null),domain:q,originalDomain:A,isCategorical:g,layout:c})))}return v},{})},Pne=function(t,n){var r=n.axisType,i=r===void 0?"xAxis":r,s=n.AxisComp,a=n.graphicalItems,o=n.stackGroups,l=n.dataStartIndex,u=n.dataEndIndex,c=t.children,p="".concat(i,"Id"),f=Vn(c,s),m={};return f&&f.length?m=Cne(t,{axes:f,graphicalItems:a,axisType:i,axisIdKey:p,stackGroups:o,dataStartIndex:l,dataEndIndex:u}):a&&a.length&&(m=jne(t,{Axis:s,graphicalItems:a,axisType:i,axisIdKey:p,stackGroups:o,dataStartIndex:l,dataEndIndex:u})),m},Tne=function(t){var n=Ur(t),r=qi(n,!1,!0);return{tooltipTicks:r,orderedTooltipTicks:bh(r,function(i){return i.coordinate}),tooltipAxis:n,tooltipAxisBandSize:ku(n,r)}},_x=function(t){var n=t.children,r=t.defaultShowTooltip,i=gn(n,Fs),s=0,a=0;return t.data&&t.data.length!==0&&(a=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(s=i.props.startIndex),i.props.endIndex>=0&&(a=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:s,dataEndIndex:a,activeTooltipIndex:-1,isTooltipActive:!!r}},Ine=function(t){return!t||!t.length?!1:t.some(function(n){var r=Sr(n&&n.type);return r&&r.indexOf("Bar")>=0})},kx=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},One=function(t,n){var r=t.props,i=t.graphicalItems,s=t.xAxisMap,a=s===void 0?{}:s,o=t.yAxisMap,l=o===void 0?{}:o,u=r.width,c=r.height,p=r.children,f=r.margin||{},m=gn(p,Fs),g=gn(p,ys),h=Object.keys(l).reduce(function(q,x){var _=l[x],I=_.orientation;return!_.mirror&&!_.hide?V(V({},q),{},be({},I,q[I]+_.width)):q},{left:f.left||0,right:f.right||0}),v=Object.keys(a).reduce(function(q,x){var _=a[x],I=_.orientation;return!_.mirror&&!_.hide?V(V({},q),{},be({},I,Cn(q,"".concat(I))+_.height)):q},{top:f.top||0,bottom:f.bottom||0}),b=V(V({},v),h),w=b.bottom;m&&(b.bottom+=m.props.height||Fs.defaultProps.height),g&&n&&(b=vK(b,i,r,n));var y=u-b.left-b.right,A=c-b.top-b.bottom;return V(V({brushBottom:w},b),{},{width:Math.max(y,0),height:Math.max(A,0)})},Lne=function(t,n){if(n==="xAxis")return t[n].width;if(n==="yAxis")return t[n].height},Mne=function(t){var n=t.chartName,r=t.GraphicalChild,i=t.defaultTooltipEventType,s=i===void 0?"axis":i,a=t.validateTooltipEventTypes,o=a===void 0?["axis"]:a,l=t.axisComponents,u=t.legendContent,c=t.formatAxisMap,p=t.defaultProps,f=function(b,w){var y=w.graphicalItems,A=w.stackGroups,q=w.offset,x=w.updateId,_=w.dataStartIndex,I=w.dataEndIndex,S=b.barSize,k=b.layout,C=b.barGap,T=b.barCategoryGap,M=b.maxBarSize,L=kx(k),N=L.numericAxisName,R=L.cateAxisName,$=Ine(y),B=[];return y.forEach(function(D,j){var J=Jc(b.data,{graphicalItems:[D],dataStartIndex:_,dataEndIndex:I}),z=D.type.defaultProps!==void 0?V(V({},D.type.defaultProps),D.props):D.props,P=z.dataKey,G=z.maxBarSize,ae=z["".concat(N,"Id")],se=z["".concat(R,"Id")],ie={},_e=l.reduce(function(Be,ft){var Fe=w["".concat(ft.axisType,"Map")],Jt=z["".concat(ft.axisType,"Id")];Fe&&Fe[Jt]||ft.axisType==="zAxis"||Ni();var st=Fe[Jt];return V(V({},Be),{},be(be({},ft.axisType,st),"".concat(ft.axisType,"Ticks"),qi(st)))},ie),H=_e[R],Y=_e["".concat(R,"Ticks")],te=A&&A[ae]&&A[ae].hasStack&&CK(D,A[ae].stackGroups),F=Sr(D.type).indexOf("Bar")>=0,he=ku(H,Y),ce=[],me=$&&hK({barSize:S,stackGroups:A,totalSize:Lne(_e,R)});if(F){var fe,de,Me=Re(G)?M:G,ge=(fe=(de=ku(H,Y,!0))!==null&&de!==void 0?de:Me)!==null&&fe!==void 0?fe:0;ce=gK({barGap:C,barCategoryGap:T,bandSize:ge!==he?ge:he,sizeList:me[se],maxBarSize:Me}),ge!==he&&(ce=ce.map(function(Be){return V(V({},Be),{},{position:V(V({},Be.position),{},{offset:Be.position.offset-ge/2})})}))}var Ie=D&&D.type&&D.type.getComposedData;Ie&&B.push({props:V(V({},Ie(V(V({},_e),{},{displayedData:J,props:b,dataKey:P,item:D,bandSize:he,barPosition:ce,offset:q,stackedData:te,layout:k,dataStartIndex:_,dataEndIndex:I}))),{},be(be(be({key:D.key||"item-".concat(j)},N,_e[N]),R,_e[R]),"animationId",x)),childIndex:m5(D,b.children),item:D})}),B},m=function(b,w){var y=b.props,A=b.dataStartIndex,q=b.dataEndIndex,x=b.updateId;if(!ty({props:y}))return null;var _=y.children,I=y.layout,S=y.stackOffset,k=y.data,C=y.reverseStackOrder,T=kx(I),M=T.numericAxisName,L=T.cateAxisName,N=Vn(_,r),R=_K(k,N,"".concat(M,"Id"),"".concat(L,"Id"),S,C),$=l.reduce(function(z,P){var G="".concat(P.axisType,"Map");return V(V({},z),{},be({},G,Pne(y,V(V({},P),{},{graphicalItems:N,stackGroups:P.axisType===M&&R,dataStartIndex:A,dataEndIndex:q}))))},{}),B=One(V(V({},$),{},{props:y,graphicalItems:N}),w==null?void 0:w.legendBBox);Object.keys($).forEach(function(z){$[z]=c(y,$[z],B,z.replace("Map",""),n)});var D=$["".concat(L,"Map")],j=Tne(D),J=f(y,V(V({},$),{},{dataStartIndex:A,dataEndIndex:q,updateId:x,graphicalItems:N,stackGroups:R,offset:B}));return V(V({formattedGraphicalItems:J,graphicalItems:N,offset:B,stackGroups:R},j),$)},g=function(v){function b(w){var y,A,q;return mne(this,b),q=gne(this,b,[w]),be(q,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),be(q,"accessibilityManager",new Zte),be(q,"handleLegendBBoxUpdate",function(x){if(x){var _=q.state,I=_.dataStartIndex,S=_.dataEndIndex,k=_.updateId;q.setState(V({legendBBox:x},m({props:q.props,dataStartIndex:I,dataEndIndex:S,updateId:k},V(V({},q.state),{},{legendBBox:x}))))}}),be(q,"handleReceiveSyncEvent",function(x,_,I){if(q.props.syncId===x){if(I===q.eventEmitterSymbol&&typeof q.props.syncMethod!="function")return;q.applySyncEvent(_)}}),be(q,"handleBrushChange",function(x){var _=x.startIndex,I=x.endIndex;if(_!==q.state.dataStartIndex||I!==q.state.dataEndIndex){var S=q.state.updateId;q.setState(function(){return V({dataStartIndex:_,dataEndIndex:I},m({props:q.props,dataStartIndex:_,dataEndIndex:I,updateId:S},q.state))}),q.triggerSyncEvent({dataStartIndex:_,dataEndIndex:I})}}),be(q,"handleMouseEnter",function(x){var _=q.getMouseInfo(x);if(_){var I=V(V({},_),{},{isTooltipActive:!0});q.setState(I),q.triggerSyncEvent(I);var S=q.props.onMouseEnter;Oe(S)&&S(I,x)}}),be(q,"triggeredAfterMouseMove",function(x){var _=q.getMouseInfo(x),I=_?V(V({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};q.setState(I),q.triggerSyncEvent(I);var S=q.props.onMouseMove;Oe(S)&&S(I,x)}),be(q,"handleItemMouseEnter",function(x){q.setState(function(){return{isTooltipActive:!0,activeItem:x,activePayload:x.tooltipPayload,activeCoordinate:x.tooltipPosition||{x:x.cx,y:x.cy}}})}),be(q,"handleItemMouseLeave",function(){q.setState(function(){return{isTooltipActive:!1}})}),be(q,"handleMouseMove",function(x){x.persist(),q.throttleTriggeredAfterMouseMove(x)}),be(q,"handleMouseLeave",function(x){q.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};q.setState(_),q.triggerSyncEvent(_);var I=q.props.onMouseLeave;Oe(I)&&I(_,x)}),be(q,"handleOuterEvent",function(x){var _=p5(x),I=Cn(q.props,"".concat(_));if(_&&Oe(I)){var S,k;/.*touch.*/i.test(_)?k=q.getMouseInfo(x.changedTouches[0]):k=q.getMouseInfo(x),I((S=k)!==null&&S!==void 0?S:{},x)}}),be(q,"handleClick",function(x){var _=q.getMouseInfo(x);if(_){var I=V(V({},_),{},{isTooltipActive:!0});q.setState(I),q.triggerSyncEvent(I);var S=q.props.onClick;Oe(S)&&S(I,x)}}),be(q,"handleMouseDown",function(x){var _=q.props.onMouseDown;if(Oe(_)){var I=q.getMouseInfo(x);_(I,x)}}),be(q,"handleMouseUp",function(x){var _=q.props.onMouseUp;if(Oe(_)){var I=q.getMouseInfo(x);_(I,x)}}),be(q,"handleTouchMove",function(x){x.changedTouches!=null&&x.changedTouches.length>0&&q.throttleTriggeredAfterMouseMove(x.changedTouches[0])}),be(q,"handleTouchStart",function(x){x.changedTouches!=null&&x.changedTouches.length>0&&q.handleMouseDown(x.changedTouches[0])}),be(q,"handleTouchEnd",function(x){x.changedTouches!=null&&x.changedTouches.length>0&&q.handleMouseUp(x.changedTouches[0])}),be(q,"handleDoubleClick",function(x){var _=q.props.onDoubleClick;if(Oe(_)){var I=q.getMouseInfo(x);_(I,x)}}),be(q,"handleContextMenu",function(x){var _=q.props.onContextMenu;if(Oe(_)){var I=q.getMouseInfo(x);_(I,x)}}),be(q,"triggerSyncEvent",function(x){q.props.syncId!==void 0&&Yd.emit(Zd,q.props.syncId,x,q.eventEmitterSymbol)}),be(q,"applySyncEvent",function(x){var _=q.props,I=_.layout,S=_.syncMethod,k=q.state.updateId,C=x.dataStartIndex,T=x.dataEndIndex;if(x.dataStartIndex!==void 0||x.dataEndIndex!==void 0)q.setState(V({dataStartIndex:C,dataEndIndex:T},m({props:q.props,dataStartIndex:C,dataEndIndex:T,updateId:k},q.state)));else if(x.activeTooltipIndex!==void 0){var M=x.chartX,L=x.chartY,N=x.activeTooltipIndex,R=q.state,$=R.offset,B=R.tooltipTicks;if(!$)return;if(typeof S=="function")N=S(B,x);else if(S==="value"){N=-1;for(var D=0;D<B.length;D++)if(B[D].value===x.activeLabel){N=D;break}}var j=V(V({},$),{},{x:$.left,y:$.top}),J=Math.min(M,j.x+j.width),z=Math.min(L,j.y+j.height),P=B[N]&&B[N].value,G=vf(q.state,q.props.data,N),ae=B[N]?{x:I==="horizontal"?B[N].coordinate:J,y:I==="horizontal"?z:B[N].coordinate}:F2;q.setState(V(V({},x),{},{activeLabel:P,activeCoordinate:ae,activePayload:G,activeTooltipIndex:N}))}else q.setState(x)}),be(q,"renderCursor",function(x){var _,I=q.state,S=I.isTooltipActive,k=I.activeCoordinate,C=I.activePayload,T=I.offset,M=I.activeTooltipIndex,L=I.tooltipAxisBandSize,N=q.getTooltipEventType(),R=(_=x.props.active)!==null&&_!==void 0?_:S,$=q.props.layout,B=x.key||"_recharts-cursor";return O.createElement(ane,{key:B,activeCoordinate:k,activePayload:C,activeTooltipIndex:M,chartName:n,element:x,isActive:R,layout:$,offset:T,tooltipAxisBandSize:L,tooltipEventType:N})}),be(q,"renderPolarAxis",function(x,_,I){var S=Cn(x,"type.axisType"),k=Cn(q.state,"".concat(S,"Map")),C=x.type.defaultProps,T=C!==void 0?V(V({},C),x.props):x.props,M=k&&k[T["".concat(S,"Id")]];return E.cloneElement(x,V(V({},M),{},{className:Le(S,M.className),key:x.key||"".concat(_,"-").concat(I),ticks:qi(M,!0)}))}),be(q,"renderPolarGrid",function(x){var _=x.props,I=_.radialLines,S=_.polarAngles,k=_.polarRadius,C=q.state,T=C.radiusAxisMap,M=C.angleAxisMap,L=Ur(T),N=Ur(M),R=N.cx,$=N.cy,B=N.innerRadius,D=N.outerRadius;return E.cloneElement(x,{polarAngles:Array.isArray(S)?S:qi(N,!0).map(function(j){return j.coordinate}),polarRadius:Array.isArray(k)?k:qi(L,!0).map(function(j){return j.coordinate}),cx:R,cy:$,innerRadius:B,outerRadius:D,key:x.key||"polar-grid",radialLines:I})}),be(q,"renderLegend",function(){var x=q.state.formattedGraphicalItems,_=q.props,I=_.children,S=_.width,k=_.height,C=q.props.margin||{},T=S-(C.left||0)-(C.right||0),M=CA({children:I,formattedGraphicalItems:x,legendWidth:T,legendContent:u});if(!M)return null;var L=M.item,N=Sx(M,one);return E.cloneElement(L,V(V({},N),{},{chartWidth:S,chartHeight:k,margin:C,onBBoxUpdate:q.handleLegendBBoxUpdate}))}),be(q,"renderTooltip",function(){var x,_=q.props,I=_.children,S=_.accessibilityLayer,k=gn(I,Yn);if(!k)return null;var C=q.state,T=C.isTooltipActive,M=C.activeCoordinate,L=C.activePayload,N=C.activeLabel,R=C.offset,$=(x=k.props.active)!==null&&x!==void 0?x:T;return E.cloneElement(k,{viewBox:V(V({},R),{},{x:R.left,y:R.top}),active:$,label:N,payload:$?L:[],coordinate:M,accessibilityLayer:S})}),be(q,"renderBrush",function(x){var _=q.props,I=_.margin,S=_.data,k=q.state,C=k.offset,T=k.dataStartIndex,M=k.dataEndIndex,L=k.updateId;return E.cloneElement(x,{key:x.key||"_recharts-brush",onChange:El(q.handleBrushChange,x.props.onChange),data:S,x:re(x.props.x)?x.props.x:C.left,y:re(x.props.y)?x.props.y:C.top+C.height+C.brushBottom-(I.bottom||0),width:re(x.props.width)?x.props.width:C.width,startIndex:T,endIndex:M,updateId:"brush-".concat(L)})}),be(q,"renderReferenceElement",function(x,_,I){if(!x)return null;var S=q,k=S.clipPathId,C=q.state,T=C.xAxisMap,M=C.yAxisMap,L=C.offset,N=x.type.defaultProps||{},R=x.props,$=R.xAxisId,B=$===void 0?N.xAxisId:$,D=R.yAxisId,j=D===void 0?N.yAxisId:D;return E.cloneElement(x,{key:x.key||"".concat(_,"-").concat(I),xAxis:T[B],yAxis:M[j],viewBox:{x:L.left,y:L.top,width:L.width,height:L.height},clipPathId:k})}),be(q,"renderActivePoints",function(x){var _=x.item,I=x.activePoint,S=x.basePoint,k=x.childIndex,C=x.isRange,T=[],M=_.props.key,L=_.item.type.defaultProps!==void 0?V(V({},_.item.type.defaultProps),_.item.props):_.item.props,N=L.activeDot,R=L.dataKey,$=V(V({index:k,dataKey:R,cx:I.x,cy:I.y,r:4,fill:Gh(_.item),strokeWidth:2,stroke:"#fff",payload:I.payload,value:I.value},Ge(N,!1)),Yl(N));return T.push(b.renderActiveDot(N,$,"".concat(M,"-activePoint-").concat(k))),S?T.push(b.renderActiveDot(N,V(V({},$),{},{cx:S.x,cy:S.y}),"".concat(M,"-basePoint-").concat(k))):C&&T.push(null),T}),be(q,"renderGraphicChild",function(x,_,I){var S=q.filterFormatItem(x,_,I);if(!S)return null;var k=q.getTooltipEventType(),C=q.state,T=C.isTooltipActive,M=C.tooltipAxis,L=C.activeTooltipIndex,N=C.activeLabel,R=q.props.children,$=gn(R,Yn),B=S.props,D=B.points,j=B.isRange,J=B.baseLine,z=S.item.type.defaultProps!==void 0?V(V({},S.item.type.defaultProps),S.item.props):S.item.props,P=z.activeDot,G=z.hide,ae=z.activeBar,se=z.activeShape,ie=!!(!G&&T&&$&&(P||ae||se)),_e={};k!=="axis"&&$&&$.props.trigger==="click"?_e={onClick:El(q.handleItemMouseEnter,x.props.onClick)}:k!=="axis"&&(_e={onMouseLeave:El(q.handleItemMouseLeave,x.props.onMouseLeave),onMouseEnter:El(q.handleItemMouseEnter,x.props.onMouseEnter)});var H=E.cloneElement(x,V(V({},S.props),_e));function Y(ft){return typeof M.dataKey=="function"?M.dataKey(ft.payload):null}if(ie)if(L>=0){var te,F;if(M.dataKey&&!M.allowDuplicatedCategory){var he=typeof M.dataKey=="function"?Y:"payload.".concat(M.dataKey.toString());te=Xp(D,he,N),F=j&&J&&Xp(J,he,N)}else te=D==null?void 0:D[L],F=j&&J&&J[L];if(se||ae){var ce=x.props.activeIndex!==void 0?x.props.activeIndex:L;return[E.cloneElement(x,V(V(V({},S.props),_e),{},{activeIndex:ce})),null,null]}if(!Re(te))return[H].concat(Xs(q.renderActivePoints({item:S,activePoint:te,basePoint:F,childIndex:L,isRange:j})))}else{var me,fe=(me=q.getItemByXY(q.state.activeCoordinate))!==null&&me!==void 0?me:{graphicalItem:H},de=fe.graphicalItem,Me=de.item,ge=Me===void 0?x:Me,Ie=de.childIndex,Be=V(V(V({},S.props),_e),{},{activeIndex:Ie});return[E.cloneElement(ge,Be),null,null]}return j?[H,null,null]:[H,null]}),be(q,"renderCustomized",function(x,_,I){return E.cloneElement(x,V(V({key:"recharts-customized-".concat(I)},q.props),q.state))}),be(q,"renderMap",{CartesianGrid:{handler:Pl,once:!0},ReferenceArea:{handler:q.renderReferenceElement},ReferenceLine:{handler:Pl},ReferenceDot:{handler:q.renderReferenceElement},XAxis:{handler:Pl},YAxis:{handler:Pl},Brush:{handler:q.renderBrush,once:!0},Bar:{handler:q.renderGraphicChild},Line:{handler:q.renderGraphicChild},Area:{handler:q.renderGraphicChild},Radar:{handler:q.renderGraphicChild},RadialBar:{handler:q.renderGraphicChild},Scatter:{handler:q.renderGraphicChild},Pie:{handler:q.renderGraphicChild},Funnel:{handler:q.renderGraphicChild},Tooltip:{handler:q.renderCursor,once:!0},PolarGrid:{handler:q.renderPolarGrid,once:!0},PolarAngleAxis:{handler:q.renderPolarAxis},PolarRadiusAxis:{handler:q.renderPolarAxis},Customized:{handler:q.renderCustomized}}),q.clipPathId="".concat((y=w.id)!==null&&y!==void 0?y:qc("recharts"),"-clip"),q.throttleTriggeredAfterMouseMove=CS(q.triggeredAfterMouseMove,(A=w.throttleDelay)!==null&&A!==void 0?A:1e3/60),q.state={},q}return bne(b,v),hne(b,[{key:"componentDidMount",value:function(){var y,A;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(y=this.props.margin.left)!==null&&y!==void 0?y:0,top:(A=this.props.margin.top)!==null&&A!==void 0?A:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var y=this.props,A=y.children,q=y.data,x=y.height,_=y.layout,I=gn(A,Yn);if(I){var S=I.props.defaultIndex;if(!(typeof S!="number"||S<0||S>this.state.tooltipTicks.length-1)){var k=this.state.tooltipTicks[S]&&this.state.tooltipTicks[S].value,C=vf(this.state,q,S,k),T=this.state.tooltipTicks[S].coordinate,M=(this.state.offset.top+x)/2,L=_==="horizontal",N=L?{x:T,y:M}:{y:T,x:M},R=this.state.formattedGraphicalItems.find(function(B){var D=B.item;return D.type.name==="Scatter"});R&&(N=V(V({},N),R.props.points[S].tooltipPosition),C=R.props.points[S].tooltipPayload);var $={activeTooltipIndex:S,isTooltipActive:!0,activeLabel:k,activePayload:C,activeCoordinate:N};this.setState($),this.renderCursor(I),this.accessibilityManager.setIndex(S)}}}},{key:"getSnapshotBeforeUpdate",value:function(y,A){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==A.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==y.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==y.margin){var q,x;this.accessibilityManager.setDetails({offset:{left:(q=this.props.margin.left)!==null&&q!==void 0?q:0,top:(x=this.props.margin.top)!==null&&x!==void 0?x:0}})}return null}},{key:"componentDidUpdate",value:function(y){Jp([gn(y.children,Yn)],[gn(this.props.children,Yn)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var y=gn(this.props.children,Yn);if(y&&typeof y.props.shared=="boolean"){var A=y.props.shared?"axis":"item";return o.indexOf(A)>=0?A:s}return s}},{key:"getMouseInfo",value:function(y){if(!this.container)return null;var A=this.container,q=A.getBoundingClientRect(),x=F9(q),_={chartX:Math.round(y.pageX-x.left),chartY:Math.round(y.pageY-x.top)},I=q.width/A.offsetWidth||1,S=this.inRange(_.chartX,_.chartY,I);if(!S)return null;var k=this.state,C=k.xAxisMap,T=k.yAxisMap,M=this.getTooltipEventType(),L=Ex(this.state,this.props.data,this.props.layout,S);if(M!=="axis"&&C&&T){var N=Ur(C).scale,R=Ur(T).scale,$=N&&N.invert?N.invert(_.chartX):null,B=R&&R.invert?R.invert(_.chartY):null;return V(V({},_),{},{xValue:$,yValue:B},L)}return L?V(V({},_),L):null}},{key:"inRange",value:function(y,A){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,x=this.props.layout,_=y/q,I=A/q;if(x==="horizontal"||x==="vertical"){var S=this.state.offset,k=_>=S.left&&_<=S.left+S.width&&I>=S.top&&I<=S.top+S.height;return k?{x:_,y:I}:null}var C=this.state,T=C.angleAxisMap,M=C.radiusAxisMap;if(T&&M){var L=Ur(T);return c0({x:_,y:I},L)}return null}},{key:"parseEventsOfWrapper",value:function(){var y=this.props.children,A=this.getTooltipEventType(),q=gn(y,Yn),x={};q&&A==="axis"&&(q.props.trigger==="click"?x={onClick:this.handleClick}:x={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Yl(this.props,this.handleOuterEvent);return V(V({},_),x)}},{key:"addListener",value:function(){Yd.on(Zd,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){Yd.removeListener(Zd,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(y,A,q){for(var x=this.state.formattedGraphicalItems,_=0,I=x.length;_<I;_++){var S=x[_];if(S.item===y||S.props.key===y.key||A===Sr(S.item.type)&&q===S.childIndex)return S}return null}},{key:"renderClipPath",value:function(){var y=this.clipPathId,A=this.state.offset,q=A.left,x=A.top,_=A.height,I=A.width;return O.createElement("defs",null,O.createElement("clipPath",{id:y},O.createElement("rect",{x:q,y:x,height:_,width:I})))}},{key:"getXScales",value:function(){var y=this.state.xAxisMap;return y?Object.entries(y).reduce(function(A,q){var x=qx(q,2),_=x[0],I=x[1];return V(V({},A),{},be({},_,I.scale))},{}):null}},{key:"getYScales",value:function(){var y=this.state.yAxisMap;return y?Object.entries(y).reduce(function(A,q){var x=qx(q,2),_=x[0],I=x[1];return V(V({},A),{},be({},_,I.scale))},{}):null}},{key:"getXScaleByAxisId",value:function(y){var A;return(A=this.state.xAxisMap)===null||A===void 0||(A=A[y])===null||A===void 0?void 0:A.scale}},{key:"getYScaleByAxisId",value:function(y){var A;return(A=this.state.yAxisMap)===null||A===void 0||(A=A[y])===null||A===void 0?void 0:A.scale}},{key:"getItemByXY",value:function(y){var A=this.state,q=A.formattedGraphicalItems,x=A.activeItem;if(q&&q.length)for(var _=0,I=q.length;_<I;
390_++){var S=q[_],k=S.props,C=S.item,T=C.type.defaultProps!==void 0?V(V({},C.type.defaultProps),C.props):C.props,M=Sr(C.type);if(M==="Bar"){var L=(k.data||[]).find(function(B){return AJ(y,B)});if(L)return{graphicalItem:S,payload:L}}else if(M==="RadialBar"){var N=(k.data||[]).find(function(B){return c0(y,B)});if(N)return{graphicalItem:S,payload:N}}else if(Uc(S,x)||zc(S,x)||Lo(S,x)){var R=kY({graphicalItem:S,activeTooltipItem:x,itemData:T.data}),$=T.activeIndex===void 0?R:T.activeIndex;return{graphicalItem:V(V({},S),{},{childIndex:$}),payload:Lo(S,x)?T.data[R]:S.props.data[R]}}}return null}},{key:"render",value:function(){var y=this;if(!ty(this))return null;var A=this.props,q=A.children,x=A.className,_=A.width,I=A.height,S=A.style,k=A.compact,C=A.title,T=A.desc,M=Sx(A,lne),L=Ge(M,!1);if(k)return O.createElement(ux,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},O.createElement(Zp,cs({},L,{width:_,height:I,title:C,desc:T}),this.renderClipPath(),ry(q,this.renderMap)));if(this.props.accessibilityLayer){var N,R;L.tabIndex=(N=this.props.tabIndex)!==null&&N!==void 0?N:0,L.role=(R=this.props.role)!==null&&R!==void 0?R:"application",L.onKeyDown=function(B){y.accessibilityManager.keyboardEvent(B)},L.onFocus=function(){y.accessibilityManager.focus()}}var $=this.parseEventsOfWrapper();return O.createElement(ux,{state:this.state,width:this.props.width,height:this.props.height,clipPathId:this.clipPathId},O.createElement("div",cs({className:Le("recharts-wrapper",x),style:V({position:"relative",cursor:"default",width:_,height:I},S)},$,{ref:function(D){y.container=D}}),O.createElement(Zp,cs({},L,{width:_,height:I,title:C,desc:T,style:Ene}),this.renderClipPath(),ry(q,this.renderMap)),this.renderLegend(),this.renderTooltip()))}}])}(E.Component);be(g,"displayName",n),be(g,"defaultProps",V({layout:"horizontal",stackOffset:"none",barCategoryGap:"10%",barGap:4,margin:{top:5,right:5,bottom:5,left:5},reverseStackOrder:!1,syncMethod:"index"},p)),be(g,"getDerivedStateFromProps",function(v,b){var w=v.dataKey,y=v.data,A=v.children,q=v.width,x=v.height,_=v.layout,I=v.stackOffset,S=v.margin,k=b.dataStartIndex,C=b.dataEndIndex;if(b.updateId===void 0){var T=_x(v);return V(V(V({},T),{},{updateId:0},m(V(V({props:v},T),{},{updateId:0}),b)),{},{prevDataKey:w,prevData:y,prevWidth:q,prevHeight:x,prevLayout:_,prevStackOffset:I,prevMargin:S,prevChildren:A})}if(w!==b.prevDataKey||y!==b.prevData||q!==b.prevWidth||x!==b.prevHeight||_!==b.prevLayout||I!==b.prevStackOffset||!vs(S,b.prevMargin)){var M=_x(v),L={chartX:b.chartX,chartY:b.chartY,isTooltipActive:b.isTooltipActive},N=V(V({},Ex(b,y,_)),{},{updateId:b.updateId+1}),R=V(V(V({},M),L),N);return V(V(V({},R),m(V({props:v},R),b)),{},{prevDataKey:w,prevData:y,prevWidth:q,prevHeight:x,prevLayout:_,prevStackOffset:I,prevMargin:S,prevChildren:A})}if(!Jp(A,b.prevChildren)){var $,B,D,j,J=gn(A,Fs),z=J&&($=(B=J.props)===null||B===void 0?void 0:B.startIndex)!==null&&$!==void 0?$:k,P=J&&(D=(j=J.props)===null||j===void 0?void 0:j.endIndex)!==null&&D!==void 0?D:C,G=z!==k||P!==C,ae=!Re(y),se=ae&&!G?b.updateId:b.updateId+1;return V(V({updateId:se},m(V(V({props:v},b),{},{updateId:se,dataStartIndex:z,dataEndIndex:P}),b)),{},{prevChildren:A,dataStartIndex:z,dataEndIndex:P})}return null}),be(g,"renderActiveDot",function(v,b,w){var y;return E.isValidElement(v)?y=E.cloneElement(v,b):Oe(v)?y=v(b):y=O.createElement(JA,b),O.createElement(Rt,{className:"recharts-active-dot",key:w},y)});var h=E.forwardRef(function(b,w){return O.createElement(g,cs({},b,{ref:w}))});return h.displayName=g.displayName,h},Nne=Mne({chartName:"BarChart",GraphicalChild:Bi,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:Xc},{axisType:"yAxis",AxisComp:Qc}],formatAxisMap:YZ});const jt="#0E1A2B",Ia="#E8620E",Nr="#1E7FA6",Cx="#FBFAF8",Tl={ref:["ref","reference","sku","code","article"],qte_theorique:["theorique","théorique","stock_theo","qte_theo","system","systeme","wms"],qte_physique:["physique","reel","réel","compte","count","inventaire"],valeur:["valeur","value","prix","pu","cost","cout"]},Rne=e=>{const t=r=>r.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,""),n=r=>e.find(i=>r.some(s=>t(i).includes(s)))||"";return{ref:n(Tl.ref),qte_theorique:n(Tl.qte_theorique),qte_physique:n(Tl.qte_physique),valeur:n(Tl.valeur)}},$ne=(()=>{const e=[];for(let t=0;t<120;t++){const n=`REF-${(1e3+t).toString()}`,r=Math.round(50+Math.random()*500),i=t<10?Math.round(Math.random()*60-20):Math.round(Math.random()*4-2),s=Math.max(0,r+i),a=Math.round(5+Math.random()*90);e.push({ref:n,qte_theorique:r,qte_physique:s,valeur:a})}return e})();function Dne({onSendInsight:e}){const t=E.useRef(null),[n,r]=E.useState([]),[i,s]=E.useState([]),[a,o]=E.useState({ref:"",qte_theorique:"",qte_physique:"",valeur:""}),[l,u]=E.useState([]),[c,p]=E.useState(null),f=(w,y,A)=>{if(!A.ref||!A.qte_theorique||!A.qte_physique)return;const q=y.map(x=>({ref:String(x[A.ref]||"").trim(),qte_theorique:Number(String(x[A.qte_theorique]||"0").replace(",","."))||0,qte_physique:Number(String(x[A.qte_physique]||"0").replace(",","."))||0,valeur:A.valeur?Number(String(x[A.valeur]||"0").replace(",","."))||0:1})).filter(x=>x.ref);u(q)},m=w=>{p(null),xN.parse(w,{header:!0,skipEmptyLines:!0,complete:y=>{var x;(x=y.errors)!=null&&x.length&&p("CSV illisible : vérifiez le séparateur.");const A=y.meta.fields||[];r(A),s(y.data||[]);const q=Rne(A);o(q),f(A,y.data||[],q)},error:()=>p("Impossible de lire le fichier.")})},g=()=>{u($ne),r([]),s([]),p(null)},h=E.useMemo(()=>
390{if(!l.length)return null;const w=l.length,y=l.filter(R=>R.qte_theorique!==R.qte_physique).length,A=(w-y)/w*100,q=l.reduce((R,$)=>R+Math.abs($.qte_theorique-$.qte_physique),0),x=l.reduce((R,$)=>R+$.qte_theorique,0)||1,_=q/x*100,I=[...l].map(R=>({ref:R.ref,ecart:Math.abs(R.qte_theorique-R.qte_physique)*R.valeur,delta:R.qte_physique-R.qte_theorique})).sort((R,$)=>$.ecart-R.ecart).slice(0,10),S=l.reduce((R,$)=>R+Math.abs($.qte_theorique-$.qte_physique)*$.valeur,0),k=I.reduce((R,$)=>R+$.ecart,0),C=S?k/S*100:0,T=l.map(R=>({ref:R.ref,val:R.qte_theorique*R.valeur})).sort((R,$)=>$.val-R.val),M=T.reduce((R,$)=>R+$.val,0)||1;let L=0;const N={a:0,b:0,c:0};return T.forEach(R=>{L+=R.val;const $=L/M*100;$<=80?N.a++:$<=95?N.b++:N.c++}),{total:w,enEcart:y,fiabilite:A,tauxEcart:_,top:I,concentration:C,abc:N}},[l]),v=E.useMemo(()=>h?h.top.slice(0,8).map(w=>({ref:w.ref,ecart:Math.round(w.ecart),delta:w.delta})):[],[h]),b=E.useMemo(()=>{if(!h)return"";const w=h.fiabilite.toFixed(1),y=h.concentration.toFixed(0);return`Fiabilité stock à ${w} %, avec ${y} % des écarts en valeur concentrés sur le top 10 références — c'est là qu'il faut fiabiliser AVANT toute IA.`},[h]);return d.jsxs("div",{className:"flex flex-col gap-4 p-6 max-sm:p-4",style:{background:Cx,fontFamily:"'IBM Plex Sans', system-ui, sans-serif"},children:[!l.length&&d.jsxs("div",{className:"border-2 border-dashed rounded-lg p-6 text-center",style:{borderColor:`${jt}22`,background:"white"},children:[d.jsx(E_,{className:"w-8 h-8 mx-auto mb-3",style:{color:Nr}}),d.jsx("p",{className:"text-sm mb-3",style:{color:jt},children:"Chargez un CSV d'inventaire pour analyse locale."}),d.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[d.jsx("input",{ref:t,type:"file",accept:".csv,text/csv",className:"hidden",onChange:w=>{var y;return((y=w.target.files)==null?void 0:y[0])&&m(w.target.files[0])}}),d.jsx("button",{onClick:()=>{var w;return(w=t.current)==null?void 0:w.click()},className:"px-4 py-2 rounded-md text-sm font-medium",style:{background:jt,color:"white"},children:"Choisir un fichier CSV"}),d.jsxs("button",{onClick:g,className:"px-4 py-2 rounded-md text-sm font-medium border inline-flex items-center gap-1.5",style:{borderColor:`${jt}33`,color:jt,background:"white"},children:[d.jsx(U1,{className:"w-3.5 h-3.5"})," Charger un jeu d'exemple"]})]}),c&&d.jsx("p",{className:"text-xs mt-3",style:{color:Ia},children:c})]}),n.length>0&&!l.length&&d.jsxs("div",{className:"rounded-lg p-4",style:{background:"white",border:`1px solid ${jt}22`},children:[d.jsx("p",{className:"text-xs font-semibold mb-3 uppercase tracking-wide",style:{color:Nr,fontFamily:"'IBM Plex Mono', monospace"},children:"Mapping colonnes"}),d.jsx("div",{className:"grid grid-cols-2 gap-3",children:["ref","qte_theorique","qte_physique","valeur"].map(w=>d.jsxs("label",{className:"flex flex-col gap-1",children:[d.jsx("span",{className:"text-[11px]",style:{color:jt,fontFamily:"'IBM Plex Mono', monospace"},children:w}),d.jsxs("select",{value:a[w],onChange:y=>{const A={...a,[w]:y.target.value};o(A),f(n,i,A)},className:"h-8 px-2 rounded border text-xs bg-white",style:{borderColor:`${jt}33`,color:jt},children:[d.jsx("option",{value:"",children:"—"}),n.map(y=>d.jsx("option",{value:y,children:y},y))]})]},w))})]}),h&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:[{label:"Fiabilité stock",val:`${h.fiabilite.toFixed(1)} %`,hint:`${h.total} réfs`},{label:"Lignes en écart",val:`${h.enEcart}`,hint:`sur ${h.total}`},{label:"Taux d'écart qté",val:`${h.tauxEcart.toFixed(1)} %`,hint:"|Δ| / théo"},{label:"Concentration top10",val:`${h.concentration.toFixed(0)} %`,hint:"en valeur"}].map(w=>d.jsxs("div",{className:"p-3 rounded-lg",style:{background:"white",border:`1px solid ${jt}22`},children:[d.jsx("div",{className:"text-[10px] uppercase tracking-wider mb-1",style:{color:Nr,fontFamily:"'IBM Plex Mono', monospace"},children:w.label}),d.jsx("div",{className:"text-xl leading-tight",style:{color:jt,fontFamily:"'IBM Plex Mono', monospace",fontWeight:600},children:w.val}),d.jsx("div",{className:"text-[10px] mt-0.5",style:{color:`${jt}88`,fontFamily:"'IBM Plex Mono', monospace"},children:w.hint})]},w.label))}),d.jsxs("div",{className:"rounded-lg p-4",style:{background:"white",border:`1px solid ${jt}22`},children:[d.jsx("div",{className:"text-[10px] uppercase tracking-wider mb-3",style:{color:Nr,fontFamily:"'IBM Plex Mono', monospace"},children:"Top 8 écarts (valeur absolue)"}),d.jsx("div",{className:"w-full h-56",children:d.jsx(O9,{children:d.jsxs(Nne,{data:v,margin:{top:5,right:10,left:0,bottom:30},children:[d.jsx(Xc,{dataKey:"ref",tick:{fontSize:10,fill:jt,fontFamily:"IBM Plex Mono, monospace"},angle:-35,textAnchor:"end",height:50}),d.jsx(Qc,{tick:{fontSize:10,fill:jt,fontFamily:"IBM Plex Mono, monospace"}}),d.jsx(Yn,{contentStyle:{fontSize:12,fontFamily:"IBM Plex Sans, sans-serif",borderRadius:6}}),d.jsx(Bi,{dataKey:"ecart",children:v.map((w,y)=>d.jsx(wh,{fill:w.delta<0?Ia:Nr},y))})]})})}),d.jsxs("div",{className:"flex gap-4 text-[10px] mt-2",style:{color:`${jt}99`,fontFamily:"'IBM Plex Mono', monospace"},children:[d.jsxs("span",{children:[d.jsx("span",{className:"inline-block w-2 h-2 mr-1 align-middle",style:{background:Ia}}),"manquant physique"]}),d.jsxs("span",{children:[d.jsx("span",{className:"inline-block w-2 h-2 mr-1 align-middle",style:{background:Nr}}),"surplus"]})]})]}),d.jsxs("div",{className:"rounded-lg p-4",style:{background:jt,color:Cx},children:[d.jsx("div",{className:"text-[10px] uppercase tracking-wider mb-1.5",style:{color:Ia,fontFamily:"'IBM Plex Mono', monospace"},children:"Lecture F.L.U.X"}),d.jsx("p",{className:"text-sm leading-relaxed",style:{fontFamily:"'IBM Plex Sans', sans-serif"},children:b}),e&&d.jsx("button",{onClick:()=>e(`Voici ma lecture CSV : ${b} Que me recommandes-tu ?`),className:"mt-3 px-3 py-1.5 rounded text-xs font-medium",style:{background:Ia,color:"white"},children:"Envoyer au chat"})]}),d.jsx("button",{onClick:()=>{u([]),s([]),r([])},className:"self-start text-xs underline",style:{color:`${jt}88`},children:"Charger un autre fichier"})]}),d.jsxs("div",{className:"flex items-start gap-2 rounded-md p-3",style:{background:"white",border:`1px solid ${Nr}44`},children:[d.jsx(q_,{className:"w-4 h-4 flex-shrink-0 mt-0.5",style:{color:Nr}}),d.jsxs("p",{className:"text-[11px] leading-relaxed",style:{color:jt},children:[d.jsx("strong",{children:"Calcul 100 % local"})," — rien ne quitte votre navigateur. En mission, l'assistant est branché sur votre WMS en continu."]})]})]})}const ue="#0E1A2B",_t="#E8620E",wt="#1E7FA6",$a="#FBFAF8",Fne="#0D3B6E",Une="#B8734F",zne="Bonjour ! Je suis l'assistant **FLUX** de CHAL·CONSULTING. Décrivez-moi une **problématique terrain** — je vous donne une première lecture, sans hype.",Bne="Bonjour, je suis l'assistant FLUX. Décrivez-moi votre situation terrain, je vous écoute.",Wne=[{label:"📦 Écarts inventaire",text:"J'ai des écarts d'inventaire récurrents en fin de mois — par où commencer ?"},{label:"⚡ Optimisation picking",text:"Mon picking prend 30 % de temps en plus depuis 3 mois. Quelles causes probables ?"},{label:"📈 Capacité d'absorption",text:"Comment absorber un pic saisonnier de +40 % sans exploser les coûts ?"},{label:"🔍 Diagnostic entrepôt",text:"Comment détecter les anomalies terrain avant qu'elles ne remontent en KPI ?"}],jx=()=>
390{if(typeof window>"u")return null;const e=window;return e.SpeechRecognition||e.webkitSpeechRecognition||null},Hne=e=>e.replace(/```[\s\S]*?```/g,"").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_#>]/g,"").replace(/\s+/g," ").trim(),Vne=()=>{if(typeof window>"u"||!window.speechSynthesis)return null;const e=window.speechSynthesis.getVoices();if(!e.length)return null;const t=[n=>/fr[-_]FR/i.test(n.lang)&&/google/i.test(n.name),n=>/fr[-_]FR/i.test(n.lang)&&/(amélie|thomas|audrey|marie|denise)/i.test(n.name),n=>/fr[-_]FR/i.test(n.lang)&&!n.localService,n=>/fr[-_]FR/i.test(n.lang),n=>/^fr/i.test(n.lang)];for(const n of t){const r=e.find(n);if(r)return r}return null},Px="chal.voicePrefs.v1",Tx="flux.contexte.v1",Ix="flux_session_id",Il="flux_pilotage_code",Ox=.75,Lx=1.5,Mx=1,tp=e=>{const t=e.trim().toUpperCase().replace(/\s+/g,"");if(!t)return null;const n=t.startsWith("FLX-")?t:t.startsWith("FLX")?`FLX-${t.slice(3)}`:`FLX-${t}`;return/^FLX-[A-Z0-9]{3,8}$/.test(n)?n:null},Nx=()=>{if(typeof window>"u")return"";try{const e=sessionStorage.getItem(Ix);if(e)return e;const t=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`sess-${Date.now()}-${Math.random().toString(36).slice(2)}`;return sessionStorage.setItem(Ix,t),t}catch{return""}},Gne=e=>`${e.name.replace(/^Microsoft\s+/i,"").replace(/\s*Online\s*\(Natural\)/i,"").replace(/\s*-\s*.*$/,"").trim()} · ${e.lang}${e.localService?"":" · en ligne"}`;function Kne(){return d.jsx("div",{className:"flex items-center gap-[5px] px-[18px] py-[14px]",children:[0,1,2].map(e=>d.jsx("span",{className:"block w-1.5 h-1.5 rounded-full",style:{background:wt,animation:"chatbotBounce 1.2s ease-in-out infinite",animationDelay:`${e*.15}s`}},e))})}function Ol({size:e=14}){return d.jsx(kf,{className:"text-white",style:{width:e,height:e}})}function Rx({tone:e="brand"}){const t=e==="light";return d.jsx("span",{"aria-hidden":"true",className:"relative block h-[26px] w-[26px] shrink-0 rounded-full border-2",style:{borderColor:t?"#FFFFFF":Fne},children:d.jsx("span",{className:"absolute bottom-[1px] right-[1px] h-[6px] w-[6px] rounded-full",style:{background:t?"#FFFFFF":Une}})})}function Xne({d:e}){const t=[["F","Fiabiliser",e.flux.fiabiliser],["L","Lire",e.flux.lire],["U","Unifier",e.flux.unifier],["X","eXécuter",e.flux.executer]];return d.jsxs("div",{className:"rounded-lg overflow-hidden",style:{background:"#FFFFFF",border:"1px solid rgba(14,26,43,0.12)",borderLeft:`4px solid ${_t}`,fontFamily:"'IBM Plex Sans', system-ui, sans-serif"},children:[d.jsxs("div",{className:"px-4 pt-4 pb-3",style:{background:$a},children:[d.jsx("div",{className:"text-[10px] uppercase tracking-[0.12em] mb-2",style:{color:_t,fontFamily:"'IBM Plex Mono', monospace"},children:"Pré-diagnostic F.L.U.X"}),d.jsx("p",{className:"leading-relaxed",style:{color:ue,fontSize:14,lineHeight:1.6},children:e.reformulation})]}),d.jsx("div",{className:"px-4 pb-4",children:t.map(([n,r,i],s)=>d.jsxs("div",{className:"flex gap-3 py-2.5 border-b last:border-b-0",style:{borderColor:"rgba(14,26,43,0.08)"},children:[d.jsx("div",{className:"flex-shrink-0 w-9 h-9 rounded flex items-center justify-center text-lg",style:{background:s===0?_t:"rgba(30,127,166,0.10)",color:s===0?"white":wt,fontFamily:"'IBM Plex Mono', monospace",fontWeight:700},children:n}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("div",{className:"text-[10px] uppercase tracking-wider mb-0.5",style:{color:wt,fontFamily:"'IBM Plex Mono', monospace"},children:r}),d.jsx("p",{className:"text-sm leading-snug",style:{color:ue},children:i})]})]},n))}),d.jsxs("div",{className:"px-4 pb-4 grid gap-4",children:[d.jsxs("div",{children:[d.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider mb-2 pb-1",style:{color:ue,fontFamily:"'IBM Plex Sans', system-ui, sans-serif",borderBottom:`1px solid ${_t}`},children:"Hypothèses de travail"}),d.jsx("ul",{className:"list-disc pl-5 text-sm space-y-1",style:{color:ue,lineHeight:1.6},children:e.hypotheses.map((n,r)=>d.jsx("li",{children:n},r))})]}),d.jsxs("div",{children:[d.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider mb-2 pb-1",style:{color:ue,fontFamily:"'IBM Plex Sans', system-ui, sans-serif",borderBottom:`1px solid ${_t}`},children:"KPI à suivre"}),d.jsx("ul",{className:"list-disc pl-5 text-sm space-y-1",style:{color:ue,lineHeight:1.6},children:e.kpi.map((n,r)=>d.jsx("li",{children:n},r))})]}),d.jsxs("div",{className:"rounded p-3",style:{background:"rgba(232,98,14,0.08)",border:"1px solid rgba(232,98,14,0.16)"},children:[d.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider mb-1 pb-1",style:{color:_t,fontFamily:"'IBM Plex Sans', system-ui, sans-serif",borderBottom:`1px solid ${_t}`},children:"Prochaine étape"}),d.jsx("p",{className:"text-sm",style:{color:ue,lineHeight:1.6},children:e.prochaine_etape})]}),d.jsx("p",{className:"text-[11px] italic",style:{color:"#6B7280"},children:e.avertissement})]})]})}function Qne(){var Kn;const[e,t]=E.useState(!1),[n,r]=E.useState("chat"),[i,s]=E.useState([]),[a,o]=E.useState(""),[l,u]=E.useState(!1),[c,p]=E.useState(!1),{pathname:f}=Bo(),m=f==="/",[g,h]=E.useState(!m);E.useEffect(()=>{let U=null,ne=0,qe=0;if(!m){h(!0);return}h(!1);const Te=()=>{const Ue=document.getElementById("demo-agent-terrain");if(!Ue){qe++<120?ne=requestAnimationFrame(Te):h(!0);return}U=new IntersectionObserver(([mt])=>{!mt.isIntersecting&&mt.boundingClientRect.top<0&&(h(!0),U==null||U.disconnect())},{threshold:0}),U.observe(Ue)};return Te(),()=>{cancelAnimationFrame(ne),U==null||U.disconnect()}},[f]);const[v,b]=E.useState(!1),[w,y]=E.useState({secteur:"",surface:"",wms:"",volume:""}),[A,q]=E.useState(!1),[x,_]=E.useState(null),[I,S]=E.useState(!1),[k,C]=E.useState(""),[T,M]=E.useState(!1),[L,N]=E.useState(!1),[R,$]=E.useState(!1),[B,D]=E.useState(""),[j,J]=E.useState(!1),[z,P]=E.useState(""),[G,ae]=E.useState(""),se=E.useRef("");E.useEffect(()=>{se.current=B},[B]);const[ie,_e]=E.useState(!1),[H,Y]=E.useState(!1),[te,F]=E.useState(!1),[he,ce]=E.useState(!0),[me,fe]=E.useState(""),[de,Me]=E.useState(!1),[ge,Ie]=E.useState([]),[Be,ft]=E.useState(""),[Fe,Jt]=E.useState(Mx),[st,W]=E.useState(!1),X=E.useRef(Mx),le=E.useRef("");E.useEffect(()=>{X.current=Fe},[Fe]),E.useEffect(()=>{le.current=Be},[Be]),E.useEffect(()=>{if(!(typeof window>"u"))try{const U=localStorage.getItem(Px);if(U){const qe=JSON.parse(U);typeof qe.rate=="number"&&qe.rate>=Ox&&qe.rate<=Lx&&Jt(qe.rate),typeof qe.voiceURI=="string"&&ft(qe.voiceURI)}const ne=sessionStorage.getItem(Tx);ne&&y({secteur:"",surface:"",wms:"",volume:"",...JSON.parse(ne)})}catch{}},[]),E.useEffect(()=>{try{localStorage.setItem(Px,JSON.stringify({rate:Fe,voiceURI:Be}))}catch{}},[Fe,Be]),E.useEffect(()=>{try{sessionStorage.setItem(Tx,JSON.stringify(w))}catch{}},[w]);const ve=E.useCallback(()=>
390{if(typeof window>"u"||!window.speechSynthesis)return null;const U=window.speechSynthesis.getVoices(),ne=le.current;if(ne){const qe=U.find(Te=>Te.voiceURI===ne);if(qe)return qe}return Vne()},[]),Pe=E.useRef(null),Ze=E.useRef(!1),qt=E.useRef(-1),Qe=E.useRef(!1);E.useEffect(()=>{Qe.current=ie},[ie]);const xt=E.useRef(null),Bt=E.useRef(null),ut=E.useCallback(()=>{var U;(U=xt.current)==null||U.scrollIntoView({behavior:"smooth"})},[]);E.useEffect(()=>{ut()},[i,l,x,ut]),E.useEffect(()=>{e&&n==="chat"&&setTimeout(()=>{var U;return(U=Bt.current)==null?void 0:U.focus()},400)},[e,n]),E.useEffect(()=>{const U=ne=>{ne.key==="Escape"&&e&&t(!1)};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[e]),E.useEffect(()=>{const U=()=>{t(!0),r("chat"),se.current||(J(!0),ae(""))};return window.addEventListener("flux:open-chatbot-pilotage",U),()=>window.removeEventListener("flux:open-chatbot-pilotage",U)},[]),E.useEffect(()=>{if(typeof document>"u"||document.getElementById("ibm-plex-fonts"))return;const U=document.createElement("link");U.id="ibm-plex-fonts",U.rel="stylesheet",U.href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap",document.head.appendChild(U)},[]),E.useEffect(()=>{const U=jx();if(!U){ce(!1);return}const ne=new U;ne.lang="fr-FR",ne.continuous=!1,ne.interimResults=!0;let qe="";return ne.onresult=Te=>{let Ue="";qe="";for(let mt=Te.resultIndex;mt<Te.results.length;mt++){const Ir=Te.results[mt][0].transcript;Te.results[mt].isFinal?qe+=Ir:Ue+=Ir}fe(Ue),qe&&o(qe)},ne.onerror=Te=>{Y(!1),fe(""),(Te.error==="not-allowed"||Te.error==="service-not-allowed")&&(Wi.error("Micro bloqué — autorisez le microphone dans votre navigateur."),_e(!1))},ne.onend=()=>{Y(!1),fe("");const Te=qe.trim();qe="",Te&&(Ze.current=!1,o(Te),Me(!0),setTimeout(()=>{const Ue=Bt.current;if(Ue){Ue.focus();try{Ue.setSelectionRange(Te.length,Te.length)}catch{}}},50))},Pe.current=ne,()=>{try{ne.abort()}catch{}}},[]);const Wt=E.useCallback(()=>{const U=Pe.current;if(!(!U||H)){typeof window<"u"&&window.speechSynthesis&&(window.speechSynthesis.cancel(),F(!1));try{o(""),fe(""),Me(!1),U.start(),Y(!0)}catch{}}},[H]),Ht=E.useCallback(()=>{const U=Pe.current;if(U)try{U.stop()}catch{}},[]);E.useEffect(()=>{if(!ie||l||typeof window>"u"||!window.speechSynthesis)return;const U=i.length-1,ne=i[U];if(!ne||ne.role!=="assistant"||U===qt.current||!ne.content.trim())return;qt.current=U;const qe=Hne(ne.content);if(!qe)return;const Te=window.speechSynthesis;Te.cancel();const Ue=new SpeechSynthesisUtterance(qe);Ue.lang="fr-FR",Ue.rate=X.current,Ue.pitch=1;const mt=ve();mt&&(Ue.voice=mt),Ue.onstart=()=>F(!0),Ue.onend=()=>{F(!1),Qe.current&&Ze.current&&setTimeout(()=>Wt(),350)},Ue.onerror=()=>F(!1),Ze.current=!0,Te.speak(Ue)},[i,ie,l,Wt,ve]),E.useEffect(()=>{var ne,qe;if(typeof window>"u"||!window.speechSynthesis)return;const U=()=>{const Te=window.speechSynthesis.getVoices();if(!Te.length)return;const Ue=[...Te].sort((mt,Ir)=>{const tg=/^fr/i.test(mt.lang)?0:1,ng=/^fr/i.test(Ir.lang)?0:1;return tg!==ng?tg-ng:mt.localService!==Ir.localService?mt.localService?1:-1:mt.name.localeCompare(Ir.name)});Ie(Ue)};return U(),(qe=(ne=window.speechSynthesis).addEventListener)==null||qe.call(ne,"voiceschanged",U),()=>{var Te,Ue;return(Ue=(Te=window.speechSynthesis).removeEventListener)==null?void 0:Ue.call(Te,"voiceschanged",U)}},[]),E.useEffect(()=>{const U=()=>{if(t(!0),r("chat"),!jx()){Wi.error("Mode vocal non supporté par ce navigateur — utilisez Chrome, Edge ou Safari.");return}_e(!0),setTimeout(()=>{if(typeof window<"u"&&window.speechSynthesis){const ne=new SpeechSynthesisUtterance(Bne);ne.lang="fr-FR",ne.rate=X.current;const qe=ve();qe&&(ne.voice=qe),ne.onstart=()=>F(!0),ne.onend=()=>{F(!1),Ze.current=!0,Wt()},window.speechSynthesis.cancel(),window.speechSynthesis.speak(ne)}else Wt()},500)};return window.addEventListener("chal:voice-mode",U),()=>window.removeEventListener("chal:voice-mode",U)},[Wt,ve]),E.useEffect(()=>{e||(Ze.current=!1,Ht(),typeof window<"u"&&window.speechSynthesis&&window.speechSynthesis.cancel(),F(!1),_e(!1),Me(!1))},[e,Ht]);const nl=()=>{if(!he){Wi.error("Mode vocal non supporté — essayez Chrome, Edge ou Safari.");return}_e(U=>{var qe;const ne=!U;return ne?(Ze.current=!0,setTimeout(()=>Wt(),200)):(Ze.current=!1,Ht(),(qe=window.speechSynthesis)==null||qe.cancel(),F(!1)),ne})},pa=E.useRef("");E.useEffect(()=>{pa.current=Nx()},[]);const ma=E.useRef(()=>{}),fa=E.useCallback((U,ne)=>{const qe=tp(U);if(!qe)return ae("Code invalide — format attendu FLX-XXXX."),!1;D(qe),ae("");try{sessionStorage.setItem(Il,qe)}catch{}return ne!=null&&ne.autoDebrief&&setTimeout(()=>ma.current(qe),200),!0},[]);E.useEffect(()=>{if(typeof window>"u")return;let U="";try{U=sessionStorage.getItem(Il)||""}catch{}if(U){const ne=tp(U);ne&&D(ne)}try{const ne=new URL(window.location.href),qe=ne.searchParams.get("pilotage");if(qe){ne.searchParams.delete("pilotage"),window.history.replaceState({},"",ne.pathname+(ne.search?ne.search:"")+ne.hash);const Te=tp(qe);if(Te){D(Te);
390try{sessionStorage.setItem(Il,Te)}catch{}setTimeout(()=>{t(!0),r("chat"),setTimeout(()=>ma.current(Te),400)},1e3)}else ae("Code non reconnu — vérifiez-le ou rejouez une partie.")}}catch{}},[]);const On=async(U,ne,qe=U==="diagnostic"?"diagnostic":"chat")=>{const{data:Te,error:Ue}=await Uv.functions.invoke("flux-chat",{body:{mode:U,messages:ne??i,contexte:w.secteur||w.surface||w.wms||w.volume?w:null,session_id:pa.current||Nx(),source:qe,pilotage_code:se.current||void 0}});if(Ue)throw new Error(Ue.message||"Erreur assistant");return Te},ii=async(U,ne="chat")=>{const qe=U||a.trim();if(!qe||l)return;c||p(!0);const Te={role:"user",content:qe},Ue=[...i,Te];s(Ue),o(""),Me(!1),Qe.current&&(Ze.current=!0),u(!0);try{const mt=await On("chat",Ue,ne);if(mt.error)throw new Error(mt.error);if(mt.pilotage_error==="code_invalide"){ae("Code non reconnu — vérifiez-le ou rejouez une partie."),D("");try{sessionStorage.removeItem(Il)}catch{}}else se.current&&ae("");s([...Ue,{role:"assistant",content:mt.reply||"…"}])}catch(mt){const Ir=mt instanceof Error?mt.message:"Erreur";s([...Ue,{role:"assistant",content:`Désolé, une erreur est survenue (${Ir}). Réessayez dans un instant ou contactez [email protected].`}])}finally{u(!1)}},Ee=async()=>{if(!A){q(!0);try{const U=await On("diagnostic");if(U.error||!U.diagnostic)throw new Error(U.error||"Diagnostic indisponible");_(U.diagnostic),setTimeout(ut,100)}catch(U){Wi.error(U instanceof Error?U.message:"Erreur diagnostic")}finally{q(!1)}}},We=async()=>{if(!(!k||!T||L)){N(!0);try{const U={email:k.trim().toLowerCase(),contexte:w,messages:i,diagnostic:x,source:"flux-chatbot"},{error:ne}=await Uv.from("leads").insert(U);if(ne)throw ne;const qe=void 0;$(!0),Wi.success("Pré-diagnostic envoyé — vous serez recontacté sous 24 h.")}catch(U){Wi.error(U instanceof Error?U.message:"Envoi impossible")}finally{N(!1)}}},et=U=>{U.key==="Enter"&&(U.preventDefault(),ii())};E.useEffect(()=>{ma.current=U=>{ii("Débriefe ma partie du simulateur.")}});const dn=!!(w.secteur||w.surface||w.wms||w.volume),Mt="'IBM Plex Sans', system-ui, sans-serif",ct="'IBM Plex Mono', monospace";return d.jsxs(d.Fragment,{children:[d.jsx(Wl,{children:!e&&g&&d.jsxs(Gr.button,{type:"button",initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:24},whileHover:{y:-2},transition:{duration:.3,ease:[.4,0,.2,1]},onClick:()=>t(!0),className:"flux-chat-trigger","aria-label":"Ouvrir l'agent logistique et poser une question",children:[d.jsxs("span",{className:"flux-chat-trigger__label","aria-hidden":"true",children:[d.jsx("span",{className:"flux-chat-trigger__status"}),d.jsx("span",{children:"Agent F.L.U.X™"})]}),d.jsx("span",{className:"flux-chat-trigger__ring flux-chat-trigger__ring--desktop",children:d.jsx(Rx,{})}),d.jsx("span",{className:"flux-chat-trigger__ring flux-chat-trigger__ring--mobile",children:d.jsx(Rx,{tone:"light"})}),d.jsx("span",{className:"flux-chat-trigger__placeholder",children:"Décrivez votre problème d'entrepôt…"}),d.jsx("span",{className:"flux-chat-trigger__mobile-text",children:"Posez votre question"}),d.jsx("span",{className:"flux-chat-trigger__send","aria-hidden":"true",children:d.jsx(jn,{className:"h-[18px] w-[18px]",strokeWidth:1.8})})]})}),d.jsx(Wl,{children:e&&d.jsx(Gr.div,{initial:{opacity:0}
390,animate:{opacity:1},exit:{opacity:0},transition:{duration:.4,ease:[.4,0,.2,1]},className:"fixed inset-0 z-[2000] flex items-center justify-center p-6 max-sm:p-3",style:{background:"rgba(14, 26, 43, 0.55)",backdropFilter:"blur(8px)"},onClick:U=>{U.target===U.currentTarget&&t(!1)},children:d.jsxs(Gr.div,{initial:{scale:.92,y:20,opacity:0},animate:{scale:1,y:0,opacity:1},exit:{scale:.92,y:20,opacity:0},transition:{duration:.4,ease:[.16,1,.3,1]},className:"w-full max-w-[620px] max-h-[88vh] max-sm:max-h-[95vh] max-sm:max-w-full rounded-[20px] max-sm:rounded-2xl overflow-hidden flex flex-col",style:{background:$a,boxShadow:"0 4px 16px rgba(0,0,0,0.08), 0 24px 80px rgba(0,0,0,0.25)",fontFamily:Mt},onClick:U=>U.stopPropagation(),children:[d.jsxs("div",{className:"relative flex items-center justify-between px-6 py-[18px] max-sm:px-4 max-sm:py-3.5 flex-shrink-0",style:{background:ue,color:"white",backgroundImage:`linear-gradient(${ue}, ${ue}), repeating-linear-gradient(0deg, rgba(255,255,255,0.04) 0 1px, transparent 1px 20px), repeating-linear-gradient(90deg, rgba(255,255,255,0.04) 0 1px, transparent 1px 20px)`,backgroundBlendMode:"normal, screen, screen"},children:[d.jsxs("div",{className:"flex items-center gap-3",children:[d.jsx("div",{className:"w-9 h-9 rounded-[10px] flex items-center justify-center flex-shrink-0",style:{background:_t},children:d.jsx(Ol,{size:18})}),d.jsxs("div",{children:[d.jsx("h3",{className:"text-sm font-semibold leading-tight",style:{fontFamily:Mt},children:"FLUX Logistics Assistant"}),d.jsx("span",{className:"text-[11px] leading-tight",style:{color:`${$a}99`,fontFamily:ct},children:"Propulsé par CHAL·CONSULTING"})]}),B&&d.jsxs("span",{className:"ml-2 inline-flex items-center px-2 py-0.5 rounded text-[10px] font-medium",style:{background:`${wt}22`,color:"#CFE6F2",border:`1px solid ${wt}55`,fontFamily:ct},title:"Partie Flux Ops Trainer liée à cette session",children:["Partie ",B," analysée"]})]}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsxs("button",{onClick:nl,className:`h-8 px-2.5 rounded-lg border flex items-center gap-1.5 text-[11px] font-medium transition-all duration-200 ${ie?"text-white":"text-white/80 hover:text-white"}`,style:{borderColor:ie?_t:"rgba(255,255,255,0.18)",background:ie?_t:"transparent"},"aria-pressed":ie,title:ie?"Mode vocal actif":"Activer le mode vocal",children:[ie?d.jsx(rd,{className:"w-3.5 h-3.5"}):d.jsx(m_,{className:"w-3.5 h-3.5"}),d.jsx("span",{className:"max-sm:hidden",children:"Vocal"})]}),ie&&d.jsx("button",{onClick:()=>W(U=>!U),"aria-label":"Réglages voix",className:"w-8 h-8 rounded-lg border flex items-center justify-center text-white/80 hover:text-white",style:{borderColor:"rgba(255,255,255,0.18)"},children:d.jsx(b_,{className:"w-4 h-4"})}),d.jsx("button",{onClick:()=>t(!1),"aria-label":"Fermer",className:"w-8 h-8 rounded-lg border flex items-center justify-center text-white/80 hover:text-white transition-all",style:{borderColor:"rgba(255,255,255,0.18)"},children:d.jsx(Ho,{className:"w-4 h-4"})})]})]}),d.jsx("div",{className:"flex border-b flex-shrink-0",style:{borderColor:`${ue}18`,background:"white"},children:[{id:"chat",label:"Chat",icon:p_},{id:"data",label:"Données",icon:$1}].map(({id:U,label:ne,icon:qe})=>{const Te=n===U;return d.jsxs("button",{onClick:()=>r(U),className:"flex-1 flex items-center justify-center gap-2 py-2.5 text-[12px] font-medium transition-colors",style:{color:Te?ue:`${ue}88`,borderBottom:Te?`2px solid ${_t}`:"2px solid transparent",background:Te?$a:"white",fontFamily:ct},children:[d.jsx(qe,{className:"w-3.5 h-3.5"})," ",ne]},U)})}),ie&&n==="chat"&&d.jsxs("div",{className:"px-6 max-sm:px-4 py-2 flex items-center gap-3 text-xs border-b",style:{borderColor:`${ue}18`,background:`${wt}0A`},children:[d.jsxs("span",{className:"relative flex items-center justify-center w-5 h-5 flex-shrink-0",children:[(H||te)&&d.jsx("span",{className:"absolute inset-0 rounded-full",style:{background:H?wt:ue,opacity:.25,animation:"voicePing 1.4s ease-out infinite"}}),d.jsx("span",{className:"relative w-2 h-2 rounded-full",style:{background:H?wt:te?ue:`${ue}66`}})]}),d.jsx("span",{className:"flex-1",style:{color:ue},children:H?d.jsxs(d.Fragment,{children:[d.jsx("strong",{children:"J'écoute…"})," ",me&&d.jsxs("em",{style:{color:`${ue}77`},children:["« ",me," »"]})]}):de?d.jsxs(d.Fragment,{children:[d.jsx("strong",{children:"Vérifiez"})," puis envoyez."]}):te?d.jsxs(d.Fragment,{children:[d.jsx("strong",{children:"Je réponds…"})," cliquez sur le micro pour interrompre."]}):d.jsx("span",{style:{color:`${ue}77`},children:"Mode vocal actif — cliquez sur le micro pour parler."})}),te&&d.jsx("button",{onClick:()=>{var U;(U=window.speechSynthesis)==null||U.cancel(),F(!1)},"aria-label":"Couper la voix",className:"w-7 h-7 rounded-md border flex items-center justify-center",style:{borderColor:`${ue}22`,background:"white",color:ue},children:d.jsx(j_,{className:"w-3.5 h-3.5"})})]}),ie&&st&&n==="chat"&&d.jsxs("div",{className:"px-6 max-sm:px-4 py-3 border-b flex flex-col gap-3",style:{borderColor:`${ue}18`,background:"white"},children:[d.jsxs("div",{className:"flex flex-col gap-1.5",children:[d.jsxs("label",{className:"text-[10px] font-semibold uppercase tracking-wider flex items-center gap-1.5",style:{color:wt,fontFamily:ct},children:[d.jsx(C_,{className:"w-3 h-3"})," Voix"]}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsxs("select",{value:Be,onChange:U=>ft(U.target.value),className:"flex-1 min-w-0 h-9 px-2.5 rounded-lg border bg-white text-xs outline-none",style:{borderColor:`${ue}22`,color:ue},children:[d.jsx("option",{value:"",children:"Auto (meilleure voix française)"}),ge.map(U=>d.jsx("option",{value:U.voiceURI,children:Gne(U)},U.voiceURI))]}),d.jsxs("button",{type:"button",onClick:()=>
390{if(typeof window>"u"||!window.speechSynthesis)return;window.speechSynthesis.cancel();const U=new SpeechSynthesisUtterance("Voici un aperçu de ma voix.");U.lang="fr-FR",U.rate=X.current;const ne=ve();ne&&(U.voice=ne),U.onstart=()=>F(!0),U.onend=()=>F(!1),Ze.current=!1,window.speechSynthesis.speak(U)},className:"h-9 px-3 rounded-lg border text-xs flex items-center gap-1.5",style:{borderColor:`${ue}22`,background:"white",color:ue},children:[d.jsx(U1,{className:"w-3 h-3"})," Tester"]})]})]}),d.jsxs("div",{className:"flex flex-col gap-1.5",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("label",{className:"text-[10px] font-semibold uppercase tracking-wider",style:{color:wt,fontFamily:ct},children:"Vitesse"}),d.jsxs("span",{className:"text-[11px] tabular-nums px-2 py-0.5 rounded",style:{background:`${ue}0A`,color:ue,fontFamily:ct},children:[Fe.toFixed(2),"×"]})]}),d.jsx("input",{type:"range",min:Ox,max:Lx,step:.05,value:Fe,onChange:U=>Jt(parseFloat(U.target.value)),className:"w-full h-1.5"})]})]}),n==="data"?d.jsx("div",{className:"flex-1 overflow-y-auto",children:d.jsx(Dne,{onSendInsight:U=>{r("chat"),o(U),setTimeout(()=>ii(U,"data_panel"),100)}})}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"border-b flex-shrink-0",style:{borderColor:`${ue}18`,background:"white"},children:[d.jsxs("button",{onClick:()=>b(U=>!U),className:"w-full flex items-center justify-between px-6 max-sm:px-4 py-2.5 text-[11px] font-semibold uppercase tracking-wider hover:bg-black/[0.02]",style:{color:ue,fontFamily:ct},"aria-expanded":v,children:[d.jsxs("span",{className:"flex items-center gap-2",children:["Contexte mission",dn&&d.jsx("span",{className:"normal-case tracking-normal text-[10px] px-1.5 py-0.5 rounded",style:{background:`${wt}22`,color:wt},children:"renseigné"})]}),d.jsx(_f,{className:`w-3.5 h-3.5 transition-transform ${v?"rotate-180":""}`})]}),v&&d.jsx("div",{className:"px-6 max-sm:px-4 pb-3 grid grid-cols-2 gap-2",children:["secteur","surface","wms","volume"].map(U=>d.jsxs("label",{className:"flex flex-col gap-1",children:[d.jsx("span",{className:"text-[10px] uppercase tracking-wider",style:{color:wt,fontFamily:ct},children:U==="secteur"?"Secteur":U==="surface"?"Surface (m²)":U==="wms"?"WMS / ERP":"Volume / jour"}),d.jsx("input",{value:w[U],onChange:ne=>y({...w,[U]:ne.target.value}),className:"h-8 px-2 rounded border text-xs bg-white outline-none",style:{borderColor:`${ue}22`,color:ue}})]},U))})]}),d.jsxs("div",{className:"flex-1 overflow-y-auto p-6 max-sm:p-4 flex flex-col gap-4 min-h-[200px]",style:{scrollbarWidth:"thin"},children:[d.jsxs("div",{className:"flex gap-2.5 items-start chatbot-msg-anim",children:[d.jsx("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0",style:{background:_t},children:d.jsx(Ol,{})}),d.jsx("div",{className:"text-sm leading-[1.65] px-[18px] py-[14px] max-w-[80%]",style:{background:"white",color:ue,border:`1px solid ${ue}12`,borderRadius:"4px 14px 14px 14px"},children:d.jsx("div",{className:"prose prose-sm max-w-none",style:{color:ue},children:d.jsx(Rp,{children:zne})})})]}),!c&&!B&&d.jsxs("div",{className:"ml-[38px] max-w-[80%]",children:[j?d.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[d.jsx("input",{value:z,onChange:U=>P(U.target.value),placeholder:"FLX-XXXX",className:"h-8 px-2 rounded border text-xs bg-white outline-none tracking-widest uppercase",style:{borderColor:`${ue}22`,color:ue,fontFamily:ct,minWidth:120}}),d.jsx("button",{onClick:()=>{fa(z,{autoDebrief:!0})&&(J(!1),P(""))},className:"h-8 px-3 rounded text-[11px] font-medium",style:{background:_t,color:"white"},children:"Analyser"}),d.jsx("button",{onClick:()=>{J(!1),P(""),ae("")},className:"h-8 px-2 text-[11px]",style:{color:`${ue}77`},children:"Annuler"})]}):d.jsx("button",{type:"button",onClick:()=>{J(!0),ae("")},className:"text-[11px] underline underline-offset-2",style:{color:wt,fontFamily:ct},children:"J'ai un code Flux Ops Trainer"}),G&&d.jsx("div",{className:"mt-1.5 text-[11px]",style:{color:"#B4491A"},children:G})]}),G&&(c||B)&&d.jsx("div",{className:"ml-[38px] text-[11px]",style:{color:"#B4491A",fontFamily:ct},children:G}),i.map((U,ne)=>d.jsxs(Gr.div,{initial:{opacity:0,y:8}
390,animate:{opacity:1,y:0},transition:{duration:.4},className:`flex gap-2.5 items-start ${U.role==="user"?"justify-end":""}`,children:[U.role==="assistant"&&d.jsx("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0",style:{background:_t},children:d.jsx(Ol,{})}),d.jsx("div",{className:"text-sm leading-[1.65] px-[18px] py-[14px] max-w-[80%]",style:{background:"white",color:ue,border:`1px solid ${ue}12`,borderLeft:U.role==="user"?`3px solid ${_t}`:void 0,borderRadius:U.role==="user"?"14px 14px 4px 14px":"4px 14px 14px 14px"},children:U.role==="assistant"?d.jsx("div",{className:"prose prose-sm max-w-none",style:{color:ue},children:d.jsx(Rp,{children:U.content})}):d.jsx("p",{className:"whitespace-pre-wrap",children:U.content})})]},ne)),l&&((Kn=i[i.length-1])==null?void 0:Kn.role)==="user"&&d.jsxs("div",{className:"flex gap-2.5 items-start",children:[d.jsx("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center flex-shrink-0",style:{background:_t},children:d.jsx(Ol,{})}),d.jsx("div",{style:{background:"white",border:`1px solid ${ue}12`,borderRadius:"4px 14px 14px 14px"},children:d.jsx(Kne,{})})]}),x&&d.jsxs("div",{className:"mt-2",children:[d.jsx(Xne,{d:x}),R?d.jsxs("div",{className:"mt-3 rounded-lg p-3 flex items-center gap-2 text-sm",style:{background:`${wt}12`,color:ue},children:[d.jsx(n_,{className:"w-4 h-4",style:{color:wt}}),"Pré-diagnostic envoyé — je te recontacte sous 24 h."]}):I?d.jsxs("div",{className:"mt-3 rounded-lg p-4",style:{background:"white",border:`1px solid ${ue}22`},children:[d.jsx("label",{htmlFor:"lead-email",className:"text-[10px] uppercase tracking-wider block mb-1.5",style:{color:wt,fontFamily:ct},children:"Email"}),d.jsx("input",{id:"lead-email",type:"email",value:k,onChange:U=>C(U.target.value),placeholder:"[email protected]",className:"w-full h-9 px-3 rounded border text-sm outline-none mb-2",style:{borderColor:`${ue}22`,color:ue}}),d.jsxs("label",{className:"flex items-start gap-2 text-[11px] leading-snug cursor-pointer",style:{color:ue},children:[d.jsx("input",{type:"checkbox",checked:T,onChange:U=>M(U.target.checked),className:"mt-0.5"}),d.jsx("span",{children:"J'accepte que CHAL·CONSULTING utilise mon email pour me recontacter à propos de ce pré-diagnostic. Aucun partage tiers."})]}),d.jsxs("div",{className:"mt-3 flex gap-2",children:[d.jsx("button",{onClick:We,disabled:!k||!T||L,className:"px-3.5 py-2 rounded-md text-xs font-medium disabled:opacity-50",style:{background:_t,color:"white"},children:L?"Envoi…":"Envoyer"}),d.jsx("button",{onClick:()=>S(!1),className:"px-3 py-2 rounded-md text-xs",style:{color:`${ue}88`},children:"Annuler"})]})]}):d.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[d.jsxs("button",{onClick:()=>S(!0),className:"inline-flex items-center gap-1.5 px-3.5 py-2 rounded-md text-xs font-medium",style:{background:_t,color:"white",fontFamily:Mt},children:[d.jsx(Cf,{className:"w-3.5 h-3.5"})," Recevoir ce pré-diagnostic par email"]}),d.jsxs("a",{href:ac,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 px-3.5 py-2 rounded-md text-xs font-medium border",style:{borderColor:`${ue}33`,color:ue,background:"white"},children:[d.jsx(e_,{className:"w-3.5 h-3.5"})," Réserver 20 min de cadrage"]})]})]}),d.jsx("div",{ref:xt})]}),c&&!x&&d.jsx("div",{className:"px-6 max-sm:px-4 pb-2 flex-shrink-0",children:d.jsxs("button",{onClick:Ee,disabled:A,className:"w-full inline-flex items-center justify-center gap-1.5 py-2 rounded-md text-xs font-medium disabled:opacity-60",style:{background:_t,color:"white",fontFamily:Mt},children:[A?d.jsx(cg,{className:"w-3.5 h-3.5 animate-spin"}):d.jsx(S_,{className:"w-3.5 h-3.5"}),A?"Génération du pré-diagnostic…":"Générer mon pré-diagnostic F.L.U.X"]})}),!c&&d.jsx("div",{className:"px-6 max-sm:px-4 pb-2 flex flex-wrap gap-1.5 flex-shrink-0",children:Wne.map(U=>d.jsx("button",{onClick:()=>ii(U.text),disabled:l,className:"inline-flex items-center gap-1 px-3.5 py-[7px] rounded-full text-xs whitespace-nowrap transition-all",style:{background:"white",border:`1px solid ${ue}22`,color:ue},children:U.label},U.label))}),d.jsxs("div",{className:"px-6 max-sm:px-4 pb-5 max-sm:pb-4 pt-4 border-t flex-shrink-0",style:{borderColor:`${ue}18`,background:"white"},children:[de&&d.jsxs("div",{className:"mb-2 flex items-center justify-between gap-2 px-3 py-2 rounded-lg border",style:{borderColor:`${wt}55`,background:`${wt}0F`},children:[d.jsxs("span",{className:"text-[11px] font-medium flex items-center gap-1.5 min-w-0",style:{color:ue},children:[d.jsx(rd,{className:"w-3 h-3 flex-shrink-0"}),d.jsx("span",{className:"truncate",children:"Transcription — modifiez si besoin puis envoyez"})]}),d.jsx("button",{onClick:()=>{var U;o(""),Me(!1),(U=Bt.current)==null||U.focus()},className:"h-7 px-2.5 rounded-md text-[11px]",style:{color:`${ue}77`},children:"Annuler"})]}),d.jsxs("div",{className:"flex items-center gap-2 border rounded-xl pl-4 pr-1 py-1 transition-colors",style:{background:$a,borderColor:de?wt:`${ue}22`},children:[d.jsx("input",{ref:Bt,"aria-label":"Votre message",value:H&&me?me:a,onChange:U=>o(U.target.value),onKeyDown:et,placeholder:H?"J'écoute…":"Décrivez votre problématique…",disabled:l,className:"flex-1 bg-transparent text-sm outline-none py-2.5",style:{color:ue,fontFamily:Mt}}),he&&d.jsx("button",{onClick:H?Ht:Wt,disabled:l,"aria-label":H?"Arrêter l'écoute":"Parler",className:"relative w-[38px] h-[38px] rounded-[10px] flex items-center justify-center flex-shrink-0 transition-all disabled:opacity-50",style:{background:H?wt:"white",color:H?"white":ue,border:H?"none":`1px solid ${ue}22`},children:d.jsx(rd,{className:"w-4 h-4"})}),d.jsx("button",{onClick:()=>ii(),disabled:!a.trim()||l,"aria-label":"Envoyer le message",className:"w-[38px] h-[38px] rounded-[10px] text-white flex items-center justify-center flex-shrink-0 transition-all disabled:opacity-50",style:{background:_t},children:l?d.jsx(cg,{className:"w-4 h-4 animate-spin"}):d.jsx(y_,{className:"w-4 h-4"})})]}),d.jsxs("div",{className:"flex items-center justify-center gap-1.5 mt-2.5 text-[11px]",style:{color:`${ue}77`,fontFamily:ct},children:[d.jsx(l_,{className:"w-3 h-3 opacity-60 flex-shrink-0"}),d.jsx("span",{children:"Démo — en mission, l'assistant est connecté à vos données métier (WMS · ERP · TMS)."})]}),d.jsx("div",{className:"text-center mt-1 text-[11px]",style:{color:"#6B7280",fontFamily:ct},children:"Conversations conservées de façon anonyme pour améliorer l'assistant. Aucune donnée personnelle collectée."})]})]})]})})}),d.jsx("style",{children:`
391        @keyframes chatbotBounce { 0%,60%,100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-5px); opacity: 1; } }
392        .chatbot-msg-anim { animation: chatbotMsgIn 0.5s ease both; }
393        @keyframes chatbotMsgIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
394        @keyframes voicePulse { 0% { box-shadow: 0 0 0 0 rgba(30,127,166,0.55); } 70% { box-shadow: 0 0 0 14px rgba(30,127,166,0); } 100% { box-shadow: 0 0 0 0 rgba(30,127,166,0); } }
395        @keyframes voicePing { 0% { transform: scale(1); opacity: 0.55; } 80% { transform: scale(2.2); opacity: 0; } 100% { transform: scale(2.2); opacity: 0; } }
396        .flux-chat-trigger {
397          position: fixed;
398          right: 1.75rem;
399          bottom: 1.75rem;
400          z-index: 1000;
401          display: flex;
402          min-width: 390px;
403          align-items: center;
404          gap: 13px;
405          border: 1px solid #E0DAD0;
406          border-left: 4px solid #B8734F;
407          border-radius: 12px;
408          background: #FFFFFF;
409          padding: 16px 14px 14px 18px;
410          color: #0D3B6E;
411          box-shadow: 0 18px 40px rgba(6,38,74,0.16);
412          cursor: pointer;
413          font-family: ${Mt};
414          transition: box-shadow 0.25s ease, border-color 0.25s ease;
415        }
416        .flux-chat-trigger:hover {
417          box-shadow: 0 24px 52px rgba(6,38,74,0.22);
418        }
419        .flux-chat-trigger:focus-visible {
420          outline: 2px solid #B8734F;
421          outline-offset: 4px;
422        }
423        .flux-chat-trigger__label {
424          position: absolute;
425          top: -9px;
426          left: 16px;
427          display: inline-flex;
428          align-items: center;
429          gap: 7px;
430          background: #FFFFFF;
431          padding: 0 8px;
432          color: #9C5B39;
433          font-family: ${ct};
434          font-size: 10.5px;
435          font-weight: 600;
436          letter-spacing: 0.1em;
437          line-height: 1;
438          text-transform: uppercase;
439        }
440        .flux-chat-trigger__status {
441          position: relative;
442          display: inline-flex;
443          width: 7px;
444          height: 7px;
445          border-radius: 999px;
446          background: #35A66A;
447        }
448        .flux-chat-trigger__status::after {
449          content: "";
450          position: absolute;
451          inset: 0;
452          border-radius: inherit;
453          background: #35A66A;
454          animation: fluxAgentStatus 2.4s ease-out infinite;
455        }
456        .flux-chat-trigger__ring {
457          display: inline-flex;
458          align-items: center;
459          justify-content: center;
460          flex: 0 0 auto;
461        }
462        .flux-chat-trigger__ring--mobile,
463        .flux-chat-trigger__mobile-text {
464          display: none;
465        }
466        .flux-chat-trigger__placeholder {
467          flex: 1 1 auto;
468          min-width: 0;
469          color: #7A8494;
470          font-size: 15px;
471          line-height: 1.35;
472          text-align: left;
473          white-space: nowrap;
474        }
475        .flux-chat-trigger__send {
476          display: inline-flex;
477          width: 38px;
478          height: 38px;
479          flex: 0 0 38px;
480          align-items: center;
481          justify-content: center;
482          border-radius: 9px;
483          background: #B8734F;
484          color: #FFFFFF;
485        }
486        @keyframes fluxAgentStatus {
487          0% { transform: scale(1); opacity: 0.45; }
488          70% { transform: scale(3); opacity: 0; }
489          100% { transform: scale(3); opacity: 0; }
490        }
491        @media (max-width: 767px) {
492          .flux-chat-trigger {
493            right: 1rem;
494            bottom: 1rem;
495            min-width: 0;
496            height: 46px;
497            gap: 9px;
498            border: 0;
499            border-radius: 999px;
500            background: #B8734F;
501            padding: 0 16px 0 14px;
502            color: #FFFFFF;
503            box-shadow: 0 14px 34px rgba(6,38,74,0.20);
504          }
505          body:has(aside[aria-label="Préférences de cookies"]) .flux-chat-trigger {
506            bottom: calc(33dvh + 0.75rem);
507          }
508          .flux-chat-trigger:hover {
509            box-shadow: 0 18px 42px rgba(6,38,74,0.26);
510          }
511          .flux-chat-trigger__label,
512          .flux-chat-trigger__ring--desktop,
513          .flux-chat-trigger__placeholder,
514          .flux-chat-trigger__send {
515            display: none;
516          }
517          .flux-chat-trigger__ring--mobile,
518          .flux-chat-trigger__mobile-text {
519            display: inline-flex;
520          }
521          .flux-chat-trigger__mobile-text {
522            color: #FFFFFF;
523            font-size: 14px;
524            font-weight: 700;
525            line-height: 1;
526            white-space: nowrap;
527          }
528        }
529        @media (min-width: 768px) and (max-width: 900px) {
530          body:has(aside[aria-label="Préférences de cookies"]) .flux-chat-trigger {
531            bottom: 13rem;
532          }
533        }
534        @media (prefers-reduced-motion: reduce) {
535          .chatbot-msg-anim,
536          .flux-chat-trigger__status::after {
537            animation: none !important;
538          }
539        }
540      `})]})}function Jne(){E.useEffect(()=>{const e=document.documentElement;let t=null,n=null;const r=()=>{if(!t)return;const s=Math.round(t.getBoundingClientRect().height);s>0&&e.style.setProperty("--header-height",`${s}px`)},i=()=>(t=document.querySelector("header"),t?(r(),"ResizeObserver"in window&&(n=new ResizeObserver(r),n.observe(t)),!0):!1);if(!i()){const s=requestAnimationFrame(()=>{if(!i()){const a=window.setInterval(()=>{i()&&window.clearInterval(a)},100);window.setTimeout(()=>window.clearInterval(a),1500)}});return()=>cancelAnimationFrame(s)}return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r),n==null||n.disconnect()}},[])}function Yne({title:e,description:t,keywords:n,canonical:r,ogType:i="website",ogImage:s,ogImageAlt:a,ogImageWidth:o=1200,ogImageHeight:l=630,siteUrl:u="https://chal-consulting.fr",jsonLd:c,noIndex:p=!1}){const f=r?`${u}${r}`:u,m=s||`${u}/og-image.jpg`,g=m.startsWith("http")?m:`${u}${m.startsWith("/")?"":"/"}${m}`,h=a||`${e} — CHAL·CONSULTING IA`,v=typeof window<"u"&&window.location.hostname.endsWith(".lovable.app"),b=p||v;return d.jsxs(VC,{children:[d.jsx("title",{children:e}),d.jsx("meta",{name:"description",content:t}),n&&d.jsx("meta",{name:"keywords",content:n}),d.jsx("meta",{name:"author",content:"CHAL·CONSULTING IA"}),d.jsx("meta",{name:"publisher",content:"CHAL·CONSULTING IA"}),b&&d.jsx("meta",{name:"robots",content:v?"noindex, nofollow":"noindex, follow"}),!b&&d.jsx("meta",{name:"robots",content:"index, follow, max-image-preview:large, max-snippet:-1"}),d.jsx("link",{rel:"canonical",href:f}),d.jsx("meta",{property:"og:type",content:i}),d.jsx("meta",{property:"og:url",content:f}),d.jsx("meta",{property:"og:title",content:e}),d.jsx("meta",{property:"og:description",content:t}),d.jsx("meta",{property:"og:image",content:g}),d.jsx("meta",{property:"og:image:secure_url",content:g}),d.jsx("meta",{property:"og:image:type",content:g.endsWith(".png")?"image/png":"image/jpeg"}),d.jsx("meta",{property:"og:image:width",content:String(o)}),d.jsx("meta",{property:"og:image:height",content:String(l)}
540),d.jsx("meta",{property:"og:image:alt",content:h}),d.jsx("meta",{property:"og:site_name",content:"CHAL·CONSULTING IA"}),d.jsx("meta",{property:"og:locale",content:"fr_FR"}),d.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),d.jsx("meta",{name:"twitter:url",content:f}),d.jsx("meta",{name:"twitter:title",content:e}),d.jsx("meta",{name:"twitter:description",content:t}),d.jsx("meta",{name:"twitter:image",content:g}),d.jsx("meta",{name:"twitter:image:alt",content:h}),c&&(Array.isArray(c)?c.map((w,y)=>d.jsx("script",{type:"application/ld+json",children:JSON.stringify(w)},y)):d.jsx("script",{type:"application/ld+json",children:JSON.stringify(c)}))]})}const ye="https://chal-consulting.fr",Zne={"@context":"https://schema.org","@type":["ProfessionalService","LocalBusiness"],"@id":`${ye}/#organization`,name:"CHAL·CONSULTING IA",legalName:"CHAL CONSULTING IA",alternateName:"Chal Consulting",url:ye,logo:{"@type":"ImageObject",url:`${ye}/og-image.jpg`,width:1200,height:630},image:`${ye}/og-image.jpg`,description:"Consultant logistique entrepôt et IA opérationnelle. Méthode F.L.U.X™ : stabilisation des flux en 8 semaines pour PME et ETI.",slogan:"Stabilisez votre logistique en 8 semaines",founder:{"@type":"Person",name:"Chal-Michel OU",jobTitle:"Fondateur & Expert Logistique IA",alumniOf:{"@type":"EducationalOrganization",name:"Toulouse Business School"},url:`${ye}/qui-sommes-nous`},address:{"@type":"PostalAddress",streetAddress:"102 avenue Gambetta",addressLocality:"Maisons-Alfort",addressRegion:"Île-de-France",postalCode:"94700",addressCountry:"FR"},geo:{"@type":"GeoCoordinates",latitude:48.8079,longitude:2.4382},areaServed:[{"@type":"Country",name:"France"},{"@type":"Country",name:"Belgique"},{"@type":"Country",name:"Suisse"},{"@type":"Country",name:"Luxembourg"}],serviceArea:{"@type":"GeoCircle",geoMidpoint:{"@type":"GeoCoordinates",latitude:48.8079,longitude:2.4382},geoRadius:"1500000"},serviceType:["Conseil logistique opérationnelle","Management de transition","Formation logistique terrain","IA appliquée à la logistique","Diagnostic entrepôt","Optimisation flux logistique"],hasOfferCatalog:{"@type":"OfferCatalog",name:"Services CHAL·CONSULTING IA",itemListElement:[{"@type":"Offer",itemOffered:{"@type":"Service",name:"Diagnostic F.L.U.X™ — Audit terrain entrepôt",url:`${ye}/services/diagnostic`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Accompagnement opérationnel F.L.U.X™",url:`${ye}/services/accompagnement`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Direction logistique fractionnée",url:`${ye}/services/direction-fractionnee`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"IA opérationnelle entrepôt",url:`${ye}/ia-operationnelle`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Formation logistique & IA terrain",url:`${ye}/formation`}}]},priceRange:"€€",currenciesAccepted:"EUR",paymentAccepted:["Virement bancaire","Carte bancaire"],email:"[email protected]",contactPoint:[{"@type":"ContactPoint",contactType:"sales",email:"[email protected]",availableLanguage:["French","English"],areaServed:["FR","BE","CH","LU"],url:`${ye}/contact`},{"@type":"ContactPoint",contactType:"customer support",email:"[email protected]",availableLanguage:["French"],url:`${ye}/contact`}],openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"18:00"}],knowsAbout:["WMS","SAP","gestion des stocks","demand planning","automatisation entrepôts","GMP/GDP pharma","supply chain PME ETI","méthode F.L.U.X™","lean logistics"],knowsLanguage:["fr","en"],sameAs:["https://www.linkedin.com/in/chalmichelou/","https://www.linkedin.com/company/chal-consulting/"]},ere={"@context":"https://schema.org","@type":"WebSite","@id":`${ye}/#website`,url:ye,name:"CHAL·CONSULTING IA",description:"Conseil logistique opérationnel & IA terrain pour PME et ETI.",publisher:{"@id":`${ye}/#organization`},inLanguage:"fr-FR",potentialAction:{"@type":"SearchAction",target:{"@type":"EntryPoint",urlTemplate:`${ye}/analyses-outils?q={search_term_string}`},"query-input":"required name=search_term_string"}},tre={"@context":"https://schema.org","@type":"Service",name:"Méthode F.L.U.X™ — Stabilisation Entrepôt",serviceType:"Conseil en optimisation logistique",description:"Méthode propriétaire en 4 phases (Fiabiliser, Lire, Unifier, eXécuter) pour stabiliser les flux d'entrepôt en 8 semaines.",provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye},areaServed:{"@type":"Country",name:"France"},url:`${ye}/methode`,offers:{"@type":"AggregateOffer",priceCurrency:"EUR",lowPrice:"4500",highPrice:"55000",offerCount:"4"}},nre={"@context":"https://schema.org","@type":"Service",name:"IA Opérationnelle Entrepôt",serviceType:"Intelligence artificielle appliquée à la logistique",description:"Détection anomalies, prévision charge, automatisation tâches répétitives. IA pragmatique intégrée à la méthode F.L.U.X™.",provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye},areaServed:{"@type":"Country",name:"France"},url:`${ye}/ia-operationnelle`,offers:{"@type":"Offer",priceCurrency:"EUR",price:"5000",description:"POC IA dès 5 000 €"}},rre={"@context":"https://schema.org","@type":"Service",name:"Formation Logistique Terrain & IA",serviceType:"Formation professionnelle logistique",description:"Formations 8
5400% pratique structurées selon F.L.U.X™. Pour PME/ETI, écoles, managers. IA éthique et logistique bas carbone.",provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye},areaServed:{"@type":"Country",name:"France"},url:`${ye}/formation`},ire={"@context":"https://schema.org","@type":"Person",name:"Chal-Michel OU",jobTitle:"Consultant logistique et IA",url:`${ye}/qui-sommes-nous`,worksFor:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye},address:{"@type":"PostalAddress",addressLocality:"Maisons-Alfort",postalCode:"94700",addressRegion:"Île-de-France",addressCountry:"FR"},alumniOf:[{"@type":"EducationalOrganization",name:"Toulouse Business School"},{"@type":"EducationalOrganization",name:"Université Paris-Est Créteil (UPEC)"}],knowsAbout:["Logistique opérationnelle","WMS","SAP EWM","BPF","Supply chain","IA appliquée"],hasCredential:[{"@type":"EducationalOccupationalCredential",credentialCategory:"Certification",name:"SAP EWM — 6 ans de pratique"},{"@type":"EducationalOccupationalCredential",credentialCategory:"Certification",name:"BPF / GDP — pharmaceutique"},{"@type":"EducationalOccupationalCredential",credentialCategory:"Certification",name:"ISO 9001 et ISO 13485 — audits passés"},{"@type":"EducationalOccupationalCredential",credentialCategory:"Certification",name:"IATA DGR — 96,5/100"},{"@type":"EducationalOccupationalCredential",credentialCategory:"Certification",name:"Température dirigée, douanes, export 164 pays"}],sameAs:["https://www.linkedin.com/in/chalmichelou/"],description:"15 ans d'expertise terrain (Cenexi, Saint-Gobain, Bio-Rad, Nike, IKEA). Créateur de la méthode F.L.U.X™. Anti-consulting : du diagnostic à l'autonomie durable."},npe={"@context":"https://schema.org","@type":"ContactPage","@id":`${ye}/contact#contactpage`,name:"Contact — CHAL·CONSULTING IA",description:"Contactez CHAL·CONSULTING IA pour un échange gratuit de 30 minutes sur votre situation logistique. Réponse honnête sous 24h.",url:`${ye}/contact`,inLanguage:"fr-FR",isPartOf:{"@id":`${ye}/#website`},about:{"@id":`${ye}/#organization`},mainEntity:{"@type":"Organization","@id":`${ye}/#organization`,name:"CHAL·CONSULTING IA",url:ye,email:"[email protected]",openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"18:00"}],contactPoint:[{"@type":"ContactPoint",contactType:"sales",name:"Échange découverte & devis",email:"[email protected]",url:`${ye}/contact`,areaServed:["FR","BE","CH","LU"],availableLanguage:[{"@type":"Language",name:"French",alternateName:"fr"},{"@type":"Language",name:"English",alternateName:"en"}],hoursAvailable:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"18:00"}]},{"@type":"ContactPoint",contactType:"customer support",name:"Support client (missions en cours)",email:"[email protected]",url:`${ye}/contact`,areaServed:["FR","BE","CH","LU"],availableLanguage:[{"@type":"Language",name:"French",alternateName:"fr"}],hoursAvailable:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"09:00",closes:"18:00"}]},{"@type":"ContactPoint",contactType:"reservations",name:"Réservation créneau Calendly",url:Ha,areaServed:["FR","BE","CH","LU"],availableLanguage:[{"@type":"Language",name:"French",alternateName:"fr"},{"@type":"Language",name:"English",alternateName:"en"}],hoursAvailable:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"08:00",closes:"19:00",description:"Créneaux Calendly self-service en dehors des heures bureau"}]}]},significantLink:[Ha,"mailto:[email protected]","https://www.linkedin.com/in/chalmichelou/"],potentialAction:[{"@type":"ReserveAction",name:"Réserver un échange de 30 minutes",description:"Créneau gratuit de 30 minutes pour qualifier votre besoin logistique. Réponse sous 24h ouvrées.",target:{"@type":"EntryPoint",urlTemplate:Ha,actionPlatform:["https://schema.org/DesktopWebPlatform","https://schema.org/MobileWebPlatform"]},result:{"@type":"Reservation",name:"Échange découverte 30 min — CHAL·CONSULTING IA",reservationFor:{"@type":"Event",name:"Échange découverte logistique 30 minutes",eventAttendanceMode:"https://schema.org/OnlineEventAttendanceMode",organizer:{"@id":`${ye}/#organization`}}}},{"@type":"CommunicateAction",name:"Envoyer un message",description:"Email direct au fondateur. Réponse honnête sous 24h ouvrées (Lun–Ven, 09:00–18:00, Europe/Paris).",target:{"@type":"EntryPoint",urlTemplate:"mailto:[email protected]",inLanguage:["fr-FR","en"]}}]},rpe={"@context":"https://schema.org","@type":"Service",name:"Offres CHAL·CONSULTING IA — Méthode F.L.U.X™",serviceType:"Conseil en logistique opérationnelle",provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye},url:`${ye}/tarifs`,hasOfferCatalog:{"@type":"OfferCatalog",name:"Offres F.L.U.X™",itemListElement:[{"@type":"Offer",priceCurrency:"EUR",price:"4500",category:"FOCUS",itemOffered:{"@type":"Service",name:"Diagnostic FOCUS",description:"Immersion terrain, cartographie des flux, plan d'action priorisé"}},{"@type":"Offer",priceCurrency:"EUR",price:"8000",category:"LANCER",itemOffered:{"@type":"Service",name:"Pilote LANCER",description:"Mise en œuvre rapide sur un périmètre ciblé"}},{"@type":"Offer",priceCurrency:"EUR",price:"18000",category:"UNIFIER",itemOffered:{"@type":"Service",name:"Accompagnement UNIFIER",description:"Transformation structurelle des flux logistiques"}},{"@type":"Offer",priceCurrency:"EUR",price:"55000",category:"EXÉCUTER",itemOffered:{"@type":"Service",name:"Direction EXÉCUTER",description:"Direction opérationnelle logistique externalisée"}}]}},ipe={"@context":"https://schema.org","@type":"WebApplication",name:"Diagnostic IA Logistique — CHAL·CONSULTING IA",description:"Évaluez gratuitement votre maturité IA supply chain en 10 questions. Résultats immédiats : radar, matrice ROI, recommandations personnalisées.",url:`${ye}/diagnostic-ia`,applicationCategory:"BusinessApplication",offers:{"@type":"Offer",price:"0",priceCurrency:"EUR"},provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye}},sre="https://www.linkedin.com/in/chalmichelou/";function spe(e){const{type:t="BlogPosting",headline:n,description:r,url:i,image:s,datePublished:a,dateModified:o=a,author:l={},keywords:u,wordCount:c,timeRequired:p,articleSection:f}=e,m=v=>v.startsWith("http")?v:`${ye}${v.startsWith("/")?"":"/"}${v}`,g=Array.isArray(s)?s.map(m):m(s),h={"@context":"https://schema.org","@type":t,headline:n,description:r,image:g,datePublished:a,dateModified:o,author:{"@type":"Person",name:l.name??"Chal-Michel OU",url:l.url??sre},publisher:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye,logo:{"@type":"ImageObject",url:`${ye}/og-image.jpg`,width:1200,height:630}},mainEntityOfPage:{"@type":"WebPage","@id":i},url:i};return u&&(h.keywords=u),c&&(h.wordCount=c),p&&(h.timeRequired=p),f&&(h.articleSection=f),h}function ape(e){return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.map((t,n)=>({"@type":"ListItem",position:n+1,name:t.name,item:t.url.startsWith("http")?t.url:`${ye}${t.url.startsWith("/")?"":"/"}${t.url}`}))}}function ope(e){const{name:t,description:n,url:r,courseCode:i,inLanguage:s="fr-FR",audience:a="Managers logistique, dirigeants PME/ETI",educationalLevel:o="Professional",duration:l,mode:u="Presentiel",hasCourseInstance:c=!0}=e,p={Presentiel:"Onsite",Hybride:"Blended",Online:"Online"},f={"@context":"https://schema.org","@type":"Course",name:t,description:n,url:r,inLanguage:s,educationalLevel:o,provider:{"@type":"Organization",name:"CHAL·CONSULTING IA",url:ye,sameAs:ye},audience:{"@type":"Audience",audienceType:a},offers:{"@type":"Offer",category:"Professional training",priceCurrency:"EUR",availability:"https://schema.org/InStock",url:r}};return i&&(f.courseCode=i),c&&(f.hasCourseInstance={"@type":"CourseInstance",courseMode:p[u]??"Onsite",...l?{courseWorkload:l}:{},location:{"@type":"Place",name:"Intra-entreprise — France et international"},inLanguage:s}),f}const lpe={"@context":"https://schema.org","@type":"HowTo",name:"Stabiliser sa logistique d'entrepôt en 8 semaines avec la méthode F.L.U.X™",description:"Méthode terrain en 4 phases (Fiabiliser, Lire, Unifier, eXécuter) pour reprendre le contrôle d'un entrepôt PME/ETI sans dépendance technologique.",image:`${ye}/og-methode.jpg`,totalTime:"P8W",estimatedCost:{"@type":"MonetaryAmount",currency:"EUR",value:"4500"},supply:[{"@type":"HowToSupply",name:"Données opérationnelles existantes (WMS, ERP, Excel)"},{"@type":"HowToSupply",name:"Accès terrain entrepôt + équipes opérationnelles"}],tool:[{"@type":"HowToTool",name:"Python / Power BI / Metabase (outils ouverts)"}],step:[{"@type":"HowToStep",position:1,name:"Phase F — Fiabiliser les bases",text:"Immersion terrain, diagnostic des flux physiques et identification des blocages réels (2-4 semaines).",url:`${ye}/methode/fiabiliser`},{"@type":"HowToStep",position:2,name:"Phase L — Lire les données",text:"Rendre les données lisibles et actionnables, tester avant d'investir (1-2 mois).",url:`${ye}/methode/lire`},{"@type":"HowToStep",position:3,name:"Phase U — Unifier les équipes",text:"Appropriation par les équipes, montée en autonomie, transformation durable (3-6 mois).",url:`${ye}/methode/unifier`},{"@type":"HowToStep",position:4,name:"Phase X — eXécuter avec autonomie",text:"Outils ouverts sans dépendance, autonomie technique du client (évolutif).",url:`${ye}/methode/executer`}]};function upe(e){return{"@context":"https://schema.org","@type":"Service",name:`Phase ${e.letter} — ${e.title} (Méthode F.L.U.X™)`,description:e.description,serviceType:"Conseil en optimisation logistique opérationnelle",provider:{"@id":`${ye}/#organization`},areaServed:{"@type":"Country",name:"France"},url:e.url,isPartOf:{"@type":"Service",name:"Méthode F.L.U.X™",url:`${ye}/methode`},termsOfService:`${ye}/methode`,additionalProperty:[{"@type":"PropertyValue",name:"Durée typique",value:e.duration}]}}function cpe(e){return{"@context":"https://schema.org","@type":"WebApplication",name:e.name,description:e.description,url:e.url,applicationCategory:e.category??"BusinessApplication",operatingSystem:"Web",browserRequirements:"Requires JavaScript. Modern browser.",inLanguage:"fr-FR",isAccessibleForFree:e.isFree??!0,offers:{"@type":"Offer",price:e.isFree===!1?void 0:"0",priceCurrency:"EUR"},provider:{"@id":`${ye}/#organization`}}}const are=[{question:"Qu'est-ce que la méthode F.L.U.X.™ ?",answer:"F.L.U.X.™ est la méthode propriétaire de CHAL·CONSULTING IA en 4 étapes : Fiabiliser les processus, Lire les données (KPI), Unifier les systèmes (WMS, ERP, TMS), eXécuter avec l'IA adaptée à votre maturité. Elle structure l'ensemble des services — 
540conseil, formation et IA opérationnelle."},{question:"Comment l'IA améliore-t-elle concrètement la logistique des PME ?",answer:"L'IA optimise les prévisions de stock, automatise les tâches répétitives et améliore la précision des commandes. Mais on ne déploie jamais d'IA sur un flux instable. La méthode F.L.U.X™ impose de fiabiliser d'abord, puis de lire les données, avant d'unifier les systèmes et d'exécuter l'automatisation."},{question:"Quelle est la durée typique d'une mission de diagnostic ?",answer:"Un Diagnostic F.L.U.X™ dure entre 2 et 4 semaines selon le périmètre. Il inclut une immersion terrain, l'analyse des flux physiques et d'information, la lecture critique des KPI existants, et un plan d'actions priorisé."},{question:"Comment se mesure le ROI de vos interventions ?",answer:"Des KPI mesurables sont définis dès le cadrage : coûts, taux de service, productivité. Un suivi régulier permet de quantifier les gains. Ordres de grandeur observés, jamais garantis sans diagnostic préalable : ROI généralement constaté entre 6 et 12 mois selon le périmètre, jusqu'à 30 % de réduction des ruptures de stock observée selon le contexte, et 2 à 4 h/jour libérées pour les managers terrain."},{question:"Travaillez-vous avec des PME ou uniquement des grands groupes ?",answer:"CHAL·CONSULTING IA accompagne principalement des PME et ETI industrielles ou de distribution, avec des formats modulables : Diagnostic (2-4 semaines), Pilote (3-6 semaines), Accompagnement complet (3-6 mois) ou Direction fractionnée."},{question:"Quels sont les 3 types de flux logistiques à maîtriser ?",answer:"Les flux physiques (réception, stockage, préparation, expédition), les flux d'information (données WMS, ERP, KPI) et les flux décisionnels (arbitrages quotidiens des managers). La méthode F.L.U.X.™ les adresse dans cet ordre."},{question:"Comment optimiser la logistique d'un entrepôt ?",answer:"Avant tout outil : fiabiliser les bases (adressage, références, gammes opératoires), puis lire les bons indicateurs (taux de service, productivité, taux d'erreur), unifier les systèmes (WMS, ERP, TMS) et seulement ensuite automatiser ou déployer de l'IA. C'est la logique F.L.U.X.™."},{question:"C'est quoi la performance logistique ?",answer:"La performance logistique mesure la capacité à livrer le bon produit, au bon endroit, au bon moment, en bonne quantité et au bon coût. Elle se pilote via des KPI comme le taux de service (OTIF), la productivité préparation, le coût logistique en pourcentage du chiffre d'affaires et le taux d'erreur expédition."},{question:"Quels sont les 7 principes de la supply chain ?",answer:"Segmenter les clients, adapter le réseau logistique, écouter les signaux du marché, différencier le produit au plus tard, gérer stratégiquement les sources d'approvisionnement, développer une stratégie technologique globale et adopter des indicateurs de performance partagés sur toute la chaîne."}];function ore(){const e=E.useRef(null),[t,n]=E.useState(null);return E.useEffect(()=>{const r=e.current;if(!r)return;const i=new IntersectionObserver(s=>s.forEach(a=>{a.isIntersecting&&a.target.classList.add("visible")}),{threshold:.1,rootMargin:"0px 0px -40px 0px"});return r.querySelectorAll(".reveal, .reveal-stagger").forEach(s=>i.observe(s)),r.classList.contains("reveal")&&i.observe(r),()=>i.disconnect()},[]),d.jsx("section",{ref:e,style:{background:"#FFFFFF"},className:"py-10 md:py-14 px-6 org-sec org-sec--faq",children:d.jsxs("div",{className:"max-w-[760px] mx-auto",children:[d.jsxs("div",{className:"reveal mb-8 text-center",children:[d.jsx("span",{className:"home-eyebrow font-display mb-4",children:"FAQ"}),d.jsx("h2",{className:"font-display font-bold",style:{color:"#0d3b6e",fontSize:"clamp(1.75rem, 4vw, 2.5rem)"},children:"Questions fréquentes"})]}),d.jsx("div",{children:are.map((r,i)=>{const s=t===i,a=`faq-panel-${i}`,o=`faq-btn-${i}`;return d.jsxs("div",{className:"reveal-stagger",style:{borderBottom:"1px solid #E5E2DB",transitionDelay:`${i*70}ms`},children:[d.jsxs("button",{id:o,onClick:()=>n(s?null:i),className:"w-full flex items-center justify-between py-4 text-left hp-faq-btn focu
540s:outline-none focus-visible:outline-2 focus-visible:outline-offset-2",style:{outlineColor:"#b8734f"},"aria-expanded":s,"aria-controls":a,children:[d.jsx("span",{className:"font-sans pr-4",style:{fontSize:"0.95rem",fontWeight:500,color:"#0d3b6e"},children:r.question}),d.jsx(v_,{className:"w-5 h-5 flex-shrink-0",style:{color:"#b8734f",transform:s?"rotate(45deg)":"rotate(0deg)",transition:"transform 300ms ease"},"aria-hidden":"true"})]}),d.jsx("div",{id:a,role:"region","aria-labelledby":o,className:"hp-faq-answer grid",style:{gridTemplateRows:s?"1fr":"0fr",transition:"grid-template-rows 350ms cubic-bezier(0.4,0,0.2,1)"},children:d.jsx("div",{style:{overflow:"hidden"},children:d.jsx("p",{className:"font-sans pb-4",style:{fontSize:"0.88rem",color:"#6B7280",lineHeight:1.7},children:r.answer})})})]},i)})})]})})}const lre=[/example\.com/i,/your[-_.]?(domain|site|url|company)/i,/placeholder/i,/lorem\s?ipsum/i,/\+?33[-\s]?6[-\s]?00[-\s]?00[-\s]?00[-\s]?00/,/\+?1[-\s]?555[-\s]?\d{4}/,/test@test\./i,/noreply@example/i];function ure(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function cre(e){for(const t of lre)if(t.test(e))return`correspond au pattern placeholder ${t}`;return null}function yf(e){return/^https?:\/\/(www\.)?calendly\.com\//i.test(e)}function dre(e,t,n){if(yf(e))try{const i=new URL(e).pathname.split("/").filter(Boolean)[0];if(!i){n.push({path:t,value:e,reason:"URL Calendly sans slug utilisateur"});return}i.toLowerCase()!==Kp.toLowerCase()&&n.push({path:t,value:e,reason:`slug Calendly "${i}" ≠ canonique "${Kp}". Importer depuis @/data/calendly-config`}),/^(your-?username|example|demo|test|placeholder)$/i.test(i)&&n.push({path:t,value:e,reason:`slug Calendly placeholder "${i}"`})}catch{n.push({path:t,value:e,reason:"URL Calendly malformée"})}}function bf(e,t,n){if(typeof e=="string"){const r=cre(e);r&&n.push({path:t,value:e,reason:r}),yf(e)&&dre(e,t,n);return}if(Array.isArray(e)){e.forEach((r,i)=>bf(r,`${t}[${i}]`,n));return}if(ure(e)){if(e["@type"]==="ReserveAction"){const r=e.target,i=r&&typeof r.urlTemplate=="string"?r.urlTemplate:null;i?yf(i)||n.push({path:`${t}.target.urlTemplate`,value:i,reason:`ReserveAction.target.urlTemplate ne pointe pas vers Calendly (attendu: ${Ha})`}):n.push({path:`${t}.target.urlTemplate`,value:r,reason:"ReserveAction sans target.urlTemplate"})}for(const[r,i]of Object.entries(e))bf(i,t?`${t}.${r}`:r,n)}}function pre(e,t="schema"){const n=[];return(Array.isArray(e)?e:[e]).forEach((i,s)=>{const a=i&&typeof i=="object"&&"@id"in i&&typeof i["@id"]=="string"?i["@id"]:`${t}[${s}]`;bf(i,a,n)}),{ok:n.length===0,warnings:n}}function mre(e,t){if(typeof process<"u"||typeof import.meta<"u")return;const{ok:n,warnings:r}=pre(e,t);n||(console.groupCollapsed(`%c[JSON-LD] ${r.length} avertissement(s) — ${t}`,"color:#b8734f;font-weight:bold;"),r.forEach(i=>{console.warn(`• ${i.path}
541  raison: ${i.reason}
542  valeur:`,i.value)}),console.groupEnd())}const fre=1,hre="028c8467-87cd-4793-90ff-4ac1d866ff22",gre="fd0f461d-ba20-49bf-aa3f-916d3becc021",vre="/__l5e/assets-v1/028c8467-87cd-4793-90ff-4ac1d866ff22/logo-chal-full.png",yre="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/028c8467-87cd-4793-90ff-4ac1d866ff22/logo-chal-full.png",bre="logo-chal-full.png",xre=96673,wre="image/png",qre="2026-06-05T22:36:51Z",Sre={version:fre,asset_id:hre,project_id:gre,url:vre,r2_key:yre,original_filename:bre,size:xre,content_type:wre,created_at:qre},Are={sm:"h-8 md:h-9",md:"h-10 md:h-12",lg:"h-14 md:h-16 lg:h-20",xl:"h-20 md:h-24 lg:h-28"};function z2({variant:e="light",size:t="md",alt:n="CHAL·CONSULTING IA — Conseil, formation & IA en logistique opérationnelle",className:r=""}){const i=Are[t],s=d.jsx("img",{src:Sre.url,alt:n,className:`${i} w-auto max-w-full object-contain block select-none`,draggable:!1});return e==="dark"?d.jsx("span",{className:`inline-flex items-center justify-center bg-white rounded-md px-4 py-2 ${r}`,children:s}):d.jsx("span",{className:`inline-flex items-center min-w-0 max-w-full overflow-hidden ${r}`,children:s})}const B2=[{name:"Méthode F.L.U.X™",items:[{name:"Vue d'ensemble",href:"/methode"},{name:"Phase F — Fiabiliser",href:"/methode/fiabiliser"},{name:"Phase L — Lire",href:"/methode/lire"},{name:"Phase U — Unifier",href:"/methode/unifier"},{name:"Phase X — eXécuter",href:"/methode/executer"},{name:"Résultats Terrain",href:"/resultats"}]},{name:"Conseil",items:[{name:"Vue d'ensemble",href:"/services"},{name:"Diagnostic Terrain",href:"/services/diagnostic"},{name:"Accompagnement Opérationnel",href:"/services/accompagnement"},{name:"Management de Transition",href:"/services/transition"},{name:"Direction Fractionnée",href:"/services/direction-fractionnee"}]},{name:"Formation",items:[{name:"Programmes F.L.U.X™",href:"/formation"},{name:"Logistique Responsable",href:"/formation/logistique-responsable"},{name:"IA pour Managers",href:"/formation/ia-managers"},{name:"Optimisation Bas Carbone",href:"/formation/bas-carbone"},{name:"Formats & Tarifs",href:"/formation/tarifs"},{name:"Écoles & centres de formation",href:"/formation/ecoles"},{name:"Partenariat Rainer School",href:"/partenariat-rainer-school"}]},{name:"IA & Supply Chain",items:[{name:"IA opérationnelle",href:"/ia-operationnelle"},{name:"Offre IA & développement",href:"/ia-supply-chain"}]}
542,{name:"Analyses",items:[{name:"Analyses & Outils Terrain",href:"/analyses-outils"},{name:"Articles & Retours d'Expérience",href:"/analyses-outils#articles"},{name:"Carte Interactive Entrepôt",href:"/carte-entrepot"},{name:"Simulateur F.L.U.X.™",href:"/simulateur-flux"},{name:"Simulateur ROI Logistique",href:"/simulateur-roi"},{name:"Diagnostic IA Logistique",href:"/diagnostic-ia"},{name:"Glossaire Entrepôt",href:"/ressources/glossaire"}]},{name:"Tarifs",href:"/tarifs"},{name:"Contact",href:"/contact"}],dpe={"/methode":{label:"Méthode F.L.U.X™"},"/methode/fiabiliser":{label:"Phase F — Fiabiliser",parent:"/methode",parentLabel:"Méthode F.L.U.X™"},"/methode/lire":{label:"Phase L — Lire",parent:"/methode",parentLabel:"Méthode F.L.U.X™"},"/methode/unifier":{label:"Phase U — Unifier",parent:"/methode",parentLabel:"Méthode F.L.U.X™"},"/methode/executer":{label:"Phase X — eXécuter",parent:"/methode",parentLabel:"Méthode F.L.U.X™"},"/resultats":{label:"Résultats Terrain"},"/services":{label:"Services"},"/services/diagnostic":{label:"Diagnostic Terrain",parent:"/services",parentLabel:"Services"},"/services/accompagnement":{label:"Accompagnement Opérationnel",parent:"/services",parentLabel:"Services"},"/services/transition":{label:"Management de Transition",parent:"/services",parentLabel:"Services"},"/services/direction-fractionnee":{label:"Direction Fractionnée",parent:"/services",parentLabel:"Services"},"/ia-operationnelle":{label:"IA Opérationnelle",parent:"/services",parentLabel:"Services"},"/ia-supply-chain":{label:"IA & Supply Chain"},"/partenariat-rainer-school":{label:"Partenariat Rainer School",parent:"/formation",parentLabel:"Formation"},"/formation":{label:"Formation"},"/formation/logistique-responsable":{label:"Logistique Responsable",parent:"/formation",parentLabel:"Formation"},"/formation/ia-managers":{label:"IA pour Managers",parent:"/formation",parentLabel:"Formation"},"/formation/bas-carbone":{label:"Optimisation Bas Carbone",parent:"/formation",parentLabel:"Formation"},"/formation/tarifs":{label:"Formats & Tarifs",parent:"/formation",parentLabel:"Formation"},"/formation/ecoles":{label:"Écoles & centres de formation",parent:"/formation",parentLabel:"Formation"},"/diagnostic-ia":{label:"Diagnostic IA Logistique",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/analyses-outils":{label:"Analyses & Outils Terrain"},"/carte-entrepot":{label:"Carte Interactive Entrepôt",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/ressources/glossaire":{label:"Glossaire Entrepôt",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/qui-sommes-nous":{label:"Qui sommes-nous ?"},"/engagements":{label:"Engagements",parent:"/qui-sommes-nous",parentLabel:"À propos"},"/tarifs":{label:"Tarifs"},"/simulateur-roi":{label:"Simulateur ROI Logistique",parent:"/services",parentLabel:"Services"},"/contact":{label:"Contact"},"/carte":{label:"Carte de visite",parent:"/qui-sommes-nous",parentLabel:"À propos"},"/mentions-legales":{label:"Mentions légales"},"/lab":{label:"Lab IA",parent:void 0,parentLabel:void 0},"/methodologie-flux-warehouse":{label:"Méthode F.L.U.X™"},"/ia-operationnelle-entrepot":{label:"IA Opérationnelle",parent:"/services",parentLabel:"Services"},"/formation-logistique":{label:"Formation"},"/consultant-logistique-chal-michel":{label:"Qui sommes-nous ?"},"/actualites-logistique-ia":{label:"Analyses & Outils Terrain"},"/contact-consultant-logistique":{label:"Contact"},"/diagnostic-ia-logistique":{label:"Diagnostic IA Logistique"},"/blog/wms-go-live-7-cercles-enfer-logistique":{label:"WMS Go-Live : les 7 cercles",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/ia-logistique-realite-terrain-2025":{label:"IA logistique : réalité terrain 2025",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/audit-logistique-protocole-terrain-1-journee":{label:"Audit logistique en 1 journée",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/cold-chain-gdp-logistique-pharmaceutique":{label:"Cold Chain & GDP pharmaceutique",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/analyser-flux-entrepot-methode-complete":{label:"Analyser les flux d'un entrepôt",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/faut-il-automatiser-son-entrepot-ou-mieux-le-piloter":{label:"Automatiser ou mieux piloter ?",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/ressources/articles/metiers-entrepot-2026":{label:"Métiers Entrepôt 2026",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/ressources/articles/mars-2026-logistique":{label:"Veille Mars 2026",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/entrepot-sature-gagner-place-sans-demenager":{label:"Entrepôt saturé",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/excel-vs-wms-automatiser-gestion-stock-pme":{label:"Excel vs WMS",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/lean-logistics-gaspillages-marge-pme":{label:"Lean Logistics",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"},"/blog/decarbonation-transport-logistique-ormuz":{label:"Décarbonation transport & Ormuz",parent:"/analyses-outils",parentLabel:"Analyses & Outils Terrain"}};function Ere({group:e,isScrolled:t}){var u;const[n,r]=E.useState(!1),i=E.useRef(),s=Bo(),a=(u=e.items)==null?void 0:u.some(c=>
542s.pathname===c.href),o=()=>{clearTimeout(i.current),r(!0)},l=()=>{i.current=setTimeout(()=>r(!1),200)};return E.useEffect(()=>()=>clearTimeout(i.current),[]),e.items?d.jsxs("div",{className:"relative",onMouseEnter:o,onMouseLeave:l,children:[d.jsxs("button",{className:`flex items-center gap-1 text-sm font-medium transition-colors animated-underline ${t?"text-muted-foreground hover:text-foreground":"text-white hover:text-white [text-shadow:_1px_1px_6px_rgba(0,0,0,0.8)]"} ${a?"text-accent":""}`,onClick:()=>r(!n),"aria-expanded":n,"aria-haspopup":"true",children:[e.name,d.jsx(_f,{className:`w-3 h-3 transition-transform ${n?"rotate-180":""}`})]}),n&&d.jsx("div",{className:"absolute top-full left-0 pt-2 z-50",onMouseEnter:o,onMouseLeave:l,children:d.jsx("div",{className:"bg-popover border border-border rounded-lg shadow-lg py-2 min-w-[240px]",children:e.items.map(c=>d.jsx(Ke,{to:c.href,onClick:()=>r(!1),className:`block px-4 py-2.5 text-sm transition-colors hover:bg-muted ${s.pathname===c.href?"text-accent font-medium":"text-foreground"}`,children:c.name},c.href))})})]}):d.jsx(Ke,{to:e.href,className:`text-sm font-medium transition-colors animated-underline ${t?"text-muted-foreground hover:text-foreground":"text-white hover:text-white [text-shadow:_1px_1px_6px_rgba(0,0,0,0.8)]"} ${s.pathname===e.href?"text-accent":""}`,children:e.name})}function _re({isOpen:e,onClose:t}){const[n,r]=E.useState(null),i=Bo();return d.jsx(Wl,{children:e&&d.jsxs(d.Fragment,{children:[d.jsx(Gr.div,{initial:{opacity:0}
542,animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-background/95 backdrop-blur-md z-[9998] lg:hidden",onClick:t}),d.jsx(Gr.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},className:"fixed inset-0 z-[9999] lg:hidden bg-background pt-[140px] md:pt-[150px] overflow-y-auto",children:d.jsxs("div",{className:"section-container py-6",children:[d.jsx("nav",{className:"flex flex-col space-y-1",children:B2.map((s,a)=>d.jsx(Gr.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:a*.04},children:s.items?d.jsxs("div",{children:[d.jsxs("button",{onClick:()=>r(n===s.name?null:s.name),className:"flex items-center justify-between w-full px-4 py-3 rounded-lg text-base font-medium text-foreground hover:bg-muted transition-all",children:[s.name,d.jsx(_f,{className:`w-4 h-4 transition-transform ${n===s.name?"rotate-180":""}`})]}),d.jsx(Wl,{children:n===s.name&&d.jsx(Gr.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"overflow-hidden",children:d.jsx("div",{className:"pl-4 py-1 space-y-0.5",children:s.items.map(o=>d.jsx(Ke,{to:o.href,onClick:t,className:`block px-4 py-2.5 rounded-lg text-sm transition-colors ${i.pathname===o.href?"bg-accent/10 text-accent font-medium":"text-muted-foreground hover:bg-muted hover:text-foreground"}`,children:o.name},o.href))})})})]}):d.jsx(Ke,{to:s.href,onClick:t,className:`flex items-center gap-3 px-4 py-3 rounded-lg text-base font-medium transition-all ${i.pathname===s.href?"bg-accent/10 text-accent":"text-foreground hover:bg-muted"}`,children:s.name})},s.name))}),d.jsx("div",{className:"mt-6 pt-6 border-t border-border flex justify-center",children:d.jsx(xr,{asChild:!0,size:"default",children:d.jsx(Ke,{to:"/contact",children:"Un défi logistique ? Parlons-en"})})})]})})]})})}function kre({value:e,onChange:t,autoFocus:n=!1,className:r,placeholder:i="Rechercher articles, ressources, services…"}){const s=E.useRef(null);return E.useEffect(()=>{n&&s.current&&s.current.focus()},[n]),d.jsxs("div",{className:bt("relative group",r),children:[d.jsx(fp,{size:18,strokeWidth:1.5,className:"absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground group-focus-within:text-accent transition-colors pointer-events-none"}),d.jsx("input",{ref:s,type:"text",value:e,onChange:a=>t(a.target.value),placeholder:i,className:bt("w-full h-12 pl-11 pr-10 rounded-lg","bg-background border border-border","text-sm text-foreground placeholder:text-muted-foreground","outline-none transition-all duration-200","focus:border-accent focus:ring-2 focus:ring-accent/20","md:text-sm"),"aria-label":"Rechercher sur le site"}),e.length>0&&d.jsx("button",{onClick:()=>t(""),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors","aria-label":"Effacer la recherche",children:d.jsx(Ho,{size:16,strokeWidth:1.5})})]})}const Cre={article:{label:"Article",bg:"bg-accent",text:"text-accent-foreground",icon:D1},service:{label:"Service",bg:"bg-[hsl(var(--navy))]",text:"text-white",icon:R1},ressource:{label:"Ressource",bg:"bg-[hsl(160_50%_40%)]",text:"text-white",icon:Ef},formation:{label:"Formation",bg:"bg-[hsl(210_60%_50%)]",text:"text-white",icon:F1},outil:{label:"Outil",bg:"bg-muted-foreground",text:"text-white",icon:P_},page:{label:"Page",bg:"bg-muted-foreground/60",text:"text-white",icon:kf}};function jre(e,t){return e.length<=t?e:e.slice(0,t).replace(/\s+\S*$/,"")+"…"}function Pre({text:e,query:t}){if(!t.trim())return d.jsx(d.Fragment,{children:e});const n=t.trim().split(/\s+/).filter(Boolean),r=new RegExp(`(${n.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})`,"gi"),i=e.split(r);return d.jsx(d.Fragment,{children:i.map((s,a)=>r.test(s)?d.jsx("mark",{className:"bg-accent/20 text-accent font-semibold rounded-sm px-0.5",children:s},a):d.jsx("span",{children:s},a))})}function Tre({results:e,query:t,isSearching:n,onSelect:r}){return n?d.jsx("div",{className:"py-6 space-y-3 px-2",children:[1,2,3].map(i=>d.jsxs("div",{className:"animate-pulse flex gap-3 p-3",children:[d.jsx("div",{className:"w-16 h-5 bg-muted rounded-full shrink-0"}),d.jsxs("div",{className:"flex-1 space-y-2",children:[d.jsx("div",{className:"h-4 bg-muted rounded w-3/4"}),d.jsx("div",{className:"h-3 bg-muted rounded w-full"})]})]},i))}):t.trim().length>0&&e.length===0?d.jsxs("div",{className:"py-12 text-center",children:[d.jsx("p",{className:"text-muted-foreground text-sm",children:"Aucun résultat pour cette recherche"}
542),d.jsx("p",{className:"text-muted-foreground/60 text-xs mt-1",children:"Essayez avec d'autres termes : WMS, picking, flux, diagnostic…"})]}):t.trim().length===0?null:d.jsxs("div",{className:"py-2 max-h-[60vh] overflow-y-auto",children:[d.jsxs("p",{className:"px-4 py-2 text-[11px] uppercase tracking-wider text-muted-foreground font-medium",children:[e.length," résultat",e.length>1?"s":""]}),d.jsx("ul",{role:"list",className:"space-y-1",children:e.map(i=>{const s=Cre[i.type],a=s.icon;return d.jsx("li",{children:d.jsxs(Ke,{to:i.url,onClick:r,className:bt("flex items-start gap-3 px-4 py-3 rounded-lg","hover:bg-muted/60 transition-colors duration-150","focus:outline-none focus:bg-muted/60"),children:[d.jsxs("span",{className:bt("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-semibold shrink-0 mt-0.5",s.bg,s.text),children:[d.jsx(a,{size:10,strokeWidth:2}),s.label]}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("h4",{className:"text-sm font-semibold text-foreground leading-tight",children:d.jsx(Pre,{text:i.title,query:t})}),d.jsx("p",{className:"text-xs text-muted-foreground mt-1 leading-relaxed",children:jre(i.excerpt,120)}),i.readingTime&&d.jsxs("span",{className:"text-[10px] text-muted-foreground/60 mt-1 inline-block",children:[i.readingTime," min de lecture"]})]})]})},i.id)})})]})}const Ire="/assets/cover-ecart-pme-grands-groupes-CkoSd6B1.jpg",Ore="/assets/cover-inde-boom-entrepots-CxPpBFML.jpg",Lre="/assets/cover-penurie-competences-logistique-formation-bbe1ZWRc.jpg",Mre="/assets/cover-pologne-entrepots-automatises-BpREbjII.jpg",Nre="/assets/cover-cross-docking-CZhfoDZR.jpg",Rre="/assets/cover-lean-logistics-CQ1m8HTh.jpg",$re="/assets/cover-excel-vs-wms-DeVzv419.jpg",Dre="/assets/cover-entrepot-sature-Dc2DhQK3.jpg",Fre="/assets/cover-metiers-entrepot-2026-DF2wfbb9.jpg",$x="/assets/cover-mars-2026-logistique-CdZ1qiMv.jpg",Ure="/assets/cover-automatiser-ou-piloter-BFYoxSd7.png",zre="/assets/cover-cold-chain-gdp-DM8DcW11.png",Bre="/assets/cover-audit-logistique-protocole-DPjhH1aN.png",Wre="/assets/cover-ia-logistique-realite-2025-BwiUTu93.png",Hre="/assets/cover-wms-go-live-7-cercles-D3wShd60.png",Vre="/assets/cover-cas-terrain-ia-chef-equipe-DJ5rBvdv.png",Gre="/assets/cover-checklist-inventaire-B6nk3GX6.png",Kre="/assets/cover-checklist-location-entrepot-GWDFjp-d.png",Xre="/assets/cover-choisir-wms-FR-ZpkFu.png",Dx="/assets/cover-analyser-flux-entrepot-C49ijzWc.png",Qre="/assets/cover-cout-logistique-I6OW4_td.png",Jre="/assets/cover-erreurs-flux-gmp-BpyUBHm5.png",Yre="/assets/cover-chaos-structure-C0mnD2Gc.png",Zre="/assets/cover-pharma-tracabilite-BF-9g6SU.png",eie="/assets/cover-journee-entrepot-DjMxj0hl.png",tie="/assets/cover-10-kpi-logistiques-9leT3s0c.png",nie="/assets/cover-amazon-pme-DFDRtiCv.png",rie="/assets/cover-consultant-metier-DOxHIyF_.png",iie="/assets/cover-optimiser-entrepot-B6_Y7XPI.png",sie="/assets/cover-magasinier-cariste-DfPXDb8S.png",aie="/assets/cover-supply-chain-logistique-Db42HHMH.png",oie="/assets/cover-ia-bilan-2025-DeKIVTmW.png",lie="/assets/cover-ia-bilan-2025-new-DTZJQcMO.png",uie="/assets/cover-manager-transition-D7Xm2HCU.png",cie="/assets/cover-ia-revele-failles-DRCmhrAQ.png",die="/assets/cover-retour-experience-B-ifDBpo.png",pie="/assets/cover-ia-entrepot-panorama-a3g2TBQx.png",mie="/assets/cover-fevrier-2026-CPfNA0EK.png",fie="/assets/cover-automatisation-lowcost-BqvkXqYt.png",hie="/assets/cover-preparation-commandes-mkBTPPg7.png",gie="/assets/cover-signaux-entrepot-CuTiXUMq.png",vie="/assets/cover-recruter-responsable-logistique-CU9UUQuc.png",yie="/assets/cover-contrat-prestataire-CodUW0yM.png",bie="/assets/cover-decarbonation-transport-ormuz-Co5t_2YG.jpg",xie="/assets/cover-guide-ia-logistique-2026-BtSgaEYc.jpg",wie="/assets/cover-sitl-2026-tendances-GOhF0vCF.jpg",qie="/assets/cover-slotting-entrepot-ByYEKinz.jpg",Sie="/assets/cover-transporteurs-logistique-pme-Dvh8xQZN.jpg",Aie="/assets/cover-ia-logistique-allemagne-BW4RA9Xc.jpg",Eie="/assets/cover-agent-quai-entrepot-DNQu3NMq.jpg",_ie="/assets/cover-robots-entrepot-japon-BU1gD2y0.jpg",kie="/assets/cover-ferrero-entrepot-cleon-DjwJsV31.jpg",Cie="/assets/cover-incendie-coupang-1sIrqdho.jpg",jie="/assets/cover-agent-quai-entrepot-DNQu3NMq.jpg",Pie="/assets/cover-tanger-med-maroc-BNGQWjz4.jpg",Tie="/assets/cover-ia-donnees-logistique-pme-BfLgBiei.jpg",Iie="/assets/cover-transporteurs-logistique-pme-Dvh8xQZN.jpg",Oie="/assets/cover-nearshoring-mexique-B0rDZosS.jpg",Lie="/assets/cover-ecommerce-chinois-logistique-Bq1PYAGR.jpg",Mie="/assets/cover-dubai-jafza-entrepots-kQWOaUZY.jpg",Nie="/assets/cover-formation-ia-logistique-ecart-BFwhH9wZ.jpg",Rie="/assets/cover-rendez-vous-quai-yard-management-DS_5x7n_.jpg",$ie="/assets/cover-afrique-sud-entrepots-ports-vkVDMwFM.jpg",Die="/assets/cover-wms-sous-exploite-etude-cas-mTyepr03.jpg",Fie="/assets/cover-cote-ivoire-port
542-abidjan-B2D0rpEs.jpg",Uie="/assets/cover-prologis-segro-immobilier-logistique-DbeahUQb.jpg",zie="/assets/cover-kenya-naivasha-corridor-afrique-est-DKKWhv8q.jpg",Bie="/assets/cover-rep-emballages-professionnels-entrepot-DWJjAu1g.jpg",Wie="/assets/cover-nearshoring-mexique-B0rDZosS.jpg",Hie="/assets/cover-kardex-madrigall-fusion-flux-Du-nge6z.jpg",Vie="/assets/cover-sunrock-photovoltaique-entrepots-DL2whJBZ.jpg",Gie="/assets/cover-turnover-formation-logistique-pme-B2LzbXro.jpg",Kie="/assets/cover-atelier-logistique-champs-elysees-B-5XrlAL.jpg",Xie="/assets/cover-gpe-saint-vulbas-entrepot-AQTlt2Po.jpg",Qie="/assets/cover-nearshoring-mexique-B0rDZosS.jpg",Jie="/assets/cover-gxo-exotec-guess-venlo-CLrJSXA4.jpg",Yie="/assets/cover-skechers-knapp-liege-Ce7nb0wd.jpg",Zie={"chal-michel-ou":{name:"Chal-Michel OU",role:"Consultant en logistique opérationnelle & transformation IA",bio:"15 ans sur le terrain logistique : Head of Logistics chez Cenexi, Responsable d'exploitation chez Saint-Gobain, Superviseur logistique chez Bio-Rad, et opérations chez Nike et IKEA. Diplômé TBS (Mastère Logistique & Achats). Lauréat du Réseau Entreprendre Autrement — une logistique performante qui reste humaine, éthique et responsable. Ultra-trailer et finisher de la Diagonale des Fous — la même rigueur, la même endurance, au service de vos opérations.",image:"/placeholder.svg",linkedinUrl:"https://www.linkedin.com/in/chalmichelou/"}},Ri=[{id:"skechers-knapp-liege-belgique-automatisation-pme-2026",slug:"skechers-knapp-liege-belgique-automatisation-pme-2026",title:"Chez Skechers, l'entrepôt de Liège est fini depuis août — l'automatisation, elle, tournera à plein régime en 2030",subtitle:"Décryptage international — le nouveau centre de distribution européen de 230 000 m² de Skechers, près de Liège, est construit, mais son automatisation KNAPP ne sera à plein régime qu'en 2030",chapo:"Le 3 août 2026, Voxlog confirme l'achèvement du centre de distribution européen de Skechers près de Liège, en Belgique : 230 000 m², 3,3 millions d'emplacements. Mais son automatisation KNAPP ne tournera à plein régime qu'à la mi-2030. Ce que ce calendrier à quatre ans change pour les PME.",coverImage:Yie,coverImageCaption:"Rangées de boîtes à chaussures empilées sur des rayonnages d'entrepôt, illustrant le centre de distribution automatisé Skechers-KNAPP près de Liège en Belgique, CHAL·CONSULTING IA",content:"",publishDate:"2026-10-02",publishTime:"07:00",readTime:6,category:["Décryptage","Automatisation entrepôt"],tags:["Skechers KNAPP Liège","automatisation entrepôt Belgique","centre de distribution européen chaussures","planification capacité logistique PME","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le centre de distribution Skechers de 230 000 m² près de Liège est construit, mais son automatisation KNAPP ne sera à plein régime qu'en 2030. La leçon de calendrier pour les PME logistiques.",embedType:"markdown",customRoute:"/blog/skechers-knapp-liege-belgique-automatisation-pme-2026"},{id:"gxo-exotec-guess-venlo-pays-bas-pme-2026",slug:"gxo-exotec-guess-venlo-pays-bas-pme-2026",title:"Chez GXO, les 127 robots de Guess aux Pays-Bas sont l'aboutissement de quinze ans — pas leur point de départ",subtitle:"Décryptage international — GXO et Exotec déploient une cellule robotisée dédiée à Guess sur leur site de Venlo, aux Pays-Bas, après quinze ans de partenariat",chapo:"Le 15 septembre 2026, Voxlog révèle que GXO a mis en service, avec Exotec, une installation de 127 robots Skypod dédiée à la marque Guess sur son site de Venlo aux Pays-Bas — dernière étape d'un partenariat vieux de quinze ans. Ce que cette patience change pour les PME logistiques.",coverImage:Jie,coverImageCaption:"Allée d'entrepôt automatisé avec rayonnages métalliques de grande hauteur remplis de boîtes empilées, illustrant le système robotisé goods-to-person déployé par GXO et Exotec pour Guess à Venlo aux Pays-Bas, CHAL·CONSULTING IA",content:"",publishDate:"2026-09-25",publishTime:"07:00",readTime:6,category:["Actualité","Automatisation entrepôt"],tags:["GXO Exotec Guess Venlo","automatisation entrepôt mode Pays-Bas","robots Skypod goods-to-person","PME logistique automatisation","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"GXO et Exotec déploient 127 robots Skypod pour Guess aux Pays-Bas, après 15 ans de partenariat. La leçon de patience pour les PME logistiques françaises.",embedType:"markdown",customRoute:"/blog/gxo-exotec-guess-venlo-pays-bas-pme-2026"},{id:"valois-emballages-bext-ws-infflux-wms-multisite-pme-2026",slug:"valois-emballages-bext-ws-infflux-wms-multisite-pme-2026",title:"Valois Emballages a eu trois WMS différents pendant vingt-deux ans — il n'en reste plus qu'un",subtitle:"Actualité — comment le fabricant d'emballages a mis fin à deux décennies de personnalisations locales de son WMS Bext WS, sur ses trois entrepôts",chapo:"Le 15 septembre 2026, Voxlog et Stratég
542ies Logistique détaillent comment Valois Emballages a standardisé son WMS Bext WS (Infflux) sur ses trois entrepôts (59 000 m²), mettant fin à des années de développements spécifiques site par site. Ce que cette discipline change pour les PME multi-sites.",coverImage:Qie,coverImageCaption:"Chariot élévateur circulant dans une allée d'entrepôt logistique entre des rayonnages de palettes, illustrant la standardisation du WMS multi-sites de Valois Emballages, CHAL·CONSULTING IA",content:"",publishDate:"2026-09-18",publishTime:"07:00",readTime:6,category:["Actualité","Gouvernance logicielle"],tags:["Valois Emballages Bext WS Infflux","WMS multi-site PME","standardisation logiciel entrepôt","gouvernance IT logistique","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Valois Emballages a standardisé son WMS Bext WS sur ses trois entrepôts après 22 ans de personnalisations locales site par site. La leçon pour les PME qui grandissent sur plusieurs sites.",embedType:"markdown",customRoute:"/blog/valois-emballages-bext-ws-infflux-wms-multisite-pme-2026"},{id:"gpe-saint-vulbas-hardis-transitic-entrepot-pme-2026",slug:"gpe-saint-vulbas-hardis-transitic-entrepot-pme-2026",title:"GPE (Sergent Major, DPAM, Natalys) : cinq ans pour faire passer un entrepôt de 95 % à 99,96 % de taux de service",subtitle:"Actualité — comment GPE a multiplié par quatre sa capacité e-commerce à Saint-Vulbas, avant d'ajouter un module de vision par IA",chapo:"Le 9 septembre 2026, Stratégies Logistique et Voxlog détaillent cinq ans de refonte logistique chez GPE (Sergent Major, DPAM, Natalys) : WMS Hardis, mécanisation Transitic, TMS TDI. Taux de service à 99,96 %, e-commerce multiplié par quatre — avant l'arrivée d'un module de vision par IA fin septembre.",coverImage:Xie,coverImageCaption:"Convoyeur industriel transportant des colis dans un grand entrepôt logistique, illustrant la mécanisation des flux déployée par GPE (Sergent Major, DPAM, Natalys) à Saint-Vulbas avec Transitic, CHAL·CONSULTING IA",content:"",publishDate:"2026-09-11",publishTime:"07:00",readTime:6,category:["Actualité","Automatisation entrepôt"],tags:["GPE Sergent Major DPAM Natalys","Hardis WMS entrepôt","Transitic mécanisation entrepôt","TDI TMS transport","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"GPE (Sergent Major, DPAM, Natalys) a mis cinq ans à fiabiliser son entrepôt de Saint-Vulbas avant d'y ajouter l'IA. Taux de service à 99,96 %, e-commerce multiplié par quatre. La leçon pour les PME.",embedType:"markdown",customRoute:"/blog/gpe-saint-vulbas-hardis-transitic-entrepot-pme-2026"},{id:"atelier-logistique-champs-elysees-deret-pme-france-2026",slug:"atelier-logistique-champs-elysees-deret-pme-france-2026",title:"Sous les Champs-Élysées, un entrepôt qui livre en dix minutes : la leçon de fiabilité de l'Atelier Logistique pour les PME",subtitle:"Actualité — Deret devient opérateur exclusif de l'entrepôt souterrain à neuf étages sous les Champs-Élysées",chapo:"Fin juillet 2026, Deret devient opérateur exclusif de l'Atelier Logistique, un entrepôt souterrain de neuf étages sous les Champs-Élysées avec des départs toutes les cinq à dix minutes. Ce que cette cadence extrême enseigne aux PME sur la fiabilité des flux.",coverImage:Kie,coverImageCaption:"Vélo-cargo utilisé pour une livraison urbaine en centre-ville, illustrant le modèle de livraison du dernier kilomètre déployé par l'Atelier Logistique sous les Champs-Élysées, CHAL·CONSULTING IA",content:"",publishDate:"2026-09-04",publishTime:"07:00",readTime:6,category:["Actualité","Logistique urbaine"],tags:["Atelier Logistique Champs-Élysées","Deret logistique urbaine","hôtel logistique souterrain Paris","vélo-cargo livraison dernier kilomètre","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Deret devient opérateur exclusif de l'Atelier Logistique, entrepôt souterrain de neuf étages sous les Champs-Élysées avec des départs toutes les cinq minutes. La leçon de fiabilité pour les PME.",embedType:"markdown",customRoute:"/blog/atelier-logistique-champs-elysees-deret-pme-france-2026"},{id:"recrutement-turnover-formation-logistique-pme-france-2026",slug:"recrutement-turnover-formation-logistique-pme-france-2026",title:"94 000 postes à pourvoir dans la logistique en 2026 : le vrai problème commence après l'embauche",subtitle:"Focus formation — France Travail annonce 94 000 recrutements en logistique en 2026, mais le vrai coût se joue dans les 90 premiers jours après l'embauche",chapo:"France Travail annonce 94 000 recrutements dans le transport et la logistique en 2026. Mais 34 % des salariés du secteur ont changé d'employeur en 2025 (Hays). Le vrai problème n'est pas de recruter, c'est ce qui se joue dans les 90 premiers jours.",coverImage:Gie,coverImageCaption:"Deux o
542pératrices logistiques discutent dans une allée d'entrepôt, l'une tenant une liste de vérification — illustration de l'accompagnement et de la formation des nouveaux arrivants en entrepôt, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-28",publishTime:"07:00",readTime:6,category:["Focus formation","Recrutement & RH"],tags:["recrutement logistique 2026","turnover entrepôt PME","formation logistique France","onboarding opérateur entrepôt","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"France Travail annonce 94 000 recrutements en logistique en 2026, mais un tiers des salariés change d'employeur chaque année. Ce qui se joue vraiment dans les 90 premiers jours d'un nouvel opérateur.",embedType:"markdown",customRoute:"/ressources/articles/recrutement-turnover-formation-logistique-pme-france-2026"},{id:"sunrock-photovoltaique-entrepots-pme-france-2026",slug:"sunrock-photovoltaique-entrepots-pme-france-2026",title:"Sunrock installe 12 MW de solaire sur des entrepôts français : ce que ça change pour les PME locataires",subtitle:"Actualité — Sunrock construit quatre centrales solaires sur des entrepôts français, l'autoconsommation collective entre dans les baux logistiques",chapo:"Sunrock construit quatre centrales photovoltaïques sur des entrepôts logistiques français, dont une de 8,3 MWc à Valence. Le modèle retenu, l'autoconsommation collective, promet une facture plus prévisible aux locataires. Ce qu'une PME doit vérifier avant d'y compter.",coverImage:Vie,coverImageCaption:"Vue aérienne d'un toit d'entrepôt industriel entièrement recouvert de panneaux photovoltaïques — illustration des centrales solaires Sunrock sur des entrepôts logistiques français, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-21",publishTime:"07:00",readTime:6,category:["Actualité","Immobilier logistique"],tags:["Sunrock photovoltaïque entrepôt","autoconsommation collective PME","immobilier logistique énergie France","solaire entrepôt logistique 2026","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Sunrock construit quatre centrales solaires sur des entrepôts français en autoconsommation collective. Ce qu'une PME locataire doit vérifier avant de compter sur des économies.",embedType:"markdown",customRoute:"/blog/sunrock-photovoltaique-entrepots-pme-france-2026"},{id:"kardex-madrigall-automatisation-fusion-flux-pme-2026",slug:"kardex-madrigall-automatisation-fusion-flux-pme-2026",title:"Madrigall automatise sa distribution avec Kardex : le vrai risque n'est pas le robot, c'est la fusion des flux",subtitle:"Tribune — ce que le chantier Kardex/Madrigall révèle sur l'automatisation après une fusion logistique",chapo:"Kardex va automatiser le futur centre de distribution du groupe Madrigall (Gallimard, Flammarion) avec 300 robots et 300 000 bacs de stockage. Mais le projet doit surtout regrouper deux distributeurs historiquement distincts, Sodis et Union Distribution. Ce que cette fusion révèle sur le vrai risque de l'automatisation.",coverImage:Hie,coverImageCaption:"Rayonnages métalliques d'un entrepôt logistique moderne avec un préparateur de commandes au loin — illustration du chantier d'automatisation et de fusion des flux Kardex/Madrigall, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-14",publishTime:"07:00",readTime:5,category:["Automatisation","Opinion"],tags:["Kardex Madrigall automatisation","AutoStore entrepôt France","fusion flux logistique PME","consolidation distribution logistique","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Kardex va automatiser le futur centre de distribution du groupe Madrigall avec 300 robots. Mais le vrai enjeu est ailleurs : regrouper deux distributeurs historiquement distincts, Sodis et Union Distribution, dans un seul système.",embedType:"markdown",customRoute:"/blog/kardex-madrigall-automatisation-fusion-flux-pme-2026"},{id:"senegal-ifria-hub-froid-diamniadio-pme-france-2026",slug:"senegal-ifria-hub-froid-diamniadio-pme-france-2026",title:"Sénégal : IFRIA lance un hub frigorifique de 10 000 palettes à Diamniadio, la chaîne du froid change d'échelle en Afrique de l'Ouest",subtitle:"Décryptage international — Sénégal : ce que le hub frigorifique IFRIA de Diamniadio change pour les PME françaises en Afrique de l'Ouest",chapo:"Le 16 juillet 2026, l'opérateur panafricain IFRIA a posé la première pierre d'un hub frigorifique de 10 000 palettes à Diamniadio, au Sénégal. Un investissement de 11,5 milliards de FCFA destiné à réduire des pertes post-récolte estimées à 30-40 %. Ce que cette montée en gamme du froid ouest-africain change pour les PME françaises qui achètent ou vendent dans la zone.",coverImage:Wie,coverImageCaption:"Chariot élévateur circulant dans un entrepôt logistique entre des rangées de palettes — illustration du hub frigorifique IFRIA en construction à Diamniadio, Sénégal, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-13",publishTime:"07:00",readTime:6,category:["International","Chaîne du froid"],tags:["Sénégal logistique froid 2026","IFRIA Diamniadio hub frigorifique","chaîne du froid Afrique de l'Ouest","PME France export Sénégal","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"IFRIA a posé la première pierre d'un hub frigorifique de 10 000 palettes à Diamniadio, au Sénégal, pour réduire des pertes post-récolte estimées à 30-40 %. Ce que ça change pour les PME françaises en Afrique de l'Ouest.",embedType:"markdown",customRoute:"/blog/senegal-ifria-hub-froid-diamniadio-pme-france-2026"},{id:"rep-emballages-professionnels-pme-logistique-france-2026",slug:"rep-emballages-professionnels-pme-logistique-france-2026",title:"REP Emballages Professionnels : la nouvelle obligation qui pèse sur les PME logistiques françaises depuis janvier",subtitle:"Décryptage réglementaire — REP Emballages Professionnels : ce que la nouvelle filière change pour les PME logistiques françaises",chapo:"Depuis le 1er janvier 2026, une nouvelle filière REP oblige les PME françaises qui utilisent des emballages professionnels — cartons, palettes, films — à contribuer financièrement et à mesurer leurs flux. Beaucoup de dirigeants n'en ont pas encore pris la mesure. Ce qui change, ce que ça coûte, et comment vérifier si vous êtes concerné.",coverImage:Bie,coverImageCaption:"Chariot élévateur entre des rayonnages chargés de cartons et palettes en entrepôt — illustration de la nouvelle REP Emballages Professionnels, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-12",publishTime:"07:00",readTime:6,category:["France","Réglementation logistique"],tags:["REP emballages professionnels 2026","éco-contribution PME logistique","loi AGEC réemploi emballages","Citeo Pro éco-organisme","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Depuis janvier 2026, la filière REP Emballages Professionnels oblige les PME françaises à contribuer et à mesurer leurs flux de cartons, palettes et films. Ce qui change, ce que ça coûte, et comment vérifier si vous êtes concerné.",embedType:"markdown",customRoute:"/blog/rep-emballages-professionnels-pme-logistique-france-2026"},{id:"kenya-naivasha-corridor-logistique-afrique-est-pme-france-2026",slug:"kenya-naivasha-corridor-logistique-afrique-est-pme-france-2026",title:"Kenya : le port sec de Naivasha, censé désengorger Mombasa, ne tourne qu'à 19 % de sa capacité",subtitle:"Décryptage international — Kenya : ce que le sous-usage du corridor de Naivasha révèle pour les PME françaises en Afrique de l'Est",chapo:"Le port sec de Naivasha devait désengorger Mombasa. Six ans après sa mise en service, il ne tourne qu'à 19 % de sa capacité — et Nairobi vient d'ordonner, plutôt que de proposer, son utilisation pour le fret régional. Ce que cet écart entre capacité installée et usage réel révèle pour les PME françaises actives en Afrique de l'Est.",coverImage:zie,coverImageCaption:"Train chargé de conteneurs sur rail — illustration du corridor ferroviaire reliant le port de Mombasa au port sec de Naivasha, au Kenya, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-11",publishTime:"07:00",readTime:6,category:["International","Performance Entrepôt"],tags:["Kenya logistique 2026","port de Mombasa congestion","Naivasha ICD corridor Afrique de l'Est","PME France export Afrique de l'Est","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le port sec de Naivasha ne tourne qu'à 19 % de sa capacité six ans après sa mise en service. Décryptage de cet écart entre capacité installée et usage réel — et de ce qu'il révèle pour les PME françaises en Afrique de l'Est.",embedType:"markdown",customRoute:"/blog/kenya-naivasha-corridor-logistique-afrique-est-pme-france-2026"},{id:"prologis-segro-rachat-entrepots-pme-france-2026",slug:"prologis-segro-rachat-entrepots-pme-france-2026",title:"Prologis rachète Segro pour 16 milliards d'euros : ce que la concentration de l'immobilier logistique change pour les PME françaises",subtitle:"Actualité — Prologis rachète Segro pour 16 milliards d'euros : ce que la concentration de l'immobilier logistique change pour les PME françaises",chapo:"Prologis, premier propriétaire d'entrepôts au monde, rachète son rival européen Segro pour plus de 16 milliards d'euros — sa présence en Europe bondit de près de 47 %. Une semaine après un autre rachat d'envergure (Logicor-EQT, 532 M€), le marché de l'immobilier logistique se concentre. Ce que ça change vraiment pour une PME française qui loue un entrepôt.",coverImage:Uie,coverImageCaption:"Intérieur d'un grand entrepôt logistique avec racks de stockage — illustration de la concentration de l'immobilier logistique en Europe, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-10",publishTime:"07:00",readTime:6,category:["France","Immobilier logistique"],tags:["Prologis Segro rachat 2026","immobilier logistique France","entrepôt PME bail commercial","consolidation foncières logistiques","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Prologis rachète Segro pour plus de 16 milliards d'euros et bondit de 47 % en Europe. Décryptage de cette vague de consolidation de l'immobilier logistique — et de ce qu'elle change pour les PME françaises locataires d'entrepôts.",embedType:"markdown",customRoute:"/blog/prologis-segro-rachat-entrepots-pme-france-2026"}
542,{id:"cote-ivoire-port-abidjan-hub-logistique-pme-france-2026",slug:"cote-ivoire-port-abidjan-hub-logistique-pme-france-2026",title:"Côte d'Ivoire : le port d'Abidjan bondit de 16 %, et devient la porte d'entrée logistique de l'Afrique de l'Ouest",subtitle:"Décryptage international — Côte d'Ivoire : ce que la croissance du port d'Abidjan et le plan à 175 milliards d'euros changent pour les PME françaises",chapo:"Le Port Autonome d'Abidjan a traité 46,6 millions de tonnes en 2025, en hausse de 16 %, porté par un corridor vers le Mali et le Burkina Faso qui bondit de 34 %. Un plan national à 175 milliards d'euros vise à faire de la Côte d'Ivoire le hub logistique de l'Afrique de l'Ouest. Ce que ce boom change vraiment pour les PME françaises qui exportent ou importent via la région.",coverImage:Fie,coverImageCaption:"Grue portuaire et conteneurs sur un terminal maritime — illustration de la croissance du trafic portuaire en Afrique de l'Ouest, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-09",publishTime:"07:00",readTime:7,category:["International","Performance Entrepôt"],tags:["Côte d'Ivoire logistique 2026","port d'Abidjan","hub logistique Afrique de l'Ouest","corridor Mali Burkina Faso","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le port d'Abidjan a traité 46,6 millions de tonnes en 2025 (+16 %), porté par un corridor vers le Mali et le Burkina Faso en hausse de 34 %. Décryptage de ce boom logistique ivoirien — et de ce qu'il change vraiment pour les PME françaises qui exportent vers l'Afrique de l'Ouest.",embedType:"markdown",customRoute:"/blog/cote-ivoire-port-abidjan-hub-logistique-pme-france-2026"},{id:"wms-sous-exploite-etude-cas-pme-2026",slug:"wms-sous-exploite-etude-cas-pme-2026",title:"Étude de cas : ce WMS à 380 000 € qu'une PME n'utilise qu'à 30 %, un an après le go-live",subtitle:"Étude de cas — diagnostic terrain avant le pic de fin d'année : pourquoi la sous-exploitation d'un WMS coûte plus cher qu'un mauvais éditeur",chapo:"Un an après un go-live à 380 000 €, cette PME familiale n'utilise que 30 % des fonctionnalités de son WMS — un schéma que confirment deux études indépendantes, Wavestone et Gartner. À six semaines du pic de fin d'année, le vrai problème n'était pas le logiciel. C'était l'ordre des priorités.",coverImage:Die,coverImageCaption:"Entrepôt logistique avec rayonnages de stockage et opérateur au travail en arrière-plan — illustration de la gestion des flux en entrepôt, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-08",publishTime:"07:00",readTime:7,category:["Étude de cas","Performance Entrepôt"],tags:["étude de cas WMS PME","sous-exploitation WMS","pic de fin d'année entrepôt","diagnostic WMS PME","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Un an après un go-live à 380 000 €, cette PME familiale n'utilise que 30 % des fonctionnalités de son WMS. Diagnostic terrain, chiffres Wavestone et Gartner, méthode F.L.U.X™ — six semaines avant le pic de fin d'année.",embedType:"markdown",customRoute:"/ressources/articles/wms-sous-exploite-etude-cas-pme-2026"},{id:"afrique-du-sud-boom-entrepots-ports-pme-france-2026",slug:"afrique-du-sud-boom-entrepots-ports-pme-france-2026",title:"Afrique du Sud : 305 millions de dollars d'entrepôts, et des ports qui sortent enfin de la crise",subtitle:"Décryptage international — Afrique du Sud, ce que le pari de 305 millions de dollars sur l'entreposage dit de la sortie de crise des ports",chapo:"Newlyn Group vient de lever 305 millions de dollars pour construire des entrepôts en Afrique du Sud, pile au moment où Transnet sort enfin de quinze ans de crise portuaire et ferroviaire. Le vrai chiffre derrière ce pari n'est pas celui de la faim en Afrique — c'est celui, mesuré, que coûte un flux logistique non fiabilisé.",coverImage:$ie,coverImageCaption:"Conteneurs empilés au port de Dar es Salaam, en Tanzanie — illustration de la logistique portuaire en Afrique subsaharienne, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-07",publishTime:"07:00",readTime:8,category:["International","Performance Entrepôt"],tags:["Afrique du Sud logistique 2026","Newlyn Group Absa","entrepôts privés Afrique","ports Transnet Durban","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Newlyn Group lève 305 millions de dollars pour bâtir des entrepôts en Afrique du Sud, alors que les ports sortent enfin de quinze ans de crise. Le vrai chiffre derrière ce pari n'est pas la faim en Afrique — c'est le coût mesuré d'un flux logistique non fiabilisé.",embedType:"markdown",customRoute:"/blog/afrique-du-sud-boom-entrepots-ports-pme-france-2026"},{id:"rendez-vous-quai-yard-management-entrepot-pme",slug:"rendez-vous-quai-yard-management-entrepot-pme",title:"Rendez-vous quai : l'angle mort de vos projets WMS et TMS",subtitle:"Méthode & Outils — pourquoi la gestion des créneaux de livraison reste le point aveugle des transformations logistiques en PME",chapo:"Un WMS qui optimise le picking, un TMS qui optimise les tournées — et les camions s'entassent encore devant les quais aux heures de pointe. Coûts chiffrés (ATRI, Dashdoc), diagnostic terrain et méthode pour fiabiliser le point de bascule que la plupart des projets logistiques de PME oublient.",coverImage:Rie,coverImageCaption:"Rangée de semi-remorques garées côte à côte dans une cour logistique, en attente de leur créneau de chargement, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-06",publishTime:"07:00",readTime:7,category:["Méthode & Outils","Performance Entrepôt"],tags:["gestion rendez-vous quai","yard management PME","WMS TMS entrepôt","attente camions logistique","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Un WMS qui optimise le picking, un TMS qui optimise les tournées — et les camions s'entassent encore devant les quais. Ce que coûte l'attente aux quais et comment la PME peut la résorber sans attendre un gros projet logiciel.",embedType:"markdown",customRoute:"/ressources/articles/rendez-vous-quai-yard-management-entrepot-pme"},{id:"formation-ia-logistique-ecart-salaries-entreprises-2026",slug:"formation-ia-logistique-ecart-salaries-entreprises-2026",title:"Formation IA en logistique : vos équipes sont prêtes à 77 %, les entreprises à peine à 2 %",subtitle:"Focus formation — l'écart entre l'appétence des salariés et l'investissement des entreprises françaises",chapo:"77 % des salariés de la logistique se dise
542nt prêts à travailler avec l'IA, mais seules 2 % des entreprises du secteur sont jugées réellement prêtes à les accompagner. Ce que révèlent les études Adecco, Parlons RH et Bpifrance publiées cet été — et ce que ça change pour une PME qui prépare son prochain projet IA.",coverImage:Nie,coverImageCaption:"Deux collaboratrices échangent en marchant dans un entrepôt logistique, l'une tenant une planche à pince — illustration de la transmission de compétences sur le terrain, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-05",publishTime:"07:00",readTime:8,category:["Formation","IA & Logistique"],tags:["formation IA logistique","Adecco étude logistique 2026","compétences entrepôt IA","PME formation salariés","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"77 % des salariés de la logistique se disent prêts à travailler avec l'IA, mais seules 2 % des entreprises du secteur sont jugées réellement prêtes à les accompagner. Ce que révèlent les études Adecco, Parlons RH et Bpifrance publiées cet été.",embedType:"markdown",customRoute:"/ressources/articles/formation-ia-logistique-ecart-salaries-entreprises-2026"},{id:"dubai-jafza-boom-entrepots-pme-france-2026",slug:"dubai-jafza-boom-entrepots-pme-france-2026",title:"Dubaï construit 5,4 millions de pieds carrés d'entrepôts en un an : la leçon logistique derrière le boom du Golfe",subtitle:"Décryptage international — Golfe, ce que le boom immobilier de Dubaï change pour les PME françaises",chapo:"Plus de 5,4 millions de pieds carrés d'entrepôts neufs sortent de terre à Dubaï en 2026, et Jafza a attiré 854 millions de dirhams d'investissements en quatre mois. Derrière la vitrine immobilière, une leçon pour toute PME française qui regarde vers l'export : l'espace ne fait jamais l'exécution.",coverImage:Mie,coverImageCaption:"Conteneurs empilés dans un port logistique — illustration du boom des entrepôts et zones franches du Golfe, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-04",publishTime:"07:00",readTime:8,category:["International","Performance Entrepôt"],tags:["Dubaï logistique 2026","Jafza DP World","entrepôts Golfe","export PME Moyen-Orient","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Plus de 5,4 millions de pieds carrés d'entrepôts neufs sortent de terre à Dubaï en 2026, et Jafza a attiré 854 millions de dirhams d'investissements en quatre mois. Derrière la vitrine immobilière, une leçon pour toute PME française qui regarde vers l'export : l'espace ne fait jamais l'exécution.",embedType:"markdown",customRoute:"/blog/dubai-jafza-boom-entrepots-pme-france-2026"},{id:"e-commerce-chinois-logistique-france-pme-2026",slug:"e-commerce-chinois-logistique-france-pme-2026",title:"828 millions de colis chinois en France en 2025 : la taxe à 5 € ne réglera pas le vrai problème",subt
542itle:"Actualité — ce que la taxe à 5 € sur les petits colis chinois change vraiment pour les PME françaises",chapo:"Shein et Temu livrent désormais plus de colis en France qu'Amazon : plus de 2 millions de paquets chinois arrivent chaque jour. Face à la nouvelle taxe à 5 € par ligne tarifaire, la vraie question n'est pas fiscale — elle est logistique.",coverImage:Lie,coverImageCaption:"Cartons empilés sur des racks d'entrepôt — illustration du volume de colis e-commerce transfrontalier, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-03",publishTime:"07:00",readTime:7,category:["Actualité","Performance Entrepôt"],tags:["e-commerce chinois France","Shein Temu taxe colis","logistique PME e-commerce","taxe petits colis 2026","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Shein et Temu livrent désormais plus de colis en France qu'Amazon : plus de 2 millions de paquets chinois arrivent chaque jour. Face à la nouvelle taxe à 5 € par ligne tarifaire, la vraie question n'est pas fiscale — elle est logistique.",embedType:"markdown",customRoute:"/blog/e-commerce-chinois-logistique-france-pme-2026"},{id:"nearshoring-mexique-pme-france-2026",slug:"nearshoring-mexique-pme-france-2026",title:"Nearshoring au Mexique : les annonces s'effondrent de 78 %, les entrepôts se remplissent quand même",subtitle:"Décryptage international — Mexique, entre narratif du déclin et réalité de l'exécution",chapo:"Les annonces d'investissement au Mexique ont chuté de 78 % au premier trimestre 2026, tandis que les investissements réellement concrétisés ont été multipliés par 2,5. Pour une PME française qui envisage de diversifier ses flux, la leçon : ne jamais confondre l'annonce et l'exécution.",coverImage:Oie,coverImageCaption:"Chariot élévateur en entrepôt logistique — nearshoring et diversification industrielle, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-02",publishTime:"07:00",readTime:8,category:["International","Performance Entrepôt"],tags:["nearshoring Mexique","diversification supply chain","PME import export","tarifs douaniers USMCA","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Les annonces d'investissement au Mexique ont chuté de 78 % au premier trimestre 2026, tandis que les investissements réellement concrétisés ont été multipliés par 2,5. Pour une PME française qui envisage de diversifier ses flux, la leçon : ne jamais confondre l'annonce et l'exécution.",embedType:"markdown",customRoute:"/blog/nearshoring-mexique-pme-france-2026"},{id:"rachat-prestataire-logistique-pme-geodis-deret",slug:"rachat-prestataire-logistique-pme-geodis-deret",title:"Votre prestataire logistique vient d'être racheté : ce qui va vraiment changer",subtitle:"Actualité — ce que la consolidation Geodis / Malherbe / Deret change pour les PME sous-traitantes",chapo:"Geodis a finalisé le rachat de Malherbe en mars 2026 et négocie désormais celui d'une partie du groupe Deret, 7 000 salariés. Pour une PME cliente, la vraie question n'est jamais le prix du deal — c'est la continuité de ses flux.",coverImage:Iie,coverImageCaption:"Rangée de camions semi-remorques garés côte à côte sur un site logistique — illustration de la consolidation des réseaux de transport en France, CHAL·CONSULTING IA",content:"",publishDate:"2026-08-01",publishTime:"07:00",readTime:7,category:["Actualité","Performance Entrepôt"],tags:["Geodis Deret","consolidation logistique France","sous-traitance 3PL PME","continuité WMS","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Geodis a finalisé le rachat de Malherbe en mars 2026 et négocie désormais celui d'une partie du groupe Deret, 7 000 salariés. Pour une PME cliente, la vraie question n'est jamais le prix du deal — c'est la continuité de ses flux.",embedType:"markdown",customRoute:"/blog/rachat-prestataire-logistique-pme-geodis-deret"},{id:"ia-logistique-pme-france-donnees-2026",slug:"ia-logistique-pme-france-donnees-2026",title:"IA en logistique : pourquoi 37 % des PME françaises abandonnent leur projet avant le moindre résultat",subt
542itle:"Tribune — ce que les chiffres 2026 de Bpifrance et France Logistique révèlent",chapo:"26 % des PME françaises utilisent l'IA au quotidien, contre 6 % il y a trois ans. Mais Bpifrance vient de livrer le chiffre qui compte vraiment : 37 % de celles qui se lancent renoncent en cours de route, faute de données fiables.",coverImage:Tie,coverImageCaption:"Contrôle de stock au scanner dans un entrepôt — la donnée fiable, préalable à toute IA logistique, CHAL·CONSULTING IA",content:"",publishDate:"2026-07-31",publishTime:"07:00",readTime:7,category:["IA & Logistique","Opinion"],tags:["IA logistique PME","Bpifrance IA PME 2026","données WMS","méthode FLUX","France Logistique IA"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"26 % des PME françaises utilisent l'IA au quotidien, contre 6 % il y a trois ans. Mais Bpifrance vient de livrer le chiffre qui compte vraiment : 37 % de celles qui se lancent renoncent en cours de route, faute de données fiables.",embedType:"markdown",customRoute:"/blog/ia-logistique-pme-france-donnees-2026"},{id:"tanger-med-maroc-nearshoring-pme-france",slug:"tanger-med-maroc-nearshoring-pme-france",title:"Tanger Med, 6ᵉ port mondial : ce que le boom marocain change vraiment pour les PME françaises",subtitle:"Décryptage international — nearshoring, Maroc et flux d'information",chapo:"Tanger Med grimpe au 6ᵉ rang mondial des ports à conteneurs et le Maroc mise sur le nearshoring pour capter les PME européennes qui fuient l'Asie. Ce que la proximité change vraiment — et ce qu'elle ne résout jamais.",coverImage:Pie,coverImageCaption:"Grues et conteneurs sur un quai portuaire international — illustration du hub logistique de Tanger Med, CHAL·CONSULTING IA",content:"",publishDate:"2026-07-30",publishTime:"07:00",readTime:8,category:["International","Performance Entrepôt"],tags:["Tanger Med","nearshoring Maroc","supply chain internationale","PME logistique international","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Tanger Med grimpe au 6ᵉ rang mondial des ports à conteneurs et le Maroc mise sur le nearshoring pour capter les PME européennes qui fuient l'Asie. Ce que la proximité change vraiment — et ce qu'elle ne résout jamais.",embedType:"markdown",customRoute:"/blog/tanger-med-maroc-nearshoring-pme-france"},{id:"agent-de-quai-metier-invisible-entrepot-pme",slug:"agent-de-quai-metier-invisible-entrepot-pme",title:"Agent de quai : le métier invisible qui décide si votre entrepôt tient la cadence",subtitle:"Portrait métier — le maillon décisif de la réception en entrepôt",chapo:"15 000 postes de cariste restent vacants en France, alors que 350 000 personnes exercent déjà cette fonction. Portrait d'un métier discret, sans lequel aucun WMS, aucune IA, aucune méthode ne tient ses promesses.",coverImage:jie,coverImageCaption:"Agent d'entrepôt réceptionnant des colis sur un poste de stockage — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-29",publishTime:"07:00",readTime:7,category:["Métiers de l'entrepôt","RH & Compétences"],tags:["agent de quai","métier logistique entrepôt","pénurie cariste","CACES formation","réception marchandises PME","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"15 000 postes d'agent de quai restent vacants en France malgré 350 000 caristes en poste. Portrait d'un métier invisible qui décide pourtant de la fiabilité de tous vos flux.",embedType:"markdown",customRoute:"/ressources/articles/agent-de-quai-metier-invisible-entrepot-pme"},{id:"incendie-entrepot-coupang-continuite-pme",slug:"incendie-entrepot-coupang-continuite-pme",title:"109 heures de feu chez Coupang : la panne que l'automatisation d'entrepôt n'empêche jamais",subtitle:"Actualité internationale — risque incendie et continuité d'activité en entrepôt automatisé",chapo:"Samedi 18 juillet, 6h54 du matin : un feu se déclare au sixième étage d'un centre de distribution Coupang à Incheon, en Corée du Sud. Il ne sera totalement maîtrisé que 109 heures plus tard. Ce sinistre spectaculaire pose la question que la plupart des PME logistiques françaises n'ont jamais posée à leur propre entrepôt.",coverImage:Cie,coverImageCaption:"Entrepôt logistique avec hauts rayonnages de stockage — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-28",publishTime:"07:00",readTime:7,category:["International","Gestion des risques"],tags:["incendie entrepôt","Coupang","continuité d'activité","risque logistique automatisation","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Un entrepôt Coupang a brûlé 109 heures en Corée du Sud — le deuxième plus long incendie logistique jamais enregistré dans le pays. Ce que ce sinistre révèle sur le risque incendie des entrepôts automatisés, et ce qu'une PME française doit vérifier avant de s'y fier.",embedType:"markdown",customRoute:"/blog/incendie-entrepot-coupang-continuite-pme"},{id:"ferrero-entrepot-cleon-decarbonation-pme",slug:"ferrero-entrepot-cleon-decarbonation-pme",title:"Ferrero et son entrepôt à 33 M€ en Normandie : la vraie bataille commence après l'inauguration",subtitle:"Actualité — décarbonation et performance d'entrepôt",chapo:"Le 2 juillet 2026, le ministre des Transports coupait le ruban d'un entrepôt Ferrero à 33 millions d'euros près de Rouen, autonome en énergie. Derrière la vitrine, une question plus utile pour les PME : que se passe-t-il le lundi suivant ?",coverImage:kie,coverImageCaption:"Camions à quai devant un entrepôt logistique moderne — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-27",publishTime:"07:00",readTime:7,category:["Actualité logistique","Performance Entrepôt"],tags:["entrepôt Ferrero Cléon","décarbonation entrepôt","immobilier logistique France","entreposage France 2026","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Ferrero a inauguré le 2 juillet un entrepôt de 33 M€ à Cléon, autonome en énergie et salué par le ministre des Transports. Ce que la cérémonie ne dit jamais sur la vraie performance logistique — et ce qu'une PME peut en retenir.",embedType:"markdown",customRoute:"/blog/ferrero-entrepot-cleon-decarbonation-pme"},{id:"robots-entrepot-japon-automatisation-pme-france",slug:"robots-entrepot-japon-automatisation-pme-france",title:"1 million de robots, 15 millions de bras en moins : la leçon japonaise sur l'automatisation d'entrepôt",subtitle:"Décryptage international — automatisation entrepôt et pénurie démographique",chapo:"RoboDEX 2026, le millionième robot Amazon déployé au Japon, Sagawa Express qui automatise ses quais sous la contrainte réglementaire : le Japon automatise ses entrepôts par nécessité démographique. Ce que cette discipline révèle pour les PME françaises.",coverImage:_ie,coverImageCaption:"Véhicule autonome guidé (AGV) sur un terminal logistique — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-26",publishTime:"07:00",readTime:7,category:["International","Automatisation entrepôt"],tags:["automatisation entrepôt Japon","robots logistique Japon","AMR AGV entrepôt","pénurie main d'oeuvre logistique","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le Japon automatise ses entrepôts par nécessité démographique, pas par mode. Amazon, Sagawa Express, RoboDEX 2026 : ce que cette discipline révèle pour les PME françaises.",embedType:"markdown",customRoute:"/blog/robots-entrepot-japon-automatisation-pme-france"},{id:"robotisation-entrepot-amazon-lyon-pme",slug:"robotisation-entrepot-amazon-lyon-pme",title:"4 000 robots, 200 millions d'euros : ce que le nouvel entrepôt Amazon de Lyon dit vraiment de la robotisation",subtitle:"Actualité — le vrai coût de la robotisation d'entrepôt",chapo:"Le 1er juillet 2026, Amazon a ouvert près de Lyon un entrepôt de 180 000 m² équipé de 4 000 robots, pour 200 millions d'euros. Ce que ce site révèle sur le vrai coût de la robotisation — et ce qu'une PME peut réellement en retenir.",coverImage:Eie,coverImageCaption:"Chariot élévateur circulant entre les rayonnages d'un entrepôt logistique — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-25",publishTime:"07:00",readTime:7,category:["Actualité logistique","Automatisation entrepôt"],tags:["robotisation entrepôt","Amazon Lyon Colombier-Saugnieu","automatisation logistique PME","AMR AGV entrepôt","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"4 000 robots, 200 M€, 180 000 m² : le nouvel entrepôt Amazon de Lyon décrypté. Ce que la robotisation coûte vraiment, et ce qui est transposable pour une PME.",embedType:"markdown",customRoute:"/blog/robotisation-entrepot-amazon-lyon-pme"},{id:"ia-logistique-allemagne-etude-ehi-2026",slug:"ia-logistique-allemagne-etude-ehi-2026",title:"IA en logistique : les mastodontes allemands du retail se notent eux-mêmes 2,6 sur 10",subtitle:"Décryptage international — étude EHI Retail Institute 2026",chapo:"36 entreprises de la distribution allemande, dont la majorité dépasse le milliard d'euros de chiffre d'affaires, notent leur propre usage de l'IA logistique à 2,6/10 — contre 5,3 pour l'automatisation. Ce que révèle l'étude EHI, et ce que ça change pour les PME françaises.",coverImage:Aie,coverImageCaption:"Chariot élévateur circulant entre des palettes dans un entrepôt logistique — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-24",publishTime:"07:00",readTime:7,category:["International","IA & Logistique"],tags:["IA logistique Allemagne","étude EHI 2026","automatisation entrepôt","IA entrepôt PME","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"36 grands du retail allemand notent leur IA logistique 2,6/10, contre 5,3 pour l'automatisation. L'étude EHI 2026 et ses leçons pour les PME françaises.",embedType:"markdown",customRoute:"/blog/ia-logistique-allemagne-etude-ehi-2026"},{id:"transporteurs-logistique-stockage-pme",slug:"transporteurs-logistique-stockage-pme",title:"Près de 70 % des transporteurs français font aussi de la logistique : ce qu'il faut vérifier avant de signer",subtitle:"Actualité — étude CNR 2025 sur la diversification logistique des transporteurs",chapo:"69,4% des transporteurs routiers français exercent désormais une activité logistique — stockage, préparation de commandes, parfois cross-docking. Ce que révèle l'étude du Comité National Routier, et ce qu'il faut vérifier avant d'élargir un contrat de transport.",coverImage:Sie,coverImageCaption:"Semi-remorques garées sur le parking d'un transporteur routier — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-23",publishTime:"07:00",readTime:6,category:["Actualité logistique","Prestataires & Transport"],tags:["transporteur logistique PME","étude CNR transport","3PL France","prestataire logistique PME","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"69,4% des transporteurs français font aussi de la logistique, selon une étude du CNR. Ce que cela change pour une PME, et les 4 questions à poser avant de signer.",embedType:"markdown",customRoute:"/blog/trans
542porteurs-logistique-stockage-pme"},{id:"slotting-entrepot-reimplantation-stock-pme",slug:"slotting-entrepot-reimplantation-stock-pme",title:"Slotting : le geste invisible qui plombe la productivité de 9 entrepôts PME sur 10",subtitle:"Décryptage méthode — la réimplantation de stock que personne ne revisite",chapo:"Vos préparateurs marchent plus qu'ils ne préparent. Dans la majorité des entrepôts PME, l'emplacement des références n'a pas bougé depuis le go-live du WMS. Le slotting peut changer 10 à 30% de la productivité picking — voici pourquoi presque personne ne s'en occupe, et comment s'y prendre.",coverImage:qie,coverImageCaption:"Préparateur de commandes marchant dans une allée d'entrepôt — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-22",publishTime:"07:00",readTime:7,category:["Performance Entrepôt","Méthode & Outils"],tags:["slotting","réimplantation stock entrepôt","productivité picking","gestion des stocks PME","méthode ABC logistique","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le slotting, cette réimplantation des stocks que personne ne revisite après le go-live WMS, peut réduire de 10 à 30% le temps de picking. Méthode, chiffres et conditions pour PME.",embedType:"markdown",customRoute:"/ressources/articles/slotting-entrepot-reimplantation-stock-pme"},{id:"logistique-france-grands-groupes-pme-2026",slug:"logistique-france-grands-groupes-pme-2026",title:"Le marché logistique français s'effondre, les géants s'agrandissent : l'écart qui isole les PME",subtitle:"Actualité — immobilier logistique & discipline des flux",chapo:"Le marché logistique français recule de 62 % au premier trimestre 2026. Pendant ce temps, Ceva Logistics installe un méga-site de 48 000 m² pour Amazon à Mably. Ce que cet écart révèle — et pourquoi il ne se règle pas en mètres carrés.",coverImage:Ire,coverImageCaption:"Chariot élévateur et rayonnages dans un entrepôt logistique — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-21",publishTime:"07:00",readTime:8,category:["Actualité logistique","PME & Grands groupes"],tags:["immobilier logistique France","PME logistique","automatisation entrepôt","Ceva Logistics Amazon","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le marché logistique français recule de 62 % au T1 2026 pendant qu'Amazon installe un méga-site à Mably. Pourquoi l'écart entre grands groupes et PME se creuse — et ce qu'il faut fiabiliser avant d'investir.",embedType:"markdown",customRoute:"/blog/logistique-france-grands-groupes-pme-2026"},{id:"inde-boom-entrepots-lecon-pme-france",slug:"inde-boom-entrepots-lecon-pme-france",title:"Inde : le boom des entrepôts logistiques cache un chiffre que les PME françaises devraient regarder de près",subtitle:"Décryptage international — immobilier logistique & discipline des flux",chapo:"L'Inde a loué près de 22 millions de pieds carrés d'entrepôts en six mois. Mais le même rapport révèle un taux de vacance de 17,2 %. Décryptage d'un paradoxe qui parle directement aux dirigeants de PME françaises.",coverImage:Ore,coverImageCaption:"Rayonnages et quai de chargement d'un entrepôt logistique moderne",content:"",publishDate:"2026-07-20",publishTime:"07:00",readTime:7,category:["International","Immobilier logistique"],tags:["Inde","entrepôts Grade A","immobilier logistique","vacance locative","3PL","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Boom des entrepôts en Inde, vacance à 17 % : la leçon de concentration des flux pour les PME françaises.",embedType:"markdown",customRoute:"/blog/inde-boom-entrepots-lecon-pme-france"},{id:"penurie-competences-logistique-formation-pme",slug:"penurie-competences-logistique-formation-pme",title:"Pénurie de caristes et magasiniers : pourquoi la formation bat le recrutement, chiffres à l'appui",subtitle:"Formation & compétences terrain",chapo:"40,5 % des postes logistiques sont jugés difficiles à pourvoir en France en 2026. Face à ce mur, la plupart des PME activent le seul levier qu'elles connaissent : recruter plus vite. C'est précisément le mauvais réflexe.",coverImage:Lre,coverImageCaption:"Formation d'un cariste sur chariot élévateur en entrepôt logistique",content:"",publishDate:"2026-07-19",publishTime:"07:00",readTime:7,category:["Formation","RH & Compétences"],tags:["Formation","Pénurie de compétences","CACES","Recrutement PME","France Travail"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Pourquoi la formation interne des équipes logistiques rapporte plus que le recrutement d'urgence — méthode F.L.U.X et dispositifs concrets pour PME/ETI.",embedType:"markdown",customRoute:"/ressources/articles/penurie-competences-logistique-formation-pme"},{id:"pologne-entrepots-automatises-pme-france",slug:"pologne-entrepots-automatises-pme-france",title:"Entrepôts automatisés en Pologne : le laboratoire logistique qui inquiète les PME françaises",subtitle:"Décryptage international — immobilier logistique & automatisation",chapo:"Pendant que l'immobilier logistique français recule de 62 % au premier trimestre 2026, la Pologne construit des hubs automatisés géants (ID Logistics, Shein). Ce que ce contraste annonce pour les PME françaises.",coverImage:Mre,coverImageCaption:"Entrepôt logistique moderne — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-18",publishTime:"07:00",readTime:7,category:["International","Automatisation entrepôt"],tags:["Pologne","International","Automatisation entrepôt","Immobilier logistique","Robotique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"L'immobilier logistique français recule de 62 % au T1 2026 pendant que la Pologne construit des hubs automatisés géants. Décryptage et enjeux pour les PME.",embedType:"markdown",customRoute:"/blog/pologne-entrepots-automatises-pme-france"},{id:"cross-docking-entrepot-pme",slug:"cross-docking-entrepot-pme",featured:!0,title:"Cross-docking : la méthode que les grands maîtrisent et sur laquelle les PME se cassent les dents",subtitle:"Décryptage terrain — ce que les brochures ne disent pas",chapo:"Un mardi matin, deux quais neufs, un panneau « cross-docking » encore brillant. Six semaines plus tard, le quai déborde. Enquête sur la promesse la plus vendue et la moins tenue de la logistique — et sur ce qu'il faut avoir réglé avant de retirer le filet.",coverImage:Nre,coverImageCaption:"Quais et flux de marchandises en entrepôt — cross-docking — CHAL·CONSULTING IA",content:"",publishDate:"2026-07-17",publishTime:"07:00",readTime:11,
542category:["Performance Entrepôt","Méthode"],tags:["cross-docking","cross-docking PME","flux tendu entrepôt","réduction coûts stockage","WMS cross-docking","méthode FLUX"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"La promesse la plus vendue et la moins tenue de la logistique. Ce que les brochures ne disent pas sur le cross-docking — et pourquoi les PME qui réussissent sont celles qui en avaient le moins besoin.",embedType:"markdown",customRoute:"/blog/cross-docking-entrepot-pme"},{id:"logistique-mondiale-avril-2026",slug:"logistique-mondiale-avril-2026",title:"Logistique mondiale : ce qu'avril 2026 a révélé (et ce que les PME doivent en retenir)",subtitle:"Actualité logistique",chapo:"SITL 2026, automatisation, durabilité, supply chains fragmentées : ce qu'avril 2026 révèle de la logistique mondiale et ce que les PME doivent en retenir.",coverImage:$x,coverImageCaption:"Logistique mondiale — avril 2026",content:"Avril 2026 a confirmé un basculement : l'automatisation, la donnée et la durabilité ne sont plus des sujets de grands groupes. SITL 2026, robotisation à l'échelle PME, décarbonation intégrée aux arbitrages, visibilité des flux : ce qu'il faut retenir pour les dirigeants d'ETI.",publishDate:"2026-07-10",publishTime:"09:00",readTime:7,category:["Actualité logistique","Veille & Tendances"],tags:["logistique mondiale 2026","SITL 2026","automatisation entrepôt PME","durabilité logistique","visibilité supply chain"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"SITL 2026, automatisation, durabilité, supply chains fragmentées : ce qu'avril 2026 révèle de la logistique mondiale et ce que les PME doivent en retenir.",embedType:"markdown",customRoute:"/blog/logistique-mondiale-avril-2026"},{id:"sitl-2026-tendances",slug:"sitl-2026-tendances-entrepot-supply-chain",title:"SITL 2026 : les 10 tendances qui vont transformer vos entrepôts (et ce que ça change pour les PME)",subtitle:"Veille & Tendances",chapo:"583 produits exposés, 560 exposants, 80 conférences. Derrière le bruit du salon, les signaux faibles — et forts — qui méritent votre attention si vous dirigez un entrepôt ou une supply chain de PME/ETI.",coverImage:wie,coverImageCaption:"SITL 2026 — Salon International du Transport et de la Logistique",content:"J'ai épluché le cahier des nouveautés du SITL 2026. 583 produits exposés, 560 exposants, 80 conférences. Derrière le bruit du salon, voici les signaux faibles — et forts — qui méritent votre attention si vous dirigez un entrepôt ou une supply chain de PME/ETI.",publishDate:"2026-04-08",publishTime:"09:00",readTime:12,category:["Veille & Tendances","Entrepôt"],tags:["SITL 2026","tendances entrepôt","supply chain PME","IA logistique","robotique","décarbonation"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"SITL 2026 décrypté : IA, robotique, jumeaux numériques, décarbonation. Les 10 tendances qui transforment les entrepôts PME et ce que ça change concrètement.",embedType:"markdown",customRoute:"/blog/sitl-2026-tendances-entrepot-supply-chain"},{id:"guide-ia-logistique-2026",slug:"guide-ia-logistique-france-2026-chal-consulting",title:"IA en logistique : ce que dit le guide national, ce que je fais concrètement pour vos entrepôts",subtitle:"IA & Logistique",chapo:"Analyse complète du guide IA France Logistique 2026. Point par point, découvrez comment CHAL·CONSULTING IA prépare vos entrepôts à l'IA avec la méthode F.L.U.X.",coverImage:xie,coverImageCaption:"Guide IA France Logistique 2026 — CHAL·CONSULTING IA",content:"Le guide national IA & Logistique publié par France Logistique identifie 11 pièges stratégiques pour les entreprises qui veulent intégrer l'intelligence artificielle dans leurs opérations. Point par point, voici ce que je fais concrètement dans vos entrepôts avec la méthode F.L.U.X.™.",publishDate:"2026-04-08",publishTime:"08:00",readTime:25,category:["IA & Logistique","Guide Sectoriel"],tags:["IA logistique","guide France Logistique 2026","méthode FLUX","entrepôt PME","intelligence artificielle terrain"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Analyse complète du guide IA France Logistique 2026. Point par point, découvrez comment CHAL·CONSULTING IA prépare vos entrepôts à l'IA avec la méthode F.L.U.X.",embedType:"markdown",customRoute:"/blog/guide-ia-logistique-france-2026-chal-consulting"},{id:"decarbonation-transport-ormuz",slug:"decarbonation-transport-logistique-ormuz",title:"Détroit d'Ormuz, guerre en Iran, CO₂ : pourquoi la décarbonation du transport n'est plus une option pour les supply chains",subtitle:"Trans
542port & Géopolitique",chapo:"Guerre en Iran, détroit d'Ormuz bloqué : pourquoi la décarbonation du transport est devenue un impératif de résilience pour les PME logistiques françaises.",coverImage:bie,coverImageCaption:"Détroit d'Ormuz — CHAL·CONSULTING IA",content:"Depuis le 28 février 2026, la fermeture du détroit d'Ormuz est réelle. Les frappes militaires conjointes des États-Unis et d'Israël contre l'Iran ont déclenché une escalade majeure. Pour les responsables transport et supply chain des PME françaises, la leçon est sans appel : toute stratégie logistique construite sur une dépendance aux énergies fossiles est une stratégie avec une faille géopolitique.",publishDate:"2026-04-05",publishTime:"08:00",readTime:14,category:["Transport & Géopolitique","Décarbonation"],tags:["décarbonation transport","détroit Ormuz","supply chain résilience","transport logistique PME","géopolitique logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Guerre en Iran, détroit d'Ormuz bloqué : pourquoi la décarbonation du transport est devenue un impératif de résilience pour les PME logistiques françaises.",embedType:"markdown",customRoute:"/blog/decarbonation-transport-logistique-ormuz"},{id:"lean-logistics-gaspillages",slug:"lean-logistics-gaspillages-marge-pme",title:"Ces 3 gaspillages invisibles qui mangent la marge de votre PME",subtitle:"Lean Logistics",chapo:"Surstock, erreurs picking, ergonomie : calculez vos pertes réelles avec nos outils interactifs. Le Lean logistique appliqué aux PME par CHAL·CONSULTING IA.",coverImage:Rre,coverImageCaption:"Lean Logistics — CHAL·CONSULTING IA",content:"",publishDate:"2025-08-15",publishTime:"09:00",readTime:12,category:["Lean Logistics","Réduction des Coûts"],tags:["lean logistique PME","réduction coûts entrepôt","gaspillage logistique","surstock coût caché","erreur picking coût"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Surstock, erreurs picking, ergonomie : calculez vos pertes réelles avec 6 outils interactifs. Le Lean logistique appliqué aux PME.",embedType:"markdown",customRoute:"/blog/lean-logistics-gaspillages-marge-pme"},{id:"excel-vs-wms",slug:"excel-vs-wms-automatiser-gestion-stock-pme",title:"Excel vs WMS : est-il temps pour votre PME d'automatiser sa gestion de stock ?",subtitle:"Transition Digitale",chapo:"Erreurs de stock, dépendance à une personne, lenteur : 3 signaux qui montrent qu'Excel ne suffit plus. Ce que change vraiment un WMS Cloud pour une PME.",coverImage:$re,coverImageCaption:"Excel vs WMS — CHAL·CONSULTING IA",content:"",publishDate:"2026-03-30",publishTime:"09:00",readTime:9,category:["Transition Digitale","WMS"],tags:["WMS PME","gestion de stock Excel","logiciel entrepôt PME","WMS Cloud PME","automatisation gestion stock"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Erreurs de stock, dépendance à une personne, lenteur : 3 signaux qui montrent qu'Excel ne suffit plus. Ce que change vraiment un WMS Cloud pour une PME.",embedType:"markdown",customRoute:"/blog/excel-vs-wms-automatiser-gestion-stock-pme"},{id:"entrepot-sature",slug:"entrepot-sature-gagner-place-sans-demenager",featured:!0,title:"Entrepôt saturé : 5 astuces pour gagner 20% de place sans déménager",subtitle:"Optimisation terrain",chapo:"Votre entrepôt déborde ? Zoning, exploitation de la hauteur, cross-docking : 5 leviers concrets pour récupérer 20% de capacité sans changer de local.",coverImage:Dre,coverImageCaption:"Optimisation espace entrepôt — CHAL·CONSULTING IA",content:"",publishDate:"2026-03-30",publishTime:"08:00",readTime:7,category:["Performance Entrepôt","Terrain"],tags:["optimisation entrepôt PME","gain de place entrepôt","zoning logistique","cross-docking PME","rayonnages accumulation"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Votre entrepôt déborde ? 5 leviers concrets pour récupérer 20% de capacité sans changer de local. Zoning, hauteur, cross-docking, ABC, zones grises.",embedType:"markdown",customRoute:"/blog/entrepot-sature-gagner-place-sans-demenager"},{id:"metiers-entrepot-2026",slug:"metiers-entrepot-2026",title:"Tous les métiers de l'entrepôt en 2026 — et ceux qui n'existent pas encore",subt
542itle:"Cartographie exhaustive & Vision terrain",chapo:"De l'opérateur de quai au pilote de flotte robotisée, de la réception à l'expédition, en passant par la qualité, la maintenance, le juridique et la finance. Une cartographie exhaustive et sans filtre des métiers logistiques d'aujourd'hui — et une vision terrain sur les postes qui émergent, se transforment ou n'existent pas encore.",coverImage:Fre,coverImageCaption:"Métiers de l'entrepôt 2026 — cartographie complète — CHAL·CONSULTING IA",content:"",publishDate:"2026-03-29",publishTime:"08:00",readTime:12,category:["RH & Métiers","Analyse Terrain","Futur du Travail"],tags:["métiers entrepôt","métiers logistique 2026","cariste","préparateur de commandes","directeur entrepôt","cobotique","IA logistique RH","futur travail entrepôt"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"De l'opérateur de quai au pilote de flotte robotisée. Cartographie exhaustive des métiers logistiques d'aujourd'hui — et vision terrain sur les postes de demain.",embedType:"markdown",customRoute:"/ressources/articles/metiers-entrepot-2026"},{id:"mars-2026-logistique",slug:"mars-2026-logistique",title:"Mars 2026 : ce que le secteur logistique dit — et ce qu'il ne dit pas",subtitle:"Veille terrain & opinion",chapo:"SITL, LogiMAT, automatisation, IA, durabilité — mars 2026 a été un mois chargé pour la logistique mondiale. Beaucoup de discours. Quelques vraies avancées. Et des angles morts que personne ne veut nommer.",coverImage:$x,coverImageCaption:"Veille logistique mars 2026 — CHAL·CONSULTING IA",content:"",publishDate:"2026-03-25",publishTime:"08:00",readTime:8,category:["Veille Sectorielle","Analyse Terrain","Opinion"],tags:["veille logistique","SITL 2026","LogiMAT 2026","automatisation PME","durabilité logistique","supply chain 2026"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"SITL, LogiMAT, automatisation, IA — un mois chargé pour la logistique mondiale. Ce que ça change vraiment pour les PME. Vu depuis le terrain, pas depuis une salle de conférence.",embedType:"markdown",customRoute:"/ressources/articles/mars-2026-logistique"},{id:"faut-il-automatiser-son-entrepot-ou-mieux-le-piloter",slug:"faut-il-automatiser-son-entrepot-ou-mieux-le-piloter",title:"Faut-il automatiser son entrepôt ou juste mieux le piloter ?",subtitle:"Comparateur, diagnostic, simulateur ROI",chapo:"Automatisation, robotisation, WMS, pilotage terrain : découvrez comment décider si votre entrepôt doit s'équiper davantage ou d'abord mieux fonctionner. Diagnostic interactif CHAL·CONSULTING IA.",coverImage:Ure,coverImageCaption:"Automatiser ou piloter — aide à la décision entrepôt — CHAL·CONSULTING IA",content:"",publishDate:"2026-03-08",publishTime:"08:00",readTime:10,category:["Transformation logistique & performance entrepôt"],tags:["automatiser entrepôt","pilotage entrepôt","robotisation logistique PME","productivité entrepôt","consultant logistique automatisation","ROI automatisation entrepôt"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Automatisation, robotisation, WMS, pilotage terrain : découvrez comment décider si votre entrepôt doit s'équiper davantage ou d'abord mieux fonctionner.",embedType:"markdown",customRoute:"/blog/faut-il-automatiser-son-entrepot-ou-mieux-le-piloter"},{id:"cold-chain-gdp-logistique-pharmaceutique",slug:"cold-chain-gdp-logistique-pharmaceutique",title:"Cold Chain & GDP — la logistique pharma que personne ne maîtrise vraiment",subtitle:"Monitoring, qualification GDP, simulation déviation",chapo:"Monitoring température, qualification fournisseurs GDP, simulation déviation et scénario incident réel. L'expérience Cenexi mise en pratique par CHAL·CONSULTING IA.",coverImage:zre,coverImageCaption:"Cold Chain & GDP — logistique pharmaceutique terrain — CHAL·CONSULTING IA",content:"",publishDate:"2025-07-15",publishTime:"08:00",readTime:15,category:["Logistique Pharmaceutique & Réglementation"],tags:["logistique pharmaceutique GDP","cold chain PME","audit GDP ANSM","chaîne du froid médicament","conformité BPD logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Monitoring température, qualification fournisseurs GDP, simulation déviation et scénario incident réel. L'expérience Cenexi mise en pratique.",embedType:"markdown",customRoute:"/blog/cold-chain-gdp-logistique-pharmaceutique"},{id:"analyser-flux-entrepot-methode-complete",slug:"analyser-flux-entrepot-methode-complete",featured:!0,title:"Analyser les flux d'un entrepôt — la méthode complète",subtitle:"Sankey, heatmap, ABC, goulots, capacité",chapo:"Cartographie flux, heatmap picking, analyse ABC, goulots, capacité : le guide complet pour analyser et optimiser les flux de votre entrepôt. Méthode F.L.U.X™ CHAL·CONSULTING IA.",coverImage:Dx,coverImageCaption:"Analyser les flux d'un entrepôt — méthode terrain complète — CHAL·CONSULTING IA",content:"",publishDate:"2025-08-01",publishTime:"08:00",readTime:18,category:["Performance Entrepôt"],tags:["analyse flux entrepôt","optimisation picking PME","heatmap entrepôt","analyse ABC logistique","goulot entrepôt"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Cartographie flux, heatmap picking, analyse ABC, goulots, capacité : le guide complet pour analyser et optimiser les flux de votre entrepôt.",embedType:"markdown",customRoute:"/blog/analyser-flux-entrepot-methode-complete"},{id:"audit-logistique-protocole-terrain",slug:"audit-logistique-protocole-terrain",featured:!0,title:"Audit logistique en 1 journée : le protocole terrain",subtitle:"8 phases, 38 points de contrôle, scoring radar",chapo:"8 phases, 38 points de contrôle, un scoring radar en temps réel. Le protocole d'audit logistique terrain de CHAL·CONSULTING IA — diagnostic en 1 journée, rapport en 5 jours.",coverImage:Bre,coverImageCaption:"Audit logistique en 1 journée : le protocole terrain — CHAL·CONSULTING IA",content:"",publishDate:"2025-07-01",publishTime:"08:00",readTime:14,category:["Diagnostic & Audit"],tags:["audit logistique PME","diagnostic entrepôt","audit WMS terrain","consultant logistique audit","performance entrepôt diagnostic"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"8 phases, 38 points de contrôle, un scoring radar en temps réel. Le protocole d'audit terrain condensé en 1 journée.",embedType:"markdown",customRoute:"/blog/audit-logistique-protocole-terrain-1-journee"},{id:"ia-logistique-realite-terrain-2025",slug:"ia-logistique-realite-terrain-2025",title:"IA en logistique : ce qui marche vraiment",subtitle:"Hype vs réalité terrain — 6 cas d'usage décryptés",chapo:"43% des projets IA logistique ratent leur ROI. Comparez hype vs réalité terrain, testez 6 cas d'usage et calculez votre ROI en 2 minutes.",coverImage:Wre,coverImageCaption:"IA en logistique : ce qui marche vraiment — CHAL·CONSULTING IA",content:"",publishDate:"2025-06-18",publishTime:"08:00",readTime:12,category:["Intelligence Artificielle","Supply Chain"],tags:["IA logistique","ROI IA","hype vs réalité","cas usage IA entrepôt","calculateur ROI"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"43% des projets IA logistique ratent leur ROI. Comparez hype vs réalité terrain, testez 6 cas d'usage et calculez votre ROI en 2 minutes.",embedType:"markdown",customRoute:"/blog/ia-logistique-realite-terrain-2025"},{id:"wms-go-live-7-cercles-enfer-logistique",slug:"wms-go-live-7-cercles-enfer-logistique",title:"WMS Go-Live : Les 7 Cercles de l'Enfer Logistique",subt
542itle:"Diagnostic interactif post go-live WMS pour PME/ETI",chapo:"87% des go-lives WMS régressent dans les 90 premiers jours. Découvrez les 7 erreurs terrain observées sur 23 missions — avec quiz diagnostic, benchmark PME vs Grand Groupe et méthode F.L.U.X™.",coverImage:Hre,coverImageCaption:"WMS Go-Live : Les 7 Cercles de l'Enfer Logistique — CHAL·CONSULTING IA",content:"",publishDate:"2025-06-10",publishTime:"08:00",readTime:15,category:["Performance entrepôt","WMS","Logistique PME"],tags:["go-live WMS PME","post implémentation WMS","erreurs WMS entrepôt","consultant logistique post go-live","méthode FLUX logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"87% des go-lives WMS régressent. Découvrez les 7 erreurs terrain observées sur 23 missions — avec diagnostic interactif et méthode F.L.U.X™.",embedType:"markdown",customRoute:"/blog/wms-go-live-7-cercles-enfer-logistique"},{id:"contrat-prestataire-logistique",slug:"contrat-prestataire-logistique",title:"Avant de signer avec un prestataire logistique : 6 points à vérifier que votre contrat ne mentionne pas",subtitle:"Pour dirigeants et responsables supply chain",chapo:"Le contrat est propre. Les annexes sont détaillées. Les SLA sont définis. Vous signez. Six mois plus tard, vous découvrez que votre prestataire sous-traite 40 % des flux à un transporteur que vous n'avez jamais validé, que les pénalités ne couvrent rien, et que le plan de continuité tient sur une demi-page. Voici les 6 points à vérifier avant de signer — ceux que le contrat effleure ou ignore.",coverImage:yie,coverImageCaption:"Négociation de contrat logistique et opérations en entrepôt — CHAL·CONSULTING IA",content:`## Point 1 — La sous-traitance : qui livre vraiment votre client ?
543
544La plupart des prestataires logistiques sous-traitent une partie de leurs flux — transport de nuit, zones géographiques tendues, pics saisonniers. C'est une réalité du marché. Ce n'est pas un problème en soi.
545
546Le problème, c'est quand vous ne savez pas qui livre votre client en votre nom.
547
548**Ce qu'il faut demander explicitement :** la liste des sous-traitants habituels, le pourcentage de flux concernés, et les conditions dans lesquelles un nouveau sous-traitant peut être intégré sans votre accord. Certains contrats permettent au prestataire de sous-traiter librement tant que les SLA sont respectés. Ce qui veut dire que votre client peut être livré par n'importe qui — du moment que c'est à l'heure.
549
550**Ce qu'il faut exiger :** une clause de notification préalable pour tout nouveau sous-traitant sur vos flux, et un droit de refus motivé. Pas pour contrôler chaque camion — pour ne pas découvrir un incident de livraison impliquant un transporteur que vous n'avez jamais validé.
551
552## Point 2 — Les pénalités : ce qu'elles couvrent vraiment
553
554Les pénalités pour non-respect des SLA sont présentes dans presque tous les contrats. Ce qui varie énormément, c'est leur plafond — et leur mode de calcul.
555
556Un prestataire qui rate 3 % de vos livraisons sur un mois peut devoir une pénalité forfaitaire de 500 euros. Si ces 3 % représentent vos clients les plus exigeants, votre perte commerciale réelle est sans commune mesure avec ce montant.
557
558**Ce qu'il faut vérifier :** le plafond mensuel des pénalités (souvent exprimé en pourcentage de la facture mensuelle — 5 à 10 % est courant, ce qui est très faible), le mode de calcul (forfaitaire par incident ou proportionnel au préjudice), et les exclusions — force majeure, pics non prévus, erreurs d'information de votre côté.
559
560**Ce qu'il faut négocier :** des pénalités différenciées par type de commande. Une livraison bloc opératoire ratée ne se traite pas comme un colis standard en retard d'un jour. Si votre prestataire refuse cette différenciation, c'est une information sur sa capacité réelle à gérer vos flux prioritaires.
561
562## Point 3 — L'interlocuteur dédié : qui décroche vraiment quand ça brûle
563
564À la signature, on vous présente un account manager. Souriant, réactif, disponible. Il connaît votre dossier.
565
566Six mois après, il a été remplacé. Ou il gère 12 autres clients. Ou il n'est joignable que par ticket sur une plateforme avec un délai de réponse de 4 heures.
567
568**Ce qu'il faut demander avant de signer :** le nom précis de votre interlocuteur opérationnel — pas commercial — et le périmètre exact de sa disponibilité. Combien de clients gère-t-il ? Quel est son délai de réponse contractuel en cas d'incident critique ? Qui le remplace en cas d'absence ?
569
570**Ce qu'il faut mettre dans le contrat :** un délai de réponse maximal en cas d'incident de niveau 1 (livraison bloquée, erreur de picking critique, rupture de chaîne du froid) — 30 minutes est un standard raisonnable pour ce niveau. Et une clause de notification si votre interlocuteur dédié change, avec un délai de transition.
571
572Un prestataire qui refuse de contractualiser les délais de réponse sur incidents critiques vous dit quelque chose sur la priorité que vous représentez dans son portefeuille.
573
574## Point 4 — Le plan de continuité : ce qui se passe quand leur entrepôt tombe
575
576Incendie, inondation, cyberattaque, grève, panne système majeure. Ces événements sont rares. Ils arrivent.
577
578La question n'est pas si votre prestataire a un plan de continuité — il en a forcément un, et il vous le montrera volontiers. La question est si ce plan a été testé, à quelle date, et ce qu'il prévoit concrètement pour vos flux spécifiques.
579
580**Ce qu'il faut demander :** la date du dernier test du plan de continuité, les résultats (temps de reprise effectif, pas théorique), et ce que le plan prévoit pour les flux à contrainte particulière — chaîne du froid, produits réglementés, commandes urgentes médicales.
581
582**Ce qu'il faut exiger :** un RTO (Recovery Time Objective) contractualisé — le délai maximal avant reprise des opérations. Et la liste des sites de repli dis
582ponibles si leur entrepôt principal est indisponible.
583
584Un plan de continuité non testé est un document de réassurance. Pas une garantie opérationnelle.
585
586## Point 5 — La visibilité sur les données : à qui appartient votre stock
587
588Quand vous confiez votre stock à un prestataire logistique, vos données de stock vivent dans son système. WMS propriétaire, plateforme maison, accès client via portail web.
589
590Ce point est sous-estimé jusqu'au jour où vous changez de prestataire — ou jusqu'au jour où vous avez besoin de données précises que le portail ne vous donne pas.
591
592**Ce qu'il faut vérifier :** le format d'export de vos données de stock (CSV, API, EDI), la fréquence à laquelle vous pouvez les extraire, et ce qu'il se passe en cas de résiliation — dans quel délai récupérez-vous l'historique complet de vos mouvements de stock ?
593
594**Ce qu'il faut mettre dans le contrat :** une clause de portabilité des données précisant le format, le délai de restitution en cas de fin de contrat (30 jours maximum), et la profondeur historique (minimum 3 ans de mouvements).
595
596Vos données de stock sont les vôtres. Assurez-vous que le contrat le dit explicitement — et que la procédure de récupération ne dépend pas de la bonne volonté du prestataire sortant.
597
598## Point 6 — La clause de sortie : combien ça coûte vraiment de partir
599
600C'est le point que personne ne lit à la signature parce que personne ne pense à partir au moment où l'on commence.
601
602C'est pourtant l'un des leviers de négociation les plus importants — et celui qui détermine si vous avez réellement un fournisseur ou une dépendance.
603
604**Ce qu'il faut vérifier :** le préavis de résiliation (6 à 12 mois est courant — négociez 3 mois si possible), les pénalités de sortie anticipée et leur mode de calcul, et les conditions dans lesquelles vous pouvez résilier sans pénalité (non-respect répété des SLA, changement de propriétaire du prestataire, hausse tarifaire unilatérale au-delà d'un seuil).
605
606**Ce qu'il faut exiger :** une clause de résiliation pour motif légitime liée à la performance — si le prestataire rate vos SLA pendant X mois consécutifs, vous pouvez sortir sans pénalité. Sans cette clause, vous êtes captif même si le service se dégrade.
607
608Un prestataire qui refuse toute clause de sortie liée à sa performance vous dit, avant même de commencer, qu'il ne se sent pas tenu par ses engagements.
609
610## Ce qu'il faut faire avec ces 6 points
611
612Ce ne sont pas des points de méfiance. Ce sont des points de professionnalisme.
613
614Un bon prestataire logistique accueille ces questions sans inconfort. Il y a des réponses claires, des pratiques documentées, des engagements contractualisables. Si ces questions créent de la résistance ou des réponses évasives — c'est une information précieuse à avoir avant de signer, pas après.
615
616**La règle simple :** tout ce qui est verbal à la signature et non écrit dans le contrat n'existe pas le jour de l'incident. Pas par mauvaise foi — par réalité opérationnelle. Les équipes changent, les contextes changent, les priorités changent. Ce qui est écrit, reste.
617
618Prenez le temps de négocier ces 6 points. C'est deux heures de travail supplémentaire avant la signature. C'est potentiellement deux ans de tranquillité opérationnelle — ou deux ans de conflits évitables.
619
620## Pour aller plus loin
621
622Vous êtes en cours de sélection d'un prestataire logistique ou en renégociation de contrat ?
623
624**Échange de cadrage — 30 min, sans engagement.** On passe en revue votre situation et j'identifie les points de votre contrat actuel ou en cours qui méritent attention.
625
626**[→ Réserver un échange](/contact)**`,publishDate:"2026-03-08",publishTime:"08:30",readTime:5,category:["Contrat","Prestataire","Guide de décision"],tags:["contrat prestataire logistique","choisir prestataire logistique PME","externalisation logistique contrat","SLA logistique","sous-traitance transport","plan continuité logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Le contrat est propre, les SLA définis. Six mois plus tard, vous découvrez les zones grises. Voici les 6 points à vérifier avant de signer."},{id:"recruter-responsable-logistique",slug:"recruter-responsable-logistique",title:"Vous recrutez un responsable logistique : les 7 questions à poser que personne ne pose",subtitle:"Pour dirigeants et DRH",chapo:"Un responsable logistique qui gère bien le chaos n'est pas la même chose qu'un responsable logistique qui réduit le chaos. Le premier tient sous pression. Le second transforme. La plupart des entretiens de recrutement ne font pas la différence entre les deux — parce que les questions posées ne le permettent pas. Voici les 7 questions qui changent ça.",coverImage:vie,coverImageCaption:"Entretien de recrutement — poser les bonnes questions pour identifier le bon profil logistique.",content:`## Question 1 — "Racontez-moi un problème récurrent que vous avez définitivement réglé — pas géré, réglé."
627
628C'est la première question qui sépare les deux profils.
629
630Gérer un problème récurrent, c'est le traiter chaque fois qu'il apparaît. Le régler, c'est en supprimer la cause pour qu'il n'apparaisse plus.
631
632Un bon opérationnel a beaucoup d'exemples de gestion. Un bon responsable logistique a des exemples de résolution — avec une cause identifiée, une action corrective mise en place, et un résultat mesuré dans le temps.
633
634**Ce que vous cherchez dans la réponse :** une cause nommée précisément, une action structurelle (pas un contournement), et la capacité à dire "depuis, le problème ne s'est plus reproduit."
635
636Si la réponse décrit une série d'interventions répétées sans résolution durable — vous avez un gestionnaire du chaos, pas un réducteur de chaos.
637
638## Question 2 — "Qu'est-ce que vous avez refusé de faire dans votre dernier poste — et pourquoi ?"
639
640Cette question déstabilise. C'est fait exprès.
641
642Un responsable logistique qui n'a jamais refusé quoi que ce soit est soit quelqu'un qui n'a jamais eu de conviction opérationnelle, soit quelqu'un qui vous dit ce que vous voulez entendre.
643
644Les meilleurs profils ont refusé des choses — une automatisation lancée trop tôt, un déploiement WMS sans formation suffisante, une réduction de stock 
644imposée sans analyse préalable. Et ils peuvent expliquer pourquoi, avec des arguments terrain, pas des arguments de confort.
645
646**Ce que vous cherchez dans la réponse :** une prise de position claire, argumentée sur des faits opérationnels, et l'issue — est-ce que le refus a été entendu, contourné, ou imposé malgré tout ?
647
648Un profil qui n'a jamais de friction avec sa direction sur des sujets opérationnels n'a probablement jamais eu de conviction forte sur quoi que ce soit.
649
650## Question 3 — "Comment saviez-vous, le lundi matin, que votre entrepôt allait bien ?"
651
652C'est une question sur le pilotage réel — pas sur le pilotage déclaré.
653
654Beaucoup de candidats vont vous citer des KPI. Taux de service, productivité picking, taux d'erreur. C'est bien. Mais la vraie question est : comment ils les lisaient, à quelle fréquence, et ce qu'ils faisaient quand un chiffre dérivait.
655
656**Ce que vous cherchez dans la réponse :** 3 à 5 indicateurs précis, un rythme de lecture clair (quotidien, hebdomadaire), et surtout — un exemple de dérive détectée tôt et traitée avant que ça devienne un incident. Un responsable qui découvre les problèmes quand ils arrivent dans le tableau de bord de son directeur n'anticipe pas. Il réagit.
657
658## Question 4 — "Décrivez-moi le pire état dans lequel vous avez trouvé un entrepôt — et par quoi vous avez commencé."
659
660Cette question révèle le sens des priorités — et la capacité à séquencer sous pression.
661
662Face à un entrepôt dégradé, les réflexes varient énormément. Certains attaquent le visible : le désordre physique, le rangement, la signalétique. C'est utile mais superficiel. D'autres attaquent le structurel : la précision de stock, les règles de flux, la fiabilité des données WMS. C'est plus lent à démarrer, mais c'est ce qui tient dans le temps.
663
664**Ce que vous cherchez dans la réponse :** une logique de séquençage explicite. Pourquoi commencer par ça et pas par autre chose ? Est-ce que le candidat distingue ce qui est urgent et visible de ce qui est prioritaire et structurel ?
665
666Un bon responsable logistique sait que remettre en ordre un entrepôt, c'est toujours commencer par les données et les flux — pas par le coup de balai.
667
668## Question 5 — "Racontez-moi une fois où l'outil n'était pas le problème — alors que tout le monde pensait que si."
669
670Cette question teste la capacité de diagnostic indépendant.
671
672Dans beaucoup d'entreprises, quand quelque chose ne fonctionne pas, la réponse instinctive est : "c'est le WMS", "c'est l'ERP", "c'est le transporteur." L'outil est un bouc émissaire commode parce qu'il ne se défend pas.
673
674Un bon responsable logistique a appris à distinguer un problème d'outil d'un problème de processus, de formation, ou de données. Et il a des exemples où cette distinction a évité un projet coûteux et inutile.
675
676**Ce que vous cherchez dans la réponse :** un cas concret où le diagnostic initial pointait l'outil et où le candidat a démontré que la vraie cause était ailleurs — avec la méthode utilisée pour l'établir.
677
678## Question 6 — "Comment vous comportez-vous avec un chef d'équipe qui fait mal son travail depuis longtemps — et que tout le monde ménage ?"
679
680C'est une question sur le courage managérial — et sur la capacité à ne pas reproduire les situations acquises.
681
682Dans les PME et ETI, il existe souvent un ou plusieurs profils "intouchables" — des anciens, des loyaux, des indispensables présumés — dont la performance réelle est dégradée depuis longtemps et que personne n'ose adresser.
683
684Un responsable logistique qui reproduit ce schéma par confort ou par évitement va consolider les dysfonctionnements existants plutôt que de les corriger.
685
686**Ce que vous cherchez dans la réponse :** une approche structurée — observation, dialogue direct, fixation d'objectifs clairs, accompagnement ou décision — et la capacité à distinguer la loyauté envers une personne de la loyauté envers la performance de l'équipe. Pas de la brutalité. De la clarté.
687
688## Question 7 — "Qu'est-ce qui vous ferait partir d'un poste en moins de 6 mois ?"
689
690C'est la question qui révèle les conditions réelles de réussite — celles que le candidat ne mettra pas spontanément sur la table.
691
692Un bon responsable logistique a des exigences opérationnelles. Il a besoin d'une direction qui prend les décisions difficiles quand elles s'imposent. D'un accès aux données réelles. D'une autorité claire sur son périmètre. D'un minimum de stabilité pour mettre en place ce qu'il a commencé.
693
694Si la réponse est vague ou trop consensuelle — "un mauvais climat", "pas de perspective d'évolution" — c'est que le candidat n'a pas encore réfléchi à ce dont il a besoin pour bien travailler. Ou qu'il vous dit ce qu'il croit que vous voulez entendre.
695
696**Ce que vous cherchez dans la réponse :** des conditions opérationnelles précises, formulées sans agressivité mais sans ambiguïté. Ce sont aussi vos conditions à vous — si vous ne pouvez pas les offrir, mieux vaut le savoir maintenant.
697
698## Ce que ces questions révèlent ensemble
699
700Aucune de ces questions n'évalue le CV. Le CV, vous l'avez déjà lu.
701
702Ces questions évaluent trois choses que le CV ne dit jamais : la capacité à diagnostiquer plutôt qu'à réagir, le courage opérationnel face aux situations installées, et la lucidité sur ses propres conditions de réussite.
703
704Un responsable logistique qui répond bien à ces 7 questions n'est pas forcément le plus expérimenté du lot. Il est probablement celui qui va réduire votre chaos — pas le gérer indéfiniment.
705
706**La question finale à vous poser après l'entretien :** est-ce que ce candidat m'a appris quelque chose sur mon propre entrepôt pendant cet échange ? Si oui — c'est souvent le bon signe.
707
708## Pour aller plus loin
709
710Vous êtes en train de recruter ou de restructurer votre fonction logistique ?
711
712**Échange de cadrage — 30 min, sans engagement.** On regarde ensemble ce dont votre entrepôt a vraiment besoin avant de définir le profil.
713
714[→ Réserver un échange](/contact)`,publishDate:"2026-02-12",publishTime:"08:30",readTime:5,category:["Recrutement","Dirigeant","Guide de décision"],tags:["recruter responsable logistique","questions entretien logistique","profil responsable supply chain PME","recrutement entrepôt","compétences chef logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"La plupart des entretiens de recrutement ne distinguent pas un gestionnaire du chaos d'un réducteur de chaos. Voici les 7 questions qui font la différence pour recruter le bon responsable logistique."},{id:"signaux-entrepot-decroche",slug:"signaux-entrepot-decroche",title:"Les 5 signaux qui indiquent que votre entrepôt va décrocher — avant que ça se voie dans les chiffres",subtitle:"Pour dirigeants et responsables supply chain",chapo:"Les tableaux de bord mentent. Pas par malveillance — par décalage. Un taux de service se calcule sur ce qui a été expédié. Pas sur ce qui a failli ne pas l'être. Pas sur les heures supplémentaires passées à tenir le chiffre. Pas sur l'énergie brûlée chaque semaine pour que rien ne se voie. Voici les 5 signaux à surveiller — avant que ça devienne une crise visible.",coverImage:gie,coverImageCaption:"Contrôle terrain en entrepôt — détecter les signaux faibles avant qu'ils ne deviennent des crises visibles.",content:`## Signal 1 — Les urgences sont devenues le mode de fonctionnement normal
715
716Dans un entrepôt sain, une urgence est une exception. Elle mobilise, elle se traite, elle se referme.
717
718Dans un entrepôt qui va décrocher, les urgences sont le flux principal. Les chefs d'équipe ne pilotent plus — ils arbitrent en permanence. Chaque matin recommence comme si la veille n'avait pas existé.
719
720**Ce qu'on entend sur le terrain :** "On gère au coup par coup." "On fait ce qu'on peut." "C'est comme ça depuis le rush de l'année dernière."
721
722Ce n'est pas de la résilience. C'est de l'épuisement organisé.
723
724Quand les urgences ne surprennent plus personne, c'est qu'elles ont remplacé la planification. Et une organisation sans planification tient jusqu'au premier pic qu'elle ne peut plus absorber.
725
726## Signal 2 — Les chefs d'équipe passent plus de temps à chercher l'information qu'à prendre des décisions
727
728Demandez à vos chefs d'équipe comment se passe leur matinée. S'ils vous décrivent 45 minutes passées à croiser des données entre le WMS, Excel et leurs messages, avant de pouvoir briefer leurs équipes — c'est un signal.
729
730Le pilotage d'un entrepôt suppose que l'information soit disponible, fiable et lisible en quelques minutes. Quand ce n'est pas le cas, le chef d'équipe devient un consolidateur de données — pas un manager opérationnel.
731
732**Ce que ça coûte en vrai :** des décisions prises avec 2 heures de retard. Des ressources mal affectées en début de poste. Des réajustements en cours de journée qui génèrent des erreurs. Et un chef d'équipe épuisé dès 10h00.
733
734Ce signal est invisible dans vos KPI. Il est parfaitement visible si vous passez une matinée avec eux.
735
736## Signal 3 — Les erreurs reviennent toujours du même endroit — et ça ne change pas
737
738Toute organisation logistique produit des erreurs. Ce n'est pas ça, le signal. Le signal, c'est quand les mêmes erreurs reviennent au même endroit, semaine après semaine, sans que personne ne remonte la cause.
739
740Une zone de picking qui génère 60 % des erreurs de préparation. Un fournisseur dont les réceptions posent toujours problème. Un type de commande qui rate systématiquement les cut-offs.
741
742Quand ces patterns existent et que personne ne les a formalisés — parce qu'on est trop dans le flux pour lever la tête — c'est que l'organisation a perdu sa capacité d'auto-correction.
743
744**La question à poser :** "Quelle est votre principale source d'erreurs en ce moment ?" Si la réponse arrive en moins de 10 
744secondes mais qu'aucune action corrective n'est en cours — vous avez votre réponse.
745
746## Signal 4 — Le stock "sur le papier" et le stock réel ont arrêté de se parler
747
748Ce signal est particulièrement sournois parce qu'il se développe lentement, et qu'on s'y habitue.
749
750Au début : quelques écarts inexpliqués lors des préparations. Des opérateurs qui vont vérifier physiquement avant de confirmer une disponibilité. Des ruptures sur des références qui devraient être en stock.
751
752Puis : une méfiance généralisée envers le WMS. Des contournements informels. Des "stocks tampons" constitués sans le dire pour compenser l'incertitude. Et des clients qui commencent à poser des questions.
753
754La précision de stock ne se dégrade pas du jour au lendemain. Elle se dégrade par accumulation de petits écarts non traités — mouvements non tracés, réceptions approximatives, retours mal retraités. Chacun pris isolément est anodin. Ensemble, ils rendent le stock illisible.
755
756**Le seuil d'alerte :** en dessous de 98 
756% de précision de stock, les perturbations opérationnelles commencent à se multiplier. En dessous de 95 %, c'est structurel.
757
758## Signal 5 — Les bonnes personnes commencent à partir — ou à se taire
759
760C'est le signal le plus tardif — et le plus grave.
761
762Quand un entrepôt dysfonctionne depuis trop longtemps, deux choses se passent. Les opérateurs et chefs d'équipe compétents — ceux qui voient les problèmes et qui pourraient contribuer à les résoudre — finissent par partir. Ou par se taire. Parce qu'ils ont remonté des problèmes qui n'ont pas été traités, et qu'ils ont appris que ça ne servait à rien.
763
764Ce qui reste : une organisation qui continue à fonctionner en surface, portée par des habitudes et des routines, mais sans la capacité de s'améliorer de l'intérieur.
765
766**Ce qu'on ne voit pas dans les chiffres :** le turnover logistique est souvent traité comme un problème RH. Il est rarement lu comme un signal opérationnel. C'est pourtant l'un des diagnostics les plus fiables de l'état réel d'un entrepôt.
767
768## Ce qu'il faut faire si vous reconnaissez un de ces signaux
769
770Un signal seul peut s'expliquer. Deux signaux simultanés méritent attention. Trois signaux ou plus — c'est une conversation à avoir rapidement, avant que ça devienne visible dans vos chiffres de taux de service ou dans une commande perdue.
771
772La bonne nouvelle : ces signaux se traitent. Pas avec un nouveau WMS, pas avec une automatisation d'urgence. Avec une lecture précise de ce qui se passe — et des actions correctives dans le bon ordre.
773
774**Ce qu'il faut regarder en premier :** prenez 2 heures avec vos chefs d'équipe. Pas en réunion. Sur le terrain. Demandez-leur ce qui les empêche de bien travailler. Ce qu'ils répondent dans les 3 premières minutes est le diagnostic le plus fiable que vous puissiez avoir.
775
776## Pour aller plus loin
777
778Vous reconnaissez un ou plusieurs de ces signaux dans votre entrepôt ?
779
780**Diagnostic flash — 2h, sans engagement.** J'identifie les 2 ou 3 points de friction prioritaires et ce qu'il faut stabiliser en premier.
781
782→ [Réserver un échange](/contact)`,publishDate:"2026-03-07",publishTime:"23:00",readTime:5,category:["Diagnostic","Terrain","Dirigeant"],tags:["signaux alerte entrepôt","performance logistique PME","taux de service entrepôt","précision de stock","dysfonctionnement logistique invisible","pilotage entrepôt dirigeant"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Un entrepôt peut afficher 96 % de taux de service tout en étant en train de se fissurer. Voici les 5 signaux à surveiller — avant que ça devienne une crise visible."},{id:"inventaire-annuel-entrepot",slug:"inventaire-annuel-entrepot",title:"Inventaire annuel en entrepôt : ce qu'il faut vraiment faire — et ce qu'on rate presque toujours",subtitle:"Méthode F.L.U.X™ — Guide opérationnel pour PME/ETI",chapo:"Il est 7h00. L'entrepôt est fermé aux flux. Personne ne reçoit, personne n'expédie. Tout le monde est là — opérateurs, intérimaires, chefs d'équipe. Certains n'ont jamais fait d'inventaire dans cette entreprise. Ce guide terrain couvre tout : préparation, rangement, comptage, clôture, et surtout l'après.",coverImage:Gre,coverImageCaption:"Checklist inventaire annuel — application de la méthode F.L.U.X™ en entrepôt.",content:`Il est 7h00. L'entrepôt est fermé aux flux. Personne ne reçoit, personne n'expédie. Tout le monde est là — opérateurs, intérimaires, chefs d'équipe. Certains n'ont jamais fait d'inventaire dans cette entreprise. Quelques-uns n'ont aucune idée de ce qu'on attend d'eux précisément.
783
784Les feuilles de comptage ont été imprimées ce matin. Le stock n'a pas été rangé depuis une semaine. Il reste des palettes à cheval entre deux emplacements, des retours clients non retraités en fond de zone, des articles en quarantaine mélangés au stock courant.
785
786À 7h30, le comptage commence. À 11h30, les premiers écarts remontent. Certains font 20 %. Certains sont inexplicables. Personne ne sait si c'est un problème de stock ou un problème de comptage. À 17h00, on ajuste dans le WMS. On clôture. On signe.
787
788L'an prochain, les mêmes écarts reviendront. Parce que leur cause n'a jamais été cherchée.
789
790## Le vrai problème
791
792L'inventaire annuel est souvent raté — pas le jour J, mais bien avant. Ce n'est pas un problème de méthode de comptage. Ce n'est pas un problème de personnel. C'est un problème de préparation — ou plutôt de l'absence de préparation structurée dans les semaines qui précèdent.
793
794La majorité des entreprises traitent l'inventaire comme un événement. Une journée à bloquer dans l'agenda, un rapport à produire pour la comptabilité, une contrainte légale à honorer. Ce n'est pas ça. L'inventaire est un diagnostic. Le seul moment de l'année où l'entrepôt dit la vérité complète sur lui-même — si on lui pose les bonnes questions, dans les bonnes conditions.
795
796Un inventaire mal préparé produit un chiffre. Un inventaire bien préparé produit un chiffre **et** une lecture de ce qui dysfonctionne dans la gestion quotidienne du stock. La différence entre les deux se joue quatre à six semaines avant le jour J.
797
798## Les bases d'abord
799
800Trois formes d'inventaire existent — et on les confond souvent.
801
802**L'inventaire annuel exhaustif** : comptage de toutes les références à une date définie, obligatoire juridiquement (Code de commerce, Art. L123-12), il valorise le stock pour le bilan comptable.
803
804**L'inventaire tournant** : comptage continu par rotation tout au long de l'année, reconnu fiscalement sous conditions, c'est la forme la plus saine opérationnellement mais elle suppose une maturité que beaucoup de PME n'ont pas encore.
805
806**L'inventaire de contrôle** : comptage ciblé après un incident ou un écart suspect, il ne remplace pas l'annuel.
807
808## Ce qui se joue 6 à 4 semaines avant
809
810C'est là que tout se décide. Pas le jour J.
811
812**Désigner un responsable inventaire dédié** — pas le directeur logistique qui gérera aussi les urgences du jour. Un responsable avec une autorité claire, un périmètre défini, un planning. Sans ça, tout le monde est responsable, ce qui veut dire que personne ne l'est vraiment.
813
814**Définir le périmètre par écrit** : quelles zones, les stocks en consignation, les marchandises en transit, les retours clients non retraités, les palettes en attente de contrôle qualité. Chaque zone ambiguë doit être tranchée avant le jour J.
815
816**Planifier l'arrêt des flux** : fermer la réception la veille au soir, décaler les expéditions au lendemain.
817
818**Préparer les feuilles de comptage depuis le WMS** — numérotées, traçables, nominatives, pas imprimées le matin même.
819
820**Constituer des binômes mixtes** : un opérateur terrain + un référent administratif ou chef d'équipe. Ne pas laisser un opérateur compter seul les emplacements qu'il gère habituellement — le biais de confirmation est réel.
821
822## Le chantier le plus sous-estimé : le rangement
823
824Quatre à deux semaines avant. C'est le travail le plus déterminant — et le plus souvent sauté.
825
826**Une référence par emplacement**, sans mélange.
827
828**Isoler physiquement les stocks particuliers** : articles en quarantaine ou litige qualité, articles à détruire (DDM dépassée, abîmés), retours clients non retraités, articles en attente de décision. Ces articles ne doivent pas être comptés dans le stock valorisable — s'ils ne sont pas séparés physiquement avant le jour J, ils ne le seront pas le jour J non plus.
829
830**Régler le cas des conditionnements partiels** : une boîte ouverte avec 7 unités sur 12, on compte en unités ou en boîtes ? Ces règles se décident avant, par écrit.
831
832**Traiter les emplacements fantômes** : tout emplacement physiquement occupé doit exister dans le WMS.
833
834**Réduire les en-cours** : réceptions partiellement saisies, transferts non finalisés.
835
836## La semaine avant : technique et formation
837
838**Geler les paramétrages WMS** — aucune modification de nomenclature, d'unités, d'emplacements dans les sept jours précédant l'inventaire. Une référence qui change d'unité la veille génère des écarts inexplicables le lendemain.
839
840**Préparer le snapshot WMS horodaté** : état figé du stock théorique — quantités, emplacements, lots, dates de péremption. C'est la référence contre laquelle chaque comptage sera comparé.
841
842**Former les équipes — vraiment** : pas une note de service, une session de 30 à 45 minutes sur les règles précises.
843
844**Tester le matériel** : scanners, tablettes, imprimantes, batteries — avec des pièces de rechange disponibles.
845
846## Le jour J : déroulé et points critiques
847
848Arrêt total des mouvements WMS avant le début du comptage. Extraction du snapshot final horodaté. Briefing de 15 minutes maximum. Distribution des feuilles numérotées.
849
850### Méthode à l'aveugle ou guidée ?
851
852La méthode à l'aveugle — quantité théorique non affichée — produit des comptages plus fiables : l'opérateur compte ce qu'il voit, sans être influencé. La méthode guidée est plus rapide mais génère un biais de confirmation documenté.
853
854**Recommandation terrain** : méthode à l'aveugle sur les références à forte valeur ou à historique d'écart, méthode guidée sur les références à faible valeur et fort volume.
855
856### Le double comptage n'est pas optionnel
857
858Tout écart dépassant un seuil défini doit être recompté par un second binôme indépendant. Ce seuil se définit avant, par écrit — typiquement écart supérieur à 5 % ou à X unités ou à Y euros.
859
860### Clôture
861
862Toutes les feuilles remises, saisie et réconciliation, rapport d'écarts, décision sur chaque écart (dans les seuils → ajustement direct / hors seuils → second comptage / inexpliqué → fiche d'anomalie), puis signature du procès-verbal d'inventaire.
863
864## Ce que tout le monde saute : l'après
865
866Les écarts ne sont pas des chiffres à corriger dans le WMS. Ce sont des **symptômes**.
867
868Les causes les plus fréquentes :
869
870- Erreurs de picking (slotting flou, signalétique insuffisante)
871- Réceptions mal saisies (procédure non respectée)
872- Mouvements non tracés (transferts informels, prélèvements sans sortie WMS)
873- Problèmes d'étiquetage
874
875Chaque cause identifiée doit générer une action corrective dans les semaines suivantes — pas dans six mois.
876
877## Ce que ça change selon le secteur
878
879### Pharmaceutique/médical GDP/GMP
880
881Comptage par lot et par date de péremption obligatoire, articles en quarantaine réglementaire exclus du stock valorisable, procès-verbal susceptible d'audit ANSM, vérification du FEFO lors du comptage.
882
883### Agroalimentaire/chaîne du froid
884
885Rotations d'équipes courtes en zone froide négative (20 à 30 minutes), planning intégrant les rotations et les équipements.
886
887### Multi-sites
888
889Snapshot WMS extrait simultanément sur tous les sites, stocks en transit rattachés à un seul périmètre.
890
891## Lecture F.L.U.X™
892
893**Fiabiliser** le stock physique avant le jour J.
894
895**Lire** les données correctement — snapshot, double comptage, analyse des écarts par cause.
896
897**Unifier** les informations entre comptabilité, logistique, qualité, ach
897ats.
898
899**eXécuter** les actions correctives dans les semaines qui suivent.
900
901<!-- CHECKLIST_INVENTAIRE_COMPONENT -->
902
903## Ce qu'il faut regarder en premier
904
905Quatre questions avant de parler méthode de comptage :
906
907- Mon stock est-il rangé — vraiment, un emplacement = une référence ?
908- Mes articles hors stock valorisable sont-ils physiquement isolés ?
909- Mon WMS est-il figé pendant le comptage ?
910- Mon équipe sait-elle exactement quoi faire avec un cas particulier ?
911
912Si une réponse est floue, le reste de la préparation ne servira pas à grand-chose.
913
914## Vous voulez savoir où en est votre entrepôt avant le prochain inventaire ?
915
916**Diagnostic flash logistique — 2h, sans engagement.**
917
918J'identifie les 2 ou 3 points qui faussent vos inventaires avant même le jour J.
919
920→ [Réserver un échange](/contact)`,publishDate:"2026-03-07",publishTime:"22:00",readTime:10,category:["Méthode","Opérationnel","PME/ETI"],tags:["inventaire annuel","entrepôt PME","WMS","écarts de stock","inventaire tournant","GDP","double comptage","méthode F.L.U.X™"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"L'inventaire annuel est souvent raté — pas le jour J, mais bien avant. Guide terrain complet : préparation, rangement, comptage, clôture, et ce que tout le monde saute — l'après."},{id:"cas-terrain-ia-chef-equipe-entrepot",slug:"cas-terrain-ia-chef-equipe-entrepot",title:"Cas terrain : comment un entrepôt a libéré 3 heures par jour à ses chefs d'équipe grâce à l'IA opérationnelle",subtitle:"Secteur : dispositifs médicaux — Entrepôt multi-température, Île-de-France",chapo:"Dans un entrepôt médical, le chef d'équipe ne court pas après les palettes. Il court après l'information. Ce cas terrain montre comment un copilote IA a transformé le quotidien d'une ETI — sans remplacer le WMS, sans big bang, en 8 semaines.",coverImage:Vre,coverImageCaption:"Pilotage opérationnel en entrepôt — tablette et dashboard IA au poste de travail.",content:`## Ce que personne ne voit — et qui coûte cher
921
922Chaque matin : extraction des rapports WMS, vérification des commandes urgentes, tour de la zone froide, réunion de lancement, affectation des opérateurs, gestion des intérimaires, arbitrage sur les priorités bloc opératoire. Avant même que la préparation commence, 2 à 3 heures sont déjà consommées.
923
924Ce cas, je l'ai vu dans plusieurs configurations. Des entrepôts différents, des secteurs différents, mais le même pattern : des chefs d'équipe compétents, expérimentés, qui passent la moitié de leur énergie à reconstruire une image de la situation au lieu de la piloter.
925
926Ce n'est pas un problème de ressources. C'est un problème d'organisation de l'information.
927
928## Le contexte : une ETI avec des flux qu'on n'a pas le droit de rater
929
930L'entreprise gère un entrepôt en Île-de-France spécialisé dans les dispositifs médicaux. Ses clients : hôpitaux, cliniques, laboratoires, blocs opératoires. Ses contraintes : réelles.
931
932- Plus de 6 000 références, dont une partie à criticité médicale élevée
933- Trois zones de température : ambiant, froid positif (+2/+8°C), froid négatif
934- SLA clients stricts — un retard sur une commande bloc opératoire n'est pas un incident commercial, c'est un incident médical
935- Demande volatile : urgences, ajouts de dernière minute, pic de certains dispositifs sans préavis
936
937Les chefs d'équipe sont le pivot. Ce sont eux qui décident, en temps réel, où mettre les ressources, quelles commandes prioriser, comment absorber les aléas sans dégrader la qualité de service.
938
939Et avant ce projet, ils le faisaient à la main. Avec Excel, le WMS, leur expérience — et beaucoup de stress.
940
941## Le diagnostic terrain
942
943Trois problèmes ont été identifiés dès les premières observations :
944
945### 1. Une perte de temps structurelle
946
9472 à 3 heures par jour absorbées par la consolidation d'informations dispersées entre le WMS, les plannings et les échanges informels. Ce n'est pas du pilotage — c'est de la remontée de données manuelle.
948
949### 2. Un risque permanent
950
951Peur de rater une commande critique. Peur d'un écart de chaîne du froid non détecté à temps. Peur de surcharger une zone sans s'en rendre compte. La prise de décision reposait trop sur le ressenti, pas assez sur des données actualisées.
952
953### 3. Des données sous-exploitées
954
955Le WMS contenait les informations utiles. Elles n'étaient pas transformées en décisions opérationnelles en temps réel. L'outil était là — le lien entre l'outil et le pilotage ne l'était pas.
956
957## L'objectif : un copilote, pas un remplaçant
958
959L'ambition du projet était claire dès le départ : ne pas remplacer le chef d'équipe. Le doter d'un copilote.
960
961La différence est fondamentale. Un copilote propose. Il alerte. Il synthétise ce que le chef d'équipe n'a pas le temps de reconstituer seul. Mais c'est le chef d'équipe qui décide. Toujours.
962
963Les trois questions auxquelles l'outil devait répondre en temps réel :
964
965> *"Quelles commandes dois-je traiter maintenant pour ne rater aucun SLA critique ?"*
966
967> *"Où dois-je affecter mes opérateurs pour éviter un goulet dans l'heure ?"*
968
969> *"Quelle zone risque de saturer si je ne renforce pas ?"*
970
971Ces questions, chaque chef d'équipe se les posait déjà — en les reconstituant à la main. L'objectif : que l'outil y réponde automatiquement, à partir des données déjà existantes dans le système.
972
973## La solution : tableau de bord temps réel + moteur de recommandations
974
975Côté utilisateur : un écran unique, accessible depuis le poste de pilotage ou une tablette.
976
977Il affiche en continu :
978- Les commandes à traiter, triées par priorité (criticité médicale, SLA, type de client, contrainte température)
979- La charge estimée par zone (froid positif, froid négatif, ambiant)
980- L'affectation recommandée des opérateurs par zone et par créneau horaire
981
982Ce tableau de bord remplace plusieurs extractions Excel, des rapports papier et des dizaines d'échanges informels par jour.
983
984Sous le capot : un moteur IA qui analyse en continu l'historique des commandes et des incidents, l'avancement réel dans chaque zone, la polyvalence des opérateurs et leur présence effective. Il propose un ordre de traitement, des recommandations de renfort ("renforce la zone froid positif dans les 20 minutes"), et des alertes anticipant les saturations.
985
986Le chef d'équipe valide, ajuste, ou ignore. Et quand il ajuste, l'outil apprend.
987
988## Le déploiement : 8 semaines, sans big bang
989
990Un projet court et pragmatique — conçu pour une PME/ETI, pas pour un grand groupe avec une équipe IT dédiée.
991
992### Semaines 1–2 — Cadrage terrain
993
994Observation des journées de chefs d'équipe. Cartographie des décisions qu'ils prennent et de ce qui leur prend du temps. Sélection de 5 à 8 indicateurs clés à suivre en temps réel.
995
996### Semaines 3–5 — Connexion aux données et premier moteur
997
998Connexion au WMS, aux plannings RH et aux règles métiers (SLA, contraintes produits). Construction d'un modèle simple de capacité par zone et par créneau. Premier moteur de priorisation opérationnel.
999
1000### Semaines 6–8 — Tests en réel et ajustements
1001
1002Utilisation en mode conseil : l'outil propose, le chef d'équipe valide. Ajustement des règles de priorité selon les retours terrain. Passage progressif en usage quotidien sur plusieurs équipes.
1003
1004Aucune robotisation. Aucun remplacement de WMS. Le même système, mieux exploité.
1005
1006## Les résultats après deux mois
1007
1008### Temps libéré : 2 à 3 heures par jour et par chef d'équipe
1009
1010Les réunions de début de poste sont réduites et structurées autour du plan proposé par le copilote. La matinée commence sur une base claire, pas sur une reconstruction.
1011
1012### Mieux-disant opérationnel
1013
1014Meilleure tenue des délais sur les commandes médicales critiques. Les saturations dans les zones froides sont anticipées — avec des renforts planifiés au lieu de réactions en catastrophe.
1015
1016### Impact humain positif
1017
1018Les chefs d'équipe sont davantage sur le terrain, disponibles pour accompagner leurs équipes et gérer la qualité. Les arbitrages sont mieux acceptés : les décisions s'appuient sur des données, pas uniquement sur le ressenti ou l'autorité.
1019
1020## Avant / Après : une journée de chef d'équipe
1021
1022<!-- AVANT_APRES_COMPONENT -->
1023
1024## Ce que ce cas dit pour d'autres secteurs
1025
1026Ce cas est tiré d'un environnement médical. La même approche fonctionne dans tout contexte de logistique complexe ou sensible :
1027
1028- **Agroalimentaire** : chaîne du froid, pics de saisonnalité, DLC à piloter
1029- **Pharmaceutique** : contraintes GDP/GMP, traçabilité lot, FEFO strict
1030- **Industrie multi-sites** : flux croisés, références critiques, planification ressources
1031
1032L'essentiel est de partir de la réalité opérationnelle des chefs d'équipe — leurs décisions quotidiennes, leurs contraintes propres — et non d'une technologie cherchant un cas d'usage.
1033
1034## Principe F.L.U.X™
1035
1036Ce projet illustre la séquence que j'applique systématiquement :
1037
1038- **Fiabiliser** d'abord les flux physiques et les données de base.
1039- **Lire** correctement ce que les données disent — sans les noyer dans de
1039s outils qui amplifient leur imprécision.
1040- **Unifier** l'information entre fonctions, en temps réel.
1041- **eXécuter** avec des décisions fondées sur des données, pas sur des reconstructions manuelles.
1042
1043L'IA ne corrige pas le chaos. Elle l'amplifie. Ce projet a fonctionné parce que les données du WMS étaient fiables, les processus existants étaient documentés, et l'outil a été conçu pour augmenter le chef d'équipe — pas pour le contourner.
1044
1045## Vous vous reconnaissez dans ce cas ?
1046
1047Vous gérez un entrepôt avec des flux sensibles — médical, pharma, agro, froid — et vos chefs d'équipe passent plus de temps à reconstituer l'information qu'à piloter ?
1048
1049**Diagnostic IA Logistique — 2h, sans engagement.**
1050En moins de deux heures, j'identifie 1 à 3 cas d'usage concrets pour libérer du temps à vos équipes et sécuriser vos flux.
1051
1052→ [Réserver un échange](/contact)`,publishDate:"2026-03-07",publishTime:"14:00",readTime:8,category:["IA opérationnelle","Cas terrain","Entrepôt"],tags:["IA logistique","copilote IA","chef d'équipe","dispositifs médicaux","chaîne du froid","PME ETI","F.L.U.X™","WMS"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Comment un entrepôt médical a libéré 2 à 3 heures par jour à ses chefs d'équipe grâce à un copilote IA opérationnel — sans remplacer le WMS, en 8 semaines."},{id:"checklist-location-entrepot-50-points",slug:"checklist-location-entrepot-50-points",title:"Checklist : 50 points à vérifier avant de signer un contrat de location d'entrepôt",subtitle:"Pièges juridiques (clauses de résiliation, charges cachées) et critères techniques (hauteur sous plafond, accès PL) : tout ce qu'on ne vérifie pas — et qu'on regrette.",chapo:"Un bail d'entrepôt, c'est souvent 6, 9 ou 12 ans d'engagement. Des centaines de milliers d'euros de loyers cumulés. Cette checklist en 50 points couvre les pièges juridiques du bail et les critères techniques du bâtiment — les deux dimensions que personne ne regroupe dans un même document.",coverImage:Kre,coverImageCaption:"Quais de chargement d'un entrepôt logistique — les critères techniques se vérifient avant la signature du bail.",content:`Un bail d'entrepôt, c'est souvent 6, 9 ou 12 ans d'engagement. Des centaines de milliers d'euros de loyers cumulés. Des investissements lourds en rayonnages, systèmes de sécurité, WMS. Et une promesse implicite : que ce bâtiment va permettre de faire fonctionner l'opération correctement, chaque jour, pendant toute la durée du contrat.
1053
1054Si vous voulez comprendre ce que représente concrètement ce quotidien opérationnel, [une journée type dans un entrepôt logistique](/analyses-outils/journee-entrepot-logistique) donne une idée très précise de ce que le site doit pouvoir accueillir.
1055
1056Pourtant, la majorité des baux d'entrepôt sont signés après une visite de 2 heures, une lecture rapide du contrat, et une négociation focalisée sur le loyer au m². Les clauses qui font vraiment la différence — résiliation anticipée, répartition des travaux, charges récupérables, conformité ICPE — sont lues trop vite ou pas du tout.
1057
1058Cette checklist en 50 points couvre les deux dimensions que personne ne regroupe dans un même document : les pièges juridiques du bail, et les critères techniques du bâtiment. Les deux sont indissociables. Un entrepôt techniquement parfait sur un bail défavorable est un piège. Un bail bien rédigé sur un bâtiment inadapté est un autre piège. Il faut les deux.
1059
1060> **Le contexte de marché en 2025** — Loyer moyen d'entrepôt sur la dorsale logistique française (Paris-Lyon-Lille) : 63 €/m²/an — avec une hausse annuelle de 12 %. Paris : 89 €/m²/an. Lyon : 71 €/m²/an. Lille : 57 €/m²/an. Marchés secondaires (Bordeaux, Marseille, Nantes) : ~55 €/m²/an. Le contrat signé engage bien plus que le loyer facial. Il engage le schéma directeur logistique sur toute la durée du bail.
1061
1062---
1063
1064## BLOC A — PIÈGES JURIDIQUES DU BAIL (25 points)
1065
1066### A1 — Durée et résiliation
1067
1068**☐ 1. La durée ferme du bail est-elle clairement identifiée ?**
1069Le bail 3-6-9 classique permet une résiliation à chaque période triennale sous réserve d'un préavis de 6 mois. Mais attention : pour les entrepôts (locaux de stockage), la Loi Pinel autorise les bailleurs à supprimer la faculté de résiliation triennale. Un bail d'entrepôt sans sortie triennale garantie engage pour toute la durée ferme — vérifiez si c'est 6, 9 ou 12 ans.
1070
1071**☐ 2. Le préavis de résiliation est-il de 6 mois minimum ?**
1072Le délai légal pour donner congé est de 6 mois avant l'échéance. Tout préavis plus long contractuellement imposé est une contrainte supplémentaire à négocier.
1073
1074**☐ 3. La clause résolutoire est-elle encadrée avec un délai raisonnable ?**
107592 % des baux commerciaux français contiennent une clause résolutoire (2025). 63 % prévoient un délai de mise en demeure inférieur à 30 jours. Vérifiez le délai de régularisation accordé avant résiliation automatique — et assurez-vous que la clause respecte le formalisme légal (commandement préalable par commissaire de justice).
1076
1077**☐ 4. La cession du bail est-elle libre ou soumise à accord du bailleur ?**
1078Une clause d'agrément trop restrictive (conditions financières impossibles à satisfaire, accord discrétionnaire sans recours) peut bloquer toute cession de bail en cas de cession d'activité ou de rachat.
1079
1080**☐ 5. La destination des locaux est-elle rédigée suffisamment large ?**
1081La clause de destination détermine les activités autorisées dans l'entrepôt. Une rédaction trop étroite ("stockage et distribution de produits alimentaires secs") interdit toute évolution d'activité sans accord du bailleur — et peut justifier une résiliation judiciaire (Cass. com., 18/09/2024 : résiliation validée pour une activité représentant seulement 15 % du CA).
1082
1083### A2 — Loyer et indexation
1084
1085**☐ 6. L'indice d'indexation est-il symétrique (hausse ET baisse) ?**
1086Une clause d'indexation qui ne prévoit qu'une révision à la hausse est réputée non écrite (Cass. com., 12/01/2023). Vérifiez que la clause prévoit explicitement que l'indice s'applique tant à la hausse qu'à la baisse.
1087
1088**☐ 7. La révision triennale du loyer est-elle plafonnée ?**
1089La révision ne peut excéder la variation de l'indice (ILC ou ILAT selon le type de local) sur la période. Certains contrats incluent des clauses de "rattrapage" ou de "lissage" permettant d'appliquer rétroactivement des hausses non appliquées — pratique contestée par les tribunaux (CA Paris, 4/03/2020).
1090
1091**☐ 8. Un pas-de-porte est-il demandé ? Est-il justifié et chiffré ?**
1092Le pas-de-porte est légal s'il est distinct du loyer, clairement identifié, et d'un montant proportionné. Un montant disproportionné ou non motivé peut être contesté.
1093
1094**☐ 9. Le loyer est-il négociable en valeur économique totale sur la durée, et non seulement en €/m²/an ?**
1095En 2025, avec un taux de vacance de 6,3 % et une demande en recul de 4 %, les bailleurs acceptent plus facilement des franchises de loyer, des participations aux aménagements, ou des durées fermes plus courtes. La négociation doit porter sur la valeur totale, pas uniquement sur le facial.
1096
1097### A3 — Charges et travaux
1098
1099**☐ 10. La liste des charges récupérables sur le locataire est-elle précise et conforme au décret R.145-35 du Code de commerce ?**
1100Depuis 2014, certaines charges ne peuvent pas être imputées au locataire : grosses réparations de l'article 606 du Code civil, honoraires de gestion du bailleur, travaux de mise en conformité relevant de vétusté ou de non-conformité initiale.
1101
1102**☐ 11. La taxe foncière est-elle refacturée ? Cette refacturation est-elle explicitement prévue au contrat ?**
1103La refacturation de la taxe foncière est légale mais doit être contractualisée. Vérifiez qu'elle ne comprend pas la taxe d'enlèvement des ordures ménagères, déjà incluse dans les charges récupérables.
1104
1105**☐ 12. Les charges sont-elles provisionnées avec régularisation annuelle, ou forfaitisées sans régularisation ?**
1106Une provision forfaitaire sans régularisation annuelle est contraire à l'article R.145-35. Exigez un décompte annuel des charges réelles.
1107
1108**☐ 13. La répartition des travaux de gros entretien est-elle clairement définie entre bailleur et locataire ?**
1109Les grosses réparations (toiture, structure, fondations) sont à la charge du bailleur (article 606 du Code civil). Toute clause transférant ces obligations au locataire est réputée non écrite.
1110
1111**☐ 14. Qui prend en charge les travaux de mise en conformité (accessibilité, sécurité incendie, décret tertiaire) ?**
1112Point juridique délicat : sans clause spécifique, la répartition est source de litige. Exigez une rédaction précise distinguant les travaux liés à la vétusté (bailleur) des adaptations liées à l'activité du locataire (locataire).
1113
1114**☐ 15. L'annexe environnementale est-elle présente si la surface dépasse 2 000 m² ?**
1115Obligatoire depuis la Loi Grenelle II pour les locaux de plus de 2 000 m². Son absence peut être invoquée par le locataire comme vice du contrat.
1116
1117### A4 — Conformité réglementaire et autorisations
1118
1119**☐ 16. L'entrepôt dispose-t-il des autorisations ICPE compatibles avec votre activité ?**
1120Un bail signé sur un entrepôt dont le classement ICPE est incompatible avec l'activité prévue (rubrique 1510, 1530 ou autres) place le locataire dans l'impossibilité de démarrer — ou l'oblige à des travaux majeurs. Le bail doit comporter des engagements explicites du bailleur sur la [conformité réglementaire en entrepôt pharmaceutique](/analyses-outils/logistique-pharmaceutique-tracabilite).
1121
1122**☐ 17. Les autorisations administratives nécessaires à votre activité sont-elles obtenues ou obtenables dans les délais du projet ?**
1123Une demande d'autorisation ou d'enregistrement ICPE peut prendre 6 à 18 mois. Si le démarrage de l'activité en dépend, cette c
1123ontrainte doit être intégrée dans la négociation du bail (clause suspensive, franchise de loyer pendant l'instruction).
1124
1125**☐ 18. Le bâtiment est-il conforme aux normes incendie actuelles (arrêté du 11 avril 2017, rubrique 1510) ?**
1126Vérifiez : système de détection automatique d'incendie, désenfumage, cellules ≤ 3 000 m² sans sprinklers (ou ≤ 6 000 m² avec sprinklers), voie "engins" de 6 m de large et 4,5 m de haut libre autour du bâtiment.
1127
1128**☐ 19. Le permis de construire et les documents d'urbanisme sont-ils accessibles et conformes à l'usage prévu ?**
1129Demandez communication du permis de construire, de l'attestation de conformité, et vérifiez que l'usage "entrepôt logistique" est bien compatible avec le PLU (Plan Local d'Urbanisme) de la commune.
1130
1131**☐ 20. Y a-t-il des servitudes (passages, canalisations, droits de voisinage) qui pourraient restreindre l'exploitation ?**
1132Consultez le titre de propriété et le plan cadastral. Certaines servitudes limitent les horaires de circulation PL, les niveaux sonores, ou les travaux d'extension.
1133
1134### A5 — Protection du locataire à la sortie
1135
1136**☐ 21. L'état des lieux d'entrée est-il formalisé de façon précise et détaillée ?**
1137L'état des lieux conditionne ce qui sera réclamé à la sortie. Un état des lieux vague expose à des contestations sur la remise en état.
1138
1139**☐ 22. Les travaux d'aménagement réalisés par le locataire seront-ils incorporés au bâtiment ou devront-ils être déposés à la sortie ?**
1140Sans clause explicite, le bailleur peut exiger la dépose des aménagements (mezzanines, cloisonnements, systèmes sprinklers ajoutés) à la charge du locataire en fin de bail.
1141
1142**☐ 23. Le dépôt de garantie est-il proportionné et ses conditions de restitution sont-elles précisées ?**
1143Le dépôt est généralement de 3 mois de loyer hors charges. Vérifiez les délais de restitution et les conditions de rétention (notamment sur la base d'un état des lieux de sortie contradictoire).
1144
1145**☐ 24. Le droit au renouvellement est-il prévu ? À quelles conditions ?**
1146Le droit au renouvellement protège le locataire en fin de bail. Vérifiez qu'aucune clause ne le conditionne à des critères difficilement atteignables, et intégrez le risque de déplafonnement du loyer au renouvellement.
1147
1148**☐ 25. Une procédure de médiation préalable est-elle prévue en cas de litige ?**
1149Depuis le décret n°2023-1098 du 29 novembre 2023, une tentative de règlement amiable préalable est imposée pour les litiges relatifs aux baux commerciaux. La clause de médiation doit désigner un organisme et fixer les délais.
1150
1151---
1152
1153> **Pourquoi les critères techniques sont aussi importants que le juridique** — Un entrepôt avec 6 mètres de hauteur sous tablette exploitable stocke 40 % de marchandises supplémentaires par rapport à un entrepôt à 4,5 mètres, à surface égale. Un quai de niveau inadapté signifie des ruptures de charge quotidiennes et une perte de productivité permanente. Ces contraintes ne se négocient pas après la signature. Elles se vérifient avant.
1154
1155---
1156
1157## BLOC B — CRITÈRES TECHNIQUES DU BÂTIMENT (25 points)
1158
1159### B1 — Géométrie et volume utile
1160
1161**☐ 26. Quelle est la hauteur libre sous ferme (et non au faîtage) ?**
1162La hauteur utile pour le stockage est la hauteur libre sous ferme (sous les éléments de structure), pas la hauteur au point le plus haut de la toiture. Seuils pratiques : ≥ 7 m pour du stockage palettes sur racks 5 niveaux, ≥ 10 m pour des engins à mât rétractable haute performance, ≥ 12 m pour des opérations automatisées.
1163
1164**☐ 27. La surface au sol annoncée correspond-elle à la surface utile nette ?**
1165Vérifiez la différence entre la surface brute (incluant murs, poteaux, bureaux intégrés) et la surface nette réellement exploitable en stockage. Les poteaux structuraux réduisent la densité de racks possible.
1166
1167**☐ 28. La trame des poteaux est-elle compatible avec vos allées de stockage ?**
1168La trame standard pour un entrepôt avec chariots contrebalancés est de 12 × 12 m minimum. Pour des chariots à mât rétractable, une trame de 10,8 × 12 m est préférable. Une trame inadaptée force des allées sous-dimensionnées ou des espaces perdus.
1169
1170**☐ 29. La superficie totale est-elle évolutive (possibilité d'extension ou de cellules supplémentaires) ?**
1171Vérifiez si des cellules adjacentes sont disponibles ou si le bail prévoit un droit de préférence sur des surfaces voisines en cas de développement de l'activité.
1172
1173### B2 — Sol et charge
1174
1175**☐ 30. Quelle est la charge au sol admissible (en t/m²) ?**
1176Seuil minimal pour une activité de stockage palettes standard : 3 t/m². Pour des racks grande hauteur ou des chariots lourds : 5 à 7 t/m². Pour des systèmes automatisés ou des allées très denses : demandez une étude de sol spécifique.
1177
1178**☐ 31. Le sol est-il plan et dressé selon la norme FM Global ou EN 15620 ?**
1179Pour les entrepôts à grande hauteur (> 6 m), la planéité du sol conditionne la sécurité et la stabilité des racks. Vérifiez si un rapport de planéité récent est disponible.
1180
1181**☐ 32. Le sol est-il imperméable et équipé de rétention ?**
1182Obligation réglementaire ICPE : le sol doit être étanche, avec des dispositifs de rétention permettant de collecter les eaux de lavage et les eaux d'extinction en cas d'incen
1182die.
1183
1184**☐ 33. Les joints de dilatation du sol sont-ils en bon état ?**
1185Des joints dégradés sur un sol industriel peuvent endommager les chariots, provoquer des chutes de charges et générer des coûts de maintenance récurrents. Vérifiez l'état lors de la visite.
1186
1187### B3 — Quais et accès poids lourds
1188
1189**☐ 34. Combien de quais de chargement/déchargement le bâtiment compte-t-il ?**
1190Dimensionnement indicatif : 1 quai pour 2 500 à 4 000 m² de surface, selon la fréquence de flux. Vérifiez si le nombre de quais est cohérent avec votre volume de réceptions/expéditions journalières.
1191
1192**☐ 35. Les quais sont-ils de niveau (quais à niveau de camion) ou nécessitent-ils des niveleurs hydrauliques ?**
1193Les niveleurs sont standard mais leur état conditionne la sécurité et la fluidité du chargement. Vérifiez l'état des tabliers et des lèvres de quai lors de la visite.
1194
1195**☐ 36. Les portes sectionnelles des quais sont-elles aux dimensions standard (H 4,5 m × L 4 m minimum pour un PL 40 tonnes) ?**
1196Une porte sous-dimensionnée bloque certains types de remorques (frigorifiques, mega-volume). Vérifiez la hauteur libre utile avec portes ouvertes.
1197
1198**☐ 37. La cour de manœuvre est-elle suffisante pour les PL 40 tonne
1198s ?**
1199Profondeur minimale pour qu'un semi-remorque de 16,5 m puisse manœuvrer et se mettre à quai : 35 m minimum (préférable : 40 m). En dessous, les manœuvres sont contraintes et chronophages.
1200
1201**☐ 38. L'accès routier au site est-il compatible avec la circulation des poids lourds 24h/24 ?**
1202Vérifiez : réglementation locale (arrêtés de circulation PL, zones à faibles émissions), gabarit des voies d'accès, état de la voirie, accès depuis le réseau autoroutier.
1203
1204**☐ 39. Y a-t-il une aire de retournement ou de stationnement PL sécurisée ?**
1205Un parking PL dimensionné permet d'absorber les attentes aux quais sans congestionner la voirie. Son absence génère des tensions avec le voisinage et des risques de verbalisations.
1206
1207### B4 — Équipements et installations techniques
1208
1209**☐ 40. Quelle est la puissance électrique disponible sur le site (en kVA) ?**
1210Pour un entrepôt standard avec une flotte de chariots électriques, prévoir au minimum 200 à 400 kVA selon la taille du parc. Pour des systèmes automatisés : bien davantage. Demandez le titre d'abonnement EDF actuel ou les possibilités d'extension.
1211
1212**☐ 41. Y a-t-il un local de charge de batteries conforme (ventilé, équipé de rétention acide) ?**
1213Obligation réglementaire pour les ateliers de charge de batteries d'engins de manutention (rubrique ICPE 2925). Vérifiez sa superficie par rapport à la taille de la flotte prévue.
1214
1215**☐ 42. Le système de chauffage/ventilation est-il adapté à votre activité ?**
1216Pour du stockage sec standard : température positive maintenue en hiver. Pour du pharmaceutique ou de l'agroalimentaire : températures contrôlées et systèmes de monitoring à valider contractuellement.
1217
1218**☐ 43. Le système sprinkler est-il présent, conforme et dont la maintenance est à jour ?**
1219Un sprinkler conforme à la norme EN 12845 (ou NFPA 13) permet de porter la surface des cellules ICPE à 6 000 m². Vérifiez la date de la dernière inspection réglementaire et qui prend en charge la maintenance annuelle.
1220
1221**☐ 44. L'éclairage est-il suffisant et à quelle charge le remplacement revient-il ?**
1222Standard actuel : éclairage LED à au minimum 200 lux dans les allées de stockage. Un éclairage vieilli représente un investissement en remplacement à négocier ou à faire prendre en charge par le bailleur.
1223
1224**☐ 45. Le réseau télécom et fibre optique est-il disponible sur le site ?**
1225Indispensable pour le WMS, les terminaux RF, et les systèmes de surveillance. Vérifiez la couverture réseau mobile (4G/5G) dans les zones de stockage — les entrepôts en tôle métallique créent souvent des zones blanches.
1226
1227### B5 — Environnement, sécurité et exploitation
1228
1229**☐ 46. L'entrepôt est-il clôturé et dispose-t-il d'un système de contrôle d'accès ?**
1230Sécurité des marchandises stockées, assurance marchandises, obligations contractuelles clients (retail, pharma) : vérifiez le niveau de sécurité périmétrique et la compatibilité avec vos exigences.
1231
1232**☐ 47. Quelles sont les contraintes d'horaires d'exploitation (voisinage, PLU, arrêtés municipaux) ?**
1233Certains sites sont soumis à des restrictions d'horaires de livraison (exemple : pas de PL entre 22h et 6h, pas de week-end). Si votre activité implique du flux nocturne ou 7j/7, vérifiez en mairie avant de signer.
1234
1235**☐ 48. Y a-t-il des bureaux et vestiaires suffisants pour les effectifs prévus ?**
1236Surface réglementaire minimale des vestiaires et sanitaires (Code du travail, R.4228-2 et suivants) en fonction des effectifs. Un entrepôt sous-dimensionné en locaux sociaux implique des travaux d'aménagement à la charge du locataire.
1237
1238**☐ 49. Le DPE (Diagnostic de Performance Énergétique) est-il disponible et quelle est la classe du bâtiment ?**
1239Un entrepôt classé E, F ou G sera progressivement soumis à des obligations de rénovation. La question de qui finance ces travaux (bailleur ou locataire) doit être tranchée contractuellement avant signature.
1240
1241**☐ 50. Le site a-t-il subi des sinistres (incendies, inondations, pollutions des sols) ? L'historique est-il documenté ?**
1242Un site avec antécédent de pollution des sols peut engager la responsabilité de l'exploitant lors de la remise en état à la sortie. Demandez communication des études de sol existantes et vérifiez l'historique ICPE du site auprès de la préfecture (base de données Géorisques / BASIAS).
1243
1244---
1245
1246## Conclusion
1247
124850 points, c'est beaucoup. Et pour un bail d'entrepôt sur 9 ans avec 2 millions d'euros de loyers cumulés, c'est une matinée de travail préparatoire.
1249
1250Ces 50 points ne remplacent pas une lecture attentive du contrat par un avocat spécialisé en baux commerciaux. Ils servent à préparer cette lecture — à identifier les points à négocier, les questions à poser au bailleur, les éléments à vérifier lors de la visite technique.
1251
1252Un entrepôt mal choisi ou un bail mal négocié se paie pendant toute la durée du contrat. Un entrepôt bien choisi sur un bail bien rédigé, c'est la fondation silencieuse de toute la performance logistique qui suivra.
1253
1254Pour [un audit de site avant signature](/services/diagnostic), CHAL·CONSULTING IA vous accompagne sur le terrain.
1255
1256> **Ce que je vérifie en priorité lors d'une visite site** — Après des années en entrepôts chez IKEA, Nike, Bio-Rad, Cenexi, j'ai développé un réflexe : avant de regarder les documents, je marche dans l'entrepôt. Je regarde la hauteur de la ferme. Je compte les quais. Je vérifie si un PL peut manœuvrer. Je cherche l'atelier de charge. Je teste le réseau mobile dans les allées du fond. Tout ça prend 20 minutes. Et ça révèle plus que 2 heures de lecture des fiches techniques.
1257
1258---
1259
1260*Sources : WK Transport-Logistique 2025 (loyers entrepôts France, taux vacance 6,3 %) · Code de commerce — article R.145-35 (charges récupérables bail commercial) · Loi Pinel n°2014-626 du 18 juin 2014 (résiliation triennale baux stockage) · Cass. com., 12/01/2023 (clause indexation symétrique) · Cass. com., 18/09/2024 (résiliation bail pour violation destination) · Décret n°2023-1098 du 29/11/2023 (médiation préalable baux commerciaux) · Arrêté du 11 avril 2017 — rubrique ICPE 1510 (prescriptions entrepôts couverts) · Légifrance — Code de l'environnement, titre Ier livre V · Juridique Magazine / Conseil National des Barreaux 2025 (92 % baux avec clause résolutoire, 43 % clauses indexation irrégulières) · Observations terrain CHAL·CONSULTING IA — audits entrepôts PME/ETI 2023–2025.*`,publishDate:"2026-02-16",publishTime:"08:00",readTime:8,category:["Outil pratique","Immersion terrain","Réglementation"],tags:["checklist location entrepôt","pièges bail logistique","bail entrepôt","location entrepôt PME","contrat logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"50 points à vérifier avant de signer un bail d'entrepôt : clauses de résiliation, charges récupérables, ICPE, hauteur sous plafond, accès poids lourds. Checklist terrain pour responsables logistiques PME et ETI.",embedType:"markdown"},{id:"analyser-flux-entrepot-une-journee",slug:"analyser-flux-entrepot-une-journee",title:"Comment analyser les flux d'un entrepôt en une journée",subtitle:"Une approche terrain pour optimiser la logistique",chapo:"Dans un environnement logistique en constante évolution, optimiser les flux d'un entrepôt est un enjeu majeur. Grâce à une approche terrain basée sur l'observation directe, il est possible d'analyser les flux en une seule journée — et d'en tirer des actions concrètes.",coverImage:Dx,coverImageCaption:"Observation terrain et analyse des flux logistiques en entrepôt — méthode CHAL·CONSULTING IA",content:`Dans un environnement logistique en constante évolution, optimiser les flux d'un entrepôt est un enjeu majeur pour garantir une productivité maximale et une gestion des ressources optimale. Mais comment procéder lorsque le temps est limité ? Grâce à une approche terrain basée sur l'observation directe, il est possible d'analyser les flux d'un entrepôt en une seule journée.
1261
1262Cette méthode, inspirée de retours d'expérience concrets, permet d'identifier les goulots d'étranglement, de mesurer les temps clés et de proposer des solutions immédiates. Voici comment procéder.
1263
1264> **L'essentiel en une phrase** — L'observation directe sur le terrain permet de comprendre les dynamiques réelles de l'entrepôt et d'agir rapidement pour améliorer la fluidité des flux.
1265
1266---
1267
1268## 1. Préparation : définir les objectifs et les outils
1269
1270Avant de vous rendre sur le terrain, identifiez les objectifs principaux de votre analyse :
1271
1272- Réduire les temps de manutention ?
1273- Optimiser l'espace de stockage ?
1274- Améliorer la fluidité des mouvements entre les zones ?
1275
1276**Outils nécessaires :**
1277
1278- Un plan détaillé de l'entrepôt.
1279- Un chronomètre ou une application de mesure du temps.
1280- Un carnet de notes ou une tablette pour enregistrer les observations.
1281- Un appareil photo pour capturer les points critiques.
1282
1283---
1284
1285## 2. Observation directe : immergez-vous dans le flux
1286
1287### a. Cartographier les mouvements
1288
1289- Suivez physiquement le parcours d'un produit, depuis son arrivée jusqu'à son expédition.
1290- Notez les temps d'attente, les goulots d'étranglement, et les zones de congestion.
1291- Identifiez les mouvements inutiles ou les retours en arrière.
1292
1293### b. Analyser les interactions humaines
1294
1295- Observez les échanges entre les opérateurs et les responsables logistiques.
1296- Relevez les difficultés rencontrées (manque de matériel, consignes floues, etc.).
1297
1298### c. Mesurer les temps clés
1299
1300- Chronométrez les étapes critiques : déchargement, stockage, préparation de commandes, chargement.
1301- Comparez ces temps avec les standards théoriques pour [mesurer les temps clés](/analyses-outils/10-kpi-logistiques-entrepot).
1302
1303> **Ordre de grandeur** — Dans un entrepôt de 5 000 m², une observation a révélé que les opérateurs perdaient 20 minutes par heure à chercher des produits mal rangés. Une simple réorganisation a réduit ce temps de 60 %.
1304
1305---
1306
1307## 3. Identifier les points de friction
1308
1309À partir de vos observations, listez les problèmes récurrents :
1310
1311- **Zones de blocage** : espaces trop étroits, équipements mal placés.
1312- **Retards** : attentes pour les chariots élévateurs, files d'attente aux quais.
1313- **Erreurs** : produits mal étiquetés, commandes incomplètes.
1314
1315---
1316
1317## 4. Proposer des solutions immédiates
1318
1319Synthétisez vos observations et proposez des actions correctives rapides :
1320
1321- **Réaménagement des zones** : regrouper les produits fréquemment commandés ensemble.
1322- **Optimisation des parcours** : réduire les distances parcourues par les opérateurs.
1323- **Formation ciblée** : clarifier les consignes pour éviter les erreurs.
1324
1325> **Attention aux détails** — Les solutions les plus efficaces sont souvent les plus simples : un marquage au sol ou une réorganisation des zones peut faire gagner des heures de travail par semaine.
1326
1327---
1328
1329## 5. Restitution et plan d'action
1330
1331En fin de journée, organisez une réunion de restitution avec les responsables :
1332
1333- Présentez vos observations de manière visuelle (photos, schémas).
1334- Hiérarchisez les problèmes en fonction de leur impact.
1335- Proposez un plan d'action priorisé pour les 48 heures, 1 semaine et 1 mois à venir.
1336
1337**Exemple de plan d'action :**
1338
1339| Priorité | Action | Responsable | Échéance |
1340|----------|--------|-------------|----------|
1341| Haute | Réorganiser la zone de préparation | Chef d'équipe | 48h |
1342| Moyenne | Former les opérateurs aux nouvelles consignes | RH | 1 semaine |
1343| Basse | Automatiser les rapports de flux | IT | 1 mois |
1344
1345---
1346
1347## Conclusion
1348
1349Analyser les flux d'un entrepôt en une journée est un défi réalisable grâce à une approche terrain rigoureuse. En combinant observation directe, mesure des temps et écoute des équipes, vous obtiendrez des résultats concrets et actionnables.
1350
1351Pour aller plus loin sur la démarche globale d'optimisation d'entrepôt : [la méthode complète pour optimiser un entrepôt logistique](/analyses-outils/comment-optimiser-un-entrepot-logistique-methode-complete).
1352
1353Découvrez également [nos services d'audit logistique](/services/diagnostic) pour un accompagnement personnalisé.
1354
1355---
1356
1357*Sources : Observations terrain CHAL·CONSULTING IA — audits PME/ETI France 2024–2026 · Méthodologie Lean Logistics · Retours d'expérience clients.*`,publishDate:"2026-03-06",publishTime:"08:00",readTime:7,category:["Méthode","Optimisation","Flux logistiques"],tags:["Flux logistiques","Optimisation entrepôt","Observation terrain","Productivité","PME logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Découvrez comment analyser les flux d'un entrepôt en une seule journée grâce à une approche terrain. Méthode concrète pour identifier les goulots d'étranglement, optimiser les mouvements et améliorer la productivité sans investissement lourd.",embedType:"markdown"},{id:"ia-logistique-2026-mon-regard-terrain",slug:"ia-logistique-2026-mon-regard-terrain",title:"IA, robots, agents, modélisation — ce que j'en pense vraiment",subtitle:"Pigment, Alstef, RedLynk, Conex, sedApta, Kinaxis, Wavestone : six actualités logistiques récentes. Un regard sans langue de bois. Et une question centrale : qu'est-ce que tout ça change pour une PME française aujourd'hui ?",chapo:"Les newsletters logistiques débordent d'annonces IA. Agents modélisateurs, AGV intelligents, jumeaux numériques, gestionnaires virtuels. Je décortique sept actualités récentes avec un seul filtre : qu'est-ce que ça change concrètement pour une PME française avec un entrepôt de 3 000 m² ?",coverImage:oie,coverImageCaption:"Intelligence artificielle et robotique en entrepôt logistique — décryptage terrain 2026",content:`Je lis beaucoup de newsletters logistique et supply chain. Pas pour faire de la veille passive — pour comprendre où va le marché, ce que les éditeurs sont en train de promettre, et surtout ce que ça signifie concrètement pour les entreprises que j'accompagne.
1358
1359Ces dernières semaines ont été particulièrement denses. Pigment annonce un agent IA qui génère des modèles de planification en langage naturel. Alstef dote ses AGV d'une "bulle de perception avancée". Un nouveau cabinet de conseil hybride, RedLynk, revendique l'expertise augmentée. Conex lance un agent conversationnel pour la classification douanière. sedApta présente LUMI VM, son "gestionnaire virtuel IA". Et Kinaxis s'allie à Databricks pour unifier la data de sa plateforme d'orchestration. Sans oublier le radar WMS 2025 de Wavestone, toujours utile, qui braque les projecteurs sur l'IA et le jumeau numérique.
1360
1361C'est beaucoup. Et beaucoup peut facilement devenir du bruit si on ne sait pas comment le lire.
1362
1363Alors je vais faire ce que j'essaie de toujours faire : poser le filtre terrain. Pas pour invalider ces innovations — plusieurs sont réellement intéressantes. Mais pour dire clairement ce qui change maintenant, ce qui changera dans 3 ans, et ce qui ne changera probablement pas grand-chose pour une PME française de 50 à 500 salariés avec un entrepôt de 3 000 m².
1364
1365> **Mon filtre de lecture** — Je ne commente pas les communiqués de presse. Je commente ce que ces annonces signifient pour les entreprises que je vois de l'intérieur. La question que je pose systématiquement : *"Dans quelle condition précise ce produit ou cette fonctionnalité crée-t-il de la valeur réelle — et pour qui ?"*
1366
1367---
1368
1369## #1 — Pigment · L'Intent Modeling et l'agent modélisateur
1370
1371Pigment est une licorne française — ce qui est déjà rare, et mérite d'être souligné. Créée fin 2019, la plateforme s'est positionnée dès le départ sur la planification stratég
1371ique et la gestion de la performance. Elle fait maintenant un pas de plus : l'Intent Modeling, soit la capacité pour des équipes métier de décrire en langage naturel ce qu'elles veulent modéliser — et d'obtenir un modèle déployable en quelques heures, voire minutes, via un agent dédié en cours de brevet.
1372
1373La promesse : supprimer "la lourdeur technique qui ralentit l'adaptation des modèles". La co-CEO Éléonore Crespo dit que "les entreprises ne peuvent plus se permettre d'attendre des semaines ou des mois pour que leurs modèles rattrapent la réalité". Elle a raison sur le diagnostic.
1374
1375> **MON AVIS TERRAIN — Pigment / Intent Modeling**
1376>
1377> Ce que Pigment fait est techniquement impressionnant. Et le diagnostic qu'ils posent sur la planification en entreprise est juste : les modèles sont trop lents à évoluer, trop dépendants des équipes IT, trop figés face à une réalité commerciale qui bouge vite.
1378>
1379> Maintenant, disons ce qui est vrai aussi : Pigment s'adresse à des organisations qui ont déjà des équipes de planification structurées, des données propres et consolidées, et une maturité analytique suffisante pour utiliser ce type d'outil. On parle de grandes ETI, de groupes cotés, d'entreprises avec une fonction Supply Chain dédiée et des modèles existants à faire évoluer.
1380>
1381> Pour une PME de 80 personnes dont le responsable logistique gère encore la planification dans Excel, l'Intent Modeling arrive après plusieurs étapes qui n'ont pas encore été franchies. Vous ne pouvez pas modéliser intelligemment en langage naturel si vos données de base — stock, demande, lead times — ne sont ni fiables ni consolidées.
1382>
1383> Ce n'est pas une critique de Pigment. C'est un rappel de séquençage. La technologie est bonne. La maturité nécessaire pour en tirer de la valeur n'est pas encore là dans la majorité des PME françaises.
1384>
1385> **Ce que je retiens positivement** : le principe de l'Intent Modeling — décrire un besoin en langage naturel et obtenir un outil opérationnel — va descendre en gamme. Dans 2 à 4 ans, des WMS PME intégreront des fonctionnalités analogues, beaucoup plus simples. C'est le signal, pas encore le produit.
1386
1387---
1388
1389## #2 — Alstef Group · La "bulle de perception avancée" sur les AGV
1390
1391Alstef Group est un acteur sérieux de l'intralogistique automatisée. Ce qu'ils annoncent est concret : des AGV (Autonomous Guided Vehicles) qui deviennent des AIV (Autonomous Intelligent Vehicles) grâce à des caméras embarquées et des modèles IA. Ces véhicules peuvent désormais distinguer un piéton d'une palette, un chariot manuel d'un panneau de signalisation, et adapter leur comportement en temps réel.
1392
1393La "bulle de perception avancée" est disponible en deux versions : une configuration avant/arrière (disponible cet été), et une perception 360° (prévue pour 2027). Deux avantages opérationnels concrets : plus besoin de programmer manuellement les passages piétons, et plus besoin de positionner très précisément une palette pour que le véhicule la prenne en charge.
1394
1395> **MON AVIS TERRAIN — Alstef / AGV intelligents**
1396>
1397> Ça, c'est du concret. Pas du futur lointain — du présent déployable.
1398>
1399> Ce qui m'intéresse particulièrement dans cette annonce, c'est la dimension "sites existants et en exploitation". L'un des freins majeurs à l'automatisation des entrepôts PME et ETI, c'est précisément qu'on part du principe qu'il faut reconstruire le site, repenser les allées, refaire le marquage au sol. Une IA embarquée capable de s'adapter à un environnement existant, imparfait, évolutif — c'est un changement de paradigme réel pour ce marché.
1400>
1401> Maintenant, deux nuances. La première : "un prix de marché très compétitif" reste relatif. Pour une PME avec 3 chariots manuels et un transpalette électrique vieillissant, l'AIV reste une décision d'investissement significative qui suppose une justification de ROI solide — et une organisation logistique déjà structurée pour absorber la technologie.
1402>
1403> La deuxième : un AGV intelligent ne remplace pas des processus défaillants. Si votre flux de picking est chaotique, si vos emplacements sont mal adressés, si votre précision de stock est à 94 % — l'AIV va naviguer intelligemment dans un entrepôt désorganisé. C'est une amélioration. Ce n'est pas une transformation.
1404>
1405> **Ce que je retiens** : Alstef fait exactement ce que je préconise en matière d'automatisation — partir de la réalité terrain et y adapter l'out
1405il, pas l'inverse. La direction est bonne.
1406
1407---
1408
1409## #3 — RedLynk · Le cabinet "hybride" qui combine expertise et outils digitaux
1410
1411RedLynk est fondé par Charly Limou et Hervé Duparcq — deux vétérans de la Supply Chain avec plus de 50 ans d'expérience cumulée, co-fondateurs du cabinet Forizons en 2017, racheté par Square en 2021. Après 3 ans et demi chez Square, ils créent leur propre structure autour d'un concept "hybride" : un expert métier senior + un chercheur-développeur spécialisé IA et modélisation, qui travaillent en duo sur chaque mission. Les livrables ne sont pas des slides figées mais des outils digitaux — jumeaux numériques, applications de network design — proposés en abonnement et mis à jour régulièrement.
1412
1413> **MON AVIS TERRAIN — RedLynk / Le modèle hybride**
1414>
1415> Je vais être direct : c'est le modèle vers lequel le conseil en Supply Chain devait évoluer. Et je dis ça en tant que concurrent indirect, ce qui rend l'observation d'autant plus honnête.
1416>
1417> La critique classique du conseil logistique — "on produit des recommandations en slides que personne ne met en œuvre" — est juste. Je l'ai vécue de l'intérieur, dans plusieurs grandes entreprises. Les diagnostics sont souvent excellents. La traduction opérationnelle, trop souvent, disparaît dans le quotidien.
1418>
1419> Ce que RedLynk fait en couplant l'expert métier et le développeur IA, c'est supprimer ce gap. La recommandation devient un outil que le client pilote lui-même, mis à jour, re-simulable en quelques heures. C'est exactement ce que les équipes opérationnelles demandent et n'obtiennent jamais des cabinets traditionnels.
1420>
1421> Maintenant, ce modèle a une limite structurelle : il suppose que le client soit prêt à investir dans un outil sur-mesure, à maintenir un abonnement, et à avoir des équipes capables d'utiliser un jumeau numérique ou une application de network design de façon autonome. Pour les ETI et les grands groupes — pertinent. Pour la PME de 40 personnes dont le responsable logistique n'a pas de budget outil et dix autres priorités — pas encore le bon niveau.
1422>
1423> **Ce qui me différencie de RedLynk** : ma cible est précisément ce segment PME/ETI que les cabinets senior évitent parce que les tickets sont plus petits et les processus plus fragiles. Je ne fais pas des outils sur-mesure — je fais de la mise en ordre opérationnelle. La séquence d'abord, l'outil ensuite.
1424
1425---
1426
1427## #4 — Conex · L'agent Alba pour la classification tarifaire douanière
1428
1429Conex, 40 ans d'expertise en logiciel de dédouanement, lance Alba — un agent conversationnel spécialisé dans la classification tarifaire, intégré nativement aux outils des déclarants en douane. L'agent analyse texte, photos et documents, pose des questions de clarification, croise les sources réglementaires, et propose la classification la plus pertinente. Taux de classification exacte revendiqué : 95 %, sur la base de milliers d'interrogations validées par des experts humains. Le déclarant reste maître de la décision finale.
1430
1431> **MON AVIS TERRAIN — Conex / Agent Alba**
1432>
1433> C'est l'une des annonces qui me semble la plus mûre et la plus honnête de cette sélection. Et c'est précisément parce que Conex ne prétend pas remplacer le déclarant — il donne un outil à quelqu'un qui a déjà la compétence, pour l'exercer plus vite et avec moins d'incertitude.
1434>
1435> La classification tarifaire en douane est un domaine où l'erreur a des conséquences réelles : blocages de marchandises, contentieux, redressements financiers. Ce n'est pas un jeu. Et c'est aussi un domaine où la complexité réglementaire est telle que même des experts chevronnés passent un temps considérable à croiser des sources.
1436>
1437> Un agent qui fait ce croisement en quelques secondes, tout en gardant la décision dans les mains d'un humain qualifié — c'est de l'augmentation de compétence, pas de la substitution.
1438>
1439> **Ce que j'aurais aimé savoir** : le 95 % de classifications exactes — sur quelles catégories de produits ? Les 5 % restants, c'est quoi ? Une erreur sur une classification banale ou une erreur sur un produit réglementé à fort enjeu ? Les taux globaux masquent souvent des performances très variables selon les segments produits.
1440>
1441> **Ce que je retiens positivement** : Conex illustre ce que l'IA fait de mieux quand elle est bien encadrée — transformer une compétence rare en outil accessible, sans retirer la responsabilité à l'humain qui la détient. C'est exactement le bon modèle.
1442
1443---
1444
1445## #5 — sedApta · DDM+ 2025 et LUMI VM, le "gestionnaire virtuel IA"
1446
1447L'éditeur italien sedApta présente DDM+ 2025, évolution de sa suite end-to-e
1447nd O.S.A+, avec au cœur LUMI VM — un "Virtual Manager" développé depuis 3 ans, capable d'interagir en langage naturel (oral ou écrit) avec les managers et opérationnels SC. La promesse : suggestions proactives après détection d'aléas en temps réel, jusqu'à la prise de décision automatique.
1448
1449> **MON AVIS TERRAIN — sedApta / LUMI VM**
1450>
1451> "Gestionnaire virtuel basé sur l'IA" est une formulation qui mérite qu'on s'y arrête. Pas pour la critiquer — pour la lire correctement.
1452>
1453> Ce que LUMI VM fait concrètement : détecter des aléas en temps réel, suggérer des réponses proactives, et potentiellement prendre des décisions en automatique. C'est une chaîne de valeur analytique complète — et si les données en entrée sont fiables et si le paramétrage est bien fait, c'est réellement utile.
1454>
1455> Mais voilà où je mets un bémol : "prise de décision en automatique" dans un contexte Supply Chain n'est pas anodin. Une décision automatique de réapprovisionnement sur une référence critique, ou un re-routage automatique d'une expédition urgente — ces décisions ont des conséquences réelles, financières et relationnelles. La question n'est pas "l'IA peut-elle prendre cette décision ?" — elle peut. La question est "dans quelles conditions l'entreprise est-elle prête à déléguer cette décision à un système ?"
1456>
1457> Pour les organisations qui ont 3 ans de données propres, une équipe SC formée à l'analytique, et des processus documentés — oui, LUMI VM peut apporter de la valeur réelle. Pour les autres — et elles sont nombreuses — ce type de promesse crée plus de risque qu'il n'en résout.
1458>
1459> **Ce que je retiens** : la direction est inévitable. Dans 5 ans, les outils de planification Supply Chain auront tous une couche d'IA qui suggère, alerte et propose. La question n'est pas si — c'est quand, et dans quel état d'organisation vous l'accueillez.
1460
1461---
1462
1463## #6 — Kinaxis + Databricks · La data fabric pour Maestro
1464
1465Kinaxis, acteur majeur de l'orchestration Supply Chain avec sa plateforme Maestro, annonce un partenariat avec Databricks pour construire un socle unifié de données. L'enjeu : intégrer et fiabiliser rapidement des données hétérogènes — ERP, WMS, IoT, prévisions météo, réseaux sociaux — pour alimenter l'IA de Maestro.
1466
1467> **MON AVIS TERRAIN — Kinaxis / Databricks**
1468>
1469> Ce partenariat est le plus "infrastructure" de cette sélection, et c'est aussi le plus fondamental.
1470>
1471> Tout le monde parle d'IA en Supply Chain. Personne ou presque ne parle du problème réel qui empêche l'IA de fonctionner dans 80 % des entreprises : **la donnée est sale, fragmentée, incohérente entre les systèmes**. Vous pouvez avoir le meilleur modèle prédictif du monde — si votre ERP et votre WMS ne se synchronisent pas correctement, si vos données de stock sont à 95 % de précision, si vos lead times fournisseurs sont saisies manuellement — l'IA produit du bruit sophistiqué.
1472>
1473> Ce que Kinaxis et Databricks font ensemble, c'est s'attaquer à ce problème à la racine. Et c'est la bonne priorité.
1474>
1475> Maintenant : Kinaxis et Databricks, c'est le segment Enterprise. Ce sont des investissements à plusieurs millions d'euros, des projets d'intégration longs, des équipes data dédiées. La leçon est universelle. Le produit ne l'est pas.
1476>
1477> **La leçon pour une PME** : avant de penser à l'IA, pensez à votre donnée. Votre précision de stock, votre cohérence ERP/WMS, votre historique de commandes propre — c'est votre Data Intelligence Platform à vous. Elle ne coûte pas des millions. Elle demande de la rigueur et une méthode.
1478
1479---
1480
1481## #7 — Wavestone · Le radar WMS 2025, IA et jumeau numérique
1482
1483Wavestone publie l'édition 2025 de son radar WMS. Sur 175 solutions identifiées, 61 ont été retenues — dont 29 françaises. Trois catégories : Pure Players (22), Généralistes, et Complémentaires (13). Le marché WMS mondial est estimé en croissance de +15 % par an jusqu'en 2032, pour dépasser 11 milliards de livres sterling. Focus 2025 : l'IA (chatbot pour paramétrage, gestion des litiges, optimisation du slotting) et le jumeau numérique (simulation de flux et d'infrastru
1483ctures).
1484
1485> **MON AVIS TERRAIN — Wavestone Radar WMS 2025**
1486>
1487> Le radar WMS de Wavestone, je le suis depuis plusieurs éditions. C'est un des travaux de veille les plus sérieux et les plus utiles sur ce marché en France. Et cette édition 2025 fait quelque chose d'important : elle ne confond pas l'IA comme marketing et l'IA comme fonctionnalité réelle.
1488>
1489> Chatbot pour faciliter le paramétrage d'un WMS — oui, c'est une vraie douleur dans les entrepôts PME. Le paramétrage d'un WMS est souvent la première raison pour laquelle des modules ne sont jamais activés ("c'était trop complexe au démarrage, on l'a désactivé"). Un chatbot qui guide le responsable logistique dans la configuration de ses règles de slotting ou de ses flux de réception — c'est concret, utile, déployable maintenant.
1490>
1491> Le jumeau numérique est un horizon plus lointain pour les PME. La capacité de simuler son entrepôt en 3D pour optimiser les flux avant de les déployer physiquement — c'est intéressant. C'est aussi un investissement de temps et de budget qui présuppose que les processus existants soient déjà documentés et stables.
1492>
1493> **Ce que j'aurais aimé voir dans le radar** : un axe "accessibilité PME". Parce que 61 solutions WMS, ça ne dit pas grand-chose si on ne sait pas lesquelles sont réalistes pour une entreprise de 50 salariés avec un budget de déploiement de 80 à 150 K€ tout compris.
1494>
1495> **Ce que je retiens** : la croissance de +15 % du marché WMS n'est pas un buzz. C'est la traduction chiffrée du fait que les entrepôts PME sous-équipés sont en train de se rattraper — sous la pression des attentes clients et de la concurrence. C'est mon marché. Et il bouge.
1496
1497---
1498
1499## Ce que tout ça dit — Vue d'ensemble
1500
1501Après avoir lu, décortiqué et commenté ces sept actualités, voilà les trois lignes de fond que j'en tire.
1502
1503### 1. L'IA en logistique, c'est réel. Mais le pré-requis reste la donnée.
1504
1505Pigment, Kinaxis, sedApta, Conex — des technologies différentes, une même contrainte sous-jacente : elles produisent de la valeur uniquement si les données qu'elles consomment sont fiables. Une IA nourrie de données sales produit des décisions rapides et confiantes... et fausses. L'obsession pour l'outil fait oublier que l'outil amplifie ce qui existe déjà. Processus instables = instabilité amplifiée. Données incorrectes = mauvaises décisions automatisées.
1506
1507Ce n'est pas nouveau. C'est juste plus urgent à comprendre maintenant que les outils se déploient plus vite que les organisations ne sont prêtes à les accueillir.
1508
1509→ *Lire aussi : [10 KPI logistiques qui comptent vraiment pour piloter un entrepôt](/analyses-outils/10-kpi-logistiques-entrepot)*
1510
1511### 2. Le conseil logistique se transforme — et c'est une bonne nouvelle.
1512
1513RedLynk illustre une transformation que je perçois sur le terrain depuis 18 mois : les entreprises ne veulent plus de recommandations figées. Elles veulent des outils qu'elles pilotent, des diagnostics qu'elles peuvent re-simuler, des consultants qui restent dans la durée et pas seulement pour la livraison du rapport.
1514
1515C'est exigeant pour les consultants. C'est beaucoup mieux pour les clients. Et ça crée un marché pour les indépendants qui ont à la fois l'expertise terrain et la capacité à produire des livrables opérationnels — pas seulement analytiques.
1516
1517### 3. Le gap PME reste entier — et c'est là que se joue l'enjeu réel.
1518
1519Toutes ces annonces s'adressent principalement aux ETI structurées et aux grandes entreprises. Ce n'est pas une critique — c'est le marché naturel de ces acteurs. Mais la réalité française, c'est que la majorité des entrepôts logistiques sont des structures de 2 000 à 8 000 m², avec des équipes de 10 à 30 personnes, des WMS parfois vieillissants, des processus rarement documentés, et des responsables logistiques qui gèrent seuls des arbitrages qui mériteraient une équipe.
1520
1521Ces entreprises ne déploieront pas Pigment demain. Elles n'achèteront pas des AIV Alstef cette année. Mais elles ont les mêmes problèmes d'organisation, de précision de stock, de picking, de slotting — et ces problèmes se résolvent avec une méthode et un regard extérieur compétent, pas avec un budget technologique.
1522
1523→ *Lire aussi : [Amazon a changé les règles du jeu. Voici comment les PME peuvent répondre.](/analyses-outils/amazon-pme-logistique-comment-repondre)*
1524
1525---
1526
1527## Conclusion
1528
1529Je vais continuer à lire les newsletters. À suivre Pigment, Alstef, les radars WMS, les annonces des éditeurs. Non pas pour être à la mode — mais parce que comprendre où va le marché est une compétence de conseil. Un consultant qui ne fait pas de veille active finit par conseiller avec 3 ans de retard.
1530
1531Mais je vais aussi continuer à aller dans les entrepôts. À marcher dans les allées à 6h du matin avec les chefs d'équipe. À compter les palettes. À regarder les écarts de stock. À poser des questions aux préparateurs sur ce qui coince depuis 6 mois et que personne n'a encore écrit nulle part.
1532
1533Parce que c'est là, entre les deux, que se trouve la vraie valeur du conseil logistique. Entre la veille sur ce que le marché promet. Et la réalité de ce qu'un entrepôt PME vit chaque jour.
1534
1535> **L'IA ne remplacera pas un entrepôt mal organisé par un entrepôt intelligent. Elle transformera un entrepôt déjà bien organisé en entrepôt encore plus performant.**
1536>
1537> La séquence reste la même : **Fiabiliser** d'abord. **Lire** ensuite. **Unifier**. Et seulement alors — **automatiser**.
1538>
1539> Dans cet ordre. Pas dans l'autre.
1540>
1541> → *[Découvrir nos services de diagnostic & audit](/services)*
1542
1543---
1544
1545*Sources : Supply Chain Magazine (NL 4204, 4065, 4159, Radar WMS 2025 Wavestone) · Annonces officielles Pigment, Alstef Group, RedLynk, Conex, sedApta, Kinaxis, Databricks · King Research (étude marché WMS mondial 2025-2032)*`,publishDate:"2026-03-05",publishTime:"09h00",readTime:14,category:["IA","Décryptage","Tribune","PME/ETI"],tags:["IA logistique","Décryptage","Tribune","PME Supply Chain","Tendances 2026"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Pigment, Alstef, RedLynk, Conex, sedApta, Kinaxis, Wavestone : sept actualités IA décryptées avec un filtre terrain. Ce que ça change — et ce que ça ne change pas encore — pour les PME françaises.",embedType:"markdown"},{id:"journee-entrepot-logistique",slug:"journee-entrepot-logistique",title:"Une journée dans un entrepôt logistique",subtitle:"De 5h du matin à 22h, ce qui se passe vraiment entre les rayonnages. L'entrepôt que personne ne voit — et qui fait tenir toute la chaîne.",chapo:"L'entrepôt, à 4h50 du matin, ressemble à ce qu'il est vraiment quand personne ne le regarde : un organisme vivant en pause. Cette journée immersive dans un entrepôt PME de 4 000 m² révèle ce que les tableaux de bord ne montrent jamais.",coverImage:eie,coverImageCaption:"Allée d'entrepôt logistique en activité — immersion terrain de 5h à 22h",content:`## Avant que la lumière ne s'allume
1546
1547L'entrepôt, à 4h50 du matin, ressemble à ce qu'il est vraiment quand personne ne le regarde : un organisme vivant en pause. Les rayonnages montent à huit mètres de hauteur. Les travées sont droites, silencieuses, bordées de palettes filmées qui attendent. L'odeur est particulière — carton, poussière froide, une légère trace de gasoil des chariots élévateurs chargés la veille. Les néons de sécurité diffusent une lumière bleutée sur les allées centrales. Tout le reste est dans l'ombre.
1548
1549Il y a 4 200 références stockées ici. 4 200 produits différents, chacun avec un emplacement, un numéro de lot, une date de péremption ou d'entrée, un niveau de stock. Dans le WMS, ils existent comme des chiffres parfaitement ordonnés. Dans l'entrepôt, ils existent comme des boîtes, des cartons, des colis filmés sur des palettes, avec leurs étiquettes parfois déchirées, leurs emplacements parfois mal rangés, leur réalité physique qui ne coïncide pas toujours avec ce que le système croit savoir.
1550
1551C'est cet écart — entre le monde du WMS et le monde des allées — que cette journée va révéler.
1552
1553L'entrepôt appartient à une ETI de distribution B2B. Quarante-deux salariés dans l'entreprise. Dix-huit à l'entrepôt. Quatre mille mètres carrés sous une toiture en shed, quelque part dans la banlieue industrielle d'une ville de taille moyenne. Pas de robots. Pas de convoyeurs. Des chariots élévateurs, des transpalettes électriques, des terminaux portables, un WMS en place depuis six ans — et des hommes et des femmes qui connaissent chaque allée par cœur, au point de ne plus avoir besoin de lire les étiquettes.
1554
1555C'est là que tout commence.
1556
1557---
1558
1559## ⏱ 05H00 — Le premier arrivant
1560
1561Le portail coulisse. La lumière se déclenche par secteur, en cascade, comme un réveil progressif. Karim est toujours le premier. Chef d'équipe depuis quatre ans, il a les clés depuis deux ans. Il arrive à 5h, une heure avant le début officiel de son équipe, parce que c'est sa façon à lui de ne pas être pris de court.
1562
1563Son premier geste, invariable : il ouvre le WMS sur le terminal fixe près du bureau d'équipe. Il regarde les commandes de la journée. Aujourd'hui, 87 commandes à préparer. Dont 12 avec un cut-off à 9h30 pour le transporteur prioritaire. Dont 3 commandes "urgentes" balisées en rouge par le service commercial depuis hier soir.
1564
1565Il imprime la liste. Pas parce que le WMS ne pourrait pas la projeter sur les terminaux portables. Mais parce qu'il veut la lire en entier, debout, avant que quelqu'un arrive. Pour voir ce qui l'attend. Pour décider, dans sa tête, comment il va organiser la journée.
1566
1567> **Ce que Karim fait que le WMS ne fait pas** — Un bon chef d'équipe lit le planning avant que le planning ne le lise. Il anticipe les conflits de ressources, les emplacements problématiques, les commandes qui vont mobiliser deux personnes. Le WMS optimise les itinéraires. Karim optimise la journée.
1568
1569Il sait déjà, sans aller vérifier, que l'emplacement B-14-3 est probablement problématique. Un réapprov
1569isionnement a été fait hier en fin de journée — il a vu le bordereau mais il n'a pas pu contrôler. Si le stock n'a pas été correctement scanné, deux des commandes urgentes vont partir avec une ligne manquante. Il note B-14-3 sur son papier. Il ira voir avant de distribuer les terminaux.
1570
1571À 5h12, il enfile sa veste thermique — la zone de stockage des produits sous 8°C est dans son secteur ce matin — et entre dans les allées. L'entrepôt est à lui seul, pour encore quarante-huit minutes.
1572
1573---
1574
1575## ⏱ 05H20 — L'inventaire silencieux
1576
1577Karim marche lentement dans l'allée B. Il ne presse pas. Il regarde. C'est ce qu'il appelle son "tour du propriétaire" — une expression qu'il a inventée lui-même, sans jamais l'avoir entendue ailleurs, parce qu'elle décrit exactement ce qu'il fait : se comporter comme si l'entrepôt lui appartenait, et vérifier que tout est en ordre avant d'ouvrir.
1578
1579L'emplacement B-14-3 contient du matériel électronique de taille moyenne — des composants conditionnés en boîtes de 12. Le WMS affiche 48 unités. Il compte physiquement : 4 rangées de 10. Quarante. Pas quarante-huit.
1580
1581Il ne s'énerve pas. Il sort son terminal, corrige le stock, lance une demande de vérification qui sera traitée par le responsable logistique à son arrivée. Il note à la main : "B-14-3 — écart -8 unités — à investiguer". Il sait que les commandes urgentes ne seront pas impactées : elles demandent 5 unités chacune. Quarante, ça suffit.
1582
1583> *En dix minutes de marche silencieuse, Karim vient de trouver un écart de stock qui n'aurait été découvert que pendant le picking d'une commande urgente — c'est-à-dire au pire moment possible. Ce type de comptage informel, non tracé, non planifié, non documenté dans aucune procédure officielle, est l'une des raisons pour lesquelles cet entrepôt a un taux de service de 94 %. Ce n'est pas le WMS. C'est Karim.*
1584
1585*Et le jour où Karim part, personne ne le remplacera automatiquement.*
1586
1587*C'est précisément le paradoxe des entrepôts qui fonctionnent grâce à la compétence individuelle plutôt qu'aux processus : ils fonctionnent très bien — jusqu'au jour où ils ne fonctionnent plus du tout.*
1588
1589---
1590
1591## ⏱ 06H00 — La prise en main de l'équipe
1592
1593Les premiers arrivants entrent par groupes de deux ou trois. Les vestiaires s'animent. Les conversations sont courtes, encore engourdies. Certains viennent de loin — Mehdi fait 45 minutes de route, Sandra prend deux bus depuis 4h30. L'entrepôt est situé en zone industrielle, accessible en voiture ou en transport mais pas facilement. C'est une réalité logistique qu'on oublie quand on parle de "ressources humaines" : la logistique commence pour ses opérateurs bien avant que les néons de l'entrepôt ne s'allument.
1594
1595Le briefing du matin est debout, en allée centrale, dure sept minutes. Karim ne lit pas une présentation PowerPoint. Il parle. Il dit :
1596
1597"Aujourd'hui, 87 commandes. Douze à sortir avant 9h30, transporteur Chronoplus. Trois urgentes — je les donne à Stéphane et à Amina, ensemble. Réception prévue à 8h, deux camions, je veux deux personnes sur le quai à 7h45. Zone C est en réapprovisionnement depuis hier soir, vérifiez vos emplacements avant de valider des prises. B-14-3 a un écart, je l'ai corrigé, mais on surveille. Questions ?"
1598
1599Il y a une question. Bertrand demande si les retours de la semaine dernière ont été traités. Karim dit non, pas encore, mais ce n'est pas un sujet de ce matin. Il dit ça sans agressivité, juste avec la précision d'un homme qui sait exactement ce qui entre dans une journée et ce qui n'y entre pas.
1600
1601> **Le coût du briefing raté** — Un briefing bâclé ou absent en entrepôt génère en moyenne 15 à 20 minutes de désorganisation par opérateur en début de journée. Sur une équipe de 12 personnes, c'est entre 3 et 4 heures de productivité perdues — avant que la première commande ne soit préparée.
1602
1603Les terminaux portables sont distribués. Les listes de picking apparaissent sur les écrans. La journée commence officiellement. Dans les allées, on entend les premiers bips des scanners sur les codes-barres. L'entrepôt reprend vie.
1604
1605---
1606
1607## ⏱ 06H30 — Le picking du matin
1608
1609Dans l'allée D, Amina suit son itinéraire sur le terminal. Elle prépare deux commandes en simultané — méthode batch picking, deux chariots côte à côte, codés couleur avec des étiquettes orange et bleue pour ne pas mélanger. Son terminal lui indique : D-07-2, 3 unités. Elle s'arrête, vérifie l'étiquette de l'emplacement, scanne le produit, entre la quantité. Bip. Validation. Elle repart vers D-11-5.
1610
1611Elle travaille vite, mais pas en courant. Le WMS génère ses itinéraires en serpentin — elle balaye chaque allée dans un sens, ne revient pas en arrière. C'est la règle. Ça n'a l'air de rien, mais ça réduit les distances de 30 à 40 % par rapport à un itinéraire aléatoire. Sur une journée de 87 commandes, ça représente plusieurs kilomètres de marche épargnés par opérateur.
1612
1613À l'autre bout de l'entrepôt, Stéphane est plus lent. Pas parce qu'il est moins efficace — parce qu'il prépare une commande de petites pièces, 34 lignes différentes, des conditionnements unitaires stockés en tiroirs d'armoires à compartiments. Ce type de picking est intrinsèquement plus lent. Aucun itinéraire ne peut compenser le fait qu'il faut physiquement ouvrir chaque tiroir, compter, vérifier.
1614
1615> *La productivité picking ne se compare pas en valeur absolue sans contexte. Stéphane prépare 22 lignes/heure sur ce type de commande. Amina prépare 68 lignes/heure sur du picking palette standard. Ces deux chiffres coexistent dans le même WMS, dans la même journée, dans le même entrepôt. Un responsable qui fait la moyenne sans distinguer les typologies produits prend une décision de pilotage sur une donnée sans signification.*
1616
1617À 7h15, un premier incident. En allée A, niveau 3, un emplacement est vide. Le WMS affiche 6 unités. Le préparateur scanne l'emplacement, ne trouve rien, lance une alerte terrain. Karim est prévenu par radio. Il vient, vérifie, regarde l'emplacement adjacent : les 6 unités sont là, rangées au mauvais emplacement lors du réapprov
1617isionnement de la veille. Fausse route — deux minutes de pertes.
1618
1619Il corrige l'emplacement dans le WMS, le préparateur peut continuer.
1620
1621C'est le type d'incident qui n'existe dans aucun rapport. Il n'est ni comptabilisé comme erreur de stock ni comme erreur de picking. Il disparaît dans la journée. Multiplié par cinq ou six incidents du même type, sur 18 personnes, pendant 250 jours de l'année — c'est un volume de temps perdu considérable que personne ne mesure.
1622
1623---
1624
1625## ⏱ 07H45 — L'arrivée du premier camion
1626
1627Le camion arrive à 7h52, soit 7 minutes après l'heure prévue. Pour les équipes, 7 minutes c'est rien. Pour la planification, c'est déjà un décalage. Les deux personnes désignées pour la réception — Luc et Fatima — sont en attente sur le quai. Ils ont sorti le bordereau attendu, vérifié les températures de la zone dédiée, préparé les transpalettes.
1628
1629Le chauffeur descend, tend ses documents. Luc signe l'heure d'arrivée. Ils ouvrent la remorque ensemble.
1630
1631Ce qui sort n'est jamais exactement ce qui était annoncé. Ce matin, le bordereau indique 14 palettes. Il y en a 13. Et une de celles qui sont là porte un suremballage endommagé — du scotch retendeur sur le film, signe qu'une palette a été refaite en cours de route.
1632
1633Luc prend des photos. C'est la procédure. Avant de décharger, il documente les anomalies. La palette suspecte est mise en quarantaine physique — une zone délimitée par du ruban jaune au sol, à l'entrée du quai. Rien ne rejoint le stock actif sans être contrôlé.
1634
1635> **La pression du transporteur** — Le chauffeur a d'autres livraisons. Il attend que Luc signe "conforme" pour partir plus vite. Cette pression est réelle, quotidienne, et elle est la première cause d'un contrôle réception bâclé. Signer "conforme" sans compter les colis, c'est perdre tout recours sur les écarts fournisseurs détectés ensuite — et les absorber silencieusement dans les coûts.
1636
1637Le déchargement prend 22 minutes. Les 12 palettes conformes sont mises en zone réception, identifiées par une étiquette temporaire. Fatima commence le contrôle quantitatif : elle compte chaque carton sur chaque palette, coche le bordereau, entre les quantités dans le WMS au fur et à mesure. Ce n'est pas la méthode la plus rapide. C'est la méthode la plus fiable.
1638
1639La palette quarantaine sera ouverte et contrôlée après 9h, quand le responsable logistique sera là. Ce n'est pas à Luc de décider si les produits peuvent rejoindre le stock. C'est une règle. Elle protège tout le monde.
1640
1641À 8h30, les produits contrôlés commencent à être mis en stock. Fatima saisit les emplacements cibles dans le WMS, Luc transporte avec le transpalette. Le délai entre déchargement et disponibilité picking : 54 minutes pour les produits classe A. C'est dans les normes. Pas exceptionnel. Mais correct.
1642
1643---
1644
1645## ⏱ 09H15 — La tension du cut-off
1646
1647Il est 9h15. Le cut-off pour Chronoplus est à 9h30. Il reste 8 commandes à terminer sur les 12 prioritaires. Karim regarde son écran. Il fait un calcul rapide dans sa tête : à la cadence actuelle, avec les ressources disponibles, 5 commandes seront prêtes à temps. Les 3 autres seront en retard de 10 à 20 minutes.
1648
1649Il a deux options. La première : laisser aller, les 3 commandes partent avec le transporteur suivant — délai de 24 heures sur ces livraisons. La seconde : appeler le commercial pour arbitrer — ces 3 commandes sont-elles vraiment prioritaires, ont-elles des clients qui attendent une livraison demain matin ?
1650
1651Il appelle. Il a le numéro en tête. Deux commandes peuvent attendre — le commercial le confirme après vérification. La troisième ne peut pas : c'est un client en rupture. Karim récupère deux préparateurs du picking non-prioritaire, les bascule sur cette commande. La ligne se reforme.
1652
1653> **Ce que ça coûte, un cut-off raté** — Un transporteur raté, c'est 24 heures de délai supplémentaire sur la livraison client. En B2B, c'est parfois une ligne de production arrêtée, un chantier en attente, une pénalité de retard. Et ça commence souvent 45 minutes avant, quand personne n'a encore regardé le planning de la journée.
1654
1655À 9h27, la troisième commande urgente est en zone expédition. Emballée. Étiquetée. Le bordereau transporteur est imprimé. Chronoplus prend possession à 9h34 — 4 minutes après le cut-off théorique. Le chauffeur accepte. Il connaît l'entrepôt, il connaît Karim. Il attend 5 minutes.
1656
1657Ce n'est pas un processus. C'est une relation humaine qui compense l'absence de marge. Et c'est fragile.
1658
1659Le reste de la matinée se stabilise. Le deuxième camion de réception arrive à 10
1659h10. Il est conforme au bordereau. Le contrôle prend 18 minutes. La mise en stock est réalisée en 40 minutes. Délai dock-to-stock total : 58 minutes.
1660
1661---
1662
1663## ⏱ 11H00 — La réunion que personne ne voit
1664
1665Dans le bureau vitré qui donne sur l'entrepôt, Isabelle — responsable logistique — est arrivée à 8h30. Elle a passé la matinée à arbitrer, décider, corriger. Elle a traité l'écart de B-14-3 (une erreur de saisie lors d'un réapprovisionnement de la semaine précédente — les 8 unités manquantes ont été retirées du stock sans être enregistrées lors d'un contrôle qualité). Elle a validé la mise en quarantaine de la palette endommagée — les produits sont contrôlés, 60 % sont conformes, 40 % retournent au fournisseur. Elle a géré un appel du service commercial sur une commande manquante — une référence que le WMS affiche en stock mais qui n'est pas physiquement présente. Introuvable.
1666
1667Introuvable. C'est le mot qui revient le plus souvent dans les entrepôts dont la précision de stock est inférieure à 98 %. Le produit existe dans le système. Il n'existe pas sur le terrain. Quelqu'un l'a déplacé, prélevé, mal rangé, ou le chiffre dans le système n'a jamais correspondu à la réalité. Le WMS ne sait pas lequel des trois scénarios s'est produit. Isabelle non plus — pas sans investigation.
1668
1669> *Ce que personne ne voit dans un entrepôt PME : le temps de management opérationnel absorbé par des anomalies. Isabelle est responsable logistique. Elle devrait passer sa matinée à analyser les KPI de la semaine précédente, planifier le slotting de la zone C qui a besoin d'être réorganisée, préparer le brief fournisseur du jeudi. Elle passe en réalité 60 % de son temps à gérer des problèmes que des processus plus solides rendraient inexistants. Ce n'est pas un problème de compétence. C'est un problème d'organisation — et ça se résout avant d'investir dans un nouveau WMS ou dans des robots.*
1670
1671À 11h, elle fait le point avec Karim. Pas dans une salle de réunion — debout, dans l'allée centrale, en marchant. C'est leur style. Ils parlent vite, en langage terrain.
1672
1673"Zone C — état des stocks ?" / "80 % rechargé, 3 emplacements encore à faire." / "Commandes de l'après-midi ?" / "61 restantes sur les 87, dont 8 à expédier avant 14h pour Colissimo." / "OK. Je vais avoir besoin de Michel pour les retours de la semaine dernière." / "Il est sur la réception. Dès que c'est terminé." / "Bien."
1674
1675Cette conversation a duré trois minutes. Elle a planifié les deux heures suivantes.
1676
1677---
1678
1679## ⏱ 12H00 — La pause, et ce qu'elle révèle
1680
1681La première équipe pause à 12h. L'entrepôt ne s'arrête pas — Karim a organisé un roulement. La moitié des équipes mange, l'autre continue. Les commandes avec cut-off 14h n'attendent pas.
1682
1683Dans la salle de pause, les conversations sont celles de tous les métiers. Le sport, les enfants, le trajet du matin, l'incident d'hier soir sur l'autoroute. Mais rapidement, elles reviennent au travail. Pas parce que les gens sont passionnés par la logistique de leur entreprise. Parce que le travail en entrepôt crée une forme de solidarité quotidienne — quand quelque chose va mal, ça impacte tout le monde physiquement, visiblement, immédiatement. Il n'y a pas d'abstractions.
1684
1685> **Ce que la salle de pause apprend à un consultant** — Les 12 premières minutes passées dans la salle de pause d'un entrepôt donnent plus d'informations sur l'organisation réelle que 2 heures de réunion avec le responsable logistique. Les opérateurs parlent librement entre eux. Ils savent exactement où ça coince, pourquoi ça coince, et depuis combien de temps ça coince. Ils ont souvent la solution. On leur demande rarement.
1686
1687Amina mange vite. Elle sera de retour à 12h22. Elle a un planning à tenir. Bertrand, lui, prend ses 45 minutes en entier. Il en a le droit. Et quand il revient, il est plus efficace que celui qui a avalé son sandwich en marchant et qui se trompe d'emplacement à 13h15 parce qu'il est épuisé.
1688
1689La pause est une donnée de performance. Les entrepôts qui la compriment systématiquement dégradent leur productivité de l'après-midi — et augmentent leurs erreurs de picking après 13h30. Ce n'est pas une opinion. C'est une observation de terrain.
1690
1691---
1692
1693## ⏱ 13H30 — L'après-midi commence, et c'est différent
1694
1695L'après-midi en entrepôt a une couleur différente du matin. Le matin, c'est l'urgence organisée, le tempo des cut-offs, la concentration des premières heures. L'après-midi, c'est le volume, la continuité, la gestion des imprévus.
1696
1697À 13h30, le WMS affiche encore 53 commandes à préparer. La deuxième vague de picking commence. Les préparateur
1697s repartent dans les allées avec leurs terminaux. Il y a moins d'urgences immédiates, mais le rythme doit tenir pour que les expéditions de 17h soient prêtes à temps.
1698
1699C'est aussi le moment de la journée où les erreurs augmentent. Ce n'est pas une coïncidence. C'est la combinaison de la fatigue, du relâchement de la concentration post-pause, et de la pression diffuse de la fin de journée. Les études sectorielles le confirment : le taux d'erreur picking est statistiquement plus élevé entre 13h30 et 15h30 qu'en matinée.
1700
1701> **Le creux de l'après-midi** — Les erreurs de picking augmentent de 15 à 25 % entre 13h30 et 15h30 par rapport à la matinée, selon les analyses de terrain de plusieurs entrepôts PME. Les causes : fatigue accumulée, baisse de concentration, pression diffuse de fin de journée. Aucun outil ne compense entièrement ce phénomène — mais un slotting bien conçu (références simples à distinguer en zones de picking intensif l'après-midi) peut en atténuer significativement l'impact.
1702
1703À 14h05, Michel est enfin disponible pour les retours clients. Il prend la pile de colis retournés accumulée depuis lundi — six boîtes, quatre palettes partielles. Il ouvre chaque retour selon la procédure : vérification de l'état du produit, identification de la référence, décision de réintégration ou de mise de côté.
1704
1705Les retours, dans cet entrepôt, sont traités une fois par semaine. C'est une décision pragmatique — il n'y a pas assez de ressources pour faire mieux. Mais ça signifie que des produits retournés en bon état attendent parfois cinq jours avant d'être de nouveau disponibles au picking. Et que pendant ces cinq jours, si la référence est en rupture sur le stock actif, personne ne peut l'utiliser.
1706
1707> *La logistique inverse — les retours — est l'angle mort de la plupart des entrepôts PME. On construit un processus de réception, un processus de picking, un processus d'expédition. Les retours arrivent dans ce système comme des intrus : ils ne s'insèrent dans aucune routine fluide, ils mobilisent du temps non planifié, et leur traitement tardif crée des stocks fantômes dans l'autre sens — des produits physiquement présents que le WMS croit absents. Ce n'est pas anecdotique. En moyenne, 3 à 5 % du volume d'un entrepôt B2B passe par la logistique inverse. C'est suffisant pour perturber la précision de stock si le processus est défaillant.*
1708
1709---
1710
1711## ⏱ 15H00 — Ce qui se passe dans la zone d'expédition
1712
1713La zone d'expédition est à l'opposé du quai de réception. C'est une règle de base en logistique entrepôt : les flux entrants et les flux sortants ne doivent pas se croiser. Dans cet entrepôt, les deux quais sont séparés par une zone tampon de 12 mètres. Pas idéal, mais suffisant pour éviter les confusions.
1714
1715À 15h, la zone d'expédition commence à se remplir. Les commandes préparées et contrôlées arrivent en flux continu depuis les zones de packing. Chaque colis est posé dans la zone identifiée au nom du transporteur : une rangée pour Chronoplus, une pour Colissimo, une pour DHL, une pour le transporteur affrété (palettes complètes). Les étiquettes transporteurs ont été imprimées dès la validation de la commande dans le WMS — elles sont collées avant que les colis arrivent en zone d'expédition.
1716
1717Sandra est responsable de l'expédition depuis trois ans. Elle a une vision de ce que chaque rangée doit contenir avant chaque départ transporteur, et elle la vérifie en permanence. À 15h20, elle repère un colis Colissimo dans la rangée DHL. Elle l'attrape, regarde l'étiquette, le déplace. Ce n'est pas un incident majeur. Si elle ne l'avait pas vu, ce colis aurait été chargé dans le mauvais camion et serait arrivé au mauvais hub la nuit.
1718
1719> **Le dernier mètre avant le client** — L'expédition est le dernier point de contrôle avant que la marchandise quitte le périmètre de l'entreprise. Une erreur de chargement ou d'étiquetage non détectée ici atteint directement le client. Le contrôle visuel à l'expédition — scanné ou non — est l'une des procédures les plus importantes et les plus souvent négligées en péri
1719ode de forte pression.
1720
1721À 15h45, un client appelle le service commercial pour savoir où est sa commande. La commande est en zone expédition, prête à partir. Le commercial appelle Isabelle. Isabelle appelle Sandra. Sandra confirme. Le commercial rappelle le client. La commande part à 16h30 avec Chronoplus. Le client sera livré demain matin.
1722
1723Cette chaîne de communication a duré 8 minutes. 8 minutes pour confirmer ce que le WMS aurait dû afficher en temps réel au commercial, sans appel téléphonique. Ce type de friction invisible — le client qui appelle parce qu'il ne peut pas voir l'état de sa commande — est une des conséquences d'un WMS dont le module de traçabilité n'a pas été activé. Il était dans le contrat initial. Il a été désactivé "pour simplifier le démarrage". Il n'a jamais été réactivé.
1724
1725---
1726
1727## ⏱ 16H30 — Le départ des transporteurs
1728
1729Entre 16h30 et 17h15, quatre transporteurs passent en séquence. Le rythme est rodé. Sandra gère le quai comme un chef d'orchestre : elle sait quelle rangée va à quel chauffeur, elle a les bons de livraison prêts, elle vérifie que le bon nombre de colis part avec le bon camion.
1730
1731Chronoplus part à 16h32. 23 colis. Contrôle de sortie : Sandra scanne chaque colis avant chargement. Bip. Bip. Bip. Ça prend 4 minutes. Le chauffeur attend sans impatience — il connaît la procédure, il sait que Sandra ne laisse partir un colis qu'après l'avoir scanné.
1732
1733Colissimo part à 16h51. 31 colis individuels. Même procédure. Certains colis n'ont pas d'étiquette sur le dessus — étiquetés sur le côté, mauvaise orientation au packing. Sandra les retourne, les re-scanne, les charge. Deux minutes de plus.
1734
1735DHL arrive à 17h05 pour les expéditions internationales. Trois colis, documents douaniers attachés. Sandra vérifie les documents avant de signer. Un des documents est incomplet — il manque le numéro de TVA intracommunautaire de l'importateur. Elle appelle le service commercial. Cinq minutes de flottement. Le commercial retrouve l'information dans le dossier client. La palette repart avec le bon document.
1736
1737À 17h15, le dernier transporteur de la journée — une camionnette affrétée pour une livraison spéciale sur mesure — prend deux palettes. Le chauffeur est un indépendant que l'entreprise utilise depuis deux ans. Il signe, il charge lui-même. Sandra note l'heure de départ.
1738
1739> **Ce que représente 17h15** — 17h15, c'est la fin de la journée de livraison. Tout ce qui part après cette heure part demain. Tout ce qui n'est pas prêt à 17h15 est un retard client. Cette heure limite — le cut-off final — structure toute la journée logistique, à rebours, depuis 6h du matin. C'est pour ça que le briefing de 6h en parle. C'est pour ça que Karim l'a en tête quand il lit le planning à 5h. La logistique se pilote de droite à gauche : depuis la livraison vers la réception.
1740
1741---
1742
1743## ⏱ 17H30 — Ce que personne ne voit après 17h
1744
1745La majorité des opérateurs quittent l'entrepôt entre 17h et 17h30. Mais l'entrepôt ne s'arrête pas.
1746
1747Il reste Karim, qui fait le bilan de la journée. Il note les écarts, les incidents, les ajustements à faire. Ce n'est pas un rapport formel — il n'en produit pas, ou rarement. C'est une liste mentale et quelques notes sur papier. Il sait que demain matin, il faudra réapprovisionner la zone C entièrement, que l'emplacement A-03-7 est arrivé à son seuil minimum et déclenchera une demande automatique ce soir, que Michel devra finir les retours avant de faire autre chose.
1748
1749Il reste Sandra, qui range la zone expédition, range les documents, classe les bons de livraison signés. Le quai est nettoyé. Les équipements sont rechargés — les transpalettes électriques, les terminaux portables. Tout est en place pour le lendemain.
1750
1751Il reste un préparateur en heure supplémentaire — une commande qui n'a pas pu être préparée dans les temps, un client prioritaire qui a appelé en fin d'après-midi. Il prépare seul, dans l'entrepôt à moitié éteint, en allumant les néons secteur par secteur au fur et à mesure qu'il avance dans les allées.
1752
1753>
1753 *Les heures supplémentaires en entrepôt sont le signe le plus clair d'un sous-dimensionnement de la planification ou d'une demande non anticipée. Elles ne sont pas graves en soi — elles font partie de la réalité opérationnelle. Elles deviennent problématiques quand elles sont systématiques, quand elles concernent les mêmes personnes semaine après semaine, et quand elles ne déclenchent aucune analyse. L'heure supplémentaire est une donnée de pilotage. Elle dit quelque chose de l'organisation. La question n'est pas "peut-on éviter les heures sup" — parfois non. La question est "qu'est-ce qu'elles nous apprennent sur ce qui ne fonctionne pas le reste du temps ?"*
1754
1755---
1756
1757## ⏱ 19H00 — L'entrepôt de nuit : un autre monde
1758
1759À 19h, un agent de sécurité prend son poste. L'entrepôt n'est pas gardé la nuit dans le sens classique du terme — il est surveillé par un système d'alarme périmétrique, des caméras, et une ronde à heures fixes. L'agent vérifie les accès, les équipements, les zones à risque.
1760
1761Ce que beaucoup d'entreprises ignorent : l'entrepôt la nuit n'est pas inactif dans un sens fonctionnel. Le WMS continue de traiter des données. Les commandes du lendemain matin sont déjà dans le système — certaines ont été passées par les clients en fin de journée, d'autres en début de soirée via le portail e-commerce. Certains réapprovisionnements automatiques se déclenchent sur la base des seuils atteints dans la journée.
1762
1763À 19h45, une alerte tombe dans la boîte mail d'Isabelle : une référence a déclenché son seuil minimal de stock. La demande de réappro est générée automatiquement. Elle la verra demain matin à 8h30 et la validera en 30 secondes. Mais le fournisseur, lui, recevra la commande ce soir — parce que le système est paramétré pour envoyer les demandes automatiquement après validation manuelle. Ce délai de 13 heures — entre l'alerte et la validation — est une perte de temps que peu d'entreprises ont pensé à analyser.
1764
1765---
1766
1767## ⏱ 21H30 — Ce que l'entrepôt prépare pour demain
1768
1769À 21h30, le WMS commence à compiler les commandes du lendemain. Les algorithmes d'optimisation des vagues de picking tournent en tâche de fond — ils regroupent les commandes par zone, par transporteur, par priorité. À 22h, les listes de picking du lendemain matin seront prêtes à être imprimées.
1770
1771Karim les imprimera à 5h. Et il recommencera exactement ce qu'il a fait ce matin : les lire, debout, en entier, avant que quelqu'un arrive.
1772
1773Ce rituel — impensable dans une vision purement technologique de la logistique, irremplaçable dans la réalité d'un entrepôt PME — est la manifestation concrète de quelque chose que les outils ne peuvent pas encore faire : comprendre ce que les chiffres ne disent pas.
1774
1775> **Ce que cette journée a appris** — 87 commandes. Deux livraisons reçues. Trois urgences gérées. Un écart de stock corrigé avant qu'il ne devienne un problème. Une palette en quarantaine. Six retours traités. Quatre transporteurs chargés. Une erreur de chargement évitée. Un document douanier corrigé au dernier moment. Une commande préparée en heures supplémentaires. Rien de spectaculaire. Rien qui ressemble à la transformation digitale dont parlent les conférences. Juste une journée qui a bien marché — parce que des gens compétents ont pris les bonnes décisions au bon moment, dans le bon ordre. C'est ça, la logistique opérationnelle.
1776
1777---
1778
1779## ⏱ 22H00 — Le silence
1780
1781À 22h, l'agent de sécurité fait sa première ronde. Il marche lentement dans les allées. Les néons de sécurité diffusent leur lumière bleutée. Les rayonnages montent à huit mètres. Les palettes attendent.
1782
1783L'entrepôt ressemble exactement à ce qu'il était à 4h50 du matin.
1784
1785Et pourtant, tout a changé.
1786
178787 commandes sont parties. 26 palettes ont été reçues, contrôlées, rangées. Trois incidents ont été détectés et résolus. Six retours ont été traités. La précision de stock est légèrement meilleure ce soir qu'elle ne l'était ce matin.
1788
1789Dans seize heures, Karim sera de retour.
1790
1791Et tout recommencera.
1792
1793---
1794
1795## Ce que cette journée dit aux entreprises
1796
1797Si vous n'avez jamais passé une journée complète dans un entrepôt — le vôtre, ou celui de votre prestataire — vous pilotez une partie de votre activité à l'aveugle.
1798
1799Pas parce que vous n'avez pas les données. Les données existent — dans les WMS, dans les ERP, dans les tableaux de bord. Mais les données n'ont pas d'odeur de carton froid. Elles ne montrent pas Karim qui lit son planning à 5h. Elles ne capturent pas les 8 unités manquantes en B-14-3 détectées avant que ça ne devienne un problème. Elles ne disent pas que le module de traçabilité du WMS a été désactivé "pour simplifier le démarrage" et n'a jamais été réactivé.
1800
1801Le terrain sait des choses que [les KPI ne montrent pas](/analyses-outils/10-kpi-logistiques-entrepot).
1802
1803Ce n'est pas une critique des KPI. C'est un rappel que les indicateurs sont des outils de pilotage — et que le terrain est la réalité qu'ils tentent de refléter.
1804
1805Pour aller plus loin sur l'optimisation terrain, lisez aussi [Comment optimiser un entrepôt logistique : la méthode complète](/analyses-outils/optimiser-entrepot-logistique-guide-complet).
1806
1807---
1808
1809La méthode F.L.U.X™ commence toujours par là : aller voir. Avant de lire les données. Avant de proposer des solutions. Avant de parler d'automatisation ou d'IA.
1810
1811**Fiabiliser**, c'est d'abord comprendre ce qui se passe réellement entre les rayonnages. **Lire** les données avec les yeux de quelqu'un qui a marché dans les allées. **Unifier** ce que le système croit et ce que le terrain sait. Et seulement alors — **eXécuter** les changements qui tiennent.
1812
1813Cette journée se passe en ce moment, dans des milliers d'entrepôts PME en France. Avec des Karim, des Sandra, des Isabelle, des Amina. Des gens compétents qui font tenir l'organisation à bout de bras, souvent sans que personne, au-dessus d'eux, ne comprenne vraiment ce que ça implique.
1814
1815**C'est pour eux que la logistique mérite d'être prise au sérieux.**
1816
1817[Vous voulez ce regard extérieur ? →](/services/diagnostic-audit)
1818
1819---
1820
1821*Sources : Hardis Group 2025 (KPI logistique entrepôt) · Mecalux 2025 (picking, préparation de commandes) · OPEX 2025 (précision stock, benchmarks entrepôt) · Observations terrain CHAL·CONSULTING IA (entrepôts PME/ETI France 2024–2025)*`,publishDate:"2026-02-24",publishTime:"06:00",readTime:18,category:["Immersion terrain","Entrepôt","Terrain"],tags:["Immersion terrain","Entrepôt PME","Opérations","Métier logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"De 5h à 22h : une journée complète dans un entrepôt PME de 4 000 m². Réception, picking, expédition, incidents, décisions. Ce que le terrain ressemble vraiment — loin des organigrammes et des tableaux de bord."},{id:"logistique-pharmaceutique-tracabilite-vitale",slug:"logistique-pharmaceutique-tracabilite-vitale",title:"Logistique pharmaceutique : pourquoi la traçabilité est vitale",subtitle:"Dans un entrepôt standard, une erreur de picking coûte 17 à 30 €. Dans un entrepôt pharmaceutique, la même erreur peut coûter une vie. Ce que ça change — concrètement — sur l'organisation des flux.",chapo:"J'ai travaillé plusieurs années dans la logistique pharmaceutique — chez Bio-Rad et chez Cenexi. La traçabilité n'était pas une option, ni même une contrainte. C'était la colonne vertébrale de tout ce qu'on faisait.",coverImage:Zre,coverImageCaption:"Contrôle qualité et traçabilité en entrepôt pharmaceutique sous température dirigée",content:`J'ai travaillé plusieurs années dans la logistique pharmaceutique — chez Bio-Rad et chez Cenexi. Des contextes très différents, mais un dénominateur commun : la traçabilité n'était pas une option, ni même une contrainte. C'était la colonne vertébrale de tout ce qu'on faisait.
1822
1823Dans un entrepôt standard, une erreur de picking coûte de l'argent et de la relation client. Dans un entrepôt pharmaceutique, la même erreur peut mettre en danger un patient. Ce n'est pas une métaphore. C'est une réalité opérationnelle qui change tout — l'organisation des flux, les procédures de contrôle, le rôle du WMS, la façon de gérer les stocks.
1824
1825---
1826
1827## Ce que GMP et GDP imposent concrètement
1828
1829Deux référentiels gouvernent la logistique pharmaceutique : les GMP (Good Manufacturing Practices, Bonnes Pratiques de Fabrication) pour la production, et les GDP (Good Distribution Practices, Bonnes Pratiques de Distribution) pour le stockage et la distribution. En France, leur application est contrôlée par l'ANSM. Toute défaillance peut entraîner un blocage de marché, un retrait de produit, ou une mise en cause de la responsabilité pénale du pharmacien responsable — qui est obligatoirement présent dans tout établissement de distribution pharmaceutique.
1830
1831Ce que ça signifie opérationnellement : chaque mouvement de produit doit être documenté. Chaque lot doit être traçable unitairement, de la réception jusqu'à la livraison. Les zones de quarantaine ne sont pas optionnelles — aucun produit non contrôlé ne rejoint le stock actif. La gestion des dates suit la règle FEFO (First Expired, First Out) et non le FIFO classique. Et les températures de stockage sont monitorées en continu, avec des alertes automatiques et des procédures de dérogation documentées.
1832
1833>
1833 **Ce que FEFO change au picking** — Dans un entrepôt standard, on prend le produit le plus accessible. En pharmaceutique, on prend le produit dont la date de péremption est la plus proche — même s'il est moins accessible. Le WMS doit gérer cette logique automatiquement. Et l'opérateur doit vérifier. Les deux niveaux de contrôle coexistent toujours.
1834
1835---
1836
1837## La sérialisation : chaque boîte a une identité unique
1838
1839Depuis la directive européenne anti-contrefaçon (DAC), chaque emballage de médicament sur ordonnance doit porter un code unique — un Datamatrix contenant a minima le code produit, le numéro de lot, la date de péremption, et un numéro de série unique. Ce code est vérifié à chaque point de la chaîne de distribution via un répertoire européen centralisé (NMVS).
1840
1841Concrètement, à la réception, chaque boîte est scannée et vérifiée contre ce répertoire. À l'expédition, le décommissionnement du numéro de série est enregistré. Si un produit retourné doit réintégrer le stock, il passe une nouvelle vérification.
1842
1843Ce système a un coût opérationnel réel — en temps, en équipements de scan, en paramétrage WMS. Mais il a une contrepartie directe : en cas de rappel de lot, on peut localiser en quelques minutes chaque unité concernée dans la chaîne, identifier où elle a été livrée, et déclencher le retrait ciblé. Sans sérialisation, un rappel de lot mobilise des semaines d'investigation et touche un périmètre beaucoup plus large que nécessaire.
1844
1845---
1846
1847## La chaîne du froid — l'invisible qui tue si elle lâche
1848
1849Certains médicaments se conservent entre +2°C et +8°C. D'autres nécessitent -20°C ou -80°C. Un écart de température — même bref, même minime — peut dégrader irrémédiablement un produit sans que cela soit visible à l'œil nu. Un vaccin stocké trop chaud pendant 4 heures a l'air intact. Il ne l'est plus.
1850
1851Ce que ça impose en logistique : des sondes de température certifiées sur chaque zone de stockage, avec enregistrement continu et traçabilité des données. Des procédures de qualification du matériel de transport frigorifique. Des validations de dérogation documentées quand une alerte se déclenche. Et — ce qu'on oublie souvent — une procédure claire pour les ruptures de chaîne du froid lors de la réception : le produit va en quarantaine, le pharmacien décide, la décision est tracée.
1852
1853> **⚠ La rupture froide invisible** — Dans ma pratique terrain, la principale source de rupture de chaîne du froid n'était pas une panne de chambre froide. C'était le délai entre le déchargement du camion et la mise en zone froide — quelques minutes qui s'accumulent quand la réception est désorganisée ou sous-effectuée. La procédure protège. Son application, elle, dépend de l'organisation réelle.
1854
1855---
1856
1857## Ce que la logistique pharmaceutique apprend à tous les entrepôts
1858
1859Je ne travaille pas que dans le secteur pharmaceutique. Mais chaque fois que j'accompagne un entrepôt de distribution standard, j'applique le même principe : traiter chaque mouvement de stock comme s'il était auditable demain matin.
1860
1861Pas parce que les contraintes réglementaires sont les mêmes. Parce que la rigueur qu'elles imposent — aucun mouvement sans trace, aucune exception non documentée, aucun produit non contrôlé en stock actif — est exactement le niveau d'exigence qui produit une précision de stock supérieure à 99 %.
1862
1863Les entrepôts pharmaceutiques que j'ai vus fonctionner m'ont appris quelque chose de simple : la traçabilité n'est pas un coût. C'est la condition de la fiabilité. Et la fiabilité, c'est ce qui permet de tenir une promesse — au patient, au client, à l'organisation.
1864
1865→ *Lire aussi : [Comment optimiser un entrepôt logistique : la méthode complète](/analyses-outils/optimiser-entrepot-logistique-guide-complet)*
1866
1867> **La leçon que je retiens** — Dans un entrepôt pharmaceutique, on ne peut pas improviser. Chaque exception est documentée. Chaque écart est investigué. Chaque décision est tracée. Ce niveau de rigueur — appliqué à n'importe quel entrepôt — transforme la performance opérationnelle. Ce n'est pas de la sur-qualité. C'est simplement ce que "bien faire" signifie quand les conséquences sont réelles.
1868
1869---
1870
1871## Conclusion
1872
1873La logistique pharmaceutique est un cas extrême — les enjeux y sont littéralement vitaux. Mais elle illustre mieux que n'importe quel autre secteur ce que la traçabilité produit quand elle est prise au sérieux : une organisation où chaque acteur sait exactement ce qu'il a entre les mains, où ça vient, où ça va, et ce qui doit se passer si quelque chose ne va pas.
1874
1875C'est le modèle vers lequel tous les entrepôts devraient tendre. Pas parce que l'ANSM va débarquer. Parce que c'est comme ça qu'on construit une logistique qui tient dans le temps.
1876
1877→ *[Découvrir mon parcours — expérience Bio-Rad & Cenexi](/a-propos)*
1878
1879---
1880
1881*Sources : ANSM (Agence Nationale de Sécurité du Médicament) · Directive européenne anti-contrefaçon (DAC / FMD 2019) · GDP Bonnes Pratiques de Distribution (EMA Guidelines) · GMP / BPF (référentiel européen) · Mecalux 2025 (coût erreur picking pharmaceutique)*`,publishDate:"2026-02-17",publishTime:"08h30",readTime:5,category:["Terrain","Logistique","Secteur réglementé"],tags:["Logistique pharmaceutique","Traçabilité","GMP GDP","Sérialisation","Secteur réglementé"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"GMP, GDP, sérialisation, FEFO, chaîne du froid : ce que ces contraintes réglementaires signifient concrètement pour l'organisation d'un entrepôt pharmaceutique — et pourquoi elles s'appliquent en fait à tout secteur sensible.",embedType:"markdown"},{id:"10-kpi-logistiques-entrepot",slug:"10-kpi-logistiques-entrepot",featured:!0,title:"10 KPI logistiques qui comptent vraiment pour piloter un entrepôt",subtitle:"Formules, cibles, seuils d'alerte et — surtout — ce que chaque indicateur révèle quand il décroche. Le référentiel terrain pour arrêter de mesurer et commencer à piloter.",chapo:"La plupart des entrepôts mesurent beaucoup — et pilotent peu. Le problème n'est pas le manque d'indicateurs. C'est la confusion entre mesurer et piloter. Voici les 10 KPI qui changent vraiment quelque chose quand on les suit correctement.",coverImage:tie,coverImageCaption:"Tableau de bord logistique en entrepôt — pilotage des KPI opérationnels en temps réel",content:`Dans 80 % des prises de contact avec des consultants logistiques, les entreprises placent les KPI et les tableaux de bord parmi leurs premières priorités. Résultat paradoxal : la plupart des entrepôts mesurent beaucoup — et pilotent peu.
1882
1883Le problème n'est pas le manque d'indicateurs. C'est la confusion entre mesurer et piloter. Un KPI qu'on regarde sans en tirer de décision dans les 72 heures n'est pas un outil de pilotage. C'est un écran de confort.
1884
1885Cet article donne les 10 indicateurs qui changent vraiment quelque chose quand on les suit correctement. Pour chacun : la formule exacte, la cible sectorielle 2025, le seuil d'alerte — et ce que la dérive révèle concrètement sur le terrain.
1886
1887Note : les KPI donnent des symptômes. Le terrain donne les causes. Si vous voulez comprendre pourquoi les indicateurs ne montrent jamais tout, lisez [ce que les KPI ne montrent jamais (et que le terrain sait)](/analyses-outils/kpi-ne-montrent-jamais-terrain-sait).
1888
1889> **La règle de pilotage** — 5 à 7 KPI maximum. Chacun doit être actionnable sous 72 heures si dérive constatée. Tout indicateur qu'on ne peut pas relier à une action concrète dans votre entrepôt ne mérite pas d'être dans votre tableau de bord.
1890
1891---
1892
1893## KPI #01 — OTIF (On Time In Full)
1894
1895**Ce que ça mesure** : le pourcentage de commandes livrées à la fois dans les délais convenus ET complètes (quantité et référence conformes).
1896
1897**Formule :**
1898
1899\`OTIF = (Commandes livrées à temps ET complètes ÷ Total commandes) × 100\`
1900
1901**Cibles sectorielles 2025 :**
1902- Entrepôt moyen France : 88–92 %
1903- Objectif opérationnel : ≥ 95 %
1904- Classe mondiale : ≥ 98 %
1905
1906**Seuil d'alerte : < 90 %**
1907
1908### Ce que la dérive révèle sur le terrain
1909
1910L'OTIF est le KPI synthétique par excellence — il agrège tout ce qui peut mal se passer. Quand il décroche, les causes sont à chercher dans trois directions : (1) le **picking** : erreurs de référence ou de quantité qui rendent la commande non-complète ;
1910 (2) la **planification** : cut-offs transporteurs mal intégrés dans l'organisation journalière ; (3) le **stock** : précision insuffisante qui crée des ruptures silencieuses détectées seulement à la préparation.
1911
1912Ce qu'on voit souvent : un OTIF à 87 % présenté en réunion comme "dans la norme". Ce que ça représente : **1 commande sur 8 qui n'arrive pas comme prévu**. Pour un client B2B qui a planifié sa production ou son réassort sur cette livraison, c'est un problème — pas une norme acceptable.
1913
1914*Nota terrain : l'OTIF ne dit pas où le problème se produit. Il dit que quelque chose s'est produit. Les 5 pourquoi commencent ici.*
1915
1916---
1917
1918## KPI #02 — Précision de stock (Inventory Accuracy)
1919
1920**Ce que ça mesure** : l'écart entre le stock théorique enregistré dans le WMS et le stock physiquement présent dans l'entrepôt.
1921
1922**Formule :**
1923
1924\`Précision = (Stock réel conforme au WMS ÷ Stock total WMS) × 100\`
1925
1926**Cibles sectorielles 2025 :**
1927- Entrepôt traditionnel : 96–98 %
1928- Objectif opérationnel : ≥ 99 %
1929- Classe mondiale (avec automatisation) : ≥ 99,8 % (OPEX, 2025)
1930
1931**Seuil d'alerte : < 97 %**
1932
1933### Ce que la dérive révèle sur le terrain
1934
1935C'est le **KPI fondation**. En dessous de 98 %, tous les autres indicateurs sont construits sur des données incertaines : les prévisions SC planifient sur un stock qui n'existe pas, le picking envoie des préparateurs sur des emplacements vides, les promesses de livraison client ne peuvent pas être tenues.
1936
1937Trois causes récurrentes sur le terrain :
1938- **Les réceptions non contrôlées** : marchandises enregistrées sans comptage physique réel, écarts fournisseurs non détectés.
1939- **Les mouvements non tracés** : prélèvements internes, retours, transferts d'emplacement effectués sans mise à jour WMS.
1940- **L'inventaire tournant inexistant ou non actionné** : la précision se dégrade en continu sans comptage régulier pour la corriger.
1941
1942La correction n'est pas technique. Elle est disciplinaire : **aucun mouvement physique sans enregistrement WMS. Aucune exception.** Pour aller plus loin sur l'optimisation de la précision stock, voir notre [méthode complète d'optimisation entrepôt](/analyses-outils/optimiser-entrepot-logistique).
1943
1944---
1945
1946## KPI #03 — Taux de précision picking (Order Picking Accuracy)
1947
1948**Ce que ça mesure** : le pourcentage de lignes de commande préparées sans erreur (bonne référence, bonne quantité, bon emplacement de destination).
1949
1950**Formule :**
1951
1952\`Précision picking = (Lignes sans erreur ÷ Total lignes préparées) × 100\`
1953
1954**Cibles sectorielles 2025 :**
1955- Entrepôt traditionnel (manuel, sans guidage) : 96–98 %
1956- Avec voice picking ou pick-to-light : ≥ 99,5 %
1957- Classe mondiale (automatisé) : ≥ 99,9 % (OPEX, 2025)
1958
1959**Seuil d'alerte : < 98,5 %**
1960
1961### Ce que la dérive révèle sur le terrain
1962
1963Le taux d'erreur picking a un coût direct et mesurable. Chaque erreur génère un retour transporteur, un retraitement, une interaction service client. Estimation sectorielle : **17 à 30 € par erreur** selon le secteur (Mecalux, 2025). Sur un entrepôt préparant 500 commandes/jour à 1 % d'erreurs : 1 500 erreurs/an, soit entre 25 000 € et 45 000 € de coûts de non-qualité annuels — pour 1 %.
1964
1965Causes à investiguer quand l'indicateur décroche :
1966- **Slotting incohérent** : deux références similaires en emplacement adjacent, confusion visuelle systématique.
1967- **Absence d'itinéraire optimisé** : préparateur qui dévie de son parcours et prélève dans un emplacement voisin.
1968- **Pression sur la cadence** : objectifs de lignes/heure qui poussent à réduire les vérifications.
1969- **Adressage terrain/WMS incohérent** : le WMS indique l'emplacement A, le produit est physiquement en B depuis un réaménagement non répercuté.
1970
1971Pour une vue complète des leviers de productivité picking, voir notre [guide d'optimisation entrepôt](/analyses-outils/optimiser-entrepot-logistique).
1972
1973---
1974
1975## KPI #04 — On-Time Delivery (OTD)
1976
1977**Ce que ça mesure** : le pourcentage de commandes livrées dans le délai promis au client — indépendamment de si la commande est complète ou non.
1978
1979**Formule :**
1980
1981\`OTD = (Commandes livrées à la date promise ÷ Total commandes expédiées) × 100\`
1982
1983**Cibles sectorielles 2025 :**
1984- Distribution B2B : ≥ 95 %
1985- E-commerce B2C : ≥ 97 %
1986- Pharma / industrie réglementée : ≥ 98 %
1987
1988**Seuil d'alerte : < 92 %**
1989
1990### Différence avec l'OTIF
1991
1992L'OTD mesure le délai uniquement. L'OTIF mesure délai + complétude. Une commande livrée à temps mais avec une référence manquante est bonne pour l'OTD et mauvaise pour l'OTIF. Suivre les deux permet de diagnostiquer : si l'OTIF décroche mais pas l'OTD, le problème est dans le picking (complétude). Si les deux décrochent, le problème est dans la planification ou le transport.
1993
1994### Ce que la dérive révèle
1995
1996Un OTD qui se dégrade progressivement indique presque toujours l'une des causes suivantes : les cut-offs transporteurs ne sont pas intégrés dans la planification journalière du picking ; des pics d'activité non anticipés saturent le picking sans renfort planifié ; ou des problèmes de précision de stock créent des blocages en dernière minute.
1997
1998---
1999
2000## KPI #05 — Taux de rotation des stocks (Inventory Turnover)
2001
2002**Ce que ça mesure** : le nombre de fois que le stock est renouvelé sur une période donnée. Indique l'efficacité de la conversion des stocks en ventes et le niveau d'immobilisation du capital.
2003
2004**Formule :**
2005
2006\`Rotation = Valeur des marchandises expédiées ÷ Valeur moyenne du stock\`
2007
2008**Cibles sectorielles 2025 :**
2009- Distribution générale : 6–12 rotations/an
2010- E-commerce high-rotation : 12–24 rotations/an (OPEX, 2025)
2011- Pharma / produits à DLC : dépend de la durée de vie produit
2012- Industrie / B2B long cycle : 2–6 rotations/an selon secteur
2013
2014**Seuil d'alerte : tendance baissière sur 3 mois consécutifs**
2015
2016### Ce que la dérive révèle
2017
2018Une rotation qui baisse peut signifier trois choses très différentes : (1) **Ralentissement des ventes** — problème commercial, pas logistique. (2) **Surstock sur certaines références** — souvent corrélé à de mauvaises prévisions ou à une politique de réapprov
2018isionnement trop conservative. (3) **Stock mort ou obsolète** qui gonfle le dénominateur sans sortir — à identifier et traiter séparément.
2019
2020Ce KPI doit toujours être analysé par **catégorie ABC**, pas en global. Un taux de rotation agrégé peut masquer un excellent turn sur les classes A et un stock mort massif sur les classes C.
2021
2022---
2023
2024## KPI #06 — Délai de traitement de commande (Order Fulfillment Cycle Time)
2025
2026**Ce que ça mesure** : le temps écoulé entre la réception de la commande dans le système et son départ physique du quai d'expédition.
2027
2028**Formule :**
2029
2030\`Cycle Time = Date/heure d'expédition − Date/heure de réception de la commande\`
2031
2032**Cibles sectorielles 2025 :**
2033- E-commerce : < 4 heures pour les commandes J
2034- Distribution B2B standard : < 24 heures
2035- Commandes urgentes / pharmaceutique : < 2 heures
2036
2037**Seuil d'alerte : dérive progressive (mesurer semaine par semaine)**
2038
2039### Ce que la dérive révèle
2040
2041C'est le KPI goulot d'étranglement par excellence. Quand le cycle time augmente, il faut identifier à quelle étape le temps est perdu. Trois zones à auditer :
2042- **La réception** : si le délai de mise en disponibilité (stock WMS) est long, les commandes attendant ces articles sont bloquées.
2043- **Le picking** : si la productivité picking chute (slotting dégradé, ressources insuffisantes), les commandes s'accumulent en attente.
2044- **L'expédition** : si la zone d'attente expédition est désorganisée et que le contrôle de sortie prend trop de temps.
2045
2046La dérive du cycle time est souvent le premier signal visible d'un problème organisationnel avant qu'il n'atteigne le client.
2047
2048---
2049
2050## KPI #07 — Coût logistique par commande (Logistics Cost per Order)
2051
2052**Ce que ça mesure** : le coût total logistique rapporté à chaque commande expédiée. Indicateur de rentabilité opérationnelle.
2053
2054**Formule :**
2055
2056\`Coût/commande = Coûts logistiques totaux ÷ Nombre de commandes expédiées\`
2057
2058*(Coûts à inclure : masse salariale opérationnelle, frais de transport, fournitures emballage, loyer et charges entrepôt, maintenance équipements, coûts WMS/systèmes)*
2059
2060**Cibles 2025 :** Variable selon secteur. L'objectif est la tendance : ce KPI doit être stable ou décroissant quand les volumes augmentent (économies d'échelle). Une hausse du coût/commande avec une hausse des volumes est un signal d'alarme organisationnel.
2061
2062**Seuil d'alerte : hausse de plus de 8 % sur un trimestre sans explication identifiée**
2063
2064### Ce que la dérive révèle
2065
2066C'est le KPI qui rend visible ce qui coûte sans se voir. Un entrepôt qui absorbe des erreurs de picking par des retraitements, qui fait des heures supplémentaires en période de pic faute de planification, qui gère des retours clients sans processus dédié — tout cela se retrouve dans ce chiffre. Quand il monte, on cherche souvent la cause du côté des tarifs transporteurs. Elle est plus souvent dans l'organisation interne.
2067
2068---
2069
2070## KPI #08 — Délai de mise en disponibilité réception (Dock-to-Stock Time)
2071
2072**Ce que ça mesure** : le temps écoulé entre le déchargement physique d'une marchandise et sa disponibilité effective dans le WMS pour le picking.
2073
2074**Formule :**
2075
2076\`Dock-to-Stock = Heure de disponibilité WMS − Heure de déchargement\`
2077
2078**Cibles 2025 :**
2079- Références classe A (forte rotation) : < 2 heures
2080- Références standard : < 4 heures
2081- Produits nécessitant contrôle qualité / quarantaine : selon procédure
2082
2083**Seuil d'alerte : > 4 heures en régime normal pour les classes A**
2084
2085### Ce que la dérive révèle
2086
2087C'est le KPI réception **invisible dans la plupart des entrepôts** — parce qu'il n'est tout simplement pas mesuré. Or un délai long ici crée une cascade : des articles disponibles physiquement mais bloqués dans le WMS, des commandes qui ne peuvent pas être préparées, des préparateurs qui cherchent des marchandises arrivées le matin mais pas encore enregistrées.
2088
2089Les causes les plus fréquentes : réception enregistrée en fin de journée (pratique courante, désastreuse pour les classes A) ; zone de réception sans adressage qui ralentit la mise en stock ; ou simplement absence de priorité donnée à la mise en disponibilité des références à forte rotation.
2090
2091---
2092
2093## KPI #09 — Taux d'utilisation de l'espace (Space Utilization Rate)
2094
2095**Ce que ça mesure** : la proportion de la capacité de stockage théorique effectivement utilisée.
2096
2097**Formule :**
2098
2099\`Taux d'utilisation = Volume moyen stocké ÷ Capacité totale de stockage × 100\`
2100
2101**Cibles 2025 :**
2102- Régime normal : maintenir entre 70 et 80 %
2103- Pic saisonnier : accepter temporairement jusqu'à 85–88 %
2104- Seuil critique : > 90 % en régime normal
2105
2106**Seuil d'alerte : > 85 % pendant plus de 3 semaines consécutives hors pic**
2107
2108### Ce que la dérive révèle
2109
2110Un entrepôt qui dépasse 85–90 % de son taux d'occupation commence à dysfonctionner physiquement avant même d'atteindre sa capacité théorique : les allées se rétrécissent, les zones picking se mélangent aux zones de stockage, les flux se croisent. La productivité picking chute. Les erreurs augmentent.
2111
2112Ce KPI est souvent utilisé dans un seul sens : "nous avons encore de la place". Il devrait aussi déclencher des alertes à la baisse : un taux d'utilisation qui chute indique un stock mort qui s'accumule, ou une activité en baisse non encore perçue par les équipes opérationnelles.
2113
2114---
2115
2116## KPI #10 — Productivité picking (Lignes préparées par heure)
2117
2118**Ce que ça mesure** : le nombre de lignes de commande préparées par opérateur par heure. Indicateur de performance opérationnelle du picking.
2119
2120**Formule :**
2121
2122\`Productivité = Nombre de lignes préparées ÷ Heures de travail picking\`
2123
2124**Cibles 2025 :**
2125- Picking manuel sans guidage : 60–120 lignes/heure selon complexité produit
2126- Avec voice picking ou pick-to-light : +20 à +50 % vs baseline manuel
2127- Avec automatisation Goods-to-Man : 300–600 lignes/heure
2128
2129→ La cible est d'abord interne : établir une baseline sur 3 mois, puis suivre les dérives.
2130
2131**Seuil d'alerte : dérive > 10 % vs baseline sur 2 semaines consécutives**
2132
2133### Ce que la dérive révèle
2134
2135C'est le KPI baromètre du slotting. Une productivité qui baisse sans cause RH évidente (absentéisme, nouveaux opérateurs) indique presque toujours une dégradation du slotting : des produits qui ont changé de rotation sans que leur emplacement suive, des zones de congestion qui s'installent, un itinéraire de picking qui n'est plus optimal.
2136
2137À suivre différemment selon les moments : la productivité lors des pics saisonniers ne se compare pas à la productivité en période creuse. La variation intra-période est plus informative que le chiffre absolu.
2138
2139---
2140
2141## Les 10 KPI d'un coup d'œil
2142
2143| # | KPI | Cible | Alerte si | Fréquence |
2144|---|-----|-------|-----------|-----------|
2145| 1 | OTIF | ≥ 95 % | < 90 % | Hebdomadaire |
2146| 2 | Précision de stock | ≥ 99 % | < 97 % | Mensuel + tournant |
2147| 3 | Précision picking | ≥ 99,5 % | < 98,5 % | Hebdomadaire |
2148| 4 | On-Time Delivery | ≥ 95 % | < 92 % | Hebdomadaire |
2149| 5 | Rotation des stocks | Baseline interne | Tendance baissière | Mensuel |
2150| 6 | Cycle Time commande | < 24h (B2B std) | Dérive > 10 % | Quotidien |
2151| 7 | Coût logistique / commande | Stable ou baisse | Hausse > 8 %/T | Mensuel |
2152| 8 | Dock-to-Stock | < 2h (classe A) | > 4h | Quotidien |
2153| 9 | Utilisation espace | 70–80 % | > 85 % prolongé | Hebdomadaire |
2154| 10 | Productivité picking | Baseline interne | Dérive > 10 % | Hebdomadaire |
2155
2156---
2157
2158## Ce que les KPI ne voient pas
2159
2160Ces 10 indicateurs donnent une image précise de ce qui se passe dans un entrepôt. Ils ne donnent pas une image complète.
2161
2162Un taux de service à 97 % ne dit pas que les 3 % restants concernent votre client le plus stratégique. Une productivité picking stable ne dit pas que les opérateurs compensent depuis 3 semaines un problème de slotting que personne n'a voulu remonter. Un coût logistique/commande sous contrôle ne dit pas que les coûts cachés — litiges transporteurs non comptabilisés, retours clients traités en dehors du processus formel — sont absorbés ailleurs dans les comptes.
2163
2164C'est pour ça que les KPI sont des **outils de pilotage** — pas des outils de diagnostic. Ils montrent où regarder. Le terrain montre ce qui s'y passe.
2165
2166> **Pour aller plus loin** — Ce que les tableaux de bord ne capturent pas — et que le terrain sait depuis longtemps — est développé dans cet article : [Ce que les KPI ne montrent jamais (et que le terrain sait)](/analyses-outils/kpi-ne-montrent-jamais-terrain-sait)
2167
2168---
2169
2170## Conclusion
2171
2172Un bon tableau de bord logistique n'est pas celui qui contient le plus d'indicateurs. C'est celui qui déclenche des décisions.
2173
2174Si vous regardez ces 10 KPI chaque semaine et que vos réunions de pilotage durent plus de 30 minutes sans produire un plan d'action, c'est que vous mesurez — vous ne pilotez pas encore.
2175
2176La différence entre les deux, c'est souvent moins une question d'outils qu'une question de méthode : savoir relier un chiffre à une cause, une cause à une action, une action à un résultat. C'est le travail du pilotage opérationnel.
2177
2178Et c'est ce que la **méthode F.L.U.X™** structure : **F**iabiliser les données (précision stock, adressage), **L**ire les indicateurs correctement (les 5 pourquoi), **U**nifier les flux entre fonctions (réception, picking, expédition coordonnés), et seulement alors e**X**écuter les projets de transformation à grande échelle.
2179
2180*Sources : OPEX (juin 2025) — Hardis Group (nov. 2025) — Mecalux (2025) — Exotec (2025) — Shiptify (janv. 2026)*`,publishDate:"2026-03-05",publishTime:"09:00",readTime:12,category:["KPI logistique","Performance entrepôt","Outils"],tags:["KPI logistique","Pilotage entrepôt","Performance","Outils"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Les 10 KPI logistiques à suivre pour piloter un entrepôt : formules exactes, cibles sectorielles 2025, seuils d'alerte et lecture terrain.",embedType:"markdown"},{id:"amazon-logistique-pme-regles-du-jeu",slug:"amazon-logistique-pme-regles-du-jeu",title:"Amazon a changé les règles du jeu — et personne n'a prévenu les PME",subtitle:"Livraison en deux jours, traçabilité en temps réel, fiabilité sans défaut : les clients n'attendent plus. Ils exigent. Ce que ça change — concrètement — pour les entreprises qui n'ont pas été conçues pour ce monde.",chapo:"Combien d'entre nous ont commandé sur Amazon simplement parce que la livraison était en deux jours ? Ce geste banal a reconfiguré ce que les clients — tous les clients, B2C comme B2B — considèrent comme normal. Ce n'est plus un avantage. C'est le minimum.",coverImage:nie,coverImageCaption:"Les nouvelles règles de la logistique — l'effet Amazon sur les PME",content:`Combien d'entre nous ont commandé sur Amazon simplement parce que la livraison était en deux jours ?
2181
2182Ce geste banal — répété des milliards de fois depuis 2005 — a fait quelque chose d'inattendu. Il n'a pas seulement transformé l'e-commerce. Il a reconfiguré ce que les clients — tous les clients, B2C comme B2B — considèrent comme normal.
2183
2184Livraison rapide. Traçabilité en temps réel. Fiabilité sans défaut.
2185
2186Ce n'est plus un avantage. C'est le minimum.
2187
2188Et le problème, pour beaucoup d'entreprises françaises, c'est qu'elles ont gardé des organisations logistiques conçues pour le monde d'avant. Celui où le client attendait. Celui où "sous 5 jours ouvrés" était une réponse acceptable. Celui où la logistique était une fonction support, quelque part entre les fournitures de bureau et le service comptable.
2189
2190Ce monde n'existe plus.
2191
2192---
2193
2194## Ce qu'Amazon a réellement changé
2195
2196En 2025, Amazon a livré plus de 170 millions d'articles en France en J ou J+1 pour ses abonnés Prime. 170 millions. Sur un marché de 67 millions d'habitants.
2197
2198Ce chiffre ne dit pas seulement qu'Amazon est efficace. Il dit que des dizaines de millions de personnes ont intégré la livraison ultra-rapide comme une norme — pas comme une exception. Et que cette norme, elles l'ont exportée partout : dans leurs achats professionnels, dans leurs relations avec leurs fournisseurs, dans leur patience (ou plutôt leur absence de patience) face à un délai non respecté.
2199
2200> 61 % des consommateurs abandonnent leur panier si les délais de livraison leur semblent trop longs. Ce réflexe, forgé dans l'expérience B2C, se transfère progressivement aux achats professionnels. *(MetaPack)*
2201
2202L'effet Amazon n'est pas un phénomène e-commerce. C'est un phénomène d'attentes. Et les attentes ne restent pas dans un seul secteur.
2203
2204Un acheteur professionnel qui commande des consommables pour son entreprise s'attend désormais à une confirmation immédiate, un suivi en temps réel, et une livraison fiable. Selon McKinsey, 77 % des entreprises considèrent la fiabilité des délais comme plus importante que la rapidité — mais la fiabilité elle-même a été tirée vers le haut par Amazon. Ce qui était "fiable" il y a dix ans ne l'est plus aujourd'hui.
2205
2206---
2207
2208## La PME prise en étau
2209
2210Le problème, c'est l'asymétrie.
2211
2212Amazon a investi plus d'1,2 milliard d'euros en France en 2025 dans ses infrastru
2212ctures logistiques. Des entrepôts régionaux, des algorithmes de prévision de demande, plus d'un million de robots dans ses centres de distribution mondiaux, de l'intelligence artificielle pour optimiser chaque centimètre de chaque colis.
2213
2214Une PME de 40 salariés, elle, a un entrepôt de 1 500 m². Une équipe de 6 préparateurs. Un WMS acheté il y a 8 ans. Et des clients qui attendent les mêmes délais qu'Amazon.
2215
2216> **L'équation impossible ?** Non. Personne ne demande à une PME de reproduire l'infrastructure Amazon. Ce qu'on lui demande — et ce que ses clients exigent — c'est une logistique fiable, prévisible, et traçable. Ces trois choses ne nécessitent pas un milliard d'euros. Elles nécessitent une organisation bien conçue.
2217
2218Ce qui se passe dans les entreprises qui n'ont pas fait cette bascule, on le voit systématiquement sur le terrain :
2219
2220- Des équipes qui courent après les commandes urgentes en permanence.
2221- Des erreurs de picking qui remontent au service client comme des problèmes relationnels, alors que c'est un problème de processus.
2222- Des stocks qui ne correspondent pas à la réalité du WMS — et des ruptures qui surprennent tout le monde.
2223- Des délais qui se dégradent en période de pic, précisément quand le client en a le plus besoin.
2224- Des coûts de logistique inverse (retours, erreurs, litiges) qui mangent silencieusement les marges.
2225
2226Ce n'est pas une question de taille. C'est une question d'organisation.
2227
2228---
2229
2230## La logistique n'est plus une fonction support
2231
2232Pendant longtemps, la logistique a été perçue comme une nécessité opérationnelle — un coût à minimiser, une fonction à optimiser à la marge, un département qu'on ne remarquait que quand quelque chose se passait mal.
2233
2234Ce paradigme est mort.
2235
2236**Chiffres clés :**
2237- **95 Md€** : chiffre d'affaires du e-commerce français attendu en 2026 — +7 % vs 2025 (estimations marché 2026)
2238- **77 %** des entreprises B2B placent la fiabilité des délais au-dessus de la rapidité — mais les deux standards ont été tirés vers le haut (McKinsey)
2239- **61 %** des consommateurs abandonnent leur panier face à des délais trop longs (MetaPack) — ce réflexe se transfère au B2B
2240- **67 %** des marques privilégient les options de livraison express en 2025, contre 64 % en 2024 — la pression sur les délais s'accélère (Ecommerce Magazine)
2241
2242Aujourd'hui, la logistique est l'une des rares fonctions d'une entreprise qui touche directement à trois leviers de compétitivité simultanément :
2243
2244**La satisfaction client** — un colis en retard, une commande incomplète, une erreur de produit. C'est le client qui le vit. Et c'est souvent lui qui ne revient pas.
2245
2246**Les coûts opérationnels** — une logistique désorganisée génère des coûts cachés que personne ne comptabilise vraiment : heures passées à chercher des produits, litiges transporteurs, retraitements d'erreurs, stocks dormants qui immobilisent du capital.
2247
2248**La capacité de croissance** — une entreprise dont la logistique ne tient pas sous pression ne peut pas se développer. Elle peut vendre plus, mais elle ne peut pas livrer plus. Et ce plafond-là, il arrive toujours au mauvais moment.
2249
2250> "Une logistique bien organisée ne se voit pas. Une logistique désorganisée, elle, se voit partout — dans les marges, dans le service client, dans la difficulté à gérer les pics."
2251
2252---
2253
2254## Deux entreprises, même secteur, résultats opposés
2255
2256Ce n'est pas théorique. Voici ce qu'on observe sur le terrain.
2257
2258**Entreprise A — Logistique subie :**
2259- Réception non contrôlée → stocks WMS qui ne correspondent pas à la réalité
2260- Slotting figé depuis l'ouverture → préparateurs qui parcourent 3x plus de distance
2261- Pas de KPI picking → les erreurs ne remontent que quand le client se plaint
2262- Cut-offs transporteurs subis → commandes urgentes traitées en heures supplémentaires
2263- Direction qui perçoit la logistique comme "un problème de RH"
2264
2265*Résultat : taux de service à 88 %, 3 % d'erreurs picking, coûts logistiques qui progressent plus vite que le chiffre d'affaires.*
2266
2267**Entreprise B — Logistique pilotée :**
2268- Précision de stock > 99 % → aucune commande bloquée sur un stock fantôme
2269- Slotting révisé bi-annuellement → distances de picking réduites de 18 %
2270- 5 KPI suivis chaque semaine → les dérives détectées en 72h
2271- Cut-offs intégrés dans la planification picking → zéro heure sup logistique
2272- Direction qui traite la logistique comme un avantage concurrentiel
2273
2274*Résultat : taux de service à 97 %, 0,3 % d'erreurs, coûts logistiques stables malgré une croissance de 22 % du volume.*
2275
2276Ces deux entreprises ont des entrepôts de taille comparable. Des équipes comparables. Des produits comparables. Ce qui diffère : l'organisation et le niveau de pilotage.
2277
2278---
2279
2280## Ce que ça coûte de ne pas voir le problème
2281
2282Les coûts d'une logistique désorganisée sont rarement visibles dans une ligne de compte de résultat. Ils s'appellent autrement.
2283
2284Ils s'appellent "avoir commercial" quand c'est une erreur de commande qu'on ne facture pas pour ne pas perdre le client.
2285
2286Ils s'appellent "heures supplémentaires" quand la planification logistique ne permet pas de tenir les délais en période normale.
2287
2288Ils s'appellent "perte de marché" quand un concurrent — souvent une PME mieux organisée, pas nécessairement plus grande — commence à prendre les clients qui n'en peuvent plus d'attendre.
2289
2290> **Ce que 15 ans de terrain ont appris :** Les entreprises qui perdent des parts de marché sur la logistique ne le voient pas toujours venir. Elles voient un client mécontent, puis deux, puis un appel d'offres perdu. Elles cherchent la cause du côté commercial. Rarement du côté de l'entrepôt. Pourtant, c'est là que tout s'est joué.
2291
2292Les entreprises qui ont traité la logistique comme un centre de coût à minimiser se retrouvent aujourd'hui dans une position inconfortable : leurs concurrents qui ont investi dans leur organisation logistique — pas en technologie, en organisation — livrent mieux, plus vite, moins cher à l'erreur. Et leurs clients le savent.
2293
2294---
2295
2296## La bonne nouvelle : le retard se rattrape
2297
2298L'avantage qu'a pris Amazon ne se rattrape pas. Une PME de 40 salariés ne déploiera jamais un réseau de distribution de la taille d'Amazon.
2299
2300Mais ce n'est pas le sujet.
2301
2302Le sujet, c'est de livrer ses propres clients — les siens, dans son marché, avec ses produits — de façon fiable, précise et prévisible. Et ça, une PME peut le faire. Souvent sans investissement majeur. Parfois en quelques semaines.
2303
2304Les chantiers qui changent le plus la donne sont presque toujours les mêmes :
2305
2306- **Fiabiliser la précision de stock** — souvent à coût nul, par discipline opérationnelle
2307- **Revoir le slotting** — un gain de 15 à 20 % sur les distances de picking, sans investissement
2308- **Mettre en place 5 KPI et les suivre vraiment** — pas les produire, les utiliser
2309- **Séquencer les flux réception/picking/expédition** — réduire les erreurs par confusion
2310
2311Aucun de ces chantiers ne nécessite un nouveau WMS. Aucun ne nécessite des robots. Ils nécessitent une méthode, de la discipline, et un regard extérieur quand l'équipe est trop dans le flux pour voir ce qui dysfonctionne.
2312
2313> **Principe F.L.U.X™ :** Fiabiliser d'abord. Lire les données ensuite. Unifier les flux entre fonctions. Seulement alors envisager l'automatisation. Dans cet ordre — pas dans l'autre. La technologie amplifie ce qui existe. Si les processus sont instables, elle amplifie l'instabilité.
2314
2315---
2316
2317## Conclusion
2318
2319La logistique n'est plus une fonction support.
2320
2321Amazon ne l'a pas décidé. Les clients l'ont décidé — progressivement, commande après commande, en s'habituant à mieux. Et maintenant, ils ne reviennent plus en arrière.
2322
2323Les entreprises qui ont compris ça prennent une avance réelle — pas parce qu'elles ont dépensé plus, mais parce qu'elles ont organisé différemment.
2324
2325Les autres courent encore après les colis.
2326
2327**La question n'est pas de savoir si votre logistique peut s'améliorer.** Elle peut — presque toujours, et souvent bien plus vite qu'on ne le croit.
2328
2329**La question est de savoir si vous avez le regard extérieur pour voir ce que votre équipe ne voit plus.**
2330
2331---
2332
2333*Sources : Amazon / Ecommerce Magazine (fév. 2026) · MetaPack · McKinsey · Ecommerce Magazine (nov. 2025) · Estimations marché e-commerce France 2026*`,publishDate:"2026-02-20",publishTime:"08:00",readTime:8,category:["Logistique PME","Analyse"],tags:["Logistique PME","Effet Amazon","Avantage concurrentiel","Analyse"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Amazon a redéfini les attentes de livraison pour tous — y compris les PME qui n'ont rien à voir avec l'e-commerce. Pourquoi la logistique est devenue un avantage concurrentiel.",embedType:"markdown"},{id:"consultant-logistique-metier",slug:"consultant-logistique-metier",title:"Consultant logistique : que fait vraiment ce métier ?",subt
2333itle:"Au-delà des fiches métier académiques : ce que fait concrètement un consultant logistique terrain, dans quel contexte il intervient, et pourquoi la différence entre conseil et résultats opérationnels n'est pas anodine.",chapo:"Les fiches métier décrivent toutes la même chose : diagnostics, préconisations, optimisation des flux. C'est exact. Et c'est incomplet. Voici ce que fait vraiment un consultant logistique terrain — vu de l'intérieur, après 15 ans d'opérations.",coverImage:rie,coverImageCaption:"Consultant logistique en immersion terrain — au-delà des fiches métier",content:`## Ce que dit la définition officielle — et ce qu'elle oublie
2334
2335Les fiches métier décrivent toutes la même chose : diagnostics, préconisations, optimisation des flux, réduction des coûts, WMS, ERP. C'est exact. Et c'est incomplet. Ce qu'elles ne disent pas, c'est la différence entre un consultant qui livre des slides et un consultant qui descend dans l'entrepôt à 6h du matin pour comprendre ce qui se passe vraiment.
2336
2337**Chiffres clés du marché 2025-2026 :**
2338- 45 000 € : salaire médian d'un consultant logistique salarié en France (Talent.com, 2025)
2339- 600 à 1 500 €/jour : TJM d'un consultant logistique indépendant senior (AMALO, 2025)
2340- 55 % des entreprises logistiques font appel à des freelances pour optimiser leurs flux (Capgemini, 2025)
2341- 6 jours : délai moyen pour mobiliser un consultant freelance vs 6 à 9 mois pour un recrutement (Gartner)
2342
2343---
2344
2345## Le consultant terrain vs le consultant PowerPoint
2346
2347Distinction réelle, pas posture marketing. Deux réalités professionnelles sous la même étiquette.
2348
2349**Consultant PowerPoint :** travail analytique à distance, benchmarks sectoriels, rapport de recommandations, mesure en livrables, interlocuteur principal = direction.
2350
2351**Consultant terrain :** observation d'abord, parle aux opérateurs, mesure en résultats (précision stock, distances picking, taux de service), accompagne la mise en œuvre, sait dire "ça ne marchera pas ici".
2352
2353> "Après 15 ans en opérations logistiques, j'ai vécu les deux côtés. Les recommandations qui ne tiennent pas compte de la réalité du terrain ne sont pas de mauvaises recommandations. Ce sont des hypothèses non testées."
2354
2355---
2356
2357## Ce qu'un consultant logistique fait vraiment au quotidien
2358
23598 missions concrètes que l'on retrouve dans la quasi-totalité des interventions :
2360
2361- **Diagnostic terrain** — immersion en entrepôt, observation des flux réels, chronoanalyse
2362- **Analyse des données** — extraction WMS/ERP, croisement avec la réalité physique
2363- **Cartographie des flux** — spaghetti chart, VSM, identification des goulots
2364- **Restructuration opérationnelle** — slotting, zonage, séquençage des opérations
2365- **Accompagnement WMS/SI** — paramétrage, activation des modules sous-utilisés
2366- **Mise en place KPI** — indicateurs actionnables, tableaux de bord terrain
2367- **Conduite du changement** — formation des équipes, accompagnement managérial
2368- **Préparation à l'IA** — évaluation de maturité, cadrage des cas d'usage pertinents
2369
2370Ce qu'on ne voit pas dans la liste : les conversations informelles avec le chef d'équipe qui dit "on fait comme ça parce que le système plante". Un consultant terrain écoute autant qu'il analyse.
2371
2372---
2373
2374## Comment se déroule concrètement une mission
2375
23765 phases séquencées :
2377
23781. **Cadrage (1-2 jours)** — périmètre, enjeux, résultats attendus, interlocuteurs clés
23792. **Immersion terrain (2-5 jours)** — observation en entrepôt, entretiens opérateurs, chronoanalyse
23803. **Diagnostic (3-5 jours)** — synthèse données + terrain, premiers constats structurés
23814. **Plan d'action (2-3 jours)** — séquencé, chiffré, distinguant actions à coût nul et investissements
23825. **Accompagnement mise en œuvre (variable)** — là où la différence terrain/PowerPoint est la plus visible
2383
2384La phase 5 est celle qui sépare le conseil de l'impact. Un rapport sans accompagnement produit rarement des résultats durables.
2385
2386---
2387
2388## Pour quels secteurs et quelles entreprises ?
2389
2390Les secteurs les plus demandeurs de conseil logistique :
2391
2392- **Distribution / retail** — flux multi-références, saisonnalité, pression sur les délais
2393- **E-commerce** — volumes croissants, exigence J+1, taux de retour élevé
2394- **Pharmaceutique / santé** — contraintes réglementaires, traçabilité, conditions de stockage
2395- **Industrie / manufacturing** — flux de production, approvisionnement, en-cours
2396- **Agroalimentaire** — DLC, chaîne du froid, traçabilité
2397- **Logistique 3PL** — multi-clients, optimisation des ressources partagées
2398
2399**PME et ETI : le marché le plus porteur et le plus sous-servi.** Des entreprises avec des entrepôts de 2 000 à 15 000 m², sans directeur supply chain à temps plein, qui ont fait croître leur logistique de façon empirique. C'est exactement là qu'un regard extérieur structuré apporte le plus de valeur.
2400
2401---
2402
2403## Pourquoi les PME ont particulièrement besoin de conseil logistique
2404
24055 apports concrets d'un consultant externe pour une PME/ETI :
2406
2407- **Regard extérieur** — identifier ce que l'habitude rend invisible
2408- **Méthode de séquençage** — prioriser les chantiers par impact, pas par urgence perçue
2409- **Expérience sectorielle** — transposer des solutions éprouvées d'autres secteurs
2410- **Neutralité** — arbitrer sans enjeu politique interne
2411- **Capacité d'accélération** — 6 jours pour mobiliser un consultant vs 6-9 mois pour recruter
2412
2413L'IA va creuser l'écart entre grands groupes bien capitalisés et PME sans accès aux mêmes outils — ce qui renforce le besoin d'un accompagnement externe accessible et opérationnel.
2414
2415---
2416
2417## Tarifs, statuts et ce que ça coûte vraiment
2418
2419**Consultant salarié (cabinet) :**
2420- Junior (0-3 ans) : 35 000-45 000 €/an
2421- Confirmé (3-7 ans) : 45 000-60 000 €/an
2422- Senior (7+ ans) : 60 000-80 000 €/an
2423
2424**Consultant indépendant (freelance/portage) :**
2425- TJM : 600 à 1 500 €/jour selon spécialisation et séniorité
2426- 30 à 40 % moins cher que les grands cabinets à profil équivalent, sans structure à amortir
2427
2428**Règle de calcul ROI :** identifier les coûts cachés actuels (surstock = 20-30 % de la valeur/an, erreurs picking = 17 €/erreur, productivité picking sous-optimale) pour évaluer le retour sur investissement de la mission. Dans la majorité des cas, une mission de diagnostic se rembourse en 3 à 6 mois.
2429
2430---
2431
2432## Comment choisir le bon consultant logistique
2433
2434**Questions à poser :**
2435- Quelle est votre expérience opérationnelle réelle (pas seulement conseil) ?
2436- Sur quels secteurs avez-vous travaillé ?
2437- Comment se déroule votre diagnostic — descendez-vous en entrepôt ?
2438- Pouvez-vous partager des résultats chiffrés de missions similaires ?
2439- Quelle est votre approche vis-à-vis des outils technologiques ?
2440
2441**Signaux d'alerte :**
2442- Solution proposée avant que le diagnostic ne soit terminé
2443- Consultant qui ne demande pas à voir l'entrepôt
2444- Livrable centré sur le nombre de slides, pas sur les résultats
2445- Mission qui finit à la livraison du rapport, sans accompagnement
2446
2447---
2448
2449## Ma vision du métier — la méthode F.L.U.X™
2450
2451Après 15 ans en opérations logistiques (Nike, IKEA, Bio-Rad, Saint-Gobain, Cenexi), j'ai construit la méthode F.L.U.X™ à partir d'une observation simple : les entrepôts qui échouent ne manquent pas d'outils. Ils manquent de séquençage.
2452
2453- **F — Fiabiliser** : stabiliser les processus de base avant toute optimisation
2454- **L — Lire** : mettre en place les indicateurs qui permettent de comprendre
2455- **U — Unifier** : aligner outils, données et équipes
2456- **X — eXécuter** : seulement alors, la technologie apporte sa valeur réelle
2457
2458**Cible :** PME/ETI 50-500 salariés, entrepôts 2 000-15 000 m², secteurs distribution/industrie/pharma.
2459
2460**Engagement :** interlocuteur senior unique, 2 missions simultanées maximum, descente terrain systématique, résultats mesurables.
2461
2462> "Du terrain aux algorithmes. Sans jamais oublier d'où je viens."`,publishDate:"2026-02-12",publishTime:"09h00",readTime:13,category:["Consultant logistique","Terrain","PME/ETI"],tags:["Consultant logistique","Métier","Terrain","PME / ETI"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Missions réelles, résultats concrets, différence entre consultant terrain et consultant PowerPoint. Ce que fait vraiment un consultant logistique en 2026 — vu de l'intérieur.",embedType:"markdown"},{id:"supply-chain-vs-logistique",slug:"supply-chain-vs-logistique",title:"Supply chain et logistique : quelle différence ?",subtitle:"Deux termes utilisés en permanence, souvent de façon interchangeable. Ils ne désignent pourtant pas la même réalité — et confondre les deux coûte cher.",chapo:"La logistique vient du vocabulaire militaire du XIXe siècle. La supply chain est apparue dans les années 1980–1990 avec la mondialisation. Résultat : selon les entreprises, les deux termes peuvent désigner exactement la même chose — ou deux réalités radicalement différentes. Voici comment y voir clair.",coverImage:aie,coverImageCaption:"Supply chain et logistique — deux réalités distinctes qu'il est coûteux de confondre",content:`## Pourquoi la confusion persiste
2463
2464La logistique vient du vocabulaire militaire du XIXe siècle. La supply chain est apparue dans les années 1980–1990 avec la mondialisation. Elle a progressivement englobé la logistique sans que le terme "logistique" disparaisse. Résultat : selon les entreprises, "logistique" peut désigner un entrepôt, une fonction transverse ou la totalité de la chaîne de valeur. "Supply chain" peut signifier exactement la même chose. Le flou lexical est réel — documenté dans la littérature académique — et ses conséquences opérationnelles sont sous-estimées.
2465
2466**Chiffres clés :**
2467- 10 % du PIB français représentés par la logistique et la supply chain (France Logistique)
2468- 200 Md€ de chiffre d'affaires du secteur logistique en France
2469- 1,8 million d'emplois en logistique et supply chain en France
2470- Plus de 10 % des coûts totaux d'une entreprise représentés par la logistique + supply chain (PwC)
2471
2472---
2473
2474## Les deux définitions en clair
2475
2476**LOGISTIQUE — La gestion des flux physiques**
2477
2478La logistique gère le déplacement, le stockage et la mise à disposition des marchandises. Elle opère à l'intérieur de l'entreprise, entre les points qu'elle maîtrise directement.
2479
2480*Périmètre :* réception, entreposage, préparation de commandes, expédition, transport.
2481*Horizon :* court terme opérationnel — aujourd'hui, cette semaine.
2482
2483**SUPPLY CHAIN — La coordination de l'ensemble du réseau**
2484
2485La supply chain coordonne tous les flux — physiques, d'information et financiers — depuis les fournisseurs des fournisseurs jusqu'aux clients des clients. Elle opère au-delà des frontières de l'entreprise.
2486
2487*Périmètre :* sourcing, production, planification, logistique, distribution.
2488*Horizon :* stratégique et moyen terme — les prochains trimestres, les prochaines années.
2489
2490> **Définition de référence — ASLOG :** La logistique est « l'art et la manière de mettre à disposition un produit donné, au bon moment, au bon endroit, au moindre coût et avec la meilleure qualité ». Cette définition souligne la dimension opérationnelle et orientée exécution de la logistique — pas la stratégie de réseau.
2491
2492**La logistique est une partie de la supply chain — pas son synonyme.**
2493
2494---
2495
2496## L'emboîtement : la logistique dans la supply chain
2497
2498La supply chain englobe l'ensemble des maillons, de l'approvisionnement en matières premières jusqu'au service après-vente. La logistique en constitue le maillon central d'exécution :
2499
2500- Sourcing matières premières / Achats & fournisseurs
2501- Planification de la demande
2502- Production / Manufacturing
2503- **→ LOGISTIQUE : Réception → Stockage → Picking → Expédition → Transport**
2504- Distribution & ventes / Service client
2505- Logistique inverse (retours)
2506- Flux d'information & data
2507
2508La logistique est le maillon central d'exécution — mais un maillon parmi d'autres. Une supply chain parfaitement pilotée avec une logistique défaillante ne fonctionnera pas. Une logistique parfaitement optimisée dans une supply chain mal organisée ne produira pas les résultats attendus. Les deux fonctions sont interdépendantes.
2509
2510---
2511
2512## Ce qui les différencie vraiment
2513
2514Les principales dimensions de différenciation :
2515
2516- **Périmètre** — Logistique : interne à l'entreprise (entrepôt, transport propre). Supply chain : externe, implique fournisseurs, prestataires, clients.
2517- **Horizon temporel** — Logistique : court terme, opérations du jour et de la semaine. Supply chain : moyen/long terme, stratég
2517ie réseau et prévisions.
2518- **Nature des décisions** — Logistique : opérationnelles (quand, comment, par qui). Supply chain : stratégiques (où produire, combien stocker, quels fournisseurs).
2519- **Flux gérés** — Logistique : physiques principalement. Supply chain : physiques + information + financiers + administratifs.
2520- **Indicateurs clés** — Logistique : taux de service, précision stock, productivité picking. Supply chain : OTIF, coût total de possession, rotation stock réseau.
2521- **Outils typiques** — Logistique : WMS, TMS, codes-barres, RFID. Supply chain : ERP, CRM, SRM, APS, outils de planification de la demande.
2522- **Interlocuteurs** — Logistique : responsable entrepôt, chefs d'équipe, transporteurs. Supply chain : direction générale, achats, commercial, finance, fournisseurs.
2523- **Quand ça dysfonctionne** — Logistique : erreurs commandes, retards expédition, stock fantôme. Supply chain : ruptures structurelles, surcoûts sourcing, délais production non maîtrisés.
2524
2525> **L'erreur de diagnostic la plus fréquente :** Un problème de rupture de stock peut avoir sa cause dans la logistique (mauvaise précision de stock, délai de mise en stock défaillant) OU dans la supply chain (mauvaise prévision de la demande, lead time fournisseur mal piloté). Ce n'est pas la même correction — et ce n'est pas le même interlocuteur.
2526
2527---
2528
2529## Ce qui se recoupe
2530
2531Il existe des zones où logistique et supply chain partagent des objectifs, des données, des décisions. Ces zones de recoupement sont souvent là où la coordination fait défaut — et où les coûts apparaissent.
2532
2533**📦 Gestion des stocks** — La logistique gère le stock physique (emplacements, précision, inventaires). La supply chain définit les niveaux de stock cibles et les politiques de réapprovisionnement. Si les deux ne dialoguent pas, les stocks réels s'éloignent progressivement des stocks prévus.
2534
2535**🚚 Transport** — La logistique opère les transports (enlèvements, livraisons, tournées). La supply chain choisit les prestataires, négocie les contrats, définit le schéma transport global. Le transporteur est commun — la relation ne l'est pas.
2536
2537**📊 Prévisions et planification** — La supply chain planifie les volumes à produire et stocker. La logistique dimensionne ses ressources (espace, personnel, équipements) en fonction de ces prévisions. Un prévisionnel mal partagé génère des entrepôts sous ou surdimensionnés.
2538
2539**↩️ Logistique inverse** — L'angle mort des deux fonctions. La logistique traite les flux physiques retour. La supply chain définit les politiques (conditions de retour, remise en stock, destruction). Sans alignement, les retours deviennent un gouffre opérationnel.
2540
2541**🔗 Relation fournisseurs** — La supply chain gère les relations stratégiques avec les fournisseurs. La logistique subit les conséquences opérationnelles de ces relations : qualité des attendus, respect des créneaux, conformité des emballages. Les problèmes remontent à la logistique — les solutions se négocient en supply chain.
2542
2543**📡 Données et systèmes** — WMS et ERP doivent être synchronisés. Les données de stock terrain (logistique) alimentent les prévisions supply chain. Les données de demande (supply chain) pilotent les réapprovisionnements. Quand les systèmes ne parlent pas, les deux fonctions travaillent sur des réalités différentes.
2544
2545> "La logistique exécute. La supply chain organise. Mais ni l'une ni l'autre ne peut réussir sans l'autre."
2546
2547---
2548
2549## Exemples concrets secteur par secteur
2550
2551### 🛋️ Distribution grand public — IKEA
2552
2553**Logistique :** réception et rangement des palettes dans les entrepôts magasin, gestion du flux stock réserve → zone vente, préparation des commandes click-and-collect et livraison domicile, organisation des quais et tournées livraison, gestion des retours clients.
2554
2555**Supply chain :** décision de localisation des usines de fabrication (50 pays), planification mondiale des volumes de production par référence, gestion des relations fournisseurs matières premières (bois, tissu, métal), définition du schéma de distribution : usines → entrepôts régionaux → magasins, engagement livraisons urbaines 100 % électriques (décision SC, pas logistique).
2556
2557### 💊 Pharmaceutique — type Bio-Rad / Cenexi
2558
2559**Logistique :** réception matières premières avec contrôle et quarantaine, gestion des températures (+2/+8 °C, -20 °C, -80 °C), traçabilité unitaire par lot (numéros lot, dates péremption, FIFO strict), préparation des expéditions sous exigences IATA produits dangereux, gestion des rappels de lots.
2560
2561**Supply chain :** qualification et audit des fournisseurs de matières premières actives (API), planification production intégrant délais contrôle qualité (3 à 6 semaines), stocks de sécurité stratég
2561iques pour matières critiques, dual sourcing pour multiplier les sources sur les composants à risque, coordination avec les autorités de santé.
2562
2563*La distinction a des conséquences réglementaires directes. La logistique opère dans un cadre GMP/GDP aux contraintes physiques précises. La supply chain pilote les stratégies qui déterminent si ces contraintes sont respectables ou non.*
2564
2565### 👟 Sport / Textile — Nike
2566
2567**Logistique :** réception des conteneurs Asie du Sud-Est, dédouanement, contrôle conformité, gestion des entrepôts régionaux (Europe : base Laakdal, Belgique), préparation des commandes détaillants, franchise stores, e-commerce, gestion des retours e-commerce (volume considérable en textile).
2568
2569**Supply chain :** sélection et qualification de 400+ fabriques dans 40+ pays, planification des lancements de collections 18 à 24 mois à l'avance, arbitrages make-or-buy sur les nouvelles matières (Flyknit, React, Air), gestion de la dépendance géopolitique (Vietnam, Chine, Indonésie), décisions de relocalisation partielle.
2570
2571*Nike est un cas d'école de supply chain externalisée. Nike fabrique presque rien lui-même (moins de 1 % de la production en interne). La logistique gère les flux de produits finis depuis les usines partenaires jusqu'aux clients finaux.*
2572
2573### 🏗️ Industrie lourde — Saint-Gobain
2574
2575**Logistique :** gestion des stocks de plaques de plâtre, laine de verre, vitrage en entrepôts régionaux, organisation des livraisons sur chantier (contraintes d'accès, créneaux, portiques), gestion des rebuts et chutes de découpe, coordination avec les négoces de matériaux.
2576
2577**Supply chain :** approvisionnement matières premières (sable siliceux, calcaire, gypse) depuis carrières mondiales, planification de la production selon demande construction (très cyclique), gestion des tensions matières premières et énergétiques, décisions d'implantation des usines selon les marchés géographiques prioritaires.
2578
2579---
2580
2581## Ce que ça change en pratique pour une entreprise
2582
2583### Problème 1 — Confier à la logistique des décisions qui relèvent de la supply chain
2584
2585Contexte fréquent dans les PME sans fonction SC formalisée : le responsable logistique gère aussi les prévisions, les achats, les relations fournisseurs. Les décisions de moyen terme sont prises avec des critères court-termistes. La logistique produit de bons KPI opérationnels — mais l'entreprise reste structurellement exposée aux ruptures.
2586
2587### Problème 2 — Résoudre un problème supply chain avec des outils logistiques
2588
2589Cas concret : une entreprise subit des ruptures récurrentes. Elle investit dans un WMS plus performant pour mieux gérer ses stocks. La précision de stock s'améliore — mais les ruptures persistent. La cause était une mauvaise prévision de la demande (supply chain), pas une mauvaise gestion physique (logistique). Le bon outil a été appliqué au mauvais problème.
2590
2591### Problème 3 — Ne pas faire parler les deux fonctions
2592
2593Dans les grandes organisations, logistique et supply chain existent mais en silos. La supply chain planifie des volumes que la logistique ne peut pas absorber faute d'espace ou de ressources. La logistique remonte des données de stock qui ne sont pas intégrées dans les prévisions supply chain. Deux fonctions performantes séparément — l'entreprise dysfonctionne quand même.
2594
2595> **Ce que la clarté conceptuelle produit concrètement :** Distinguer logistique et supply chain permet de mieux recruter (les compétences requises sont différentes), mieux structurer l'organisation (deux fonctions, deux types de décisions), mieux diagnostiquer les problèmes (exécution ou planification ?), et mieux investir (WMS pour la logistique, APS/ERP pour la supply chain).
2596
2597---
2598
2599## Mon regard terrain — méthode F.L.U.X™
2600
2601Cette distinction, je ne l'ai pas apprise dans un manuel. Je l'ai apprise en vivant les conséquences d'une décision supply chain mal articulée avec la logistique — et vice versa.
2602
2603> **Retour d'expérience terrain :** Dans un contexte de distribution pharmaceutique : une décision supply chain de changer de fournisseur de conditionnement secondaire, pour réduire les coûts de 8 %, a créé six semaines de chaos logistique. Les nouvelles boîtes ne correspondaient pas aux gabarits des automates de picking. Les opérateurs devaient tout prélever manuellement. La productivité a chuté de 35 %. Le gain supply chain était réel — la coordination avec la logistique n'avait pas eu lieu. Le coût de la transition a largement annulé l'économie réalisée.
2604
2605La méthode F.L.U.X™ part toujours de l'opérationnel pour remonter vers le stratég
2605ique — jamais l'inverse. Fiabiliser les flux physiques (logistique) d'abord. Lire correctement les données ensuite. Unifier les informations entre fonctions. Seulement alors engager des projets de transformation à grande échelle (supply chain).
2606
2607**La logistique n'est pas inférieure à la supply chain. Elle en est le fondement.**
2608
2609---
2610
2611*Sources : France Logistique 2025 (Ministère de la Transition Écologique), PwC, ASLOG, Manutan, A2Ti, Institut NEMO, SupplyChainInfo.*`,publishDate:"2026-01-04",publishTime:"08h30",readTime:10,category:["Fondamentaux","Supply Chain","Logistique"],tags:["Supply Chain","Logistique","Définitions","Fondamentaux"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Supply chain et logistique : deux termes souvent confondus, deux réalités distinctes. Définitions précises, ce qui se recoupe, exemples concrets secteur par secteur.",embedType:"markdown"},{id:"7-erreurs-performance-entrepot",slug:"7-erreurs-performance-entrepot",title:"Les 7 erreurs qui bloquent la performance d'un entrepôt",subtitle:"Trop de stock, mauvais adressage, flux croisés, WMS mal utilisé : les dysfonctionnements les plus coûteux que l'on retrouve dans les entrepôts de PME et d'ETI, avec leurs coûts réels et les corrections concrètes à engager.",chapo:"Ces erreurs ne sont pas rares. On les retrouve dans des organisations sérieuses, dotées d'outils modernes, pilotées par des équipes compétentes. Ce qui les unit : elles sont structurelles, souvent invisibles au quotidien, et leur coût réel n'est presque jamais calculé.",coverImage:"https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&q=80",coverImageCaption:"Entrepôt logistique — les 7 erreurs les plus coûteuses en performance",content:`## Introduction
2612
2613Ces erreurs ne sont pas rares. On les retrouve dans des organisations sérieuses, dotées d'outils modernes, pilotées par des équipes compétentes. Ce qui les unit : elles sont structurelles, souvent invisibles au quotidien, et leur coût réel n'est presque jamais calculé.
2614
2615**Chiffres clés :**
2616- 17 € : coût moyen d'une erreur de picking par commande (Mecalux)
2617- 300 000 € : pertes annuelles moyennes liées aux erreurs de collecte en entrepôt (étude Intermec)
2618- 20–30 % : coût de possession d'un stock (% de la valeur stockée par an)
2619- 10–15 % : part des coûts logistiques dans les achats d'une entreprise (Shiptify, 2025)
2620
2621> Principe : Un entrepôt ne dysfonctionne pas parce que les équipes ne travaillent pas bien. Il dysfonctionne parce que les processus de fond n'ont jamais été stabilisés. **Les gens font de leur mieux dans un système qui ne le permet pas.**
2622
2623---
2624
2625## Erreur n°1 — Trop de stock
2626
2627Le surstock est l'erreur la plus répandue et la moins bien mesurée. Le coût de possession d'un stock représente entre 20 et 30 % de sa valeur par an. Pour une PME avec 300 000 € de stock moyen, c'est jusqu'à 90 000 € de charges annuelles uniquement pour conserver ces marchandises.
2628
2629**Causes :** achats massifs pour remises fournisseurs / stock de sécurité surcalibré / prévisions approximatives / absence de revue des références dormantes.
2630
2631**Correction :** analyse ABC sur 12 mois, calcul du taux de possession réel, revue mensuelle des stocks dormants (zéro mouvement sur 90 jours), stock de sécurité aligné sur variabilité réelle fournisseurs.
2632
2633---
2634
2635## Erreur n°2 — Mauvais adressage
2636
2637Chaque emplacement doit avoir une adresse unique, lisible, cohérente entre le terrain et le système d'information. Un mauvais adressage conduit les opérateurs à mémoriser la localisation des produits — tant que les anciens sont là, ça tourne. Dès qu'ils partent, l'entrepôt perd sa mémoire.
2638
2639**Formes fréquentes :** codes non normalisés / emplacement physique introuvable depuis le WMS / zones de sol non adressées / adressage non mis à jour après réaménagement.
2640
2641**Correction :** convention d'adressage documentée (allée/colonne/niveau/position), mise à jour simultanée WMS + étiquettes terrain, adressage de toutes les zones utilisées y compris sol.
2642
2643---
2644
2645## Erreur n°3 — Flux croisés non maîtrisés
2646
2647Mélanger les flux entrants (réception), sortants (expédition) et retours (logistique inverse) dans les mêmes zones est l'une des causes les plus fréquentes d'erreurs de commandes. Une palette de retour non contrôlée dans la zone de stockage actif, c'est un risque d'expédier un produit défectueux.
2648
2649**3 flux à séparer absolument :** réception / expédition / retours clients.
2650
2651**Correction :** cartographie des flux réels (spaghetti chart), zones dédiées par type de flux, zone de quarantaine physique obligatoire, plages horaires séparées si l'espace ne le permet pas.
2652
2653---
2654
2655## Erreur n°4 — WMS mal utilisé
2656
2657La forme la plus courante du problème n'est pas l'absence de WMS, mais sa sous-utilisation : picking dirigé non activé, règles de réapprov
2657isionnement désactivées, module d'emplacements non paramétré. On retrouve un WMS utilisé comme tableur amélioré alors qu'il pourrait structurer l'ensemble des flux.
2658
2659**3 situations typiques :** WMS non paramétré / WMS partiellement activé / WMS déployé sans formation.
2660
2661**Règle d'or :** avant d'aller vers un WMS plus avancé, vérifier que le WMS actuel est utilisé à 80 % de ses capacités.
2662
2663---
2664
2665## Erreur n°5 — Slotting figé
2666
2667Le slotting défini à l'ouverture et jamais révisé devient progressivement contre-productif. Les produits A ne sont plus en zone de forte accessibilité. Les opérateurs parcourent des distances inutiles à chaque préparation.
2668
2669**Règle ABC :** produits A (20 % références = 80 % mouvements) → zone ergonomique 80-160 cm, proximité départ picking. Produits C → zones éloignées/hauteur.
2670
2671**Chiffre clé :** une révision du slotting basée sur l'analyse ABC des 12 derniers mois réduit les distances de déplacement de 15 à 20 % sans investissement supplémentaire (benchmarks 2025).
2672
2673---
2674
2675## Erreur n°6 — Indicateurs suivis mais non analysés
2676
267780 % des responsables logistiques placent les KPI parmi leurs priorités (Hardis Group, 2025). Mais la majorité en suivent trop sans en interpréter aucun avec profondeur. Le problème n'est pas le nombre d'indicateurs — c'est l'absence de processus pour les transformer en décisions.
2678
2679**Confusion symptôme/cause :** taux de retour élevé ≠ problème de logistique inverse (c'est un symptôme de picking, qualité, emballage ou fiche article). Taux de service en baisse ≠ problème de capacité.
2680
2681**Correction :** 5 à 7 indicateurs pilotables maximum, cible + zone d'alerte + zone rouge pour chacun, "5 pourquoi" systématiques sur les dérives.
2682
2683---
2684
2685## Erreur n°7 — Technologie sur socle instable
2686
2687La technologie est un amplificateur. Elle amplifie ce qui existe. Sur des processus fiabilisés, elle crée de la valeur. Sur des flux instables et des données incorrectes, elle amplifie les dysfonctionnements à plus grande vitesse.
2688
2689> **L'IA ne répare pas le chaos. Elle l'amplifie.**
2690
2691**Questions à poser avant tout projet tech :** précision stock > 98 % ? processus documentés ? équipes formées aux fondamentaux ? baseline de KPI sur 3 mois ?
2692
2693**Correction :** séquencer — fiabiliser d'abord, mesurer ensuite, automatiser en dernier.
2694
2695---
2696
2697## Diagnostiquer avant de corriger
2698
26993 actions terrain pour poser un diagnostic solide en 2 semaines sans budget :
27001. Chronoanalyse : suivre 5 commandes et 5 réceptions de bout en bout
27012. Mesure de la précision de stock sur 50 à 100 références (< 95 % = premier chantier)
27023. Analyse ABC rapide sur 6 mois et vérification du positionnement des produits A
2703
2704Dans 9 entrepôts sur 10, au moins 3 de ces 7 erreurs sont présentes simultanément. Les 2 à 3 premières corrections engagées produisent 60 à 70 % des gains totaux.
2705
2706---
2707
2708## La méthode F.L.U.X™ comme fil conducteur
2709
2710- **F — Fiabiliser :** stabiliser les processus de base (réception, adressage, stock physique conforme)
2711- **L — Lire :** mettre en place les indicateurs qui permettent de comprendre où se situent les pertes
2712- **U — Unifier :** aligner outils, données et équipes autour d'une vision partagée
2713- **X — eXécuter :** seulement alors, les projets d'automatisation et d'IA ont une chance d'apporter de la valeur réelle
2714
2715Erreurs 1 à 5 = problèmes de phase Fiabiliser. Erreur 6 = problème de phase Lire. Erreur 7 = résultat d'avoir voulu sauter directement à eXécuter.`,publishDate:"2026-03-05",publishTime:"08h00",readTime:12,category:["Performance entrepôt","Diagnostic","Gestion des stocks","PME/ETI"],tags:["#PerformanceEntrepôt","#Diagnostic","#GestionStocks","#PMEETI","#FLUX","#DiagnosticTerrain"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Trop de stock, mauvais adressage, flux croisés, WMS mal utilisé : les 7 dysfonctionnements les plus fréquents en entrepôt, leurs coûts réels et comment les corriger. Analyse terrain 2026.",embedType:"markdown"},{id:"optimiser-entrepot-logistique-2026",slug:"comment-optimiser-un-entrepot-logistique-methode-complete",featured:!0,title:"Comment optimiser un entrepôt logistique : la méthode complète (2026)",subtitle:"Réception, stockage, picking, expédition, KPI, erreurs fréquentes : un guide de terrain structuré, documenté, sans raccourcis technologiques prématurés.",chapo:"Avant de toucher à quoi que ce soit, il faut comprendre ce qui se passe réellement dans l'entrepôt : non pas ce que les procédures décrivent, mais ce que les opérateurs font en pratique.",coverImage:iie,coverImageCaption:"Opérations logistiques en entrepôt — guide complet d'optimisation 2026",content:`## Avant d'optimiser : comprendre ce qui dysfonctionne vraiment
2716
2717Avant de toucher à quoi que ce soit, il faut comprendre ce qui se passe réellement dans l'entrepôt : non pas ce que les procédures décrivent, mais ce que les opérateurs font en pratique. L'écart entre les deux est presque toujours révélateur.
2718
2719Les outils de diagnostic utiles à ce stade : **chronoanalyse** (observation chronométrée des opérations réelles), **spaghetti chart** (déplacements physiques), **Value Stream Mapping (VSM)** (flux physiques et d'information de bout en bout).
2720
2721> **Données Gartner 2025 :** 80 % des responsables supply chain placent l'optimisation des entrepôts parmi leurs trois priorités clés. Pourtant, les leviers les plus impactants sont organisationnels — pas technologiques.
2722
2723**Méthode ABC-XYZ :**
2724- A — 20 % des références, 80 % des mouvements → zone dorée, proximité des zones de préparation
2725- B — 30 % des références, volume intermédiaire → stockage standard
2726- C — 50 % des références, faible rotation → zone haute ou éloignée
2727
2728La méthode XYZ complète l'ABC avec la régularité de demande : X (régulière), Y (variable/saisonnière), Z (sporadique). Croiser ABC et XYZ réduit les déplacements de 27 % en moyenne selon les benchmarks 2025.
2729
2730---
2731
2732## Réception : le processus le plus sous-estimé
2733
2734La réception génère le plus d'erreurs silencieuses. Des écarts non détectés se propagent dans tout le système.
2735
2736**Contrôle à trois niveaux :**
27371. **Quantitatif** : quantités reçues vs attendu de réception (bon de commande)
27382. **Qualitatif** : état emballages, conformité références, conditions transport, DLC
27393. **Documentaire** : bon de livraison vs commande, prix conformes aux accords
2740
2741> **Erreur fréquente :** Signer le bon de livraison sans contrôle pour libérer le quai. Les écarts se découvrent en picking 3 jours plus tard.
2742
2743**Bonnes pratiques :**
2744- Attendu de réception transmis par le fournisseur en amont (numéro commande, EAN, quantités)
2745- Scanner chaque palette/carton à réception
2746- Documenter les réserves en présence du chauffeur
2747- Zone de quarantaine obligatoire pour toute marchandise non conforme
2748- Planification des créneaux de livraison (YMS ou équivalent)
2749
2750---
2751
2752## Stockage : l'organisation physique qui conditionne tout
2753
2754À 200 commandes/jour × 5 articles, une perte de 30 secondes par article représente plus de 8 heures de main-d'œuvre gaspillée chaque jour.
2755
2756**Slotting — critères d'attribution des emplacements :**
2757- Taux de rotation ABC → produits A en zone ergonomique (80-160 cm), proches des départs
2758- Compatibilité physique → lourds au sol, fragiles et sensibles en zones adaptées
2759- Affinités produits → références fréquemment co-commandées à proximité
2760- Saisonnalité → révision minimum trimestrielle
2761
2762**Taux d'occupation cible : 75–85 %** (au-delà : congestion, accidents ; en-deçà : coût m² sous-optimal)
2763
2764Repères :
2765- Stockage au sol : 1,4–1,6 m² par palette (allées incluses)
2766- Racks 4 niveaux : 0,4–0,5 m² par palette
2767- Verticalisation : +30–40 % de capacité sans extension
2768
2769**Adressage :** Chaque emplacement identifié de manière unique (allée / colonne / niveau / position). Prérequis à tout WMS et à tout picking dirigé.
2770
2771**Inventaire tournant > inventaire général annuel.** Cible : précision de stock ≥ 98 %. En-deçà, le picking génère trop d'erreurs et les prévisions sont biaisées.
2772
2773---
2774
2775## Picking : 40 à 55 % des coûts d'exploitation
2776
2777Le picking représente entre 40 et 55 % des coûts totaux d'exploitation (Hardis Group, 2025). Dans un entrepôt non optimisé, 60 à 70 % du temps de picking est consacré aux déplacements — pas au prélèvement lui-même.
2778
2779**Méthodes de picking :**
2780- **Par commande (pick and pack)** : simple, adapté aux petits volumes ou commandes complexes
2781- **Par vague (batch picking)** : regroupement de commandes, réduit les distances
2782- **Par zone** : un opérateur par zone, adapté aux grands entrepôts
2783- **Combiné zone + batch** : méthode la plus productive en fort volume
2784
2785**Outils d'assistance :**
2786- Voice picking : +10 à 20 % de productivité, mains libres
2787- Pick-to-light : haute densité de prélèvement
2788- Scan code-barres/RFID : base de tout système anti-erreur
2789
2790**Taux de conformité picking cible : ≥ 99,5 %** (classe mondiale : ≥ 99,8 %)
2791
2792> **Coût d'une erreur :** Un taux d'erreur supérieur à 2 % a un impact direct sur la marge. Le coût réel d'une erreur non détectée peut dépasser **15 à 20 fois le coût de sa prévention**.
2793
2794---
2795
2796## Expédition : le dernier mètre qui définit la qualité perçue
2797
2798**Organisation de la zone d'expédition :**
27991. Zone de consolidation des commandes
28002. Zone d'emballage (matériel adapté aux gammes produits)
28013. Zone de contrôle final (scan de vérification, pesée)
28024. Zone de tri par transporteur/tournée
2803
2804Séparer physiquement les flux entrants et sortants. Mélanger réception et expédition est une source fréquente d'erreurs.
2805
2806**Cut-off transporteurs :** Planifier la préparation en fonction des horaires d'enlèvement. Suivre le taux de respect des cut-off. Prioriser les commandes urgentes dès l'ouverture.
2807
2808**Traçabilité sortante :** Étiquetage conforme aux exigences transporteurs, documents d'expédition (BL, 
2808CMR), transmission EDI si applicable.
2809
2810**Retours (logistique inverse) :** Zone de traitement dédiée, distincte du picking. Contrôle systématique à réception du retour. Décision rapide (réintégration / reconditionnement / destruction / retour fournisseur). Mise à jour immédiate du stock.
2811
2812---
2813
2814## KPI : les indicateurs qui comptent vraiment
2815
2816Les 10 indicateurs à suivre en priorité :
2817
2818| Indicateur | Cible 2025-2026 |
2819|---|---|
2820| Précision de stock | ≥ 98 % |
2821| Taux de conformité picking | ≥ 99,5 % (classe mondiale : ≥ 99,8 %) |
2822| Taux de service | ≥ 97 % |
2823| Taux de rotation des stocks | 12–24 rotations/an (articles A) |
2824| Productivité picking | Référence interne selon secteur |
2825| Taux d'utilisation de l'espace | 75–85 % |
2826| Délai de traitement interne | Selon engagement client (J+1, J+2…) |
2827| Taux de retour | < 2 % (hors e-commerce mode) |
2828| Coût par commande traitée | Référence interne à construire |
2829| Non-conformité fournisseurs | < 1 % |
2830
2831> Ne pas confondre symptôme et cause. Un KPI pointe — l'analyse explique. Un taux de retour élevé peut venir d'une erreur picking, d'un problème qualité produit, d'un emballage inadapté, ou d'une fiche article incorrecte.
2832
2833---
2834
2835## Les 8 erreurs les plus fréquentes en entrepôt
2836
28371. **La réception sans attendu** → écarts non détectés, découverts en picking
28382. **Le slotting figé** → distances inutiles croissantes, les produits A changent dans le temps
28393. **L'absence d'adressage cohérent** → erreurs de mise en stock, picking impossible à diriger
28404. **Le picking sans contrôle final** → erreurs expédiées directement au client
28415. **Les stocks dormants non identifiés** → espace immobilisé, capital bloqué
28426. **Les retours mélangés au stock actif** → stocks de qualité inconnue, confusions
28437. **Les KPI suivis mais non analysés** → consomme du temps sans produire de décisions
28448. **Investir en technologie avant de stabiliser les processus** → la technologie amplifie dans les deux sens
2845
2846---
2847
2848## Méthode F.L.U.X™ : séquencer avant d'investir
2849
2850La méthode F.L.U.X™ structure une démarche d'amélioration continue en 4 étapes séquentielles :
2851
2852**F — Fiabiliser** : Stabiliser les processus de base. Réception contrôlée, stock physique conforme au système, adressage cohérent, flux tracés. Prérequis à tout le reste. Un WMS ne compense pas une réception défaillante.
2853
2854**L — Lire** : Mettre en place les indicateurs pertinents, renseignés fiablement, analysés régulièrement. Sans lecture objective, on ne sait pas quoi améliorer — et on risque d'automatiser des inefficacités.
2855
2856**U — Unifier** : Aligner outils, données et équipes. Un WMS bien paramétré vaut mieux qu'un WMS avancé mal utilisé. Unification des référentiels articles, emplacements, fournisseurs, clients.
2857
2858**X — eXécuter** : Seulement à ce stade, la technologie apporte sa valeur réelle. Périmètre défini, objectifs mesurables, flux fiabilisés. La technologie amplifie ce qui fonctionne.
2859
2860**3 premières actions concrètes pour une PME/ETI :**
28611. Cartographie des flux réels (1–2 semaines de terrain)
28622. Mesure de la précision de stock réelle sur un échantillon représentatif
28633. Identification des références A et vérification de leur positionnement physique
2864
2865Ces actions ne requièrent ni WMS avancé ni budget exceptionnel. Elles requièrent de la méthode.`,publishDate:"2026-03-05",publishTime:"08h00",readTime:14,category:["Optimisation","Méthode","KPI logistique","PME/ETI"],tags:["#OptimisationEntrepôt","#Méthode","#KPILogistique","#PMEETI","#FLUX","#GuideComplet"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Réception, stockage, picking, expédition, KPI, erreurs fréquentes : le guide complet pour optimiser un entrepôt logistique en 2026. Méthode terrain, données documentées, exemples concrets.",embedType:"markdown"},{id:"implementation-ia-entrepot-2026",slug:"implementation-ia-entrepot-panorama-mars-2026",title:"IA en entrepôt en 2026 : le panorama complet des implémentations",subtitle:"Qui fait quoi, avec qui, pour quel résultat. Des robots Skypod aux agents WMS autonomes, en passant par la prévision demande, la vision par ordinateur et la maintenance prédictive : l'état de l'art en mars 2026 — acteurs, intégrateurs, cabinets de conseil, entreprises clientes, et 
2865ce que ça a vraiment changé.",chapo:"En mars 2026, l'IA n'est plus un sujet d'avenir en entrepôt. Elle est déployée, en production, chez des centaines d'entreprises à travers le monde. La vraie question n'est plus « faut-il s'y mettre ? » mais « par quoi commencer — et dans quel ordre ? »",coverImage:pie,coverImageCaption:"IA et robotique en entrepôt — panorama des implémentations en mars 2026",content:`# IA en entrepôt en 2026 : le panorama complet des implémentations
2866
2867**Sous-titre :** Qui fait quoi, avec qui, pour quel résultat. Des robots Skypod aux agents WMS autonomes, en passant par la prévision demande, la vision par ordinateur et la maintenance prédictive : l'état de l'art en mars 2026 — acteurs, intégrateurs, cabinets de conseil, entreprises clientes, et ce que ça a vraiment changé.
2868
2869---
2870
2871En mars 2026, l'IA n'est plus un sujet d'avenir en entrepôt. Elle est déployée, en production, chez des centaines d'entreprises à travers le monde. La vraie question n'est plus « faut-il s'y mettre ? » mais « par quoi commencer — et dans quel ordre ? »
2872
2873Ce guide cartographie l'ensemble des moyens d'implémentation IA disponibles aujourd'hui dans un entrepôt. Il cite les acteurs, les réalisations, les résultats publiés, les cabinets qui ont accompagné ces projets — et les entreprises qui les ont commandés.
2874
2875---
2876
2877## 1. Cartographie : 6 familles d'implémentation IA en entrepôt
2878
2879L'IA en entrepôt recouvre des réalités très différentes. Six familles distinctes répondent à des budgets, des prérequis et des profils de risque différents :
2880
2881- **WMS IA / Agents autonomes** — WMS intégrant ML, optimisation picking, agents décisionnels (accessibilité PME : partielle via modules SaaS)
2882- **Robotique pilotée par IA** — AMR, AGV, goods-to-person, cobots, robots picking (accessibilité PME : limitée, CAPEX élevé)
2883- **Prévision demande & stocks** — ML sur historiques ventes, météo, saisonnalité (accessibilité PME : élevée, SaaS abordable)
2884- **Vision par ordinateur** — Caméras IA, tunnels lecture, drones inventaire (accessibilité PME : moyenne)
2885- **Maintenance prédictive** — Capteurs IoT + algorithmes anticipant pannes (accessibilité PME : moyenne)
2886- **IA générative & agents bureau** — Assistants LLM, docs transport, chatbots internes (accessibilité PME : très élevée)
2887
2888> ⚠️ **Point de vigilance** — Selon AMR Research, les entreprises qui voient une réduction de 15 à 25 % de leurs stocks grâce à l'IA ont systématiquement fiabilisé leurs données avant d'activer l'algorithme. Sans cette base, les modèles génèrent du bruit, pas de la valeur.
2889
2890---
2891
2892## 2. Les WMS dopés à l'IA : éditeurs, agents, intégrateurs
2893
2894**Manhattan Associates** est le pionnier des agents IA autonomes en WMS. Sa plateforme Manhattan Active (17× Leader Gartner Magic Quadrant) a lancé en 2025 son architecture *Agent Foundry* : 30+ agents autonomes couvrant le cycle de vie logistique — de l'allocation main-d'œuvre à la gestion des exceptions temps réel. Client pilote Eaton : déploiement opérationnel janvier 2026. CA 2025 : 1,042 milliard de dollars (+12,1 %).
2895
2896**Blue Yonder** (ex-JDA) remplace les vagues de picking par un *pull-based streaming* temps réel. Des clients 3PL ont réduit leur temps de préparation de moitié en 4 mois. Acquisition d'Optoro en août 2025 pour intégrer la gestion des retours dans le WMS.
2897
2898**SAP EWM** reste la référence dans les environnements SAP, avec des couches GenAI pour la gestion documentaire et l'optimisation des règles de slotting. Déploiement documenté chez Duracell (harmonisation Belgique, États-Unis, Chine) et Manitou.
2899
2900**Körber / Infios** (rebranding mars 2025) a présenté au salon Manifest 2026 un module *Agentic AI* capable de poster automatiquement des offres de travail intérimaire si une pénurie de personnel est prédite sur un shift à venir.
2901
2902**Reflex WMS** (Hardis Group, France) équipe Carrefour, Decathlon et Fnac-Darty dans plusieurs pays.
2903
2904---
2905
2906## 3. Robotique pilotée par IA : qui fait quoi
2907
2908**Exotec** (France, Hauts-de-France) : 10 000+ robots Skypod déployés, 340 M€ de CA 2025, Skypod Next Gen lancé 
2908(+30 % débit), Imaginarium Wasquehal inauguré février 2026 (25 000 m², 80 M€). Clients : Decathlon, Carrefour, Monoprix (100 000 m²), Gap, Uniqlo, E.Leclerc Ville-la-Grand, Collect&Go (Colruyt Belgique). 938 M de cycles de préparation réalisés, 90 M km de marche évités.
2909
2910**AutoStore** (Norvège) : robots cubes sur grille 3D, densité de stockage jusqu'à 4× un entrepôt classique. Présent sur des centaines de sites en Europe.
2911
2912**Scallog** (France) : solution goods-to-man adaptée aux entrepôts intermédiaires, dont les environnements hospitaliers (logistique dispositifs médicaux).
2913
2914**Swisslog** (Suisse / Groupe KUKA) : 3 000 employés, 25 pays, 772 M€ CA 2024. Systèmes intégrés transstockeurs + convoyeurs + WMS SynQ. Fort sur la distribution alimentaire et pharmaceutique.
2915
2916**AMR/AGV** : Balyo (France, chariots SLAM sans infrastructure au sol), Locus Robotics (cobots collaboratifs), Fetch Robotics/Zebra (orchestration multi-robots IA). Amazon : 200 000+ cobots, +50 % densité stockage, tri 3× plus rapide.
2917
2918**Figure AI** (États-Unis, 39 Md$ de valorisation) : robots humanoïdes, contrats BMW, discussions avec UPS pour l'entrepôt. Horizon commercial : 2028-2030.
2919
2920---
2921
2922## 4. Prévision de la demande : les éditeurs et leurs clients
2923
2924**Vekia** (France, Lille, 2008) : plateforme SaaS de prévision probabiliste multi-scénarios, propositions de commandes automatisées. Clients : Leroy Merlin, Mr Bricolage, Engie Home Services, Groupe SAMSE, Orange.
2925
2926**Lokad** (France, 2008) : prévision probabiliste avancée avec langage propriétaire Envision. Traite la demande ET les délais de livraison comme des variables aléatoires. Positionné sur les organisations à forte maturité data.
2927
2928**Optimix Software** (France, Hauts-de-France, 2011) : prévision demande + optimisation prix en un seul système. Clients : Spar, E.Leclerc, Auchan, Gifi, Boulanger.
2929
2930**Blue Yonder Orchestrator, o9 Solutions, IBM Watson Supply Chain, SAP IBP** couvrent les mêmes usages à grande échelle avec simulation de scénarios en langage naturel.
2931
2932**Résultats documentés** : Decathlon centralise ses données stock en temps réel via WMS + IA pour anticiper les réapprovisionnements. Carrefour France intègre l'IA dans ses prévisions pour l'e-commerce et la proximité. AMR Research : -15 à -25 % de niveaux de stock moyen pour les entreprises ayant activé la visibilité temps réel IA.
2933
2934---
2935
2936## 5. Vision par ordinateur : caméras, tunnels, drones
2937
2938**Zebra Technologies** : tunnels de lecture IA — +37 % précision lecture, -29 % arrêts imprévus, -13 % coûts opérationnels. Leader mondial sur ce segment.
2939
2940**Cognex** (États-Unis) et **Sick AG** (Allemagne) : références mondiales vision industrielle.
2941
2942**Prophesee** (France) : capteurs neuromorphiques bio-inspirés, traitement temps réel haute fréquence, spin-off de recherche CNRS/Inria.
2943
2944**Google Vertex AI Vision** : analyse flux vidéo en temps réel, détection risques entrepôt. DHL : alertes déversement et obstacles sur voies de circulation.
2945
2946**Drones inventaire** : Delta Drone (France), Gather AI (États-Unis). Précision 99,8 % sur lecture codes-barres/RFID. -30 % d'erreurs humaines sur inventaires. Déclenchement automatique réappro via WMS.
2947
2948---
2949
2950## 6. Maintenance prédictive : capteurs IoT + algorithmes
2951
2952Capteurs IoT (vibrations, température, acoustique, consommation électrique) + modèles ML = détection précoce de défaillances avant panne.
2953
2954FedEx : -15 % pannes flotte. DHL : -30 % retards sur corridors ciblés. Siemens : disponibilité composants critiques temps réel (-40 % temps de manutention AGV). LumoPharma (PME pharma France) : stockage produits sensibles fiabilisé via maintenance prédictive combinée à la robotisation.
2955
2956Exotec intègre la maintenance prédictive directement dans Deepsky : les robots Skypod transmettent en continu leurs données, anticipant les interventions sans arrêt de production.
2957
2958> ⚠️ Selon SAP, des capteurs mal calibrés génèrent 15 à 20 % d'anomalies dans les indicateurs de maintenance prédictive. La qualité de l'infrastru
2958cture IoT conditionne la fiabilité de l'algorithme.
2959
2960---
2961
2962## 7. IA générative : le bureau logistique augmenté
2963
2964Usages opérationnels documentés : génération CMR et bons de livraison, rédaction cahiers charges fournisseurs, analyse rapports inventaire, chatbots WMS internes, automatisation échanges EDI non standardisés.
2965
2966**Sanofi** : GenAIr (GPT + Claude + LLaMA) génère les rapports qualité annuels de 100-150 pages automatiquement.
2967
2968**Wavestone** (Transport & Logistique) : assistant client et agent GPT-4 pour la conformité des données. **Mistral AI** × **CMA CGM** : intégration LLM français dans la logistique maritime.
2969
2970**Infios** (ex-Körber) : outil de formation VR réduisant de 70 % le temps d'onboarding des opérateurs entrepôt.
2971
2972---
2973
2974## 8. Les cabinets de conseil et intégrateurs qui l'ont fait
2975
2976**Citwell** : accompagnement Palais des Thés (migration ERP, fiabilisation données, réorganisation entrepôt), Septodont (décarbonation transport), Underdog (lean e-commerce). Cabinet de référence transformation supply chain France.
2977
2978**DecideOm** : acquisition d'Eurodecision en mars 2025, renforcement IA/ML appliqué supply chain.
2979
2980**OPAGAN** : offre Direction Supply Chain Temps Partagé pour PME/ETI, lancée février 2025.
2981
2982**Findle** : analyse critique des cas d'usage IA supply chain (décembre 2025) — grille de lecture "durable, utilisé, viable économiquement".
2983
2984**Wavestone** (200 consultants IA) : stratégie à implémentation, logistique, pharma, industrie, énergie.
2985
2986**Capgemini** : accompagnement grands groupes sur agentification supply chain.
2987
2988**Intégrateurs WMS** : Hardis Group (Reflex WMS), Savoye (ODATiO), Mecalux (Easy WMS), Generix Group (SaaS multi-sites), GCL Conseil.
2989
2990---
2991
2992## 9. Ce qui se passe vraiment dans les PME et ETI
2993
299426 % des TPE-PME utilisent une solution IA (Baromètre France Num sept. 2025, doublé en 1 an). Mais 50 %+ de ces usages = ChatGPT pour emails et traductions, pas de l'IA logistique.
2995
299658 % des dirigeants PME-ETI considèrent l'IA comme un enjeu de survie. 43 % n'ont pas de stratég
2996ie IA. 43 % n'utilisent pas l'analyse de données pour piloter leur activité.
2997
29983 niveaux de maturité réels :
2999- **Niveau 1** : IA générative bureautique (accessible, impact limité)
3000- **Niveau 2** : Modules IA sur outils existants (accessible si données propres)
3001- **Niveau 3** : Automatisation physique IA (réservé aux ETI à processus stables)
3002
3003Baromètre Denis Atlan (200 projets B2B France 2022-2025) sur les projets qui ont bien démarré : ROI médian 159,8 % sur 24 mois, 82,5 % de taux de succès, déploiement 4× plus rapide que dans les grandes entreprises.
3004
3005---
3006
3007## 10. Ce que fait CHAL·CONSULTING IA — et ce qu'il ne fait pas
3008
3009**Ce que CHAL·CONSULTING IA ne fait pas :**
3010Vendre de la technologie. Être intégrateur WMS. Déployer des robots ou des capteurs IoT. Proposer des solutions IA clés en main. Percevoir des commissions sur des recommandations fournisseurs.
3011
3012**Ce que CHAL·CONSULTING IA fait :**
3013Intervenir en amont de tout projet technologique — sur la préparation opérationnelle qui en détermine le succès ou l'échec. Diagnostics, feuilles de route, accompagnement au changement, formation des équipes.
3014
3015**La méthode F.L.U.X™ :**
3016- **F — Fiabiliser** : Stabiliser les processus de base. Sans socle opérationnel solide, tout algorithme amplifie le chaos.
3017- **L — Lire** : Mettre en place des indicateurs. Sans lecture objective de la performance actuelle, le risque est d'automatiser des inefficacités.
3018- **U — Unifier** : Aligner outils, données et équipes. Un WMS bien paramétré vaut mieux qu'un WMS avancé mal utilisé.
3019- **X — eXécuter** : Seulement à ce stade, l'IA délivre sa valeur réelle — sur un terrain préparé.
3020
3021**Ce que CHAL·CONSULTING IA peut faire avec des partenaires tech :**
3022Préparation des données pour Vekia ou Lokad. Préparer l'entrepôt à accueillir des AMR ou un système goods-to-person. Conseil de maîtrise d'ouvrage WMS (cahier des charges, choix éditeur, recette). Réseau de partenaires identifiés : Letxbe.ai, Precisely, Huwise, Konverso, Payenke.
3023
3024**La vraie force : 15 ans de terrain, de l'entrepôt au CODIR.**
3025IKEA, Nike, Bio-Rad (10 ans pharma GMP/GDP), Saint-Gobain, Cenexi (Directeur Logistique). Ni consultant débutant, ni éditeur tech. La capacité de lire une situation opérationnelle rapidement, identifier les vraies causes racines, construire une feuille de route que les équipes peuvent réellement exécuter.
3026
3027Tarification 30 à 40 % en dessous des standards du marché. Cible : PME et ETI françaises (50 à 500 personnes, secteurs pharma, retail, industrie).
3028
3029> **En résumé** : L'IA en entrepôt fonctionne — chez ceux qui ont fait le travail préalable. Exotec chez Decathlon, Manhattan chez les grandes enseignes, Vekia chez Leroy Merlin : tous ces succès ont en commun un socle opérationnel solide *avant* l'activation algorithmique. **La technologie n'est jamais le point de départ d'une transformation réussie. Elle en est la récompense.**`,publishDate:"2026-03-05",publishTime:"10h00",readTime:14,category:["IA","Entrepôt","Acteurs & Réalisations","PME/ETI","Guide de référence"],tags:["#IAEntrepôt","#ManhattanAssociates","#Exotec","#BlueYonder","#Vekia","#AutomatisationPME","#WMS","#FLUX","#PanoramaIA2026"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Qui fait quoi avec l'IA en entrepôt en mars 2026 ? WMS agents autonomes, robotique, prévision demande, vision, maintenance prédictive : acteurs, intégrateurs, cabinets de conseil, entreprises clientes et résultats documentés. Par CHAL·CONSULTING IA.",embedType:"markdown"},{id:"article-ia-logistique-2025",slug:"ia-logistique-entrepot-bilan-2025",title:"IA et logistique en 2025 : ce qui a vraiment changé — dans le monde, en Europe et en France",subtitle:"Agents autonomes dans les WMS, robots Skypod Next Gen, adoption en demi-teinte dans les PME françaises, fracture grandissante entre géants et entreprises intermédiaires. Le bilan d'une année charnière.",chapo:"2025 n'est pas l'année où l'IA a « révolutionné » la logistique. C'est l'année où l'IA a commencé à s'installer durablement dans les entrepôts — 
3029chez ceux qui étaient prêts. Pour les autres, c'est l'année où l'écart a commencé à devenir difficile à combler.",coverImage:lie,coverImageCaption:"Entrepôt logistique équipé de robots AMR et bras robotique piloté par IA — CHAL·CONSULTING IA",content:`2025 n'est pas l'année où l'IA a « révolutionné » la logistique. C'est l'année où l'IA a commencé à s'installer durablement dans les entrepôts — chez ceux qui étaient prêts. Pour les autres, c'est l'année où l'écart a commencé à devenir difficile à combler.
3030
3031Ce bilan n'est pas une revue de presse optimiste. C'est une lecture de terrain : ce que les données confirment, ce que les annonces masquent, et ce que les responsables logistiques de PME et ETI françaises doivent réellement retenir d'une année qui a brassé beaucoup de promesses — et quelques réalités concrètes.
3032
3033---
3034
3035## 1. Le marché mondial de l'IA logistique s'est emballé
3036
3037Le marché mondial de l'IA appliquée à la logistique devrait atteindre 20 à 21 milliards de dollars en 2025, avec un taux de croissance annuel composé de l'ordre de 45 % depuis 2020. La valeur du segment IA en entrepôt est projetée à près de 39 milliards d'euros d'ici 2030 selon Zebra Technologies.
3038
3039**Repères chiffrés :**
3040- ~21 milliards de dollars : marché IA logistique mondial en 2025
3041- 45 % : croissance annuelle composée depuis 2020
3042- 39 milliards d'euros : projection IA entrepôt à l'horizon 2030
3043- 30 % : part des entreprises mondiales utilisant l'IA générative en 2025 (Capgemini)
3044- 51 milliards de dollars : projection marché robotique entrepôt à l'horizon 2030 (Statista)
3045
3046Amazon a enregistré au premier trimestre 2025 plus de 20 millions de livraisons le soir même, soit +80 % en un an — rendu possible par une orchestration IA des stocks qui anticipe les commandes avant même qu'elles n'arrivent. L'investissement : 700 millions d'euros en Europe pour moderniser les agences de livraison et déployer des systèmes d'emballage automatisé IA dans cinq pays. DHL a inauguré en octobre 2025 à Troisdorf (Allemagne) un Centre d'Innovation Europe dédié à l'IA, la robotique et la durabilité. FedEx réduit de 15 % ses pannes de flotte grâce à la maintenance prédictive IA.
3047
3048Ces investissements ne sont pas des expérimentations. Ils sont opérationnels, à grande échelle, et déjà rentabilisés.
3049
3050---
3051
3052## 2. Les grandes applications de l'IA en entrepôt en 2025
3053
3054L'IA en logistique intervient sur des niveaux très différents. Voici les applications qui ont réellement pris de l'ampleur en 2025 :
3055
3056**La prévision de la demande** est l'application la plus mature. Les algorithmes de machine learning croisent historiques de ventes, données météo, événements locaux et tendances e-commerce pour réduire à la fois le surstockage et les ruptures. Ce n'est plus de la R&D : c'est de l'opérationnel courant chez les grands acteurs.
3057
3058**La vision industrielle** permet d'analyser les flux vidéo pour détecter les anomalies, contrôler la qualité des entrées marchandises, lire les codes-barres dans des conditions dégradées. Les tunnels de lecture IA ont produit des résultats mesurables sur des déploiements documentés par Zebra Technologies en 2025 : +37 % de précision de lecture, -29 % d'arrêts imprévus, -13 % de coûts opérationnels.
3059
3060**L'orchestration robotique** — AMR, systèmes goods-to-person, navettes autonomes — pilotée par des WES (Warehouse Execution Systems) qui gèrent en temps réel priorités de picking, niveaux de batterie et congestions d'allées.
3061
3062**La maintenance prédictive** combine capteurs IoT et algorithmes pour anticiper les pannes de chariots, convoyeurs et navettes avant qu'elles ne surviennent. C'est l'une des applications à ROI le plus rapide, accessible aux ETI sans transformation radicale du SI.
3063
3064**L'IA générative** est entrée dans les flux administratifs : génération de documents de transport, analyse de rapports d'inventaire, chatbots d'aide à la décision. C'est souvent le point d'entrée des ETI dans l'IA — avant d'envisager des déploiements opérationnels plus structurants.
3065
3066> **Point de vigilance :** Toutes ces applications partagent un prérequis que les vendeurs ne mentionnent jamais en premier : la qualité des données d'entrée. Un algorithme de prévision nourri d'un historique incomplet produit des prévisions fausses. L'IA n'est pas un correcteur de données — c'est un amplificateur.
3067
3068---
3069
3070## 3. L'Europe en 2025 : entre champions et fragmentation
3071
3072En Europe, l'écosystème logistique IA est riche en innovations mais 
3072structurellement fragmenté. AutoStore (Norvège) déploie ses systèmes de cubes robotisés dans des centaines de sites européens. Ocado Technology (Royaume-Uni) a bâti un modèle d'entrepôt entièrement automatisé pour la distribution alimentaire.
3073
3074Le salon **LogiMAT 2025** (Stuttgart, mars) a marqué une bascule : pour la première fois, un quart des nouveaux produits présentés concernaient directement la robotisation de l'entrepôt — 6 nouveaux robots de picking, 15 AMR et 9 AGV dévoilés en première mondiale. L'IA n'était plus un thème transversal : elle était intégrée dans chaque solution.
3075
3076L'Allemagne reste le premier marché européen pour l'automatisation logistique (KION, Jungheinrich, SSI Schaefer). La France arrive en deuxième position, portée par les grands prestataires et quelques pépites technologiques dont Exotec est l'exemple le plus emblématique.
3077
3078Selon Gartner, les services IT liés à l'IA en Europe devraient atteindre 94 milliards de dollars en 2025 (+21 % en un an). 84 % des DSI européens ont augmenté leur budget IA pour l'année.
3079
3080---
3081
3082## 4. Focus France : Exotec, la licorne qui a prouvé quelque chose
3083
3084Si 2025 a eu un symbole de la réussite industrielle française dans la logistique IA, c'est **Exotec**. La scale-up nordiste fondée en 2015 à Croix, près de Lille, a franchi en octobre 2025 le cap symbolique des **10 000 robots Skypod déployés dans le monde**. Son chiffre d'affaires a atteint environ 340 millions d'euros en 2025, contre 288 millions en 2024.
3085
3086En 2025, Exotec a lancé la **deuxième génération du Skypod** avec +30 % annoncés sur le débit et la densité de stockage. Le logiciel d'orchestration Deepsky a été enrichi de fonctions de prédiction intra-entrepôt et d'optimisation dynamique des emplacements. En chiffres humains : 938 millions de cycles de préparation réalisés, plus de 90 millions de kilomètres de marche évités pour les opérateurs.
3087
3088**Chiffres clés Exotec 2025 :**
3089- 10 000+ robots Skypod vendus
3090- 200+ entrepôts sur 5 continents
3091- ~340 M€ de CA en 2025
3092- 1 milliard de dollars de systèmes cumulés vendus
3093- 1 200 salariés dont 700 dans les Hauts-de-France
3094- 10 % du CA investi en R&D
3095- Inauguration de l'Imaginarium (25 000 m²) à Wasquehal en février 2026
3096
3097Ce qui fait d'Exotec un cas d'étude pertinent : **fabriquer en interne, piloter par le logiciel, déployer en quelques mois**. Dans un secteur où les projets d'automatisation prennent 18 à 36 mois, Exotec a construit son avantage sur la vitesse et la modularité.
3098
3099---
3100
3101## 5. Le tournant des agents IA dans les WMS
3102
3103En mai 2025 lors de sa conférence Momentum, **Manhattan Associates** — 17 fois reconnu Leader Gartner pour les WMS — a annoncé l'intégration d'agents IA autonomes dans sa plateforme Manhattan Active. L'architecture repose sur un **Agent Foundry** : une plateforme ouverte où créer, déployer et gérer des agents capables d'agir sans intervention humaine.
3104
3105En pratique : un agent qui réalloue automatiquement la main-d'œuvre selon les pics de commandes, un agent qui optimise l'allocation des stocks, un agent qui gère les exceptions de livraison en temps réel. Plus de 30 agents commerciaux, accessibles à tous les abonnés Manhattan Active dès l'automne 2025. Un client pilote, le groupe Eaton, a déployé un agent d'allocation de main-d'œuvre en janvier 2026.
3106
3107SAP, Blue Yonder et Körber ont tous intégré des couches IA générative dans leurs WMS en 2025. La tendance de fond : le WMS évolue d'un système d'enregistrement vers un centre de décision en temps réel. Le Cloud subscription revenue de Manhattan Associates a progressé de 20 % en 2025 — signe que les entreprises activent réellement ces fonctions.
3108
3109> **Pour les PME et ETI :** Ces fonctionnalités sont inaccessibles sans infrastructure data mature. Un agent autonome ne peut décider correctement que si les données de stock sont fiables, les référentiels cohérents, et les flux correctement tracés. C'est la condition préalable — rarement remplie dans les entrepôts de taille intermédiaire.
3110
3111---
3112
3113## 6. Ce que les PME et ETI françaises ont vraiment fait en 2025
3114
3115Selon le **Baromètre France Num 2025** (DGE, septembre 2025), 26 % des TPE-PME utilisent une solution IA — taux doublé en un an. L'étude **Bpifrance Le Lab** (1 209 dirigeants PME-ETI) nuance : seuls **32 % utilisent l'IA dans leurs opérations quotidiennes**, et dans plus de la moitié des cas, il s'agit d'outils gratuits ou génériques.
3116
3117**Chiffres clés adoption IA PME-ETI France 2025 :**
3118- 58 % des dirigeants considèrent l'IA comme un enjeu de survie (Bpifrance)
3119- 32 % utilisent l'IA au quotidien dans leurs opérations
3120- 43 % n'ont pas de stratégie IA malgré l'urgence ressentie
3121- 43 % n'utilisent pas l'analyse de données pour piloter leur activité
3122
3123Les usages réels se répartissent sur trois niveaux :
3124- **Niveau 1 :** Outils de productivité bureau (IA générative, rédaction, analyses)
3125- **Niveau 2 :** Modules IA dans les outils existants (prévisions ERP/WMS, optimisation TMS)
3126- **Niveau 3 :** Automatisation physique pilotée par IA (AMR, AGV, robots de picking)
3127
3128Dans 73 % des cas, l'impulsion IA vient directement du dirigeant. C'est une force mais aussi un risque : une IA non adoptée par les équipes est inefficace. Une IA imposée sans accompagnement peut générer méfiance et erreurs opérationnelles.
3129
3130---
3131
3132## 7. La fracture qui s'installe
3133
31342025 a rendu visible de manière irréversible l'élargissement de l'écart entre deux catégories d'acteurs logistiques : ceux qui ont la maturité data pour déployer l'IA à l'échelle, et ceux qui en sont encore à fiabiliser leurs flux de base.
3135
3136D'un côté : Amazon, PepsiCo à Dourges, Exotec, Manhattan Associates, DHL. De l'autre : 43 % des PME-ETI françaises sans stratégie IA, beaucoup sans données de base fiabilisées.
3137
3138> **Réalité terrain :** Un entrepôt de PME qui veut déployer de l'IA se heurte presque toujours aux mêmes obstacles : données de stock non fiabilisées, WMS mal paramétré, processus non documentés, référentiels incomplets, équipes non formées à l'exploitation des données. Ces obstacles ne sont pas technologiques — ils sont opérationnels. Et l'IA ne les résout pas. Elle les révèle à grande vitesse.
3139
3140Selon Bpifrance, les entreprises françaises adopteraient l'IA **deux fois plus lentement** que les entreprises allemandes et américaines. Cet écart a des conséquences compétitives durables.
3141
3142---
3143
3144## 8. Ce que dit la méthode F.L.U.X™
3145
3146Par où commencer ? Quelle technologie choisir ? Ces questions sont prématurées sans une question plus fondamentale : **mes flux sont-ils fiabilisés pour que je puisse en tirer des données exploitables par une IA ?**
3147
3148La méthode **F.L.U.X™** (CHAL·CONSULTING IA) repose sur un séquençage rigoureux :
3149
3150- **F — Fiabiliser :** Stabiliser les processus de base. Réception fiable, stock physique conforme au système, flux tracés sans exceptions non gérées. C'est le prérequis de tout le reste.
3151- **L — Lire :** Mettre en place les indicateurs qui permettent de comprendre pertes, délais et erreurs. Sans lecture objective de la performance actuelle, on risque d'automatiser des inefficacités.
3152- **U — Unifier :** Aligner outils, données et équipes. Un WMS bien paramétré vaut mieux qu'un WMS avancé mal utilisé. L'unification des référentiels est le travail le moins visible et le plus déterminant.
3153- **X — eXécuter :** C'est seulement à ce stade que l'IA apporte sa valeur réelle — sur un périmètre défini, avec des objectifs mesurables, sur des flux déjà fiabilisés.
3154
3155Le bilan de 2025 confirme ce séquençage à chaque cas documenté. Les entreprises qui ont réussi leurs déploiements IA — Exotec chez Decathlon et Carrefour, ID Logistics chez PepsiCo, Manhattan Associates dans la grande distribution — ont en commun d'avoir investi dans la qualité de données *avant* d'activer les algorithmes.
3156
3157---
3158
3159**Ce que 2025 enseigne vraiment :**
3160
3161L'IA n'est pas une option dans la logistique de demain. Mais elle n'est pas non plus une solution universelle à portée immédiate. 2025 a été l'année où l'écart entre discours et réalités opérationnelles est devenu mesurable.
3162
3163Les entreprises qui tireront profit de l'IA en 2026 ne seront pas celles qui auront acheté la technologie la plus avancée. Ce seront celles qui auront eu la discipline de fiabiliser leurs flux, de lire leurs données, d'unifier leurs outils — avant d'exécuter leurs ambitions.
3164
3165**L'IA amplifie ce qui existe. Construisez d'abord quelque chose qui mérite d'être amplifié.**
3166
3167*Sources : Baromètre France Num 2025 (DGE), Étude Bpifrance Le Lab (1 209 dirigeants), Capgemini, Gartner, Zebra Technologies, Statista, Voxlog, FAQ Logistique, Stratég
3167ies Logistique, Usine Nouvelle, DC Velocity.*`,publishDate:"2026-03-05",publishTime:"09h00",readTime:12,category:["IA","Entrepôt","Robotique","PME/ETI","Bilan annuel"],tags:["#IALogistique","#Exotec","#WMS","#AgentsIA","#RobotiqueEntrepôt","#PME","#ETI","#FLUX","#Bilan2025","#AutomatisationLogistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Bilan complet des innovations IA en logistique en 2025 : agents WMS autonomes, Exotec 10 000 robots, adoption PME-ETI françaises, fracture compétitive. Analyse terrain par CHAL·CONSULTING IA.",embedType:"markdown"},{id:"article-fevrier-2026",slug:"logistique-entrepot-fevrier-2026",title:"Février 2026 : l'entrepôt du futur existe déjà — et il s'appelle Dourges",subtitle:"Automatisation intégrale, décarbonation de la flotte, gamification du picking, navettes autonomes pour PME : un mois dense, entre vitrine technologique et injonctions réglementaires.",chapo:"Février 2026 aura eu la densité d'une rentrée. Entre l'inauguration d'un entrepôt XXL qui cumule à peu près toutes les innovations du moment, un plan gouvernemental d'électrification du transport qui met les chargeurs dans la boucle, une navette autonome pensée pour les PME et des points de vie de préparateurs de commandes gamifiés — le secteur n'a pas chômé. Tour d'horizon des faits qui comptent vraiment.",coverImage:mie,coverImageCaption:"Automatisation et robotique en entrepôt — les faits marquants de février 2026",content:`Février 2026 aura eu la densité d'une rentrée. Entre l'inauguration d'un entrepôt XXL qui cumule à peu près toutes les innovations du moment, un plan gouvernemental d'électrification du transport qui met les chargeurs dans la boucle, une navette autonome pensée pour les PME et des points de vie de préparateurs de commandes gamifiés — le secteur n'a pas chômé. Tour d'horizon des faits qui comptent vraiment.
3168
3169---
3170
3171## Dourges : PepsiCo et ID Logistics inaugurent l'entrepôt-vitrine de la logistique française
3172
3173Le 12 février, PepsiCo France et ID Logistics inauguraient leur nouvelle plateforme multimodale à Dourges, dans le Pas-de-Calais, au cœur du hub Delta 3. Le site tourne depuis octobre 2025, mais l'inauguration officielle a donné l'occasion d'en mesurer l'ambition : 136 000 m² au total, dont 56 000 m² dédiés aux opérations PepsiCo, 52 000 palettes en capacité de stockage, 55 quais de chargement.
3174
3175Ce qui fait de Dourges un site à part, ce n'est pas la taille — c'est la densité technologique. Les quais automatiques traitent 70 % des flux entrants, des AMR d'Agilox assurent le transport interne en continu, et le robot d'inventaire ASTRID, développé par ID Logistics, scanne jusqu'à 5 000 palettes par heure sans interrompre l'activité des équipes. Le déchargement d'un camion complet, qui prenait une demi-heure en manuel, se fait désormais en trois minutes grâce aux quais Joloda Hydraroll.
3176
3177Le volet environnemental n'est pas en reste : la toiture du site accueille la plus grande centrale solaire en toiture d'un seul tenant d'Europe — 128 568 m² de panneaux, 17 GWh de production annuelle. Près de 70 % des transports PepsiCo en France sont déjà bas carbone, avec une économie de 14 254 tonnes de CO2 constatée en 2025 par rapport à un plan 100 % diesel.
3178
3179Pour les praticiens du secteur, ce site est à la fois une vitrine et un miroir. Une vitrine, parce qu'il concentre en un seul lieu ce que la logistique peut faire de mieux quand on lui en donne les moyens. Un miroir, parce qu'il dit aussi — sans le dire — à quel point l'écart se creuse entre ces installations de pointe et ce que vivent la plupart des entrepôts de PME et ETI françaises, encore largement manuels, sur des sites vieillissants, avec des WMS souvent sous-exploités.
3180
3181> **Repère :** Environ 100 millions d'euros ont été investis sur ce projet, trois ans de travail, un contrat de six ans renouvelé entre les deux partenaires. Ce sont des dimensions hors de portée pour une PME — mais les briques technologiques déployées ici (AMR modulaires, robot d'inventaire, traçabilité temps réel) commencent à exister en version accessible.
3182
3183---
3184
3185## Le gouvernement somme les chargeurs de s'électrifier — et fixe le calendrier
3186
3187Le 11 février, le ministre des Transports Philippe Tabarot présentait son projet de loi-cadre en conseil des ministres. Le 20 février, une rencontre thématique réunissait l'ensemble des acteurs de la filière au ministère de la Transition écologique pour lancer le chantier d'un plan d'électrification du transport routier de marchandises, attendu avant l'été 2026.
3188
3189Le signal envoyé aux entreprises est clair et chiffré : la loi prévoit une trajectoire d'obligation pour les donneurs d'ordre — industriels, plateformes logistiques, distributeurs — de recourir à des transports zéro émission. La cible : 0,5 % dès 2026, et 30 % en 2035. Le coût d'un poids lourd électrique reste 2 à 3 fois supérieur à son équivalent thermique, même si l'écart de coût énergétique compense partiellement sur le cycle de vie.
3190
3191Ce que cela signifie concrètement pour un responsable logistique en 2026 : les cahiers des charges transporteurs vont devoir intégrer cette dimension, les entrepôts vont devoir prévoir des infrastru
3191ctures de recharge à quai, et la question du risque incendie lié aux batteries lithium en entrepôt va devenir un sujet de prévention à part entière. La recharge à quai en temps masqué — pendant le déchargement — est techniquement intéressante, mais soulève des exigences de sécurité que peu d'entrepôts ont encore anticipées.
3192
3193Le même mois, le gouvernement recevait le rapport *Logistique urbaine durable 2025*, remis le 4 février par Anne-Marie Idrac et Anne-Marie Jean. Le document formule 15 recommandations et identifie cinq leviers prioritaires : gouvernance, formation, foncier, connaissance des flux, déploiement opérationnel. Trois chantiers ont été lancés immédiatement, dont l'élaboration d'un schéma de gouvernance nationale de la logistique urbaine attendu pour septembre 2026.
3194
3195---
3196
3197## SSI Schaefer lance une navette palettes autonome pensée pour les PME
3198
3199Le 10 février, SSI Schaefer dévoilait le SSI Pallet Roaming Shuttle, une navette autonome dédiée au stockage de palettes, capable de se déplacer horizontalement, verticalement et en profondeur — ce que le fabricant appelle la mobilité tridimensionnelle. La solution supporte des charges jusqu'à 1,5 tonne et annonce une augmentation de la capacité de stockage pouvant atteindre 65 % par rapport aux systèmes à allées très étroites.
3200
3201Ce qui mérite attention ici, c'est le positionnement explicite du fabricant : *pensée pour les PME comme pour des environnements contraints*. La compacité et la modularité sont mises en avant. Ce type d'annonce illustre une tendance de fond : l'automatisation du stockage palette descend progressivement vers des formats accessibles aux entrepôts de taille intermédiaire, qui ne peuvent pas ou ne veulent pas investir dans des installations ASRS à grande échelle.
3202
3203La question reste entière sur le TCO réel et les prérequis d'implémentation — notamment la qualité des référentiels de stockage et la rigueur des processus entrée/sortie. Une navette autonome sur un stock mal tenu, c'est de l'efficacité mal placée.
3204
3205---
3206
3207## La gamification entre dans le picking vocal — et affiche des résultats à deux chiffres
3208
3209Le 3 février, l'éditeur EPG (Ehrhardt Partner Group) annonçait l'intégration de mécanismes de gamification scientifique dans sa solution de pick-by-voice LYDIA. L'extension LYDIA Gamification permet aux préparateurs de collecter des médailles, atteindre des niveaux, participer à des défis individuels ou d'équipe — le tout intégré au dialogue vocal existant, sans modifier les processus.
3210
3211Le chiffre avancé à l'issue du premier projet pilote en conditions réelles : *une augmentation de la productivité à deux chiffres*. Les défis collectifs se sont révélés particulièrement efficaces pendant les pics d'activité.
3212
3213Cette annonce touche un point sensible : la productivité des opérateurs en entrepôt dépend autant de leur motivation que de leurs outils. Dans un contexte de pénurie de main-d'œuvre et de turnover élevé sur les postes de picking, la question de l'engagement au poste de travail est devenue un levier de performance à part entière. Ce n'est pas une question de "fun" — c'est une question d'adhésion au process, de réduction des erreurs et de régularité des cadences.
3214
3215Pour les responsables d'entrepôt, c'est un signal à prendre au sérieux : avant d'automatiser un poste de picking, il vaut parfois la peine de se demander si le levier humain a été pleinement exploité.
3216
3217---
3218
3219## Ce que février 2026 dit aux PME et ETI
3220
3221Dourges est spectaculaire — et c'est précisément pour ça qu'il ne faut pas en tirer les mauvaises conclusions. Ce site illustre ce que la logistique peut atteindre avec 100 millions d'euros d'investissement et quinze ans de partenariat. Ce n'est pas un modèle à copier ; c'est un horizon à lire.
3222
3223Ce que février dit plus directement aux entreprises de taille intermédiaire, c'est que trois fronts avancent simultanément : la pression réglementaire sur la décarbonation des flux (qui va toucher les chargeurs, pas seulement les transporteurs), l'accessibilité croissante des solutions d'automatisation modulaire, et le recentrage sur l'humain comme levier de productivité — au moins tant que les arbitrages d'investissement ne sont pas tranchés.
3224
3225**Fiabiliser les flux avant d'investir dans la technologie. Lire les données avant de prétendre les piloter. Unifier les outils avant d'en ajouter de nouveaux.** C'est le séquençage que la méthode F.L.U.X™ impose — et les événements de ce mois de février ne font que le confirmer.
3226
3227---
3228
3229*Chal-Michel — Fondateur, CHAL·CONSULTING IA. Consultant indépendant en optimisation logistique et implémentation IA pour PME et ETI françaises. 15 ans d'expérience terrain : Nike, IKEA, Bio-Rad, Saint-Gobain, Cenexi.*`,publishDate:"2026-02-28",publishTime:"09h00",readTime:6,category:["Automatisation","Décarbonation","Intralogistique","Réglementation"],tags:["#Dourges","#PepsiCo","#IDLogistics","#Automatisation","#Décarbonation","#SSISchaefer","#Gamification","#FLUX","#PME"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Dourges PepsiCo/ID Logistics, plan d'électrification Tabarot, navette autonome SSI Schaefer, gamification du picking : les faits marquants de février 2026 en logistique entrepôt.",embedType:"markdown"}
3229,{id:"article-janvier-2026",slug:"logistique-entrepot-janvier-2026",title:"Janvier 2026 : l'IA entre dans l'entrepôt — et le marché, lui, cherche encore son équilibre",subtitle:"Agents WMS intelligents, marché immobilier logistique en stabilisation, pression sur les PME/ETI : le décryptage des faits marquants du mois.",chapo:"Pendant que les grands éditeurs de WMS lançaient leurs agents intelligents à grand renfort d'annonces, le marché immobilier logistique français publiait ses chiffres 2025 : solides sur les fondamentaux, prudents sur les volumes. Un mois de janvier qui dit beaucoup sur l'état réel du secteur — et sur les arbitrages qui attendent les PME et ETI en 2026.",coverImage:"https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?w=800&q=80",coverImageCaption:"Automatisation et IA en entrepôt — les enjeux de janvier 2026",content:`Pendant que les grands éditeurs de WMS lançaient leurs agents intelligents à grand renfort d'annonces, le marché immobilier logistique français publiait ses chiffres 2025 : solides sur les fondamentaux, prudents sur les volumes. Un mois de janvier qui dit beaucoup sur l'état réel du secteur — et sur les arbitrages qui attendent les PME et ETI en 2026.
3230
3231---
3232
3233## Les agents IA s'installent dans les WMS — mais la vraie question, c'est la maturité des données
3234
3235Le 8 janvier, Manhattan Associates annonçait la mise en disponibilité commerciale de son *AI Agent Workforce*, une nouvelle génération d'agents intelligents directement intégrés à sa suite Manhattan Active. La différence revendiquée par rapport aux solutions d'IA "en surcouche" : ces agents ne piochent pas dans des lacs de données figés, ils opèrent au cœur même de la plateforme, en temps réel, avec une visibilité complète sur le contexte opérationnel.
3236
3237Concrètement, un agent coordonne les vagues de préparation, un autre alloue la main-d'œuvre selon les files de travail restantes, un troisième surveille les flux quais. Eaton, groupe industriel américain, figure parmi les premiers déployeurs : ses équipes entrepôt s'appuient déjà sur le Wave Coordinator Agent pour affecter les opérateurs aux zones les plus critiques.
3238
3239L'annonce est techniquement sérieuse. Elle confirme aussi ce que les praticiens terrain savent depuis longtemps : l'IA en entrepôt ne manque pas d'ambition. Ce qui manque, en revanche — surtout chez les PME et ETI françaises — c'est souvent la donnée propre, la nomenclature cohérente, le WMS correctement paramétré, sur lesquels ces agents pourraient s'appuyer. **Un agent IA déployé sur un référentiel article bancal ou un historique de commandes bruité ne produit pas de la performance. Il amplifie le désordre existant.**
3240
3241> **Repère chiffré :** Selon Capgemini, la proportion d'entreprises utilisant l'IA générative est passée de 6 % en 2023 à 30 % en 2025. La question n'est plus "faut-il y aller ?" — elle est "dans quel état sont mes flux avant d'y aller ?"
3242
3243---
3244
3245## Le marché des entrepôts français : 3,2 millions de m² placés en 2025, et une leçon pour les ETI
3246
3247JLL et CBRE ont publié leurs analyses du T4 2025 en tout début d'année. Le bilan : 3,2 millions de m² commercialisés en France sur l'année, soit un recul de 4 % par rapport à 2024 et de 25 % par rapport à la moyenne quinquennale.
3248
3249Le marché se polarise nettement. Les petites surfaces (5 000–10 000 m²) progressent de 1 % : les besoins de proximité et la densification des réseaux de distribution soutiennent cette tranche. À l'opposé, les plateformes XXL (> 50 000 m²) accusent un retrait de 40 % sur un an. Les grands groupes freinent leurs projets d'ampleur dans un contexte d'incertitudes économiques et géopolitiques persistantes. Amazon reste l'exception, avec la seule transaction XXL du trimestre : un entrepôt de plus de 110 000 m² à Beauvais.
3250
3251La dorsale Lille–Paris–Lyon–Marseille concentre 61 % de la demande placée. Le loyer prime parisien a franchi le seuil de 89 €/m²/an — un niveau inédit. Pour les actifs secondaires ou vieillissants, la pression baissière sur les loyers économiques est réelle.
3252
3253Ce que dit ce marché aux entreprises de taille intermédiaire : **la fenêtre de renégociation favorable — ouverte en 2024-2025 avec des disponibilités élevées — se referme.** L'offre immédiate recule pour la première fois depuis dix trimestres, à 4,8 millions de m². Les marges de négociation se réduiront en 2026.
3254
3255---
3256
3257## Standardisation des outils et interopérabilité : le chantier silencieux de 2026
3258
3259FAQ Logistique soulignait mi-janvier un enjeu moins spectaculaire que les agents IA, mais tout aussi structurant : les expéditions multi-transporteurs sont désormais un standard opérationnel, or les systèmes — WMS, TMS, OMS, ERP — communiquent encore trop souvent mal entre eux.
3260
3261Le coût de cette fragmentation est difficile à chiffrer mais facile à observer sur le terrain : des équipes qui passent une part de leur journée à réconcilier des informations qui devraient circuler automatiquement. Dans ce contexte, l'interopérabilité n'est pas un sujet IT abstrait — c'est une condition préalable à toute montée en efficacité opérationnelle, *a fortiori* avant d'envisager un projet IA.
3262
3263---
3264
3265## La logistique urbaine entre dans sa phase réglementaire
3266
3267Stratégies Logistique note dans son numéro de décembre-janvier que la logistique urbaine est à "un tournant réglementaire". Les ZFE (Zones à Faibles Émissions) se durcissent dans les grandes métropoles, les règles sur les livraisons de nuit évoluent, et les collectivités commencent à conditionner l'accès aux zones logistiques à des critères environnementaux plus stricts.
3268
3269Pour les PME qui gèrent leurs propres tournées en zone urbaine, l'enjeu n'est pas seulement réglementaire : il est aussi économique. Moderniser une flotte, repositionner un dépôt, absorber des contraintes horaires supplémentaires — tout cela a un coût direct sur les opérations.
3270
3271> **Signal à suivre :** Le marché des petites surfaces logistiques (5 000–10 000 m²) résiste mieux que les grandes plateformes en 2025. Signe d'une logique de densification et de proximité qui structure les besoins des PME/ETI davantage que les effets de volume.
3272
3273---
3274
3275## Ce que janvier 2026 dit aux PME et ETI
3276
3277Ce premier mois de l'année dessine les tensions structurelles que vivront les entreprises de taille intermédiaire en 2026 : pression accrue sur les coûts opérationnels, offre d'entrepôts qualitatifs qui se resserre, outils puissants sur le papier mais qui supposent une organisation solide pour fonctionner, réglementation urbaine qui complexifie les schémas de distribution.
3278
3279Les grandes entreprises ont les ressources pour déployer des WMS avec agents IA, financer des plateformes XXL ou absorber les hausses de loyers prime. L'enjeu pour les PME et ETI est différent : travailler la fiabilité des flux, la cohérence des données et la lisibilité de l'organisation logistique — avant d'investir dans des technologies qui ne sont, seules, pas des solutions.
3280
3281---
3282
3283**L'IA ne corrige pas le chaos — elle l'amplifie.** Avant d'intégrer des agents intelligents dans un entrepôt, la question fondamentale reste : est-ce que mes flux sont fiables, mes données cohérentes, mon organisation lisible ? Ce n'est pas un préalable théorique. C'est la condition pratique d'un retour sur investissement réel. C'est le cœur de la méthodologie **F.L.U.X™** : Fiabiliser, Lire, Unifier, eXécuter — dans cet ordre.`,publishDate:"2026-01-31",publishTime:"09h00",readTime:6,category:["IA","Entrepôt","Marché","PME/ETI"],tags:["#IAEntrepôt","#WMS","#MarchéLogistique","#PME","#ETI","#AgentsIA","#FLUX","#Interopérabilité"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Agents WMS intelligents, marché immobilier logistique en stabilisation, pression sur les PME/ETI : le décryptage des faits marquants de janvier 2026.",embedType:"markdown"},{id:"9",slug:"femmes-entrepot-talent-invisible",title:"Les femmes en entrepôt : le talent invisible qui coûte cher à notre logistique",chapo:"En entrepôt, les femmes sont souvent invisibilisées. Pourtant, elles portent une part essentielle de la performance terrain. Ignorer ce talent a un coût bien réel.",coverImage:"https://images.unsplash.com/photo-1573497019236-17f8177b81e8?w=800&q=80",coverImageCaption:"Les femmes en logistique — un potentiel sous-exploité",content:"",publishDate:"2026-02-28",publishTime:"09h00",readTime:3,category:["Terrain","Management"],tags:["#FemmesEnLogistique","#Inclusion","#Entrepôt","#TalentTerrain"],linkedinUrl:"https://www.linkedin.com/feed/update/urn:li:ugcPost:7433078956419018752",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"",excerpt:"En entrepôt, les femmes sont souvent invisibilisées. Pourtant, elles portent une part essentielle de la performance terrain.",embedType:"linkedin",linkedinEmbedCode:'<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7433078956419018752" height="941" width="504" frameborder="0" allowfullscreen="" title="Post intégré"></iframe>'},{id:"8",slug:"sap-entrepot-consultants",title:"SAP en entrepôt : ce que j'aurais voulu dire aux consultants que j'ai croisés",chapo:"SAP en entrepôt, c'est souvent une promesse de structuration. Sur le terrain, c'est parfois tout l'inverse. Retour sans filtre sur ce que les consultants ne voient pas.",coverImage:"https://images.unsplash.com/photo-1504384308090-c894fdcc538d?w=800&q=80",coverImageCaption:"SAP et réalité terrain — le grand écart",content:"",publishDate:"2026-02-27",publishTime:"10h00",readTime:4,category:["Terrain","Optimisation"],tags:["#SAP","#ERP","#Entrepôt","#ConsultingTerrain"],linkedinUrl:"https://www.linkedin.com/feed/update/urn:li:share:7432414177496870912",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"",excerpt:"SAP en entrepôt : quand la promesse de structuration se heurte à la réalité du terrain. Ce que j'aurais voulu dire aux consultants.",embedType:"linkedin",linkedinEmbedCode:'<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:share:7432414177496870912" height="1595" width="504" frameborder="0" allowfullscreen="" title="Post intégré"></iframe>'},{id:"7",slug:"devenir-magasinier-cariste-verite",title:"Tu veux devenir magasinier ou cariste ? Voilà ce que personne ne te dit vraiment",chapo:"J'en ai recruté et formé des centaines pendant 15 ans. Derrière les fiches de poste, il y a une réalité que peu de gens racontent.",coverImage:sie,coverImageCaption:"Le métier de magasinier-cariste vu de l'intérieur",content:"",publishDate:"2026-02-26",publishTime:"08h30",readTime:3,category:["Terrain","Formation"],tags:["#Magasinier","#Cariste","#MétiersLogistique","#Formation"],linkedinUrl:"https://www.linkedin.com/feed/update/urn:li:share:7431997567153967104",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"",excerpt:"Devenir magasinier ou cariste : 15 ans de recrutement et formation terrain pour raconter ce que personne ne dit.",embedType:"linkedin",linkedinEmbedCode:'<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:share:7431997567153967104" height="1823" width="504" frameborder="0" allowfullscreen="" title="Post intégré"></iframe>'},{id:"6",slug:"retour-experience-expert-redevient-apprenant",title:"Retour d'expérience : quand l'expert redevient apprenant",chapo:"Après 15 ans à former et manager des équipes terrain, j'ai choisi de me remettre en situation d'apprentissage. Ce que ça change, vraiment.",coverImage:die,coverImageCaption:"Quand l'expert redevient apprenant",content:"",publishDate:"2026-02-18",publishTime:"10h00",readTime:2,category:["Terrain","Formation"],tags:["#RetourExpérience","#Apprentissage","#Formation","#PostureTerrain"],linkedinUrl:"https://www.linkedin.com/feed/update/urn:li:share:7428487056349102081",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"",excerpt:"Quand l'expert redevient apprenant — retour d'expérience sur une posture trop rare en logistique.",embedType:"linkedin",linkedinEmbedCode:'<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:share:7428487056349102081" height="1544" width="504" frameborder="0" allowfullscreen="" title="Post intégré"></iframe>'},{id:"1",slug:"excel-150k-entrepot-600k",title:"Quand Excel dit +150K€ et que l'entrepôt répond -600K€",chapo:"Le fossé entre décision stratég
3283ique et réalité terrain coûte cher. Très cher. Retour sur un cas où les chiffres au vert sont devenus des pertes à six chiffres — et sur ce qu'il aurait fallu voir avant.",coverImage:"https://images.unsplash.com/photo-1454165804606-c3d57bc86b40?w=800&q=80",coverImageCaption:"Quand les tableurs masquent la réalité opérationnelle",content:"",publishDate:"2026-01-24",publishTime:"09h15",readTime:4,category:["Terrain","Management"],tags:["#ExcelVsRéalité","#LogistiqueOpérationnelle","#CoûtsCachés","#TransformationSupplyChain","#DécisionTerrain"],linkedinUrl:"https://www.linkedin.com/feed/update/urn:li:ugcPost:7421563870042857472",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"Phase F — Fiabiliser : comprendre le terrain avant de décider",excerpt:"Le fossé entre décision stratégique et réalité terrain coûte cher. Très cher. Comment éviter que les chiffres au vert deviennent des pertes à six chiffres.",embedType:"linkedin",linkedinEmbedCode:'<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7421563870042857472?collapsed=1" height="606" width="504" frameborder="0" allowfullscreen="" title="Post intégré"></iframe>'},{id:"2",slug:"80-pourcent-projets-ia-logistique-echouent",title:"Pourquoi 80 % des projets d'IA en logistique échouent avant même le pilote",chapo:"L'échec des projets d'IA en logistique n'est ni une surprise, ni un accident. Il est presque systémique. Le problème ne vient pas de la technologie, mais de ce qu'on lui demande de réparer.",coverImage:"https://images.unsplash.com/photo-1485827404703-89b55fcc595e?w=800&q=80",coverImageCaption:"L'intelligence artificielle face aux réalités du terrain logistique",content:`Sur le papier, tout est prêt : données disponibles, éditeurs convaincants, démonstrateurs séduisants. En comité, le projet coche toutes les cases de la modernité.
3284
3285Dans l'entrepôt, pourtant, rien ne suit.
3286
3287## Ce qu'on demande vraiment à l'algorithme
3288
3289Le problème n'est jamais l'algorithme lui-même. C'est ce qu'on lui demande de faire.
3290
3291Dans la majorité des sites que j'ai observés, la donnée logistique est instable par nature. Les règles de gestion bougent. Les exceptions ne sont documentées nulle part. Les équipes font des ajustements permanents pour "faire passer la prod".
3292
3293Ces ajustements fonctionnent — jusqu'au jour où on tente de les automatiser.
3294
3295C'est là que tout s'effondre.
3296
3297## L'IA amplifie, elle ne corrige pas
3298
3299Beaucoup pensent que l'IA va "mettre de l'ordre". C'est un contresens fondamental.
3300
3301L'IA ne crée pas l'ordre. Elle amplifie ce qui existe déjà.
3302
3303Si les stocks sont faux, elle les optimisera faux. Si les priorités changent selon l'heure ou l'interlocuteur, elle produira des recommandations incohérentes. Si personne ne sait vraiment qui décide quoi, l'algorithme n'apportera pas de clarté — il reflètera le flou.
3304
3305Le miroir ne ment pas. Il renvoie ce qu'on lui montre.
3306
3307## Ce que font les projets qui réussissent
3308
3309Les projets qui tiennent dans le temps commencent toujours par le même travail. Un travail ingrat, mais décisif.
3310
3311Ils clarifient d'abord où naît la donnée. Qui crée l'information, à quel moment, dans quel système.
3312
3313Ensuite, ils identifient qui la modifie. Quels acteurs interviennent, pour quelles raisons, avec quelles conséquences.
3314
3315Enfin, ils établissent quand elle cesse d'être fiable. À partir de quel délai, de quel événement, de quel seuil.
3316
3317Tant que cette cartographie n'est pas faite, parler d'IA revient à construire sur du sable.
3318
3319## Ce qu'il faut retenir
3320
3321L'IA utile en logistique n'est pas spectaculaire.
3322
3323Elle est discrète, ciblée, ancrée dans un système déjà stabilisé. Elle ne transforme pas une organisation désordonnée en modèle d'efficacité. Elle permet à une organisation déjà claire d'aller plus vite et plus loin.
3324
3325La différence entre un projet qui échoue et un projet qui tient ? Ce n'est pas la technologie. C'est la maturité du terrain sur lequel on la pose.`,publishDate:"2026-01-10",publishTime:"14h30",readTime:5,category:["IA","Terrain"],tags:["#IALogistique","#TransformationDigitale","#DonnéesTerrain","#ÉchecProjetIA","#MaturitéOrganisationnelle","#Entrepôt"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"Phase F — Fiabiliser : l'IA amplifie ce qui existe",excerpt:"L'échec des projets IA en logistique n'est ni une surprise, ni un accident. Il est presque systémique. Décryptage d'un problème qui commence bien avant l'algorithme.",embedType:"markdown"},{id:"3",slug:"kpi-ne-montrent-jamais-terrain-sait",title:"Ce que les KPI ne montrent jamais (et que le terrain sait très bien)",chapo:"Un site peut afficher des indicateurs au vert tout en étant au bord de la rupture. La vraie performance ne se lit pas sur un tableau de bord — elle se ressent dans les couloirs et sur les quais.",coverImage:"https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&q=80",coverImageCaption:"Les tableaux de bord ne racontent qu'une partie de l'histoire",content:`Les indicateurs logistiques racontent une histoire. Mais rarement toute l'histoire.
3326
3327Les délais sont tenus. La productivité semble stable. Les coûts sont maîtrisés. Tout est au vert.
3328
3329Pourtant, sur le quai, la réalité est tout autre.
3330
3331## L'effort invisible derrière les chiffres
3332
3333Ce que les KPI ne montrent pas, c'est l'effort invisible.
3334
3335Ce sont les heures supplémentaires tacites, jamais déclarées mais toujours attendues. C'est la pression mentale des chefs d'équipe, qui absorbent quotidiennement les incohérences du système. C'est la fatigue cumulative des opérateurs les plus expérimentés, ceux qui tiennent l'organisation à bout de bras.
3336
3337Ces personnes compensent. Elles bricolent. Elles s'adaptent.
3338
3339Et les indicateurs restent au vert.
3340
3341## Une performance qui repose sur la résilience humaine
3342
3343Dans beaucoup d'organisations, la performance affichée repose davantage sur la résilience humaine que sur la robustesse du système.
3344
3345Tant que ces personnes tiennent, les indicateurs tiennent.
3346
3347Lorsqu'elles lâchent — épuisement, départ, maladie — tout s'effondre rapidement. Et on découvre alors que la belle mécanique n'en était pas une.
3348
3349Le système fonctionnait grâce à des individus, pas grâce à des processus.
3350
3351## Repenser ce que "piloter" veut dire
3352
3353Le rôle du pilotage logistique ne devrait pas être de masquer ces écarts. Il devrait être de les rendre visibles avant qu'ils ne deviennent critiques.
3354
3355Les KPI sont nécessaires. Mais ils sont insuffisants.
3356
3357Ils doivent être complétés par une lecture fine du vécu opérationnel. Par des remontées terrain non filtrées. Par une attention aux signaux faibles que les tableaux de bord ne captent jamais.
3358
3359## La question à se poser
3360
3361La vraie question n'est pas : "Est-ce que ça marche aujourd'hui ?"
3362
3363La vraie question est : à quel prix humain et organisationnel ?
3364
3365Un site qui tient par la volonté de quelques-uns n'est pas un site performant. C'est un site en sursis.`,publishDate:"2025-12-18",publishTime:"11h45",readTime:4,category:["Management","Terrain"],tags:["#KPI","#PerformanceLogistique","#FacteurHumain","#PilotageOpérationnel","#SignauxFaibles","#RésilienceÉquipes"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"Phase L — Lire : les données ne disent pas tout",excerpt:'Un site peut afficher des KPI "dans le vert" tout en étant sous tension permanente. La vraie performance se lit ailleurs que sur les tableaux de bord.',embedType:"markdown"},{id:"4",slug:"manager-transition-clarte-avant-vitesse",title:"Manager de transition : remettre de la clarté avant de remettre de la vitesse",chapo:"Lorsqu'un site logistique entre en zone de turbulence, la tentation est toujours la même : accélérer. Pourtant, c'est souvent la pire chose à faire. Le premier levier n'est pas l'efficacité — c'est la lisibilité.",coverImage:uie,coverImageCaption:"La clarté organisationnelle précède toujours la performance",content:`Faire plus, plus vite, avec ce qui reste. C'est compréhensible.
3366
3367Et c'est souvent catastrophique.
3368
3369## Le vrai problème n'est presque jamais un manque de compétences
3370
3371Dans les missions de transition que j'ai menées, le problème n'est presque jamais un déficit de savoir-faire.
3372
3373Ce que je trouve, le plus souvent, c'est un empilement de décisions partielles. Des arbitrages pris dans l'urgence, jamais remis en question. Des règles du jeu devenues illisibles à force de couches successives.
3374
3375Les équipes ne manquent pas de compétence. Elles manquent de cadre.
3376
3377## Trois questions que personne ne pose plus
3378
3379Quand une organisation logistique dérive, trois questions fondamentales ont souvent cessé d'avoir des réponses claires.
3380
3381Qui arbitre réellement les priorités ?
3382
3383Quelles décisions peuvent être prises localement, sans remonter ?
3384
3385Quels écarts sont tolérés — et lesquels ne le sont pas ?
3386
3387Quand ces questions restent floues, la vitesse devient un risque. Les équipes compensent. Elles bricolent. Elles interprètent.
3388
3389L'organisation avance, mais sans direction lisible.
3390
3391## Ce que signifie vraiment "clarifier"
3392
3393Le premier rôle d'un manager de transition n'est pas d'optimiser.
3394
3395C'est de clarifier.
3396
3397Cela veut dire poser un cadre simple, explicite, compris de tous. Redonner de la cohérence entre le discours managérial, les indicateurs affichés et les pratiques réelles. Aligner les attentes, du quai jusqu'au comité de direction.
3398
3399Ce travail est rarement visible de l'extérieur. Il n'offre pas de gains immédiats spectaculaires.
3400
3401Mais sans lui, toute tentative d'accélération finit par créer de nouvelles tensions.
3402
3403## La vitesse vient après
3404
3405La vitesse durable est une conséquence.
3406
3407La clarté est un prérequis.
3408
3409Une organisation qui accélère sans avoir clarifié son fonctionnement ne va pas plus vite. Elle s'épuise plus vite.`,publishDate:"2025-12-02",publishTime:"08h00",readTime:4,category:["Management","Optimisation"],tags:["#ManagementTransition","#ClarificationOrganisationnelle","#Leadership","#GestionCrise","#OptimisationLogistique","#DirectionOpérationnelle"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"Phase F + U — Fiabiliser + Unifier : stabiliser avant d'optimiser",excerpt:"Lorsqu'un site logistique entre en turbulence, accélérer est une erreur. La clarté organisationnelle est le prérequis à toute vitesse durable.",embedType:"markdown"},{id:"5",slug:"ia-revele-failles-organisation",title:"L'IA ne remplace pas l'humain en entrepôt. Elle révèle les failles de l'organisation",chapo:"Le discours dominant laisse entendre que l'IA va remplacer des fonctions, des décisions, voire des métiers entiers. Sur le terrain logistique, la réalité est bien différente — et bien plus intéressante.",coverImage:cie,coverImageCaption:"L'IA comme miroir des dysfonctionnements organisationnels",content:`On entend partout que l'intelligence artificielle va automatiser les décisions, supprimer des postes, transformer les entrepôts en machines autonomes.
3410
3411C'est un récit séduisant. Mais c'est un récit largement fantasmé.
3412
3413## Ce que l'IA fait vraiment
3414
3415L'IA ne remplace pas. Elle révèle.
3416
3417Elle met en lumière les règles floues. Les exceptions permanentes. Les décisions prises à l'intuition, faute de cadre partagé.
3418
3419Lorsqu'une recommandation générée par un système "intelligent" paraît absurde, ce n'est pas nécessairement un bug. C'est souvent le reflet fidèle d'une organisation qui n'a jamais formalisé ses propres arbitrages.
3420
3421L'algorithme ne se trompe pas. Il montre ce qu'on ne voulait pas voir.
3422
3423## Un révélateur pédagogique
3424
3425Dans les projets bien menés, l'IA agit comme un révélateur pédagogique.
3426
3427Elle oblige à expliciter ce qui reposait jusque-là sur l'expérience tacite de quelques personnes clés. Elle met au jour les désaccords implicites. Les incohérences structurelles. Les zones d'ombre que tout le monde contourne sans jamais les nommer.
3428
3429C'est inconfortable. Et c'est précisément pour cela que c'est utile.
3430
3431## Deux usages, deux trajectoires
3432
3433L'IA est un outil à double tranchant.
3434
3435Mal utilisée, elle accélère la perte de sens. Elle automatise le flou. Elle produit des recommandations que personne ne comprend, dans un système que personne ne maîtrise.
3436
3437Bien utilisée, elle devient un levier de maturité organisationnelle. Elle force la clarification. Elle pousse à documenter, à arbitrer, à structurer.
3438
3439Le résultat dépend entièrement de l'intention avec laquelle on l'introduit.
3440
3441## L'enjeu n'est pas technologique
3442
3443Le vrai enjeu n'est donc pas technologique.
3444
3445Il est humain. Il est organisationnel. Il est profondément opérationnel.
3446
3447L'IA ne transformera pas une organisation confuse en organisation performante. Mais elle peut aider une organisation lucide à aller plus loin, plus vite, avec plus de rigueur.
3448
3449À condition d'accepter d'abord ce qu'elle révèle.`,publishDate:"2025-11-15",publishTime:"16h20",readTime:4,category:["IA","Management"],tags:["#IAEntrepôt","#TransformationDigitale","#OrganisationLogistique","#RévélateurOrganisationnel","#MaturitéDigitale","#HumainVsMachine"],linkedinUrl:"https://www.linkedin.com/in/chalmichelou/",authorId:"chal-michel-ou",author:"Chal-Michel OU",subtitle:"Phase F — Fiabiliser : l'IA expose les fragilités",excerpt:"L'IA ne remplace pas. Elle révèle. Les règles floues, les exceptions permanentes, les décisions prises à l'intuition. Un levier de maturité organisationnelle avant tout.",embedType:"markdown"},{id:"chaos-structure-transformer-entrepot",slug:"chaos-structure-transformer-entrepot",title:"De chaos à structure : comment transformer un entrepôt",subtitle:"Ce n'est pas une question de budget ni de technologie. C'est une question de séquence. Et la séquence commence toujours au même endroit : regarder ce qui se passe vraiment.",chapo:"Un entrepôt qui dysfonctionne ne ressemble pas à une catastrophe. Il ressemble à quelque chose qui tourne — mais qui tourne mal. Les symptômes sont toujours les mêmes. Et la transformation suit toujours la même séquence.",coverImage:Yre,coverImageCaption:"De gauche à droite : un entrepôt désorganisé vs un entrepôt structuré — la distance se mesure en méthode, pas en budget.",content:`Un entrepôt qui dysfonctionne ne ressemble pas à une catastrophe. Il ressemble à quelque chose qui tourne — mais qui tourne mal, lentement, avec beaucoup d'énergie dépensée pour compenser ce qui n'est pas organisé.
3450
3451Les symptômes sont toujours les mêmes : des préparateurs qui savent par cœur où se trouvent les produits parce que le WMS n'est pas fiable. Des heures supplémentaires régulières pour rattraper des retards qui n'auraient pas dû exister. Des erreurs de commandes qui remontent au service client comme des problèmes relationnels, alors que c'est un problème de processus. Un responsable logistique qui passe 60 % de son temps à gérer des urgences qu'une organisation solide aurait évitées.
3452
3453J'ai vu cet entrepôt des dizaines de fois. Dans des secteurs différents, des tailles différentes, des niveaux de maturité différents. Et à chaque fois, la transformation a suivi la même séquence — pas la même technologie, pas le même budget, mais la même logique.
3454
3455> **Le diagnostic que tout le monde rate** — Le premier réflexe quand un entrepôt dysfonctionne, c'est de chercher l'outil qui manque — un nouveau WMS, des équipements plus récents, de l'automatisation. Le vrai diagnostic commence avant : pourquoi l'organisation actuelle produit-elle ces résultats ? La réponse est presque toujours dans les processus, pas dans les équipements.
3456
3457---
3458
3459## Étape 1 — Voir avant de décider
3460
3461La première étape ne coûte rien. Elle prend deux à trois jours et elle est irremplaçable : aller sur le terrain, suivre physiquement les flux, observer sans intervenir.
3462
3463Pas dans le bureau du responsable logistique. Dans les allées. À 6h du matin quand les préparateurs arrivent. Au quai de réception quand le camion décharge. En zone expédition quand le dernier transporteur part.
3464
3465Ce qu'on cherche : les contournements. Les habitudes informelles qui compensent ce qui ne fonctionne pas. Les emplacements que tout le monde évite sans pouvoir l'expliquer. Les procédures écrites que personne n'applique parce qu'elles ne correspondent plus à la réalité. Et surtout — les problèmes que les équipes connaissent depuis des mois et que personne n'a encore formalisés.
3466
3467La chrono-analyse est l'outil le plus utile ici : suivre une commande de bout en bout, mesurer chaque étape, cartographier les déplacements. En deux jours, on identifie systématiquement les goulots que les tableaux de bord ne montrent pas.
3468
3469👉 *Lire aussi : [Une journée dans un entrepôt logistique](/analyses-outils/journee-entrepot-logistique)*
3470
3471---
3472
3473## Étape 2 — Fiabiliser le socle avant tout autre chantier
3474
3475Avant de penser à optimiser quoi que ce soit, il faut répondre à une question simple : est-ce que les données de base sont fiables ?
3476
3477Précision de stock, adressage des emplacements, cohérence entre le WMS et la réalité physique. Ces trois éléments conditionnent tout le reste. Un slotting optimisé sur des données de stock à 94 % de précision ne produit rien. Un itinéraire de picking calculé par un WMS dont les emplacements sont partiellement faux fait perdre du temps.
3478
3479Le chantier de fiabilisation n'est pas spectaculaire. Il n'y a pas de photo à mettre dans un rapport de transformation. Mais sans lui, tout le reste repose sur du sable.
3480
3481Concrètement : inventaire tournant systématique sur les classes A, règle stricte "aucun mouvement sans enregistrement WMS", correction des adresses incohérentes, séparation physique des zone
3481s réception / stock actif / quarantaine.
3482
3483En quatre à six semaines, la précision de stock peut passer de 94 % à 98,5 %. Sans nouveau système. Sans investissement.
3484
3485> **Ce que la fiabilisation produit** — Quand la précision de stock atteint 99 %, quelque chose change dans l'ambiance de l'entrepôt. Les préparateurs font confiance au WMS. Les chefs d'équipe passent moins de temps à gérer des exceptions. Le responsable logistique peut lire ses indicateurs sans se demander s'ils reflètent la réalité. Cette confiance dans les données est le premier vrai résultat d'une transformation.
3486
3487---
3488
3489## Étape 3 — Optimiser les flux dans l'ordre
3490
3491Une fois le socle fiabilisé, on peut travailler sur ce qui améliore concrètement la performance : le slotting, les itinéraires de picking, la séparation des flux, les KPI opérationnels.
3492
3493La révision du slotting — repositionner les classes A en zone ergonomique, mettre les produits à forte rotation à portée de main — peut réduire les distances de picking de 15 à 20 % sans aucun investissement. C'est plusieurs heures de travail récupérées chaque semaine. C'est une décision qui prend une demi-journée à prendre et deux jours à déployer.
3494
3495Les KPI viennent après, pas avant. On ne met pas en place un tableau de bord sur des données qu'on ne fait pas encore confiance. On le construit progressivement, sur 3 à 5 indicateurs, chacun relié à une décision concrète : si cet indicateur dérive, voilà ce qu'on fait dans les 72 heures.
3496
3497👉 *Lire aussi : [10 KPI logistiques qui comptent vraiment](/analyses-outils/10-kpi-logistiques-entrepot)*
3498
3499---
3500
3501## Étape 4 — Automatiser seulement ce qui est stable
3502
3503La technologie arrive en dernier. Pas parce qu'elle n'est pas utile — mais parce qu'elle amplifie ce qui existe. Un robot qui navigue dans un entrepôt désorganisé navigue intelligemment dans le désordre. Un WMS avancé appliqué à des processus instables produit de l'instabilité plus rapidement.
3504
3505L'automatisation pertinente, c'est celle qui vient renforcer ce qui fonctionne déjà. Et à ce stade, les équipes savent exactement ce dont elles ont besoin — parce qu'elles ont passé plusieurs mois à faire fonctionner l'entrepôt sans le dépendre.
3506
3507C'est là que les décisions d'investissement sont prises avec les bonnes informations.
3508
3509---
3510
3511Transformer un entrepôt ne prend pas des années. La plupart des chantiers qui changent vraiment quelque chose se déploient en 3 à 6 mois. Ce qui prend du temps, c'est décider de commencer — et décider de commencer dans le bon ordre.
3512
3513Du chaos à la structure, la distance est souvent plus courte qu'on ne le croit. Elle se mesure en méthode, pas en budget.
3514
3515👉 *Découvrir notre [Diagnostic & Audit logistique](/services/diagnostic)*
3516
3517---
3518
3519*Sources : Observations terrain CHAL·CONSULTING IA (entrepôts PME/ETI France 2024–2026) · Hardis Group 2025 (KPI logistique) · OPEX 2025 (précision stock benchmarks)*`,publishDate:"2026-01-20",publishTime:"08h00",readTime:6,category:["Méthode","Optimisation","Terrain"],tags:["Transformation entrepôt","Méthode terrain","Organisation","PME logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Comment passer d'un entrepôt désorganisé à un entrepôt qui tient ? Pas par la technologie — par la séquence. Les quatre étapes concrètes pour transformer une organisation logistique sans tout réinventer.",embedType:"markdown"},{id:"erreurs-flux-logistique-gmp",slug:"erreurs-flux-logistique-gmp",title:"Comment éviter les erreurs de flux dans une logistique GMP",subtitle:"Les GMP ne pardonnent pas l'improvisation. Mais les erreurs les plus coûteuses ne viennent pas du manque de réglementation — elles viennent du moment où la procédure existe sur papier et n'est plus appliquée sur le terrain.",chapo:"GMP et erreurs de flux logistiques : les 5 sources d'écart les plus fréquentes en entrepôt pharmaceutique, leur origine réelle, et les principes opérationnels pour les prévenir.",coverImage:Jre,coverImageCaption:"Contrôle qualité en entrepôt pharmaceutique — inspection des lots et traçabilité GMP",content:`Les GMP — Good Manufacturing Practices, ou Bonnes Pratiques de Fabrication — posent un cadre clair : chaque étape du flux logistique doit être documentée, validée, et reproductible. La traçabilité en est la fondation — [j'ai développé pourquoi la traçabilité est le socle de toute logistique pharmaceutique fiable](/analyses-outils/logistique-pharmaceutique-tracabilite-vitale). Mais la conformité réglementaire n'immunise pas contre les erreurs opérationnelles.
3520
3521Ce que j'ai observé dans ma pratique — chez Bio-Rad, chez Cenexi, et lors de missions en secteur réglementé — c'est que les écarts de flux les plus fréquents ne viennent pas d'un défaut de procédure. Ils viennent du moment où la procédure cesse d'être suivie. Souvent pour des raisons compréhensibles : pression temporelle, sous-effectif ponctuel, habitude qui remplace la rigueur. Le résultat est identique : une non-conformité, un lot bloqué, parfois un retrait de marché.
3522
3523Voici les cinq sources d'erreur les plus récurrentes en flux GMP — et les principes opérationnels pour les prévenir.
3524
3525---
3526
3527## Erreur #1 — La réception sans contrôle complet
3528
3529**Le scénario :** le camion arrive en fin de journée, l'équipe est réduite, le chauffeur est pressé. La réception est "rapide" — on enregistre les quantités sans contrôle visuel approfondi, sans vérification des températures de transport, sans mise en quarantaine systématique. Les produits rejoignent directement le stock actif.
3530
3531**Pourquoi c'est grave :** en GMP, aucun produit ne peut rejoindre le stock libéré sans validation par la personne habilitée — pharmacien ou qualified person selon le contexte. Une réception bâclée introduit dans le circuit des produits dont l'intégrité n'est pas confirmée. Si un problème est découvert plus tard — défaut d'emballage, écart de température, lot non conforme — le périmètre de contamination est impossible à délimiter précisément.
3532
3533> **⚠️ La règle des deux étapes**
3534>
3535> En réception GMP : d'abord la quarantaine physique, toujours. Puis le contrôle. Puis la libération. Dans cet ordre. Jamais dans l'autre. La pression du chauffeur qui attend n'est pas une raison valable de sauter une étape. C'est au processus de réception d'absorber la contrainte — pas à la rigueur de la céder.
3536
3537---
3538
3539## Erreur #2 — La confusion entre lots en zone de picking
3540
3541**Le scénario :** deux lots différents d'une même référence sont stockés dans des emplacements adjacents ou, pire, mélangés dans un même emplacement. L'opérateur prend le plus accessible — pas nécessairement celui dont la date de péremption est la plus proche (règle FEFO), ni le lot dont le statut est "libéré".
3542
3543**Pourquoi c'est grave :** expédier un lot en quarantaine ou un lot dont la DLC est dépassée, c'est une non-conformité majeure — rappel de produit potentiel, déclaration à l'ANSM, mise en cause de la chaîne de responsabilité. Et c'est évitable par la conception même du stockage.
3544
3545**Le principe de prévention :** la ségrégation physique des lots n'est pas optionnelle. Un emplacement = un lot = un statut. Le WMS doit gérer cette règle automatiquement et bloquer toute sortie d'un lot dont le statut n'est pas "libéré". Si le WMS ne le fait pas, une procédure de vérification manuelle documentée doit compenser — et elle doit être appliquée à chaque picking, sans exception de commodité. C'est aussi ce qui permet d'atteindre une [précision de stock supérieure à 99 %](/analyses-outils/10-kpi-logistiques-entrepot).
3546
3547---
3548
3549## Erreur #3 — La non-documentation des écarts "mineurs"
3550
3551**Le scénario :** une alerte de température s'est déclenchée pendant 18 minutes lors d'une nuit. L'équipe du matin constate que les températures sont revenues à la normale. Personne ne documente l'événement — "ce n'était pas grand-chose". Ou : un carton a été légèrement endommagé à la réception, les produits ont l'air intacts, on les range quand même sans enregistrement.
3552
3553**Pourquoi c'est grave :** en GMP, il n'y a pas d'écart mineur non documenté. Tout événement hors norme doit être enregistré, investigué, et faire l'objet d'une décision traçable. Pas parce que les régulateurs sont procéduriers — parce qu'un écart apparemment mineur peut être le signe avant-coureur d'un problème systémique. La documentation n'est pas une formalité administrative. C'est le système d'alerte précoce.
3554
3555> **🔍 Ce que j'ai appris des audits ANSM**
3556>
3557> Lors d'un audit, l'inspecteur ne cherche pas uniquement des écarts. Il cherche comment l'organisation gère ses écarts. Un entrepôt qui documente ses non-conformités mineures et démontre ses actions correctives est beaucoup plus solide qu'un entrepôt qui n'en déclare aucune — et donc n'en détecte probablement pas.
3558
3559---
3560
3561## Erreur #4 — La rupture de la chaîne documentaire entre services
3562
3563**Le scénario :** le service commercial prend une commande urgente et la transmet directement au picking, en court-circuitant le processus de vérification du statut lot dans le WMS. Ou : une décision de dérogation sur un produit hors norme est prise verbalement entre le pharmacien et le chef d'équipe, sans être formalisée dans le dossier de lot.
3564
3565**Pourquoi c'est grave :** en GMP, la traçabilité de la décision est aussi importante que la décision elle-même. Si un auditeur demande "sur quelle base ce produit a-t-il été libéré malgré une alerte température ?", la réponse "le pharmacien a dit que c'était bon" n'est pas acceptable. Il faut le formulaire de dérogation signé, daté, avec la justification scientifique et la décision formalisée.
3566
3567**Le principe de prévention :** aucune exception au processus standard ne se fait sans document. Même — surtout — quand c'est urgent. La pression commerciale est un contexte. Elle n'est pas une dérogation à la chaîne documentaire.
3568
3569---
3570
3571## Erreur #5 — La formation initiale sans maintien des compétences
3572
3573**Le scénario :** les opérateurs ont été formés aux procédures GMP lors de leur intégration. Depuis, des procédures ont évolué, de nouveaux produits ont été intégrés, le WMS a été mis à jour. Les formations initiales n'ont pas été actualisées. Ou : un opérateur expérimenté applique une procédure "comme il l'a toujours fait" — qui n'est plus la procédure en vigueur depuis 8 mois.
3574
3575**Pourquoi c'est grave :** les GMP exigent que chaque opérateur soit formé, qualifié, et que sa compétence soit maintenue dans le temps. Ce n'est pas bureaucratique — c'est la reconnaissance que les procédures évoluent, que les produits changent, et que l'habitude est l'ennemie de la rigueur. Un audit peut demander les registres de formation de chaque opérateur impliqué dans une non-conformité. Si ces registres sont incomplets ou périmés, la responsabilité de l'établissement est engagée.
3576
3577> **Le principe qui unifie les 5 erreurs**
3578>
3579> Chacune de ces cinq erreurs a la même structure : une procédure correcte, une pression ponctuelle, et un écart qui semblait raisonnable sur le moment.
3580>
3581> En GMP, "raisonnable sur le moment" n'est pas un critère. Le critère, c'est : est-ce que cette décision est documentée, traçable, et défendable devant un auditeur ?
3582>
3583> Si la réponse est non — c'est une non-conformité, quelle que soit la bonne intention qui l'a produite.
3584
3585---
3586
3587## Conclusion
3588
3589Éviter les erreurs de flux en logistique GMP ne demande pas de génie organisationnel. Ça demande de la constance : appliquer les procédures même quand c'est contraignant, documenter même quand c'est urgent, et maintenir la rigueur même quand personne ne regarde.
3590
3591C'est exactement ce que les GMP formalisent. Et c'est aussi, fondamentalement, ce que toute bonne logistique devrait exiger d'elle-même — réglementée ou non.
3592
3593Besoin d'un regard extérieur sur vos flux en environnement réglementé ? [Découvrez notre diagnostic & audit](/services/diagnostic).
3594
3595---
3596
3597*Sources : Guide BPF ANSM (mai 2019, référentiel officiel français) · EMA Guidelines GDP (Bonnes Pratiques de Distribution) · ICH Q9 (management du risque qualité) · ICH Q10 (système qualité pharmaceutique) · Observations terrain CHAL·CONSULTING IA — secteur réglementé 2019–2025.*`,publishDate:"2026-01-16",publishTime:"09:00",readTime:6,category:["Secteur réglementé","Logistique pharmaceutique","Qualité terrain"],tags:["GMP","Logistique pharmaceutique","Erreurs flux","Non-conformités","Qualité terrain"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"GMP et erreurs de flux logistiques : les 5 sources d'écart les plus fréquentes en entrepôt pharmaceutique, leur origine réelle, et les principes opérationnels pour les prévenir. Retour terrain après 15 ans en secteur réglementé.",embedType:"markdown"},{id:"reduire-cout-logistique-par-commande",slug:"reduire-cout-logistique-par-commande",title:"Comment réduire le coût logistique par commande",subtitle:"Méthodes simples pour identifier les coûts cachés",chapo:"La logistique représente entre 10 et 15 % du chiffre d'affaires d'une entreprise de distribution. Mais la part de ce coût qui n'apparaît nulle part — heures supplémentaires, avoirs commerciaux, litiges transporteurs non soldés — représente entre 15 et 25 % du coût logistique total. Avant de chercher à négocier, il faut d'abord savoir combien coûte réellement chaque commande expédiée.",coverImage:Qre,coverImageCaption:"Identifier les coûts cachés pour réduire le coût logistique par commande — Photo CHAL·CONSULTING IA",content:`La logistique représente entre 10 et 15 % du chiffre d'affaires d'une entreprise de distribution. C'est un chiffre connu. Ce qui l'est moins, c'est la part de ce coût qui n'apparaît nulle part dans le compte de résultat — pas sous la ligne "logistique", en tout cas. Elle se cache dans les heures supplémentaires, dans les avoirs commerciaux, dans les litiges transporteurs non soldés, dans les retours clients traités sans processus. Elle s'appelle "coûts cachés", et dans la majorité des PME que j'accompagne, elle représente entre 15 et 25 % du coût logistique total.
3598
3599Avant de chercher à négocier de meilleurs tarifs transporteurs ou à investir dans un nouveau WMS, il faut d'abord savoir combien coûte réellement chaque commande expédiée — et où cet argent part sans laisser de trace.
3600
3601> **La formule de base** — Coût logistique par commande = (Masse salariale opérationnelle + Frais transport + Fournitures emballage + Quote-part loyer/charges entrepôt + Maintenance équipements + Coûts WMS/systèmes) ÷ Nombre de commandes expédiées. Ce chiffre, la plupart des PME ne le calculent pas. Celles qui le calculent l'utilisent rarement pour piloter. C'est là que tout commence.
3602
3603## Coût caché #1 — Les erreurs de picking non comptabilisées
3604
3605Une erreur de picking génère en moyenne entre 17 et 30 € de coûts directs : retour transporteur, retraitement interne, gestion du litige client, envoi du bon produit en express pour rattraper le délai. Dans une PME qui expédie 200 commandes par jour avec un [taux de précision picking](/analyses-outils/10-kpi-logistiques-entrepot) de 1,5 % d'erreurs, c'est 3 commandes erronées quotidiennes — soit entre 55 € et 90 € de coûts de non-qualité par jour, et jusqu'à 20 000 € sur l'année.
3606
3607Ce coût n'est pas dans la ligne "logistique". Il est dans les "avoirs commerciaux", dans les "frais de port retour", dans les "heures diverses". Il est invisible parce que personne ne l'a jamais agrégé.
3608
3609**La méthode simple** : pendant 4 semaines, comptabiliser précisément chaque erreur de picking et chacun de ses coûts associés. Le chiffre obtenu crée une prise de conscience immédiate — et justifie un investissement dans le slotting ou le contrôle à l'expédition que personne n'aurait accepté sur la base d'un ressenti.
3610
3611> **Ordre de grandeur** — 1 % d'erreurs picking sur 50 000 commandes annuelles = 500 erreurs. À 20 € de coût moyen par erreur = 10 000 € de coûts de non-qualité par an. Sur un entrepôt PME standard. Sans que personne l'ait jamais mesuré.
3612
3613## Coût caché #2 — Les distances de picking inutiles
3614
3615Dans un entrepôt dont le slotting n'a pas été revu depuis l'ouverture, un préparateur parcourt en moyenne 30 à 40 % de distance en plus que nécessaire. Ces mètres supplémentaires ne coûtent pas cher pris individuellement — quelques secondes par ligne. Multipliés par 80 lignes par jour, par 12 préparateur
3615s, par 250 jours de l'année, ils représentent plusieurs centaines d'heures de main-d'œuvre absorbées par du déplacement non productif.
3616
3617Ce coût est invisible parce qu'il se noie dans la masse salariale globale. L'entrepôt fonctionne, les commandes partent, les salaires sont payés. Personne ne mesure combien de ces heures servaient à préparer des commandes et combien servaient à marcher vers des emplacements mal placés.
3618
3619**La méthode simple** : analyser dans le WMS les 20 références les plus préparées au cours des 90 derniers jours. Vérifier leur emplacement actuel. Si plus de la moitié ne sont pas dans la zone de picking prioritaire (les allées les plus proches de la zone d'expédition), le slotting est à retravailler. Résultat constaté : gain de 15 à 20 % sur les distances de picking, en mesurant la [productivité picking en lignes par heure](/analyses-outils/10-kpi-logistiques-entrepot). Sans investissement. Juste de la réorganisation.
3620
3621## Coût caché #3 — Le stock mort qui immobilise du capital
3622
3623Le stock mort — les références qui n'ont pas bougé depuis 6 mois ou plus — coûte de deux façons simultanées : il occupe de l'espace qui devrait accueillir des produits actifs, et il immobilise du capital qui ne génère aucun retour.
3624
3625Dans la plupart des entrepôts PME, le stock mort représente entre 8 et 15 % de la valeur totale du stock. Sur un stock de 500 000 € valorisé au prix d'achat, c'est entre 40 000 € et 75 000 € d'argent dormant. Auquel il faut ajouter le coût d'occupation de l'espace qu'il prend — en moyenne 15 à 20 € par palette et par mois en frais de stockage.
3626
3627**La méthode simple** : extraire du WMS toutes les références sans mouvement depuis 180 jours. Calculer leur valeur. Décider — ligne par ligne — : liquidation, retour fournisseur, ou maintien justifié par une saisonnalité documentée. Ce travail prend une demi-journée. Il libère souvent de l'espace, du capital, et améliore mécaniquement le taux de rotation des stocks.
3628
3629> **Le stock mort ne fait pas de bruit** — C'est sa caractéristique principale. Il ne génère pas de réclamation client, pas d'alerte WMS, pas de rapport d'incident. Il coûte silencieusement, mois après mois, sans que personne ne le voie — jusqu'au jour de l'inventaire annuel où tout le monde est surpris du résultat.
3630
3631## Coût caché #4 — Les heures supplémentaires non planifiées
3632
3633Les heures supplémentaires sont un révélateur organisationnel. Quand elles sont ponctuelles et liées à un pic d'activité prévu — elles font partie du fonctionnement normal. Quand elles sont récurrentes, sur les mêmes jours de la semaine, chez les mêmes équipes, sans lien avec un volume exceptionnel — elles signalent un problème de planification ou de processus.
3634
3635Le coût est direct : une heure supplémentaire majorée à 25 % sur un salaire horaire de 15 € brut coûte 18,75 € brut de l'heure, auquel s'ajoutent les charges patronales. Mais le coût indirect est plus important : les heures sup non planifiées épuisent les équipes, augmentent les erreurs, et créent une spirale où la fatigue du lendemain génère d'autres problèmes qui génèrent d'autres heures sup.
3636
3637**La méthode simple** : tracer les heures supplémentaires sur 3 mois, semaine par semaine, par équipe. Identifier les régularités. Si les heures sup sont systématiquement le mercredi et le jeudi, il y a une cause structurelle — probablement un pic de commandes en milieu de semaine que la planification du picking n'anticipe pas. C'est un problème de séquençage, pas de ressources.
3638
3639## Coût caché #5 — Les litiges transporteurs absorbés en silence
3640
3641Un colis perdu, une livraison en retard, un dommage transport non signalé à temps : chaque litige non déclaré dans les délais contractuels est un coût absorbé intégralement par l'entreprise. Dans les PME, ces litiges sont souvent traités au cas par cas par le service commercial ou le service client — un avoir accordé par-ci, un renvoi de produit par-là — sans jamais être agrégés ni imputés au poste logistique.
3642
3643**La méthode simple** : créer un registre des litiges transporteurs sur 6 mois, même rudimentaire — date, transporteur, nature du litige, coût. L'agrégation révèle presque toujours deux choses : un transporteur ou un type de livraison qui concentre les problèmes, et un volume total qui justifie une renégociation contractuelle ou un changement de prestataire. Ce registre prend 10 minutes par semaine à alimenter. Il peut valoir plusieurs milliers d'euros de récupération sur un an.
3644
3645## Conclusion
3646
3647Réduire le coût logistique par commande ne commence pas par un appel d'offres transporteurs ni par un projet WMS. Ça commence par compter ce qu'on ne compte pas.
3648
3649Les cinq postes que j'ai décrits ici — erreurs picking, distances inutiles, stock mort, heures sup récurrentes, litiges non agrégés — sont présents dans la quasi-totalité des entrepôts PME que j'ai audités. Leur point commun : ils sont invisibles parce que personne ne les a jamais mis en chiffres.
3650
3651Une fois chiffrés, ils deviennent des décisions. Souvent des décisions simples, rapides, peu coûteuses — de la méthode, pas de la technologie.
3652
3653Pour aller plus loin sur la démarche globale d'optimisation d'entrepôt : [la méthode complète pour optimiser un entrepôt logistique](/analyses-outils/comment-optimiser-un-entrepot-logistique-methode-complete).
3654
3655---
3656
3657*Sources : Mecalux 2025 (coût erreur picking 17–30 €) · Shiptify 2025 (coûts logistiques 10–15 % CA) · Boostmyshop 2025 (réduction coûts logistiques 10–30 %) · Observations terrain CHAL·CONSULTING IA — audits PME/ETI France 2023–2025.*`,publishDate:"2026-01-09",publishTime:"08:00",readTime:6,category:["Méthode","Optimisation","Performance entrepôt"],tags:["Coût logistique","Coûts cachés","Performance entrepôt","Optimisation","PME logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Comment calculer et réduire son coût logistique par commande : les 5 postes de coûts cachés à identifier en priorité, et les actions concrètes pour les réduire sans investissement majeur. Méthode terrain pour PME et ETI.",embedType:"markdown"}
3657,{id:"comment-choisir-wms-adapte-entrepot",slug:"comment-choisir-wms-adapte-entrepot",featured:!0,title:"Comment choisir un WMS adapté à son entrepôt",subtitle:"La vraie question n'est pas 'quel WMS prendre' — c'est 'est-ce que mon entrepôt est prêt à en accueillir un'",chapo:"Un WMS n'organise pas un entrepôt. Il automatise et structure ce qui existe déjà. Si les flux sont instables, les emplacements mal adressés, les processus non documentés — le WMS va exécuter les mêmes erreurs plus vite et à plus grande échelle. Voici les 5 questions à se poser avant de regarder les solutions.",coverImage:Xre,coverImageCaption:"Gestion d'entrepôt et systèmes WMS — analyser les prérequis avant de choisir un outil — CHAL·CONSULTING IA",content:`Quand une PME me contacte pour m'accompagner sur le choix d'un WMS, la première chose que je fais n'est pas d'ouvrir un comparatif d'éditeurs. C'est de visiter l'entrepôt.
3658
3659Parce que dans la majorité des cas, la question "quel WMS choisir" est posée trop tôt. La vraie question est d'abord : "est-ce que mon entrepôt est en état de tirer parti d'un WMS ?" Et la réponse, souvent, est non — pas encore.
3660
3661Un WMS n'organise pas un entrepôt. Il automatise et structure ce qui existe déjà. Si les flux sont instables, les emplacements mal adressés, les processus non documentés — le WMS va exécuter les mêmes erreurs plus vite et à plus grande échelle. L'outil amplifie. Il ne corrige pas.
3662
3663Ce n'est pas un argument contre les WMS. C'est un argument pour le bon séquençage.
3664
3665> **Ce que le marché WMS ne vous dit pas** — En 2025, le marché WMS mondial croît de +15 % par an. 175 solutions ont été identifiées par Wavestone dans son radar 2025. 30 000 € minimum pour une PME, jusqu'à 300 000 € pour une structure complexe — sans compter l'implémentation, la formation et la maintenance annuelle. Les coûts cachés peuvent doubler l'investissement initial. Et l'échec d'un projet WMS n'est presque jamais technique. Il est organisationnel — parce que l'entrepôt n'était pas prêt.
3666
3667---
3668
3669## #1 — Mes processus sont-ils documentés et stables ?
3670
3671C'est la question la plus importante — et celle qu'on pose le moins.
3672
3673Un WMS paramètre des règles : règle de picking (FEFO, FIFO, priorité emplacement), règle de réapprovisionnement, règle d'affectation des emplacements, règle de contrôle à l'expédition. Pour paramétrer ces règles correctement, il faut savoir comment l'entrepôt fonctionne *réellement* — pas comment il devrait fonctionner, pas comment il fonctionnait avant, mais comment il fonctionne aujourd'hui.
3674
3675Si personne ne sait répondre précisément à "quelle est la règle de picking actuelle sur les produits à date courte ?" — le projet WMS va créer ce qu'il devait résoudre : du désordre formalisé.
3676
3677Ce n'est pas une critique des équipes. C'est la réalité de la majorité des entrepôts PME que j'ai audités : les règles existent dans la tête des opérateurs expérimentés, pas dans un document. Ce niveau d'organisation produit [les 7 erreurs de performance les plus fréquentes en entrepôt](/analyses-outils/7-erreurs-performance-entrepot) — et elles se retrouveront dans le WMS si on ne les traite pas avant.
3678
3679**La méthode** : avant toute démarche WMS, cartographier les flux principaux (réception, mise en stock, picking, expédition, retours) et formaliser les règles métier associées. Ce travail prend 2 à 4 semaines selon la complexité du site. Il est indispensable. Sans lui, le paramétrage WMS sera une négociation permanente entre l'éditeur et des utilisateurs qui ne s'accordent pas sur la réalité opérationnelle.
3680
3681---
3682
3683## #2 — Ma précision de stock est-elle suffisante pour un WMS ?
3684
3685Un WMS gère les stocks en temps réel. Il dirige les opérateurs vers des emplacements précis, déclenche des réapprov
3685isionnements sur des seuils définis, et génère des listes de picking basées sur ce qu'il "croit" être en stock.
3686
3687Si la précision de stock réelle est à 93 %, le WMS va envoyer des opérateurs vers des emplacements vides un coup sur sept. Résultat : ruptures de picking, interventions manuelles, contournements du système, perte de confiance des équipes — et finalement, un WMS partiellement désactivé 6 mois après le go-live.
3688
3689C'est l'un des scénarios d'échec les plus courants. Et il ne vient pas du WMS.
3690
3691Le seuil minimal à atteindre avant un déploiement WMS est généralement de 97 à 98 % de précision de stock. En dessous, un inventaire tournant rigoureux et un travail sur les causes d'écart (erreurs de réception, picking sans scan, produits mal relogés) doivent précéder le projet. Pour aller plus loin sur ce sujet : le [taux de précision de stock](/analyses-outils/10-kpi-logistiques-entrepot) fait partie des indicateurs les plus critiques à suivre.
3692
3693> **Le chiffre qui qualifie votre entrepôt** — Un entrepôt avec scan RF soutenu par un WMS peut atteindre 99,9 % de précision de stock — contre 95 % en moyenne sans outil dédié. Mais ce gain ne se réalise que si la précision de départ est suffisante pour que le WMS ait confiance dans sa propre donnée. Démarrer un WMS à 90 % de précision, c'est construire sur du sable.
3694
3695---
3696
3697## #3 — Mon ERP est-il capable de communiquer avec un WMS ?
3698
3699Le WMS ne fonctionne pas en silo. Il doit recevoir les commandes de l'ERP, lui retourner les mouvements de stock, et synchroniser les données en temps réel ou quasi-réel. Si cette interface n'est pas fiable, les deux systèmes divergent — et personne ne sait lequel a raison.
3700
3701La question à poser à l'éditeur WMS : "quelle est la méthode d'interfaçage avec mon ERP actuel, et quel est le délai de synchronisation ?" Si la réponse est vague ou conditionne tout à un développement spécifique, c'est un signal d'alerte.
3702
3703Ce point est structurant pour les PME qui tournent sur des ERP anciens, peu documentés, ou sur des solutions du marché dont les APIs sont fermées. Dans ce cas, la refonte de l'intégration ERP-WMS peut représenter 30 à 50 % du coût total du projet — un poste systématiquement sous-estimé dans les premières propositions commerciales.
3704
3705**WMS intégré à l'ERP (module natif) vs WMS dédié standalone** : les deux ont leurs logiques. Pour une PME souhaitant maîtriser sa supply chain de bout en bout, le WMS intégré à l'ERP simplifie la maintenance et évite les conflits de données. Le WMS dédié offre plus de profondeur fonctionnelle — pertinent quand la complexité opérationnelle (multi-sites, multi-clients, gestion de lots) le justifie réellement.
3706
3707---
3708
3709## #4 — Mon équipe est-elle en mesure d'absorber ce changement ?
3710
3711L'échec d'un WMS est rarement technique. Il est humain.
3712
3713Les opérateurs qui travaillaient depuis 8 ans avec un système papier ou Excel ne deviennent pas utilisateurs d'un WMS en une semaine de formation. La résistance au changement n'est pas de la mauvaise volonté — c'est une réaction normale à un outil qui modifie profondément les gestes, les habitudes, et la façon dont chacun sait s'il fait bien son travail.
3714
3715**Les signaux d'alerte à surveiller** : des opérateurs qui "contournent" le scan pour aller plus vite, des chefs d'équipe qui valident des mouvements en masse pour rattraper du retard, des modules jamais activés parce que "trop compliqués au démarrage". Ces contournements vident le WMS de sa substance sans que personne ne le dise explicitement.
3716
3717Le plan de conduite du changement n'est pas une formalité en fin de projet. C'est un investissement qui se prépare 3 mois avant le go-live — avec des référents opérationnels identifiés, des sessions pratiques sur le terrain, et un accompagnement post-démarrage d'au moins 4 à 6 semaines.
3718
3719> **Le module jamais activé** — Dans la majorité des entrepôts que j'ai visités disposant d'un WMS, au moins un module acheté n'a jamais été mis en production — souvent le slotting dynamique, parfois le contrôle à l'expédition. Raison syst
3719ématique : "on l'a désactivé au démarrage parce que c'était trop complexe, et on a jamais trouvé le moment de le réactiver." Le coût de ces modules dormants s'accumule dans la licence annuelle. Le gain associé, lui, ne se réalise jamais.
3720
3721---
3722
3723## #5 — Quel est mon vrai budget total — TCO sur 3 ans ?
3724
3725La fourchette visible : 30 000 à 300 000 € selon la taille et la complexité.
3726
3727**Ce que le devis initial n'inclut presque jamais :**
3728
3729- L'implémentation et le paramétrage (souvent 50 à 80 % du coût licence)
3730- La formation initiale des équipes (rarement budgétée à sa juste valeur)
3731- La maintenance évolutive et les mises à jour majeures
3732- Les développements spécifiques pour les interfaces ERP ou transporteurs
3733- Le coût interne du projet (le responsable logistique mobilisé 30 % de son temps pendant 6 mois, ce n'est pas gratuit)
3734- La perte de productivité pendant la phase de montée en compétences post-go-live (souvent 3 à 6 semaines à capacité réduite)
3735
3736**La règle terrain** : multiplier le prix de la licence par 2,5 à 3 pour estimer le coût total réel sur 3 ans. C'est le chiffre à présenter en CODIR — pas le prix catalogue de l'éditeur.
3737
3738Pour mieux comprendre comment [identifier les coûts cachés avant de budgéter](/analyses-outils/reduire-cout-logistique-par-commande), le travail préalable sur les postes de dépenses invisibles est indispensable.
3739
3740---
3741
3742## Conclusion
3743
3744Choisir un WMS, c'est la dernière étape d'un processus — pas la première.
3745
3746Les cinq questions posées ici — processus documentés, précision de stock, intégration ERP, absorption humaine, TCO réel — permettent de répondre à la question préalable : mon entrepôt est-il prêt ? Si la réponse est oui sur les cinq points, la sélection de l'outil peut commencer.
3747
3748Si la réponse est non sur l'un d'eux, il y a un travail préparatoire à faire. Ce travail n'est pas un obstacle au projet WMS. C'est ce qui en garantit le succès.
3749
3750Pour un accompagnement structuré sur cette démarche, découvrez [nos services d'audit et diagnostic logistique](/services/diagnostic).
3751
3752---
3753
3754*Sources : Wavestone — Radar WMS 2025 (175 solutions identifiées, croissance +15 %/an) · Mordor Intelligence 2023 (fourchette coûts WMS 30 000–300 000 €) · Shiptify 2025 (budget PME WMS à partir de 30 000 €, coûts cachés ×2) · LISA WMS / N'ware Technologies (précision stock 99,9 % avec RF + WMS) · Argon & Co 2025 (l'échec WMS est organisationnel, pas technique) · Observations terrain CHAL·CONSULTING IA — audits et accompagnements PME/ETI France 2023–2025.*`,publishDate:"2026-01-14",publishTime:"08:00",readTime:6,category:["Méthode","Transformation digitale","Performance entrepôt"],tags:["WMS","Logiciel entrepôt","Choix WMS","Transformation digitale","PME logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Comment choisir un WMS adapté à son entrepôt : les 5 questions à se poser avant de regarder les solutions, les pièges budgétaires à anticiper, et pourquoi un WMS mal séquencé aggrave les problèmes existants. Méthode terrain pour PME et ETI.",embedType:"markdown"},{id:"automatisation-low-cost-5-outils-entrepot",slug:"automatisation-low-cost-5-outils-entrepot",title:"Automatisation low-cost : 5 outils à moins de 10 000 € pour booster votre entrepôt",subtitle:"Scanners vocaux, terminaux RF, WMS légers, drones d'inventaire, robots de transport d'appoint : les solutions que les PME peuvent déployer sans attendre un grand projet.",chapo:"95 % des entrepôts dans le monde ne sont ni automatisés ni robotisés. Entre le zéro automatisation et le grand projet à 5 ans, il existe une zone accessible, sous-utilisée, rentable rapidement : 5 familles d'outils, un budget de 2 000 à 10 000 €, un ROI souvent inférieur à 18 mois.",coverImage:fie,coverImageCaption:"Opérateur avec terminal RF, drone d'inventaire et robot AMR dans un entrepôt — les outils d'automatisation accessibles aux PME.",content:`Quand on parle d'automatisation en logistique, les images qui viennent spontanément sont celles d'Amazon : des entrepôts de 100 000 m², des milliers de robots Kiva, des convoyeurs aériens. Un investissement de plusieurs dizaines de millions d'euros. Rien à voir avec la réalité d'une PME industrielle ou d'un distributeur régional.
3755
3756Pourtant, aujourd'hui, 95 % des entrepôts dans le monde ne sont ni automatisés ni robotisés. Et parmi ceux qui démarrent une démarche d'automatisation, beaucoup commencent avec des budgets inférieurs à 10 000 €. C'est l'objet de cet article.
3757
3758Avant de détailler les 5 outils, une condition préalable qui n'est jamais assez répétée : l'automatisation accélère et amplifie ce qui existe. Elle ne corrige pas. Un processus instable automatisé est un processus instable qui tourne plus vite — avec plus de dégâts. C'est précisément pourquoi j'aborde [l'IA opérationnelle en entrepôt](/ia-operationnelle) toujours dans cet ordre : stabiliser les flux d'abord, automatiser ensuite.
3759
3760Si vos processus sont documentés, vos flux prévisibles et votre précision de stock supérieure à 97 % — ces 5 outils sont pour vous. Si ce n'est pas encore le cas, commencez par là. L'outil le plus puissant au mauvais moment reste une dépense.
3761
3762> **Le paradoxe de l'automatisation PME** — 95 % des entrepôts mondiaux ne sont pas automatisés (2025). L'automatisation de masse reste hors de portée budgétaire pour la plupart des PME — un entrepôt automatisé standard représente des millions d'euros. Mais entre le zéro automatisation et le grand projet à 5 ans, il existe une zone accessible, sous-utilisée, rentable rapidement : 5 familles d'outils, un budget de 2 000 à 10 000 €, un ROI souvent inférieur à 18 mois. C'est ce que cet article documente.
3763
3764---
3765
3766## #1 — Le picking vocal (voice picking)
3767
3768**Budget : 3 000 – 9 000 € pour un déploiement 3 opérateurs**
3769
3770### Principe
3771
3772Le picking vocal équipe les opérateurs d'un terminal mobile et d'un casque. Le WMS dicte les instructions (allée, emplacement, référence, quantité) via une voix synthétique, et l'opérateur confirme ses actions par la voix. Les mains restent libres, les yeux restent sur la marchandise.
3773
3774### Ce que ça change concrètement
3775
3776Un préparateur avec picklist papier passe en moyenne 30 à 40 % de son temps à consulter sa liste, à la repositionner, à chercher visuellement la référence. Avec le picking vocal, ces interruptions disparaissent. Résultat mesuré : gain de productivité de 25 à 35 % selon les études (Zetes, 2024). Précision de picking de l'ordre de 99,9 % — 
3776contre une moyenne de 95-97 % en picking papier.
3777
3778### Chiffrer le ROI
3779
3780Hypothèse : entrepôt avec 3 préparateurs, salaire brut chargé 35 000 €/an/personne, volume de 200 commandes/jour, taux d'erreur actuel 2 %.
3781
3782- **Gain productivité (+30 %)** : équivalent de 0,9 ETP récupéré = ~31 500 €/an
3783- **Gain non-qualité (-80 % erreurs)** : 4 erreurs évitées/jour × 20 €/erreur × 250 j = ~20 000 €/an
3784- **Total gains annuels estimés** : ~51 500 €
3785- **Coût d'acquisition 3 terminaux + logiciel** : 6 000 – 9 000 €
3786- **ROI : inférieur à 3 mois.**
3787
3788### Solutions accessibles < 10 000 € (3 opérateurs)
3789
3790- **KaliVoice** (éditeur français, déploiement sur terminaux Zebra ou Honeywell, compatible WMS existant) : sur devis, accessible PME
3791- **Lydia Voice EPG** (leader mondial, également disponible sur Android standard, sans formation vocale de l'opérateur — reconnaissance vocale "speaker independent")
3792- **Honeywell Vocollect** : référence du marché, modèles SaaS disponibles
3793
3794### Condition préalable absolue
3795
3796Le picking vocal s'interface avec le WMS. Si vous n'avez pas de WMS ou si votre WMS est trop ancien pour s'interfacer, le picking vocal seul ne fonctionne pas. Ce point doit être vérifié avant tout engagement.
3797
3798> **Ce que dit le terrain** — Lors d'un déploiement picking vocal dans un entrepôt agroalimentaire de 4 200 m² avec 5 préparateurs, le gain de productivité mesuré à 3 mois était de +28 %. La formation opérationnelle avait duré moins d'une journée. Le blocage principal identifié : 2 des 5 opérateurs résistaient initialement au changement. L'adoption s'est faite à 100 % en 3 semaines, une fois qu'ils ont constaté eux-mêmes la réduction de fatigue en fin de journée.
3799
3800---
3801
3802## #2 — Les terminaux RF avec scan codes-barres
3803
3804**Budget : 800 – 2 500 € par terminal**
3805
3806### Principe
3807
3808Le terminal RF (Radio Fréquence) est l'outil de base de tout entrepôt digitalisé. L'opérateur scanne les références au moment du picking, du rangement, de la réception, ou de l'inventaire. Les mouvements de stock sont enregistrés en temps réel dans le WMS — sans ressaisie manuelle, sans décalage.
3809
3810### Pourquoi c'est le premier investissement à faire
3811
3812Si votre entrepôt fonctionne encore au papier ou à Excel, le terminal RF est l'investissement qui produit le ratio gain/coût le plus élevé. Il est simple à déployer, ne nécessite pas de refonte des processus, et la courbe d'apprentissage est inférieure à 2 heures pour un opérateur.
3813
3814### Chiffrer le ROI
3815
3816Hypothèse : entrepôt 10 opérateurs, 2 ressaisies manuelles en erreur par jour par opérateur, chaque erreur coûte 15 minutes de correction.
3817
3818- 20 erreurs/jour × 15 min × (35 000 €/2 080 h annuelles) = ~85 €/jour perdu = ~21 000 €/an en pertes de temps liées aux erreurs de ressaisie.
3819- **Coût 5 terminaux** : 4 000 – 12 500 €
3820- **ROI : 3 à 7 mois.**
3821
3822### Solutions accessibles
3823
3824- **Zebra TC52 / TC57** (référence robuste, Android, longue autonomie) : ~1 200 – 2 000 € HT/unité neuf
3825- **Honeywell CT47** : ~1 500 – 2 200 € HT/unité
3826- **Terminaux reconditionnés** (Zebra TC70, Honeywell Dolphin) : 600 – 900 € HT/unité — option pertinente pour un premier déploiement
3827- Applications mobiles sur smartphones durcis (compromis économique possible pour les entrepôts à faible intensité de chocs et de poussière)
3828
3829Le terminal RF est la brique de base pour atteindre une [précision de stock supérieure à 97 %](/analyses-outils/10-kpi-logistiques-entrepot) — seuil minimal avant tout projet d'automatisation avancée.
3830
3831### Pièges à éviter
3832
3833Ne pas acheter des terminaux sans vérifier la compatibilité avec le WMS ou l'ERP en place. Certaines applications WMS ont des versions mobiles limitées ou non optimisées pour les terminaux Android récents.
3834
3835---
3836
3837## #3 — Le WMS léger ou open-source
3838
3839**Budget : 0 – 8 000 € (licence + déploiement initial)**
3840
3841### Principe
3842
3843Un WMS (Warehouse Management System) pilote les opérations de l'entrepôt : réception, rangement, picking, inventaire, expédition. Sans WMS, les données de stock vivent dans de
3843s Excel ou dans l'ERP commercial — sans visibilité en temps réel, sans pilotage par emplacement, sans règle de picking automatisée.
3844
3845### Le spectre des solutions accessibles
3846
3847**▸ GRATUIT — Odoo Community (open source)**
3848
3849Le module Inventory d'Odoo est open source. Le logiciel couvre la gestion des emplacements, les règles de réapprovisionnement, le picking multi-niveaux, la traçabilité par lot et numéro de série, les inventaires tournants, la lecture codes-barres, et les intégrations avec les principaux e-commerces.
3850
3851Coût logiciel : 0 €. Coût de déploiement (paramétrage + formation) : 2 000 – 5 000 € selon la complexité, via un intégrateur certifié Odoo.
3852
3853Limite : la version communautaire ne bénéficie pas du support éditeur. Prévoir un intégrateur de confiance pour la maintenance.
3854
3855**▸ < 200 €/MOIS — Monstock (SaaS français)**
3856
3857Solution cloud, 100 % hébergée en France, conçue pour les PME et ETI. Interface mobile, gestion multi-entrepôts, traçabilité, préparation de commandes, intégrations e-commerce (Shopify, Amazon, Cdiscount, PrestaShop). Déploiement rapide, sans projet informatique lourd.
3858
3859Coût SaaS : à partir de ~120-180 €/mois selon le plan. Premier budget annuel sur 12 mois : 1 440 – 2 160 €.
3860
3861**▸ POUR CEUX QUI ONT DÉJÀ UN ERP ODOO**
3862
3863Si votre entreprise utilise déjà Odoo pour la comptabilité ou les ventes, activer le module WMS Inventory est quasi-immédiat et sans coût de licence supplémentaire en version communautaire. C'est le chemin le plus rapide vers une gestion d'entrepôt digitalisée pour une PME déjà dans l'écosystème Odoo.
3864
3865Pour aller plus loin sur ce sujet, découvrez comment [choisir le bon WMS avant d'investir](/analyses-outils/comment-choisir-wms-ad
3865apte-entrepot).
3866
3867### Chiffrer le ROI
3868
3869Hypothèse : PME avec 3 000 références, gestion stock Excel actuelle, 2 % d'écarts stock (valeur stock 400 000 €).
3870
3871- Réduction écarts à 0,5 % avec WMS : gain potentiel = 6 000 €/an de stock retrouvé
3872- Gain productivité inventaire : 5 jours homme/an × 250 €/jour = 1 250 €/an
3873- Réduction erreurs expédition : 3 €/commande × 500 cmd/mois = 18 000 €/an
3874- **Total : ~25 000 €/an**
3875- **Investissement WMS léger** : 2 000 – 8 000 €
3876- **ROI : 1 à 4 mois.**
3877
3878> **⚠ Le WMS que personne n'utilise** — Le risque principal du WMS léger PME n'est pas technique. C'est l'adoption. J'ai visité des entrepôts où le WMS était déployé depuis 6 mois — et les opérateurs avaient recréé leurs propres Excel en parallèle. Un WMS non adopté coûte sa licence sans produire ses gains. La clé : impliquer les opérateurs dans le paramétrage, pas seulement les informer du déploiement. Deux heures de formation pratique terrain valent mieux que trois jours de documentation.
3879
3880---
3881
3882## #4 — Le drone d'inventaire autonome
3883
3884**Budget : 5 000 – 9 500 € (location ou achat entrée de gamme)**
3885
3886### Principe
3887
3888Le drone d'inventaire circule de façon autonome dans les allées de l'entrepôt, scanne les codes-barres ou les QR codes sur les emplacements et les palettes, et remonte les données d'inventaire en temps réel dans le WMS. Il fonctionne de nuit, pendant les fermetures, sans mobiliser d'opérateurs.
3889
3890### Une technologie en cours de démocratisation
3891
3892Ce segment était encore réservé aux grands comptes en 2022. En 2025, des acteurs comme Gather AI (États-Unis), Corvus Robotics, ou des solutions de location permettent un accès à partir de 500 €/mois en modèle "Drone-as-a-Service". En France, des solutions de prestation sur mesure commencent à se développer — à surveiller dans les 12 prochains mois.
3893
3894### Conditions d'utilisation
3895
3896Le drone d'inventaire nécessite : des allées suffisamment dégagées (largeur ≥ 3 m), des codes-barres ou QR codes en bon état sur les emplacements, et une hauteur sous ferme compatible avec le vol autonome (variable selon les modèles). Il est adapté aux entrepôts à grande hauteur avec beaucoup de références et des inventaires tournants fréquents.
3897
3898### Chiffrer le ROI
3899
3900Hypothèse : entrepôt 5 000 m², 10 000 emplacements, inventaire annuel mobilisant 15 opérateurs pendant 3 jours.
3901
3902- Coût inventaire manuel : 15 × 3 × 8h × 22 €/h (coût horaire moyen chargé) = ~7 920 €/an
3903- Coûts d'erreurs liées à l'inventaire (racks mal comptés, références manquantes) estimés à 3 000 – 5 000 €/an
3904- **Total coût inventaire actuel** : ~11 000 – 13 000 €/an
3905- **Coût drone (location ou prestation)** : 5 000 – 9 500 €/an
3906- **ROI : de 6 mois à 18 mois selon le modèle retenu.**
3907
3908### Point de vigilance terrain
3909
3910Le drone d'inventaire ne remplace pas un inventaire physique complet pour les exercices comptables ou les audits ICPE. Il complète les inventaires tournants et les contrôles ad hoc. Son apport principal : fréquence et réactivité — là où l'inventaire manuel ne peut pas être fait tous les 15 jours, le drone peut le faire hebdomadairement ou en continu.
3911
3912---
3913
3914## #5 — Le robot de transport AMR d'appoint
3915
3916**Budget : 7 000 – 10 000 € (entrée de gamme ou location)**
3917
3918### Principe
3919
3920Les AMR (Autonomous Mobile Robots) d'appoint sont des robots de transport autonomes qui circulent dans l'entrepôt pour déplacer des bacs, des chariots ou des palettes légères entre les zones (stockage, picking, expédition). Ils ne remplacent pas les chariots élévateurs. Ils remplacent les déplacements à pied des opérateurs avec des chariots manuels.
3921
3922### L'entrée de gamme en 2025
3923
3924Le marché s'est structuré avec des solutions accessibles aux PME :
3925
3926- **MiR** (Mobile Industrial Robots) propose des modèles d'entrée de gamme (MiR100, MiR250) à partir de 20 000 – 30 000 € — hors budget ici.
3927- Des **alternatives chinoises** (Geek+, Hikrobot) commencent à pénétrer le marché européen à des prix inférieurs, accessibles en location ou leasing.
3928- La formule la plus accessible < 10 000 € : le modèle **"Robot-as-a-Service" (RaaS)** — abonnement mensuel incluant le robot, la maintenance, les mises à jour — à partir de 500 – 800 €/mois, soit 6 000 – 9 600 €/an.
3929- Pour les entrepôts à très petite échelle : les **AGV à guidage magnétique** simples (transport de bacs sur rails magnétiques) démarrent à 5 000 – 8 000 € et automatisent des flux linéaires répétitifs.
3930
3931### Chiffrer le ROI
3932
3933Hypothèse : opérateur qui passe 2h/jour à faire des navettes entre zone de stockage et zone d'expédition, 250 jours/an.
3934
3935- Coût opérateur : 2h × 250 j × 22 €/h = 11 000 €/an de temps mobilisé en navette non qualifiée
3936- **1 AMR d'appoint (RaaS)** : 7 200 €/an
3937- **Gain net** : ~3 800 €/an + l'opérateur réorienté sur des tâches à valeur ajoutée
3938- **ROI : environ 8 à 12 mois.**
3939
3940> **Ce que j'observe sur le terrain en 2026** — Les PME qui automatisent avec succès ne commencent jamais par le robot. Elles commencent par le terminal RF et le WMS — les deux outils qui produisent de la donnée fiable. Une fois la donnée fiable (précision stock > 98 %, traçabilité des mouvements), le picking vocal vient naturellement. Et c'est seulement là — quand les flux sont stables et les données fiables — que le robot ou le drone peut produire ce qu'on attend de lui. L'automatisation low-cost ne s'improvise pas dans l'ordre qu'on veut. Elle suit la logique du terrain.
3941
3942---
3943
3944## Tableau récapitulatif
3945
3946| Outil | Budget indicatif | Gain principal | ROI estimé | Prérequis clé |
3947|---|---|---|---|---|
3948| Picking vocal | 3 000 – 9 000 € | +25 à +35 % productivité picking | < 3 mois | WMS existant |
3949| Terminaux RF | 800 – 2 500 €/unité | Suppression ressaisies, précision stock | 3 à 7 mois | WMS ou ERP compatible |
3950| WMS léger/open-source | 0 – 8 000 € | Visibilité stock temps réel | 1 à 4 mois | Processus documentés |
3951| Drone d'inventaire | 5 000 – 9 500 €/an | Fréquence inventaire ×10 | 6 à 18 mois | Allées dégagées, codes-barres à jour |
3952| AMR d'appoint | 6 000 – 10 000 €/an | Libération opérateurs navettes | 8 à 12 mois | Sol plat, flux répétitif identifié |
3953
3954---
3955
3956## Conclusion
3957
3958Ces 5 outils ne forment pas un programme d'automatisation. Ils forment un arsenal d'interventions ciblées, déployables progressivement, sur des points de friction identifiés.
3959
3960La bonne séquence reste toujours la même :
3961
39621. **Stabiliser les processus** (cartographie, règles documentées, précision stock)
39632. **Digitaliser la donnée** (terminaux RF + WMS)
39643. **Accélérer les opérations stables** (picking vocal, transport)
39654. **Automatiser les tâches répétitives** sans valeur ajoutée (inventaire, navettes)
3966
3967Aucun de ces outils ne coûte cher seul. Ce qui coûte cher, c'est de les déployer dans le mauvais ordre, sur des flux qui ne sont pas prêts. Pour suivre comment ces technologies s'intègrent dans les tendances actuelles du secteur, [les tendances logistiques de février 2026](/analyses-outils/logistique-entrepot-fevrier-2026) donnent un aperçu du contexte marché dans lequel ces outils s'inscrivent.
3968
3969Le meilleur budget d'automatisation n'est pas le plus élevé. C'est celui qui produit un ROI visible en moins d'un an, sur un flux que l'entrepôt maîtrise déjà.
3970
3971Pour un accompagnement sur votre démarche d'automatisation progressive, découvrez [nos services d'accompagnement](/services/accompagnement).
3972
3973---
3974
3975*Sources : Generix / Locus Robotics 2024 (95 % des entrepôts non automatisés) · Zetes / ZetesMedea 2024 (picking vocal : +25 à +35 % productivité, précision 99,9 %) · KaliVoice 2025 (évaluation solution vocale PME — note 8,8/10) · DIAGMA Supply Chain 2025 (ROI automatisation entrepôt, vision 5-15 ans) · GrandView Research 2025 (marché voice picking 3,1 Mds$ croissance 14,7 %/an) · Mecalux 2025 (guide picking vocal et robots de picking) · 100jourspourentreprendre.fr / Logistique Magazine 2025-2026 (comparatifs WMS PME : Odoo, Monstock, Akanea) · Gather AI / Corvus Robotics 2025 (drones d'inventaire, modèle RaaS) · Observations terrain CHAL·CONSULTING IA — accompagnements PME/ETI France 2023–2026.*`,publishDate:"2026-03-01",publishTime:"08:00",readTime:7,category:["Outil pratique","Automatisation","Performance entrepôt"],tags:["automatisation entrepôt pas chère","outils logistique low-cost","WMS PME","picking vocal","robot entrepôt PME","transformation digitale logistique"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"5 outils d'automatisation à moins de 10 000 € pour un entrepôt PME : picking vocal, terminaux RF, WMS open-source, AMR d'appoint, drones d'inventaire. ROI calculés, conditions de succès, pièges à éviter. Approche terrain.",embedType:"markdown"},{id:"organisation-preparation-commandes-picking",slug:"organisation-preparation-commandes-picking",featured:!0,title:"Comment organiser efficacement la préparation de commandes",subtitle:"Méthodes de picking, layout d'entrepôt, organisation des zone
3975s : les leviers concrets qui réduisent les déplacements, les erreurs et le coût par commande — sans investissement lourd.",chapo:"La préparation de commandes absorbe 40 à 55 % des coûts d'exploitation d'un entrepôt. Cet article documente les quatre méthodes de picking (discret, zone, vague, batch), le slotting ABC, le layout des zones et les technologies d'assistance — en partant de la méthode avant de parler d'outils.",coverImage:hie,coverImageCaption:"Préparateur de commandes en entrepôt — le picking représente plus de la moitié des coûts opérationnels.",content:`La préparation de commandes est l'opération la plus chère d'un entrepôt. Selon les données sectorielles les plus convergentes, elle représente entre 40 % et 55 % des coûts totaux d'exploitation. Dans certaines configurations e-commerce à forte diversité de références, ce chiffre monte jusqu'à 60 %.
3976
3977Ce n'est pas une surprise : la préparation mobilise des opérateurs pendant des heures, sur des distances quotidiennes qui peuvent dépasser 15 km, pour des gestes répétitifs dont la moitié au moins — les déplacements — ne créent aucune valeur directe. Les déplacements représentent à eux seuls plus de 50 % du temps total de préparation. Chaque pas est un coût.
3978
3979La bonne nouvelle : dans la plupart des entrepôts que j'ai traversés, les gains les plus significatifs ne viennent pas d'investissements technologiques. Ils viennent d'une meilleure organisation de ce qui existe déjà — les zones, les emplacements, la logique de traitement des commandes. C'est ce que cet article documente, en partant de la méthode avant de parler d'outils.
3980
3981Une erreur de picking coûte en moyenne entre 50 et 100 € par incident — logistique inverse, remise en stock, nouvelle expédition, impact relation client. [Les 7 erreurs de performance les plus fréquentes en entrepôt](/analyses-outils/7-erreurs-performance-entrepot) montrent que la plupart de ces incidents sont organisationnels, pas accidentels.
3982
3983> **Le chiffre qui change tout** — 40 à 55 % des coûts d'exploitation d'un entrepôt sont absorbés par la préparation de commandes. Ce n'est pas un coût fixe. C'est un levier. Un entrepôt qui réduit ses temps de picking de 20 % ne réduit pas son budget de 20 % — il libère de la capacité sans embaucher. C'est la différence entre croître et recruter.
3984
3985---
3986
3987## Partie 1 — Avant les méthodes : poser le diagnostic
3988
3989Avant de choisir une méthode de picking, il faut comprendre pourquoi la préparation est lente ou imprécise dans l'entrepôt concerné. Les causes sont presque toujours dans l'une de ces quatre catégories :
3990
3991### Les déplacements trop longs
3992
3993L'opérateur parcourt l'entrepôt dans tous les sens parce que les produits les plus fréquemment commandés sont dispersés — ou pire, stockés loin de la zone d'expédition. Ce problème de slotting est souvent le premier gain accessible, sans aucun investissement.
3994
3995### Les interruptions de flux
3996
3997Le préparateur s'arrête parce qu'un emplacement est vide, une référence est introuvable, ou parce qu'il doit consulter un document papier. Chaque interruption coûte 2 à 5 minutes de remise en régime. Sur une journée de 10 heures, 10 interruptions = 20 à 50 minutes perdues par opérateur.
3998
3999### Les erreurs de prélèvement
4000
4001Mauvaise référence, mauvaise quantité, mauvais destinataire. Ces erreurs surviennent quand les emplacements sont mal identifiés, quand plusieurs références sont stockées dans le même emplacement sans séparation claire, ou quand l'opérateur travaille avec une picklist papier qu'il doit interpréter plutôt que suivre.
4002
4003### Les goulets d'étranglement en zones chaudes
4004
4005Plusieurs opérateurs se croisent dans les mêmes allées aux mêmes heures. Le phénomène est systématique dans les entrepôts sans découpage en zones de travail : tout le monde converge vers les mêmes produits à forte rotation.
4006
4007Ce diagnostic en quatre points est la base. Sans lui, choisir une méthode de picking revient à choisir un outil avant de connaître le problème.
4008
4009---
4010
4011## Partie 2 — Les méthodes de picking : laquelle pour quel entrepôt ?
4012
4013Il existe quatre grandes méthodes de picking. Elles ne s'excluent pas — un même entrepôt peut en combiner deux ou trois selon les flux.
4014
4015### Méthode 1 — Le picking discret (commande par commande)
4016
4017**Principe** — Un préparateur, une commande, du début à la fin. Il prend sa picklist, parcourt l'entrepôt pour collecter tous les articles, puis revient à la zone d'expédition. Méthode la plus simple à comprendre et à contrôler.
4018
4019**Pour qui** — Entrepôts à faible volume de commandes (< 50/jour), forte diversité de références, commandes complexes ou à fort risque d'erreur (pharmaceutique, pièces détachées critiques, luxe). Aussi adapté pour les commandes urgentes hors flux standard.
4020
4021**Limites** — C'est la méthode la moins productive en déplacements. Chaque commande génère un parcours complet de l'entrepôt. À volume croissant, elle sature rapidement. Productivité indicative : 60 à 80 lignes par heure.
4022
4023**Quand l'abandonner** — Dès que le volume dépasse 80 à 100 commandes par jour avec plus de 3 lignes en moye
4023nne, le picking discret devient le principal goulot.
4024
4025### Méthode 2 — Le picking par zone
4026
4027**Principe** — L'entrepôt est découpé en zones physiques. Chaque préparateur est affecté à une zone et ne la quitte pas. La commande « circule » d'une zone à l'autre jusqu'à être complète — par convoyeur, chariot navette, ou transmission numérique si le WMS est présent.
4028
4029**Pour qui** — Entrepôts à référentiel large (> 2 000 références), flux réguliers, et produits suffisamment diversifiés pour justifier une spécialisation des zones. Particulièrement efficace dans les entrepôts multi-températures (ambiant + frais + congelé) ou multi-caractéristiques (produits chimiques / non-chimiques, grand gabarit / petit gabarit).
4030
4031**Avantages** — Réduction drastique des déplacements individuels. Montée en expertise des opérateurs sur leurs références. Suppression des engorgements dans les allées. Gain de productivité jusqu'à +50 % par rapport au picking discret dans les configurations adaptées (DocShipper, 2025).
4032
4033**Limite principale** — La coordination entre zones crée un nouveau problème : la synchronisation. Si une zone est en retard, toutes les commandes qui la traversent sont bloquées. Il faut donc des règles de déclenchement et un suivi des en-cours par zone.
4034
4035> **Ce que j'observe dans les PME sans WMS** — Le picking par zone sans WMS fonctionne — à condition que les règles de circulation des commandes entre zones soient explicites et respectées. Le problème classique : une zone accumule du travail sans signal visible. Les commandes s'empilent. Les autres zones finissent et attendent. La solution la plus simple avant un WMS : un tableau kanban physique à l'entrée de chaque zone, avec un stock maximum de commandes en attente au-delà duquel le chef d'équipe intervient.
4036
4037### Méthode 3 — Le picking par vagues (wave picking)
4038
4039**Principe** — Les commandes ne sont pas lancées une par une mais par « vagues » regroupant plusieurs commandes selon des critères définis : même transporteur, même heure de collecte, même zone géographique, même client prioritaire. Les opérateurs traitent la vague simultanément, puis une phase de consolidation/tri regroupe les articles par commande.
4040
4041**Pour qui** — Entrepôts à fort volume (> 200 commandes/jour), contraintes de coupures transporteur précises, e-commerce avec plusieurs fenêtres d'expédition dans la journée. Requiert un WMS ou a minima un ordonnancement rigoureux.
4042
4043**Avantages** — Optimisation des déplacements par mutualisation des trajets. Gain de productivité de 30 à 40 % versus picking discret (DocShipper, 2025). Permet d'absorber les pics sans embauche temporaire si les vagues sont bien dimensionnées.
4044
4045**Limite principale** — Nécessite une phase de tri après collecte — ce que certains entrepôts sous-estiment. Si la zone de tri n'est pas dimensionnée pour les volumes de la vague, le gain en picking est annulé par l'engorgement au tri.
4046
4047### Méthode 4 — Le batch picking (multi-commandes simultanées)
4048
4049**Principe** — Un seul opérateur collecte en un seul passage les articles de plusieurs commandes simultanément — sur un chariot multi-bacs ou avec un terminal mobile qui gère la répartition en temps réel. Il ne retourne à la base qu'une fois toutes les commandes de son batch collectées.
4050
4051**Pour qui** — Commandes légères à peu de lignes (e-commerce B2C, textile, cosmétique), forte densité de références par m², entrepôts à forte rotation avec des commandes répétitives sur les mêmes références.
4052
4053**Avantages** — Réduction maximale des déplacements à vide. Idéal pour les structures où 20 % des références représentent 80 % des sorties — la zone chaude peut être couverte en un seul circuit.
4054
4055**Limite principale** — Le risque d'erreur d'affectation (article mis dans le mauvais bac) augmente avec le nombre de commandes en cours simultanément. Sans guidage électronique (terminal RF, pick-to-light), le batch picking au-delà de 5 commandes simultanées génère plus d'erreurs qu'il n'en économise.
4056
4057| Méthode | Volume adapté | Productivité indicative | Prérequis | Point de vigilance |
4058|---|---|---|---|---|
4059| Discret | < 80 cmd/j | 60-80 lignes/h | Aucun | Volume limité |
4060| Par zone | > 100 cmd/j, large référentiel | Jusqu'à +50 % vs discret | Zoning défini | Synchronisation inter-zones |
4061| Par vagues | > 200 cmd/j | +30 à 40 % vs discret | WMS ou ordonnancement | Zone tri à dimensionner |
4062| Batch | Commandes légères, fort débit | Réduction déplacements max | Terminal RF recommandé | Erreurs affectation > 5 cmd simultanées |
4063
4064---
4065
4066## Partie 3 — Le slotting : placer les bons produits au bon endroit
4067
4068Le slotting — ou optimisation des emplacements — est le levier le plus sous-exploité dans les PME. Et pourtant, c'est souvent le premier à activer : il ne coûte rien en investissement matériel, et ses effets sont immédiats.
4069
4070### Pourquoi le slotting est décisif
4071
4072Dans un entrepôt mal sloté, un préparateur peut parcourir 40 % de distance en plus pour collecter les mêmes articles qu'un collègue dans un entrepôt optimisé. Les simulations montrent qu'un slotting correctement appliqué réduit les déplacements de 40 % et augmente la productivité de 25 % (Logistique Magazine, 2025). Sans toucher aux méthodes, sans équipement.
4073
4074### La base du slotting : la classification ABC
4075
4076La méthode ABC applique le principe de Pareto aux emplacements :
4077
4078**Classe A — 20 % des références, ~80 % des sorties.** Ce sont les articles les plus fréquemment commandés. Ils doivent occuper la zone la plus accessible : hauteur ergonomique (genoux-épaules), allées centrales, proche de la zone d'emballage/expédition. L'opérateur ne doit pas faire plus de 20 à 30 mètres pour les atteindre. En rayonnage, les niveaux 2 et 3 (hauteur d'homme) sont réservés aux A. Le niveau 1 (sol, access palette) et les niveaux hauts (> 1,80 m) sont réservés au stockage de masse des A ou aux B.
4079
4080**Classe B — 30 % des références, ~15 % des sorties.** Zone intermédiaire. Ces produits doivent être surveillés : un best-seller peut y basculer rapidement. Révision trimestrielle recommandée.
4081
4082**Classe C — 50 % des références, ~5 % des sorties.** Zone éloignée, stockage en hauteur ou fond d'entrepôt. Ces produits ne justifient pas un emplacement accessible. S'ils n'ont pas bougé depuis 12 mois, la question de leur maintien en stock mérite d'être posée.
4083
4084### Un point que les guides oublient souvent
4085
4086Le [taux de précision de stock](/analyses-outils/10-kpi-logistiques-entrepot) est une condition préalable au slotting. Si vos emplacements ne sont pas fiables (produits mal rangés, erreurs de rangement non détectées), le slotting produit des parcours optimaux sur une carte qui ne correspond plus à la réalité du terrain.
4087
4088La règle : précision stock ≥ 97 % avant de lancer un reslotting.
4089
4090### Le slotting en pratique : comment démarrer
4091
40921. Extraire 12 mois d'historique de sorties par référence (depuis l'ERP ou WMS)
40932. Classer les références par fréquence de picking (nombre de fois prélevées, pas valeur — deux critères différents)
40943. Identifier les 20 % de références qui représentent 80 % des prélèvements
40954. Vérifier leur emplacement actuel dans l'entrepôt
40965. Si des A sont en zone C (loin, en hauteur, au fond) → c'est le premier reslotting à faire, sans attendre
40976. Planifier le reslotting hors heures de production (nuit ou week-end) pour ne pas perturber les flux
4098
4099Fréquence recommandée de révision : trimestrielle pour les A, semestrielle pour les B et C. La saisonnalité fait basculer des références d'une classe à l'autre — un produit C en janvier peut devenir A en novembre.
4100
4101> **Slotting : des chiffres sans investissement** — Dans un entrepôt e-commerce de 5 000 m² avec 8 000 références, un reslotting ABC correctement appliqué a produit les résultats suivants : réduction de 40 % des déplacements opérateurs, augmentation de 25 % de la productivité picking, diminution de 15 % des erreurs de prélèvement, optimisation de 30 % de l'espace de picking actif. Investissement : 2 jours d'analyse + 1 week-end de réorganisation physique. Aucun équipement supplémentaire. (Source : Logistique Magazine / observations terrain, 2025)
4102
4103---
4104
4105## Partie 4 — Le layout : organiser l'espace pour minimiser le gaspillage
4106
4107Le layout est l'architecture des flux dans l'entrepôt. Un bon layout n'empêche pas les problèmes d'organisation — mais un mauvais layout les crée structurellement, quelle que soit la méthode choisie.
4108
4109### Les zones d'un entrepôt de préparation efficace
4110
4111Un entrepôt de préparation de commandes devrait distinguer au minimum ces cinq zones fonctionnelles — chacune avec des règles de flux claires :
4112
4113**Zone Réception** — Tampon entre les livraisons fournisseurs et le stockage. Dimensionnée pour le pic de réception (pas le flux moyen). Si cette zone est trop petite, les marchandises non vérifiées entrent directement en stock — source d'erreurs de picking en aval. Règle terrain : jamais de rangement avant contrôle.
4114
4115**Zone de stockage de masse (réserve)** — Stockage par palette ou grande quantité. Séparée physiquement de la zone de picking actif. Le flux réserve → picking (le réapprov
4115isionnement) doit être planifié — pas déclenché en urgence pendant la préparation.
4116
4117**Zone de picking actif (la zone dorée)** — Zone la plus dense en déplacements. C'est ici que le slotting ABC s'applique. Les niveaux ergonomiques (genoux-épaules, 0,40 m à 1,70 m) sont réservés aux articles de classe A. Cette zone doit être accessible depuis tous les axes de circulation principaux, sans cul-de-sac ni croisement de flux.
4118
4119**Zone d'emballage / vérification** — Positionnée idéalement entre la zone de picking actif et la zone d'expédition. Sa taille doit absorber le pic de préparation — pas le flux moyen. Le poste d'emballage est souvent sous-dimensionné dans les PME : un seul poste pour 5 préparateurs crée un bouchon systématique en fin de flux.
4120
4121**Zone d'expédition (staging)** — Zone tampon avant le chargement transporteur. Organisée par vague ou par transporteur (pas par ordre d'arrivée des commandes préparées). Une commande qui attend dans la mauvaise zone est une commande à risque.
4122
4123### Le principe de flux directif
4124
4125Le flux idéal dans un entrepôt de préparation est rectiligne ou en U : réception → stockage → picking → emballage → expédition, sans retours en arrière ni croisements de flux. Tout croisement est un risque d'erreur et une perte de temps.
4126
4127Dans les entrepôts en L ou en T (contrainte architecturale fréquente), le découpage en zones doit compenser la géométrie : séparer explicitement les flux entrants et sortants, même si la surface ne le permet pas parfaitement.
4128
4129> **L'erreur de layout la plus fréquente en PME** — La zone d'emballage positionnée au centre de l'entrepôt. Résultat : les préparateurs traversent la zone d'emballage pour aller chercher leurs articles. Les emballeurs sont constamment traversés par des chariots. Le flux picking et le flux emballage se croisent en permanence — perte de temps, risque d'erreur, fatigue opérateur. La solution n'est pas toujours de reconstruire. Parfois, déplacer 3 tables d'emballage contre un mur suffit à séparer les flux. C'est un diagnostic de 2 heures. Pas un projet de 6 mois.
4130
4131---
4132
4133## Partie 5 — Les technologies d'assistance : quand et lesquelles ?
4134
4135Les technologies ne remplacent pas une organisation solide. Elles amplifient ce qui existe. Sur un picking bien organisé, elles produisent des gains nets. Sur un picking chaotique, elles ajoutent de la complexité.
4136
4137Trois niveaux d'assistance au picking, du plus simple au plus élaboré :
4138
4139### Niveau 1 — Le terminal RF avec scan codes-barres
4140
4141Premier outil de digitalisation. Supprime les picklists papier, réduit les erreurs de ressaisie, enregistre les prélèvements en temps réel. Prérequis : emplacements étiquetés et WMS ou ERP compatible. Budget : 800 à 2 000 €/terminal. ROI : 3 à 7 mois.
4142
4143### Niveau 2 — Le picking vocal (voice picking)
4144
4145L'opérateur reçoit ses instructions par casque et confirme par la voix. Mains libres, yeux libres. Gain de productivité mesuré : +25 à +35 %. Précision : 99,9 % (Zetes, 2024). Formation opérateur : < 1 journée. Prérequis : WMS interfacé. Budget : 3 000 – 9 000 € pour 3 opérateurs.
4146
4147### Niveau 3 — Le pick-to-light / put-to-light
4148
4149Signaux lumineux sur les rayonnages indiquent à l'opérateur où prélever (pick) et où déposer (put). Idéal pour les zones à forte densité de références et les flux batch picking. Réduit les erreurs sans formation spécifique. Investissement plus élevé, mais très adapté aux zones A à fort débit.
4150
4151Pour un panorama complet des outils accessibles aux PME, [le picking vocal et les terminaux RF](/analyses-outils/automatisation-low-cost-5-outils-entrepot) sont détaillés dans notre guide d'automatisation low-cost.
4152
4153### Ce qui précède toujours les outils
4154
4155Avant tout investissement technologique, l'organisation physique doit être en place : slotting ABC cohérent, zones clairement séparées, processus documentés. Un pick-to-light installé sur des emplacements mal slotés ou un vocal picking sans WMS fiable produiront des résultats décevants — et valideront faussement que « la technologie ne marche pas ».
4156
4157---
4158
4159## Conclusion
4160
4161Organiser efficacement la préparation de commandes, c'est travailler dans cet ordre : comprendre les causes des lenteurs et des erreurs, choisir la méthode de picking adaptée au volume et au profil des commandes, optimiser les emplacements par le slotting ABC, structurer les flux physiques par le layout — et seulement ensuite, décider des outils technologiques qui amplifient cette organisation.
4162
4163Dans la plupart des entrepôts PME que j'ai accompagnés, les gains les plus rapides et les plus durables ne venaient pas d'un investissement en picking vocal ou en robot. Ils venaient d'un reslotting d'un week-end, d'une zone d'emballage déplacée de 5 mètres, ou d'un passage du picking discret au picking par zone sur les commandes standard.
4164
4165Le picking n'est pas un problème d'outil. C'est un problème de flux. Et les flux, ça se lit avant de se réparer. Si vous souhaitez identifier rapidement les premiers leviers dans votre entrepôt, un [diagnostic opérationnel de terrain](/services) permet de hiérarchiser les actions en une journée.
4166
4167---
4168
4169**Sources** — Hardis Supply Chain 2025 (picking : 40-55 % des coûts d'exploitation) · Sitaci / Scallog 2025 (déplacements > 50 % du temps de préparation) · DocShipper 2025 (picking par zone : +50 % productivité ; picking par vagues : +30-40 % ; coût erreur picking 50-100 €) · Zetes / ZetesMedea 2024 (picking vocal : +25 à +35 % productivité, 99,9 % précision) · Logistique Magazine 2025 (slotting ABC : -40 % déplacements, +25 % productivité) · Shiptify / Stockoss 2025 (méthodes picking dynamique, slotting, méthode ABC) · AR Racking / FAQ Logistique (classification ABC et organisation emplacements) · Observations terrain CHAL·CONSULTING IA — accompagnements PME/ETI France 2023–2026`,publishDate:"2026-01-26",publishTime:"08:00",readTime:8,category:["Méthode","Performance entrepôt","Optimisation"],tags:["préparation de commandes","picking entrepôt","layout entrepôt","organisation entrepôt","slotting","méthode ABC logistique","optimisation picking","picking par zone","picking par vague"],linkedinUrl:"",authorId:"chal-michel-ou",author:"Chal-Michel OU",excerpt:"Comment organiser la préparation de commandes en entrepôt : méthodes de picking (discret, zone, vague, batch), slotting ABC, layout des zones, technologies d'assistance. Guide terrain avec chiffres et conditions de succès pour PME et ETI.",embedType:"markdown"}],ppe=["IA","Management","Transport & Géopolitique","Optimisation","Terrain","Formation","Entrepôt","Marché","PME/ETI","Automatisation","Décarbonation","Intralogistique","Réglementation","Robotique","Bilan annuel","Acteurs & Réalisations","Guide de référence","Méthode","KPI logistique","Performance entrepôt","Diagnostic","Gestion des stocks","Consultant logistique","Fondamentaux","Supply Chain","Logistique","Logistique PME","Analyse","Outils","Référentiel","Immersion terrain","Métier logistique","Décryptage","Tribune","Secteur réglementé","Transformation","Logistique pharmaceutique","Qualité terrain","Coût logistique","Flux logistiques","Transformation digitale","WMS","Outil pratique"];function ese(e){return Ri.find(t=>t.slug===e)}function mpe(e){return Zie[e]}function fpe(e,t=3){const n=ese(e);return n?Ri.filter(r=>r.slug!==e).sort((r,i)=>{const s=r.category.filter(o=>n.category.includes(o)).length;return i.category.filter(o=>n.category.includes(o)).length-s}).slice(0,t):Ri.slice(0,t)}function hpe(e){const t=new Date(e);return Math.floor((new Date().getTime()-t.getTime())/(1e3*60*60*24))<14}const gpe={reception:"Réception",stockage:"Stockage",preparation:"Préparation",expedition:"Expédition",qualite:"Qualité",automatisation:"Auto/Robots",rh:"RH",finance:"Finance",si:"SI / Tech",reglementation:"Réglementaire"},vpe={reception:{border:"#3B82F6",bg:"#EFF6FF",text:"#3B82F6"},stockage:{border:"#8B5CF6",bg:"#F3F0FF",text:"#8B5CF6"},preparation:{border:"#b8734f",bg:"#FFF4EF",text:"#b8734f"},expedition:{border:"#10B981",bg:"#ECFDF5",text:"#10B981"},qualite:{border:"#F59E0B",bg:"#FFFBEB",text:"#D97706"}
4169,automatisation:{border:"#EF4444",bg:"#FEF2F2",text:"#EF4444"},rh:{border:"#EC4899",bg:"#FDF2F8",text:"#EC4899"},finance:{border:"#14B8A6",bg:"#F0FDFA",text:"#0D9488"},si:{border:"#6366F1",bg:"#EEF2FF",text:"#6366F1"},reglementation:{border:"#84CC16",bg:"#F7FEE7",text:"#65A30D"}},tse=[{term:"ABC (Analyse)",cat:"stockage",def:"Classification des références selon leur contribution au chiffre d'affaires ou à la rotation. A = 20% des refs pour 80% du volume. Permet de positionner les articles A au plus près des zones de préparation.",terrain:"La majorité des entrepôts que j'audite n'ont jamais fait leur ABC. C'est souvent la première action qui génère des gains immédiats."},{term:"AGV",cat:"automatisation",def:"Automated Guided Vehicle — robot de manutention qui suit des pistes magnétiques ou optiques au sol. Transporte palettes ou bacs entre zones sans conducteur. Différent de l'AMR qui navigue librement.",terrain:"Technologie mature mais rigide : tout changement de flux nécessite de modifier le guidage physique au sol."},{term:"AMR",cat:"automatisation",def:"Autonomous Mobile Robot — robot autonome qui cartographie son environnement et navigue librement sans infrastructure dédiée. Plus flexible que l'AGV, reprogrammable en cas de changement de flux.",terrain:"Solution de plus en plus adoptée par les PME car le ROI est visible dès 18-24 mois et l'installation ne nécessite pas de génie civil."},{term:"Allée de picking",cat:"preparation",def:"Couloir de circulation dédié à la préparation de commandes. Sa largeur, son orientation et l'organisation des emplacements impactent directement la productivité des préparateurs.",terrain:"Des allées trop larges gaspillent de la surface. Des allées trop étroites créent des congestions. L'optimum dépend du mode de préparation choisi."},{term:"Approvisionnement",cat:"reception",def:"Processus de commande et d'acheminement des marchandises depuis les fournisseurs jusqu'à l'entrepôt. Englobe la définition des quantités, la négociation des délais, le suivi des livraisons.",terrain:"Un approvisionnement mal cadencé est souvent à l'origine des ruptures de stock — pas un problème de stockage."},{term:"Avis d'expédition avancé (ASN)",cat:"reception",def:"Advanced Shipping Notice — message électronique envoyé par le fournisseur avant la livraison physique, détaillant le contenu, le conditionnement et le transporteur. Permet de préparer la réception.",terrain:"Les entrepôts qui reçoivent des ASN réduisent leur temps de réception de 40% en moyenne. Exiger l'ASN de ses fournisseurs est une quick win sous-exploitée."},{term:"Audit entrepôt",cat:"qualite",def:"Évaluation structurée des processus, ressources, équipements et performances d'un entrepôt. Identifie les dysfonctionnements, les risques et les opportunités d'amélioration.",terrain:"Un audit terrain de 3 jours révèle systématiquement des gisements d'économies que les indicateurs internes ne montrent pas."},{term:"Batch picking",cat:"preparation",def:"Mode de préparation où le préparateur traite simultanément plusieurs commandes en un seul passage dans les allées. Réduit les kilomètres parcourus mais nécessite une organisation rigoureuse.",terrain:"Efficace pour les commandes de faible volume. Au-delà de 10 lignes par commande, le tri devient complexe et l'erreur augmente."},{term:"BL (Bon de livraison)",cat:"expedition",def:"Document accompagnant une livraison qui liste les articles expédiés, leurs quantités et les informations d'identification. Signé par le destinataire à réception.",terrain:"Le BL est une pièce juridique. Une réserve non émise lors de la réception couvre le transporteur. Former les équipes à noter les réserves est essentiel."},{term:"BPCS / BPF",cat:"reglementation",def:"Bonnes Pratiques de Conduite de Systèmes / Bonnes Pratiques de Fabrication — référentiels qualité pharmaceutiques imposant des règles strictes sur la traçabilité, les conditions de stockage et la documentation.",terrain:"En entrepôt pharmaceutique, une non-conformité BPF peut entraîner le retrait immédiat d'autorisation. La rigueur documentaire n'est pas une option."},{term:"Break-bulk",cat:"stockage",def:"Éclatement d'une unité logistique complète (palette, conteneur) en unités plus petites pour préparer des commandes au détail. Zone dédiée généralement positionnée entre réception et stockage.",terrain:"Le break-bulk est souvent un goulot d'étranglement invisible. Observer ce poste pendant 2h révèle des gains cachés importants."},{term:"BRC (British Retail Consortium)",cat:"reglementation",def:"Norme internationale de sécurité alimentaire (BRC Global Standard) couvrant les exigences de stockage, de traçabilité et de gestion des risques dans les entrepôts de l'industrie alimentaire.",terrain:"De plus en plus demandée par les grands distributeurs français même pour les prestataires logistiques n
4169on alimentaires en première ligne."},{term:"Budget entrepôt",cat:"finance",def:"Ensemble des charges prévisionnelles d'une plateforme logistique : masse salariale, loyer, énergie, maintenance, amortissements, fournitures, sous-traitance. Outil de pilotage mensuel indispensable.",terrain:"La masse salariale représente en moyenne 60 à 70% du coût total d'un entrepôt PME. C'est là que se jouent les vraies économies."},{term:"Capacité de stockage",cat:"stockage",def:"Volume ou nombre d'emplacements disponibles dans un entrepôt. S'exprime en m², m³, nombre de palettes ou nombre de références. Différencier capacité théorique et capacité utilisable réellement.",terrain:"La capacité réelle est toujours inférieure à la capacité théorique. Un taux d'occupation supérieur à 85% génère des ralentissements significatifs."},{term:"Cariste",cat:"rh",def:"Opérateur logistique habilité à conduire des engins de manutention (chariots élévateurs, transpalettes électriques, gerbeurs). L'habilitation CACES est obligatoire pour chaque catégorie d'engin.",terrain:"La polyvalence cariste/préparateur est clé dans les petits entrepôts PME pour absorber les pics. Elle se forme, elle ne s'improvise pas."},{term:"CACES",cat:"rh",def:"Certificat d'Aptitude à la Conduite En Sécurité — certification obligatoire délivrée après formation et test pour conduire des engins de manutention. Catégories R485, R489, R490 selon les engins.",terrain:"Un CACES périmé = responsabilité de l'employeur en cas d'accident. Le suivi des habilitations doit être tracé dans un tableau de bord RH."},{term:"Cellule de stockage",cat:"stockage",def:"Compartiment d'un entrepôt délimité par des murs coupe-feu, correspondant à une zone de risque homogène. Le dimensionnement des cellules répond aux règles ICPE.",terrain:"La configuration en cellules a un impact direct sur la flexibilité d'exploitation. Trop de cloisonnement réduit la manœuvrabilité des flux."},{term:"Cobotique",cat:"automatisation",def:"Collaboration entre opérateurs humains et robots (cobots) sur un même espace de travail. Le cobot assiste l'humain sans le remplacer : portage de charges, guidage de mouvements, assistance à la saisie.",terrain:"L'argument principal pour la cobotique en PME n'est pas la productivité mais la prévention des TMS et la rétention des opérateurs expérimentés."},{term:"Coût de possession",cat:"finance",def:"Coût annuel total du maintien d'un stock : financement du capital immobilisé, assurance, obsolescence, surface de stockage, gestion administrative. Représente typiquement 15 à 25% de la valeur du stock.",terrain:"Ce coût invisible justifie à lui seul une démarche de réduction des stocks dormants. Montrez ce chiffre à votre DAF — la discussion change immédiatement."},{term:"Coût à la ligne",cat:"finance",def:"Indicateur clé : coût total de préparation divisé par le nombre de lignes de commande préparées. Permet de comparer les modes de préparation, les sites ou les périodes.",terrain:"C'est l'indicateur que j'utilise systématiquement pour mesurer l'impact d'une réorganisation. Simple, parlant, actionnable."},{term:"Contrat d'entreposage",cat:"reglementation",def:"Convention entre un donneur d'ordre et un prestataire logistique définissant les engagements de service, les tarifs, les responsabilités, les KPI et les pénalités. Document juridiquement structurant.",terrain:"Les contrats mal rédigés sans SLA clairs sont source de contentieux coûteux. Mieux vaut investir en amont dans une bonne rédaction."},{term:"Cross-docking",cat:"reception",def:"Mode de traitement où les marchandises reçues sont immédiatement réaffectées à des expéditions sortantes sans passer par le stockage. Réduit drastiquement les délais et les coûts de manutention.",terrain:"Efficace seulement si les flux entrants et sortants sont parfaitement synchronisés. Sans coordination, le cross-dock devient un chaos organisé."},{term:"Cycle de comptage",cat:"qualite",def:"Inventaire permanent réalisé par rotation : chaque emplacement est compté selon une fréquence définie (ex : articles A = mensuel, B = trimestriel, C = annuel). Remplace avantageusement l'inventaire annuel bloquant.",terrain:"Le cycle de comptage bien mis en œuvre améliore la fiabilité du stock à 99%+ sans jamais arrêter l'activité."},{term:"DLC / DDM",cat:"qualite",def:"Date Limite de Consommation / Date de Durabilité Minimale — informations de péremption à gérer en priorité dans les entrepôts alimentaires et pharmaceutiques. La gestion FEFO en dépend.",terrain:"Une erreur de gestion DLC peut conduire à un retrait de produits et une mise en cause pénale du responsable d'entrepôt."},{term:"DREAL",cat:"reglementation",def:"Direction Régionale de l'Environnement, de l'Aménagement et du Logement — autorité qui contrôle les Installations Classées pour la Protection de l'Environnement (ICPE), dont font partie la plupart des entrepôts.",terrain:"Une inspection DREAL surprise est une réalité. Les entrepôts doivent tenir un registre à jour et respecter en permanence leurs prescriptions d'autorisation."},{term:"Document unique (DU)",cat:"rh",def:"Document Unique d'Évaluation des Risques Professionnels — obligatoire dans toute entreprise, il recense tous les risques identifiés (TMS, chutes, risques chimiques) et les mesures de prévention associées.",terrain:"Dans 80% des PME auditées, le DU est soit inexistant, soit obsolète. C'est une responsabilité pénale pour le dirigeant."},{term:"Double validation",cat:"qualite",def:"Procédure de contrôle où deux opérateurs ou deux syst
4169èmes différents vérifient une même opération (préparation, comptage, étiquetage). Réduit le taux d'erreur mais augmente le temps de traitement.",terrain:"En contexte pharmaceutique, la double validation est souvent réglementaire. En logistique standard, elle doit être réservée aux références à fort enjeu."},{term:"EAN / GTIN",cat:"si",def:"European Article Number / Global Trade Item Number — code à barres international identifiant de façon unique un produit. Base de toute traçabilité et de tout système WMS.",terrain:"Des EAN en double ou mal attribués sont à l'origine de nombreuses erreurs de préparation. L'audit du référentiel produit est souvent la première étape."},{term:"Écart de stock",cat:"qualite",def:"Différence entre le stock théorique (WMS/ERP) et le stock physiquement compté. Peut résulter d'erreurs de réception, de picking, de casse, de vol ou d'erreurs de saisie.",terrain:"Un taux d'écart supérieur à 0,5% est un signal d'alarme. Au-delà de 1%, le pilotage par la donnée devient impossible."},{term:"EDI (Échange de Données Informatisé)",cat:"si",def:"Protocole d'échange structuré de données commerciales entre systèmes informatiques (commandes, factures, ASN, avis de livraison) sans intervention manuelle. Standard EDIFACT ou XML.",terrain:"L'EDI élimine la ressaisie et les erreurs de communication. Pour une PME, l'investissement se rembourse souvent en moins de 12 mois sur les volumes importants."},{term:"Emballage secondaire",cat:"expedition",def:"Conditionnement regroupant plusieurs unités de vente (cartons, fardeaux, suremballages). Dimension intermédiaire entre l'unité consommateur et la palette.",terrain:"Bien définir ses unités d'emballage en amont réduit les erreurs de préparation et facilite les contrôles qualité."},{term:"Emplacement",cat:"stockage",def:"Unité élémentaire de rangement dans un entrepôt, identifiée par une adresse (ex : A-01-03). Peut être une alvéole de rayonnage, une case au sol, une travée de rack.",terrain:"Un plan d'adressage cohérent est le fondement de tout WMS. Retravailler ce plan coûte peu et change tout à la fiabilité."},{term:"ERP (Enterprise Resource Planning)",cat:"si",def:"Progiciel de gestion intégré couvrant la comptabilité, les achats, les ventes, la production et parfois la logistique. Le WMS est souvent interfacé à l'ERP sans lui être intégré.",terrain:"L'ERP gère le stock comptable, le WMS gère le stock physique. La différence entre les deux est la source numéro 1 de litiges internes."},{term:"Étiquetage",cat:"expedition",def:"Apposition d'étiquettes sur les unités logistiques (colis, palettes) contenant les informations de routage, d'identification et de traçabilité. Peut être manuel, semi-automatique ou automatique.",terrain:"Une erreur d'étiquetage coûte en moyenne 5x plus cher à corriger chez le client qu'à l'entrepôt. C'est le contrôle qu'on ne doit jamais négliger."}
4169,{term:"FEFO",cat:"stockage",def:"First Expired First Out — règle de sortie qui impose d'expédier en priorité les articles dont la date d'expiration est la plus proche. Obligatoire en alimentaire et pharmaceutique.",terrain:"Le FEFO manuel sans WMS est quasi impossible à tenir sur plus de 50 références. C'est un des arguments les plus solides pour l'informatisation."},{term:"FIFO",cat:"stockage",def:"First In First Out — règle de rotation qui impose de sortir en premier les articles entrés en premier. Prévient l'obsolescence et garantit une rotation saine du stock.",terrain:"Le FIFO est la règle de base, mais 40% des entrepôts PME ne le respectent pas faute d'organisation physique adaptée."},{term:"Fiabilité de stock",cat:"qualite",def:"Taux de concordance entre le stock informatique et le stock physique réel. S'exprime en pourcentage. Une fiabilité de 99% signifie qu'1 emplacement sur 100 présente un écart.",terrain:"C'est l'indicateur que je mesure systématiquement dès le premier jour d'audit. Il révèle immédiatement la maturité des processus."},{term:"F.L.U.X.™",cat:"qualite",def:"Méthodologie propriétaire CHAL·CONSULTING IA : Fiabiliser → Lire → Unifier → eXécuter. Programme de stabilisation entrepôt en 8 semaines pour les PME/ETI. Ordres de grandeur observés, jamais garantis sans diagnostic préalable : jusqu'à 30% d'erreurs en moins et ~148 000€ d'économies annuelles selon le contexte.",terrain:"Développée sur 15 ans de missions terrain chez Nike, IKEA, Bio-Rad, Saint-Gobain. Pas de théorie — des résultats chiffrés."},{term:"Flux poussé",cat:"stockage",def:"Mode de gestion où la production ou l'approvisionnement est déclenché selon des prévisions. Les marchandises sont 'poussées' vers l'entrepôt indépendamment de la demande réelle.",terrain:"Le flux poussé génère des stocks pléthoriques. La crise COVID a montré ses limites. Les PME intelligentes hybridisent poussé et tiré."},{term:"Flux tiré",cat:"stockage",def:"Mode de gestion où la production ou l'approvisionnement est déclenché par la demande réelle. Les marchandises sont 'tirées' par les commandes clients effectivement reçues.",terrain:"Le flux tiré réduit les stocks mais exige une supply chain réactive et des fournisseurs fiables. L'IA prédictive en améliore aujourd'hui la performance."},{term:"Fourche (fourche télescopique)",cat:"automatisation",def:"Équipement de transstockeur ou de mini-load permettant d'extraire et d'insérer des bacs ou palettes dans des rayonnages à grande hauteur de façon automatique.",terrain:"La fiabilité mécanique des fourches est le point critique des systèmes automatisés hauts. Un bon contrat de maintenance préventive est non négociable."},{term:"Franchise logistique",cat:"finance",def:"Plafond en dessous duquel les petites pertes ou casses sont absorbées sans déclaration d'assurance. Doit être définie dans le contrat d'entreposage.",terrain:"Une franchise mal calibrée peut coûter plus cher en gestion administrative des sinistres que les pertes elles-mêmes."},{term:"Fréquence de rotation",cat:"stockage",def:"Nombre de fois qu'un article est réapprovisionné et épuisé sur une période donnée. Indicateur clé pour la classification ABC et l'implantation physique.",terrain:"Un article à rotation quotidienne ne doit pas être stocké à 8m de hauteur. L'implantation intelligente est la première source de productivité."},{term:"GS1",cat:"si",def:"Organisation internationale qui établit les standards mondiaux d'identification des produits et des échanges de données (codes-barres EAN, QR codes GS1, EDI). Référence pour l'interopérabilité.",terrain:"Utiliser les standards GS1 dès la conception de son référentiel évite des refontes coûteuses lors des intégrations avec de nouveaux clients ou fournisseurs."},{term:"Gestion des emplacements",cat:"stockage",def:"Organisation des zones de rangement selon des règles définies : emplacement fixe (un article = toujours le même emplacement) ou emplacement dynamique (le WMS affecte au mieux selon les disponibilités).",terrain:"L'emplacement dynamique maximise la densité de stockage mais nécessite un WMS fiable. Sans outil, restez en fixe : la fiabilité prime."},{term:"Gestion des retours (reverse logistics)",cat:"reception",def:"Ensemble des processus de traitement des marchandises retournées par les clients : réception, contrôle, tri, remise en stock, destruction ou retour fournisseur.",terrain:"Les retours représentent jusqu'à 30% du volume en e-commerce. Sous-estimer ce flux génère des engorgements récurrents."},{term:"Groupage",cat:"expedition",def:"Regroupement de marchandises de plusieurs expéditeurs dans un même véhicule pour optimiser les coûts de transport. Mutualisé par un transporteur groupeur.",terrain:"Pour les PME à faibles volumes, le groupage est souvent moins coûteux que le lot complet mais avec des délais moins maîtrisés."},{term:"Hauteur utile",cat:"stockage",def:"Hauteur exploitable dans un entrepôt, tenant compte des contraintes incendie (distance aux sprinklers), des engins de manutention et des charges admissibles au sol.",terrain:"Beaucoup de PME sous-utilisent la hauteur disponible. Un passage aux racks à grande hauteur avec transstockeur peut tripler la capacité sans agrandir."},{term:"Habilitation logistique",cat:"rh",def:"Autorisation formelle donnée à un opérateur pour réaliser une tâche spécifique (conduite d'engin, manipulation de produits dangereux, accès zone froide). Doit être documentée et renouvelée.",terrain:"L'habilitation sans formation n'a aucune valeur juridique. La formation doit être traçable et l'habilitation signée des deux parties."},{term:"Hauteur de levée",cat:"automatisation",def:"Hauteur maximale à laquelle un chariot élévateur peut soulever sa charge. Détermine la compatibilité avec la hauteur des rayonnages et les contraintes réglementaires de sécurité.",terrain:"Bien vérifier la hauteur de levée utile (avec fourches chargées) vs la hauteur nominale souvent affichée à vide."},{term:"ICPE",cat:"reglementation",def:"Installation Classée pour la Protection de l'Environnement — régime réglementaire français s'appliquant aux entrepôts selon leur surface, les produits stockés et les quantités. Déclaration, enregistrement ou autorisation selon les seuils.",terrain:"Beaucoup de PME ignorent leur classement ICPE ou n'ont pas mis à jour leur dossier après une extension. Une mise en conformité vaut mieux qu'une mise en demeure."},{term:"IFS Logistics",cat:"reglementation",def:"International Featured Standard Logistics — référentiel d'audit qualité pour les prestataires logistiques traitant des denrées alimentaires. Exigé par de nombreux distributeurs européens.",terrain:"La certification IFS Logistics est un différenciateur commercial fort sur le marché de la logistique al
4169imentaire en France."},{term:"Implantation entrepôt",cat:"stockage",def:"Organisation physique des zones (réception, stockage, préparation, expédition) et des flux internes selon des critères de productivité, de sécurité et de contraintes réglementaires.",terrain:"L'implantation est la décision la plus structurante d'un entrepôt. Une mauvaise implantation se paie chaque jour pendant des années."},{term:"Indicateur logistique (KPI)",cat:"qualite",def:"Mesure quantifiable permettant d'évaluer la performance d'un processus logistique. Taux de service, productivité, fiabilité de stock, OTIF, coût à la ligne sont les principaux.",terrain:"Un tableau de bord de 5 indicateurs bien choisis vaut mieux que 30 indicateurs que personne ne lit. Commencez simple."},{term:"Inventaire tournant",cat:"qualite",def:"Voir Cycle de comptage. Méthode d'inventaire continu par zones ou références, permettant de maintenir la fiabilité du stock sans arrêt d'activité.",terrain:"L'inventaire annuel bloquant coûte en moyenne 2 à 3 jours de productivité. Le passage au tournant se rembourse en un an."},{term:"Juste-à-temps (JAT)",cat:"stockage",def:"Philosophie de gestion visant à recevoir les marchandises au moment précis où elles sont nécessaires, sans constitution de stock intermédiaire. Issu du Toyota Production System.",terrain:"Le JAT fonctionne quand les fournisseurs sont fiables. Depuis les crises d'approvisionnement 2020-2023, de nombreuses PME ont reconsidéré leur position."},{term:"Kanban logistique",cat:"preparation",def:"Système de réapprovisionnement visuel par cartes ou signaux électroniques déclenchant le réapprovisionnement d'un emplacement quand il atteint un seuil défini. Simple et efficace en picking.",terrain:"Le kanban physique avec deux bacs (bac courant + bac de secours) est une solution low-tech très efficace pour les articles A en picking."},{term:"KPI entrepôt",cat:"qualite",def:"Ensemble des indicateurs clés de performance : taux de service, productivité (lignes/heure), fiabilité de stock, OTIF, taux de retour, coût au m², taux d'occupation, délai de réception.",terrain:"Je recommande de commencer par 5 KPI maximum : taux de service, fiabilité de stock, productivité préparation, OTIF, coût à la ligne. Tout le reste vient après."},{term:"LIFO",cat:"stockage",def:"Last In First Out — règle de rotation inverse au FIFO : les derniers articles entrés sont les premiers sortis. Déconseillée pour les produits périssables. Parfois utilisée en comptabilité des stocks.",terrain:"Le LIFO physique est rarement justifié en logistique. Ne pas confondre avec son usage comptable (amortissement des stocks)."},{term:"Ligne de commande",cat:"preparation",def:"Unité élémentaire d'une commande correspondant à une référence article avec une quantité demandée. Indicateur de base pour mesurer la productivité de préparation.",terrain:"Le nombre de lignes par commande est un facteur déterminant du mode de préparation à adopter. Analysez vos commandes avant de choisir votre organisation."},{term:"Logistique inverse",cat:"reception",def:"Voir Gestion des retours. Ensemble des flux physiques et informationnels allant du client vers l'entrepôt ou le fabricant : retours produits, recyclage, destruction.",terrain:"La logistique inverse est souvent la partie la plus mal organisée d'un entrepôt. Elle révèle rapidement le niveau de maturité des processus qualité."},{term:"Lot de fabrication",cat:"qualite",def:"Quantité de produits fabriqués dans les mêmes conditions et traçables sous un numéro unique. La gestion par lot est obligatoire en pharmaceutique et recommandée en alimentaire.",terrain:"La gestion par lot dans un WMS complique les algorithmes d'allocation mais est indispensable en cas de rappel produit."},{term:"LTL (Less Than Truckload)",cat:"expedition",def:"Expédition dont le volume est inférieur à un camion complet. Le transporteur mutualise avec d'autres chargeurs. Équivalent français : messagerie ou groupage.",terrain:"Le LTL est pertinent pour les PME à faibles volumes mais ses délais et sa sinistralité sont supérieurs au FTL. À intégrer dans les SLA clients."},{term:"Manutention",cat:"preparation",def:"Ensemble des opérations de déplacement, levage, transport et positionnement de charges au sein de l'entrepôt. Première source de TMS et d'accidents du travail.",terrain:"Analyser les flux de manutention (distance parcourue × poids) révèle toujours des gisements d'optimisation significatifs."},{term:"Mécanisation",cat:"automatisation",def:"Introduction d'équipements mécaniques (convoyeurs, trieuses, cercleuses, banderoleuses) pour assister ou remplacer des opérations manuelles répétitives.",terrain:"La mécanisation est l'étape intermédiaire entre le tout-manuel et l'automatisation complète. Elle est souvent le meilleur ROI pour les PME."},{term:"Mini-load",cat:"automatisation",def:"Système automatisé de stockage et de récupération de petits colis (bacs, cartons) par transstockeur. Idéal pour les références nombreuses en faibles quantités.",terrain:"Le mini-load réduit la surface au sol de 60% mais son investissement est significatif. À réserver aux volumes justifiant le ROI à 5-7 ans."},{term:"Mise en stock",cat:"reception",def:"Opération consistant à ranger les marchandises reçues et contrôlées dans leurs emplacements de stockage. Première 
4169étape après la réception. La qualité de cette étape conditionne toute la fiabilité future.",terrain:"Une mise en stock bâclée génère des semaines de problèmes. C'est une opération noble qui mérite des opérateurs formés et responsabilisés."},{term:"Mode de préparation",cat:"preparation",def:"Organisation choisie pour préparer les commandes : par commande, par vague, en batch, en zone, en multi-références. Le choix dépend du profil de commandes et des volumes.",terrain:"Il n'y a pas un mode universel. L'analyse du profil de commandes est indispensable avant de choisir. Ce choix structure tout le reste."},{term:"Muda",cat:"qualite",def:"Terme japonais (Lean) désignant tout gaspillage dans un processus : surproduction, attente, transport inutile, surtraitement, stock excessif, mouvements inutiles, défauts.",terrain:"Observer 2h de picking dans un entrepôt révèle systématiquement 5 à 8 types de muda différents. L'observation terrain est le meilleur outil d'audit."},{term:"Niveau de service",cat:"qualite",def:"Voir Taux de service. Pourcentage de commandes livrées complètes, dans les délais et sans erreur. Principal engagement contractuel d'un prestataire logistique.",terrain:"Un taux de service à 95% signifie 1 commande sur 20 en anomalie. Pour un client, c'est inacceptable. Viser 98,5%+ sur les comptes clés."},{term:"Norme EN 15620",cat:"reglementation",def:"Norme européenne définissant les tolérances et les exigences de performance des systèmes de rayonnages à palettes. Référence pour la conception et la vérification des installations de stockage.",terrain:"Les rayonnages doivent être vérifiés annuellement par un organisme habilité. La norme EN 15635 définit les obligations d'inspection et de maintenance."},{term:"OMS (Order Management System)",cat:"si",def:"Système de gestion des commandes orchestrant leur cycle complet : réception, validation, allocation, transmission au WMS, suivi, facturation. Interface entre le commercial et le logistique.",terrain:"L'OMS est le chef d'orchestre invisible. Son absence oblige à des saisies manuelles coûteuses et source d'erreurs."},{term:"Optimisation des tournées",cat:"expedition",def:"Calcul de l'itinéraire optimal pour les livraisons en tenant compte des contraintes horaires, des volumes, des fenêtres de livraison et des coûts de transport.",terrain:"Un logiciel d'optimisation des tournées rembourse son investissement en moins de 6 mois pour une flotte de 5 véhicules ou plus."},{term:"OTIF",cat:"qualite",def:"On Time In Full — taux de livraisons effectuées dans les délais (On Time) et complètes (In Full). Indicateur clé demandé par les grands donneurs d'ordre. Norme OTIF grande distribution : 98,5%+.",terrain:"L'OTIF agrège deux sources d'erreur : le transport et la préparation. L'analyser séparément permet d'identifier où agir en priorité."},{term:"Palette",cat:"stockage",def:"Support de manutention standardisé (EUR/EPAL 1200×800 mm, ISO 1200×1000 mm) permettant le groupage de marchandises et leur manutention mécanisée. Unité logistique de base.",terrain:"La gestion du parc palettes (échanges, casse, pertes) est un coût sous-estimé. Un suivi rigoureux évite des écarts de plusieurs milliers d'euros annuels."},{term:"Picking",cat:"preparation",def:"Opération de prélèvement des articles dans les emplacements de stockage pour constituer une commande. Activité la plus consommatrice de main-d'œuvre dans un entrepôt (40 à 60% des coûts).",terrain:"C'est sur le picking que se joue la rentabilité d'un entrepôt. -10% de kilomètres parcourus = gains significatifs immédiats sans investissement."},{term:"Pick-to-light",cat:"automatisation",def:"Système de guidage lumineux pour la préparation de commandes. Des voyants lumineux s'allument à l'emplacement à prélever, indiquant la quantité. Réduit les erreurs et le temps de formation.",terrain:"La productivité gagnée avec le pick-to-light dépend fortement de la densité des prélèvements. Très efficace en picking de détail."},{term:"Plan de masse",cat:"stockage",def:"Représentation graphique de l'organisation physique d'un entrepôt : zones, allées, emplacements, quais, locaux sociaux, issues de secours. Document réglementaire et outil de pilotage.",terrain:"Un plan de masse à jour est la première chose que je demande lors d'un audit. Son absence révèle souvent une organisation non maîtrisée."},{term:"Point de commande",cat:"stockage",def:"Niveau de stock déclenchant automatiquement un réapprov
4169isionnement. Calculé en tenant compte du délai fournisseur et de la consommation moyenne. Permet d'éviter les ruptures.",terrain:"Un point de commande mal calibré génère soit des ruptures (trop bas) soit des surcoûts de stockage (trop haut). À réviser trimestriellement."},{term:"Polyvalence",cat:"rh",def:"Capacité d'un opérateur à occuper plusieurs postes de travail différents. Indicateur de flexibilité RH. Une matrice de polyvalence permet de visualiser les compétences disponibles.",terrain:"La polyvalence est la meilleure assurance contre l'absentéisme. Une équipe 100% polyvalente absorbe 20% d'absentéisme sans décrochage de productivité."},{term:"Préparation de commandes",cat:"preparation",def:"Ensemble des opérations de prélèvement, tri, contrôle, conditionnement et étiquetage permettant de constituer les envois clients à partir du stock. Cœur de l'activité d'un entrepôt de distribution.",terrain:"C'est le processus que j'optimise en priorité dans chaque mission. Il concentre 60% des coûts et 80% des erreurs."},{term:"Prestataire logistique (3PL)",cat:"reglementation",def:"Third Party Logistics — entreprise prenant en charge tout ou partie des opérations logistiques d'un donneur d'ordre : stockage, préparation, transport. Contrat de prestations de services.",terrain:"Externaliser sa logistique à un 3PL donne de la flexibilité mais exige un pilotage fort. Un SLA sans indicateurs n'est pas un outil de pilotage."},{term:"Productivité logistique",cat:"qualite",def:"Mesure de l'efficience d'une opération : lignes préparées par heure, palettes réceptionnées par heure, colis expédiés par heure. Indicateur de suivi quotidien de l'équipe.",terrain:"Mesurer la productivité sans analyser la qualité est dangereux. Un préparateur rapide et inexact coûte plus cher qu'un préparateur régulier et fiable."},{term:"PPSPS",cat:"reglementation",def:"Plan Particulier de Sécurité et de Protection de la Santé — document obligatoire lors de travaux de construction ou d'aménagement importants dans un entrepôt. Établi par l'entreprise de travaux.",terrain:"Souvent ignoré lors de petits aménagements internes. Sa non-existence en cas d'accident engage la responsabilité du chef d'établissement."},{term:"Quai de chargement",cat:"expedition",def:"Zone dédiée aux opérations de chargement et déchargement des véhicules. Le dimensionnement (nombre de quais, hauteur, niveleurs) conditionne directement la cadence des entrées/sorties.",terrain:"Le nombre de quais est souvent sous-dimensionné par rapport aux pics d'activité. La simulation de flux aide à objectiver le besoin avant de construire."},{term:"Qualité totale (TQM)",cat:"qualite",def:"Approche managériale visant à impliquer l'ensemble du personnel dans l'amélioration continue de la qualité à tous les niveaux de l'organisation, pas seulement dans les services dédiés.",terrain:"En entrepôt, la qualité totale commence par responsabiliser l'opérateur sur ses propres erreurs. La culture avant les outils."},{term:"Quarantaine",cat:"qualite",def:"Zone physique ou statut informatique isolant des marchandises en attente d'un contrôle ou d'une décision (produits non conformes, retours, litiges fournisseurs). Obligatoire en pharmaceutique.",terrain:"Une zone de quarantaine non matérialisée est une zone de quarantaine inexistante. La signalétique physique est aussi importante que le statut WMS."},{term:"Rack à palettes",cat:"stockage",def:"Structure métallique permettant le stockage de palettes en hauteur sur plusieurs niveaux. Types principaux : allée large (accès direct), allée étroite (VNA), drive-in (densification), gravitaire.",terrain:"Le choix du type de rack dépend du ratio rotation/densité. Il ne faut pas choisir son rack selon son fournisseur préféré mais selon son profil de stock."},{term:"Rack dynamique",cat:"automatisation",def:"Rayonnage à rouleaux inclinés permettant la rotation automatique des palettes ou cartons par gravité. Le FIFO est garanti mécaniquement. Idéal pour les produits avec date de péremption.",terrain:"Le rack dynamique est l'investissement le plus intelligent pour les entrepôts pharmaceutiques ou alimentaires avec obligation FEFO."},{term:"Réception",cat:"reception",def:"Processus d'accueil, de déchargement, de contrôle et de validation des marchandises livrées par les fournisseurs. Première 
4169étape de la chaîne logistique interne.",terrain:"Une réception bâclée (pas de contrôle, pas de réserve) transfère le risque sur l'entrepôt. C'est le verrou qualité numéro 1."},{term:"Référentiel article",cat:"si",def:"Base de données regroupant toutes les caractéristiques d'une référence produit : dimensions, poids, conditionnement, unités de gestion, fournisseurs, contraintes de stockage.",terrain:"Un référentiel article incomplet ou mal tenu est la première cause de dysfonctionnements WMS. C'est le socle de tout."},{term:"Réserve (émission de réserves)",cat:"reception",def:"Mention écrite apposée sur le bon de livraison au moment de la réception signalant une anomalie constatée (colis manquant, emballage endommagé). Condition pour exercer un recours contre le transporteur.",terrain:"Sans réserve émise dans les délais, l'entrepôt supporte le litige. Former les équipes à émettre des réserves précises est un investissement immédiat."},{term:"RFID",cat:"automatisation",def:"Radio Frequency Identification — technologie d'identification sans contact par ondes radio. Permet de lire plusieurs tags simultanément sans ligne de vue directe. Utilisée pour la traçabilité et les inventaires automatiques.",terrain:"Le RFID est convaincant en démonstration mais son déploiement terrain exige une infrastructure rigoureuse. Tester avant de déployer à grande échelle."},{term:"Risque de rupture",cat:"stockage",def:"Probabilité de ne plus avoir de stock disponible pour satisfaire une demande. Se gère par le calcul du stock de sécurité et l'optimisation du point de commande.",terrain:"La rupture coûte en moyenne 3x le prix de vente perdu. Argumenter le stock de sécurité en termes financiers convainc immédiatement les DAF."},{term:"Robot de palettisation",cat:"automatisation",def:"Bras robotisé ou portique automatisant l'opération de construction de palettes à partir de colis. Remplace une tâche physiquement exigeante et répétitive.",terrain:"La palettisation robotisée se rembourse en 2-3 ans sur un volume de 200+ palettes/jour. En-dessous, les ROI sont difficiles à atteindre."},{term:"Safety stock (stock de sécurité)",cat:"stockage",def:"Quantité de stock supplémentaire maintenue pour absorber les aléas de la demande et de l'approvisionnement. Se calcule à partir de la variabilité de la consommation et du délai fournisseur.",terrain:"Un stock de sécurité calculé sur des données réelles vaut 10x mieux qu'un stock de sécurité fixé à l'intuition."},{term:"Schéma directeur logistique",cat:"stockage",def:"Document stratégique définissant l'organisation logistique cible à 3-5 ans : localisation des sites, capacités, modes de transport, systèmes d'information. Guide les investissements.",terrain:"La PME qui ne fait pas de schéma directeur subit sa logistique au lieu de la piloter. Même un document simple sur 2 pages vaut mieux que rien."},{term:"Séquençage",cat:"preparation",def:"Ordre dans lequel les commandes sont préparées et expédiées pour optimiser les tournées de livraison ou respecter des contraintes clients.",terrain:"Le séquençage manuel est source d'erreurs. Un simple tableau de bord Excel peut suffire à automatiser cette décision pour les PME."},{term:"SLA (Service Level Agreement)",cat:"reglementation",def:"Contrat de niveau de service définissant les engagements mesurables d'un prestataire logistique : délais, taux de service, modes de calcul, pénalités. Base de la relation client-prestataire.",terrain:"Un SLA sans pénalité est un vœu pieux. Un SLA avec des pénalités trop élevées pousse le prestataire à cacher ses erreurs. Trouver l'équilibre."},{term:"Slotting",cat:"stockage",def:"Optimisation de l'implantation des références dans les emplacements de picking pour minimiser les déplacements. Prend en compte la rotation, le poids, les incompatibilités produits.",terrain:"Un slotting bien fait réduit de 15 à 25% la distance parcourue par les préparateurs. C'est de la productivité gratuite."},{term:"Sprinkler",cat:"reglementation",def:"Système d'extinction automatique d'incendie par aspersion d'eau. Obligatoire dans les entrepôts ICPE au-delà de certains seuils. Impacte la hauteur de stockage et les types de rayonnages.",terrain:"Les contraintes sprinkler sont souvent méconnues lors de l'aménagement. Un entrepôt non conforme peut être fermé administrativement."},{term:"Stock dormant",cat:"finance",def:"Marchandise sans mouvement depuis une période définie (généralement 12 mois). Représente une immobilisation financière non productive et occupe de l'espace de stockage utile.",terrain:"Chaque entrepôt a des stocks dormants. Les identifier et les valoriser devant le DAF génère souvent une décision rapide de déstockage."},{term:"Stock mort",cat:"finance",def:"Marchandise sans mouvement prévisible, obsolète ou invendable. Doit être provisionnée comptablement et éliminée physiquement. Impact direct sur le résultat d'exploitation.",terrain:"Le stock mort révèle des dysfonctionnements commerciaux, d'approvisionnement ou qualité. C'est un symptôme, pas une cause."},{term:"Suremballage",cat:"expedition",def:"Protection additionnelle ajoutée à une unité de vente pour l'expédition (film, carton, palette filmée). Augmente le coût et le poids mais rédu
4169it la sinistralité transport.",terrain:"L'optimisation du suremballage est un levier souvent négligé : réduire le grammage du film d'emballage de 20% peut représenter des dizaines de milliers d'euros annuels."},{term:"Takt time",cat:"qualite",def:"Temps disponible divisé par la demande client. Rythme de production ou de préparation nécessaire pour satisfaire la demande. Concept Lean fondamental pour dimensionner les ressources.",terrain:"Calculer le takt time de préparation permet de dimensionner correctement les équipes par créneau horaire. Simple et puissant."},{term:"Taux d'occupation",cat:"stockage",def:"Rapport entre le nombre d'emplacements occupés et le nombre d'emplacements disponibles. Indicateur de saturation. Au-delà de 85-90%, les performances se dégradent.",terrain:"Un taux d'occupation élevé n'est pas une bonne nouvelle. Il masque souvent du stock dormant et génère des erreurs de localisation."},{term:"Taux de service",cat:"qualite",def:"Pourcentage de commandes livrées sans anomalie (complètes, à temps, sans erreur). Indicateur de performance principal de tout entrepôt. Se décline en taux de service ligne et taux de service commande.",terrain:"Le taux de service commande est toujours inférieur au taux de service ligne. Savoir lequel piloter selon le contexte client est une décision stratégique."},{term:"TMS (Transport Management System)",cat:"si",def:"Logiciel de gestion des opérations de transport : planification, optimisation des tournées, suivi des livraisons, gestion des transporteurs, facturation. Interface avec le WMS pour les expéditions.",terrain:"Pour une PME, un TMS basique suffit souvent. Ne pas confondre les besoins réels avec les démos de solutions enterprise."},{term:"TMS (Troubles Musculo-Squelettiques)",cat:"rh",def:"Affections des muscles, tendons et nerfs liées à des gestes répétitifs, des postures contraignantes ou des efforts excessifs. Première cause de maladie professionnelle en logistique.",terrain:"Les TMS représentent en moyenne 30 à 40% des arrêts de travail en entrepôt. Chaque euro investi en prévention en économise 3 en indemnisation."},{term:"Traçabilité",cat:"qualite",def:"Capacité à retrouver l'historique, l'utilisation ou la localisation d'un produit à travers toutes les étapes de la chaîne logistique. Obligatoire par lot en alimentaire et pharmaceutique.",terrain:"La traçabilité sans système informatique est une illusion à grande échelle. C'est l'argument numéro 1 pour informatiser un entrepôt pharmaceutique."},{term:"Transstockeur",cat:"automatisation",def:"Machine automatisée se déplaçant dans les allées des rayonnages pour stocker et récupérer des palettes ou bacs à grande vitesse et grande hauteur. Pilier des entrepôts automatisés.",terrain:"La disponibilité du transstockeur est critique. Une panne arrête tout le flux. Le contrat de maintenance préventive doit être négocié avec exigence."},{term:"Tri par zones",cat:"preparation",def:"Organisation de la préparation où l'entrepôt est divisé en zones affectées à des opérateurs différents. Les articles sont prélevés zone par zone puis consolidés.",terrain:"Le tri par zones est efficace dans les grands entrepôts avec des préparateurs spécialisés. En PME, il crée souvent des goulots et des attentes."},{term:"Turn-over (RH)",cat:"rh",def:"Taux de renouvellement du personnel sur une période : (embauches + départs) / effectif moyen. Indicateur de stabilité sociale. Un turn-over élevé en entrepôt (>30%) est un coût caché majeur.",terrain:"Chaque départ d'un opérateur formé coûte en moyenne 3 mois de salaire en recrutement et perte de productivité. La fidélisation est un levier financier."},{term:"Unité de manutention",cat:"stockage",def:"Unité dans laquelle les marchandises sont déplacées et stockées : palette, bac, carton, colis. Chaque unité de manutention est identifiée par une étiquette unique (SSCC, NUC).",terrain:"La cohérence des unités de manutention tout au long de la chaîne est clé. Les incohérences génèrent des ruptures d'unité coûteuses."},{term:"UGS / SKU",cat:"si",def:"Unité de Gestion de Stock / Stock Keeping Unit — identifiant unique d'une référence dans un entrepôt. Un même produit peut avoir plusieurs SKU 
4169selon son conditionnement.",terrain:"La prolifération des SKU est un problème silencieux. Chaque SKU supplémentaire a un coût de gestion. Auditer son catalogue régulièrement."},{term:"Validation de commande",cat:"preparation",def:"Étape finale de contrôle avant l'expédition vérifiant que la commande préparée est conforme à la commande client. Peut être manuelle (double check) ou automatique (scanner, vision).",terrain:"La validation avant expédition est le dernier filet de sécurité qualité. Sauter cette étape pour gagner du temps est le meilleur moyen de perdre un client."},{term:"Value stream mapping (VSM)",cat:"qualite",def:"Cartographie de la chaîne de valeur — outil Lean permettant de visualiser tous les flux (physiques et informationnels) pour identifier les gaspillages et les temps sans valeur ajoutée.",terrain:"La VSM d'un flux entrepôt révèle en 2h que 70 à 80% du temps total est de l'attente. Chiffrer le gaspillage en euros convainc les dirigeants."},{term:"Vague de préparation",cat:"preparation",def:"Regroupement d'un ensemble de commandes traitées simultanément selon des critères définis (transporteur, délai, zone). Optimise le flux de préparation et l'utilisation des ressources.",terrain:"La bonne taille de vague dépend de la taille des commandes et de la capacité de l'équipe. Trop grande = désorganisation. Trop petite = inefficacité."},{term:"Vision artificielle",cat:"automatisation",def:"Technologie basée sur des caméras et algorithmes d'IA permettant de contrôler la conformité des commandes, lire les codes-barres, vérifier les étiquettes ou détecter les défauts sans intervention humaine.",terrain:"La vision artificielle est l'automatisation la plus accessible pour les PME en 2026. Les coûts ont chuté de 80% en 5 ans."},{term:"VNA (Very Narrow Aisle)",cat:"stockage",def:"Entrepôt à allées très étroites (1,5 à 1,8 m) utilisant des chariots tri-directionnels ou des transstockeurs. Maximise la densité de stockage au sol au prix d'une infrastructure spécialisée.",terrain:"Le VNA augmente la capacité de 30 à 50% sur le même foncier mais impose des engins dédiés et une rigueur de maintenance élevée."},{term:"WMS (Warehouse Management System)",cat:"si",def:"Logiciel de gestion d'entrepôt gérant en temps réel les emplacements, les stocks, les mouvements, les réceptions et les expéditions. Cerveau opérationnel de l'entrepôt.",terrain:"Un WMS sans processus fiables aggrave les problèmes existants. Fiabiliser les processus avant d'implémenter le WMS est une règle absolue."},{term:"Wave picking",cat:"preparation",def:"Voir Vague de préparation. Mode de préparation par lots regroupant des commandes avec des caractéristiques communes (même transporteur, même délai).",terrain:"Le wave picking bien calibré améliore la productivité de 15 à 20% sans investissement. Souvent sous-exploité dans les entrepôts PME."},{term:"Zone de charge",cat:"automatisation",def:"Espace dédié à la recharge des batteries des engins électriques (chariots, transpalettes, AMR). Doit être ventilé et équipé selon les normes électriques.",terrain:"Une zone de charge mal dimensionnée génère des pannes engins aux mauvais moments. Calculer le parc selon les horaires de travail réels."},{term:"Zone de préparation",cat:"preparation",def:"Aire de travail dédiée à la constitution des commandes. Peut être confondue avec la zone de stockage (picking direct) ou séparée (forward picking).",terrain:"La séparation physique stockage/préparation est souvent nécessaire au-delà d'un certain volume. Elle structure les flux et réduit les croisements."},{term:"Zone de quarantaine",cat:"qualite",def:"Voir Quarantaine. Espace physiquement délimité et signalisé pour isoler les marchandises non conformes, en attente de décision ou de contrôle.",terrain:"La zone de quarantaine doit être inaccessible sans autorisation. Une signalétique claire et un accès tracé sont les deux exigences minimales."},{term:"Zone froide / Zone tempérée",cat:"stockage",def:"Zones de stockage avec contrôle de température : froid positif (0-8°C), froid négatif (<-18°C), tempéré (15-25°C). Obligatoires pour certaines catégories de produits alimentaires ou pharmaceutiques.",terrain:"La gestion de la chaîne du froid exige une surveillance continue de la température, une traçabilité des relevés et des procédures de déviation documentées."},{term:"Zonage entrepôt",cat:"stockage",def:"Division fonctionnelle de l'entrepôt en zones distinctes selon les activités : réception, stockage sec/froid, picking, emballage, expédition, retours, zone dangereuse.",terrain:"Un zonage bien pensé évite les croisements de flux et structure naturellement les responsabilités des équipes. C'est la première décision à prendre."}],nse=Ri.map(e=>({id:`article-${e.id}`,title:e.title,slug:e.slug,type:"article",category:e.category[0]||"Article",tags:[...e.tags,...e.category],excerpt:e.excerpt||e.chapo,content:[e.title,e.subtitle,e.chapo,e.excerpt,e.content,...e.tags,...e.category].filter(
4169Boolean).join(" "),readingTime:e.readTime,publishedAt:e.publishDate,url:e.customRoute||`/analyses-outils/${e.slug}`})),rse=[{id:"service-diagnostic",title:"Diagnostic Terrain",slug:"diagnostic",type:"service",category:"Diagnostic & Audit",tags:["diagnostic","audit","entrepôt","flux","terrain","F.L.U.X™","immersion"],excerpt:"Immersion opérationnelle. Analyse des flux, équipes et tensions réelles. Du terrain, des faits, des leviers actionnables.",content:"Diagnostic Terrain opérationnel F.L.U.X™ immersion entrepôt audit analyse flux équipes tensions leviers actionnables 2 à 4 semaines PME ETI",url:"/services/diagnostic"},{id:"service-accompagnement",title:"Accompagnement Opérationnel",slug:"accompagnement",type:"service",category:"Accompagnement",tags:["accompagnement","opérationnel","pilotage","formation","équipes","F.L.U.X™"],excerpt:"Passer des recommandations aux résultats mesurables. Pilotage hebdomadaire, ajustements terrain, formation équipes.",content:"Accompagnement opérationnel F.L.U.X™ pilotage hebdomadaire ajustements terrain formation équipes ancrage durable 2 à 6 mois résultats mesurables",url:"/services/accompagnement"},{id:"service-transition",title:"Management de Transition",slug:"transition",type:"service",category:"Management",tags:["management","transition","restructuration","crise","relève","intérim"],excerpt:"Stabiliser l'organisation et préparer la relève. Restructuration, départ manager, pic d'activité ou crise opérationnelle.",content:"Management de transition relais stabiliser organisation préparer relève restructuration départ manager pic activité crise opérationnelle 3 à 12 mois",url:"/services/transition"},{id:"service-direction-fractionnee",title:"Direction Logistique Fractionnée",slug:"direction-fractionnee",type:"service",category:"Direction",tags:["direction","fractionnée","stratégie","coaching","supervision","senior"],excerpt:"Expertise senior sans le coût d'un temps plein. Pilotage stratégique, supervision, coaching et arbitrage.",content:"Direction logistique fractionnée expertise senior pilotage stratégique supervision coaching arbitrage 2 à 4 jours par mois PME",url:"/services/direction-fractionnee"},{id:"service-ia-operationnelle",title:"IA Opérationnelle",slug:"ia-operationnelle",type:"service",category:"Intelligence Artificielle",tags:["IA","intelligence artificielle","automatisation","dashboards","décisionnel","opérationnel"],excerpt:"Automatisation pragmatique, dashboards et outils décisionnels adaptés aux PME logistiques.",content:"IA opérationnelle intelligence artificielle automatisation pragmatique dashboards outils décisionnels entrepôt logistique PME terrain",url:"/ia-operationnelle"}],ise=[{id:"formation-flux",title:"Programmes Formation F.L.U.X™",slug:"formation",type:"formation",category:"Formation",tags:["formation","F.L.U.X™","logistique","terrain","opérateurs","managers","pratique"],excerpt:"Formations logistique terrain structurées selon F.L.U.X™. 80% pratique. Pour PME/ETI, écoles, managers.",content:"Formation logistique terrain F.L.U.X™ programmes opérateurs managers décideurs 80% pratique PME ETI supply chain",url:"/formation"},{id:"formation-logistique-responsable",title:"Formation Logistique Responsable",slug:"logistique-responsable",type:"formation",category:"RSE & Durabilité",tags:["logistique responsable","RSE","durabilité","éthique","formation"],excerpt:"Intégrer les enjeux RSE et durabilité dans les opérations logistiques de votre entrepôt.",content:"Formation logistique responsable RSE durabilité éthique opérations entrepôt bas carbone environnement",url:"/formation/logistique-responsable"},{id:"formation-ia-managers",title:"Formation IA pour Managers Logistiques",slug:"ia-managers",type:"formation",category:"Intelligence Artificielle",tags:["IA","managers","formation","intelligence artificielle","décision","logistique"],excerpt:"Comprendre et déployer l'IA dans vos opérations logistiques. Formation pratique pour managers.",content:"Formation IA intelligence artificielle managers logistiques comprendre déployer opérations décision terrain pratique",url:"/formation/ia-managers"},{id:"formation-bas-carbone",title:"Formation Optimisation Bas Carbone",slug:"bas-carbone",type:"formation",category:"RSE & Durabilité",tags:["bas carbone","optimisation","énergie","formation","empreinte carbone"],excerpt:"Réduire l'empreinte carbone de votre chaîne logistique. Méthodes terrain et leviers concrets.",content:"Formation optimisation bas carbone empreinte carbone chaîne logistique méthodes terrain leviers concrets énergie entrepôt",url:"/formation/bas-carbone"}],sse=[{id:"page-methode",title:"Méthode F.L.U.X™",slug:"methode",type:"page",category:"Méthode",tags:["méthode","F.L.U.X™","fiabiliser","lire","unifier","exécuter","flux"],excerpt:"La méthode F.L.U.X™ : Fiabiliser, Lire, Unifier, eXécuter. Stabilisation des flux en 8 semaines.",content:"Méthode F.L.U.X™ Fiabiliser Lire Unifier eXécuter stabilisation flux 8 semaines entrepôt logistique PME ETI",url:"/methode"},{id:"page-resultats",title:"Résultats Terrain",slug:"resultats",type:"page",category:"Résultats",tags:["résultats","terrain","KPI","performance","ROI","missions"],excerpt:"Les résultats concrets obtenus sur le terrain avec la méthode F.L.U.X™.",content:"Résultats terrain KPI performance ROI missions entrepôt logistique amélioration productivité",url:"/resultats"},{id:"page-services",title:"Services Conseil Logistique",slug:"services",type:"page",category:"Services",tags:["services","conseil","logistique","diagnostic","accompagnement","transition"],excerpt:"4 formats d'intervention F.L.U.X™ : diagnostic terrain, accompagnement, management de transition, direction fractionnée.",content:"Services conseil logistique diagnostic terrain accompagnement opérationnel management transition direction fractionnée F.L.U.X™",url:"/services"},{id:"page-about",title:"Qui sommes-nous ?",slug:"qui-sommes-nous",type:"page",category:"À propos",tags:["à propos","Chal-Michel OU","consultant","parcours","logistique","expérience"],excerpt:"Chal-Michel OU — 15 ans de terrain logistique. Cenexi, Saint-Gobain, Bio-Rad, Nike, IKEA.",content:"Chal-Michel OU consultant logistique opérationnelle 15 ans terrain Cenexi Saint-Gobain Bio-Rad Nike IKEA TBS parcours expérience",url:"/qui-sommes-nous"},{id:"page-tarifs",title:"Tarifs",slug:"tarifs",type:"page",category:"Tarifs",tags:["tarifs","prix","devis","budget","coût","facturation"],excerpt:"Grille tarifaire transparente. Diagnostic, accompagnement, transition, direction fractionnée.",content:"Tarifs prix devis budget coût facturation diagnostic accompagnement transition direction fractionnée formation",url:"/tarifs"},{id:"page-contact",title:"Contact",slug:"contact",type:"page",category:"Contact",tags:["contact","rendez-vous","devis","appel","consultation"],excerpt:"Un défi logistique ? Parlons-en. Réservez un appel ou envoyez votre demande.",content:"Contact rendez-vous devis appel consultation logistique entrepôt PME",url:"/contact"},{id:"page-engagements",title:"Engagements",slug:"engagements",type:"page",category:"À propos",tags:["engagements","éthique","valeurs","responsabilité","transparence"],excerpt:"Nos engagements : éthique, transparence, résultats mesurables, impact terrain.",content:"Engagements éthique valeurs responsabilité transparence résultats mesurables impact terrain",url:"/engagements"}],ase=[{id:"outil-diagnostic-ia",title:"Diagnostic IA Logistique",slug:"diagnostic-ia",type:"outil",category:"Diagnostic",tags:["diagnostic","IA","maturité","score","questionnaire","évaluation"],excerpt:"Évaluez votre maturité IA en 10 questions. Score et recommandations immédiats.",content:"Diagnostic IA logistique évaluer maturité intelligence artificielle 10 questions score recommandations entrepôt",url:"/diagnostic-ia"},{id:"outil-glossaire",title:"Glossaire Entrepôt & Logistique",slug:"glossaire",type:"ressource",category:"Glossaire",tags:["glossaire","définitions","entrepôt","logistique","termes","vocabulaire"],excerpt:"Tous les termes de la logistique entrepôt expliqués. Définitions terrain par un praticien.",content:tse.map(e=>`${e.term} ${e.def} ${e.terrain}`).join(" "),url:"/ressources/glossaire"},{id:"outil-analyses",title:"Analyses & Outils Terrain",slug:"analyses-outils",type:"ressource",category:"Bibliothèque",tags:["analyses","outils","articles","ressources","bibliothèque","terrain"],excerpt:"Bibliothèque complète : articles, analyses, outils terrain, retours d'expérience logistique.",content:"Analyses outils terrain bibliothèque articles ressources retours expérience logistique entrepôt PME",url:"/analyses-outils"}],ose=[...nse,...rse,...ise,...sse,...ase];function ir(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function lse(e,t){let n=0;const r=ir(e.title),i=ir(e.excerpt),s=e.tags.map(ir),a=ir(e.category),o=ir(e.content);for(const l of t)r.includes(l)&&(n+=10),r.startsWith(l)&&(n+=5),i.includes(l)&&(n+=5),a.includes(l)&&(n+=4),s.some(u=>u.includes(l))&&(n+=3),o.includes(l)&&(n+=1);return n}function use(e,t){const[n,r]=E.useState(e),[i,s]=E.useState(!1),a=E.useRef();E.useEffect(()=>(s(!0),a.current=setTimeout(()=>{r(e),s(!1)},200),()=>clearTimeout(a.current)),[e]);const o=E.useMemo(()=>{const l=n.trim();if(!l)return[];
4169const u=ir(l).split(/\s+/).filter(Boolean);if(u.length===0)return[];let c=ose;if(t!=null&&t.type&&(c=c.filter(f=>f.type===t.type)),t!=null&&t.category){const f=ir(t.category);c=c.filter(m=>ir(m.category).includes(f))}if(t!=null&&t.tags&&t.tags.length>0){const f=t.tags.map(ir);c=c.filter(m=>f.some(g=>m.tags.some(h=>ir(h).includes(g))))}return c.map(f=>({...f,score:lse(f,u)})).filter(f=>f.score>0).sort((f,m)=>m.score-f.score)},[n,t==null?void 0:t.type,t==null?void 0:t.category,t==null?void 0:t.tags]);return{results:o,isSearching:i&&e.trim().length>0,total:o.length}}const cse=[{type:"article",label:"Articles",icon:D1},{type:"service",label:"Services",icon:R1},{type:"formation",label:"Formations",icon:F1},{type:"ressource",label:"Ressources",icon:Ef}];function dse({isOpen:e,onClose:t}){const[n,r]=E.useState(""),[i,s]=E.useState(null),a=E.useRef(null),{results:o,isSearching:l,total:u}=use(n,i?{type:i}:void 0),c=E.useMemo(()=>[...Ri].sort((m,g)=>new Date(g.publishDate).getTime()-new Date(m.publishDate).getTime()).slice(0,5),[]),p=["WMS","picking","IA logistique","audit","formation"];E.useEffect(()=>{e||setTimeout(()=>{r(""),s(null)},200)},[e]),E.useEffect(()=>{if(!e)return;const m=g=>{g.key==="Escape"&&(g.preventDefault(),t())};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[e,t]),E.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]);const f=E.useCallback(m=>{m.target===a.current&&t()},[t]);return e?d.jsx("div",{ref:a,onClick:f,className:bt("fixed inset-0 z-[100] flex items-start justify-center pt-[15vh]","bg-foreground
4169/50 backdrop-blur-sm","search-modal-enter"),role:"dialog","aria-modal":"true","aria-label":"Recherche sur le site",children:d.jsxs("div",{className:bt("w-full max-w-xl mx-4 bg-background rounded-xl shadow-2xl border border-border","search-panel-enter","overflow-hidden"),children:[d.jsxs("div",{className:"px-4 pt-4 pb-0",children:[d.jsx(kre,{value:n,onChange:r,autoFocus:!0}),d.jsxs("div",{className:"flex items-center justify-between mt-2 px-1 pb-2 border-b border-border",children:[d.jsx("span",{className:"text-[10px] text-muted-foreground/60 font-mono",children:"Recherche instantanée"}),d.jsx("span",{className:"text-[10px] text-muted-foreground/60 font-mono",children:"ESC pour fermer"})]}),d.jsxs("div",{className:"flex items-center gap-1.5 mt-2.5 px-1 pb-2",children:[d.jsx(o_,{size:12,strokeWidth:1.5,className:"text-muted-foreground/50 shrink-0"}),cse.map(({type:m,label:g,icon:h})=>{const v=i===m;return d.jsxs("button",{onClick:()=>s(v?null:m),className:bt("inline-flex items-center gap-1 px-2.5 py-1 rounded-full text-[11px] font-medium transition-all duration-150 border",v?"bg-accent text-accent-foreground border-accent":"bg-transparent text-muted-foreground border-border hover:border-accent/40 hover:text-foreground"),children:[d.jsx(h,{size:11,strokeWidth:1.5}),g]},m)})]})]}),d.jsx(Tre,{results:o,query:n,isSearching:l,onSelect:t}),n.trim().length===0&&d.jsxs("div",{className:"px-4 py-4 max-h-[55vh] overflow-y-auto",children:[d.jsxs("div",{className:"mb-5",children:[d.jsxs("div",{className:"flex items-center gap-1.5 mb-3",children:[d.jsx(z1,{size:13,strokeWidth:1.5,className:"text-accent"}),d.jsx("span",{className:"text-[11px] uppercase tracking-wider text-muted-foreground font-medium",children:"Recherches populaires"})]}),d.jsx("div",{className:"flex flex-wrap gap-2",children:p.map(m=>d.jsx("button",{onClick:()=>r(m),className:"px-3 py-1.5 text-xs font-medium rounded-full border border-border text-muted-foreground hover:text-accent hover:border-accent/40 transition-colors",children:m},m))})]}),d.jsxs("div",{children:[d.jsxs("div",{className:"flex items-center gap-1.5 mb-3",children:[d.jsx(r_,{size:13,strokeWidth:1.5,className:"text-accent"}),d.jsx("span",{className:"text-[11px] uppercase tracking-wider text-muted-foreground font-medium",children:"Articles récents"})]}),d.jsx("ul",{className:"space-y-1",children:c.map(m=>d.jsx("li",{children:d.jsxs(Ke,{to:m.customRoute||`/analyses-outils/${m.slug}`,onClick:t,className:"flex items-center gap-3 px-3 py-2.5 rounded-lg hover:bg-muted/60 transition-colors group",children:[d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("h4",{className:"text-sm text-foreground leading-tight truncate",children:m.title}),d.jsxs("span",{className:"text-[10px] text-muted-foreground/60 mt-0.5 inline-block",children:[m.readTime," min · ",m.category[0]]})]}),d.jsx(jn,{size:14,strokeWidth:1.5,className:"text-muted-foreground/30 group-hover:text-accent transition-colors shrink-0"})]})},m.id))})]})]})]})}):null}function pse(){return d.jsx("div",{className:"hidden md:block w-full",style:{background:"#FAF8F5",borderBottom:"1px solid #EAE6DD",fontSize:"12px",color:"#0d3b6e"},children:d.jsx("div",{className:"section-container",children:d.jsxs("div",{className:"flex items-center justify-between",style:{height:32},children:[d.jsxs("div",{className:"flex items-center gap-3",children:[d.jsx("span",{style:{fontWeight:600,letterSpacing:"0.04em"},children:"CHAL·CONSULTING IA"}),d.jsx("span",{style:{color:"#D6CFBF"},children:"|"}),d.jsx("span",{style:{color:"#4B5563"},children:"Conseil · Formation · IA logistique"})]}),d.jsxs("div",{className:"flex items-center gap-5",children:[d.jsxs("a",{href:"tel:+33000000000",className:"hidden lg:inline-flex items-center gap-1.5 hover:text-[#b8734f] transition-colors",style:{fontWeight:500},children:[d.jsx(g_,{className:"w-3.5 h-3.5",strokeWidth:1.5}),"Nous appeler"]}),d.jsxs("a",{href:"mailto:[email protected]",className:"inline-flex items-center gap-1.5 hover:text-[#b8734f] transition-colors",style:{fontWeight:500},children:[d.jsx(Cf,{className:"w-3.5 h-3.5",strokeWidth:1.5}),"[email protected]"]})]})]})})})}function mse(){const[e,t]=E.useState(!1),[n,r]=E.useState(!0),[i,s]=E.useState(0),[a,o]=E.useState(!1),[l,u]=E.useState(!1),c=Bo();return E.useEffect(()=>{const p=f=>{(f.metaKey||f.ctrlKey)&&f.key==="k"&&(f.preventDefault(),u(m=>!m))};return document.addEventListener("keydown",p),()=>document.removeEventListener("keydown",p)},[]),E.useEffect(()=>{const p=()=>{const f=window.scrollY;t(f>20),f>100?r(f<i||f<80):r(!0),s(f)};return window.addEventListener("scroll",p,{passive:!0}),()=>window.removeEventListener("scroll",p)},[i]),E.useEffect(()=>{o(!1)},[c.pathname]),d.jsxs(d.Fragment,{children:[d.jsxs("header",{className:`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${e?"bg-white shadow-[0_1px_0_0_rgba(0,0,0,0.06)]":"bg-white/95 backdrop-blur-sm"} ${n||a?"translate-y-0":"-translate-y-full"}`,children:[d.jsx(pse,{}),d.jsx("div",{className:"section-container",style:{paddingTop:16,paddingBottom:16},children:d.jsxs("nav",{role:"navigation","aria-label":"Navigation principale",className:"flex items-center justify-between rounded",children:[d.jsx(Ke,{to:"/",className:"flex items-center group min-w-0 overflow-hidden","aria-label":"CHAL·CONSULTING IA — Accueil",children:d.jsx(z2,{size:"md"})}),d.jsx("div",{className:"hidden lg:flex items-center gap-3 xl:gap-4 2xl:gap-5",children:B2.map(p=>d.jsx(Ere,{group:p,isScrolled:!0},p.name))}),d.jsxs("div",{className:"hidden lg:flex items-center gap-2 ml-3 2xl:ml-6",children:[d.jsx("button",{onClick:()=>u(!0),className:"p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted transition-colors","aria-label":"Rechercher (Cmd+K)",title:"Rechercher (Cmd+K)",children:d.jsx(fp,{size:17,strokeWidth:1.5})}),d.jsx(xr,{asChild:!0,size:"sm",className:"bg-[#b8734f] hover:bg-[#a05f3e] text-white",children:d.jsx(Ke,{to:"/contact",children:"Un défi logistique ? Parlons-en"})})]}),d.jsxs("div",{className:"lg:hidden flex items-center gap-1",children:[d.jsx("button",{onClick:()=>u(!0),className:"p-2 text-foreground","aria-label":"Rechercher",children:d.jsx(fp,{size:20,strokeWidth:1.5})}),d.jsx("button",{onClick:()=>o(!a),className:"p-2 text-foreground","aria-label":"Ouvrir le menu de navigation","aria-expanded":a,children:a?d.jsx(Ho,{className:"w-6 h-6"}):d.jsx(d_,{className:"w-6 h-6"})})]})]})})]}),d.jsx(_re,{isOpen:a,onClose:()=>o(!1)}),d.jsx(dse,{isOpen:l,onClose:()=>u(!1)})]})}function fse(){return d.jsx("footer",{role:"contentinfo",children:d.jsx("div",{className:"bg-[#0F1923] border-t border-white/10",children:d.jsxs("div",{className:"section-container py-12",children:[d.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center gap-8",children:[d.jsxs("div",{className:"text-center md:text-left",children:[d.jsx("div",{className:"mb-3",children:d.jsx(z2,{variant:"dark",size:"md"})}
4169),d.jsx("p",{className:"text-primary-foreground/60 text-xs",children:"Conseil, formation & IA en logistique opérationnelle"}),d.jsx("p",{className:"text-primary-foreground/60 text-xs mt-1",children:"[email protected]"})]}),d.jsxs("nav",{role:"navigation","aria-label":"Navigation pied de page",className:"flex flex-wrap justify-center md:justify-end gap-x-6 gap-y-2 text-sm",children:[d.jsx(Ke,{to:"/methode",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"Conseil"}),d.jsx(Ke,{to:"/ia-operationnelle",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"IA opérationnelle"}),d.jsx(Ke,{to:"/formation",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"Formation"}),d.jsx(Ke,{to:"/analyses-outils",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"Analyses"}),d.jsx(Ke,{to:"/simulateur-flux",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"Simulateur F.L.U.X™"}),d.jsx(Ke,{to:"/tarifs",className:"text-primary-foreground/60 hover:text-white transition-colors duration-200 animated-underline",children:"Tarifs"})]}),d.jsxs("div",{className:"flex items-center gap-6",children:[d.jsxs("a",{href:"mailto:[email protected]",className:"flex items-center gap-2 text-primary-foreground/70 hover:text-white transition-colors text-sm",children:[d.jsx(Cf,{className:"w-4 h-4"}),"[email protected]"]}),d.jsxs("a",{href:"https://www.linkedin.com/in/chalmichelou/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 text-primary-foreground/70 hover:text-white transition-colors text-sm",children:[d.jsx(u_,{className:"w-4 h-4"}),"LinkedIn"]})]})]}),d.jsx("div",{className:"mt-8 pt-6 border-t border-white/10",children:d.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center gap-4",children:[d.jsxs("div",{className:"text-center md:text-left",children:[d.jsxs("p",{className:"text-primary-foreground/50 text-xs",children:["© ",new Date().getFullYear()," CHAL·CONSULTING IA. Tous droits réservés."]}),d.jsx("p",{className:"text-primary-foreground/50 text-xs mt-1",children:"CHAL CONSULTING IA — SAS au capital de 1 300 € — RCS Créteil 108 320 060 — 102 avenue Gambetta, 94700 Maisons-Alfort"})]}),d.jsx(Ke,{to:"/mentions-legales",className:"text-primary-foreground/50 hover:text-primary-foreground/70 transition-colors text-xs",children:"Mentions légales"}),d.jsx("span",{className:"text-primary-foreground/30",children:"·"}),d.jsx(Ke,{to:"/mentions-legales#rgpd",className:"text-primary-foreground/50 hover:text-primary-foreground/70 transition-colors text-xs",children:"Politique de confidentialité"}),d.jsx("span",{className:"text-primary-foreground/30",children:"·"}),d.jsx(xr,{type:"button",variant:"link",size:"sm",onClick:()=>window.dispatchEvent(new Event(Ep)),className:"h-auto p-0 text-primary-foreground/50 hover:text-primary-foreground/70 text-xs",children:"Cookies"}),d.jsx("span",{className:"text-primary-foreground/30",children:"·"}),d.jsx(Ke,{to:"/carte",className:"text-primary-foreground/50 hover:text-primary-foreground/70 transition-colors text-xs",children:"Carte de visite"})]})})]})})})}const hse=1,gse="b943551d-eafa-41c3-937b-c9f7d732559c",vse="fd0f461d-ba20-49bf-aa3f-916d3becc021",yse="/__l5e/assets-v1/b943551d-eafa-41c3-937b-c9f7d732559c/chal-michel-portrait-2026.jpg",bse="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/b943551d-eafa-41c3-937b-c9f7d732559c/chal-michel-portrait-2026.jpg",xse="chal-michel-portrait-2026.jpg",wse=84436,qse="image/jpeg",Sse="2026-07-07T21:02:50Z",W2={version:hse,asset_id:gse,project_id:vse,url:yse,r2_key:bse,original_filename:xse,size:wse,content_type:qse,created_at:Sse},Fx="#0D3B6E",Ase="#12263F",Ese="#B8734F",_se="#E0DAD0",H2="#7A8494",kse=[38,52,44,71,49,96,58,40,66,47,55,35],np={position:"absolute",background:"#FFFFFF",border:`1px solid ${_se}`,borderRadius:14,padding:"16px 18px",boxShadow:"0 26px 60px rgba(6,38,74,0.22)",transform:"rotateY(-19deg) rotateX(6deg) rotateZ(-2deg)",transformOrigin:"left center"},rp={display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:11.5,color:H2,letterSpacing:"0.02em"},Ll=e=>({fontSize:11,padding:"3px 9px",borderRadius:999,background:e?"#E9F1EC":"#FBEFE8",color:e?"#3F6B54":"#9C5B39",whiteSpace:"nowrap"}),ip={display:"flex",justifyContent:"space-between",alignItems:"center",gap:10,padding:"8px 0",borderBottom:"1px solid #F0ECE6",fontSize:13,color:Ase};
4169function Cse(){return d.jsxs("div",{"aria-hidden":!0,className:"relative h-[430px] [perspective:1200px]",children:[d.jsxs("div",{className:"w-[320px] xl:w-[372px]",style:{...np,top:6,right:-8},children:[d.jsxs("div",{style:rp,children:[d.jsx("span",{children:"charge réception · 14 jours"}),d.jsx("span",{style:Ll(),children:"pic détecté"})]}),d.jsx("div",{style:{display:"flex",alignItems:"flex-end",gap:6,height:76,marginTop:12},children:kse.map((e,t)=>d.jsx("span",{style:{flex:1,height:`${e}%`,borderRadius:"3px 3px 0 0",background:e>90?Ese:e>62?Fx:"#DDE5EF"}},t))})]}),d.jsxs("div",{className:"w-[320px] xl:w-[372px]",style:{...np,top:158,right:0},children:[d.jsxs("div",{style:{...rp,marginBottom:4},children:[d.jsx("span",{children:"irritants remontés du terrain"}),d.jsx("span",{children:"07:12"})]}),d.jsxs("div",{style:ip,children:[d.jsx("span",{children:"Livraison non annoncée"}),d.jsx("span",{style:Ll(),children:"quai saturé"})]}),d.jsxs("div",{style:ip,children:[d.jsx("span",{children:"Écart de quantité, ligne 4218"}),d.jsx("span",{style:Ll(),children:"à arbitrer"})]}),d.jsxs("div",{style:{...ip,borderBottom:"none"},children:[d.jsx("span",{children:"Palettes 80×60 au sol"}),d.jsx("span",{style:Ll(!0),children:"résolu"})]})]}),d.jsxs("div",{className:"w-[320px] xl:w-[372px]",style:{...np,top:300,right:-36,padding:"14px 18px"},children:[d.jsxs("div",{style:rp,children:[d.jsx("span",{children:"temps réellement utile"}),d.jsx("span",{children:"réception"})]}),d.jsxs("div",{style:{display:"flex",alignItems:"baseline",gap:12,marginTop:8},children:[d.jsx("span",{style:{fontSize:30,fontWeight:500,letterSpacing:"-0.02em",color:Fx},children:"1,4 %"}),d.jsx("span",{style:{fontSize:13,color:H2},children:"2,7 h de travail sur 8,1 jours de délai"})]})]})]})}const V2="/assets/vue-entrepot-stockage-sol-CylxMSCC.webp",Ux="999px 999px 0 0",zx=48,G2={position:"absolute",inset:0,pointerEvents:"none",backgroundImage:"linear-gradient(to right, rgba(184,115,79,0.07) 1px, transparent 1px), linear-gradient(to bottom, rgba(184,115,79,0.07) 1px, transparent 1px)",backgroundSize:`${zx}px ${zx}px`},jse={position:"absolute",inset:0,background:"#0D3B6E",opacity:.16,mixBlendMode:"multiply",pointerEvents:"none"},Pse={width:"100%",height:"100%",objectFit:"cover",filter:"saturate(0.75) contrast(1.05)",display:"block"},Tse={width:"100%",height:"100%",objectFit:"cover",filter:"brightness(1.18) contrast(1.02)",display:"block"},Ise={...G2,opacity:.04},K2="Allée d'entrepôt en perspective, palettes stockées au sol le long des rayonnages logistiques";function Ose(){return d.jsxs("div",{"aria-hidden":!0,className:"hidden lg:block pointer-events-none",style:{position:"absolute",top:72,bottom:0,right:-80,width:"46%",borderRadius:Ux,overflow:"hidden",zIndex:0,maskImage:"linear-gradient(to right, transparent 0%, rgba(0,0,0,0.45) 22%, #000 55%)",WebkitMaskImage:"linear-gradient(to right, transparent 0%, rgba(0,0,0,0.45) 22%, #000 55%)"},children:[d.jsx("img",{src:V2,alt:K2,style:{...Pse,objectPosition:"58% 52%"},loading:"eager",decoding:"async"}),d.jsx("span",{style:jse}),d.jsx("span",{style:G2}),d.jsx("span",{style:{position:"absolute",inset:0,borderRadius:Ux,border:"1.5px solid rgba(184,115,79,0.7)",maskImage:"linear-gradient(to bottom, #000 0%, rgba(0,0,0,0.5) 34%, transparent 52%)",WebkitMaskImage:"linear-gradient(to bottom, #000 0%, rgba(0,0,0,0.5) 34%, transparent 52%)",pointerEvents:"none"}})]})}function Lse(){const e="50% 50% 0 0 / 28% 28% 0 0";return d.jsxs("div",{"aria-hidden":!0,className:"lg:hidden",style:{position:"relative",height:150,borderRadius:e,overflow:"hidden"},children:[d.jsx("img",{src:V2,alt:K2,style:{...Tse,objectPosition:"center 42%"},loading:"lazy",decoding:"async"}),d.jsx("span",{style:Ise}),d.jsx("span",{style:{position:"absolute",inset:0,borderRadius:e,border:"1.5px solid rgba(184,115,79,0.7)",maskImage:"linear-gradient(to bottom, #000 0%, transparent 58%)",WebkitMaskImage:"linear-gradient(to bottom, #000 0%, transparent 58%)"}})]})}const Mse=W2.url,Nse=[{k:"Tous les entrepôts",v:"du petit site à la grande plateforme"},{k:"15 ans de terrain",v:"responsable puis directeur d'entrepôt, au contact des équipes"},{k:"France et international",v:"pays francophones, anglophones et Maghreb"},{k:"F.L.U.X™",v:"méthode propriétaire en 4 temps"}
4169];function Rse(){return d.jsxs("section",{className:"hero-section relative overflow-hidden",style:{background:"linear-gradient(180deg, #FBFAF8 0%, #EFEBE4 100%)"},children:[d.jsx(Ose,{}),d.jsxs("div",{className:"relative max-w-[1180px] mx-auto px-6 md:px-10",style:{paddingTop:"clamp(14px, 6vw, 76px)",paddingBottom:"clamp(28px, 5vw, 72px)"},children:[d.jsxs("div",{className:"grid grid-cols-1 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,1fr)] gap-10 xl:gap-16 items-center",children:[d.jsxs("div",{className:"hero-plane",children:[d.jsx("span",{className:"hero-anim hero-anim--1 font-display inline-block",style:{color:"#b8734f",fontSize:12,letterSpacing:"0.24em",fontWeight:800,textTransform:"uppercase"},children:"Conseil · formation · IA logistique"}),d.jsxs("h1",{className:"font-display mt-2 sm:mt-3",style:{color:"#06264A",fontSize:"clamp(34px, 5.2vw, 62px)",lineHeight:1.05,letterSpacing:"-0.035em",fontWeight:800,textWrap:"balance"},children:[d.jsx("span",{className:"block",children:d.jsx("span",{style:{color:"#06264A"},children:"De vos flux réels"})}),d.jsxs("span",{className:"block mt-1",children:[d.jsx("span",{style:{color:"#06264A"},children:"à des "}),d.jsx("span",{style:{color:"#B8734F"},children:"agents IA en service."})]})]}),d.jsx("span",{className:"hero-rule max-sm:mt-2","aria-hidden":!0}),d.jsx("p",{className:"hero-anim hero-anim--4 font-sans mt-3 sm:mt-4",style:{color:"#46536A",fontSize:"clamp(15px, 1.35vw, 17px)",lineHeight:1.55,maxWidth:560,fontWeight:500},children:"15 ans d'exploitation logistique, du quai au CODIR. Je fiabilise vos données et vos règles métier, je pilote la construction des agents IA avec des partenaires techniques, et je reste jusqu'à l'adoption par vos équipes."}),d.jsxs("div",{className:"hero-anim hero-anim--5 mt-5 sm:mt-8 flex items-center gap-3",children:[d.jsx("img",{src:Mse,alt:"Chal-Michel OU",className:"rounded-full object-cover flex-shrink-0",style:{width:46,height:46,border:"2px solid #b8734f"},loading:"eager"}),d.jsxs("div",{className:"flex flex-col",children:[d.jsx("span",{className:"font-display",style:{color:"#06264A",fontSize:14,fontWeight:700,lineHeight:1.3},children:"Chal-Michel OU"}),d.jsx("span",{className:"font-sans",style:{color:"#46536A",fontSize:12.5,lineHeight:1.3},children:"Consultant logistique opérationnelle & IA terrain"})]})]})]}),d.jsx("div",{className:"hero-anim hero-anim--4 relative hidden xl:block min-w-0",children:d.jsx("div",{className:"relative z-10 w-full",children:d.jsx(Cse,{})})})]}),d.jsx("ul",{className:"hero-proof hero-anim hero-anim--6",style:{marginTop:"clamp(24px, 3.2vw, 38px)"},children:Nse.map((e,t)=>d.jsxs("li",{className:"hero-proof__card",style:{"--pi":t},children:[d.jsx("span",{className:"hero-proof__k font-display",children:e.k}),d.jsx("span",{className:"hero-proof__v font-sans",children:e.v})]},e.k))})]}),d.jsx(Lse,{})]})}const $se=1,Dse="a8c3d050-e21f-46a8-a0af-72b9489743c5",Fse="fd0f461d-ba20-49bf-aa3f-916d3becc021",Use="/__l5e/assets-v1/a8c3d050-e21f-46a8-a0af-72b9489743c5/banniere-linkedin-chal.avif",zse="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/a8c3d050-e21f-46a8-a0af-72b9489743c5/banniere-linkedin-chal.avif",Bse="banniere-linkedin-chal.avif",Wse=23336,Hse="image/avif",Vse="2026-06-05T23:09:19Z",Gse={version:$se,asset_id:Dse,project_id:Fse,url:Use,r2_key:zse,original_filename:Bse,size:Wse,content_type:Hse,created_at:Vse},Kse=1,Xse="579e7f70-7d21-4397-9262-0121db65b7dd",Qse="fd0f461d-ba20-49bf-aa3f-916d3becc021",Jse="/__l5e/assets-v1/579e7f70-7d21-4397-9262-0121db65b7dd/banniere-linkedin-chal.webp",Yse="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/579e7f70-7d21-4397-9262-0121db65b7dd/banniere-linkedin-chal.webp",Zse="banniere-linkedin-chal.webp",eae=39586,tae="image/webp",nae="2026-06-05T23:09:17Z",rae={version:Kse,asset_id:Xse,project_id:Qse,url:Jse,r2_key:Yse,original_filename:Zse,size:eae,content_type:tae,created_at:nae},iae=1,sae="3d3cf7ac-083a-4e19-84ec-324bfea9083c",aae="fd0f461d-ba20-49bf-aa3f-916d3becc021",oae="/__l5e/assets-v1/3d3cf7ac-083a-4e19-84ec-324bfea9083c/banniere-linkedin-chal.png",lae="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/3d3cf7ac-083a-4e19-84ec-324bfea9083c
4169/banniere-linkedin-chal.png",uae="banniere-linkedin-chal.png",cae=755071,dae="image/png",pae="2026-06-05T22:40:58Z",mae={version:iae,asset_id:sae,project_id:aae,url:oae,r2_key:lae,original_filename:uae,size:cae,content_type:dae,created_at:pae};function fae(){return d.jsx("section",{"aria-label":"CHAL·CONSULTING IA — Je stabilise vos F.L.U.X™ logistiques",style:{background:"#faf6f0",aspectRatio:"3 / 1",maxHeight:320},className:"w-full overflow-hidden",children:d.jsxs("picture",{children:[d.jsx("source",{srcSet:Gse.url,type:"image/avif"}),d.jsx("source",{srcSet:rae.url,type:"image/webp"}),d.jsx("img",{src:mae.url,alt:"CHAL·CONSULTING IA — Je stabilise vos F.L.U.X™ logistiques. Ensuite le FLUX™ IA. Conseil · Formations · Accompagnement",width:1920,height:640,className:"block w-full h-full object-cover object-center",loading:"eager",decoding:"async",fetchPriority:"high"})]})})}const hae={arche:{radius:"999px 999px 24px 24px",ratio:"3 / 4"},galet:{radius:"150px 28px 150px 28px",ratio:"4 / 3"},hublot:{radius:"50%",ratio:"1 / 1"}};function Yc({src:e,alt:t,caption:n,shape:r="galet",tilt:i=-1,width:s,height:a,objectPosition:o="center",aspectRatio:l,preserveSubjectOnMobile:u=!1,wideArchOnMobile:c=!1,sizes:p="(max-width: 768px) 90vw, 40vw",className:f=""}){const{radius:m,ratio:g}=hae[r];return d.jsxs("figure",{className:`m-0 ${f}`,children:[d.jsxs("div",{className:"relative",style:{paddingRight:14,paddingBottom:14},children:[d.jsx("div",{"aria-hidden":!0,className:"absolute pointer-events-none",style:{top:14,left:14,right:0,bottom:0,borderRadius:m,border:"1.5px solid #B8734F",background:"none",transform:`rotate(${i*1.2}deg)`}}),d.jsx("div",{className:`group relative overflow-hidden ${c?"aspect-[4/3] lg:aspect-[3/4]":""}`,style:{borderRadius:m,aspectRatio:c?void 0:l??g,transform:`rotate(${i*1.2}deg)`},children:d.jsx("img",{src:e,alt:t,width:s,height:a,loading:"lazy",decoding:"async",sizes:p,className:`w-full h-full transition-transform duration-500 ease-out group-hover:scale-[1.04] motion-reduce:transition-none motion-reduce:group-hover:scale-100 ${u?"object-contain md:object-cover":"object-cover"}`,style:{objectPosition:o}})})]}),n&&d.jsx("figcaption",{className:"mt-3 font-sans text-left",style:{fontSize:12,lineHeight:1.5,color:"#7A8494"},children:n})]})}const gae=1,vae="17e8b4a4-90e7-4ca9-aeca-893f8c2541ce",yae="fd0f461d-ba20-49bf-aa3f-916d3becc021",bae="/__l5e/assets-v1/17e8b4a4-90e7-4ca9-aeca-893f8c2541ce/entrepot-palettes-preparees-expedition.webp",xae="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/17e8b4a4-90e7-4ca9-aeca-893f8c2541ce/entrepot-palettes-preparees-expedition.webp",wae="entrepot-palettes-preparees-expedition.webp",qae=50780,Sae="image/webp",Aae="2026-09-04T20:44:37Z",Eae={version:gae,asset_id:vae,project_id:yae,url:bae,r2_key:xae,original_filename:wae,size:qae,content_type:Sae,created_at:Aae},_ae=1,kae="114afc77-54ad-438f-99de-a4179c3d10b9",Cae="fd0f461d-ba20-49bf-aa3f-916d3becc021",jae="/__l5e/assets-v1/114afc77-54ad-438f-99de-a4179c3d10b9/stockage-racking-temperature-controlee.webp",Pae="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/114afc77-54ad-438f-99de-a4179c3d10b9/stockage-racking-temperature-controlee.webp",Tae="stockage-racking-temperature-controlee.webp",Iae=73940,Oae="image/webp",Lae="2026-09-04T20:44:41Z",Mae={version:_ae,asset_id:kae,project_id:Cae,url:jae,r2_key:Pae,original_filename:Tae,size:Iae,content_type:Oae,created_at:Lae},Nae=1,Rae="0cb6f32f-7ada-4a8e-9fa0-c7517c5d6c7a",$ae="fd0f461d-ba20-49bf-aa3f-916d3becc021",Dae="/__l5e/assets-v1/0cb6f32f-7ada-4a8e-9fa0-c7517c5d6c7a/zone-tri-convoyeur-equipes.webp",Fae="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/0cb6f32f-7ada-4a8e-9fa0-c7517c5d6c7a/zone-tri-convoyeur-equipes.webp",Uae="zone-tri-convoyeur-equipes.webp",zae=59288,Bae="image/webp",Wae="2026-09-04T20:44:33Z",Hae={version:Nae,asset_id:Rae,project_id:$ae,url:Dae,r2_key:Fae,original_filename:Uae,size:zae,content_type:Bae,created_at:Wae},Vae="/assets/bac-non-conforme-quarantaine-CKNrbHWn.webp",Gae=1,Kae="c7899ea1-6053-4cad-9c76-cf1247e79a61",Xae="fd0f461d-ba20-49bf-aa3f-916d3becc021",Qae="/__l5e/assets-v1/c7899ea1-6053-4cad-9c76-cf1247e79a61/palettes-expedition-temperature-dirigee.webp",Jae="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/c7899ea1-6053-4cad-9c76-cf1247e79a61/palettes-expedition-temperature-dirigee.webp",Yae="palettes-expedition-temperature-dirigee.webp",Zae=171764,eoe="image/webp",toe="2026-09-04T15:04:04Z",noe={version:Gae,asset_id:Kae,project_id:Xae,url:Qae,r2_key:Jae,original_filename:Yae,size:Zae,content_type:eoe,created_at:toe},xf="#0d3b6e",wf="#b8734f";function Oa({src:e,alt:t,photoCaption:n,title:r,phrase:i,shape:s,tilt:a,width:o,height:l,aspectRatio:u,preserveSubjectOnMobile:c,wideArchOnMobile:p,objectPosition:f,sizes:m,className:g=""}){return d.jsxs("article",{className:g,children:[d.jsx(Yc,{src:e,alt:t,caption:n,shape:s,tilt:a,width:o,height:l,aspectRatio:u,preserveSubjectOnMobile:c,wideArchOnMobile:p,objectPosition:f,sizes:m}),d.jsxs("div",{className:"mt-5",children:[d.jsx("p",{className:"font-mono-tech mb-2 text-[10px] font-bold uppercase",style:{color:wf,letterSpacing:"0.18em"},children:"Terrain"}),d.jsx("h3",{className:"font-display text-[18px] font-bold leading-tight",style:{color:xf},children:r}),d.jsx("p",{className:"mt-2 text-[14px] leading-[1.55]",style:{color:"#4a4a4a"},children:i})]})]})}function roe(){return d.jsx("section",{className:"org-sec org-sec--situations px-5 py-12 sm:px-6 md:py-16 lg:py-20",style:{background:"#faf6f0"}
4169,"aria-labelledby":"constat-terrain-title",children:d.jsxs("div",{className:"mx-auto max-w-6xl",children:[d.jsxs("header",{className:"max-w-4xl",children:[d.jsx("p",{className:"home-eyebrow font-display mb-4",children:"Le point de départ"}),d.jsx("h2",{id:"constat-terrain-title",className:"font-display font-extrabold",style:{color:xf,fontSize:"clamp(30px, 4.5vw, 48px)",lineHeight:1.02,letterSpacing:"-0.03em"},children:"Ce qu'on croise sur le quai, pas dans les bureaux."}),d.jsx("p",{className:"mt-5 max-w-2xl text-[16px]",style:{color:"#4a4a4a"},children:"Photos prises en poste opérationnel. Aucune mise en scène."})]}),d.jsxs("div",{className:"mt-10 grid grid-cols-1 gap-6 border-y border-[#e6ddd1] py-8 md:mt-12 md:grid-cols-2 md:gap-12 md:py-10",children:[d.jsx("p",{className:"font-sans text-[18px] font-medium leading-[1.6]",style:{color:"#2a2a2a"},children:"Sur le terrain, les équipes sont sous pression : retards de livraison, clients qui relancent, priorités qui changent, chefs d'équipe en gestion d'urgence."}),d.jsx("p",{className:"font-sans text-[16px] leading-[1.65]",style:{color:"#4a4a4a"},children:"Mais sans données fiables, sans processus stables et sans équipes associées dès le départ, l'IA ne produit pas de résultats durables."})]}),d.jsxs("div",{className:"mt-12 grid grid-cols-1 gap-y-14 md:mt-16 md:grid-cols-12 md:gap-x-10 md:gap-y-16 lg:gap-x-14 lg:gap-y-20",children:[d.jsx(Oa,{src:noe.url,alt:"Palettes préparées pour une expédition sous température dirigée",title:"À température dirigée, une palette ne voyage jamais au hasard.",phrase:"Conditionnement, maintien thermique, traçabilité documentaire. Quinze ans à tenir ce niveau d'exigence, du quai à l'expédition.",shape:"arche",tilt:1,width:1462,height:1076,objectPosition:"center 45%",preserveSubjectOnMobile:!0,wideArchOnMobile:!0,sizes:"(max-width: 768px) 90vw, 38vw",className:"md:col-span-6 lg:col-span-5"}),d.jsx(Oa,{src:Eae.url,alt:"Palettes préparées en attente dans une zone d'expédition d'entrepôt pharmaceutique",photoCaption:"Deux palettes prêtes au départ. Ce qu'on ne voit pas, c'est le temps d'attente.",title:"L'attente avant le départ",phrase:"Une palette prête n'est pas encore une palette partie.",shape:"galet",tilt:-1,width:1100,height:825,aspectRatio:"4 / 3",preserveSubjectOnMobile:!0,sizes:"(max-width: 768px) 90vw, 40vw",className:"md:col-span-6 md:mt-20 lg:col-span-6 lg:col-start-7"}),d.jsx(Oa,{src:Mae.url,alt:"Racks de stockage dans un entrepôt pharmaceutique à température contrôlée",photoCaption:"Stockage en température contrôlée. L'adressage y vaut plus que la surface.",title:"L'adresse avant la surface",phrase:"Quand l'emplacement est fiable, le stock devient lisible.",shape:"hublot",tilt:1,width:1100,height:825,preserveSubjectOnMobile:!0,sizes:"(max-width: 768px) 78vw, 30vw",className:"mx-auto w-full max-w-[340px] md:col-span-5 md:col-start-2 md:mt-4 md:max-w-[430px]"}),d.jsx(Oa,{src:Vae,alt:"Bac rouge de produits non conformes isolé sur palette au milieu d'une allée d'entrepôt",title:"Le colis que personne ne réclame",phrase:"Bloqué, mis à l'écart, sans propriétaire. Il attend une décision.",shape:"galet",tilt:-1,width:1448,height:1086,aspectRatio:"4 / 3",preserveSubjectOnMobile:!0,sizes:"(max-width: 768px) 90vw, 38vw",className:"md:col-span-6 md:col-start-7 md:mt-24 lg:col-span-5 lg:col-start-8"}),d.jsx(Oa,{src:Hae.url,alt:"Zone de tri et convoyeurs avec équipes en poste",title:"Le rythme qui change toutes les heures",phrase:"Trois personnes, un convoyeur, et des priorités qui changent toutes les heures.",shape:"hublot",tilt:1,width:1100,height:825,sizes:"(max-width: 768px) 78vw, 30vw",className:"mx-auto w-full max-w-[430px] md:col-span-5 md:col-start-2 md:mt-8"})]}),d.jsxs("div",{className:"mt-14 grid grid-cols-1 items-start gap-7 border-t border-[#e6ddd1] pt-10 md:mt-20 md:grid-cols-2 md:gap-12 md:pt-12",children:[d.jsx("p",{className:"font-sans text-[16px] leading-[1.65]",style:{color:"#4a4a4a"},children:"Dans ce contexte, l'IA arrive souvent par deux chemins : portée par la direction ou la DSI, ou lancée pour gagner en productivité."}),d.jsxs("p",{className:"org-pullquote font-sans text-[17px] font-semibold leading-[1.6]",style:{color:xf,borderLeft:`3px solid ${wf}`,paddingLeft:18},children:[d.jsx("strong",{style:{fontWeight:800},children:"CHAL·CONSULTING IA"}
4169)," intervient avant le choix de l'outil : pour préparer les flux, les données, les processus et les équipes."]})]}),d.jsx("div",{className:"mt-10 flex justify-center md:mt-12",children:d.jsxs(Ke,{to:"/contact#calendrier",className:"inline-flex items-center gap-2 px-[26px] py-[14px] font-sans text-[15px] font-bold transition-all hover:brightness-95",style:{background:wf,color:"#FFFFFF"},children:["Vous vous reconnaissez ? Parlons-en",d.jsx(jn,{className:"h-4 w-4","aria-hidden":"true"})]})})]})})}const ioe={"16/9":"md:aspect-[16/9]","4/3":"md:aspect-[4/3]","3/4":"md:aspect-[3/4]"};function soe({src:e,fallbackSrc:t,alt:n,caption:r,width:i,height:s,ratio:a="4/3",priority:o=!1,className:l=""}){return d.jsxs("figure",{className:`m-0 ${l}`,children:[d.jsx("div",{className:"overflow-hidden rounded-lg",children:d.jsxs("picture",{children:[d.jsx("source",{srcSet:e,type:"image/webp"}),d.jsx("img",{src:t??e,alt:n,width:i,height:s,loading:o?"eager":"lazy",decoding:o?"sync":"async",className:`w-full h-full object-cover object-center aspect-[4/5] ${ioe[a]} transition-transform duration-500 ease-out hover:scale-[1.03]`})]})}),r&&d.jsx("figcaption",{className:"mt-3 font-sans",style:{fontSize:13,lineHeight:1.5,color:"#7a7a7a"},children:r})]})}const aoe=1,ooe="2f69e8fe-6a9d-4109-8547-b01e2644a405",loe="fd0f461d-ba20-49bf-aa3f-916d3becc021",uoe="/__l5e/assets-v1/2f69e8fe-6a9d-4109-8547-b01e2644a405/management-visuel-pilotage-performance.webp",coe="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/2f69e8fe-6a9d-4109-8547-b01e2644a405/management-visuel-pilotage-performance.webp",doe="management-visuel-pilotage-performance.webp",poe=107546,moe="image/webp",foe="2026-09-04T15:03:49Z",hoe={version:aoe,asset_id:ooe,project_id:loe,url:uoe,r2_key:coe,original_filename:doe,size:poe,content_type:moe,created_at:foe},goe=[{letter:"F",name:"Fiabiliser",desc:"Remettre de l'ordre dans les flux, les stocks, les emplacements, les saisies et les priorités."},{letter:"L",name:"Lire le terrain",desc:"Observer les attentes, les déplacements inutiles, les zones saturées, les urgences et les pertes de temps."},{letter:"U",name:"Unifier",desc:"Aligner direction, managers, chefs d'équipe, équipes opérationnelles et fonctions support autour des mêmes priorités."},{letter:"X",name:"eXécuter",desc:"Déployer des solutions simples : standards, rituels d'équipe, règles d'adressage, tableaux de bord, automatisations ciblées ou préparation à l'IA."}];function voe(){return d.jsx("section",{style:{background:"#faf6f0"},className:"px-6 relative overflow-hidden org-block org-block--approche",children:d.jsxs("div",{className:"max-w-[980px] mx-auto relative",style:{paddingTop:56,paddingBottom:56},children:[d.jsx("span",{className:"home-eyebrow font-display",children:"Mon approche"}),d.jsx("h2",{className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:"clamp(34px, 5.2vw, 56px)",lineHeight:1.02,letterSpacing:"-0.035em",fontWeight:800,maxWidth:920},children:"Conseil logistique entrepôt : comprendre votre terrain avant de recommander"}),d.jsxs("div",{className:"mt-10 flex flex-col gap-6",style:{maxWidth:780},children:[d.jsx("p",{className:"font-sans",style:{color:"#4a4a4a",fontSize:18,lineHeight:1.65},children:"Chaque entreprise a sa réalité : ses flux, ses équipes, ses urgences, ses contraintes clients et ses outils."}),d.jsx("p",{className:"font-sans",style:{color:"#4a4a4a",fontSize:18,lineHeight:1.65},children:"Ma démarche commence par l'observation des opérations, l'écoute des équipes et l'identification des vrais blocages."}),d.jsx("p",{className:"font-sans",style:{color:"#4a4a4a",fontSize:18,lineHeight:1.65},children:"À partir de ce diagnostic, je construis des recommandations adaptées à votre maturité, vos données, vos managers et vos priorités opérationnelles."}),d.jsxs("p",{className:"font-sans org-pullquote",style:{color:"#0d3b6e",fontSize:18,lineHeight:1.6,fontWeight:600,borderLeft:"3px solid #b8734f",paddingLeft:20,marginTop:6},children:["C'est dans cet esprit que j'ai développé ",d.jsx("strong",{className:"font-display",style:{color:"#b8734f",fontWeight:800},children:"F.L.U.X™"}),", une méthode simple pour clarifier les flux, stabiliser les pratiques et préparer les équipes avant toute transformation ou intégration de l'IA."]})]}),d.jsx("ol",{className:"grid gap-5 grid-cols-1 md:grid-cols-2 lg:grid-cols-4 mt-12","aria-label":"Les 4 étapes de la méthode F.L.U.X™",style:{margin:0,padding:0,listStyle:"none",marginTop:48},children:goe.map((e,t)=>
4169d.jsxs("li",{style:{background:"#FFFFFF",border:"1px solid #e6ddd1",borderTop:"3px solid #b8734f",borderRadius:6,padding:"22px 20px"},children:[d.jsxs("div",{className:"flex items-center gap-3",children:[d.jsx("span",{className:"font-display","aria-hidden":!0,style:{color:"#b8734f",fontSize:30,fontWeight:800,lineHeight:1},children:e.letter}),d.jsxs("span",{className:"font-sans",style:{color:"#7a9272",fontSize:11,letterSpacing:"0.14em",textTransform:"uppercase",fontWeight:700},children:["Étape 0",t+1," / 04"]})]}),d.jsx("h3",{className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:17,fontWeight:700},children:e.name}),d.jsx("p",{className:"font-sans mt-2",style:{color:"#4a4a4a",fontSize:14.5,lineHeight:1.6},children:e.desc})]},e.letter))}),d.jsx("div",{className:"mt-12",children:d.jsx(soe,{src:hoe.url,alt:"Management visuel et pilotage de la performance en entrepôt logistique",caption:"Rituel de pilotage quotidien, site de distribution",width:1600,height:1200,ratio:"16/9"})})]})})}const yoe=W2.url;function boe(){return d.jsx("section",{style:{background:"#faf6f0"},className:"px-6 org-sec org-sec--about",children:d.jsxs("div",{className:"max-w-[1180px] mx-auto",style:{paddingTop:56,paddingBottom:0},children:[d.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[440px_1fr] gap-12 lg:gap-16 items-start",children:[d.jsxs("div",{children:[d.jsx("div",{className:"w-full max-w-[320px] md:max-w-[380px]",children:d.jsx(Yc,{src:yoe,alt:"Chal-Michel OU, fondateur de CHAL·CONSULTING IA",shape:"arche",tilt:-1,width:880,height:1100,objectPosition:"center 12%",sizes:"(max-width: 768px) 80vw, 380px"})}),d.jsxs("div",{className:"flex flex-wrap gap-2 mt-5",children:[d.jsx("span",{className:"font-display",style:{background:"#0d3b6e",color:"#FFFFFF",fontSize:11.5,letterSpacing:"0.14em",fontWeight:700,padding:"7px 14px",borderRadius:100,textTransform:"uppercase"},children:"Mastère TBS Logistique"}),d.jsx("span",{className:"font-display",style:{background:"#b8734f",color:"#FFFFFF",fontSize:11.5,letterSpacing:"0.14em",fontWeight:700,padding:"7px 14px",borderRadius:100,textTransform:"uppercase"},children:"Certif. IA 2026"})]})]}),d.jsxs("div",{children:[d.jsx("span",{className:"home-eyebrow font-display",children:"À propos"}),d.jsxs("h2",{className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:"clamp(32px, 4.8vw, 52px)",lineHeight:1.02,letterSpacing:"-0.035em",fontWeight:800},children:["Chal-Michel OU",d.jsx("span",{style:{display:"block",color:"#b8734f",fontSize:"0.5em",fontWeight:700,marginTop:8,letterSpacing:"-0.01em"},children:"Fondateur, CHAL·CONSULTING IA"})]}),d.jsx("p",{className:"font-sans mt-8",style:{color:"#2a2a2a",fontSize:18,lineHeight:1.65,fontWeight:500},children:"Depuis plus de 15 ans, j'évolue dans les opérations logistiques, au contact direct des flux, des équipes, des organisations syndicales et des réalités terrain."}),d.jsx("p",{className:"font-sans mt-5",style:{color:"#4a4a4a",fontSize:16,lineHeight:1.65},children:"Mon parcours s'est construit dans des environnements complémentaires : IKEA, Nike, Guerlain, Bio-Rad, Saint-Gobain / Sevegrand, Cenexi."}),d.jsx("p",{className:"font-sans mt-8",style:{color:"#0d3b6e",fontSize:17,lineHeight:1.65,fontWeight:600,borderLeft:"3px solid #b8734f",paddingLeft:18},children:"Aujourd'hui, j'associe cette expérience opérationnelle à une spécialisation en IA appliquée à la logistique, avec une approche pragmatique, humaine et orientée terrain."})]})]}),d.jsx("div",{className:"mt-12 pt-8",style:{borderTop:"1px solid rgba(184, 115, 79, 0.25)"},children:d.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-6 lg:gap-4",children:[d.jsxs("div",{className:"text-center",children:[d.jsx("span",{className:"font-display block",style:{color:"#b8734f",fontSize:42,fontWeight:800,lineHeight:1},children:"M"}),d.jsx("span",{className:"font-display block mt-2",style:{color:"#0d3b6e",fontSize:13,fontWeight:700,letterSpacing:"0.02em"},children:"Management"}),d.jsx("p",{className:"font-sans mt-1",style:{color:"#4a4a4a",fontSize:13,lineHeight:1.45},children:"Équipes de 5 à 80 personnes, sur le terrain."})]}),d.jsxs("div",{className:"text-center",children:[d.jsx("span",{className:"font-display block",style:{color:"#b8734f",fontSize:42,fontWeight:800,lineHeight:1},children:"V"}),d.jsx("span",{className:"font-display block mt-2",style:{color:"#0d3b6e",fontSize:13,fontWeight:700,letterSpacing:"0.02em"},children:"Vision"}),d.jsx("p",{className:"font-sans mt-1",style:{color:"#4a4a4a",fontSize:13,lineHeight:1.45},children:"Data & IA logistique, sans dépendance aux vendeurs."})]}),d.jsxs("div",{className:"text-center",children:[d.jsx("span",{className:"font-display block",style:{color:"#b8734f",fontSize:42,fontWeight:800,lineHeight:1},children:"G"}),d.jsx("span",{className:"font-display block mt-2",style:{color:"#0d3b6e",fontSize:13,fontWeight:700,letterSpacing:"0.02em"},children:"Gouvernance"}),d.jsx("p",{className:"font-sans mt-1",style:{color:"#4a4a4a",fontSize:13,lineHeight:1.45},children:"Des flux, de la réception à la livraison."})]}),d.jsxs("div",{className:"text-center",children:[d.jsx("span",{className:"font-display block",style:{color:"#b8734f",fontSize:42,fontWeight:800,lineHeight:1},children:"K"}),d.jsx("span",{className:"font-display block mt-2",style:{color:"#0d3b6e",fontSize:13,fontWeight:700,letterSpacing:"0.02em"},children:"Know-how"}),d.jsx("p",{className:"font-sans mt-1",style:{color:"#4a4a4a",fontSize:13,lineHeight:1.45},children:"15 ans en environnements exigeants — retail, pharma, distribution."})]}),d.jsxs("div",{className:"text-center col-span-2 sm:col-span-3 lg:col-span-1",children:[d.jsx("span",{className:"font-display block",style:{color:"#b8734f",fontSize:42,fontWeight:800,lineHeight:1},children:"R"}),d.jsx("span",{className:"font-display block mt-2",style:{color:"#0d3b6e",fontSize:13,fontWeight:700,letterSpacing:"0.02em"},children:"Résultats"}),d.jsx("p",{className:"font-sans mt-1",style:{color:"#4a4a4a",fontSize:13,lineHeight:1.45},children:"KPI mesurables, autonomie des équipes."})]})]})})]})})}const X2="home-cta inline-flex items-center justify-center gap-2 font-sans font-semibold rounded-[4px] transition-all duration-200 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#b8734f] focus-visible:ring-offset-2 hover:-translate-y-
4169px",Q2={md:"min-h-[44px] px-5 text-[14px]",lg:"min-h-[48px] px-6 text-[15px]"},J2={primary:"bg-[#b8734f] text-white shadow-[0_4px_14px_-6px_rgba(184,115,79,0.55)] hover:bg-[#a05f3e] hover:shadow-[0_6px_18px_-6px_rgba(184,115,79,0.65)]",secondary:"bg-transparent text-[#0d3b6e] border border-[#0d3b6e] hover:bg-[#0d3b6e] hover:text-white",ghost:"bg-transparent text-[#0d3b6e] hover:bg-[#0d3b6e]/5"},xoe=E.forwardRef(({to:e,variant:t="primary",size:n="md",className:r,children:i},s)=>d.jsx(Ke,{ref:s,to:e,className:bt(X2,Q2[n],J2[t],r),children:i}));xoe.displayName="HomeCTALink";const Y2=E.forwardRef(({variant:e="primary",size:t="md",className:n,children:r,...i},s)=>d.jsx("a",{ref:s,className:bt(X2,Q2[t],J2[e],n),...i,children:r}));Y2.displayName="HomeCTAAnchor";function woe(){return d.jsx("section",{style:{background:"#0d3b6e"},className:"px-6 relative overflow-hidden org-sec org-sec--cta",children:d.jsxs("div",{className:"max-w-[980px] mx-auto relative text-center",style:{paddingTop:72,paddingBottom:72},children:[d.jsx("h2",{className:"font-display",style:{color:"#FFFFFF",fontSize:"clamp(32px, 5.4vw, 56px)",lineHeight:1.05,letterSpacing:"-0.035em",fontWeight:800,maxWidth:880,marginInline:"auto"},children:"Un premier échange de 30 minutes pour comprendre votre situation."}),d.jsx("p",{className:"font-sans mt-6",style:{color:"#dbe6f2",fontSize:18,lineHeight:1.6,maxWidth:640,marginInline:"auto"},children:"Une conversation terrain pour clarifier vos flux, vos priorités et vos prochaines actions."}),d.jsx("p",{className:"font-sans mt-4",style:{color:"#dbe6f2",fontSize:16,lineHeight:1.6,maxWidth:640,marginInline:"auto"},children:"Vous préférez commencer seul ? Répondez à 10 questions et obtenez votre score de maturité, votre profil et des recommandations personnalisées."}),d.jsxs("div",{className:"mt-10 flex flex-col sm:flex-row items-center justify-center gap-4",children:[d.jsxs(Y2,{href:ac,target:"_blank",rel:"noopener noreferrer",variant:"primary",size:"lg",children:["Prendre rendez-vous",d.jsx(jn,{className:"w-4 h-4"})]}),d.jsxs("a",{href:"/diagnostic-ia",target:"_blank",rel:"noopener noreferrer",className:"font-sans inline-flex items-center gap-2 text-sm font-medium",style:{color:"#e2b294"},children:["Faire le diagnostic en ligne",d.jsx(jn,{className:"w-4 h-4",strokeWidth:1.5})]})]}),d.jsxs("p",{className:"font-sans mt-10",style:{color:"#9fb4cc",fontSize:14,lineHeight:1.7},children:[d.jsx("a",{href:"mailto:[email protected]",style:{color:"#e2b294"},children:"[email protected]"}),d.jsx("span",{style:{margin:"0 10px",color:"#b8734f"},children:"·"}),d.jsx("a",{href:"tel:+33623637929",style:{color:"#e2b294"},children:"06 23 63 79 29"}),d.jsx("span",{style:{margin:"0 10px",color:"#b8734f"},children:"·"}),"www.chal-consulting.fr",d.jsx("span",{style:{margin:"0 10px",color:"#b8734f"},children:"·"}),"102 av. Gambetta, 94700 Maisons-Alfort"]})]})})}const qoe=1,Soe="56adda27-a1a1-467e-9190-22386caeb09c",Aoe="fd0f461d-ba20-49bf-aa3f-916d3becc021",Eoe="/__l5e/assets-v1/56adda27-a1a1-467e-9190-22386caeb09c/logo-chal-consulting-v2.png",_oe="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/56adda27-a1a1-467e-9190-22386caeb09c/logo-chal-consulting-v2.png",koe="logo-chal-consulting-v2.png",Coe=52775,joe="image/png",Poe="2026-06-05T22:22:20Z",Toe={version:qoe,asset_id:Soe,project_id:Aoe,url:Eoe,r2_key:_oe,original_filename:koe,size:Coe,content_type:joe,created_at:Poe},Ioe=1,Ooe="45831293-f192-4701-877b-e3b9bcc458ef",Loe="fd0f461d-ba20-49bf-aa3f-916d3becc021",Moe="/__l5e/assets-v1/45831293-f192-4701-877b-e3b9bcc458ef/logo-rainer-school.png",Noe="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/45831293-f192-4701-877b-e3b9bcc458ef/logo-rainer-school.png",Roe="logo-rainer-school.png",$oe=9848,Doe="image/png",Foe="2026-07-07T20:12:10Z",Uoe={version:Ioe,asset_id:Ooe,project_id:Loe,url:Moe,r2_key:Noe,original_filename:Roe,size:$oe,content_type:Doe,created_at:Foe},zoe=[{num:"01",title:"Former vos équipes",desc:"IA générative, IA logistique, flux d'entrepôt. Des modules concrets, travaillés au poste.",to:"/formation"},{num:"02",title:"Diagnostiquer vos flux",desc:"Cartographie terrain et audit opérationnel, de trois jours à quatre semaines.",to:"/services"},{num:"03",title:"Implémenter l'IA utile",desc:"Les bons outils, connectés à votre réalité, réellement adoptés par les équipes.",to:"/ia-operationnelle"}];function Boe(){const[e]=E.useState(!1),t=E.useRef(null),n=E.useRef(null),[r,i]=E.useState({rx:0,rz:0}),s=u=>{var c;n.current={x:u.clientX,y:u.clientY},(c=t.current)==null||c.setAttribute("data-dragging","true")},a=u=>{if(!n.current)return;const c=u.clientX-n.current.x,p=u.clientY-n.current.y;i({rx:Math.max(-10,Math.min(10,p*.06)),rz:Math.max(-12,Math.min(12,c*.06))})},o=()=>{var u;n.current=null,(u=t.current)==null||u.removeAttribute("data-dragging")},l=[...zoe];return d.jsx("section",{className:"home-section org-sec org-sec--liste iso3d","data-spread":e,children:d.jsxs("div",{className:"max-w-[1180px] mx-auto px-6 iso3d__split",children:[d.jsxs("div",{className:"iso3d__head",children:[d.jsx("p",{className:"home-eyebrow font-display",children:"Trois façons de travailler ensemble"}),d.jsx("h2",{className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:"clamp(34px, 5.2vw, 56px)",lineHeight:1.02,letterSpacing:"-0.035em",fontWeight:800,textWrap:"balance"},children:"Former vos équipes. Diagnostiquer vos flux. Implémenter l'IA utile."}),d.jsx("p",{className:"font-sans mt-5",style:{color:"#4a4a4a",fontSize:18,lineHeight:1.65},children:"Je forme vos équipes aux outils IA et aux process logistiques, je diagnostique vos flux du cariste au directeur de site, et j'implémente les outils qui tiennent la réalité de votre entrepôt. Dans cet ordre."}),d.jsx("p",{className:"font-sans mt-4",style:{color:"#4a4a4a",fontSize:18,lineHeight:1.65},children:"Conseil opérationnel porté par CHAL·CONSULTING IA. Volets technologiques et formation menés avec Rainer School."}),d.jsx("p",{className:"font-sans mt-4",style:{color:"#4a4a4a",fontSize:16,lineHeight:1.65},children:"Format PME / ETI : mission courte de 2 à 5 jours sur site pour observer les flux, échanger avec les équipes et remettre une feuille de route claire. L'IA propose, les équipes arbitrent : les décisions restent ancrées dans le terrain."}),d.jsxs("div",{className:"iso3d__partners","aria-label":"Partenaires",children:[d.jsx("span",{className:"iso3d__partner-card",children:d.jsx("img",{src:Toe.url,alt:"CHAL·CONSULTING IA",className:"iso3d__partner-logo",loading:"lazy",decoding:"async"})}),d.jsx("span",{className:"iso3d__partner-sep","aria-hidden":!0,
4169children:"×"}),d.jsx("span",{className:"iso3d__partner-card",children:d.jsx("img",{src:Uoe.url,alt:"Rainer School",className:"iso3d__partner-logo iso3d__partner-logo--rainer",loading:"lazy",decoding:"async"})})]})]}),d.jsxs("div",{ref:t,className:"iso3d__stage",style:{"--rx":`${r.rx}deg`,"--rz":`${r.rz}deg`},onPointerDown:s,onPointerMove:a,onPointerUp:o,onPointerLeave:o,children:[d.jsx("div",{className:"iso3d__floor","aria-hidden":!0}),d.jsx("div",{className:"iso3d__scene",children:l.map(({num:u,title:c,desc:p,to:f},m)=>d.jsxs(Ke,{to:f,className:"iso3d__layer",style:{"--i":String(m),"--z":String((l.length-1-m)*26)},children:[d.jsxs("span",{className:"iso3d__body",children:[d.jsx("span",{className:"iso3d__num font-display",children:u}),d.jsxs("span",{className:"iso3d__text",children:[d.jsx("span",{className:"iso3d__name font-display",children:c}),d.jsx("span",{className:"iso3d__desc font-sans",children:p})]})]}),d.jsx(jn,{className:"iso3d__arrow"}),m===0&&d.jsxs("span",{className:"iso3d__ui","aria-hidden":!0,children:[d.jsxs("span",{className:"iso3d__chart",children:[d.jsx("i",{style:{height:"38%"}}),d.jsx("i",{style:{height:"62%"}}),d.jsx("i",{style:{height:"48%"}}),d.jsx("i",{style:{height:"84%"}})]}),d.jsx(t_,{className:"iso3d__ico"}),d.jsx(x_,{className:"iso3d__ico"})]})]},u))})]})]})})}const Woe=qE,Hoe=SE,Voe=AE,Z2=E.forwardRef(({className:e,...t},n)=>d.jsx(c1,{ref:n,className:bt("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Z2.displayName=c1.displayName;const eE=E.forwardRef(({className:e,children:t,...n},r)=>d.jsxs(Voe,{children:[d.jsx(Z2,{}),d.jsxs(d1,{ref:r,className:bt("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...n,children:[t,d.jsxs(wE,{className:"absolute right-4 top-4 roun
4169ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[d.jsx(Ho,{className:"h-4 w-4"}),d.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));eE.displayName=d1.displayName;const tE=E.forwardRef(({className:e,...t},n)=>d.jsx(p1,{ref:n,className:bt("text-lg font-semibold leading-none tracking-tight",e),...t}));tE.displayName=p1.displayName;const Goe=E.forwardRef(({className:e,...t},n)=>d.jsx(m1,{ref:n,className:bt("text-sm text-muted-foreground",e),...t}));Goe.displayName=m1.displayName;const Koe={reception:{key:"reception",heading:"Réception pharmaceutique — où passe vraiment le temps",intro:"Cartographie de la chaîne de valeur, état actuel. Sept opérations, les attentes entre chacune, et les points où l'IA peut agir.",upstream:["Fournisseurs","en amont"],downstream:["Production","client interne"],leftFlow:"annonces de livraison",rightFlow:"besoins et priorités",ops:[{title:"Planifier la charge",data:["Temps de travail  45 min","Personnes  1","Déclenché par  l'ERP"]},{title:"Accueillir et décharger",data:["Temps de travail  35 min","Personnes  2","Quais utilisés  1"]},{title:"Contrôler BL et quantités",data:["Temps de travail  12 min","Personnes  1","Bon du 1er coup  82 %"]},{title:"Traiter les écarts",data:["Temps de travail  40 min","Personnes  1","Lignes en écart  8 %"]},{title:"Enregistrer et étiqueter",data:["Temps de travail  9 min","Personnes  1","Saisies à faire  2"]},{title:"Prélever et libérer",data:["Temps de travail  15 min","Équipe  Qualité","Contrôle  prélèvement"]},{title:"Mettre en stock et clôturer",data:["Temps de travail  7 min","Personnes  1","Contrôle  visuel"]}],waits:[{label:"Attente d'un créneau",days:.5},{label:"Attente du contrôle",days:.3},{label:"Attente d'une décision",days:2.5},{label:"Attente de saisie",days:.2},{label:"Attente du prélèvement",days:1.5},{label:"Quarantaine",days:3}],work:["45 min","35 min","12 min","40 min","9 min","15 min","7 min"],workHours:2.7,barTitle:"Où passent les 8,1 jours d'une réception",totals:[["Délai total, quai à stock","8,1 j"],["Dont travail effectif","2,7 h"],["Part du temps réellement utile","1,4 %"]],levers:["Qualification automatique des lignes et prévision de la charge","Créneaux dynamiques et alerte de retard transporteur","Lecture automatique des bons de livraison, rapprochement ERP","Dossier d'écart assisté, classification et relance","Contrôle de cohérence article-lot-quantité, étiquetage automatisé","Priorisation prédictive des prélèvements, alerte de libération","Indicateurs automatiques et analyse des causes récurrentes"],unit:"une réception"},expedition:{key:"expedition",heading:"Expédition pharmaceutique — où passe vraiment le temps",intro:"Cartographie de la chaîne de valeur, état actuel. Sept opérations, les attentes entre chacune, et les points où l'IA peut agir.",upstream:["Production et stock","lots libérés"],downstream:["Clients","France, UE, export"],leftFlow:"disponibilité et statuts",rightFlow:"commandes et priorités",ops:[{title:"Planifier et allouer",data:["Temps de travail  25 min","Personnes  1","Allocation  FEFO manuelle"]},{title:"Préparer la commande",data:["Temps de travail  38 min","Personnes  2","Lignes par heure  34"]},{title:"Contrôler et conditionner",data:["Temps de travail  18 min","Personnes  1","Double contrôle  100 %"]},{title:"Traiter les anomalies",data:["Temps de travail  45 min","Personnes  1","Commandes en écart  6 %"]},{title:"Constituer le dossier",data:["Temps de travail  22 min","Personnes  1","Complet du 1er coup  74 %"]},{title:"Mettre à quai et charger",data:["Temps de travail  30 min","Personnes  2","Départs à l'heure  81 %"]},{title:"Sortie système et clôture",data:["Temps de travail  8 min","Personnes  1","Sortie le jour même  68 %"]}],waits:[{label:"Attente de libération",days:1.5},{label:"Attente du contrôle",days:.2},{label:"Attente d'une décision",days:.8},{label:"Attente d'un document",days:.6},{label:"Attente du transporteur",days:.4},{label:"Attente de la preuve",days:.5}],work:["25 min","38 min","18 min","45 min","22 min","30 min","8 min"],workHours:3.1,barTitle:"Où passent les 4,1 jours d'une expédition",totals:[["Délai total, commande à départ","4,1 j"],["Dont travail effectif","3,1 h"],["Part du temps réellement utile","3,1 %"]],levers:["Contrôle d'expédiabilité et allocation FEFO automatique","Préparation optimisée et scan intelligent","Contrôle ciblé selon le niveau de risque","Dossier d'écart assisté et circuit de décision","Documents générés et contrôlés par pays, client et produit","Créneau dynamique, heure d'arrivée prévue et alertes de retard","Preuve numérique, rapprochement des systèmes et OTIF automatique"],unit:"une expédition"}}
4169,ht=2310,Ml=1240,Yt=210,Bl=320,Xoe=90,Zt="#16202B",fn="#2B3B4A",li="#D5DBE2",Qoe="#FCFCFD",Sn="#5F6B79",sp="#F6D372",ns="#8A6A18",ap="#EFE9FB",rs="#5B3FA8",Xn="#3D5A80",op="#1D4E89",Joe="Inter, 'Helvetica Neue', Helvetica, Arial, sans-serif",ui="'JetBrains Mono', 'SFMono-Regular', Menlo, Consolas, monospace",Ve=250,Pt=460,lp=92,Yoe=88,La=700,up=754,en=880,Zoe=38,Qn=e=>Xoe+e*Bl,Nl=e=>String(e).replace(".",",");function Bx(e,t,n,r){return Array.from({length:16},(i,s)=>{const a=s%2===0?n:r,o=Math.PI*2*s/16-Math.PI/2;return`${(e+a*Math.cos(o)).toFixed(1)},${(t+a*Math.sin(o)).toFixed(1)}`}).join(" ")}function Wx(e,t,n,r){return d.jsx("path",{d:`M${e},${t-7} L${e+n-16},${t-7} L${e+n-16},${t-14} L${e+n},${t} L${e+n-16},${t+14} L${e+n-16},${t+7} L${e},${t+7} Z`,fill:"url(#vsmPush)",stroke:fn,strokeWidth:"1.2"},r)}function ele(e){const t=[];let n="";return e.split(" ").forEach(r=>{const i=(n+" "+r).trim();i.length>20?(t.push(n),n=r):n=i}),t.push(n),t.slice(0,2)}const tle=[["box",["Une opération. La boîte du dessous donne","ses chiffres : temps de cycle, ressources."]],["tri",["La marchandise est arrêtée et attend.","Personne ne travaille dessus."]],["push",["Flux poussé : l'étape suivante reçoit","sans l'avoir demandé."]],["info",["De l'information, pas de la marchandise.","Ce qui circule dans l'ERP."]],["kai",["Un point où l'IA peut agir. Le numéro","renvoie à la liste en bas de page."]]];function Hx({flow:e}){const t=Koe[e],n=t.ops.length,r=ht/2,i=t.waits.reduce((c,p)=>c+p.days,0)+t.workHours/24,s=(ht-120)/5,a=[];for(let c=0;c<n;c++)a.push(`${Qn(c)},${up}`,`${Qn(c)+Yt},${up}`),c<n-1&&a.push(`${Qn(c)+Yt},${La}`,`${Qn(c+1)},${La}`);const o=[...t.waits.map(c=>({label:c.label,days:c.days,fill:sp,stroke:ns,last:!1})),{label:"Travail effectif",days:t.workHours/24,fill:"#CFE0F2",stroke:op,last:!0}];let l=60;const u=ht-120;return d.jsxs("svg",{viewBox:`0 0 ${ht} ${Ml}`,className:"w-full h-auto",role:"img","aria-label":`${t.heading}. ${t.intro}`,style:{fontFamily:Joe},children:[d.jsxs("defs",{children:[d.jsx("marker",{id:"vsmAi",viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto",children:d.jsx("path",{d:"M0,0 L10,5 L0,10 z",fill:Xn})}),d.jsxs("pattern",{id:"vsmPush",width:"12",height:"12",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)",children:[d.jsx("rect",{width:"12",height:"12",fill:"#FFFFFF"}),d.jsx("rect",{width:"5",height:"12",fill:li})]})]}),d.jsx("rect",{width:ht,height:Ml,fill:Qoe}),d.jsx("rect",{x:"26",y:"26",width:ht-52,height:Ml-52,fill:"none",stroke:li,strokeWidth:"1.5"}),d.jsx("text",{x:"60",y:"74",fontSize:"30",fontWeight:"600",fill:Zt,letterSpacing:"-0.3",children:t.heading}),d.jsx("text",{x:"60",y:"102",fontSize:"14.5",fill:Sn,children:t.intro}),d.jsx("rect",{x:"60",y:"128",width:ht-120,height:"84",fill:"#FFFFFF",stroke:li,strokeWidth:"1.2"}),d.jsx("text",{x:"76",y:"150",fontSize:"12.5",fontWeight:"600",fill:Zt,children:"Comment lire ce schéma"}),tle.map(([c,p],f)=>{const m=60+f*s,g=m+22,h=182;return d.jsxs("g",{children:[f>0&&d.jsx("line",{x1:m,y1:"158",x2:m,y2:"202",stroke:li,strokeWidth:"1"}),c==="box"&&d.jsxs(d.Fragment,{children:[d.jsx("rect",{x:g-12,y:h-16,width:"26",height:"18",fill:"#FFF",stroke:fn,strokeWidth:"1.4"}),d.jsx("rect",{x:g-12,y:h+2,width:"26",height:"12",fill:"#FFF",stroke:fn,strokeWidth:"1"})]}),c==="tri"&&d.jsx("polygon",{points:`${g},${h-16} ${g-14},${h+8} ${g+14},${h+8}`,fill:sp,stroke:ns,strokeWidth:"1.4"}),c==="push"&&Wx(g-16,h-4,34,"g"),c==="info"&&d.jsx("line",{x1:g-16,y1:h-4,x2:g+14,y2:h-4,stroke:Xn,strokeWidth:"1.5",strokeDasharray:"6 5",markerEnd:"url(#vsmAi)"}),c==="kai"&&d.jsx("polygon",{points:Bx(g,h-4,16,11),fill:ap,stroke:rs,strokeWidth:"1.5"}),p.map((v,b)=>d.jsx("text",{x:g+30,y:176+b*17,fontSize:"12.5",fill:Zt,children:v},b))]},c)}),d.jsx("rect",{x:"60",y:Ve,width:"200",height:"64",fill:"#FFFFFF",stroke:fn,strokeWidth:"1.6"}),d.jsx("path",{d:`M60,${Ve} L110,${Ve-15} L160,${Ve} L210,${Ve-15} L260,${Ve}`,fill:"none",stroke:fn,strokeWidth:"1.6"}),d.jsx("text",{x:"160",y:Ve+30,fontSize:"14.5",fontWeight:"600",fill:Zt,textAnchor:"middle",children:t.upstream[0]}),d.jsx("text",{x:"160",y:Ve+50,fontSize:"12",fill:Sn,textAnchor:"middle",children:t.upstream[1]}),d.jsx("rect",{x:r-190,y:Ve-4,width:"380",height:"68",fill:"#FFFFFF",stroke:Xn,strokeWidth:"1.8"}),d.jsx("text",{x:r,y:Ve+22,fontSize:"15",fontWeight:"600",fill:Xn,textAnchor:"middle",children:"ERP, WMS et Qualité"}),d.jsx("text",{x:r,y:Ve+44,fontSize:"12",fill:Sn,textAnchor:"middle",children:"commandes, statuts, libérations de lots"}),d.jsx("rect",{x:ht-260,y:Ve,width:"200",height:"64",fill:"#FFFFFF",stroke:fn,strokeWidth:"1.6"}),d.jsx("path",{d:`M${ht-260},${Ve} L${ht-210},${Ve-15} L${ht-160},${Ve} L${ht-110},${Ve-15} L${ht-60},${Ve}`,fill:"none",stroke:fn,strokeWidth:"1.6"}),d.jsx("text",{x:ht-160,y:Ve+30,fontSize:"14.5",fontWeight:"600",fill:Zt,textAnchor:"middle",children:t.downstream[0]}),d.jsx("text",{x:ht-160,y:Ve+50,fontSize:"12",fill:Sn,textAnchor:"middle",children:t.downstream[1]}),d.jsx("line",{x1:"260",y1:Ve+30,x2:r-190,y2:Ve+30,stroke:Xn,strokeWidth:"1.4",strokeDasharray:"7 5",markerEnd:"url(#vsmAi)"}),d.jsx("text",{x:(260+r-190)/2,y:Ve+20,fontSize:"12",fill:Xn,textAnchor:"middle",children:t.leftFlow}),t.key==="reception"?d.jsx("line",{x1:r+190,y1:Ve+30,x2:ht-260,y2:Ve+30,stroke:Xn,strokeWidth:"1.4",strokeDasharray:"7 5",markerEnd:"url(#vsmAi)"}):d.jsx("line",{x1:ht-260,y1:Ve+30,x2:r+190,y2:Ve+30,stroke:Xn,strokeWidth:"1.4",strokeDasharray:"7 5",markerEnd:"url(#vsmAi)"}),d.jsx("text",{x:(r+190+ht-260)/2,y:Ve+20,fontSize:"12",fill:Xn,textAnchor:"middle",children:t.rightFlow}),t.ops.map((c,p)=>d.jsx("path",{d:`M${r},${Ve+64}
4169 L${r},${Ve+92} L${Qn(p)+Yt/2},${Ve+92} L${Qn(p)+Yt/2},${Pt}`,fill:"none",stroke:Xn,strokeWidth:"1.2",strokeDasharray:"6 5",markerEnd:"url(#vsmAi)",opacity:"0.7"},`i${p}`)),t.ops.map((c,p)=>{const f=Qn(p),m=ele(c.title),g=m.length>1?Pt+48:Pt+60;return d.jsxs("g",{children:[d.jsx("rect",{x:f,y:Pt,width:Yt,height:lp,fill:"#FFFFFF",stroke:fn,strokeWidth:"1.8"}),d.jsx("line",{x1:f,y1:Pt+24,x2:f+Yt,y2:Pt+24,stroke:fn,strokeWidth:"1"}),d.jsxs("text",{x:f+10,y:Pt+17,fontSize:"11.5",fill:Sn,style:{fontFamily:ui},children:["Opération ",p+1]}),m.map((h,v)=>d.jsx("text",{x:f+10,y:g+v*20,fontSize:"15.5",fontWeight:"600",fill:Zt,children:h},v)),d.jsx("rect",{x:f,y:Pt+lp,width:Yt,height:Yoe,fill:"#FFFFFF",stroke:fn,strokeWidth:"1.2"}),c.data.map((h,v)=>d.jsx("text",{x:f+10,y:Pt+lp+24+v*21,fontSize:"11.5",fill:Zt,style:{fontFamily:ui},children:h},v)),d.jsx("polygon",{points:Bx(f+Yt-26,Pt-32,29,19),fill:ap,stroke:rs,strokeWidth:"1.5"}),d.jsx("text",{x:f+Yt-26,y:Pt-27,fontSize:"14",fontWeight:"700",fill:rs,textAnchor:"middle",children:p+1})]},`op${p}`)}),t.waits.map((c,p)=>{const f=Qn(p)+Yt,m=f+(Bl-Yt)/2,g=c.label.lastIndexOf(" "),h=c.label.length>14?[c.label.slice(0,g),c.label.slice(g+1)]:[c.label,""];return d.jsxs("g",{children:[d.jsx("polygon",{points:`${m},${Pt+26} ${m-30},${Pt+76} ${m+30},${Pt+76}`,fill:sp,stroke:ns,strokeWidth:"1.5"}),d.jsx("text",{x:m,y:Pt+70,fontSize:"15",fontWeight:"700",fill:ns,textAnchor:"middle",children:"I"}),d.jsx("text",{x:m,y:Pt+96,fontSize:"11.5",fill:Zt,textAnchor:"middle",children:h[0]}),h[1]&&d.jsx("text",{x:m,y:Pt+111,fontSize:"11.5",fill:Zt,textAnchor:"middle",children:h[1]}),d.jsxs("text",{x:m,y:Pt+(h[1]?133:118),fontSize:"14",fontWeight:"700",fill:ns,textAnchor:"middle",style:{fontFamily:ui},children:[Nl(c.days)," j"]}),Wx(f+6,Pt+12,Bl-Yt-12,`p${p}`)]},`w${p}`)}),d.jsx("polyline",{points:a.join(" "),fill:"none",stroke:fn,strokeWidth:"1.8"}),t.work.map((c,p)=>d.jsx("text",{x:Qn(p)+Yt/2,y:up+21,fontSize:"12",fill:Zt,textAnchor:"middle",style:{fontFamily:ui},children:c},`v${p}`)),t.waits.map((c,p)=>d.jsxs("text",{x:Qn(p)+Yt+(Bl-Yt)/2,y:La-10,fontSize:"12",fill:ns,textAnchor:"middle",style:{fontFamily:ui},children:[Nl(c.days)," j"]},`u${p}`)),d.jsx("text",{x:"60",y:La-30,fontSize:"12",fill:Sn,children:"Ligne du haut : la marchandise attend"}),d.jsx("text",{x:"60",y:La-14,fontSize:"12",fill:Sn,children:"Ligne du bas : on travaille dessus"}),d.jsx("text",{x:"60",y:en-64,fontSize:"16",fontWeight:"600",fill:Zt,children:t.barTitle}),d.jsx("text",{x:"60",y:en-44,fontSize:"13",fill:Sn,children:"Chaque bloc est proportionnel à sa durée réelle. Le travail effectif est le bloc bleu, tout à droite."}),o.map((c,p)=>{const f=u*c.days/i,m=l;l+=f;const g=c.last?`${Nl(t.workHours)} h`:`${Nl(c.days)} j`,h=p%2===0?en-30:en-12;return d.jsxs("g",{children:[d.jsx("rect",{x:m,y:en,width:f,height:Zoe,fill:c.fill,stroke:c.stroke,strokeWidth:"1.2"}),f>200&&d.jsx("text",{x:m+f/2,y:en+24,fontSize:"13",fontWeight:"600",fill:c.stroke,textAnchor:"middle",children:c.label}),c.last?d.jsxs(d.Fragment,{children:[d.jsx("line",{x1:m+f,y1:en-24,x2:m+f,y2:en,stroke:op,strokeWidth:"1"}),d.jsxs("text",{x:m+f,y:en-30,fontSize:"12",fontWeight:"600",fill:op,textAnchor:"end",children:["Travail effectif : ",g]})]}):d.jsxs(d.Fragment,{children:[d.jsx("line",{x1:m,y1:h+4,x2:m,y2:en,stroke:li,strokeWidth:"1"}),d.jsx("text",{x:m+6,y:h,fontSize:"11.5",fill:Sn,children:f>200?g:`${c.label} · ${g}`})]})]},`s${p}`)}),d.jsx("rect",{x:ht-470,y:en+82,width:"410",height:"98",fill:"#FFFFFF",stroke:fn,strokeWidth:"1.6"}),t.totals.map(([c,p],f)=>d.jsxs("g",{children:[d.jsx("text",{x:ht-450,y:en+112+f*27,fontSize:"13",fill:Sn,children:c}),d.jsx("text",{x:ht-80,y:en+112+f*27,fontSize:"18",fontWeight:"700",fill:f===2?rs:Zt,textAnchor:"end",style:{fontFamily:ui},children:p})]},`t${f}`)),d.jsx("text",{x:"60",y:en+98,fontSize:"16",fontWeight:"600",fill:Zt,children:"Les sept points où l'IA peut agir"}),t.levers.map((c,p)=>{const f=60+Math.floor(p/4)*640,m=en+128+p%4*28;return d.jsxs("g",{children:[d.jsx("circle",{cx:f+11,cy:m-4,r:"11",fill:ap,stroke:rs,strokeWidth:"1.3"}),d.jsx("text",{x:f+11,y:m+1,fontSize:"12",fontWeight:"700",fill:rs,textAnchor:"middle",children:p+1}),d.jsx("text",{x:f+32,y:m,fontSize:"13",fill:Zt,children:c})]},`k${p}`)}),(()=>{const c=Ml-118,p=ht-700,f=640,m=[["Document","Chaîne de valeur, état actuel"],["Version","V1.0"],["Établi par","CHAL CONSULTING IA"],["Méthode","F.L.U.X™"],["Unité",t.unit],["Valeurs","illustratives"]];return d.jsxs("g",{children:[d.jsx("rect",{x:p,y:c,width:f,height:"82",fill:"#FFFFFF",stroke:fn,strokeWidth:"1.6"}),m.map(([g,h],v)=>{const b=p+v%3*(f/3),w=c+32+Math.floor(v/3)*38;return d.jsxs("g",{children:[d.jsx("line",{x1:b,y1:c,x2:b,y2:c+82,stroke:li,strokeWidth:"1"}),d.jsx("text",{x:b+14,y:w-14,fontSize:"10.5",fill:Sn,style:{fontFamily:ui},children:g}),d.jsx("text",{x:b+14,y:w+2,fontSize:"12.5",fill:Zt,children:h})]},`c${v}`)}),d.jsx("line",{x1:p,y1:c+41,x2:p+f,y2:c+41,stroke:li,strokeWidth:"1"}),d.jsx("text",{x:"60",y:c+56,fontSize:"12.5",fill:Sn,children:"Extrait de démonstration. Nom de site, volumes réels et données client retirés."})]})})()]})}const nle=[{titre:"Fondamentaux",desc:"S'approprier les outils, le vocabulaire et les limites de l'IA."},{titre:"Praticien",desc:"Créer et déployer des agents sur ses propres processus."},{titre:"Dirigeant",desc:"Orchestrer, arbitrer et tenir une feuille de route."}],rle=["Optimiser les stocks","Réduire les erreurs de préparation","IA + Excel entrepôt","WMS / TMS","Prévisions de charge","KPI logistiques","IA + Power BI","Reporting automatisé","Inventaires et anomalies","Implantation entrepôt","Prompts supply chain","Sur mesure"];function ile(){return d.jsx("section",{id:"cartographie-home","aria-labelledby":"
4169cartographie-home-title",className:"px-6 org-block org-block--cartographie",style:{background:"#FFFFFF"},children:d.jsxs("div",{className:"max-w-[1180px] mx-auto",style:{paddingTop:56,paddingBottom:56},children:[d.jsx("span",{className:"home-eyebrow font-display",children:"Les livrables"}),d.jsx("h2",{id:"cartographie-home-title",className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:"clamp(28px, 4.2vw, 44px)",lineHeight:1.05,letterSpacing:"-0.03em",fontWeight:800,maxWidth:900},children:"Une cartographie de vos flux, et des équipes qui savent s'en servir."}),d.jsx("p",{className:"font-sans mt-5 max-w-3xl",style:{color:"#4a4a4a",fontSize:17,lineHeight:1.65},children:"On y lit où le temps se perd réellement entre les opérations : attente par attente, plutôt que là où on le suppose. Le spécimen ci-dessous est anonymisé, ses valeurs sont illustratives."}),d.jsx("div",{className:"flex justify-end mt-8 mb-4",children:d.jsxs(Woe,{children:[d.jsxs(Hoe,{className:"inline-flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm font-medium transition-colors hover:border-l-accent hover:text-accent",children:[d.jsx(c_,{className:"w-4 h-4",strokeWidth:1.5}),"Ouvrir en plein écran"]}),d.jsxs(eE,{className:"max-w-[98vw] w-[98vw] h-[94vh] overflow-auto p-4",children:[d.jsx(tE,{className:"font-display text-base",style:{color:"#0d3b6e"},children:"Cartographie de flux — Réception"}),d.jsx("div",{className:"overflow-x-auto",children:d.jsx("div",{className:"min-w-[1100px]",children:d.jsx(Hx,{flow:"reception"})})})]})]})}),d.jsxs("p",{className:"md:hidden flex items-center gap-2 text-xs text-muted-foreground mb-3",children:[d.jsx(f_,{className:"w-3.5 h-3.5",strokeWidth:1.5}),"Faites défiler pour explorer"]}),d.jsx("div",{className:"rounded-lg border border-border bg-white p-2 md:p-4",children:d.jsx("div",{className:"overflow-x-auto",children:d.jsx("div",{className:"min-w-[1100px] md:min-w-0",children:d.jsx(Hx,{flow:"reception"})})})}),d.jsxs(Ke,{to:"/methode/lire#cartographie",className:"inline-flex items-center gap-2 mt-6 text-sm font-medium",style:{color:"#b8734f"},children:["Voir aussi la cartographie expédition",d.jsx(jn,{className:"w-4 h-4",strokeWidth:1.5})]}),d.jsxs("div",{className:"mt-16 border-t border-border pt-12 md:mt-20 md:pt-14",children:[d.jsx("h3",{className:"font-display",style:{color:"#0d3b6e",fontSize:24,fontWeight:800,letterSpacing:"-0.02em"},children:"Ce que vos équipes sauront faire"}),d.jsx("p",{className:"font-sans mt-3 max-w-3xl",style:{color:"#4a4a4a",fontSize:16,lineHeight:1.65},children:"Le diagnostic produit un plan. La formation le rend applicable par ceux qui tiennent l'entrepôt."}),d.jsx("div",{className:"mt-8 grid grid-cols-1 gap-4 md:grid-cols-3 md:gap-6",children:nle.map((e,t)=>d.jsxs("div",{className:"border-t-2 pt-4",style:{borderColor:"#b8734f"},children:[d.jsxs("span",{className:"font-mono-tech text-[10px] font-bold uppercase",style:{color:"#b8734f",letterSpacing:"0.18em"},children:["Niveau ",String(t+1).padStart(2,"0")]}),d.jsx("h4",{className:"font-display mt-2 text-[17px] font-bold",style:{color:"#0d3b6e"},children:e.titre}),d.jsx("p",{className:"font-sans mt-2 text-[14px] leading-[1.55]",style:{color:"#4a4a4a"},children:e.desc})]},e.titre))}),d.jsx("ul",{className:"mt-10 flex flex-wrap gap-2",children:rle.map(e=>d.jsx("li",{className:"font-sans rounded-full border border-border px-3 py-1.5 text-[13px]",style:{color:"#4a4a4a",background:"#faf6f0"},children:e},e))}),d.jsx("p",{className:"font-sans mt-10 max-w-2xl text-[17px] font-semibold leading-[1.6]",style:{color:"#0d3b6e",borderLeft:"3px solid #b8734f",paddingLeft:18},children:"Adopter l'IA, ce n'est pas remplacer les gens par des machines. C'est améliorer votre quotidien."}),d.jsxs(Ke,{to:"/formation",className:"inline-flex items-center gap-2 mt-8 text-sm font-medium",style:{color:"#b8734f"},children:["Voir les parcours de formation",d.jsx(jn,{className:"w-4 h-4",strokeWidth:1.5})]})]})]})})}const sle=[{letter:"F",name:"Fiabiliser les données",action:"Nettoyage des référentiels articles et emplacements, historiques ERP et WMS, exceptions jamais documentées.",owner:"Chal-Michel",deliverable:"Inventaire des données et niveau de fiabilité."},{letter:"L",name:"Lire les flux et les décisions",action:"Cartographie des flux et des décisions quotidiennes à fort enjeu : aléas fournisseurs, transferts de stock, arbitrages de commandes.",owner:"Chal-Michel",deliverable:"1 à 3 cas d'usage chiffrés, avec go ou no go."},{letter:"U",name:"Unifier les règles métier",action:"Qui décide quoi, règles métier, circuits de validation, rôle et garde-fous de chaque agent.",owner:"Chal-Michel et le partenaire technique",deliverable:"Cahier des charges métier des agents."},{letter:"X",name:"eXécuter",action:"Le partenaire technique construit l'agent sur vos systèmes existants. Tests terrain, formation des chefs d'équipe et mesure de l'impact.",owner:"Partenaire technique, pu
4169is Chal-Michel",deliverable:"Agent en service, tableau de bord d'impact, équipes autonomes."}],ale=[{icon:kf,text:"Sans refondre votre système d'information"},{icon:__,text:"L'agent recommande, votre équipe décide. Chaque recommandation est explicable."},{icon:z1,text:"Démarrer petit, prouver, étendre, avec un go ou no go entre chaque lot"},{icon:k_,text:"Vos équipes construisent la solution avec nous"}],ole=["Réapprovisionnement et aléas fournisseurs","Stocks et transferts entre sites","Priorisation de la préparation et des expéditions","Assistant opérateurs : procédures WMS et accueil des intérimaires"];function lle(){return d.jsx("section",{"aria-labelledby":"du-terrain-agent-ia-title",className:"px-6 md:px-10",style:{background:"#06264A",color:"#F5F3EE"},children:d.jsxs("div",{className:"mx-auto max-w-[1180px] py-20 md:py-24 lg:py-28",children:[d.jsx("span",{className:"font-display text-xs font-extrabold uppercase",style:{color:"#B8734F",letterSpacing:"0.16em"},children:"Du terrain à l'agent IA"}),d.jsx("h2",{id:"du-terrain-agent-ia-title",className:"font-display mt-4 max-w-[940px] text-3xl font-extrabold leading-tight md:text-5xl",style:{color:"#F5F3EE",letterSpacing:"0"},children:"Pas un prototype de plus. Un agent IA qui tourne dans votre entrepôt."}),d.jsx("p",{className:"font-sans mt-7 max-w-[900px] text-base leading-relaxed md:text-lg",style:{color:"#D9DFE5"},children:"Les éditeurs et intégrateurs d'agents IA partent du principe que vos données et vos règles métier sont prêtes. Sur le terrain, c'est rarement le cas : référentiels incohérents, exceptions jamais documentées, fichiers Excel parallèles. C'est là que j'interviens. Je pilote ensuite la construction des agents avec des partenaires techniques, jusqu'à leur adoption par vos équipes."}),d.jsxs("div",{className:"relative mt-14 md:mt-16",children:[d.jsx("div",{className:"absolute left-0 right-0 top-[22px] hidden h-px md:block",style:{background:"rgba(184, 115, 79, 0.55)"},"aria-hidden":!0}),d.jsx("ol",{className:"relative ml-5 grid list-none gap-12 border-l md:ml-0 md:grid-cols-4 md:gap-8 md:border-l-0",style:{borderColor:"rgba(184, 115, 79, 0.55)"},"aria-label":"Chaîne d'exécution de la méthode F.L.U.X™",children:sle.map(e=>d.jsxs("li",{className:"relative pl-8 md:pl-0 md:pt-16",children:[d.jsx("span",{className:"font-display absolute -left-[23px] top-0 flex h-11 w-11 items-center justify-center rounded-full border-2 text-xl font-extrabold md:left-0",style:{background:"#06264A",borderColor:"#B8734F",color:"#B8734F"},"aria-hidden":!0,children:e.letter}),d.jsx("h3",{className:"font-display text-lg font-bold md:min-h-[56px]",style:{color:"#F5F3EE",letterSpacing:"0"},children:e.name}),d.jsxs("p",{className:"font-sans mt-4 text-sm leading-relaxed",style:{color:"#D9DFE5"},children:[d.jsx("strong",{className:"block text-[11px] uppercase",style:{color:"#B8734F",letterSpacing:"0.1em"},children:"Ce qui se passe"}),d.jsx("span",{className:"mt-1 block",children:e.action})]}),d.jsxs("p",{className:"font-sans mt-4 text-sm leading-relaxed",style:{color:"#F5F3EE"},children:[d.jsx("span",{className:"mr-2 inline-block rounded-full border px-2 py-0.5 text-[10px] font-bold uppercase",style:{borderColor:"rgba(245, 243, 238, 0.28)",color:"#D9DFE5",letterSpacing:"0.08em"},children:"Qui"}),e.owner]}),d.jsxs("p",{className:"font-sans mt-3 border-t pt-3 text-sm leading-relaxed",style:{borderColor:"rgba(245, 243, 238, 0.16)",color:"#D9DFE5"},children:[d.jsx("strong",{style:{color:"#F5F3EE"},children:"Livrable :"})," ",e.deliverable]})]},e.letter))})]}),d.jsx("div",{className:"mt-16 grid gap-7 border-y py-8 sm:grid-cols-2 lg:grid-cols-4",style:{borderColor:"rgba(245, 243, 238, 0.16)"},children:ale.map(({icon:e,text:t})=>d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx(e,{className:"mt-0.5 h-5 w-5 shrink-0",style:{color:"#B8734F"},strokeWidth:1.5,"aria-hidden":!0}),d.jsx("p",{className:"font-sans text-sm leading-relaxed",style:{color:"#F5F3EE"},children:t})]},t))}),d.jsxs("div",{className:"mt-14",children:[d.jsx("h3",{className:"font-display text-xl font-bold",style:{color:"#F5F3EE",letterSpacing:"0"},children:"Exemples de cas d'usage"}),d.jsx("ul",{className:"mt-5 flex list-none flex-wrap gap-3","aria-label":"Exemples de cas d'usage d'agents IA",children:ole.map(e=>d.jsx("li",{className:"rounded-full border px-4 py-2 font-sans text-sm",style:{borderColor:"rgba(245, 243, 238, 0.25)",color:"#F5F3EE"},children:e},e))}),d.jsx("p",{className:"font-sans mt-3 text-xs",style:{color:"#AEBAC7"},children:"Exemples indicatifs, définis au cas par cas lors du cadrage."})]}),d.jsx("p",{className:"font-sans mt-12 border-l-2 pl-5 text-sm leading-relaxed md:text-base",style:{borderColor:"#B8734F",color:"#D9DFE5"},children:"Construction technique : un écosystème de partenaires spécialisés, mobilisé selon votre besoin. Un seul interlocuteur du cadrage à l'adoption."}),d.jsx("p",{className:"font-display mt-10 text-2xl italic leading-snug md:text-3xl",style:{color:"#F5F3EE",letterSpacing:"0"},children:"Une IA qui tient parce que les opérations tiennent d'abord."}),d.jsx(xr,{asChild:!0,size:"lg",className:"mt-9 bg-accent text-accent-foreground hover:bg-accent/90",children:d.jsxs("a",{href:ac,target:"_blank",rel:"noopener noreferrer",children:["Réserver un cadrage terrain",d.jsx(jn,{className:"h-4 w-4",strokeWidth:1.5,"aria-hidden":!0})]})})]})})}function ule(){const[e,t]=E.useState([]),[n,r]=E.useState(!1),i=E.useRef([]),s=E.useCallback(l=>{i.current=l,t(l)},[]),a=E.useCallback(async l=>{const u=await fetch("https://pmrgfsomhgexwxtvhfvk.supabase.co/functions/v1/logistics-ai",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBtcmdmc29taGdleHd4dHZoZnZrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Njk1ODg2NDUsImV4cCI6MjA4NTE2NDY0NX0.Zo6SHcyUjGDNgQ_4xTScvu7BN05MvH9koLqvvIx8QQI"},body:JSON.stringify({messages:l})});if(!u.ok){const c=await u.json();throw new Error(c.error||"Erreur de connexion")}return u},[]),o=E.useCallback(async l=>{var m,g,h;const u=l.trim();if(!u||n)return;const c={role:"user",content:u},p=[...i.current,c];s(p),r(!0);let f="";try{const v=await a(p);if(!v.body)throw new Error("No response body");const b=v.body.getReader(),w=new TextDecoder;let y="";for(s([...p,{role:"assistant",content:""}]);;){const{done:A,value:q}=await b.read();if(A)break;y+=w.decode(q,{stream:!0});let x;for(;(x=y.indexOf(`
4170`))!==-1;){let _=y.slice(0,x);if(y=y.slice(x+1),_.endsWith("\r")&&(_=_.slice(0,-1)),_.startsWith(":")||_.trim()===""||!_.startsWith("data: "))continue;const I=_.slice(6).trim();if(I==="[DONE]")break;try{const k=(h=(g=(m=JSON.parse(I).choices)==null?void 0:m[0])==null?void 0:g.delta)==null?void 0:h.content;
4170k&&(f+=k,s([...p,{role:"assistant",content:f}]))}catch{y=_+`
4171`+y;break}}}}catch(v){console.error("Chat error:",v),s([...p,{role:"assistant",content:`❌ Erreur : ${v instanceof Error?v.message:"Problème de connexion"}. Réessayez dans quelques instants.`}])}finally{r(!1)}},[s,n,a]);return{messages:e,isLoading:n,send:o}}const Vx="#0d3b6e",ci="#b8734f",cle=[{title:"Diagnostic Entrepôt",prompt:"Mon taux de service est passé de 98% à 91% en 3 mois. Stock fiable à 95%. Équipe stable. Qu'est-ce qui peut expliquer cette dégradation ?"},{title:"Écarts Inventaire",prompt:"J'ai 3% d'écart inventaire sur mes articles à forte rotation. WMS SAP en place. Quelles sont les causes les plus probables et comment les corriger ?"},{title:"IA & Data Ops",prompt:"Je veux utiliser l'IA pour améliorer mes opérations logistiques. Par où commencer ? Quelles données préparer ? Quels quick wins réalistes ?"}],dle=[{letter:"F",label:"Vérifier la fiabilité des données avant d'interpréter"},{letter:"L",label:"Identifier les causes probables, pas les symptômes"},{letter:"U",label:"Formuler ce qui est actionnable par les équipes"},{letter:"X",label:"Proposer des leviers mesurables"}];function ple(){var p,f;const{messages:e,isLoading:t,send:n}=ule(),[r,i]=E.useState(""),s=E.useRef(null),a=E.useRef(null),o=((p=[...e].reverse().find(m=>m.role==="user"))==null?void 0:p.content)??"",l=((f=e[e.length-1])==null?void 0:f.role)==="assistant"?e[e.length-1].content:"",u=!!l&&!t,c=m=>{const g=m??r;!g.trim()||t||(i(""),n(g))};return d.jsx("section",{ref:s,id:"demo-agent-terrain",style:{background:"#faf6f0"},"aria-labelledby":"demo-agent-title",className:"org-sec org-sec--demo",children:d.jsxs("div",{children:[d.jsx("span",{className:"home-eyebrow",children:"Démonstration"}),d.jsx("h2",{id:"demo-agent-title",className:"font-display",style:{color:Vx,marginTop:14},children:"Posez une vraie question logistique."}),d.jsx("p",{className:"font-sans mt-4 text-[16px]",style:{color:"#4a4a4a"},children:"L'agent ci-dessous est celui que je déploie en mission. Ici sans accès à vos données."}),d.jsxs("div",{className:"demo-agent-panel mt-10 p-7 md:p-10",style:{background:Vx,borderRadius:3},children:[d.jsxs("div",{className:"grid lg:grid-cols-12 gap-10",children:[d.jsxs("div",{className:"lg:col-span-7",children:[d.jsx("label",{htmlFor:"demo-agent-input",className:"font-sans block",style:{color:"rgba(255,255,255,0.5)",fontSize:10,letterSpacing:"0.18em",textTransform:"uppercase",marginBottom:12},children:"Votre situation"}),d.jsxs("div",{className:"flex items-end gap-3",children:[d.jsx("textarea",{id:"demo-agent-input",value:r,onChange:m=>i(m.target.value),onKeyDown:m=>{m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),c())},rows:2,disabled:t,placeholder:"Décrivez votre situation en une phrase",className:"demo-agent-field flex-1 font-sans focus:outline-none",style:{background:"transparent",border:0,borderBottom:"1px solid rgba(255,255,255,0.25)",color:"#FFFFFF",fontSize:16,lineHeight:1.6,resize:"none",padding:"0 0 10px 0"}}),d.jsx("button",{type:"button",onClick:()=>c(),disabled:!r.trim()||t,"aria-label":"Envoyer la question",className:"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#b8734f]",style:{background:"transparent",border:0,padding:"0 0 8px 0",cursor:!r.trim()||t?"default":"pointer",opacity:!r.trim()||t?.4:1},children:d.jsx(jn,{size:18,strokeWidth:1.5,color:ci})})]}),d.jsx("ul",{className:"mt-7",style:{listStyle:"none",padding:0,margin:0},children:cle.map((m,g)=>d.jsx("li",{style:{borderTop:g===0?"none":"1px solid rgba(255,255,255,0.12)"},children:d.jsxs("button",{type:"button",onClick:()=>c(m.prompt),disabled:t,className:"w-full text-left flex items-baseline gap-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#b8734f]",style:{background:"transparent",border:0,padding:"12px 0",opacity:t?.5:1,cursor:t?"default":"pointer"},children:[d.jsx("span",{className:"font-mono",style:{color:ci,fontSize:11},children:`0${g+1}`}),d.jsx("span",{className:"font-sans",style:{color:"rgba(255,255,255,0.7)",fontSize:13.5},children:m.title})]})},m.title))}),o&&d.jsxs("div",{className:"mt-9",children:[d.jsx("p",{className:"font-sans",style:{borderLeft:`2px solid ${ci}`,paddingLeft:12,color:ci,fontStyle:"italic",fontSize:14,lineHeight:1.5},children:o}),t&&d.jsxs("div",{className:"mt-3 flex items-center gap-3",children:[d.jsx("span",{className:"demo-agent-scan","aria-hidden":!0}),d.jsx("span",{className:"font-sans",style:{color:"rgba(255,255,255,0.5)",fontSize:10,letterSpacing:"0.18em",textTransform:"uppercase"},children:"Analyse en cours"})]}),d.jsx("div",{ref:a,tabIndex:-1,"aria-live":"polite",className:"demo-agent-answer mt-5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#b8734f]",style:{color:"rgba(255,255,255,0.88)",fontSize:15.5,lineHeight:1.7,maxWidth:"66ch"},children:l&&d.jsx(Rp,{children:l})}),u&&d.jsxs("div",{className:"mt-7",style:{borderTop:"1px solid rgba(255,255,255,0.12)",paddingTop:16},children:[d.jsx("p",{className:"font-sans",style:{color:"rgba(255,255,255,0.7)",fontSize:14,lineHeight:1.6},children:"Cette analyse reste générale. Sur votre site, elle serait chiffrée."}),d.jsxs(Ke,{to:"/contact",className:"inline-flex items-center gap-2 font-sans mt-3 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#b8734f]",style:{color:ci,fontSize:15,fontWeight:700},children:["Approfondir en 30 minutes",d.jsx(jn,{size:16,strokeWidth:1.5})]})]})]})]}),d.jsxs("div",{className:"lg:col-span-5",children:[d.jsx("p",{className:"font-sans",style:{color:ci,fontSize:10,letterSpacing:"0.22em",textTransform:"uppercase",marginBottom:14},children:"Cadre d'analyse appliqué"}),d.jsx("ul",{style:{listStyle:"none",padding:0,margin:0},children:dle.map((m,g)=>d.jsxs("li",{className:"flex items-baseline gap-4",style:{borderTop:g===0?"none":"1px solid rgba(255,255,255,0.12)",padding:"12px 0"},children:[d.jsx("span",{className:"font-display",style:{color:ci,fontSize:18,fontWeight:800,minWidth:16},children:m.letter}),d.jsx("span",{className:"font-sans",style:{color:"rgba(255,255,255,0.75)",fontSize:13,lineHeight:1.55},children:m.label})]},m.letter))})]})]}),d.jsx("p",{className:"font-sans mt-9",style:{borderTop:"1px solid rgba(255,255,255,0.12)",paddingTop:16,color:"rgba(255,255,255,0.45)",fontSize:12.5,fontStyle:"italic",lineHeight:1.6},children:"Démonstration sans accès à vos données. En mission, l'agent est connecté à votre WMS et paramétré selon vos règles métier."})]})]})})}function nE({number:e,children:t,className:n,as:r="span"}){const i=e!==void 0?`${typeof e=="number"?String(e).padStart(2,"0"):e} — `:"";return d.jsxs(r,{className:bt("ds-eyebrow",n),children:[i,t]})}const mle=7*24*60*60*1e3;function Gx(e){return e.customRoute||`/analyses-outils/${e.slug}`}function Kx(e){if(!e)return"";const t=new Date(e);return Number.isNaN(t.getTime())?"":t.toLocaleDateString("fr-FR",{day:"numeric",month:"short",year:"numeric"})}function fle(){const e=[...Ri].sort((l,u)=>(u.publishDate||"").localeCompare(l.publishDate||"")),t=Ri.filter(l=>l.featured),n=t.length,r=Math.floor(Date.now()/mle),i=e[0],s=new Set;i&&s.add(i.slug);const a=[],o=l=>{!l||s.has(l.slug)||a.length>=5||(s.add(l.slug),a.push(l))};return n>0&&o(t[r*2%n]),n>1&&o(t[(r*2+1)%n]),e.forEach(l=>o(l)),d.jsx("section",{className:"py-12 md:py-14 org-sec org-sec--ressources",style:{backgroundColor:"#faf6f0"},children:d.jsxs("div",{className:"section-container mx-auto px-4",children:[d.jsxs("div",{className:"flex flex-wrap items-end justify-between gap-4 mb-6",children:[d.jsxs("div",{children:[d.jsx(nE,{className:"text-[#b8734f]",children:"RESSOURCES TERRAIN"}),d.jsx("h2",{className:"font-display text-[#0d3b6e] mt-2",children:"Analyses & retours d'expérience"})]}),d.jsxs("div",{className:"flex flex-wrap gap-x-6 gap-y-2 text-sm",children:[d.jsxs(Ke,{to:"/ressources/glossaire",className:"inline-flex items-center gap-1.5 text-[#0d3b6e] hover:text-[#b8734f] transition-colors",children:[d.jsx(Ef,{size:16,strokeWidth:1.5}),"Glossaire entrepôt"]}),d.jsxs(Ke,{to:"/analyses-outils",className:"inline-flex items-center gap-1.5 text-[#b8734f] font-medium hover:underline",children:["Toutes les analyses",d.jsx(jn,{size:16,strokeWidth:1.5})]})]})]}),d.jsxs("div",{className:"grid gap-8 lg:grid-cols-12",children:[i&&d.jsxs(Ke,{to:Gx(i),className:"group lg:col-span-5 block",children:[d.jsx("div",{className:"aspect-[16/9] overflow-hidden rounded-lg",children:d.jsx("img",{src:i.coverImage,alt:i.title,loading:"lazy",decoding:"async",className:"w-full h-full object-cover transition-transform duration-500 group-hover:scale-[1.03]"})}),d.jsx("div",{className:"mt-4 flex flex-wrap gap-x-2 text-[10px] font-semibold uppercase tracking-[0.1em] text-[#b8734f]",children:i.category.slice(0,2).map(l=>d.jsx("span",{children:l},l))}),d.jsx("h3",{className:"font-display font-bold text-lg md:text-xl leading-snug text-[#0d3b6e] line-clamp-3 mt-2 group-hover:text-[#b8734f] transition-colors",children:i.title}),d.jsx("p",{className:"text-sm leading-snug line-clamp-3 text-[#4a4a4a] mt-2",children:i.excerpt}),d.jsxs("p",{className:"text-xs text-[#4a4a4a]/70 mt-3",children:[Kx(i.publishDate)," · ",i.readTime," min de lecture"]})]}),d.jsx("div",{className:"lg:col-span-7",children:a.map((l,u)=>d.jsxs(Ke,{to:Gx(l),className:`group block py-4 ${u===0?"":"border-t border-[#ece7df]"}`,children:[d.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.1em] text-[#b8734f]",children:l.featured?"GUIDE":l.category[0]}),d.jsx("h3",{className:"font-display font-semibold text-base leading-snug text-[#0d3b6e] line-clamp-2 mt-1 group-hover:text-[#b8734f] transition-colors",children:l.title}),d.jsx("p",{className:"text-sm leading-snug line-clamp-2 text-[#4a4a4a] mt-1",children:l.excerpt}),d.jsxs("p",{className:"text-xs text-[#4a4a4a]/70 mt-2",children:[Kx(l.publishDate)," · ",l.readTime," min de lecture"]})]},l.slug))})]})]})})}function hle(e){E.useEffect(()=>{const t=e.current;if(!t)return;const n=new IntersectionObserver(s=>
4171{s.forEach(a=>{a.isIntersecting&&a.target.classList.add("visible")})},{threshold:.1});return t.querySelectorAll(".reveal").forEach(s=>n.observe(s)),t.classList.contains("reveal")&&n.observe(t),t.querySelectorAll(".reveal-stagger").forEach(s=>n.observe(s)),()=>n.disconnect()},[e])}const Ma={value:"−240 000 €",label:"de coûts en 3 ans",mechanism:"Gain réalisé par la stabilisation des flux, le réajustement des effectifs et la maîtrise de l'intérim sur un site industriel sous tension"},Xx=["15+ ans","5 groupes","70 collaborateurs","15 000 m²","5 M produits/an vers 164 pays"];function gle(){const e=E.useRef(null);return hle(e),d.jsx("section",{ref:e,className:"result-section",style:{backgroundColor:"#faf6f0"},children:d.jsxs("div",{className:"result-section__inner",children:[d.jsx("span",{className:"result-section__eyebrow",children:"RÉSULTAT TERRAIN"}),d.jsxs("div",{className:"hero-number reveal","aria-label":`${Ma.value} ${Ma.label}`,children:[d.jsx("span",{className:"hero-number__value",children:Ma.value}),d.jsx("span",{className:"hero-number__label",children:Ma.label})]}),d.jsx("p",{className:"hero-number__mechanism",children:Ma.mechanism}),d.jsx("span",{className:"hero-number__rule","aria-hidden":"true"}),d.jsx("p",{className:"secondary-stats",children:Xx.map((t,n)=>d.jsxs("span",{children:[t,n<Xx.length-1&&d.jsx("span",{className:"secondary-stats__dot","aria-hidden":"true",children:"·"})]},t))})]})})}const vle=1,yle="4bd9ae36-0ddc-415a-aaf8-80e1932b3e02",ble="fd0f461d-ba20-49bf-aa3f-916d3becc021",xle="/__l5e/assets-v1/4bd9ae36-0ddc-415a-aaf8-80e1932b3e02/logo-solus-pro.png",wle="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/4bd9ae36-0ddc-415a-aaf8-80e1932b3e02/logo-solus-pro.png",qle="logo-solus-pro.png",Sle=15184,Ale="image/png",Ele="2026-07-17T11:22:18Z",_le={version:vle,asset_id:yle,project_id:ble,url:xle,r2_key:wle,original_filename:qle,size:Sle,content_type:Ale,created_at:Ele},kle=1,Cle="83e4e827-b80a-44d9-a33d-6ab080a267b1",jle="fd0f461d-ba20-49bf-aa3f-916d3becc021",Ple="/__l5e/assets-v1/83e4e827-b80a-44d9-a33d-6ab080a267b1/logo-inseec.png",Tle="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/83e4e827-b80a-44d9-a33d-6ab080a267b1/logo-inseec.png",Ile="logo-inseec.png",Ole=4565,Lle="image/png",Mle="2026-07-17T11:22:14Z",Nle={version:kle,asset_id:Cle,project_id:jle,url:Ple,r2_key:Tle,original_filename:Ile,size:Ole,content_type:Lle,created_at:Mle},Rle=1,$le="280a5562-e84a-4168-ac71-245a0a482b7a",Dle="fd0f461d-ba20-49bf-aa3f-916d3becc021",Fle="/__l5e/assets-v1/280a5562-e84a-4168-ac71-245a0a482b7a/logo-jenatzy.png",Ule="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/280a5562-e84a-4168-ac71-245a0a482b7a/logo-jenatzy.png",zle="logo-jenatzy.png",Ble=5299,Wle="image/png",Hle="2026-07-17T11:22:23Z",Vle={version:Rle,asset_id:$le,project_id:Dle,url:Fle,r2_key:Ule,original_filename:zle,size:Ble,content_type:Wle,created_at:Hle},Gle="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAADyklEQVR4nO3c3VEjRxDA8e5BvLcEAawjQBmcHMEpA18GhyOAi8AQgY8IDiJAjsBkYN07rDYANO2HW1yULO3pY3a0gv+vigfEantK6u2enZEQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPCOmJntewyHzn4odj1PL8FYNmJmQxGp6h+sycys1+sNY4wjVZ3O5/NJVVXTXc+rCca2NjMbhhDGZVle5ox7qE5PT0cxxg/uPhIRcfc7EflaVVWyiydbBTCzQlW/xRh/zRXz0JhZEUIYu/tHERnO53MTkYm7f6mqatJGzCwJUL/596o6mc1m0xwxD4GZ2dHR0djdP7j7WETM3UVEKne/FpGrlFf7Mq0ngJmZqn4TkSKEcNN2vC571cc/1m94EWN8fcikjTLfpPUECCFcuPtQRKaPj4+TtuN1zUIfH83n82WH3br7dVtlvkmrCWBmF+5+LiKiqpM2Y3XFij6+TLYy36S1BDg5ORnHGC9ffo8x3rUVa58a+vgqkxDC9dPT022mITZqJQHMrIgx/rHw8LSNWLmt0ceXqVT1JsZ4u48y36SVBFDVP0WkWHh42kasHNbs48v8V+Zns1knF76SJ4CZfRaR0eLj++xzm9qgj6/S6r17SklXAuv7/b9F5H8vmLv3u5oEy/r4FqfpbJlvkrQC1Ld8S1+8Xq83FJFJynjb2rKPrzJ19xvpcJlvkiwBzKxw90+r/h5jHMkeE2CHPr7KwZT5JslaQL/fv5clvf+Vyt1/ydUGFvu4bFfWF71M6r6m2InrgiQJUPf+f34aTPWqLMvfU8RcMoYUfXyV7Eu0uSRpAXXv/+lx7n4+GAy+l2V5tWvMxH18lTdR5pskqQD9fn8mG1xxqnpZluWXTeMs9vFNn7+mTizR5rJzApjZSFXvt3jqVFUnIYSb5+fn6eueamZ2fHxcxBiH7n5Wbyal6uOrvNky32TnBBgMBlfu/jnFYPZkbztxXbDzHMDdz1IMJLN3VeabpJgEFgnOkUunduK64D0kwEEu0eaS/WPhGXV+J64LUiRAJe3Ozjf15u/dU0qRAA/S3j35uijzW0pxF/CXqo4SjGUbB70T1wUpFoKs3gfI2QYo84mk2gw6V9XFzwCm9uZ24rog53bwtt7lEm0uyRLAzCyEcOXuvyU4HZO6TJJ/O9jMPqnqhWy+QDRV1Tve9Lxa+3q4mY3rT+ScyY9keJkkvvxvgAdV/a6qD6m+6w4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAI/gWOJD71KJIQ8gAAAABJRU5ErkJggg==",Kle="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAGv0lEQVRoge2XXWxUxxXHfzP37pfX3vUabIN3CSw4MSbQYiB8FkxDaCwESZSoEoraVErUN9RITZWHVqIPbZWmD23clz5UpUqhalq1CmooKSgRgbiNE7BJUWQw2MFO1gab2Gt2vd97Z/pw1941mGAIitRq/9LVvZo7c+Z/Zs458x8oo4wyyiijjDLKKON/FoK9B+vuqUUtig+iMIsGtP0W+p5OZwLv3PGoKXJagLY/bXIKw7AwhEIKjSyQVVqgtMBSEktLULIwvmQsd+ecCTTPibC2V9MwLKrcSeq8MRqqogR9URoqJ6j1xqjxJKhypfCYWZxGHkPahCwlyFomqbyTWMZDNOVlNOHjymQ1Q7EAw/EAowkf8YwHyzLsOee4W+atfwlQAiEV870xVtQOsS74MWsWDtA0/woNVRNUu5K4HTmE0NPRMmdo0EqQzjuYyFQwHAvQO7aA7itLOD20lJ5rQcaSVWglQRZ2aFaWew/qG5tQgip3kg2hPvY0naV1yQUaAyN4XZki0VvbvHOUpAsaEhkXfdF6Tg4s543eFt6PNBJPV8zqyEwHtMTnSrJneTfPtZxkQ6ifClfG/qfuEdm5oMShZMZFZ2QZB862cqS3hetpL4gimWIIacH60CX2tx5m2+JenEYeSwsSaReGVLjNHErbW661mJ7AbeYwhCJjOchZBlOZKYU9Jp13cOv40rjMPEaBUNYybRsl3QXQGr7AqvoIm0J9HDi7je7h8HR+mFPkn1xxml+1HaLBN8GLx/fS+WkjhlRYSrJp0SVe3vka15I+9v3jO1yd9COEptKZ4ZW2g4T8UV7459OcG1mEFBqnkecHW46yZsEA+44+w2jC7g/YzhfgkBYv7fwzGxb1Y1mSn556nLf6V2LI4gpbWvBsyymWBkaRQvFK2yHaOx/lbz3rQWhMlGTrkvP8etcfCPqjZH
4171MmF0aDvDfQDNICZRBwpwDIWQZdQ0sZjNaB0FR7EiRybn7X1crvu1vJWQ4AvrvubR4O9zA66eNMpJFPJmpBKNtpVwpTWmgEDsMinvGAgEishj+d20zfZw0l1UeDkjil4meP/IWgL8rK+gjtuw4ykvDTMbAc0+3M8PymYwT90WKcS1V8EDNizm63QICUed7qf5D2zjZyygCh+EbjOX6y4694nFk73Ur6e50pXt75GvfPu4rSkkpnmpV1EdDw7mATlyfmg2HhMbNoLUhbJkhN95XFZPImjzV1AxCoSPD8xmOcGQ5jLvKPsbbh8l1UFM1k1s0v/rWb8WSlvWpasqo+Ql3l9VnsaZI5Jz/v2IPbzJFXku9vfpPNiy+Ryxsc6W3BshyAZnfTWSYzbt68uBqkIp6u4I3eNTwc7pnemLUNlwn5xj/vHLg9TKmY55lkPOWdJnnoP1t4fHkXW8O9N/V3GBZfu+8idd7rWFrSWDMCAvrH6+n45AF7p4VmkW+MRM5VDCUBx/pWMRQPEPRFZ6yK/PT6PLqGw3dxEAk8ZpYXthxlsX/MPqmFZiRezUunHiOW9CBusCmFptYbI+iLEvKNc+7qfVweq+XEQDND8QAIjQB+c/oRXv1w63TiIxSXxhdwcqB5usR2DYeJxGow01kX7e+1sTHUT9A/Dhb26acFaPtdrBzC1jFaAhpLGTzU8DH7NhznxeNPo7UEAcf7vsJvu77Ok82ni3bQpLJu2v+9qxBeApeZozEwytHeFrBMEJonVnzAt77aAcCrH27j7+fXgdDkcyav96zjmyvfZ3TST3vno6SzLkyk4t3BJr539Nv8su2PhPzjPLf2HXYs+wgpNEoLllR/hhTgdyX5Yethu3IUaniwKsozqzvwmFnSeQdC2OJtQeUEbjPHj1oPE8+4b9qNqRBcWjPCE81n2B7uATQ7lvWwumEQgHDgGtsWn0cI0BpqvXEuXlvI/hNP0THYBFKVnMRasD7Uz/7W19l5/0c4HfliVSo9weUNLNQt2qfG3Nh+UygyM3xL55o6kSXk8gZv9z3Ij088xQeRZVP5oWeVErubunl2zSk2hvps/XMvdc9cUSCfyLjojDRyoHsbR3rXEMtUlJZ1fRsx18/uB86yfcl5Gmu+ZDE3Xs/JweaCmFt2KzE3mwMzHRFSMa8izoraIR4KXrbl9LwrNFRFqXYncZs5hPyCcjpdwXA8QO/YwoKcDs9VTn+eAzO7TV1opGHhc6VmXGgWVk5Q540R8CTwfbkXGm0C52/rQIkxpQUTKS8TqUouXguWJKEGqTCEwpBf4Eop70i3axPYficjph1i9rCxlIFlmUzfmWf0vyuSZZRRRhlllFFGGWX8v+K/zpUiZPt2SjwAAAAASUVORK5CYII=",Xle="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAYFBMVEUAplH///8ApVAApU8ar2La8uXu+fMNqlnH69gytnGn38FpypgUrV7S7+CI1a35/fu759Ans2t70aTs+PGw48jd8+c4uXdQwYaO17GU2bXj9eyf3bxZxIxKv4KB0qjD6tV8sMmbAAABUklEQVRIie2V3ZKDIAyF0aiIoCL+1NWWvv9brjMNrNME92b3rt9lyYEcDo1CfPh/ICfApcAUBCMhqYGhnst3WusXkScEtz7jqFbDK8Cx9QeN5NtqUoJecwIwbUqQWckJ1Ij7dfqFs8HUXDAuoue5AER+oWAbOIEn58OCe7SGMzGhoIuL8dD90vM9CHKJ91Y9mANAVa/VUYV+jQ8HsJd0D8FODVJjfT2wMQTPhKfic5748s0XbH0y51LzDyl6JvQTbyF6rpF2DBLLPowOVxuJGOU2/M1f5ezghwcqmJeRFyV2fA4VdmyTXiws6Hk7Owz/wX6hguC5Pl0iSOxzZE5YUbCfLAidft3SomBVkdseounSnrO+isShM9Pkomc2ak1zA31R70j50dKarJ+1YHKOnt93bz03L463bbkx3LiHSc17OuePQS8gPerpl+SXT8mHv+QbSQgRN7M7soQAAAAASUVORK5CYII=",Qle="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAw1BMVEVHcEz7xrtVVmT2kodVVmX6uq1VVmSsdHWjcXNMTFhXWGdVVWNXWGZVVWRWVWRVVmT1in9WV2VWVWRXV2ZVVmX2lIn2lYpXV2bzdGr0e3DzdmzzdWv0eG7ybWX6vbBbWGbzbmXzb2dKSVXzbmVvTVT1hXj6w7f0fHH7xrr5rqD0eW73oJL4opX3nY/7yL30gnb3l4n6wrasYmFXWGfybGTzdGpGRlL0fHFRUmD1iXz4p5n2lIb5sKL3nY+SVlnTZ2K5YF4sX5SPAAAAQXRSTlMA/aMTKf4VBAr++r7zdl2PIdI54Uk5Lut5S5atYfVW/djE3+n+yHf1neDYlr1z1eflwL7//////////////////tmyUy4AAAquSURBVHic7VtZe9pKDO21ARswW2wMBoePJYQ1CSlQlgDJ//9VVxpvM/aMN3iM2ofe3iCdOZKONJP0z59f+7Vf+zXWFDDVN/yvR3pM9qeostxsmm3yy2w2m7J6HwRFBoem59BEhwnxm23Ltrtotm1ZbRMh3BMfTjMYvDo2GAzapix2p8CXWxC85xmiABB5aZD96HPPAAS4EzmD+HZvBDYcLolNwfr9nm0187CgNtuD+fwT7N2zz/fPz/mgLYsANNvd4fNut3dtdtjPZoePaa8bg1pkitocvM4/34v/sfYOCEQA1KbVHe4AgAPhsD+gzT6m/a5txtYOJ75sYvxFsfgf/qIsBQAfwp5AmAGEnpWRAgXif7rRWRLe569NEQC57QAIKPBJ6Lbj+ydCAJwfjo/GAohLAaTNHj3vXKPSMJste7awdLjxzbdPN34YwvxVCAA4sPrDZzc6UwiQBLuZvhehAFeLS/HiRqcRvM8HZgyAdrc/ZCjwOFhiEtICwASsF8XLJeAgyMBrrBRBGbpJ2LPNMPvoW6l7UTEh/uXiUkAYKAYEyH9iAMim3Z88MxS4CKAOrWYqAKDn7dUCAfgQ/DKAFmjHFTOIcbs3nHgc0FmAOuzGfpY+xWAdie9A+HwdJJxCkbtuHVIQSD86YpCCA5CA1fp8cY3moEgqMMGFbHX7E78OKUECMbATP42mtlfrxfl8cTFQHEAFJsoJaIHV8ynwIBwIC8seTKXE80ML0PEpDoqgQSIRpPDLZndEJYGqxI9+10pUI6jAt/UZzYVQ9BG8x2pQcATZ6o38JNCCMFv2u4mNILdBg840Ap+D99d2MoN4BtOmkrAPWgGHUlIOFdDA9cYHcPbiX4qL989Bur3CEYNdlIM9qFFCHSqq+bbeXM9XlgIsxQW0YEolU4kY7HgcjOLVCHe6lR+frQOIn3qpUE1KDJg6gCqIUyMFK3BzRQTXEITFepB+mLBiQDcD1GHcagIJWK2vaGe2DC6LxTzLUiWbjBgEmjiDJJiiOgQJsFZIAJz/ynIA8d+SJYByJTe7owmTBJcEXE1E8xw+hQn4cii40hxA/CwLDXIQFgNPEyeoRvwkwB7+tnHCMxjOQMAqnQRQztrd3nDHQUDUiN/OUIGrzdfXlx/ea8bFYv2WaoxQBncEaj9kICz5aqQoTXs1BQYAwRcLYbFeJWt42B10dH84CYVHAM+Tvs1rKDIEkAAvfpCDxSq9BAQIVHoo0RTMRlCHEQCgnxZJwFcUQ/YEEMOLIluHLoJhn3NPgXXybfp1YuOf8TdWYKZLhWdy2+5NwmWAEGbDvh2pQ8V8609PX4H5ZYAVmOuKTzaDMAKkYLdfdsNdhUN8+nE6uRxcgyRA/BRrCM/wotSPJAFB7IfhixJOUDf+KVQHm1XcTSQeAY6EYSQ8AJhAHTJOVdPqTk8nCsHVTcImZwU6CEz/nsJieB7iSAjcEqgfJ8d8DhDDZr1KWsRjKWhS9xSag+chLKg+ByRZ0w+fgVNQh5sVDoH8r0yK2YvUIcEwoVcT3KSXHgFMIUAC2vkJQAAoBvwk9Ltec+GNsv8xOx1OoSRcN5t1+hsl36L7oUfBEG+r5OlRhjv1cgbhD254HwNUQHYNZhmAERsVA7Rn7AR8R8SHRSgAJODgQ3DjT1d2PgmgDOsrPBIcm4zwBc+y7B6cfwaXtyAHLobNysorAZSF90OKg+EIHzP7o+WMPKMAggNdCJvpHRJAUQBiwKcA6gCfNZfLySwSHwqBJOCed17XBGLgQKCfMJwk+Bi+lquse6DAVJgzgjLY+Q8IHgQ//gwSkHUPFCJo2lxF3jG3phAFmyncIB6QADQcdf7DjSgPB5qD2QnusW/RtSmv4WYgSkLoNc1lAN8VM9zEko0MZhEHkVLE9+2HNEBg+I7NXU52zFOWYx/u+R8JAN/+uj1RK+y
4171ZXiCP63eOII6pT7W/f3++vxOaYb///v75+7deemgCwJTSU6Oqv9x++AiCLHz/3G6dar1QeiwAtfBUk8bjMiDgsrAnLHzD6X9uL+XyuFF/eiwHJYPE/1d+ebndBBCQ/NvtBeKXx1WpBggeFl5RC7UqhCf2QliIInDC4xcBzvJYemQWSoV6o+UBABZut1AmHO7x9O6XAAeNeuFRSVAKdSTAA0BYYGhww5f98JiFlmQ8iALSAGN0GiAgNPygYXD68JgAgHAsd6oPKgMFElDVEcA/GsELsRsa+VPw/wgB5eOxBYX4EAAFo9Y6Ho/lEAck1ng8fhkzf+uFPx47Van+iCRgB+rHsgOAiTWGbkOrjsPhCQBNf0wSSnWppaHDCASs9LpRr4FE0Ol34x+PFV0yCqU7w6tQga1OhcQPIRhLtfpToVB4MhyRKDPnP26PW61auzcJ0AF1Sa9snSPRGKDTa0+FElrBcLskFH9bgTos3AkAJKiqbdEfhj/6YVBpDE/uXZ1wqs/lfwtW6aAY3FMFioozsAK+jkeWhH+00qkFQxo7hw+OfyQI7qxDtWRIuoaH2R63bnwHAqv1SqHWGntn985POGjBXMwPQEUJ0CquMxrCuNVgTlaCTI1d+rd+eLAOMJW/DmELkvSK7+zoJ2JMqovyC7Xa0IPjBxBQDAo5KYAhDBLQCcIjAgcDdKDBNDh0S42oxZYJj0nQG0ZOBCo67Wi0NxeC1go7VVTQK11j6XcAdMJgUxtKQCfsDwFonJ0v6JewaZiuXBQ4EhC1ik5JQIBA+OWOGGQvRGgt/pEqZM5GHMLUlngAUAxgRc38c0ggsJLe4QBAceHtOoozNbiIUbQynx9GDDe+RmYcB4CCTcPlAHOWFQBKQItbU6SxuYSSzUHwmawbqlKiJYC2GGkD4Wy0KlzWIn2bFB8vAtx8bnUJKkr4qXpV41ZBVjHAiwCfTBxvwrMoJeNBYoCzpbONesKejrv4CisHPtjgtK7oIJgAbj2jBsVOV+wdXhIqkIT0dzWUAEFH4xoS5wVXE52LAPZDI+V6hkOIK6rYAkmaphQEarRNf08RJ1IPrSE8c8qHBx7KJ50YqIYkdCHSIAoArtG8T4MYpNoPnasgNwOpmpld4xiLkRDWQUPkII2cETUSHABFNBEAEXQRhakaSRWpUUU8Rmj8Nf5Iq5DLbqofhML3FL4a6YlioMYM9bRthNc5fhsniwG5CvLjZxCSUkkoZPxligIgWuxwnqW+aoulnIhBTA5wq+KvFBmHiVCN4is5RgK0pCEQdmTAOOd3QkMsBuQmwv1YOg2irAS3VcFCgzu96FNPIgnoZF6phCud1hKKAX6In7nsS6WiihZUcCaYaGQK8ysgx1pN1Iiv6JpgJJAxxl8pc1wssKCF7rgvR+QmItKvHFerGE0lhEZ/Ekq8hpC7aMb4ThL4JyIlFTmRKpJPLc0awjGxrEMSoru9WqoLr4I5HxjEVY1qFAKgoHLwNIg8+OZ7X1BU4W6h43d0ogDCNVupaJ0WbjF5v/OB61lV72jhk1WirLpdw35ZR69KjbqR/zsvOBNqDakVdsx7PVTJta6jUQ
4171anl2pQrvd85wfqoF6ToBIYxzruFiEAuEvWGg1JCn43GrW6kWKNTUBQMMAx5RZ/QfxIY6vwpYzhS3ypdO+3PBTwWwq7Rce8n0ol/zjSN+cv7gvv+GUc/1Ee8c84f+3XHmj/A2oC74xRqnQcAAAAAElFTkSuQmCC",Jle="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAi0lEQVQ4jWNgoBe4z2f3H5s4EyWaSbKZLEOQNZFsALoGisIAGbyKlPn/KlIGbhiGAfPNkv4f1A7E61yx5U8YkQ2BgwrbYpx+hvGRNb6KlPkPd4GVU9v/jsO9jNg04QNMDAwMDKKeE/8f21fFiC6p+OkQIyFDSA7EQWgAS+winH5E9/9zGz3y8wQuAACBDT41jhptNAAAAABJRU5ErkJggg==",Yle=1,Zle="a2601602-b33c-45d5-9ff1-9a0e9d0f5479",eue="fd0f461d-ba20-49bf-aa3f-916d3becc021",tue="/__l5e/assets-v1/a2601602-b33c-45d5-9ff1-9a0e9d0f5479/colis-chaine-du-froid-carboglace-un1845.webp",nue="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/a2601602-b33c-45d5-9ff1-9a0e9d0f5479/colis-chaine-du-froid-carboglace-un1845.webp",rue="colis-chaine-du-froid-carboglace-un1845.webp",iue=82782,sue="image/webp",aue="2026-09-04T15:04:21Z",oue={version:Yle,asset_id:Zle,project_id:eue,url:tue,r2_key:nue,original_filename:rue,size:iue,content_type:sue,created_at:aue},lue=1,uue="8519355d-7ec1-42df-bcd6-6b65a7620222",cue="fd0f461d-ba20-49bf-aa3f-916d3becc021",due="/__l5e/assets-v1/8519355d-7ec1-42df-bcd6-6b65a7620222/site-ikea-thiais.jpg",pue="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/8519355d-7ec1-42df-bcd6-6b65a7620222/site-ikea-thiais.jpg",mue="site-ikea-thiais.jpg",fue=715030,hue="image/jpeg",gue="2026-09-04T19:00:10Z",vue={version:lue,asset_id:uue,project_id:cue,url:due,r2_key:pue,original_filename:mue,size:fue,content_type:hue,created_at:gue},yue=1,bue="b00f9a9e-0dbb-4acb-8799-dbea91f3ae73",xue="fd0f461d-ba20-49bf-aa3f-916d3becc021",wue="/__l5e/assets-v1/b00f9a9e-0dbb-4acb-8799-dbea91f3ae73/site-nike-la-defense.jpg",que="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/b00f9a9e-0dbb-4acb-8799-dbea91f3ae73/site-nike-la-defense.jpg",Sue="site-nike-la-defense.jpg",Aue=518142,Eue="image/jpeg",_ue="2026-09-04T19:00:26Z",kue={version:yue,asset_id:bue,project_id:xue,url:wue,r2_key:que,original_filename:Sue,size:Aue,content_type:Eue,created_at:_ue},Cue=1,jue="47a78a76-e05e-4d95-9654-58b2f4cd591e",Pue="fd0f461d-ba20-49bf-aa3f-916d3becc021",Tue="/__l5e/assets-v1/47a78a76-e05e-4d95-9654-58b2f4cd591e/site-sevegrand-saint-gobain.jpg",Iue="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/47a78a76-e05e-4d95-9654-58b2f4cd591e/site-sevegrand-saint-gobain.jpg",Oue="site-sevegrand-saint-gobain.jpg",Lue=183456,Mue="image/jpeg",Nue="2026-09-04T19:00:10Z",Rue={version:Cue,asset_id:jue,project_id:Pue,url:Tue,r2_key:Iue,original_filename:Oue,size:Lue,content_type:Mue,created_at:Nue},$ue=1,Due="12132bb5-f703-49e1-ae19-d5f25735323e",Fue="fd0f461d-ba20-49bf-aa3f-916d3becc021",Uue="/__l5e/assets-v1/12132bb5-f703-49e1-ae19-d5f25735323e/site-cenexi-fontenay.webp",zue="a/v1/fd0f461d-ba20-49bf-aa3f-916d3becc021/12132bb5-f703-49e1-ae19-d5f25735323e/site-cenexi-fontenay.webp",Bue="site-cenexi-fontenay.webp",Wue=66800,Hue="image/webp",Vue="2026-09-04T19:00:10Z",Gue={version:$ue,asset_id:Due,project_id:Fue,url:Uue,r2_key:zue,original_filename:Bue,size:Wue,content_type:Hue,created_at:Vue},Kue=[{name:"CENEXI",logo:Qle,role:"Head of Logistics — Directeur logistique de site",years:"11/2022 – 10/2025",scope:"Usine pharmaceutique BPF · 15 000 m² · 40 personnes",photo:Gue.url,photoAlt:"Vue aérienne du site Cenexi à Fontenay-sous-Bois"},{name:"SEVEGRAND (Saint-Gobain)",logo:Jle,role:"Responsable d'exploitation",years:"07/2021 – 10/2022",scope:"Distribution BTP · 6 000 m² · 20 collaborateurs",photo:Rue.url,photoAlt:"Site Sevegrand Saint-Gobain avec chariot élévateur et stocks de canalisations"},{name:"BIO-RAD Laboratories",logo:Xle,role:"Superviseur logistique",years:"09/2014 – 07/2021",scope:"Entrepôt 14 000 m² · 47 000 emplacements · 164 pays",photo:oue.url,photoAlt:"Colis de chaîne du froid préparé avec carboglace pour une expédition pharmaceutique"},{name:"NIKE La Défense",logo:Gle,role:"Responsable des opérations en magasin",years:"02/2014 – 09/2014",scope:"Retail premium · 20 personnes",photo:kue.url,photoAlt:"Allée d'entrepôt Nike avec cartons de chaussures rangés sur racks"},{name:"IKEA Thiais",logo:Kle,role:"Responsable de département logistique adjoint",years:"09/2008 – 07/2011",scope:"Membre du CODIR · 70 collaborateurs · 17 000 m²",photo:vue.url,photoAlt:"Façade du magasin IKEA Thiais sous un ciel bleu"}],Xue=[{name:"INSEEC",logo:Nle.url,role:"MSc Supply Chain",years:"Interventions pédagogiques"},{name:"Lycée Camille Jenatzy",logo:Vle.url,role:"Formation professionnelle logistique",years:"Interventions et accompagnement des apprenants"}],Que=[{name:"Solus Pro",logo:_le.url,role:"Accompagnement conseil & formation logistique",link:{label:"solus-pro.fr",url:"https://www.solus-pro.fr/"}}],Jue=["SAP EWM — 6 ans de pratique","BPF / GDP — pharmaceutique","ISO 9001 et ISO 13485 — audits passés","IATA DGR — 96,5/100","Température dirigée, douanes, export 164 pays"];function Qx({name:e,logo:t,role:n,years:r,scope:i,link:s}){const a=d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"trust-logo__frame",children:d.jsx("img",{src:t,alt:`Logo ${e}`,loading:"lazy",decoding:"async",width:128,height:40,className:"trust-logo__img"})}),d.jsx("span",{className:"trust-logo__role",children:n}),d.jsx("span",{className:"trust-logo__years",children:r}),i&&d.jsx("span",{className:"trust-logo__scope",children:i})]});return d.jsx("div",{className:"trust-logo",children:s?d.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"trust-logo__link","aria-label":`${e} — ${s.label}`,children:[a,d.jsxs("span",{className:"trust-logo__external",children:[s.label,d.jsx(a_,{size:10,strokeWidth:1.5,"aria-hidden":"true"})]})]}):a})}function Yue({name:e,logo:t,role:n,years:r,scope:i,photo:s,photoAlt:a,tilt:o}){return d.jsxs("article",{className:"trust-employer",children:[d.jsx("div",{className:`trust-employer__media${s?"":" trust-employer__media--placeholder"}`,children:d.jsx(Yc,{src:s??t,alt:s?a??"":`Logo ${e}`,shape:"hublot",tilt:o,width:s?900:160,height:s?900:160,sizes:"150px"})}),s&&d.jsx("div",{className:"trust-logo__frame",children:d.jsx("img",{src:t,alt:`Logo ${e}`,loading:"lazy",decoding:"async",width:128,height:40,className:"trust-logo__img"})}),d.jsx("span",{className:"trust-logo__role",children:n}),d.jsx("span",{className:"trust-logo__years",children:r}),d.jsx("span",{className:"trust-logo__scope",children:i})]})}function Zue(){return d.jsx("section",{className:"trust-section",style:{backgroundColor:"#faf6f0"},children:d.jsxs("div",{className:"trust-section__inner",children:[d.jsxs("div",{className:"trust-block",children:[d.jsx("span",{className:"trust-section__eyebrow",children:"GROUPES AU SEIN DESQUELS J'AI EXERCÉ"}),d.jsx("h2",{className:"trust-section__title",children:"Cinq groupes, une même exigence terrain"}),d.jsx("div",{className:"trust-grid trust-grid--5",children:Kue.map((e,t)=>d.jsx(Yue,{name:e.name,logo:e.logo,role:e.role,years:e.years,scope:e.scope,photo:e.photo,photoAlt:e.photoAlt,tilt:t%2===0?-1:1},e.name))})]}),d.jsxs("div",{className:"trust-block",children:[d.jsx("span",{className:"trust-section__eyebrow",children:"J'ENSEIGNE"}),d.jsx("h2",{className:"trust-section__title",children:"À transmettre ce qui fonctionne sur le terrain"}),d.jsx("div",{className:"trust-grid trust-grid--2",children:Xue.map(e=>d.jsx(Qx,{name:e.name,logo:e.logo,role:e.role,years:e.years},e.name))})]}),d.jsxs("div",{className:"trust-block",children:[d.jsx("span",{className:"trust-section__eyebrow",children:"CERTIFICATIONS ET ENVIRONNEMENTS MAÎTRISÉS"}),d.jsx("h2",{className:"trust-section__title",children:"Les cadres dans lesquels j'ai opéré"}),d.jsx("ul",{className:"credentials-list",children:Jue.map(e=>d.jsxs("li",{className:"credentials-list__item",children:[d.jsx("span",{className:"credentials-list__bullet","aria-hidden":"true",children:"·"}),e]},e))})]}),d.jsxs("div",{className:"trust-block",children:[d.jsx("span",{className:"trust-section__eyebrow",children:"PARTENAIRES"}),d.jsx("h2",{className:"trust-section__title",children:"Des alliés de confiance"}),d.jsx("div",{className:"trust-grid trust-grid--2",children:Que.map(e=>d.jsx(Qx,{name:e.name,logo:e.logo,role:e.role,years:"",link:e.link},e.name))})]})]})})}const ece="/assets/management-visuel-entrepot-C9_inAZV.webp",tce=[{title:"Convoyeur automatisé déployé de zéro",desc:"Conception et mise en service d'une ligne de convoyage préparation → emballage. Budget 800 k€, environnement pharma.",Icon:i_},{title:"ERP SAP implémenté",desc:"Déploiement sur le service emballage/expédition et refonte des process associés.",Icon:$1},{title:"Service expédition refondu (3 ans)",desc:"Adressage logistique, système de fiabilisation des expéditions, spécialisation par pôles, plan de formation des équipes.",Icon:h_},{title:"Audits réglementaires en autonomie",desc:"Réponses aux audits ANSM menées sans appui de la Qualité, en site pharma BPF/GDP.",Icon:w_},{title:"Magasin ouvert & structuré",desc:"Mise en place du service de gestion des stocks à l'ouverture d'un magasin retail international.",Icon:A_}];function nce(){return d.jsx("section",{className:"py-12 md:py-16 org-sec org-sec--proof",style:{backgroundColor:"#FFFFFF"},children:d.jsxs("div",{className:"section-container mx-auto px-4",children:[d.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-[240px_1fr] gap-8 md:gap-10 items-center mb-8 md:mb-12",children:[d.jsx("div",{className:"w-full max-w-[240px]",children:d.jsx(Yc,{src:ece,alt:"Mur de management visuel en entrepôt, tableau de suivi et indicateurs de performance affichés",caption:"La coordination ne se décrète pas en réunion. Elle s'affiche.",shape:"hublot",tilt:-1,width:864,height:615,sizes:"(max-width: 768px) 70vw, 240px"})}),d.jsxs("div",{className:"max-w-3xl",children:[d.jsx(nE,{className:"text-[#b8734f]",children:"RÉALISATIONS"}),d.jsx("h2",{className:"font-display mt-3",style:{color:"#0d3b6e",fontSize:"clamp(26px, 3.5v
4171w, 36px)",fontWeight:800,lineHeight:1.15,letterSpacing:"-0.02em"},children:"Des projets livrés, pas des slides."}),d.jsx("p",{className:"font-sans mt-3",style:{color:"#4a4a4a",fontSize:15,lineHeight:1.55},children:"Quelques chantiers concrets menés sur le terrain — pharma, distribution, retail."})]})]}),d.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:tce.map(e=>d.jsxs("div",{className:"rounded-lg p-5",style:{backgroundColor:"#ffffff",border:"1px solid #ece7df"},children:[d.jsx(e.Icon,{size:22,strokeWidth:1.5,style:{color:"#b8734f",marginBottom:12}}),d.jsx("h3",{className:"font-display",style:{color:"#0d3b6e",fontSize:17,fontWeight:700,lineHeight:1.25,letterSpacing:"-0.01em"},children:e.title}),d.jsx("p",{className:"font-sans mt-2",style:{color:"#4a4a4a",fontSize:14,lineHeight:1.55},children:e.desc})]},e.title))})]})})}function rce(e="#main-content"){E.useEffect(()=>{if(typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.querySelector(e);if(!t)return;const n=Array.from(t.querySelectorAll("[data-depth]"));if(!n.length)return;const r=new Set,i=new IntersectionObserver(l=>{l.forEach(u=>{const c=u.target;u.isIntersecting?r.add(c):(r.delete(c),c.style.setProperty("--d","0"))})},{rootMargin:"10% 0px 10% 0px"});n.forEach(l=>i.observe(l));let s=0;const a=()=>{s=0;const l=window.innerHeight||1;r.forEach(u=>{const c=u.getBoundingClientRect(),p=c.top+c.height/2,f=Math.max(-1,Math.min(1,(p-l/2)/(l/2)));u.style.setProperty("--d",f.toFixed(3))})},o=()=>{s||(s=requestAnimationFrame(a))};return a(),window.addEventListener("scroll",o,{passive:!0}),window.addEventListener("resize",o,{passive:!0}),()=>{i.disconnect(),window.removeEventListener("scroll",o),window.removeEventListener("resize",o),s&&cancelAnimationFrame(s),n.forEach(l=>l.style.removeProperty("--d"))}},[e])}const ice={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"Qu'est-ce que la méthode F.L.U.X.™ ?",acceptedAnswer:{"@type":"Answer",text:"F.L.U.X.™ est la méthode propriétaire de CHAL·CONSULTING IA en 4 étapes : Fiabiliser les processus, Lire les données (KPI), Unifier les systèmes (WMS, ERP, TMS), eXécuter avec l'IA adaptée à votre maturité. Elle structure l'ensemble des services — conseil, formation et IA opérationnelle."}},{"@type":"Question",name:"L'IA est-elle vraiment utile pour une PME logistique ?",acceptedAnswer:{"@type":"Answer",text:"Oui, à condition que les flux physiques et les données soient d'abord fiables. Une PME peut gagner sur les prévisions de stock, la détection d'anomalies, l'automatisation de tâches répétitives — mais une IA posée sur un process instable ne tient pas. On stabilise d'abord, on outille ensuite."}},{"@type":"Question",name:"Par où commencer un projet IA en entrepôt ?",acceptedAnswer:{"@type":"Answer",text:"Par un diagnostic terrain de 2 à 4 semaines qui cartographie les flux, l'état réel des données (WMS, ERP), les points de friction et le niveau de maturité digitale. Ce diagnostic aboutit à un plan d'actions priorisé — souvent 80% de fiabilisation, 20% d'IA au démarrage."}},{"@type":"Question",name:"Faut-il déjà avoir des données propres pour lancer de l'IA ?",acceptedAnswer:{"@type":"Answer",text:"Non, mais il faut accepter de les nettoyer avant. La phase Lire de F.L.U.X™ sert précisément à ça : identifier les KPI utiles, corriger les référentiels, structurer les remontées WMS/ERP. Sans cette étape, aucun modèle IA ne tiendra en production."}},{"@type":"Question",name:"Combien de temps pour voir des résultats concrets ?",acceptedAnswer:{"@type":"Answer",text:"Les premiers indicateurs bougent entre la semaine 3 et la semaine 6 (quick wins terrain). Les résultats structurels — baisse durable des ruptures, gain de productivité, autonomie des équipes — demandent 3 à 6 mois. ROI généralement constaté entre 6 et 12 mois selon le périmètre. Ordres de grandeur observés, jamais garantis sans diagnostic préalable."}},{"@type":"Question",name:"Intervenez-vous uniquement en Île-de
4171-France ?",acceptedAnswer:{"@type":"Answer",text:"Basé en Île-de-France, j'interviens partout en France ainsi qu'en Belgique, Suisse et Luxembourg. Les missions combinent présence terrain (2 à 4 jours/semaine) et pilotage à distance selon le format retenu."}},{"@type":"Question",name:"En quoi consiste la formation avec Rainer School ?",acceptedAnswer:{"@type":"Answer",text:"Le partenariat avec Rainer School permet de proposer des parcours de formation IA orientés managers et équipes logistiques : IA opérationnelle, lecture des données, prompts métier. Formations 80% pratique, adaptées aux réalités PME/ETI."}},{"@type":"Question",name:"Comment se mesure le ROI de vos interventions ?",acceptedAnswer:{"@type":"Answer",text:"Des KPI mesurables sont définis dès le cadrage : taux de service (OTIF), productivité préparation, taux d'erreur, coût logistique. Un suivi régulier quantifie les gains. Ordres de grandeur observés, jamais garantis sans diagnostic préalable : jusqu'à 30% de ruptures en moins selon le contexte, 2 à 4h/jour libérées pour les managers, ROI généralement constaté entre 6 et 12 mois."}}]},rE=[Zne,ere,ire,tre,nre,rre,ice];mre(rE,"Index.tsx");const sce=()=>(rce(),E.useEffect(()=>{const e=document.getElementById("main-content");if(!e)return;document.body.classList.add("anim-ready");const t=Array.from(e.children);t.forEach((r,i)=>{i!==0&&r.classList.add("auto-reveal")});const n=new IntersectionObserver(r=>{r.forEach(i=>{i.isIntersecting&&(i.target.classList.add("in-view"),n.unobserve(i.target))})},{threshold:.08,rootMargin:"0px 0px -8% 0px"});return t.forEach(r=>n.observe(r)),()=>{n.disconnect(),document.body.classList.remove("anim-ready")}},[]),d.jsxs("div",{className:"min-h-screen overflow-x-hidden",children:[d.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-accent focus:text-accent-foreground focus:rounded-lg focus:text-sm focus:font-medium",children:"Aller au contenu principal"}),d.jsx(hw,{}),d.jsx(mse,{}),d.jsx(Yne,{title:"Conseil logistique entrepôt & IA opérationnelle — F.L.U.X™",description:"Conseil logistique entrepôt et IA opérationnelle entrepôt : gestion des flux logistiques, fiabilisation des processus et formation des équipes avec la méthode F.L.U.X™.",keywords:"conseil logistique entrepôt, IA opérationnelle entrepôt, méthode FLUX, gestion flux logistique, gestion des flux logistiques, consultant logistique entrepôt, formation IA logistique",canonical:"/",ogType:"website",ogImage:"/og-image.jpg",ogImageAlt:"CHAL·CONSULTING IA — Conseil et formation en logistique opérationnelle et IA",jsonLd:rE}),d.jsxs("main",{id:"main-content",className:"home-compact home-organic",style:{paddingTop:"var(--header-height)"},children:[d.jsx(Rse,{}),d.jsx(roe,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(voe,{}),d.jsx(lle,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(ile,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(ple,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(Boe,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(boe,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(gle,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(Zue,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(nce,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(fle,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(ore,{}),d.jsx("div",{className:"tech-separator","aria-hidden":!0}),d.jsx(woe,{}),d.jsx(fae,{})]}),d.jsx(fse,{})]})),ace=E.lazy(()=>ee(()=>import("./About-wZEASjZy.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),oce=E.lazy(()=>ee(()=>import("./Formation-Ccf6iNcv.js"),__vite__mapDeps([19,1,3,2,4,20,18,21,13,22,11,8,16,23,15,24,25,6,7,26,14]))),lce=E.lazy(()=>ee(()=>import("./Formations-BHKsuW_h.js"),__vite__mapDeps([27,1,3,6,28,7,29,30,17,18]))),uce=E.lazy(()=>ee(()=>import("./Tarifs-BmJlMJjt.js"),__vite__mapDeps([31,1,2,3,4,32,6,7,13,14,18]))),cce=E.lazy(()=>ee(()=>import("./Lab-CQjcG49d.js"),__vite__mapDeps([33,1,2,3,9,6,7,18]))),Jx=E.lazy(()=>ee(()=>import("./InsightArticle-COmwchVN.js"),__vite__mapDeps([34,1,3,2,35,36,37,9,38,24,39,40,4,41,6,7,42,43,44,45,13,14,23,18]))),dce=E.lazy(()=>ee(()=>import("./Contact-aN_uhv4V.js"),__vite__mapDeps([46,1,2,3,47,18,48,32,6,7,49,43,50,51,12,52,23,16,24,8,10,15,45]))),pce=E.lazy(()=>ee(()=>import("./MentionsLegales-ChPPjAel.js"),__vite__mapDeps([53,1,2,3,6,54,22,18]))),mce=E.lazy(()=>ee(()=>import("./NotFound-CWRnc-PE.js"),__vite__mapDeps([55,1,3,6,13,56,18]))),fce=E.lazy(()=>ee(()=>import("./DiagnosticIA-CPuBfVMg.js"),__vite__mapDeps([57,1,3,2,58,6,59,15,60,40,61,42,18]))),hce=E.lazy(()=>ee(()=>import("./Methode-B4ow6eJ0.js"),__vite__mapDeps([62,1,3,4,2,32,63,6,7,64,14,21,18]))),gce=E.lazy(()=>ee(()=>import("./MethodeFiabiliser-DWL-xE9i.js"),__vite__mapDeps([65,1,66,3,6,7,2,11,42,18]))),vce=E.lazy(()=>ee(()=>import("./MethodeLire-DyBt3f2v.js"),__vite__mapDeps([67,1,66,3,6,7,2,11,42,18]))),yce=E.lazy(()=>ee(()=>import("./MethodeUnifier-B0kVYRWY.js"),__vite__mapDeps([68,1,66,3,6,7,2,11,42,18]))),bce=E.lazy(()=>ee(()=>import("./MethodeExecuter-Z-JJuVmI.js"),__vite__mapDeps([69,1,66,3,6,7,2,11,42,21,18]))),xce=E.lazy(()=>ee(()=>import("./Resultats-JvoZxhom.js"),__vite__mapDeps([70,1,2,3,11,4,6,7,14,18]))),wce=E.lazy(()=>ee(()=>import("./Services-DgjUyCKQ.js"),__vite__mapDeps([71,1,3,4,2,32,6,7,14,15,18]))),qce=E.lazy(()=>ee(()=>import("./ServiceDiagnostic-DmBNqiNn.js"),__vite__mapDeps([72,1,73,3,6,7,2,42,47,74,18,11,8]))),Sce=E.lazy(()=>ee(()=>import("./ServiceAccompagnement-q8zCGz1w.js"),__vite__mapDeps([75,1,3,56,37,8,15,52,59,76,50,77,12,51,24,45,20,18,78,6]))),Ace=E.lazy(()=>ee(()=>import("./ServiceTransition-5K2iMVy2.js"),__vite__mapDeps([79,1,73,3,6,7,2,42,18]))),Ece=E.lazy(()=>ee(()=>import("./ServiceDirectionFractionnee-Oz_C16d6.js"),__vite__mapDeps([80,1,73,3,6,7,2,42,18]))),_ce=E.lazy(()=>ee(()=>import("./FormationLogistiqueResponsable-1JUO_eGt.js"),__vite__mapDeps([81,1,3,82,2,6,7,8,15,59,51,83,84,85,77,5,86,87,50,16,88,26,78,18]))),kce=E.lazy(()=>ee(()=>import("./FormationIAManagers-yjXf1eGN.js"),__vite__mapDeps([89,1,3,82,2,6,7,28,8,15,51,5,86,87,50,88,26,78,18]))),Cce=E.lazy(()=>ee(()=>import("./FormationBasCarbone-BwZ-XDqh.js"),__vite__mapDeps([90,1,82,3,2,6,7,8,15,59,51,91,92,93,94,86,87,16,88,26,78,18]))),jce=E.lazy(()=>ee(()=>import("./FormationTarifs-aS2Xy150.js"),__vite__mapDeps([95,1,2,3,4,24,25,16,6,7,28,11,13,14,18]))),Pce=E.lazy(()=>ee(()=>import("./FormationEcoles-COkQ_F7P.js"),__vite__mapDeps([96,1,3,2,32,63,6,7,4,13,14,18]))),Tce=E.lazy(()=>ee(()=>import("./Engagements-D5tdgnj0.js"),__vite__mapDeps([97,1,2,3,4,6,7,13,23,16,24,18]))),Ice=E.lazy(()=>ee(()=>import("./AnalysesOutils-BNuidPHu.js"),__vite__mapDeps([98,1,3,2,38,47,99,23,91,94,8,100,6,7,76,86,18]))),Oce=E.lazy(()=>ee(()=>import("./IAOperationnelle-DM8gVYAA.js"),__vite__mapDeps([101,1,2,3,4,100,36,59,77,83,60,17,102,21,103,58,104,92,6,7,28,14,11,12,15,29,18]))),Lce=E.lazy(()=>ee(()=>import("./CarteVisite-BHDfniAb.js"),__vite__mapDeps([105,1,6,3,106,10,8,18]))),Mce=E.lazy(()=>ee(()=>import("./CarteEntrepot-CKv5MJtA.js"),__vite__mapDeps([107,1,3,2,108,109,85,86,60,83,59,12,14,6,7,18]))),Nce=E.lazy(()=>ee(()=>import("./ArticleWMSGoLive-H1x4SASZ.js"),__vite__mapDeps([110,1,3,41,2,111,42,6,7,18]))),Rce=E.lazy(()=>ee(()=>import("./ArticleIALogistique-DuPy0TTU.js"),__vite__mapDeps([112,1,3,2,111,42,41,6,28,7,11,59,12,85,83,17,94,24,109,21,14,18]))),$ce=E.lazy(()=>ee(()=>import("./ArticleAuditLogistique-DBtgTPET.js"),__vite__mapDeps([113,1,2,3,111,42,114,6,7,99,51,60,86,49,115,116,77,15,117,83,29,21,59,18]))),Dce=E.lazy(()=>ee(()=>import("./ArticleColdChainGDP-SXgmvx6M.js"),__vite__mapDeps([118,1,3,2,111,42,114,6,7,83,59,11,119,76,12,88,85,109,50,18]))),Fce=E.lazy(()=>ee(()=>import("./ArticleFluxEntrepot-D4yZ0Xp3.js"),__vite__mapDeps([120,1,2,3,111,42,114,6,7,115,15,21,104,30,119,59,92,64,121,29,122,11,24,85,60,88,83,117,8,18]))),Uce=E.lazy(()=>ee(()=>import("./ArticleAutomatiserOuPiloter-C50sH6gK.js"),__vite__mapDeps([123,1,3,111,42,2,114,6,7,37,15,122,59,51,119,60,84,85,87,104,24,76,29,23,21,78,12,18]))),zce=E.lazy(()=>ee(()=>import("./Glossaire-BQz-XUEL.js"),__vite__mapDeps([124,1,3,2,47,6,7,18]))),Bce=E.lazy(()=>ee(()=>
4171import("./ArticleMetiersEntrepot2026-Cpm6xp1i.js"),__vite__mapDeps([125,1,2,3,35,38,6,7,116,117,77,83,54,14,99,18]))),Wce=E.lazy(()=>ee(()=>import("./ArticleMars2026Logistique-CSPGQU_M.js"),__vite__mapDeps([126,1,2,3,35,39,40,38,6,7,18]))),Hce=E.lazy(()=>ee(()=>import("./ArticleFormationLogistiquePenurie-IpvrsKeA.js"),__vite__mapDeps([127,1,2,3,35,39,40,38,41,15,18]))),Vce=E.lazy(()=>ee(()=>import("./ArticleSlottingEntrepot-CnB9VbD0.js"),__vite__mapDeps([128,1,2,3,35,39,40,38,41,103,18]))),Gce=E.lazy(()=>ee(()=>import("./ArticleEntrepotSature-B9ajU4Ls.js"),__vite__mapDeps([129,1,2,3,35,39,40,38,6,7,18]))),Kce=E.lazy(()=>ee(()=>import("./ArticleExcelVsWms-BohrpCqR.js"),__vite__mapDeps([130,1,2,3,35,39,40,38,6,7,18]))),Xce=E.lazy(()=>ee(()=>import("./ArticleLeanLogistics-B-oxHyyA.js"),__vite__mapDeps([131,1,2,3,35,39,40,38,41,6,7,15,132,59,85,83,60,94,12,121,29,18]))),Qce=E.lazy(()=>ee(()=>import("./ArticleDecarbonationTransport-9WbnvqVP.js"),__vite__mapDeps([133,1,2,3,35,39,40,38,41,6,7,134,83,10,15,18]))),Jce=E.lazy(()=>ee(()=>import("./ArticleGuideIALogistique-D0DugjMd.js"),__vite__mapDeps([135,1,114,99,21,59,102,15,88,51,115,93,108,24,50,16,103,85,83,14,23,77,9,6,3,28,7,18]))),Yce=E.lazy(()=>ee(()=>import("./ArticleSitl2026-DNemSzNp.js"),__vite__mapDeps([136,1,2,3,35,39,40,38,41,6,7,15,18]))),Zce=E.lazy(()=>ee(()=>import("./ArticleAvril2026Logistique-BTsEVVFF.js"),__vite__mapDeps([137,1,2,3,35,39,40,38,41,6,7,44,18]))),ede=E.lazy(()=>ee(()=>import("./ArticleCrossDocking-CNfdGg-D.js"),__vite__mapDeps([138,1,2,3,35,39,40,38,41,15,18]))),tde=E.lazy(()=>ee(()=>import("./ArticlePologneEntrepotsAutomatises-Dygxep5X.js"),__vite__mapDeps([139,1,2,3,35,39,40,38,41,15,18]))),nde=E.lazy(()=>ee(()=>import("./ArticleIndeBoomEntrepots-Ca2lQdDg.js"),__vite__mapDeps([140,1,2,3,35,39,40,38,41,15,18]))),rde=E.lazy(()=>ee(()=>import("./ArticleEcartPmeGrandsGroupes-DjJXFzHZ.js"),__vite__mapDeps([141,1,2,3,35,39,40,38,41,54,18]))),ide=E.lazy(()=>ee(()=>import("./ArticleTransporteursLogisticiens-DfTuNKA8.js"),__vite__mapDeps([142,1,2,3,35,39,40,38,41,83,18]))),sde=E.lazy(()=>ee(()=>import("./ArticleIALogistiqueAllemagne-BlHgajCM.js"),__vite__mapDeps([143,1,2,3,35,39,40,38,41,15,18]))),ade=E.lazy(()=>ee(()=>import("./ArticleRobotisationAmazonLyon-lNmcW9JN.js"),__vite__mapDeps([144,1,2,3,35,39,40,38,41,17,18]))),ode=E.lazy(()=>ee(()=>import("./SimulateurFlux-DTUJBfqW.js"),__vite__mapDeps([145,1,104,29,24,146,59,85,76,18,3,48,99,115,42,9,15,87,106,6,7]))),lde=E.lazy(()=>ee(()=>import("./SimulateurROI-CWW1KI4c.js"),__vite__mapDeps([147,1,3,2,6,7,92,15,18]))),ude=E.lazy(()=>ee(()=>import("./SeoAudit-DEUqdI2j.js"),__vite__mapDeps([148,1,2,3,74,18,38,6,106,51,37,132,59]))),cde=E.lazy(()=>ee(()=>import("./IASupplyChain-KTMfpTJK.js"),__vite__mapDeps([149,1,3,2,6,7,28,116,83,17,18]))),dde=E.lazy(()=>ee(()=>import("./PartenariatRainerSchool-CeyLag-I.js"),__vite__mapDeps([150,1,3,2,6,7,146,18]))),pde=E.lazy(()=>ee(()=>import("./Plaquette-CuPOzRXx.js"),__vite__mapDeps([151,1,28,3,6,61,10,8,18]))),mde=E.lazy(()=>ee(()=>import("./ArticleRobotsEntrepotJapon-DWKvA3WG.js"),__vite__mapDeps([152,1,2,3,35,39,40,38,41,17,18]))),fde=E.lazy(()=>ee(()=>import("./ArticleFerreroEntrepotCleon-RVHld0BC.js"),__vite__mapDeps([153,1,2,3,35,39,40,38,41,15,18]))),hde=E.lazy(()=>ee(()=>import("./ArticleIncendieEntrepotCoupang-CX_VeWe2.js"),__vite__mapDeps([154,1,2,3,35,39,40,38,41,84,18]))),gde=E.lazy(()=>ee(()=>import("./ArticleAgentQuai-DkoQFAKR.js"),__vite__mapDeps([155,1,2,3,35,39,40,38,41,15,18]))),vde=E.lazy(()=>ee(()=>import("./ArticleTangerMedMaroc-CSVDf2Pr.js"),__vite__mapDeps([156,1,2,3,35,39,40,38,41,134,18]))),yde=E.lazy(()=>ee(()=>import("./ArticleIaDonneesLogistiquePme-CoLTUnzA.js"),__vite__mapDeps([157,1,2,3,35,39,40,38,41,15,18]))),bde=E.lazy(()=>ee(()=>import("./ArticleConsolidationLogistiquePme-BrAeld1u.js"),__vite__mapDeps([158,1,2,3,35,39,40,38,41,15,18]))),xde=E.lazy(()=>ee(()=>import("./ArticleNearshoringMexique-CqKzScx-.js"),__vite__mapDeps([159,1,2,3,35,39,40,38,41,15,18]))),wde=E.lazy(()=>ee(()=>import("./ArticleEcommerceChinoisLogistique-3V_PjDSv.js"),__vite__mapDeps([160,1,2,3,35,39,40,38,41,15,18]))),qde=E.lazy(()=>ee(()=>import("./ArticleDubaiJafzaBoom-B1jELpdg.js"),__vite__mapDeps([161,1,2,3,35,39,40,38,41,15,18]))),Sde=E.lazy(()=>ee(()=>import("./ArticleFormationIaEcart-DxQpr2VP.js"),__vite__mapDeps([162,1,2,3,35,39,40,38,41,15,18]))),Ade=E.lazy(()=>ee(()=>import("./ArticleRendezVousQuai-DAI9IUBA.js"),__vite__mapDeps([163,1,2,3,35,39,40,38,41,15,18]))),Ede=E.lazy(()=>ee(()=>import("./ArticleAfriqueSudEntrepots-gf_hzPWU.js"),__vite__mapDeps([164,1,2,3,35,39,40,38,41,15,18]))),_de=E.lazy(()=>ee(()=>import("./ArticleWmsSousExploite-B_j4FSAz.js"),__vite__mapDeps([165,1,2,3,35,39,40,38,41,15,18]))),kde=E.lazy(()=>ee(()=>import("./ArticleKardexMadrigall-Dm7acVTF.js"),__vite__mapDeps([166,1,2,3,35,39,40,38,41,15,18]))),Cde=E.lazy(()=>ee(()=>import("./ArticleCoteIvoireAbidjan-DyfMNh3p.js"),__vite__mapDeps([167,1,2,3,35,39,40,38,41,15,18]))),jde=E.lazy(()=>ee(()=>import("./ArticlePrologisSegroRachat-DTiMnbUq.js"),__vite__mapDeps([168,1,2,3,35,39,40,38,41,15,18]))),Pde=E.lazy(()=>ee(()=>import("./ArticleKenyaNaivashaCorridor-Cce2mXX9.js"),__vite__mapDeps([169,1,2,3,35,39,40,38,41,15,18]))),Tde=E.lazy(()=>ee(()=>import("./ArticleRepEmballagesPme-D-7gUKbp.js"),__vite__mapDeps([170,1,2,3,35,39,40,38,41,15,18]))),Ide=E.lazy(()=>ee(()=>import("./ArticleSenegalIfriaHubFroid-CHtfhdu2.js"),__vite__mapDeps([171,1,2,3,35,39,40,38,41,15,18]))),Ode=E.lazy(()=>ee(()=>import("./ArticleSunrockPhotovoltaique-C9I6cJ2g.js"),__vite__mapDeps([172,1,2,3,35,39,40,38,41,15,18]))),Lde=E.lazy(()=>ee(()=>import("./ArticleTurnoverFormationLogistique-BIz_D7fJ.js"),__vite__mapDeps([173,1,2,3,35,39,40,38,41,15,18]))),Mde=E.lazy(()=>ee(()=>import("./ArticleAtelierLogistiqueChampsElysees-CGcKokDK.js"),__vite__mapDeps([174,1,2,3,35,39,40,38,41,15,18]))),Nde=E.lazy(()=>ee(()=>import("./ArticleGpeSaintVulbas-BuF27be2.js"),__vite__mapDeps([175,1,2,3,35,39,40,38,41,15,18]))),Rde=E.lazy(()=>ee(()=>import("./ArticleValoisEmballagesWms-BwZBL3WN.js"),__vite__mapDeps([176,1,2,3,35,39,40,38,41,15,18]))),$de=E.lazy(()=>ee(()=>import("./ArticleGxoExotecGuessVenlo-BofZusgh.js"),__vite__mapDeps([177,1,2,3,35,39,40,38,41,15,18]))),Dde=E.lazy(()=>ee(()=>
4171import("./ArticleSkechersKnappLiege-DRMjsdpo.js"),__vite__mapDeps([178,1,2,3,35,39,40,38,41,15,18]))),Fde=new hC,Ude=({children:e})=>(Jne(),d.jsx(d.Fragment,{children:e})),zde=()=>d.jsx(pw,{children:d.jsx(vC,{client:Fde,children:d.jsxs(Hk,{children:[d.jsx(pk,{}),d.jsx(Wk,{}),d.jsx(oE,{children:d.jsxs(Ude,{children:[d.jsx(nj,{}),d.jsx(hw,{}),d.jsx(E.Suspense,{fallback:null,children:d.jsxs(lE,{children:[d.jsx(Q,{path:"/",element:d.jsx(sce,{})}),d.jsx(Q,{path:"/methode",element:d.jsx(hce,{})}),d.jsx(Q,{path:"/methode/fiabiliser",element:d.jsx(gce,{})}),d.jsx(Q,{path:"/methode/lire",element:d.jsx(vce,{})}),d.jsx(Q,{path:"/methode/unifier",element:d.jsx(yce,{})}),d.jsx(Q,{path:"/methode/executer",element:d.jsx(bce,{})}),d.jsx(Q,{path:"/resultats",element:d.jsx(xce,{})}),d.jsx(Q,{path:"/services",element:d.jsx(wce,{})}),d.jsx(Q,{path:"/services/diagnostic",element:d.jsx(qce,{})}),d.jsx(Q,{path:"/services/accompagnement",element:d.jsx(Sce,{})}),d.jsx(Q,{path:"/services/transition",element:d.jsx(Ace,{})}),d.jsx(Q,{path:"/services/direction-fractionnee",element:d.jsx(Ece,{})}),d.jsx(Q,{path:"/formation",element:d.jsx(oce,{})}),d.jsx(Q,{path:"/formations",element:d.jsx(lce,{})}),d.jsx(Q,{path:"/formation/logistique-responsable",element:d.jsx(_ce,{})}),d.jsx(Q,{path:"/formation/ia-managers",element:d.jsx(kce,{})}),d.jsx(Q,{path:"/formation/bas-carbone",element:d.jsx(Cce,{})}),d.jsx(Q,{path:"/formation/tarifs",element:d.jsx(jce,{})}),d.jsx(Q,{path:"/formation/ecoles",element:d.jsx(Pce,{})}),d.jsx(Q,{path:"/ia-operationnelle",element:d.jsx(Oce,{})}),d.jsx(Q,{path:"/analyses-outils",element:d.jsx(Ice,{})}),d.jsx(Q,{path:"/analyses-outils/:slug",element:d.jsx(Jx,{})}),d.jsx(Q,{path:"/diagnostic-ia",element:d.jsx(fce,{})}),d.jsx(Q,{path:"/ressources/glossaire",element:d.jsx(zce,{})}),d.jsx(Q,{path:"/blog/wms-go-live-7-cercles-enfer-logistique",element:d.jsx(Nce,{})}),d.jsx(Q,{path:"/blog/ia-logistique-realite-terrain-2025",element:d.jsx(Rce,{})}),d.jsx(Q,{path:"/blog/audit-logistique-protocole-terrain-1-journee",element:d.jsx($ce,{})}),d.jsx(Q,{path:"/blog/cold-chain-gdp-logistique-pharmaceutique",element:d.jsx(Dce,{})}),d.jsx(Q,{path:"/blog/analyser-flux-entrepot-methode-complete",element:d.jsx(Fce,{})}),d.jsx(Q,{path:"/blog/faut-il-automatiser-son-entrepot-ou-mieux-le-piloter",element:d.jsx(Uce,{})}),d.jsx(Q,{path:"/ressources/articles/metiers-entrepot-2026",element:d.jsx(Bce,{})}),d.jsx(Q,{path:"/ressources/articles/penurie-competences-logistique-formation-pme",element:d.jsx(Hce,{})}),d.jsx(Q,{path:"/ressources/articles/mars-2026-logistique",element:d.jsx(Wce,{})}),d.jsx(Q,{path:"/ressources/articles/slotting-entrepot-reimplantation-stock-pme",element:d.jsx(Vce,{})}),d.jsx(Q,{path:"/blog/entrepot-sature-gagner-place-sans-demenager",element:d.jsx(Gce,{})}),d.jsx(Q,{path:"/blog/excel-vs-wms-automatiser-gestion-stock-pme",element:d.jsx(Kce,{})}),d.jsx(Q,{path:"/blog/lean-logistics-gaspillages-marge-pme",element:d.jsx(Xce,{})}),d.jsx(Q,{path:"/blog/decarbonation-transport-logistique-ormuz",element:d.jsx(Qce,{})}),d.jsx(Q,{path:"/blog/guide-ia-logistique-france-2026-chal-consulting",element:d.jsx(Jce,{})}),d.jsx(Q,{path:"/blog/sitl-2026-tendances-entrepot-supply-chain",element:d.jsx(Yce,{})}),d.jsx(Q,{path:"/blog/logistique-mondiale-avril-2026",element:d.jsx(Zce,{})}),d.jsx(Q,{path:"/blog/cross-docking-entrepot-pme",element:d.jsx(ede,{})}),d.jsx(Q,{path:"/blog/pologne-entrepots-automatises-pme-france",element:d.jsx(tde,{})}),d.jsx(Q,{path:"/blog/inde-boom-entrepots-lecon-pme-france",element:d.jsx(nde,{})}),d.jsx(Q,{path:"/blog/logistique-france-grands-groupes-pme-2026",element:d.jsx(rde,{})}),d.jsx(Q,{path:"/blog/transporteurs-logistique-stockage-pme",element:d.jsx(ide,{})}),d.jsx(Q,{path:"/blog/ia-logistique-allemagne-etude-ehi-2026",element:d.jsx(sde,{})}),d.jsx(Q,{path:"/blog/robotisation-entrepot-amazon-lyon-pme",element:d.jsx(ade,{})}),d.jsx(Q,{path:"/blog/robots-entrepot-japon-automatisation-pme-france",element:d.jsx(mde,{})}),d.jsx(Q,{path:"/blog/ferrero-entrepot-cleon-decarbonation-pme",element:d.jsx(fde,{})}),d.jsx(Q,{path:"/blog/incendie-entrepot-coupang-continuite-pme",element:d.jsx(hde,{})}),d.jsx(Q,{path:"/ressources/articles/agent-de-quai-metier-invisible-entrepot-pme",element:d.jsx(gde,{})}),d.jsx(Q,{path:"/blog/tanger-med-maroc-nearshoring-pme-france",element:d.jsx(vde,{})}),d.jsx(Q,{path:"/blog/ia-logistique-pme-france-donnees-2026",element:d.jsx(yde,{})}),d.jsx(Q,{path:"/blog/rachat-prestataire-logistique-pme-geodis-deret",element:d.jsx(bde,{})}),d.jsx(Q,{path:"/blog/nearshoring-mexique-pme-france-2026",element:d.jsx(xde,{})}),d.jsx(Q,{path:"/blog/e-commerce-chinois-logistique-france-pme-2026",element:d.jsx(wde,{})}),d.jsx(Q,{path:"/blog/dubai-jafza-boom-entrepots-pme-france-2026",element:d.jsx(qde,{})}),d.jsx(Q,{path:"/ressources/articles/formation-ia-logistique-ecart-salaries-entreprises-2026",element:d.jsx(Sde,{})}),d.jsx(Q,{path:"/ressources/articles/rendez-vous-quai-yard-management-entrepot-pme",element:d.jsx(Ade,{})}),d.jsx(Q,{path:"/blog/afrique-du-sud-boom-entrepots-ports-pme-france-2026",element:d.jsx(Ede,{})}),d.jsx(Q,{path:"/ressources/articles/wms-sous-exploite-etude-cas-pme-2026",element:d.jsx(_de,{})}
4171),d.jsx(Q,{path:"/blog/cote-ivoire-port-abidjan-hub-logistique-pme-france-2026",element:d.jsx(Cde,{})}),d.jsx(Q,{path:"/blog/prologis-segro-rachat-entrepots-pme-france-2026",element:d.jsx(jde,{})}),d.jsx(Q,{path:"/blog/kenya-naivasha-corridor-logistique-afrique-est-pme-france-2026",element:d.jsx(Pde,{})}),d.jsx(Q,{path:"/blog/rep-emballages-professionnels-pme-logistique-france-2026",element:d.jsx(Tde,{})}),d.jsx(Q,{path:"/blog/senegal-ifria-hub-froid-diamniadio-pme-france-2026",element:d.jsx(Ide,{})}),d.jsx(Q,{path:"/blog/kardex-madrigall-automatisation-fusion-flux-pme-2026",element:d.jsx(kde,{})}),d.jsx(Q,{path:"/blog/sunrock-photovoltaique-entrepots-pme-france-2026",element:d.jsx(Ode,{})}),d.jsx(Q,{path:"/ressources/articles/recrutement-turnover-formation-logistique-pme-france-2026",element:d.jsx(Lde,{})}),d.jsx(Q,{path:"/blog/atelier-logistique-champs-elysees-deret-pme-france-2026",element:d.jsx(Mde,{})}),d.jsx(Q,{path:"/blog/gpe-saint-vulbas-hardis-transitic-entrepot-pme-2026",element:d.jsx(Nde,{})}),d.jsx(Q,{path:"/blog/valois-emballages-bext-ws-infflux-wms-multisite-pme-2026",element:d.jsx(Rde,{})}),d.jsx(Q,{path:"/blog/gxo-exotec-guess-venlo-pays-bas-pme-2026",element:d.jsx($de,{})}),d.jsx(Q,{path:"/blog/skechers-knapp-liege-belgique-automatisation-pme-2026",element:d.jsx(Dde,{})}),d.jsx(Q,{path:"/qui-sommes-nous",element:d.jsx(ace,{})}),d.jsx(Q,{path:"/engagements",element:d.jsx(Tce,{})}),d.jsx(Q,{path:"/contact",element:d.jsx(dce,{})}),d.jsx(Q,{path:"/tarifs",element:d.jsx(uce,{})}),d.jsx(Q,{path:"/lab",element:d.jsx(cce,{})}),d.jsx(Q,{path:"/carte",element:d.jsx(Lce,{})}),d.jsx(Q,{path:"/carte-entrepot",element:d.jsx(Mce,{})}),d.jsx(Q,{path:"/simulateur-flux",element:d.jsx(ode,{})}),d.jsx(Q,{path:"/simulateur-roi",element:d.jsx(lde,{})}),d.jsx(Q,{path:"/mentions-legales",element:d.jsx(pce,{})}),d.jsx(Q,{path:"/seo-audit",element:d.jsx(ude,{})}),d.jsx(Q,{path:"/ia-supply-chain",element:d.jsx(cde,{})}),d.jsx(Q,{path:"/partenariat-rainer-school",element:d.jsx(dde,{})}),d.jsx(Q,{path:"/plaquette",element:d.jsx(pde,{})}),d.jsx(Q,{path:"/missions",element:d.jsx(bn,{to:"/methode",replace:!0})}),d.jsx(Q,{path:"/methodologie-flux-warehouse",element:d.jsx(bn,{to:"/methode",replace:!0})}),d.jsx(Q,{path:"/ia-logistique",element:d.jsx(bn,{to:"/ia-operationnelle",replace:!0})}),d.jsx(Q,{path:"/ia-operationnelle-entrepot",element:d.jsx(bn,{to:"/ia-operationnelle",replace:!0})}),d.jsx(Q,{path:"/formation-logistique",element:d.jsx(bn,{to:"/formation",replace:!0})}),d.jsx(Q,{path:"/consultant-logistique-chal-michel",element:d.jsx(bn,{to:"/qui-sommes-nous",replace:!0})}),d.jsx(Q,{path:"/a-propos",element:d.jsx(bn,{to:"/qui-sommes-nous",replace:!0})}),d.jsx(Q,{path:"/actualites-logistique-ia",element:d.jsx(bn,{to:"/analyses-outils",replace:!0})}),d.jsx(Q,{path:"/actualites-logistique-ia/:slug",element:d.jsx(Jx,{})}),d.jsx(Q,{path:"/insights",element:d.jsx(bn,{to:"/analyses-outils",replace:!0})}),d.jsx(Q,{path:"/insights/:slug",element:d.jsx(bn,{to:"/analyses-outils",replace:!0})}),d.jsx(Q,{path:"/contact-consultant-logistique",element:d.jsx(bn,{to:"/contact",replace:!0})}),d.jsx(Q,{path:"/diagnostic-ia-logistique",element:d.jsx(bn,{to:"/diagnostic-ia",replace:!0})}),d.jsx(Q,{path:"*",element:d.jsx(mce,{})})]})}),d.jsx(Qne,{}),d.jsx(tj,{})]})})]})})});f1(document.getElementById("root")).render(d.jsx(zde,{}));export{Cf as $,jn as A,R1 as B,n_ as C,ule as D,Rp as E,fse as F,F1 as G,mse as H,cg as I,y_ as J,d_ as K,u_ as L,p_ as M,hpe as N,ese as O,g_ as P,fpe as Q,mpe as R,Yne as S,z1 as T,__ as U,bt as V,P_ as W,Ho as X,M1 as Y,IE as Z,npe as _,xr as a,tse as a$,Xde as a0,mre as a1,q_ as a2,s_ as a3,ose as a4,fp as a5,ipe as a6,tre as a7,lpe as a8,V2 as a9,dpe as aA,W2 as aB,Gw as aC,oO as aD,Kde as aE,EP as aF,AP as aG,hs as aH,Bg as aI,Xw as aJ,rv as aK,gP as aL,yn as aM,rr as aN,ln as aO,Tp as aP,it as aQ,ec as aR,lr as aS,Uf as aT,Se as aU,ze as aV,yP as aW,Zie as aX,spe as aY,o_ as aZ,Ha as a_,ee as aa,Mae as ab,Woe as ac,Hoe as ad,c_ as ae,eE as af,tE as ag,Hx as ah,f_ as ai,soe as aj,upe as ak,nE as al,Uv as am,kf as an,ope as ao,b_ as ap,$1 as aq,Ri as ar,ppe as as,h_ as at,nre as au,oue as av,noe as aw,i_ as ax,Wi as ay,Vae as az,Kle as b,Cie as b$,gpe as b0,vpe as b1,Lre as b2,qie as b3,bie as b4,wie as b5,$x as b6,Nre as b7,Mre as b8,Ore as b9,v2 as bA,y2 as bB,tpe as bC,re as bD,Zde as bE,epe as bF,Pi as bG,Qde as bH,mte as bI,qi as bJ,Kc as bK,Mne as bL,Jde as bM,O9 as bN,Nne as bO,Xc as bP,Qc as bQ,Bi as bR,wh as bS,cpe as bT,pre as bU,U1 as bV,l_ as bW,Toe as bX,Sre as bY,_ie as bZ,kie as b_,Ire as ba,Sie as bb,Aie as bc,Eie as bd,Le as be,Ge as bf,zt as bg,pA as bh,ei as bi,UV as bj,KV as bk,Oe as bl,mu as bm,Rt as bn,Yde as bo,Zl as bp,Xt as bq,JA as br,Jr as b
4171s,Zi as bt,Wh as bu,Oi as bv,Xr as bw,cr as bx,cX as by,Re as bz,Ae as c,jie as c0,Pie as c1,Tie as c2,Iie as c3,Oie as c4,Lie as c5,Mie as c6,Nie as c7,Rie as c8,$ie as c9,Die as ca,Hie as cb,Fie as cc,Uie as cd,zie as ce,Bie as cf,Wie as cg,Vie as ch,Gie as ci,Kie as cj,Xie as ck,Qie as cl,Jie as cm,Yie as cn,Xle as d,Qle as e,Jle as f,k_ as g,t_ as h,r_ as i,Ef as j,e_ as k,Gle as l,w_ as m,S_ as n,Zne as o,ire as p,Uoe as q,ape as r,rre as s,Yc as t,VC as u,ac as v,D1 as w,v_ as x,rpe as y,_f 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.