diff --git a/web-ui/dist/assets/arguments-90i_LMyj.js b/web-ui/dist/assets/arguments-90i_LMyj.js deleted file mode 100644 index 4cd56fc..0000000 --- a/web-ui/dist/assets/arguments-90i_LMyj.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,S as m,r as p}from"./index-BAcZo2i6.js";import{a as j,b as g,c as u,d as S,e as w,I as v,f as b,B as h,g as N,T as C,h as f,i as c,j as T,k as B,l as x,m as A,D}from"./env_variables-DBgTPTRJ.js";const k=({show:s,value:l,originalValue:t,onClose:n,valueChanged:r,onAddArg:i,onRemoveArg:o})=>e.jsx(j,{open:s,onOpenChange:n,children:e.jsxs(g,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[e.jsxs(u,{className:"text-left",children:[e.jsx(S,{className:"text-white",children:t!==""?"Edit argument":"New argument"}),e.jsx(w,{children:t===""?"Add a new argument":`Making changes to '${t}'`})]}),e.jsx(m,{marginTop:"10px",noBottomSeparator:!0,children:e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:e.jsx("div",{children:e.jsx(v,{withSaveButton:!0,placeholder:"Example: use-kestrel",originalValue:t,onSave:()=>{i(l,t),n()},type:"text",value:l,onChange:a=>r(a.target.value)})})})}),e.jsxs(b,{className:"flex flex-row gap-4",children:[t&&e.jsx(h,{onClick:()=>{o(t),n()},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),e.jsx(N,{asChild:!0,children:e.jsx(h,{type:"submit",children:"Close"})})]})]})}),H=({defaultKeys:s,onAddArg:l,onRemoveArg:t})=>{const[n,r]=p.useState({show:!1,value:"",originalValue:void 0}),i=()=>{r({show:!0,value:"",originalValue:""})},o=["hover:cursor-pointer"];return(s==null?void 0:s.length)===0&&o.push("border-0"),e.jsxs(e.Fragment,{children:[e.jsxs(C,{children:[(s==null?void 0:s.length)!==0&&e.jsx(f,{children:e.jsx(c,{className:"pointer-events-none",children:e.jsx(T,{className:"w-[100px] text-[var(--color2)]",children:"Value"})})}),e.jsx(B,{children:s==null?void 0:s.map(a=>e.jsx(c,{className:"hover:cursor-pointer",onClick:()=>{r({show:!0,value:a,originalValue:a})},children:e.jsx(x,{className:"font-medium",children:a})},JSON.stringify(a)))}),e.jsx(A,{className:o.join(" "),children:e.jsx(c,{onClick:i,children:e.jsx(x,{className:"bg-transparent",colSpan:3,children:e.jsxs("div",{className:"flex items-center gap-2 justify-center",children:[e.jsx(D,{}),e.jsx("span",{children:"Add new argument"})]})})})})]}),e.jsx(k,{onAddArg:l,onRemoveArg:t,onClose:()=>r(a=>({...a,show:!1})),originalValue:n.originalValue,show:n.show,value:n.value,valueChanged:a=>r(d=>({...d,value:a}))})]})};export{H as A}; diff --git a/web-ui/dist/assets/arguments-Dk8DAUdv.js b/web-ui/dist/assets/arguments-Dk8DAUdv.js new file mode 100644 index 0000000..7344999 --- /dev/null +++ b/web-ui/dist/assets/arguments-Dk8DAUdv.js @@ -0,0 +1 @@ +import{j as e,S as m,r as p}from"./index-dDKJaDn2.js";import{b as j,d as u,e as g,f as S,g as w,I as f,h as v,B as c,i as b,j as C,k as N,l as h,m as x,n as T,o as B}from"./env_variables-rG-Gz1th.js";const A=({show:a,value:l,originalValue:t,onClose:n,valueChanged:r,onAddArg:i,onRemoveArg:o})=>e.jsx(j,{open:a,onOpenChange:n,children:e.jsxs(u,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[e.jsxs(g,{className:"text-left",children:[e.jsx(S,{className:"text-white",children:t!==""?"Edit argument":"New argument"}),e.jsx(w,{children:t===""?"Add a new argument":`Making changes to '${t}'`})]}),e.jsx(m,{marginTop:"10px",noBottomSeparator:!0,children:e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:e.jsx("div",{children:e.jsx(f,{withSaveButton:!0,placeholder:"Example: use-kestrel",originalValue:t,onSave:()=>{i(l,t),n()},type:"text",value:l,onChange:s=>r(s.target.value)})})})}),e.jsxs(v,{className:"flex flex-row gap-4",children:[t&&e.jsx(c,{onClick:()=>{o(t),n()},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),e.jsx(b,{asChild:!0,children:e.jsx(c,{type:"submit",children:"Close"})})]})]})}),E=({defaultKeys:a,onAddArg:l,onRemoveArg:t})=>{const[n,r]=p.useState({show:!1,value:"",originalValue:void 0}),i=()=>{r({show:!0,value:"",originalValue:""})},o=["hover:cursor-pointer"];return(a==null?void 0:a.length)===0&&o.push("border-0"),e.jsxs(e.Fragment,{children:[e.jsxs(C,{children:[e.jsx(N,{children:a==null?void 0:a.map(s=>e.jsx(h,{className:"hover:cursor-pointer",onClick:()=>{r({show:!0,value:s,originalValue:s})},children:e.jsx(x,{className:"font-medium",children:s})},JSON.stringify(s)))}),e.jsx(T,{className:o.join(" "),children:e.jsx(h,{onClick:i,children:e.jsx(x,{className:"bg-transparent",colSpan:3,children:e.jsxs("div",{className:"flex items-center gap-2 justify-center",children:[e.jsx(B,{}),e.jsx("span",{children:"Add new argument"})]})})})})]}),e.jsx(A,{onAddArg:l,onRemoveArg:t,onClose:()=>r(s=>({...s,show:!1})),originalValue:n.originalValue,show:n.show,value:n.value,valueChanged:s=>r(d=>({...d,value:s}))})]})};export{E as A}; diff --git a/web-ui/dist/assets/env_variables-DBgTPTRJ.js b/web-ui/dist/assets/env_variables-rG-Gz1th.js similarity index 94% rename from web-ui/dist/assets/env_variables-DBgTPTRJ.js rename to web-ui/dist/assets/env_variables-rG-Gz1th.js index 30d733c..2aa71b5 100644 --- a/web-ui/dist/assets/env_variables-DBgTPTRJ.js +++ b/web-ui/dist/assets/env_variables-rG-Gz1th.js @@ -1,8 +1,8 @@ -import{r as i,j as s,o as F,p as ve,q as v,P as _,s as be,t as ye,v as Ne,F as je,D as Ce,w as we,x as De,y as _e,z as w,E as m,G as Re,S as Te}from"./index-BAcZo2i6.js";function Ee(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Se(...e){return t=>e.forEach(a=>Ee(a,t))}function R(...e){return i.useCallback(Se(...e),e)}var Pe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],b=Pe.reduce((e,t)=>{const a=i.forwardRef((o,n)=>{const{asChild:r,...c}=o,d=r?F:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(d,{...c,ref:n})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{}),T="Dialog",[V,ot]=ve(T),[Ie,p]=V(T),W=e=>{const{__scopeDialog:t,children:a,open:o,defaultOpen:n,onOpenChange:r,modal:c=!0}=e,d=i.useRef(null),l=i.useRef(null),[u=!1,f]=_e({prop:o,defaultProp:n,onChange:r});return s.jsx(Ie,{scope:t,triggerRef:d,contentRef:l,contentId:w(),titleId:w(),descriptionId:w(),open:u,onOpenChange:f,onOpenToggle:i.useCallback(()=>f(g=>!g),[f]),modal:c,children:a})};W.displayName=T;var L="DialogTrigger",ke=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(L,a),r=R(t,n.triggerRef);return s.jsx(b.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":P(n.open),...o,ref:r,onClick:v(e.onClick,n.onOpenToggle)})});ke.displayName=L;var E="DialogPortal",[Oe,B]=V(E,{forceMount:void 0}),$=e=>{const{__scopeDialog:t,forceMount:a,children:o,container:n}=e,r=p(E,t);return s.jsx(Oe,{scope:t,forceMount:a,children:i.Children.map(o,c=>s.jsx(_,{present:a||r.open,children:s.jsx(De,{asChild:!0,container:n,children:c})}))})};$.displayName=E;var j="DialogOverlay",H=i.forwardRef((e,t)=>{const a=B(j,e.__scopeDialog),{forceMount:o=a.forceMount,...n}=e,r=p(j,e.__scopeDialog);return r.modal?s.jsx(_,{present:o||r.open,children:s.jsx(Ae,{...n,ref:t})}):null});H.displayName=j;var Ae=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(j,a);return s.jsx(be,{as:F,allowPinchZoom:!0,shards:[n.contentRef],children:s.jsx(b.div,{"data-state":P(n.open),...o,ref:t,style:{pointerEvents:"auto",...o.style}})})}),h="DialogContent",G=i.forwardRef((e,t)=>{const a=B(h,e.__scopeDialog),{forceMount:o=a.forceMount,...n}=e,r=p(h,e.__scopeDialog);return s.jsx(_,{present:o||r.open,children:r.modal?s.jsx(Me,{...n,ref:t}):s.jsx(Fe,{...n,ref:t})})});G.displayName=h;var Me=i.forwardRef((e,t)=>{const a=p(h,e.__scopeDialog),o=i.useRef(null),n=R(t,a.contentRef,o);return i.useEffect(()=>{const r=o.current;if(r)return ye(r)},[]),s.jsx(q,{...e,ref:n,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:v(e.onCloseAutoFocus,r=>{var c;r.preventDefault(),(c=a.triggerRef.current)==null||c.focus()}),onPointerDownOutside:v(e.onPointerDownOutside,r=>{const c=r.detail.originalEvent,d=c.button===0&&c.ctrlKey===!0;(c.button===2||d)&&r.preventDefault()}),onFocusOutside:v(e.onFocusOutside,r=>r.preventDefault())})}),Fe=i.forwardRef((e,t)=>{const a=p(h,e.__scopeDialog),o=i.useRef(!1),n=i.useRef(!1);return s.jsx(q,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{var c,d;(c=e.onCloseAutoFocus)==null||c.call(e,r),r.defaultPrevented||(o.current||(d=a.triggerRef.current)==null||d.focus(),r.preventDefault()),o.current=!1,n.current=!1},onInteractOutside:r=>{var l,u;(l=e.onInteractOutside)==null||l.call(e,r),r.defaultPrevented||(o.current=!0,r.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const c=r.target;((u=a.triggerRef.current)==null?void 0:u.contains(c))&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&n.current&&r.preventDefault()}})}),q=i.forwardRef((e,t)=>{const{__scopeDialog:a,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:r,...c}=e,d=p(h,a),l=i.useRef(null),u=R(t,l);return Ne(),s.jsxs(s.Fragment,{children:[s.jsx(je,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:r,children:s.jsx(Ce,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":P(d.open),...c,ref:u,onDismiss:()=>d.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(Ve,{titleId:d.titleId}),s.jsx(Le,{contentRef:l,descriptionId:d.descriptionId})]})]})}),S="DialogTitle",z=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(S,a);return s.jsx(b.h2,{id:n.titleId,...o,ref:t})});z.displayName=S;var U="DialogDescription",Z=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(U,a);return s.jsx(b.p,{id:n.descriptionId,...o,ref:t})});Z.displayName=U;var J="DialogClose",Y=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(J,a);return s.jsx(b.button,{type:"button",...o,ref:t,onClick:v(e.onClick,()=>n.onOpenChange(!1))})});Y.displayName=J;function P(e){return e?"open":"closed"}var Q="DialogTitleWarning",[st,X]=we(Q,{contentName:h,titleName:S,docsSlug:"dialog"}),Ve=({titleId:e})=>{const t=X(Q),a=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. +import{r as i,j as s,p as F,q as ve,s as v,P as _,R as be,t as ye,v as Ne,F as je,D as Ce,w as we,x as De,y as _e,z as w,i as m,E as Re,S as Te}from"./index-dDKJaDn2.js";function Ee(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Se(...e){return t=>e.forEach(a=>Ee(a,t))}function R(...e){return i.useCallback(Se(...e),e)}var Pe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],b=Pe.reduce((e,t)=>{const a=i.forwardRef((o,n)=>{const{asChild:r,...c}=o,d=r?F:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(d,{...c,ref:n})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{}),T="Dialog",[V,ot]=ve(T),[Ie,p]=V(T),W=e=>{const{__scopeDialog:t,children:a,open:o,defaultOpen:n,onOpenChange:r,modal:c=!0}=e,d=i.useRef(null),l=i.useRef(null),[u=!1,f]=_e({prop:o,defaultProp:n,onChange:r});return s.jsx(Ie,{scope:t,triggerRef:d,contentRef:l,contentId:w(),titleId:w(),descriptionId:w(),open:u,onOpenChange:f,onOpenToggle:i.useCallback(()=>f(g=>!g),[f]),modal:c,children:a})};W.displayName=T;var L="DialogTrigger",Oe=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(L,a),r=R(t,n.triggerRef);return s.jsx(b.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":P(n.open),...o,ref:r,onClick:v(e.onClick,n.onOpenToggle)})});Oe.displayName=L;var E="DialogPortal",[ke,B]=V(E,{forceMount:void 0}),$=e=>{const{__scopeDialog:t,forceMount:a,children:o,container:n}=e,r=p(E,t);return s.jsx(ke,{scope:t,forceMount:a,children:i.Children.map(o,c=>s.jsx(_,{present:a||r.open,children:s.jsx(De,{asChild:!0,container:n,children:c})}))})};$.displayName=E;var j="DialogOverlay",H=i.forwardRef((e,t)=>{const a=B(j,e.__scopeDialog),{forceMount:o=a.forceMount,...n}=e,r=p(j,e.__scopeDialog);return r.modal?s.jsx(_,{present:o||r.open,children:s.jsx(Ae,{...n,ref:t})}):null});H.displayName=j;var Ae=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(j,a);return s.jsx(be,{as:F,allowPinchZoom:!0,shards:[n.contentRef],children:s.jsx(b.div,{"data-state":P(n.open),...o,ref:t,style:{pointerEvents:"auto",...o.style}})})}),h="DialogContent",G=i.forwardRef((e,t)=>{const a=B(h,e.__scopeDialog),{forceMount:o=a.forceMount,...n}=e,r=p(h,e.__scopeDialog);return s.jsx(_,{present:o||r.open,children:r.modal?s.jsx(Me,{...n,ref:t}):s.jsx(Fe,{...n,ref:t})})});G.displayName=h;var Me=i.forwardRef((e,t)=>{const a=p(h,e.__scopeDialog),o=i.useRef(null),n=R(t,a.contentRef,o);return i.useEffect(()=>{const r=o.current;if(r)return ye(r)},[]),s.jsx(q,{...e,ref:n,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:v(e.onCloseAutoFocus,r=>{var c;r.preventDefault(),(c=a.triggerRef.current)==null||c.focus()}),onPointerDownOutside:v(e.onPointerDownOutside,r=>{const c=r.detail.originalEvent,d=c.button===0&&c.ctrlKey===!0;(c.button===2||d)&&r.preventDefault()}),onFocusOutside:v(e.onFocusOutside,r=>r.preventDefault())})}),Fe=i.forwardRef((e,t)=>{const a=p(h,e.__scopeDialog),o=i.useRef(!1),n=i.useRef(!1);return s.jsx(q,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{var c,d;(c=e.onCloseAutoFocus)==null||c.call(e,r),r.defaultPrevented||(o.current||(d=a.triggerRef.current)==null||d.focus(),r.preventDefault()),o.current=!1,n.current=!1},onInteractOutside:r=>{var l,u;(l=e.onInteractOutside)==null||l.call(e,r),r.defaultPrevented||(o.current=!0,r.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const c=r.target;((u=a.triggerRef.current)==null?void 0:u.contains(c))&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&n.current&&r.preventDefault()}})}),q=i.forwardRef((e,t)=>{const{__scopeDialog:a,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:r,...c}=e,d=p(h,a),l=i.useRef(null),u=R(t,l);return Ne(),s.jsxs(s.Fragment,{children:[s.jsx(je,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:r,children:s.jsx(Ce,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":P(d.open),...c,ref:u,onDismiss:()=>d.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(Ve,{titleId:d.titleId}),s.jsx(Le,{contentRef:l,descriptionId:d.descriptionId})]})]})}),S="DialogTitle",z=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(S,a);return s.jsx(b.h2,{id:n.titleId,...o,ref:t})});z.displayName=S;var U="DialogDescription",Z=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(U,a);return s.jsx(b.p,{id:n.descriptionId,...o,ref:t})});Z.displayName=U;var J="DialogClose",Y=i.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,n=p(J,a);return s.jsx(b.button,{type:"button",...o,ref:t,onClick:v(e.onClick,()=>n.onOpenChange(!1))})});Y.displayName=J;function P(e){return e?"open":"closed"}var Q="DialogTitleWarning",[st,X]=we(Q,{contentName:h,titleName:S,docsSlug:"dialog"}),Ve=({titleId:e})=>{const t=X(Q),a=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(a))},[a,e]),null},We="DialogDescriptionWarning",Le=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${X(We).contentName}}.`;return i.useEffect(()=>{var r;const n=(r=e.current)==null?void 0:r.getAttribute("aria-describedby");t&&n&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Be=W,$e=$,K=H,ee=G,te=z,ae=Z,oe=Y;const k=({withSaveButton:e,originalValue:t,onSave:a,...o})=>{let n={width:"100%",fontSize:".8rem",minWidth:"250px",border:0,outline:0,padding:"0px 10px",borderRadius:e?0:"4px"};e&&(n.borderTopRightRadius=0,n.borderBottomRightRadius=0);const r=e&&t!==o.value,c=["input-save-button"];return r&&c.push("show"),s.jsxs("div",{style:{display:"grid",transition:"all .2s",width:"100%",gridTemplateColumns:r?"1fr 50px":"1fr 0px",height:"32px",borderRadius:e?"3px":0,overflow:"hidden"},children:[s.jsx("input",{...o,className:"text-black",style:o.type!=="checkbox"?n:{}}),o.type!=="checkbox"&&e&&s.jsx("button",{tabIndex:-1,onClick:()=>a==null?void 0:a(o.value),className:c.join(" "),children:s.jsx("span",{className:"text-[12px] font-bold",children:"SAVE"})})]})},nt={h2_hint:"Hints are suggestions from the server to the client on how to prioritize resources or manage network behavior.",hostname:"Choose hostname for this site.",hostname_frontend:"Incoming name for binding to (frontend).",port:"Choose port for this site.",directory:"Path to working dir of this site.",binary:"Name of the binary file to run.",https:"Use HTTPS.",auto_start:"Set this to false if you do not want this site to start automatically.",capture_subdomains:"If you wish to use wildcard routing for any subdomain under the 'host_name'.",disable_tcp_tunnel:"This is mostly useful in case the target uses SNI sniffing/routing.",forward_subdomains:"If you wish to use the subdomain from the request in forwarded requests: test.example.com -> internal.site vs test.example.com -> test.internal.site.",log_format:"Choose format for logs.",default_log_format:"Default format for logs.",global_env_vars:"These are global environment variables - they will be set for all hosted processes.",log_level:"Choose your preferred log level.",args:"Arguments to the binary.",env_vars:"These will be set on launch.",root_dir:"Root directory for sites.",default_http_port:"Default port for new sites.",default_tls_port:"Default TLS port for new sites.",default_auto_start:"Default value for configured sites. False means a site will not start automatically with odd-box, but it will still be automatically started on incoming requests to that site.",proxy_ip:"IP for proxy to listen to , can be ipv4/6.",port_range_start:"Port range for automatic port assignment (the env var PORT will be set if you did not specify one manually for a process).",use_alpn:"Allows alpn negotiation for http/1.0 and h2 on tls connections.",site_type:"Choose the type of site you are adding.",exclude_from_start_all:"Will exempt the site from the start/stop all sites feature.",backends:"All backends for this site."},O=({children:e,dangerButton:t,secondary:a,...o})=>{let n=["styled-button"];return t&&n.push("danger"),a&&n.push("secondary"),o.disabled&&n.push("disabled"),o.className&&(n=[o.className]),s.jsx("button",{...o,className:n.join(" "),children:e})};function se(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ttypeof e=="boolean"?"".concat(e):e===0?"0":e,M=He,Ge=(e,t)=>a=>{var o;if((t==null?void 0:t.variants)==null)return M(e,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:n,defaultVariants:r}=t,c=Object.keys(n).map(u=>{const f=a==null?void 0:a[u],g=r==null?void 0:r[u];if(f===null)return null;const x=A(f)||A(g);return n[u][x]}),d=a&&Object.entries(a).reduce((u,f)=>{let[g,x]=f;return x===void 0||(u[g]=x),u},{}),l=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((u,f)=>{let{class:g,className:x,...he}=f;return Object.entries(he).every(xe=>{let[I,C]=xe;return Array.isArray(C)?C.includes({...r,...d}[I]):{...r,...d}[I]===C})?[...u,g,x]:u},[]);return M(e,c,l,a==null?void 0:a.class,a==null?void 0:a.className)},qe=Be,ze=oe,Ue=$e,ne=i.forwardRef(({className:e,...t},a)=>s.jsx(K,{className:m("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,ref:a}));ne.displayName=K.displayName;const Ze=Ge("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),re=i.forwardRef(({side:e="right",className:t,children:a,...o},n)=>s.jsxs(Ue,{children:[s.jsx(ne,{}),s.jsxs(ee,{ref:n,className:m(Ze({side:e}),t),...o,children:[s.jsxs(oe,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[s.jsx(Re,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]}),a]})]}));re.displayName=ee.displayName;const ie=({className:e,...t})=>s.jsx("div",{className:m("flex flex-col space-y-2 text-center sm:text-left",e),...t});ie.displayName="SheetHeader";const le=({className:e,...t})=>s.jsx("div",{className:m("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});le.displayName="SheetFooter";const ce=i.forwardRef(({className:e,...t},a)=>s.jsx(te,{ref:a,className:m("text-lg font-semibold text-foreground",e),...t}));ce.displayName=te.displayName;const de=i.forwardRef(({className:e,...t},a)=>s.jsx(ae,{ref:a,className:m("text-sm text-muted-foreground",e),...t}));de.displayName=ae.displayName;const Je=({show:e,value:t,originalValue:a,name:o,onClose:n,valueChanged:r,onRemoveKey:c,onNewKey:d})=>s.jsx(qe,{open:e,onOpenChange:n,children:s.jsxs(re,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[s.jsxs(ie,{className:"text-left",children:[s.jsx(ce,{className:"text-white",children:o!==""?"Edit environment variable":"New environment variable"}),s.jsx(de,{children:o!==""?`Making changes to '${o}'`:"Adding a new environment variable"})]}),s.jsx(Te,{marginTop:"10px",noBottomSeparator:!0,children:s.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[o===""&&s.jsx(k,{placeholder:"Environment variable name",withSaveButton:!0,originalValue:"",onSave:()=>{d==null||d({key:t,value:""},o)},type:"text",value:t,onChange:l=>r(l.target.value)}),o!==""&&s.jsx(k,{placeholder:"Environment variable value",withSaveButton:!0,originalValue:a,onSave:()=>{d==null||d({key:o,value:t},o),n()},type:"text",value:t,onChange:l=>r(l.target.value)})]})}),s.jsxs(le,{className:"flex flex-row gap-4",children:[o&&s.jsx(O,{onClick:()=>{c==null||c(o),n()},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),s.jsx(ze,{asChild:!0,children:s.jsx(O,{type:"submit",children:"Cancel"})})]})]})}),ue=i.forwardRef(({className:e,...t},a)=>s.jsx("div",{className:"relative w-full overflow-auto",children:s.jsx("table",{ref:a,className:m("w-full caption-bottom text-sm",e),...t})}));ue.displayName="Table";const fe=i.forwardRef(({className:e,...t},a)=>s.jsx("thead",{ref:a,className:m("[&_tr]:border-b",e),...t}));fe.displayName="TableHeader";const me=i.forwardRef(({className:e,...t},a)=>s.jsx("tbody",{ref:a,className:m("[&_tr:last-child]:border-0",e),...t}));me.displayName="TableBody";const pe=i.forwardRef(({className:e,...t},a)=>s.jsx("tfoot",{ref:a,className:m("border-t font-medium [&>tr]:last:border-b-0",e),...t}));pe.displayName="TableFooter";const y=i.forwardRef(({className:e,...t},a)=>s.jsx("tr",{ref:a,className:m("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));y.displayName="TableRow";const D=i.forwardRef(({className:e,...t},a)=>s.jsx("th",{ref:a,className:m("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));D.displayName="TableHead";const N=i.forwardRef(({className:e,...t},a)=>s.jsx("td",{ref:a,className:m("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));N.displayName="TableCell";const Ye=i.forwardRef(({className:e,...t},a)=>s.jsx("caption",{ref:a,className:m("mt-4 text-sm text-muted-foreground",e),...t}));Ye.displayName="TableCaption";/** +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(a))},[a,e]),null},We="DialogDescriptionWarning",Le=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${X(We).contentName}}.`;return i.useEffect(()=>{var r;const n=(r=e.current)==null?void 0:r.getAttribute("aria-describedby");t&&n&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Be=W,$e=$,K=H,ee=G,te=z,ae=Z,oe=Y;const O=({withSaveButton:e,originalValue:t,onSave:a,...o})=>{let n={width:"100%",fontSize:".8rem",minWidth:"250px",border:0,outline:0,padding:"0px 10px",borderRadius:e?0:"4px"};e&&(n.borderTopRightRadius=0,n.borderBottomRightRadius=0);const r=e&&t!==o.value,c=["input-save-button"];return r&&c.push("show"),s.jsxs("div",{style:{display:"grid",transition:"all .2s",width:"100%",gridTemplateColumns:r?"1fr 50px":"1fr 0px",height:"32px",borderRadius:e?"3px":0,overflow:"hidden"},children:[s.jsx("input",{...o,className:"text-black",style:o.type!=="checkbox"?n:{}}),o.type!=="checkbox"&&e&&s.jsx("button",{tabIndex:-1,onClick:()=>a==null?void 0:a(o.value),className:c.join(" "),children:s.jsx("span",{className:"text-[12px] font-bold",children:"SAVE"})})]})},nt={h2_hint:"Hints are suggestions from the server to the client on how to prioritize resources or manage network behavior.",hostname:"Choose hostname for this site.",hostname_frontend:"Incoming name for binding to (frontend).",port:"Choose port for this site.",directory:"Path to working dir of this site.",binary:"Name of the binary file to run.",https:"Use HTTPS.",auto_start:"Set this to false if you do not want this site to start automatically.",capture_subdomains:"If you wish to use wildcard routing for any subdomain under the 'host_name'.",disable_tcp_tunnel:"This is mostly useful in case the target uses SNI sniffing/routing.",forward_subdomains:"If you wish to use the subdomain from the request in forwarded requests: test.example.com -> internal.site vs test.example.com -> test.internal.site.",log_format:"Choose format for logs.",default_log_format:"Default format for logs.",global_env_vars:"These are global environment variables - they will be set for all hosted processes.",log_level:"Choose your preferred log level.",args:"Arguments to the binary.",env_vars:"These will be set on launch.",root_dir:"Root directory for sites.",default_http_port:"Default port for new sites.",default_tls_port:"Default TLS port for new sites.",default_auto_start:"Default value for configured sites. False means a site will not start automatically with odd-box, but it will still be automatically started on incoming requests to that site.",proxy_ip:"IP for proxy to listen to , can be ipv4/6.",port_range_start:"Port range for automatic port assignment (the env var PORT will be set if you did not specify one manually for a process).",use_alpn:"Allows alpn negotiation for http/1.0 and h2 on tls connections.",site_type:"Choose the type of site you are adding.",exclude_from_start_all:"Will exempt the site from the start/stop all sites feature.",backends:"All backends for this site."},k=({children:e,dangerButton:t,secondary:a,...o})=>{let n=["styled-button"];return t&&n.push("danger"),a&&n.push("secondary"),o.disabled&&n.push("disabled"),o.className&&(n=[o.className]),s.jsx("button",{...o,className:n.join(" "),children:e})};function se(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ttypeof e=="boolean"?"".concat(e):e===0?"0":e,M=He,Ge=(e,t)=>a=>{var o;if((t==null?void 0:t.variants)==null)return M(e,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:n,defaultVariants:r}=t,c=Object.keys(n).map(u=>{const f=a==null?void 0:a[u],g=r==null?void 0:r[u];if(f===null)return null;const x=A(f)||A(g);return n[u][x]}),d=a&&Object.entries(a).reduce((u,f)=>{let[g,x]=f;return x===void 0||(u[g]=x),u},{}),l=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((u,f)=>{let{class:g,className:x,...he}=f;return Object.entries(he).every(xe=>{let[I,C]=xe;return Array.isArray(C)?C.includes({...r,...d}[I]):{...r,...d}[I]===C})?[...u,g,x]:u},[]);return M(e,c,l,a==null?void 0:a.class,a==null?void 0:a.className)},qe=Be,ze=oe,Ue=$e,ne=i.forwardRef(({className:e,...t},a)=>s.jsx(K,{className:m("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,ref:a}));ne.displayName=K.displayName;const Ze=Ge("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),re=i.forwardRef(({side:e="right",className:t,children:a,...o},n)=>s.jsxs(Ue,{children:[s.jsx(ne,{}),s.jsxs(ee,{ref:n,className:m(Ze({side:e}),t),...o,children:[s.jsxs(oe,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[s.jsx(Re,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]}),a]})]}));re.displayName=ee.displayName;const ie=({className:e,...t})=>s.jsx("div",{className:m("flex flex-col space-y-2 text-center sm:text-left",e),...t});ie.displayName="SheetHeader";const le=({className:e,...t})=>s.jsx("div",{className:m("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});le.displayName="SheetFooter";const ce=i.forwardRef(({className:e,...t},a)=>s.jsx(te,{ref:a,className:m("text-lg font-semibold text-foreground",e),...t}));ce.displayName=te.displayName;const de=i.forwardRef(({className:e,...t},a)=>s.jsx(ae,{ref:a,className:m("text-sm text-muted-foreground",e),...t}));de.displayName=ae.displayName;const Je=({show:e,value:t,originalValue:a,name:o,onClose:n,valueChanged:r,onRemoveKey:c,onNewKey:d})=>s.jsx(qe,{open:e,onOpenChange:n,children:s.jsxs(re,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[s.jsxs(ie,{className:"text-left",children:[s.jsx(ce,{className:"text-white",children:o!==""?"Edit environment variable":"New environment variable"}),s.jsx(de,{children:o!==""?`Making changes to '${o}'`:"Adding a new environment variable"})]}),s.jsx(Te,{marginTop:"10px",noBottomSeparator:!0,children:s.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px"},children:[o===""&&s.jsx(O,{placeholder:"Environment variable name",withSaveButton:!0,originalValue:"",onSave:()=>{d==null||d({key:t,value:""},o)},type:"text",value:t,onChange:l=>r(l.target.value)}),o!==""&&s.jsx(O,{placeholder:"Environment variable value",withSaveButton:!0,originalValue:a,onSave:()=>{d==null||d({key:o,value:t},o),n()},type:"text",value:t,onChange:l=>r(l.target.value)})]})}),s.jsxs(le,{className:"flex flex-row gap-4",children:[o&&s.jsx(k,{onClick:()=>{c==null||c(o),n()},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),s.jsx(ze,{asChild:!0,children:s.jsx(k,{type:"submit",children:"Cancel"})})]})]})}),ue=i.forwardRef(({className:e,...t},a)=>s.jsx("div",{className:"relative w-full overflow-auto",children:s.jsx("table",{ref:a,className:m("w-full caption-bottom text-sm",e),...t})}));ue.displayName="Table";const fe=i.forwardRef(({className:e,...t},a)=>s.jsx("thead",{ref:a,className:m("[&_tr]:border-b",e),...t}));fe.displayName="TableHeader";const me=i.forwardRef(({className:e,...t},a)=>s.jsx("tbody",{ref:a,className:m("[&_tr:last-child]:border-0",e),...t}));me.displayName="TableBody";const pe=i.forwardRef(({className:e,...t},a)=>s.jsx("tfoot",{ref:a,className:m("border-t font-medium [&>tr]:last:border-b-0",e),...t}));pe.displayName="TableFooter";const y=i.forwardRef(({className:e,...t},a)=>s.jsx("tr",{ref:a,className:m("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));y.displayName="TableRow";const D=i.forwardRef(({className:e,...t},a)=>s.jsx("th",{ref:a,className:m("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));D.displayName="TableHead";const N=i.forwardRef(({className:e,...t},a)=>s.jsx("td",{ref:a,className:m("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));N.displayName="TableCell";const Ye=i.forwardRef(({className:e,...t},a)=>s.jsx("caption",{ref:a,className:m("mt-4 text-sm text-muted-foreground",e),...t}));Ye.displayName="TableCaption";/** * @license lucide-react v0.447.0 - ISC * * This source code is licensed under the ISC license. @@ -27,4 +27,4 @@ For more information, see https://radix-ui.com/primitives/docs/components/${t.do * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const tt=et("DiamondPlus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);function rt({keys:e,onNewKey:t,onRemoveKey:a}){const[o,n]=i.useState({show:!1,name:"",value:"",originalName:void 0,originalValue:void 0}),r=()=>{n(l=>({show:!l.show,name:"",value:"",originalName:"",originalValue:""}))},c=(l,u)=>{t==null||t(l,u),n(f=>({...f,name:l.key,originalName:l.key,originalValue:"",value:""}))},d=["hover:cursor-pointer"];return e.length===0&&d.push("border-0"),s.jsxs(s.Fragment,{children:[s.jsxs(ue,{children:[e.length!==0&&s.jsx(fe,{children:s.jsxs(y,{className:"pointer-events-none",children:[s.jsx(D,{className:"w-[100px] text-[var(--color2)]",children:"Name"}),s.jsx(D,{className:"text-[var(--color2)]",children:"Value"})]})}),s.jsx(me,{children:e.map(l=>s.jsxs(y,{className:"hover:cursor-pointer",onClick:()=>{n({show:!0,name:l.key,value:l.value,originalName:l.key,originalValue:l.value})},children:[s.jsx(N,{className:"font-medium",children:l.key}),s.jsx(N,{children:l.value})]},JSON.stringify(l)))}),s.jsx(pe,{className:d.join(" "),children:s.jsx(y,{onClick:r,children:s.jsx(N,{className:"bg-transparent",colSpan:3,children:s.jsxs("div",{className:"flex items-center gap-2 justify-center",children:[s.jsx(tt,{}),s.jsx("span",{children:"Add new environment variable"})]})})})})]}),s.jsx(Je,{onNewKey:c,onRemoveKey:a,onClose:()=>n(l=>({...l,show:!1})),name:o.name,originalValue:o.originalValue,show:o.show,value:o.value,valueChanged:l=>n(u=>({...u,value:l}))})]})}export{O as B,tt as D,rt as E,k as I,nt as S,ue as T,qe as a,re as b,ie as c,ce as d,de as e,le as f,ze as g,fe as h,y as i,D as j,me as k,N as l,pe as m}; + */const tt=et("DiamondPlus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);function rt({keys:e,onNewKey:t,onRemoveKey:a}){const[o,n]=i.useState({show:!1,name:"",value:"",originalName:void 0,originalValue:void 0}),r=()=>{n(l=>({show:!l.show,name:"",value:"",originalName:"",originalValue:""}))},c=(l,u)=>{t==null||t(l,u),n(f=>({...f,name:l.key,originalName:l.key,originalValue:"",value:""}))},d=["hover:cursor-pointer"];return e.length===0&&d.push("border-0"),s.jsxs(s.Fragment,{children:[s.jsxs(ue,{children:[e.length!==0&&s.jsx(fe,{children:s.jsxs(y,{className:"pointer-events-none",children:[s.jsx(D,{className:"w-[100px] text-[var(--color2)]",children:"Name"}),s.jsx(D,{className:"text-[var(--color2)]",children:"Value"})]})}),s.jsx(me,{children:e.map(l=>s.jsxs(y,{className:"hover:cursor-pointer",onClick:()=>{n({show:!0,name:l.key,value:l.value,originalName:l.key,originalValue:l.value})},children:[s.jsx(N,{className:"font-medium",children:l.key}),s.jsx(N,{children:l.value})]},JSON.stringify(l)))}),s.jsx(pe,{className:d.join(" "),children:s.jsx(y,{onClick:r,children:s.jsx(N,{className:"bg-transparent",colSpan:3,children:s.jsxs("div",{className:"flex items-center gap-2 justify-center",children:[s.jsx(tt,{}),s.jsx("span",{children:"Add new environment variable"})]})})})})]}),s.jsx(Je,{onNewKey:c,onRemoveKey:a,onClose:()=>n(l=>({...l,show:!1})),name:o.name,originalValue:o.originalValue,show:o.show,value:o.value,valueChanged:l=>n(u=>({...u,value:l}))})]})}export{k as B,ee as C,ae as D,rt as E,O as I,K as O,$e as P,Be as R,nt as S,te as T,oe as a,qe as b,et as c,re as d,ie as e,ce as f,de as g,le as h,ze as i,ue as j,me as k,y as l,N as m,pe as n,tt as o}; diff --git a/web-ui/dist/assets/index-BB0ZetJn.css b/web-ui/dist/assets/index-BB0ZetJn.css new file mode 100644 index 0000000..d8791bd --- /dev/null +++ b/web-ui/dist/assets/index-BB0ZetJn.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 0 0% 100%;--foreground: 0 0% 3.9%;--card: 0 0% 100%;--card-foreground: 0 0% 3.9%;--popover: 0 0% 100%;--popover-foreground: 0 0% 3.9%;--primary: 0 0% 9%;--primary-foreground: 0 0% 98%;--secondary: 0 0% 96.1%;--secondary-foreground: 0 0% 9%;--muted: 0 0% 96.1%;--muted-foreground: 0 0% 45.1%;--accent: 0 0% 96.1%;--accent-foreground: 0 0% 9%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 0 0% 89.8%;--input: 0 0% 89.8%;--ring: 0 0% 3.9%;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%;--radius: .5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.left-\[50\%\]{left:50%}.top-\[50\%\]{top:50%}.z-50{z-index:50}.m-\[revert\]{margin:revert}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[32px\]{height:32px}.h-full{height:100%}.h-px{height:1px}.max-h-\[300px\]{max-height:300px}.w-3\/4{width:75%}.w-4{width:1rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-\[100px\]{width:100px}.w-\[18px\]{width:18px}.w-\[200px\]{width:200px}.w-full{width:100%}.w-\[700px\]{width:700px}.max-w-\[max-content\]{max-width:-moz-max-content;max-width:max-content}.max-w-lg{max-width:32rem}.max-w-\[750px\]{max-width:750px}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-disc{list-style-type:disc}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.place-content-center{place-content:center}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-4{gap:1rem}.gap-2{gap:.5rem}.gap-0{gap:0px}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-\[\#ffffff24\]{border-color:#ffffff24}.border-\[rgba\(255\,255\,255\,0\.2\)\]{border-color:#fff3}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-l-\[\#ffffff10\]{border-left-color:#ffffff10}.bg-\[\#242424\]{--tw-bg-opacity: 1;background-color:rgb(36 36 36 / var(--tw-bg-opacity))}.bg-\[rgba\(36\,36\,36\,1\)\]{background-color:#242424}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-\[\#00000024\]{background-color:#00000024}.bg-\[\#00000088\]{background-color:#0008}.bg-\[\#09090b\]{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-6{padding:1.5rem}.p-\[2px\]{padding:2px}.p-\[revert\]{padding:revert}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[12px\]{font-size:12px}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.tracking-widest{letter-spacing:.1em}.tracking-tight{letter-spacing:-.025em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-foreground{color:hsl(var(--foreground))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-\[var\(--color2\)\]{color:var(--color2)}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-\[var\(--color1\)\]{color:var(--color1)}.text-\[var\(--color3\)\]{color:var(--color3)}.text-\[var\(--color4\)\]{color:var(--color4)}.text-\[var\(--color5\)\]{color:var(--color5)}.text-\[var\(--color6\)\]{color:var(--color6)}.text-\[var\(--color7\)\]{color:var(--color7)}.text-\[var\(--color8\)\]{color:var(--color8)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}:root{--bg-color: #242424;--color: var(--color4);--color1: #ed6a5a;--color1-5: #ed6a5a55;--color2: #f4f1bb;--color2-5: #f4f1bb55;--color3: #7b9a95;--color3-5: #7b9a9555;--color4: #e6ebe0;--color4-5: #e6ebe055;--color5: #5da59c;--color5-5: #5da59c55;--color6: #c97847;--color6-5: #c9784755;--color7: #5da55e;--color7-5: #5da55e55;--color8: #bb6cde;--color8-5: #bb6cde55;--border: 0,0%,100%,.1}*,*:before,*:after{box-sizing:border-box}*{margin:0}body{line-height:1.5;-webkit-font-smoothing:antialiased;color:var(--color);background-color:var(--bg-color);background-position:center;background-size:cover;background-repeat:no-repeat;min-height:100dvh;transition:padding-left .25s;font-family:Ubuntu,sans-serif}.inner-content{background-color:var(--bg-color);margin-bottom:180px;padding-left:20px;padding-right:20px;padding-top:60px;min-height:100dvh}@media screen and (min-width: 800px){.inner-content{padding-left:340px;padding-right:40px}}.checkbox-container{transition:all .2s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between;border:1px solid #ffffff24;padding:5px 10px;width:-moz-max-content;width:max-content;gap:10px;border-radius:5px}.checkbox-container:hover{background:#ffffff08}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}#root,#__next{isolation:isolate}.settings-item{display:flex;justify-content:space-between;align-items:center;gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.settings-section{display:flex;flex-direction:column;gap:20px;margin-top:20px;margin-bottom:20px}@media (max-width: 800px){.settings-item:not(.row-only){align-items:stretch;flex-direction:column}}.env-var-item{position:relative;cursor:pointer;height:32px}.env-var-item:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color4);opacity:0}.env-var-item:nth-child(odd):before{opacity:.3}.env-var-item:hover{color:#fff}.env-var-item:hover:before{background:#000;opacity:.5}.styled-button{background:var(--color3);color:#fff;border:0;outline:0;min-height:32px;padding:6px 8px;border-radius:4px;cursor:pointer;text-transform:uppercase;font-size:.8rem;position:relative;transition:all .2s;width:100%;font-weight:700}.styled-button.danger{background:var(--color1)}.styled-button.secondary{background:transparent;color:var(--color4);border:1px solid var(--color4)}.styled-button.dropdown{border-top-right-radius:0;border-bottom-right-radius:0}.button-dropdown-part{border-radius:0 4px 4px 0;display:grid;place-content:center;width:32px;border:0;background:var(--color3);position:relative;cursor:pointer;border-left:1px solid #ffffff88;padding:6px 8px;transition:all .2s}.button-dropdown-part:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;transition:opacity .2s ease-out;opacity:0}.styled-button.disabled{opacity:.5;background:gray;color:#fff;cursor:not-allowed}.styled-button:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;transition:opacity .2s ease-out;opacity:0}.styled-button:hover:before{opacity:.2}.button-dropdown-part:hover:before{opacity:.2}.button-dropdown-option{border:0;outline:0;background:transparent;cursor:pointer;padding:4px 10px;display:flex;align-items:center;font-size:.9rem}.button-dropdown-option:hover{background:#0001}@media screen and (max-width: 800px){.hide-when-small{display:none}}.placeholder\:text-\[rgba\(255\,255\,255\,0\.5\)\]::-moz-placeholder{color:#ffffff80}.placeholder\:text-\[rgba\(255\,255\,255\,0\.5\)\]::placeholder{color:#ffffff80}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-\[rgba\(255\,255\,255\,0\.1\)\]:hover{background-color:#ffffff1a}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@media (min-width: 640px){.sm\:max-w-sm{max-width:24rem}.sm\:max-w-\[425px\]{max-width:425px}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:1rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.sm\:text-left{text-align:left}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_a\]\:text-\[var\(--color2\)\] a{color:var(--color2)}.\[\&_code\]\:whitespace-pre-wrap code{white-space:pre-wrap}.\[\&_h2\]\:text-xl h2{font-size:1.25rem;line-height:1.75rem}.\[\&_h2\]\:font-bold h2{font-weight:700}.\[\&_h3\]\:text-\[50px\] h3{font-size:50px}.\[\&_h3\]\:text-xl h3{font-size:1.25rem;line-height:1.75rem}.\[\&_h3\]\:font-bold h3{font-weight:700}.\[\&_h3\]\:text-\[revert\] h3{color:revert}.\[\&_p\]\:m-\[revert\] p,.\[\&_pre\]\:m-\[revert\] pre{margin:revert}.\[\&_pre\]\:bg-\[\#00000054\] pre{background-color:#00000054}.\[\&_pre\]\:p-\[10px\] pre{padding:10px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:p-\[revert\] ul{padding:revert}.EZDrawer .EZDrawer__checkbox{display:none}.EZDrawer .EZDrawer__checkbox:checked~.EZDrawer__overlay{display:block;opacity:1}.EZDrawer .EZDrawer__checkbox:checked~.EZDrawer__container{visibility:visible;transform:translateZ(0)!important}.EZDrawer .EZDrawer__overlay{display:none;height:100vh;left:0;position:fixed;top:0;width:100%}.EZDrawer .EZDrawer__container{position:fixed;visibility:hidden;background:#fff;transition:all;box-shadow:0 0 10px 5px #0000001a}.styled-link{display:flex;color:#fff;text-decoration:none;align-items:center;height:40px;gap:12px;padding:0 0 0 10px;transition:all .2s;border-radius:5px}.styled-link.active{background:#fff2;color:var(--color2)}.styled-link.disabled{background:transparent}.styled-link:not(.active):hover{background:#ffffff10}.three-dots{padding:0;opacity:.5;border-radius:5px;display:grid;place-content:center;cursor:pointer;width:28px;height:28px;transition:all .1s;border:1px solid #ffffff00}.status-icon{padding:0;border-radius:5px;display:grid;place-content:center;cursor:pointer;width:28px;height:28px;transition:all .1s;border:1px solid #ffffff00}.status-icon:hover{border:1px solid #ffffff88}.odd-header{padding-left:8px;position:fixed;display:flex;align-items:center;top:0;left:0;right:0;background:#242424;z-index:1000;height:60px;justify-content:space-between;padding-right:8px}@media screen and (min-width: 800px){.odd-header{padding-left:20px;padding-right:40px}}.odd-footer{z-index:-1;height:180px;background:#1f1f1f;display:flex;flex-direction:column;position:fixed;bottom:0;left:0;right:0;justify-content:space-between;padding:20px;font-weight:lighter}@media screen and (min-width: 800px){.odd-footer{padding-left:320px}}.info-grid{display:grid;grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:14px}.info-item{background:#ffffff10;padding:10px;border-radius:10px;position:relative;border:1px solid #ffffff33}.button-dropdown-option{border:0;outline:0;background:transparent}.log-row{display:flex;padding:10px;cursor:pointer;-moz-column-gap:10px;column-gap:10px}.log-row:hover{background:#ffffff10} diff --git a/web-ui/dist/assets/index-Ba5eyaDC.css b/web-ui/dist/assets/index-Ba5eyaDC.css deleted file mode 100644 index e201655..0000000 --- a/web-ui/dist/assets/index-Ba5eyaDC.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root{--background: 0 0% 100%;--foreground: 0 0% 3.9%;--card: 0 0% 100%;--card-foreground: 0 0% 3.9%;--popover: 0 0% 100%;--popover-foreground: 0 0% 3.9%;--primary: 0 0% 9%;--primary-foreground: 0 0% 98%;--secondary: 0 0% 96.1%;--secondary-foreground: 0 0% 9%;--muted: 0 0% 96.1%;--muted-foreground: 0 0% 45.1%;--accent: 0 0% 96.1%;--accent-foreground: 0 0% 9%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 0 0% 89.8%;--input: 0 0% 89.8%;--ring: 0 0% 3.9%;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%;--radius: .5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[32px\]{height:32px}.h-full{height:100%}.h-px{height:1px}.max-h-\[300px\]{max-height:300px}.w-3\/4{width:75%}.w-4{width:1rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-\[100px\]{width:100px}.w-\[18px\]{width:18px}.w-\[200px\]{width:200px}.w-full{width:100%}.max-w-\[max-content\]{max-width:-moz-max-content;max-width:max-content}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.place-content-center{place-content:center}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-4{gap:1rem}.gap-2{gap:.5rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-\[\#ffffff24\]{border-color:#ffffff24}.border-\[rgba\(255\,255\,255\,0\.2\)\]{border-color:#fff3}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-l-\[\#ffffff10\]{border-left-color:#ffffff10}.bg-\[\#242424\]{--tw-bg-opacity: 1;background-color:rgb(36 36 36 / var(--tw-bg-opacity))}.bg-\[rgba\(36\,36\,36\,1\)\]{background-color:#242424}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-6{padding:1.5rem}.p-\[2px\]{padding:2px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[12px\]{font-size:12px}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-foreground{color:hsl(var(--foreground))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-\[var\(--color2\)\]{color:var(--color2)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}:root{--bg-color: #242424;--color: var(--color4);--color1: #ed6a5a;--color1-5: #ed6a5a55;--color2: #f4f1bb;--color2-5: #f4f1bb55;--color3: #7b9a95;--color3-5: #7b9a9555;--color4: #e6ebe0;--color4-5: #e6ebe055;--color5: #5da59c;--color5-5: #5da59c55;--color6: #c97847;--color6-5: #c9784755;--color7: #5da55e;--color7-5: #5da55e55;--color8: #bb6cde;--color8-5: #bb6cde55;--border: 0,0%,100%,.1}*,*:before,*:after{box-sizing:border-box}*{margin:0}body{line-height:1.5;-webkit-font-smoothing:antialiased;color:var(--color);background-color:var(--bg-color);background-position:center;background-size:cover;background-repeat:no-repeat;min-height:100dvh;transition:padding-left .25s;font-family:Ubuntu,sans-serif}.inner-content{background-color:var(--bg-color);margin-bottom:180px;padding-left:20px;padding-right:20px;padding-top:60px;min-height:100dvh}@media screen and (min-width: 800px){.inner-content{padding-left:340px;padding-right:40px}}.checkbox-container{transition:all .2s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between;border:1px solid #ffffff24;padding:5px 10px;width:-moz-max-content;width:max-content;gap:10px;border-radius:5px}.checkbox-container:hover{background:#ffffff08}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}#root,#__next{isolation:isolate}.settings-item{display:flex;justify-content:space-between;align-items:center;gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.settings-section{display:flex;flex-direction:column;gap:20px;margin-top:20px;margin-bottom:20px}@media (max-width: 800px){.settings-item:not(.row-only){align-items:stretch;flex-direction:column}}.env-var-item{position:relative;cursor:pointer;height:32px}.env-var-item:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color4);opacity:0}.env-var-item:nth-child(odd):before{opacity:.3}.env-var-item:hover{color:#fff}.env-var-item:hover:before{background:#000;opacity:.5}.styled-button{background:var(--color3);color:#fff;border:0;outline:0;min-height:32px;padding:6px 8px;border-radius:4px;cursor:pointer;text-transform:uppercase;font-size:.8rem;position:relative;transition:all .2s;width:100%;font-weight:700}.styled-button.danger{background:var(--color1)}.styled-button.secondary{background:transparent;color:var(--color4);border:1px solid var(--color4)}.styled-button.dropdown{border-top-right-radius:0;border-bottom-right-radius:0}.button-dropdown-part{border-radius:0 4px 4px 0;display:grid;place-content:center;width:32px;border:0;background:var(--color3);position:relative;cursor:pointer;border-left:1px solid #ffffff88;padding:6px 8px;transition:all .2s}.button-dropdown-part:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;transition:opacity .2s ease-out;opacity:0}.styled-button.disabled{opacity:.5;background:gray;color:#fff;cursor:not-allowed}.styled-button:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;transition:opacity .2s ease-out;opacity:0}.styled-button:hover:before{opacity:.2}.button-dropdown-part:hover:before{opacity:.2}.button-dropdown-option{border:0;outline:0;background:transparent;cursor:pointer;padding:4px 10px;display:flex;align-items:center;font-size:.9rem}.button-dropdown-option:hover{background:#0001}@media screen and (max-width: 800px){.hide-when-small{display:none}}.placeholder\:text-\[rgba\(255\,255\,255\,0\.5\)\]::-moz-placeholder{color:#ffffff80}.placeholder\:text-\[rgba\(255\,255\,255\,0\.5\)\]::placeholder{color:#ffffff80}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-\[rgba\(255\,255\,255\,0\.1\)\]:hover{background-color:#ffffff1a}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:opacity-100:hover{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}@media (min-width: 640px){.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:text-left{text-align:left}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}.EZDrawer .EZDrawer__checkbox{display:none}.EZDrawer .EZDrawer__checkbox:checked~.EZDrawer__overlay{display:block;opacity:1}.EZDrawer .EZDrawer__checkbox:checked~.EZDrawer__container{visibility:visible;transform:translateZ(0)!important}.EZDrawer .EZDrawer__overlay{display:none;height:100vh;left:0;position:fixed;top:0;width:100%}.EZDrawer .EZDrawer__container{position:fixed;visibility:hidden;background:#fff;transition:all;box-shadow:0 0 10px 5px #0000001a}.styled-link{display:flex;color:#fff;text-decoration:none;align-items:center;height:40px;gap:12px;padding:0 0 0 10px;transition:all .2s;border-radius:5px}.styled-link.active{background:#fff2;color:var(--color2)}.styled-link.disabled{background:transparent}.styled-link:not(.active):hover{background:#ffffff10}.three-dots{padding:0;opacity:.5;border-radius:5px;display:grid;place-content:center;cursor:pointer;width:28px;height:28px;transition:all .1s;border:1px solid #ffffff00}.status-icon{padding:0;border-radius:5px;display:grid;place-content:center;cursor:pointer;width:28px;height:28px;transition:all .1s;border:1px solid #ffffff00}.status-icon:hover{border:1px solid #ffffff88}.odd-header{padding-left:8px;position:fixed;display:flex;align-items:center;top:0;left:0;right:0;background:#242424;z-index:1000;height:60px;justify-content:space-between;padding-right:8px}@media screen and (min-width: 800px){.odd-header{padding-left:20px;padding-right:40px}}.odd-footer{z-index:-1;height:180px;background:#1f1f1f;display:flex;flex-direction:column;position:fixed;bottom:0;left:0;right:0;justify-content:space-between;padding:20px;font-weight:lighter}@media screen and (min-width: 800px){.odd-footer{padding-left:320px}}.info-grid{display:grid;grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:14px}.info-item{background:#ffffff10;padding:10px;border-radius:10px;position:relative;border:1px solid #ffffff33}.button-dropdown-option{border:0;outline:0;background:transparent}.log-row{display:flex;padding:10px;cursor:pointer;-moz-column-gap:10px;column-gap:10px}.log-row:hover{background:#ffffff10} diff --git a/web-ui/dist/assets/index-BAcZo2i6.js b/web-ui/dist/assets/index-dDKJaDn2.js similarity index 92% rename from web-ui/dist/assets/index-BAcZo2i6.js rename to web-ui/dist/assets/index-dDKJaDn2.js index 12728e7..fc84ce5 100644 --- a/web-ui/dist/assets/index-BAcZo2i6.js +++ b/web-ui/dist/assets/index-dDKJaDn2.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings.lazy-B_vd7YXJ.js","assets/env_variables-DBgTPTRJ.js","assets/env_variables-BvzXfqsY.css","assets/settings-Cn3ar6wA.css","assets/new-site.lazy-CNIAwjvA.js","assets/arguments-90i_LMyj.js","assets/index.lazy-WgUoo0uP.js","assets/index-8QctTHiC.css","assets/site._siteName.lazy-CVHSeaEy.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings.lazy-MRsrwGn0.js","assets/env_variables-rG-Gz1th.js","assets/env_variables-BvzXfqsY.css","assets/new-site.lazy-DWm06qDN.js","assets/arguments-Dk8DAUdv.js","assets/index.lazy-BfUAJxFi.js","assets/index-8QctTHiC.css","assets/site._siteName.lazy-CaDHN2Jl.js"])))=>i.map(i=>d[i]); var Xf=e=>{throw TypeError(e)};var Zl=(e,t,n)=>t.has(e)||Xf("Cannot "+n);var b=(e,t,n)=>(Zl(e,t,"read from private field"),n?n.call(e):t.get(e)),Q=(e,t,n)=>t.has(e)?Xf("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),D=(e,t,n,r)=>(Zl(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),X=(e,t,n)=>(Zl(e,t,"access private method"),n);var Os=(e,t,n,r)=>({set _(o){D(e,t,o,n)},get _(){return b(e,t,r)}});function C1(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();var we=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function gs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Nm={exports:{}},cl={},Lm={exports:{}},Z={};/** * @license React * react.production.min.js @@ -281,4 +281,4 @@ to { > * { pointer-events: auto; } -`,oa=16,UO=({reverseOrder:e,position:t="top-center",toastOptions:n,gutter:r,children:o,containerStyle:i,containerClassName:s})=>{let{toasts:a,handlers:u}=mO(n);return f.createElement("div",{style:{position:"fixed",zIndex:9999,top:oa,left:oa,right:oa,bottom:oa,pointerEvents:"none",...i},className:s,onMouseEnter:u.startPause,onMouseLeave:u.endPause},a.map(l=>{let c=l.position||t,d=u.calculateOffset(l,{reverseOrder:e,gutter:r,defaultPosition:t}),h=FO(c,d);return f.createElement(DO,{id:l.id,key:l.id,onHeightUpdate:u.updateHeight,className:l.visible?zO:"",style:h},l.type==="custom"?rl(l.message,l):o?o(l):f.createElement(jO,{toast:l,position:c}))}))},ol=lt;const WO=()=>E.jsx("svg",{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",children:E.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M14 17h6m-3 3v-6M4.857 4h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857H4.857A.857.857 0 0 1 4 9.143V4.857C4 4.384 4.384 4 4.857 4Zm10 0h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857h-4.286A.857.857 0 0 1 14 9.143V4.857c0-.473.384-.857.857-.857Zm-10 10h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857H4.857A.857.857 0 0 1 4 19.143v-4.286c0-.473.384-.857.857-.857Z"})}),ia=e=>new Promise(t=>setTimeout(t,e)),S1=()=>{let e=window.location.protocol+"//"+window.location.hostname;window.location.port&&(e=`${e}:${window.location.port}`);const t=e,n=new Dl({baseUrl:t}),r=Mt(),o=Kf(),i=Ci({mutationKey:["start-site"],mutationFn:async({hostname:c})=>{var h,p;await n.api.start({hostname:c});const d=c==="*";if(await ia(d?3e3:1e3),d)o.invalidateQueries({queryKey:["site-status"]});else{let w=(await n.api.status()).data,v=(h=w.items.find(g=>g.hostname===c))==null?void 0:h.state,S=5,m=0;for(;mg.hostname===c))==null?void 0:p.state;if(o.invalidateQueries({queryKey:["site-status"]}),v!==Oi.Running)throw new Error("Site did not start")}}}),s=Ci({mutationKey:["stop-site"],mutationFn:async({hostname:c})=>{var h,p;await n.api.stop({hostname:c});const d=c==="*";if(await ia(d?3e3:1e3),d)o.invalidateQueries({queryKey:["site-status"]});else{let w=(await n.api.status()).data,v=(h=w.items.find(g=>g.hostname===c))==null?void 0:h.state,S=5,m=0;for(;mg.hostname===c))==null?void 0:p.state;if(o.invalidateQueries({queryKey:["site-status"]}),v!==Oi.Stopped)throw new Error("Site did not stop")}}}),a=Ci({mutationKey:["update-remote-site"],mutationFn:({hostname:c,siteSettings:d})=>n.api.set({new_configuration:{RemoteSite:d}},{hostname:c}),onSettled:(c,d,h)=>{o.invalidateQueries({queryKey:["sites"]}),h.hostname!==h.siteSettings.host_name&&r.navigate({to:`/site/${h.siteSettings.host_name.replace("http://","").replace("https://","")}`,search:{tab:1}})}}),u=Ci({mutationKey:["update-site"],mutationFn:({hostname:c,siteSettings:d})=>n.api.set({new_configuration:{HostedProcess:d}},{hostname:c}),onSettled:(c,d,h)=>{o.invalidateQueries({queryKey:["sites"]}),h.hostname!==h.siteSettings.host_name&&r.navigate({to:`/site/${h.siteSettings.host_name.replace("http://","").replace("https://","")}`,search:{tab:1}})}}),l=Ci({mutationKey:["delete-site"],mutationFn:async({hostname:c})=>{await n.api.delete({hostname:c})},onSuccess:()=>{o.invalidateQueries({queryKey:["sites"]})}});return{startSite:i,stopSite:s,updateSite:u,deleteSite:l,updateRemoteSite:a}},BO={Running:"greenyellow",Stopped:"var(--color1)",Disabled:"gray",Stopping:"yellow",Starting:"yellow",Remote:"white",Faulty:"yellow"},hm=({hostname:e,state:t,isRemoteSite:n})=>{const[r,o]=f.useState(!1),{startSite:i,stopSite:s}=S1();return E.jsxs(Bf,{open:r,children:[E.jsx(Uf,{asChild:!0,children:E.jsx("span",{className:"status-icon",title:t,onClick:a=>{a.preventDefault(),!n&&o(!0)},style:{color:BO[t],fontSize:n?".7rem":"1rem"},children:n?"R":"●"})}),E.jsx(jl,{onInteractOutside:()=>o(!1),onClick:()=>o(!1),className:"max-w-[max-content] border bg-white text-black",children:E.jsxs("div",{style:{background:"white",marginTop:"1px",borderRadius:"4px",overflow:"hidden"},children:[E.jsx("button",{disabled:t==="Running",onClick:()=>{ol.promise(i.mutateAsync({hostname:e}),{loading:`Starting site.. [${e}]`,success:`Site started! [${e}]`,error:a=>`Failed to start site: ${a}`})},className:"button-dropdown-option",style:{width:"100%",borderBottom:"1px solid var(--color4)",height:"36px"},children:"Start site"}),E.jsx("button",{disabled:t==="Stopped",onClick:()=>{ol.promise(s.mutateAsync({hostname:e}),{loading:`Stopping site.. [${e}]`,success:`Site stopped! [${e}]`,error:a=>`Failed to stop site: ${a}`})},className:"button-dropdown-option",style:{width:"100%",height:"36px",borderBottom:"1px solid var(--color4)"},children:"Stop site"})]})})]})},HO=()=>E.jsx(f.Suspense,{fallback:E.jsx("p",{children:"loading sites"}),children:E.jsx(VO,{})}),VO=()=>{const{data:e}=qf(),{data:t}=Yf(),{data:n}=v1(),r=e.sort((i,s)=>i.host_name.localeCompare(s.host_name)),o=t.sort((i,s)=>i.host_name.localeCompare(s.host_name));return E.jsxs(E.Fragment,{children:[r.map(i=>{var a;const s=(a=n.find(u=>u.hostname===i.host_name))==null?void 0:a.state;return E.jsx(Po,{rightIcon:E.jsx(hm,{state:s,hostname:i.host_name}),title:i.host_name,href:`/site/${i.host_name.replaceAll("http://","").replaceAll("https://","")}`,icon:null},i.host_name)}),o.map(i=>{var a;const s=(a=n.find(u=>u.hostname===i.host_name))==null?void 0:a.state;return E.jsx(Po,{rightIcon:E.jsx(hm,{state:s,hostname:i.host_name,isRemoteSite:!0}),title:i.host_name,href:`/site/${i.host_name.replaceAll("http://","").replaceAll("https://","")}`,icon:null},i.host_name)}),e.length===0&&t.length===0&&E.jsx(Po,{fontSize:".9rem",title:"NEW SITE",href:"/new-site",icon:E.jsx(WO,{})})]})},QO=()=>{const[e,t]=f.useState(!1),n=Mt(),{startSite:r,stopSite:o}=S1();return E.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0px 10px",paddingRight:"0px"},children:[E.jsx("p",{style:{opacity:.6,fontSize:".8rem",fontWeight:"bold",letterSpacing:".12rem"},children:"SITES"}),E.jsxs(Bf,{open:e,children:[E.jsx(t1,{asChild:!0,children:E.jsx("div",{className:"three-dots",onClick:()=>t(!0),children:"•••"})}),E.jsx(jl,{onInteractOutside:()=>t(!1),onClick:()=>t(!1),className:"max-w-[max-content] border bg-white text-black",children:E.jsxs("div",{style:{background:"white",marginTop:"1px",borderRadius:"4px"},children:[E.jsx("button",{onClick:()=>{n.navigate({to:"/new-site"})},className:"button-dropdown-option",style:{width:"100%",height:"36px"},children:"New site"}),E.jsx("button",{onClick:()=>{ol.promise(r.mutateAsync({hostname:"*"}),{loading:"Starting all sites..",success:"All site started!",error:i=>`Failed to start sites. ${i}`})},className:"button-dropdown-option",style:{width:"100%",borderTop:"1px solid var(--color4)",borderBottom:"1px solid var(--color4)",height:"36px"},children:"Start all sites"}),E.jsx("button",{onClick:()=>{ol.promise(o.mutateAsync({hostname:"*"}),{loading:"Stopping all sites..",success:"All site stopped!",error:i=>`Failed to stop sites. ${i}`})},className:"button-dropdown-option",style:{width:"100%",height:"36px"},children:"Stop all sites"})]})})]})]})},KO=()=>E.jsx("svg",{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",children:E.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"m4 12 8-8 8 8M6 10.5V19a1 1 0 0 0 1 1h3v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h3a1 1 0 0 0 1-1v-8.5"})}),GO=()=>E.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",className:"icon icon-tabler icon-tabler-article",width:"24",height:"24",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[E.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),E.jsx("path",{d:"M3 4m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"}),E.jsx("path",{d:"M7 8h10"}),E.jsx("path",{d:"M7 12h10"}),E.jsx("path",{d:"M7 16h10"})]});var qO=function(){return null};const YO=new bR,ui=Hx({component:()=>E.jsx(E.Fragment,{children:E.jsxs(OR,{client:YO,children:[E.jsxs(uE,{children:[E.jsx(UO,{}),E.jsxs(BE,{children:[E.jsx(Po,{title:"Home",fontWeight:"lighter",href:"/",icon:E.jsx(KO,{})}),E.jsx(Po,{title:"Settings",fontWeight:"lighter",href:"/settings",icon:E.jsx(XR,{})}),E.jsx(Po,{title:"Logs",fontWeight:"lighter",href:"/logs",icon:E.jsx(GO,{})}),E.jsx("hr",{style:{margin:"15px 5px"}}),E.jsx(QO,{}),E.jsx(HO,{})]}),E.jsx(qR,{}),E.jsx("div",{className:"inner-content",children:E.jsx(ly,{})}),E.jsx(YR,{})]}),E.jsx(qO,{initialIsOpen:!1})]})})});var mr={},ci={},yn={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isEventSourceSupported=e.isReactNative=e.ReadyState=e.UNPARSABLE_JSON_OBJECT=e.DEFAULT_RECONNECT_INTERVAL_MS=e.DEFAULT_RECONNECT_LIMIT=e.SOCKET_IO_PING_CODE=e.SOCKET_IO_PATH=e.SOCKET_IO_PING_INTERVAL=e.DEFAULT_EVENT_SOURCE_OPTIONS=e.EMPTY_EVENT_HANDLERS=e.DEFAULT_OPTIONS=void 0;var t=1,n=1e3*t;e.DEFAULT_OPTIONS={},e.EMPTY_EVENT_HANDLERS={},e.DEFAULT_EVENT_SOURCE_OPTIONS={withCredentials:!1,events:e.EMPTY_EVENT_HANDLERS},e.SOCKET_IO_PING_INTERVAL=25*n,e.SOCKET_IO_PATH="/socket.io/?EIO=3&transport=websocket",e.SOCKET_IO_PING_CODE="2",e.DEFAULT_RECONNECT_LIMIT=20,e.DEFAULT_RECONNECT_INTERVAL_MS=5e3,e.UNPARSABLE_JSON_OBJECT={},function(o){o[o.UNINSTANTIATED=-1]="UNINSTANTIATED",o[o.CONNECTING=0]="CONNECTING",o[o.OPEN=1]="OPEN",o[o.CLOSING=2]="CLOSING",o[o.CLOSED=3]="CLOSED"}(e.ReadyState||(e.ReadyState={}));var r=function(){try{return"EventSource"in globalThis}catch{return!1}};e.isReactNative=typeof navigator<"u"&&navigator.product==="ReactNative",e.isEventSourceSupported=!e.isReactNative&&r()})(yn);var zl={},Ul={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.resetWebSockets=e.sharedWebSockets=void 0,e.sharedWebSockets={},e.resetWebSockets=function(t){if(t&&e.sharedWebSockets.hasOwnProperty(t))delete e.sharedWebSockets[t];else for(var n in e.sharedWebSockets)e.sharedWebSockets.hasOwnProperty(n)&&delete e.sharedWebSockets[n]}})(Ul);var Wl={},qt={};Object.defineProperty(qt,"__esModule",{value:!0});qt.setUpSocketIOPing=qt.appendQueryParams=qt.parseSocketIOUrl=void 0;var il=yn;qt.parseSocketIOUrl=function(e){if(e){var t=/^https|wss/.test(e),n=e.replace(/^(https?|wss?)(:\/\/)?/,""),r=n.replace(/\/$/,""),o=t?"wss":"ws";return o+"://"+r+il.SOCKET_IO_PATH}else if(e===""){var t=/^https/.test(window.location.protocol),o=t?"wss":"ws",i=window.location.port?":"+window.location.port:"";return o+"://"+window.location.hostname+i+il.SOCKET_IO_PATH}return e};qt.appendQueryParams=function(e,t){t===void 0&&(t={});var n=/\?([\w]+=[\w]+)/,r=n.test(e),o=""+Object.entries(t).reduce(function(i,s){var a=s[0],u=s[1];return i+(a+"="+u+"&")},"").slice(0,-1);return""+e+(r?"&":"?")+o};qt.setUpSocketIOPing=function(e,t){t===void 0&&(t=il.SOCKET_IO_PING_INTERVAL);var n=function(){return e(il.SOCKET_IO_PING_CODE)};return setInterval(n,t)};var or={},Bl={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.resetSubscribers=e.removeSubscriber=e.addSubscriber=e.hasSubscribers=e.getSubscribers=void 0;var t={},n=[];e.getSubscribers=function(r){return e.hasSubscribers(r)?Array.from(t[r]):n},e.hasSubscribers=function(r){var o;return((o=t[r])===null||o===void 0?void 0:o.size)>0},e.addSubscriber=function(r,o){t[r]=t[r]||new Set,t[r].add(o)},e.removeSubscriber=function(r,o){t[r].delete(o)},e.resetSubscribers=function(r){if(r&&t.hasOwnProperty(r))delete t[r];else for(var o in t)t.hasOwnProperty(o)&&delete t[o]}})(Bl);Object.defineProperty(or,"__esModule",{value:!0});or.resetGlobalState=or.assertIsWebSocket=void 0;var XO=Ul,ZO=Bl;function JO(e){if(!(e instanceof WebSocket))throw new Error("")}or.assertIsWebSocket=JO;function e2(e){ZO.resetSubscribers(e),XO.resetWebSockets(e)}or.resetGlobalState=e2;var sl=we&&we.__assign||function(){return sl=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!i||l[1]>i[0]&&l[1]0&&i[i.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!i||l[1]>i[0]&&l[1]{const[e,t]=f.useState([]);let n=window.location.hostname;window.location.port&&(n=`${n}:${window.location.port}`);const o=`ws://${n}/ws/live_logs`,{lastMessage:i,readyState:s}=O2(o);f.useEffect(()=>{if(i!==null){const u=JSON.parse(i.data);u.timestamp=new Date().toLocaleTimeString(),t(l=>[u,...l])}},[i]);const a={[mr.ReadyState.CONNECTING]:"Connecting",[mr.ReadyState.OPEN]:"Open",[mr.ReadyState.CLOSING]:"Closing",[mr.ReadyState.CLOSED]:"Closed",[mr.ReadyState.UNINSTANTIATED]:"Uninstantiated"}[s];return{messageHistory:e,connectionStatus:a}},N2=({children:e,noTopSeparator:t,noBottomSeparator:n,marginTop:r})=>E.jsxs("div",{className:"settings-section",style:{display:"flex",flexDirection:"column",gap:"20px",marginTop:r??"20px",marginBottom:"20px"},children:[!t&&E.jsx("hr",{}),e,!n&&E.jsx("hr",{})]}),wm=({title:e,subTitle:t,defaultValue:n,children:r,rowOnly:o,labelFor:i,vertical:s})=>{let a=["settings-item"];return o&&a.push("row-only"),s&&(a=["flex align-items-stretch flex-col gap-1"]),E.jsx("div",{children:E.jsxs("div",{className:a.join(" "),children:[E.jsxs("div",{style:{maxWidth:s?"100%":"400px"},children:[E.jsx("label",{htmlFor:i,style:{fontWeight:"bold",fontSize:".8rem",display:"block"},children:e}),E.jsxs("label",{htmlFor:i,style:{fontSize:".8rem",opacity:.6,display:"block"},children:[t,E.jsx("br",{}),n&&`Default: ${n}`]})]}),E.jsx("div",{style:{flexShrink:0},children:r})]})})};function L2(e){return E.jsx("svg",{viewBox:"0 0 16 16",fill:"currentColor",height:"1em",width:"1em",...e,children:E.jsx("path",{fill:"currentColor",d:"M13.5 2L6 9.5 2.5 6 0 8.5l6 6 10-10z"})})}const Yu=({checked:e,title:t,onClick:n})=>E.jsxs("div",{className:"checkbox-container",onClick:n,children:[E.jsx("label",{style:{pointerEvents:"none"},htmlFor:"use_https",children:t}),E.jsx("div",{className:"border grid border-[#ffffff24] w-[18px] h-[18px] p-[2px] rounded place-content-center",children:E.jsx(L2,{width:10,height:10,className:`${e?"opacity-100":"opacity-0"}`})})]}),T2=({hostedProcess:e,remoteSite:t})=>{const{data:n}=qf(),{data:r}=Yf(),[o,i]=f.useState((e==null?void 0:e.host_name)??(t==null?void 0:t.host_name)??"all"),{messageHistory:s}=$2(),[a,u]=f.useState(["info","warn","error"]);let l=[];return l=s.filter(c=>c.msg!==""&&(o==="all"||c.thread===o)&&a.includes(c.lvl.toLowerCase())),E.jsxs("div",{style:{paddingBottom:"40px",maxWidth:"1000px"},children:[E.jsxs(N2,{noTopSeparator:!0,noBottomSeparator:!0,children:[E.jsx(wm,{title:"Site",subTitle:"Which site do you want to see messages from",children:E.jsxs("select",{className:"text-black rounded pl-3 pr-3",onChange:c=>i(c.target.value),style:{height:"30px",width:"100%",minWidth:"200px"},defaultValue:(e==null?void 0:e.host_name)??(t==null?void 0:t.host_name)??"all",children:[E.jsx("option",{value:"all",children:"All sites"}),E.jsx("option",{value:"system",children:"System messages"}),n.map(c=>E.jsx("option",{children:c.host_name},c.host_name)),r.map(c=>E.jsx("option",{children:c.host_name},c.host_name))]})}),E.jsx(wm,{title:"Filter messages",subTitle:"Which type of messages do you want to see",children:E.jsxs("div",{style:{display:"flex",gap:"10px",marginBottom:"10px"},children:[E.jsx(Yu,{title:"Info",onClick:()=>{a.includes("info")?u(c=>[...c.filter(d=>d!=="info")]):u(c=>[...c,"info"])},checked:a.includes("info")}),E.jsx(Yu,{title:"Warning",onClick:()=>{a.includes("warn")?u(c=>[...c.filter(d=>d!=="warn")]):u(c=>[...c,"warn"])},checked:a.includes("warn")}),E.jsx(Yu,{title:"Error",onClick:()=>{a.includes("error")?u(c=>[...c.filter(d=>d!=="error")]):u(c=>[...c,"error"])},checked:a.includes("error")})]})})]}),E.jsxs("div",{style:{display:"flex",gap:"10px",padding:"0px 10px"},children:[E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center",justifySelf:"center",width:"70px",minWidth:"70px"},className:"hide-when-small",children:"LEVEL"}),E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center",width:"70px",minWidth:"70px"},children:"TIME"}),E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center"},children:"MESSAGE"})]}),E.jsx("div",{style:{background:"#00000033",border:"1px solid #ffffff44",borderRadius:"5px",minHeight:"50px"},children:l.map((c,d)=>E.jsxs("div",{className:"log-row",children:[E.jsx("div",{className:"hide-when-small",style:{gridRow:2+d,fontSize:".9rem",justifyContent:"stretch",alignContent:"start",alignSelf:"start",height:"100%",width:"70px",minWidth:"70px"},children:E.jsx("p",{style:{background:c.lvl==="ERROR"?"var(--color1)":c.lvl==="WARN"?"var(--color6)":"#889fae",userSelect:"none",color:"white",padding:"4px 8px",borderRadius:"8px",textTransform:"uppercase",textAlign:"center"},children:c.lvl})}),E.jsx("div",{style:{position:"relative",gridRow:2+d,fontSize:".8rem",display:"grid",justifyContent:"stretch",alignContent:"start",alignSelf:"start",height:"100%",width:"70px",minWidth:"70px"},children:E.jsx("p",{style:{padding:"4px 0px",fontSize:".9rem",alignSelf:"start",alignContent:"center"},children:c.timestamp})}),E.jsx("div",{style:{position:"relative",gridRow:2+d,fontSize:".8rem",display:"grid",justifyContent:"stretch",alignContent:"start",width:"100%",alignSelf:"start",height:"100%"},children:E.jsxs("p",{style:{padding:"4px 0px",fontSize:".9rem",alignSelf:"start",overflow:"auto"},children:[o==="all"&&E.jsx("span",{style:{color:"var(--color2)",fontWeight:"bold"},children:`[${c.thread}] `}),c.msg]})})]},`${c.timestamp}_${c.msg}`))})]})},M2=()=>E.jsxs(E.Fragment,{children:[E.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Logs"}),E.jsx(T2,{})]}),A2=Cs("/logs")({component:M2}),I2=Cs("/settings")(),j2=Cs("/new-site")(),D2=Cs("/")(),F2=Cs("/site/$siteName")(),z2=I2.update({path:"/settings",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./settings.lazy-B_vd7YXJ.js"),__vite__mapDeps([0,1,2,3])).then(e=>e.Route)),U2=j2.update({path:"/new-site",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./new-site.lazy-CNIAwjvA.js"),__vite__mapDeps([4,1,2,5])).then(e=>e.Route)),W2=A2.update({path:"/logs",getParentRoute:()=>ui}),B2=D2.update({path:"/",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./index.lazy-WgUoo0uP.js"),__vite__mapDeps([6,7])).then(e=>e.Route)),H2=F2.update({path:"/site/$siteName",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./site._siteName.lazy-CVHSeaEy.js"),__vite__mapDeps([8,1,2,5])).then(e=>e.Route)),V2=ui.addChildren({IndexLazyRoute:B2,LogsRoute:W2,NewSiteLazyRoute:U2,SettingsLazyRoute:z2,SiteSiteNameLazyRoute:H2}),E1=Ix({routeTree:V2});E1.subscribe("onResolved",()=>{window.scrollTo({top:0,behavior:"smooth"})});const Sm=document.getElementById("root");Sm.innerHTML||Xu.createRoot(Sm).render(E.jsx(f.StrictMode,{children:E.jsx(oE,{router:E1})}));export{Dl as A,Oi as B,Yu as C,Ey as D,Vr as E,by as F,Y2 as G,BR as H,HR as L,Pf as P,Bt as R,N2 as S,ol as _,Kf as a,Ci as b,wm as c,G2 as d,S1 as e,v1 as f,gs as g,Hg as h,Mt as i,E as j,Yf as k,qf as l,ny as m,T2 as n,lr as o,XE as p,Yn as q,f as r,jy as s,Fy as t,Gf as u,BC as v,X2 as w,_y as x,nC as y,tC as z}; +`,oa=16,UO=({reverseOrder:e,position:t="top-center",toastOptions:n,gutter:r,children:o,containerStyle:i,containerClassName:s})=>{let{toasts:a,handlers:u}=mO(n);return f.createElement("div",{style:{position:"fixed",zIndex:9999,top:oa,left:oa,right:oa,bottom:oa,pointerEvents:"none",...i},className:s,onMouseEnter:u.startPause,onMouseLeave:u.endPause},a.map(l=>{let c=l.position||t,d=u.calculateOffset(l,{reverseOrder:e,gutter:r,defaultPosition:t}),h=FO(c,d);return f.createElement(DO,{id:l.id,key:l.id,onHeightUpdate:u.updateHeight,className:l.visible?zO:"",style:h},l.type==="custom"?rl(l.message,l):o?o(l):f.createElement(jO,{toast:l,position:c}))}))},ol=lt;const WO=()=>E.jsx("svg",{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",children:E.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M14 17h6m-3 3v-6M4.857 4h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857H4.857A.857.857 0 0 1 4 9.143V4.857C4 4.384 4.384 4 4.857 4Zm10 0h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857h-4.286A.857.857 0 0 1 14 9.143V4.857c0-.473.384-.857.857-.857Zm-10 10h4.286c.473 0 .857.384.857.857v4.286a.857.857 0 0 1-.857.857H4.857A.857.857 0 0 1 4 19.143v-4.286c0-.473.384-.857.857-.857Z"})}),ia=e=>new Promise(t=>setTimeout(t,e)),S1=()=>{let e=window.location.protocol+"//"+window.location.hostname;window.location.port&&(e=`${e}:${window.location.port}`);const t=e,n=new Dl({baseUrl:t}),r=Mt(),o=Kf(),i=Ci({mutationKey:["start-site"],mutationFn:async({hostname:c})=>{var h,p;await n.api.start({hostname:c});const d=c==="*";if(await ia(d?3e3:1e3),d)o.invalidateQueries({queryKey:["site-status"]});else{let w=(await n.api.status()).data,v=(h=w.items.find(g=>g.hostname===c))==null?void 0:h.state,S=5,m=0;for(;mg.hostname===c))==null?void 0:p.state;if(o.invalidateQueries({queryKey:["site-status"]}),v!==Oi.Running)throw new Error("Site did not start")}}}),s=Ci({mutationKey:["stop-site"],mutationFn:async({hostname:c})=>{var h,p;await n.api.stop({hostname:c});const d=c==="*";if(await ia(d?3e3:1e3),d)o.invalidateQueries({queryKey:["site-status"]});else{let w=(await n.api.status()).data,v=(h=w.items.find(g=>g.hostname===c))==null?void 0:h.state,S=5,m=0;for(;mg.hostname===c))==null?void 0:p.state;if(o.invalidateQueries({queryKey:["site-status"]}),v!==Oi.Stopped)throw new Error("Site did not stop")}}}),a=Ci({mutationKey:["update-remote-site"],mutationFn:({hostname:c,siteSettings:d})=>n.api.set({new_configuration:{RemoteSite:d}},{hostname:c}),onSettled:(c,d,h)=>{o.invalidateQueries({queryKey:["sites"]}),h.hostname!==h.siteSettings.host_name&&r.navigate({to:`/site/${h.siteSettings.host_name.replace("http://","").replace("https://","")}`})}}),u=Ci({mutationKey:["update-site"],mutationFn:({hostname:c,siteSettings:d})=>n.api.set({new_configuration:{HostedProcess:d}},{hostname:c}),onSettled:(c,d,h)=>{o.invalidateQueries({queryKey:["sites"]}),h.hostname!==h.siteSettings.host_name&&r.navigate({to:`/site/${h.siteSettings.host_name.replace("http://","").replace("https://","")}`,search:{tab:1}})}}),l=Ci({mutationKey:["delete-site"],mutationFn:async({hostname:c})=>{await n.api.delete({hostname:c})},onSuccess:()=>{o.invalidateQueries({queryKey:["sites"]})}});return{startSite:i,stopSite:s,updateSite:u,deleteSite:l,updateRemoteSite:a}},BO={Running:"greenyellow",Stopped:"var(--color1)",Disabled:"gray",Stopping:"yellow",Starting:"yellow",Remote:"white",Faulty:"yellow"},hm=({hostname:e,state:t,isRemoteSite:n})=>{const[r,o]=f.useState(!1),{startSite:i,stopSite:s}=S1();return E.jsxs(Bf,{open:r,children:[E.jsx(Uf,{asChild:!0,children:E.jsx("span",{className:"status-icon",title:t,onClick:a=>{a.preventDefault(),!n&&o(!0)},style:{color:BO[t],fontSize:n?".7rem":"1rem"},children:n?"R":"●"})}),E.jsx(jl,{onInteractOutside:()=>o(!1),onClick:()=>o(!1),className:"max-w-[max-content] border bg-white text-black",children:E.jsxs("div",{style:{background:"white",marginTop:"1px",borderRadius:"4px",overflow:"hidden"},children:[E.jsx("button",{disabled:t==="Running",onClick:()=>{ol.promise(i.mutateAsync({hostname:e}),{loading:`Starting site.. [${e}]`,success:`Site started! [${e}]`,error:a=>`Failed to start site: ${a}`})},className:"button-dropdown-option",style:{width:"100%",borderBottom:"1px solid var(--color4)",height:"36px"},children:"Start site"}),E.jsx("button",{disabled:t==="Stopped",onClick:()=>{ol.promise(s.mutateAsync({hostname:e}),{loading:`Stopping site.. [${e}]`,success:`Site stopped! [${e}]`,error:a=>`Failed to stop site: ${a}`})},className:"button-dropdown-option",style:{width:"100%",height:"36px",borderBottom:"1px solid var(--color4)"},children:"Stop site"})]})})]})},HO=()=>E.jsx(f.Suspense,{fallback:E.jsx("p",{children:"loading sites"}),children:E.jsx(VO,{})}),VO=()=>{const{data:e}=qf(),{data:t}=Yf(),{data:n}=v1(),r=e.sort((i,s)=>i.host_name.localeCompare(s.host_name)),o=t.sort((i,s)=>i.host_name.localeCompare(s.host_name));return E.jsxs(E.Fragment,{children:[r.map(i=>{var a;const s=(a=n.find(u=>u.hostname===i.host_name))==null?void 0:a.state;return E.jsx(Po,{rightIcon:E.jsx(hm,{state:s,hostname:i.host_name}),title:i.host_name,href:`/site/${i.host_name.replaceAll("http://","").replaceAll("https://","")}`,icon:null},i.host_name)}),o.map(i=>{var a;const s=(a=n.find(u=>u.hostname===i.host_name))==null?void 0:a.state;return E.jsx(Po,{rightIcon:E.jsx(hm,{state:s,hostname:i.host_name,isRemoteSite:!0}),title:i.host_name,href:`/site/${i.host_name.replaceAll("http://","").replaceAll("https://","")}`,icon:null},i.host_name)}),e.length===0&&t.length===0&&E.jsx(Po,{fontSize:".9rem",title:"NEW SITE",href:"/new-site",icon:E.jsx(WO,{})})]})},QO=()=>{const[e,t]=f.useState(!1),n=Mt(),{startSite:r,stopSite:o}=S1();return E.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0px 10px",paddingRight:"0px"},children:[E.jsx("p",{style:{opacity:.6,fontSize:".8rem",fontWeight:"bold",letterSpacing:".12rem"},children:"SITES"}),E.jsxs(Bf,{open:e,children:[E.jsx(t1,{asChild:!0,children:E.jsx("div",{className:"three-dots",onClick:()=>t(!0),children:"•••"})}),E.jsx(jl,{onInteractOutside:()=>t(!1),onClick:()=>t(!1),className:"max-w-[max-content] border bg-white text-black",children:E.jsxs("div",{style:{background:"white",marginTop:"1px",borderRadius:"4px"},children:[E.jsx("button",{onClick:()=>{n.navigate({to:"/new-site"})},className:"button-dropdown-option",style:{width:"100%",height:"36px"},children:"New site"}),E.jsx("button",{onClick:()=>{ol.promise(r.mutateAsync({hostname:"*"}),{loading:"Starting all sites..",success:"All site started!",error:i=>`Failed to start sites. ${i}`})},className:"button-dropdown-option",style:{width:"100%",borderTop:"1px solid var(--color4)",borderBottom:"1px solid var(--color4)",height:"36px"},children:"Start all sites"}),E.jsx("button",{onClick:()=>{ol.promise(o.mutateAsync({hostname:"*"}),{loading:"Stopping all sites..",success:"All site stopped!",error:i=>`Failed to stop sites. ${i}`})},className:"button-dropdown-option",style:{width:"100%",height:"36px"},children:"Stop all sites"})]})})]})]})},KO=()=>E.jsx("svg",{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24",children:E.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"m4 12 8-8 8 8M6 10.5V19a1 1 0 0 0 1 1h3v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h3a1 1 0 0 0 1-1v-8.5"})}),GO=()=>E.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",className:"icon icon-tabler icon-tabler-article",width:"24",height:"24",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[E.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),E.jsx("path",{d:"M3 4m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"}),E.jsx("path",{d:"M7 8h10"}),E.jsx("path",{d:"M7 12h10"}),E.jsx("path",{d:"M7 16h10"})]});var qO=function(){return null};const YO=new bR,ui=Hx({component:()=>E.jsx(E.Fragment,{children:E.jsxs(OR,{client:YO,children:[E.jsxs(uE,{children:[E.jsx(UO,{}),E.jsxs(BE,{children:[E.jsx(Po,{title:"Home",fontWeight:"lighter",href:"/",icon:E.jsx(KO,{})}),E.jsx(Po,{title:"Settings",fontWeight:"lighter",href:"/settings",icon:E.jsx(XR,{})}),E.jsx(Po,{title:"Logs",fontWeight:"lighter",href:"/logs",icon:E.jsx(GO,{})}),E.jsx("hr",{style:{margin:"15px 5px"}}),E.jsx(QO,{}),E.jsx(HO,{})]}),E.jsx(qR,{}),E.jsx("div",{className:"inner-content",children:E.jsx(ly,{})}),E.jsx(YR,{})]}),E.jsx(qO,{initialIsOpen:!1})]})})});var mr={},ci={},yn={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isEventSourceSupported=e.isReactNative=e.ReadyState=e.UNPARSABLE_JSON_OBJECT=e.DEFAULT_RECONNECT_INTERVAL_MS=e.DEFAULT_RECONNECT_LIMIT=e.SOCKET_IO_PING_CODE=e.SOCKET_IO_PATH=e.SOCKET_IO_PING_INTERVAL=e.DEFAULT_EVENT_SOURCE_OPTIONS=e.EMPTY_EVENT_HANDLERS=e.DEFAULT_OPTIONS=void 0;var t=1,n=1e3*t;e.DEFAULT_OPTIONS={},e.EMPTY_EVENT_HANDLERS={},e.DEFAULT_EVENT_SOURCE_OPTIONS={withCredentials:!1,events:e.EMPTY_EVENT_HANDLERS},e.SOCKET_IO_PING_INTERVAL=25*n,e.SOCKET_IO_PATH="/socket.io/?EIO=3&transport=websocket",e.SOCKET_IO_PING_CODE="2",e.DEFAULT_RECONNECT_LIMIT=20,e.DEFAULT_RECONNECT_INTERVAL_MS=5e3,e.UNPARSABLE_JSON_OBJECT={},function(o){o[o.UNINSTANTIATED=-1]="UNINSTANTIATED",o[o.CONNECTING=0]="CONNECTING",o[o.OPEN=1]="OPEN",o[o.CLOSING=2]="CLOSING",o[o.CLOSED=3]="CLOSED"}(e.ReadyState||(e.ReadyState={}));var r=function(){try{return"EventSource"in globalThis}catch{return!1}};e.isReactNative=typeof navigator<"u"&&navigator.product==="ReactNative",e.isEventSourceSupported=!e.isReactNative&&r()})(yn);var zl={},Ul={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.resetWebSockets=e.sharedWebSockets=void 0,e.sharedWebSockets={},e.resetWebSockets=function(t){if(t&&e.sharedWebSockets.hasOwnProperty(t))delete e.sharedWebSockets[t];else for(var n in e.sharedWebSockets)e.sharedWebSockets.hasOwnProperty(n)&&delete e.sharedWebSockets[n]}})(Ul);var Wl={},qt={};Object.defineProperty(qt,"__esModule",{value:!0});qt.setUpSocketIOPing=qt.appendQueryParams=qt.parseSocketIOUrl=void 0;var il=yn;qt.parseSocketIOUrl=function(e){if(e){var t=/^https|wss/.test(e),n=e.replace(/^(https?|wss?)(:\/\/)?/,""),r=n.replace(/\/$/,""),o=t?"wss":"ws";return o+"://"+r+il.SOCKET_IO_PATH}else if(e===""){var t=/^https/.test(window.location.protocol),o=t?"wss":"ws",i=window.location.port?":"+window.location.port:"";return o+"://"+window.location.hostname+i+il.SOCKET_IO_PATH}return e};qt.appendQueryParams=function(e,t){t===void 0&&(t={});var n=/\?([\w]+=[\w]+)/,r=n.test(e),o=""+Object.entries(t).reduce(function(i,s){var a=s[0],u=s[1];return i+(a+"="+u+"&")},"").slice(0,-1);return""+e+(r?"&":"?")+o};qt.setUpSocketIOPing=function(e,t){t===void 0&&(t=il.SOCKET_IO_PING_INTERVAL);var n=function(){return e(il.SOCKET_IO_PING_CODE)};return setInterval(n,t)};var or={},Bl={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.resetSubscribers=e.removeSubscriber=e.addSubscriber=e.hasSubscribers=e.getSubscribers=void 0;var t={},n=[];e.getSubscribers=function(r){return e.hasSubscribers(r)?Array.from(t[r]):n},e.hasSubscribers=function(r){var o;return((o=t[r])===null||o===void 0?void 0:o.size)>0},e.addSubscriber=function(r,o){t[r]=t[r]||new Set,t[r].add(o)},e.removeSubscriber=function(r,o){t[r].delete(o)},e.resetSubscribers=function(r){if(r&&t.hasOwnProperty(r))delete t[r];else for(var o in t)t.hasOwnProperty(o)&&delete t[o]}})(Bl);Object.defineProperty(or,"__esModule",{value:!0});or.resetGlobalState=or.assertIsWebSocket=void 0;var XO=Ul,ZO=Bl;function JO(e){if(!(e instanceof WebSocket))throw new Error("")}or.assertIsWebSocket=JO;function e2(e){ZO.resetSubscribers(e),XO.resetWebSockets(e)}or.resetGlobalState=e2;var sl=we&&we.__assign||function(){return sl=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!i||l[1]>i[0]&&l[1]0&&i[i.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!i||l[1]>i[0]&&l[1]{const[e,t]=f.useState([]);let n=window.location.hostname;window.location.port&&(n=`${n}:${window.location.port}`);const o=`ws://${n}/ws/live_logs`,{lastMessage:i,readyState:s}=O2(o);f.useEffect(()=>{if(i!==null){const u=JSON.parse(i.data);u.timestamp=new Date().toLocaleTimeString(),t(l=>[u,...l])}},[i]);const a={[mr.ReadyState.CONNECTING]:"Connecting",[mr.ReadyState.OPEN]:"Open",[mr.ReadyState.CLOSING]:"Closing",[mr.ReadyState.CLOSED]:"Closed",[mr.ReadyState.UNINSTANTIATED]:"Uninstantiated"}[s];return{messageHistory:e,connectionStatus:a}},N2=({children:e,noTopSeparator:t,noBottomSeparator:n,marginTop:r})=>E.jsxs("div",{className:"settings-section",style:{display:"flex",flexDirection:"column",gap:"20px",marginTop:r??"20px",marginBottom:"20px"},children:[!t&&E.jsx("hr",{}),e,!n&&E.jsx("hr",{})]}),wm=({title:e,subTitle:t,defaultValue:n,children:r,rowOnly:o,labelFor:i,vertical:s})=>{let a=["settings-item"];return o&&a.push("row-only"),s&&(a=["flex align-items-stretch flex-col gap-1"]),E.jsx("div",{children:E.jsxs("div",{className:a.join(" "),children:[E.jsxs("div",{style:{maxWidth:s?"100%":"400px"},children:[E.jsx("label",{htmlFor:i,style:{fontWeight:"bold",fontSize:".8rem",display:"block"},children:e}),E.jsxs("label",{htmlFor:i,style:{fontSize:".8rem",opacity:.6,display:"block"},children:[t,E.jsx("br",{}),n&&`Default: ${n}`]})]}),E.jsx("div",{style:{flexShrink:0},children:r})]})})};function L2(e){return E.jsx("svg",{viewBox:"0 0 16 16",fill:"currentColor",height:"1em",width:"1em",...e,children:E.jsx("path",{fill:"currentColor",d:"M13.5 2L6 9.5 2.5 6 0 8.5l6 6 10-10z"})})}const Yu=({checked:e,title:t,onClick:n})=>E.jsxs("div",{className:"checkbox-container",onClick:n,children:[E.jsx("label",{style:{pointerEvents:"none"},htmlFor:"use_https",children:t}),E.jsx("div",{className:"border grid border-[#ffffff24] w-[18px] h-[18px] p-[2px] rounded place-content-center",children:E.jsx(L2,{width:10,height:10,className:`${e?"opacity-100":"opacity-0"}`})})]}),T2=({hostedProcess:e,remoteSite:t})=>{const{data:n}=qf(),{data:r}=Yf(),[o,i]=f.useState((e==null?void 0:e.host_name)??(t==null?void 0:t.host_name)??"all"),{messageHistory:s}=$2(),[a,u]=f.useState(["info","warn","error"]);let l=[];return l=s.filter(c=>c.msg!==""&&(o==="all"||c.thread===o)&&a.includes(c.lvl.toLowerCase())),E.jsxs("div",{style:{paddingBottom:"40px",maxWidth:"1000px"},children:[E.jsxs(N2,{noTopSeparator:!0,noBottomSeparator:!0,children:[E.jsx(wm,{title:"Site",subTitle:"Which site do you want to see messages from",children:E.jsxs("select",{className:"text-black rounded pl-3 pr-3",onChange:c=>i(c.target.value),style:{height:"30px",width:"100%",minWidth:"200px"},defaultValue:(e==null?void 0:e.host_name)??(t==null?void 0:t.host_name)??"all",children:[E.jsx("option",{value:"all",children:"All sites"}),E.jsx("option",{value:"system",children:"System messages"}),n.map(c=>E.jsx("option",{children:c.host_name},c.host_name)),r.map(c=>E.jsx("option",{children:c.host_name},c.host_name))]})}),E.jsx(wm,{title:"Filter messages",subTitle:"Which type of messages do you want to see",children:E.jsxs("div",{style:{display:"flex",gap:"10px",marginBottom:"10px"},children:[E.jsx(Yu,{title:"Info",onClick:()=>{a.includes("info")?u(c=>[...c.filter(d=>d!=="info")]):u(c=>[...c,"info"])},checked:a.includes("info")}),E.jsx(Yu,{title:"Warning",onClick:()=>{a.includes("warn")?u(c=>[...c.filter(d=>d!=="warn")]):u(c=>[...c,"warn"])},checked:a.includes("warn")}),E.jsx(Yu,{title:"Error",onClick:()=>{a.includes("error")?u(c=>[...c.filter(d=>d!=="error")]):u(c=>[...c,"error"])},checked:a.includes("error")})]})})]}),E.jsxs("div",{style:{display:"flex",gap:"10px",padding:"0px 10px"},children:[E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center",justifySelf:"center",width:"70px",minWidth:"70px"},className:"hide-when-small",children:"LEVEL"}),E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center",width:"70px",minWidth:"70px"},children:"TIME"}),E.jsx("p",{style:{fontSize:".9rem",color:"var(--color3)",height:"40px",alignContent:"center"},children:"MESSAGE"})]}),E.jsx("div",{style:{background:"#00000033",border:"1px solid #ffffff44",borderRadius:"5px",minHeight:"50px"},children:l.map((c,d)=>E.jsxs("div",{className:"log-row",children:[E.jsx("div",{className:"hide-when-small",style:{gridRow:2+d,fontSize:".9rem",justifyContent:"stretch",alignContent:"start",alignSelf:"start",height:"100%",width:"70px",minWidth:"70px"},children:E.jsx("p",{style:{background:c.lvl==="ERROR"?"var(--color1)":c.lvl==="WARN"?"var(--color6)":"#889fae",userSelect:"none",color:"white",padding:"4px 8px",borderRadius:"8px",textTransform:"uppercase",textAlign:"center"},children:c.lvl})}),E.jsx("div",{style:{position:"relative",gridRow:2+d,fontSize:".8rem",display:"grid",justifyContent:"stretch",alignContent:"start",alignSelf:"start",height:"100%",width:"70px",minWidth:"70px"},children:E.jsx("p",{style:{padding:"4px 0px",fontSize:".9rem",alignSelf:"start",alignContent:"center"},children:c.timestamp})}),E.jsx("div",{style:{position:"relative",gridRow:2+d,fontSize:".8rem",display:"grid",justifyContent:"stretch",alignContent:"start",width:"100%",alignSelf:"start",height:"100%"},children:E.jsxs("p",{style:{padding:"4px 0px",fontSize:".9rem",alignSelf:"start",overflow:"auto"},children:[o==="all"&&E.jsx("span",{style:{color:"var(--color2)",fontWeight:"bold"},children:`[${c.thread}] `}),c.msg]})})]},`${c.timestamp}_${c.msg}`))})]})},M2=()=>E.jsxs(E.Fragment,{children:[E.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Logs"}),E.jsx(T2,{})]}),A2=Cs("/logs")({component:M2}),I2=Cs("/settings")(),j2=Cs("/new-site")(),D2=Cs("/")(),F2=Cs("/site/$siteName")(),z2=I2.update({path:"/settings",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./settings.lazy-MRsrwGn0.js"),__vite__mapDeps([0,1,2])).then(e=>e.Route)),U2=j2.update({path:"/new-site",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./new-site.lazy-DWm06qDN.js"),__vite__mapDeps([3,1,2,4])).then(e=>e.Route)),W2=A2.update({path:"/logs",getParentRoute:()=>ui}),B2=D2.update({path:"/",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./index.lazy-BfUAJxFi.js"),__vite__mapDeps([5,6])).then(e=>e.Route)),H2=F2.update({path:"/site/$siteName",getParentRoute:()=>ui}).lazy(()=>$l(()=>import("./site._siteName.lazy-CaDHN2Jl.js"),__vite__mapDeps([7,1,2,4])).then(e=>e.Route)),V2=ui.addChildren({IndexLazyRoute:B2,LogsRoute:W2,NewSiteLazyRoute:U2,SettingsLazyRoute:z2,SiteSiteNameLazyRoute:H2}),E1=Ix({routeTree:V2});E1.subscribe("onResolved",()=>{window.scrollTo({top:0,behavior:"smooth"})});const Sm=document.getElementById("root");Sm.innerHTML||Xu.createRoot(Sm).render(E.jsx(f.StrictMode,{children:E.jsx(oE,{router:E1})}));export{Dl as A,Oi as B,Yu as C,Ey as D,Y2 as E,by as F,BR as H,HR as L,Pf as P,jy as R,N2 as S,ol as _,Kf as a,Ci as b,wm as c,G2 as d,S1 as e,we as f,gs as g,v1 as h,Vr as i,E as j,Mt as k,Yf as l,qf as m,ny as n,T2 as o,lr as p,XE as q,f as r,Yn as s,Fy as t,Gf as u,BC as v,X2 as w,_y as x,nC as y,tC as z}; diff --git a/web-ui/dist/assets/index.lazy-BfUAJxFi.js b/web-ui/dist/assets/index.lazy-BfUAJxFi.js new file mode 100644 index 0000000..6234fbd --- /dev/null +++ b/web-ui/dist/assets/index.lazy-BfUAJxFi.js @@ -0,0 +1,29 @@ +import{f as Cr,g as Ua,j as Le,r as zt,d as va}from"./index-dDKJaDn2.js";function Ir(e){const t=[],n=String(e||"");let r=n.indexOf(","),u=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);const i=n.slice(u,r).trim();(i||!a)&&t.push(i),u=r+1,r=n.indexOf(",",u)}return t}function Bu(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const za=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Ya=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,qa={};function Nr(e,t){return(qa.jsx?Ya:za).test(e)}const Va=/[ \t\n\f\r]/g;function Wa(e){return typeof e=="object"?e.type==="text"?xr(e.value):!1:xr(e)}function xr(e){return e.replace(Va,"")===""}class Mt{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}Mt.prototype.property={};Mt.prototype.normal={};Mt.prototype.space=null;function Fu(e,t){const n={},r={};let u=-1;for(;++u4&&n.slice(0,4)==="data"&&Ka.test(t)){if(t.charAt(4)==="-"){const a=t.slice(5).replace(kr,Za);r="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=t.slice(4);if(!kr.test(a)){let i=a.replace($a,Ja);i.charAt(0)!=="-"&&(i="-"+i),t="data"+i}}u=Kn}return new u(r,t)}function Ja(e){return"-"+e.toLowerCase()}function Za(e){return e.charAt(1).toUpperCase()}const es={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"},wt=Fu([vu,Uu,qu,Vu,Ga],"html"),qe=Fu([vu,Uu,qu,Vu,Xa],"svg");function Rr(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Wu(e){return e.join(" ").trim()}var Qu={},Lr=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,ts=/\n/g,ns=/^\s*/,rs=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,us=/^:\s*/,is=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,as=/^[;\s]*/,ss=/^\s+|\s+$/g,os=` +`,yr="/",Or="*",Ge="",ls="comment",cs="declaration",fs=function(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 u(_){var N=_.match(ts);N&&(n+=N.length);var L=_.lastIndexOf(os);r=~L?_.length-L:r+_.length}function a(){var _={line:n,column:r};return function(N){return N.position=new i(_),c(),N}}function i(_){this.start=_,this.end={line:n,column:r},this.source=t.source}i.prototype.content=e;function o(_){var N=new Error(t.source+":"+n+":"+r+": "+_);if(N.reason=_,N.filename=t.source,N.line=n,N.column=r,N.source=e,!t.silent)throw N}function l(_){var N=_.exec(e);if(N){var L=N[0];return u(L),e=e.slice(L.length),N}}function c(){l(ns)}function h(_){var N;for(_=_||[];N=f();)N!==!1&&_.push(N);return _}function f(){var _=a();if(!(yr!=e.charAt(0)||Or!=e.charAt(1))){for(var N=2;Ge!=e.charAt(N)&&(Or!=e.charAt(N)||yr!=e.charAt(N+1));)++N;if(N+=2,Ge===e.charAt(N-1))return o("End of comment missing");var L=e.slice(2,N-2);return r+=2,u(L),e=e.slice(N),r+=2,_({type:ls,comment:L})}}function T(){var _=a(),N=l(rs);if(N){if(f(),!l(us))return o("property missing ':'");var L=l(is),x=_({type:cs,property:Dr(N[0].replace(Lr,Ge)),value:L?Dr(L[0].replace(Lr,Ge)):Ge});return l(as),x}}function E(){var _=[];h(_);for(var N;N=T();)N!==!1&&(_.push(N),h(_));return _}return c(),E()};function Dr(e){return e?e.replace(ss,Ge):Ge}var hs=Cr&&Cr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qu,"__esModule",{value:!0});var Pr=Qu.default=ms,ds=hs(fs);function ms(e,t){var n=null;if(!e||typeof e!="string")return n;var r=(0,ds.default)(e),u=typeof t=="function";return r.forEach(function(a){if(a.type==="declaration"){var i=a.property,o=a.value;u?t(i,o,a):o&&(n=n||{},n[i]=o)}}),n}const Es=Pr.default||Pr,an=ju("end"),Oe=ju("start");function ju(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 ps(e){const t=Oe(e),n=an(e);if(t&&n)return{start:t,end:n}}function It(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Mr(e.position):"start"in e||"end"in e?Mr(e):"line"in e||"column"in e?Bn(e):""}function Bn(e){return wr(e&&e.line)+":"+wr(e&&e.column)}function Mr(e){return Bn(e&&e.start)+"-"+Bn(e&&e.end)}function wr(e){return e&&typeof e=="number"?e:1}class ce extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let u="",a={},i=!1;if(n&&("line"in n&&"column"in n?a={place:n}:"start"in n&&"end"in n?a={place:n}:"type"in n?a={ancestors:[n],place:n.position}:a={...n}),typeof t=="string"?u=t:!a.cause&&t&&(i=!0,u=t.message,a.cause=t),!a.ruleId&&!a.source&&typeof r=="string"){const l=r.indexOf(":");l===-1?a.ruleId=r:(a.source=r.slice(0,l),a.ruleId=r.slice(l+1))}if(!a.place&&a.ancestors&&a.ancestors){const l=a.ancestors[a.ancestors.length-1];l&&(a.place=l.position)}const o=a.place&&"start"in a.place?a.place.start:a.place;this.ancestors=a.ancestors||void 0,this.cause=a.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file,this.message=u,this.line=o?o.line:void 0,this.name=It(a.place)||"1:1",this.place=a.place||void 0,this.reason=this.message,this.ruleId=a.ruleId||void 0,this.source=a.source||void 0,this.stack=i&&a.cause&&typeof a.cause.stack=="string"?a.cause.stack:"",this.actual,this.expected,this.note,this.url}}ce.prototype.file="";ce.prototype.name="";ce.prototype.reason="";ce.prototype.message="";ce.prototype.stack="";ce.prototype.column=void 0;ce.prototype.line=void 0;ce.prototype.ancestors=void 0;ce.prototype.cause=void 0;ce.prototype.fatal=void 0;ce.prototype.place=void 0;ce.prototype.ruleId=void 0;ce.prototype.source=void 0;const $n={}.hasOwnProperty,Ts=new Map,bs=/[A-Z]/g,gs=/-([a-z])/g,_s=new Set(["table","tbody","thead","tfoot","tr"]),As=new Set(["td","th"]),Gu="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Cs(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=ys(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=Ls(n,t.jsx,t.jsxs)}const u={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"?qe:wt,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=Xu(u,e,void 0);return a&&typeof a!="string"?a:u.create(e,u.Fragment,{children:a||void 0},void 0)}function Xu(e,t,n){if(t.type==="element")return Is(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return Ns(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return Ss(e,t,n);if(t.type==="mdxjsEsm")return xs(e,t);if(t.type==="root")return ks(e,t,n);if(t.type==="text")return Rs(e,t)}function Is(e,t,n){const r=e.schema;let u=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(u=qe,e.schema=u),e.ancestors.push(t);const a=$u(e,t.tagName,!1),i=Os(e,t);let o=Zn(e,t);return _s.has(t.tagName)&&(o=o.filter(function(l){return typeof l=="string"?!Wa(l):!0})),Ku(e,i,a,t),Jn(i,o),e.ancestors.pop(),e.schema=r,e.create(t,a,i,n)}function Ns(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)}Dt(e,t.position)}function xs(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Dt(e,t.position)}function Ss(e,t,n){const r=e.schema;let u=r;t.name==="svg"&&r.space==="html"&&(u=qe,e.schema=u),e.ancestors.push(t);const a=t.name===null?e.Fragment:$u(e,t.name,!0),i=Ds(e,t),o=Zn(e,t);return Ku(e,i,a,t),Jn(i,o),e.ancestors.pop(),e.schema=r,e.create(t,a,i,n)}function ks(e,t,n){const r={};return Jn(r,Zn(e,t)),e.create(t,e.Fragment,r,n)}function Rs(e,t){return t.value}function Ku(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function Jn(e,t){if(t.length>0){const n=t.length>1?t:t[0];n&&(e.children=n)}}function Ls(e,t,n){return r;function r(u,a,i,o){const c=Array.isArray(i.children)?n:t;return o?c(a,i,o):c(a,i)}}function ys(e,t){return n;function n(r,u,a,i){const o=Array.isArray(a.children),l=Oe(r);return t(u,a,i,o,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function Os(e,t){const n={};let r,u;for(u in t.properties)if(u!=="children"&&$n.call(t.properties,u)){const a=Ps(e,u,t.properties[u]);if(a){const[i,o]=a;e.tableCellAlignToStyle&&i==="align"&&typeof o=="string"&&As.has(t.tagName)?r=o:n[i]=o}}if(r){const a=n.style||(n.style={});a[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Ds(e,t){const n={};for(const r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){const a=r.data.estree.body[0];a.type;const i=a.expression;i.type;const o=i.properties[0];o.type,Object.assign(n,e.evaluater.evaluateExpression(o.argument))}else Dt(e,t.position);else{const u=r.name;let a;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,a=e.evaluater.evaluateExpression(o.expression)}else Dt(e,t.position);else a=r.value===null?!0:r.value;n[u]=a}return n}function Zn(e,t){const n=[];let r=-1;const u=e.passKeys?new Map:Ts;for(;++ru?0:u+t:t=t>u?u:t,n=n>0?n:0,r.length<1e4)i=Array.from(r),i.unshift(t,n),e.splice(...i);else for(n&&e.splice(t,n);a0?(ge(e,e.length,0,t),e):t}const Hr={}.hasOwnProperty;function Zu(e){const t={};let n=-1;for(;++n13&&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 Se(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const he=Ve(/[A-Za-z]/),le=Ve(/[\dA-Za-z]/),qs=Ve(/[#-'*+\--9=?A-Z^-~]/);function Jt(e){return e!==null&&(e<32||e===127)}const Fn=Ve(/\d/),Vs=Ve(/[\dA-Fa-f]/),Ws=Ve(/[!-/:-@[-`{-~]/);function F(e){return e!==null&&e<-2}function $(e){return e!==null&&(e<0||e===32)}function q(e){return e===-2||e===-1||e===32}const sn=Ve(new RegExp("\\p{P}|\\p{S}","u")),$e=Ve(/\s/);function Ve(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function ft(e){const t=[];let n=-1,r=0,u=0;for(;++n55295&&a<57344){const o=e.charCodeAt(n+1);a<56320&&o>56319&&o<57344?(i=String.fromCharCode(a,o),u=1):i="�"}else i=String.fromCharCode(a);i&&(t.push(e.slice(r,n),encodeURIComponent(i)),r=n+u+1,i=""),u&&(n+=u,u=0)}return t.join("")+e.slice(r)}function Q(e,t,n,r){const u=r?r-1:Number.POSITIVE_INFINITY;let a=0;return i;function i(l){return q(l)?(e.enter(n),o(l)):t(l)}function o(l){return q(l)&&a++i))return;const V=t.events.length;let Z=V,G,I;for(;Z--;)if(t.events[Z][0]==="exit"&&t.events[Z][1].type==="chunkFlow"){if(G){I=t.events[Z][1].end;break}G=!0}for(x(r),R=V;RP;){const U=n[H];t.containerState=U[1],U[0].exit.call(t,e)}n.length=P}function D(){u.write([null]),a=void 0,u=void 0,t.containerState._closeFlow=void 0}}function Ks(e,t,n){return Q(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Zt(e){if(e===null||$(e)||$e(e))return 1;if(sn(e))return 2}function on(e,t,n){const r=[];let u=-1;for(;++u1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const f=Object.assign({},e[r][1].end),T=Object.assign({},e[n][1].start);vr(f,-l),vr(T,l),i={type:l>1?"strongSequence":"emphasisSequence",start:f,end:Object.assign({},e[r][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[n][1].start),end:T},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},u={type:l>1?"strong":"emphasis",start:Object.assign({},i.start),end:Object.assign({},o.end)},e[r][1].end=Object.assign({},i.start),e[n][1].start=Object.assign({},o.end),c=[],e[r][1].end.offset-e[r][1].start.offset&&(c=be(c,[["enter",e[r][1],t],["exit",e[r][1],t]])),c=be(c,[["enter",u,t],["enter",i,t],["exit",i,t],["enter",a,t]]),c=be(c,on(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),c=be(c,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",u,t]]),e[n][1].end.offset-e[n][1].start.offset?(h=2,c=be(c,[["enter",e[n][1],t],["exit",e[n][1],t]])):h=0,ge(e,r-1,n-r+3,c),n=r+c.length-h-2;break}}for(n=-1;++n0&&q(R)?Q(e,D,"linePrefix",a+1)(R):D(R)}function D(R){return R===null||F(R)?e.check(zr,N,H)(R):(e.enter("codeFlowValue"),P(R))}function P(R){return R===null||F(R)?(e.exit("codeFlowValue"),D(R)):(e.consume(R),P)}function H(R){return e.exit("codeFenced"),t(R)}function U(R,V,Z){let G=0;return I;function I(j){return R.enter("lineEnding"),R.consume(j),R.exit("lineEnding"),w}function w(j){return R.enter("codeFencedFence"),q(j)?Q(R,B,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):B(j)}function B(j){return j===o?(R.enter("codeFencedFenceSequence"),X(j)):Z(j)}function X(j){return j===o?(G++,R.consume(j),X):G>=i?(R.exit("codeFencedFenceSequence"),q(j)?Q(R,te,"whitespace")(j):te(j)):Z(j)}function te(j){return j===null||F(j)?(R.exit("codeFencedFence"),V(j)):Z(j)}}}function oo(e,t,n){const r=this;return u;function u(i){return i===null?n(i):(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),a)}function a(i){return r.parser.lazy[r.now().line]?n(i):t(i)}}const gn={name:"codeIndented",tokenize:co},lo={tokenize:fo,partial:!0};function co(e,t,n){const r=this;return u;function u(c){return e.enter("codeIndented"),Q(e,a,"linePrefix",5)(c)}function a(c){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?i(c):n(c)}function i(c){return c===null?l(c):F(c)?e.attempt(lo,i,l)(c):(e.enter("codeFlowValue"),o(c))}function o(c){return c===null||F(c)?(e.exit("codeFlowValue"),i(c)):(e.consume(c),o)}function l(c){return e.exit("codeIndented"),t(c)}}function fo(e,t,n){const r=this;return u;function u(i){return r.parser.lazy[r.now().line]?n(i):F(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),u):Q(e,a,"linePrefix",5)(i)}function a(i){const o=r.events[r.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(i):F(i)?u(i):n(i)}}const ho={name:"codeText",tokenize:po,resolve:mo,previous:Eo};function mo(e){let t=e.length-4,n=3,r,u;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=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 tthis.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 u=n||0;this.setCursor(Math.trunc(t));const a=this.right.splice(this.right.length-u,Number.POSITIVE_INFINITY);return r&&bt(this.left,r),a.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),bt(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),bt(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=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function ii(e,t,n,r,u,a,i,o,l){const c=l||Number.POSITIVE_INFINITY;let h=0;return f;function f(x){return x===60?(e.enter(r),e.enter(u),e.enter(a),e.consume(x),e.exit(a),T):x===null||x===32||x===41||Jt(x)?n(x):(e.enter(r),e.enter(i),e.enter(o),e.enter("chunkString",{contentType:"string"}),N(x))}function T(x){return x===62?(e.enter(a),e.consume(x),e.exit(a),e.exit(u),e.exit(r),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),E(x))}function E(x){return x===62?(e.exit("chunkString"),e.exit(o),T(x)):x===null||x===60||F(x)?n(x):(e.consume(x),x===92?_:E)}function _(x){return x===60||x===62||x===92?(e.consume(x),E):E(x)}function N(x){return!h&&(x===null||x===41||$(x))?(e.exit("chunkString"),e.exit(o),e.exit(i),e.exit(r),t(x)):h999||E===null||E===91||E===93&&!l||E===94&&!o&&"_hiddenFootnoteSupport"in i.parser.constructs?n(E):E===93?(e.exit(a),e.enter(u),e.consume(E),e.exit(u),e.exit(r),t):F(E)?(e.enter("lineEnding"),e.consume(E),e.exit("lineEnding"),h):(e.enter("chunkString",{contentType:"string"}),f(E))}function f(E){return E===null||E===91||E===93||F(E)||o++>999?(e.exit("chunkString"),h(E)):(e.consume(E),l||(l=!q(E)),E===92?T:f)}function T(E){return E===91||E===92||E===93?(e.consume(E),o++,f):f(E)}}function si(e,t,n,r,u,a){let i;return o;function o(T){return T===34||T===39||T===40?(e.enter(r),e.enter(u),e.consume(T),e.exit(u),i=T===40?41:T,l):n(T)}function l(T){return T===i?(e.enter(u),e.consume(T),e.exit(u),e.exit(r),t):(e.enter(a),c(T))}function c(T){return T===i?(e.exit(a),l(i)):T===null?n(T):F(T)?(e.enter("lineEnding"),e.consume(T),e.exit("lineEnding"),Q(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),h(T))}function h(T){return T===i||T===null||F(T)?(e.exit("chunkString"),c(T)):(e.consume(T),T===92?f:h)}function f(T){return T===i||T===92?(e.consume(T),h):h(T)}}function Nt(e,t){let n;return r;function r(u){return F(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),n=!0,r):q(u)?Q(e,r,n?"linePrefix":"lineSuffix")(u):t(u)}}const No={name:"definition",tokenize:So},xo={tokenize:ko,partial:!0};function So(e,t,n){const r=this;let u;return a;function a(E){return e.enter("definition"),i(E)}function i(E){return ai.call(r,e,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(E)}function o(E){return u=Se(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),E===58?(e.enter("definitionMarker"),e.consume(E),e.exit("definitionMarker"),l):n(E)}function l(E){return $(E)?Nt(e,c)(E):c(E)}function c(E){return ii(e,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(E)}function h(E){return e.attempt(xo,f,f)(E)}function f(E){return q(E)?Q(e,T,"whitespace")(E):T(E)}function T(E){return E===null||F(E)?(e.exit("definition"),r.parser.defined.push(u),t(E)):n(E)}}function ko(e,t,n){return r;function r(o){return $(o)?Nt(e,u)(o):n(o)}function u(o){return si(e,a,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function a(o){return q(o)?Q(e,i,"whitespace")(o):i(o)}function i(o){return o===null||F(o)?t(o):n(o)}}const Ro={name:"hardBreakEscape",tokenize:Lo};function Lo(e,t,n){return r;function r(a){return e.enter("hardBreakEscape"),e.consume(a),u}function u(a){return F(a)?(e.exit("hardBreakEscape"),t(a)):n(a)}}const yo={name:"headingAtx",tokenize:Do,resolve:Oo};function Oo(e,t){let n=e.length-2,r=3,u,a;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&&(u={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},a={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},ge(e,r,n-r+1,[["enter",u,t],["enter",a,t],["exit",a,t],["exit",u,t]])),e}function Do(e,t,n){let r=0;return u;function u(h){return e.enter("atxHeading"),a(h)}function a(h){return e.enter("atxHeadingSequence"),i(h)}function i(h){return h===35&&r++<6?(e.consume(h),i):h===null||$(h)?(e.exit("atxHeadingSequence"),o(h)):n(h)}function o(h){return h===35?(e.enter("atxHeadingSequence"),l(h)):h===null||F(h)?(e.exit("atxHeading"),t(h)):q(h)?Q(e,o,"whitespace")(h):(e.enter("atxHeadingText"),c(h))}function l(h){return h===35?(e.consume(h),l):(e.exit("atxHeadingSequence"),o(h))}function c(h){return h===null||h===35||$(h)?(e.exit("atxHeadingText"),o(h)):(e.consume(h),c)}}const Po=["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"],qr=["pre","script","style","textarea"],Mo={name:"htmlFlow",tokenize:Ho,resolveTo:Fo,concrete:!0},wo={tokenize:vo,partial:!0},Bo={tokenize:Uo,partial:!0};function Fo(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 Ho(e,t,n){const r=this;let u,a,i,o,l;return c;function c(g){return h(g)}function h(g){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(g),f}function f(g){return g===33?(e.consume(g),T):g===47?(e.consume(g),a=!0,N):g===63?(e.consume(g),u=3,r.interrupt?t:b):he(g)?(e.consume(g),i=String.fromCharCode(g),L):n(g)}function T(g){return g===45?(e.consume(g),u=2,E):g===91?(e.consume(g),u=5,o=0,_):he(g)?(e.consume(g),u=4,r.interrupt?t:b):n(g)}function E(g){return g===45?(e.consume(g),r.interrupt?t:b):n(g)}function _(g){const Ie="CDATA[";return g===Ie.charCodeAt(o++)?(e.consume(g),o===Ie.length?r.interrupt?t:B:_):n(g)}function N(g){return he(g)?(e.consume(g),i=String.fromCharCode(g),L):n(g)}function L(g){if(g===null||g===47||g===62||$(g)){const Ie=g===47,We=i.toLowerCase();return!Ie&&!a&&qr.includes(We)?(u=1,r.interrupt?t(g):B(g)):Po.includes(i.toLowerCase())?(u=6,Ie?(e.consume(g),x):r.interrupt?t(g):B(g)):(u=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(g):a?D(g):P(g))}return g===45||le(g)?(e.consume(g),i+=String.fromCharCode(g),L):n(g)}function x(g){return g===62?(e.consume(g),r.interrupt?t:B):n(g)}function D(g){return q(g)?(e.consume(g),D):I(g)}function P(g){return g===47?(e.consume(g),I):g===58||g===95||he(g)?(e.consume(g),H):q(g)?(e.consume(g),P):I(g)}function H(g){return g===45||g===46||g===58||g===95||le(g)?(e.consume(g),H):U(g)}function U(g){return g===61?(e.consume(g),R):q(g)?(e.consume(g),U):P(g)}function R(g){return g===null||g===60||g===61||g===62||g===96?n(g):g===34||g===39?(e.consume(g),l=g,V):q(g)?(e.consume(g),R):Z(g)}function V(g){return g===l?(e.consume(g),l=null,G):g===null||F(g)?n(g):(e.consume(g),V)}function Z(g){return g===null||g===34||g===39||g===47||g===60||g===61||g===62||g===96||$(g)?U(g):(e.consume(g),Z)}function G(g){return g===47||g===62||q(g)?P(g):n(g)}function I(g){return g===62?(e.consume(g),w):n(g)}function w(g){return g===null||F(g)?B(g):q(g)?(e.consume(g),w):n(g)}function B(g){return g===45&&u===2?(e.consume(g),oe):g===60&&u===1?(e.consume(g),ae):g===62&&u===4?(e.consume(g),Ce):g===63&&u===3?(e.consume(g),b):g===93&&u===5?(e.consume(g),Pe):F(g)&&(u===6||u===7)?(e.exit("htmlFlowData"),e.check(wo,Me,X)(g)):g===null||F(g)?(e.exit("htmlFlowData"),X(g)):(e.consume(g),B)}function X(g){return e.check(Bo,te,Me)(g)}function te(g){return e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),j}function j(g){return g===null||F(g)?X(g):(e.enter("htmlFlowData"),B(g))}function oe(g){return g===45?(e.consume(g),b):B(g)}function ae(g){return g===47?(e.consume(g),i="",Ae):B(g)}function Ae(g){if(g===62){const Ie=i.toLowerCase();return qr.includes(Ie)?(e.consume(g),Ce):B(g)}return he(g)&&i.length<8?(e.consume(g),i+=String.fromCharCode(g),Ae):B(g)}function Pe(g){return g===93?(e.consume(g),b):B(g)}function b(g){return g===62?(e.consume(g),Ce):g===45&&u===2?(e.consume(g),b):B(g)}function Ce(g){return g===null||F(g)?(e.exit("htmlFlowData"),Me(g)):(e.consume(g),Ce)}function Me(g){return e.exit("htmlFlow"),t(g)}}function Uo(e,t,n){const r=this;return u;function u(i){return F(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),a):n(i)}function a(i){return r.parser.lazy[r.now().line]?n(i):t(i)}}function vo(e,t,n){return r;function r(u){return e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),e.attempt(Bt,t,n)}}const zo={name:"htmlText",tokenize:Yo};function Yo(e,t,n){const r=this;let u,a,i;return o;function o(b){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(b),l}function l(b){return b===33?(e.consume(b),c):b===47?(e.consume(b),U):b===63?(e.consume(b),P):he(b)?(e.consume(b),Z):n(b)}function c(b){return b===45?(e.consume(b),h):b===91?(e.consume(b),a=0,_):he(b)?(e.consume(b),D):n(b)}function h(b){return b===45?(e.consume(b),E):n(b)}function f(b){return b===null?n(b):b===45?(e.consume(b),T):F(b)?(i=f,ae(b)):(e.consume(b),f)}function T(b){return b===45?(e.consume(b),E):f(b)}function E(b){return b===62?oe(b):b===45?T(b):f(b)}function _(b){const Ce="CDATA[";return b===Ce.charCodeAt(a++)?(e.consume(b),a===Ce.length?N:_):n(b)}function N(b){return b===null?n(b):b===93?(e.consume(b),L):F(b)?(i=N,ae(b)):(e.consume(b),N)}function L(b){return b===93?(e.consume(b),x):N(b)}function x(b){return b===62?oe(b):b===93?(e.consume(b),x):N(b)}function D(b){return b===null||b===62?oe(b):F(b)?(i=D,ae(b)):(e.consume(b),D)}function P(b){return b===null?n(b):b===63?(e.consume(b),H):F(b)?(i=P,ae(b)):(e.consume(b),P)}function H(b){return b===62?oe(b):P(b)}function U(b){return he(b)?(e.consume(b),R):n(b)}function R(b){return b===45||le(b)?(e.consume(b),R):V(b)}function V(b){return F(b)?(i=V,ae(b)):q(b)?(e.consume(b),V):oe(b)}function Z(b){return b===45||le(b)?(e.consume(b),Z):b===47||b===62||$(b)?G(b):n(b)}function G(b){return b===47?(e.consume(b),oe):b===58||b===95||he(b)?(e.consume(b),I):F(b)?(i=G,ae(b)):q(b)?(e.consume(b),G):oe(b)}function I(b){return b===45||b===46||b===58||b===95||le(b)?(e.consume(b),I):w(b)}function w(b){return b===61?(e.consume(b),B):F(b)?(i=w,ae(b)):q(b)?(e.consume(b),w):G(b)}function B(b){return b===null||b===60||b===61||b===62||b===96?n(b):b===34||b===39?(e.consume(b),u=b,X):F(b)?(i=B,ae(b)):q(b)?(e.consume(b),B):(e.consume(b),te)}function X(b){return b===u?(e.consume(b),u=void 0,j):b===null?n(b):F(b)?(i=X,ae(b)):(e.consume(b),X)}function te(b){return b===null||b===34||b===39||b===60||b===61||b===96?n(b):b===47||b===62||$(b)?G(b):(e.consume(b),te)}function j(b){return b===47||b===62||$(b)?G(b):n(b)}function oe(b){return b===62?(e.consume(b),e.exit("htmlTextData"),e.exit("htmlText"),t):n(b)}function ae(b){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(b),e.exit("lineEnding"),Ae}function Ae(b){return q(b)?Q(e,Pe,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(b):Pe(b)}function Pe(b){return e.enter("htmlTextData"),i(b)}}const nr={name:"labelEnd",tokenize:Go,resolveTo:jo,resolveAll:Qo},qo={tokenize:Xo},Vo={tokenize:Ko},Wo={tokenize:$o};function Qo(e){let t=-1;for(;++t=3&&(c===null||F(c))?(e.exit("thematicBreak"),t(c)):n(c)}function l(c){return c===u?(e.consume(c),r++,l):(e.exit("thematicBreakSequence"),q(c)?Q(e,o,"whitespace")(c):o(c))}}const me={name:"list",tokenize:al,continuation:{tokenize:sl},exit:ll},ul={tokenize:cl,partial:!0},il={tokenize:ol,partial:!0};function al(e,t,n){const r=this,u=r.events[r.events.length-1];let a=u&&u[1].type==="linePrefix"?u[2].sliceSerialize(u[1],!0).length:0,i=0;return o;function o(E){const _=r.containerState.type||(E===42||E===43||E===45?"listUnordered":"listOrdered");if(_==="listUnordered"?!r.containerState.marker||E===r.containerState.marker:Fn(E)){if(r.containerState.type||(r.containerState.type=_,e.enter(_,{_container:!0})),_==="listUnordered")return e.enter("listItemPrefix"),E===42||E===45?e.check(Gt,n,c)(E):c(E);if(!r.interrupt||E===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(E)}return n(E)}function l(E){return Fn(E)&&++i<10?(e.consume(E),l):(!r.interrupt||i<2)&&(r.containerState.marker?E===r.containerState.marker:E===41||E===46)?(e.exit("listItemValue"),c(E)):n(E)}function c(E){return e.enter("listItemMarker"),e.consume(E),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||E,e.check(Bt,r.interrupt?n:h,e.attempt(ul,T,f))}function h(E){return r.containerState.initialBlankLine=!0,a++,T(E)}function f(E){return q(E)?(e.enter("listItemPrefixWhitespace"),e.consume(E),e.exit("listItemPrefixWhitespace"),T):n(E)}function T(E){return r.containerState.size=a+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(E)}}function sl(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Bt,u,a);function u(o){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Q(e,t,"listItemIndent",r.containerState.size+1)(o)}function a(o){return r.containerState.furtherBlankLines||!q(o)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,i(o)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(il,t,i)(o))}function i(o){return r.containerState._closeFlow=!0,r.interrupt=void 0,Q(e,e.attempt(me,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function ol(e,t,n){const r=this;return Q(e,u,"listItemIndent",r.containerState.size+1);function u(a){const i=r.events[r.events.length-1];return i&&i[1].type==="listItemIndent"&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(a):n(a)}}function ll(e){e.exit(this.containerState.type)}function cl(e,t,n){const r=this;return Q(e,u,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function u(a){const i=r.events[r.events.length-1];return!q(a)&&i&&i[1].type==="listItemPrefixWhitespace"?t(a):n(a)}}const Vr={name:"setextUnderline",tokenize:hl,resolveTo:fl};function fl(e,t){let n=e.length,r,u,a;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(u=n)}else e[n][1].type==="content"&&e.splice(n,1),!a&&e[n][1].type==="definition"&&(a=n);const i={type:"setextHeading",start:Object.assign({},e[u][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[u][1].type="setextHeadingText",a?(e.splice(u,0,["enter",i,t]),e.splice(a+1,0,["exit",e[r][1],t]),e[r][1].end=Object.assign({},e[a][1].end)):e[r][1]=i,e.push(["exit",i,t]),e}function hl(e,t,n){const r=this;let u;return a;function a(c){let h=r.events.length,f;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){f=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||f)?(e.enter("setextHeadingLine"),u=c,i(c)):n(c)}function i(c){return e.enter("setextHeadingLineSequence"),o(c)}function o(c){return c===u?(e.consume(c),o):(e.exit("setextHeadingLineSequence"),q(c)?Q(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||F(c)?(e.exit("setextHeadingLine"),t(c)):n(c)}}const dl={tokenize:ml};function ml(e){const t=this,n=e.attempt(Bt,r,e.attempt(this.parser.constructs.flowInitial,u,Q(e,e.attempt(this.parser.constructs.flow,u,e.attempt(go,u)),"linePrefix")));return n;function r(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function u(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const El={resolveAll:li()},pl=oi("string"),Tl=oi("text");function oi(e){return{tokenize:t,resolveAll:li(e==="text"?bl:void 0)};function t(n){const r=this,u=this.parser.constructs[e],a=n.attempt(u,i,o);return i;function i(h){return c(h)?a(h):o(h)}function o(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),l}function l(h){return c(h)?(n.exit("data"),a(h)):(n.consume(h),l)}function c(h){if(h===null)return!0;const f=u[h];let T=-1;if(f)for(;++T-1){const o=i[0];typeof o=="string"?i[0]=o.slice(r):i.shift()}a>0&&i.push(e[u].slice(0,a))}return i}function Al(e,t){let n=-1;const r=[];let u;for(;++n0){const Ne=v.tokenStack[v.tokenStack.length-1];(Ne[1]||Qr).call(v,void 0,Ne[0])}for(M.position={start:Ue(k.length>0?k[0][1].start:{line:1,column:1,offset:0}),end:Ue(k.length>0?k[k.length-2][1].end:{line:1,column:1,offset:0})},K=-1;++K1?"-"+o:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(i)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Gl(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 Xl(e,t){if(e.options.allowDangerousHtml){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}}function hi(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 u=e.all(t),a=u[0];a&&a.type==="text"?a.value="["+a.value:u.unshift({type:"text",value:"["});const i=u[u.length-1];return i&&i.type==="text"?i.value+=r:u.push({type:"text",value:r}),u}function Kl(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return hi(e,t);const u={src:ft(r.url||""),alt:t.alt};r.title!==null&&r.title!==void 0&&(u.title=r.title);const a={type:"element",tagName:"img",properties:u,children:[]};return e.patch(t,a),e.applyData(t,a)}function $l(e,t){const n={src:ft(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 Jl(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 Zl(e,t){const n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return hi(e,t);const u={href:ft(r.url||"")};r.title!==null&&r.title!==void 0&&(u.title=r.title);const a={type:"element",tagName:"a",properties:u,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function ec(e,t){const n={href:ft(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 tc(e,t,n){const r=e.all(t),u=n?nc(n):di(t),a={},i=[];if(typeof t.checked=="boolean"){const h=r[0];let f;h&&h.type==="element"&&h.tagName==="p"?f=h:(f={type:"element",tagName:"p",properties:{},children:[]},r.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),a.className=["task-list-item"]}let o=-1;for(;++o1}function rc(e,t){const n={},r=e.all(t);let u=-1;for(typeof t.start=="number"&&t.start!==1&&(n.start=t.start);++u0){const i={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},o=Oe(t.children[1]),l=an(t.children[t.children.length-1]);o&&l&&(i.position={start:o,end:l}),u.push(i)}const a={type:"element",tagName:"table",properties:{},children:e.wrap(u,!0)};return e.patch(t,a),e.applyData(t,a)}function oc(e,t,n){const r=n?n.children:void 0,a=(r?r.indexOf(t):1)===0?"th":"td",i=n&&n.type==="table"?n.align:void 0,o=i?i.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),r[0]),u=r.index+r[0].length,r=n.exec(t);return a.push(Xr(t.slice(u),u>0,!1)),a.join("")}function Xr(e,t,n){let r=0,u=e.length;if(t){let a=e.codePointAt(r);for(;a===jr||a===Gr;)r++,a=e.codePointAt(r)}if(n){let a=e.codePointAt(u-1);for(;a===jr||a===Gr;)u--,a=e.codePointAt(u-1)}return u>r?e.slice(r,u):""}function fc(e,t){const n={type:"text",value:cc(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function hc(e,t){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}const dc={blockquote:Yl,break:ql,code:Vl,delete:Wl,emphasis:Ql,footnoteReference:jl,heading:Gl,html:Xl,imageReference:Kl,image:$l,inlineCode:Jl,linkReference:Zl,link:ec,listItem:tc,list:rc,paragraph:uc,root:ic,strong:ac,table:sc,tableCell:lc,tableRow:oc,text:fc,thematicBreak:hc,toml:Yt,yaml:Yt,definition:Yt,footnoteDefinition:Yt};function Yt(){}const mi=-1,ln=0,en=1,tn=2,rr=3,ur=4,ir=5,ar=6,Ei=7,pi=8,Kr=typeof self=="object"?self:globalThis,mc=(e,t)=>{const n=(u,a)=>(e.set(a,u),u),r=u=>{if(e.has(u))return e.get(u);const[a,i]=t[u];switch(a){case ln:case mi:return n(i,u);case en:{const o=n([],u);for(const l of i)o.push(r(l));return o}case tn:{const o=n({},u);for(const[l,c]of i)o[r(l)]=r(c);return o}case rr:return n(new Date(i),u);case ur:{const{source:o,flags:l}=i;return n(new RegExp(o,l),u)}case ir:{const o=n(new Map,u);for(const[l,c]of i)o.set(r(l),r(c));return o}case ar:{const o=n(new Set,u);for(const l of i)o.add(r(l));return o}case Ei:{const{name:o,message:l}=i;return n(new Kr[o](l),u)}case pi:return n(BigInt(i),u);case"BigInt":return n(Object(BigInt(i)),u)}return n(new Kr[a](i),u)};return r},$r=e=>mc(new Map,e)(0),rt="",{toString:Ec}={},{keys:pc}=Object,gt=e=>{const t=typeof e;if(t!=="object"||!e)return[ln,t];const n=Ec.call(e).slice(8,-1);switch(n){case"Array":return[en,rt];case"Object":return[tn,rt];case"Date":return[rr,rt];case"RegExp":return[ur,rt];case"Map":return[ir,rt];case"Set":return[ar,rt]}return n.includes("Array")?[en,n]:n.includes("Error")?[Ei,n]:[tn,n]},qt=([e,t])=>e===ln&&(t==="function"||t==="symbol"),Tc=(e,t,n,r)=>{const u=(i,o)=>{const l=r.push(i)-1;return n.set(o,l),l},a=i=>{if(n.has(i))return n.get(i);let[o,l]=gt(i);switch(o){case ln:{let h=i;switch(l){case"bigint":o=pi,h=i.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);h=null;break;case"undefined":return u([mi],i)}return u([o,h],i)}case en:{if(l)return u([l,[...i]],i);const h=[],f=u([o,h],i);for(const T of i)h.push(a(T));return f}case tn:{if(l)switch(l){case"BigInt":return u([l,i.toString()],i);case"Boolean":case"Number":case"String":return u([l,i.valueOf()],i)}if(t&&"toJSON"in i)return a(i.toJSON());const h=[],f=u([o,h],i);for(const T of pc(i))(e||!qt(gt(i[T])))&&h.push([a(T),a(i[T])]);return f}case rr:return u([o,i.toISOString()],i);case ur:{const{source:h,flags:f}=i;return u([o,{source:h,flags:f}],i)}case ir:{const h=[],f=u([o,h],i);for(const[T,E]of i)(e||!(qt(gt(T))||qt(gt(E))))&&h.push([a(T),a(E)]);return f}case ar:{const h=[],f=u([o,h],i);for(const T of i)(e||!qt(gt(T)))&&h.push(a(T));return f}}const{message:c}=i;return u([o,{name:l,message:c}],i)};return a},Jr=(e,{json:t,lossy:n}={})=>{const r=[];return Tc(!(t||n),!!t,new Map,r)(e),r},ot=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?$r(Jr(e,t)):structuredClone(e):(e,t)=>$r(Jr(e,t));function bc(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 gc(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function _c(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=e.options.footnoteBackContent||bc,r=e.options.footnoteBackLabel||gc,u=e.options.footnoteLabel||"Footnotes",a=e.options.footnoteLabelTagName||"h2",i=e.options.footnoteLabelProperties||{className:["sr-only"]},o=[];let l=-1;for(;++l0&&_.push({type:"text",value:" "});let D=typeof n=="string"?n:n(l,E);typeof D=="string"&&(D={type:"text",value:D}),_.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+T+(E>1?"-"+E:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(l,E),className:["data-footnote-backref"]},children:Array.isArray(D)?D:[D]})}const L=h[h.length-1];if(L&&L.type==="element"&&L.tagName==="p"){const D=L.children[L.children.length-1];D&&D.type==="text"?D.value+=" ":L.children.push({type:"text",value:" "}),L.children.push(..._)}else h.push(..._);const x={type:"element",tagName:"li",properties:{id:t+"fn-"+T},children:e.wrap(h,!0)};e.patch(c,x),o.push(x)}if(o.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:a,properties:{...ot(i),id:"footnote-label"},children:[{type:"text",value:u}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(o,!0)},{type:"text",value:` +`}]}}const cn=function(e){if(e==null)return Nc;if(typeof e=="function")return fn(e);if(typeof e=="object")return Array.isArray(e)?Ac(e):Cc(e);if(typeof e=="string")return Ic(e);throw new Error("Expected function, string, or object as test")};function Ac(e){const t=[];let n=-1;for(;++n":""))+")"})}return T;function T(){let E=Ti,_,N,L;if((!t||a(l,c,h[h.length-1]||void 0))&&(E=Rc(n(l,h)),E[0]===Un))return E;if("children"in l&&l.children){const x=l;if(x.children&&E[0]!==kc)for(N=(r?x.children.length:-1)+i,L=h.concat(x);N>-1&&N0&&n.push({type:"text",value:` +`}),n}function Zr(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function eu(e,t){const n=yc(e,t),r=n.one(e,void 0),u=_c(n),a=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return u&&a.children.push({type:"text",value:` +`},u),a}function wc(e,t){return e&&"run"in e?async function(n,r){const u=eu(n,{file:r,...t});await e.run(u,r)}:function(n,r){return eu(n,{file:r,...e||t})}}function tu(e){if(e)throw e}var Xt=Object.prototype.hasOwnProperty,gi=Object.prototype.toString,nu=Object.defineProperty,ru=Object.getOwnPropertyDescriptor,uu=function(t){return typeof Array.isArray=="function"?Array.isArray(t):gi.call(t)==="[object Array]"},iu=function(t){if(!t||gi.call(t)!=="[object Object]")return!1;var n=Xt.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&Xt.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var u;for(u in t);return typeof u>"u"||Xt.call(t,u)},au=function(t,n){nu&&n.name==="__proto__"?nu(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},su=function(t,n){if(n==="__proto__")if(Xt.call(t,n)){if(ru)return ru(t,n).value}else return;return t[n]},Bc=function e(){var t,n,r,u,a,i,o=arguments[0],l=1,c=arguments.length,h=!1;for(typeof o=="boolean"&&(h=o,o=arguments[1]||{},l=2),(o==null||typeof o!="object"&&typeof o!="function")&&(o={});li.length;let l;o&&i.push(u);try{l=e.apply(this,i)}catch(c){const h=c;if(o&&n)throw h;return u(h)}o||(l&&l.then&&typeof l.then=="function"?l.then(a,u):l instanceof Error?u(l):a(l))}function u(i,...o){n||(n=!0,t(i,...o))}function a(i){u(null,i)}}const Re={basename:Uc,dirname:vc,extname:zc,join:Yc,sep:"/"};function Uc(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Ft(e);let n=0,r=-1,u=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;u--;)if(e.codePointAt(u)===47){if(a){n=u+1;break}}else r<0&&(a=!0,r=u+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let i=-1,o=t.length-1;for(;u--;)if(e.codePointAt(u)===47){if(a){n=u+1;break}}else i<0&&(a=!0,i=u+1),o>-1&&(e.codePointAt(u)===t.codePointAt(o--)?o<0&&(r=u):(o=-1,r=i));return n===r?r=i:r<0&&(r=e.length),e.slice(n,r)}function vc(e){if(Ft(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 zc(e){Ft(e);let t=e.length,n=-1,r=0,u=-1,a=0,i;for(;t--;){const o=e.codePointAt(t);if(o===47){if(i){r=t+1;break}continue}n<0&&(i=!0,n=t+1),o===46?u<0?u=t:a!==1&&(a=1):u>-1&&(a=-1)}return u<0||n<0||a===0||a===1&&u===n-1&&u===r+1?"":e.slice(u,n)}function Yc(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function Vc(e,t){let n="",r=0,u=-1,a=0,i=-1,o,l;for(;++i<=e.length;){if(i2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",r=0):(n=n.slice(0,l),r=n.length-1-n.lastIndexOf("/")),u=i,a=0;continue}}else if(n.length>0){n="",r=0,u=i,a=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(u+1,i):n=e.slice(u+1,i),r=i-u-1;u=i,a=0}else o===46&&a>-1?a++:a=-1}return n}function Ft(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Wc={cwd:Qc};function Qc(){return"/"}function Yn(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function jc(e){if(typeof e=="string")e=new URL(e);else if(!Yn(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 Gc(e)}function Gc(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(;++n0){let[E,..._]=h;const N=r[T][1];zn(N)&&zn(E)&&(E=An(!0,N,E)),r[T]=[c,E,..._]}}}}const Jc=new sr().freeze();function xn(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Sn(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function kn(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 lu(e){if(!zn(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function cu(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Vt(e){return Zc(e)?e:new _i(e)}function Zc(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function e0(e){return typeof e=="string"||t0(e)}function t0(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const n0="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",fu=[],hu={allowDangerousHtml:!0},r0=/^(https?|ircs?|mailto|xmpp)$/i,u0=[{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:"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 i0(e){const t=e.allowedElements,n=e.allowElement,r=e.children||"",u=e.className,a=e.components,i=e.disallowedElements,o=e.rehypePlugins||fu,l=e.remarkPlugins||fu,c=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...hu}:hu,h=e.skipHtml,f=e.unwrapDisallowed,T=e.urlTransform||a0,E=Jc().use(zl).use(l).use(wc,c).use(o),_=new _i;typeof r=="string"&&(_.value=r);for(const D of u0)Object.hasOwn(e,D.from)&&(""+D.from+(D.to?"use `"+D.to+"` instead":"remove it")+n0+D.id,void 0);const N=E.parse(_);let L=E.runSync(N,_);return u&&(L={type:"element",tagName:"div",properties:{className:u},children:L.type==="root"?L.children:[L]}),hn(L,x),Cs(L,{Fragment:Le.Fragment,components:a,ignoreInvalidStyle:!0,jsx:Le.jsx,jsxs:Le.jsxs,passKeys:!0,passNode:!0});function x(D,P,H){if(D.type==="raw"&&H&&typeof P=="number")return h?H.children.splice(P,1):H.children[P]={type:"text",value:D.value},P;if(D.type==="element"){let U;for(U in bn)if(Object.hasOwn(bn,U)&&Object.hasOwn(D.properties,U)){const R=D.properties[U],V=bn[U];(V===null||V.includes(D.tagName))&&(D.properties[U]=T(String(R||""),U,D))}}if(D.type==="element"){let U=t?!t.includes(D.tagName):i?i.includes(D.tagName):!1;if(!U&&n&&typeof P=="number"&&(U=!n(D,P,H)),U&&H&&typeof P=="number")return f&&D.children?H.children.splice(P,1,...D.children):H.children.splice(P,1),P}}}function a0(e){const t=e.indexOf(":"),n=e.indexOf("?"),r=e.indexOf("#"),u=e.indexOf("/");return t<0||u>-1&&t>u||n>-1&&t>n||r>-1&&t>r||r0.test(e.slice(0,t))?e:""}function du(e,t){const n=String(e);if(typeof t!="string")throw new TypeError("Expected character");let r=0,u=n.indexOf(t);for(;u!==-1;)r++,u=n.indexOf(t,u+t.length);return r}function s0(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function o0(e,t,n){const u=cn((n||{}).ignore||[]),a=l0(t);let i=-1;for(;++i0?{type:"text",value:R}:void 0),R===!1?T.lastIndex=H+1:(_!==H&&D.push({type:"text",value:c.value.slice(_,H)}),Array.isArray(R)?D.push(...R):R&&D.push(R),_=H+P[0].length,x=!0),!T.global)break;P=T.exec(c.value)}return x?(_?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(")");const u=du(e,"(");let a=du(e,")");for(;r!==-1&&u>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),a++;return[e,n]}function Ai(e,t){const n=e.input.charCodeAt(e.index-1);return(e.index===0||$e(n)||sn(n))&&(!t||n!==47)}Ci.peek=M0;function N0(){return{enter:{gfmFootnoteDefinition:S0,gfmFootnoteDefinitionLabelString:k0,gfmFootnoteCall:y0,gfmFootnoteCallString:O0},exit:{gfmFootnoteDefinition:L0,gfmFootnoteDefinitionLabelString:R0,gfmFootnoteCall:P0,gfmFootnoteCallString:D0}}}function x0(){return{unsafe:[{character:"[",inConstruct:["phrasing","label","reference"]}],handlers:{footnoteDefinition:w0,footnoteReference:Ci}}}function S0(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function k0(){this.buffer()}function R0(e){const t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.label=t,n.identifier=Se(this.sliceSerialize(e)).toLowerCase()}function L0(e){this.exit(e)}function y0(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function O0(){this.buffer()}function D0(e){const t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.label=t,n.identifier=Se(this.sliceSerialize(e)).toLowerCase()}function P0(e){this.exit(e)}function Ci(e,t,n,r){const u=n.createTracker(r);let a=u.move("[^");const i=n.enter("footnoteReference"),o=n.enter("reference");return a+=u.move(n.safe(n.associationId(e),{...u.current(),before:a,after:"]"})),o(),i(),a+=u.move("]"),a}function M0(){return"["}function w0(e,t,n,r){const u=n.createTracker(r);let a=u.move("[^");const i=n.enter("footnoteDefinition"),o=n.enter("label");return a+=u.move(n.safe(n.associationId(e),{...u.current(),before:a,after:"]"})),o(),a+=u.move("]:"+(e.children&&e.children.length>0?" ":"")),u.shift(4),a+=u.move(n.indentLines(n.containerFlow(e,u.current()),B0)),i(),a}function B0(e,t,n){return t===0?e:(n?"":" ")+e}const F0=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Ii.peek=Y0;function H0(){return{canContainEols:["delete"],enter:{strikethrough:v0},exit:{strikethrough:z0}}}function U0(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:F0}],handlers:{delete:Ii}}}function v0(e){this.enter({type:"delete",children:[]},e)}function z0(e){this.exit(e)}function Ii(e,t,n,r){const u=n.createTracker(r),a=n.enter("strikethrough");let i=u.move("~~");return i+=n.containerPhrasing(e,{...u.current(),before:i,after:"~"}),i+=u.move("~~"),a(),i}function Y0(){return"~"}function q0(e,t={}){const n=(t.align||[]).concat(),r=t.stringLength||W0,u=[],a=[],i=[],o=[];let l=0,c=-1;for(;++cl&&(l=e[c].length);++Lo[L])&&(o[L]=D)}_.push(x)}a[c]=_,i[c]=N}let h=-1;if(typeof n=="object"&&"length"in n)for(;++ho[h]&&(o[h]=x),T[h]=x),f[h]=D}a.splice(1,0,f),i.splice(1,0,T),c=-1;const E=[];for(;++c "),a.shift(2);const i=n.indentLines(n.containerFlow(e,a.current()),j0);return u(),i}function j0(e,t,n){return">"+(n?"":" ")+e}function G0(e,t){return pu(e,t.inConstruct,!0)&&!pu(e,t.notInConstruct,!1)}function pu(e,t,n){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ri&&(i=a):a=1,u=r+t.length,r=n.indexOf(t,u);return i}function K0(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function $0(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function J0(e,t,n,r){const u=$0(n),a=e.value||"",i=u==="`"?"GraveAccent":"Tilde";if(K0(e,n)){const f=n.enter("codeIndented"),T=n.indentLines(a,Z0);return f(),T}const o=n.createTracker(r),l=u.repeat(Math.max(X0(a,u)+1,3)),c=n.enter("codeFenced");let h=o.move(l);if(e.lang){const f=n.enter(`codeFencedLang${i}`);h+=o.move(n.safe(e.lang,{before:h,after:" ",encode:["`"],...o.current()})),f()}if(e.lang&&e.meta){const f=n.enter(`codeFencedMeta${i}`);h+=o.move(" "),h+=o.move(n.safe(e.meta,{before:h,after:` +`,encode:["`"],...o.current()})),f()}return h+=o.move(` +`),a&&(h+=o.move(a+` +`)),h+=o.move(l),c(),h}function Z0(e,t,n){return(n?"":" ")+e}function or(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function ef(e,t,n,r){const u=or(n),a=u==='"'?"Quote":"Apostrophe",i=n.enter("definition");let o=n.enter("label");const l=n.createTracker(r);let c=l.move("[");return c+=l.move(n.safe(n.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),o(),!e.url||/[\0- \u007F]/.test(e.url)?(o=n.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(n.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(e.url,{before:c,after:e.title?" ":` +`,...l.current()}))),o(),e.title&&(o=n.enter(`title${a}`),c+=l.move(" "+u),c+=l.move(n.safe(e.title,{before:c,after:u,...l.current()})),c+=l.move(u),o()),i(),c}function tf(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}xi.peek=nf;function xi(e,t,n,r){const u=tf(n),a=n.enter("emphasis"),i=n.createTracker(r);let o=i.move(u);return o+=i.move(n.containerPhrasing(e,{before:o,after:u,...i.current()})),o+=i.move(u),a(),o}function nf(e,t,n){return n.options.emphasis||"*"}function rf(e,t){let n=!1;return hn(e,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,Un}),!!((!e.depth||e.depth<3)&&er(e)&&(t.options.setext||n))}function uf(e,t,n,r){const u=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(rf(e,n)){const h=n.enter("headingSetext"),f=n.enter("phrasing"),T=n.containerPhrasing(e,{...a.current(),before:` +`,after:` +`});return f(),h(),T+` +`+(u===1?"=":"-").repeat(T.length-(Math.max(T.lastIndexOf("\r"),T.lastIndexOf(` +`))+1))}const i="#".repeat(u),o=n.enter("headingAtx"),l=n.enter("phrasing");a.move(i+" ");let c=n.containerPhrasing(e,{before:"# ",after:` +`,...a.current()});return/^[\t ]/.test(c)&&(c="&#x"+c.charCodeAt(0).toString(16).toUpperCase()+";"+c.slice(1)),c=c?i+" "+c:i,n.options.closeAtx&&(c+=" "+i),l(),o(),c}Si.peek=af;function Si(e){return e.value||""}function af(){return"<"}ki.peek=sf;function ki(e,t,n,r){const u=or(n),a=u==='"'?"Quote":"Apostrophe",i=n.enter("image");let o=n.enter("label");const l=n.createTracker(r);let c=l.move("![");return c+=l.move(n.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),o(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(o=n.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(n.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),o(),e.title&&(o=n.enter(`title${a}`),c+=l.move(" "+u),c+=l.move(n.safe(e.title,{before:c,after:u,...l.current()})),c+=l.move(u),o()),c+=l.move(")"),i(),c}function sf(){return"!"}Ri.peek=of;function Ri(e,t,n,r){const u=e.referenceType,a=n.enter("imageReference");let i=n.enter("label");const o=n.createTracker(r);let l=o.move("![");const c=n.safe(e.alt,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),i();const h=n.stack;n.stack=[],i=n.enter("reference");const f=n.safe(n.associationId(e),{before:l,after:"]",...o.current()});return i(),n.stack=h,a(),u==="full"||!c||c!==f?l+=o.move(f+"]"):u==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function of(){return"!"}Li.peek=lf;function Li(e,t,n){let r=e.value||"",u="`",a=-1;for(;new RegExp("(^|[^`])"+u+"([^`]|$)").test(r);)u+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++a\u007F]/.test(e.url))}Oi.peek=cf;function Oi(e,t,n,r){const u=or(n),a=u==='"'?"Quote":"Apostrophe",i=n.createTracker(r);let o,l;if(yi(e,n)){const h=n.stack;n.stack=[],o=n.enter("autolink");let f=i.move("<");return f+=i.move(n.containerPhrasing(e,{before:f,after:">",...i.current()})),f+=i.move(">"),o(),n.stack=h,f}o=n.enter("link"),l=n.enter("label");let c=i.move("[");return c+=i.move(n.containerPhrasing(e,{before:c,after:"](",...i.current()})),c+=i.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=n.enter("destinationLiteral"),c+=i.move("<"),c+=i.move(n.safe(e.url,{before:c,after:">",...i.current()})),c+=i.move(">")):(l=n.enter("destinationRaw"),c+=i.move(n.safe(e.url,{before:c,after:e.title?" ":")",...i.current()}))),l(),e.title&&(l=n.enter(`title${a}`),c+=i.move(" "+u),c+=i.move(n.safe(e.title,{before:c,after:u,...i.current()})),c+=i.move(u),l()),c+=i.move(")"),o(),c}function cf(e,t,n){return yi(e,n)?"<":"["}Di.peek=ff;function Di(e,t,n,r){const u=e.referenceType,a=n.enter("linkReference");let i=n.enter("label");const o=n.createTracker(r);let l=o.move("[");const c=n.containerPhrasing(e,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),i();const h=n.stack;n.stack=[],i=n.enter("reference");const f=n.safe(n.associationId(e),{before:l,after:"]",...o.current()});return i(),n.stack=h,a(),u==="full"||!c||c!==f?l+=o.move(f+"]"):u==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function ff(){return"["}function lr(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function hf(e){const t=lr(e),n=e.options.bulletOther;if(!n)return t==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function df(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Pi(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function mf(e,t,n,r){const u=n.enter("list"),a=n.bulletCurrent;let i=e.ordered?df(n):lr(n);const o=e.ordered?i==="."?")":".":hf(n);let l=t&&n.bulletLastUsed?i===n.bulletLastUsed:!1;if(!e.ordered){const h=e.children?e.children[0]:void 0;if((i==="*"||i==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(l=!0),Pi(n)===i&&h){let f=-1;for(;++f-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let i=a.length+1;(u==="tab"||u==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(i=Math.ceil(i/4)*4);const o=n.createTracker(r);o.move(a+" ".repeat(i-a.length)),o.shift(i);const l=n.enter("listItem"),c=n.indentLines(n.containerFlow(e,o.current()),h);return l(),c;function h(f,T,E){return T?(E?"":" ".repeat(i))+f:(E?a:a+" ".repeat(i-a.length))+f}}function Tf(e,t,n,r){const u=n.enter("paragraph"),a=n.enter("phrasing"),i=n.containerPhrasing(e,r);return a(),u(),i}const bf=cn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function gf(e,t,n,r){return(e.children.some(function(i){return bf(i)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function _f(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Mi.peek=Af;function Mi(e,t,n,r){const u=_f(n),a=n.enter("strong"),i=n.createTracker(r);let o=i.move(u+u);return o+=i.move(n.containerPhrasing(e,{before:o,after:u,...i.current()})),o+=i.move(u+u),a(),o}function Af(e,t,n){return n.options.strong||"*"}function Cf(e,t,n,r){return n.safe(e.value,r)}function If(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function Nf(e,t,n){const r=(Pi(n)+(n.options.ruleSpaces?" ":"")).repeat(If(n));return n.options.ruleSpaces?r.slice(0,-1):r}const wi={blockquote:Q0,break:Tu,code:J0,definition:ef,emphasis:xi,hardBreak:Tu,heading:uf,html:Si,image:ki,imageReference:Ri,inlineCode:Li,link:Oi,linkReference:Di,list:mf,listItem:pf,paragraph:Tf,root:gf,strong:Mi,text:Cf,thematicBreak:Nf};function xf(){return{enter:{table:Sf,tableData:bu,tableHeader:bu,tableRow:Rf},exit:{codeText:Lf,table:kf,tableData:On,tableHeader:On,tableRow:On}}}function Sf(e){const t=e._align;this.enter({type:"table",align:t.map(function(n){return n==="none"?null:n}),children:[]},e),this.data.inTable=!0}function kf(e){this.exit(e),this.data.inTable=void 0}function Rf(e){this.enter({type:"tableRow",children:[]},e)}function On(e){this.exit(e)}function bu(e){this.enter({type:"tableCell",children:[]},e)}function Lf(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,yf));const n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function yf(e,t){return t==="|"?t:e}function Of(e){const t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,u=t.stringLength,a=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:T,table:i,tableCell:l,tableRow:o}};function i(E,_,N,L){return c(h(E,N,L),E.align)}function o(E,_,N,L){const x=f(E,N,L),D=c([x]);return D.slice(0,D.indexOf(` +`))}function l(E,_,N,L){const x=N.enter("tableCell"),D=N.enter("phrasing"),P=N.containerPhrasing(E,{...L,before:a,after:a});return D(),x(),P}function c(E,_){return q0(E,{align:_,alignDelimiters:r,padding:n,stringLength:u})}function h(E,_,N){const L=E.children;let x=-1;const D=[],P=_.enter("table");for(;++x0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const Xf={tokenize:rh,partial:!0};function Kf(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:eh,continuation:{tokenize:th},exit:nh}},text:{91:{name:"gfmFootnoteCall",tokenize:Zf},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:$f,resolveTo:Jf}}}}function $f(e,t,n){const r=this;let u=r.events.length;const a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i;for(;u--;){const l=r.events[u][1];if(l.type==="labelImage"){i=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!i||!i._balanced)return n(l);const c=Se(r.sliceSerialize({start:i.end,end:r.now()}));return c.codePointAt(0)!==94||!a.includes(c.slice(1))?n(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Jf(e,t){let n=e.length;for(;n--;)if(e[n][1].type==="labelImage"&&e[n][0]==="enter"){e[n][1];break}e[n+1][1].type="data",e[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},u={type:"gfmFootnoteCallMarker",start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};u.end.column++,u.end.offset++,u.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},u.end),end:Object.assign({},e[e.length-1][1].start)},i={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},o=[e[n+1],e[n+2],["enter",r,t],e[n+3],e[n+4],["enter",u,t],["exit",u,t],["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(n,e.length-n+1,...o),e}function Zf(e,t,n){const r=this,u=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a=0,i;return o;function o(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?n(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(a>999||f===93&&!i||f===null||f===91||$(f))return n(f);if(f===93){e.exit("chunkString");const T=e.exit("gfmFootnoteCallString");return u.includes(Se(r.sliceSerialize(T)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):n(f)}return $(f)||(i=!0),a++,e.consume(f),f===92?h:c}function h(f){return f===91||f===92||f===93?(e.consume(f),a++,c):c(f)}}function eh(e,t,n){const r=this,u=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a,i=0,o;return l;function l(_){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(_),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(_){return _===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(_),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",h):n(_)}function h(_){if(i>999||_===93&&!o||_===null||_===91||$(_))return n(_);if(_===93){e.exit("chunkString");const N=e.exit("gfmFootnoteDefinitionLabelString");return a=Se(r.sliceSerialize(N)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(_),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),T}return $(_)||(o=!0),i++,e.consume(_),_===92?f:h}function f(_){return _===91||_===92||_===93?(e.consume(_),i++,h):h(_)}function T(_){return _===58?(e.enter("definitionMarker"),e.consume(_),e.exit("definitionMarker"),u.includes(a)||u.push(a),Q(e,E,"gfmFootnoteDefinitionWhitespace")):n(_)}function E(_){return t(_)}}function th(e,t,n){return e.check(Bt,t,e.attempt(Xf,t,n))}function nh(e){e.exit("gfmFootnoteDefinition")}function rh(e,t,n){const r=this;return Q(e,u,"gfmFootnoteDefinitionIndent",5);function u(a){const i=r.events[r.events.length-1];return i&&i[1].type==="gfmFootnoteDefinitionIndent"&&i[2].sliceSerialize(i[1],!0).length===4?t(a):n(a)}}function uh(e){let n=(e||{}).singleTilde;const r={name:"strikethrough",tokenize:a,resolveAll:u};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function u(i,o){let l=-1;for(;++l1?l(_):(i.consume(_),f++,E);if(f<2&&!n)return l(_);const L=i.exit("strikethroughSequenceTemporary"),x=Zt(_);return L._open=!x||x===2&&!!N,L._close=!N||N===2&&!!x,o(_)}}}class ih{constructor(){this.map=[]}add(t,n,r){ah(this,t,n,r)}consume(t){if(this.map.sort(function(a,i){return a[0]-i[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(t.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),t.length=this.map[n][0];r.push([...t]),t.length=0;let u=r.pop();for(;u;)t.push(...u),u=r.pop();this.map.length=0}}function ah(e,t,n,r){let u=0;if(!(n===0&&r.length===0)){for(;u-1;){const te=r.events[w][1].type;if(te==="lineEnding"||te==="linePrefix")w--;else break}const B=w>-1?r.events[w][1].type:null,X=B==="tableHead"||B==="tableRow"?R:l;return X===R&&r.parser.lazy[r.now().line]?n(I):X(I)}function l(I){return e.enter("tableHead"),e.enter("tableRow"),c(I)}function c(I){return I===124||(i=!0,a+=1),h(I)}function h(I){return I===null?n(I):F(I)?a>1?(a=0,r.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(I),e.exit("lineEnding"),E):n(I):q(I)?Q(e,h,"whitespace")(I):(a+=1,i&&(i=!1,u+=1),I===124?(e.enter("tableCellDivider"),e.consume(I),e.exit("tableCellDivider"),i=!0,h):(e.enter("data"),f(I)))}function f(I){return I===null||I===124||$(I)?(e.exit("data"),h(I)):(e.consume(I),I===92?T:f)}function T(I){return I===92||I===124?(e.consume(I),f):f(I)}function E(I){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(I):(e.enter("tableDelimiterRow"),i=!1,q(I)?Q(e,_,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(I):_(I))}function _(I){return I===45||I===58?L(I):I===124?(i=!0,e.enter("tableCellDivider"),e.consume(I),e.exit("tableCellDivider"),N):U(I)}function N(I){return q(I)?Q(e,L,"whitespace")(I):L(I)}function L(I){return I===58?(a+=1,i=!0,e.enter("tableDelimiterMarker"),e.consume(I),e.exit("tableDelimiterMarker"),x):I===45?(a+=1,x(I)):I===null||F(I)?H(I):U(I)}function x(I){return I===45?(e.enter("tableDelimiterFiller"),D(I)):U(I)}function D(I){return I===45?(e.consume(I),D):I===58?(i=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(I),e.exit("tableDelimiterMarker"),P):(e.exit("tableDelimiterFiller"),P(I))}function P(I){return q(I)?Q(e,H,"whitespace")(I):H(I)}function H(I){return I===124?_(I):I===null||F(I)?!i||u!==a?U(I):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(I)):U(I)}function U(I){return n(I)}function R(I){return e.enter("tableRow"),V(I)}function V(I){return I===124?(e.enter("tableCellDivider"),e.consume(I),e.exit("tableCellDivider"),V):I===null||F(I)?(e.exit("tableRow"),t(I)):q(I)?Q(e,V,"whitespace")(I):(e.enter("data"),Z(I))}function Z(I){return I===null||I===124||$(I)?(e.exit("data"),V(I)):(e.consume(I),I===92?G:Z)}function G(I){return I===92||I===124?(e.consume(I),Z):Z(I)}}function ch(e,t){let n=-1,r=!0,u=0,a=[0,0,0,0],i=[0,0,0,0],o=!1,l=0,c,h,f;const T=new ih;for(;++nn[2]+1){const _=n[2]+1,N=n[3]-n[2]-1;e.add(_,N,[])}}e.add(n[3]+1,0,[["exit",f,t]])}return u!==void 0&&(a.end=Object.assign({},ut(t.events,u)),e.add(u,0,[["exit",a,t]]),a=void 0),a}function _u(e,t,n,r,u){const a=[],i=ut(t.events,n);u&&(u.end=Object.assign({},i),a.push(["exit",u,t])),r.end=Object.assign({},i),a.push(["exit",r,t]),e.add(n+1,0,a)}function ut(e,t){const n=e[t],r=n[0]==="enter"?"start":"end";return n[1][r]}const fh={name:"tasklistCheck",tokenize:dh};function hh(){return{text:{91:fh}}}function dh(e,t,n){const r=this;return u;function u(l){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return $(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),i):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),i):n(l)}function i(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):n(l)}function o(l){return F(l)?t(l):q(l)?e.check({tokenize:mh},t,n)(l):n(l)}}function mh(e,t,n){return Q(e,r,"whitespace");function r(u){return u===null?n(u):t(u)}}function Eh(e){return Zu([vf(),Kf(),uh(e),oh(),hh()])}const ph={};function Th(e){const t=this,n=e||ph,r=t.data(),u=r.micromarkExtensions||(r.micromarkExtensions=[]),a=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),i=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);u.push(Eh(n)),a.push(Bf()),i.push(Ff(n))}const Au=/[#.]/g;function bh(e,t){const n=e||"",r={};let u=0,a,i;for(;u-1&&a<=t.length){let i=0;for(;;){let o=n[i];if(o===void 0){const l=Iu(t,n[i-1]);o=l===-1?t.length+1:l+1,n[i]=o}if(o>a)return{line:i+1,column:a-(i>0?n[i-1]:0)+1,offset:a};i++}}}function u(a){if(a&&typeof a.line=="number"&&typeof a.column=="number"&&!Number.isNaN(a.line)&&!Number.isNaN(a.column)){for(;n.length1?n[a.line-2]:0)+a.column-1;if(i=55296&&e<=57343}function Vh(e){return e>=56320&&e<=57343}function Wh(e,t){return(e-55296)*1024+9216+t}function Xi(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function Ki(e){return e>=64976&&e<=65007||qh.has(e)}var C;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(C=C||(C={}));const Qh=65536;class jh{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=Qh,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t){const{line:n,col:r,offset:u}=this;return{code:t,startLine:n,endLine:n,startCol:r,endCol:r,startOffset:u,endOffset:u}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const n=this.html.charCodeAt(this.pos+1);if(Vh(n))return this.pos++,this._addGap(),Wh(t,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,d.EOF;return this._err(C.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,n){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=n}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,n){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(n)return this.html.startsWith(t,this.pos);for(let r=0;r=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,d.EOF;const r=this.html.charCodeAt(n);return r===d.CARRIAGE_RETURN?d.LINE_FEED:r}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,d.EOF;let t=this.html.charCodeAt(this.pos);return t===d.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,d.LINE_FEED):t===d.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,Gi(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===d.LINE_FEED||t===d.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){Xi(t)?this._err(C.controlCharacterInInputStream):Ki(t)&&this._err(C.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}const ve=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),Gh=new Uint16Array("Ȁaglq \x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(e=>e.charCodeAt(0)));var Dn;const Xh=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),Kh=(Dn=String.fromCodePoint)!==null&&Dn!==void 0?Dn:function(e){let t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function $h(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=Xh.get(e))!==null&&t!==void 0?t:e}var ie;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(ie||(ie={}));const Jh=32;var ye;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(ye||(ye={}));function Qn(e){return e>=ie.ZERO&&e<=ie.NINE}function Zh(e){return e>=ie.UPPER_A&&e<=ie.UPPER_F||e>=ie.LOWER_A&&e<=ie.LOWER_F}function ed(e){return e>=ie.UPPER_A&&e<=ie.UPPER_Z||e>=ie.LOWER_A&&e<=ie.LOWER_Z||Qn(e)}function td(e){return e===ie.EQUALS||ed(e)}var ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(ue||(ue={}));var Xe;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Xe||(Xe={}));class nd{constructor(t,n,r){this.decodeTree=t,this.emitCodePoint=n,this.errors=r,this.state=ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Xe.Strict}startEntity(t){this.decodeMode=t,this.state=ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,n){switch(this.state){case ue.EntityStart:return t.charCodeAt(n)===ie.NUM?(this.state=ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=ue.NamedEntity,this.stateNamedEntity(t,n));case ue.NumericStart:return this.stateNumericStart(t,n);case ue.NumericDecimal:return this.stateNumericDecimal(t,n);case ue.NumericHex:return this.stateNumericHex(t,n);case ue.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|Jh)===ie.LOWER_X?(this.state=ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=ue.NumericDecimal,this.stateNumericDecimal(t,n))}addToNumericResult(t,n,r,u){if(n!==r){const a=r-n;this.result=this.result*Math.pow(u,a)+parseInt(t.substr(n,a),u),this.consumed+=a}}stateNumericHex(t,n){const r=n;for(;n>14;for(;n>14,a!==0){if(i===ie.SEMI)return this.emitNamedEntityData(this.treeIndex,a,this.consumed+this.excess);this.decodeMode!==Xe.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:n,decodeTree:r}=this,u=(r[n]&ye.VALUE_LENGTH)>>14;return this.emitNamedEntityData(n,u,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,r){const{decodeTree:u}=this;return this.emitCodePoint(n===1?u[t]&~ye.VALUE_LENGTH:u[t+1],r),n===3&&this.emitCodePoint(u[t+2],r),r}end(){var t;switch(this.state){case ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Xe.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case ue.NumericDecimal:return this.emitNumericEntity(0,2);case ue.NumericHex:return this.emitNumericEntity(0,3);case ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case ue.EntityStart:return 0}}}function Ji(e){let t="";const n=new nd(e,r=>t+=Kh(r));return function(u,a){let i=0,o=0;for(;(o=u.indexOf("&",o))>=0;){t+=u.slice(i,o),n.startEntity(a);const c=n.write(u,o+1);if(c<0){i=o+n.end();break}i=o+c,o=c===0?i+1:i}const l=t+u.slice(i);return t="",l}}function Zi(e,t,n,r){const u=(t&ye.BRANCH_LENGTH)>>7,a=t&ye.JUMP_TABLE;if(u===0)return a!==0&&r===a?n:-1;if(a){const l=r-a;return l<0||l>=u?-1:e[n+l]-1}let i=n,o=i+u-1;for(;i<=o;){const l=i+o>>>1,c=e[l];if(cr)o=l-1;else return e[l+u]}return-1}Ji(ve);Ji(Gh);var S;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(S=S||(S={}));var Ye;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(Ye=Ye||(Ye={}));var Te;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(Te=Te||(Te={}));var A;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(A=A||(A={}));var s;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SECTION=94]="SECTION",e[e.SELECT=95]="SELECT",e[e.SOURCE=96]="SOURCE",e[e.SMALL=97]="SMALL",e[e.SPAN=98]="SPAN",e[e.STRIKE=99]="STRIKE",e[e.STRONG=100]="STRONG",e[e.STYLE=101]="STYLE",e[e.SUB=102]="SUB",e[e.SUMMARY=103]="SUMMARY",e[e.SUP=104]="SUP",e[e.TABLE=105]="TABLE",e[e.TBODY=106]="TBODY",e[e.TEMPLATE=107]="TEMPLATE",e[e.TEXTAREA=108]="TEXTAREA",e[e.TFOOT=109]="TFOOT",e[e.TD=110]="TD",e[e.TH=111]="TH",e[e.THEAD=112]="THEAD",e[e.TITLE=113]="TITLE",e[e.TR=114]="TR",e[e.TRACK=115]="TRACK",e[e.TT=116]="TT",e[e.U=117]="U",e[e.UL=118]="UL",e[e.SVG=119]="SVG",e[e.VAR=120]="VAR",e[e.WBR=121]="WBR",e[e.XMP=122]="XMP"})(s=s||(s={}));const rd=new Map([[A.A,s.A],[A.ADDRESS,s.ADDRESS],[A.ANNOTATION_XML,s.ANNOTATION_XML],[A.APPLET,s.APPLET],[A.AREA,s.AREA],[A.ARTICLE,s.ARTICLE],[A.ASIDE,s.ASIDE],[A.B,s.B],[A.BASE,s.BASE],[A.BASEFONT,s.BASEFONT],[A.BGSOUND,s.BGSOUND],[A.BIG,s.BIG],[A.BLOCKQUOTE,s.BLOCKQUOTE],[A.BODY,s.BODY],[A.BR,s.BR],[A.BUTTON,s.BUTTON],[A.CAPTION,s.CAPTION],[A.CENTER,s.CENTER],[A.CODE,s.CODE],[A.COL,s.COL],[A.COLGROUP,s.COLGROUP],[A.DD,s.DD],[A.DESC,s.DESC],[A.DETAILS,s.DETAILS],[A.DIALOG,s.DIALOG],[A.DIR,s.DIR],[A.DIV,s.DIV],[A.DL,s.DL],[A.DT,s.DT],[A.EM,s.EM],[A.EMBED,s.EMBED],[A.FIELDSET,s.FIELDSET],[A.FIGCAPTION,s.FIGCAPTION],[A.FIGURE,s.FIGURE],[A.FONT,s.FONT],[A.FOOTER,s.FOOTER],[A.FOREIGN_OBJECT,s.FOREIGN_OBJECT],[A.FORM,s.FORM],[A.FRAME,s.FRAME],[A.FRAMESET,s.FRAMESET],[A.H1,s.H1],[A.H2,s.H2],[A.H3,s.H3],[A.H4,s.H4],[A.H5,s.H5],[A.H6,s.H6],[A.HEAD,s.HEAD],[A.HEADER,s.HEADER],[A.HGROUP,s.HGROUP],[A.HR,s.HR],[A.HTML,s.HTML],[A.I,s.I],[A.IMG,s.IMG],[A.IMAGE,s.IMAGE],[A.INPUT,s.INPUT],[A.IFRAME,s.IFRAME],[A.KEYGEN,s.KEYGEN],[A.LABEL,s.LABEL],[A.LI,s.LI],[A.LINK,s.LINK],[A.LISTING,s.LISTING],[A.MAIN,s.MAIN],[A.MALIGNMARK,s.MALIGNMARK],[A.MARQUEE,s.MARQUEE],[A.MATH,s.MATH],[A.MENU,s.MENU],[A.META,s.META],[A.MGLYPH,s.MGLYPH],[A.MI,s.MI],[A.MO,s.MO],[A.MN,s.MN],[A.MS,s.MS],[A.MTEXT,s.MTEXT],[A.NAV,s.NAV],[A.NOBR,s.NOBR],[A.NOFRAMES,s.NOFRAMES],[A.NOEMBED,s.NOEMBED],[A.NOSCRIPT,s.NOSCRIPT],[A.OBJECT,s.OBJECT],[A.OL,s.OL],[A.OPTGROUP,s.OPTGROUP],[A.OPTION,s.OPTION],[A.P,s.P],[A.PARAM,s.PARAM],[A.PLAINTEXT,s.PLAINTEXT],[A.PRE,s.PRE],[A.RB,s.RB],[A.RP,s.RP],[A.RT,s.RT],[A.RTC,s.RTC],[A.RUBY,s.RUBY],[A.S,s.S],[A.SCRIPT,s.SCRIPT],[A.SECTION,s.SECTION],[A.SELECT,s.SELECT],[A.SOURCE,s.SOURCE],[A.SMALL,s.SMALL],[A.SPAN,s.SPAN],[A.STRIKE,s.STRIKE],[A.STRONG,s.STRONG],[A.STYLE,s.STYLE],[A.SUB,s.SUB],[A.SUMMARY,s.SUMMARY],[A.SUP,s.SUP],[A.TABLE,s.TABLE],[A.TBODY,s.TBODY],[A.TEMPLATE,s.TEMPLATE],[A.TEXTAREA,s.TEXTAREA],[A.TFOOT,s.TFOOT],[A.TD,s.TD],[A.TH,s.TH],[A.THEAD,s.THEAD],[A.TITLE,s.TITLE],[A.TR,s.TR],[A.TRACK,s.TRACK],[A.TT,s.TT],[A.U,s.U],[A.UL,s.UL],[A.SVG,s.SVG],[A.VAR,s.VAR],[A.WBR,s.WBR],[A.XMP,s.XMP]]);function dt(e){var t;return(t=rd.get(e))!==null&&t!==void 0?t:s.UNKNOWN}const y=s,ud={[S.HTML]:new Set([y.ADDRESS,y.APPLET,y.AREA,y.ARTICLE,y.ASIDE,y.BASE,y.BASEFONT,y.BGSOUND,y.BLOCKQUOTE,y.BODY,y.BR,y.BUTTON,y.CAPTION,y.CENTER,y.COL,y.COLGROUP,y.DD,y.DETAILS,y.DIR,y.DIV,y.DL,y.DT,y.EMBED,y.FIELDSET,y.FIGCAPTION,y.FIGURE,y.FOOTER,y.FORM,y.FRAME,y.FRAMESET,y.H1,y.H2,y.H3,y.H4,y.H5,y.H6,y.HEAD,y.HEADER,y.HGROUP,y.HR,y.HTML,y.IFRAME,y.IMG,y.INPUT,y.LI,y.LINK,y.LISTING,y.MAIN,y.MARQUEE,y.MENU,y.META,y.NAV,y.NOEMBED,y.NOFRAMES,y.NOSCRIPT,y.OBJECT,y.OL,y.P,y.PARAM,y.PLAINTEXT,y.PRE,y.SCRIPT,y.SECTION,y.SELECT,y.SOURCE,y.STYLE,y.SUMMARY,y.TABLE,y.TBODY,y.TD,y.TEMPLATE,y.TEXTAREA,y.TFOOT,y.TH,y.THEAD,y.TITLE,y.TR,y.TRACK,y.UL,y.WBR,y.XMP]),[S.MATHML]:new Set([y.MI,y.MO,y.MN,y.MS,y.MTEXT,y.ANNOTATION_XML]),[S.SVG]:new Set([y.TITLE,y.FOREIGN_OBJECT,y.DESC]),[S.XLINK]:new Set,[S.XML]:new Set,[S.XMLNS]:new Set};function ea(e){return e===y.H1||e===y.H2||e===y.H3||e===y.H4||e===y.H5||e===y.H6}A.STYLE,A.SCRIPT,A.XMP,A.IFRAME,A.NOEMBED,A.NOFRAMES,A.PLAINTEXT;const id=new Map([[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);var m;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.NAMED_CHARACTER_REFERENCE=72]="NAMED_CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=73]="AMBIGUOUS_AMPERSAND",e[e.NUMERIC_CHARACTER_REFERENCE=74]="NUMERIC_CHARACTER_REFERENCE",e[e.HEXADEMICAL_CHARACTER_REFERENCE_START=75]="HEXADEMICAL_CHARACTER_REFERENCE_START",e[e.HEXADEMICAL_CHARACTER_REFERENCE=76]="HEXADEMICAL_CHARACTER_REFERENCE",e[e.DECIMAL_CHARACTER_REFERENCE=77]="DECIMAL_CHARACTER_REFERENCE",e[e.NUMERIC_CHARACTER_REFERENCE_END=78]="NUMERIC_CHARACTER_REFERENCE_END"})(m||(m={}));const ne={DATA:m.DATA,RCDATA:m.RCDATA,RAWTEXT:m.RAWTEXT,SCRIPT_DATA:m.SCRIPT_DATA,PLAINTEXT:m.PLAINTEXT,CDATA_SECTION:m.CDATA_SECTION};function xt(e){return e>=d.DIGIT_0&&e<=d.DIGIT_9}function Ct(e){return e>=d.LATIN_CAPITAL_A&&e<=d.LATIN_CAPITAL_Z}function ad(e){return e>=d.LATIN_SMALL_A&&e<=d.LATIN_SMALL_Z}function ze(e){return ad(e)||Ct(e)}function jn(e){return ze(e)||xt(e)}function ta(e){return e>=d.LATIN_CAPITAL_A&&e<=d.LATIN_CAPITAL_F}function na(e){return e>=d.LATIN_SMALL_A&&e<=d.LATIN_SMALL_F}function sd(e){return xt(e)||ta(e)||na(e)}function Qt(e){return e+32}function ra(e){return e===d.SPACE||e===d.LINE_FEED||e===d.TABULATION||e===d.FORM_FEED}function od(e){return e===d.EQUALS_SIGN||jn(e)}function xu(e){return ra(e)||e===d.SOLIDUS||e===d.GREATER_THAN_SIGN}class ld{constructor(t,n){this.options=t,this.handler=n,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=m.DATA,this.returnState=m.DATA,this.charRefCode=-1,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new jh(n),this.currentLocation=this.getCurrentLocation(-1)}_err(t){var n,r;(r=(n=this.handler).onParseError)===null||r===void 0||r.call(n,this.preprocessor.getError(t))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t==null||t())}write(t,n,r){this.active=!0,this.preprocessor.write(t,n),this._runParsingLoop(),this.paused||r==null||r()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this._unconsume(this.consumedAfterSnapshot),this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(t){this.consumedAfterSnapshot-=t,this.preprocessor.retreat(t)}_reconsumeInState(t,n){this.state=t,this._callState(n)}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let n=0;n0&&this._err(C.endTagWithAttributes),t.selfClosing&&this._err(C.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case Y.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Y.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Y.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:Y.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type!==t)this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();else{this.currentCharacterToken.chars+=n;return}this._createCharacterToken(t,n)}_emitCodePoint(t){const n=ra(t)?Y.WHITESPACE_CHARACTER:t===d.NULL?Y.NULL_CHARACTER:Y.CHARACTER;this._appendCharToCurrentCharacterToken(n,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(Y.CHARACTER,t)}_matchNamedCharacterReference(t){let n=null,r=0,u=!1;for(let a=0,i=ve[0];a>=0&&(a=Zi(ve,i,a+1,t),!(a<0));t=this._consume()){r+=1,i=ve[a];const o=i&ye.VALUE_LENGTH;if(o){const l=(o>>14)-1;if(t!==d.SEMICOLON&&this._isCharacterReferenceInAttribute()&&od(this.preprocessor.peek(1))?(n=[d.AMPERSAND],a+=l):(n=l===0?[ve[a]&~ye.VALUE_LENGTH]:l===1?[ve[++a]]:[ve[++a],ve[++a]],r=0,u=t!==d.SEMICOLON),l===0){this._consume();break}}}return this._unconsume(r),u&&!this.preprocessor.endOfChunkHit&&this._err(C.missingSemicolonAfterCharacterReference),this._unconsume(1),n}_isCharacterReferenceInAttribute(){return this.returnState===m.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===m.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===m.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case m.DATA:{this._stateData(t);break}case m.RCDATA:{this._stateRcdata(t);break}case m.RAWTEXT:{this._stateRawtext(t);break}case m.SCRIPT_DATA:{this._stateScriptData(t);break}case m.PLAINTEXT:{this._statePlaintext(t);break}case m.TAG_OPEN:{this._stateTagOpen(t);break}case m.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case m.TAG_NAME:{this._stateTagName(t);break}case m.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case m.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case m.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case m.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case m.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case m.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case m.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case m.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case m.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case m.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case m.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case m.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case m.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case m.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case m.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case m.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case m.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case m.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case m.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case m.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case m.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case m.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case m.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case m.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case m.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case m.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case m.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case m.BOGUS_COMMENT:{this._stateBogusComment(t);break}case m.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case m.COMMENT_START:{this._stateCommentStart(t);break}case m.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case m.COMMENT:{this._stateComment(t);break}case m.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case m.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case m.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case m.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case m.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case m.COMMENT_END:{this._stateCommentEnd(t);break}case m.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case m.DOCTYPE:{this._stateDoctype(t);break}case m.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case m.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case m.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case m.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case m.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case m.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case m.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case m.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case m.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case m.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case m.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case m.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case m.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case m.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case m.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case m.CDATA_SECTION:{this._stateCdataSection(t);break}case m.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case m.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case m.CHARACTER_REFERENCE:{this._stateCharacterReference(t);break}case m.NAMED_CHARACTER_REFERENCE:{this._stateNamedCharacterReference(t);break}case m.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}case m.NUMERIC_CHARACTER_REFERENCE:{this._stateNumericCharacterReference(t);break}case m.HEXADEMICAL_CHARACTER_REFERENCE_START:{this._stateHexademicalCharacterReferenceStart(t);break}case m.HEXADEMICAL_CHARACTER_REFERENCE:{this._stateHexademicalCharacterReference(t);break}case m.DECIMAL_CHARACTER_REFERENCE:{this._stateDecimalCharacterReference(t);break}case m.NUMERIC_CHARACTER_REFERENCE_END:{this._stateNumericCharacterReferenceEnd(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case d.LESS_THAN_SIGN:{this.state=m.TAG_OPEN;break}case d.AMPERSAND:{this.returnState=m.DATA,this.state=m.CHARACTER_REFERENCE;break}case d.NULL:{this._err(C.unexpectedNullCharacter),this._emitCodePoint(t);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case d.AMPERSAND:{this.returnState=m.RCDATA,this.state=m.CHARACTER_REFERENCE;break}case d.LESS_THAN_SIGN:{this.state=m.RCDATA_LESS_THAN_SIGN;break}case d.NULL:{this._err(C.unexpectedNullCharacter),this._emitChars(ee);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case d.LESS_THAN_SIGN:{this.state=m.RAWTEXT_LESS_THAN_SIGN;break}case d.NULL:{this._err(C.unexpectedNullCharacter),this._emitChars(ee);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case d.LESS_THAN_SIGN:{this.state=m.SCRIPT_DATA_LESS_THAN_SIGN;break}case d.NULL:{this._err(C.unexpectedNullCharacter),this._emitChars(ee);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case d.NULL:{this._err(C.unexpectedNullCharacter),this._emitChars(ee);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(ze(t))this._createStartTagToken(),this.state=m.TAG_NAME,this._stateTagName(t);else switch(t){case d.EXCLAMATION_MARK:{this.state=m.MARKUP_DECLARATION_OPEN;break}case d.SOLIDUS:{this.state=m.END_TAG_OPEN;break}case d.QUESTION_MARK:{this._err(C.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=m.BOGUS_COMMENT,this._stateBogusComment(t);break}case d.EOF:{this._err(C.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(C.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=m.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(ze(t))this._createEndTagToken(),this.state=m.TAG_NAME,this._stateTagName(t);else switch(t){case d.GREATER_THAN_SIGN:{this._err(C.missingEndTagName),this.state=m.DATA;break}case d.EOF:{this._err(C.eofBeforeTagName),this._emitChars("");break}case d.NULL:{this._err(C.unexpectedNullCharacter),this.state=m.SCRIPT_DATA_ESCAPED,this._emitChars(ee);break}case d.EOF:{this._err(C.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=m.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===d.SOLIDUS?this.state=m.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:ze(t)?(this._emitChars("<"),this.state=m.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=m.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){ze(t)?(this.state=m.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case d.NULL:{this._err(C.unexpectedNullCharacter),this.state=m.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(ee);break}case d.EOF:{this._err(C.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=m.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===d.SOLIDUS?(this.state=m.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=m.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(de.SCRIPT,!1)&&xu(this.preprocessor.peek(de.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n1114111)this._err(C.characterReferenceOutsideUnicodeRange),this.charRefCode=d.REPLACEMENT_CHARACTER;else if(Gi(this.charRefCode))this._err(C.surrogateCharacterReference),this.charRefCode=d.REPLACEMENT_CHARACTER;else if(Ki(this.charRefCode))this._err(C.noncharacterCharacterReference);else if(Xi(this.charRefCode)||this.charRefCode===d.CARRIAGE_RETURN){this._err(C.controlCharacterReference);const n=id.get(this.charRefCode);n!==void 0&&(this.charRefCode=n)}this._flushCodePointConsumedAsCharacterReference(this.charRefCode),this._reconsumeInState(this.returnState,t)}}const ua=new Set([s.DD,s.DT,s.LI,s.OPTGROUP,s.OPTION,s.P,s.RB,s.RP,s.RT,s.RTC]),Su=new Set([...ua,s.CAPTION,s.COLGROUP,s.TBODY,s.TD,s.TFOOT,s.TH,s.THEAD,s.TR]),jt=new Map([[s.APPLET,S.HTML],[s.CAPTION,S.HTML],[s.HTML,S.HTML],[s.MARQUEE,S.HTML],[s.OBJECT,S.HTML],[s.TABLE,S.HTML],[s.TD,S.HTML],[s.TEMPLATE,S.HTML],[s.TH,S.HTML],[s.ANNOTATION_XML,S.MATHML],[s.MI,S.MATHML],[s.MN,S.MATHML],[s.MO,S.MATHML],[s.MS,S.MATHML],[s.MTEXT,S.MATHML],[s.DESC,S.SVG],[s.FOREIGN_OBJECT,S.SVG],[s.TITLE,S.SVG]]),cd=[s.H1,s.H2,s.H3,s.H4,s.H5,s.H6],fd=[s.TR,s.TEMPLATE,s.HTML],hd=[s.TBODY,s.TFOOT,s.THEAD,s.TEMPLATE,s.HTML],dd=[s.TABLE,s.TEMPLATE,s.HTML],md=[s.TD,s.TH];class Ed{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(t,n,r){this.treeAdapter=n,this.handler=r,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=s.UNKNOWN,this.current=t}_indexOf(t){return this.items.lastIndexOf(t,this.stackTop)}_isInTemplate(){return this.currentTagId===s.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===S.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(t,n){this.stackTop++,this.items[this.stackTop]=t,this.current=t,this.tagIDs[this.stackTop]=n,this.currentTagId=n,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(t,n,!0)}pop(){const t=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,n){const r=this._indexOf(t);this.items[r]=n,r===this.stackTop&&(this.current=n)}insertAfter(t,n,r){const u=this._indexOf(t)+1;this.items.splice(u,0,n),this.tagIDs.splice(u,0,r),this.stackTop++,u===this.stackTop&&this._updateCurrentElement(),this.handler.onItemPush(this.current,this.currentTagId,u===this.stackTop)}popUntilTagNamePopped(t){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(t,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==S.HTML);this.shortenToLength(n<0?0:n)}shortenToLength(t){for(;this.stackTop>=t;){const n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop=0;r--)if(t.includes(this.tagIDs[r])&&this.treeAdapter.getNamespaceURI(this.items[r])===n)return r;return-1}clearBackTo(t,n){const r=this._indexOfTagNames(t,n);this.shortenToLength(r+1)}clearBackToTableContext(){this.clearBackTo(dd,S.HTML)}clearBackToTableBodyContext(){this.clearBackTo(hd,S.HTML)}clearBackToTableRowContext(){this.clearBackTo(fd,S.HTML)}remove(t){const n=this._indexOf(t);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===s.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const n=this._indexOf(t)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===s.HTML}hasInScope(t){for(let n=this.stackTop;n>=0;n--){const r=this.tagIDs[n],u=this.treeAdapter.getNamespaceURI(this.items[n]);if(r===t&&u===S.HTML)return!0;if(jt.get(r)===u)return!1}return!0}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t],r=this.treeAdapter.getNamespaceURI(this.items[t]);if(ea(n)&&r===S.HTML)return!0;if(jt.get(n)===r)return!1}return!0}hasInListItemScope(t){for(let n=this.stackTop;n>=0;n--){const r=this.tagIDs[n],u=this.treeAdapter.getNamespaceURI(this.items[n]);if(r===t&&u===S.HTML)return!0;if((r===s.UL||r===s.OL)&&u===S.HTML||jt.get(r)===u)return!1}return!0}hasInButtonScope(t){for(let n=this.stackTop;n>=0;n--){const r=this.tagIDs[n],u=this.treeAdapter.getNamespaceURI(this.items[n]);if(r===t&&u===S.HTML)return!0;if(r===s.BUTTON&&u===S.HTML||jt.get(r)===u)return!1}return!0}hasInTableScope(t){for(let n=this.stackTop;n>=0;n--){const r=this.tagIDs[n];if(this.treeAdapter.getNamespaceURI(this.items[n])===S.HTML){if(r===t)return!0;if(r===s.TABLE||r===s.TEMPLATE||r===s.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--){const n=this.tagIDs[t];if(this.treeAdapter.getNamespaceURI(this.items[t])===S.HTML){if(n===s.TBODY||n===s.THEAD||n===s.TFOOT)return!0;if(n===s.TABLE||n===s.HTML)return!1}}return!0}hasInSelectScope(t){for(let n=this.stackTop;n>=0;n--){const r=this.tagIDs[n];if(this.treeAdapter.getNamespaceURI(this.items[n])===S.HTML){if(r===t)return!0;if(r!==s.OPTION&&r!==s.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;ua.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;Su.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==t&&Su.has(this.currentTagId);)this.pop()}}const Pn=3;var xe;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(xe=xe||(xe={}));const ku={type:xe.Marker};class pd{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,n){const r=[],u=n.length,a=this.treeAdapter.getTagName(t),i=this.treeAdapter.getNamespaceURI(t);for(let o=0;o[i.name,i.value]));let a=0;for(let i=0;iu.get(l.name)===l.value)&&(a+=1,a>=Pn&&this.entries.splice(o.idx,1))}}insertMarker(){this.entries.unshift(ku)}pushElement(t,n){this._ensureNoahArkCondition(t),this.entries.unshift({type:xe.Element,element:t,token:n})}insertElementAfterBookmark(t,n){const r=this.entries.indexOf(this.bookmark);this.entries.splice(r,0,{type:xe.Element,element:t,token:n})}removeEntry(t){const n=this.entries.indexOf(t);n>=0&&this.entries.splice(n,1)}clearToLastMarker(){const t=this.entries.indexOf(ku);t>=0?this.entries.splice(0,t+1):this.entries.length=0}getElementEntryInScopeWithTagName(t){const n=this.entries.find(r=>r.type===xe.Marker||this.treeAdapter.getTagName(r.element)===t);return n&&n.type===xe.Element?n:null}getElementEntry(t){return this.entries.find(n=>n.type===xe.Element&&n.element===t)}}function Ru(e){return{nodeName:"#text",value:e,parentNode:null}}const it={createDocument(){return{nodeName:"#document",mode:Te.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,n,r){const u=e.childNodes.find(a=>a.nodeName==="#documentType");if(u)u.name=t,u.publicId=n,u.systemId=r;else{const a={nodeName:"#documentType",name:t,publicId:n,systemId:r,parentNode:null};it.appendChild(e,a)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const n=e.childNodes[e.childNodes.length-1];if(it.isTextNode(n)){n.value+=t;return}}it.appendChild(e,Ru(t))},insertTextBefore(e,t,n){const r=e.childNodes[e.childNodes.indexOf(n)-1];r&&it.isTextNode(r)?r.value+=t:it.insertBefore(e,Ru(t),n)},adoptAttributes(e,t){const n=new Set(e.attrs.map(r=>r.name));for(let r=0;re.startsWith(n))}function Cd(e){return e.name===ia&&e.publicId===null&&(e.systemId===null||e.systemId===Td)}function Id(e){if(e.name!==ia)return Te.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===bd)return Te.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),_d.has(n))return Te.QUIRKS;let r=t===null?gd:aa;if(Lu(n,r))return Te.QUIRKS;if(r=t===null?sa:Ad,Lu(n,r))return Te.LIMITED_QUIRKS}return Te.NO_QUIRKS}const yu={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Nd="definitionurl",xd="definitionURL",Sd=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),kd=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:S.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:S.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:S.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:S.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:S.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:S.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:S.XLINK}],["xml:base",{prefix:"xml",name:"base",namespace:S.XML}],["xml:lang",{prefix:"xml",name:"lang",namespace:S.XML}],["xml:space",{prefix:"xml",name:"space",namespace:S.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:S.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:S.XMLNS}]]),Rd=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),Ld=new Set([s.B,s.BIG,s.BLOCKQUOTE,s.BODY,s.BR,s.CENTER,s.CODE,s.DD,s.DIV,s.DL,s.DT,s.EM,s.EMBED,s.H1,s.H2,s.H3,s.H4,s.H5,s.H6,s.HEAD,s.HR,s.I,s.IMG,s.LI,s.LISTING,s.MENU,s.META,s.NOBR,s.OL,s.P,s.PRE,s.RUBY,s.S,s.SMALL,s.SPAN,s.STRONG,s.STRIKE,s.SUB,s.SUP,s.TABLE,s.TT,s.U,s.UL,s.VAR]);function yd(e){const t=e.tagID;return t===s.FONT&&e.attrs.some(({name:r})=>r===Ye.COLOR||r===Ye.SIZE||r===Ye.FACE)||Ld.has(t)}function oa(e){for(let t=0;t0&&this._setContextModes(t,n)}onItemPop(t,n){var r,u;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(u=(r=this.treeAdapter).onItemPop)===null||u===void 0||u.call(r,t,this.openElements.current),n){let a,i;this.openElements.stackTop===0&&this.fragmentContext?(a=this.fragmentContext,i=this.fragmentContextID):{current:a,currentTagId:i}=this.openElements,this._setContextModes(a,i)}}_setContextModes(t,n){const r=t===this.document||this.treeAdapter.getNamespaceURI(t)===S.HTML;this.currentNotInHTML=!r,this.tokenizer.inForeignNode=!r&&!this._isIntegrationPoint(n,t)}_switchToTextParsing(t,n){this._insertElement(t,S.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=p.TEXT}switchToPlaintextParsing(){this.insertionMode=p.TEXT,this.originalInsertionMode=p.IN_BODY,this.tokenizer.state=ne.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===A.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==S.HTML))switch(this.fragmentContextID){case s.TITLE:case s.TEXTAREA:{this.tokenizer.state=ne.RCDATA;break}case s.STYLE:case s.XMP:case s.IFRAME:case s.NOEMBED:case s.NOFRAMES:case s.NOSCRIPT:{this.tokenizer.state=ne.RAWTEXT;break}case s.SCRIPT:{this.tokenizer.state=ne.SCRIPT_DATA;break}case s.PLAINTEXT:{this.tokenizer.state=ne.PLAINTEXT;break}}}_setDocumentType(t){const n=t.name||"",r=t.publicId||"",u=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,r,u),t.location){const i=this.treeAdapter.getChildNodes(this.document).find(o=>this.treeAdapter.isDocumentTypeNode(o));i&&this.treeAdapter.setNodeSourceCodeLocation(i,t.location)}}_attachElementToTree(t,n){if(this.options.sourceCodeLocationInfo){const r=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(t,r)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const r=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(r,t)}}_appendElement(t,n){const r=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(r,t.location)}_insertElement(t,n){const r=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID)}_insertFakeElement(t,n){const r=this.treeAdapter.createElement(t,S.HTML,[]);this._attachElementToTree(r,null),this.openElements.push(r,n)}_insertTemplate(t){const n=this.treeAdapter.createElement(t.tagName,S.HTML,t.attrs),r=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,r),this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(r,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(A.HTML,S.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,s.HTML)}_appendCommentNode(t,n){const r=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(n,r),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(r,t.location)}_insertCharacters(t){let n,r;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:r}=this._findFosterParentingLocation(),r?this.treeAdapter.insertTextBefore(n,t.chars,r):this.treeAdapter.insertText(n,t.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,t.chars)),!t.location)return;const u=this.treeAdapter.getChildNodes(n),a=r?u.lastIndexOf(r):u.length,i=u[a-1];if(this.treeAdapter.getNodeSourceCodeLocation(i)){const{endLine:l,endCol:c,endOffset:h}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(i,{endLine:l,endCol:c,endOffset:h})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(i,t.location)}_adoptNodes(t,n){for(let r=this.treeAdapter.getFirstChild(t);r;r=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(r),this.treeAdapter.appendChild(n,r)}_setEndLocation(t,n){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&n.location){const r=n.location,u=this.treeAdapter.getTagName(t),a=n.type===Y.END_TAG&&u===n.tagName?{endTag:{...r},endLine:r.endLine,endCol:r.endCol,endOffset:r.endOffset}:{endLine:r.startLine,endCol:r.startCol,endOffset:r.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,a)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let n,r;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,r=this.fragmentContextID):{current:n,currentTagId:r}=this.openElements,t.tagID===s.SVG&&this.treeAdapter.getTagName(n)===A.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===S.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===s.MGLYPH||t.tagID===s.MALIGNMARK)&&!this._isIntegrationPoint(r,n,S.HTML)}_processToken(t){switch(t.type){case Y.CHARACTER:{this.onCharacter(t);break}case Y.NULL_CHARACTER:{this.onNullCharacter(t);break}case Y.COMMENT:{this.onComment(t);break}case Y.DOCTYPE:{this.onDoctype(t);break}case Y.START_TAG:{this._processStartTag(t);break}case Y.END_TAG:{this.onEndTag(t);break}case Y.EOF:{this.onEof(t);break}case Y.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,n,r){const u=this.treeAdapter.getNamespaceURI(n),a=this.treeAdapter.getAttrList(n);return Md(t,u,a,r)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const n=this.activeFormattingElements.entries.findIndex(u=>u.type===xe.Marker||this.openElements.contains(u.element)),r=n<0?t-1:n-1;for(let u=r;u>=0;u--){const a=this.activeFormattingElements.entries[u];this._insertElement(a.token,this.treeAdapter.getNamespaceURI(a.element)),a.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=p.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(s.P),this.openElements.popUntilTagNamePopped(s.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case s.TR:{this.insertionMode=p.IN_ROW;return}case s.TBODY:case s.THEAD:case s.TFOOT:{this.insertionMode=p.IN_TABLE_BODY;return}case s.CAPTION:{this.insertionMode=p.IN_CAPTION;return}case s.COLGROUP:{this.insertionMode=p.IN_COLUMN_GROUP;return}case s.TABLE:{this.insertionMode=p.IN_TABLE;return}case s.BODY:{this.insertionMode=p.IN_BODY;return}case s.FRAMESET:{this.insertionMode=p.IN_FRAMESET;return}case s.SELECT:{this._resetInsertionModeForSelect(t);return}case s.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case s.HTML:{this.insertionMode=this.headElement?p.AFTER_HEAD:p.BEFORE_HEAD;return}case s.TD:case s.TH:{if(t>0){this.insertionMode=p.IN_CELL;return}break}case s.HEAD:{if(t>0){this.insertionMode=p.IN_HEAD;return}break}}this.insertionMode=p.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let n=t-1;n>0;n--){const r=this.openElements.tagIDs[n];if(r===s.TEMPLATE)break;if(r===s.TABLE){this.insertionMode=p.IN_SELECT_IN_TABLE;return}}this.insertionMode=p.IN_SELECT}_isElementCausesFosterParenting(t){return ca.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case s.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===S.HTML)return{parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case s.TABLE:{const r=this.treeAdapter.getParentNode(n);return r?{parent:r,beforeElement:n}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,t,n.beforeElement):this.treeAdapter.appendChild(n.parent,t)}_isSpecialElement(t,n){const r=this.treeAdapter.getNamespaceURI(t);return ud[r].has(n)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){m1(this,t);return}switch(this.insertionMode){case p.INITIAL:{_t(this,t);break}case p.BEFORE_HTML:{St(this,t);break}case p.BEFORE_HEAD:{kt(this,t);break}case p.IN_HEAD:{Rt(this,t);break}case p.IN_HEAD_NO_SCRIPT:{Lt(this,t);break}case p.AFTER_HEAD:{yt(this,t);break}case p.IN_BODY:case p.IN_CAPTION:case p.IN_CELL:case p.IN_TEMPLATE:{ha(this,t);break}case p.TEXT:case p.IN_SELECT:case p.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case p.IN_TABLE:case p.IN_TABLE_BODY:case p.IN_ROW:{Mn(this,t);break}case p.IN_TABLE_TEXT:{ba(this,t);break}case p.IN_COLUMN_GROUP:{nn(this,t);break}case p.AFTER_BODY:{rn(this,t);break}case p.AFTER_AFTER_BODY:{$t(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){d1(this,t);return}switch(this.insertionMode){case p.INITIAL:{_t(this,t);break}case p.BEFORE_HTML:{St(this,t);break}case p.BEFORE_HEAD:{kt(this,t);break}case p.IN_HEAD:{Rt(this,t);break}case p.IN_HEAD_NO_SCRIPT:{Lt(this,t);break}case p.AFTER_HEAD:{yt(this,t);break}case p.TEXT:{this._insertCharacters(t);break}case p.IN_TABLE:case p.IN_TABLE_BODY:case p.IN_ROW:{Mn(this,t);break}case p.IN_COLUMN_GROUP:{nn(this,t);break}case p.AFTER_BODY:{rn(this,t);break}case p.AFTER_AFTER_BODY:{$t(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Gn(this,t);return}switch(this.insertionMode){case p.INITIAL:case p.BEFORE_HTML:case p.BEFORE_HEAD:case p.IN_HEAD:case p.IN_HEAD_NO_SCRIPT:case p.AFTER_HEAD:case p.IN_BODY:case p.IN_TABLE:case p.IN_CAPTION:case p.IN_COLUMN_GROUP:case p.IN_TABLE_BODY:case p.IN_ROW:case p.IN_CELL:case p.IN_SELECT:case p.IN_SELECT_IN_TABLE:case p.IN_TEMPLATE:case p.IN_FRAMESET:case p.AFTER_FRAMESET:{Gn(this,t);break}case p.IN_TABLE_TEXT:{At(this,t);break}case p.AFTER_BODY:{Wd(this,t);break}case p.AFTER_AFTER_BODY:case p.AFTER_AFTER_FRAMESET:{Qd(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case p.INITIAL:{jd(this,t);break}case p.BEFORE_HEAD:case p.IN_HEAD:case p.IN_HEAD_NO_SCRIPT:case p.AFTER_HEAD:{this._err(t,C.misplacedDoctype);break}case p.IN_TABLE_TEXT:{At(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,C.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?E1(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case p.INITIAL:{_t(this,t);break}case p.BEFORE_HTML:{Gd(this,t);break}case p.BEFORE_HEAD:{Kd(this,t);break}case p.IN_HEAD:{ke(this,t);break}case p.IN_HEAD_NO_SCRIPT:{Zd(this,t);break}case p.AFTER_HEAD:{tm(this,t);break}case p.IN_BODY:{fe(this,t);break}case p.IN_TABLE:{lt(this,t);break}case p.IN_TABLE_TEXT:{At(this,t);break}case p.IN_CAPTION:{$m(this,t);break}case p.IN_COLUMN_GROUP:{pr(this,t);break}case p.IN_TABLE_BODY:{En(this,t);break}case p.IN_ROW:{pn(this,t);break}case p.IN_CELL:{e1(this,t);break}case p.IN_SELECT:{Aa(this,t);break}case p.IN_SELECT_IN_TABLE:{n1(this,t);break}case p.IN_TEMPLATE:{u1(this,t);break}case p.AFTER_BODY:{a1(this,t);break}case p.IN_FRAMESET:{s1(this,t);break}case p.AFTER_FRAMESET:{l1(this,t);break}case p.AFTER_AFTER_BODY:{f1(this,t);break}case p.AFTER_AFTER_FRAMESET:{h1(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?p1(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case p.INITIAL:{_t(this,t);break}case p.BEFORE_HTML:{Xd(this,t);break}case p.BEFORE_HEAD:{$d(this,t);break}case p.IN_HEAD:{Jd(this,t);break}case p.IN_HEAD_NO_SCRIPT:{em(this,t);break}case p.AFTER_HEAD:{nm(this,t);break}case p.IN_BODY:{mn(this,t);break}case p.TEXT:{zm(this,t);break}case p.IN_TABLE:{Pt(this,t);break}case p.IN_TABLE_TEXT:{At(this,t);break}case p.IN_CAPTION:{Jm(this,t);break}case p.IN_COLUMN_GROUP:{Zm(this,t);break}case p.IN_TABLE_BODY:{Xn(this,t);break}case p.IN_ROW:{_a(this,t);break}case p.IN_CELL:{t1(this,t);break}case p.IN_SELECT:{Ca(this,t);break}case p.IN_SELECT_IN_TABLE:{r1(this,t);break}case p.IN_TEMPLATE:{i1(this,t);break}case p.AFTER_BODY:{Na(this,t);break}case p.IN_FRAMESET:{o1(this,t);break}case p.AFTER_FRAMESET:{c1(this,t);break}case p.AFTER_AFTER_BODY:{$t(this,t);break}}}onEof(t){switch(this.insertionMode){case p.INITIAL:{_t(this,t);break}case p.BEFORE_HTML:{St(this,t);break}case p.BEFORE_HEAD:{kt(this,t);break}case p.IN_HEAD:{Rt(this,t);break}case p.IN_HEAD_NO_SCRIPT:{Lt(this,t);break}case p.AFTER_HEAD:{yt(this,t);break}case p.IN_BODY:case p.IN_TABLE:case p.IN_CAPTION:case p.IN_COLUMN_GROUP:case p.IN_TABLE_BODY:case p.IN_ROW:case p.IN_CELL:case p.IN_SELECT:case p.IN_SELECT_IN_TABLE:{pa(this,t);break}case p.TEXT:{Ym(this,t);break}case p.IN_TABLE_TEXT:{At(this,t);break}case p.IN_TEMPLATE:{Ia(this,t);break}case p.AFTER_BODY:case p.IN_FRAMESET:case p.AFTER_FRAMESET:case p.AFTER_AFTER_BODY:case p.AFTER_AFTER_FRAMESET:{Er(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===d.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case p.IN_HEAD:case p.IN_HEAD_NO_SCRIPT:case p.AFTER_HEAD:case p.TEXT:case p.IN_COLUMN_GROUP:case p.IN_SELECT:case p.IN_SELECT_IN_TABLE:case p.IN_FRAMESET:case p.AFTER_FRAMESET:{this._insertCharacters(t);break}case p.IN_BODY:case p.IN_CAPTION:case p.IN_CELL:case p.IN_TEMPLATE:case p.AFTER_BODY:case p.AFTER_AFTER_BODY:case p.AFTER_AFTER_FRAMESET:{fa(this,t);break}case p.IN_TABLE:case p.IN_TABLE_BODY:case p.IN_ROW:{Mn(this,t);break}case p.IN_TABLE_TEXT:{Ta(this,t);break}}}}function Ud(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Ea(e,t),n}function vd(e,t){let n=null,r=e.openElements.stackTop;for(;r>=0;r--){const u=e.openElements.items[r];if(u===t.element)break;e._isSpecialElement(u,e.openElements.tagIDs[r])&&(n=u)}return n||(e.openElements.shortenToLength(r<0?0:r),e.activeFormattingElements.removeEntry(t)),n}function zd(e,t,n){let r=t,u=e.openElements.getCommonAncestor(t);for(let a=0,i=u;i!==n;a++,i=u){u=e.openElements.getCommonAncestor(i);const o=e.activeFormattingElements.getElementEntry(i),l=o&&a>=Fd;!o||l?(l&&e.activeFormattingElements.removeEntry(o),e.openElements.remove(i)):(i=Yd(e,o),r===t&&(e.activeFormattingElements.bookmark=o),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(i,r),r=i)}return r}function Yd(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function qd(e,t,n){const r=e.treeAdapter.getTagName(t),u=dt(r);if(e._isElementCausesFosterParenting(u))e._fosterParentElement(n);else{const a=e.treeAdapter.getNamespaceURI(t);u===s.TEMPLATE&&a===S.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function Vd(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),{token:u}=n,a=e.treeAdapter.createElement(u.tagName,r,u.attrs);e._adoptNodes(t,a),e.treeAdapter.appendChild(t,a),e.activeFormattingElements.insertElementAfterBookmark(a,u),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,a,u.tagID)}function mr(e,t){for(let n=0;n=n;r--)e._setEndLocation(e.openElements.items[r],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const r=e.openElements.items[0],u=e.treeAdapter.getNodeSourceCodeLocation(r);if(u&&!u.endTag&&(e._setEndLocation(r,t),e.openElements.stackTop>=1)){const a=e.openElements.items[1],i=e.treeAdapter.getNodeSourceCodeLocation(a);i&&!i.endTag&&e._setEndLocation(a,t)}}}}function jd(e,t){e._setDocumentType(t);const n=t.forceQuirks?Te.QUIRKS:Id(t);Cd(t)||e._err(t,C.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=p.BEFORE_HTML}function _t(e,t){e._err(t,C.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,Te.QUIRKS),e.insertionMode=p.BEFORE_HTML,e._processToken(t)}function Gd(e,t){t.tagID===s.HTML?(e._insertElement(t,S.HTML),e.insertionMode=p.BEFORE_HEAD):St(e,t)}function Xd(e,t){const n=t.tagID;(n===s.HTML||n===s.HEAD||n===s.BODY||n===s.BR)&&St(e,t)}function St(e,t){e._insertFakeRootElement(),e.insertionMode=p.BEFORE_HEAD,e._processToken(t)}function Kd(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.HEAD:{e._insertElement(t,S.HTML),e.headElement=e.openElements.current,e.insertionMode=p.IN_HEAD;break}default:kt(e,t)}}function $d(e,t){const n=t.tagID;n===s.HEAD||n===s.BODY||n===s.HTML||n===s.BR?kt(e,t):e._err(t,C.endTagWithoutMatchingOpenElement)}function kt(e,t){e._insertFakeElement(A.HEAD,s.HEAD),e.headElement=e.openElements.current,e.insertionMode=p.IN_HEAD,e._processToken(t)}function ke(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.BASE:case s.BASEFONT:case s.BGSOUND:case s.LINK:case s.META:{e._appendElement(t,S.HTML),t.ackSelfClosing=!0;break}case s.TITLE:{e._switchToTextParsing(t,ne.RCDATA);break}case s.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,ne.RAWTEXT):(e._insertElement(t,S.HTML),e.insertionMode=p.IN_HEAD_NO_SCRIPT);break}case s.NOFRAMES:case s.STYLE:{e._switchToTextParsing(t,ne.RAWTEXT);break}case s.SCRIPT:{e._switchToTextParsing(t,ne.SCRIPT_DATA);break}case s.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=p.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(p.IN_TEMPLATE);break}case s.HEAD:{e._err(t,C.misplacedStartTagForHeadElement);break}default:Rt(e,t)}}function Jd(e,t){switch(t.tagID){case s.HEAD:{e.openElements.pop(),e.insertionMode=p.AFTER_HEAD;break}case s.BODY:case s.BR:case s.HTML:{Rt(e,t);break}case s.TEMPLATE:{Ze(e,t);break}default:e._err(t,C.endTagWithoutMatchingOpenElement)}}function Ze(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==s.TEMPLATE&&e._err(t,C.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(s.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,C.endTagWithoutMatchingOpenElement)}function Rt(e,t){e.openElements.pop(),e.insertionMode=p.AFTER_HEAD,e._processToken(t)}function Zd(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.BASEFONT:case s.BGSOUND:case s.HEAD:case s.LINK:case s.META:case s.NOFRAMES:case s.STYLE:{ke(e,t);break}case s.NOSCRIPT:{e._err(t,C.nestedNoscriptInHead);break}default:Lt(e,t)}}function em(e,t){switch(t.tagID){case s.NOSCRIPT:{e.openElements.pop(),e.insertionMode=p.IN_HEAD;break}case s.BR:{Lt(e,t);break}default:e._err(t,C.endTagWithoutMatchingOpenElement)}}function Lt(e,t){const n=t.type===Y.EOF?C.openElementsLeftAfterEof:C.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=p.IN_HEAD,e._processToken(t)}function tm(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.BODY:{e._insertElement(t,S.HTML),e.framesetOk=!1,e.insertionMode=p.IN_BODY;break}case s.FRAMESET:{e._insertElement(t,S.HTML),e.insertionMode=p.IN_FRAMESET;break}case s.BASE:case s.BASEFONT:case s.BGSOUND:case s.LINK:case s.META:case s.NOFRAMES:case s.SCRIPT:case s.STYLE:case s.TEMPLATE:case s.TITLE:{e._err(t,C.abandonedHeadElementChild),e.openElements.push(e.headElement,s.HEAD),ke(e,t),e.openElements.remove(e.headElement);break}case s.HEAD:{e._err(t,C.misplacedStartTagForHeadElement);break}default:yt(e,t)}}function nm(e,t){switch(t.tagID){case s.BODY:case s.HTML:case s.BR:{yt(e,t);break}case s.TEMPLATE:{Ze(e,t);break}default:e._err(t,C.endTagWithoutMatchingOpenElement)}}function yt(e,t){e._insertFakeElement(A.BODY,s.BODY),e.insertionMode=p.IN_BODY,dn(e,t)}function dn(e,t){switch(t.type){case Y.CHARACTER:{ha(e,t);break}case Y.WHITESPACE_CHARACTER:{fa(e,t);break}case Y.COMMENT:{Gn(e,t);break}case Y.START_TAG:{fe(e,t);break}case Y.END_TAG:{mn(e,t);break}case Y.EOF:{pa(e,t);break}}}function fa(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function ha(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function rm(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function um(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}function im(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,S.HTML),e.insertionMode=p.IN_FRAMESET)}function am(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML)}function sm(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),ea(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,S.HTML)}function om(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function lm(e,t){const n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML),n||(e.formElement=e.openElements.current))}function cm(e,t){e.framesetOk=!1;const n=t.tagID;for(let r=e.openElements.stackTop;r>=0;r--){const u=e.openElements.tagIDs[r];if(n===s.LI&&u===s.LI||(n===s.DD||n===s.DT)&&(u===s.DD||u===s.DT)){e.openElements.generateImpliedEndTagsWithExclusion(u),e.openElements.popUntilTagNamePopped(u);break}if(u!==s.ADDRESS&&u!==s.DIV&&u!==s.P&&e._isSpecialElement(e.openElements.items[r],u))break}e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML)}function fm(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML),e.tokenizer.state=ne.PLAINTEXT}function hm(e,t){e.openElements.hasInScope(s.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(s.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML),e.framesetOk=!1}function dm(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(A.A);n&&(mr(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function mm(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function Em(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(s.NOBR)&&(mr(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,S.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function pm(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function Tm(e,t){e.treeAdapter.getDocumentMode(e.document)!==Te.QUIRKS&&e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._insertElement(t,S.HTML),e.framesetOk=!1,e.insertionMode=p.IN_TABLE}function da(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,S.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function ma(e){const t=$i(e,Ye.TYPE);return t!=null&&t.toLowerCase()===wd}function bm(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,S.HTML),ma(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function gm(e,t){e._appendElement(t,S.HTML),t.ackSelfClosing=!0}function _m(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._appendElement(t,S.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Am(e,t){t.tagName=A.IMG,t.tagID=s.IMG,da(e,t)}function Cm(e,t){e._insertElement(t,S.HTML),e.skipNextNewLine=!0,e.tokenizer.state=ne.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=p.TEXT}function Im(e,t){e.openElements.hasInButtonScope(s.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,ne.RAWTEXT)}function Nm(e,t){e.framesetOk=!1,e._switchToTextParsing(t,ne.RAWTEXT)}function Pu(e,t){e._switchToTextParsing(t,ne.RAWTEXT)}function xm(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===p.IN_TABLE||e.insertionMode===p.IN_CAPTION||e.insertionMode===p.IN_TABLE_BODY||e.insertionMode===p.IN_ROW||e.insertionMode===p.IN_CELL?p.IN_SELECT_IN_TABLE:p.IN_SELECT}function Sm(e,t){e.openElements.currentTagId===s.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML)}function km(e,t){e.openElements.hasInScope(s.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,S.HTML)}function Rm(e,t){e.openElements.hasInScope(s.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(s.RTC),e._insertElement(t,S.HTML)}function Lm(e,t){e._reconstructActiveFormattingElements(),oa(t),dr(t),t.selfClosing?e._appendElement(t,S.MATHML):e._insertElement(t,S.MATHML),t.ackSelfClosing=!0}function ym(e,t){e._reconstructActiveFormattingElements(),la(t),dr(t),t.selfClosing?e._appendElement(t,S.SVG):e._insertElement(t,S.SVG),t.ackSelfClosing=!0}function Mu(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,S.HTML)}function fe(e,t){switch(t.tagID){case s.I:case s.S:case s.B:case s.U:case s.EM:case s.TT:case s.BIG:case s.CODE:case s.FONT:case s.SMALL:case s.STRIKE:case s.STRONG:{mm(e,t);break}case s.A:{dm(e,t);break}case s.H1:case s.H2:case s.H3:case s.H4:case s.H5:case s.H6:{sm(e,t);break}case s.P:case s.DL:case s.OL:case s.UL:case s.DIV:case s.DIR:case s.NAV:case s.MAIN:case s.MENU:case s.ASIDE:case s.CENTER:case s.FIGURE:case s.FOOTER:case s.HEADER:case s.HGROUP:case s.DIALOG:case s.DETAILS:case s.ADDRESS:case s.ARTICLE:case s.SECTION:case s.SUMMARY:case s.FIELDSET:case s.BLOCKQUOTE:case s.FIGCAPTION:{am(e,t);break}case s.LI:case s.DD:case s.DT:{cm(e,t);break}case s.BR:case s.IMG:case s.WBR:case s.AREA:case s.EMBED:case s.KEYGEN:{da(e,t);break}case s.HR:{_m(e,t);break}case s.RB:case s.RTC:{km(e,t);break}case s.RT:case s.RP:{Rm(e,t);break}case s.PRE:case s.LISTING:{om(e,t);break}case s.XMP:{Im(e,t);break}case s.SVG:{ym(e,t);break}case s.HTML:{rm(e,t);break}case s.BASE:case s.LINK:case s.META:case s.STYLE:case s.TITLE:case s.SCRIPT:case s.BGSOUND:case s.BASEFONT:case s.TEMPLATE:{ke(e,t);break}case s.BODY:{um(e,t);break}case s.FORM:{lm(e,t);break}case s.NOBR:{Em(e,t);break}case s.MATH:{Lm(e,t);break}case s.TABLE:{Tm(e,t);break}case s.INPUT:{bm(e,t);break}case s.PARAM:case s.TRACK:case s.SOURCE:{gm(e,t);break}case s.IMAGE:{Am(e,t);break}case s.BUTTON:{hm(e,t);break}case s.APPLET:case s.OBJECT:case s.MARQUEE:{pm(e,t);break}case s.IFRAME:{Nm(e,t);break}case s.SELECT:{xm(e,t);break}case s.OPTION:case s.OPTGROUP:{Sm(e,t);break}case s.NOEMBED:{Pu(e,t);break}case s.FRAMESET:{im(e,t);break}case s.TEXTAREA:{Cm(e,t);break}case s.NOSCRIPT:{e.options.scriptingEnabled?Pu(e,t):Mu(e,t);break}case s.PLAINTEXT:{fm(e,t);break}case s.COL:case s.TH:case s.TD:case s.TR:case s.HEAD:case s.FRAME:case s.TBODY:case s.TFOOT:case s.THEAD:case s.CAPTION:case s.COLGROUP:break;default:Mu(e,t)}}function Om(e,t){if(e.openElements.hasInScope(s.BODY)&&(e.insertionMode=p.AFTER_BODY,e.options.sourceCodeLocationInfo)){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t)}}function Dm(e,t){e.openElements.hasInScope(s.BODY)&&(e.insertionMode=p.AFTER_BODY,Na(e,t))}function Pm(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Mm(e){const t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(s.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(s.FORM):n&&e.openElements.remove(n))}function wm(e){e.openElements.hasInButtonScope(s.P)||e._insertFakeElement(A.P,s.P),e._closePElement()}function Bm(e){e.openElements.hasInListItemScope(s.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(s.LI),e.openElements.popUntilTagNamePopped(s.LI))}function Fm(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}function Hm(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function Um(e,t){const n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function vm(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(A.BR,s.BR),e.openElements.pop(),e.framesetOk=!1}function Ea(e,t){const n=t.tagName,r=t.tagID;for(let u=e.openElements.stackTop;u>0;u--){const a=e.openElements.items[u],i=e.openElements.tagIDs[u];if(r===i&&(r!==s.UNKNOWN||e.treeAdapter.getTagName(a)===n)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.stackTop>=u&&e.openElements.shortenToLength(u);break}if(e._isSpecialElement(a,i))break}}function mn(e,t){switch(t.tagID){case s.A:case s.B:case s.I:case s.S:case s.U:case s.EM:case s.TT:case s.BIG:case s.CODE:case s.FONT:case s.NOBR:case s.SMALL:case s.STRIKE:case s.STRONG:{mr(e,t);break}case s.P:{wm(e);break}case s.DL:case s.UL:case s.OL:case s.DIR:case s.DIV:case s.NAV:case s.PRE:case s.MAIN:case s.MENU:case s.ASIDE:case s.BUTTON:case s.CENTER:case s.FIGURE:case s.FOOTER:case s.HEADER:case s.HGROUP:case s.DIALOG:case s.ADDRESS:case s.ARTICLE:case s.DETAILS:case s.SECTION:case s.SUMMARY:case s.LISTING:case s.FIELDSET:case s.BLOCKQUOTE:case s.FIGCAPTION:{Pm(e,t);break}case s.LI:{Bm(e);break}case s.DD:case s.DT:{Fm(e,t);break}case s.H1:case s.H2:case s.H3:case s.H4:case s.H5:case s.H6:{Hm(e);break}case s.BR:{vm(e);break}case s.BODY:{Om(e,t);break}case s.HTML:{Dm(e,t);break}case s.FORM:{Mm(e);break}case s.APPLET:case s.OBJECT:case s.MARQUEE:{Um(e,t);break}case s.TEMPLATE:{Ze(e,t);break}default:Ea(e,t)}}function pa(e,t){e.tmplInsertionModeStack.length>0?Ia(e,t):Er(e,t)}function zm(e,t){var n;t.tagID===s.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function Ym(e,t){e._err(t,C.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function Mn(e,t){if(ca.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=p.IN_TABLE_TEXT,t.type){case Y.CHARACTER:{ba(e,t);break}case Y.WHITESPACE_CHARACTER:{Ta(e,t);break}}else Ht(e,t)}function qm(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,S.HTML),e.insertionMode=p.IN_CAPTION}function Vm(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,S.HTML),e.insertionMode=p.IN_COLUMN_GROUP}function Wm(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(A.COLGROUP,s.COLGROUP),e.insertionMode=p.IN_COLUMN_GROUP,pr(e,t)}function Qm(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,S.HTML),e.insertionMode=p.IN_TABLE_BODY}function jm(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(A.TBODY,s.TBODY),e.insertionMode=p.IN_TABLE_BODY,En(e,t)}function Gm(e,t){e.openElements.hasInTableScope(s.TABLE)&&(e.openElements.popUntilTagNamePopped(s.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function Xm(e,t){ma(t)?e._appendElement(t,S.HTML):Ht(e,t),t.ackSelfClosing=!0}function Km(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,S.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function lt(e,t){switch(t.tagID){case s.TD:case s.TH:case s.TR:{jm(e,t);break}case s.STYLE:case s.SCRIPT:case s.TEMPLATE:{ke(e,t);break}case s.COL:{Wm(e,t);break}case s.FORM:{Km(e,t);break}case s.TABLE:{Gm(e,t);break}case s.TBODY:case s.TFOOT:case s.THEAD:{Qm(e,t);break}case s.INPUT:{Xm(e,t);break}case s.CAPTION:{qm(e,t);break}case s.COLGROUP:{Vm(e,t);break}default:Ht(e,t)}}function Pt(e,t){switch(t.tagID){case s.TABLE:{e.openElements.hasInTableScope(s.TABLE)&&(e.openElements.popUntilTagNamePopped(s.TABLE),e._resetInsertionMode());break}case s.TEMPLATE:{Ze(e,t);break}case s.BODY:case s.CAPTION:case s.COL:case s.COLGROUP:case s.HTML:case s.TBODY:case s.TD:case s.TFOOT:case s.TH:case s.THEAD:case s.TR:break;default:Ht(e,t)}}function Ht(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,dn(e,t),e.fosterParentingEnabled=n}function Ta(e,t){e.pendingCharacterTokens.push(t)}function ba(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function At(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0&&e.openElements.currentTagId===s.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===s.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===s.OPTGROUP&&e.openElements.pop();break}case s.OPTION:{e.openElements.currentTagId===s.OPTION&&e.openElements.pop();break}case s.SELECT:{e.openElements.hasInSelectScope(s.SELECT)&&(e.openElements.popUntilTagNamePopped(s.SELECT),e._resetInsertionMode());break}case s.TEMPLATE:{Ze(e,t);break}}}function n1(e,t){const n=t.tagID;n===s.CAPTION||n===s.TABLE||n===s.TBODY||n===s.TFOOT||n===s.THEAD||n===s.TR||n===s.TD||n===s.TH?(e.openElements.popUntilTagNamePopped(s.SELECT),e._resetInsertionMode(),e._processStartTag(t)):Aa(e,t)}function r1(e,t){const n=t.tagID;n===s.CAPTION||n===s.TABLE||n===s.TBODY||n===s.TFOOT||n===s.THEAD||n===s.TR||n===s.TD||n===s.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(s.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ca(e,t)}function u1(e,t){switch(t.tagID){case s.BASE:case s.BASEFONT:case s.BGSOUND:case s.LINK:case s.META:case s.NOFRAMES:case s.SCRIPT:case s.STYLE:case s.TEMPLATE:case s.TITLE:{ke(e,t);break}case s.CAPTION:case s.COLGROUP:case s.TBODY:case s.TFOOT:case s.THEAD:{e.tmplInsertionModeStack[0]=p.IN_TABLE,e.insertionMode=p.IN_TABLE,lt(e,t);break}case s.COL:{e.tmplInsertionModeStack[0]=p.IN_COLUMN_GROUP,e.insertionMode=p.IN_COLUMN_GROUP,pr(e,t);break}case s.TR:{e.tmplInsertionModeStack[0]=p.IN_TABLE_BODY,e.insertionMode=p.IN_TABLE_BODY,En(e,t);break}case s.TD:case s.TH:{e.tmplInsertionModeStack[0]=p.IN_ROW,e.insertionMode=p.IN_ROW,pn(e,t);break}default:e.tmplInsertionModeStack[0]=p.IN_BODY,e.insertionMode=p.IN_BODY,fe(e,t)}}function i1(e,t){t.tagID===s.TEMPLATE&&Ze(e,t)}function Ia(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(s.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Er(e,t)}function a1(e,t){t.tagID===s.HTML?fe(e,t):rn(e,t)}function Na(e,t){var n;if(t.tagID===s.HTML){if(e.fragmentContext||(e.insertionMode=p.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===s.HTML){e._setEndLocation(e.openElements.items[0],t);const r=e.openElements.items[1];r&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(r))===null||n===void 0)&&n.endTag)&&e._setEndLocation(r,t)}}else rn(e,t)}function rn(e,t){e.insertionMode=p.IN_BODY,dn(e,t)}function s1(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.FRAMESET:{e._insertElement(t,S.HTML);break}case s.FRAME:{e._appendElement(t,S.HTML),t.ackSelfClosing=!0;break}case s.NOFRAMES:{ke(e,t);break}}}function o1(e,t){t.tagID===s.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==s.FRAMESET&&(e.insertionMode=p.AFTER_FRAMESET))}function l1(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.NOFRAMES:{ke(e,t);break}}}function c1(e,t){t.tagID===s.HTML&&(e.insertionMode=p.AFTER_AFTER_FRAMESET)}function f1(e,t){t.tagID===s.HTML?fe(e,t):$t(e,t)}function $t(e,t){e.insertionMode=p.IN_BODY,dn(e,t)}function h1(e,t){switch(t.tagID){case s.HTML:{fe(e,t);break}case s.NOFRAMES:{ke(e,t);break}}}function d1(e,t){t.chars=ee,e._insertCharacters(t)}function m1(e,t){e._insertCharacters(t),e.framesetOk=!1}function xa(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==S.HTML&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function E1(e,t){if(yd(t))xa(e),e._startTagOutsideForeignContent(t);else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===S.MATHML?oa(t):r===S.SVG&&(Od(t),la(t)),dr(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}function p1(e,t){if(t.tagID===s.P||t.tagID===s.BR){xa(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===S.HTML){e._endTagOutsideForeignContent(t);break}const u=e.treeAdapter.getTagName(r);if(u.toLowerCase()===t.tagName){t.tagName=u,e.openElements.shortenToLength(n);break}}}A.AREA,A.BASE,A.BASEFONT,A.BGSOUND,A.BR,A.COL,A.EMBED,A.FRAME,A.HR,A.IMG,A.INPUT,A.KEYGEN,A.LINK,A.META,A.PARAM,A.SOURCE,A.TRACK,A.WBR;const T1=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),wu={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Sa(e,t){const n=k1(e),r=Ni("type",{handlers:{root:b1,element:g1,text:_1,comment:Ra,doctype:A1,raw:I1},unknown:N1}),u={parser:n?new Du(wu):Du.getFragmentParser(void 0,wu),handle(o){r(o,u)},stitches:!1,options:t||{}};r(e,u),mt(u,Oe());const a=n?u.parser.document:u.parser.getFragment(),i=Lh(a,{file:u.options.file});return u.stitches&&hn(i,"comment",function(o,l,c){const h=o;if(h.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=h.value.stitch,l}}),i.type==="root"&&i.children.length===1&&i.children[0].type===e.type?i.children[0]:i}function ka(e,t){let n=-1;if(e)for(;++n4&&(t.parser.tokenizer.state=0);const n={type:Y.CHARACTER,chars:e.value,location:Ut(e)};mt(t,Oe(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function A1(e,t){const n={type:Y.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Ut(e)};mt(t,Oe(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function C1(e,t){t.stitches=!0;const n=R1(e);if("children"in e&&"children"in n){const r=Sa({type:"root",children:e.children},t.options);n.children=r.children}Ra({type:"comment",value:{stitch:n}},t)}function Ra(e,t){const n=e.value,r={type:Y.COMMENT,data:n,location:Ut(e)};mt(t,Oe(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function I1(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,La(t,Oe(e)),t.parser.tokenizer.write(e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const n=t.parser.tokenizer._consume();t.parser.tokenizer._callState(n)}}function N1(e,t){const n=e;if(t.options.passThrough&&t.options.passThrough.includes(n.type))C1(n,t);else{let r="";throw T1.has(n.type)&&(r=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+n.type+"` node"+r)}}function mt(e,t){La(e,t);const n=e.parser.tokenizer.currentCharacterToken;n&&n.location&&(n.location.endLine=e.parser.tokenizer.preprocessor.line,n.location.endCol=e.parser.tokenizer.preprocessor.col+1,n.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=n,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=ne.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function La(e,t){if(t&&t.offset!==void 0){const n={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=n}}function x1(e,t){const n=e.tagName.toLowerCase();if(t.parser.tokenizer.state===ne.PLAINTEXT)return;mt(t,Oe(e));const r=t.parser.openElements.current;let u="namespaceURI"in r?r.namespaceURI:Ke.html;u===Ke.html&&n==="svg"&&(u=Ke.svg);const a=Mh({...e,children:[]},{space:u===Ke.svg?"svg":"html"}),i={type:Y.START_TAG,tagName:n,tagID:dt(n),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in a?a.attrs:[],location:Ut(e)};t.parser.currentToken=i,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=n}function S1(e,t){const n=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&Yh.includes(n)||t.parser.tokenizer.state===ne.PLAINTEXT)return;mt(t,an(e));const r={type:Y.END_TAG,tagName:n,tagID:dt(n),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Ut(e)};t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken),n===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===ne.RCDATA||t.parser.tokenizer.state===ne.RAWTEXT||t.parser.tokenizer.state===ne.SCRIPT_DATA)&&(t.parser.tokenizer.state=ne.DATA)}function k1(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Ut(e){const t=Oe(e)||{line:void 0,column:void 0,offset:void 0},n=an(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}function R1(e){return"children"in e?ot({...e,children:[]}):ot(e)}function L1(e){return function(t,n){return Sa(t,{...e,file:n})}}const y1=()=>{const[e,t]=zt.useState(""),[n,r]=zt.useState(!0),[u,a]=zt.useState(null);return zt.useEffect(()=>{(async()=>{try{const o=await fetch("/readme.md");if(!o.ok)throw new Error("Failed to fetch README");const l=await o.text();t(l)}catch(o){a(o.message)}finally{r(!1)}})()},[]),n?Le.jsx("p",{children:"Loading..."}):u?Le.jsxs("p",{children:["Error: ",u]}):Le.jsx("div",{className:"prose",children:Le.jsx(i0,{className:"[&_p]:m-[revert] [&_a]:text-[var(--color2)] [&_h3]:m-revert [&_h2]:m-revert [&_ul]:list-disc [&_ul]:p-[revert] [&_h3]:text-xl [&_h2]:text-xl [&_h3]:font-bold [&_h2]:font-bold max-w-[750px] [&_pre]:p-[10px] [&_pre]:bg-[#00000054] [&_pre]:m-[revert] [&_code]:whitespace-pre-wrap",remarkPlugins:[Th],rehypePlugins:[L1],children:e})})},O1=()=>Le.jsxs("div",{style:{paddingBottom:"50px"},children:[Le.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Home"}),Le.jsx(y1,{})]}),P1=va("/")({component:O1});export{P1 as Route}; diff --git a/web-ui/dist/assets/index.lazy-WgUoo0uP.js b/web-ui/dist/assets/index.lazy-WgUoo0uP.js deleted file mode 100644 index 8ea0a76..0000000 --- a/web-ui/dist/assets/index.lazy-WgUoo0uP.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,d as s}from"./index-BAcZo2i6.js";const r=()=>e.jsxs("div",{style:{paddingBottom:"50px"},children:[e.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Home"}),e.jsxs("div",{style:{marginTop:"20px"},children:[e.jsx("h3",{children:"ODD-BOX"}),e.jsx("hr",{}),e.jsxs("div",{style:{fontSize:".9rem",marginTop:"10px",maxWidth:"750px"},children:[e.jsx("p",{children:"A simple to use cross-platform toy-level reverse proxy server for local development and tinkering purposes."}),e.jsx("br",{}),e.jsx("p",{children:"It allows you to configure a list of processes to run and host them behind their own custom hostnames. Automatically generates (self-signed) certificates for HTTPS when accessing them the first time (cached in .odd-box-cache dir)."}),e.jsx("br",{}),e.jsx("p",{children:"Uses the 'port' environment variable to assign a port for each site. If your process does not support using the port environment variable, you can pass custom arguments or variables for your process instead."}),e.jsx("br",{}),e.jsx("p",{children:'You can enable or disable all sites or specific ones using the http://localhost/START and http://localhost/STOP endpoints, optionally using query parameter "?proc=my_site" to stop or start a specific site. (Mostly only useful for pre-build scripts where you dont want to manually stop and start the proxy on each rebuild. Sites start automatically again on the next request)'}),e.jsx("br",{}),e.jsx("h3",{children:"Main Features & Goals"}),e.jsxs("ul",{children:[e.jsx("li",{children:"Cross platform (win/lin/osx)"}),e.jsx("li",{children:"Easy to configure"}),e.jsx("li",{children:"Keep a list of specified binaries running"}),e.jsx("li",{children:"Uses PORT environment variable for routing"}),e.jsx("li",{children:"Allows for setting proc specific and global env vars"}),e.jsx("li",{children:"Remote target proxying"}),e.jsx("li",{children:"Terminating proxy that supports both HTTP/1.1 & HTTP2"}),e.jsx("li",{children:"TCP tunnelling for HTTP/1"}),e.jsx("li",{children:"TCP tunnelling for HTTPS/1 via SNI sniffing"}),e.jsx("li",{children:"TCP tunnelling for HTTP/2 over HTTP/1 (h2c upgrade)"}),e.jsx("li",{children:"H2C via terminating proxy"}),e.jsx("li",{children:"Automatic self-signed certs for all hosted processes "})]})]})]})]}),o=s("/")({component:r});export{o as Route}; diff --git a/web-ui/dist/assets/new-site.lazy-CNIAwjvA.js b/web-ui/dist/assets/new-site.lazy-DWm06qDN.js similarity index 97% rename from web-ui/dist/assets/new-site.lazy-CNIAwjvA.js rename to web-ui/dist/assets/new-site.lazy-DWm06qDN.js index e529b67..a326981 100644 --- a/web-ui/dist/assets/new-site.lazy-CNIAwjvA.js +++ b/web-ui/dist/assets/new-site.lazy-DWm06qDN.js @@ -1 +1 @@ -import{r as a,L as D,e as E,j as e,S as d,c as r,C as g,H as s,d as z}from"./index-BAcZo2i6.js";import{S as i,I as l,E as V,B as I}from"./env_variables-DBgTPTRJ.js";import{A as q}from"./arguments-90i_LMyj.js";const G=()=>{const[h,j]=a.useState("hostname"),[u,H]=a.useState(80),[S,T]=a.useState(""),[y,k]=a.useState(""),[f,v]=a.useState(!0),[_,N]=a.useState(!1),[c,p]=a.useState(!1),[C,P]=a.useState(!1),[n,x]=a.useState(!1),[m,b]=a.useState([]),[A,L]=a.useState(D.Dotnet),[w,B]=a.useState([]),[F,R]=a.useState([]),{updateSite:M}=E(),W=()=>{u&&M.mutateAsync({siteSettings:{host_name:h,port:u,dir:S,bin:y,https:f,auto_start:_,capture_subdomains:c,disable_tcp_tunnel_mode:C,forward_subdomains:n,hints:m,log_format:A,env_vars:w,args:F}})};return e.jsxs(e.Fragment,{children:[e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{title:"Hostname",subTitle:i.hostname,children:e.jsx(l,{placeholder:"my-site.com",value:h,onChange:t=>j(t.target.value)})}),e.jsx(r,{title:"Port",subTitle:i.port,children:e.jsx(l,{value:u,onChange:t=>{isNaN(Number(t.target.value))||H(Number(t.target.value))}})})]}),e.jsxs(d,{noTopSeparator:!0,noBottomSeparator:!0,children:[e.jsx(r,{title:"Directory",subTitle:i.directory,children:e.jsx(l,{placeholder:"/var/www/my-site",value:S,onChange:t=>T(t.target.value)})}),e.jsx(r,{title:"Bin",subTitle:i.binary,children:e.jsx(l,{placeholder:"my-binary",value:y,onChange:t=>k(t.target.value)})})]}),e.jsx(d,{noTopSeparator:!0,noBottomSeparator:!0,children:e.jsx(r,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:i.https,children:e.jsx(l,{checked:f,onChange:t=>{v(t.target.checked)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{labelFor:"auto_start",rowOnly:!0,title:"Auto start",subTitle:i.auto_start,children:e.jsx(l,{id:"auto_start",checked:_,name:"auto_start",onChange:t=>{N(t.target.checked)},type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:i.capture_subdomains,children:e.jsx(l,{onChange:t=>{p(t.target.checked)},checked:c,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:i.disable_tcp_tunnel,children:e.jsx(l,{type:"checkbox",checked:C,onChange:t=>{P(t.target.checked)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:i.forward_subdomains,children:e.jsx(l,{type:"checkbox",checked:n,onChange:t=>{x(t.target.checked)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{title:"Log format",subTitle:i.log_format,children:e.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:A,onChange:t=>{L(t.target.value)},name:"log_format",style:{height:"32px",width:"100%"},children:[e.jsx("option",{value:D.Standard,children:"Standard"}),e.jsx("option",{value:D.Dotnet,children:"Dotnet"})]})})}),e.jsx("div",{style:{marginTop:"20px"}}),e.jsx(r,{title:"Hints",subTitle:i.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"10px",marginBottom:"20px"},children:[e.jsx(g,{onClick:()=>{m.includes(s.H2)?b(t=>[...t.filter(o=>o!==s.H2)]):b(t=>[...t,s.H2])},checked:m.includes(s.H2),title:"H2"}),e.jsx(g,{onClick:()=>{m.includes(s.H2C)?b(t=>[...t.filter(o=>o!==s.H2C)]):b(t=>[...t,s.H2C])},checked:m.includes(s.H2C),title:"H2C"}),e.jsx(g,{onClick:()=>{m.includes(s.H2CPK)?b(t=>[...t.filter(o=>o!==s.H2CPK)]):b(t=>[...t,s.H2CPK])},checked:m.includes(s.H2CPK),title:"H2CPK"}),e.jsx(g,{onClick:()=>{m.includes(s.NOH2)?b(t=>[...t.filter(o=>o!==s.NOH2)]):b(t=>[...t,s.NOH2])},checked:m.includes(s.NOH2),title:"NOH2"})]}),e.jsx(d,{noBottomSeparator:!0,children:e.jsx(r,{vertical:!0,title:"Environment variables",subTitle:i.env_vars,children:e.jsx(V,{keys:w,onRemoveKey:t=>{B(w==null?void 0:w.filter(o=>o.key!==t))},onNewKey:(t,o)=>{B(O=>[...O.filter(K=>K.key!==o),t])}})})}),e.jsx(d,{noBottomSeparator:!0,noTopSeparator:!0,children:e.jsx(r,{vertical:!0,title:"Arguments",subTitle:i.args,children:e.jsx(q,{onAddArg:(t,o)=>{R(O=>[...O.filter(K=>K!==o),t])},onRemoveArg:t=>{R(F.filter(o=>o!==t))},defaultKeys:F})})}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(I,{onClick:W,style:{width:"max-content",background:"var(--color7)"},children:"Create site"})})]})},J=()=>{const[h,j]=a.useState("hostname"),[u,H]=a.useState(80),[S,T]=a.useState(!0),[y,k]=a.useState(!1),[f,v]=a.useState(!1),[_,N]=a.useState(!1),[c,p]=a.useState([]),{updateRemoteSite:C}=E(),P=()=>{u&&C.mutateAsync({siteSettings:{host_name:h,backends:[{address:h,https:S,port:u,hints:c}],capture_subdomains:y,disable_tcp_tunnel_mode:f,forward_subdomains:_}})};return e.jsxs(e.Fragment,{children:[e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{title:"Hostname",subTitle:i.hostname,children:e.jsx(l,{value:h,placeholder:"my-site.com",onChange:n=>j(n.target.value)})}),e.jsx(r,{title:"Port",subTitle:i.port,children:e.jsx(l,{value:u,onChange:n=>{isNaN(Number(n.target.value))||H(Number(n.target.value))}})})]}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:i.https,children:e.jsx(l,{checked:S,onChange:n=>{T(n.target.checked)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:i.capture_subdomains,children:e.jsx(l,{onChange:n=>{k(n.target.checked)},checked:y,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:i.disable_tcp_tunnel,children:e.jsx(l,{type:"checkbox",checked:f,onChange:n=>{v(n.target.checked)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:i.forward_subdomains,children:e.jsx(l,{type:"checkbox",checked:_,onChange:n=>{N(n.target.checked)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsx(r,{title:"Hints",subTitle:i.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"10px"},children:[e.jsx(g,{onClick:()=>{c.includes(s.H2)?p(n=>[...n.filter(x=>x!==s.H2)]):p(n=>[...n,s.H2])},checked:c.includes(s.H2),title:"H2"}),e.jsx(g,{onClick:()=>{c.includes(s.H2C)?p(n=>[...n.filter(x=>x!==s.H2C)]):p(n=>[...n,s.H2C])},checked:c.includes(s.H2C),title:"H2C"}),e.jsx(g,{onClick:()=>{c.includes(s.H2CPK)?p(n=>[...n.filter(x=>x!==s.H2CPK)]):p(n=>[...n,s.H2CPK])},checked:c.includes(s.H2CPK),title:"H2CPK"}),e.jsx(g,{onClick:()=>{c.includes(s.NOH2)?p(n=>[...n.filter(x=>x!==s.NOH2)]):p(n=>[...n,s.NOH2])},checked:c.includes(s.NOH2),title:"NOH2"})]}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(I,{onClick:P,style:{width:"max-content",background:"var(--color7)"},children:"Create site"})})]})},Q=()=>{const[h,j]=a.useState("HostedProcess");return e.jsxs(e.Fragment,{children:[e.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"new site"}),e.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:u=>{u.preventDefault()},children:[e.jsx(d,{children:e.jsx(r,{title:"Type of site",subTitle:i.site_type,children:e.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:h,onChange:u=>{j(u.target.value)},style:{height:"30px",width:"100%"},children:[e.jsx("option",{value:"HostedProcess",children:"Hosted process"}),e.jsx("option",{value:"RemoteSite",children:"Remote site"})]})})}),h==="HostedProcess"&&e.jsx(G,{}),h==="RemoteSite"&&e.jsx(J,{})]})]})},Z=z("/new-site")({component:Q});export{Z as Route}; +import{r as a,L as D,e as E,j as e,S as d,c as r,C as g,H as s,d as z}from"./index-dDKJaDn2.js";import{S as i,I as l,E as V,B as I}from"./env_variables-rG-Gz1th.js";import{A as q}from"./arguments-Dk8DAUdv.js";const G=()=>{const[h,j]=a.useState("hostname"),[u,H]=a.useState(80),[S,T]=a.useState(""),[y,k]=a.useState(""),[f,v]=a.useState(!0),[_,N]=a.useState(!1),[c,p]=a.useState(!1),[C,P]=a.useState(!1),[n,x]=a.useState(!1),[m,b]=a.useState([]),[A,L]=a.useState(D.Dotnet),[w,B]=a.useState([]),[F,R]=a.useState([]),{updateSite:M}=E(),W=()=>{u&&M.mutateAsync({siteSettings:{host_name:h,port:u,dir:S,bin:y,https:f,auto_start:_,capture_subdomains:c,disable_tcp_tunnel_mode:C,forward_subdomains:n,hints:m,log_format:A,env_vars:w,args:F}})};return e.jsxs(e.Fragment,{children:[e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{title:"Hostname",subTitle:i.hostname,children:e.jsx(l,{placeholder:"my-site.com",value:h,onChange:t=>j(t.target.value)})}),e.jsx(r,{title:"Port",subTitle:i.port,children:e.jsx(l,{value:u,onChange:t=>{isNaN(Number(t.target.value))||H(Number(t.target.value))}})})]}),e.jsxs(d,{noTopSeparator:!0,noBottomSeparator:!0,children:[e.jsx(r,{title:"Directory",subTitle:i.directory,children:e.jsx(l,{placeholder:"/var/www/my-site",value:S,onChange:t=>T(t.target.value)})}),e.jsx(r,{title:"Bin",subTitle:i.binary,children:e.jsx(l,{placeholder:"my-binary",value:y,onChange:t=>k(t.target.value)})})]}),e.jsx(d,{noTopSeparator:!0,noBottomSeparator:!0,children:e.jsx(r,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:i.https,children:e.jsx(l,{checked:f,onChange:t=>{v(t.target.checked)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{labelFor:"auto_start",rowOnly:!0,title:"Auto start",subTitle:i.auto_start,children:e.jsx(l,{id:"auto_start",checked:_,name:"auto_start",onChange:t=>{N(t.target.checked)},type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:i.capture_subdomains,children:e.jsx(l,{onChange:t=>{p(t.target.checked)},checked:c,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:i.disable_tcp_tunnel,children:e.jsx(l,{type:"checkbox",checked:C,onChange:t=>{P(t.target.checked)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:i.forward_subdomains,children:e.jsx(l,{type:"checkbox",checked:n,onChange:t=>{x(t.target.checked)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{title:"Log format",subTitle:i.log_format,children:e.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:A,onChange:t=>{L(t.target.value)},name:"log_format",style:{height:"32px",width:"100%"},children:[e.jsx("option",{value:D.Standard,children:"Standard"}),e.jsx("option",{value:D.Dotnet,children:"Dotnet"})]})})}),e.jsx("div",{style:{marginTop:"20px"}}),e.jsx(r,{title:"Hints",subTitle:i.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"10px",marginBottom:"20px"},children:[e.jsx(g,{onClick:()=>{m.includes(s.H2)?b(t=>[...t.filter(o=>o!==s.H2)]):b(t=>[...t,s.H2])},checked:m.includes(s.H2),title:"H2"}),e.jsx(g,{onClick:()=>{m.includes(s.H2C)?b(t=>[...t.filter(o=>o!==s.H2C)]):b(t=>[...t,s.H2C])},checked:m.includes(s.H2C),title:"H2C"}),e.jsx(g,{onClick:()=>{m.includes(s.H2CPK)?b(t=>[...t.filter(o=>o!==s.H2CPK)]):b(t=>[...t,s.H2CPK])},checked:m.includes(s.H2CPK),title:"H2CPK"}),e.jsx(g,{onClick:()=>{m.includes(s.NOH2)?b(t=>[...t.filter(o=>o!==s.NOH2)]):b(t=>[...t,s.NOH2])},checked:m.includes(s.NOH2),title:"NOH2"})]}),e.jsx(d,{noBottomSeparator:!0,children:e.jsx(r,{vertical:!0,title:"Environment variables",subTitle:i.env_vars,children:e.jsx(V,{keys:w,onRemoveKey:t=>{B(w==null?void 0:w.filter(o=>o.key!==t))},onNewKey:(t,o)=>{B(O=>[...O.filter(K=>K.key!==o),t])}})})}),e.jsx(d,{noBottomSeparator:!0,noTopSeparator:!0,children:e.jsx(r,{vertical:!0,title:"Arguments",subTitle:i.args,children:e.jsx(q,{onAddArg:(t,o)=>{R(O=>[...O.filter(K=>K!==o),t])},onRemoveArg:t=>{R(F.filter(o=>o!==t))},defaultKeys:F})})}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(I,{onClick:W,style:{width:"max-content",background:"var(--color7)"},children:"Create site"})})]})},J=()=>{const[h,j]=a.useState("hostname"),[u,H]=a.useState(80),[S,T]=a.useState(!0),[y,k]=a.useState(!1),[f,v]=a.useState(!1),[_,N]=a.useState(!1),[c,p]=a.useState([]),{updateRemoteSite:C}=E(),P=()=>{u&&C.mutateAsync({siteSettings:{host_name:h,backends:[{address:h,https:S,port:u,hints:c}],capture_subdomains:y,disable_tcp_tunnel_mode:f,forward_subdomains:_}})};return e.jsxs(e.Fragment,{children:[e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{title:"Hostname",subTitle:i.hostname,children:e.jsx(l,{value:h,placeholder:"my-site.com",onChange:n=>j(n.target.value)})}),e.jsx(r,{title:"Port",subTitle:i.port,children:e.jsx(l,{value:u,onChange:n=>{isNaN(Number(n.target.value))||H(Number(n.target.value))}})})]}),e.jsx(d,{noTopSeparator:!0,children:e.jsx(r,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:i.https,children:e.jsx(l,{checked:S,onChange:n=>{T(n.target.checked)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsxs(d,{noTopSeparator:!0,children:[e.jsx(r,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:i.capture_subdomains,children:e.jsx(l,{onChange:n=>{k(n.target.checked)},checked:y,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:i.disable_tcp_tunnel,children:e.jsx(l,{type:"checkbox",checked:f,onChange:n=>{v(n.target.checked)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(r,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:i.forward_subdomains,children:e.jsx(l,{type:"checkbox",checked:_,onChange:n=>{N(n.target.checked)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsx(r,{title:"Hints",subTitle:i.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"10px"},children:[e.jsx(g,{onClick:()=>{c.includes(s.H2)?p(n=>[...n.filter(x=>x!==s.H2)]):p(n=>[...n,s.H2])},checked:c.includes(s.H2),title:"H2"}),e.jsx(g,{onClick:()=>{c.includes(s.H2C)?p(n=>[...n.filter(x=>x!==s.H2C)]):p(n=>[...n,s.H2C])},checked:c.includes(s.H2C),title:"H2C"}),e.jsx(g,{onClick:()=>{c.includes(s.H2CPK)?p(n=>[...n.filter(x=>x!==s.H2CPK)]):p(n=>[...n,s.H2CPK])},checked:c.includes(s.H2CPK),title:"H2CPK"}),e.jsx(g,{onClick:()=>{c.includes(s.NOH2)?p(n=>[...n.filter(x=>x!==s.NOH2)]):p(n=>[...n,s.NOH2])},checked:c.includes(s.NOH2),title:"NOH2"})]}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(I,{onClick:P,style:{width:"max-content",background:"var(--color7)"},children:"Create site"})})]})},Q=()=>{const[h,j]=a.useState("HostedProcess");return e.jsxs(e.Fragment,{children:[e.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"new site"}),e.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:u=>{u.preventDefault()},children:[e.jsx(d,{children:e.jsx(r,{title:"Type of site",subTitle:i.site_type,children:e.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:h,onChange:u=>{j(u.target.value)},style:{height:"30px",width:"100%"},children:[e.jsx("option",{value:"HostedProcess",children:"Hosted process"}),e.jsx("option",{value:"RemoteSite",children:"Remote site"})]})})}),h==="HostedProcess"&&e.jsx(G,{}),h==="RemoteSite"&&e.jsx(J,{})]})]})},Z=z("/new-site")({component:Q});export{Z as Route}; diff --git a/web-ui/dist/assets/settings-Cn3ar6wA.css b/web-ui/dist/assets/settings-Cn3ar6wA.css deleted file mode 100644 index d49ad1d..0000000 --- a/web-ui/dist/assets/settings-Cn3ar6wA.css +++ /dev/null @@ -1 +0,0 @@ -.react-responsive-modal-root{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1000}.react-responsive-modal-overlay{background:#00000080;position:fixed;top:0;bottom:0;left:0;right:0;z-index:-1}.react-responsive-modal-container{height:100%;outline:0;overflow-x:hidden;overflow-y:auto;text-align:center}.react-responsive-modal-containerCenter:after{width:0;height:100%;content:"";display:inline-block;vertical-align:middle}.react-responsive-modal-modal{max-width:800px;display:inline-block;text-align:left;vertical-align:middle;background:#fff;box-shadow:0 12px 15px #00000040;margin:1.2rem;padding:1.2rem;position:relative;overflow-y:auto}.react-responsive-modal-closeButton{position:absolute;top:14px;right:14px;border:none;padding:0;cursor:pointer;background-color:transparent;display:flex}.react-responsive-modal-overlay,.react-responsive-modal-container,.react-responsive-modal-modal{animation-fill-mode:forwards!important}@keyframes react-responsive-modal-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes react-responsive-modal-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes react-responsive-modal-modal-in{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}@keyframes react-responsive-modal-modal-out{0%{transform:scale(1);opacity:1}to{transform:scale(.96);opacity:0}} diff --git a/web-ui/dist/assets/settings.lazy-B_vd7YXJ.js b/web-ui/dist/assets/settings.lazy-MRsrwGn0.js similarity index 97% rename from web-ui/dist/assets/settings.lazy-B_vd7YXJ.js rename to web-ui/dist/assets/settings.lazy-MRsrwGn0.js index 453dcba..89b5ad4 100644 --- a/web-ui/dist/assets/settings.lazy-B_vd7YXJ.js +++ b/web-ui/dist/assets/settings.lazy-MRsrwGn0.js @@ -1 +1 @@ -import{A as v,u as b,a as f,b as N,j as t,r as p,S as g,c as r,L as T,_ as P,d as C}from"./index-BAcZo2i6.js";import{S as n,I as i,E as k}from"./env_variables-DBgTPTRJ.js";const I=()=>{let s=window.location.protocol+"//"+window.location.hostname;window.location.port&&(s=`${s}:${window.location.port}`);const a=s,d=new v({baseUrl:a});return b({queryKey:["settings"],select:c=>c.data,queryFn:d.api.settings})},R=()=>{let s=window.location.protocol+"//"+window.location.hostname;window.location.port&&(s=`${s}:${window.location.port}`);const a=s,d=new v({baseUrl:a}),c=f();return{updateSettings:N({mutationKey:["update-settings"],mutationFn:d.api.saveSettings,onSettled:()=>{c.invalidateQueries({queryKey:["settings"]})}})}},A=()=>t.jsx(p.Suspense,{fallback:t.jsx("p",{children:"loading settings.."}),children:t.jsx(B,{})}),B=()=>{const{updateSettings:s}=R(),{data:a}=I(),[d,c]=p.useState(a.ip),[h,x]=p.useState(a.root_dir),[S,_]=p.useState(a.http_port),[m,j]=p.useState(a.tls_port),[w,y]=p.useState(a.port_range_start),o=(e,l)=>{let u=Array.isArray(l)||isNaN(l)===!1?l:`${l}`;P.promise(s.mutateAsync({...a,[e]:u}),{loading:"Updating settings..",success:"Settings updated!",error:"Failed to update settings"})};return t.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},children:[t.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Settings"}),t.jsx("p",{style:{fontSize:".9rem",marginBottom:"30px"},children:"General settings that affect all sites"}),t.jsx(g,{noTopSeparator:!0,noBottomSeparator:!0,children:t.jsx(r,{title:"Root directory",subTitle:n.root_dir,children:t.jsx(i,{withSaveButton:!0,onSave:e=>{o("root_dir",e)},type:"text",originalValue:a.root_dir,value:h,onChange:e=>x(e.target.value)})})}),t.jsxs(g,{children:[t.jsx(r,{title:"HTTP Port",subTitle:n.default_http_port,defaultValue:"8080",children:t.jsx(i,{value:S,withSaveButton:!0,originalValue:a.http_port,onSave:e=>{o("http_port",e)},onChange:e=>{isNaN(Number(e.target.value))||_(Number(e.target.value))}})}),t.jsx(r,{title:"TLS Port",subTitle:n.default_tls_port,defaultValue:"4343",children:t.jsx(i,{value:m,originalValue:a.tls_port,withSaveButton:!0,onSave:e=>{o("tls_port",e)},onChange:e=>{isNaN(Number(e.target.value))||j(Number(e.target.value))}})}),t.jsx(r,{title:"IP Address",subTitle:n.proxy_ip,children:t.jsx(i,{value:d,originalValue:a.ip,withSaveButton:!0,onSave:e=>{o("ip",e)},onChange:e=>c(e.target.value)})})]}),t.jsxs(g,{noTopSeparator:!0,children:[t.jsx(r,{title:"Port range start",subTitle:n.port_range_start,children:t.jsx(i,{value:w,originalValue:a.port_range_start,withSaveButton:!0,onSave:e=>o("port_range_start",e),onChange:e=>{isNaN(Number(e.target.value))||y(Number(e.target.value))}})}),t.jsx(r,{title:"Use ALPN",labelFor:"alpn",subTitle:n.use_alpn,rowOnly:!0,children:t.jsx(i,{type:"checkbox",id:"alpn",checked:a.alpn,onChange:()=>o("alpn",!a.alpn),style:{width:"20px",height:"20px"}})})]}),t.jsx(g,{noTopSeparator:!0,children:t.jsx(r,{title:"Autostart",rowOnly:!0,subTitle:n.default_auto_start,labelFor:"autostart",children:t.jsx(i,{id:"autostart",type:"checkbox",checked:a.auto_start,onChange:()=>o("auto_start",!a.auto_start),style:{width:"20px",height:"20px"}})})}),t.jsxs(g,{noTopSeparator:!0,children:[t.jsx(r,{title:"Log level",subTitle:n.log_level,children:t.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:a.log_level,onChange:e=>{o("log_level",e.target.value)},name:"loglevel",style:{height:"32px",width:"100%"},children:[t.jsx("option",{value:"Trace",children:"Trace"}),t.jsx("option",{value:"Debug",children:"Debug"}),t.jsx("option",{value:"Info",children:"Info"}),t.jsx("option",{value:"Warn",children:"Warn"}),t.jsx("option",{value:"Error",children:"Error"})]})}),t.jsx(r,{title:"Log format",subTitle:n.default_log_format,children:t.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:a.default_log_format??T.Standard,onChange:e=>{o("default_log_format",e.target.value)},name:"log_format",style:{height:"32px",width:"100%"},children:[t.jsx("option",{value:"Standard",children:"Standard"}),t.jsx("option",{value:"Dotnet",children:"Dotnet"})]})})]}),t.jsx(r,{vertical:!0,title:"Environment variables",subTitle:n.global_env_vars,children:t.jsx(k,{keys:a.env_vars??[],onRemoveKey:e=>{var l;o("env_vars",(l=a.env_vars)==null?void 0:l.filter(u=>u.key!==e))},onNewKey:(e,l)=>{o("env_vars",[...a.env_vars.filter(u=>u.key!==e.key&&u.key!==l),{key:e.key,value:e.value}])}})})]})},E=C("/settings")({component:A});export{E as Route}; +import{A as v,u as b,a as f,b as N,j as t,r as p,S as g,c as r,L as T,_ as P,d as C}from"./index-dDKJaDn2.js";import{S as n,I as i,E as k}from"./env_variables-rG-Gz1th.js";const I=()=>{let s=window.location.protocol+"//"+window.location.hostname;window.location.port&&(s=`${s}:${window.location.port}`);const a=s,d=new v({baseUrl:a});return b({queryKey:["settings"],select:c=>c.data,queryFn:d.api.settings})},R=()=>{let s=window.location.protocol+"//"+window.location.hostname;window.location.port&&(s=`${s}:${window.location.port}`);const a=s,d=new v({baseUrl:a}),c=f();return{updateSettings:N({mutationKey:["update-settings"],mutationFn:d.api.saveSettings,onSettled:()=>{c.invalidateQueries({queryKey:["settings"]})}})}},A=()=>t.jsx(p.Suspense,{fallback:t.jsx("p",{children:"loading settings.."}),children:t.jsx(B,{})}),B=()=>{const{updateSettings:s}=R(),{data:a}=I(),[d,c]=p.useState(a.ip),[h,x]=p.useState(a.root_dir),[S,_]=p.useState(a.http_port),[m,j]=p.useState(a.tls_port),[w,y]=p.useState(a.port_range_start),o=(e,l)=>{let u=Array.isArray(l)||isNaN(l)===!1?l:`${l}`;P.promise(s.mutateAsync({...a,[e]:u}),{loading:"Updating settings..",success:"Settings updated!",error:"Failed to update settings"})};return t.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},children:[t.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:"Settings"}),t.jsx("p",{style:{fontSize:".9rem",marginBottom:"30px"},children:"General settings that affect all sites"}),t.jsx(g,{noTopSeparator:!0,noBottomSeparator:!0,children:t.jsx(r,{title:"Root directory",subTitle:n.root_dir,children:t.jsx(i,{withSaveButton:!0,onSave:e=>{o("root_dir",e)},type:"text",originalValue:a.root_dir,value:h,onChange:e=>x(e.target.value)})})}),t.jsxs(g,{children:[t.jsx(r,{title:"HTTP Port",subTitle:n.default_http_port,defaultValue:"8080",children:t.jsx(i,{value:S,withSaveButton:!0,originalValue:a.http_port,onSave:e=>{o("http_port",e)},onChange:e=>{isNaN(Number(e.target.value))||_(Number(e.target.value))}})}),t.jsx(r,{title:"TLS Port",subTitle:n.default_tls_port,defaultValue:"4343",children:t.jsx(i,{value:m,originalValue:a.tls_port,withSaveButton:!0,onSave:e=>{o("tls_port",e)},onChange:e=>{isNaN(Number(e.target.value))||j(Number(e.target.value))}})}),t.jsx(r,{title:"IP Address",subTitle:n.proxy_ip,children:t.jsx(i,{value:d,originalValue:a.ip,withSaveButton:!0,onSave:e=>{o("ip",e)},onChange:e=>c(e.target.value)})})]}),t.jsxs(g,{noTopSeparator:!0,children:[t.jsx(r,{title:"Port range start",subTitle:n.port_range_start,children:t.jsx(i,{value:w,originalValue:a.port_range_start,withSaveButton:!0,onSave:e=>o("port_range_start",e),onChange:e=>{isNaN(Number(e.target.value))||y(Number(e.target.value))}})}),t.jsx(r,{title:"Use ALPN",labelFor:"alpn",subTitle:n.use_alpn,rowOnly:!0,children:t.jsx(i,{type:"checkbox",id:"alpn",checked:a.alpn,onChange:()=>o("alpn",!a.alpn),style:{width:"20px",height:"20px"}})})]}),t.jsx(g,{noTopSeparator:!0,children:t.jsx(r,{title:"Autostart",rowOnly:!0,subTitle:n.default_auto_start,labelFor:"autostart",children:t.jsx(i,{id:"autostart",type:"checkbox",checked:a.auto_start,onChange:()=>o("auto_start",!a.auto_start),style:{width:"20px",height:"20px"}})})}),t.jsxs(g,{noTopSeparator:!0,children:[t.jsx(r,{title:"Log level",subTitle:n.log_level,children:t.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:a.log_level,onChange:e=>{o("log_level",e.target.value)},name:"loglevel",style:{height:"32px",width:"100%"},children:[t.jsx("option",{value:"Trace",children:"Trace"}),t.jsx("option",{value:"Debug",children:"Debug"}),t.jsx("option",{value:"Info",children:"Info"}),t.jsx("option",{value:"Warn",children:"Warn"}),t.jsx("option",{value:"Error",children:"Error"})]})}),t.jsx(r,{title:"Log format",subTitle:n.default_log_format,children:t.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:a.default_log_format??T.Standard,onChange:e=>{o("default_log_format",e.target.value)},name:"log_format",style:{height:"32px",width:"100%"},children:[t.jsx("option",{value:"Standard",children:"Standard"}),t.jsx("option",{value:"Dotnet",children:"Dotnet"})]})})]}),t.jsx(r,{vertical:!0,title:"Environment variables",subTitle:n.global_env_vars,children:t.jsx(k,{keys:a.env_vars??[],onRemoveKey:e=>{var l;o("env_vars",(l=a.env_vars)==null?void 0:l.filter(u=>u.key!==e))},onNewKey:(e,l)=>{o("env_vars",[...a.env_vars.filter(u=>u.key!==e.key&&u.key!==l),{key:e.key,value:e.value}])}})})]})},E=C("/settings")({component:A});export{E as Route}; diff --git a/web-ui/dist/assets/site._siteName.lazy-CVHSeaEy.js b/web-ui/dist/assets/site._siteName.lazy-CVHSeaEy.js deleted file mode 100644 index 51267c5..0000000 --- a/web-ui/dist/assets/site._siteName.lazy-CVHSeaEy.js +++ /dev/null @@ -1,5 +0,0 @@ -import{B as A,e as X,f as Be,j as t,_ as Y,g as Me,R as C,r as p,h as Le,i as re,S as T,c as x,C as D,H as u,L as ne,k as be,l as Ke,m as We,n as ze,d as Ve}from"./index-BAcZo2i6.js";import{B as E,S as b,I as w,E as Ye,a as Ue,b as qe,c as Je,d as Ge,e as Ze,f as Qe,g as Xe}from"./env_variables-DBgTPTRJ.js";import{A as et}from"./arguments-90i_LMyj.js";const tt={[A.Running]:"Stop site",[A.Stopped]:"Start site",[A.Faulty]:"Start site",[A.Stopping]:"Start site",[A.Starting]:"Stop site",[A.Remote]:"Remote"},nt=({hostedProcess:e,remoteSite:o})=>{var d,n,g,j;const{startSite:r,stopSite:a}=X(),s=Be(),i=e?(n=(d=s.data)==null?void 0:d.find(v=>v.hostname===e.host_name))==null?void 0:n.state:o?(j=(g=s.data)==null?void 0:g.find(v=>v.hostname===o.host_name))==null?void 0:j.state:A.Remote;return t.jsx(t.Fragment,{children:t.jsxs("div",{style:{fontSize:".8rem",display:"flex",flexDirection:"column",gap:"10px",maxWidth:"750px"},children:[t.jsxs("div",{className:"pb-2 select-none flex items-center justify-between border-b border-gray-500",title:`${i}`,children:[t.jsx("p",{style:{textTransform:"uppercase",fontWeight:"bold"},children:"status:"}),t.jsx("p",{style:{display:"flex",alignItems:"center",gap:"5px"},children:i})]}),t.jsx("div",{style:{marginTop:"10px"},children:i!==A.Remote&&t.jsx(E,{style:{maxWidth:"max-content"},disabled:r.isPending||a.isPending,dangerButton:i===A.Running,onClick:async()=>{e&&(i===A.Running?Y.promise(a.mutateAsync({hostname:e.host_name}),{loading:"Stopping site..",success:"Site stopped!",error:v=>`Failed to stop site: ${v}`}):Y.promise(r.mutateAsync({hostname:e.host_name}),{loading:"Starting site..",success:"Site started!",error:v=>`Failed to start site: ${v}`}))},children:tt[i]})})]})})};var ge={exports:{}};/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/(function(e){(function(){var o={}.hasOwnProperty;function r(){for(var i="",d=0;d1),P=[],G=!1,Se=-1,z=void 0,V=void 0,we=function(o){return P.some(function(r){return!!(r.options.allowTouchMove&&r.options.allowTouchMove(o))})},Z=function(o){var r=o||window.event;return we(r.target)||r.touches.length>1?!0:(r.preventDefault&&r.preventDefault(),!1)},at=function(o){if(V===void 0){var r=!!o&&o.reserveScrollBarGap===!0,a=window.innerWidth-document.documentElement.clientWidth;r&&a>0&&(V=document.body.style.paddingRight,document.body.style.paddingRight=a+"px")}z===void 0&&(z=document.body.style.overflow,document.body.style.overflow="hidden")},st=function(){V!==void 0&&(document.body.style.paddingRight=V,V=void 0),z!==void 0&&(document.body.style.overflow=z,z=void 0)},lt=function(o){return o?o.scrollHeight-o.scrollTop<=o.clientHeight:!1},it=function(o,r){var a=o.targetTouches[0].clientY-Se;return we(o.target)?!1:r&&r.scrollTop===0&&a>0||lt(r)&&a<0?Z(o):(o.stopPropagation(),!0)},dt=function(o,r){if(!o){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!P.some(function(s){return s.targetElement===o})){var a={targetElement:o,options:r||{}};P=[].concat(rt(P),[a]),ye?(o.ontouchstart=function(s){s.targetTouches.length===1&&(Se=s.targetTouches[0].clientY)},o.ontouchmove=function(s){s.targetTouches.length===1&&it(s,o)},G||(document.addEventListener("touchmove",Z,ae?{passive:!1}:void 0),G=!0)):at(r)}},ct=function(o){if(!o){console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.");return}P=P.filter(function(r){return r.targetElement!==o}),ye?(o.ontouchstart=null,o.ontouchmove=null,G&&P.length===0&&(document.removeEventListener("touchmove",Z,ae?{passive:!1}:void 0),G=!1)):P.length||st()};function ut(e=null){let[o,r]=C.useState(e);const{current:a}=C.useRef({current:o});return Object.defineProperty(a,"current",{get:()=>o,set:s=>{Object.is(o,s)||(o=s,r(s))}}),a}function mt(e,o={isStateful:!0}){const r=ut(null),a=p.useRef(null),s=o.isStateful?r:a;return C.useEffect(()=>{!e||(typeof e=="function"?e(s.current):e.current=s.current)}),s}function Q(){return Q=Object.assign||function(e){for(var o=1;o-1&&!ft(i)&&vt(i))&&a.push(i)}return a}function xt(e,o){if(!(!e||e.key!=="Tab")){if(!o||!o.contains)return process,!1;if(!o.contains(e.target))return!1;var r=_e(o),a=r[0],s=r[r.length-1];return e.shiftKey&&e.target===a?(s.focus(),e.preventDefault(),!0):!e.shiftKey&&e.target===s?(a.focus(),e.preventDefault(),!0):!1}}function bt(e){var o=parseInt(e.getAttribute("tabindex"),10);return isNaN(o)?gt(e)?0:e.tabIndex:o}function gt(e){return e.getAttribute("contentEditable")}var yt=function(o){var r=o.container,a=o.initialFocusRef,s=p.useRef();return p.useEffect(function(){var i=function(j){r!=null&&r.current&&xt(j,r.current)};if(J&&document.addEventListener("keydown",i),J&&(r!=null&&r.current)){var d=function(){je.findIndex(function(j){var v;return(v=document.activeElement)==null?void 0:v.matches(j)})!==-1&&(s.current=document.activeElement)};if(a)d(),requestAnimationFrame(function(){var g;(g=a.current)==null||g.focus()});else{var n=_e(r.current);n[0]&&(d(),n[0].focus())}}return function(){if(J){var g;document.removeEventListener("keydown",i),(g=s.current)==null||g.focus()}}},[r,a]),null},M=[],oe={add:function(o){M.push(o)},remove:function(o){M=M.filter(function(r){return r!==o})},isTopModal:function(o){return!!M.length&&M[M.length-1]===o}};function St(e,o){p.useEffect(function(){return o&&oe.add(e),function(){oe.remove(e)}},[o,e])}var wt=function(o,r,a,s,i){var d=p.useRef(null);p.useEffect(function(){return r&&o.current&&s&&(d.current=o.current,dt(o.current,{reserveScrollBarGap:i})),function(){d.current&&(ct(d.current),d.current=null)}},[r,a,o,s,i])},k={root:"react-responsive-modal-root",overlay:"react-responsive-modal-overlay",overlayAnimationIn:"react-responsive-modal-overlay-in",overlayAnimationOut:"react-responsive-modal-overlay-out",modalContainer:"react-responsive-modal-container",modalContainerCenter:"react-responsive-modal-containerCenter",modal:"react-responsive-modal-modal",modalAnimationIn:"react-responsive-modal-modal-in",modalAnimationOut:"react-responsive-modal-modal-out",closeButton:"react-responsive-modal-closeButton"},jt=C.forwardRef(function(e,o){var r,a,s,i,d=e.open,n=e.center,g=e.blockScroll,j=g===void 0?!0:g,v=e.closeOnEsc,I=v===void 0?!0:v,c=e.closeOnOverlayClick,y=c===void 0?!0:c,m=e.container,N=e.showCloseIcon,F=N===void 0?!0:N,$=e.closeIconId,h=e.closeIcon,l=e.focusTrapped,f=l===void 0?!0:l,_=e.initialFocusRef,R=_===void 0?void 0:_,se=e.animationDuration,le=se===void 0?300:se,S=e.classNames,O=e.styles,ie=e.role,Te=ie===void 0?"dialog":ie,Ne=e.ariaDescribedby,ke=e.ariaLabelledby,Ae=e.containerId,Oe=e.modalId,ee=e.onClose,de=e.onEscKeyDown,ce=e.onOverlayClick,ue=e.onAnimationEnd,He=e.children,Ee=e.reserveScrollBarGap,me=mt(o),U=p.useRef(null),B=p.useRef(null),H=p.useRef(null);H.current===null&&J&&(H.current=document.createElement("div"));var he=p.useState(!1),L=he[0],fe=he[1];St(U,d),wt(U,d,L,j,Ee);var Ie=function(){H.current&&!m&&!document.body.contains(H.current)&&document.body.appendChild(H.current),document.addEventListener("keydown",pe)},Re=function(){H.current&&!m&&document.body.contains(H.current)&&document.body.removeChild(H.current),document.removeEventListener("keydown",pe)},pe=function(q){q.keyCode!==27||!oe.isTopModal(U)||(de==null||de(q),I&&ee())};p.useEffect(function(){return function(){L&&Re()}},[L]),p.useEffect(function(){d&&!L&&(fe(!0),Ie())},[d]);var De=function(q){if(B.current===null&&(B.current=!0),!B.current){B.current=null;return}ce==null||ce(q),y&&ee(),B.current=null},te=function(){B.current=!1},Pe=function(){d||fe(!1),ue==null||ue()},ve=m||H.current,Fe=d?(r=S==null?void 0:S.overlayAnimationIn)!=null?r:k.overlayAnimationIn:(a=S==null?void 0:S.overlayAnimationOut)!=null?a:k.overlayAnimationOut,$e=d?(s=S==null?void 0:S.modalAnimationIn)!=null?s:k.modalAnimationIn:(i=S==null?void 0:S.modalAnimationOut)!=null?i:k.modalAnimationOut;return L&&ve?Le.createPortal(C.createElement("div",{className:W(k.root,S==null?void 0:S.root),style:O==null?void 0:O.root,"data-testid":"root"},C.createElement("div",{className:W(k.overlay,S==null?void 0:S.overlay),"data-testid":"overlay","aria-hidden":!0,style:Q({animation:Fe+" "+le+"ms"},O==null?void 0:O.overlay)}),C.createElement("div",{ref:U,id:Ae,className:W(k.modalContainer,n&&k.modalContainerCenter,S==null?void 0:S.modalContainer),style:O==null?void 0:O.modalContainer,"data-testid":"modal-container",onClick:De},C.createElement("div",{ref:me,className:W(k.modal,S==null?void 0:S.modal),style:Q({animation:$e+" "+le+"ms"},O==null?void 0:O.modal),onMouseDown:te,onMouseUp:te,onClick:te,onAnimationEnd:Pe,id:Oe,role:Te,"aria-modal":"true","aria-labelledby":ke,"aria-describedby":Ne,"data-testid":"modal",tabIndex:-1},f&&C.createElement(yt,{container:me,initialFocusRef:R}),He,F&&C.createElement(ht,{classes:k,classNames:S,styles:O,closeIcon:h,onClick:ee,id:$})))),ve):null});const Ce=({show:e,onClose:o,title:r,subtitle:a,children:s})=>t.jsx(jt,{showCloseIcon:!1,blockScroll:!1,styles:{modal:{background:"transparent",backdropFilter:"blur(20px)",borderRadius:"5px",border:"1px solid #ffffff22"}},open:e,onClose:o,center:!0,children:t.jsxs("div",{children:[r&&t.jsx("h3",{children:r}),a&&t.jsx("p",{style:{fontSize:".9rem"},children:a}),s]})}),_t=({site:e})=>{var N,F,$,h;const{updateSite:o,deleteSite:r}=X(),[a,s]=p.useState(e.host_name),[i,d]=p.useState(e.port??8080),[n,g]=p.useState(e.dir??void 0),[j,v]=p.useState(e.bin),[I,c]=p.useState(!1),y=re(),m=(l,f)=>{let _=Array.isArray(f)||isNaN(f)===!1?f:`${f}`;Y.promise(o.mutateAsync({hostname:e.host_name,siteSettings:{...e,[l]:_}}),{loading:`Updating settings.. [${e.host_name}]`,success:`Settings updated! [${e.host_name}]`,error:R=>`${R}`})};return t.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:l=>{l.preventDefault()},children:[t.jsxs(T,{noTopSeparator:!0,children:[t.jsx(x,{title:"Hostname",subTitle:b.hostname_frontend,children:t.jsx(w,{originalValue:e.host_name,onSave:l=>{m("host_name",l)},withSaveButton:!0,value:a,onChange:l=>s(l.target.value)})}),t.jsx(x,{title:"Port",subTitle:b.port,children:t.jsx(w,{originalValue:e.port??8080,withSaveButton:!0,onSave:l=>{m("port",l)},value:i,onChange:l=>{isNaN(Number(l.target.value))||d(Number(l.target.value))}})})]}),t.jsxs(T,{noTopSeparator:!0,children:[t.jsx(x,{title:"Directory",subTitle:b.directory,children:t.jsx(w,{value:n,withSaveButton:!0,originalValue:e.dir??void 0,onSave:l=>{m("dir",l)},onChange:l=>g(l.target.value)})}),t.jsx(x,{title:"Bin",subTitle:b.binary,children:t.jsx(w,{value:j,withSaveButton:!0,originalValue:e.bin,onSave:l=>{m("bin",l)},onChange:l=>v(l.target.value)})})]}),t.jsx(T,{noTopSeparator:!0,children:t.jsx(x,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:b.https,children:t.jsx(w,{checked:!!e.https,onChange:()=>{m("https",!e.https)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),t.jsx(T,{noTopSeparator:!0,children:t.jsx(x,{labelFor:"auto_start",rowOnly:!0,title:"Auto start",subTitle:b.auto_start,children:t.jsx(w,{id:"auto_start",checked:!!e.auto_start,name:"auto_start",onChange:()=>{m("auto_start",!e.auto_start)},type:"checkbox",style:{width:"20px",height:"20px"}})})}),t.jsxs(T,{noTopSeparator:!0,children:[t.jsx(x,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:b.capture_subdomains,children:t.jsx(w,{onChange:()=>{m("capture_subdomains",!e.capture_subdomains)},checked:!!e.capture_subdomains,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),t.jsx(x,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:b.disable_tcp_tunnel,children:t.jsx(w,{type:"checkbox",checked:!!e.disable_tcp_tunnel_mode,onChange:()=>{m("disable_tcp_tunnel_mode",!e.disable_tcp_tunnel_mode)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),t.jsx(x,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:b.forward_subdomains,children:t.jsx(w,{type:"checkbox",checked:!!e.forward_subdomains,onChange:()=>{m("forward_subdomains",!e.forward_subdomains)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),t.jsxs(T,{noTopSeparator:!0,noBottomSeparator:!0,children:[t.jsx(x,{title:"H2 Hints",subTitle:b.h2_hint}),t.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start"},children:[t.jsx(D,{onClick:()=>{var l;m("hints",(l=e.hints)!=null&&l.includes(u.H2)?e.hints.filter(f=>f!==u.H2):[...e.hints??[],u.H2])},checked:!!((N=e==null?void 0:e.hints)!=null&&N.includes(u.H2)),title:"H2"}),t.jsx(D,{onClick:()=>{var l;m("hints",(l=e.hints)!=null&&l.includes(u.H2C)?e.hints.filter(f=>f!==u.H2C):[...e.hints??[],u.H2C])},checked:!!((F=e==null?void 0:e.hints)!=null&&F.includes(u.H2C)),title:"H2C"}),t.jsx(D,{onClick:()=>{var l;m("hints",(l=e.hints)!=null&&l.includes(u.H2CPK)?e.hints.filter(f=>f!==u.H2CPK):[...e.hints??[],u.H2CPK])},checked:!!(($=e==null?void 0:e.hints)!=null&&$.includes(u.H2CPK)),title:"H2CPK"}),t.jsx(D,{onClick:()=>{var l;m("hints",(l=e.hints)!=null&&l.includes(u.NOH2)?e.hints.filter(f=>f!==u.NOH2):[...e.hints??[],u.NOH2])},checked:!!((h=e==null?void 0:e.hints)!=null&&h.includes(u.NOH2)),title:"NOH2"})]}),t.jsx(x,{title:"Log format",subTitle:b.log_format,children:t.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:e.log_format??ne.Standard,onChange:l=>{m("log_format",l.target.value)},name:"log_format",style:{height:"30px",width:"100%"},children:[t.jsx("option",{value:ne.Standard,children:"Standard"}),t.jsx("option",{value:ne.Dotnet,children:"Dotnet"})]})})]}),t.jsx("div",{style:{marginBottom:"20px"},children:t.jsx(x,{labelFor:"exclude_from_start_all",rowOnly:!0,title:"Exclude from 'start all'",subTitle:b.exclude_from_start_all,children:t.jsx(w,{checked:!!e.exclude_from_start_all,onChange:()=>{m("exclude_from_start_all",!e.exclude_from_start_all)},id:"exclude_from_start_all",type:"checkbox",style:{width:"20px",height:"20px"}})})}),t.jsx(T,{noBottomSeparator:!0,children:t.jsx(x,{vertical:!0,title:"Environment variables",subTitle:b.env_vars,children:t.jsx(Ye,{keys:e.env_vars??[],onRemoveKey:l=>{var f;m("env_vars",(f=e.env_vars)==null?void 0:f.filter(_=>_.key!==l))},onNewKey:(l,f)=>{var _;m("env_vars",[...((_=e.env_vars)==null?void 0:_.filter(R=>R.key!==l.key&&R.key!==f))??[],{key:l.key,value:l.value}])}})})}),t.jsx(T,{noBottomSeparator:!0,noTopSeparator:!0,children:t.jsx(x,{vertical:!0,title:"Arguments",subTitle:b.args,children:t.jsx(et,{onAddArg:(l,f)=>{var _;m("args",[...((_=e.args)==null?void 0:_.filter(R=>R!==f))??[],l])},onRemoveArg:l=>{var f;m("args",[...((f=e.args)==null?void 0:f.filter(_=>_!==l))??[]])},defaultKeys:e.args??[]})})}),t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:t.jsx(E,{onClick:()=>{c(!0)},style:{width:"max-content"},dangerButton:!0,children:"Delete site"})}),t.jsx(Ce,{show:I,onClose:()=>c(!1),title:"Delete",subtitle:`Are you sure you want to delete the site '${e.host_name}'?`,children:t.jsxs("div",{style:{display:"flex",gap:"20px",marginTop:"10px"},children:[t.jsx(E,{secondary:!0,onClick:()=>c(!1),children:"Cancel"}),t.jsx(E,{onClick:()=>{Y.promise(r.mutateAsync({hostname:e.host_name},{onSuccess:()=>{c(!1),y.navigate({to:"/"})}}),{loading:`Deleting site.. [${e.host_name}]`,success:()=>(y.navigate({to:"/"}),`Site deleted! [${e.host_name}]`),error:l=>`${l}`})},dangerButton:!0,children:"Yes, delete"})]})})]},e.host_name)},Ct=()=>t.jsx("svg",{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 24 24",children:t.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 7.757v8.486M7.757 12h8.486M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})}),Tt=({site:e,show:o,onClose:r,listIndex:a})=>{var m,N,F,$;const{data:s}=be(),{updateRemoteSite:i}=X(),d=s.find(h=>h.host_name===e.host_name),n=d==null?void 0:d.backends[a],[g,j]=p.useState((n==null?void 0:n.address)??""),[v,I]=p.useState((n==null?void 0:n.port)??8080),c=(n==null?void 0:n.https)??!1,y=({newBackendSettings:h})=>{const l=[...e.backends.slice(0,a),h,...e.backends.slice(a+1)];i.mutateAsync({hostname:e.host_name,siteSettings:{...e,backends:l}})};return n?(console.log("not null, show:",o),t.jsx(Ue,{open:o,onOpenChange:r,children:t.jsxs(qe,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[t.jsxs(Je,{className:"text-left",children:[t.jsx(Ge,{className:"text-white",children:"Edit backend"}),t.jsxs(Ze,{children:["Making changes to ",n.address]})]}),t.jsxs(T,{children:[t.jsx(x,{vertical:!0,title:"Address",subTitle:b.hostname_frontend,children:t.jsx(w,{originalValue:n==null?void 0:n.address,onSave:()=>{y({newBackendSettings:{port:n.port,address:g,hints:(n==null?void 0:n.hints)??[],https:c}})},withSaveButton:!0,value:g,onChange:h=>{j(h.target.value)}})}),t.jsx(x,{vertical:!0,title:"Port",subTitle:b.port,children:t.jsx(w,{originalValue:n==null?void 0:n.port,withSaveButton:!0,onSave:()=>{y({newBackendSettings:{port:v,address:n.address,hints:(n==null?void 0:n.hints)??[],https:c}})},value:v,onChange:h=>{isNaN(Number(h.target.value))||I(Number(h.target.value))}})}),t.jsx(x,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:b.https,children:t.jsx(w,{checked:c,onChange:()=>{y({newBackendSettings:{port:n.port,address:n.address,hints:(n==null?void 0:n.hints)??[],https:!c}})},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})}),t.jsxs("div",{children:[t.jsx(x,{title:"Hints",subTitle:b.h2_hint}),t.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"4px"},children:[t.jsx(D,{onClick:()=>{var h;y({newBackendSettings:{port:n.port,address:n.address,hints:(h=n==null?void 0:n.hints)!=null&&h.includes(u.H2)?n==null?void 0:n.hints.filter(l=>l!==u.H2):[...(n==null?void 0:n.hints)??[],u.H2],https:c}})},checked:!!((m=n==null?void 0:n.hints)!=null&&m.includes(u.H2)),title:"H2"}),t.jsx(D,{onClick:()=>{var h;y({newBackendSettings:{port:n.port,address:n.address,hints:(h=n==null?void 0:n.hints)!=null&&h.includes(u.H2C)?n==null?void 0:n.hints.filter(l=>l!==u.H2C):[...(n==null?void 0:n.hints)??[],u.H2C],https:c}})},checked:!!((N=n==null?void 0:n.hints)!=null&&N.includes(u.H2C)),title:"H2C"}),t.jsx(D,{onClick:()=>{var h;y({newBackendSettings:{port:n.port,address:n.address,hints:(h=n==null?void 0:n.hints)!=null&&h.includes(u.H2CPK)?n==null?void 0:n.hints.filter(l=>l!==u.H2CPK):[...(n==null?void 0:n.hints)??[],u.H2CPK],https:c}})},checked:!!((F=n==null?void 0:n.hints)!=null&&F.includes(u.H2CPK)),title:"H2CPK"}),t.jsx(D,{onClick:()=>{var h;y({newBackendSettings:{port:n.port,address:n.address,hints:(h=n==null?void 0:n.hints)!=null&&h.includes(u.NOH2)?n==null?void 0:n.hints.filter(l=>l!==u.NOH2):[...(n==null?void 0:n.hints)??[],u.NOH2],https:c}})},checked:!!(($=n==null?void 0:n.hints)!=null&&$.includes(u.NOH2)),title:"NOH2"})]})]})]}),t.jsx("div",{style:{display:"grid",gridTemplateColumns:".5fr 1fr",gap:"10px",marginTop:"5px"}}),t.jsxs(Qe,{className:"flex flex-row gap-4",children:[t.jsx(E,{onClick:async()=>{try{await i.mutateAsync({hostname:e.host_name,siteSettings:{...e,backends:e.backends.filter((h,l)=>l!==a)}}),r()}catch(h){console.error("delete backend error:",h)}},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),t.jsx(Xe,{asChild:!0,children:t.jsx(E,{type:"submit",children:"Close"})})]})]})})):(console.log("null"),null)},Nt=({site:e})=>{var I;const{deleteSite:o,updateRemoteSite:r}=X(),[a,s]=p.useState(e==null?void 0:e.host_name),[i,d]=p.useState(!1),[n,g]=p.useState({backend:void 0,show:!1,listIndex:-1});p.useEffect(()=>{g(c=>({...c,backends:e.backends}))},[e]);const j=re(),v=(c,y)=>{let m=Array.isArray(y)||isNaN(y)===!1?y:`${y}`;Y.promise(r.mutateAsync({hostname:e.host_name,siteSettings:{...e,[c]:m}}),{loading:`Updating settings.. [${e.host_name}]`,success:`Settings updated! [${e.host_name}]`,error:N=>`${N}`})};return t.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:c=>{c.preventDefault()},children:[t.jsx(T,{noTopSeparator:!0,children:t.jsx(x,{title:"Hostname",subTitle:b.hostname_frontend,children:t.jsx(w,{originalValue:e.host_name,onSave:c=>{v("host_name",c)},withSaveButton:!0,value:a,onChange:c=>s(c.target.value)})})}),t.jsxs(T,{noTopSeparator:!0,children:[t.jsx(x,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:b.capture_subdomains,children:t.jsx(w,{onChange:()=>{v("capture_subdomains",!e.capture_subdomains)},checked:!!e.capture_subdomains,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),t.jsx(x,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:b.disable_tcp_tunnel,children:t.jsx(w,{type:"checkbox",checked:!!e.disable_tcp_tunnel_mode,onChange:()=>{v("disable_tcp_tunnel_mode",!e.disable_tcp_tunnel_mode)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),t.jsx(x,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:b.forward_subdomains,children:t.jsx(w,{type:"checkbox",checked:!!e.forward_subdomains,onChange:()=>{v("forward_subdomains",!e.forward_subdomains)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),t.jsxs(T,{noTopSeparator:!0,children:[t.jsx(x,{title:"Backends",subTitle:b.backends}),t.jsxs("div",{style:{background:"var(--color3)",color:"black",marginTop:"10px",borderRadius:"5px",overflow:"hidden"},children:[(I=e.backends)==null?void 0:I.map((c,y)=>t.jsx("div",{onClick:()=>{g({backend:c,show:!0,listIndex:y})},className:"env-var-item",style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"5px"},children:t.jsx("p",{style:{zIndex:1,fontSize:".8rem"},children:c.address})},JSON.stringify({backend:c,index:y}))),t.jsx("div",{onClick:()=>{r.mutateAsync({hostname:e.host_name,siteSettings:{...e,backends:[...e.backends,{address:"NEW_BACKEND",port:8080,hints:[],https:!1}]}})},className:"env-var-item",style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"5px"},children:t.jsxs("div",{style:{zIndex:1,fontSize:".8rem",display:"flex",alignItems:"center",gap:"5px"},children:[t.jsx(Ct,{}),"New backend"]})})]})]}),t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:t.jsx(E,{onClick:()=>{d(!0)},style:{width:"max-content"},dangerButton:!0,children:"Delete site"})}),t.jsx(Ce,{show:i,onClose:()=>d(!1),title:"Delete",subtitle:`Are you sure you want to delete the site '${e.host_name}'?`,children:t.jsxs("div",{style:{display:"flex",gap:"20px",marginTop:"10px"},children:[t.jsx(E,{secondary:!0,onClick:()=>d(!1),children:"Cancel"}),t.jsx(E,{onClick:()=>{o.mutateAsync({hostname:e.host_name},{onSuccess:()=>{d(!1),j.navigate({to:"/"})}})},dangerButton:!0,children:"Yes, delete"})]})},e.host_name),t.jsx(Tt,{listIndex:n.listIndex,site:e,show:n.show,onClose:()=>g(c=>({...c,show:!1}))},JSON.stringify(n.backend))]},e.host_name)},kt=({hostedProcess:e,remoteSite:o})=>e?t.jsx(_t,{site:e}):o?t.jsx(Nt,{site:o}):t.jsx("p",{children:"Site not found"}),At=({sections:e})=>{const o=re(),a=new URLSearchParams(window.location.search).get("tab"),[s,i]=p.useState(Number(a)??0);return t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{display:"flex",gap:"20px",marginTop:"20px"},children:e==null?void 0:e.map((d,n)=>t.jsx(Ot,{active:s===n,onClick:()=>{o.navigate({search:{tab:n}}),i(n)},title:d.name},n))}),t.jsx("div",{style:{height:"1px",width:"100%",background:"#ffffff44",marginTop:"-1px",marginBottom:"20px"}}),e==null?void 0:e[s].content]})},Ot=({active:e,title:o,onClick:r})=>t.jsx("div",{style:{color:e?"var(--color2)":"#fff",cursor:"pointer",borderBottom:e?"1px solid var(--color2)":0},onClick:r,children:o}),Ht=()=>{const{data:e}=Ke(),{data:o}=be(),r=We({from:"/site/$siteName"}),a=e.find(d=>d.host_name.replaceAll("http://","").replaceAll("https://","")===r.siteName),s=o.find(d=>d.host_name.replaceAll("http://","").replaceAll("https://","")===r.siteName);if(!a&&!s)return t.jsx("p",{children:"site not found"});const i=[];return a&&i.push({name:"Overview",content:t.jsx(nt,{hostedProcess:a,remoteSite:s})}),i.push({name:"Settings",content:t.jsx(kt,{hostedProcess:a,remoteSite:s})}),a&&i.push({name:"Log",content:t.jsx(ze,{hostedProcess:a,remoteSite:s})}),t.jsxs("div",{children:[t.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:r.siteName}),t.jsx(At,{sections:i},(a==null?void 0:a.host_name)??(s==null?void 0:s.host_name))]})},Dt=Ve("/site/$siteName")({component:Ht});export{Dt as Route}; diff --git a/web-ui/dist/assets/site._siteName.lazy-CaDHN2Jl.js b/web-ui/dist/assets/site._siteName.lazy-CaDHN2Jl.js new file mode 100644 index 0000000..98fd2c3 --- /dev/null +++ b/web-ui/dist/assets/site._siteName.lazy-CaDHN2Jl.js @@ -0,0 +1,6 @@ +import{B as N,e as R,h as Z,j as e,_ as F,r as j,i as D,k as $,S as y,c as p,C as T,H as o,L as B,l as M,m as ee,n as te,o as se,d as ae}from"./index-dDKJaDn2.js";import{c as ne,B as H,O as E,C as W,a as oe,T as L,D as V,P as re,R as le,S as m,I as b,E as ie,b as de,d as ce,e as ue,f as he,g as pe,h as me,i as xe,j as ge,k as fe,l as I,m as K,n as be,o as je}from"./env_variables-rG-Gz1th.js";import{A as _e}from"./arguments-Dk8DAUdv.js";/** + * @license lucide-react v0.447.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Se=ne("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),ye={[N.Running]:"Stop site",[N.Stopped]:"Start site",[N.Faulty]:"Start site",[N.Stopping]:"Start site",[N.Starting]:"Stop site",[N.Remote]:"Remote"},we=({hostedProcess:t,remoteSite:n})=>{var c,s,_,C;const{startSite:l,stopSite:r}=R(),h=Z(),d=t?(s=(c=h.data)==null?void 0:c.find(f=>f.hostname===t.host_name))==null?void 0:s.state:n?(C=(_=h.data)==null?void 0:_.find(f=>f.hostname===n.host_name))==null?void 0:C.state:N.Remote;return e.jsx(e.Fragment,{children:e.jsxs("div",{style:{fontSize:".8rem",display:"flex",flexDirection:"column",gap:"10px",maxWidth:"750px"},children:[e.jsxs("div",{className:"pb-2 select-none flex items-center justify-between border-b border-gray-500",title:`${d}`,children:[e.jsx("p",{style:{textTransform:"uppercase",fontWeight:"bold"},children:"status:"}),e.jsx("p",{style:{display:"flex",alignItems:"center",gap:"5px"},children:d})]}),e.jsx("div",{style:{marginTop:"10px"},children:d!==N.Remote&&e.jsx(H,{style:{maxWidth:"max-content"},disabled:l.isPending||r.isPending,dangerButton:d===N.Running,onClick:async()=>{t&&(d===N.Running?F.promise(r.mutateAsync({hostname:t.host_name}),{loading:"Stopping site..",success:"Site stopped!",error:f=>`Failed to stop site: ${f}`}):F.promise(l.mutateAsync({hostname:t.host_name}),{loading:"Starting site..",success:"Site started!",error:f=>`Failed to start site: ${f}`}))},children:ye[d]})})]})})},ve=le,Ce=re,z=j.forwardRef(({className:t,...n},l)=>e.jsx(E,{ref:l,className:D("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",t),...n}));z.displayName=E.displayName;const J=j.forwardRef(({className:t,children:n,...l},r)=>e.jsxs(Ce,{children:[e.jsx(z,{}),e.jsxs(W,{ref:r,className:D("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",t),...l,children:[n,e.jsxs(oe,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(Se,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));J.displayName=W.displayName;const U=({className:t,...n})=>e.jsx("div",{className:D("flex flex-col space-y-1.5 text-center sm:text-left",t),...n});U.displayName="DialogHeader";const Y=({className:t,...n})=>e.jsx("div",{className:D("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...n});Y.displayName="DialogFooter";const X=j.forwardRef(({className:t,...n},l)=>e.jsx(L,{ref:l,className:D("text-lg font-semibold leading-none tracking-tight",t),...n}));X.displayName=L.displayName;const q=j.forwardRef(({className:t,...n},l)=>e.jsx(V,{ref:l,className:D("text-sm text-muted-foreground",t),...n}));q.displayName=V.displayName;function G({title:t,subtitle:n,onConfirm:l,onClose:r,show:h,noBtnText:d,yesBtnText:c}){return e.jsx(ve,{open:h,onOpenChange:r,children:e.jsxs(J,{className:"sm:max-w-[425px] bg-[#09090b]",children:[e.jsxs(U,{children:[e.jsx(X,{children:t}),e.jsx(q,{children:n})]}),e.jsxs(Y,{className:"gap-2",children:[e.jsx(H,{onClick:r,secondary:!0,type:"submit",children:d??"No, cancel"}),e.jsx(H,{onClick:l,type:"submit",children:c??"Yes, confirm"})]})]})})}const Ne=({site:t})=>{var A,O,P,i;const{updateSite:n,deleteSite:l}=R(),[r,h]=j.useState(t.host_name),[d,c]=j.useState(t.port??8080),[s,_]=j.useState(t.dir??void 0),[C,f]=j.useState(t.bin),[S,g]=j.useState(!1),w=$(),u=(a,x)=>{let v=Array.isArray(x)||isNaN(x)===!1?x:`${x}`;F.promise(n.mutateAsync({hostname:t.host_name,siteSettings:{...t,[a]:v}}),{loading:`Updating settings.. [${t.host_name}]`,success:`Settings updated! [${t.host_name}]`,error:k=>`${k}`})};return e.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:a=>{a.preventDefault()},children:[e.jsxs(y,{noTopSeparator:!0,children:[e.jsx(p,{title:"Hostname",subTitle:m.hostname_frontend,children:e.jsx(b,{originalValue:t.host_name,onSave:a=>{u("host_name",a)},withSaveButton:!0,value:r,onChange:a=>h(a.target.value)})}),e.jsx(p,{title:"Port",subTitle:m.port,children:e.jsx(b,{originalValue:t.port??8080,withSaveButton:!0,onSave:a=>{u("port",a)},value:d,onChange:a=>{isNaN(Number(a.target.value))||c(Number(a.target.value))}})})]}),e.jsxs(y,{noTopSeparator:!0,children:[e.jsx(p,{title:"Directory",subTitle:m.directory,children:e.jsx(b,{value:s,withSaveButton:!0,originalValue:t.dir??void 0,onSave:a=>{u("dir",a)},onChange:a=>_(a.target.value)})}),e.jsx(p,{title:"Bin",subTitle:m.binary,children:e.jsx(b,{value:C,withSaveButton:!0,originalValue:t.bin,onSave:a=>{u("bin",a)},onChange:a=>f(a.target.value)})})]}),e.jsx(y,{noTopSeparator:!0,children:e.jsx(p,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:m.https,children:e.jsx(b,{checked:!!t.https,onChange:()=>{u("https",!t.https)},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsx(y,{noTopSeparator:!0,children:e.jsx(p,{labelFor:"auto_start",rowOnly:!0,title:"Auto start",subTitle:m.auto_start,children:e.jsx(b,{id:"auto_start",checked:!!t.auto_start,name:"auto_start",onChange:()=>{u("auto_start",!t.auto_start)},type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsxs(y,{noTopSeparator:!0,children:[e.jsx(p,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:m.capture_subdomains,children:e.jsx(b,{onChange:()=>{u("capture_subdomains",!t.capture_subdomains)},checked:!!t.capture_subdomains,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(p,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:m.disable_tcp_tunnel,children:e.jsx(b,{type:"checkbox",checked:!!t.disable_tcp_tunnel_mode,onChange:()=>{u("disable_tcp_tunnel_mode",!t.disable_tcp_tunnel_mode)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(p,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:m.forward_subdomains,children:e.jsx(b,{type:"checkbox",checked:!!t.forward_subdomains,onChange:()=>{u("forward_subdomains",!t.forward_subdomains)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsxs(y,{noTopSeparator:!0,noBottomSeparator:!0,children:[e.jsx(p,{title:"H2 Hints",subTitle:m.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start"},children:[e.jsx(T,{onClick:()=>{var a;u("hints",(a=t.hints)!=null&&a.includes(o.H2)?t.hints.filter(x=>x!==o.H2):[...t.hints??[],o.H2])},checked:!!((A=t==null?void 0:t.hints)!=null&&A.includes(o.H2)),title:"H2"}),e.jsx(T,{onClick:()=>{var a;u("hints",(a=t.hints)!=null&&a.includes(o.H2C)?t.hints.filter(x=>x!==o.H2C):[...t.hints??[],o.H2C])},checked:!!((O=t==null?void 0:t.hints)!=null&&O.includes(o.H2C)),title:"H2C"}),e.jsx(T,{onClick:()=>{var a;u("hints",(a=t.hints)!=null&&a.includes(o.H2CPK)?t.hints.filter(x=>x!==o.H2CPK):[...t.hints??[],o.H2CPK])},checked:!!((P=t==null?void 0:t.hints)!=null&&P.includes(o.H2CPK)),title:"H2CPK"}),e.jsx(T,{onClick:()=>{var a;u("hints",(a=t.hints)!=null&&a.includes(o.NOH2)?t.hints.filter(x=>x!==o.NOH2):[...t.hints??[],o.NOH2])},checked:!!((i=t==null?void 0:t.hints)!=null&&i.includes(o.NOH2)),title:"NOH2"})]}),e.jsx(p,{title:"Log format",subTitle:m.log_format,children:e.jsxs("select",{className:"text-black rounded pl-3 pr-3",value:t.log_format??B.Standard,onChange:a=>{u("log_format",a.target.value)},name:"log_format",style:{height:"30px",width:"100%"},children:[e.jsx("option",{value:B.Standard,children:"Standard"}),e.jsx("option",{value:B.Dotnet,children:"Dotnet"})]})})]}),e.jsx("div",{style:{marginBottom:"20px"},children:e.jsx(p,{labelFor:"exclude_from_start_all",rowOnly:!0,title:"Exclude from 'start all'",subTitle:m.exclude_from_start_all,children:e.jsx(b,{checked:!!t.exclude_from_start_all,onChange:()=>{u("exclude_from_start_all",!t.exclude_from_start_all)},id:"exclude_from_start_all",type:"checkbox",style:{width:"20px",height:"20px"}})})}),e.jsx(y,{noBottomSeparator:!0,children:e.jsx(p,{vertical:!0,title:"Environment variables",subTitle:m.env_vars,children:e.jsx(ie,{keys:t.env_vars??[],onRemoveKey:a=>{var x;u("env_vars",(x=t.env_vars)==null?void 0:x.filter(v=>v.key!==a))},onNewKey:(a,x)=>{var v;u("env_vars",[...((v=t.env_vars)==null?void 0:v.filter(k=>k.key!==a.key&&k.key!==x))??[],{key:a.key,value:a.value}])}})})}),e.jsx(y,{noBottomSeparator:!0,noTopSeparator:!0,children:e.jsx(p,{vertical:!0,title:"Arguments",subTitle:m.args,children:e.jsx(_e,{onAddArg:(a,x)=>{var v;u("args",[...((v=t.args)==null?void 0:v.filter(k=>k!==x))??[],a])},onRemoveArg:a=>{var x;u("args",[...((x=t.args)==null?void 0:x.filter(v=>v!==a))??[]])},defaultKeys:t.args??[]})})}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(H,{onClick:()=>{g(!0)},style:{width:"max-content"},dangerButton:!0,children:"Delete site"})}),e.jsx(G,{onClose:()=>g(!1),onConfirm:()=>{g(!1),l.mutateAsync({hostname:t.host_name},{onSuccess:()=>{g(!1),w.navigate({to:"/"})}})},show:S,title:"Delete",yesBtnText:"Yes, delete it",subtitle:`Are you sure you want to delete the site '${t.host_name}'?`})]},t.host_name)},Q=({site:t,show:n,onClose:l,listIndex:r})=>{var u,A,O,P;const{data:h}=M(),{updateRemoteSite:d}=R(),c=h.find(i=>i.host_name===t.host_name),s=c==null?void 0:c.backends[r],[_,C]=j.useState((s==null?void 0:s.address)??""),[f,S]=j.useState((s==null?void 0:s.port)??8080),g=(s==null?void 0:s.https)??!1,w=({newBackendSettings:i})=>{const a=[...t.backends.slice(0,r),i,...t.backends.slice(r+1)];d.mutateAsync({hostname:t.host_name,siteSettings:{...t,backends:a}})};return s?(console.log("not null, show:",n),e.jsx(de,{open:n,onOpenChange:l,children:e.jsxs(ce,{className:"bg-[#242424] border-l-[#ffffff10] w-full",children:[e.jsxs(ue,{className:"text-left",children:[e.jsx(he,{className:"text-white",children:"Edit backend"}),e.jsxs(pe,{children:["Making changes to ",s.address]})]}),e.jsxs(y,{children:[e.jsx(p,{vertical:!0,title:"Address",subTitle:m.hostname_frontend,children:e.jsx(b,{originalValue:s==null?void 0:s.address,onSave:()=>{w({newBackendSettings:{port:s.port,address:_,hints:(s==null?void 0:s.hints)??[],https:g}})},withSaveButton:!0,value:_,onChange:i=>{C(i.target.value)}})}),e.jsx(p,{vertical:!0,title:"Port",subTitle:m.port,children:e.jsx(b,{originalValue:s==null?void 0:s.port,withSaveButton:!0,onSave:()=>{w({newBackendSettings:{port:f,address:s.address,hints:(s==null?void 0:s.hints)??[],https:g}})},value:f,onChange:i=>{isNaN(Number(i.target.value))||S(Number(i.target.value))}})}),e.jsx(p,{labelFor:"use_https",rowOnly:!0,title:"HTTPS",subTitle:m.https,children:e.jsx(b,{checked:g,onChange:()=>{w({newBackendSettings:{port:s.port,address:s.address,hints:(s==null?void 0:s.hints)??[],https:!g}})},name:"use_https",id:"use_https",type:"checkbox",style:{width:"20px",height:"20px"}})}),e.jsxs("div",{children:[e.jsx(p,{title:"Hints",subTitle:m.h2_hint}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",justifyContent:"start",marginTop:"4px"},children:[e.jsx(T,{onClick:()=>{var i;w({newBackendSettings:{port:s.port,address:s.address,hints:(i=s==null?void 0:s.hints)!=null&&i.includes(o.H2)?s==null?void 0:s.hints.filter(a=>a!==o.H2):[...(s==null?void 0:s.hints)??[],o.H2],https:g}})},checked:!!((u=s==null?void 0:s.hints)!=null&&u.includes(o.H2)),title:"H2"}),e.jsx(T,{onClick:()=>{var i;w({newBackendSettings:{port:s.port,address:s.address,hints:(i=s==null?void 0:s.hints)!=null&&i.includes(o.H2C)?s==null?void 0:s.hints.filter(a=>a!==o.H2C):[...(s==null?void 0:s.hints)??[],o.H2C],https:g}})},checked:!!((A=s==null?void 0:s.hints)!=null&&A.includes(o.H2C)),title:"H2C"}),e.jsx(T,{onClick:()=>{var i;w({newBackendSettings:{port:s.port,address:s.address,hints:(i=s==null?void 0:s.hints)!=null&&i.includes(o.H2CPK)?s==null?void 0:s.hints.filter(a=>a!==o.H2CPK):[...(s==null?void 0:s.hints)??[],o.H2CPK],https:g}})},checked:!!((O=s==null?void 0:s.hints)!=null&&O.includes(o.H2CPK)),title:"H2CPK"}),e.jsx(T,{onClick:()=>{var i;w({newBackendSettings:{port:s.port,address:s.address,hints:(i=s==null?void 0:s.hints)!=null&&i.includes(o.NOH2)?s==null?void 0:s.hints.filter(a=>a!==o.NOH2):[...(s==null?void 0:s.hints)??[],o.NOH2],https:g}})},checked:!!((P=s==null?void 0:s.hints)!=null&&P.includes(o.NOH2)),title:"NOH2"})]})]})]}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:".5fr 1fr",gap:"10px",marginTop:"5px"}}),e.jsxs(me,{className:"flex flex-row gap-4",children:[e.jsx(H,{onClick:async()=>{try{await d.mutateAsync({hostname:t.host_name,siteSettings:{...t,backends:t.backends.filter((i,a)=>a!==r)}}),l()}catch(i){console.error("delete backend error:",i)}},style:{width:"150px",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"5px",justifyContent:"center"},dangerButton:!0,children:"Delete"}),e.jsx(xe,{asChild:!0,children:e.jsx(H,{type:"submit",children:"Close"})})]})]})})):(console.log("null"),null)},Te=({site:t})=>{var c,s;const{updateRemoteSite:n}=R(),[l,r]=j.useState({backend:void 0,show:!1,listIndex:-1}),h=async()=>{await n.mutateAsync({hostname:t.host_name,siteSettings:{...t,backends:[...t.backends,{address:"NEW_BACKEND",port:8080,hints:[],https:!1}]}})},d=["hover:cursor-pointer"];return((c=t.backends)==null?void 0:c.length)===0&&d.push("border-0"),e.jsxs(e.Fragment,{children:[e.jsxs(ge,{children:[e.jsx(fe,{children:(s=t.backends)==null?void 0:s.map((_,C)=>e.jsx(I,{className:"hover:cursor-pointer",onClick:()=>{r({backend:_,show:!0,listIndex:C})},children:e.jsx(K,{className:"font-medium",children:_.address})},JSON.stringify(_)))}),e.jsx(be,{className:d.join(" "),children:e.jsx(I,{onClick:h,children:e.jsx(K,{className:"bg-transparent",colSpan:3,children:e.jsxs("div",{className:"flex items-center gap-2 justify-center",children:[e.jsx(je,{}),e.jsx("span",{children:"Add new backend"})]})})})})]}),e.jsx(Q,{listIndex:l.listIndex,site:t,show:l.show,onClose:()=>r(_=>({..._,show:!1}))},JSON.stringify(l.backend))]})},He=({site:t})=>{const{deleteSite:n,updateRemoteSite:l}=R(),[r,h]=j.useState(t==null?void 0:t.host_name),[d,c]=j.useState(!1),[s,_]=j.useState({backend:void 0,show:!1,listIndex:-1});j.useEffect(()=>{_(S=>({...S,backends:t.backends}))},[t]);const C=$(),f=(S,g)=>{let w=Array.isArray(g)||isNaN(g)===!1?g:`${g}`;F.promise(l.mutateAsync({hostname:t.host_name,siteSettings:{...t,[S]:w}}),{loading:`Updating settings.. [${t.host_name}]`,success:`Settings updated! [${t.host_name}]`,error:u=>`${u}`})};return e.jsxs("div",{style:{paddingBottom:"50px",maxWidth:"750px"},onSubmit:S=>{S.preventDefault()},children:[e.jsx(y,{noTopSeparator:!0,children:e.jsx(p,{title:"Hostname",subTitle:m.hostname_frontend,children:e.jsx(b,{originalValue:t.host_name,onSave:S=>{f("host_name",S)},withSaveButton:!0,value:r,onChange:S=>h(S.target.value)})})}),e.jsxs(y,{noTopSeparator:!0,children:[e.jsx(p,{labelFor:"capture_subdomains",rowOnly:!0,title:"Capture sub-domains",subTitle:m.capture_subdomains,children:e.jsx(b,{onChange:()=>{f("capture_subdomains",!t.capture_subdomains)},checked:!!t.capture_subdomains,type:"checkbox",name:"capture_subdomains",id:"capture_subdomains",style:{width:"20px",height:"20px"}})}),e.jsx(p,{rowOnly:!0,labelFor:"disable_tcp_tunnel",title:"Disable TCP tunnel mode",subTitle:m.disable_tcp_tunnel,children:e.jsx(b,{type:"checkbox",checked:!!t.disable_tcp_tunnel_mode,onChange:()=>{f("disable_tcp_tunnel_mode",!t.disable_tcp_tunnel_mode)},id:"disable_tcp_tunnel",name:"disable_tcp_tunnel",style:{width:"20px",height:"20px"}})}),e.jsx(p,{rowOnly:!0,labelFor:"forward_subdomains",title:"Forward sub-domains",subTitle:m.forward_subdomains,children:e.jsx(b,{type:"checkbox",checked:!!t.forward_subdomains,onChange:()=>{f("forward_subdomains",!t.forward_subdomains)},id:"forward_subdomains",name:"forward_subdomains",style:{width:"20px",height:"20px"}})})]}),e.jsxs(y,{noTopSeparator:!0,noBottomSeparator:!0,children:[e.jsx(p,{title:"Backends",subTitle:m.backends}),e.jsx(Te,{site:t})]}),e.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",marginTop:"20px"},children:e.jsx(H,{onClick:()=>{c(!0)},style:{width:"max-content"},dangerButton:!0,children:"Delete site"})}),e.jsx(G,{onClose:()=>c(!1),onConfirm:()=>{c(!1),n.mutateAsync({hostname:t.host_name},{onSuccess:()=>{c(!1),C.navigate({to:"/"})}})},show:d,title:"Delete",yesBtnText:"Yes, delete it",subtitle:`Are you sure you want to delete the site '${t.host_name}'?`}),e.jsx(Q,{listIndex:s.listIndex,site:t,show:s.show,onClose:()=>_(S=>({...S,show:!1}))},JSON.stringify(s.backend))]},t.host_name)},ke=({hostedProcess:t,remoteSite:n})=>t?e.jsx(Ne,{site:t}):n?e.jsx(He,{site:n}):e.jsx("p",{children:"Site not found"}),De=({sections:t})=>{const n=$(),r=new URLSearchParams(window.location.search).get("tab"),[h,d]=j.useState(Number(r)??0);return e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{display:"flex",gap:"20px",marginTop:"20px"},children:t==null?void 0:t.map((c,s)=>e.jsx(Ae,{active:h===s,onClick:()=>{n.navigate({search:{tab:s}}),d(s)},title:c.name},s))}),e.jsx("div",{style:{height:"1px",width:"100%",background:"#ffffff44",marginTop:"-1px",marginBottom:"20px"}}),t==null?void 0:t[h].content]})},Ae=({active:t,title:n,onClick:l})=>e.jsx("div",{style:{color:t?"var(--color2)":"#fff",cursor:"pointer",borderBottom:t?"1px solid var(--color2)":0},onClick:l,children:n}),Oe=()=>{const{data:t}=ee(),{data:n}=M(),l=te({from:"/site/$siteName"}),r=t.find(c=>c.host_name.replaceAll("http://","").replaceAll("https://","")===l.siteName),h=n.find(c=>c.host_name.replaceAll("http://","").replaceAll("https://","")===l.siteName);if(!r&&!h)return e.jsx("p",{children:"site not found"});const d=[];return r&&d.push({name:"Overview",content:e.jsx(we,{hostedProcess:r,remoteSite:h})}),d.push({name:"Settings",content:e.jsx(ke,{hostedProcess:r,remoteSite:h})}),r&&d.push({name:"Log",content:e.jsx(se,{hostedProcess:r,remoteSite:h})}),e.jsxs("div",{children:[e.jsx("p",{style:{textTransform:"uppercase",fontSize:".9rem",fontWeight:"bold",color:"var(--color2)"},children:l.siteName}),e.jsx(De,{sections:d},(r==null?void 0:r.host_name)??(h==null?void 0:h.host_name))]})},Be=ae("/site/$siteName")({component:Oe});export{Be as Route}; diff --git a/web-ui/dist/index.html b/web-ui/dist/index.html index e0291a8..817aff3 100644 --- a/web-ui/dist/index.html +++ b/web-ui/dist/index.html @@ -5,8 +5,8 @@ ODDBOX - - + +
diff --git a/web-ui/dist/readme.md b/web-ui/dist/readme.md new file mode 100644 index 0000000..1753838 --- /dev/null +++ b/web-ui/dist/readme.md @@ -0,0 +1,240 @@ +[![BuildAndTest](https://github.com/OlofBlomqvist/odd-box/actions/workflows/BuildAndTest.yml/badge.svg)](https://github.com/OlofBlomqvist/odd-box/actions/workflows/BuildAndTest.yml) + +## ODD-BOX + +A simple, cross-platform reverse proxy server tailored for local development and tinkering. Think of it as a lightweight (and more streamlined) alternative to something like IIS, but with a key difference: configuration is primarily done declaratively through structured files, rather than a graphical user interface. + +It allows you to configure a list of processes to run and host them behind their own custom hostnames. Self-signed certificates for HTTPS are automatically generated when accessing a site thru the terminating proxy service the first time (cached in .odd-box-cache dir). As with most reverse-proxy servers, odd-box also supports targetting remote backend servers. + +As configuration is done thru basic files (toml format) which are easy to share, it's very easy to reproduce a particular setup. + +Pre-built binaries are available in the [release section](https://github.com/OlofBlomqvist/odd-box/releases). + +You can also build it yourself, or install it using brew, cargo, nix or devbox; see the installation section for guidance. + +### Features + +- Cross platform (win/lin/osx) +- Easy to configure (toml files) +- Keep a list of specified binaries running +- Uses PORT environment variable for routing +- Allows for setting proc specific and global env vars +- Remote target proxying +- Terminating proxy that supports both HTTP/1.1 & HTTP2 +- TCP tunnelling for HTTP/1 +- TCP tunnelling for HTTPS/1 & HTTP2 via SNI sniffing +- TCP tunnelling for HTTP/2 over HTTP/1 (h2c upgrade) +- H2C via terminating proxy +- Automatic self-signed certs for all hosted processes +- Basic round-robin loadbalancing for remote targets +- Terminating proxy supports automaticly generating lets-encrypt certificates + + +### Performance + +While the goal of this project is not to provide a state-of-the-art level performing proxy server for production environments, but rather a tool for simplifying local development scenarios, we do **try to** ~~keep performance in mind~~ **be blazingly fast** :-) Seriously though, performance is actually pretty good but it is not a priority (yet). + +### Terminal User Interface + +The TUI is fairly simple basic; it provides an easy way to see which sites are running, the log outputs and all currently active connections. It is possible to opt-out of TUI mode by supplying the argument: "--tui=false" when starting odd-box. + +### API + +There is a basic administration API that can be enabled by adding "admin_api_port = n" to the configuration file. At some point a web-interface might be added for controlling odd-box thru this API.. + +### Screenshot(s) + +**odd-box v0.1.2:** +![Screenshot of oddbox v0.1.2](/screenshot.jpg) + + +## Installation + +Pre-built binaries are available in the [release section](https://github.com/OlofBlomqvist/odd-box/releases), +but there are more ways to install odd-box if you so wish :-) + + +- [Homebrew](https://brew.sh/) + + Recommended for Mac users. Brew lets you easily install odd-box globally and use brew for managing updates; it also works on Linux and Windows (wsl2). + +```zsh +brew tap OlofBlomqvist/repo +brew install oddbox +``` + +- [Cargo install](https://doc.rust-lang.org/cargo/getting-started/installation.html) +```bash +cargo install odd-box +``` + +- [Devbox](https://www.jetify.com/devbox) +```json +{ + "name": "example devbox config", + "packages": [ + // select rev of whichever version you need, this is for v0.1.2 + "github:OlofBlomqvist/odd-box?rev=043fe0abd9da1d4a1e0fa0bfcc300c71971e26ce" + // ... + ], + // ... +} +``` +- [Nix build](https://nix.dev/manual/nix/2.18/command-ref/nix-build) +```bash + nix build github:OlofBlomqvist/odd-box +``` +- [Nix Flake](https://nixos.wiki/wiki/Flakes) +```nix +{ + description = "example flake with oddbox"; + inputs = { + ... # select rev of whichever version you need, this is for v0.1.2 + oddbox.url = "github:OlofBlomqvist/odd-box?rev=043fe0abd9da1d4a1e0fa0bfcc300c71971e26ce"; + }; + + ... +} +``` + +### Workflow tips + +If you are hosting a local project that you are currently working on, and want to do a rebuild without having to manually start and stop your site - you may want to consider having a pre-build step that does it for you: + +You can enable or disable all sites or specific ones using the http://localhost:port/START and http://localhost:port/STOP endpoints, optionally using query parameter "?proc=my_site" to stop or start a specific site. Sites start automatically again on the next request. The same can be acomplished thru the admin-api if you enable it. + +### DNS + +As all the routing is based on hostnames, your client machine(s) must of course be able to resolve those names correctly to the proxy server IP. If you are working on a local machine this can be configured either by adding entries to your host file pointing each domain to 127.0.0.1 or by using something like [localtest.me](http://localtest.me/).me, eg. my-first-site.localtest.me when configuring hosted sites. More advanced users might use their own DNS servers to set up these domains however they like. + + +### Security tips + +Since odd-box spawns your defined binaries, you should be careful not to run odd-box in elevated/admin mode. To be safe, use a non-restricted port so that you do not need root access or follow the section for your OS below! + + +## OS Specific guidance + +#### MacOS: + +MacOS does not require super-user access when binding to 0.0.0.0 / ::1 on ports 1-1024. The easiest way to get started is to **just set the ip and tls_ip to bind to 0.0.0.0:80 and 0.0.0.0:443**. + +*Should you want to bind specifically to 127.0.0.1; do not run this application using sudo. Instead configure a redirect to a non-restricted port such as 8080, and configure odd-box to use that (port=8080):* + +```bash +rdr pass on lo0 inet proto tcp from 127.0.0.1 to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 +sudo pfctl -ef pf-rules.conf +``` + + +#### Linux: + +Do not run this application using sudo. Instead allow odd-box to listen to restricted ports directly. + +```bash +sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/odd-box +# (alternatively you could set up a redirect in your fw, similar to the MacOS section) +``` + +#### Windows: + +Do not run the application as admin (elevated mode), instead you can allow your own account to use restricted ports. + +```powershell +netsh http add urlacl url=http://+:80/ user=DOMAIN\user +# (alternatively you could set up a redirect in your fw, similar to the MacOS section) +``` + +## Configuration (V2) + +To configure the `odd-box` proxy server, create a configuration file following the format provided in the [example configuration file](https://github.com/OlofBlomqvist/odd-box/blob/main/odd-box-example-config.toml). The configuration file uses the TOML format and is designed to define both remote targets (sites that `odd-box` proxies traffic to) and hosted processes (sites or services managed directly by `odd-box`). + +Running odd-box without any arguments it will first try to read from odd-box.toml, then Config.toml. You can supply a custom config path using: ./odd-box "/tmp/my-file.toml" + +It is also possible to update the active configuration at runtime thru an administration API which fully documents the possible settings. + +### Configuration Variables + +| Variable | Description | +|-------------|----------------------------------| +| $root_dir | Resolves to whatever you set it to in the global configuration section. | +| $cfg_dir | Resolves to the directory which the configuration toml file was read from. | +| $port | Resolves to whatever port has been specified in the configuration. Only used for hosted processes. | + +> Tip: if you are editing the confguration file using vs-code you should try the "even better toml" extension, which will provide you not only with syntax highlighting but also intellisense based on the configuration files '#:schema ...' tag. + +### Basic Configuration Structure + +There are more options than the ones shown here; these are the most commonly used ones. See the example configuration or schema.json file for a list of all possible options. + +1. **Global Settings:** Set the global properties like `http_port`, `tls_port`, `ip`, `log_level`, `port_range_start`, and `env_vars`. These settings control the overall behavior of `odd-box`. + + ```toml + #:schema https://raw.githubusercontent.com/OlofBlomqvist/odd-box/main/odd-box-schema-v2.json + version = "V2" + http_port = 8080 + tls_port = 4343 + ip = "127.0.0.1" + log_level = "Trace" + port_range_start = 4242 + env_vars = [] + lets_encrypt_account_email = "example@example.com" + ``` + - ``version``: Must be "V2" + - ``http_port``: TCP Port for the server to use. Defaults to 8080 if not specified. + - ``tls_port``: TCP Port for the server to buse. Defaults to 4343 if not specified. + - ``ip``: IP Address for the server to use. Defaults to 127.0.0.1 if not specified. + - ``log_level``: info/warn/err/debug/trace - defaults to info of not specified. + - ``port_range_start``: Must be specified - used for automatically assign the PORT env var to hosted sites (if not set explicity for a site). + - ``env_vars``: List of environment variables that all hosted processes should have. + - ``lets_encrypt_account_email``: (Optional) Set email to use if you wish to use lets-encrypt. + +2. Adding Remote Targets: Define remote targets to forward traffic to external servers. Each remote_target requires a host_name (the incoming domain) and a list of backends (the target servers). To add a new remote site: + ```toml + [[remote_target]] + host_name = "example.com" + backends = [ + # hints are optional and used for specifying if server requires for example H2C. + { https = true, address="example.com", port=443, hints = [] } + ] + ``` + - ``host_name``: The incoming domain that odd-box will listen for. + - ``backends``: A list of backend servers to forward traffic to. The https property specifies if TLS is used. + +3. Adding Hosted Processes: Define hosted processes that odd-box will manage. These are services that odd-box can start, stop, and restart. Each hosted_process requires a ``host_name``, ``dir``, ``bin``, and ``args``: + ```toml + [[hosted_process]] + host_name = "myapp.local" + dir = "/home/kalle/" # variables like $root_dir or $config_dir are allowed here + bin = "/usr/bin/python3" # variables like $root_dir or $config_dir are allowed here + args = ["-m", "http.server", "$port"] # variables like $port, $root_dir & $config_dir are allowed here + auto_start = true + hints = ["NOH2","H2C","H2"] + https = false + env_vars = [ + { key = "some-environment-variable", value = "example-value" }, + ] + ``` + - ``host_name``: The incoming domain that odd-box will listen for. + - ``dir``: Directory where the process will be executed. + - ``bin``: Executable path to a binary file (absolute, relative to dir, or in pwd) + - ``args``: Arguments to pass to the binary. + - ``auto_start``: (Optional) Set to true to automatically start the process with odd-box. + - ``hints``: (Optional) Not normally needed but can be set to specify that a server requires for example H2C. + - ``https``: (Optional) Set to true if the process uses HTTP (TLS) + - ``enable_lets_encrypt``: (Optional) Set to true to enable lets-encrypt to be used for this site. + + + + +#### Getting Started + +To get started quickly, simply copy the [minimal example configuration file](https://github.com/OlofBlomqvist/odd-box/blob/main/odd-box-example-config-minimal.toml), modify the relevant sections to add your remote targets or hosted processes, and run odd-box with your configuration file. + + +## Upgrading odd-box + +If you are not using a package manager such as homebrew to manage your odd-box installation, you can either manually download new versions from the github release section or use the built in command for doing the same: +```odd-box --update``` + +*Note: Should you have an older configuration file than V2, you can upgrade it automatically thru the ```odd-box --upgrade-config ./my-config-file.toml```.* diff --git a/web-ui/fetch-readme.js b/web-ui/fetch-readme.js new file mode 100644 index 0000000..efb770e --- /dev/null +++ b/web-ui/fetch-readme.js @@ -0,0 +1,28 @@ +// fetchReadme.js +import { writeFileSync } from 'fs'; + +async function fetchReadme() { + const url = `https://api.github.com/repos/OlofBlomqvist/odd-box/readme`; + + try { + const response = await fetch(url, { + headers: { + Accept: 'application/vnd.github.v3.raw', // Get the raw content + }, + }); + + if (!response.ok) { + throw new Error('Failed to fetch README'); + } + + const readmeContent = await response.text(); + + // Save to a static file + writeFileSync('public/readme.md', readmeContent); + console.log('README fetched and saved to public/readme.md'); + } catch (error) { + console.error(error); + } +} + +fetchReadme(); diff --git a/web-ui/package-lock.json b/web-ui/package-lock.json index 67b9e96..f92b599 100644 --- a/web-ui/package-lock.json +++ b/web-ui/package-lock.json @@ -22,10 +22,12 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", + "react-markdown": "^9.0.1", "react-modern-drawer": "^1.3.1", "react-responsive": "^10.0.0", - "react-responsive-modal": "^6.4.2", "react-use-websocket": "^3.0.0", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7" }, @@ -464,25 +466,6 @@ "node": ">=6.9.0" } }, - "node_modules/@bedrock-layout/use-forwarded-ref": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@bedrock-layout/use-forwarded-ref/-/use-forwarded-ref-1.6.1.tgz", - "integrity": "sha512-GD9A9AFLzFNjr7k6fgerSqxfwDWl+wsPS11PErOKe1zkVz0y7RGC9gzlOiX/JrgpyB3NFHWIuGtoOQqifJQQpw==", - "dependencies": { - "@bedrock-layout/use-stateful-ref": "^1.4.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17 || ^18" - } - }, - "node_modules/@bedrock-layout/use-stateful-ref": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz", - "integrity": "sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -2394,11 +2377,47 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { "version": "22.7.4", @@ -2412,14 +2431,12 @@ "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "devOptional": true + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", - "devOptional": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2434,6 +2451,11 @@ "@types/react": "*" } }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", @@ -2622,8 +2644,7 @@ "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vitejs/plugin-react": { "version": "4.3.1", @@ -2798,6 +2819,15 @@ "@babel/types": "^7.23.6" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2814,11 +2844,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-scroll-lock": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", - "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2907,6 +2932,15 @@ } ] }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2921,6 +2955,42 @@ "node": ">=4" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -2974,11 +3044,6 @@ "node": ">=6" } }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -3336,6 +3401,15 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -3394,7 +3468,6 @@ "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3407,17 +3480,49 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -3468,6 +3573,17 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -3797,6 +3913,15 @@ "node": ">=4.0" } }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -3806,6 +3931,11 @@ "node": ">=0.10.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4123,6 +4253,151 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hyphenate-style-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", @@ -4179,6 +4454,11 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -4187,6 +4467,28 @@ "loose-envify": "^1.0.0" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4212,6 +4514,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4239,6 +4550,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4256,6 +4576,17 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4398,6 +4729,15 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4426,6 +4766,15 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/matchmediaquery": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", @@ -4434,62 +4783,861 @@ "css-mediaquery": "^0.1.2" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "engines": { - "node": ">=8.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, "node_modules/nanoid": { @@ -4627,6 +5775,41 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4911,6 +6094,15 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -4982,6 +6174,31 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, "node_modules/react-modern-drawer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/react-modern-drawer/-/react-modern-drawer-1.3.1.tgz", @@ -5061,23 +6278,6 @@ "react": ">=16.8.0" } }, - "node_modules/react-responsive-modal": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-responsive-modal/-/react-responsive-modal-6.4.2.tgz", - "integrity": "sha512-ARjGEKE5Gu5CSvyA8U9ARVbtK4SMAtdXsjtzwtxRlQIHC99RQTnOUctLpl7+/sp1Kg1OJZ6yqvp6ivd4TBueEw==", - "dependencies": { - "@bedrock-layout/use-forwarded-ref": "^1.3.1", - "body-scroll-lock": "^3.1.5", - "classnames": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/pradel" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" - } - }, "node_modules/react-style-singleton": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", @@ -5133,6 +6333,82 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5321,6 +6597,15 @@ "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5348,6 +6633,19 @@ "node": ">=8" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5383,6 +6681,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -5554,6 +6860,24 @@ "node": ">=8.0" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -5619,6 +6943,87 @@ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unplugin": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.11.0.tgz", @@ -5727,6 +7132,45 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "5.4.8", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", @@ -5786,6 +7230,15 @@ } } }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -5989,6 +7442,15 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/web-ui/package.json b/web-ui/package.json index ca0ae6f..1bbfbec 100644 --- a/web-ui/package.json +++ b/web-ui/package.json @@ -27,10 +27,12 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.4.1", + "react-markdown": "^9.0.1", "react-modern-drawer": "^1.3.1", "react-responsive": "^10.0.0", - "react-responsive-modal": "^6.4.2", "react-use-websocket": "^3.0.0", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7" }, diff --git a/web-ui/public/readme.md b/web-ui/public/readme.md new file mode 100644 index 0000000..1753838 --- /dev/null +++ b/web-ui/public/readme.md @@ -0,0 +1,240 @@ +[![BuildAndTest](https://github.com/OlofBlomqvist/odd-box/actions/workflows/BuildAndTest.yml/badge.svg)](https://github.com/OlofBlomqvist/odd-box/actions/workflows/BuildAndTest.yml) + +## ODD-BOX + +A simple, cross-platform reverse proxy server tailored for local development and tinkering. Think of it as a lightweight (and more streamlined) alternative to something like IIS, but with a key difference: configuration is primarily done declaratively through structured files, rather than a graphical user interface. + +It allows you to configure a list of processes to run and host them behind their own custom hostnames. Self-signed certificates for HTTPS are automatically generated when accessing a site thru the terminating proxy service the first time (cached in .odd-box-cache dir). As with most reverse-proxy servers, odd-box also supports targetting remote backend servers. + +As configuration is done thru basic files (toml format) which are easy to share, it's very easy to reproduce a particular setup. + +Pre-built binaries are available in the [release section](https://github.com/OlofBlomqvist/odd-box/releases). + +You can also build it yourself, or install it using brew, cargo, nix or devbox; see the installation section for guidance. + +### Features + +- Cross platform (win/lin/osx) +- Easy to configure (toml files) +- Keep a list of specified binaries running +- Uses PORT environment variable for routing +- Allows for setting proc specific and global env vars +- Remote target proxying +- Terminating proxy that supports both HTTP/1.1 & HTTP2 +- TCP tunnelling for HTTP/1 +- TCP tunnelling for HTTPS/1 & HTTP2 via SNI sniffing +- TCP tunnelling for HTTP/2 over HTTP/1 (h2c upgrade) +- H2C via terminating proxy +- Automatic self-signed certs for all hosted processes +- Basic round-robin loadbalancing for remote targets +- Terminating proxy supports automaticly generating lets-encrypt certificates + + +### Performance + +While the goal of this project is not to provide a state-of-the-art level performing proxy server for production environments, but rather a tool for simplifying local development scenarios, we do **try to** ~~keep performance in mind~~ **be blazingly fast** :-) Seriously though, performance is actually pretty good but it is not a priority (yet). + +### Terminal User Interface + +The TUI is fairly simple basic; it provides an easy way to see which sites are running, the log outputs and all currently active connections. It is possible to opt-out of TUI mode by supplying the argument: "--tui=false" when starting odd-box. + +### API + +There is a basic administration API that can be enabled by adding "admin_api_port = n" to the configuration file. At some point a web-interface might be added for controlling odd-box thru this API.. + +### Screenshot(s) + +**odd-box v0.1.2:** +![Screenshot of oddbox v0.1.2](/screenshot.jpg) + + +## Installation + +Pre-built binaries are available in the [release section](https://github.com/OlofBlomqvist/odd-box/releases), +but there are more ways to install odd-box if you so wish :-) + + +- [Homebrew](https://brew.sh/) + + Recommended for Mac users. Brew lets you easily install odd-box globally and use brew for managing updates; it also works on Linux and Windows (wsl2). + +```zsh +brew tap OlofBlomqvist/repo +brew install oddbox +``` + +- [Cargo install](https://doc.rust-lang.org/cargo/getting-started/installation.html) +```bash +cargo install odd-box +``` + +- [Devbox](https://www.jetify.com/devbox) +```json +{ + "name": "example devbox config", + "packages": [ + // select rev of whichever version you need, this is for v0.1.2 + "github:OlofBlomqvist/odd-box?rev=043fe0abd9da1d4a1e0fa0bfcc300c71971e26ce" + // ... + ], + // ... +} +``` +- [Nix build](https://nix.dev/manual/nix/2.18/command-ref/nix-build) +```bash + nix build github:OlofBlomqvist/odd-box +``` +- [Nix Flake](https://nixos.wiki/wiki/Flakes) +```nix +{ + description = "example flake with oddbox"; + inputs = { + ... # select rev of whichever version you need, this is for v0.1.2 + oddbox.url = "github:OlofBlomqvist/odd-box?rev=043fe0abd9da1d4a1e0fa0bfcc300c71971e26ce"; + }; + + ... +} +``` + +### Workflow tips + +If you are hosting a local project that you are currently working on, and want to do a rebuild without having to manually start and stop your site - you may want to consider having a pre-build step that does it for you: + +You can enable or disable all sites or specific ones using the http://localhost:port/START and http://localhost:port/STOP endpoints, optionally using query parameter "?proc=my_site" to stop or start a specific site. Sites start automatically again on the next request. The same can be acomplished thru the admin-api if you enable it. + +### DNS + +As all the routing is based on hostnames, your client machine(s) must of course be able to resolve those names correctly to the proxy server IP. If you are working on a local machine this can be configured either by adding entries to your host file pointing each domain to 127.0.0.1 or by using something like [localtest.me](http://localtest.me/).me, eg. my-first-site.localtest.me when configuring hosted sites. More advanced users might use their own DNS servers to set up these domains however they like. + + +### Security tips + +Since odd-box spawns your defined binaries, you should be careful not to run odd-box in elevated/admin mode. To be safe, use a non-restricted port so that you do not need root access or follow the section for your OS below! + + +## OS Specific guidance + +#### MacOS: + +MacOS does not require super-user access when binding to 0.0.0.0 / ::1 on ports 1-1024. The easiest way to get started is to **just set the ip and tls_ip to bind to 0.0.0.0:80 and 0.0.0.0:443**. + +*Should you want to bind specifically to 127.0.0.1; do not run this application using sudo. Instead configure a redirect to a non-restricted port such as 8080, and configure odd-box to use that (port=8080):* + +```bash +rdr pass on lo0 inet proto tcp from 127.0.0.1 to 127.0.0.1 port 80 -> 127.0.0.1 port 8080 +sudo pfctl -ef pf-rules.conf +``` + + +#### Linux: + +Do not run this application using sudo. Instead allow odd-box to listen to restricted ports directly. + +```bash +sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/odd-box +# (alternatively you could set up a redirect in your fw, similar to the MacOS section) +``` + +#### Windows: + +Do not run the application as admin (elevated mode), instead you can allow your own account to use restricted ports. + +```powershell +netsh http add urlacl url=http://+:80/ user=DOMAIN\user +# (alternatively you could set up a redirect in your fw, similar to the MacOS section) +``` + +## Configuration (V2) + +To configure the `odd-box` proxy server, create a configuration file following the format provided in the [example configuration file](https://github.com/OlofBlomqvist/odd-box/blob/main/odd-box-example-config.toml). The configuration file uses the TOML format and is designed to define both remote targets (sites that `odd-box` proxies traffic to) and hosted processes (sites or services managed directly by `odd-box`). + +Running odd-box without any arguments it will first try to read from odd-box.toml, then Config.toml. You can supply a custom config path using: ./odd-box "/tmp/my-file.toml" + +It is also possible to update the active configuration at runtime thru an administration API which fully documents the possible settings. + +### Configuration Variables + +| Variable | Description | +|-------------|----------------------------------| +| $root_dir | Resolves to whatever you set it to in the global configuration section. | +| $cfg_dir | Resolves to the directory which the configuration toml file was read from. | +| $port | Resolves to whatever port has been specified in the configuration. Only used for hosted processes. | + +> Tip: if you are editing the confguration file using vs-code you should try the "even better toml" extension, which will provide you not only with syntax highlighting but also intellisense based on the configuration files '#:schema ...' tag. + +### Basic Configuration Structure + +There are more options than the ones shown here; these are the most commonly used ones. See the example configuration or schema.json file for a list of all possible options. + +1. **Global Settings:** Set the global properties like `http_port`, `tls_port`, `ip`, `log_level`, `port_range_start`, and `env_vars`. These settings control the overall behavior of `odd-box`. + + ```toml + #:schema https://raw.githubusercontent.com/OlofBlomqvist/odd-box/main/odd-box-schema-v2.json + version = "V2" + http_port = 8080 + tls_port = 4343 + ip = "127.0.0.1" + log_level = "Trace" + port_range_start = 4242 + env_vars = [] + lets_encrypt_account_email = "example@example.com" + ``` + - ``version``: Must be "V2" + - ``http_port``: TCP Port for the server to use. Defaults to 8080 if not specified. + - ``tls_port``: TCP Port for the server to buse. Defaults to 4343 if not specified. + - ``ip``: IP Address for the server to use. Defaults to 127.0.0.1 if not specified. + - ``log_level``: info/warn/err/debug/trace - defaults to info of not specified. + - ``port_range_start``: Must be specified - used for automatically assign the PORT env var to hosted sites (if not set explicity for a site). + - ``env_vars``: List of environment variables that all hosted processes should have. + - ``lets_encrypt_account_email``: (Optional) Set email to use if you wish to use lets-encrypt. + +2. Adding Remote Targets: Define remote targets to forward traffic to external servers. Each remote_target requires a host_name (the incoming domain) and a list of backends (the target servers). To add a new remote site: + ```toml + [[remote_target]] + host_name = "example.com" + backends = [ + # hints are optional and used for specifying if server requires for example H2C. + { https = true, address="example.com", port=443, hints = [] } + ] + ``` + - ``host_name``: The incoming domain that odd-box will listen for. + - ``backends``: A list of backend servers to forward traffic to. The https property specifies if TLS is used. + +3. Adding Hosted Processes: Define hosted processes that odd-box will manage. These are services that odd-box can start, stop, and restart. Each hosted_process requires a ``host_name``, ``dir``, ``bin``, and ``args``: + ```toml + [[hosted_process]] + host_name = "myapp.local" + dir = "/home/kalle/" # variables like $root_dir or $config_dir are allowed here + bin = "/usr/bin/python3" # variables like $root_dir or $config_dir are allowed here + args = ["-m", "http.server", "$port"] # variables like $port, $root_dir & $config_dir are allowed here + auto_start = true + hints = ["NOH2","H2C","H2"] + https = false + env_vars = [ + { key = "some-environment-variable", value = "example-value" }, + ] + ``` + - ``host_name``: The incoming domain that odd-box will listen for. + - ``dir``: Directory where the process will be executed. + - ``bin``: Executable path to a binary file (absolute, relative to dir, or in pwd) + - ``args``: Arguments to pass to the binary. + - ``auto_start``: (Optional) Set to true to automatically start the process with odd-box. + - ``hints``: (Optional) Not normally needed but can be set to specify that a server requires for example H2C. + - ``https``: (Optional) Set to true if the process uses HTTP (TLS) + - ``enable_lets_encrypt``: (Optional) Set to true to enable lets-encrypt to be used for this site. + + + + +#### Getting Started + +To get started quickly, simply copy the [minimal example configuration file](https://github.com/OlofBlomqvist/odd-box/blob/main/odd-box-example-config-minimal.toml), modify the relevant sections to add your remote targets or hosted processes, and run odd-box with your configuration file. + + +## Upgrading odd-box + +If you are not using a package manager such as homebrew to manage your odd-box installation, you can either manually download new versions from the github release section or use the built in command for doing the same: +```odd-box --update``` + +*Note: Should you have an older configuration file than V2, you can upgrade it automatically thru the ```odd-box --upgrade-config ./my-config-file.toml```.* diff --git a/web-ui/src/components/dialog/confirm/confirm.tsx b/web-ui/src/components/dialog/confirm/confirm.tsx new file mode 100644 index 0000000..602a19a --- /dev/null +++ b/web-ui/src/components/dialog/confirm/confirm.tsx @@ -0,0 +1,45 @@ +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/dialog/dialog"; +import Button from "../../button/button"; +export function ConfirmationDialog({ + title, + subtitle, + onConfirm, + onClose, + show, + noBtnText, + yesBtnText, +}: { + noBtnText?: string; + yesBtnText?: string; + title: string; + subtitle: string; + onConfirm: () => void; + onClose: () => void; + show: boolean; +}) { + return ( + + + + {title} + {subtitle} + + + + + + + + ); +} diff --git a/web-ui/src/components/dialog/dialog.tsx b/web-ui/src/components/dialog/dialog.tsx new file mode 100644 index 0000000..b232bf3 --- /dev/null +++ b/web-ui/src/components/dialog/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/cn" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/web-ui/src/components/modal/modal.tsx b/web-ui/src/components/modal/modal.tsx deleted file mode 100644 index 8c04240..0000000 --- a/web-ui/src/components/modal/modal.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { ReactNode } from "react"; -import Modal from "react-responsive-modal"; - -const OddModal = ({ - show, - onClose, - title, - subtitle, - children, -}: { - title?: string; - subtitle?: string; - children?: ReactNode; - onClose: () => void; - show: boolean; -}) => { - return ( - -
- {title &&

{title}

} - {subtitle &&

{subtitle}

} - {children} -
-
- ); -}; - -export default OddModal; diff --git a/web-ui/src/components/readme_viewer/readme_viewer.tsx b/web-ui/src/components/readme_viewer/readme_viewer.tsx new file mode 100644 index 0000000..8315c3f --- /dev/null +++ b/web-ui/src/components/readme_viewer/readme_viewer.tsx @@ -0,0 +1,43 @@ +import { useEffect, useState } from 'react'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import rehypeRaw from 'rehype-raw'; + +const ReadmeViewer = () => { + const [readmeContent, setReadmeContent] = useState(''); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchReadme = async () => { + try { + const response = await fetch('/readme.md'); // Fetch from the public folder + if (!response.ok) { + throw new Error('Failed to fetch README'); + } + + const content = await response.text(); + setReadmeContent(content); + } catch (err:any) { + setError(err.message); + } finally { + setLoading(false); + } + }; + + fetchReadme(); + }, []); + + if (loading) return

Loading...

; + if (error) return

Error: {error}

; + + return ( +
+ + {readmeContent} + +
+ ); +}; + +export default ReadmeViewer; \ No newline at end of file diff --git a/web-ui/src/components/table/arguments/arguments.tsx b/web-ui/src/components/table/arguments/arguments.tsx index be596b1..447c7d9 100644 --- a/web-ui/src/components/table/arguments/arguments.tsx +++ b/web-ui/src/components/table/arguments/arguments.tsx @@ -4,8 +4,6 @@ import { TableBody, TableCell, TableFooter, - TableHead, - TableHeader, TableRow, } from "@/components/table/table"; import { DiamondPlus } from "lucide-react"; @@ -46,15 +44,6 @@ export const ArgumentsTable = ({ return ( <> - {defaultKeys?.length !== 0 && ( - - - - Value - - - - )} {defaultKeys?.map((key) => ( { + const { updateRemoteSite } = useSiteMutations(); + + const [backendModalState, setBackendModalState] = useState( + { + backend: undefined, + show: false, + listIndex: -1, + } + ); + const newBackendClicked = async () => { + await updateRemoteSite.mutateAsync({ + hostname: site.host_name, + siteSettings: { + ...site, + backends: [ + ...site.backends, + { + address: "NEW_BACKEND", + port: 8080, + hints: [], + https: false, + }, + ], + }, + }); + }; + + const footerClassNames = ["hover:cursor-pointer"]; + + if (site.backends?.length === 0) { + footerClassNames.push("border-0"); + } + + return ( + <> +
+ + {site.backends?.map((backend,listIndex) => ( + { + setBackendModalState({ + backend, + show: true, + listIndex, + }); + }} + > + {backend.address} + + ))} + + + + +
+ + Add new backend +
+
+
+
+
+ + setBackendModalState((old) => ({ + ...old, + show: false, + })) + } + /> + + ); +}; diff --git a/web-ui/src/global_tw.css b/web-ui/src/global_tw.css index 97e7bf0..c92e3e6 100644 --- a/web-ui/src/global_tw.css +++ b/web-ui/src/global_tw.css @@ -657,10 +657,22 @@ body { top: 1rem; } +.left-\[50\%\] { + left: 50%; +} + +.top-\[50\%\] { + top: 50%; +} + .z-50 { z-index: 50; } +.m-\[revert\] { + margin: revert; +} + .-mx-1 { margin-left: -0.25rem; margin-right: -0.25rem; @@ -770,11 +782,23 @@ body { width: 100%; } +.w-\[700px\] { + width: 700px; +} + .max-w-\[max-content\] { max-width: -moz-max-content; max-width: max-content; } +.max-w-lg { + max-width: 32rem; +} + +.max-w-\[750px\] { + max-width: 750px; +} + .shrink-0 { flex-shrink: 0; } @@ -783,6 +807,16 @@ body { caption-side: bottom; } +.translate-x-\[-50\%\] { + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.translate-y-\[-50\%\] { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .cursor-default { cursor: default; } @@ -793,6 +827,14 @@ body { user-select: none; } +.list-disc { + list-style-type: disc; +} + +.grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + .flex-row { flex-direction: row; } @@ -833,12 +875,22 @@ body { gap: 0.5rem; } +.gap-0 { + gap: 0px; +} + .space-y-2 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } +.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); +} + .overflow-auto { overflow: auto; } @@ -955,6 +1007,24 @@ body { background-color: rgb(0 0 0 / var(--tw-bg-opacity)); } +.bg-\[\#00000024\] { + background-color: #00000024; +} + +.bg-\[\#00000088\] { + background-color: #00000088; +} + +.bg-\[\#09090b\] { + --tw-bg-opacity: 1; + background-color: rgb(9 9 11 / var(--tw-bg-opacity)); +} + +.bg-blue-500 { + --tw-bg-opacity: 1; + background-color: rgb(59 130 246 / var(--tw-bg-opacity)); +} + .p-0 { padding: 0px; } @@ -979,6 +1049,10 @@ body { padding: 2px; } +.p-\[revert\] { + padding: revert; +} + .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1004,6 +1078,11 @@ body { padding-bottom: 1.5rem; } +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + .pb-2 { padding-bottom: 0.5rem; } @@ -1059,6 +1138,11 @@ body { font-size: 12px; } +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + .font-medium { font-weight: 500; } @@ -1075,10 +1159,18 @@ body { text-transform: uppercase; } +.leading-none { + line-height: 1; +} + .tracking-widest { letter-spacing: 0.1em; } +.tracking-tight { + letter-spacing: -0.025em; +} + .text-black { --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); @@ -1110,6 +1202,39 @@ body { color: var(--color2); } +.text-green-500 { + --tw-text-opacity: 1; + color: rgb(34 197 94 / var(--tw-text-opacity)); +} + +.text-\[var\(--color1\)\] { + color: var(--color1); +} + +.text-\[var\(--color3\)\] { + color: var(--color3); +} + +.text-\[var\(--color4\)\] { + color: var(--color4); +} + +.text-\[var\(--color5\)\] { + color: var(--color5); +} + +.text-\[var\(--color6\)\] { + color: var(--color6); +} + +.text-\[var\(--color7\)\] { + color: var(--color7); +} + +.text-\[var\(--color8\)\] { + color: var(--color8); +} + .opacity-0 { opacity: 0; } @@ -1180,6 +1305,10 @@ body { transition-duration: 150ms; } +.duration-200 { + transition-duration: 200ms; +} + .ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } @@ -1198,6 +1327,10 @@ body { } } +.duration-200 { + animation-duration: 200ms; +} + .ease-in-out { animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } @@ -1508,6 +1641,10 @@ p, h1, h2, h3, h4, h5, h6 { background-color: hsl(var(--muted) / 0.5); } +.hover\:underline:hover { + text-decoration-line: underline; +} + .hover\:opacity-100:hover { opacity: 1; } @@ -1559,10 +1696,18 @@ p, h1, h2, h3, h4, h5, h6 { background-color: hsl(var(--muted)); } +.data-\[state\=open\]\:bg-accent[data-state="open"] { + background-color: hsl(var(--accent)); +} + .data-\[selected\=true\]\:text-accent-foreground[data-selected="true"] { color: hsl(var(--accent-foreground)); } +.data-\[state\=open\]\:text-muted-foreground[data-state="open"] { + color: hsl(var(--muted-foreground)); +} + .data-\[disabled\=true\]\:opacity-50[data-disabled="true"] { opacity: 0.5; } @@ -1659,6 +1804,22 @@ p, h1, h2, h3, h4, h5, h6 { --tw-enter-translate-y: -100%; } +.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state="closed"] { + --tw-exit-translate-x: -50%; +} + +.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state="closed"] { + --tw-exit-translate-y: -48%; +} + +.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state="open"] { + --tw-enter-translate-x: -50%; +} + +.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state="open"] { + --tw-enter-translate-y: -48%; +} + .data-\[state\=closed\]\:duration-300[data-state="closed"] { animation-duration: 300ms; } @@ -1677,6 +1838,10 @@ p, h1, h2, h3, h4, h5, h6 { max-width: 24rem; } + .sm\:max-w-\[425px\] { + max-width: 425px; + } + .sm\:flex-row { flex-direction: row; } @@ -1685,12 +1850,25 @@ p, h1, h2, h3, h4, h5, h6 { justify-content: flex-end; } + .sm\:gap-4 { + gap: 1rem; + } + .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.5rem * var(--tw-space-x-reverse)); margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); } + .sm\:rounded-lg { + border-radius: var(--radius); + } + + .sm\:bg-blue-500 { + --tw-bg-opacity: 1; + background-color: rgb(59 130 246 / var(--tw-bg-opacity)); + } + .sm\:text-left { text-align: left; } @@ -1771,10 +1949,68 @@ p, h1, h2, h3, h4, h5, h6 { width: 1.25rem; } +.\[\&_a\]\:text-\[var\(--color2\)\] a { + color: var(--color2); +} + +.\[\&_code\]\:whitespace-pre-wrap code { + white-space: pre-wrap; +} + +.\[\&_h2\]\:text-xl h2 { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.\[\&_h2\]\:font-bold h2 { + font-weight: 700; +} + +.\[\&_h3\]\:text-\[50px\] h3 { + font-size: 50px; +} + +.\[\&_h3\]\:text-xl h3 { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.\[\&_h3\]\:font-bold h3 { + font-weight: 700; +} + +.\[\&_h3\]\:text-\[revert\] h3 { + color: revert; +} + +.\[\&_p\]\:m-\[revert\] p { + margin: revert; +} + +.\[\&_pre\]\:m-\[revert\] pre { + margin: revert; +} + +.\[\&_pre\]\:bg-\[\#00000054\] pre { + background-color: #00000054; +} + +.\[\&_pre\]\:p-\[10px\] pre { + padding: 10px; +} + .\[\&_tr\:last-child\]\:border-0 tr:last-child { border-width: 0px; } .\[\&_tr\]\:border-b tr { border-bottom-width: 1px; +} + +.\[\&_ul\]\:list-disc ul { + list-style-type: disc; +} + +.\[\&_ul\]\:p-\[revert\] ul { + padding: revert; } \ No newline at end of file diff --git a/web-ui/src/hooks/use-site-mutations.ts b/web-ui/src/hooks/use-site-mutations.ts index fb4569c..1b8dbe4 100644 --- a/web-ui/src/hooks/use-site-mutations.ts +++ b/web-ui/src/hooks/use-site-mutations.ts @@ -124,7 +124,7 @@ const useSiteMutations = () => { if (vars.hostname !== vars.siteSettings.host_name) { router.navigate({ to: `/site/${vars.siteSettings.host_name.replace("http://", "").replace("https://", "")}`, - search: { tab: 1 }, + // search: { tab: 1 }, }); } }, diff --git a/web-ui/src/pages/home/home.tsx b/web-ui/src/pages/home/home.tsx index 0991f5f..61fd2b4 100644 --- a/web-ui/src/pages/home/home.tsx +++ b/web-ui/src/pages/home/home.tsx @@ -1,3 +1,4 @@ +import ReadmeViewer from "@/components/readme_viewer/readme_viewer"; import "./home-styles.css"; const HomePage = () => { return ( @@ -12,58 +13,60 @@ const HomePage = () => { > Home

- -
+ + {/*

ODD-BOX


- A simple to use cross-platform toy-level reverse proxy server for - local development and tinkering purposes. + A simple, cross-platform reverse proxy server tailored for local development and tinkering. Think of it as a lightweight (and more streamlined) alternative to something like IIS, but with a key difference: configuration is primarily done declaratively through structured files, rather than a graphical user interface.


- It allows you to configure a list of processes to run and host them - behind their own custom hostnames. Automatically generates - (self-signed) certificates for HTTPS when accessing them the first - time (cached in .odd-box-cache dir). + It allows you to configure a list of processes to run and host them behind their own custom hostnames. Self-signed certificates for HTTPS are automatically generated when accessing a site thru the terminating proxy service the first time (cached in .odd-box-cache dir). As with most reverse-proxy servers, odd-box also supports targetting remote backend servers.


- Uses the 'port' environment variable to assign a port for each site. - If your process does not support using the port environment - variable, you can pass custom arguments or variables for your - process instead. + As configuration is done thru basic files (toml format) which are easy to share, it's very easy to reproduce a particular setup.


- You can enable or disable all sites or specific ones using the - http://localhost/START and http://localhost/STOP endpoints, - optionally using query parameter "?proc=my_site" to stop or start a - specific site. (Mostly only useful for pre-build scripts where you - dont want to manually stop and start the proxy on each rebuild. - Sites start automatically again on the next request) + Pre-built binaries are available in the release section.


-

Main Features & Goals

-
    -
  • Cross platform (win/lin/osx)
  • -
  • Easy to configure
  • -
  • Keep a list of specified binaries running
  • -
  • Uses PORT environment variable for routing
  • -
  • Allows for setting proc specific and global env vars
  • -
  • Remote target proxying
  • -
  • Terminating proxy that supports both HTTP/1.1 & HTTP2
  • -
  • TCP tunnelling for HTTP/1
  • -
  • TCP tunnelling for HTTPS/1 via SNI sniffing
  • -
  • TCP tunnelling for HTTP/2 over HTTP/1 (h2c upgrade)
  • -
  • H2C via terminating proxy
  • -
  • Automatic self-signed certs for all hosted processes
  • +

    + You can also build it yourself, or install it using brew, cargo, nix or devbox; see the installation section for guidance. +

    +
    +

    Features

    +
      +
    • Cross platform (win/lin/osx)
    • +
    • Easy to configure (toml files)
    • +
    • Keep a list of specified binaries running
    • +
    • Uses PORT environment variable for routing
    • +
    • Allows for setting proc specific and global env vars
    • +
    • Remote target proxying
    • +
    • Terminating proxy that supports both HTTP/1.1 & HTTP2
    • +
    • TCP tunnelling for HTTP/1
    • +
    • TCP tunnelling for HTTPS/1 & HTTP2 via SNI sniffing
    • +
    • TCP tunnelling for HTTP/2 over HTTP/1 (h2c upgrade)
    • +
    • H2C via terminating proxy
    • +
    • Automatic self-signed certs for all hosted processes
    • +
    • Basic round-robin loadbalancing for remote targets
    • +
    • Terminating proxy supports automaticly generating lets-encrypt certificates
    +
    +

    Performance

    +

    While the goal of this project is not to provide a state-of-the-art level performing proxy server for production environments, but rather a tool for simplifying local development scenarios, we do try to keep performance in mind be blazingly fast :-) Seriously though, performance is actually pretty good but it is not a priority (yet).

    + + + + +
-
+
*/}
); }; diff --git a/web-ui/src/pages/settings/settings.tsx b/web-ui/src/pages/settings/settings.tsx index b0d2cc3..a6e6ecc 100644 --- a/web-ui/src/pages/settings/settings.tsx +++ b/web-ui/src/pages/settings/settings.tsx @@ -2,7 +2,6 @@ import { Suspense, useState } from "react"; import Input from "../../components/input/input"; import SettingsItem from "./settings-item"; import SettingsSection from "./settings-section"; -import "react-responsive-modal/styles.css"; import useSettings from "../../hooks/use-settings"; import toast from "react-hot-toast"; import useSettingsMutations from "../../hooks/use-settings-mutations"; diff --git a/web-ui/src/pages/site/hosted-process-settings.tsx b/web-ui/src/pages/site/hosted-process-settings.tsx index c697154..e30c5da 100644 --- a/web-ui/src/pages/site/hosted-process-settings.tsx +++ b/web-ui/src/pages/site/hosted-process-settings.tsx @@ -8,11 +8,11 @@ import toast from "react-hot-toast"; import { useState } from "react"; import { useRouter } from "@tanstack/react-router"; import { Hint, InProcessSiteConfig, LogFormat } from "../../generated-api"; -import OddModal from "../../components/modal/modal"; import Checkbox from "@/components/checkbox/checkbox"; import SettingDescriptions from "@/lib/setting_descriptions"; import { EnvVariablesTable } from "@/components/table/env_variables/env_variables"; import { ArgumentsTable } from "@/components/table/arguments/arguments"; +import { ConfirmationDialog } from "@/components/dialog/confirm/confirm"; const HostedProcessSettings = ({ site }: { site: InProcessSiteConfig }) => { const { updateSite, deleteSite } = useSiteMutations(); @@ -354,44 +354,18 @@ const HostedProcessSettings = ({ site }: { site: InProcessSiteConfig }) => {
- setShowConfirmDeleteModal(false)} - title="Delete" - subtitle={`Are you sure you want to delete the site '${site.host_name}'?`} - > -
- - -
-
+ setShowConfirmDeleteModal(false)} onConfirm={() => { + setShowConfirmDeleteModal(false) + deleteSite.mutateAsync( + { hostname: site.host_name }, + { + onSuccess: () => { + setShowConfirmDeleteModal(false); + router.navigate({ to: "/" }); + }, + } + ); + }} show={showConfirmDeleteModal} title="Delete" yesBtnText="Yes, delete it" subtitle={`Are you sure you want to delete the site '${site.host_name}'?`}/> ); }; diff --git a/web-ui/src/pages/site/remote-site-settings.tsx b/web-ui/src/pages/site/remote-site-settings.tsx index e7f38e6..6163b6f 100644 --- a/web-ui/src/pages/site/remote-site-settings.tsx +++ b/web-ui/src/pages/site/remote-site-settings.tsx @@ -8,10 +8,10 @@ import toast from "react-hot-toast"; import { useEffect, useState } from "react"; import { useRouter } from "@tanstack/react-router"; import { Backend, RemoteSiteConfig } from "../../generated-api"; -import Plus2 from "../../components/icons/plus2"; import SettingDescriptions from "@/lib/setting_descriptions"; import { BackendSheet } from "@/components/sheet/backend_sheet/backend_sheet"; -import OddModal from "@/components/modal/modal"; +import { BackendsTable } from "@/components/table/backends/backends"; +import { ConfirmationDialog } from "@/components/dialog/confirm/confirm"; type BackendModalState = { show: boolean; @@ -143,78 +143,12 @@ const RemoteSiteSettings = ({ site }: { site: RemoteSiteConfig }) => { /> - - -
- {site.backends?.map((key, listIndex) => ( -
{ - setBackendModalState({ - backend: key, - show: true, - listIndex, - }); - }} - className="env-var-item" - style={{ - display: "flex", - justifyContent: "space-between", - alignItems: "center", - padding: "5px", - }} - > -

{key.address}

-
- ))} -
{ - updateRemoteSite.mutateAsync({ - hostname: site.host_name, - siteSettings: { - ...site, - backends: [ - ...site.backends, - { - address: "NEW_BACKEND", - port: 8080, - hints: [], - https: false, - }, - ], - }, - }); - }} - className="env-var-item" - style={{ - display: "flex", - justifyContent: "space-between", - alignItems: "center", - padding: "5px", - }} - > -
- - New backend -
-
-
+ + +
{ Delete site
- setShowConfirmDeleteModal(false)} - title="Delete" - subtitle={`Are you sure you want to delete the site '${site.host_name}'?`} - > -
- - -
-
+ setShowConfirmDeleteModal(false)} onConfirm={() => { + setShowConfirmDeleteModal(false) + deleteSite.mutateAsync( + { hostname: site.host_name }, + { + onSuccess: () => { + setShowConfirmDeleteModal(false); + router.navigate({ to: "/" }); + }, + } + ); + }} show={showConfirmDeleteModal} title="Delete" yesBtnText="Yes, delete it" subtitle={`Are you sure you want to delete the site '${site.host_name}'?`}/> +