";function Sk(e,r){var t=e.match(/[\s\S]*?<\/table>/gi);if(!t||t.length==0)throw new Error("Invalid HTML: could not find ");if(t.length==1)return $n(Qd(t[0],r),r);var n=Iu();return t.forEach(function(a,i){Lu(n,Qd(a,r),"Sheet"+(i+1))}),n}function Ek(e,r,t){var n=[];return n.join("")+""}function kk(e,r){var t=r||{},n=t.header!=null?t.header:yk,a=t.footer!=null?t.footer:wk,i=[n],s=li(e["!ref"]);t.dense=Array.isArray(e),i.push(Ek(e,s,t));for(var o=s.s.r;o<=s.e.r;++o)i.push(_k(e,s,o,t));return i.push("
"+a),i.join("")}function Y1(e,r,t){var n=t||{},a=0,i=0;if(n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var s=typeof n.origin=="string"?Vr(n.origin):n.origin;a=s.r,i=s.c}var o=r.getElementsByTagName("tr"),c=Math.min(n.sheetRows||1e7,o.length),u={s:{r:0,c:0},e:{r:a,c:i}};if(e["!ref"]){var f=li(e["!ref"]);u.s.r=Math.min(u.s.r,f.s.r),u.s.c=Math.min(u.s.c,f.s.c),u.e.r=Math.max(u.e.r,f.e.r),u.e.c=Math.max(u.e.c,f.e.c),a==-1&&(u.e.r=a=f.e.r+1)}var d=[],p=0,x=e["!rows"]||(e["!rows"]=[]),g=0,m=0,w=0,_=0,y=0,v=0;for(e["!cols"]||(e["!cols"]=[]);g1||v>1)&&d.push({s:{r:m+a,c:_+i},e:{r:m+a+(y||1)-1,c:_+i+(v||1)-1}});var G={t:"s",v:k},K=O.getAttribute("data-t")||O.getAttribute("t")||"";k!=null&&(k.length==0?G.t=K||"z":n.raw||k.trim().length==0||K=="s"||(k==="TRUE"?G={t:"b",v:!0}:k==="FALSE"?G={t:"b",v:!1}:isNaN(Bt(k))?isNaN(ti(k).getDate())||(G={t:"d",v:gr(k)},n.cellDates||(G={t:"n",v:Gr(G.v)}),G.z=n.dateNF||Fe[14]):G={t:"n",v:Bt(k)})),G.z===void 0&&B!=null&&(G.z=B);var U="",oe=O.getElementsByTagName("A");if(oe&&oe.length)for(var he=0;he=c&&(e["!fullref"]=Le((u.e.r=o.length-g+m-1+a,u))),e}function q1(e,r){var t=r||{},n=t.dense?[]:{};return Y1(n,e,r)}function Tk(e,r){return $n(q1(e,r),r)}function Zd(e){var r="",t=Ak(e);return t&&(r=t(e).getPropertyValue("display")),r||(r=e.style&&e.style.display),r==="none"}function Ak(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}function Ck(e){var r=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,function(n,a){return Array(parseInt(a,10)+1).join(" ")}).replace(/]*\/>/g," ").replace(//g,` `),t=Me(r.replace(/<[^>]*>/g,""));return[t]}var ep={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};function Q1(e,r){var t=r||{},n=vu(e),a=[],i,s,o={name:""},c="",u=0,f,d,p={},x=[],g=t.dense?[]:{},m,w,_={value:""},y="",v=0,A=[],N=-1,O=-1,k={s:{r:1e6,c:1e7},e:{r:0,c:0}},B=0,P={},G=[],K={},U=0,oe=0,he=[],q=1,J=1,re=[],Y={Names:[]},F={},Q=["",""],ce=[],b={},X="",V=0,H=!1,ie=!1,D=0;for(xs.lastIndex=0,n=n.replace(/\x3C!--([\s\S]*?)-->/mg,"").replace(//gm,"");m=xs.exec(n);)switch(m[3]=m[3].replace(/_.*$/,"")){case"table":case"工作表":m[1]==="/"?(k.e.c>=k.s.c&&k.e.r>=k.s.r?g["!ref"]=Le(k):g["!ref"]="A1:A1",t.sheetRows>0&&t.sheetRows<=k.e.r&&(g["!fullref"]=g["!ref"],k.e.r=t.sheetRows-1,g["!ref"]=Le(k)),G.length&&(g["!merges"]=G),he.length&&(g["!rows"]=he),f.name=f.名称||f.name,typeof JSON<"u"&&JSON.stringify(f),x.push(f.name),p[f.name]=g,ie=!1):m[0].charAt(m[0].length-2)!=="/"&&(f=Ae(m[0],!1),N=O=-1,k.s.r=k.s.c=1e7,k.e.r=k.e.c=0,g=t.dense?[]:{},G=[],he=[],ie=!0);break;case"table-row-group":m[1]==="/"?--B:++B;break;case"table-row":case"行":if(m[1]==="/"){N+=q,q=1;break}if(d=Ae(m[0],!1),d.行号?N=d.行号-1:N==-1&&(N=0),q=+d["number-rows-repeated"]||1,q<10)for(D=0;D0&&(he[N+D]={level:B});O=-1;break;case"covered-table-cell":m[1]!=="/"&&++O,t.sheetStubs&&(t.dense?(g[N]||(g[N]=[]),g[N][O]={t:"z"}):g[Ce({r:N,c:O})]={t:"z"}),y="",A=[];break;case"table-cell":case"数据":if(m[0].charAt(m[0].length-2)==="/")++O,_=Ae(m[0],!1),J=parseInt(_["number-columns-repeated"]||"1",10),w={t:"z",v:null},_.formula&&t.cellFormula!=!1&&(w.f=Kd(Me(_.formula))),(_.数据类型||_["value-type"])=="string"&&(w.t="s",w.v=Me(_["string-value"]||""),t.dense?(g[N]||(g[N]=[]),g[N][O]=w):g[Ce({r:N,c:O})]=w),O+=J-1;else if(m[1]!=="/"){++O,y="",v=0,A=[],J=1;var W=q?N+q-1:N;if(O>k.e.c&&(k.e.c=O),Ok.e.r&&(k.e.r=W),_=Ae(m[0],!1),ce=[],b={},w={t:_.数据类型||_["value-type"],v:null},t.cellFormula)if(_.formula&&(_.formula=Me(_.formula)),_["number-matrix-columns-spanned"]&&_["number-matrix-rows-spanned"]&&(U=parseInt(_["number-matrix-rows-spanned"],10)||0,oe=parseInt(_["number-matrix-columns-spanned"],10)||0,K={s:{r:N,c:O},e:{r:N+U-1,c:O+oe-1}},w.F=Le(K),re.push([K,w.F])),_.formula)w.f=Kd(_.formula);else for(D=0;D=re[D][0].s.r&&N<=re[D][0].e.r&&O>=re[D][0].s.c&&O<=re[D][0].e.c&&(w.F=re[D][1]);switch((_["number-columns-spanned"]||_["number-rows-spanned"])&&(U=parseInt(_["number-rows-spanned"],10)||0,oe=parseInt(_["number-columns-spanned"],10)||0,K={s:{r:N,c:O},e:{r:N+U-1,c:O+oe-1}},G.push(K)),_["number-columns-repeated"]&&(J=parseInt(_["number-columns-repeated"],10)),w.t){case"boolean":w.t="b",w.v=We(_["boolean-value"]);break;case"float":w.t="n",w.v=parseFloat(_.value);break;case"percentage":w.t="n",w.v=parseFloat(_.value);break;case"currency":w.t="n",w.v=parseFloat(_.value);break;case"date":w.t="d",w.v=gr(_["date-value"]),t.cellDates||(w.t="n",w.v=Gr(w.v)),w.z="m/d/yy";break;case"time":w.t="n",w.v=U_(_["time-value"])/86400,t.cellDates&&(w.t="d",w.v=yl(w.v)),w.z="HH:MM:SS";break;case"number":w.t="n",w.v=parseFloat(_.数据数值);break;default:if(w.t==="string"||w.t==="text"||!w.t)w.t="s",_["string-value"]!=null&&(y=Me(_["string-value"]),A=[]);else throw new Error("Unsupported value type "+w.t)}}else{if(H=!1,w.t==="s"&&(w.v=y||"",A.length&&(w.R=A),H=v==0),F.Target&&(w.l=F),ce.length>0&&(w.c=ce,ce=[]),y&&t.cellText!==!1&&(w.w=y),H&&(w.t="z",delete w.v),(!H||t.sheetStubs)&&!(t.sheetRows&&t.sheetRows<=N))for(var E=0;E0;)g[N+E][O+J]=Er(w);else for(g[Ce({r:N+E,c:O})]=w;--J>0;)g[Ce({r:N+E,c:O+J})]=Er(w);k.e.c<=O&&(k.e.c=O)}J=parseInt(_["number-columns-repeated"]||"1",10),O+=J-1,J=0,w={},y="",A=[]}F={};break;case"document":case"document-content":case"电子表格文档":case"spreadsheet":case"主体":case"scripts":case"styles":case"font-face-decls":case"master-styles":if(m[1]==="/"){if((i=a.pop())[0]!==m[3])throw"Bad state: "+i}else m[0].charAt(m[0].length-2)!=="/"&&a.push([m[3],!0]);break;case"annotation":if(m[1]==="/"){if((i=a.pop())[0]!==m[3])throw"Bad state: "+i;b.t=y,A.length&&(b.R=A),b.a=X,ce.push(b)}else m[0].charAt(m[0].length-2)!=="/"&&a.push([m[3],!1]);X="",V=0,y="",v=0,A=[];break;case"creator":m[1]==="/"?X=n.slice(V,m.index):V=m.index+m[0].length;break;case"meta":case"元数据":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if(m[1]==="/"){if((i=a.pop())[0]!==m[3])throw"Bad state: "+i}else m[0].charAt(m[0].length-2)!=="/"&&a.push([m[3],!1]);y="",v=0,A=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if(m[1]==="/"){if(P[o.name]=c,(i=a.pop())[0]!==m[3])throw"Bad state: "+i}else m[0].charAt(m[0].length-2)!=="/"&&(c="",o=Ae(m[0],!1),a.push([m[3],!0]));break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Ae(m[0],!1),c+=ep[m[3]][s.style==="long"?1:0];break}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Ae(m[0],!1),c+=ep[m[3]][s.style==="long"?1:0];break}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(m[0].slice(-2)==="/>")break;if(m[1]==="/")switch(a[a.length-1][0]){case"number-style":case"date-style":case"time-style":c+=n.slice(u,m.index);break}else u=m.index+m[0].length;break;case"named-range":s=Ae(m[0],!1),Q=sc(s["cell-range-address"]);var C={Name:s.name,Ref:Q[0]+"!"+Q[1]};ie&&(C.Sheet=x.length),Y.Names.push(C);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":case"文本串":if(["master-styles"].indexOf(a[a.length-1][0])>-1)break;if(m[1]==="/"&&(!_||!_["string-value"])){var S=Ck(n.slice(v,m.index));y=(y.length>0?y+` `:"")+S[0]}else Ae(m[0],!1),v=m.index+m[0].length;break;case"s":break;case"database-range":if(m[1]==="/")break;try{Q=sc(Ae(m[0])["target-range-address"]),p[Q[0]]["!autofilter"]={ref:Q[1]}}catch{}break;case"date":break;case"object":break;case"title":case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":break;case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":break;case"properties":break;case"property":break;case"a":if(m[1]!=="/"){if(F=Ae(m[0],!1),!F.href)break;F.Target=Me(F.href),delete F.href,F.Target.charAt(0)=="#"&&F.Target.indexOf(".")>-1?(Q=sc(F.Target.slice(1)),F.Target="#"+Q[0]+"!"+Q[1]):F.Target.match(/^\.\.[\\\/]/)&&(F.Target=F.Target.slice(3))}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(m[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"表:":case"字:":break;default:if(t.WTF)throw new Error(m)}}var h={Sheets:p,SheetNames:x,Workbook:Y};return t.bookSheets&&delete h.Sheets,h}function rp(e,r){r=r||{},xt(e,"META-INF/manifest.xml")&&H2(sr(e,"META-INF/manifest.xml"),r);var t=it(e,"content.xml");if(!t)throw new Error("Missing content.xml in ODS / UOF file");var n=Q1(ze(t),r);return xt(e,"meta.xml")&&(n.Props=f1(sr(e,"meta.xml"))),n}function tp(e,r){return Q1(e,r)}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function ju(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function f0(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):ze(ga(e))}function d0(e){var r=e.reduce(function(a,i){return a+i.length},0),t=new Uint8Array(r),n=0;return e.forEach(function(a){t.set(a,n),n+=a.length}),t}function np(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>>24}function Nk(e,r){for(var t=(e[r+15]&127)<<7|e[r+14]>>1,n=e[r+14]&1,a=r+13;a>=r;--a)n=n*256+e[a];return(e[r+15]&128?-n:n)*Math.pow(10,t-6176)}function ys(e,r){var t=r?r[0]:0,n=e[t]&127;e:if(e[t++]>=128&&(n|=(e[t]&127)<<7,e[t++]<128||(n|=(e[t]&127)<<14,e[t++]<128)||(n|=(e[t]&127)<<21,e[t++]<128)||(n+=(e[t]&127)*Math.pow(2,28),++t,e[t++]<128)||(n+=(e[t]&127)*Math.pow(2,35),++t,e[t++]<128)||(n+=(e[t]&127)*Math.pow(2,42),++t,e[t++]<128)))break e;return r&&(r[0]=t),n}function pr(e){var r=0,t=e[r]&127;e:if(e[r++]>=128){if(t|=(e[r]&127)<<7,e[r++]<128||(t|=(e[r]&127)<<14,e[r++]<128)||(t|=(e[r]&127)<<21,e[r++]<128))break e;t|=(e[r]&127)<<28}return t}function Or(e){for(var r=[],t=[0];t[0]=128;);o=e.slice(c,t[0])}break;case 5:s=4,o=e.slice(t[0],t[0]+s),t[0]+=s;break;case 1:s=8,o=e.slice(t[0],t[0]+s),t[0]+=s;break;case 2:s=ys(e,t),o=e.slice(t[0],t[0]+s),t[0]+=s;break;case 3:case 4:default:throw new Error("PB Type ".concat(i," for Field ").concat(a," at offset ").concat(n))}var u={data:o,type:i};r[a]==null?r[a]=[u]:r[a].push(u)}return r}function bu(e,r){return(e==null?void 0:e.map(function(t){return r(t.data)}))||[]}function Fk(e){for(var r,t=[],n=[0];n[0]>>0>0),t.push(s)}return t}function jk(e,r){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var t=[0],n=ys(r,t),a=[];t[0]>2;if(s<60)++s;else{var o=s-59;s=r[t[0]],o>1&&(s|=r[t[0]+1]<<8),o>2&&(s|=r[t[0]+2]<<16),o>3&&(s|=r[t[0]+3]<<24),s>>>=0,s++,t[0]+=o}a.push(r.slice(t[0],t[0]+s)),t[0]+=s;continue}else{var c=0,u=0;if(i==1?(u=(r[t[0]]>>2&7)+4,c=(r[t[0]++]&224)<<3,c|=r[t[0]++]):(u=(r[t[0]++]>>2)+1,i==2?(c=r[t[0]]|r[t[0]+1]<<8,t[0]+=2):(c=(r[t[0]]|r[t[0]+1]<<8|r[t[0]+2]<<16|r[t[0]+3]<<24)>>>0,t[0]+=4)),a=[d0(a)],c==0)throw new Error("Invalid offset 0");if(c>a[0].length)throw new Error("Invalid offset beyond length");if(u>=c)for(a.push(a[0].slice(-c)),u-=c;u>=a[a.length-1].length;)a.push(a[a.length-1]),u-=a[a.length-1].length;a.push(a[0].slice(-c,-c+u))}}var f=d0(a);if(f.length!=n)throw new Error("Unexpected length: ".concat(f.length," != ").concat(n));return f}function bk(e){for(var r=[],t=0;t1?12:8)+np(i&(n>1?3470:398))*4,o=-1,c=-1,u=NaN,f=new Date(2001,0,1);i&512&&(o=a.getUint32(s,!0),s+=4),s+=np(i&(n>1?12288:4096))*4,i&16&&(c=a.getUint32(s,!0),s+=4),i&32&&(u=a.getFloat64(s,!0),s+=8),i&64&&(f.setTime(f.getTime()+a.getFloat64(s,!0)*1e3),s+=8);var d;switch(e[2]){case 0:break;case 2:d={t:"n",v:u};break;case 3:d={t:"s",v:r[c]};break;case 5:d={t:"d",v:f};break;case 6:d={t:"b",v:u>0};break;case 7:d={t:"n",v:u/86400};break;case 8:d={t:"e",v:0};break;case 9:if(o>-1)d={t:"s",v:t[o]};else if(c>-1)d={t:"s",v:r[c]};else if(!isNaN(u))d={t:"n",v:u};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}return d}function Ok(e,r,t){var n=ju(e),a=n.getUint32(8,!0),i=12,s=-1,o=-1,c=NaN,u=NaN,f=new Date(2001,0,1);a&1&&(c=Nk(e,i),i+=16),a&2&&(u=n.getFloat64(i,!0),i+=8),a&4&&(f.setTime(f.getTime()+n.getFloat64(i,!0)*1e3),i+=8),a&8&&(o=n.getUint32(i,!0),i+=4),a&16&&(s=n.getUint32(i,!0),i+=4);var d;switch(e[1]){case 0:break;case 2:d={t:"n",v:c};break;case 3:d={t:"s",v:r[o]};break;case 5:d={t:"d",v:f};break;case 6:d={t:"b",v:u>0};break;case 7:d={t:"n",v:u/86400};break;case 8:d={t:"e",v:0};break;case 9:if(s>-1)d={t:"s",v:t[s]};else throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)));break;case 10:d={t:"n",v:c};break;default:throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)))}return d}function Ik(e,r,t){switch(e[0]){case 0:case 1:case 2:case 3:return Rk(e,r,t,e[0]);case 5:return Ok(e,r,t);default:throw new Error("Unsupported payload version ".concat(e[0]))}}function Pn(e){var r=Or(e);return ys(r[1][0].data)}function ap(e,r){var t=Or(r.data),n=pr(t[1][0].data),a=t[3],i=[];return(a||[]).forEach(function(s){var o=Or(s.data),c=pr(o[1][0].data)>>>0;switch(n){case 1:i[c]=f0(o[3][0].data);break;case 8:{var u=e[Pn(o[9][0].data)][0],f=Or(u.data),d=e[Pn(f[1][0].data)][0],p=pr(d.meta[1][0].data);if(p!=2001)throw new Error("2000 unexpected reference to ".concat(p));var x=Or(d.data);i[c]=x[3].map(function(g){return f0(g.data)}).join("")}break}}),i}function Lk(e,r){var t,n,a,i,s,o,c,u,f,d,p,x,g,m,w=Or(e),_=pr(w[1][0].data)>>>0,y=pr(w[2][0].data)>>>0,v=((n=(t=w[8])==null?void 0:t[0])==null?void 0:n.data)&&pr(w[8][0].data)>0||!1,A,N;if((i=(a=w[7])==null?void 0:a[0])!=null&&i.data&&r!=0)A=(o=(s=w[7])==null?void 0:s[0])==null?void 0:o.data,N=(u=(c=w[6])==null?void 0:c[0])==null?void 0:u.data;else if((d=(f=w[4])==null?void 0:f[0])!=null&&d.data&&r!=1)A=(x=(p=w[4])==null?void 0:p[0])==null?void 0:x.data,N=(m=(g=w[3])==null?void 0:g[0])==null?void 0:m.data;else throw"NUMBERS Tile missing ".concat(r," cell storage");for(var O=v?4:1,k=ju(A),B=[],P=0;P=1&&(K[B[B.length-1][0]]=N.subarray(B[B.length-1][1]*O)),{R:_,cells:K}}function Dk(e,r){var t,n=Or(r.data),a=(t=n==null?void 0:n[7])!=null&&t[0]?pr(n[7][0].data)>>>0>0?1:0:-1,i=bu(n[5],function(s){return Lk(s,a)});return{nrows:pr(n[4][0].data)>>>0,data:i.reduce(function(s,o){return s[o.R]||(s[o.R]=[]),o.cells.forEach(function(c,u){if(s[o.R][u])throw new Error("Duplicate cell r=".concat(o.R," c=").concat(u));s[o.R][u]=c}),s},[])}}function Mk(e,r,t){var n,a=Or(r.data),i={s:{r:0,c:0},e:{r:0,c:0}};if(i.e.r=(pr(a[6][0].data)>>>0)-1,i.e.r<0)throw new Error("Invalid row varint ".concat(a[6][0].data));if(i.e.c=(pr(a[7][0].data)>>>0)-1,i.e.c<0)throw new Error("Invalid col varint ".concat(a[7][0].data));t["!ref"]=Le(i);var s=Or(a[4][0].data),o=ap(e,e[Pn(s[4][0].data)][0]),c=(n=s[17])!=null&&n[0]?ap(e,e[Pn(s[17][0].data)][0]):[],u=Or(s[3][0].data),f=0;u[1].forEach(function(d){var p=Or(d.data),x=e[Pn(p[2][0].data)][0],g=pr(x.meta[1][0].data);if(g!=6002)throw new Error("6001 unexpected reference to ".concat(g));var m=Dk(e,x);m.data.forEach(function(w,_){w.forEach(function(y,v){var A=Ce({r:f+_,c:v}),N=Ik(y,o,c);N&&(t[A]=N)})}),f+=m.nrows})}function Pk(e,r){var t=Or(r.data),n={"!ref":"A1"},a=e[Pn(t[2][0].data)],i=pr(a[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));return Mk(e,a[0],n),n}function Bk(e,r){var t,n=Or(r.data),a={name:(t=n[1])!=null&&t[0]?f0(n[1][0].data):"",sheets:[]},i=bu(n[2],Pn);return i.forEach(function(s){e[s].forEach(function(o){var c=pr(o.meta[1][0].data);c==6e3&&a.sheets.push(Pk(e,o))})}),a}function Uk(e,r){var t=Iu(),n=Or(r.data),a=bu(n[1],Pn);if(a.forEach(function(i){e[i].forEach(function(s){var o=pr(s.meta[1][0].data);if(o==2){var c=Bk(e,s);c.sheets.forEach(function(u,f){Lu(t,u,f==0?c.name:c.name+"_"+f,!0)})}})}),t.SheetNames.length==0)throw new Error("Empty NUMBERS file");return t}function lc(e){var r,t,n,a,i={},s=[];if(e.FullPaths.forEach(function(c){if(c.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),e.FileIndex.forEach(function(c){if(c.name.match(/\.iwa$/)){var u;try{u=bk(c.content)}catch(d){return console.log("?? "+c.content.length+" "+(d.message||d))}var f;try{f=Fk(u)}catch(d){return console.log("## "+(d.message||d))}f.forEach(function(d){i[d.id]=d.messages,s.push(d.id)})}}),!s.length)throw new Error("File has no messages");var o=((a=(n=(t=(r=i==null?void 0:i[1])==null?void 0:r[0])==null?void 0:t.meta)==null?void 0:n[1])==null?void 0:a[0].data)&&pr(i[1][0].meta[1][0].data)==1&&i[1][0];if(o||s.forEach(function(c){i[c].forEach(function(u){var f=pr(u.meta[1][0].data)>>>0;if(f==1)if(!o)o=u;else throw new Error("Document has multiple roots")})}),!o)throw new Error("Cannot find Document root");return Uk(i,o)}function zk(e){return function(t){for(var n=0;n!=e.length;++n){var a=e[n];t[a[0]]===void 0&&(t[a[0]]=a[1]),a[2]==="n"&&(t[a[0]]=Number(t[a[0]]))}}}function Ru(e){zk([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]])(e)}function Vk(e){return Ba.WS.indexOf(e)>-1?"sheet":e==Ba.CS?"chart":e==Ba.DS?"dialog":e==Ba.MS?"macro":e&&e.length?e:"sheet"}function Hk(e,r){if(!e)return 0;try{e=r.map(function(n){return n.id||(n.id=n.strRelID),[n.name,e["!id"][n.id].Target,Vk(e["!id"][n.id].Type)]})}catch{return null}return!e||e.length===0?null:e}function Wk(e,r,t,n,a,i,s,o,c,u,f,d){try{i[n]=Wi(it(e,t,!0),r);var p=sr(e,r),x;switch(o){case"sheet":x=YE(p,r,a,c,i[n],u,f,d);break;case"chart":if(x=qE(p,r,a,c,i[n],u,f,d),!x||!x["!drawel"])break;var g=ji(x["!drawel"].Target,r),m=s0(g),w=Jw(it(e,g,!0),Wi(it(e,m,!0),g)),_=ji(w,g),y=s0(_);x=OE(it(e,_,!0),_,c,Wi(it(e,y,!0),_),u,x);break;case"macro":x=QE(p,r,a,c,i[n],u,f,d);break;case"dialog":x=ZE(p,r,a,c,i[n],u,f,d);break;default:throw new Error("Unrecognized sheet type "+o)}s[n]=x;var v=[];i&&i[n]&&qt(i[n]).forEach(function(A){var N="";if(i[n][A].Type==Ba.CMNT){N=ji(i[n][A].Target,r);var O=nk(sr(e,N,!0),N,c);if(!O||!O.length)return;Hd(x,O,!1)}i[n][A].Type==Ba.TCMNT&&(N=ji(i[n][A].Target,r),v=v.concat(qw(sr(e,N,!0),c)))}),v&&v.length&&Hd(x,v,!0,c.people||[])}catch(A){if(c.WTF)throw A}}function mt(e){return e.charAt(0)=="/"?e.slice(1):e}function Gk(e,r){if(Dh(),r=r||{},Ru(r),xt(e,"META-INF/manifest.xml")||xt(e,"objectdata.xml"))return rp(e,r);if(xt(e,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof lc<"u"){if(e.FileIndex)return lc(e);var t=Ie.utils.cfb_new();return xd(e).forEach(function(he){$_(t,he,G_(e,he))}),lc(t)}throw new Error("Unsupported NUMBERS file")}if(!xt(e,"[Content_Types].xml"))throw xt(e,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):xt(e,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var n=xd(e),a=z2(it(e,"[Content_Types].xml")),i=!1,s,o;if(a.workbooks.length===0&&(o="xl/workbook.xml",sr(e,o,!0)&&a.workbooks.push(o)),a.workbooks.length===0){if(o="xl/workbook.bin",!sr(e,o,!0))throw new Error("Could not find workbook");a.workbooks.push(o),i=!0}a.workbooks[0].slice(-3)=="bin"&&(i=!0);var c={},u={};if(!r.bookSheets&&!r.bookProps){if(Xi=[],a.sst)try{Xi=tk(sr(e,mt(a.sst)),a.sst,r)}catch(he){if(r.WTF)throw he}r.cellStyles&&a.themes.length&&(c=rk(it(e,a.themes[0].replace(/^\//,""),!0)||"",a.themes[0],r)),a.style&&(u=ek(sr(e,mt(a.style)),a.style,c,r))}a.links.map(function(he){try{var q=Wi(it(e,s0(mt(he))),he);return ik(sr(e,mt(he)),q,he,r)}catch{}});var f=JE(sr(e,mt(a.workbooks[0])),a.workbooks[0],r),d={},p="";a.coreprops.length&&(p=sr(e,mt(a.coreprops[0]),!0),p&&(d=f1(p)),a.extprops.length!==0&&(p=sr(e,mt(a.extprops[0]),!0),p&&$2(p,d,r)));var x={};(!r.bookSheets||r.bookProps)&&a.custprops.length!==0&&(p=it(e,mt(a.custprops[0]),!0),p&&(x=K2(p,r)));var g={};if((r.bookSheets||r.bookProps)&&(f.Sheets?s=f.Sheets.map(function(q){return q.name}):d.Worksheets&&d.SheetNames.length>0&&(s=d.SheetNames),r.bookProps&&(g.Props=d,g.Custprops=x),r.bookSheets&&typeof s<"u"&&(g.SheetNames=s),r.bookSheets?g.SheetNames:r.bookProps))return g;s={};var m={};r.bookDeps&&a.calcchain&&(m=ak(sr(e,mt(a.calcchain)),a.calcchain));var w=0,_={},y,v;{var A=f.Sheets;d.Worksheets=A.length,d.SheetNames=[];for(var N=0;N!=A.length;++N)d.SheetNames[N]=A[N].name}var O=i?"bin":"xml",k=a.workbooks[0].lastIndexOf("/"),B=(a.workbooks[0].slice(0,k+1)+"_rels/"+a.workbooks[0].slice(k+1)+".rels").replace(/^\//,"");xt(e,B)||(B="xl/_rels/workbook."+O+".rels");var P=Wi(it(e,B,!0),B.replace(/_rels.*/,"s5s"));(a.metadata||[]).length>=1&&(r.xlmeta=sk(sr(e,mt(a.metadata[0])),a.metadata[0],r)),(a.people||[]).length>=1&&(r.people=Qw(sr(e,mt(a.people[0])),r)),P&&(P=Hk(P,f.Sheets));var G=sr(e,"xl/worksheets/sheet.xml",!0)?1:0;e:for(w=0;w!=d.Worksheets;++w){var K="sheet";if(P&&P[w]?(y="xl/"+P[w][1].replace(/[\/]?xl\//,""),xt(e,y)||(y=P[w][1]),xt(e,y)||(y=B.replace(/_rels\/.*$/,"")+P[w][1]),K=P[w][2]):(y="xl/worksheets/sheet"+(w+1-G)+"."+O,y=y.replace(/sheet0\./,"sheet.")),v=y.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),r&&r.sheets!=null)switch(typeof r.sheets){case"number":if(w!=r.sheets)continue e;break;case"string":if(d.SheetNames[w].toLowerCase()!=r.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(r.sheets)){for(var U=!1,oe=0;oe!=r.sheets.length;++oe)typeof r.sheets[oe]=="number"&&r.sheets[oe]==w&&(U=1),typeof r.sheets[oe]=="string"&&r.sheets[oe].toLowerCase()==d.SheetNames[w].toLowerCase()&&(U=1);if(!U)continue e}}Wk(e,y,v,d.SheetNames[w],w,_,s,K,r,f,c,u)}return g={Directory:a,Workbook:f,Props:d,Custprops:x,Deps:m,Sheets:s,SheetNames:d.SheetNames,Strings:Xi,Styles:u,Themes:c,SSF:Er(Fe)},r&&r.bookFiles&&(e.files?(g.keys=n,g.files=e.files):(g.keys=[],g.files={},e.FullPaths.forEach(function(he,q){he=he.replace(/^Root Entry[\/]/,""),g.keys.push(he),g.files[he]=e.FileIndex[q]}))),r&&r.bookVBA&&(a.vba.length>0?g.vbaraw=sr(e,mt(a.vba[0]),!0):a.defaults&&a.defaults.bin===tS&&(g.vbaraw=sr(e,"xl/vbaProject.bin",!0))),g}function $k(e,r){var t=r||{},n="Workbook",a=Ie.find(e,n);try{if(n="/!DataSpaces/Version",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(Py(a.content),n="/!DataSpaces/DataSpaceMap",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var i=Uy(a.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var s=zy(a.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);Hy(a.content)}catch{}if(n="/EncryptionInfo",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var o=Wy(a.content);if(n="/EncryptedPackage",a=Ie.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(o[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(o[1],a.content,t.password||"",t);if(o[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(o[1],a.content,t.password||"",t);throw new Error("File is password-protected")}function Ou(e,r){var t="";switch((r||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":t=ct(e.slice(0,12));break;case"binary":t=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(r&&r.type||"undefined"))}return[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3),t.charCodeAt(4),t.charCodeAt(5),t.charCodeAt(6),t.charCodeAt(7)]}function Xk(e,r){return Ie.find(e,"EncryptedPackage")?$k(e,r):J1(e,r)}function Kk(e,r){var t,n=e,a=r||{};return a.type||(a.type=Oe&&Buffer.isBuffer(e)?"buffer":"base64"),t=Vh(n,a),Gk(t,a)}function Z1(e,r){var t=0;e:for(;t=2&&a[3]===0||a[2]===0&&(a[3]===8||a[3]===9)))return $i.to_workbook(n,t);break;case 3:case 131:case 139:case 140:return Vd.to_workbook(n,t);case 123:if(a[1]===92&&a[2]===114&&a[3]===116)return tw.to_workbook(n,t);break;case 10:case 13:case 32:return Jk(n,t);case 137:if(a[1]===80&&a[2]===78&&a[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return wy.indexOf(a[0])>-1&&a[2]<=12&&a[3]<=31?Vd.to_workbook(n,t):cc(e,n,t,i)}function Qk(e,r,t,n,a,i,s,o){var c=kr(t),u=o.defval,f=o.raw||!Object.prototype.hasOwnProperty.call(o,"raw"),d=!0,p=a===1?[]:{};if(a!==1)if(Object.defineProperty)try{Object.defineProperty(p,"__rowNum__",{value:t,enumerable:!1})}catch{p.__rowNum__=t}else p.__rowNum__=t;if(!s||e[t])for(var x=r.s.c;x<=r.e.c;++x){var g=s?e[t][x]:e[n[x]+c];if(g===void 0||g.t===void 0){if(u===void 0)continue;i[x]!=null&&(p[i[x]]=u);continue}var m=g.v;switch(g.t){case"z":if(m==null)break;continue;case"e":m=m==0?null:void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+g.t)}if(i[x]!=null){if(m==null)if(g.t=="e"&&m===null)p[i[x]]=null;else if(u!==void 0)p[i[x]]=u;else if(f&&m===null)p[i[x]]=null;else continue;else p[i[x]]=f&&(g.t!=="n"||g.t==="n"&&o.rawNumbers!==!1)?m:hn(g,m,o);m!=null&&(d=!1)}}return{row:p,isempty:d}}function m0(e,r){if(e==null||e["!ref"]==null)return[];var t={t:"n",v:0},n=0,a=1,i=[],s=0,o="",c={s:{r:0,c:0},e:{r:0,c:0}},u=r||{},f=u.range!=null?u.range:e["!ref"];switch(u.header===1?n=1:u.header==="A"?n=2:Array.isArray(u.header)?n=3:u.header==null&&(n=0),typeof f){case"string":c=rr(f);break;case"number":c=rr(e["!ref"]),c.s.r=f;break;default:c=f}n>0&&(a=0);var d=kr(c.s.r),p=[],x=[],g=0,m=0,w=Array.isArray(e),_=c.s.r,y=0,v={};w&&!e[_]&&(e[_]=[]);var A=u.skipHidden&&e["!cols"]||[],N=u.skipHidden&&e["!rows"]||[];for(y=c.s.c;y<=c.e.c;++y)if(!(A[y]||{}).hidden)switch(p[y]=dr(y),t=w?e[_][y]:e[p[y]+d],n){case 1:i[y]=y-c.s.c;break;case 2:i[y]=p[y];break;case 3:i[y]=u.header[y-c.s.c];break;default:if(t==null&&(t={w:"__EMPTY",t:"s"}),o=s=hn(t,null,u),m=v[s]||0,!m)v[s]=1;else{do o=s+"_"+m++;while(v[o]);v[s]=m,v[o]=1}i[y]=o}for(_=c.s.r+a;_<=c.e.r;++_)if(!(N[_]||{}).hidden){var O=Qk(e,c,_,p,n,i,w,u);(O.isempty===!1||(n===1?u.blankrows!==!1:u.blankrows))&&(x[g++]=O.row)}return x.length=g,x}var ip=/"/g;function Zk(e,r,t,n,a,i,s,o){for(var c=!0,u=[],f="",d=kr(t),p=r.s.c;p<=r.e.c;++p)if(n[p]){var x=o.dense?(e[t]||[])[p]:e[n[p]+d];if(x==null)f="";else if(x.v!=null){c=!1,f=""+(o.rawNumbers&&x.t=="n"?x.v:hn(x,null,o));for(var g=0,m=0;g!==f.length;++g)if((m=f.charCodeAt(g))===a||m===i||m===34||o.forceQuotes){f='"'+f.replace(ip,'""')+'"';break}f=="ID"&&(f='"ID"')}else x.f!=null&&!x.F?(c=!1,f="="+x.f,f.indexOf(",")>=0&&(f='"'+f.replace(ip,'""')+'"')):f="";u.push(f)}return o.blankrows===!1&&c?null:u.join(s)}function ex(e,r){var t=[],n=r??{};if(e==null||e["!ref"]==null)return"";var a=rr(e["!ref"]),i=n.FS!==void 0?n.FS:",",s=i.charCodeAt(0),o=n.RS!==void 0?n.RS:` `,c=o.charCodeAt(0),u=new RegExp((i=="|"?"\\|":i)+"+$"),f="",d=[];n.dense=Array.isArray(e);for(var p=n.skipHidden&&e["!cols"]||[],x=n.skipHidden&&e["!rows"]||[],g=a.s.c;g<=a.e.c;++g)(p[g]||{}).hidden||(d[g]=dr(g));for(var m=0,w=a.s.r;w<=a.e.r;++w)(x[w]||{}).hidden||(f=Zk(e,a,w,d,s,c,i,n),f!=null&&(n.strip&&(f=f.replace(u,"")),(f||n.blankrows!==!1)&&t.push((m++?o:"")+f)));return delete n.dense,t.join("")}function e3(e,r){r||(r={}),r.FS=" ",r.RS=` `;var t=ex(e,r);return t}function r3(e){var r="",t,n="";if(e==null||e["!ref"]==null)return[];var a=rr(e["!ref"]),i="",s=[],o,c=[],u=Array.isArray(e);for(o=a.s.c;o<=a.e.c;++o)s[o]=dr(o);for(var f=a.s.r;f<=a.e.r;++f)for(i=kr(f),o=a.s.c;o<=a.e.c;++o)if(r=s[o]+i,t=u?(e[f]||[])[o]:e[r],n="",t!==void 0){if(t.F!=null){if(r=t.F,!t.f)continue;n=t.f,r.indexOf(":")==-1&&(r=r+":"+r)}if(t.f!=null)n=t.f;else{if(t.t=="z")continue;if(t.t=="n"&&t.v!=null)n=""+t.v;else if(t.t=="b")n=t.v?"TRUE":"FALSE";else if(t.w!==void 0)n="'"+t.w;else{if(t.v===void 0)continue;t.t=="s"?n="'"+t.v:n=""+t.v}}c[c.length]=r+"="+n}return c}function rx(e,r,t){var n=t||{},a=+!n.skipHeader,i=e||{},s=0,o=0;if(i&&n.origin!=null)if(typeof n.origin=="number")s=n.origin;else{var c=typeof n.origin=="string"?Vr(n.origin):n.origin;s=c.r,o=c.c}var u,f={s:{c:0,r:0},e:{c:o,r:s+r.length-1+a}};if(i["!ref"]){var d=rr(i["!ref"]);f.e.c=Math.max(f.e.c,d.e.c),f.e.r=Math.max(f.e.r,d.e.r),s==-1&&(s=d.e.r+1,f.e.r=s+r.length-1+a)}else s==-1&&(s=0,f.e.r=r.length-1+a);var p=n.header||[],x=0;r.forEach(function(m,w){qt(m).forEach(function(_){(x=p.indexOf(_))==-1&&(p[x=p.length]=_);var y=m[_],v="z",A="",N=Ce({c:o+x,r:s+w+a});u=ws(i,N),y&&typeof y=="object"&&!(y instanceof Date)?i[N]=y:(typeof y=="number"?v="n":typeof y=="boolean"?v="b":typeof y=="string"?v="s":y instanceof Date?(v="d",n.cellDates||(v="n",y=Gr(y)),A=n.dateNF||Fe[14]):y===null&&n.nullError&&(v="e",y=0),u?(u.t=v,u.v=y,delete u.w,delete u.R,A&&(u.z=A)):i[N]=u={t:v,v:y},A&&(u.z=A))})}),f.e.c=Math.max(f.e.c,o+p.length-1);var g=kr(s);if(a)for(x=0;x=0&&e.SheetNames.length>r)return r;throw new Error("Cannot find sheet # "+r)}else if(typeof r=="string"){var t=e.SheetNames.indexOf(r);if(t>-1)return t;throw new Error("Cannot find sheet name |"+r+"|")}else throw new Error("Cannot find sheet |"+r+"|")}function Iu(){return{SheetNames:[],Sheets:{}}}function Lu(e,r,t,n){var a=1;if(!t)for(;a<=65535&&e.SheetNames.indexOf(t="Sheet"+a)!=-1;++a,t=void 0);if(!t||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(t)>=0){var i=t.match(/(^.*?)(\d+)$/);a=i&&+i[2]||0;var s=i&&i[1]||t;for(++a;a<=65535&&e.SheetNames.indexOf(t=s+a)!=-1;++a);}if(zE(t),e.SheetNames.indexOf(t)>=0)throw new Error("Worksheet with name |"+t+"| already exists!");return e.SheetNames.push(t),e.Sheets[t]=r,t}function a3(e,r,t){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=n3(e,r);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),t){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+t)}e.Workbook.Sheets[n].Hidden=t}function i3(e,r){return e.z=r,e}function tx(e,r,t){return r?(e.l={Target:r},t&&(e.l.Tooltip=t)):delete e.l,e}function s3(e,r,t){return tx(e,"#"+r,t)}function o3(e,r,t){e.c||(e.c=[]),e.c.push({t:r,a:t||"SheetJS"})}function l3(e,r,t,n){for(var a=typeof r!="string"?r:rr(r),i=typeof r=="string"?r:Le(r),s=a.s.r;s<=a.e.r;++s)for(var o=a.s.c;o<=a.e.c;++o){var c=ws(e,s,o);c.t="n",c.F=i,delete c.v,s==a.s.r&&o==a.s.c&&(c.f=t,n&&(c.D=!0))}return e}var c3={encode_col:dr,encode_row:kr,encode_cell:Ce,encode_range:Le,decode_col:yu,decode_row:_u,split_cell:y2,decode_cell:Vr,decode_range:li,format_cell:hn,sheet_add_aoa:s1,sheet_add_json:rx,sheet_add_dom:Y1,aoa_to_sheet:ci,json_to_sheet:t3,table_to_sheet:q1,table_to_book:Tk,sheet_to_csv:ex,sheet_to_txt:e3,sheet_to_json:m0,sheet_to_html:kk,sheet_to_formulae:r3,sheet_to_row_object_array:m0,sheet_get_cell:ws,book_new:Iu,book_append_sheet:Lu,book_set_sheet_visibility:a3,cell_set_number_format:i3,cell_set_hyperlink:tx,cell_set_internal_link:s3,cell_add_comment:o3,sheet_set_array_formula:l3,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};const uc=({value:e})=>{const[r,t]=z.useState(!1),n=a=>{a.stopPropagation(),Kt(e),t(!0),setTimeout(()=>t(!1),1500)};return l.jsx("button",{onClick:n,title:"Copier",style:{background:"none",border:"none",cursor:"pointer",color:r?"var(--success)":"var(--primary-light)",fontSize:13,padding:"0 3px",marginLeft:3,verticalAlign:"middle"},children:r?"✓":"📋"})};function u3({data:e,onSave:r,canEdit:t}){const[n,a]=z.useState(e||[]),[i,s]=z.useState(""),[o,c]=z.useState(""),[u,f]=z.useState(""),[d,p]=z.useState("reference"),[x,g]=z.useState(!0),[m,w]=z.useState(null),[_,y]=z.useState(!1),[v,A]=z.useState(!1),[N,O]=z.useState(""),[k,B]=z.useState({reference:"",statut:"",liste:"",forfait:"",imei:"",csim:""}),P=z.useRef(null),G=(F,Q)=>B(ce=>({...ce,[F]:Q}));z.useEffect(()=>{a(e||[])},[e]),z.useEffect(()=>{try{const F=localStorage.getItem("sim_last_import");F&&O(F)}catch{}},[]);const K=F=>{var b;const Q=(b=F.target.files)==null?void 0:b[0];if(!Q)return;A(!0);const ce=new FileReader;ce.onload=X=>{try{const V=new Uint8Array(X.target.result),H=p0(V,{type:"array"}),ie=H.Sheets[H.SheetNames[0]],W=c3.sheet_to_json(ie,{header:1,defval:""}).slice(1).filter(h=>h[0]).map(h=>({reference:String(h[0]||""),civilite:String(h[1]||""),nom:String(h[2]||""),prenom:String(h[3]||""),email:String(h[4]||""),siren:String(h[5]||""),raison_sociale:String(h[6]||""),n_contrat:String(h[7]||""),statut:String(h[11]||""),date_service:String(h[12]||""),date_fin_eng:String(h[13]||""),date_facturation:String(h[14]||""),rio:String(h[16]||""),liste:String(h[17]||""),forfait:String(h[18]||""),terminal:String(h[19]||""),imei:String(h[21]||""),format_sim:String(h[24]||""),csim:String(h[27]||""),pin1:String(h[28]||""),pin2:String(h[29]||""),puk1:String(h[30]||""),puk2:String(h[31]||""),vpn:String(h[32]||""),num_prive:String(h[33]||""),type_offre:String(h[39]||"")})),E=new Map((e||[]).map(h=>[h.reference,h]));W.forEach(h=>E.set(h.reference,h));const C=Array.from(E.values());a(C),r(C);const S=new Date().toLocaleString("fr-FR");O(S);try{localStorage.setItem("sim_last_import",S)}catch{}}catch{alert("Erreur lors de la lecture du fichier Excel.")}A(!1)},ce.readAsArrayBuffer(Q),F.target.value=""},U=F=>{d===F?g(Q=>!Q):(p(F),g(!0))},oe=z.useMemo(()=>{let F=n;if(o&&(F=F.filter(Q=>Q.statut===o)),u&&(F=F.filter(Q=>Q.liste===u)),k.reference&&(F=F.filter(Q=>Q.reference.toLowerCase().includes(k.reference.toLowerCase()))),k.statut&&(F=F.filter(Q=>Q.statut.toLowerCase().includes(k.statut.toLowerCase()))),k.liste&&(F=F.filter(Q=>Q.liste.toLowerCase().includes(k.liste.toLowerCase()))),k.forfait&&(F=F.filter(Q=>Q.forfait.toLowerCase().includes(k.forfait.toLowerCase()))),k.imei&&(F=F.filter(Q=>Q.imei.toLowerCase().includes(k.imei.toLowerCase()))),k.csim&&(F=F.filter(Q=>Q.csim.toLowerCase().includes(k.csim.toLowerCase()))),i){const Q=i.toLowerCase();F=F.filter(ce=>ce.reference.toLowerCase().includes(Q)||ce.forfait.toLowerCase().includes(Q)||ce.imei.toLowerCase().includes(Q)||ce.csim.toLowerCase().includes(Q)||ce.nom.toLowerCase().includes(Q)||ce.prenom.toLowerCase().includes(Q)||ce.liste.toLowerCase().includes(Q)||ce.terminal.toLowerCase().includes(Q))}return[...F].sort((Q,ce)=>{const b=String(Q[d]||""),X=String(ce[d]||"");return x?b.localeCompare(X):X.localeCompare(b)})},[n,i,o,u,k,d,x]),he=z.useMemo(()=>[...new Set(n.map(F=>F.statut).filter(Boolean))].sort(),[n]),q=z.useMemo(()=>[...new Set(n.map(F=>F.liste).filter(Boolean))].sort(),[n]),J=F=>{const Q=F.toLowerCase();return Q.includes("actif")?{bg:"#e8f5e9",color:"#2e7d32"}:Q.includes("résil")||Q.includes("resil")?{bg:"#ffebee",color:"#c62828"}:{bg:"#f5f5f5",color:"#757575"}},re=({col:F})=>l.jsx("span",{className:"sort-icon",children:d===F?x?"↑":"↓":"↕"}),Y=({label:F,value:Q,mono:ce=!1,copy:b=!1})=>l.jsxs("tr",{style:{borderBottom:"1px solid var(--border)"},children:[l.jsx("td",{style:{padding:"5px 8px",fontWeight:600,color:"var(--text-muted)",width:"42%",fontSize:12},children:F}),l.jsxs("td",{style:{padding:"5px 8px",fontFamily:ce?"var(--font-mono)":"inherit",fontSize:12,wordBreak:"break-all"},children:[Q||"—",b&&Q&&l.jsx(uc,{value:Q})]})]});return l.jsxs("div",{className:"table-container",style:{padding:"16px 20px",display:"flex",flexDirection:"column",height:"100%"},children:[l.jsxs("div",{className:"toolbar",children:[l.jsxs("div",{className:"search-box",children:[l.jsxs("svg",{width:"14",height:"14",fill:"none",viewBox:"0 0 24 24",stroke:"white",strokeWidth:"2",children:[l.jsx("circle",{cx:"11",cy:"11",r:"8"}),l.jsx("path",{d:"M21 21l-4.35-4.35"})]}),l.jsx("input",{className:"search-input",placeholder:"Recherche globale...",value:i,onChange:F=>s(F.target.value)})]}),l.jsxs("select",{className:"filter-select",value:o,onChange:F=>c(F.target.value),children:[l.jsx("option",{value:"",children:"Tous statuts"}),he.map(F=>l.jsx("option",{value:F,children:F},F))]}),l.jsxs("select",{className:"filter-select",value:u,onChange:F=>f(F.target.value),children:[l.jsx("option",{value:"",children:"Toutes listes"}),q.map(F=>l.jsx("option",{value:F,children:F},F))]}),l.jsxs("span",{className:"toolbar-info",children:[oe.length," / ",n.length," ligne",n.length!==1?"s":""]}),N&&l.jsxs("span",{className:"toolbar-info",style:{color:"var(--text-muted)",fontSize:11},children:["↑ Import : ",N]}),t&&l.jsxs(l.Fragment,{children:[l.jsx("button",{className:"btn-add-row",onClick:()=>{var F;return(F=P.current)==null?void 0:F.click()},disabled:v,children:v?"⏳ Import...":"⬆ Importer Excel"}),l.jsx("input",{ref:P,type:"file",accept:".xlsx,.xls",style:{display:"none"},onChange:K})]}),t&&n.length>0&&l.jsx("button",{className:"btn-delete",style:{padding:"6px 12px"},onClick:()=>{confirm("Vider toutes les lignes SIM ?")&&(a([]),r([]))},children:"🗑 Vider"})]}),n.length===0?l.jsxs("div",{style:{textAlign:"center",padding:"60px 20px",color:"var(--text-muted)"},children:[l.jsxs("svg",{width:"48",height:"48",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.2",style:{opacity:.3,display:"block",margin:"0 auto 12px"},children:[l.jsx("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2"}),l.jsx("path",{d:"M9 7h6M9 11h6M9 15h4"})]}),l.jsx("p",{style:{fontSize:14,fontWeight:500},children:"Aucune ligne SIM"}),t&&l.jsx("p",{style:{fontSize:12,marginTop:4},children:"Importez un fichier Excel (.xlsx) pour afficher les données"})]}):l.jsx("div",{style:{height:"calc(100vh - 168px)",overflowY:"auto",overflowX:"auto"},children:l.jsxs("table",{className:"data-table",style:{width:"100%",borderCollapse:"collapse"},children:[l.jsxs("thead",{children:[l.jsxs("tr",{className:"header-row",children:[l.jsxs("th",{onClick:()=>U("reference"),style:{minWidth:130},children:["Référence ",l.jsx(re,{col:"reference"})]}),l.jsxs("th",{onClick:()=>U("statut"),style:{minWidth:80},children:["Statut ",l.jsx(re,{col:"statut"})]}),l.jsxs("th",{onClick:()=>U("liste"),style:{minWidth:70},children:["Liste ",l.jsx(re,{col:"liste"})]}),l.jsxs("th",{onClick:()=>U("forfait"),style:{minWidth:160},children:["Forfait ",l.jsx(re,{col:"forfait"})]}),l.jsxs("th",{onClick:()=>U("imei"),style:{minWidth:145},children:["IMEI ",l.jsx(re,{col:"imei"})]}),l.jsxs("th",{onClick:()=>U("csim"),style:{minWidth:155},children:["N° CSIM ",l.jsx(re,{col:"csim"})]}),l.jsx("th",{style:{width:36}})]}),l.jsxs("tr",{className:"filter-row",children:[["reference","statut","liste","forfait","imei","csim"].map(F=>l.jsx("th",{children:l.jsx("input",{type:"text",value:k[F],onChange:Q=>G(F,Q.target.value),placeholder:"🔍",onClick:Q=>Q.stopPropagation()})},F)),l.jsx("th",{})]})]}),l.jsx("tbody",{children:oe.map((F,Q)=>{const ce=J(F.statut);return l.jsxs("tr",{className:Q%2===0?"":"row-even",children:[l.jsxs("td",{style:{fontFamily:"var(--font-mono)",fontWeight:600,color:"var(--primary)",fontSize:12,whiteSpace:"nowrap"},children:[F.reference,l.jsx(uc,{value:F.reference})]}),l.jsx("td",{children:l.jsx("span",{style:{background:ce.bg,color:ce.color,padding:"2px 7px",borderRadius:4,fontSize:11,fontWeight:600,whiteSpace:"nowrap"},children:F.statut})}),l.jsx("td",{style:{fontSize:12},children:F.liste}),l.jsx("td",{style:{fontSize:12},children:F.forfait}),l.jsx("td",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:F.imei}),l.jsxs("td",{style:{fontFamily:"var(--font-mono)",fontSize:11,whiteSpace:"nowrap"},children:[F.csim,l.jsx(uc,{value:F.csim})]}),l.jsx("td",{children:l.jsx("button",{title:"Voir le détail",onClick:()=>{w(F),y(!1)},style:{background:"none",border:"none",cursor:"pointer",color:"var(--primary-light)",fontSize:15},children:"🔍"})})]},F.reference+Q)})})]})}),m&&l.jsx("div",{className:"modal-overlay",onClick:()=>w(null),children:l.jsxs("div",{className:"modal-box",style:{maxWidth:900,width:"90vw",maxHeight:"88vh",display:"flex",flexDirection:"column"},onClick:F=>F.stopPropagation(),children:[l.jsxs("h3",{style:{marginBottom:16,color:"var(--primary)",fontSize:15,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[l.jsxs("span",{children:["Détail — ",m.reference]}),l.jsx("button",{className:"btn-add-row",style:{fontSize:11,padding:"3px 10px"},onClick:()=>y(F=>!F),children:_?"🔒 Masquer codes":"🔓 Afficher PIN/PUK"})]}),l.jsx("div",{style:{overflowY:"auto",flex:1},children:l.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16},children:[l.jsxs("div",{children:[l.jsx("div",{style:{fontWeight:700,fontSize:11,color:"var(--primary)",textTransform:"uppercase",letterSpacing:1,padding:"4px 0 6px",borderBottom:"2px solid var(--primary)",marginBottom:8},children:"Identification"}),l.jsx("table",{style:{width:"100%",borderCollapse:"collapse"},children:l.jsxs("tbody",{children:[l.jsx(Y,{label:"Référence",value:m.reference,mono:!0,copy:!0}),l.jsx(Y,{label:"Civilité",value:m.civilite}),l.jsx(Y,{label:"Nom",value:m.nom}),l.jsx(Y,{label:"Prénom",value:m.prenom}),l.jsx(Y,{label:"E-mail",value:m.email}),l.jsx(Y,{label:"Raison sociale",value:m.raison_sociale}),l.jsx(Y,{label:"SIREN",value:m.siren}),l.jsx(Y,{label:"N° Contrat",value:m.n_contrat})]})}),l.jsx("div",{style:{fontWeight:700,fontSize:11,color:"var(--primary)",textTransform:"uppercase",letterSpacing:1,padding:"12px 0 6px",borderBottom:"2px solid var(--primary)",marginBottom:8},children:"Ligne"}),l.jsx("table",{style:{width:"100%",borderCollapse:"collapse"},children:l.jsxs("tbody",{children:[l.jsx(Y,{label:"Statut",value:m.statut}),l.jsx(Y,{label:"Liste",value:m.liste}),l.jsx(Y,{label:"Forfait",value:m.forfait}),l.jsx(Y,{label:"Type d'offre",value:m.type_offre}),l.jsx(Y,{label:"Date mise en service",value:m.date_service}),l.jsx(Y,{label:"Date fin engagement",value:m.date_fin_eng}),l.jsx(Y,{label:"Date facturation",value:m.date_facturation}),l.jsx(Y,{label:"RIO",value:m.rio,mono:!0})]})})]}),l.jsxs("div",{children:[l.jsx("div",{style:{fontWeight:700,fontSize:11,color:"var(--primary)",textTransform:"uppercase",letterSpacing:1,padding:"4px 0 6px",borderBottom:"2px solid var(--primary)",marginBottom:8},children:"Terminal & SIM"}),l.jsx("table",{style:{width:"100%",borderCollapse:"collapse"},children:l.jsxs("tbody",{children:[l.jsx(Y,{label:"Terminal",value:m.terminal}),l.jsx(Y,{label:"IMEI",value:m.imei,mono:!0}),l.jsx(Y,{label:"Format SIM",value:m.format_sim}),l.jsx(Y,{label:"N° CSIM",value:m.csim,mono:!0,copy:!0}),l.jsx(Y,{label:"VPN",value:m.vpn}),l.jsx(Y,{label:"Numéro privé",value:m.num_prive,mono:!0})]})}),l.jsx("div",{style:{fontWeight:700,fontSize:11,color:"var(--primary)",textTransform:"uppercase",letterSpacing:1,padding:"12px 0 6px",borderBottom:"2px solid var(--primary)",marginBottom:8},children:"Codes PIN/PUK"}),l.jsx("table",{style:{width:"100%",borderCollapse:"collapse"},children:l.jsx("tbody",{children:_?l.jsxs(l.Fragment,{children:[l.jsx(Y,{label:"PIN 1",value:m.pin1,mono:!0,copy:!0}),l.jsx(Y,{label:"PIN 2",value:m.pin2,mono:!0,copy:!0}),l.jsx(Y,{label:"PUK 1",value:m.puk1,mono:!0,copy:!0}),l.jsx(Y,{label:"PUK 2",value:m.puk2,mono:!0,copy:!0})]}):l.jsx("tr",{children:l.jsx("td",{colSpan:2,style:{padding:"8px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:'Cliquez sur "Afficher PIN/PUK" pour révéler les codes'})})})})]})]})}),l.jsx("div",{style:{marginTop:12,textAlign:"right",flexShrink:0},children:l.jsx("button",{className:"btn-save",onClick:()=>w(null),children:"Fermer"})})]})})]})}function lo({links:e,rubriques:r,canEdit:t,onSave:n}){const[a,i]=z.useState(()=>{try{return localStorage.getItem("liens_collapsed")==="1"}catch{return!1}}),[s,o]=z.useState(!1),[c,u]=z.useState([]),[f,d]=z.useState([]),[p,x]=z.useState(""),[g,m]=z.useState(""),[w,_]=z.useState(""),[y,v]=z.useState(""),[A,N]=z.useState(null),[O,k]=z.useState(""),[B,P]=z.useState(""),[G,K]=z.useState(""),U=z.useRef(null),oe=z.useRef(null),he=()=>{u([...e]),d([...r]),o(!0)},q=()=>{n(c,f),o(!1)},J=()=>{const E=y.trim();!E||f.includes(E)||(d([...f,E]),v(""))},re=E=>{d(f.filter(C=>C!==E)),u(c.map(C=>C.rubrique===E?{...C,rubrique:""}:C))},Y=()=>{const E=p.trim(),C=g.trim();if(!E||!C)return;const S=C.startsWith("http")?C:`https://${C}`;u([...c,{id:Date.now().toString(),label:E,url:S,rubrique:w}]),x(""),m(""),_("")},F=E=>u(c.filter(C=>C.id!==E)),Q=E=>{N(E.id),k(E.label),P(E.url),K(E.rubrique||"")},ce=()=>{u(c.map(E=>E.id===A?{...E,label:O.trim(),url:B.trim(),rubrique:G}:E)),N(null)},b=E=>{U.current=E},X=(E,C)=>{E.preventDefault(),oe.current=C},V=()=>{if(!U.current||!oe.current||U.current===oe.current)return;const E=[...c],C=E.findIndex(Z=>Z.id===U.current),S=E.findIndex(Z=>Z.id===oe.current),[h]=E.splice(C,1);E.splice(S,0,h),u(E),U.current=null,oe.current=null},H=E=>[...E].sort((C,S)=>C.label.localeCompare(S.label,"fr")),ie=E=>{const C=[];for(const h of r){const Z=E.filter(ue=>ue.rubrique===h);Z.length>0&&C.push({rub:h,items:H(Z)})}const S=E.filter(h=>!h.rubrique||!r.includes(h.rubrique));return S.length>0&&C.push({rub:"",items:H(S)}),C},D=E=>{const C=[];for(const h of f){const Z=E.filter(ue=>ue.rubrique===h);C.push({rub:h,items:Z})}const S=E.filter(h=>!h.rubrique||!f.includes(h.rubrique));return C.push({rub:"",items:S}),C},W=()=>{const E=!a;i(E);try{localStorage.setItem("liens_collapsed",E?"1":"0")}catch{}};return l.jsxs("div",{className:`liens-sidebar${a?" liens-sidebar-collapsed":""}`,children:[l.jsxs("div",{className:"liens-sidebar-header",children:[l.jsx("span",{className:"liens-sidebar-title",style:{display:a?"none":"block"},children:"🔗 Liens pratiques"}),l.jsxs("div",{style:{display:"flex",gap:4,marginLeft:"auto"},children:[t&&!s&&!a&&l.jsx("button",{className:"liens-edit-btn",onClick:he,title:"Gérer les liens",children:"✏"}),l.jsx("button",{onClick:W,title:a?"Afficher les liens pratiques":"Masquer les liens pratiques",style:{background:"none",border:"none",cursor:"pointer",color:"var(--primary)",fontSize:14,padding:"0 2px",fontWeight:700},children:a?"▶":"◀"})]})]}),!a&&l.jsx(l.Fragment,{children:s?l.jsxs("div",{className:"liens-edit-mode",children:[l.jsx("div",{className:"liens-section-title",children:"Rubriques"}),l.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6},children:[l.jsx("input",{className:"liens-input",placeholder:"Nouvelle rubrique...",value:y,onChange:E=>v(E.target.value),onKeyDown:E=>E.key==="Enter"&&J(),style:{flex:1,fontSize:11}}),l.jsx("button",{className:"liens-btn-add",onClick:J,children:"+"})]}),f.map(E=>l.jsxs("div",{className:"liens-rub-manage-item",children:[l.jsx("span",{style:{fontSize:11,fontWeight:600,color:"var(--primary)"},children:E}),l.jsx("button",{className:"liens-btn-del",onClick:()=>re(E),children:"🗑"})]},E)),l.jsx("div",{className:"liens-section-title",style:{marginTop:10},children:"Liens"}),l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4,marginBottom:8},children:[l.jsx("input",{className:"liens-input",placeholder:"Libellé...",value:p,onChange:E=>x(E.target.value)}),l.jsx("input",{className:"liens-input",placeholder:"URL (https://...)",value:g,onChange:E=>m(E.target.value)}),l.jsxs("select",{className:"liens-input",value:w,onChange:E=>_(E.target.value),children:[l.jsx("option",{value:"",children:"Sans rubrique"}),f.map(E=>l.jsx("option",{value:E,children:E},E))]}),l.jsx("button",{className:"liens-btn-add",onClick:Y,style:{width:"100%"},children:"+ Ajouter le lien"})]}),D(c).map(({rub:E,items:C})=>l.jsxs("div",{className:"liens-rubrique",children:[(E||C.length>0)&&l.jsxs("div",{className:"liens-rubrique-header",children:[l.jsx("span",{className:"liens-rubrique-title",children:E||"Sans rubrique"}),l.jsx("div",{className:"liens-rubrique-line"})]}),C.map(S=>l.jsx("div",{draggable:!0,onDragStart:()=>b(S.id),onDragOver:h=>X(h,S.id),onDrop:V,className:"liens-edit-item",style:{cursor:"grab"},children:A===S.id?l.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3,flex:1},children:[l.jsx("input",{className:"liens-input",value:O,onChange:h=>k(h.target.value)}),l.jsx("input",{className:"liens-input",value:B,onChange:h=>P(h.target.value)}),l.jsxs("select",{className:"liens-input",value:G,onChange:h=>K(h.target.value),children:[l.jsx("option",{value:"",children:"Sans rubrique"}),f.map(h=>l.jsx("option",{value:h,children:h},h))]}),l.jsxs("div",{style:{display:"flex",gap:4},children:[l.jsx("button",{className:"liens-btn-add",onClick:ce,style:{flex:1},children:"✓"}),l.jsx("button",{className:"liens-btn-del",onClick:()=>N(null),children:"✕"})]})]}):l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"liens-drag-handle",title:"Glisser pour réordonner",style:{cursor:"grab",color:"#aaa",fontSize:18,padding:"0 6px 0 2px",userSelect:"none"},children:"⠿"}),l.jsx("span",{style:{flex:1,fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:S.label}),l.jsx("button",{className:"liens-btn-icon",onClick:()=>Q(S),children:"✏"}),l.jsx("button",{className:"liens-btn-del",onClick:()=>F(S.id),children:"🗑"})]})},S.id))]},E||"__norub__")),l.jsxs("div",{style:{display:"flex",gap:6,marginTop:10},children:[l.jsx("button",{className:"liens-btn-save",onClick:q,style:{flex:1},children:"💾 Sauvegarder"}),l.jsx("button",{className:"liens-btn-cancel",onClick:()=>o(!1),children:"✕"})]})]}):l.jsxs("div",{className:"liens-pratiques-list",children:[e.length===0&&l.jsx("p",{style:{fontSize:11,color:"var(--text-muted)",padding:"4px 0"},children:"Aucun lien"}),ie(e).map(({rub:E,items:C})=>l.jsxs("div",{className:"liens-rubrique",children:[E&&l.jsxs("div",{className:"liens-rubrique-header",children:[l.jsx("span",{className:"liens-rubrique-title",children:E}),l.jsx("div",{className:"liens-rubrique-line"})]}),C.map(S=>l.jsx("div",{className:"liens-pratiques-item",children:l.jsx("a",{href:S.url,target:"_blank",rel:"noopener noreferrer",className:"liens-pratiques-link",children:S.label})},S.id))]},E||"__norub__"))]})})]})}function f3({onClose:e,onChange:r,showToast:t}){const[n,a]=z.useState(""),[i,s]=z.useState(""),[o,c]=z.useState(""),[u,f]=z.useState(""),d=async()=>{if(i!==o){f("Les mots de passe ne correspondent pas.");return}const p=await r(n,i);if(p){f(p);return}t("✓ Mot de passe modifié avec succès"),e()};return l.jsx("div",{className:"modal-overlay",onClick:e,children:l.jsxs("div",{className:"modal-box",onClick:p=>p.stopPropagation(),children:[l.jsx("h3",{children:"🔑 Changer mon mot de passe"}),l.jsxs("div",{className:"form-group",children:[l.jsx("label",{children:"Mot de passe actuel"}),l.jsx("input",{type:"password",value:n,onChange:p=>a(p.target.value),style:{width:"100%",padding:"9px 12px",border:"1px solid #d0d7e2",borderRadius:"7px",fontSize:14}})]}),l.jsxs("div",{className:"form-group",children:[l.jsx("label",{children:"Nouveau mot de passe"}),l.jsx("input",{type:"password",value:i,onChange:p=>s(p.target.value),style:{width:"100%",padding:"9px 12px",border:"1px solid #d0d7e2",borderRadius:"7px",fontSize:14}})]}),l.jsxs("div",{className:"form-group",children:[l.jsx("label",{children:"Confirmer le nouveau mot de passe"}),l.jsx("input",{type:"password",value:o,onChange:p=>c(p.target.value),style:{width:"100%",padding:"9px 12px",border:"1px solid #d0d7e2",borderRadius:"7px",fontSize:14}})]}),u&&l.jsx("div",{style:{color:"#c62828",fontSize:12,marginBottom:10},children:u}),l.jsxs("div",{style:{display:"flex",gap:10,justifyContent:"flex-end",marginTop:16},children:[l.jsx("button",{className:"modal-btn-cancel",onClick:e,children:"Annuler"}),l.jsx("button",{className:"modal-btn-primary",onClick:d,children:"Changer"})]})]})})}function d3({users:e,currentUser:r,onUpdateRole:t,onDeleteUser:n,onAddUser:a,onClose:i}){const[s,o]=z.useState(!1),[c,u]=z.useState(""),[f,d]=z.useState(""),[p,x]=z.useState("viewer"),[g,m]=z.useState(""),[w,_]=z.useState(null),y=N=>N==="admin"?"#c62828":N==="editor"?"#2e7d32":"#4e6376",v=N=>N==="admin"?"#fde8e8":N==="editor"?"#e8f5e9":"#e8edf4",A=async()=>{_(null);const N=await a(c,f,p,g);N?_(N):(u(""),d(""),x("viewer"),m(""),o(!1))};return l.jsx("div",{className:"modal-overlay",onClick:i,style:{padding:0},children:l.jsxs("div",{className:"admin-panel-fullscreen",onClick:N=>N.stopPropagation(),children:[l.jsxs("div",{className:"admin-panel-header",children:[l.jsx("h3",{style:{margin:0,color:"var(--primary)",fontSize:16,fontWeight:700},children:"Gestion des utilisateurs"}),l.jsx("button",{onClick:i,className:"admin-panel-close",style:{border:"none",background:"none",fontSize:24,cursor:"pointer",color:"#999"},children:"×"})]}),l.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13},children:[l.jsx("thead",{children:l.jsxs("tr",{style:{borderBottom:"2px solid var(--border)",textAlign:"left"},children:[l.jsx("th",{style:{padding:"8px 6px"},children:"Utilisateur"}),l.jsx("th",{style:{padding:"8px 6px"},children:"Nom affiché"}),l.jsx("th",{style:{padding:"8px 6px"},children:"Rôle"}),l.jsx("th",{style:{padding:"8px 6px",textAlign:"right"},children:"Actions"})]})}),l.jsx("tbody",{children:e.map(N=>l.jsxs("tr",{style:{borderBottom:"1px solid var(--border)"},children:[l.jsxs("td",{style:{padding:"10px 6px",fontFamily:"var(--font-mono)",fontSize:12},children:[N.username,N.username===r.username&&l.jsx("span",{style:{marginLeft:6,fontSize:10,color:"#999"},children:"(vous)"})]}),l.jsx("td",{style:{padding:"10px 6px"},children:N.displayName}),l.jsx("td",{style:{padding:"10px 6px"},children:l.jsxs("select",{value:N.role,onChange:O=>t(N.username,O.target.value),disabled:N.username===r.username,className:"cell-dropdown",style:{fontSize:11,fontWeight:500,padding:"3px 6px",borderRadius:4,border:"1px solid var(--border)",cursor:N.username===r.username?"default":"pointer",color:y(N.role),background:v(N.role)},children:[l.jsx("option",{value:"admin",children:"Admin"}),l.jsx("option",{value:"editor",children:"Éditeur"}),l.jsx("option",{value:"viewer",children:"Lecture seule"})]})}),l.jsx("td",{style:{padding:"10px 6px",textAlign:"right"},children:N.username!==r.username?l.jsx("button",{onClick:()=>n(N.username),style:{background:"#fde8e8",color:"#c62828",border:"1px solid #ef9a9a",borderRadius:4,padding:"4px 10px",fontSize:11,cursor:"pointer",fontWeight:600},children:"Supprimer"}):l.jsx("span",{style:{fontSize:10,color:"#bbb"},children:"—"})})]},N.username))})]}),s?l.jsxs("div",{style:{marginTop:16,padding:16,background:"var(--bg)",borderRadius:8,border:"1px solid var(--border)"},children:[l.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginBottom:12},children:[l.jsxs("div",{children:[l.jsx("label",{style:{fontSize:11,color:"var(--text-muted)",display:"block",marginBottom:4},children:"Nom d'utilisateur"}),l.jsx("input",{type:"text",value:c,onChange:N=>u(N.target.value),placeholder:"ex: pierre",style:{width:"100%",padding:"6px 8px",border:"1px solid var(--border)",borderRadius:4,fontSize:13}})]}),l.jsxs("div",{children:[l.jsx("label",{style:{fontSize:11,color:"var(--text-muted)",display:"block",marginBottom:4},children:"Nom affiché"}),l.jsx("input",{type:"text",value:f,onChange:N=>d(N.target.value),placeholder:"ex: Pierre",style:{width:"100%",padding:"6px 8px",border:"1px solid var(--border)",borderRadius:4,fontSize:13}})]}),l.jsxs("div",{children:[l.jsx("label",{style:{fontSize:11,color:"var(--text-muted)",display:"block",marginBottom:4},children:"Rôle"}),l.jsxs("select",{value:p,onChange:N=>x(N.target.value),className:"cell-dropdown",style:{width:"100%",padding:"6px 8px",border:"1px solid var(--border)",borderRadius:4,fontSize:13},children:[l.jsx("option",{value:"admin",children:"Admin"}),l.jsx("option",{value:"editor",children:"Éditeur"}),l.jsx("option",{value:"viewer",children:"Lecture seule"})]})]}),l.jsxs("div",{children:[l.jsx("label",{style:{fontSize:11,color:"var(--text-muted)",display:"block",marginBottom:4},children:"Mot de passe"}),l.jsx("input",{type:"text",value:g,onChange:N=>m(N.target.value),placeholder:"Min. 6 caractères",style:{width:"100%",padding:"6px 8px",border:"1px solid var(--border)",borderRadius:4,fontSize:13}})]})]}),w&&l.jsx("div",{style:{color:"var(--danger)",fontSize:12,marginBottom:8},children:w}),l.jsxs("div",{style:{display:"flex",gap:8},children:[l.jsx("button",{onClick:A,style:{background:"var(--primary)",color:"white",border:"none",borderRadius:6,padding:"8px 16px",fontSize:13,fontWeight:600,cursor:"pointer"},children:"Créer"}),l.jsx("button",{onClick:()=>{o(!1),_(null)},style:{background:"var(--bg)",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:6,padding:"8px 16px",fontSize:13,cursor:"pointer"},children:"Annuler"})]})]}):l.jsx("div",{style:{marginTop:16},children:l.jsx("button",{onClick:()=>o(!0),style:{background:"var(--primary)",color:"white",border:"none",borderRadius:6,padding:"8px 16px",fontSize:13,fontWeight:600,cursor:"pointer"},children:"+ Ajouter un utilisateur"})})]})})}function p3({message:e,show:r}){return l.jsx("div",{className:`save-toast ${r?"show":""}`,children:e})}const co="1cd82a138f72f37d09c93642e6361a9242ad85df13d052191ca01db9040a60ea",sp=[{username:"stephane",displayName:"Stéphane",role:"admin",passwordHash:co},{username:"christelle",displayName:"Christelle",role:"editor",passwordHash:co},{username:"christopher",displayName:"Christopher",role:"viewer",passwordHash:co},{username:"ludivine",displayName:"Ludivine",role:"viewer",passwordHash:co},{username:"alexis",displayName:"Alexis Lemercier",role:"admin",passwordHash:"6c71ab95db595653de8547f156b732d840259f15915e40eb7b98e641315a9420"}],op="/api/data",lp="./save.php";function m3(){const[e,r]=z.useState(()=>{try{const se=sessionStorage.getItem("vm_user");return se?JSON.parse(se):null}catch{return null}}),[t,n]=z.useState("vm"),[a,i]=z.useState("home"),[s,o]=z.useState(""),[c,u]=z.useState({vm_partenaires_data:null,vm_pwd_overrides:{},vm_maj_contacts:{},vm_maj_deleted:[],vm_maj_columns:null,vm_abc_data:null,vm_kb_data:null,vm_rsi_kb_data:null,vm_users:null,vm_sim_data:null,vm_machines_data:null,vm_contacts_data:null}),[f,d]=z.useState("offline"),[p,x]=z.useState(""),[g,m]=z.useState(!1),[w,_]=z.useState(!1),[y,v]=z.useState(!1),[A,N]=z.useState(sp),[O,k]=z.useState(()=>localStorage.getItem("deuteranopia")==="1");_p.useEffect(()=>{O?(document.body.classList.add("deuteranopia"),localStorage.setItem("deuteranopia","1")):(document.body.classList.remove("deuteranopia"),localStorage.setItem("deuteranopia","0"))},[O]);const[B,P]=z.useState(Si),[G,K]=z.useState([]),[U,oe]=z.useState(null),[he,q]=z.useState(null),[J,re]=z.useState([]),[Y,F]=z.useState([]),[Q,ce]=z.useState([]),[b,X]=z.useState({fonctions:["Dirigeant","Facturation","Technique","Commercial","RH","Direction"]}),[V,H]=z.useState([]),[ie,D]=z.useState(["maj_v76","maj_v77"]),W=z.useRef(null),E=z.useRef(!1),C=z.useRef(c);C.current=c;const S=z.useCallback(se=>{x(se),m(!0),setTimeout(()=>m(!1),2200)},[]),h=z.useCallback(async()=>{try{let se=null;for(const _e of[op,lp])try{if(se=await fetch(`${_e}?t=${Date.now()}`,{cache:"no-cache"}),se.ok)break;se=null}catch{}if(!se||!se.ok)throw new Error("All API endpoints failed");const me=await se.json(),ke={vm_partenaires_data:me.vm_partenaires_data||null,vm_abc_data:me.vm_abc_data||null,vm_kb_data:me.vm_kb_data||null,vm_pwd_overrides:me.vm_pwd_overrides||{},vm_maj_contacts:me.vm_maj_contacts||{},vm_maj_deleted:me.vm_maj_deleted||[],vm_maj_columns:me.vm_maj_columns||null,vm_users:me.vm_users||null,vm_rsi_kb_data:me.vm_rsi_kb_data||null,vm_sim_data:me.vm_sim_data||null,vm_machines_data:me.vm_machines_data||null,vm_contacts_data:me.vm_contacts_data||null,vm_contacts_settings:me.vm_contacts_settings||null};return C.current=ke,u(ke),ke.vm_users&&Array.isArray(ke.vm_users)&&ke.vm_users.length>0&&N(ke.vm_users),d("ok"),ke}catch{return d("offline"),null}},[]),Z=z.useCallback(async se=>{d("saving");try{let me=null,ke="";for(const _e of[op,lp])try{if(me=await fetch(_e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(se)}),me.ok)break;ke=`${_e}: HTTP ${me.status}`,me=null}catch(Te){ke=`${_e}: ${Te instanceof Error?Te.message:String(Te)}`}if(!me||!me.ok)throw new Error(ke||"All API endpoints failed");return d("ok"),!0}catch(me){return d("offline"),S(`⚠ Hors ligne — ${me instanceof Error?me.message:"erreur"}`),!1}},[S]),ue=z.useCallback(se=>{const me=se.vm_maj_deleted||[],ke=se.vm_maj_contacts||{},_e=Lg.filter(Te=>!me.includes(Te.vm)).map(Te=>{const je=ke[Te.vm]||{},Xe={...Te,dept:je.dept!==void 0?je.dept:Te.dept||"",groupe:je.groupe!==void 0?je.groupe:Te.groupe||"",mail_date:je.mail_date!==void 0?je.mail_date:Te.mail_date||"",maj_v76:je.maj_v76!==void 0?je.maj_v76:Te.maj_v76||"",maj_v77:je.maj_v77!==void 0?je.maj_v77:Te.maj_v77||"",beta_test:je.beta_test!==void 0?je.beta_test:Te.beta_test||"",mails:je.mails!==void 0?je.mails:Te.mails||"",mails_factu:je.mails_factu!==void 0?je.mails_factu:Te.mails_factu||"",mails_regul:je.mails_regul!==void 0?je.mails_regul:Te.mails_regul||""};for(const mr of Object.keys(je))(mr.startsWith("maj_v")&&!(mr in Xe)||mr.startsWith("maj_v"))&&(Xe[mr]=je[mr]);return Xe});H(_e)},[]),ve=z.useCallback(async()=>{if(!e||f==="offline")return;if(E.current){E.current=!1;return}const se=await h();se&&(P(se.vm_partenaires_data?JSON.parse(JSON.stringify(se.vm_partenaires_data)):JSON.parse(JSON.stringify(Si))),K(se.vm_abc_data?JSON.parse(JSON.stringify(se.vm_abc_data)):[]),oe(se.vm_kb_data?JSON.parse(JSON.stringify(se.vm_kb_data)):null),q(se.vm_rsi_kb_data?JSON.parse(JSON.stringify(se.vm_rsi_kb_data)):null),re(se.vm_sim_data?JSON.parse(JSON.stringify(se.vm_sim_data)):[]),F(se.vm_machines_data?JSON.parse(JSON.stringify(se.vm_machines_data)):[]),ce(se.vm_contacts_data?JSON.parse(JSON.stringify(se.vm_contacts_data)):[]),se.vm_contacts_settings&&X(JSON.parse(JSON.stringify(se.vm_contacts_settings))),ue(se),se.vm_maj_columns&&se.vm_maj_columns.length>0&&D(se.vm_maj_columns))},[e,f,h,ue]),Ee=z.useCallback(async(se,me)=>{var Ea;const ke=se.trim().toLowerCase();if(!ke||!me)return!1;const _e=await h(),Te=_e!=null&&_e.vm_users&&_e.vm_users.length>0?_e.vm_users:[],Xe=[...Te,...sp.filter(ui=>!Te.some(kl=>kl.username===ui.username))].find(ui=>ui.username.toLowerCase()===ke);if(!Xe)return!1;const mr=((Ea=_e==null?void 0:_e.vm_pwd_overrides)==null?void 0:Ea[ke])||Xe.passwordHash;return await qs(me)!==mr?!1:(r({username:ke,displayName:Xe.displayName,role:Xe.role}),sessionStorage.setItem("vm_user",JSON.stringify({username:ke,displayName:Xe.displayName,role:Xe.role})),_e?(P(_e.vm_partenaires_data?JSON.parse(JSON.stringify(_e.vm_partenaires_data)):JSON.parse(JSON.stringify(Si))),K(_e.vm_abc_data?JSON.parse(JSON.stringify(_e.vm_abc_data)):[]),oe(_e.vm_kb_data?JSON.parse(JSON.stringify(_e.vm_kb_data)):null),q(_e.vm_rsi_kb_data?JSON.parse(JSON.stringify(_e.vm_rsi_kb_data)):null),re(_e.vm_sim_data?JSON.parse(JSON.stringify(_e.vm_sim_data)):[]),F(_e.vm_machines_data?JSON.parse(JSON.stringify(_e.vm_machines_data)):[]),ce(_e.vm_contacts_data?JSON.parse(JSON.stringify(_e.vm_contacts_data)):[]),_e.vm_contacts_settings&&X(JSON.parse(JSON.stringify(_e.vm_contacts_settings))),ue(_e),_e.vm_maj_columns&&_e.vm_maj_columns.length>0&&D(_e.vm_maj_columns)):(P(JSON.parse(JSON.stringify(Si))),d("offline")),!0)},[h,ue]),pe=z.useCallback(()=>{r(null),sessionStorage.removeItem("vm_user"),W.current&&(clearInterval(W.current),W.current=null)},[]);z.useEffect(()=>{e&&C.current.vm_partenaires_data===null&&(E.current=!0,h().then(se=>{se&&(P(se.vm_partenaires_data?JSON.parse(JSON.stringify(se.vm_partenaires_data)):JSON.parse(JSON.stringify(Si))),K(se.vm_abc_data?JSON.parse(JSON.stringify(se.vm_abc_data)):[]),oe(se.vm_kb_data?JSON.parse(JSON.stringify(se.vm_kb_data)):null),q(se.vm_rsi_kb_data?JSON.parse(JSON.stringify(se.vm_rsi_kb_data)):null),re(se.vm_sim_data?JSON.parse(JSON.stringify(se.vm_sim_data)):[]),F(se.vm_machines_data?JSON.parse(JSON.stringify(se.vm_machines_data)):[]),ce(se.vm_contacts_data?JSON.parse(JSON.stringify(se.vm_contacts_data)):[]),se.vm_contacts_settings&&X(JSON.parse(JSON.stringify(se.vm_contacts_settings))),ue(se),se.vm_maj_columns&&se.vm_maj_columns.length>0&&D(se.vm_maj_columns))}))},[e,h,ue]),z.useEffect(()=>(e&&!W.current&&(W.current=setInterval(()=>{ve()},6e4)),()=>{W.current&&(clearInterval(W.current),W.current=null)}),[e,ve]);const Pe=z.useCallback(async se=>{P(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_partenaires_data:se};u(me),C.current=me;const ke=await Z(me);S(ke?"✓ Données sauvegardées et synchronisées":"💾 Données sauvegardées localement")},[Z,S]),Kr=z.useCallback(async se=>{oe(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_kb_data:se};u(me),C.current=me,await Z(me)},[Z]),dt=z.useCallback(async se=>{re(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_sim_data:se};u(me),C.current=me,await Z(me)},[Z]),Tt=z.useCallback(async se=>{X(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_contacts_settings:se};u(me),C.current=me,Z(me)},[Z]),Xn=z.useCallback(async se=>{ce(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_contacts_data:se};u(me),C.current=me,await Z(me)},[Z]),zt=z.useCallback(async se=>{F(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_machines_data:se};u(me),C.current=me,await Z(me)&&S("✓ Postes de travail sauvegardés")},[Z,S]),Pr=z.useCallback(async se=>{q(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_rsi_kb_data:se};u(me),C.current=me,await Z(me)},[Z]),Jr=z.useCallback((se,me)=>{const _e={...U||{categories:[],links:[],link_rubriques:[]},links:se,link_rubriques:me};oe(_e);const Te={...C.current,vm_kb_data:_e};u(Te),C.current=Te,Z(Te)},[U,Z]),Vt=z.useCallback(async se=>{K(JSON.parse(JSON.stringify(se)));const me={...C.current,vm_abc_data:se};u(me),C.current=me;const ke=await Z(me);S(ke?"✓ Données VM ABC sauvegardées":"💾 Données sauvegardées localement")},[Z,S]),Kn=z.useCallback((se,me,ke)=>{const _e=V.map(je=>je.vm===se?{...je,[me]:ke}:je);H(_e);const Te={...C.current};Te.vm_maj_contacts[se]||(Te.vm_maj_contacts[se]={}),Te.vm_maj_contacts[se][me]=ke,u(Te),C.current=Te,Z(Te)},[V,Z]),_r=z.useCallback(se=>{const me=V.find(Te=>Te.vm===se),ke=me&&me.nom||se;if(!confirm(`Supprimer la ligne "${se} — ${ke}" ? Cette suppression sera visible par tous les utilisateurs.`))return;H(V.filter(Te=>Te.vm!==se));const _e={...C.current};_e.vm_maj_deleted.includes(se)||_e.vm_maj_deleted.push(se),u(_e),C.current=_e,Z(_e),S(`✓ "${se}" supprimé`)},[V,Z,S]),pt=z.useCallback(se=>{const me=[...ie,se];D(me);const ke={...C.current,vm_maj_columns:me};u(ke),C.current=ke,Z(ke),S(`✓ Colonne "${se}" ajoutée`)},[ie,Z,S]),be=z.useCallback(se=>{if(!confirm(`Supprimer la colonne "${se}" ? Les dates saisies dans cette colonne seront perdues.`))return;const me=ie.filter(je=>je!==se);D(me);const ke=V.map(je=>{const Xe={...je};return delete Xe[se],Xe});H(ke);const _e={...C.current.vm_maj_contacts};for(const je of Object.keys(_e)){const Xe={..._e[je]};delete Xe[se],_e[je]=Xe}const Te={...C.current,vm_maj_columns:me,vm_maj_contacts:_e};u(Te),C.current=Te,Z(Te),S(`✓ Colonne "${se}" supprimée`)},[ie,V,Z,S]),$e=z.useCallback(()=>{const se=V.map(_e=>({..._e,mail_date:""}));H(se);const me={...C.current.vm_maj_contacts};for(const _e of V)me[_e.vm]={...me[_e.vm],mail_date:""};const ke={...C.current,vm_maj_contacts:me};u(ke),C.current=ke,Z(ke),S('✓ Colonne "Mail MAJ" vidée')},[V,Z,S]),Yr=z.useCallback(async(se,me)=>{if(!e)return null;const ke=C.current,_e=A.find(gn=>gn.username===e.username),Te=ke.vm_pwd_overrides[e.username]||(_e?_e.passwordHash:"");if(await qs(se)!==Te)return"Mot de passe actuel incorrect.";if(me.length<6)return"Le nouveau mot de passe doit faire au moins 6 caractères.";const Xe=await qs(me),mr={...ke,vm_pwd_overrides:{...ke.vm_pwd_overrides,[e.username]:Xe}};return u(mr),C.current=mr,await Z(mr),null},[e,A,Z]),tr=z.useCallback((se,me)=>{const ke=A.map(Te=>Te.username===se?{...Te,role:me}:Te);N(ke);const _e={...C.current,vm_users:ke};u(_e),C.current=_e,Z(_e),S(`✓ Rôle de ${se} modifié → ${me}`)},[A,Z,S]),en=z.useCallback(se=>{if(se===(e==null?void 0:e.username)){S("⚠ Vous ne pouvez pas supprimer votre propre compte");return}if(!confirm(`Supprimer le compte "${se}" ?`))return;const me=A.filter(Te=>Te.username!==se);N(me);const ke={...C.current.vm_pwd_overrides};delete ke[se];const _e={...C.current,vm_users:me,vm_pwd_overrides:ke};u(_e),C.current=_e,Z(_e),S(`✓ Compte "${se}" supprimé`)},[A,e,Z,S]),Os=z.useCallback(async(se,me,ke,_e)=>{const Te=se.trim().toLowerCase();if(!Te)return"Nom d'utilisateur requis";if(A.find(Ea=>Ea.username===Te))return"Cet utilisateur existe déjà";if(_e.length<6)return"Mot de passe minimum 6 caractères";const je=await qs(_e),Xe={username:Te,displayName:me.trim()||Te,role:ke,passwordHash:je},mr=[...A,Xe];N(mr);const gn={...C.current,vm_users:mr};return u(gn),C.current=gn,Z(gn),S(`✓ Utilisateur "${Te}" créé`),null},[A,Z,S]);if(!e)return l.jsx(Bg,{onLogin:Ee});const At=e.role==="admin"||e.role==="editor",Ct=e.role==="admin";return l.jsxs("div",{className:"app-screen",children:[l.jsx(Ug,{user:e,syncStatus:f,onLogout:pe,onChangePassword:()=>_(!0),onAdminClick:()=>v(!0),onRsiClick:()=>i("rsi"),isAdmin:Ct,onHomeClick:()=>{i("home"),n("vm"),o("")},colorblindMode:O,onToggleColorblind:()=>k(se=>!se)}),a==="rsi"?l.jsxs("div",{className:"app-layout-with-sidebar",children:[l.jsx("div",{className:"app-main-content",children:l.jsx(qg,{onSelectTool:se=>{o(se),i("rsi-tool")}})}),l.jsx(lo,{links:(U==null?void 0:U.links)||[],rubriques:(U==null?void 0:U.link_rubriques)||[],canEdit:At,onSave:Jr})]}):a==="rsi-tool"?l.jsxs("div",{className:"app-layout-with-sidebar",children:[l.jsxs("div",{className:"app-main-content",children:[l.jsx("div",{style:{padding:"8px 16px"},children:l.jsx("button",{className:"breadcrumb-link",onClick:()=>i("rsi"),style:{fontSize:12,color:"var(--primary)",background:"none",border:"none",cursor:"pointer",padding:0},children:"← Retour à l'Espace RSI"})}),s==="rsi-procedures"&&l.jsx(td,{data:he,onSave:Pr,isAdmin:Ct,canEdit:Ct,showToast:S,defaultData:{categories:[],links:[]}}),s==="rsi-acces"&&l.jsx(Jf,{title:"Accès",icon:l.jsxs("svg",{width:"32",height:"32",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[l.jsx("circle",{cx:"8",cy:"15",r:"5"}),l.jsx("path",{d:"M11.5 11.5 L19 4"}),l.jsx("path",{d:"M17 4h3v3"})]})}),s==="rsi-postes"&&l.jsx(r_,{data:Y,onSave:zt,isAdmin:Ct}),s==="rsi-baie"&&l.jsx(Jf,{title:"Baie Serveur",icon:l.jsxs("svg",{width:"32",height:"32",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[l.jsx("rect",{x:"4",y:"2",width:"16",height:"4",rx:"1"}),l.jsx("rect",{x:"4",y:"8",width:"16",height:"4",rx:"1"}),l.jsx("rect",{x:"4",y:"14",width:"16",height:"4",rx:"1"})]})})]}),l.jsx(lo,{links:(U==null?void 0:U.links)||[],rubriques:(U==null?void 0:U.link_rubriques)||[],canEdit:At,onSave:Jr})]}):a==="home"?l.jsxs("div",{className:"app-layout-with-sidebar",children:[l.jsx("div",{className:"app-main-content",children:l.jsx(Yg,{onSelectTool:se=>{se==="vm-partenaires"?n("vm"):se==="vm-abc"?n("abc"):se==="maj-saphir"?n("maj"):se==="notes-saphir"?n("notes"):se==="videos-saphir"?n("videos"):se==="base-connaissances"?n("kb"):se==="sim-reader"?n("sim"):se==="contacts"&&n("contacts"),i("tool")},userDisplayName:e.displayName})}),l.jsx(lo,{links:(U==null?void 0:U.links)||[],rubriques:(U==null?void 0:U.link_rubriques)||[],canEdit:At,onSave:Jr})]}):l.jsxs("div",{className:"app-layout-with-sidebar",children:[l.jsxs("div",{className:"app-main-content",children:[t!=="notes"&&t!=="videos"&&t!=="kb"&&t!=="sim"&&t!=="contacts"&&l.jsx(zg,{activeTab:t,onTabChange:n}),t==="vm"&&l.jsx(Hg,{data:B,onSave:Pe,canEdit:At,isAdmin:Ct,showToast:S}),t==="abc"&&l.jsx(Gg,{data:G,onSave:Vt,canEdit:At,showToast:S}),t==="maj"&&l.jsx(Kg,{data:V,onSaveField:Kn,onDeleteRow:_r,onAddColumn:pt,onDeleteColumn:be,onClearMailDate:$e,majColumns:ie,canEdit:At,isAdmin:Ct,showToast:S}),t==="contacts"&&l.jsx(Jg,{data:Q,onSave:Xn,settings:b,onSaveSettings:Tt,canEdit:!0}),t==="notes"&&l.jsx(a_,{showToast:S}),t==="videos"&&l.jsx(i_,{showToast:S}),t==="kb"&&l.jsx(td,{data:U,onSave:Kr,isAdmin:Ct,canEdit:At,showToast:S}),t==="sim"&&l.jsx(u3,{data:J,onSave:dt,isAdmin:Ct,canEdit:At})]}),l.jsx(lo,{links:(U==null?void 0:U.links)||[],rubriques:(U==null?void 0:U.link_rubriques)||[],canEdit:At,onSave:Jr})]}),l.jsxs("footer",{className:"app-footer",children:[l.jsx("span",{children:"VM Partenaires — Données confidentielles — Usage interne uniquement"}),l.jsx("span",{children:new Date().toLocaleString("fr-FR")})]}),w&&l.jsx(f3,{onClose:()=>_(!1),onChange:Yr,showToast:S}),y&&Ct&&l.jsx(d3,{users:A,currentUser:e,onUpdateRole:tr,onDeleteUser:en,onAddUser:Os,onClose:()=>v(!1)}),l.jsx(p3,{message:p,show:g})]})}fc.createRoot(document.getElementById("root")).render(l.jsx(_p.StrictMode,{children:l.jsx(m3,{})}));