@tscircuit/runframe 0.0.1394 → 0.0.1395
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5815,7 +5815,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}}});function dAe(t,A,e){if(!A||!e)retu
|
|
|
5815
5815
|
* Copyright (c) 2013-2015, 2017, Jon Schlinkert.
|
|
5816
5816
|
* Released under the MIT License.
|
|
5817
5817
|
*)
|
|
5818
|
-
*/const Zxt=({containerClassName:t,...A})=>{const e=iA.useRef(null),[i,o]=iA.useState(620);return iA.useLayoutEffect(()=>{const n=()=>{if(e.current){const r=e.current.clientHeight,g=window.innerHeight;o(Math.min(Math.max(r,620),g))}};n();const s=new ResizeObserver(n);return e.current&&s.observe(e.current),window.addEventListener("resize",n),()=>{s.disconnect(),window.removeEventListener("resize",n)}},[]),X.jsx("div",{ref:e,className:t||"rf-w-full rf-h-full",children:X.jsx(Wxt,{...A,height:i})})},Vxt='*,:after,:before{--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:rgba(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:rgba(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: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;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;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height: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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-0{margin-bottom:0}.rf-mb-0\\.5{margin-bottom:.125rem}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-6{margin-left:1.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[calc\\(100vh-60px\\)\\]{height:calc(100vh - 60px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-16{max-height:4rem}.rf-max-h-20{max-height:5rem}.rf-max-h-24{max-height:6rem}.rf-max-h-28{max-height:7rem}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[120px\\]{max-height:120px}.rf-max-h-\\[150px\\]{max-height:150px}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[100px\\]{min-height:100px}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-min-h-full{min-height:100%}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.\\!rf-w-\\[95vw\\]{width:95vw!important}.rf-w-1{width:.25rem}.rf-w-10{width:2.5rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[600px\\]{min-width:600px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[95vw\\]{max-width:95vw!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[1000px\\]{max-width:1000px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[200px\\]{max-width:200px}.rf-max-w-\\[40\\%\\]{max-width:40%}.rf-max-w-\\[600px\\]{max-width:600px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{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))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{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))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{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))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-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))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-rotate-90{--tw-rotate:90deg}.rf-rotate-90,.rf-transform{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))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-content-center{place-content:center}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-baseline{align-items:baseline}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.\\!rf-overflow-hidden{overflow:hidden!important}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-text-nowrap{text-wrap:nowrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-l-2{border-left-width:2px}.rf-border-l-4{border-left-width:4px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.rf-border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity,1))}.rf-border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-border-t-blue-600{--tw-border-opacity:1;border-top-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-50\\/30{background-color:rgba(239,246,255,.3)}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-orange-50\\/50{background-color:rgba(255,247,237,.5)}.rf-bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-50\\/50{background-color:hsla(0,86%,97%,.5)}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pb-px{padding-bottom:1px}.rf-pl-10{padding-left:2.5rem}.rf-pl-11{padding-left:2.75rem}.rf-pl-12{padding-left:3rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-1{padding-top:.25rem}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-\\[0\\.95rem\\]{line-height:.95rem}.rf-leading-\\[1rem\\]{line-height:1rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-70{opacity:.7}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--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)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-150{transition-duration:.15s}.rf-duration-200{transition-duration:.2s}.rf-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))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-150{animation-duration:.15s}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-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\\:rf-ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--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(1px + 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-visible\\:rf-ring-2:focus-visible{--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-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.rf-peer:disabled~.peer-disabled\\:rf-cursor-not-allowed{cursor:not-allowed}.rf-peer:disabled~.peer-disabled\\:rf-opacity-70{opacity:.7}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{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))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{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))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--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\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--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\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-mt-4{margin-top:1rem}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-h-5{height:1.25rem}.sm\\:rf-w-1\\/2{width:50%}.sm\\:rf-w-5{width:1.25rem}.sm\\:rf-w-\\[90vw\\]{width:90vw}.sm\\:rf-w-auto{width:auto}.sm\\:rf-max-w-\\[500px\\]{max-width:500px}.sm\\:rf-max-w-md{max-width:28rem}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-gap-4{gap:1rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-p-3{padding:.75rem}.sm\\:rf-p-6{padding:1.5rem}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-2xl{font-size:1.5rem;line-height:2rem}.sm\\:rf-text-base{font-size:1rem;line-height:1.5rem}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-w-auto{width:auto}.md\\:rf-max-w-\\[660px\\]{max-width:660px}.md\\:rf-max-w-lg{max-width:32rem}.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:rf-p-8{padding:2rem}.md\\:rf-py-8{padding-bottom:2rem;padding-top:2rem}.md\\:rf-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width:1024px){.lg\\:rf-max-w-\\[720px\\]{max-width:720px}.lg\\:rf-max-w-xl{max-width:36rem}}@media (min-width:1280px){.xl\\:rf-max-w-\\[800px\\]{max-width:800px}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',PAe=()=>{iA.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const A=document.createElement("style");A.setAttribute("data-styles","tscircuit-runframe"),A.textContent=Vxt,document.head.appendChild(A)},[])},jxt=t=>{iA.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t])};function OAe(t,A){const[e,i]=iA.useState(()=>{try{const o=window.localStorage.getItem(t);return o?JSON.parse(o):A}catch(o){return console.error("Error reading from localStorage:",o),A}});return iA.useEffect(()=>{try{window.localStorage.setItem(t,JSON.stringify(e))}catch(o){console.error("Error writing to localStorage:",o)}},[t,e]),[e,i]}const WAe=t=>`hsl(${T0.indexOf(t)*137.5%360}, 70%, 50%)`,zxt=({phaseTimings:t})=>{if(!t)return null;const A=Object.values(t).reduce((e,i)=>e+i,0);return X.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[X.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:T0.map(e=>{const i=t[e]||0,o=i/A*100;return X.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${o}%`,backgroundColor:WAe(e)},children:X.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[e,": ",i.toFixed(1),"ms"]})},e)})}),X.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",A.toFixed(2),"ms"]})]})},Xxt=t=>{if(t instanceof Blob)return t;if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object")try{return JSON.stringify(t,null,2)}catch{return String(t)}return String(t)},$xt=({renderLog:t,onRerunWithDebug:A})=>{const[e,i]=iA.useState("chronological"),[o,n]=iA.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!t)return X.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[X.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),A&&X.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[X.jsx("select",{value:o,onChange:a=>n(a.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(a=>X.jsx("option",{value:a.value,children:a.label},a.value))}),X.jsx(ac,{onClick:()=>A(o),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const r=Object.entries(t?.phaseTimings??{});e==="chronological"?r.sort((a,I)=>T0.indexOf(a[0])-T0.indexOf(I[0])):r.sort((a,I)=>I[1]-a[1]);const g=r.reduce((a,[I,c])=>a+c,0);return X.jsxs("div",{className:"rf-bg-white",children:[X.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[X.jsx("div",{children:"Render Logs"}),X.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[A&&X.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[X.jsx("select",{value:o,onChange:a=>n(a.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(a=>X.jsx("option",{value:a.value,children:a.label},a.value))}),X.jsx(ac,{onClick:()=>A(o),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),X.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:X.jsxs("select",{onChange:a=>{if(a.target.value){const I=t?.debugOutputs?.find(c=>c.name===a.target.value);if(I){const c=Xxt(I.content),B=c instanceof Blob?c:new Blob([c],{type:"text/plain"}),C=URL.createObjectURL(B),Q=document.createElement("a");Q.href=C,Q.download=`debug-${I.name}.txt`,document.body.appendChild(Q),Q.click(),document.body.removeChild(Q),URL.revokeObjectURL(C)}a.target.value=""}},disabled:!t?.debugOutputs||t.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[X.jsx("option",{value:"",children:"Download Debug Output"}),t?.debugOutputs?.map(a=>X.jsx("option",{value:a.name,children:a.name},a.name))]})}),X.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[X.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),X.jsxs("select",{value:e,onChange:a=>i(a.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[X.jsx("option",{value:"chronological",children:"Phase Order"}),X.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),X.jsx(zxt,{phaseTimings:t.phaseTimings}),X.jsxs("table",{className:"rf-w-full rf-text-xs",children:[X.jsx("thead",{children:X.jsxs("tr",{children:[X.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),X.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),X.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),X.jsx("tbody",{children:r.map(([a,I])=>X.jsxs("tr",{children:[X.jsx("td",{className:"rf-p-2",children:T0.indexOf(a)}),X.jsx("td",{className:"rf-p-2",children:a}),X.jsx("td",{className:"rf-p-2",children:X.jsx("div",{className:"rf-w-8",children:X.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:WAe(a),width:`${I/g*100}%`}})})}),X.jsx("td",{className:"rf-p-2",children:X.jsxs("div",{className:"rf-flex w-full",children:[X.jsxs("span",{className:"rf-flex-grow",children:[I,"ms"]}),X.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(I/g*100).toFixed(1),"%"]})]})})]},a))})]})]})},ZAe=({errorMessage:t,errorStack:A,circuitJsonErrors:e})=>{iA.useEffect(()=>{if(t){const i=new Error(t);A&&(i.stack=A);try{vY.captureException(i)}catch{}}},[t,A]),iA.useEffect(()=>{if(e&&e.length>0)for(const i of e){const o=new Error(i.message||"Circuit JSON Error");i.stack&&(o.stack=i.stack);try{vY.captureException(o,{error_type:i.type})}catch{}}},[e])},VAe="0.0.1393",ARt={version:VAe},elA={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},tlA=new Map,O8=t=>{const A=tlA.get(t);return A?Object.fromEntries(Object.entries(A.stores).map(([e,i])=>[e,i.getState()])):{}},eRt=(t,A,e)=>{if(t===void 0)return{type:"untracked",connection:A.connect(e)};const i=tlA.get(e.name);if(i)return{type:"tracked",store:t,...i};const o={connection:A.connect(e),stores:{}};return tlA.set(e.name,o),{type:"tracked",store:t,...o}},jAe=(t,A={})=>(e,i,o)=>{const{enabled:n,anonymousActionType:s,store:r,...g}=A;let a;try{a=(n??(elA?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!a)return(elA?"production":void 0)!=="production"&&n&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),t(e,i,o);const{connection:I,...c}=eRt(r,a,g);let B=!0;o.setState=(E,l,h)=>{const u=e(E,l);if(!B)return u;const p=h===void 0?{type:s||"anonymous"}:typeof h=="string"?{type:h}:h;return r===void 0?(I?.send(p,i()),u):(I?.send({...p,type:`${r}/${p.type}`},{...O8(g.name),[r]:o.getState()}),u)};const C=(...E)=>{const l=B;B=!1,e(...E),B=l},Q=t(o.setState,i,o);if(c.type==="untracked"?I?.init(Q):(c.stores[c.store]=o,I?.init(Object.fromEntries(Object.entries(c.stores).map(([E,l])=>[E,E===c.store?Q:l.getState()])))),o.dispatchFromDevtools&&typeof o.dispatch=="function"){let E=!1;const l=o.dispatch;o.dispatch=(...h)=>{(elA?"production":void 0)!=="production"&&h[0].type==="__setState"&&!E&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),E=!0),l(...h)}}return I.subscribe(E=>{var l;switch(E.type){case"ACTION":if(typeof E.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return ilA(E.payload,h=>{if(h.type==="__setState"){if(r===void 0){C(h.state);return}Object.keys(h.state).length!==1&&console.error(`
|
|
5818
|
+
*/const Zxt=({containerClassName:t,...A})=>{const e=iA.useRef(null),[i,o]=iA.useState(620);return iA.useLayoutEffect(()=>{const n=()=>{if(e.current){const r=e.current.clientHeight,g=window.innerHeight;o(Math.min(Math.max(r,620),g))}};n();const s=new ResizeObserver(n);return e.current&&s.observe(e.current),window.addEventListener("resize",n),()=>{s.disconnect(),window.removeEventListener("resize",n)}},[]),X.jsx("div",{ref:e,className:t||"rf-w-full rf-h-full",children:X.jsx(Wxt,{...A,height:i})})},Vxt='*,:after,:before{--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:rgba(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:rgba(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: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;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;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height: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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.\\!rf-z-\\[200\\]{z-index:200!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-z-\\[101\\]{z-index:101}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-0{margin-bottom:0}.rf-mb-0\\.5{margin-bottom:.125rem}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-6{margin-left:1.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mr-4{margin-right:1rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-20{height:5rem}.rf-h-24{height:6rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-7{height:1.75rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[calc\\(100vh-60px\\)\\]{height:calc(100vh - 60px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-16{max-height:4rem}.rf-max-h-20{max-height:5rem}.rf-max-h-24{max-height:6rem}.rf-max-h-28{max-height:7rem}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[120px\\]{max-height:120px}.rf-max-h-\\[150px\\]{max-height:150px}.rf-max-h-\\[200px\\]{max-height:200px}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[70vh\\]{max-height:70vh}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[100px\\]{min-height:100px}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-min-h-full{min-height:100%}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.\\!rf-w-\\[95vw\\]{width:95vw!important}.rf-w-1{width:.25rem}.rf-w-10{width:2.5rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-24{width:6rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-40{width:10rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-80{width:20rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-32{min-width:8rem}.rf-min-w-80{min-width:20rem}.rf-min-w-96{min-width:24rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[600px\\]{min-width:600px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[95vw\\]{max-width:95vw!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-64{max-width:16rem}.rf-max-w-96{max-width:24rem}.rf-max-w-\\[1000px\\]{max-width:1000px}.rf-max-w-\\[150px\\]{max-width:150px}.rf-max-w-\\[200px\\]{max-width:200px}.rf-max-w-\\[40\\%\\]{max-width:40%}.rf-max-w-\\[600px\\]{max-width:600px}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-max-w-xs{max-width:20rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{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))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{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))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{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))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-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))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-rotate-90{--tw-rotate:90deg}.rf-rotate-90,.rf-transform{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))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-content-center{place-content:center}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-baseline{align-items:baseline}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.\\!rf-overflow-hidden{overflow:hidden!important}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-whitespace-normal{white-space:normal}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-text-nowrap{text-wrap:nowrap}.rf-break-words{overflow-wrap:break-word}.rf-break-all{word-break:break-all}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-l-2{border-left-width:2px}.rf-border-l-4{border-left-width:4px}.rf-border-t{border-top-width:1px}.rf-border-none{border-style:none}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.rf-border-red-700{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity,1))}.rf-border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-border-t-blue-600{--tw-border-opacity:1;border-top-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.rf-bg-amber-50\\/30{background-color:rgba(255,251,235,.3)}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-50\\/30{background-color:rgba(239,246,255,.3)}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-orange-50\\/50{background-color:rgba(255,247,237,.5)}.rf-bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-50\\/50{background-color:hsla(0,86%,97%,.5)}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.rf-bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-amber-500{fill:#f59e0b}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-1{padding-bottom:.25rem}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pb-px{padding-bottom:1px}.rf-pl-10{padding-left:2.5rem}.rf-pl-11{padding-left:2.75rem}.rf-pl-12{padding-left:3rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-1{padding-top:.25rem}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-\\[0\\.95rem\\]{line-height:.95rem}.rf-leading-\\[1rem\\]{line-height:1rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.rf-text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.rf-text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.rf-text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-70{opacity:.7}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--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)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-150{transition-duration:.15s}.rf-duration-200{transition-duration:.2s}.rf-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))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-150{animation-duration:.15s}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\\:rf-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\\:rf-text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-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\\:rf-ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--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(1px + 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-visible\\:rf-ring-2:focus-visible{--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-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group:hover .group-hover\\:rf-opacity-100,.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.rf-peer:disabled~.peer-disabled\\:rf-cursor-not-allowed{cursor:not-allowed}.rf-peer:disabled~.peer-disabled\\:rf-opacity-70{opacity:.7}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{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))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{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))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--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\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--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\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-gray-700:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\\:rf-bg-gray-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-gray-500:is(.rf-dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-mt-4{margin-top:1rem}.sm\\:rf-block{display:block}.sm\\:rf-inline{display:inline}.sm\\:rf-grid{display:grid}.sm\\:rf-hidden{display:none}.sm\\:rf-h-5{height:1.25rem}.sm\\:rf-w-1\\/2{width:50%}.sm\\:rf-w-5{width:1.25rem}.sm\\:rf-w-\\[90vw\\]{width:90vw}.sm\\:rf-w-auto{width:auto}.sm\\:rf-max-w-\\[500px\\]{max-width:500px}.sm\\:rf-max-w-md{max-width:28rem}.sm\\:rf-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:rf-grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-gap-4{gap:1rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-justify-self-end{justify-self:end}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-p-3{padding:.75rem}.sm\\:rf-p-6{padding:1.5rem}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-right{text-align:right}.sm\\:rf-text-2xl{font-size:1.5rem;line-height:2rem}.sm\\:rf-text-base{font-size:1rem;line-height:1.5rem}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-w-auto{width:auto}.md\\:rf-max-w-\\[660px\\]{max-width:660px}.md\\:rf-max-w-lg{max-width:32rem}.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:rf-p-8{padding:2rem}.md\\:rf-py-8{padding-bottom:2rem;padding-top:2rem}.md\\:rf-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width:1024px){.lg\\:rf-max-w-\\[720px\\]{max-width:720px}.lg\\:rf-max-w-xl{max-width:36rem}}@media (min-width:1280px){.xl\\:rf-max-w-\\[800px\\]{max-width:800px}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',PAe=()=>{iA.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const A=document.createElement("style");A.setAttribute("data-styles","tscircuit-runframe"),A.textContent=Vxt,document.head.appendChild(A)},[])},jxt=t=>{iA.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t])};function OAe(t,A){const[e,i]=iA.useState(()=>{try{const o=window.localStorage.getItem(t);return o?JSON.parse(o):A}catch(o){return console.error("Error reading from localStorage:",o),A}});return iA.useEffect(()=>{try{window.localStorage.setItem(t,JSON.stringify(e))}catch(o){console.error("Error writing to localStorage:",o)}},[t,e]),[e,i]}const WAe=t=>`hsl(${T0.indexOf(t)*137.5%360}, 70%, 50%)`,zxt=({phaseTimings:t})=>{if(!t)return null;const A=Object.values(t).reduce((e,i)=>e+i,0);return X.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[X.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:T0.map(e=>{const i=t[e]||0,o=i/A*100;return X.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${o}%`,backgroundColor:WAe(e)},children:X.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[e,": ",i.toFixed(1),"ms"]})},e)})}),X.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",A.toFixed(2),"ms"]})]})},Xxt=t=>{if(t instanceof Blob)return t;if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object")try{return JSON.stringify(t,null,2)}catch{return String(t)}return String(t)},$xt=({renderLog:t,onRerunWithDebug:A})=>{const[e,i]=iA.useState("chronological"),[o,n]=iA.useState(""),s=[{value:"",label:"None"},{value:"DEBUG=Group_doInitialSchematicTraceRender",label:"DEBUG=Group_doInitialSchematicTraceRender"},{value:"DEBUG=Group_doInitialSchematicLayoutMatchpack",label:"DEBUG=Group_doInitialSchematicLayoutMatchpack"},{value:"DEBUG=Group_doInitialPcbLayoutPack",label:"DEBUG=Group_doInitialPcbLayoutPack"}];if(!t)return X.jsxs("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:[X.jsx("div",{className:"rf-mb-4",children:"No render log, make sure this tab is open when you render"}),A&&X.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[X.jsx("select",{value:o,onChange:a=>n(a.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(a=>X.jsx("option",{value:a.value,children:a.label},a.value))}),X.jsx(ac,{onClick:()=>A(o),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]})]});const r=Object.entries(t?.phaseTimings??{});e==="chronological"?r.sort((a,I)=>T0.indexOf(a[0])-T0.indexOf(I[0])):r.sort((a,I)=>I[1]-a[1]);const g=r.reduce((a,[I,c])=>a+c,0);return X.jsxs("div",{className:"rf-bg-white",children:[X.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center rf-mb-4",children:[X.jsx("div",{children:"Render Logs"}),X.jsxs("div",{className:"rf-flex rf-gap-4 rf-items-center",children:[A&&X.jsxs("div",{className:"rf-flex rf-gap-2 rf-items-center",children:[X.jsx("select",{value:o,onChange:a=>n(a.target.value),className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white",children:s.map(a=>X.jsx("option",{value:a.value,children:a.label},a.value))}),X.jsx(ac,{onClick:()=>A(o),size:"sm",className:"rf-text-xs",children:"Rerun Render with Debug"})]}),X.jsx("div",{className:"rf-flex rf-gap-2 rf-items-center",children:X.jsxs("select",{onChange:a=>{if(a.target.value){const I=t?.debugOutputs?.find(c=>c.name===a.target.value);if(I){const c=Xxt(I.content),B=c instanceof Blob?c:new Blob([c],{type:"text/plain"}),C=URL.createObjectURL(B),Q=document.createElement("a");Q.href=C,Q.download=`debug-${I.name}.txt`,document.body.appendChild(Q),Q.click(),document.body.removeChild(Q),URL.revokeObjectURL(C)}a.target.value=""}},disabled:!t?.debugOutputs||t.debugOutputs.length===0,className:"rf-px-3 rf-py-1 rf-border rf-rounded rf-text-xs rf-bg-white disabled:rf-opacity-50 disabled:rf-cursor-not-allowed",children:[X.jsx("option",{value:"",children:"Download Debug Output"}),t?.debugOutputs?.map(a=>X.jsx("option",{value:a.name,children:a.name},a.name))]})}),X.jsxs("div",{className:"rf-flex rf-text-xs rf-items-center",children:[X.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),X.jsxs("select",{value:e,onChange:a=>i(a.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[X.jsx("option",{value:"chronological",children:"Phase Order"}),X.jsx("option",{value:"longest",children:"Duration"})]})]})]})]}),X.jsx(zxt,{phaseTimings:t.phaseTimings}),X.jsxs("table",{className:"rf-w-full rf-text-xs",children:[X.jsx("thead",{children:X.jsxs("tr",{children:[X.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),X.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),X.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),X.jsx("tbody",{children:r.map(([a,I])=>X.jsxs("tr",{children:[X.jsx("td",{className:"rf-p-2",children:T0.indexOf(a)}),X.jsx("td",{className:"rf-p-2",children:a}),X.jsx("td",{className:"rf-p-2",children:X.jsx("div",{className:"rf-w-8",children:X.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:WAe(a),width:`${I/g*100}%`}})})}),X.jsx("td",{className:"rf-p-2",children:X.jsxs("div",{className:"rf-flex w-full",children:[X.jsxs("span",{className:"rf-flex-grow",children:[I,"ms"]}),X.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(I/g*100).toFixed(1),"%"]})]})})]},a))})]})]})},ZAe=({errorMessage:t,errorStack:A,circuitJsonErrors:e})=>{iA.useEffect(()=>{if(t){const i=new Error(t);A&&(i.stack=A);try{vY.captureException(i)}catch{}}},[t,A]),iA.useEffect(()=>{if(e&&e.length>0)for(const i of e){const o=new Error(i.message||"Circuit JSON Error");i.stack&&(o.stack=i.stack);try{vY.captureException(o,{error_type:i.type})}catch{}}},[e])},VAe="0.0.1394",ARt={version:VAe},elA={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},tlA=new Map,O8=t=>{const A=tlA.get(t);return A?Object.fromEntries(Object.entries(A.stores).map(([e,i])=>[e,i.getState()])):{}},eRt=(t,A,e)=>{if(t===void 0)return{type:"untracked",connection:A.connect(e)};const i=tlA.get(e.name);if(i)return{type:"tracked",store:t,...i};const o={connection:A.connect(e),stores:{}};return tlA.set(e.name,o),{type:"tracked",store:t,...o}},jAe=(t,A={})=>(e,i,o)=>{const{enabled:n,anonymousActionType:s,store:r,...g}=A;let a;try{a=(n??(elA?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!a)return(elA?"production":void 0)!=="production"&&n&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),t(e,i,o);const{connection:I,...c}=eRt(r,a,g);let B=!0;o.setState=(E,l,h)=>{const u=e(E,l);if(!B)return u;const p=h===void 0?{type:s||"anonymous"}:typeof h=="string"?{type:h}:h;return r===void 0?(I?.send(p,i()),u):(I?.send({...p,type:`${r}/${p.type}`},{...O8(g.name),[r]:o.getState()}),u)};const C=(...E)=>{const l=B;B=!1,e(...E),B=l},Q=t(o.setState,i,o);if(c.type==="untracked"?I?.init(Q):(c.stores[c.store]=o,I?.init(Object.fromEntries(Object.entries(c.stores).map(([E,l])=>[E,E===c.store?Q:l.getState()])))),o.dispatchFromDevtools&&typeof o.dispatch=="function"){let E=!1;const l=o.dispatch;o.dispatch=(...h)=>{(elA?"production":void 0)!=="production"&&h[0].type==="__setState"&&!E&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),E=!0),l(...h)}}return I.subscribe(E=>{var l;switch(E.type){case"ACTION":if(typeof E.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return ilA(E.payload,h=>{if(h.type==="__setState"){if(r===void 0){C(h.state);return}Object.keys(h.state).length!==1&&console.error(`
|
|
5819
5819
|
[zustand devtools middleware] Unsupported __setState action format.
|
|
5820
5820
|
When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
|
|
5821
5821
|
and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
|
|
@@ -5983,7 +5983,7 @@ ${this.args[0].slice(2,-2).trim().split(/\s+(?=[A-Z_])/g).join(`
|
|
|
5983
5983
|
`)}
|
|
5984
5984
|
)`:`${this.type}(${this.args.join(",")})`}}function lTt(t){const A=[],e=t.indexOf("DATA;"),i=t.indexOf("ENDSEC;",e);if(e===-1||i===-1)throw new Error("Could not find DATA section in STEP file");const o=t.substring(e+5,i),n=/#(\d+)\s*=\s*/g;let s;const r=[];for(;(s=n.exec(o))!==null;)r.push({index:s.index,id:parseInt(s[1],10)});for(let g=0;g<r.length;g++){const a=r[g],I=g+1<r.length?r[g+1].index:o.length,c=o.substring(a.index,I),B=c.indexOf(";");if(B===-1)throw new Error(`Could not find closing semicolon for entity #${a.id}`);const C=c.substring(0,B+1);if(C.match(/#\d+\s*=\s*\(/)){const Q=C.match(/#\d+\s*=\s*\(([\s\S]*)\);/);if(!Q)throw new Error(`Could not parse complex entity: ${C.substring(0,100)}`);A.push({id:bF(a.id),type:"Unknown",args:[`( ${Q[1].trim()} )`]})}else{const Q=C.match(/#\d+\s*=\s*([A-Z0-9_]+)\s*\(([\s\S]*)\);/);if(!Q)throw new Error(`Could not parse entity: ${C.substring(0,100)}`);const E=Q[1].trim(),l=Q[2].trim(),h=ETt(l);A.push({id:bF(a.id),type:E,args:h})}}return A}function ETt(t){const A=[];let e="",i=0,o=!1;for(let n=0;n<t.length;n++){const s=t[n];if(s==="'"&&t[n-1]!=="\\"&&(o=!o),!o&&(s==="("&&i++,s===")"&&i--,s===","&&i===0)){A.push(e.trim()),e="";continue}e+=s}return e.trim()&&A.push(e.trim()),A}function hTt(t){const A=new Ore,e={repo:A,parseRef(i){const o=+i.replace("#","").trim();return new NL(bF(o))},parseNumber(i){return Number(i)},parseString(i){const o=i.match(/^'(.*)'$/);if(!o)throw new Error(`Expected string: ${i}`);return o[1].replace(/''/g,"'")}};for(const i of lTt(t)){const o=QTt(i.type);if(!o){A.set(i.id,new ck(i.type,i.args));continue}const n=o(i.args,e);A.set(i.id,n)}return A}function uTt(t,A,e){const{transform:i,shouldDrawErrors:o}=e;if(!o)return[];const{pcb_port_ids:n}=t,s=A.find(B=>B.type==="pcb_port"&&B.pcb_port_id===n?.[0]),r=A.find(B=>B.type==="pcb_port"&&B.pcb_port_id===n?.[1]);if(!s||!r){const C=t.message?.match(/pcb_via\[#?(pcb_via_\d+)\]/)?.[1],Q=A.find(E=>E.type==="pcb_via"&&E.pcb_via_id===C);if(Q&&Q.type==="pcb_via")return dTt(t,Q,e);if(t.center){const E=Ce(i,{x:t.center.x,y:t.center.y});return KdA([{name:"rect",type:"element",attributes:{x:(E.x-5).toString(),y:(E.y-5).toString(),width:"10",height:"10",fill:"red",transform:`rotate(45 ${E.x} ${E.y})`},children:[],value:""},{name:"text",type:"element",attributes:{x:E.x.toString(),y:(E.y-15).toString(),fill:"red","font-family":"sans-serif","font-size":"12","text-anchor":"middle"},children:[{type:"text",value:t.message||"Pcb Trace Error",name:"",attributes:{},children:[]}],value:""}])}else return[]}const g=Ce(i,{x:s.x,y:s.y}),a=Ce(i,{x:r.x,y:r.y}),I={x:(g.x+a.x)/2,y:(g.y+a.y)/2};if(isNaN(g.x)||isNaN(g.y)||isNaN(a.x)||isNaN(a.y)||isNaN(I.x)||isNaN(I.y))return[];const c=[{name:"line",type:"element",attributes:{x1:g.x.toString(),y1:g.y.toString(),x2:I.x.toString(),y2:I.y.toString(),stroke:"red","stroke-width":"1.5","stroke-dasharray":"2,2"},children:[],value:""},{name:"line",type:"element",attributes:{x1:I.x.toString(),y1:I.y.toString(),x2:a.x.toString(),y2:a.y.toString(),stroke:"red","stroke-width":"1.5","stroke-dasharray":"2,2"},children:[],value:""},{name:"rect",type:"element",attributes:{x:(I.x-5).toString(),y:(I.y-5).toString(),width:"10",height:"10",fill:"red",transform:`rotate(45 ${I.x} ${I.y})`},children:[],value:""},{name:"text",type:"element",attributes:{x:I.x.toString(),y:(I.y-15).toString(),fill:"red","font-family":"sans-serif","font-size":"12","text-anchor":"middle"},children:[{type:"text",value:t.message||"Pcb Trace Error",name:"",attributes:{},children:[]}],value:""}];return KdA(c)}function dTt(t,A,e){const{transform:i}=e;if(t.center&&A){const o=Ce(i,{x:t.center.x,y:t.center.y}),n=Ce(i,{x:A.x,y:A.y}),s=n.x-o.x,r=n.y-o.y,g=Math.sqrt(s*s+r*r),a=Math.atan2(r,s)*180/Math.PI,c=g+10*2,B=20,C=(o.x+n.x)/2,Q=(o.y+n.y)/2;return KdA([{name:"rect",type:"element",attributes:{x:(C-c/2).toString(),y:(Q-B/2).toString(),width:c.toString(),height:B.toString(),fill:"none",stroke:"red","stroke-width":"1","stroke-dasharray":"3,2",transform:`rotate(${a} ${C} ${Q})`},children:[],value:""},{name:"rect",type:"element",attributes:{x:(C-5).toString(),y:(Q-5).toString(),width:"10",height:"10",fill:"red",transform:`rotate(45 ${C} ${Q})`},children:[],value:""},{name:"text",type:"element",attributes:{x:C.toString(),y:(Q-B/2-5).toString(),fill:"red","font-family":"sans-serif","font-size":"12","text-anchor":"middle"},children:[{type:"text",value:t.message||"Pcb Trace Error",name:"",attributes:{},children:[]}],value:""}])}return[]}function KdA(t){return t.map(A=>({...A,attributes:{...A.attributes??{},"data-type":A.attributes?.["data-type"]??"pcb_trace_error","data-pcb-layer":A.attributes?.["data-pcb-layer"]??"overlay"},children:(A.children??[]).map(e=>e?.type==="element"?{...e,attributes:{...e.attributes??{},"data-type":e.attributes?.["data-type"]??"pcb_trace_error","data-pcb-layer":e.attributes?.["data-pcb-layer"]??"overlay"}}:e)}))}function pTt(t){return t.map(A=>({...A,attributes:{...A.attributes??{},"data-type":A.attributes?.["data-type"]??"pcb_footprint_overlap_error","data-pcb-layer":A.attributes?.["data-pcb-layer"]??"overlay"},children:(A.children??[]).map(e=>e?.type==="element"?{...e,attributes:{...e.attributes??{},"data-type":e.attributes?.["data-type"]??"pcb_footprint_overlap_error","data-pcb-layer":e.attributes?.["data-pcb-layer"]??"overlay"}}:e)}))}function fTt(t,A,e){const{transform:i,shouldDrawErrors:o}=e;if(!o)return[];const n=[],s=[];let r=[];if(t.pcb_smtpad_ids)for(const I of t.pcb_smtpad_ids){const c=A.find(B=>B.type==="pcb_smtpad"&&B.pcb_smtpad_id===I);c&&(s.push({x:c.x,y:c.y,type:"pcb_smtpad",id:I,pcb_port_id:c.pcb_port_id}),c.pcb_port_id&&r.push(c.pcb_port_id))}const g=r.length>1&&r.every(I=>I===r[0]);let a=s;if(g&&(a=s.filter(I=>I.type!=="pcb_smtpad")),t.pcb_plated_hole_ids)for(const I of t.pcb_plated_hole_ids){const c=A.find(B=>B.type==="pcb_plated_hole"&&B.pcb_plated_hole_id===I);c&&a.push({x:c.x,y:c.y,type:"pcb_plated_hole",id:I})}if(t.pcb_hole_ids)for(const I of t.pcb_hole_ids){const c=A.find(B=>B.type==="pcb_hole"&&B.pcb_hole_id===I);c&&a.push({x:c.x,y:c.y,type:"pcb_hole",id:I})}if(a.length>0){const I=a.reduce((C,Q)=>C+Q.x,0)/a.length,c=a.reduce((C,Q)=>C+Q.y,0)/a.length,B=Ce(i,{x:I,y:c});n.push({name:"rect",type:"element",attributes:{x:(B.x-5).toString(),y:(B.y-5).toString(),width:"10",height:"10",fill:"red",transform:`rotate(45 ${B.x} ${B.y})`},children:[],value:""}),n.push({name:"text",type:"element",attributes:{x:B.x.toString(),y:(B.y-15).toString(),fill:"red","font-family":"sans-serif","font-size":"12","text-anchor":"middle"},children:[{type:"text",value:t.message||"PCB Footprint Overlap Error",name:"",attributes:{},children:[]}],value:""});for(const C of a){const Q=Ce(i,{x:C.x,y:C.y});n.push({name:"rect",type:"element",attributes:{x:(Q.x-5).toString(),y:(Q.y-5).toString(),width:"10",height:"10",fill:"red",transform:`rotate(45 ${Q.x} ${Q.y})`},children:[],value:""}),a.length>1&&n.push({name:"line",type:"element",attributes:{x1:B.x.toString(),y1:B.y.toString(),x2:Q.x.toString(),y2:Q.y.toString(),stroke:"red","stroke-width":"1.5","stroke-dasharray":"2,2"},children:[],value:""})}}return pTt(n)}function yTt(t,A){const{transform:e,layer:i}=A;if(!t.route||!Array.isArray(t.route))return[];const o=t.route[0],n=t.route[t.route.length-1],s=o.x===n.x&&o.y===n.y,r=t.route.slice(0,s?-1:void 0).map((g,a)=>{const[I,c]=Ce(e,[g.x,g.y]);return a===0?`M ${I} ${c}`:`L ${I} ${c}`}).join(" ")+(s?" Z":"");return[{name:"path",type:"element",attributes:{class:"pcb-fabrication-note-path",stroke:t.color||"rgba(255,255,255,0.5)",fill:"none",d:r,"stroke-width":(t.stroke_width*Math.abs(e.a)).toString(),"data-pcb-component-id":t.pcb_component_id,"data-pcb-fabrication-note-path-id":t.pcb_fabrication_note_path_id,"data-type":"pcb_fabrication_note_path","data-pcb-layer":"overlay"},value:"",children:[]}]}function wTt(t,A){const{transform:e,layer:i}=A,{anchor_position:o,anchor_alignment:n,text:s,font_size:r=1,layer:g="top",color:a}=t;if(i&&g!==i)return[];if(!o||typeof o.x!="number"||typeof o.y!="number")return console.error("Invalid anchor_position:",o),[];const[I,c]=Ce(e,[o.x,o.y]),B=r*Math.abs(e.a),C=zi(no(I,c),IB(Math.PI/180));return[{name:"text",type:"element",attributes:{x:"0",y:"0","font-family":"Arial, sans-serif","font-size":B.toString(),"text-anchor":"middle","dominant-baseline":"central",transform:wp(C),class:"pcb-fabrication-note-text",fill:a||"rgba(255,255,255,0.5)","data-type":"pcb_fabrication_note_text","data-pcb-layer":"overlay"},children:[{type:"text",value:s,name:"",attributes:{},children:[]}],value:""}]}var DTt="rgba(255,255,255,0.5)",mTt="rgba(255,255,255,0.2)";function STt(t,A){const{transform:e,layer:i}=A,{center:o,width:n,height:s,stroke_width:r,is_filled:g,has_stroke:a,is_stroke_dashed:I,color:c,layer:B="top",pcb_component_id:C,pcb_fabrication_note_rect_id:Q}=t;if(i&&B!==i)return[];if(!o||typeof o.x!="number"||typeof o.y!="number"||typeof n!="number"||typeof s!="number")return console.error("Invalid pcb_fabrication_note_rect data",{center:o,width:n,height:s}),[];const E=n/2,l=s/2,[h,u]=Ce(e,[o.x-E,o.y+l]),[p,y]=Ce(e,[o.x+E,o.y-l]),b=Math.min(h,p),S=Math.min(u,y),k=Math.abs(p-h),m=Math.abs(y-u),G=(typeof r=="number"?r:0)*Math.abs(e.a),U=c??DTt,M={x:b.toString(),y:S.toString(),width:k.toString(),height:m.toString(),class:"pcb-fabrication-note-rect","data-type":"pcb_fabrication_note_rect","data-pcb-fabrication-note-rect-id":Q,"data-pcb-layer":"overlay"};if(C!==void 0&&(M["data-pcb-component-id"]=C),g?M.fill=c??mTt:M.fill="none",a??G>0){if(M.stroke=U,M["stroke-width"]=G.toString(),I){const q=.2*Math.abs(e.a),W=.1*Math.abs(e.a);M["stroke-dasharray"]=`${q} ${W}`}}else M.stroke="none";return[{name:"rect",type:"element",value:"",attributes:M,children:[]}]}function bTt(t){const A=Math.hypot(t.x,t.y)||1;return{x:t.x/A,y:t.y/A}}function Zre(t){return t.map((A,e)=>e===0?`M ${A.x} ${A.y}`:`L ${A.x} ${A.y}`).join(" ")}function kTt(t,A){const{transform:e,layer:i}=A,{from:o,to:n,text:s,font_size:r=1,color:g,arrow_size:a,layer:I,pcb_component_id:c,pcb_fabrication_note_dimension_id:B}=t;if(i&&I&&I!==i)return[];if(!o||!n||typeof o!="object"||typeof n!="object")return console.error("Invalid pcb_fabrication_note_dimension endpoints",{from:o,to:n}),[];if(typeof o.x!="number"||typeof o.y!="number"||typeof n.x!="number"||typeof n.y!="number")return console.error("Invalid pcb_fabrication_note_dimension point values",{from:o,to:n}),[];const C=typeof a=="number"?a:void 0;if(C===void 0||!Number.isFinite(C)||C<=0)return console.error("Invalid pcb_fabrication_note_dimension arrow_size",a),[];const Q=C,E=bTt({x:n.x-o.x,y:n.y-o.y});if(Number.isNaN(E.x)||Number.isNaN(E.y))return[];const l={x:-E.y,y:E.x},h=Q/2,u={x:o.x+E.x*Q,y:o.y+E.y*Q},p={x:n.x-E.x*Q,y:n.y-E.y*Q},y=[CA(o),CA({x:u.x+l.x*h,y:u.y+l.y*h}),CA({x:u.x-l.x*h,y:u.y-l.y*h})],b=[CA(n),CA({x:p.x+l.x*h,y:p.y+l.y*h}),CA({x:p.x-l.x*h,y:p.y-l.y*h})],[S,k]=Ce(e,[u.x,u.y]),[m,_]=Ce(e,[p.x,p.y]),G=Q/5*Math.abs(e.a),U=g||"rgba(255,255,255,0.5)",M={x:(o.x+n.x)/2,y:(o.y+n.y)/2},T=Q*1.5,P={x:M.x+l.x*T,y:M.y+l.y*T},[q,W]=Ce(e,[P.x,P.y]),V=r*Math.abs(e.a),AA=[{name:"path",type:"element",value:"",attributes:{d:`M ${S} ${k} L ${m} ${_}`,stroke:U,fill:"none","stroke-width":G.toString(),"stroke-linecap":"round",class:"pcb-fabrication-note-dimension-line"},children:[]},{name:"path",type:"element",value:"",attributes:{d:`${Zre(y)} Z`,fill:U,class:"pcb-fabrication-note-dimension-arrow"},children:[]},{name:"path",type:"element",value:"",attributes:{d:`${Zre(b)} Z`,fill:U,class:"pcb-fabrication-note-dimension-arrow"},children:[]}];s&&AA.push({name:"text",type:"element",value:"",attributes:{x:q.toString(),y:W.toString(),fill:U,"font-size":V.toString(),"font-family":"Arial, sans-serif","text-anchor":"middle","dominant-baseline":"central",class:"pcb-fabrication-note-dimension-text"},children:[{type:"text",name:"",value:s,attributes:{},children:[]}]});const oA={class:"pcb-fabrication-note-dimension","data-type":"pcb_fabrication_note_dimension","data-pcb-fabrication-note-dimension-id":B,"data-pcb-layer":I??"overlay"};return c!==void 0&&(oA["data-pcb-component-id"]=c),[{name:"g",type:"element",value:"",attributes:oA,children:AA}];function CA(tA){const[sA,BA]=Ce(e,[tA.x,tA.y]);return{x:sA,y:BA}}}var rM={board:{user_2:"rgb(89, 148, 220)"}};function GTt(t){const A=Math.hypot(t.x,t.y)||1;return{x:t.x/A,y:t.y/A}}function Vre(t){return t.map((A,e)=>e===0?`M ${A.x} ${A.y}`:`L ${A.x} ${A.y}`).join(" ")}function FTt(t,A){const{transform:e}=A,{from:i,to:o,text:n,font_size:s=1,color:r,arrow_size:g}=t;if(!i||!o)return console.error("Invalid pcb_note_dimension endpoints",{from:i,to:o}),[];if(!Number.isFinite(g)||g<=0)return console.error("Invalid pcb_note_dimension arrow_size",g),[];const a=GTt({x:o.x-i.x,y:o.y-i.y});if(Number.isNaN(a.x)||Number.isNaN(a.y))return[];const I={x:-a.y,y:a.x},c=g/2,B={x:i.x+a.x*g,y:i.y+a.y*g},C={x:o.x-a.x*g,y:o.y-a.y*g},Q=[T(i),T({x:B.x+I.x*c,y:B.y+I.y*c}),T({x:B.x-I.x*c,y:B.y-I.y*c})],E=[T(o),T({x:C.x+I.x*c,y:C.y+I.y*c}),T({x:C.x-I.x*c,y:C.y-I.y*c})],[l,h]=Ce(e,[B.x,B.y]),[u,p]=Ce(e,[C.x,C.y]),y=g/5*Math.abs(e.a),b=r||rM.board.user_2,S={x:(i.x+o.x)/2,y:(i.y+o.y)/2},k=g*1.5,m={x:S.x+I.x*k,y:S.y+I.y*k},[_,G]=Ce(e,[m.x,m.y]),U=s*Math.abs(e.a),M=[{name:"path",type:"element",value:"",attributes:{d:`M ${l} ${h} L ${u} ${p}`,stroke:b,fill:"none","stroke-width":y.toString(),"stroke-linecap":"round",class:"pcb-note-dimension-line"},children:[]},{name:"path",type:"element",value:"",attributes:{d:`${Vre(Q)} Z`,fill:b,class:"pcb-note-dimension-arrow"},children:[]},{name:"path",type:"element",value:"",attributes:{d:`${Vre(E)} Z`,fill:b,class:"pcb-note-dimension-arrow"},children:[]}];return n&&M.push({name:"text",type:"element",value:"",attributes:{x:_.toString(),y:G.toString(),fill:b,"font-size":U.toString(),"font-family":"Arial, sans-serif","text-anchor":"middle","dominant-baseline":"central",class:"pcb-note-dimension-text"},children:[{type:"text",name:"",value:n,attributes:{},children:[]}]}),[{name:"g",type:"element",value:"",attributes:{class:"pcb-note-dimension","data-type":"pcb_note_dimension","data-pcb-note-dimension-id":t.pcb_note_dimension_id,"data-pcb-layer":"overlay"},children:M}];function T(P){const[q,W]=Ce(e,[P.x,P.y]);return{x:q,y:W}}}var _Tt=rM.board.user_2;function xTt(t,A){const{transform:e}=A,{anchor_position:i,text:o,font_size:n=1,anchor_alignment:s="center",color:r}=t;if(!i||typeof i.x!="number"||typeof i.y!="number")return console.error("Invalid pcb_note_text anchor_position",i),[];if(typeof o!="string"||o.length===0)return console.error("Invalid pcb_note_text text",o),[];const[g,a]=Ce(e,[i.x,i.y]),I=n*Math.abs(e.a);let c="middle",B="central";switch(s){case"top_left":c="start",B="text-before-edge";break;case"top_right":c="end",B="text-before-edge";break;case"bottom_left":c="start",B="text-after-edge";break;case"bottom_right":c="end",B="text-after-edge";break;case"center":default:c="middle",B="central";break}return[{name:"text",type:"element",value:"",attributes:{x:g.toString(),y:a.toString(),fill:r??_Tt,"font-family":"Arial, sans-serif","font-size":I.toString(),"text-anchor":c,"dominant-baseline":B,class:"pcb-note-text","data-type":"pcb_note_text","data-pcb-note-text-id":t.pcb_note_text_id,"data-pcb-layer":"overlay"},children:[{type:"text",name:"",value:o,attributes:{},children:[]}]}]}var RTt=rM.board.user_2,NTt=rM.board.user_2;function MTt(t,A){const{transform:e}=A,{center:i,width:o,height:n,stroke_width:s,is_filled:r,has_stroke:g,is_stroke_dashed:a,color:I}=t;if(!i||typeof i.x!="number"||typeof i.y!="number"||typeof o!="number"||typeof n!="number")return console.error("Invalid pcb_note_rect data",{center:i,width:o,height:n}),[];const c=o/2,B=n/2,[C,Q]=Ce(e,[i.x-c,i.y+B]),[E,l]=Ce(e,[i.x+c,i.y-B]),h=Math.min(C,E),u=Math.min(Q,l),p=Math.abs(E-C),y=Math.abs(l-Q),S=(typeof s=="number"?s:0)*Math.abs(e.a),k=I??RTt,m={x:h.toString(),y:u.toString(),width:p.toString(),height:y.toString(),class:"pcb-note-rect","data-type":"pcb_note_rect","data-pcb-note-rect-id":t.pcb_note_rect_id,"data-pcb-layer":"overlay"};if(r?m.fill=I??NTt:m.fill="none",g??S>0){if(m.stroke=k,m["stroke-width"]=S.toString(),a){const U=.2*Math.abs(e.a),M=.1*Math.abs(e.a);m["stroke-dasharray"]=`${U} ${M}`}}else m.stroke="none";return[{name:"rect",type:"element",value:"",attributes:m,children:[]}]}var vTt=rM.board.user_2;function UTt(t,A){const{transform:e}=A;if(!Array.isArray(t.route)||t.route.length===0)return console.error("Invalid pcb_note_path route",t.route),[];for(const s of t.route)if(typeof s.x!="number"||typeof s.y!="number")return console.error("Invalid point in pcb_note_path",s),[];const i=t.route.map((s,r)=>{const[g,a]=Ce(e,[s.x,s.y]);return r===0?`M ${g} ${a}`:`L ${g} ${a}`}).join(" "),o=t.stroke_width*Math.abs(e.a);return[{name:"path",type:"element",value:"",attributes:{d:i,stroke:t.color??vTt,fill:"none","stroke-width":o.toString(),class:"pcb-note-path","data-type":"pcb_note_path","data-pcb-note-path-id":t.pcb_note_path_id,"data-pcb-layer":"overlay"},children:[]}]}var LTt=rM.board.user_2;function HTt(t,A){const{transform:e}=A,{x1:i,y1:o,x2:n,y2:s,stroke_width:r,color:g,is_dashed:a}=t;if(typeof i!="number"||typeof o!="number"||typeof n!="number"||typeof s!="number")return console.error("Invalid pcb_note_line coordinates",{x1:i,y1:o,x2:n,y2:s}),[];const[I,c]=Ce(e,[i,o]),[B,C]=Ce(e,[n,s]),E=(typeof r=="number"?r:0)*Math.abs(e.a),l={x1:I.toString(),y1:c.toString(),x2:B.toString(),y2:C.toString(),stroke:g??LTt,"stroke-width":E.toString(),"stroke-linecap":"round",class:"pcb-note-line","data-type":"pcb_note_line","data-pcb-note-line-id":t.pcb_note_line_id,"data-pcb-layer":"overlay"};if(a){const u=.2*Math.abs(e.a),p=.1*Math.abs(e.a);l["stroke-dasharray"]=`${u} ${p}`}return[{name:"line",type:"element",value:"",attributes:l,children:[]}]}function YTt(t,A){const{transform:e,colorMap:i}=A,[o,n]=Ce(e,[t.x,t.y]),s=Array.isArray(t.layers)&&t.layers[0]||t.layer||"top";if(t.shape==="pill"){const r=t.outer_width*Math.abs(e.a),g=t.outer_height*Math.abs(e.a),a=t.hole_width*Math.abs(e.a),I=t.hole_height*Math.abs(e.a),c=r/2,B=a/2,C=g-r,Q=t.ccw_rotation||0,E=Q?`translate(${o} ${n}) rotate(${-Q})`:`translate(${o} ${n})`,l=Q?`translate(${o} ${n}) rotate(${-Q})`:`translate(${o} ${n})`;return[{name:"g",type:"element",attributes:{"data-type":"pcb_plated_hole","data-pcb-layer":"through"},children:[{name:"path",type:"element",attributes:{class:"pcb-hole-outer",fill:i.copper.top,d:`M${-c},${-C/2} v${C} a${c},${c} 0 0 0 ${r},0 v-${C} a${c},${c} 0 0 0 -${r},0 z`,transform:E,"data-type":"pcb_plated_hole","data-pcb-layer":s},value:"",children:[]},{name:"path",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,d:`M${-B},${-(I-a)/2} v${I-a} a${B},${B} 0 0 0 ${a},0 v-${I-a} a${B},${B} 0 0 0 -${a},0 z`,transform:l,"data-type":"pcb_plated_hole_drill","data-pcb-layer":"drill"},value:"",children:[]}],value:""}]}if(t.shape==="circle"){const r=t.outer_diameter*Math.abs(e.a),g=t.outer_diameter*Math.abs(e.a),a=t.hole_diameter*Math.abs(e.a),I=t.hole_diameter*Math.abs(e.a),c=Math.min(r,g)/2,B=Math.min(a,I)/2;return[{name:"g",type:"element",attributes:{"data-type":"pcb_plated_hole","data-pcb-layer":"through"},children:[{name:"circle",type:"element",attributes:{class:"pcb-hole-outer",fill:i.copper.top,cx:o.toString(),cy:n.toString(),r:c.toString(),"data-type":"pcb_plated_hole","data-pcb-layer":s},value:"",children:[]},{name:"circle",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,cx:o.toString(),cy:n.toString(),r:B.toString(),"data-type":"pcb_plated_hole_drill","data-pcb-layer":"drill"},value:"",children:[]}],value:""}]}if(t.shape==="circular_hole_with_rect_pad"){const r=t,g=t.hole_diameter*Math.abs(e.a),a=t.rect_pad_width*Math.abs(e.a),I=t.rect_pad_height*Math.abs(e.a),c=(t.rect_border_radius??0)*Math.abs(e.a),B=g/2,[C,Q]=Ce(e,[r.x+(r.hole_offset_x??0),r.y+(r.hole_offset_y??0)]);return[{name:"g",type:"element",attributes:{"data-type":"pcb_plated_hole","data-pcb-layer":"through"},children:[{name:"rect",type:"element",attributes:{class:"pcb-hole-outer-pad",fill:i.copper.top,x:(o-a/2).toString(),y:(n-I/2).toString(),width:a.toString(),height:I.toString(),...c?{rx:c.toString(),ry:c.toString()}:{},"data-type":"pcb_plated_hole","data-pcb-layer":s},value:"",children:[]},{name:"circle",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,cx:C.toString(),cy:Q.toString(),r:B.toString(),"data-type":"pcb_plated_hole_drill","data-pcb-layer":"drill"},value:"",children:[]}],value:""}]}if(t.shape==="pill_hole_with_rect_pad"){const r=t,g=r.rect_pad_width*Math.abs(e.a),a=r.rect_pad_height*Math.abs(e.a),I=(r.rect_border_radius??0)*Math.abs(e.a),c=r.hole_height*Math.abs(e.a),B=r.hole_width*Math.abs(e.a),C=r,Q=C.hole_offset_x??0,E=C.hole_offset_y??0,[l,h]=Ce(e,[r.x+Q,r.y+E]),u=Math.min(c,B)/2;return[{name:"g",type:"element",attributes:{"data-type":"pcb_plated_hole","data-pcb-layer":"through"},children:[{name:"rect",type:"element",attributes:{class:"pcb-hole-outer-pad",fill:i.copper.top,x:(o-g/2).toString(),y:(n-a/2).toString(),width:g.toString(),height:a.toString(),...I?{rx:I.toString(),ry:I.toString()}:{},"data-type":"pcb_plated_hole","data-pcb-layer":s},value:"",children:[]},{name:"rect",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,x:(l-B/2).toString(),y:(h-c/2).toString(),width:B.toString(),height:c.toString(),rx:u.toString(),ry:u.toString(),"data-type":"pcb_plated_hole_drill","data-pcb-layer":"drill"},value:"",children:[]}],value:""}]}if(t.shape==="rotated_pill_hole_with_rect_pad"){const r=t,g=r.rect_pad_width*Math.abs(e.a),a=r.rect_pad_height*Math.abs(e.a),I=(r.rect_border_radius??0)*Math.abs(e.a),c=r.hole_height*Math.abs(e.a),B=r.hole_width*Math.abs(e.a),C=r,Q=C.hole_offset_x??0,E=C.hole_offset_y??0,[l,h]=Ce(e,[r.x+Q,r.y+E]),u=Math.min(c,B)/2;return[{name:"g",type:"element",attributes:{"data-type":"pcb_plated_hole","data-pcb-layer":"through"},children:[{name:"rect",type:"element",attributes:{class:"pcb-hole-outer-pad",fill:i.copper.top,x:(-g/2).toString(),y:(-a/2).toString(),width:g.toString(),height:a.toString(),transform:`translate(${o} ${n}) rotate(${-r.rect_ccw_rotation})`,...I?{rx:I.toString(),ry:I.toString()}:{},"data-type":"pcb_plated_hole","data-pcb-layer":s},value:"",children:[]},{name:"rect",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,x:(-B/2).toString(),y:(-c/2).toString(),width:B.toString(),height:c.toString(),rx:u.toString(),ry:u.toString(),transform:`translate(${l} ${h}) rotate(${-r.hole_ccw_rotation})`,"data-type":"pcb_plated_hole_drill","data-pcb-layer":"drill"},value:"",children:[]}],value:""}]}return[]}function JTt(t,A){const{transform:e,layer:i,colorMap:o}=A;if(!t.route||!Array.isArray(t.route))return[];let n=t.route.map((I,c)=>{const[B,C]=Ce(e,[I.x,I.y]);return c===0?`M ${B} ${C}`:`L ${B} ${C}`}).join(" ");const s=t.route[0],r=t.route[t.route.length-1];s&&r&&s.x===r.x&&s.y===r.y&&(n+=" Z");const g=t.layer||"top";if(i&&g!==i)return[];const a=g==="bottom"?o.silkscreen.bottom:o.silkscreen.top;return[{name:"path",type:"element",attributes:{class:`pcb-silkscreen pcb-silkscreen-${g}`,d:n,fill:"none",stroke:a,"stroke-width":(t.stroke_width*Math.abs(e.a)).toString(),"stroke-linecap":"round","stroke-linejoin":"round","data-pcb-component-id":t.pcb_component_id,"data-pcb-silkscreen-path-id":t.pcb_silkscreen_path_id,"data-type":"pcb_silkscreen_path","data-pcb-layer":g},value:"",children:[]}]}function KTt(t,A){const{transform:e,layer:i,colorMap:o}=A,{anchor_position:n,text:s,font_size:r=1,layer:g="top",ccw_rotation:a=0,anchor_alignment:I="center"}=t;if(i&&g!==i)return[];if(!n||typeof n.x!="number"||typeof n.y!="number")return console.error("Invalid anchor_position:",n),[];const[c,B]=Ce(e,[n.x,n.y]),C=r*Math.abs(e.a);let Q="middle",E="central";const l=0,h=0;switch(I){case"top_left":Q="start",E="text-before-edge";break;case"top_center":Q="middle",E="text-before-edge";break;case"top_right":Q="end",E="text-before-edge";break;case"center_left":Q="start",E="central";break;case"center_right":Q="end",E="central";break;case"bottom_left":Q="start",E="text-after-edge";break;case"bottom_center":Q="middle",E="text-after-edge";break;case"bottom_right":Q="end",E="text-after-edge";break;case"center":default:Q="middle",E="central";break}const u=zi(no(c,B),IB(-a*Math.PI/180),...g==="bottom"?[_a(-1,1)]:[]),p=g==="bottom"?o.silkscreen.bottom:o.silkscreen.top,y=s.split(`
|
|
5985
5985
|
`),b=y.length===1?[{type:"text",value:s,name:"",attributes:{},children:[]}]:y.map((k,m)=>({type:"element",name:"tspan",value:"",attributes:{x:"0",...m>0?{dy:C.toString()}:{}},children:[{type:"text",value:k,name:"",attributes:{},children:[]}]}));return[{name:"text",type:"element",attributes:{x:"0",y:"0",dx:l.toString(),dy:h.toString(),fill:p,"font-family":"Arial, sans-serif","font-size":C.toString(),"text-anchor":Q,"dominant-baseline":E,transform:wp(u),class:`pcb-silkscreen-text pcb-silkscreen-${g}`,"data-pcb-silkscreen-text-id":t.pcb_component_id,stroke:"none","data-type":"pcb_silkscreen_text","data-pcb-layer":g},children:b,value:""}]}function TTt(t,A){const{transform:e,layer:i,colorMap:o}=A,{center:n,width:s,height:r,layer:g="top",pcb_silkscreen_rect_id:a,stroke_width:I,is_filled:c,has_stroke:B,is_stroke_dashed:C}=t;if(i&&g!==i)return[];if(!n||typeof n.x!="number"||typeof n.y!="number"||typeof s!="number"||typeof r!="number")return console.error("Invalid rectangle data:",{center:n,width:s,height:r}),[];const[Q,E]=Ce(e,[n.x,n.y]),l=s*Math.abs(e.a),h=r*Math.abs(e.d),u=I*Math.abs(e.a),p=g==="bottom"?o.silkscreen.bottom:o.silkscreen.top,y={x:(Q-l/2).toString(),y:(E-h/2).toString(),width:l.toString(),height:h.toString(),class:`pcb-silkscreen-rect pcb-silkscreen-${g}`,"data-pcb-silkscreen-rect-id":a,"data-type":"pcb_silkscreen_rect","data-pcb-layer":g};y.fill=c?p:"none";let b;if(B===void 0?b=u>0:b=B,b){if(y.stroke=p,y["stroke-width"]=u.toString(),C){const k=.1*Math.abs(e.a),m=.05*Math.abs(e.a);y["stroke-dasharray"]=`${k} ${m}`}}else y.stroke="none";return[{name:"rect",type:"element",attributes:y,value:"",children:[]}]}function qTt(t,A){const{transform:e,layer:i,colorMap:o}=A,{center:n,radius:s,layer:r="top",pcb_silkscreen_circle_id:g,stroke_width:a=1}=t;if(i&&r!==i)return[];if(!n||typeof n.x!="number"||typeof n.y!="number"||typeof s!="number")return console.error("Invalid PCB Silkscreen Circle data:",{center:n,radius:s}),[];const[I,c]=Ce(e,[n.x,n.y]),B=s*Math.abs(e.a),C=a*Math.abs(e.a),Q=r==="bottom"?o.silkscreen.bottom:o.silkscreen.top;return[{name:"circle",type:"element",attributes:{cx:I.toString(),cy:c.toString(),r:B.toString(),class:`pcb-silkscreen-circle pcb-silkscreen-${r}`,stroke:Q,"stroke-width":C.toString(),"data-pcb-silkscreen-circle-id":g,"data-type":"pcb_silkscreen_circle","data-pcb-layer":r},value:"",children:[]}]}function PTt(t,A){const{transform:e,layer:i,colorMap:o}=A,{x1:n,y1:s,x2:r,y2:g,stroke_width:a,layer:I="top",pcb_silkscreen_line_id:c}=t;if(i&&I!==i)return[];if(typeof n!="number"||typeof s!="number"||typeof r!="number"||typeof g!="number")return console.error("Invalid coordinates:",{x1:n,y1:s,x2:r,y2:g}),[];const[B,C]=Ce(e,[n,s]),[Q,E]=Ce(e,[r,g]),l=a*Math.abs(e.a),h=I==="bottom"?o.silkscreen.bottom:o.silkscreen.top;return[{name:"line",type:"element",attributes:{x1:B.toString(),y1:C.toString(),x2:Q.toString(),y2:E.toString(),stroke:h,"stroke-width":l.toString(),class:`pcb-silkscreen-line pcb-silkscreen-${I}`,"data-pcb-silkscreen-line-id":c,"data-type":"pcb_silkscreen_line","data-pcb-layer":I},value:"",children:[]}]}function OTt(t){const A=[];for(let e=0;e<t.length-1;e++)A.push([t[e],t[e+1]]);return A}var Lp={copper:{top:"rgb(200, 52, 52)",inner1:"rgb(255, 140, 0)",inner2:"rgb(255, 215, 0)",inner3:"rgb(50, 205, 50)",inner4:"rgb(64, 224, 208)",inner5:"rgb(138, 43, 226)",inner6:"rgb(255, 105, 180)",bottom:"rgb(77, 127, 196)"},soldermask:{top:"rgb(200, 52, 52)",bottom:"rgb(77, 127, 196)"},drill:"#FF26E2",silkscreen:{top:"#f2eda1",bottom:"#5da9e9"},boardOutline:"rgba(255, 255, 255, 0.5)",debugComponent:{fill:null,stroke:null}};Lp.drill,Lp.silkscreen.top,Lp.silkscreen.bottom,{...Lp.copper};function GF(t,A=Lp){return A.copper[t]??"white"}function WTt(t,A){const{transform:e,layer:i,colorMap:o,renderSolderMask:n}=A;if(!t.route||!Array.isArray(t.route)||t.route.length<2)return[];const s=OTt(t.route),r=[];for(const[g,a]of s){const I=Ce(e,[g.x,g.y]),c=Ce(e,[a.x,a.y]),B="layer"in g?g.layer:"layer"in a?a.layer:null;if(!B||i&&B!==i)continue;const C=GF(B,o),Q=o.soldermask[B]??C,E="width"in g?g.width:"width"in a?a.width:null,l=E?(E*Math.abs(e.a)).toString():"0.3";if(n){const h={name:"path",type:"element",value:"",children:[],attributes:{class:"pcb-trace",stroke:C,fill:"none",d:`M ${I[0]} ${I[1]} L ${c[0]} ${c[1]}`,"stroke-width":l,"stroke-linecap":"round","stroke-linejoin":"round","shape-rendering":"crispEdges","data-type":"pcb_trace","data-pcb-layer":B}},u={name:"path",type:"element",value:"",children:[],attributes:{class:"pcb-soldermask",stroke:Q,fill:"none",d:`M ${I[0]} ${I[1]} L ${c[0]} ${c[1]}`,"stroke-width":l,"stroke-linecap":"round","stroke-linejoin":"round","shape-rendering":"crispEdges","data-type":"pcb_soldermask","data-pcb-layer":B}};r.push(u,h)}else{const h={name:"path",type:"element",value:"",children:[],attributes:{class:"pcb-trace",stroke:Q,fill:"none",d:`M ${I[0]} ${I[1]} L ${c[0]} ${c[1]}`,"stroke-width":l,"stroke-linecap":"round","stroke-linejoin":"round","shape-rendering":"crispEdges","data-type":n?"pcb_soldermask":"pcb_trace","data-pcb-layer":B}};r.push(h)}}return r}function ZTt(t,A){const{transform:e,layer:i,colorMap:o,renderSolderMask:n}=A;if(i&&t.layer!==i)return[];const s=!!t?.is_covered_with_solder_mask,r=n&&s,g=o.soldermask[t.layer]??o.soldermask.top;if(t.shape==="rect"||t.shape==="rotated_rect"){const a=t.width*Math.abs(e.a),I=t.height*Math.abs(e.d),[c,B]=Ce(e,[t.x,t.y]),Q=(t.corner_radius??t.rect_border_radius??0)*Math.abs(e.a);if(t.shape==="rotated_rect"&&t.ccw_rotation){const h={name:"rect",type:"element",value:"",children:[],attributes:{class:"pcb-pad",fill:GF(t.layer,o),x:(-a/2).toString(),y:(-I/2).toString(),width:a.toString(),height:I.toString(),transform:`translate(${c} ${B}) rotate(${-t.ccw_rotation})`,"data-type":"pcb_smtpad","data-pcb-layer":t.layer,...Q?{rx:Q.toString(),ry:Q.toString()}:{}}};if(!r)return[h];const u={name:h.name,type:h.type,value:"",children:[],attributes:{...h.attributes,class:"pcb-solder-mask",fill:g,"data-type":"pcb_soldermask"}};return[h,u]}const E={name:"rect",type:"element",value:"",children:[],attributes:{class:"pcb-pad",fill:GF(t.layer,o),x:(c-a/2).toString(),y:(B-I/2).toString(),width:a.toString(),height:I.toString(),"data-type":"pcb_smtpad","data-pcb-layer":t.layer,...Q?{rx:Q.toString(),ry:Q.toString()}:{}}};if(!r)return[E];const l={name:E.name,type:E.type,value:"",children:[],attributes:{...E.attributes,class:"pcb-solder-mask",fill:g,"data-type":"pcb_soldermask"}};return[E,l]}if(t.shape==="pill"){const a=t.width*Math.abs(e.a),I=t.height*Math.abs(e.d),c=t.radius*Math.abs(e.a),[B,C]=Ce(e,[t.x,t.y]),Q={name:"rect",type:"element",value:"",children:[],attributes:{class:"pcb-pad",fill:GF(t.layer,o),x:(B-a/2).toString(),y:(C-I/2).toString(),width:a.toString(),height:I.toString(),rx:c.toString(),ry:c.toString(),"data-type":"pcb_smtpad","data-pcb-layer":t.layer}};if(!r)return[Q];const E={name:Q.name,type:Q.type,value:"",children:[],attributes:{...Q.attributes,class:"pcb-solder-mask",fill:g,"data-type":"pcb_soldermask"}};return[Q,E]}if(t.shape==="circle"){const a=t.radius*Math.abs(e.a),[I,c]=Ce(e,[t.x,t.y]),B={name:"circle",type:"element",value:"",children:[],attributes:{class:"pcb-pad",fill:GF(t.layer,o),cx:I.toString(),cy:c.toString(),r:a.toString(),"data-type":"pcb_smtpad","data-pcb-layer":t.layer}};if(!r)return[B];const C={name:B.name,type:B.type,value:"",children:[],attributes:{...B.attributes,class:"pcb-solder-mask",fill:g,"data-type":"pcb_soldermask"}};return[B,C]}if(t.shape==="polygon"){const a=(t.points??[]).map(B=>Ce(e,[B.x,B.y])),I={name:"polygon",type:"element",value:"",children:[],attributes:{class:"pcb-pad",fill:GF(t.layer,o),points:a.map(B=>B.join(",")).join(" "),"data-type":"pcb_smtpad","data-pcb-layer":t.layer}};if(!r)return[I];const c={name:I.name,type:I.type,value:"",children:[],attributes:{...I.attributes,class:"pcb-solder-mask",fill:g,"data-type":"pcb_soldermask"}};return[I,c]}return[]}function VTt(t,A){const{transform:e,colorMap:i}=A,{width:o,height:n,center:s,outline:r}=t;let g;if(r&&Array.isArray(r)&&r.length>=3)g=r.map((a,I)=>{const[c,B]=Ce(e,[a.x,a.y]);return I===0?`M ${c} ${B}`:`L ${c} ${B}`}).join(" ");else{const a=o/2,I=n/2,c=Ce(e,[s.x-a,s.y-I]),B=Ce(e,[s.x+a,s.y-I]),C=Ce(e,[s.x+a,s.y+I]),Q=Ce(e,[s.x-a,s.y+I]);g=`M ${c[0]} ${c[1]} L ${B[0]} ${B[1]} L ${C[0]} ${C[1]} L ${Q[0]} ${Q[1]}`}return g+=" Z",[{name:"path",type:"element",value:"",children:[],attributes:{class:"pcb-board",d:g,fill:"none",stroke:i.boardOutline,"stroke-width":(.1*Math.abs(e.a)).toString(),"data-type":"pcb_board","data-pcb-layer":"board"}}]}function jTt(t,A){const{transform:e,colorMap:i,renderSolderMask:o}=A,n=Number(t.width),s=Number(t.height),r=Ce(e,[0,0]),g=Ce(e,[n,0]),a=Ce(e,[n,s]),I=Ce(e,[0,s]),c=`M ${r[0]} ${r[1]} L ${g[0]} ${g[1]} L ${a[0]} ${a[1]} L ${I[0]} ${I[1]} Z`;return t.covered_with_solder_mask,[{name:"path",type:"element",value:"",children:[],attributes:{class:"pcb-panel",d:c,fill:"none",stroke:i.boardOutline,"stroke-width":(.1*Math.abs(e.a)).toString(),"data-type":"pcb_panel","data-pcb-layer":"board"}}]}function zTt(t,A){const{transform:e,colorMap:i}=A,[o,n]=Ce(e,[t.x,t.y]),s=t.outer_diameter*Math.abs(e.a),r=t.outer_diameter*Math.abs(e.a),g=t.hole_diameter*Math.abs(e.a),a=t.hole_diameter*Math.abs(e.a),I=Math.min(s,r)/2,c=Math.min(g,a)/2;return{name:"g",type:"element",attributes:{"data-type":"pcb_via","data-pcb-layer":"through"},children:[{name:"circle",type:"element",attributes:{class:"pcb-hole-outer",fill:i.copper.top,cx:o.toString(),cy:n.toString(),r:I.toString(),"data-type":"pcb_via","data-pcb-layer":"top"}},{name:"circle",type:"element",attributes:{class:"pcb-hole-inner",fill:i.drill,cx:o.toString(),cy:n.toString(),r:c.toString(),"data-type":"pcb_via","data-pcb-layer":"drill"}}]}}function XTt(t,A){const{transform:e,colorMap:i}=A,[o,n]=Ce(e,[t.x,t.y]);if(t.hole_shape==="circle"||t.hole_shape==="square"){const s=t.hole_diameter*Math.abs(e.a),r=s/2;return t.hole_shape==="circle"?[{name:"circle",type:"element",attributes:{class:"pcb-hole",cx:o.toString(),cy:n.toString(),r:r.toString(),fill:i.drill,"data-type":"pcb_hole","data-pcb-layer":"drill"},children:[],value:""}]:[{name:"rect",type:"element",attributes:{class:"pcb-hole",x:(o-r).toString(),y:(n-r).toString(),width:s.toString(),height:s.toString(),fill:i.drill,"data-type":"pcb_hole","data-pcb-layer":"drill"},children:[],value:""}]}if(t.hole_shape==="oval"){const s=t.hole_width*Math.abs(e.a),r=t.hole_height*Math.abs(e.a),g=s/2,a=r/2;return[{name:"ellipse",type:"element",attributes:{class:"pcb-hole",cx:o.toString(),cy:n.toString(),rx:g.toString(),ry:a.toString(),fill:i.drill,"data-type":"pcb_hole","data-pcb-layer":"drill"},children:[],value:""}]}if(t.hole_shape==="pill"){const s=t.hole_width*Math.abs(e.a),r=t.hole_height*Math.abs(e.a),g=s>r,a=Math.min(s,r)/2,I=Math.abs(g?s-r:r-s),c=g?`M${o-I/2},${n-a} h${I} a${a},${a} 0 0 1 0,${r} h-${I} a${a},${a} 0 0 1 0,-${r} z`:`M${o-a},${n-I/2} v${I} a${a},${a} 0 0 0 ${s},0 v-${I} a${a},${a} 0 0 0 -${s},0 z`;return[{name:"path",type:"element",attributes:{class:"pcb-hole",fill:i.drill,d:c,"data-type":"pcb_hole","data-pcb-layer":"drill"},children:[],value:""}]}if(t.hole_shape==="rotated_pill"){const s=t.hole_width*Math.abs(e.a),r=t.hole_height*Math.abs(e.a),g="ccw_rotation"in t?t.ccw_rotation??0:0,a=s>r,I=Math.min(s,r)/2,c=Math.abs(a?s-r:r-s),B=a?`M${-c/2},${-I} h${c} a${I},${I} 0 0 1 0,${r} h-${c} a${I},${I} 0 0 1 0,-${r} z`:`M${-I},${-c/2} v${c} a${I},${I} 0 0 0 ${s},0 v-${c} a${I},${I} 0 0 0 -${s},0 z`;return[{name:"path",type:"element",attributes:{class:"pcb-hole",fill:i.drill,d:B,transform:`translate(${o} ${n}) rotate(${-g})`,"data-type":"pcb_hole","data-pcb-layer":"drill"},children:[],value:""}]}return[]}var $Tt=(t,A)=>{const e=Ri(A).pcb_smtpad.get(t);if(e&&"x"in e&&"y"in e)return{x:e.x,y:e.y};const i=Ri(A).pcb_plated_hole.get(t);return i&&"x"in i&&"y"in i?{x:i.x,y:i.y}:null},Aqt=(t,A,e,i)=>{const o=e.getIdsConnectedToNet(A);let n=null,s=1/0;for(const r of o){const g=$Tt(r,i);if(g){const a=t.x-g.x,I=t.y-g.y,c=Math.sqrt(a*a+I*I);c>0&&c<s&&(s=c,n=g)}}return n};function eqt(t,A){const{transform:e}=A,i=Ib(t),o=t.filter(g=>g.type==="pcb_port"),n=t.filter(g=>g.type==="source_trace"),s=[];o.forEach((g,a)=>{const I=g.pcb_port_id;if(!I)return;const c=i.getNetConnectedToId(I);if(!c)return;let B=!1;const C=Ri(t).source_port.getWhere({pcb_port_id:I});if(C&&C.source_port_id){const l=C.source_port_id;for(const h of n)if(Array.isArray(h.connected_source_port_ids)&&h.connected_source_port_ids.includes(l)&&Array.isArray(h.connected_source_net_ids)&&h.connected_source_net_ids.length>0){B=!0;break}}const Q={x:g.x,y:g.y},E=Aqt(Q,c,i,t);E&&s.push({key:`${I}-${a}`,startPoint:Q,endPoint:E,isInNet:B})});const r=[];for(const g of s){const a=Ce(e,[g.startPoint.x,g.startPoint.y]),I=Ce(e,[g.endPoint.x,g.endPoint.y]),c={x1:a[0].toString(),y1:a[1].toString(),x2:I[0].toString(),y2:I[1].toString(),stroke:"white","stroke-width":"1","stroke-dasharray":"6,6","data-type":"pcb_rats_nest","data-pcb-layer":"overlay"};r.push({name:"line",type:"element",attributes:c,value:"",children:[]})}return r}function tqt(t,A){const{transform:e,colorMap:i}=A;if(t.shape==="rect"){const o=t,[n,s]=Ce(e,[o.center.x,o.center.y]),r=o.width*Math.abs(e.a),g=o.height*Math.abs(e.d),a=-(o.rotation??0);return[{name:"rect",type:"element",attributes:{class:"pcb-cutout pcb-cutout-rect",x:(-r/2).toString(),y:(-g/2).toString(),width:r.toString(),height:g.toString(),fill:i.drill,transform:wp(zi(no(n,s),IB(a*Math.PI/180))),"data-type":"pcb_cutout","data-pcb-layer":"drill"},children:[],value:""}]}if(t.shape==="circle"){const o=t,[n,s]=Ce(e,[o.center.x,o.center.y]),r=o.radius*Math.abs(e.a);return[{name:"circle",type:"element",attributes:{class:"pcb-cutout pcb-cutout-circle",cx:n.toString(),cy:s.toString(),r:r.toString(),fill:i.drill,"data-type":"pcb_cutout","data-pcb-layer":"drill"},children:[],value:""}]}if(t.shape==="polygon"){const o=t;return!o.points||o.points.length===0?[]:[{name:"polygon",type:"element",attributes:{class:"pcb-cutout pcb-cutout-polygon",points:o.points.map(r=>Ce(e,[r.x,r.y])).map(r=>`${r[0]},${r[1]}`).join(" "),fill:i.drill,"data-type":"pcb_cutout","data-pcb-layer":"drill"},children:[],value:""}]}return[]}function jre(t,A){if(t.length===0)return"";const e=t.map(o=>{const[n,s]=Ce(A,[o.x,o.y]);return{...o,x:n,y:s}});let i=`M ${e[0].x} ${e[0].y}`;for(let o=0;o<e.length;o++){const n=e[o],s=e[(o+1)%e.length];if(n.bulge){if(Math.hypot(s.x-n.x,s.y-n.y)<1e-9)continue;const r=n.bulge,g=s.x-n.x,a=s.y-n.y,I=Math.hypot(g,a),c=Math.abs(I/4/r*(r*r+1)),B=r<0?1:0,C=Math.abs(r)>1?1:0;i+=` A ${c} ${c} 0 ${C} ${B} ${s.x} ${s.y}`}else i+=` L ${s.x} ${s.y}`}return i+=" Z",i}function iqt(t,A){const{transform:e,layer:i,colorMap:o}=A,{layer:n}=t;if(i&&n!==i)return[];const s=GF(n,o),r="0.5";if(t.shape==="rect"){const[g,a]=Ce(e,[t.center.x,t.center.y]),I=t.width*Math.abs(e.a),c=t.height*Math.abs(e.d),B=-(t.rotation??0);return[{name:"rect",type:"element",attributes:{class:"pcb-copper-pour pcb-copper-pour-rect",x:(-I/2).toString(),y:(-c/2).toString(),width:I.toString(),height:c.toString(),fill:s,"fill-opacity":r,transform:wp(zi(no(g,a),IB(B*Math.PI/180))),"data-type":"pcb_copper_pour","data-pcb-layer":n},children:[],value:""}]}if(t.shape==="polygon")return!t.points||t.points.length===0?[]:[{name:"polygon",type:"element",attributes:{class:"pcb-copper-pour pcb-copper-pour-polygon",points:t.points.map(I=>Ce(e,[I.x,I.y])).map(I=>`${I[0]},${I[1]}`).join(" "),fill:s,"fill-opacity":r,"data-type":"pcb_copper_pour","data-pcb-layer":n},children:[],value:""}];if(t.shape==="brep"){const{brep_shape:g}=t;let a=jre(g.outer_ring.vertices,e);for(const I of g.inner_rings??[])a+=` ${jre(I.vertices,e)}`;return[{name:"path",type:"element",attributes:{class:"pcb-copper-pour pcb-copper-pour-brep",d:a,fill:s,"fill-rule":"evenodd","fill-opacity":r,"data-type":"pcb_copper_pour","data-pcb-layer":n},children:[],value:""}]}return[]}var oqt="rgba(255, 255, 255, 0.5)",zre="pcb-grid-pattern";function nqt({grid:t,svgWidth:A,svgHeight:e}){if(!t)return{};const i=t.lineColor??oqt,o=t.cellSize,n=t.majorCellSize,s=t.majorLineColor??i;if(n!==void 0){if(!o||o<=0)throw new Error("grid.majorCellSize requires a positive grid.cellSize");if(n<=0)throw new Error("grid.majorCellSize must be a positive multiple of grid.cellSize");const c=n/o,B=Math.round(c);if(!Number.isFinite(c)||Math.abs(c-B)>1e-6)throw new Error("grid.majorCellSize must be a positive multiple of grid.cellSize")}if(!o||o<=0)return{};const r=n!==void 0,g=r?sqt(o,n,i,s):[{name:"path",type:"element",value:"",attributes:{d:`M ${o} 0 L 0 0 0 ${o}`,fill:"none",stroke:i,"stroke-width":"1","shape-rendering":"crispEdges"},children:[]}],a={name:"defs",type:"element",value:"",attributes:{},children:[{name:"pattern",type:"element",value:"",attributes:{id:zre,width:r?n.toString():o.toString(),height:r?n.toString():o.toString(),patternUnits:"userSpaceOnUse"},children:g}]},I={name:"rect",type:"element",value:"",attributes:{x:"0",y:"0",width:A.toString(),height:e.toString(),fill:`url(#${zre})`,"pointer-events":"none","data-type":"pcb_grid","data-pcb-layer":"global"},children:[]};return{defs:a,rect:I}}function sqt(t,A,e,i){const o=[],n=Math.round(A/t);for(let s=0;s<n;s+=1){const g=Number((s*t).toFixed(6)).toString(),a=s===0?i:e,I=A.toString();o.push({name:"line",type:"element",value:"",attributes:{x1:g,y1:"0",x2:g,y2:I,stroke:a,"stroke-width":"1","shape-rendering":"crispEdges"},children:[]}),o.push({name:"line",type:"element",value:"",attributes:{x1:"0",y1:g,x2:I,y2:g,stroke:a,"stroke-width":"1","shape-rendering":"crispEdges"},children:[]})}return o}function rqt(t,A){const{transform:e}=A,{center:i,width:o,height:n,rotation:s=0}=t,[r,g]=Ce(e,[i.x,i.y]),a=o*Math.abs(e.a),I=n*Math.abs(e.d),c=`translate(${r}, ${g}) rotate(${-s}) scale(1, -1)`;return!A.colorMap.debugComponent?.fill&&!A.colorMap.debugComponent?.stroke?[]:[{name:"g",type:"element",attributes:{transform:c,"data-type":"pcb_component","data-pcb-layer":t.layer??"top"},children:[{name:"rect",type:"element",attributes:{class:"pcb-component",x:(-a/2).toString(),y:(-I/2).toString(),width:a.toString(),height:I.toString(),fill:A.colorMap.debugComponent.fill??"transparent",stroke:A.colorMap.debugComponent.stroke??"transparent","data-type":"pcb_component","data-pcb-layer":t.layer??"top"}}],value:""}]}var gqt="rgba(100, 200, 255, 0.6)",aqt=.1;function Iqt(t,A){const{transform:e}=A,{center:i,width:o,height:n}=t,s=Array.isArray(t.outline)?t.outline:void 0,r=aqt*Math.abs(e.a),g=.3*Math.abs(e.a),a=.15*Math.abs(e.a),I={class:"pcb-group",fill:"none",stroke:gqt,"stroke-width":r.toString(),"stroke-dasharray":`${g} ${a}`,"data-type":"pcb_group","data-pcb-group-id":t.pcb_group_id,"data-pcb-layer":"overlay"};if(t.name&&(I["data-group-name"]=t.name),s&&s.length>=3&&s.every(S=>S&&typeof S.x=="number"&&typeof S.y=="number")){const S=s.map((k,m)=>{const[_,G]=Ce(e,[k.x,k.y]);return m===0?`M ${_} ${G}`:`L ${_} ${G}`}).join(" ");return[{name:"path",type:"element",value:"",children:[],attributes:{...I,d:`${S} Z`}}]}if(!i||typeof i.x!="number"||typeof i.y!="number"||typeof o!="number"||typeof n!="number")return console.error("Invalid pcb_group data",{center:i,width:o,height:n}),[];const c=o/2,B=n/2,[C,Q]=Ce(e,[i.x-c,i.y+B]),[E,l]=Ce(e,[i.x+c,i.y-B]),h=Math.min(C,E),u=Math.min(Q,l),p=Math.abs(E-C),y=Math.abs(l-Q);return[{name:"rect",type:"element",value:"",attributes:{...I,x:h.toString(),y:u.toString(),width:p.toString(),height:y.toString()},children:[]}]}function cqt(t){return t.find(e=>e.type==="project_software_metadata"||e.type==="source_project_metadata")?.software_used_string}var Bqt={version:"0.0.247"},Cqt=Bqt.version,Qqt={pcb_background:0,pcb_boundary:1,pcb_panel:5,pcb_board:10,pcb_cutout:15,pcb_hole:18,pcb_plated_hole_drill:19,pcb_plated_hole:20,pcb_trace:30,pcb_smtpad:30,pcb_copper_pour:35,pcb_via:36,pcb_soldermask:40,pcb_solder_paste:45,pcb_silkscreen_text:50,pcb_silkscreen_path:50,pcb_silkscreen_rect:50,pcb_silkscreen_circle:50,pcb_silkscreen_line:50,pcb_component:60,pcb_fabrication_note_text:70,pcb_fabrication_note_path:70,pcb_fabrication_note_rect:70,pcb_fabrication_note_dimension:70,pcb_note_dimension:70,pcb_note_text:70,pcb_note_rect:70,pcb_note_path:70,pcb_note_line:70,pcb_trace_error:80,pcb_rats_nest:85},Xre=100;function $re(t){return t.map((A,e)=>({object:A,index:e,layerPriority:lqt(A.attributes?.["data-pcb-layer"]??void 0),typePriority:Eqt(A.attributes?.["data-type"]??void 0)})).sort((A,e)=>A.layerPriority!==e.layerPriority?A.layerPriority-e.layerPriority:A.typePriority!==e.typePriority?A.typePriority-e.typePriority:A.index-e.index).map(({object:A})=>A)}function lqt(t){if(!t)return 500;const A=t.toLowerCase();if(A==="global")return-100;if(A==="bottom")return 0;if(A==="board")return 2;if(A.startsWith("inner")){const e=A.match(/\d+/);return 5+(e?parseInt(e[0],10):0)}return A==="through"?18:A==="top"?20:A==="drill"?30:A==="overlay"?40:10}function Eqt(t){return t?Qqt[t]??Xre:Xre}function hqt(t,A){const e=A?.drawPaddingOutsideBoard??!0,i=A?.layer,o=A?.colorOverrides,n={...Lp.copper};if(o?.copper)for(const[QA,bA]of Object.entries(o.copper))bA!==void 0&&(n[QA]=bA);const s={copper:n,drill:o?.drill??Lp.drill,silkscreen:{top:o?.silkscreen?.top??Lp.silkscreen.top,bottom:o?.silkscreen?.bottom??Lp.silkscreen.bottom},boardOutline:o?.boardOutline??Lp.boardOutline,soldermask:{top:o?.soldermask?.top??Lp.soldermask.top,bottom:o?.soldermask?.bottom??Lp.soldermask.bottom},debugComponent:{fill:o?.debugComponent?.fill??Lp.debugComponent.fill,stroke:o?.debugComponent?.stroke??Lp.debugComponent.stroke}};let r=Number.POSITIVE_INFINITY,g=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,I=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,B=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(const QA of t)if(QA.type==="pcb_panel"){const bA=QA,SA=Number(bA.width),ZA=Number(bA.height),oe={x:SA/2,y:ZA/2};BA(oe,SA,ZA),wA(oe,SA,ZA)}else if(QA.type==="pcb_board")QA.outline&&Array.isArray(QA.outline)&&QA.outline.length>=3?(GA(QA.outline),LA(QA.outline)):"center"in QA&&"width"in QA&&"height"in QA&&(BA(QA.center,QA.width,QA.height),wA(QA.center,QA.width,QA.height));else if("x"in QA&&"y"in QA)BA({x:QA.x,y:QA.y},0,0);else if(QA.type==="pcb_smtpad"){const bA=QA;bA.shape==="rect"||bA.shape==="rotated_rect"||bA.shape==="pill"?BA({x:bA.x,y:bA.y},bA.width,bA.height):bA.shape==="circle"?BA({x:bA.x,y:bA.y},bA.radius*2,bA.radius*2):bA.shape==="polygon"&&YA(bA.points)}else if("route"in QA)YA(QA.route);else if(QA.type==="pcb_note_rect"||QA.type==="pcb_fabrication_note_rect")BA(QA.center,QA.width,QA.height);else if(QA.type==="pcb_cutout"){const bA=QA;bA.shape==="rect"?BA(bA.center,bA.width,bA.height):bA.shape==="circle"?BA(bA.center,bA.radius*2,bA.radius*2):bA.shape==="polygon"&&YA(bA.points)}else QA.type==="pcb_silkscreen_text"||QA.type==="pcb_silkscreen_rect"||QA.type==="pcb_silkscreen_circle"||QA.type==="pcb_silkscreen_line"?vA(QA):QA.type==="pcb_copper_pour"&&(QA.shape==="rect"?BA(QA.center,QA.width,QA.height):QA.shape==="polygon"&&YA(QA.points));const E=e?1:0,l=e||!Number.isFinite(c)?r:c,h=e||!Number.isFinite(B)?g:B,u=e||!Number.isFinite(C)?a:C,p=e||!Number.isFinite(Q)?I:Q,y=u-l+2*E,b=p-h+2*E;let S=A?.width??800,k=A?.height??600;if(A?.matchBoardAspectRatio){const QA=C-c,bA=Q-B;if(QA>0&&bA>0){const SA=QA/bA;A?.width&&!A?.height?k=A.width/SA:A?.height&&!A?.width?S=A.height*SA:k=S/SA}}const m=[];for(const QA of t)"route"in QA&&QA.route!==void 0&&m.push(QA.route);const _=S/y,G=k/b,U=Math.min(_,G),M=(S-y*U)/2,T=(k-b*U)/2,P=zi(no(M-l*U+E*U,k-T+h*U-E*U),_a(U,-U)),q={transform:P,layer:i,shouldDrawErrors:A?.shouldDrawErrors,showPcbGroups:A?.showPcbGroups,drawPaddingOutsideBoard:e,colorMap:s,renderSolderMask:A?.renderSolderMask},W=t.flatMap(QA=>uqt({elm:QA,circuitJson:t,ctx:q}));let V=$re(W);for(const QA of t)if("stroke_width"in QA){String(U*QA.stroke_width);break}if(A?.shouldDrawRatsNest){const QA=eqt(t,q);V=$re([...V,...QA])}const AA=[{name:"style",type:"element",value:"",attributes:{},children:[{type:"text",value:"",name:"",attributes:{},children:[]}]}],oA=nqt({grid:A?.grid,svgWidth:S,svgHeight:k});oA.defs&&AA.push(oA.defs),AA.push({name:"rect",type:"element",value:"",attributes:{class:"boundary",x:"0",y:"0",fill:A?.backgroundColor??"#000",width:S.toString(),height:k.toString(),"data-type":"pcb_background","data-pcb-layer":"global"},children:[]}),e&&AA.push(dqt(P,r,g,a,I)),AA.push(...V),oA.rect&&AA.push(oA.rect);const CA=cqt(t),tA=Cqt,sA={name:"svg",type:"element",attributes:{xmlns:"http://www.w3.org/2000/svg",width:S.toString(),height:k.toString(),...CA&&{"data-software-used-string":CA},...A?.includeVersion&&{"data-circuit-to-svg-version":tA}},value:"",children:AA.filter(QA=>QA!==null)};try{return Xx(sA)}catch(QA){throw console.error("Error stringifying SVG object:",QA),QA}function BA(QA,bA,SA){const ZA=bA/2,oe=SA/2;r=Math.min(r,QA.x-ZA),g=Math.min(g,QA.y-oe),a=Math.max(a,QA.x+ZA),I=Math.max(I,QA.y+oe)}function wA(QA,bA,SA){const ZA=bA/2,oe=SA/2;c=Math.min(c,QA.x-ZA),B=Math.min(B,QA.y-oe),C=Math.max(C,QA.x+ZA),Q=Math.max(Q,QA.y+oe)}function GA(QA){for(const bA of QA)r=Math.min(r,bA.x),g=Math.min(g,bA.y),a=Math.max(a,bA.x),I=Math.max(I,bA.y)}function LA(QA){for(const bA of QA)c=Math.min(c,bA.x),B=Math.min(B,bA.y),C=Math.max(C,bA.x),Q=Math.max(Q,bA.y)}function YA(QA){for(const bA of QA)r=Math.min(r,bA.x),g=Math.min(g,bA.y),a=Math.max(a,bA.x),I=Math.max(I,bA.y)}function vA(QA){if(QA.type==="pcb_silkscreen_text")BA(QA.anchor_position,0,0);else if(QA.type==="pcb_silkscreen_path")YA(QA.route);else if(QA.type==="pcb_silkscreen_rect")BA(QA.center,QA.width,QA.height);else if(QA.type==="pcb_silkscreen_circle")BA(QA.center,QA.radius*2,QA.radius*2);else if(QA.type==="pcb_silkscreen_line")BA({x:QA.x1,y:QA.y1},0,0),BA({x:QA.x2,y:QA.y2},0,0);else if(QA.type==="pcb_cutout"){const bA=QA;bA.shape==="rect"?BA(bA.center,bA.width,bA.height):bA.shape==="circle"?BA(bA.center,bA.radius*2,bA.radius*2):bA.shape==="polygon"&&YA(bA.points)}}}function uqt({elm:t,circuitJson:A,ctx:e}){switch(t.type){case"pcb_trace_error":return uTt(t,A,e).filter(Boolean);case"pcb_footprint_overlap_error":return fTt(t,A,e).filter(Boolean);case"pcb_component":return rqt(t,e).filter(Boolean);case"pcb_trace":return WTt(t,e);case"pcb_copper_pour":return iqt(t,e);case"pcb_plated_hole":return YTt(t,e).filter(Boolean);case"pcb_hole":return XTt(t,e);case"pcb_smtpad":return ZTt(t,e);case"pcb_silkscreen_text":return KTt(t,e);case"pcb_silkscreen_rect":return TTt(t,e);case"pcb_silkscreen_circle":return qTt(t,e);case"pcb_silkscreen_line":return PTt(t,e);case"pcb_fabrication_note_path":return yTt(t,e);case"pcb_fabrication_note_text":return wTt(t,e);case"pcb_fabrication_note_rect":return STt(t,e);case"pcb_fabrication_note_dimension":return kTt(t,e);case"pcb_note_dimension":return FTt(t,e);case"pcb_note_text":return xTt(t,e);case"pcb_note_rect":return MTt(t,e);case"pcb_note_path":return UTt(t,e);case"pcb_note_line":return HTt(t,e);case"pcb_silkscreen_path":return JTt(t,e);case"pcb_panel":return e.drawPaddingOutsideBoard?jTt(t,e):[];case"pcb_board":return e.drawPaddingOutsideBoard?VTt(t,e):[];case"pcb_via":return zTt(t,e);case"pcb_cutout":return tqt(t,e);case"pcb_group":return e.showPcbGroups?Iqt(t,e):[];default:return[]}}function dqt(t,A,e,i,o){const[n,s]=Ce(t,[A,e]),[r,g]=Ce(t,[i,o]),a=Math.abs(r-n),I=Math.abs(g-s),c=Math.min(n,r),B=Math.min(s,g);return{name:"rect",type:"element",value:"",children:[],attributes:{class:"pcb-boundary",fill:"none",stroke:"#fff","stroke-width":"0.3",x:c.toString(),y:B.toString(),width:a.toString(),height:I.toString(),"data-type":"pcb_boundary","data-pcb-layer":"global"}}}var TdA=u3A(),aW=t4A(),gM=q3A(),pqt=z4A(),Age=Un(),fqt=Gb();const yqt=ff(fqt);function ege(t,A){let{x:e,y:i,z:o}=t;if(A.axisMapping){const n={x:e,y:i,z:o};A.axisMapping.x&&(e=qdA(n,A.axisMapping.x)),A.axisMapping.y&&(i=qdA(n,A.axisMapping.y)),A.axisMapping.z&&(o=qdA(n,A.axisMapping.z))}if(e*=A.flipX??1,i*=A.flipY??1,o*=A.flipZ??1,A.rotation){if(A.rotation.x){const n=A.rotation.x*Math.PI/180,s=Math.cos(n),r=Math.sin(n),g=i*s-o*r,a=i*r+o*s;i=g,o=a}if(A.rotation.y){const n=A.rotation.y*Math.PI/180,s=Math.cos(n),r=Math.sin(n),g=e*s+o*r,a=-e*r+o*s;e=g,o=a}if(A.rotation.z){const n=A.rotation.z*Math.PI/180,s=Math.cos(n),r=Math.sin(n),g=e*s-i*r,a=e*r+i*s;e=g,i=a}}return{x:e,y:i,z:o}}function qdA(t,A){switch(A){case"x":return t.x;case"y":return t.y;case"z":return t.z;case"-x":return-t.x;case"-y":return-t.y;case"-z":return-t.z;default:return 0}}function IW(t,A){return t.map(e=>({...e,vertices:e.vertices.map(i=>ege(i,A)),normal:ege(e.normal,A)}))}var cW={Z_UP_TO_Y_UP:{axisMapping:{x:"x",y:"-z",z:"y"}},Z_UP_TO_Y_UP_USB_FIX:{axisMapping:{x:"x",y:"-z",z:"y"},flipZ:-1},IDENTITY:{}},PdA=new Map;async function wqt(t,A){const e=`${t}:${JSON.stringify(A??{})}`;if(PdA.has(e))return PdA.get(e);const o=await(await fetch(t)).arrayBuffer(),n=Dqt(o,A);return PdA.set(e,n),n}function Dqt(t,A){const e=new DataView(t);return new TextDecoder().decode(t.slice(0,5)).toLowerCase()==="solid"?mqt(t,A):Sqt(e,A)}function mqt(t,A){const i=new TextDecoder().decode(t).split(`
|
|
5986
|
-
`).map(g=>g.trim()),o=[];let n=0;for(;n<i.length;){const g=i[n];if(g&&g.startsWith("facet normal")){const a=g.match(/facet normal\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/),I=a?{x:parseFloat(a[1]),y:parseFloat(a[2]),z:parseFloat(a[3])}:{x:0,y:0,z:1};n++;const c=[];for(;n<i.length&&i[n]&&!i[n].startsWith("endfacet");){const B=i[n];if(B.startsWith("vertex")){const C=B.match(/vertex\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/);C&&c.push({x:parseFloat(C[1]),y:parseFloat(C[2]),z:parseFloat(C[3])})}n++}c.length===3&&o.push({vertices:[c[0],c[1],c[2]],normal:I})}n++}const s=A??cW.Z_UP_TO_Y_UP,r=IW(o,s);return{triangles:r,boundingBox:tge(r)}}function Sqt(t,A){let e=80;const i=t.getUint32(e,!0);e+=4;const o=[];for(let r=0;r<i;r++){const g={x:t.getFloat32(e,!0),y:t.getFloat32(e+4,!0),z:t.getFloat32(e+8,!0)};e+=12;const a=[{x:t.getFloat32(e,!0),y:t.getFloat32(e+4,!0),z:t.getFloat32(e+8,!0)},{x:t.getFloat32(e+12,!0),y:t.getFloat32(e+16,!0),z:t.getFloat32(e+20,!0)},{x:t.getFloat32(e+24,!0),y:t.getFloat32(e+28,!0),z:t.getFloat32(e+32,!0)}];e+=36,e+=2,o.push({vertices:a,normal:g})}const n=A??cW.Z_UP_TO_Y_UP,s=IW(o,n);return{triangles:s,boundingBox:tge(s)}}function tge(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)A=Math.min(A,g.x),e=Math.min(e,g.y),i=Math.min(i,g.z),o=Math.max(o,g.x),n=Math.max(n,g.y),s=Math.max(s,g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}var OdA=new Map;async function bqt(t,A){const e=`${t}:${JSON.stringify(A??{})}`;if(OdA.has(e))return OdA.get(e);const o=await(await fetch(t)).text(),n=kqt(o,A);return OdA.set(e,n),n}function kqt(t,A){const e=t.split(/\r?\n/),i=[],o=[],n=[],s=[],r=new Map;let g,a=0;const I=new Map;for(const C of e){const Q=C.trim();if(Q.startsWith("v ")){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];if(i.push({x:parseFloat(l),y:parseFloat(h),z:parseFloat(u)}),E.length>=7){const[p,y,b]=E.slice(4,7);let S=Number(p),k=Number(y),m=Number(b);S<=1&&k<=1&&m<=1&&(S*=255,k*=255,m*=255),o.push([S,k,m,1])}else o.push(void 0)}else if(Q.startsWith("vn ")){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];n.push({x:parseFloat(l),y:parseFloat(h),z:parseFloat(u)})}else if(Q.startsWith("newmtl ")){const E=Q.split(/\s+/)[1];r.set(E,{name:E}),I.set(E,a++),g=E}else if(Q.startsWith("Kd ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.color=[p,y,b,1]}else if(Q.startsWith("Ka ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.ambient=[p,y,b,1]}else if(Q.startsWith("Ks ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.specular=[p,y,b,1]}else if(Q.startsWith("Ns ")&&g){const E=parseFloat(Q.split(/\s+/)[1]),l=r.get(g);l.shininess=E}else if(Q.startsWith("d ")&&g){const E=parseFloat(Q.split(/\s+/)[1]),l=r.get(g);l.dissolve=E}else if(Q==="endmtl")g=void 0;else if(Q.startsWith("usemtl "))g=Q.split(/\s+/)[1];else if(Q.startsWith("f ")){const l=Q.slice(2).trim().split(/\s+/).map(h=>{const[u,p,y]=h.split("/");return{v:parseInt(u)-1,n:y?parseInt(y)-1:void 0}});for(let h=1;h<l.length-1;h++){const u=l[0],p=l[h],y=l[h+1],b=i[u.v],S=i[p.v],k=i[y.v];let m;if(u.n!==void 0&&n[u.n])m=n[u.n];else if(p.n!==void 0&&n[p.n])m=n[p.n];else if(y.n!==void 0&&n[y.n])m=n[y.n];else{const U={x:S.x-b.x,y:S.y-b.y,z:S.z-b.z},M={x:k.x-b.x,y:k.y-b.y,z:k.z-b.z};m={x:U.y*M.z-U.z*M.y,y:U.z*M.x-U.x*M.z,z:U.x*M.y-U.y*M.x}}const _={vertices:[b,S,k],normal:m};g&&I.has(g)&&(_.materialIndex=I.get(g));const G=o[u.v]??o[p.v]??o[y.v];G&&(_.color=G),s.push(_)}}}const c=A??cW.IDENTITY,B=IW(s,c);return{triangles:B,boundingBox:Gqt(B),materials:r.size>0?r:void 0,materialIndexMap:r.size>0?I:void 0}}function Gqt(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)g.x<A&&(A=g.x),g.y<e&&(e=g.y),g.z<i&&(i=g.z),g.x>o&&(o=g.x),g.y>n&&(n=g.y),g.z>s&&(s=g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}var WdA=new Map;async function Fqt(t,A){const e=`${t}:${JSON.stringify(A??{})}`;if(WdA.has(e))return WdA.get(e);const o=await(await fetch(t)).arrayBuffer(),n=ige(o,A);return WdA.set(e,n),n}function ige(t,A){const e=new DataView(t);let i=0;const o=e.getUint32(i,!0);if(i+=4,o!==1179937895)throw new Error("Invalid GLB file: incorrect magic number");const n=e.getUint32(i,!0);if(i+=4,n!==2)throw new Error(`Unsupported GLB version: ${n}`);const s=e.getUint32(i,!0);i+=4;const r=e.getUint32(i,!0);i+=4;const g=e.getUint32(i,!0);if(i+=4,g!==1313821514)throw new Error("Expected JSON chunk");const a=new Uint8Array(t,i,r),I=new TextDecoder().decode(a),c=JSON.parse(I);i+=r;let B;if(i<s){const h=e.getUint32(i,!0);i+=4;const u=e.getUint32(i,!0);i+=4,u===5130562&&(B=t.slice(i,i+h))}const C=xqt(c,B),E=IW(C,A??{axisMapping:{x:"x",y:"z",z:"y"}});return E.some(h=>h.color!==void 0)?_qt(E):{triangles:E,boundingBox:nge(E)}}function _qt(t){const A=new Map;for(const s of t){const r=s.color?JSON.stringify(s.color):"default";A.has(r)||A.set(r,[]),A.get(r).push(s)}const e=new Map,i=new Map;let o=0;const n=[];for(const[s,r]of A){const g=`Material_${o}`;if(i.set(g,o),s==="default")e.set(g,{name:g,color:[179,179,179,1]});else{const a=JSON.parse(s);e.set(g,{name:g,color:a})}for(const a of r)n.push({...a,materialIndex:o});o++}return{triangles:n,boundingBox:nge(n),materials:e,materialIndexMap:i}}function xqt(t,A){const e=[];if(!t.meshes||!t.accessors||!t.bufferViews)return e;for(const i of t.meshes)for(const o of i.primitives){if((o.mode??4)!==4)continue;const s=o.attributes.POSITION;if(s===void 0)continue;const r=t.accessors[s],g=BW(r,t.bufferViews,A);let a;const I=o.attributes.NORMAL;if(I!==void 0){const l=t.accessors[I];a=BW(l,t.bufferViews,A)}let c;const B=o.attributes.COLOR_0;if(B!==void 0){const l=t.accessors[B];c=BW(l,t.bufferViews,A)}let C;if(!c&&o.material!==void 0&&t.materials){const l=t.materials[o.material];if(l?.pbrMetallicRoughness?.baseColorFactor){const h=l.pbrMetallicRoughness.baseColorFactor;C=[Math.round(h[0]*255),Math.round(h[1]*255),Math.round(h[2]*255),h[3]]}}let Q;if(o.indices!==void 0){const l=t.accessors[o.indices],h=BW(l,t.bufferViews,A);Q=l.componentType===5123?new Uint16Array(h.buffer,h.byteOffset,h.length):new Uint32Array(h.buffer,h.byteOffset,h.length)}const E=g.length/3;if(Q)for(let l=0;l<Q.length;l+=3){const h=Q[l],u=Q[l+1],p=Q[l+2],y={x:g[h*3],y:g[h*3+1],z:g[h*3+2]},b={x:g[u*3],y:g[u*3+1],z:g[u*3+2]},S={x:g[p*3],y:g[p*3+1],z:g[p*3+2]};let k;a?k={x:(a[h*3]+a[u*3]+a[p*3])/3,y:(a[h*3+1]+a[u*3+1]+a[p*3+1])/3,z:(a[h*3+2]+a[u*3+2]+a[p*3+2])/3}:k=oge(y,b,S);let m;if(c){const _=c.length/E;_===3?m=[Math.round((c[h*3]+c[u*3]+c[p*3])/3*255),Math.round((c[h*3+1]+c[u*3+1]+c[p*3+1])/3*255),Math.round((c[h*3+2]+c[u*3+2]+c[p*3+2])/3*255),1]:_===4&&(m=[Math.round((c[h*4]+c[u*4]+c[p*4])/3*255),Math.round((c[h*4+1]+c[u*4+1]+c[p*4+1])/3*255),Math.round((c[h*4+2]+c[u*4+2]+c[p*4+2])/3*255),(c[h*4+3]+c[u*4+3]+c[p*4+3])/3])}else m=C;e.push({vertices:[y,b,S],normal:k,color:m})}else for(let l=0;l<E;l+=3){const h={x:g[l*3],y:g[l*3+1],z:g[l*3+2]},u={x:g[(l+1)*3],y:g[(l+1)*3+1],z:g[(l+1)*3+2]},p={x:g[(l+2)*3],y:g[(l+2)*3+1],z:g[(l+2)*3+2]};let y;a?y={x:(a[l*3]+a[(l+1)*3]+a[(l+2)*3])/3,y:(a[l*3+1]+a[(l+1)*3+1]+a[(l+2)*3+1])/3,z:(a[l*3+2]+a[(l+1)*3+2]+a[(l+2)*3+2])/3}:y=oge(h,u,p);let b;if(c){const S=c.length/E;S===3?b=[Math.round((c[l*3]+c[(l+1)*3]+c[(l+2)*3])/3*255),Math.round((c[l*3+1]+c[(l+1)*3+1]+c[(l+2)*3+1])/3*255),Math.round((c[l*3+2]+c[(l+1)*3+2]+c[(l+2)*3+2])/3*255),1]:S===4&&(b=[Math.round((c[l*4]+c[(l+1)*4]+c[(l+2)*4])/3*255),Math.round((c[l*4+1]+c[(l+1)*4+1]+c[(l+2)*4+1])/3*255),Math.round((c[l*4+2]+c[(l+1)*4+2]+c[(l+2)*4+2])/3*255),(c[l*4+3]+c[(l+1)*4+3]+c[(l+2)*4+3])/3])}else b=C;e.push({vertices:[h,u,p],normal:y,color:b})}}return e}function BW(t,A,e){const i=A[t.bufferView];if(!i||!e)throw new Error("Missing buffer data");const o=(i.byteOffset??0)+(t.byteOffset??0),n=t.componentType,s=t.count,r=t.type,a=s*(r==="SCALAR"?1:r==="VEC2"?2:r==="VEC3"?3:r==="VEC4"?4:1);if(n===5126)return new Float32Array(e,o,a);if(n===5123){const I=new Uint16Array(e,o,a);return new Float32Array(I)}else if(n===5125){const I=new Uint32Array(e,o,a);return new Float32Array(I)}else if(n===5122){const I=new Int16Array(e,o,a);return new Float32Array(I)}else if(n===5124){const I=new Int32Array(e,o,a);return new Float32Array(I)}else if(n===5121){const I=new Uint8Array(e,o,a);return new Float32Array(I)}else if(n===5120){const I=new Int8Array(e,o,a);return new Float32Array(I)}throw new Error(`Unsupported component type: ${n}`)}function oge(t,A,e){const i={x:A.x-t.x,y:A.y-t.y,z:A.z-t.z},o={x:e.x-t.x,y:e.y-t.y,z:e.z-t.z};return{x:i.y*o.z-i.z*o.y,y:i.z*o.x-i.x*o.z,z:i.x*o.y-i.y*o.x}}function nge(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)A=Math.min(A,g.x),e=Math.min(e,g.y),i=Math.min(i,g.z),o=Math.max(o,g.x),n=Math.max(n,g.y),s=Math.max(s,g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}async function Rqt(t){const A=await fetch(t);if(!A.ok)throw new Error(`Failed to fetch ${t}: ${A.statusText}`);return A.arrayBuffer()}function Nqt(t){const A=t.split(","),e=atob(A[1]),i=new ArrayBuffer(e.length),o=new Uint8Array(i);for(let n=0;n<e.length;n++)o[n]=e.charCodeAt(n);return i}async function Mqt(t){const A=await fetch(t);if(!A.ok)throw new Error(`Failed to fetch glTF file: ${A.statusText}`);const e=await A.json(),i=[];if(e.buffers){for(const Q of e.buffers)if(Q.uri)if(Q.uri.startsWith("data:"))i.push(Promise.resolve(Nqt(Q.uri)));else{const E=new URL(Q.uri,t).toString();i.push(Rqt(E))}}const o=await Promise.all(i);let n=new ArrayBuffer(0);o.length>0&&o[0]&&(n=o[0]),e.buffers&&e.buffers.length>0&&(delete e.buffers[0].uri,e.buffers[0].byteLength=n.byteLength);const s=JSON.stringify(e),r=new TextEncoder().encode(s),g=(4-r.length%4)%4,a=(4-n.byteLength%4)%4,I=12+(8+r.length+g)+(n.byteLength>0?8+n.byteLength+a:0),c=new ArrayBuffer(I),B=new DataView(c);let C=0;B.setUint32(C,1179937895,!0),C+=4,B.setUint32(C,2,!0),C+=4,B.setUint32(C,I,!0),C+=4,B.setUint32(C,r.length+g,!0),C+=4,B.setUint32(C,1313821514,!0),C+=4,new Uint8Array(c,C).set(r),C+=r.length;for(let Q=0;Q<g;Q++)B.setUint8(C++,32);if(n.byteLength>0){B.setUint32(C,n.byteLength+a,!0),C+=4,B.setUint32(C,5130562,!0),C+=4,new Uint8Array(c,C).set(new Uint8Array(n)),C+=n.byteLength;for(let Q=0;Q<a;Q++)B.setUint8(C++,0)}return c}async function vqt(t,A){const e=await Mqt(t);return ige(e,A)}async function sge(t,A){const{layer:e,resolution:i=1024,backgroundColor:o="transparent",copperColor:n="#ffe066",silkscreenColor:s="#ffffff",drillColor:r="rgba(0,0,0,0.5)"}=A,a=hqt(t,{layer:e,matchBoardAspectRatio:!0,backgroundColor:o,drawPaddingOutsideBoard:!1,colorOverrides:{soldermask:{top:"#4CAF50",bottom:"#4CAF50"},copper:{top:n,bottom:n},silkscreen:{top:s,bottom:s},drill:r}});return await Uqt(a,i,o)}async function Uqt(t,A,e){if(typeof window<"u"&&typeof document<"u")return rge(t,A,e);try{const{svgToPngDataUrl:i}=await Promise.resolve().then(()=>KOt);return await i(t,{width:A,background:e})}catch(i){return console.warn("Failed to load native svg-to-png, falling back to browser method:",i),rge(t,A,e)}}async function rge(t,A,e){return new Promise((i,o)=>{const n=document.createElement("canvas");n.width=A,n.height=A;const s=n.getContext("2d");s.fillStyle=e,s.fillRect(0,0,A,A);const r=`data:image/svg+xml;base64,${btoa(t)}`,g=new Image;g.onload=()=>{try{s.drawImage(g,0,0,A,A),i(n.toDataURL("image/png"))}catch(a){o(a)}},g.onerror=a=>{console.error("Failed to load SVG image:",a),o(a)},g.src=r})}async function Lqt(t,A=1024){console.log("Generating PCB texture...");const[e,i]=await Promise.all([sge(t,{layer:"top",resolution:A,backgroundColor:"#008C00"}),sge(t,{layer:"bottom",resolution:A,backgroundColor:"#006600"})]);return console.log("PCB texture generated:",{topLength:e.length,bottomLength:i.length}),{top:e,bottom:i}}var gge=64,Hqt=1e-4,Yqt=(t,A)=>[t.x-A.x,t.y-A.y],Jqt=t=>{let A=0;for(let i=0;i<t.length;i++){const o=(i+1)%t.length;A+=t[i][0]*t[o][1],A-=t[o][0]*t[i][1]}return A/2<=0},Bk=(t,A)=>{const e=t[A];return typeof e=="number"?e:void 0},Kqt=(t,A,e)=>{if(t.outline&&t.outline.length>=3){let n=t.outline.map(g=>Yqt(g,A));Jqt(n)&&(n=n.slice().reverse());const s=aW.polygon({points:n});let r=TdA.extrudeLinear({height:e},s);return r=gM.translate([0,0,-e/2],r),r}const i=aW.rectangle({size:[t.width,t.height]});let o=TdA.extrudeLinear({height:e},i);return o=gM.translate([0,0,-e/2],o),o},age=(t,A,e,i)=>aW.cylinder({center:[t,A,0],height:i+1,radius:e,segments:gge}),Tqt=(t,A,e,i,o,n)=>{const s=Math.min(e,i),r=Math.max(0,s/2-Hqt),g=r<=0?0:Math.min(i/2,r),a=aW.roundedRectangle({size:[e,i],roundRadius:g,segments:gge});let I=TdA.extrudeLinear({height:o+1},a);return I=gM.translate([0,0,-(o+1)/2],I),n&&(I=gM.rotateZ(Math.PI/2,I)),gM.translate([t,A,0],I)},qqt=(t,A,e=[],i=[])=>{const o=[];for(const n of e){const s=n,r=Bk(s,"hole_diameter")??Bk(s,"diameter");if(!r)continue;const g=r/2,a=n.x-t.x,I=-(n.y-t.y);o.push(age(a,I,g,A))}for(const n of i){const s=n.x-t.x,r=-(n.y-t.y),g=n;if(n.shape==="pill"||n.shape==="pill_hole_with_rect_pad"){const I=Bk(g,"hole_width")??Bk(g,"outer_diameter")??0,c=Bk(g,"hole_height")??Bk(g,"hole_diameter")??0;if(!I||!c)continue;const B=c>I,C=B?c:I,Q=B?I:c;o.push(Tqt(s,r,C,Q,A,B));continue}const a=Bk(g,"hole_diameter")??Bk(g,"outer_diameter");a&&o.push(age(s,r,a/2,A))}return o},Pqt=(t,A)=>{const e=A??Age.toPolygons(t),i=[];for(const o of e){if(!o||o.vertices.length<3)continue;const n=o.vertices[0],s=o.vertices[1],r=o.vertices[2],g=[s[0]-n[0],s[1]-n[1],s[2]-n[2]],a=[r[0]-n[0],r[1]-n[1],r[2]-n[2]],I=[g[1]*a[2]-g[2]*a[1],g[2]*a[0]-g[0]*a[2],g[0]*a[1]-g[1]*a[0]],c=Math.sqrt(I[0]**2+I[1]**2+I[2]**2)||1,B={x:I[0]/c,y:I[1]/c,z:I[2]/c};for(let C=1;C<o.vertices.length-1;C++){const Q=o.vertices[C],E=o.vertices[C+1],l={vertices:[{x:n[0],y:n[1],z:n[2]},{x:Q[0],y:Q[1],z:Q[2]},{x:E[0],y:E[1],z:E[2]}],normal:B};i.push(l)}}return i},Oqt=t=>{const[A,e]=t;return{min:{x:A[0],y:A[1],z:A[2]},max:{x:e[0],y:e[1],z:e[2]}}},Wqt=(t,A)=>{const{thickness:e,holes:i=[],platedHoles:o=[]}=A,n=t.center??{x:0,y:0};let s=Kqt(t,n,e);const r=qqt(n,e,i,o);r.length>0&&(s=pqt.subtract(s,...r)),s=gM.rotateX(-Math.PI/2,s);const g=Age.toPolygons(s),a=Pqt(s,g),I=yqt(s),c=Oqt(I);return{triangles:a,boundingBox:c}},Zqt=1.6,Vqt=2;function CW(t){return{x:t.x*Math.PI/180,y:t.y*Math.PI/180,z:t.z*Math.PI/180}}async function jqt(t,A={}){const{pcbColor:e="rgba(0,140,0,0.8)",componentColor:i="rgba(128,128,128,0.5)",boardThickness:o=Zqt,defaultComponentHeight:n=Vqt,renderBoardTextures:s=!0,textureResolution:r=1024,coordinateTransform:g}=A,a=iI(t),I=[],c=a.pcb_board?.list?.()[0],B=c?.thickness??o;if(c){const h=a.pcb_hole?.list?.()??[],u=a.pcb_plated_hole?.list?.()??[],p=Wqt(c,{thickness:B,holes:h,platedHoles:u}),y=p.boundingBox.max.x-p.boundingBox.min.x,b=p.boundingBox.max.z-p.boundingBox.min.z,S={center:{x:c.center.x,y:0,z:c.center.y},size:{x:Number.isFinite(y)?y:c.width,y:B,z:Number.isFinite(b)?b:c.height},mesh:p,color:e};if(s&&r>0)try{const k=await Lqt(t,r);S.texture={top:k.top,bottom:k.bottom}}catch(k){console.warn("Failed to render board textures:",k),S.color=e}else S.color=e;I.push(S)}const C=a.cad_component?.list?.()??[],Q=new Set;for(const h of C){let{model_stl_url:u,model_obj_url:p,model_glb_url:y,model_gltf_url:b}=h,S=!!(u||p||y||b);if(!S&&h.footprinter_string&&(y=`https://modelcdn.tscircuit.com/jscad_models/${h.footprinter_string}.glb`,S=!0),!S)continue;Q.add(h.pcb_component_id);const k=a.pcb_component.get(h.pcb_component_id),m=k?.layer==="bottom",_=h.size??{x:k?.width??2,y:n,z:k?.height??2},M={center:h.position?{x:h.position.x,y:m?-Math.abs(h.position.z):h.position.z,z:h.position.y}:{x:k?.center.x??0,y:m?-(B/2+_.y/2):B/2+_.y/2,z:k?.center.y??0},size:_,meshUrl:u||p||y||b,meshType:u?"stl":p?"obj":b?"gltf":"glb"};h.rotation?y||b?M.rotation=CW({x:m?h.rotation.x+180:h.rotation.x,y:h.rotation.z,z:h.rotation.y}):M.rotation=CW({x:m?h.rotation.x+180:h.rotation.x,y:h.rotation.y,z:h.rotation.z}):m&&(y||b?M.rotation=CW({x:180,y:0,z:0}):M.rotation=CW({x:180,y:0,z:0}));const T=g??(y||b?void 0:cW.Z_UP_TO_Y_UP_USB_FIX);u?M.mesh=await wqt(u,T):p?M.mesh=await bqt(p,T):y?M.mesh=await Fqt(y,T):b&&(M.mesh=await vqt(b,T)),M.mesh||(M.color=i),I.push(M)}for(const h of a.pcb_component.list()){if(Q.has(h.pcb_component_id))continue;const u=a.source_component.get(h.source_component_id),p=Math.min(Math.min(h.width,h.height),n),y=h.layer==="bottom";I.push({center:{x:h.center.x,y:y?-(B/2+p/2):B/2+p/2,z:h.center.y},size:{x:h.width,y:p,z:h.height},color:i,label:u?.name??"?",labelColor:"white"})}let E;if(c){const u=Math.sqrt(c.width*c.width+c.height*c.height)*1.5;E={position:{x:c.center.x+u*.5,y:u*.7,z:c.center.y+u*.5},target:{x:c.center.x,y:0,z:c.center.y},up:{x:0,y:1,z:0},fov:50,near:.1,far:u*4}}else if(I.length>0){let u=1/0,p=1/0,y=-1/0,b=-1/0;for(const M of I){const T=(M.size?.x??0)/2,P=(M.size?.z??0)/2;u=Math.min(u,M.center.x-T),y=Math.max(y,M.center.x+T),p=Math.min(p,M.center.z-P),b=Math.max(b,M.center.z+P)}const S=Math.max(y-u,1),k=Math.max(b-p,1),_=Math.sqrt(S*S+k*k)*1.5,G=(u+y)/2,U=(p+b)/2;E={position:{x:G+_*.5,y:_*.7,z:U+_*.5},target:{x:G,y:0,z:U},up:{x:0,y:1,z:0},fov:50,near:.1,far:_*4}}else E={position:{x:30,y:30,z:25},target:{x:0,y:0,z:0},up:{x:0,y:1,z:0},fov:50,near:.1,far:120};return{boxes:I,camera:E,lights:[{type:"ambient",color:"white",intensity:.5},{type:"directional",color:"white",intensity:.5,direction:{x:-1,y:-1,z:-1}}]}}function zqt(t){const{center:A,size:e}=t,i=e.x/2,o=e.y/2,n=e.z/2,s=[{x:-i,y:-o,z:-n},{x:i,y:-o,z:-n},{x:i,y:o,z:-n},{x:-i,y:o,z:-n},{x:-i,y:-o,z:n},{x:i,y:-o,z:n},{x:i,y:o,z:n},{x:-i,y:o,z:n}].map(g=>({x:g.x+A.x,y:g.y+A.y,z:g.z+A.z}));return[{vertices:[s[0],s[1],s[2]],normal:{x:0,y:0,z:-1}},{vertices:[s[0],s[2],s[3]],normal:{x:0,y:0,z:-1}},{vertices:[s[4],s[6],s[5]],normal:{x:0,y:0,z:1}},{vertices:[s[4],s[7],s[6]],normal:{x:0,y:0,z:1}},{vertices:[s[0],s[5],s[1]],normal:{x:0,y:-1,z:0}},{vertices:[s[0],s[4],s[5]],normal:{x:0,y:-1,z:0}},{vertices:[s[2],s[6],s[7]],normal:{x:0,y:1,z:0}},{vertices:[s[2],s[7],s[3]],normal:{x:0,y:1,z:0}},{vertices:[s[0],s[3],s[7]],normal:{x:-1,y:0,z:0}},{vertices:[s[0],s[7],s[4]],normal:{x:-1,y:0,z:0}},{vertices:[s[1],s[6],s[2]],normal:{x:1,y:0,z:0}},{vertices:[s[1],s[5],s[6]],normal:{x:1,y:0,z:0}}]}function Xqt(t,A){const e=[];for(const i of A){const o=t.add(new Up("",t.add(new OB("",i.vertices[0].x,i.vertices[0].y,i.vertices[0].z)))),n=t.add(new Up("",t.add(new OB("",i.vertices[1].x,i.vertices[1].y,i.vertices[1].z)))),s=t.add(new Up("",t.add(new OB("",i.vertices[2].x,i.vertices[2].y,i.vertices[2].z)))),r=o.resolve(t).pnt.resolve(t),g=n.resolve(t).pnt.resolve(t),a=(S,k)=>{const m=S.resolve(t).pnt.resolve(t),_=k.resolve(t).pnt.resolve(t),G=t.add(new hu("",_.x-m.x,_.y-m.y,_.z-m.z)),U=t.add(new oM("",G,1)),M=t.add(new iM("",S.resolve(t).pnt,U));return t.add(new RD("",S,k,M,!0))},I=a(o,n),c=a(n,s),B=a(s,o),C=t.add(new sw("",[t.add(new sh("",I,!0)),t.add(new sh("",c,!0)),t.add(new sh("",B,!0))])),Q=t.add(new hu("",i.normal.x,i.normal.y,i.normal.z)),E=g.x-r.x,l=g.y-r.y,h=g.z-r.z,u=t.add(new hu("",E,l,h)),p=t.add(new Tf("",o.resolve(t).pnt,Q,u)),y=t.add(new Ik("",p)),b=t.add(new sS("",[t.add(new rS("",C,!0))],y,!0));e.push(b)}return e}async function $qt(t){const{repo:A,circuitJson:e,boardThickness:i,includeExternalMeshes:o=!1,excludeCadComponentIds:n,excludePcbComponentIds:s,pcbComponentIdsWithStepUrl:r}=t,g=[];try{const a=e.filter(B=>!(B.type==="pcb_board"||B.type==="cad_component"&&B.cad_component_id&&n?.has(B.cad_component_id)||B.type==="pcb_component"&&B.pcb_component_id&&s?.has(B.pcb_component_id)||B.type==="cad_component"&&B.model_step_url||B.type==="cad_component"&&B.pcb_component_id&&r?.has(B.pcb_component_id))).map(B=>!o&&B.type==="cad_component"?{...B,model_3mf_url:void 0,model_obj_url:void 0,model_stl_url:void 0,model_glb_url:void 0,model_gltf_url:void 0}:B),I=await jqt(a,{boardThickness:i,renderBoardTextures:!1}),c=[];for(const B of I.boxes)if(B.mesh&&"triangles"in B.mesh)c.push(...B.mesh.triangles);else{const C=zqt(B);c.push(...C)}if(c.length>0){const B=c.map(l=>({vertices:l.vertices.map(h=>({x:h.x,y:h.z,z:h.y})),normal:{x:l.normal.x,y:l.normal.z,z:l.normal.y}})),C=Xqt(A,B),Q=A.add(new nM("",C)),E=A.add(new kF("Components",Q));g.push(E)}}catch(a){console.warn("Failed to generate component mesh:",a)}return g}var A4t=new Set(["APPLICATION_CONTEXT","APPLICATION_PROTOCOL_DEFINITION","PRODUCT","PRODUCT_CONTEXT","PRODUCT_DEFINITION","PRODUCT_DEFINITION_FORMATION","PRODUCT_DEFINITION_CONTEXT","PRODUCT_DEFINITION_SHAPE","SHAPE_DEFINITION_REPRESENTATION","ADVANCED_BREP_SHAPE_REPRESENTATION","MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION","PRESENTATION_STYLE_ASSIGNMENT","SURFACE_STYLE_USAGE","SURFACE_SIDE_STYLE","SURFACE_STYLE_FILL_AREA","FILL_AREA_STYLE","FILL_AREA_STYLE_COLOUR","COLOUR_RGB","STYLED_ITEM","CURVE_STYLE","DRAUGHTING_PRE_DEFINED_CURVE_FONT","PRODUCT_RELATED_PRODUCT_CATEGORY","NEXT_ASSEMBLY_USAGE_OCCURRENCE","CONTEXT_DEPENDENT_SHAPE_REPRESENTATION","ITEM_DEFINED_TRANSFORMATION"]);function Ige(t){return{x:t?.x??0,y:t?.y??0,z:t?.z??0}}function cge(t){const A=Math.PI/180;return{x:t.x*A,y:t.y*A,z:t.z*A}}function e4t(t,A,e){const i=ZdA(t,A);return[i[0]+e.x,i[1]+e.y,i[2]+e.z]}function t4t(t,A){return ZdA(t,A)}function ZdA(t,A){let[e,i,o]=t;if(A.x!==0){const n=Math.cos(A.x),s=Math.sin(A.x),r=i*n-o*s,g=i*s+o*n;i=r,o=g}if(A.y!==0){const n=Math.cos(A.y),s=Math.sin(A.y),r=e*n+o*s,g=-e*s+o*n;e=r,o=g}if(A.z!==0){const n=Math.cos(A.z),s=Math.sin(A.z),r=e*n-i*s,g=e*s+i*n;e=r,i=g}return[e,i,o]}async function i4t(t){if(!/^https?:\/\//i.test(t))throw new Error(`Only HTTP(S) URLs are supported. For local files, read the file content and pass it directly. Received: ${t}`);const A=globalThis.fetch;if(!A)throw new Error("fetch is not available in this environment");const e=await A(t);if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText}`);return await e.text()}async function o4t(t){const{repo:A,circuitJson:e,boardThickness:i,fsMap:o}=t,n=e.filter(I=>I?.type==="cad_component"&&typeof I.model_step_url=="string"),s=new Map;for(const I of e)I?.type==="pcb_component"&&I.pcb_component_id&&s.set(I.pcb_component_id,I);const r=[],g=new Set,a=new Set;for(const I of n){const c=I.cad_component_id??"",B=I.model_step_url;try{const C=o?.[B]??await i4t(B);if(!C.trim())throw new Error("STEP file is empty");const E=(I.pcb_component_id?s.get(I.pcb_component_id):void 0)?.layer?.toLowerCase(),l={translation:Ige(I.position),rotation:Ige(I.rotation)},h=n4t(A,C,l,{layer:E,boardThickness:i});if(h.length>0){c&&g.add(c);const u=I.pcb_component_id;u&&a.add(u)}r.push(...h)}catch(C){console.warn(`Failed to merge STEP model from ${B}:`,C)}}return{solids:r,handledComponentIds:g,handledPcbComponentIds:a}}function n4t(t,A,e,i){let n=hTt(A).entries().map(([g,a])=>[Number(g),a]).filter(([,g])=>!A4t.has(g.type));n=g4t(n),s4t(n,e,i),I4t(n,e);const s=c4t(t,n);C4t(n,s);for(const[g,a]of n){const I=s.get(g);I!==void 0&&t.set(bF(I),a)}const r=[];for(const[g,a]of n)if(a instanceof kF){const I=s.get(g);I!==void 0&&r.push(new NL(bF(I)))}return r}function s4t(t,A,e){if(!e)return;const i=[];for(const[,p]of t)p instanceof OB&&i.push([p.x,p.y,p.z]);if(!i.length)return;const o=cge(A.rotation);let n=1/0,s=1/0,r=1/0,g=-1/0,a=-1/0,I=-1/0;for(const p of i){const[y,b,S]=ZdA(p,o);y<n&&(n=y),b<s&&(s=b),S<r&&(r=S),y>g&&(g=y),b>a&&(a=b),S>I&&(I=S)}if(!Number.isFinite(n))return;const c={x:(n+g)/2,y:(s+a)/2,z:(r+I)/2},B=e.layer?.toLowerCase()==="bottom"?"bottom":"top",C=e.boardThickness??0,Q=A.translation.x,E=A.translation.y,l=A.translation.z,h=.001,u=r<-h&&I>h;if(A.translation.x=Q-c.x,A.translation.y=E-c.y,u&&(A.translation.z=l+C),!u&&C>0){const p=C/2,y=l-p;B==="bottom"?(A.translation.z=-I+y,A.rotation.x=r4t(A.rotation.x+180)):A.translation.z=C-r+y}else u||(A.translation.z=l-c.z)}function r4t(t){const A=t%360;return A<0?A+360:A}function g4t(t){let A=t.slice(),e=new Set(A.map(([o])=>o)),i=!0;for(;i;){i=!1;const o=new Set;for(const[n,s]of A){const r=a4t(s);for(const g of r)if(!e.has(g)){o.add(n);break}}o.size>0&&(i=!0,A=A.filter(([n])=>!o.has(n)),e=new Set(A.map(([n])=>n)))}return A}function a4t(t){const A=new Set;return VdA(t,A,new Set),A}function VdA(t,A,e){if(t){if(t instanceof NL){A.add(Number(t.id));return}if(t instanceof ck){for(const i of t.args)i.replace(/#(\d+)/g,(o,n)=>(A.add(Number(n)),o));return}if(Array.isArray(t)){for(const i of t)VdA(i,A,e);return}if(typeof t=="object"){if(e.has(t))return;e.add(t);for(const i of Object.values(t))VdA(i,A,e)}}}function I4t(t,A){const e=cge(A.rotation);for(const[,i]of t)if(i instanceof OB){const[o,n,s]=e4t([i.x,i.y,i.z],e,A.translation);i.x=o,i.y=n,i.z=s}else if(i instanceof hu){const[o,n,s]=t4t([i.dx,i.dy,i.dz],e),r=Math.hypot(o,n,s);r>0&&(i.dx=o/r,i.dy=n/r,i.dz=s/r)}}function c4t(t,A){let e=B4t(t);const i=new Map;for(const[o]of A)i.set(o,e),e+=1;return i}function B4t(t){let A=0;for(const[e]of t.entries()){const i=Number(e);i>A&&(A=i)}return A+1}function C4t(t,A){for(const[,e]of t)jdA(e,A,new Set)}function jdA(t,A,e){if(t){if(t instanceof NL){const i=A.get(Number(t.id));i!==void 0&&(t.id=bF(i));return}if(t instanceof ck){t.args=t.args.map(i=>i.replace(/#(\d+)/g,(o,n)=>{const s=A.get(Number(n));return s!==void 0?`#${s}`:o}));return}if(Array.isArray(t)){for(const i of t)jdA(i,A,e);return}if(typeof t=="object"){if(e.has(t))return;e.add(t);for(const i of Object.keys(t))jdA(t[i],A,e)}}}function Q4t(t){return t.replace(/(-?(?:\d+\.\d*|\.\d+|\d+))e([+-]?\d+)/g,(A,e,i)=>`${e}E${i}`)}async function l4t(t,A={}){const e=new Ore,i=t.find(fA=>fA.type==="pcb_board"),o=t.filter(fA=>fA.type==="pcb_hole"||fA.type==="pcb_plated_hole"),n=A.boardWidth??i?.width,s=A.boardHeight??i?.height,r=A.boardThickness??i?.thickness??1.6,g=A.productName??"PCB",a=i?.center?.x??0,I=i?.center?.y??0;if(!n||!s)throw new Error("Board dimensions not found. Either provide boardWidth and boardHeight in options, or include a pcb_board in the circuit JSON with width and height properties.");const c=e.add(new OL("core data for automotive mechanical design processes"));e.add(new WL("international standard","automotive_design",2010,c));const B=e.add(new VL("",c,"mechanical")),C=e.add(new ZL(g,g,"",[B])),Q=e.add(new zL("part definition",c,"design")),E=e.add(new XL("","",C)),l=e.add(new jL("","",E,Q)),h=e.add(new $L("","",l)),u=e.add(new ck("",["( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) )"])),p=e.add(new ck("",["( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) )"])),y=e.add(new ck("",["( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() )"])),b=e.add(new ck("UNCERTAINTY_MEASURE_WITH_UNIT",["LENGTH_MEASURE(1.E-07)",`${u}`,"'distance_accuracy_value'","'Maximum Tolerance'"])),S=e.add(new ck("",[`( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((${b})) GLOBAL_UNIT_ASSIGNED_CONTEXT((${u},${p},${y})) REPRESENTATION_CONTEXT('${g}','3D') )`])),k=i?.outline;let m,_;if(k&&Array.isArray(k)&&k.length>=3)m=k.map(fA=>e.add(new Up("",e.add(new OB("",fA.x,fA.y,0))))),_=k.map(fA=>e.add(new Up("",e.add(new OB("",fA.x,fA.y,r)))));else{const fA=n/2,mA=s/2,RA=[[a-fA,I-mA,0],[a+fA,I-mA,0],[a+fA,I+mA,0],[a-fA,I+mA,0],[a-fA,I-mA,r],[a+fA,I-mA,r],[a+fA,I+mA,r],[a-fA,I+mA,r]].map(([FA,KA,TA])=>e.add(new Up("",e.add(new OB("",FA,KA,TA)))));m=[RA[0],RA[1],RA[2],RA[3]],_=[RA[4],RA[5],RA[6],RA[7]]}function G(fA,mA){const lA=fA.resolve(e).pnt.resolve(e),RA=mA.resolve(e).pnt.resolve(e),FA=e.add(new hu("",RA.x-lA.x,RA.y-lA.y,RA.z-lA.z)),KA=e.add(new oM("",FA,1)),TA=e.add(new iM("",fA.resolve(e).pnt,KA));return e.add(new RD("",fA,mA,TA,!0))}const U=[],M=[],T=[];for(let fA=0;fA<m.length;fA++){const mA=m[fA],lA=m[(fA+1)%m.length];U.push(G(mA,lA))}for(let fA=0;fA<_.length;fA++){const mA=_[fA],lA=_[(fA+1)%_.length];M.push(G(mA,lA))}for(let fA=0;fA<m.length;fA++)T.push(G(m[fA],_[fA]));const P=e.add(new OB("",0,0,0)),q=e.add(new hu("",1,0,0)),W=e.add(new hu("",0,0,1)),V=e.add(new Tf("",P,e.add(new hu("",0,0,-1)),q)),AA=e.add(new Ik("",V)),oA=e.add(new sw("",U.map(fA=>e.add(new sh("",fA,!0))))),CA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,0)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,0)))),XA=e.add(new Tf("",KA,e.add(new hu("",0,0,-1)),q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new sw("",[e.add(new sh("",$A,!1))]));CA.push(e.add(new sM("",re,!0)))}const tA=e.add(new sS("",[e.add(new rS("",oA,!0)),...CA],AA,!0)),sA=e.add(new OB("",0,0,r)),BA=e.add(new Tf("",sA,W,q)),wA=e.add(new Ik("",BA)),GA=e.add(new sw("",M.map(fA=>e.add(new sh("",fA,!1))))),LA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,r)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,r)))),XA=e.add(new Tf("",KA,W,q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new sw("",[e.add(new sh("",$A,!0))]));LA.push(e.add(new sM("",re,!0)))}const YA=e.add(new sS("",[e.add(new rS("",GA,!0)),...LA],wA,!0)),vA=[];for(let fA=0;fA<U.length;fA++){const mA=(fA+1)%U.length,lA=m[fA].resolve(e).pnt,RA=m[mA].resolve(e).pnt,FA=lA.resolve(e),KA=RA.resolve(e),TA={x:KA.x-FA.x,y:KA.y-FA.y},XA=e.add(new hu("",TA.y,-TA.x,0)),Ae=e.add(new hu("",TA.x,TA.y,0)),$A=e.add(new Tf("",lA,XA,Ae)),re=e.add(new Ik("",$A)),ue=e.add(new sw("",[e.add(new sh("",U[fA],!0)),e.add(new sh("",T[mA],!0)),e.add(new sh("",M[fA],!1)),e.add(new sh("",T[fA],!1))])),Ge=e.add(new sS("",[e.add(new rS("",ue,!0))],re,!0));vA.push(Ge)}const QA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,0)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,0)))),XA=e.add(new Tf("",KA,e.add(new hu("",0,0,-1)),q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new OB("",lA,RA,r)),ue=e.add(new Up("",e.add(new OB("",lA+FA,RA,r)))),Ge=e.add(new Tf("",re,W,q)),Te=e.add(new ak("",Ge,FA)),et=e.add(new RD("",ue,ue,Te,!0)),Le=e.add(new sw("",[e.add(new sh("",$A,!0)),e.add(new sh("",et,!1))])),Bt=e.add(new Tf("",KA,W,q)),ct=e.add(new ML("",Bt,FA)),Ft=e.add(new sS("",[e.add(new rS("",Le,!0))],ct,!1));QA.push(Ft)}const bA=[tA,YA,...vA,...QA],SA=e.add(new nM("",bA)),oe=[e.add(new kF(g,SA))];let Ie=new Set,yA=new Set;if(A.includeComponents&&A.includeExternalMeshes){const fA=await o4t({repo:e,circuitJson:t,boardThickness:r,fsMap:A.fsMap});Ie=fA.handledComponentIds,yA=fA.handledPcbComponentIds,oe.push(...fA.solids)}if(A.includeComponents){const fA=new Set;for(const lA of t)lA.type==="cad_component"&&lA.model_step_url&&lA.pcb_component_id&&fA.add(lA.pcb_component_id);if(t.some(lA=>lA.type==="cad_component"?lA.cad_component_id&&Ie.has(lA.cad_component_id)||lA.pcb_component_id&&fA.has(lA.pcb_component_id)?!1:!lA.model_step_url:lA.type==="pcb_component"?!(lA.pcb_component_id&&yA.has(lA.pcb_component_id)||lA.pcb_component_id&&fA.has(lA.pcb_component_id)):!1)){const lA=await $qt({repo:e,circuitJson:t,boardThickness:r,includeExternalMeshes:A.includeExternalMeshes,excludeCadComponentIds:Ie,excludePcbComponentIds:yA,pcbComponentIdsWithStepUrl:fA});oe.push(...lA)}}const xA=[];oe.forEach((fA,mA)=>{const lA=mA===0,[RA,FA,KA]=lA?[.2,.6,.2]:[.75,.75,.75],TA=e.add(new vL("",RA,FA,KA)),XA=e.add(new LL("",TA)),Ae=e.add(new UL("",[XA])),$A=e.add(new TL(Ae)),re=e.add(new KL("",[$A])),ue=e.add(new qL(".BOTH.",re)),Ge=e.add(new YL([ue])),Te=e.add(new JL("",[Ge],fA));xA.push(Te)}),e.add(new HL("",xA,S));const cA=e.add(new PL(g,oe,S));e.add(new AH(h,cA));const IA=e.toPartFile({name:g});return Q4t(IA)}const E4t=async({circuitJson:t,projectName:A})=>{const e=t.find(g=>g.type==="pcb_board"),i=e&&"width"in e?e.width:void 0,o=e&&"height"in e?e.height:void 0,n=e&&"thickness"in e?e.thickness:void 0;if(i===void 0||o===void 0||n===void 0){Gs.error("Board dimensions not found. Please add a pcb_board with width, height, and thickness to your circuit.");return}let s;try{s=await l4t(t,{boardWidth:i,boardHeight:o,boardThickness:n,productName:A,includeComponents:!0,includeExternalMeshes:!0})}catch(g){const a=g instanceof Error?g.message:"Unknown error";Gs.error(`Failed to convert circuit to STEP format: ${a}`);return}const r=new Blob([s],{type:"application/step"});try{yF(r,{fileName:`${A}.step`})}catch(g){const a=g instanceof Error?g.message:"Unknown error";Gs.error(`Failed to download STEP file: ${a}`)}},Bge=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",h4t=Bge+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",u4t="["+Bge+"]["+h4t+"]*",d4t=new RegExp("^"+u4t+"$");function Cge(t,A){const e=[];let i=A.exec(t);for(;i;){const o=[];o.startIndex=A.lastIndex-i[0].length;const n=i.length;for(let s=0;s<n;s++)o.push(i[s]);e.push(o),i=A.exec(t)}return e}const QW=function(t){const A=d4t.exec(t);return!(A===null||typeof A>"u")};function p4t(t){return typeof t<"u"}const f4t={allowBooleanAttributes:!1,unpairedTags:[]};function y4t(t,A){A=Object.assign({},f4t,A);const e=[];let i=!1,o=!1;t[0]==="\uFEFF"&&(t=t.substr(1));for(let n=0;n<t.length;n++)if(t[n]==="<"&&t[n+1]==="?"){if(n+=2,n=lge(t,n),n.err)return n}else if(t[n]==="<"){let s=n;if(n++,t[n]==="!"){n=Ege(t,n);continue}else{let r=!1;t[n]==="/"&&(r=!0,n++);let g="";for(;n<t.length&&t[n]!==">"&&t[n]!==" "&&t[n]!==" "&&t[n]!==`
|
|
5986
|
+
`).map(g=>g.trim()),o=[];let n=0;for(;n<i.length;){const g=i[n];if(g&&g.startsWith("facet normal")){const a=g.match(/facet normal\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/),I=a?{x:parseFloat(a[1]),y:parseFloat(a[2]),z:parseFloat(a[3])}:{x:0,y:0,z:1};n++;const c=[];for(;n<i.length&&i[n]&&!i[n].startsWith("endfacet");){const B=i[n];if(B.startsWith("vertex")){const C=B.match(/vertex\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)\s+([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/);C&&c.push({x:parseFloat(C[1]),y:parseFloat(C[2]),z:parseFloat(C[3])})}n++}c.length===3&&o.push({vertices:[c[0],c[1],c[2]],normal:I})}n++}const s=A??cW.Z_UP_TO_Y_UP,r=IW(o,s);return{triangles:r,boundingBox:tge(r)}}function Sqt(t,A){let e=80;const i=t.getUint32(e,!0);e+=4;const o=[];for(let r=0;r<i;r++){const g={x:t.getFloat32(e,!0),y:t.getFloat32(e+4,!0),z:t.getFloat32(e+8,!0)};e+=12;const a=[{x:t.getFloat32(e,!0),y:t.getFloat32(e+4,!0),z:t.getFloat32(e+8,!0)},{x:t.getFloat32(e+12,!0),y:t.getFloat32(e+16,!0),z:t.getFloat32(e+20,!0)},{x:t.getFloat32(e+24,!0),y:t.getFloat32(e+28,!0),z:t.getFloat32(e+32,!0)}];e+=36,e+=2,o.push({vertices:a,normal:g})}const n=A??cW.Z_UP_TO_Y_UP,s=IW(o,n);return{triangles:s,boundingBox:tge(s)}}function tge(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)A=Math.min(A,g.x),e=Math.min(e,g.y),i=Math.min(i,g.z),o=Math.max(o,g.x),n=Math.max(n,g.y),s=Math.max(s,g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}var OdA=new Map;async function bqt(t,A){const e=`${t}:${JSON.stringify(A??{})}`;if(OdA.has(e))return OdA.get(e);const o=await(await fetch(t)).text(),n=kqt(o,A);return OdA.set(e,n),n}function kqt(t,A){const e=t.split(/\r?\n/),i=[],o=[],n=[],s=[],r=new Map;let g,a=0;const I=new Map;for(const C of e){const Q=C.trim();if(Q.startsWith("v ")){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];if(i.push({x:parseFloat(l),y:parseFloat(h),z:parseFloat(u)}),E.length>=7){const[p,y,b]=E.slice(4,7);let S=Number(p),k=Number(y),m=Number(b);S<=1&&k<=1&&m<=1&&(S*=255,k*=255,m*=255),o.push([S,k,m,1])}else o.push(void 0)}else if(Q.startsWith("vn ")){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];n.push({x:parseFloat(l),y:parseFloat(h),z:parseFloat(u)})}else if(Q.startsWith("newmtl ")){const E=Q.split(/\s+/)[1];r.set(E,{name:E}),I.set(E,a++),g=E}else if(Q.startsWith("Kd ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.color=[p,y,b,1]}else if(Q.startsWith("Ka ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.ambient=[p,y,b,1]}else if(Q.startsWith("Ks ")&&g){const E=Q.split(/\s+/),l=E[1],h=E[2],u=E[3];let p=parseFloat(l),y=parseFloat(h),b=parseFloat(u);p<=1&&y<=1&&b<=1&&(p*=255,y*=255,b*=255);const S=r.get(g);S.specular=[p,y,b,1]}else if(Q.startsWith("Ns ")&&g){const E=parseFloat(Q.split(/\s+/)[1]),l=r.get(g);l.shininess=E}else if(Q.startsWith("d ")&&g){const E=parseFloat(Q.split(/\s+/)[1]),l=r.get(g);l.dissolve=E}else if(Q==="endmtl")g=void 0;else if(Q.startsWith("usemtl "))g=Q.split(/\s+/)[1];else if(Q.startsWith("f ")){const l=Q.slice(2).trim().split(/\s+/).map(h=>{const[u,p,y]=h.split("/");return{v:parseInt(u)-1,n:y?parseInt(y)-1:void 0}});for(let h=1;h<l.length-1;h++){const u=l[0],p=l[h],y=l[h+1],b=i[u.v],S=i[p.v],k=i[y.v];let m;if(u.n!==void 0&&n[u.n])m=n[u.n];else if(p.n!==void 0&&n[p.n])m=n[p.n];else if(y.n!==void 0&&n[y.n])m=n[y.n];else{const U={x:S.x-b.x,y:S.y-b.y,z:S.z-b.z},M={x:k.x-b.x,y:k.y-b.y,z:k.z-b.z};m={x:U.y*M.z-U.z*M.y,y:U.z*M.x-U.x*M.z,z:U.x*M.y-U.y*M.x}}const _={vertices:[b,S,k],normal:m};g&&I.has(g)&&(_.materialIndex=I.get(g));const G=o[u.v]??o[p.v]??o[y.v];G&&(_.color=G),s.push(_)}}}const c=A??cW.IDENTITY,B=IW(s,c);return{triangles:B,boundingBox:Gqt(B),materials:r.size>0?r:void 0,materialIndexMap:r.size>0?I:void 0}}function Gqt(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)g.x<A&&(A=g.x),g.y<e&&(e=g.y),g.z<i&&(i=g.z),g.x>o&&(o=g.x),g.y>n&&(n=g.y),g.z>s&&(s=g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}var WdA=new Map;async function Fqt(t,A){const e=`${t}:${JSON.stringify(A??{})}`;if(WdA.has(e))return WdA.get(e);const o=await(await fetch(t)).arrayBuffer(),n=ige(o,A);return WdA.set(e,n),n}function ige(t,A){const e=new DataView(t);let i=0;const o=e.getUint32(i,!0);if(i+=4,o!==1179937895)throw new Error("Invalid GLB file: incorrect magic number");const n=e.getUint32(i,!0);if(i+=4,n!==2)throw new Error(`Unsupported GLB version: ${n}`);const s=e.getUint32(i,!0);i+=4;const r=e.getUint32(i,!0);i+=4;const g=e.getUint32(i,!0);if(i+=4,g!==1313821514)throw new Error("Expected JSON chunk");const a=new Uint8Array(t,i,r),I=new TextDecoder().decode(a),c=JSON.parse(I);i+=r;let B;if(i<s){const h=e.getUint32(i,!0);i+=4;const u=e.getUint32(i,!0);i+=4,u===5130562&&(B=t.slice(i,i+h))}const C=xqt(c,B),E=IW(C,A??{axisMapping:{x:"x",y:"z",z:"y"}});return E.some(h=>h.color!==void 0)?_qt(E):{triangles:E,boundingBox:nge(E)}}function _qt(t){const A=new Map;for(const s of t){const r=s.color?JSON.stringify(s.color):"default";A.has(r)||A.set(r,[]),A.get(r).push(s)}const e=new Map,i=new Map;let o=0;const n=[];for(const[s,r]of A){const g=`Material_${o}`;if(i.set(g,o),s==="default")e.set(g,{name:g,color:[179,179,179,1]});else{const a=JSON.parse(s);e.set(g,{name:g,color:a})}for(const a of r)n.push({...a,materialIndex:o});o++}return{triangles:n,boundingBox:nge(n),materials:e,materialIndexMap:i}}function xqt(t,A){const e=[];if(!t.meshes||!t.accessors||!t.bufferViews)return e;for(const i of t.meshes)for(const o of i.primitives){if((o.mode??4)!==4)continue;const s=o.attributes.POSITION;if(s===void 0)continue;const r=t.accessors[s],g=BW(r,t.bufferViews,A);let a;const I=o.attributes.NORMAL;if(I!==void 0){const l=t.accessors[I];a=BW(l,t.bufferViews,A)}let c;const B=o.attributes.COLOR_0;if(B!==void 0){const l=t.accessors[B];c=BW(l,t.bufferViews,A)}let C;if(!c&&o.material!==void 0&&t.materials){const l=t.materials[o.material];if(l?.pbrMetallicRoughness?.baseColorFactor){const h=l.pbrMetallicRoughness.baseColorFactor;C=[Math.round(h[0]*255),Math.round(h[1]*255),Math.round(h[2]*255),h[3]]}}let Q;if(o.indices!==void 0){const l=t.accessors[o.indices],h=BW(l,t.bufferViews,A);Q=l.componentType===5123?new Uint16Array(h.buffer,h.byteOffset,h.length):new Uint32Array(h.buffer,h.byteOffset,h.length)}const E=g.length/3;if(Q)for(let l=0;l<Q.length;l+=3){const h=Q[l],u=Q[l+1],p=Q[l+2],y={x:g[h*3],y:g[h*3+1],z:g[h*3+2]},b={x:g[u*3],y:g[u*3+1],z:g[u*3+2]},S={x:g[p*3],y:g[p*3+1],z:g[p*3+2]};let k;a?k={x:(a[h*3]+a[u*3]+a[p*3])/3,y:(a[h*3+1]+a[u*3+1]+a[p*3+1])/3,z:(a[h*3+2]+a[u*3+2]+a[p*3+2])/3}:k=oge(y,b,S);let m;if(c){const _=c.length/E;_===3?m=[Math.round((c[h*3]+c[u*3]+c[p*3])/3*255),Math.round((c[h*3+1]+c[u*3+1]+c[p*3+1])/3*255),Math.round((c[h*3+2]+c[u*3+2]+c[p*3+2])/3*255),1]:_===4&&(m=[Math.round((c[h*4]+c[u*4]+c[p*4])/3*255),Math.round((c[h*4+1]+c[u*4+1]+c[p*4+1])/3*255),Math.round((c[h*4+2]+c[u*4+2]+c[p*4+2])/3*255),(c[h*4+3]+c[u*4+3]+c[p*4+3])/3])}else m=C;e.push({vertices:[y,b,S],normal:k,color:m})}else for(let l=0;l<E;l+=3){const h={x:g[l*3],y:g[l*3+1],z:g[l*3+2]},u={x:g[(l+1)*3],y:g[(l+1)*3+1],z:g[(l+1)*3+2]},p={x:g[(l+2)*3],y:g[(l+2)*3+1],z:g[(l+2)*3+2]};let y;a?y={x:(a[l*3]+a[(l+1)*3]+a[(l+2)*3])/3,y:(a[l*3+1]+a[(l+1)*3+1]+a[(l+2)*3+1])/3,z:(a[l*3+2]+a[(l+1)*3+2]+a[(l+2)*3+2])/3}:y=oge(h,u,p);let b;if(c){const S=c.length/E;S===3?b=[Math.round((c[l*3]+c[(l+1)*3]+c[(l+2)*3])/3*255),Math.round((c[l*3+1]+c[(l+1)*3+1]+c[(l+2)*3+1])/3*255),Math.round((c[l*3+2]+c[(l+1)*3+2]+c[(l+2)*3+2])/3*255),1]:S===4&&(b=[Math.round((c[l*4]+c[(l+1)*4]+c[(l+2)*4])/3*255),Math.round((c[l*4+1]+c[(l+1)*4+1]+c[(l+2)*4+1])/3*255),Math.round((c[l*4+2]+c[(l+1)*4+2]+c[(l+2)*4+2])/3*255),(c[l*4+3]+c[(l+1)*4+3]+c[(l+2)*4+3])/3])}else b=C;e.push({vertices:[h,u,p],normal:y,color:b})}}return e}function BW(t,A,e){const i=A[t.bufferView];if(!i||!e)throw new Error("Missing buffer data");const o=(i.byteOffset??0)+(t.byteOffset??0),n=t.componentType,s=t.count,r=t.type,a=s*(r==="SCALAR"?1:r==="VEC2"?2:r==="VEC3"?3:r==="VEC4"?4:1);if(n===5126)return new Float32Array(e,o,a);if(n===5123){const I=new Uint16Array(e,o,a);return new Float32Array(I)}else if(n===5125){const I=new Uint32Array(e,o,a);return new Float32Array(I)}else if(n===5122){const I=new Int16Array(e,o,a);return new Float32Array(I)}else if(n===5124){const I=new Int32Array(e,o,a);return new Float32Array(I)}else if(n===5121){const I=new Uint8Array(e,o,a);return new Float32Array(I)}else if(n===5120){const I=new Int8Array(e,o,a);return new Float32Array(I)}throw new Error(`Unsupported component type: ${n}`)}function oge(t,A,e){const i={x:A.x-t.x,y:A.y-t.y,z:A.z-t.z},o={x:e.x-t.x,y:e.y-t.y,z:e.z-t.z};return{x:i.y*o.z-i.z*o.y,y:i.z*o.x-i.x*o.z,z:i.x*o.y-i.y*o.x}}function nge(t){if(t.length===0)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};let A=1/0,e=1/0,i=1/0,o=-1/0,n=-1/0,s=-1/0;for(const r of t)for(const g of r.vertices)A=Math.min(A,g.x),e=Math.min(e,g.y),i=Math.min(i,g.z),o=Math.max(o,g.x),n=Math.max(n,g.y),s=Math.max(s,g.z);return{min:{x:A,y:e,z:i},max:{x:o,y:n,z:s}}}async function Rqt(t){const A=await fetch(t);if(!A.ok)throw new Error(`Failed to fetch ${t}: ${A.statusText}`);return A.arrayBuffer()}function Nqt(t){const A=t.split(","),e=atob(A[1]),i=new ArrayBuffer(e.length),o=new Uint8Array(i);for(let n=0;n<e.length;n++)o[n]=e.charCodeAt(n);return i}async function Mqt(t){const A=await fetch(t);if(!A.ok)throw new Error(`Failed to fetch glTF file: ${A.statusText}`);const e=await A.json(),i=[];if(e.buffers){for(const Q of e.buffers)if(Q.uri)if(Q.uri.startsWith("data:"))i.push(Promise.resolve(Nqt(Q.uri)));else{const E=new URL(Q.uri,t).toString();i.push(Rqt(E))}}const o=await Promise.all(i);let n=new ArrayBuffer(0);o.length>0&&o[0]&&(n=o[0]),e.buffers&&e.buffers.length>0&&(delete e.buffers[0].uri,e.buffers[0].byteLength=n.byteLength);const s=JSON.stringify(e),r=new TextEncoder().encode(s),g=(4-r.length%4)%4,a=(4-n.byteLength%4)%4,I=12+(8+r.length+g)+(n.byteLength>0?8+n.byteLength+a:0),c=new ArrayBuffer(I),B=new DataView(c);let C=0;B.setUint32(C,1179937895,!0),C+=4,B.setUint32(C,2,!0),C+=4,B.setUint32(C,I,!0),C+=4,B.setUint32(C,r.length+g,!0),C+=4,B.setUint32(C,1313821514,!0),C+=4,new Uint8Array(c,C).set(r),C+=r.length;for(let Q=0;Q<g;Q++)B.setUint8(C++,32);if(n.byteLength>0){B.setUint32(C,n.byteLength+a,!0),C+=4,B.setUint32(C,5130562,!0),C+=4,new Uint8Array(c,C).set(new Uint8Array(n)),C+=n.byteLength;for(let Q=0;Q<a;Q++)B.setUint8(C++,0)}return c}async function vqt(t,A){const e=await Mqt(t);return ige(e,A)}async function sge(t,A){const{layer:e,resolution:i=1024,backgroundColor:o="transparent",copperColor:n="#ffe066",silkscreenColor:s="#ffffff",drillColor:r="rgba(0,0,0,0.5)"}=A,a=hqt(t,{layer:e,matchBoardAspectRatio:!0,backgroundColor:o,drawPaddingOutsideBoard:!1,colorOverrides:{soldermask:{top:"#4CAF50",bottom:"#4CAF50"},copper:{top:n,bottom:n},silkscreen:{top:s,bottom:s},drill:r}});return await Uqt(a,i,o)}async function Uqt(t,A,e){if(typeof window<"u"&&typeof document<"u")return rge(t,A,e);try{const{svgToPngDataUrl:i}=await Promise.resolve().then(()=>KOt);return await i(t,{width:A,background:e})}catch(i){return console.warn("Failed to load native svg-to-png, falling back to browser method:",i),rge(t,A,e)}}async function rge(t,A,e){return new Promise((i,o)=>{const n=document.createElement("canvas");n.width=A,n.height=A;const s=n.getContext("2d");s.fillStyle=e,s.fillRect(0,0,A,A);const r=`data:image/svg+xml;base64,${btoa(t)}`,g=new Image;g.onload=()=>{try{s.drawImage(g,0,0,A,A),i(n.toDataURL("image/png"))}catch(a){o(a)}},g.onerror=a=>{console.error("Failed to load SVG image:",a),o(a)},g.src=r})}async function Lqt(t,A=1024){console.log("Generating PCB texture...");const[e,i]=await Promise.all([sge(t,{layer:"top",resolution:A,backgroundColor:"#008C00"}),sge(t,{layer:"bottom",resolution:A,backgroundColor:"#006600"})]);return console.log("PCB texture generated:",{topLength:e.length,bottomLength:i.length}),{top:e,bottom:i}}var gge=64,Hqt=1e-4,Yqt=(t,A)=>[t.x-A.x,t.y-A.y],Jqt=t=>{let A=0;for(let i=0;i<t.length;i++){const o=(i+1)%t.length;A+=t[i][0]*t[o][1],A-=t[o][0]*t[i][1]}return A/2<=0},Bk=(t,A)=>{const e=t[A];return typeof e=="number"?e:void 0},Kqt=(t,A,e)=>{if(t.outline&&t.outline.length>=3){let n=t.outline.map(g=>Yqt(g,A));Jqt(n)&&(n=n.slice().reverse());const s=aW.polygon({points:n});let r=TdA.extrudeLinear({height:e},s);return r=gM.translate([0,0,-e/2],r),r}const i=aW.rectangle({size:[t.width,t.height]});let o=TdA.extrudeLinear({height:e},i);return o=gM.translate([0,0,-e/2],o),o},age=(t,A,e,i)=>aW.cylinder({center:[t,A,0],height:i+1,radius:e,segments:gge}),Tqt=(t,A,e,i,o,n)=>{const s=Math.min(e,i),r=Math.max(0,s/2-Hqt),g=r<=0?0:Math.min(i/2,r),a=aW.roundedRectangle({size:[e,i],roundRadius:g,segments:gge});let I=TdA.extrudeLinear({height:o+1},a);return I=gM.translate([0,0,-(o+1)/2],I),n&&(I=gM.rotateZ(Math.PI/2,I)),gM.translate([t,A,0],I)},qqt=(t,A,e=[],i=[])=>{const o=[];for(const n of e){const s=n,r=Bk(s,"hole_diameter")??Bk(s,"diameter");if(!r)continue;const g=r/2,a=n.x-t.x,I=-(n.y-t.y);o.push(age(a,I,g,A))}for(const n of i){const s=n.x-t.x,r=-(n.y-t.y),g=n;if(n.shape==="pill"||n.shape==="pill_hole_with_rect_pad"){const I=Bk(g,"hole_width")??Bk(g,"outer_diameter")??0,c=Bk(g,"hole_height")??Bk(g,"hole_diameter")??0;if(!I||!c)continue;const B=c>I,C=B?c:I,Q=B?I:c;o.push(Tqt(s,r,C,Q,A,B));continue}const a=Bk(g,"hole_diameter")??Bk(g,"outer_diameter");a&&o.push(age(s,r,a/2,A))}return o},Pqt=(t,A)=>{const e=A??Age.toPolygons(t),i=[];for(const o of e){if(!o||o.vertices.length<3)continue;const n=o.vertices[0],s=o.vertices[1],r=o.vertices[2],g=[s[0]-n[0],s[1]-n[1],s[2]-n[2]],a=[r[0]-n[0],r[1]-n[1],r[2]-n[2]],I=[g[1]*a[2]-g[2]*a[1],g[2]*a[0]-g[0]*a[2],g[0]*a[1]-g[1]*a[0]],c=Math.sqrt(I[0]**2+I[1]**2+I[2]**2)||1,B={x:I[0]/c,y:I[1]/c,z:I[2]/c};for(let C=1;C<o.vertices.length-1;C++){const Q=o.vertices[C],E=o.vertices[C+1],l={vertices:[{x:n[0],y:n[1],z:n[2]},{x:Q[0],y:Q[1],z:Q[2]},{x:E[0],y:E[1],z:E[2]}],normal:B};i.push(l)}}return i},Oqt=t=>{const[A,e]=t;return{min:{x:A[0],y:A[1],z:A[2]},max:{x:e[0],y:e[1],z:e[2]}}},Wqt=(t,A)=>{const{thickness:e,holes:i=[],platedHoles:o=[]}=A,n=t.center??{x:0,y:0};let s=Kqt(t,n,e);const r=qqt(n,e,i,o);r.length>0&&(s=pqt.subtract(s,...r)),s=gM.rotateX(-Math.PI/2,s);const g=Age.toPolygons(s),a=Pqt(s,g),I=yqt(s),c=Oqt(I);return{triangles:a,boundingBox:c}},Zqt=1.6,Vqt=2;function CW(t){return{x:t.x*Math.PI/180,y:t.y*Math.PI/180,z:t.z*Math.PI/180}}async function jqt(t,A={}){const{pcbColor:e="rgba(0,140,0,0.8)",componentColor:i="rgba(128,128,128,0.5)",boardThickness:o=Zqt,defaultComponentHeight:n=Vqt,renderBoardTextures:s=!0,textureResolution:r=1024,coordinateTransform:g}=A,a=iI(t),I=[],c=a.pcb_board?.list?.()[0],B=c?.thickness??o;if(c){const h=a.pcb_hole?.list?.()??[],u=a.pcb_plated_hole?.list?.()??[],p=Wqt(c,{thickness:B,holes:h,platedHoles:u}),y=p.boundingBox.max.x-p.boundingBox.min.x,b=p.boundingBox.max.z-p.boundingBox.min.z,S={center:{x:c.center.x,y:0,z:c.center.y},size:{x:Number.isFinite(y)?y:c.width,y:B,z:Number.isFinite(b)?b:c.height},mesh:p,color:e};if(s&&r>0)try{const k=await Lqt(t,r);S.texture={top:k.top,bottom:k.bottom}}catch(k){console.warn("Failed to render board textures:",k),S.color=e}else S.color=e;I.push(S)}const C=a.cad_component?.list?.()??[],Q=new Set;for(const h of C){let{model_stl_url:u,model_obj_url:p,model_glb_url:y,model_gltf_url:b}=h,S=!!(u||p||y||b);if(!S&&h.footprinter_string&&(y=`https://modelcdn.tscircuit.com/jscad_models/${h.footprinter_string}.glb`,S=!0),!S)continue;Q.add(h.pcb_component_id);const k=a.pcb_component.get(h.pcb_component_id),m=k?.layer==="bottom",_=h.size??{x:k?.width??2,y:n,z:k?.height??2},M={center:h.position?{x:h.position.x,y:m?-Math.abs(h.position.z):h.position.z,z:h.position.y}:{x:k?.center.x??0,y:m?-(B/2+_.y/2):B/2+_.y/2,z:k?.center.y??0},size:_,meshUrl:u||p||y||b,meshType:u?"stl":p?"obj":b?"gltf":"glb"};h.rotation?y||b?M.rotation=CW({x:m?h.rotation.x+180:h.rotation.x,y:h.rotation.z,z:h.rotation.y}):M.rotation=CW({x:m?h.rotation.x+180:h.rotation.x,y:h.rotation.y,z:h.rotation.z}):m&&(y||b?M.rotation=CW({x:180,y:0,z:0}):M.rotation=CW({x:180,y:0,z:0}));const T=g??(y||b?void 0:cW.Z_UP_TO_Y_UP_USB_FIX);u?M.mesh=await wqt(u,T):p?M.mesh=await bqt(p,T):y?M.mesh=await Fqt(y,T):b&&(M.mesh=await vqt(b,T)),M.mesh||(M.color=i),I.push(M)}for(const h of a.pcb_component.list()){if(Q.has(h.pcb_component_id))continue;const u=a.source_component.get(h.source_component_id),p=Math.min(Math.min(h.width,h.height),n),y=h.layer==="bottom";I.push({center:{x:h.center.x,y:y?-(B/2+p/2):B/2+p/2,z:h.center.y},size:{x:h.width,y:p,z:h.height},color:i,label:u?.name??"?",labelColor:"white"})}let E;if(c){const u=Math.sqrt(c.width*c.width+c.height*c.height)*1.5;E={position:{x:c.center.x+u*.5,y:u*.7,z:c.center.y+u*.5},target:{x:c.center.x,y:0,z:c.center.y},up:{x:0,y:1,z:0},fov:50,near:.1,far:u*4}}else if(I.length>0){let u=1/0,p=1/0,y=-1/0,b=-1/0;for(const M of I){const T=(M.size?.x??0)/2,P=(M.size?.z??0)/2;u=Math.min(u,M.center.x-T),y=Math.max(y,M.center.x+T),p=Math.min(p,M.center.z-P),b=Math.max(b,M.center.z+P)}const S=Math.max(y-u,1),k=Math.max(b-p,1),_=Math.sqrt(S*S+k*k)*1.5,G=(u+y)/2,U=(p+b)/2;E={position:{x:G+_*.5,y:_*.7,z:U+_*.5},target:{x:G,y:0,z:U},up:{x:0,y:1,z:0},fov:50,near:.1,far:_*4}}else E={position:{x:30,y:30,z:25},target:{x:0,y:0,z:0},up:{x:0,y:1,z:0},fov:50,near:.1,far:120};return{boxes:I,camera:E,lights:[{type:"ambient",color:"white",intensity:.5},{type:"directional",color:"white",intensity:.5,direction:{x:-1,y:-1,z:-1}}]}}function zqt(t){const{center:A,size:e}=t,i=e.x/2,o=e.y/2,n=e.z/2,s=[{x:-i,y:-o,z:-n},{x:i,y:-o,z:-n},{x:i,y:o,z:-n},{x:-i,y:o,z:-n},{x:-i,y:-o,z:n},{x:i,y:-o,z:n},{x:i,y:o,z:n},{x:-i,y:o,z:n}].map(g=>({x:g.x+A.x,y:g.y+A.y,z:g.z+A.z}));return[{vertices:[s[0],s[1],s[2]],normal:{x:0,y:0,z:-1}},{vertices:[s[0],s[2],s[3]],normal:{x:0,y:0,z:-1}},{vertices:[s[4],s[6],s[5]],normal:{x:0,y:0,z:1}},{vertices:[s[4],s[7],s[6]],normal:{x:0,y:0,z:1}},{vertices:[s[0],s[5],s[1]],normal:{x:0,y:-1,z:0}},{vertices:[s[0],s[4],s[5]],normal:{x:0,y:-1,z:0}},{vertices:[s[2],s[6],s[7]],normal:{x:0,y:1,z:0}},{vertices:[s[2],s[7],s[3]],normal:{x:0,y:1,z:0}},{vertices:[s[0],s[3],s[7]],normal:{x:-1,y:0,z:0}},{vertices:[s[0],s[7],s[4]],normal:{x:-1,y:0,z:0}},{vertices:[s[1],s[6],s[2]],normal:{x:1,y:0,z:0}},{vertices:[s[1],s[5],s[6]],normal:{x:1,y:0,z:0}}]}function Xqt(t,A){const e=[];for(const i of A){const o=t.add(new Up("",t.add(new OB("",i.vertices[0].x,i.vertices[0].y,i.vertices[0].z)))),n=t.add(new Up("",t.add(new OB("",i.vertices[1].x,i.vertices[1].y,i.vertices[1].z)))),s=t.add(new Up("",t.add(new OB("",i.vertices[2].x,i.vertices[2].y,i.vertices[2].z)))),r=o.resolve(t).pnt.resolve(t),g=n.resolve(t).pnt.resolve(t),a=(S,k)=>{const m=S.resolve(t).pnt.resolve(t),_=k.resolve(t).pnt.resolve(t),G=t.add(new hu("",_.x-m.x,_.y-m.y,_.z-m.z)),U=t.add(new oM("",G,1)),M=t.add(new iM("",S.resolve(t).pnt,U));return t.add(new RD("",S,k,M,!0))},I=a(o,n),c=a(n,s),B=a(s,o),C=t.add(new sw("",[t.add(new sh("",I,!0)),t.add(new sh("",c,!0)),t.add(new sh("",B,!0))])),Q=t.add(new hu("",i.normal.x,i.normal.y,i.normal.z)),E=g.x-r.x,l=g.y-r.y,h=g.z-r.z,u=t.add(new hu("",E,l,h)),p=t.add(new Tf("",o.resolve(t).pnt,Q,u)),y=t.add(new Ik("",p)),b=t.add(new sS("",[t.add(new rS("",C,!0))],y,!0));e.push(b)}return e}async function $qt(t){const{repo:A,circuitJson:e,boardThickness:i,includeExternalMeshes:o=!1,excludeCadComponentIds:n,excludePcbComponentIds:s,pcbComponentIdsWithStepUrl:r}=t,g=[];try{const a=e.filter(B=>!(B.type==="pcb_board"||B.type==="cad_component"&&B.cad_component_id&&n?.has(B.cad_component_id)||B.type==="pcb_component"&&B.pcb_component_id&&s?.has(B.pcb_component_id)||B.type==="cad_component"&&B.model_step_url||B.type==="cad_component"&&B.pcb_component_id&&r?.has(B.pcb_component_id))).map(B=>!o&&B.type==="cad_component"?{...B,model_3mf_url:void 0,model_obj_url:void 0,model_stl_url:void 0,model_glb_url:void 0,model_gltf_url:void 0}:B),I=await jqt(a,{boardThickness:i,renderBoardTextures:!1}),c=[];for(const B of I.boxes)if(B.mesh&&"triangles"in B.mesh)c.push(...B.mesh.triangles);else{const C=zqt(B);c.push(...C)}if(c.length>0){const B=c.map(l=>({vertices:l.vertices.map(h=>({x:h.x,y:h.z,z:h.y})),normal:{x:l.normal.x,y:l.normal.z,z:l.normal.y}})),C=Xqt(A,B),Q=A.add(new nM("",C)),E=A.add(new kF("Components",Q));g.push(E)}}catch(a){console.warn("Failed to generate component mesh:",a)}return g}var A4t=new Set(["APPLICATION_CONTEXT","APPLICATION_PROTOCOL_DEFINITION","PRODUCT","PRODUCT_CONTEXT","PRODUCT_DEFINITION","PRODUCT_DEFINITION_FORMATION","PRODUCT_DEFINITION_CONTEXT","PRODUCT_DEFINITION_SHAPE","SHAPE_DEFINITION_REPRESENTATION","ADVANCED_BREP_SHAPE_REPRESENTATION","MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION","PRESENTATION_STYLE_ASSIGNMENT","SURFACE_STYLE_USAGE","SURFACE_SIDE_STYLE","SURFACE_STYLE_FILL_AREA","FILL_AREA_STYLE","FILL_AREA_STYLE_COLOUR","COLOUR_RGB","STYLED_ITEM","CURVE_STYLE","DRAUGHTING_PRE_DEFINED_CURVE_FONT","PRODUCT_RELATED_PRODUCT_CATEGORY","NEXT_ASSEMBLY_USAGE_OCCURRENCE","CONTEXT_DEPENDENT_SHAPE_REPRESENTATION","ITEM_DEFINED_TRANSFORMATION"]);function Ige(t){return{x:t?.x??0,y:t?.y??0,z:t?.z??0}}function cge(t){const A=Math.PI/180;return{x:t.x*A,y:t.y*A,z:t.z*A}}function e4t(t,A,e){const i=ZdA(t,A);return[i[0]+e.x,i[1]+e.y,i[2]+e.z]}function t4t(t,A){return ZdA(t,A)}function ZdA(t,A){let[e,i,o]=t;if(A.x!==0){const n=Math.cos(A.x),s=Math.sin(A.x),r=i*n-o*s,g=i*s+o*n;i=r,o=g}if(A.y!==0){const n=Math.cos(A.y),s=Math.sin(A.y),r=e*n+o*s,g=-e*s+o*n;e=r,o=g}if(A.z!==0){const n=Math.cos(A.z),s=Math.sin(A.z),r=e*n-i*s,g=e*s+i*n;e=r,i=g}return[e,i,o]}async function i4t(t){if(!/^https?:\/\//i.test(t))throw new Error(`Only HTTP(S) URLs are supported. For local files, read the file content and pass it directly. Received: ${t}`);const A=globalThis.fetch;if(!A)throw new Error("fetch is not available in this environment");const e=await A(t);if(!e.ok)throw new Error(`HTTP ${e.status} ${e.statusText}`);return await e.text()}async function o4t(t){const{repo:A,circuitJson:e,boardThickness:i,fsMap:o}=t,n=e.filter(I=>I?.type==="cad_component"&&typeof I.model_step_url=="string"),s=new Map;for(const I of e)I?.type==="pcb_component"&&I.pcb_component_id&&s.set(I.pcb_component_id,I);const r=[],g=new Set,a=new Set;for(const I of n){const c=I.cad_component_id??"",B=I.model_step_url;try{const C=o?.[B]??await i4t(B);if(!C.trim())throw new Error("STEP file is empty");const E=(I.pcb_component_id?s.get(I.pcb_component_id):void 0)?.layer?.toLowerCase(),l={translation:Ige(I.position),rotation:Ige(I.rotation)},h=n4t(A,C,l,{layer:E,boardThickness:i});if(h.length>0){c&&g.add(c);const u=I.pcb_component_id;u&&a.add(u)}r.push(...h)}catch(C){console.warn(`Failed to merge STEP model from ${B}:`,C)}}return{solids:r,handledComponentIds:g,handledPcbComponentIds:a}}function n4t(t,A,e,i){let n=hTt(A).entries().map(([g,a])=>[Number(g),a]).filter(([,g])=>!A4t.has(g.type));n=g4t(n),s4t(n,e,i),I4t(n,e);const s=c4t(t,n);C4t(n,s);for(const[g,a]of n){const I=s.get(g);I!==void 0&&t.set(bF(I),a)}const r=[];for(const[g,a]of n)if(a instanceof kF){const I=s.get(g);I!==void 0&&r.push(new NL(bF(I)))}return r}function s4t(t,A,e){if(!e)return;const i=[];for(const[,p]of t)p instanceof OB&&i.push([p.x,p.y,p.z]);if(!i.length)return;const o=cge(A.rotation);let n=1/0,s=1/0,r=1/0,g=-1/0,a=-1/0,I=-1/0;for(const p of i){const[y,b,S]=ZdA(p,o);y<n&&(n=y),b<s&&(s=b),S<r&&(r=S),y>g&&(g=y),b>a&&(a=b),S>I&&(I=S)}if(!Number.isFinite(n))return;const c={x:(n+g)/2,y:(s+a)/2,z:(r+I)/2},B=e.layer?.toLowerCase()==="bottom"?"bottom":"top",C=e.boardThickness??0,Q=A.translation.x,E=A.translation.y,l=A.translation.z,h=.001,u=r<-h&&I>h;if(A.translation.x=Q-c.x,A.translation.y=E-c.y,u&&(A.translation.z=C),!u&&C>0){const p=C/2,y=l-p;B==="bottom"?(A.translation.z=-I+y,A.rotation.x=r4t(A.rotation.x+180)):A.translation.z=C-r+y}else u||(A.translation.z=l-c.z)}function r4t(t){const A=t%360;return A<0?A+360:A}function g4t(t){let A=t.slice(),e=new Set(A.map(([o])=>o)),i=!0;for(;i;){i=!1;const o=new Set;for(const[n,s]of A){const r=a4t(s);for(const g of r)if(!e.has(g)){o.add(n);break}}o.size>0&&(i=!0,A=A.filter(([n])=>!o.has(n)),e=new Set(A.map(([n])=>n)))}return A}function a4t(t){const A=new Set;return VdA(t,A,new Set),A}function VdA(t,A,e){if(t){if(t instanceof NL){A.add(Number(t.id));return}if(t instanceof ck){for(const i of t.args)i.replace(/#(\d+)/g,(o,n)=>(A.add(Number(n)),o));return}if(Array.isArray(t)){for(const i of t)VdA(i,A,e);return}if(typeof t=="object"){if(e.has(t))return;e.add(t);for(const i of Object.values(t))VdA(i,A,e)}}}function I4t(t,A){const e=cge(A.rotation);for(const[,i]of t)if(i instanceof OB){const[o,n,s]=e4t([i.x,i.y,i.z],e,A.translation);i.x=o,i.y=n,i.z=s}else if(i instanceof hu){const[o,n,s]=t4t([i.dx,i.dy,i.dz],e),r=Math.hypot(o,n,s);r>0&&(i.dx=o/r,i.dy=n/r,i.dz=s/r)}}function c4t(t,A){let e=B4t(t);const i=new Map;for(const[o]of A)i.set(o,e),e+=1;return i}function B4t(t){let A=0;for(const[e]of t.entries()){const i=Number(e);i>A&&(A=i)}return A+1}function C4t(t,A){for(const[,e]of t)jdA(e,A,new Set)}function jdA(t,A,e){if(t){if(t instanceof NL){const i=A.get(Number(t.id));i!==void 0&&(t.id=bF(i));return}if(t instanceof ck){t.args=t.args.map(i=>i.replace(/#(\d+)/g,(o,n)=>{const s=A.get(Number(n));return s!==void 0?`#${s}`:o}));return}if(Array.isArray(t)){for(const i of t)jdA(i,A,e);return}if(typeof t=="object"){if(e.has(t))return;e.add(t);for(const i of Object.keys(t))jdA(t[i],A,e)}}}function Q4t(t){return t.replace(/(-?(?:\d+\.\d*|\.\d+|\d+))e([+-]?\d+)/g,(A,e,i)=>`${e}E${i}`)}async function l4t(t,A={}){const e=new Ore,i=t.find(fA=>fA.type==="pcb_board"),o=t.filter(fA=>fA.type==="pcb_hole"||fA.type==="pcb_plated_hole"),n=A.boardWidth??i?.width,s=A.boardHeight??i?.height,r=A.boardThickness??i?.thickness??1.6,g=A.productName??"PCB",a=i?.center?.x??0,I=i?.center?.y??0;if(!n||!s)throw new Error("Board dimensions not found. Either provide boardWidth and boardHeight in options, or include a pcb_board in the circuit JSON with width and height properties.");const c=e.add(new OL("core data for automotive mechanical design processes"));e.add(new WL("international standard","automotive_design",2010,c));const B=e.add(new VL("",c,"mechanical")),C=e.add(new ZL(g,g,"",[B])),Q=e.add(new zL("part definition",c,"design")),E=e.add(new XL("","",C)),l=e.add(new jL("","",E,Q)),h=e.add(new $L("","",l)),u=e.add(new ck("",["( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) )"])),p=e.add(new ck("",["( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) )"])),y=e.add(new ck("",["( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() )"])),b=e.add(new ck("UNCERTAINTY_MEASURE_WITH_UNIT",["LENGTH_MEASURE(1.E-07)",`${u}`,"'distance_accuracy_value'","'Maximum Tolerance'"])),S=e.add(new ck("",[`( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((${b})) GLOBAL_UNIT_ASSIGNED_CONTEXT((${u},${p},${y})) REPRESENTATION_CONTEXT('${g}','3D') )`])),k=i?.outline;let m,_;if(k&&Array.isArray(k)&&k.length>=3)m=k.map(fA=>e.add(new Up("",e.add(new OB("",fA.x,fA.y,0))))),_=k.map(fA=>e.add(new Up("",e.add(new OB("",fA.x,fA.y,r)))));else{const fA=n/2,mA=s/2,RA=[[a-fA,I-mA,0],[a+fA,I-mA,0],[a+fA,I+mA,0],[a-fA,I+mA,0],[a-fA,I-mA,r],[a+fA,I-mA,r],[a+fA,I+mA,r],[a-fA,I+mA,r]].map(([FA,KA,TA])=>e.add(new Up("",e.add(new OB("",FA,KA,TA)))));m=[RA[0],RA[1],RA[2],RA[3]],_=[RA[4],RA[5],RA[6],RA[7]]}function G(fA,mA){const lA=fA.resolve(e).pnt.resolve(e),RA=mA.resolve(e).pnt.resolve(e),FA=e.add(new hu("",RA.x-lA.x,RA.y-lA.y,RA.z-lA.z)),KA=e.add(new oM("",FA,1)),TA=e.add(new iM("",fA.resolve(e).pnt,KA));return e.add(new RD("",fA,mA,TA,!0))}const U=[],M=[],T=[];for(let fA=0;fA<m.length;fA++){const mA=m[fA],lA=m[(fA+1)%m.length];U.push(G(mA,lA))}for(let fA=0;fA<_.length;fA++){const mA=_[fA],lA=_[(fA+1)%_.length];M.push(G(mA,lA))}for(let fA=0;fA<m.length;fA++)T.push(G(m[fA],_[fA]));const P=e.add(new OB("",0,0,0)),q=e.add(new hu("",1,0,0)),W=e.add(new hu("",0,0,1)),V=e.add(new Tf("",P,e.add(new hu("",0,0,-1)),q)),AA=e.add(new Ik("",V)),oA=e.add(new sw("",U.map(fA=>e.add(new sh("",fA,!0))))),CA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,0)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,0)))),XA=e.add(new Tf("",KA,e.add(new hu("",0,0,-1)),q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new sw("",[e.add(new sh("",$A,!1))]));CA.push(e.add(new sM("",re,!0)))}const tA=e.add(new sS("",[e.add(new rS("",oA,!0)),...CA],AA,!0)),sA=e.add(new OB("",0,0,r)),BA=e.add(new Tf("",sA,W,q)),wA=e.add(new Ik("",BA)),GA=e.add(new sw("",M.map(fA=>e.add(new sh("",fA,!1))))),LA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,r)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,r)))),XA=e.add(new Tf("",KA,W,q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new sw("",[e.add(new sh("",$A,!0))]));LA.push(e.add(new sM("",re,!0)))}const YA=e.add(new sS("",[e.add(new rS("",GA,!0)),...LA],wA,!0)),vA=[];for(let fA=0;fA<U.length;fA++){const mA=(fA+1)%U.length,lA=m[fA].resolve(e).pnt,RA=m[mA].resolve(e).pnt,FA=lA.resolve(e),KA=RA.resolve(e),TA={x:KA.x-FA.x,y:KA.y-FA.y},XA=e.add(new hu("",TA.y,-TA.x,0)),Ae=e.add(new hu("",TA.x,TA.y,0)),$A=e.add(new Tf("",lA,XA,Ae)),re=e.add(new Ik("",$A)),ue=e.add(new sw("",[e.add(new sh("",U[fA],!0)),e.add(new sh("",T[mA],!0)),e.add(new sh("",M[fA],!1)),e.add(new sh("",T[fA],!1))])),Ge=e.add(new sS("",[e.add(new rS("",ue,!0))],re,!0));vA.push(Ge)}const QA=[];for(const fA of o)if((fA.hole_shape||fA.shape)==="circle"){const lA=typeof fA.x=="number"?fA.x:fA.x.value,RA=typeof fA.y=="number"?fA.y:fA.y.value,FA=fA.hole_diameter/2,KA=e.add(new OB("",lA,RA,0)),TA=e.add(new Up("",e.add(new OB("",lA+FA,RA,0)))),XA=e.add(new Tf("",KA,e.add(new hu("",0,0,-1)),q)),Ae=e.add(new ak("",XA,FA)),$A=e.add(new RD("",TA,TA,Ae,!0)),re=e.add(new OB("",lA,RA,r)),ue=e.add(new Up("",e.add(new OB("",lA+FA,RA,r)))),Ge=e.add(new Tf("",re,W,q)),Te=e.add(new ak("",Ge,FA)),et=e.add(new RD("",ue,ue,Te,!0)),Le=e.add(new sw("",[e.add(new sh("",$A,!0)),e.add(new sh("",et,!1))])),Bt=e.add(new Tf("",KA,W,q)),ct=e.add(new ML("",Bt,FA)),Ft=e.add(new sS("",[e.add(new rS("",Le,!0))],ct,!1));QA.push(Ft)}const bA=[tA,YA,...vA,...QA],SA=e.add(new nM("",bA)),oe=[e.add(new kF(g,SA))];let Ie=new Set,yA=new Set;if(A.includeComponents&&A.includeExternalMeshes){const fA=await o4t({repo:e,circuitJson:t,boardThickness:r,fsMap:A.fsMap});Ie=fA.handledComponentIds,yA=fA.handledPcbComponentIds,oe.push(...fA.solids)}if(A.includeComponents){const fA=new Set;for(const lA of t)lA.type==="cad_component"&&lA.model_step_url&&lA.pcb_component_id&&fA.add(lA.pcb_component_id);if(t.some(lA=>lA.type==="cad_component"?lA.cad_component_id&&Ie.has(lA.cad_component_id)||lA.pcb_component_id&&fA.has(lA.pcb_component_id)?!1:!lA.model_step_url:lA.type==="pcb_component"?!(lA.pcb_component_id&&yA.has(lA.pcb_component_id)||lA.pcb_component_id&&fA.has(lA.pcb_component_id)):!1)){const lA=await $qt({repo:e,circuitJson:t,boardThickness:r,includeExternalMeshes:A.includeExternalMeshes,excludeCadComponentIds:Ie,excludePcbComponentIds:yA,pcbComponentIdsWithStepUrl:fA});oe.push(...lA)}}const xA=[];oe.forEach((fA,mA)=>{const lA=mA===0,[RA,FA,KA]=lA?[.2,.6,.2]:[.75,.75,.75],TA=e.add(new vL("",RA,FA,KA)),XA=e.add(new LL("",TA)),Ae=e.add(new UL("",[XA])),$A=e.add(new TL(Ae)),re=e.add(new KL("",[$A])),ue=e.add(new qL(".BOTH.",re)),Ge=e.add(new YL([ue])),Te=e.add(new JL("",[Ge],fA));xA.push(Te)}),e.add(new HL("",xA,S));const cA=e.add(new PL(g,oe,S));e.add(new AH(h,cA));const IA=e.toPartFile({name:g});return Q4t(IA)}const E4t=async({circuitJson:t,projectName:A})=>{const e=t.find(g=>g.type==="pcb_board"),i=e&&"width"in e?e.width:void 0,o=e&&"height"in e?e.height:void 0,n=e&&"thickness"in e?e.thickness:void 0;if(i===void 0||o===void 0||n===void 0){Gs.error("Board dimensions not found. Please add a pcb_board with width, height, and thickness to your circuit.");return}let s;try{s=await l4t(t,{boardWidth:i,boardHeight:o,boardThickness:n,productName:A,includeComponents:!0,includeExternalMeshes:!0})}catch(g){const a=g instanceof Error?g.message:"Unknown error";Gs.error(`Failed to convert circuit to STEP format: ${a}`);return}const r=new Blob([s],{type:"application/step"});try{yF(r,{fileName:`${A}.step`})}catch(g){const a=g instanceof Error?g.message:"Unknown error";Gs.error(`Failed to download STEP file: ${a}`)}},Bge=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",h4t=Bge+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",u4t="["+Bge+"]["+h4t+"]*",d4t=new RegExp("^"+u4t+"$");function Cge(t,A){const e=[];let i=A.exec(t);for(;i;){const o=[];o.startIndex=A.lastIndex-i[0].length;const n=i.length;for(let s=0;s<n;s++)o.push(i[s]);e.push(o),i=A.exec(t)}return e}const QW=function(t){const A=d4t.exec(t);return!(A===null||typeof A>"u")};function p4t(t){return typeof t<"u"}const f4t={allowBooleanAttributes:!1,unpairedTags:[]};function y4t(t,A){A=Object.assign({},f4t,A);const e=[];let i=!1,o=!1;t[0]==="\uFEFF"&&(t=t.substr(1));for(let n=0;n<t.length;n++)if(t[n]==="<"&&t[n+1]==="?"){if(n+=2,n=lge(t,n),n.err)return n}else if(t[n]==="<"){let s=n;if(n++,t[n]==="!"){n=Ege(t,n);continue}else{let r=!1;t[n]==="/"&&(r=!0,n++);let g="";for(;n<t.length&&t[n]!==">"&&t[n]!==" "&&t[n]!==" "&&t[n]!==`
|
|
5987
5987
|
`&&t[n]!=="\r";n++)g+=t[n];if(g=g.trim(),g[g.length-1]==="/"&&(g=g.substring(0,g.length-1),n--),!F4t(g)){let c;return g.trim().length===0?c="Invalid space after '<'.":c="Tag '"+g+"' is an invalid name.",RC("InvalidTag",c,Cd(t,n))}const a=m4t(t,n);if(a===!1)return RC("InvalidAttr","Attributes for '"+g+"' have open quote.",Cd(t,n));let I=a.value;if(n=a.index,I[I.length-1]==="/"){const c=n-I.length;I=I.substring(0,I.length-1);const B=hge(I,A);if(B===!0)i=!0;else return RC(B.err.code,B.err.msg,Cd(t,c+B.err.line))}else if(r)if(a.tagClosed){if(I.trim().length>0)return RC("InvalidTag","Closing tag '"+g+"' can't have attributes or invalid starting.",Cd(t,s));if(e.length===0)return RC("InvalidTag","Closing tag '"+g+"' has not been opened.",Cd(t,s));{const c=e.pop();if(g!==c.tagName){let B=Cd(t,c.tagStartPos);return RC("InvalidTag","Expected closing tag '"+c.tagName+"' (opened in line "+B.line+", col "+B.col+") instead of closing tag '"+g+"'.",Cd(t,s))}e.length==0&&(o=!0)}}else return RC("InvalidTag","Closing tag '"+g+"' doesn't have proper closing.",Cd(t,n));else{const c=hge(I,A);if(c!==!0)return RC(c.err.code,c.err.msg,Cd(t,n-I.length+c.err.line));if(o===!0)return RC("InvalidXml","Multiple possible root nodes found.",Cd(t,n));A.unpairedTags.indexOf(g)!==-1||e.push({tagName:g,tagStartPos:s}),i=!0}for(n++;n<t.length;n++)if(t[n]==="<")if(t[n+1]==="!"){n++,n=Ege(t,n);continue}else if(t[n+1]==="?"){if(n=lge(t,++n),n.err)return n}else break;else if(t[n]==="&"){const c=k4t(t,n);if(c==-1)return RC("InvalidChar","char '&' is not expected.",Cd(t,n));n=c}else if(o===!0&&!Qge(t[n]))return RC("InvalidXml","Extra text at the end",Cd(t,n));t[n]==="<"&&n--}}else{if(Qge(t[n]))continue;return RC("InvalidChar","char '"+t[n]+"' is not expected.",Cd(t,n))}if(i){if(e.length==1)return RC("InvalidTag","Unclosed tag '"+e[0].tagName+"'.",Cd(t,e[0].tagStartPos));if(e.length>0)return RC("InvalidXml","Invalid '"+JSON.stringify(e.map(n=>n.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return RC("InvalidXml","Start tag expected.",1);return!0}function Qge(t){return t===" "||t===" "||t===`
|
|
5988
5988
|
`||t==="\r"}function lge(t,A){const e=A;for(;A<t.length;A++)if(t[A]=="?"||t[A]==" "){const i=t.substr(e,A-e);if(A>5&&i==="xml")return RC("InvalidXml","XML declaration allowed only at the start of the document.",Cd(t,A));if(t[A]=="?"&&t[A+1]==">"){A++;break}else continue}return A}function Ege(t,A){if(t.length>A+5&&t[A+1]==="-"&&t[A+2]==="-"){for(A+=3;A<t.length;A++)if(t[A]==="-"&&t[A+1]==="-"&&t[A+2]===">"){A+=2;break}}else if(t.length>A+8&&t[A+1]==="D"&&t[A+2]==="O"&&t[A+3]==="C"&&t[A+4]==="T"&&t[A+5]==="Y"&&t[A+6]==="P"&&t[A+7]==="E"){let e=1;for(A+=8;A<t.length;A++)if(t[A]==="<")e++;else if(t[A]===">"&&(e--,e===0))break}else if(t.length>A+9&&t[A+1]==="["&&t[A+2]==="C"&&t[A+3]==="D"&&t[A+4]==="A"&&t[A+5]==="T"&&t[A+6]==="A"&&t[A+7]==="["){for(A+=8;A<t.length;A++)if(t[A]==="]"&&t[A+1]==="]"&&t[A+2]===">"){A+=2;break}}return A}const w4t='"',D4t="'";function m4t(t,A){let e="",i="",o=!1;for(;A<t.length;A++){if(t[A]===w4t||t[A]===D4t)i===""?i=t[A]:i!==t[A]||(i="");else if(t[A]===">"&&i===""){o=!0;break}e+=t[A]}return i!==""?!1:{value:e,index:A,tagClosed:o}}const S4t=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function hge(t,A){const e=Cge(t,S4t),i={};for(let o=0;o<e.length;o++){if(e[o][1].length===0)return RC("InvalidAttr","Attribute '"+e[o][2]+"' has no space in starting.",eH(e[o]));if(e[o][3]!==void 0&&e[o][4]===void 0)return RC("InvalidAttr","Attribute '"+e[o][2]+"' is without value.",eH(e[o]));if(e[o][3]===void 0&&!A.allowBooleanAttributes)return RC("InvalidAttr","boolean attribute '"+e[o][2]+"' is not allowed.",eH(e[o]));const n=e[o][2];if(!G4t(n))return RC("InvalidAttr","Attribute '"+n+"' is an invalid name.",eH(e[o]));if(!i.hasOwnProperty(n))i[n]=1;else return RC("InvalidAttr","Attribute '"+n+"' is repeated.",eH(e[o]))}return!0}function b4t(t,A){let e=/\d/;for(t[A]==="x"&&(A++,e=/[\da-fA-F]/);A<t.length;A++){if(t[A]===";")return A;if(!t[A].match(e))break}return-1}function k4t(t,A){if(A++,t[A]===";")return-1;if(t[A]==="#")return A++,b4t(t,A);let e=0;for(;A<t.length;A++,e++)if(!(t[A].match(/\w/)&&e<20)){if(t[A]===";")break;return-1}return A}function RC(t,A,e){return{err:{code:t,msg:A,line:e.line||e,col:e.col}}}function G4t(t){return QW(t)}function F4t(t){return QW(t)}function Cd(t,A){const e=t.substring(0,A).split(/\r?\n/);return{line:e.length,col:e[e.length-1].length+1}}function eH(t){return t.startIndex+t[1].length}const _4t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,A){return A},attributeValueProcessor:function(t,A){return A},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,A,e){return t},captureMetaData:!1},x4t=function(t){return Object.assign({},_4t,t)};let lW;typeof Symbol!="function"?lW="@@xmlMetadata":lW=Symbol("XML Node Metadata");class FF{constructor(A){this.tagname=A,this.child=[],this[":@"]={}}add(A,e){A==="__proto__"&&(A="#__proto__"),this.child.push({[A]:e})}addChild(A,e){A.tagname==="__proto__"&&(A.tagname="#__proto__"),A[":@"]&&Object.keys(A[":@"]).length>0?this.child.push({[A.tagname]:A.child,":@":A[":@"]}):this.child.push({[A.tagname]:A.child}),e!==void 0&&(this.child[this.child.length-1][lW]={startIndex:e})}static getMetaDataSymbol(){return lW}}class R4t{constructor(A){this.suppressValidationErr=!A}readDocType(A,e){const i={};if(A[e+3]==="O"&&A[e+4]==="C"&&A[e+5]==="T"&&A[e+6]==="Y"&&A[e+7]==="P"&&A[e+8]==="E"){e=e+9;let o=1,n=!1,s=!1,r="";for(;e<A.length;e++)if(A[e]==="<"&&!s){if(n&&_F(A,"!ENTITY",e)){e+=7;let g,a;[g,a,e]=this.readEntityExp(A,e+1,this.suppressValidationErr),a.indexOf("&")===-1&&(i[g]={regx:RegExp(`&${g};`,"g"),val:a})}else if(n&&_F(A,"!ELEMENT",e)){e+=8;const{index:g}=this.readElementExp(A,e+1);e=g}else if(n&&_F(A,"!ATTLIST",e))e+=8;else if(n&&_F(A,"!NOTATION",e)){e+=9;const{index:g}=this.readNotationExp(A,e+1,this.suppressValidationErr);e=g}else if(_F(A,"!--",e))s=!0;else throw new Error("Invalid DOCTYPE");o++,r=""}else if(A[e]===">"){if(s?A[e-1]==="-"&&A[e-2]==="-"&&(s=!1,o--):o--,o===0)break}else A[e]==="["?n=!0:r+=A[e];if(o!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:i,i:e}}readEntityExp(A,e){e=Hp(A,e);let i="";for(;e<A.length&&!/\s/.test(A[e])&&A[e]!=='"'&&A[e]!=="'";)i+=A[e],e++;if(tH(i),e=Hp(A,e),!this.suppressValidationErr){if(A.substring(e,e+6).toUpperCase()==="SYSTEM")throw new Error("External entities are not supported");if(A[e]==="%")throw new Error("Parameter entities are not supported")}let o="";return[e,o]=this.readIdentifierVal(A,e,"entity"),e--,[i,o,e]}readNotationExp(A,e){e=Hp(A,e);let i="";for(;e<A.length&&!/\s/.test(A[e]);)i+=A[e],e++;!this.suppressValidationErr&&tH(i),e=Hp(A,e);const o=A.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&o!=="SYSTEM"&&o!=="PUBLIC")throw new Error(`Expected SYSTEM or PUBLIC, found "${o}"`);e+=o.length,e=Hp(A,e);let n=null,s=null;if(o==="PUBLIC")[e,n]=this.readIdentifierVal(A,e,"publicIdentifier"),e=Hp(A,e),(A[e]==='"'||A[e]==="'")&&([e,s]=this.readIdentifierVal(A,e,"systemIdentifier"));else if(o==="SYSTEM"&&([e,s]=this.readIdentifierVal(A,e,"systemIdentifier"),!this.suppressValidationErr&&!s))throw new Error("Missing mandatory system identifier for SYSTEM notation");return{notationName:i,publicIdentifier:n,systemIdentifier:s,index:--e}}readIdentifierVal(A,e,i){let o="";const n=A[e];if(n!=='"'&&n!=="'")throw new Error(`Expected quoted string, found "${n}"`);for(e++;e<A.length&&A[e]!==n;)o+=A[e],e++;if(A[e]!==n)throw new Error(`Unterminated ${i} value`);return e++,[e,o]}readElementExp(A,e){e=Hp(A,e);let i="";for(;e<A.length&&!/\s/.test(A[e]);)i+=A[e],e++;if(!this.suppressValidationErr&&!QW(i))throw new Error(`Invalid element name: "${i}"`);e=Hp(A,e);let o="";if(A[e]==="E"&&_F(A,"MPTY",e))e+=4;else if(A[e]==="A"&&_F(A,"NY",e))e+=2;else if(A[e]==="("){for(e++;e<A.length&&A[e]!==")";)o+=A[e],e++;if(A[e]!==")")throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error(`Invalid Element Expression, found "${A[e]}"`);return{elementName:i,contentModel:o.trim(),index:e}}readAttlistExp(A,e){e=Hp(A,e);let i="";for(;e<A.length&&!/\s/.test(A[e]);)i+=A[e],e++;tH(i),e=Hp(A,e);let o="";for(;e<A.length&&!/\s/.test(A[e]);)o+=A[e],e++;if(!tH(o))throw new Error(`Invalid attribute name: "${o}"`);e=Hp(A,e);let n="";if(A.substring(e,e+8).toUpperCase()==="NOTATION"){if(n="NOTATION",e+=8,e=Hp(A,e),A[e]!=="(")throw new Error(`Expected '(', found "${A[e]}"`);e++;let r=[];for(;e<A.length&&A[e]!==")";){let g="";for(;e<A.length&&A[e]!=="|"&&A[e]!==")";)g+=A[e],e++;if(g=g.trim(),!tH(g))throw new Error(`Invalid notation name: "${g}"`);r.push(g),A[e]==="|"&&(e++,e=Hp(A,e))}if(A[e]!==")")throw new Error("Unterminated list of notations");e++,n+=" ("+r.join("|")+")"}else{for(;e<A.length&&!/\s/.test(A[e]);)n+=A[e],e++;const r=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!r.includes(n.toUpperCase()))throw new Error(`Invalid attribute type: "${n}"`)}e=Hp(A,e);let s="";return A.substring(e,e+8).toUpperCase()==="#REQUIRED"?(s="#REQUIRED",e+=8):A.substring(e,e+7).toUpperCase()==="#IMPLIED"?(s="#IMPLIED",e+=7):[e,s]=this.readIdentifierVal(A,e,"ATTLIST"),{elementName:i,attributeName:o,attributeType:n,defaultValue:s,index:e}}}const Hp=(t,A)=>{for(;A<t.length&&/\s/.test(t[A]);)A++;return A};function _F(t,A,e){for(let i=0;i<A.length;i++)if(A[i]!==t[e+i+1])return!1;return!0}function tH(t){if(QW(t))return t;throw new Error(`Invalid entity name ${t}`)}const N4t=/^[-+]?0x[a-fA-F0-9]+$/,M4t=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,v4t={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function U4t(t,A={}){if(A=Object.assign({},v4t,A),!t||typeof t!="string")return t;let e=t.trim();if(A.skipLike!==void 0&&A.skipLike.test(e))return t;if(t==="0")return 0;if(A.hex&&N4t.test(e))return J4t(e,16);if(e.search(/.+[eE].+/)!==-1)return H4t(t,e,A);{const i=M4t.exec(e);if(i){const o=i[1]||"",n=i[2];let s=Y4t(i[3]);const r=o?t[n.length+1]===".":t[n.length]===".";if(!A.leadingZeros&&(n.length>1||n.length===1&&!r))return t;{const g=Number(e),a=String(g);if(g===0)return g;if(a.search(/[eE]/)!==-1)return A.eNotation?g:t;if(e.indexOf(".")!==-1)return a==="0"||a===s||a===`${o}${s}`?g:t;let I=n?s:e;return n?I===a||o+I===a?g:t:I===a||I===o+a?g:t}}else return t}}const L4t=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function H4t(t,A,e){if(!e.eNotation)return t;const i=A.match(L4t);if(i){let o=i[1]||"";const n=i[3].indexOf("e")===-1?"E":"e",s=i[2],r=o?t[s.length+1]===n:t[s.length]===n;return s.length>1&&r?t:s.length===1&&(i[3].startsWith(`.${n}`)||i[3][0]===n)?Number(A):e.leadingZeros&&!r?(A=(i[1]||"")+i[3],Number(A)):t}else return t}function Y4t(t){return t&&t.indexOf(".")!==-1&&(t=t.replace(/0+$/,""),t==="."?t="0":t[0]==="."?t="0"+t:t[t.length-1]==="."&&(t=t.substring(0,t.length-1))),t}function J4t(t,A){if(parseInt)return parseInt(t,A);if(Number.parseInt)return Number.parseInt(t,A);if(window&&window.parseInt)return window.parseInt(t,A);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}function K4t(t){return typeof t=="function"?t:Array.isArray(t)?A=>{for(const e of t)if(typeof e=="string"&&A===e||e instanceof RegExp&&e.test(A))return!0}:()=>!1}class T4t{constructor(A){if(this.options=A,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,i)=>String.fromCodePoint(Number.parseInt(i,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,i)=>String.fromCodePoint(Number.parseInt(i,16))}},this.addExternalEntities=q4t,this.parseXml=V4t,this.parseTextData=P4t,this.resolveNameSpace=O4t,this.buildAttributesMap=Z4t,this.isItStopNode=$4t,this.replaceEntitiesValue=z4t,this.readStopNodeData=e3t,this.saveTextToParentTag=X4t,this.addChild=j4t,this.ignoreAttributesFn=K4t(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let e=0;e<this.options.stopNodes.length;e++){const i=this.options.stopNodes[e];typeof i=="string"&&(i.startsWith("*.")?this.stopNodesWildcard.add(i.substring(2)):this.stopNodesExact.add(i))}}}}function q4t(t){const A=Object.keys(t);for(let e=0;e<A.length;e++){const i=A[e];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:t[i]}}}function P4t(t,A,e,i,o,n,s){if(t!==void 0&&(this.options.trimValues&&!i&&(t=t.trim()),t.length>0)){s||(t=this.replaceEntitiesValue(t));const r=this.options.tagValueProcessor(A,t,e,o,n);return r==null?t:typeof r!=typeof t||r!==t?r:this.options.trimValues?XdA(t,this.options.parseTagValue,this.options.numberParseOptions):t.trim()===t?XdA(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function O4t(t){if(this.options.removeNSPrefix){const A=t.split(":"),e=t.charAt(0)==="/"?"/":"";if(A[0]==="xmlns")return"";A.length===2&&(t=e+A[1])}return t}const W4t=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function Z4t(t,A,e){if(this.options.ignoreAttributes!==!0&&typeof t=="string"){const i=Cge(t,W4t),o=i.length,n={};for(let s=0;s<o;s++){const r=this.resolveNameSpace(i[s][1]);if(this.ignoreAttributesFn(r,A))continue;let g=i[s][4],a=this.options.attributeNamePrefix+r;if(r.length)if(this.options.transformAttributeName&&(a=this.options.transformAttributeName(a)),a==="__proto__"&&(a="#__proto__"),g!==void 0){this.options.trimValues&&(g=g.trim()),g=this.replaceEntitiesValue(g);const I=this.options.attributeValueProcessor(r,g,A);I==null?n[a]=g:typeof I!=typeof g||I!==g?n[a]=I:n[a]=XdA(g,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[a]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const s={};return s[this.options.attributesGroupName]=n,s}return n}}const V4t=function(t){t=t.replace(/\r\n?/g,`
|
|
5989
5989
|
`);const A=new FF("!xml");let e=A,i="",o="";const n=new R4t(this.options.processEntities);for(let s=0;s<t.length;s++)if(t[s]==="<")if(t[s+1]==="/"){const g=xF(t,">",s,"Closing Tag is not closed.");let a=t.substring(s+2,g).trim();if(this.options.removeNSPrefix){const B=a.indexOf(":");B!==-1&&(a=a.substr(B+1))}this.options.transformTagName&&(a=this.options.transformTagName(a)),e&&(i=this.saveTextToParentTag(i,e,o));const I=o.substring(o.lastIndexOf(".")+1);if(a&&this.options.unpairedTags.indexOf(a)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: </${a}>`);let c=0;I&&this.options.unpairedTags.indexOf(I)!==-1?(c=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=o.lastIndexOf("."),o=o.substring(0,c),e=this.tagsNodeStack.pop(),i="",s=g}else if(t[s+1]==="?"){let g=zdA(t,s,!1,"?>");if(!g)throw new Error("Pi Tag is not closed.");if(i=this.saveTextToParentTag(i,e,o),!(this.options.ignoreDeclaration&&g.tagName==="?xml"||this.options.ignorePiTags)){const a=new FF(g.tagName);a.add(this.options.textNodeName,""),g.tagName!==g.tagExp&&g.attrExpPresent&&(a[":@"]=this.buildAttributesMap(g.tagExp,o,g.tagName)),this.addChild(e,a,o,s)}s=g.closeIndex+1}else if(t.substr(s+1,3)==="!--"){const g=xF(t,"-->",s+4,"Comment is not closed.");if(this.options.commentPropName){const a=t.substring(s+4,g-2);i=this.saveTextToParentTag(i,e,o),e.add(this.options.commentPropName,[{[this.options.textNodeName]:a}])}s=g}else if(t.substr(s+1,2)==="!D"){const g=n.readDocType(t,s);this.docTypeEntities=g.entities,s=g.i}else if(t.substr(s+1,2)==="!["){const g=xF(t,"]]>",s,"CDATA is not closed.")-2,a=t.substring(s+9,g);i=this.saveTextToParentTag(i,e,o);let I=this.parseTextData(a,e.tagname,o,!0,!1,!0,!0);I==null&&(I=""),this.options.cdataPropName?e.add(this.options.cdataPropName,[{[this.options.textNodeName]:a}]):e.add(this.options.textNodeName,I),s=g+2}else{let g=zdA(t,s,this.options.removeNSPrefix),a=g.tagName;const I=g.rawTagName;let c=g.tagExp,B=g.attrExpPresent,C=g.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),e&&i&&e.tagname!=="!xml"&&(i=this.saveTextToParentTag(i,e,o,!1));const Q=e;Q&&this.options.unpairedTags.indexOf(Q.tagname)!==-1&&(e=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),a!==A.tagname&&(o+=o?"."+a:a);const E=s;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,o,a)){let l="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)a[a.length-1]==="/"?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),c=a):c=c.substr(0,c.length-1),s=g.closeIndex;else if(this.options.unpairedTags.indexOf(a)!==-1)s=g.closeIndex;else{const u=this.readStopNodeData(t,I,C+1);if(!u)throw new Error(`Unexpected end of ${I}`);s=u.i,l=u.tagContent}const h=new FF(a);a!==c&&B&&(h[":@"]=this.buildAttributesMap(c,o,a)),l&&(l=this.parseTextData(l,a,o,!0,B,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),h.add(this.options.textNodeName,l),this.addChild(e,h,o,E)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){a[a.length-1]==="/"?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),c=a):c=c.substr(0,c.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const l=new FF(a);a!==c&&B&&(l[":@"]=this.buildAttributesMap(c,o,a)),this.addChild(e,l,o,E),o=o.substr(0,o.lastIndexOf("."))}else{const l=new FF(a);this.tagsNodeStack.push(e),a!==c&&B&&(l[":@"]=this.buildAttributesMap(c,o,a)),this.addChild(e,l,o,E),e=l}i="",s=C}}else i+=t[s];return A.child};function j4t(t,A,e,i){this.options.captureMetaData||(i=void 0);const o=this.options.updateTag(A.tagname,e,A[":@"]);o===!1||(typeof o=="string"&&(A.tagname=o),t.addChild(A,i))}const z4t=function(t){if(this.options.processEntities){for(let A in this.docTypeEntities){const e=this.docTypeEntities[A];t=t.replace(e.regx,e.val)}for(let A in this.lastEntities){const e=this.lastEntities[A];t=t.replace(e.regex,e.val)}if(this.options.htmlEntities)for(let A in this.htmlEntities){const e=this.htmlEntities[A];t=t.replace(e.regex,e.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function X4t(t,A,e,i){return t&&(i===void 0&&(i=A.child.length===0),t=this.parseTextData(t,A.tagname,e,!1,A[":@"]?Object.keys(A[":@"]).length!==0:!1,i),t!==void 0&&t!==""&&A.add(this.options.textNodeName,t),t=""),t}function $4t(t,A,e,i){return!!(A&&A.has(i)||t&&t.has(e))}function A3t(t,A,e=">"){let i,o="";for(let n=A;n<t.length;n++){let s=t[n];if(i)s===i&&(i="");else if(s==='"'||s==="'")i=s;else if(s===e[0])if(e[1]){if(t[n+1]===e[1])return{data:o,index:n}}else return{data:o,index:n};else s===" "&&(s=" ");o+=s}}function xF(t,A,e,i){const o=t.indexOf(A,e);if(o===-1)throw new Error(i);return o+A.length-1}function zdA(t,A,e,i=">"){const o=A3t(t,A+1,i);if(!o)return;let n=o.data;const s=o.index,r=n.search(/\s/);let g=n,a=!0;r!==-1&&(g=n.substring(0,r),n=n.substring(r+1).trimStart());const I=g;if(e){const c=g.indexOf(":");c!==-1&&(g=g.substr(c+1),a=g!==o.data.substr(c+1))}return{tagName:g,tagExp:n,closeIndex:s,attrExpPresent:a,rawTagName:I}}function e3t(t,A,e){const i=e;let o=1;for(;e<t.length;e++)if(t[e]==="<")if(t[e+1]==="/"){const n=xF(t,">",e,`${A} is not closed`);if(t.substring(e+2,n).trim()===A&&(o--,o===0))return{tagContent:t.substring(i,e),i:n};e=n}else if(t[e+1]==="?")e=xF(t,"?>",e+1,"StopNode is not closed.");else if(t.substr(e+1,3)==="!--")e=xF(t,"-->",e+3,"StopNode is not closed.");else if(t.substr(e+1,2)==="![")e=xF(t,"]]>",e,"StopNode is not closed.")-2;else{const n=zdA(t,e,">");n&&((n&&n.tagName)===A&&n.tagExp[n.tagExp.length-1]!=="/"&&o++,e=n.closeIndex)}}function XdA(t,A,e){if(A&&typeof t=="string"){const i=t.trim();return i==="true"?!0:i==="false"?!1:U4t(t,e)}else return p4t(t)?t:""}const $dA=FF.getMetaDataSymbol();function t3t(t,A){return uge(t,A)}function uge(t,A,e){let i;const o={};for(let n=0;n<t.length;n++){const s=t[n],r=i3t(s);let g="";if(e===void 0?g=r:g=e+"."+r,r===A.textNodeName)i===void 0?i=s[r]:i+=""+s[r];else{if(r===void 0)continue;if(s[r]){let a=uge(s[r],A,g);const I=n3t(a,A);s[$dA]!==void 0&&(a[$dA]=s[$dA]),s[":@"]?o3t(a,s[":@"],g,A):Object.keys(a).length===1&&a[A.textNodeName]!==void 0&&!A.alwaysCreateTextNode?a=a[A.textNodeName]:Object.keys(a).length===0&&(A.alwaysCreateTextNode?a[A.textNodeName]="":a=""),o[r]!==void 0&&o.hasOwnProperty(r)?(Array.isArray(o[r])||(o[r]=[o[r]]),o[r].push(a)):A.isArray(r,g,I)?o[r]=[a]:o[r]=a}}}return typeof i=="string"?i.length>0&&(o[A.textNodeName]=i):i!==void 0&&(o[A.textNodeName]=i),o}function i3t(t){const A=Object.keys(t);for(let e=0;e<A.length;e++){const i=A[e];if(i!==":@")return i}}function o3t(t,A,e,i){if(A){const o=Object.keys(A),n=o.length;for(let s=0;s<n;s++){const r=o[s];i.isArray(r,e+"."+r,!0,!0)?t[r]=[A[r]]:t[r]=A[r]}}}function n3t(t,A){const{textNodeName:e}=A,i=Object.keys(t).length;return!!(i===0||i===1&&(t[e]||typeof t[e]=="boolean"||t[e]===0))}class s3t{constructor(A){this.externalEntities={},this.options=x4t(A)}parse(A,e){if(typeof A!="string"&&A.toString)A=A.toString();else if(typeof A!="string")throw new Error("XML data is accepted in String or Bytes[] form.");if(e){e===!0&&(e={});const n=y4t(A,e);if(n!==!0)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const i=new T4t(this.options);i.addExternalEntities(this.externalEntities);const o=i.parseXml(A);return this.options.preserveOrder||o===void 0?o:t3t(o,this.options)}addEntity(A,e){if(e.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(A.indexOf("&")!==-1||A.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if(e==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[A]=e}static getMetaDataSymbol(){return FF.getMetaDataSymbol()}}var r3t=new s3t({ignoreAttributes:!1,attributeNamePrefix:"@_",allowBooleanAttributes:!0,parseAttributeValue:!1,ignoreDeclaration:!0}),g3t=t=>{const A=r3t.parse(t);function e(n){if(n===null||typeof n!="object")return n;if(Array.isArray(n))return n.map(e);const s={},r={};for(const[g,a]of Object.entries(n))g.startsWith("@_")?r[g.slice(2)]=a:g==="#text"?s._=a:s[g]=e(a);return Object.keys(r).length&&(s.$=r),s}const i=Object.keys(A)[0];if(!i)throw new Error("Failed to parse XML: no root element found");const o=e(A[i]);return{[i]:o}},sI=class VD{token;static token;getChildren(){return[]}getXmlAttributes(){return{}}getXmlTag(){return this.token.startsWith("Shape.")?"Shape":this.token}toXml(A=0){const e=" ".repeat(A),i=this.getXmlTag(),o=this.getXmlAttributes(),n=[];for(const[a,I]of Object.entries(o))I!=null&&(typeof I=="boolean"?n.push(`${a}="${I?"True":"False"}"`):n.push(`${a}="${I}"`));const s=n.length>0?" "+n.join(" "):"",r=this.getChildren();if(r.length===0)return`${e}<${i}${s}/>`;const g=[`${e}<${i}${s}>`];for(const a of r)g.push(a.toXml(A+1));return g.push(`${e}</${i}>`),g.join(`
|