scriptorium 0.0.1

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.
Files changed (82) hide show
  1. package/README.md +110 -0
  2. package/bin/scriptorium.js +18 -0
  3. package/build/client/apple-touch-icon.png +0 -0
  4. package/build/client/assets/_layout-D-bxuQBW.js +1 -0
  5. package/build/client/assets/_layout-D2eOWFrG.js +1 -0
  6. package/build/client/assets/_layout-D4m0RbUC.js +1 -0
  7. package/build/client/assets/_layout-DggtTDZp.js +1 -0
  8. package/build/client/assets/ack-yx2DGjj6.js +1 -0
  9. package/build/client/assets/auth-shell-FEL5QDuP.js +1 -0
  10. package/build/client/assets/begin-DP2rzg_V.js +1 -0
  11. package/build/client/assets/begin-l0sNRNKZ.js +1 -0
  12. package/build/client/assets/chunk-EPOLDU6W-B-j6nV8T.js +26 -0
  13. package/build/client/assets/cn-Kn7NbJqM.js +1 -0
  14. package/build/client/assets/confirm-passkey-ntLsS7_k.js +1 -0
  15. package/build/client/assets/entry.client-BkscxSA6.js +5 -0
  16. package/build/client/assets/events-l0sNRNKZ.js +1 -0
  17. package/build/client/assets/file-list-DBDZbrBp.js +1 -0
  18. package/build/client/assets/files-Bzkr7-i7.js +1 -0
  19. package/build/client/assets/files-browser-KNurSsen.js +1 -0
  20. package/build/client/assets/files-cnv1kfgp.js +1 -0
  21. package/build/client/assets/files.browse-9p4xl9MV.js +1 -0
  22. package/build/client/assets/finish-DP2rzg_V.js +1 -0
  23. package/build/client/assets/finish-l0sNRNKZ.js +1 -0
  24. package/build/client/assets/git-CjSY0eSC.js +1 -0
  25. package/build/client/assets/git-T0lLjMNd.js +1 -0
  26. package/build/client/assets/git-browser-DwSOY6QN.js +1 -0
  27. package/build/client/assets/iconify-BDcX0yw8.js +1 -0
  28. package/build/client/assets/index-8zQ7Fizv.js +9 -0
  29. package/build/client/assets/index-BUN6tnpl.js +1 -0
  30. package/build/client/assets/index-BlNoCKAt.js +1 -0
  31. package/build/client/assets/index-g2QB9BbT.js +1 -0
  32. package/build/client/assets/instance-events-provider-DTYnvumj.js +39 -0
  33. package/build/client/assets/instance-route-C25LRYYo.js +1 -0
  34. package/build/client/assets/instances-CzjXhR3c.js +1 -0
  35. package/build/client/assets/instances._instanceId.proxy._-l0sNRNKZ.js +1 -0
  36. package/build/client/assets/instances._instanceId.sessions._sessionId.test-COZIMxji.js +208 -0
  37. package/build/client/assets/instances.new-BZi5xwEV.js +1 -0
  38. package/build/client/assets/login-Bwt79t7_.js +1 -0
  39. package/build/client/assets/logout-l0sNRNKZ.js +1 -0
  40. package/build/client/assets/magic-string.es-DjU5CGuV.js +10 -0
  41. package/build/client/assets/manifest-3c01c628.js +1 -0
  42. package/build/client/assets/message-card-BclR_JqA.css +1 -0
  43. package/build/client/assets/message-card-DJ5C3WNp.js +34 -0
  44. package/build/client/assets/passkeys-DpNQs4bn.js +1 -0
  45. package/build/client/assets/register-DXPj5RLZ.js +1 -0
  46. package/build/client/assets/root-DxD-Skic.css +1 -0
  47. package/build/client/assets/root-DxyfhNRI.js +1 -0
  48. package/build/client/assets/route-handle-DcEil3NY.js +1 -0
  49. package/build/client/assets/safe-area-DTPfLjT-.css +1 -0
  50. package/build/client/assets/safe-area.module-CwCzHS6V.js +1 -0
  51. package/build/client/assets/scroll-indicator-CFaTM_rb.js +12 -0
  52. package/build/client/assets/scroll-indicator-D4qxLVUu.css +1 -0
  53. package/build/client/assets/scrollable-layout-CS-vPTNM.js +1 -0
  54. package/build/client/assets/session-route-oxi4s_Qg.js +1 -0
  55. package/build/client/assets/sessions-provider-D1t07kir.js +1 -0
  56. package/build/client/assets/settings-CameSNIM.js +1 -0
  57. package/build/client/assets/sidebar-DRhB33rT.js +1 -0
  58. package/build/client/assets/use-double-check-CbbarqDt.js +1 -0
  59. package/build/client/assets/webauthn.client-C1ZSQfKs.js +2 -0
  60. package/build/client/dev-sw.js +7 -0
  61. package/build/client/favicon.ico +0 -0
  62. package/build/client/icon-192.png +0 -0
  63. package/build/client/icon-512.png +0 -0
  64. package/build/client/icon-maskable-512.png +0 -0
  65. package/build/client/icon-maskable.svg +8 -0
  66. package/build/client/icon.svg +8 -0
  67. package/build/client/manifest.webmanifest +28 -0
  68. package/build/client/sw.js +73 -0
  69. package/build/runtime/app/lib/runtime-config.server.js +422 -0
  70. package/build/runtime/cli/scriptorium.js +21 -0
  71. package/build/runtime/cli/serve.js +101 -0
  72. package/build/server/index.js +8574 -0
  73. package/docs/config.md +49 -0
  74. package/drizzle/20260312181200_fair_caretaker/migration.sql +54 -0
  75. package/drizzle/20260312181200_fair_caretaker/snapshot.json +484 -0
  76. package/drizzle/20260313000548_windy_paibok/migration.sql +37 -0
  77. package/drizzle/20260313000548_windy_paibok/snapshot.json +617 -0
  78. package/drizzle/20260318120000_session_read_statuses/migration.sql +11 -0
  79. package/drizzle/20260318120000_session_read_statuses/snapshot.json +710 -0
  80. package/drizzle/20260318213224_dear_captain_midlands/migration.sql +24 -0
  81. package/drizzle/20260318213224_dear_captain_midlands/snapshot.json +695 -0
  82. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ import{w as m,u}from"./chunk-EPOLDU6W-B-j6nV8T.js";import{j as e}from"./files.browse-9p4xl9MV.js";import{I as a}from"./iconify-BDcX0yw8.js";import{S as p}from"./scrollable-layout-CS-vPTNM.js";import{u as h}from"./use-double-check-CbbarqDt.js";import{d as x}from"./route-handle-DcEil3NY.js";const v=x({title:[{label:"Settings",to:"/settings"},{label:"Passkeys"}],iconNavActions:[{icon:"mdi:arrow-left",label:"Back to settings",to:"/settings",end:!0}]});function b({currentPasskeyId:i,passkey:s}){const t=u(),{doubleCheck:n,getButtonProps:r}=h(),l=s.id===i,o=t.state!=="idle",c=n?"mdi:help":"mdi:trash-can-outline",d=n?`Confirm revoke ${s.label}`:`Revoke ${s.label}`;return e.jsxs("li",{className:"flex min-h-11 items-center justify-between gap-3 border-b-2 border-black px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx("span",{className:"inline-flex min-h-11 min-w-11 items-center justify-center","aria-hidden":"true",children:l?e.jsx(a,{className:"size-6",icon:"mdi:star"}):null}),e.jsx("span",{className:"truncate text-base",children:s.label})]}),e.jsxs(t.Form,{method:"post",children:[e.jsx("input",{name:"intent",type:"hidden",value:"revoke"}),e.jsx("input",{name:"passkeyId",type:"hidden",value:s.id}),e.jsx("button",{"aria-label":d,className:"inline-flex min-h-11 min-w-11 items-center justify-center disabled:opacity-25",disabled:o,type:"submit",...r(),children:e.jsx(a,{className:"size-6",icon:c})})]}),t.data?.error?e.jsx("p",{className:"sr-only",children:t.data.error}):null]})}const w=m(function({actionData:s,loaderData:t}){return e.jsx(p,{children:e.jsxs("section",{className:"space-y-6 pt-6",children:[e.jsxs("div",{className:"space-y-2 px-6 sm:px-8",children:[e.jsx("p",{className:"text-sm uppercase tracking-[0.08em]",children:"Active devices"}),e.jsx("p",{className:"text-base leading-6",children:"Revoke any passkey that should stop signing in. Revoking the device you are using will send you back through registration."})]}),s?.error?e.jsx("p",{className:"border-t-2 border-black pt-3 text-base leading-6",children:s.error}):null,e.jsx("ul",{className:"border-t-2 border-black",children:t.passkeys.map(n=>e.jsx(b,{currentPasskeyId:t.currentPasskeyId,passkey:n},n.id))})]})})});export{w as default,v as handle};
@@ -0,0 +1 @@
1
+ import{w as m,d as g,L as p}from"./chunk-EPOLDU6W-B-j6nV8T.js";import{r as n,j as t}from"./files.browse-9p4xl9MV.js";import{a as b,S as x}from"./auth-shell-FEL5QDuP.js";import{r as h}from"./webauthn.client-C1ZSQfKs.js";import"./safe-area.module-CwCzHS6V.js";function v(){if(typeof navigator>"u")return"Unnamed device";const e=navigator.userAgent,i=/iPhone/i.test(e)?"iPhone":/iPad/i.test(e)?"iPad":/Android/i.test(e)?"Android":/Mac/i.test(e)?"Mac":/Windows/i.test(e)?"Windows":/Linux/i.test(e)?"Linux":null,a=/Edg/i.test(e)?"Edge":/Chrome|CriOS/i.test(e)?"Chrome":/Firefox|FxiOS/i.test(e)?"Firefox":/Safari/i.test(e)&&!/Chrome|CriOS|Edg/i.test(e)?"Safari":null;return i&&a?`${a} on ${i}`:i?`${i} device`:a?`${a} device`:"Unnamed device"}const P=m(function({}){const i=g(),a=n.useMemo(()=>v(),[]),[o,u]=n.useState(""),[r,l]=n.useState(!1),[d,c]=n.useState(null);async function f(){try{l(!0),c(null);const s=await h(o.trim()||a);i(s.redirectTo)}catch(s){c(s instanceof Error?s.message:"Passkey registration failed.")}finally{l(!1)}}return t.jsx(b,{title:"Register device",copy:"",children:t.jsxs("form",{className:"space-y-4",onSubmit:s=>{s.preventDefault(),f()},children:[t.jsxs("label",{className:"block space-y-3 py-1",children:[t.jsx("span",{className:"text-sm uppercase tracking-[0.08em]",children:"Device label"}),t.jsx("input",{className:"min-h-11 w-full bg-white px-0 py-2 text-base text-black focus-visible:outline-2 focus-visible:outline-black focus-visible:outline-offset-2",disabled:r,name:"label",onChange:s=>u(s.target.value),placeholder:"Desktop, iPhone, Macbook...",value:o})]}),t.jsx("button",{className:"inline-flex min-h-11 w-full items-center justify-center bg-black px-3 py-2 text-base text-white sm:w-auto",disabled:r,type:"submit",children:r?"Waiting for your device":"Register passkey"}),t.jsx(x,{message:d}),t.jsx("p",{className:"text-sm leading-6",children:t.jsx(p,{className:"underline underline-offset-4",to:"/login",children:"Login"})})]})})});export{P as default};
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:Charter, "Bitstream Charter", Georgia, serif;--font-mono:"Fira Code", ui-monospace, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.84375rem;--text-xs--line-height:1.125rem;--text-sm:.984375rem;--text-sm--line-height:1.40625rem;--text-base:1.125rem;--text-base--line-height:1.6875rem;--text-lg:1.26563rem;--text-lg--line-height:1.82813rem;--text-xl:1.40625rem;--text-xl--line-height:1.82813rem;--text-2xl:1.6875rem;--text-2xl--line-height:2.10938rem;--text-3xl:2.10938rem;--text-3xl--line-height:2.53125rem;--text-5xl:3.375rem;--text-5xl--line-height:1;--font-weight-bold:700;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent-dark-gray:#404040;--color-accent-mid-gray:gray;--color-accent-light-gray:silver;--color-accent-red:#ff6163;--color-accent-green:#00b036;--color-accent-navy:#000084;--color-accent-aqua:#00f0ff;--color-accent-violet:#e0f;--color-accent-orange:#fa0;--color-accent-lemon:#f0ff00;--color-accent-chartreuse:green;--color-accent-grape:#9338be;--color-accent-sky:#0af;--color-accent-orange-red:#f40}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-8{left:calc(var(--spacing) * 8)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-8{margin-block:calc(var(--spacing) * 8)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-9{height:calc(var(--spacing) * 9)}.h-full{height:100%}.max-h-72{max-height:calc(var(--spacing) * 72)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-1\.5{min-height:calc(var(--spacing) * 1.5)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-80{width:calc(var(--spacing) * 80)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[42rem\]{max-width:42rem}.max-w-max{max-width:max-content}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-\[min\(max-content\,calc\(100\%\/var\(--count\)\)\)\]{min-width:min(max-content,calc(100% / var(--count)))}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-\[1_1_0\]{flex:1 1 0}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-\[0\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:.5rem minmax(0,1fr)}.grid-cols-\[1fr\]{grid-template-columns:1fr}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(14rem\,20rem\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(14rem,20rem) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y-2{border-block-style:var(--tw-border-style);border-block-width:2px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-black{border-color:var(--color-black)}.border-t-\[var\(--color-accent-green\)\]{border-top-color:var(--color-accent-green)}.border-t-\[var\(--color-accent-red\)\]{border-top-color:var(--color-accent-red)}.border-b-\[var\(--color-accent-green\)\]{border-bottom-color:var(--color-accent-green)}.border-b-\[var\(--color-accent-red\)\]{border-bottom-color:var(--color-accent-red)}.border-l-black{border-left-color:var(--color-black)}.bg-\[color-mix\(in_srgb\,var\(--color-accent-lemon\)_28\%\,white\)\]{background-color:#fbffb8}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--color-accent-lemon\)_28\%\,white\)\]{background-color:color-mix(in srgb,var(--color-accent-lemon) 28%,white)}}.bg-\[var\(--color-accent-green\)\]{background-color:var(--color-accent-green)}.bg-\[var\(--color-accent-red\)\]{background-color:var(--color-accent-red)}.bg-black{background-color:var(--color-black)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-white\/0{background-color:color-mix(in oklab,var(--color-white) 0%,transparent)}}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-\[\"Fira_Code\"\,ui-monospace\,monospace\]{font-family:Fira Code,ui-monospace,monospace}.font-\[Charter\,\"Bitstream_Charter\"\,Georgia\,serif\]{font-family:Charter,Bitstream Charter,Georgia,serif}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.tracking-\[0\.05em\]{--tw-tracking:.05em;letter-spacing:.05em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-black{color:var(--color-black)}.text-black\/60{color:#0009}@supports (color:color-mix(in lab,red,red)){.text-black\/60{color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.select-none{-webkit-user-select:none;user-select:none}.first\:pt-0:first-child{padding-top:calc(var(--spacing) * 0)}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-black:focus-visible{outline-color:var(--color-black)}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-\[color-mix\(in_srgb\,var\(--color-accent-sky\)_14\%\,white\)\]:active{background-color:#dbf3ff}@supports (color:color-mix(in lab,red,red)){.active\:bg-\[color-mix\(in_srgb\,var\(--color-accent-sky\)_14\%\,white\)\]:active{background-color:color-mix(in srgb,var(--color-accent-sky) 14%,white)}}.disabled\:opacity-25:disabled{opacity:.25}@media(min-width:40rem){.sm\:w-auto{width:auto}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}}}html,body{color:#000;background:#fff;min-height:100%;margin:0;font-family:Charter,Bitstream Charter,Georgia,serif}body{min-height:100dvh}button,input,textarea{font:inherit}::selection{color:#fff;background:#000}:focus-visible{outline-offset:2px;outline:2px solid #000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
@@ -0,0 +1 @@
1
+ import{w as i,v as o,M as c,x as l,S as p,y as m,O as x,i as u,F as d}from"./chunk-EPOLDU6W-B-j6nV8T.js";import{r as f,j as e}from"./files.browse-9p4xl9MV.js";import{s as h}from"./safe-area.module-CwCzHS6V.js";const j="/sw.js";function g(){return f.useEffect(()=>{"serviceWorker"in navigator&&navigator.serviceWorker.register(j)},[]),null}const y=()=>[{rel:"manifest",href:"/manifest.webmanifest"},{rel:"icon",href:"/favicon.ico",sizes:"any"},{rel:"icon",href:"/icon.svg",type:"image/svg+xml"},{rel:"icon",href:"/icon-192.png",type:"image/png",sizes:"192x192"},{rel:"icon",href:"/icon-512.png",type:"image/png",sizes:"512x512"},{rel:"apple-touch-icon",href:"/apple-touch-icon.png",sizes:"180x180"}];function E({children:s}){return e.jsxs("html",{lang:"en",children:[e.jsxs("head",{children:[e.jsx("meta",{charSet:"utf-8"}),e.jsx("meta",{name:"viewport",content:"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}),e.jsx("meta",{content:"#ffffff",name:"theme-color"}),e.jsx("meta",{content:"yes",name:"apple-mobile-web-app-capable"}),e.jsx("meta",{content:"default",name:"apple-mobile-web-app-status-bar-style"}),e.jsx("meta",{content:"Scriptorium",name:"apple-mobile-web-app-title"}),e.jsx(c,{}),e.jsx(l,{})]}),e.jsxs("body",{children:[s,e.jsx(p,{}),e.jsx(g,{}),e.jsx(m,{})]})]})}const k=i(function(){return e.jsx(x,{})}),R=o(function({error:t}){let r="Oops!",a="An unexpected error occurred.",n;return u(t)&&(r=t.status===404?"404":"Error",a=t.status===404?"The requested page could not be found.":t.statusText||a),e.jsxs("main",{className:`${h.pageShell} min-h-dvh bg-white text-black`,children:[e.jsxs("div",{className:"mx-auto flex max-w-3xl flex-col gap-6 border-t-2 border-black pt-8",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm uppercase tracking-[0.08em]",children:"Scriptorium"}),e.jsx("h1",{className:"text-3xl font-bold",children:r}),e.jsx("p",{className:"max-w-2xl text-base leading-6",children:a})]}),e.jsx(d,{action:"/logout",method:"post",children:e.jsx("button",{className:"min-h-11 bg-black px-3 py-2 text-base text-white",type:"submit",children:"Clear session"})})]}),n]})});export{R as ErrorBoundary,E as Layout,k as default,y as links};
@@ -0,0 +1 @@
1
+ function d(n){return n!==void 0}function i(n,e){return n.handle?.[e]!==void 0}function a(n,e){return n.id===e}function f(n,e){return{data:e.data,params:e.params,matches:n,getMatch(t){return n.find(r=>a(r,t))},requireMatch(t){const r=n.find(o=>a(o,t));if(!r)throw new Error(`Route handle match not found for id: ${t}`);return r}}}function c(n){return n}function l(n){return n.filter(d).map(e=>({...e,handle:e.handle}))}function s(n,e){const t=[...n].reverse().find(u=>i(u,e));if(!t?.handle)return;const r=t.handle[e];if(typeof r!="function")return r;const o=f(n,t);return r(o)}export{c as d,l as n,s as r};
@@ -0,0 +1 @@
1
+ :root{--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px)}._appShell_t9g4k_8{box-sizing:border-box;height:100dvh;padding-top:var(--safe-area-top);padding-right:var(--safe-area-right);padding-bottom:var(--safe-area-bottom);padding-left:var(--safe-area-left)}._appShellContent_t9g4k_17{flex:1 1 auto;min-height:0}._pageShell_t9g4k_22{padding-top:calc(2rem + var(--safe-area-top));padding-right:calc(1.5rem + var(--safe-area-right));padding-bottom:calc(2rem + var(--safe-area-bottom));padding-left:calc(1.5rem + var(--safe-area-left))}._sidebarShell_t9g4k_29{padding-top:calc(1rem + var(--safe-area-top));padding-right:calc(1rem + var(--safe-area-right));padding-bottom:calc(1rem + var(--safe-area-bottom));padding-left:calc(1rem + var(--safe-area-left))}._footerPad4_t9g4k_36{padding-bottom:calc(1rem + var(--safe-area-bottom))}@media(min-width:40rem){._pageShell_t9g4k_22{padding-top:calc(2.5rem + var(--safe-area-top));padding-right:calc(2rem + var(--safe-area-right));padding-bottom:calc(2.5rem + var(--safe-area-bottom));padding-left:calc(2rem + var(--safe-area-left))}}
@@ -0,0 +1 @@
1
+ const e="_appShell_t9g4k_8",l="_appShellContent_t9g4k_17",t="_pageShell_t9g4k_22",a="_sidebarShell_t9g4k_29",o="_footerPad4_t9g4k_36",p={appShell:e,appShellContent:l,pageShell:t,sidebarShell:a,footerPad4:o};export{p as s};
@@ -0,0 +1,12 @@
1
+ import{j as F,c as te,g as we,r as L}from"./files.browse-9p4xl9MV.js";import{c as N}from"./cn-Kn7NbJqM.js";const xe="_root_1ivur_1",Te="_scrollPane_1ivur_12",ge={root:xe,scrollPane:Te};function at({children:e}){return F.jsx("section",{className:N(ge.root,"relative flex min-h-0 min-w-0 flex-1 bg-white text-sm leading-6"),children:F.jsx("div",{className:"relative flex min-h-0 min-w-0 flex-1",children:e})})}var Z={exports:{}},ne;function Fe(){return ne||(ne=1,(function(e){var n=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var t=(function(r){var i=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,l=0,c={},a={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function s(o){return o instanceof u?new u(o.type,s(o.content),o.alias):Array.isArray(o)?o.map(s):o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(s){return Object.prototype.toString.call(s).slice(8,-1)},objId:function(s){return s.__id||Object.defineProperty(s,"__id",{value:++l}),s.__id},clone:function s(o,d){d=d||{};var p,f;switch(a.util.type(o)){case"Object":if(f=a.util.objId(o),d[f])return d[f];p={},d[f]=p;for(var A in o)o.hasOwnProperty(A)&&(p[A]=s(o[A],d));return p;case"Array":return f=a.util.objId(o),d[f]?d[f]:(p=[],d[f]=p,o.forEach(function(w,E){p[E]=s(w,d)}),p);default:return o}},getLanguage:function(s){for(;s;){var o=i.exec(s.className);if(o)return o[1].toLowerCase();s=s.parentElement}return"none"},setLanguage:function(s,o){s.className=s.className.replace(RegExp(i,"gi"),""),s.classList.add("language-"+o)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(p){var s=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(p.stack)||[])[1];if(s){var o=document.getElementsByTagName("script");for(var d in o)if(o[d].src==s)return o[d]}return null}},isActive:function(s,o,d){for(var p="no-"+o;s;){var f=s.classList;if(f.contains(o))return!0;if(f.contains(p))return!1;s=s.parentElement}return!!d}},languages:{plain:c,plaintext:c,text:c,txt:c,extend:function(s,o){var d=a.util.clone(a.languages[s]);for(var p in o)d[p]=o[p];return d},insertBefore:function(s,o,d,p){p=p||a.languages;var f=p[s],A={};for(var w in f)if(f.hasOwnProperty(w)){if(w==o)for(var E in d)d.hasOwnProperty(E)&&(A[E]=d[E]);d.hasOwnProperty(w)||(A[w]=f[w])}var T=p[s];return p[s]=A,a.languages.DFS(a.languages,function(R,C){C===T&&R!=s&&(this[R]=A)}),A},DFS:function s(o,d,p,f){f=f||{};var A=a.util.objId;for(var w in o)if(o.hasOwnProperty(w)){d.call(o,w,o[w],p||w);var E=o[w],T=a.util.type(E);T==="Object"&&!f[A(E)]?(f[A(E)]=!0,s(E,d,null,f)):T==="Array"&&!f[A(E)]&&(f[A(E)]=!0,s(E,d,w,f))}}},plugins:{},highlightAll:function(s,o){a.highlightAllUnder(document,s,o)},highlightAllUnder:function(s,o,d){var p={callback:d,container:s,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};a.hooks.run("before-highlightall",p),p.elements=Array.prototype.slice.apply(p.container.querySelectorAll(p.selector)),a.hooks.run("before-all-elements-highlight",p);for(var f=0,A;A=p.elements[f++];)a.highlightElement(A,o===!0,p.callback)},highlightElement:function(s,o,d){var p=a.util.getLanguage(s),f=a.languages[p];a.util.setLanguage(s,p);var A=s.parentElement;A&&A.nodeName.toLowerCase()==="pre"&&a.util.setLanguage(A,p);var w=s.textContent,E={element:s,language:p,grammar:f,code:w};function T(C){E.highlightedCode=C,a.hooks.run("before-insert",E),E.element.innerHTML=E.highlightedCode,a.hooks.run("after-highlight",E),a.hooks.run("complete",E),d&&d.call(E.element)}if(a.hooks.run("before-sanity-check",E),A=E.element.parentElement,A&&A.nodeName.toLowerCase()==="pre"&&!A.hasAttribute("tabindex")&&A.setAttribute("tabindex","0"),!E.code){a.hooks.run("complete",E),d&&d.call(E.element);return}if(a.hooks.run("before-highlight",E),!E.grammar){T(a.util.encode(E.code));return}if(o&&r.Worker){var R=new Worker(a.filename);R.onmessage=function(C){T(C.data)},R.postMessage(JSON.stringify({language:E.language,code:E.code,immediateClose:!0}))}else T(a.highlight(E.code,E.grammar,E.language))},highlight:function(s,o,d){var p={code:s,grammar:o,language:d};if(a.hooks.run("before-tokenize",p),!p.grammar)throw new Error('The language "'+p.language+'" has no grammar.');return p.tokens=a.tokenize(p.code,p.grammar),a.hooks.run("after-tokenize",p),u.stringify(a.util.encode(p.tokens),p.language)},tokenize:function(s,o){var d=o.rest;if(d){for(var p in d)o[p]=d[p];delete o.rest}var f=new b;return m(f,f.head,s),g(s,f,o,f.head,0),k(f)},hooks:{all:{},add:function(s,o){var d=a.hooks.all;d[s]=d[s]||[],d[s].push(o)},run:function(s,o){var d=a.hooks.all[s];if(!(!d||!d.length))for(var p=0,f;f=d[p++];)f(o)}},Token:u};r.Prism=a;function u(s,o,d,p){this.type=s,this.content=o,this.alias=d,this.length=(p||"").length|0}u.stringify=function s(o,d){if(typeof o=="string")return o;if(Array.isArray(o)){var p="";return o.forEach(function(T){p+=s(T,d)}),p}var f={type:o.type,content:s(o.content,d),tag:"span",classes:["token",o.type],attributes:{},language:d},A=o.alias;A&&(Array.isArray(A)?Array.prototype.push.apply(f.classes,A):f.classes.push(A)),a.hooks.run("wrap",f);var w="";for(var E in f.attributes)w+=" "+E+'="'+(f.attributes[E]||"").replace(/"/g,"&quot;")+'"';return"<"+f.tag+' class="'+f.classes.join(" ")+'"'+w+">"+f.content+"</"+f.tag+">"};function h(s,o,d,p){s.lastIndex=o;var f=s.exec(d);if(f&&p&&f[1]){var A=f[1].length;f.index+=A,f[0]=f[0].slice(A)}return f}function g(s,o,d,p,f,A){for(var w in d)if(!(!d.hasOwnProperty(w)||!d[w])){var E=d[w];E=Array.isArray(E)?E:[E];for(var T=0;T<E.length;++T){if(A&&A.cause==w+","+T)return;var R=E[T],C=R.inside,V=!!R.lookbehind,J=!!R.greedy,Se=R.alias;if(J&&!R.pattern.global){var ve=R.pattern.toString().match(/[imsuy]*$/)[0];R.pattern=RegExp(R.pattern.source,ve+"g")}for(var Q=R.pattern||R,I=p.next,_=f;I!==o.tail&&!(A&&_>=A.reach);_+=I.value.length,I=I.next){var D=I.value;if(o.length>s.length)return;if(!(D instanceof u)){var U=1,O;if(J){if(O=h(Q,_,s,V),!O||O.index>=s.length)break;var B=O.index,ke=O.index+O[0].length,$=_;for($+=I.value.length;B>=$;)I=I.next,$+=I.value.length;if($-=I.value.length,_=$,I.value instanceof u)continue;for(var M=I;M!==o.tail&&($<ke||typeof M.value=="string");M=M.next)U++,$+=M.value.length;U--,D=s.slice(_,$),O.index-=_}else if(O=h(Q,0,D,V),!O)continue;var B=O.index,j=O[0],z=D.slice(0,B),ee=D.slice(B+j.length),Y=_+D.length;A&&Y>A.reach&&(A.reach=Y);var H=I.prev;z&&(H=m(o,H,z),_+=z.length),S(o,H,U);var ye=new u(w,C?a.tokenize(j,C):j,Se,j);if(I=m(o,H,ye),ee&&m(o,I,ee),U>1){var W={cause:w+","+T,reach:Y};g(s,o,d,I.prev,_,W),A&&W.reach>A.reach&&(A.reach=W.reach)}}}}}}function b(){var s={value:null,prev:null,next:null},o={value:null,prev:s,next:null};s.next=o,this.head=s,this.tail=o,this.length=0}function m(s,o,d){var p=o.next,f={value:d,prev:o,next:p};return o.next=f,p.prev=f,s.length++,f}function S(s,o,d){for(var p=o.next,f=0;f<d&&p!==s.tail;f++)p=p.next;o.next=p,p.prev=o,s.length-=f}function k(s){for(var o=[],d=s.head.next;d!==s.tail;)o.push(d.value),d=d.next;return o}if(!r.document)return r.addEventListener&&(a.disableWorkerMessageHandler||r.addEventListener("message",function(s){var o=JSON.parse(s.data),d=o.language,p=o.code,f=o.immediateClose;r.postMessage(a.highlight(p,a.languages[d],d)),f&&r.close()},!1)),a;var v=a.util.currentScript();v&&(a.filename=v.src,v.hasAttribute("data-manual")&&(a.manual=!0));function y(){a.manual||a.highlightAll()}if(!a.manual){var x=document.readyState;x==="loading"||x==="interactive"&&v&&v.defer?document.addEventListener("DOMContentLoaded",y):window.requestAnimationFrame?window.requestAnimationFrame(y):window.setTimeout(y,16)}return a})(n);e.exports&&(e.exports=t),typeof te<"u"&&(te.Prism=t),t.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},t.languages.markup.tag.inside["attr-value"].inside.entity=t.languages.markup.entity,t.languages.markup.doctype.inside["internal-subset"].inside=t.languages.markup,t.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&amp;/,"&"))}),Object.defineProperty(t.languages.markup.tag,"addInlined",{value:function(i,l){var c={};c["language-"+l]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:t.languages[l]},c.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:c}};a["language-"+l]={pattern:/[\s\S]+/,inside:t.languages[l]};var u={};u[i]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return i}),"i"),lookbehind:!0,greedy:!0,inside:a},t.languages.insertBefore("markup","cdata",u)}}),Object.defineProperty(t.languages.markup.tag,"addAttribute",{value:function(r,i){t.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[i,"language-"+i],inside:t.languages[i]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),t.languages.html=t.languages.markup,t.languages.mathml=t.languages.markup,t.languages.svg=t.languages.markup,t.languages.xml=t.languages.extend("markup",{}),t.languages.ssml=t.languages.xml,t.languages.atom=t.languages.xml,t.languages.rss=t.languages.xml,(function(r){var i=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+i.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+i.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+i.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+i.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:i,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var l=r.languages.markup;l&&(l.tag.addInlined("style","css"),l.tag.addAttribute("style","css"))})(t),t.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},t.languages.javascript=t.languages.extend("clike",{"class-name":[t.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),t.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,t.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:t.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:t.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:t.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:t.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:t.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),t.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:t.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),t.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),t.languages.markup&&(t.languages.markup.tag.addInlined("script","javascript"),t.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),t.languages.js=t.languages.javascript,(function(){if(typeof t>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading…",i=function(v,y){return"✖ Error "+v+" while fetching file: "+y},l="✖ Error: File does not exist or is empty",c={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},a="data-src-status",u="loading",h="loaded",g="failed",b="pre[data-src]:not(["+a+'="'+h+'"]):not(['+a+'="'+u+'"])';function m(v,y,x){var s=new XMLHttpRequest;s.open("GET",v,!0),s.onreadystatechange=function(){s.readyState==4&&(s.status<400&&s.responseText?y(s.responseText):s.status>=400?x(i(s.status,s.statusText)):x(l))},s.send(null)}function S(v){var y=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(v||"");if(y){var x=Number(y[1]),s=y[2],o=y[3];return s?o?[x,Number(o)]:[x,void 0]:[x,x]}}t.hooks.add("before-highlightall",function(v){v.selector+=", "+b}),t.hooks.add("before-sanity-check",function(v){var y=v.element;if(y.matches(b)){v.code="",y.setAttribute(a,u);var x=y.appendChild(document.createElement("CODE"));x.textContent=r;var s=y.getAttribute("data-src"),o=v.language;if(o==="none"){var d=(/\.(\w+)$/.exec(s)||[,"none"])[1];o=c[d]||d}t.util.setLanguage(x,o),t.util.setLanguage(y,o);var p=t.plugins.autoloader;p&&p.loadLanguages(o),m(s,function(f){y.setAttribute(a,h);var A=S(y.getAttribute("data-range"));if(A){var w=f.split(/\r\n?|\n/g),E=A[0],T=A[1]==null?w.length:A[1];E<0&&(E+=w.length),E=Math.max(0,Math.min(E-1,w.length)),T<0&&(T+=w.length),T=Math.max(0,Math.min(T,w.length)),f=w.slice(E,T).join(`
2
+ `),y.hasAttribute("data-start")||y.setAttribute("data-start",String(E+1))}x.textContent=f,t.highlightElement(x)},function(f){y.setAttribute(a,g),x.textContent=f})}}),t.plugins.fileHighlight={highlight:function(y){for(var x=(y||document).querySelectorAll(b),s=0,o;o=x[s++];)t.highlightElement(o)}};var k=!1;t.fileHighlight=function(){k||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),k=!0),t.plugins.fileHighlight.highlight.apply(this,arguments)}})()})(Z)),Z.exports}var Le=Fe();const P=we(Le);(function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",t={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:t,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:t}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},t.inside=e.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],l=r.variable[1].inside,c=0;c<i.length;c++)l[i[c]]=e.languages.bash[i[c]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash})(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};(function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))})(Prism);(function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var n={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(n).forEach(function(t){var r=n[t],i=[];/^\w+$/.test(t)||i.push(/\w+/.exec(t)[0]),t==="diff"&&i.push("bold"),e.languages.diff[t]={pattern:RegExp("^(?:["+r+`].*(?:\r
3
+ ?|
4
+ |(?![\\s\\S])))+`,"m"),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(t)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:n})})(Prism);Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/});Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}});delete Prism.languages.go["class-name"];var re={},ae;function Re(){return ae||(ae=1,(function(e){var n=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,t=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,r={pattern:RegExp(/(^|[^\w.])/.source+t+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(/(^|[^\w.])/.source+t+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:r.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+t+/[A-Z]\w*\b/.source),lookbehind:!0,inside:r.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+t+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+t+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return n.source})),lookbehind:!0,inside:{punctuation:/\./}}})})(Prism)),re}Re();Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;(function(e){var n=e.util.clone(e.languages.javascript),t=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,i=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function l(u,h){return u=u.replace(/<S>/g,function(){return t}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return i}),RegExp(u,h)}i=l(i).source,e.languages.jsx=e.languages.extend("markup",n),e.languages.jsx.tag.pattern=l(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=n.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:l(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:l(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var c=function(u){return u?typeof u=="string"?u:typeof u.content=="string"?u.content:u.content.map(c).join(""):""},a=function(u){for(var h=[],g=0;g<u.length;g++){var b=u[g],m=!1;if(typeof b!="string"&&(b.type==="tag"&&b.content[0]&&b.content[0].type==="tag"?b.content[0].content[0].content==="</"?h.length>0&&h[h.length-1].tagName===c(b.content[0].content[1])&&h.pop():b.content[b.content.length-1].content==="/>"||h.push({tagName:c(b.content[0].content[1]),openedBraces:0}):h.length>0&&b.type==="punctuation"&&b.content==="{"?h[h.length-1].openedBraces++:h.length>0&&h[h.length-1].openedBraces>0&&b.type==="punctuation"&&b.content==="}"?h[h.length-1].openedBraces--:m=!0),(m||typeof b=="string")&&h.length>0&&h[h.length-1].openedBraces===0){var S=c(b);g<u.length-1&&(typeof u[g+1]=="string"||u[g+1].type==="plain-text")&&(S+=c(u[g+1]),u.splice(g+1,1)),g>0&&(typeof u[g-1]=="string"||u[g-1].type==="plain-text")&&(S=c(u[g-1])+S,u.splice(g-1,1),g--),u[g]=new e.Token("plain-text",S,null,S)}b.content&&typeof b.content!="string"&&a(b.content)}};e.hooks.add("after-tokenize",function(u){u.language!=="jsx"&&u.language!=="tsx"||a(u.tokens)})})(Prism);(function(e){var n=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function t(g){return g=g.replace(/<inner>/g,function(){return n}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+g+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,i=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),l=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+i+l+"(?:"+i+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+i+l+")(?:"+i+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+i+")"+l+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+i+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:t(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:t(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(g){["url","bold","italic","strike","code-snippet"].forEach(function(b){g!==b&&(e.languages.markdown[g].inside.content.inside[b]=e.languages.markdown[b])})}),e.hooks.add("after-tokenize",function(g){if(g.language!=="markdown"&&g.language!=="md")return;function b(m){if(!(!m||typeof m=="string"))for(var S=0,k=m.length;S<k;S++){var v=m[S];if(v.type!=="code"){b(v.content);continue}var y=v.content[1],x=v.content[3];if(y&&x&&y.type==="code-language"&&x.type==="code-block"&&typeof y.content=="string"){var s=y.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp");s=(/[a-z][\w-]*/i.exec(s)||[""])[0].toLowerCase();var o="language-"+s;x.alias?typeof x.alias=="string"?x.alias=[x.alias,o]:x.alias.push(o):x.alias=[o]}}}b(g.tokens)}),e.hooks.add("wrap",function(g){if(g.type==="code-block"){for(var b="",m=0,S=g.classes.length;m<S;m++){var k=g.classes[m],v=/language-(.+)/.exec(k);if(v){b=v[1];break}}var y=e.languages[b];if(y)g.content=e.highlight(h(g.content),y,b);else if(b&&b!=="none"&&e.plugins.autoloader){var x="md-"+new Date().valueOf()+"-"+Math.floor(Math.random()*1e16);g.attributes.id=x,e.plugins.autoloader.loadLanguages(b,function(){var s=document.getElementById(x);s&&(s.innerHTML=e.highlight(s.textContent,e.languages[b],b))})}}});var c=RegExp(e.languages.markup.tag.pattern.source,"gi"),a={amp:"&",lt:"<",gt:">",quot:'"'},u=String.fromCodePoint||String.fromCharCode;function h(g){var b=g.replace(c,"");return b=b.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(m,S){if(S=S.toLowerCase(),S[0]==="#"){var k;return S[1]==="x"?k=parseInt(S.slice(2),16):k=Number(S.slice(1)),u(k)}else{var v=a[S];return v||m}}),b}e.languages.md=e.languages.markdown})(Prism);Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(n,t){var r={};r["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[t]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};i["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var l={};l[n]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:i},Prism.languages.insertBefore("markup","cdata",l)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,n){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:Prism.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;var ie={},se;function Ie(){return se||(se=1,Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python),ie}Ie();var oe={},ue;function Ne(){return ue||(ue=1,(function(e){for(var n=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,t=0;t<2;t++)n=n.replace(/<self>/g,function(){return n});n=n.replace(/<self>/g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+n),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string})(Prism)),oe}Ne();Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};var le={},ce;function Oe(){return ce||(ce=1,(function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var n=e.languages.extend("typescript",{});delete n["class-name"],e.languages.typescript["class-name"].inside=n,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),e.languages.ts=e.languages.typescript})(Prism)),le}Oe();(function(e){var n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var t=e.languages.tsx.tag;t.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0})(Prism);(function(e){var n=/[*&][^\s[\]{},]+/,t=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+t.source+"(?:[ ]+"+n.source+")?|"+n.source+"(?:[ ]+"+t.source+")?)",i=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),l=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function c(a,u){u=(u||"").replace(/m/g,"")+"m";var h=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return a});return RegExp(h,u)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+i+"|"+l+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:c(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:c(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:c(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:c(l),lookbehind:!0,greedy:!0},number:{pattern:c(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:t,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml})(Prism);function _e(e){return!e||!(e in P.languages)?null:P.languages[e]}function fe(e){const n=[[]];function t(l){for(let c=0;c<l;c+=1)n.push([])}function r(l){const c=l.split(`
5
+ `);c.forEach((a,u)=>{a&&n[n.length-1]?.push(a),u<c.length-1&&t(1)})}function i(l){const c=Array.isArray(l.content)?l.content:[l.content],a=fe(c);a.forEach((u,h)=>{u.length>0&&n[n.length-1]?.push(new P.Token(l.type,u.length===1?u[0]??"":u,l.alias,"")),h<a.length-1&&t(1)})}for(const l of e){if(typeof l=="string"){r(l);continue}i(l)}return n}function Ce(e,n){const t=_e(n);if(!t||!n)return null;const r=P.util.encode(P.tokenize(e,t));return fe(r).map(i=>P.Token.stringify(i,n))}function he(e){return e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("--- ")||e.startsWith("+++ ")||e.startsWith("old file mode")||e.startsWith("new file mode")||e.startsWith("deleted file mode")||e.startsWith("copy from")||e.startsWith("copy to")||e.startsWith("rename from")||e.startsWith("rename to")}function me(e){const n=/^@@ -(?<oldStart>\d+)(?:,(?<oldCount>\d+))? \+(?<newStart>\d+)(?:,(?<newCount>\d+))? @@/.exec(e);return n?.groups?{oldLine:Number(n.groups.oldStart),newLine:Number(n.groups.newStart),oldCount:Number(n.groups.oldCount??1),newCount:Number(n.groups.newCount??1)}:null}function $e(e){const n=e.replace(/\r\n/g,`
6
+ `),t=n.length?n.split(`
7
+ `):[""],r=[];let i=0,l=0,c=null;for(const a of t){if(a.startsWith("@@")){const g=me(a);if(!g)continue;c={oldStart:g.oldLine,oldCount:g.oldCount,newStart:g.newLine,newCount:g.newCount,lines:[]},i=g.oldLine,l=g.newLine,r.push(c);continue}if(!c||he(a)||a==="\")continue;const u=a.at(0)??"",h=a.slice(1);if(u==="+"){c.lines.push({kind:"addition",content:h,marker:u,oldLine:null,newLine:l}),l+=1;continue}if(u==="-"){c.lines.push({kind:"deletion",content:h,marker:u,oldLine:i,newLine:null}),i+=1;continue}c.lines.push({kind:"context",content:u===" "?h:a,marker:u===" "?u:"",oldLine:u===" "?i:null,newLine:u===" "?l:null}),u===" "&&(i+=1,l+=1)}return r}function it(e){const n=e.replace(/\r\n/g,`
8
+ `),t=n.length?n.split(`
9
+ `):[""],r=[];let i=0,l=0,c=!1;for(const a of t){if(a.startsWith("@@")){const g=me(a);g&&(i=g.oldLine,l=g.newLine,c=!0),r.push({kind:"hunk",content:a,marker:"@@",oldLine:null,newLine:null});continue}if(he(a)){r.push({kind:"meta",content:a,marker:"",oldLine:null,newLine:null});continue}if(a==="\"){r.push({kind:"meta",content:a,marker:"",oldLine:null,newLine:null});continue}if(!c){r.push({kind:"meta",content:a,marker:"",oldLine:null,newLine:null});continue}const u=a.at(0)??"",h=a.slice(1);if(u==="+"){r.push({kind:"addition",content:h,marker:u,oldLine:null,newLine:l}),l+=1;continue}if(u==="-"){r.push({kind:"deletion",content:h,marker:u,oldLine:i,newLine:null}),i+=1;continue}if(u===" "){r.push({kind:"context",content:h,marker:u,oldLine:i,newLine:l}),i+=1,l+=1;continue}r.push({kind:"context",content:a,marker:"",oldLine:null,newLine:null})}return r}const De=.015;function be(e){const n=e.replace(/\r\n/g,`
10
+ `);return n.length?n.split(`
11
+ `):[""]}function Ee(e){return be(e).map((n,t)=>({key:`text-${t+1}`,kind:"text",content:n,currentFileLine:t+1,leftLine:t+1,rightLine:t+1,marker:"",chunkStartTone:null,chunkEndTone:null}))}function Pe(e){return e==="addition"||e==="deletion"?e:null}function Me(e){let n=-1,t=null,r=!1;for(let i=0;i<e.length;i+=1){const l=Pe(e[i]?.kind??"text");if(!l){if(n>=0){const c=r?null:t,a=t;c&&(e[n]={...e[n],chunkStartTone:c}),a&&(e[i-1]={...e[i-1],chunkEndTone:a}),n=-1,t=null,r=!1}continue}if(n===-1){n=i,t=l,r=!1;continue}l!==t&&(t&&(r||(e[n]={...e[n],chunkStartTone:t}),e[i-1]={...e[i-1],chunkEndTone:t}),n=i,t=l,r=!0)}if(n>=0){const i=r?null:t,l=t;i&&(e[n]={...e[n],chunkStartTone:i}),l&&(e[e.length-1]={...e[e.length-1],chunkEndTone:l})}return e}function Ue(e,n,t){const r=be(e),i=[],l=$e(n);let c=1;function a(u){i.push({key:`plain-${u}`,kind:"text",content:r[u-1]??"",currentFileLine:u,leftLine:u,rightLine:u,marker:"",chunkStartTone:null,chunkEndTone:null})}for(const u of l){const h=[],g=Math.max(t==="new"?u.newStart:u.oldStart,1);for(;c<g;)a(c),c+=1;let b=g;for(const m of u.lines){if(t==="new"&&m.kind==="deletion"){h.push({key:`chunk-delete-${m.oldLine??0}-${m.content}`,kind:"deletion",content:m.content,currentFileLine:null,leftLine:m.oldLine,rightLine:null,marker:"-",chunkStartTone:null,chunkEndTone:null});continue}if(t==="old"&&m.kind==="addition"){h.push({key:`chunk-add-${m.newLine??0}-${m.content}`,kind:"addition",content:m.content,currentFileLine:m.newLine,leftLine:null,rightLine:m.newLine,marker:"+",chunkStartTone:null,chunkEndTone:null});continue}const S=r[b-1]??m.content,k=m.kind==="addition"||m.kind==="deletion"?m.kind:"context";h.push({key:`chunk-${t}-${b}-${k}`,kind:k,content:S,currentFileLine:t==="new"?b:m.newLine,leftLine:t==="new"?m.oldLine:b,rightLine:t==="new"?b:m.newLine,marker:m.kind==="addition"?"+":m.kind==="deletion"?"-":"",chunkStartTone:null,chunkEndTone:null}),b+=1}i.push(...Me(h)),c=b}for(;c<=r.length;)a(c),c+=1;return i.length===0?Ee(e):i}function Be(e){if(e.length===0)return[];const n=[];for(let t=0;t<e.length;t+=1){const r=e[t];if(r?.kind!=="addition"&&r?.kind!=="deletion")continue;const i=t,l=r.kind;for(;t+1<e.length&&e[t+1]?.kind===l;)t+=1;const c=t-i+1;n.push({kind:l,top:i/e.length,height:Math.max(c/e.length,De)})}return n}const de={js:"javascript",cjs:"javascript",mjs:"javascript",ts:"typescript",tsx:"tsx",jsx:"jsx",json:"json",css:"css",scss:"scss",sass:"scss",less:"less",html:"markup",htm:"markup",xml:"markup",yml:"yaml",yaml:"yaml",md:"markdown",markdown:"markdown",sh:"bash",bash:"bash",zsh:"bash",py:"python",rb:"ruby",rs:"rust",go:"go",java:"java",kt:"kotlin",swift:"swift",php:"php",c:"c",cpp:"cpp",cc:"cpp",cxx:"cpp",h:"c",hpp:"cpp",cs:"csharp",sql:"sql",toml:"toml",ini:"ini",dockerfile:"docker"};function je(e){return(e.trim().split(/[\\/]/).at(-1)??"").toLowerCase()}function He(e,n){const t=je(e);if(!t)return null;if(t==="dockerfile")return"docker";const r=t.includes(".")?t.split(".").at(-1):"";return r&&r in de?de[r]??null:null}function Ge(e){return e.map((n,t)=>{if(n.currentFileLine!==null)return n.currentFileLine;for(let r=t+1;r<e.length;r+=1){const i=e[r]?.currentFileLine;if(i!=null)return i}for(let r=t-1;r>=0;r-=1){const i=e[r]?.currentFileLine;if(i!=null)return i}return null})}function st({children:e,content:n,diffContent:t,diffSide:r="new",fileName:i,language:l,mode:c="text"}){const a=L.useMemo(()=>l??He(i??""),[i,l]),u=L.useMemo(()=>c==="diff"&&t?Ue(n,t,r):Ee(n),[n,t,r,c]),h=L.useMemo(()=>{const m=Ge(u);return u.map((S,k)=>({...S,currentFileLine:m[k]??null}))},[u]),g=L.useMemo(()=>c==="diff"?Be(h):[],[c,h]),b=L.useMemo(()=>Ce(h.map(m=>m.content).join(`
12
+ `),a),[a,h]);return e({changeMarkers:g,highlightedLines:b,lines:h})}function X(e){return e===null?"":String(e)}function ze(e){return N("grid min-w-full w-max items-center",{"border-t-2 border-t-[var(--color-accent-green)]":e.chunkStartTone==="addition","border-t-2 border-t-[var(--color-accent-red)]":e.chunkStartTone==="deletion","border-b-2 border-b-[var(--color-accent-green)]":e.chunkEndTone==="addition","border-b-2 border-b-[var(--color-accent-red)]":e.chunkEndTone==="deletion"})}function Ye(e){return e==="addition"?"bg-[var(--color-accent-green)] text-white":e==="deletion"?"bg-[var(--color-accent-red)] text-white":"text-black/60"}function q(e,n){return N("select-none flex h-full w-full items-center self-stretch px-2 text-sm leading-6",n==="center"?"justify-center":"justify-end",Ye(e))}function We(e){return e==="addition"||e==="deletion"?"text-white":"text-black/60"}function Ze(e){return N("whitespace-pre px-2",{"opacity-80":e==="deletion"})}function Xe(e,n){return N({"bg-[color-mix(in_srgb,var(--color-accent-lemon)_28%,white)]":n,"cursor-pointer active:bg-[color-mix(in_srgb,var(--color-accent-sky)_14%,white)]":!n&&e})}function G(e){return N({"cursor-pointer active:bg-[color-mix(in_srgb,var(--color-accent-sky)_14%,white)]":e})}function qe({line:e,isSelected:n,markup:t,onSelectLine:r,rowIndex:i,showDualGutters:l,showLineNumbers:c,showMarkers:a,gridTemplateColumns:u}){const h=!!r,g=N(ze(e),Xe(h,n));function b(){r&&r({currentFileLine:e.currentFileLine,rowIndex:i})}return F.jsxs("div",{"aria-selected":n||void 0,className:g,style:{gridTemplateColumns:u},children:[l?F.jsxs(F.Fragment,{children:[a?F.jsx("span",{"aria-hidden":"true",className:N(q(e.kind,"center"),"font-bold",We(e.kind),G(h)),onClick:b,children:e.marker||" "}):null,F.jsx("span",{"aria-hidden":"true",className:N(q(e.kind,"right"),G(e.leftLine!==null&&h)),onClick:b,children:c?X(e.leftLine):""}),F.jsx("span",{"aria-hidden":"true",className:N(q(e.kind,"right"),G(e.rightLine!==null&&h)),onClick:b,children:c?X(e.rightLine):""})]}):F.jsx("span",{"aria-hidden":"true",className:N("select-none flex h-full w-full items-center justify-end pr-2 text-right text-sm leading-6 opacity-60",!c&&"sr-only",G(e.leftLine!==null&&h)),onClick:b,children:X(c?e.leftLine:null)}),F.jsx("span",{className:Ze(e.kind),children:t?F.jsx("code",{dangerouslySetInnerHTML:{__html:t}}):F.jsx("code",{children:e.content===""?" ":e.content})})]},e.key)}function Ke(e){return!e||e<1?1:String(e).length}function pe(e,n){return`calc(${e.reduce((r,i)=>{const l=n==="left"?i.leftLine:i.rightLine;return Math.max(r,Ke(l))},1)}ch + 1rem)`}function Ve(e,n){return n?e>=n.start&&e<=n.end:!1}function ot({highlightedLines:e,lines:n,mode:t="text",onSelectLine:r,scrollPaneRef:i,selectedRowRange:l,showDualGutters:c,showLineNumbers:a,showDiffMarkers:u}){const h=l?{start:Math.min(l.start,l.end),end:Math.max(l.start,l.end)}:null,g=pe(n,"left"),b=pe(n,"right"),m=t==="diff"&&u,S=c?m?`1.5rem ${g} ${b} minmax(0, 1fr)`:`${g} ${b} minmax(0, 1fr)`:`${g} minmax(0, 1fr)`;return F.jsx("div",{ref:i,className:N(ge.scrollPane,"min-h-0 min-w-0 flex-1 overflow-auto pr-6"),children:F.jsx("div",{className:"inline-block min-w-full w-max align-top",children:n.map((k,v)=>F.jsx(qe,{gridTemplateColumns:S,isSelected:Ve(v,h),line:k,markup:e?.[v]??null,onSelectLine:r,rowIndex:v,showDualGutters:c,showLineNumbers:a,showMarkers:m},k.key))})})}const Je=24;function K(e,n){const t=n.clientHeight,r=Math.max(e.scrollHeight-e.clientHeight,0);if(t<=0||r<=0||e.scrollHeight<=e.clientHeight)return{topPx:0,heightPx:t};const i=e.clientHeight/e.scrollHeight,l=Math.min(Math.max(t*i,Je),t);return{topPx:Math.max(t-l,0)*(e.scrollTop/r),heightPx:l}}function Qe(e,n,t){const{topPx:r,heightPx:i}=K(n,t);e.style.top=`${r}px`,e.style.height=`${i}px`}function Ae(e,n,t){const r=n.clientHeight,i=Math.max(e.scrollHeight-e.clientHeight,0);if(r<=0||i<=0){e.scrollTo({top:0});return}const{heightPx:l}=K(e,n),c=Math.max(r-l,0),a=Math.min(Math.max(t,0),c),u=c>0?a/c:0;e.scrollTo({top:u*i})}function et(e,n,t){const r=n.getBoundingClientRect(),{heightPx:i}=K(e,n),l=t-r.top;Ae(e,n,l-i/2)}function tt(e){const n=L.useRef(null),t=L.useRef(null),r=L.useRef(null),i=L.useRef(null),l=L.useRef(null),c=L.useRef(!1),a=L.useCallback(()=>{i.current!==null&&cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>{i.current=null;const m=n.current,S=t.current,k=r.current;!m||!S||!k||Qe(k,m,S)})},[]),u=L.useCallback(m=>{if(c.current){c.current=!1;return}const S=n.current,k=t.current;!S||!k||(et(S,k,m.clientY),a())},[a]),h=L.useCallback(m=>{const S=l.current,k=n.current,v=t.current;if(!S||S.pointerId!==m.pointerId||!k||!v)return;const y=v.getBoundingClientRect();S.moved=!0,Ae(k,v,m.clientY-y.top-S.offsetY),a()},[a]),g=L.useCallback(()=>{const m=l.current?.moved??!1;l.current=null,c.current=m,window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g)},[h]),b=L.useCallback(m=>{const S=t.current,k=r.current;if(!S||!k)return;m.preventDefault(),m.stopPropagation();const v=k.getBoundingClientRect();l.current={moved:!1,offsetY:m.clientY-v.top,pointerId:m.pointerId},c.current=!1,window.addEventListener("pointermove",h),window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g)},[h,g]);return L.useEffect(()=>{const m=n.current,S=t.current;if(!m||!S)return;a();const k=()=>{a()};m.addEventListener("scroll",k,{passive:!0});const v=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>{a()});return v?.observe(m),v?.observe(S),window.addEventListener("resize",a),()=>{g(),m.removeEventListener("scroll",k),v?.disconnect(),window.removeEventListener("resize",a),i.current!==null&&(cancelAnimationFrame(i.current),i.current=null)}},[a,g,...e]),{scrollPaneRef:n,indicatorRailRef:t,indicatorThumbRef:r,handleIndicatorClick:u,handleIndicatorThumbPointerDown:b}}function ut({children:e,mode:n,changeMarkers:t}){const{scrollPaneRef:r,indicatorRailRef:i,indicatorThumbRef:l,handleIndicatorClick:c,handleIndicatorThumbPointerDown:a}=tt([t]),u=F.jsx("div",{className:"pointer-events-none absolute top-0 right-0 bottom-0 w-10 pb-4",children:F.jsxs("button",{type:"button",ref:i,"data-testid":"code-viewer-scroll-indicator",className:"pointer-events-auto relative h-full min-h-11 w-full p-0","aria-label":"Scroll to a position in the file",onClick:c,children:[F.jsx("span",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 bottom-0 left-1/2 w-3 -translate-x-1/2 border-2 border-black bg-white"}),n==="diff"?t.map((h,g)=>F.jsx("span",{"data-testid":`code-viewer-change-marker-${h.kind}`,"aria-hidden":"true",className:`pointer-events-none absolute top-0 left-1/2 block min-h-1.5 w-3 -translate-x-1/2 border-y-2 border-black ${h.kind==="addition"?"bg-[var(--color-accent-green)]":"bg-[var(--color-accent-red)]"}`,style:{top:`${h.top*100}%`,height:`${h.height*100}%`}},`${h.kind}-${g}`)):null,F.jsx("span",{ref:l,"data-testid":"code-viewer-scroll-thumb",className:"absolute top-0 left-1/2 block w-8 -translate-x-1/2 cursor-grab touch-none active:cursor-grabbing",onPointerDown:a,children:F.jsx("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-y-0 left-1/2 w-5 -translate-x-1/2 border-2 border-black bg-transparent"})})]})});return e({indicator:u,scrollPaneRef:r})}export{at as C,st as L,ut as S,ot as a,qe as b,He as d,Ce as g,it as p};
@@ -0,0 +1 @@
1
+ ._root_1ivur_1 code[class*=language-],._root_1ivur_1 pre[class*=language-],._root_1ivur_1 code{color:#000;background:none;font-family:var(--font-mono);font-style:normal;font-weight:400;text-shadow:none}._scrollPane_1ivur_12{-ms-overflow-style:none;scrollbar-width:none}._scrollPane_1ivur_12::-webkit-scrollbar{display:none}._root_1ivur_1 .token.comment,._root_1ivur_1 .token.block-comment,._root_1ivur_1 .token.prolog,._root_1ivur_1 .token.doctype,._root_1ivur_1 .token.cdata{color:#000;font-style:italic;font-weight:700;opacity:1}._root_1ivur_1 .token.punctuation,._root_1ivur_1 .token.operator,._root_1ivur_1 .token.entity,._root_1ivur_1 .token.namespace{color:#000;font-style:normal;font-weight:400;opacity:.55}._root_1ivur_1 .token.keyword,._root_1ivur_1 .token.atrule,._root_1ivur_1 .token.attr-value,._root_1ivur_1 .token.variable,._root_1ivur_1 .token.parameter,._root_1ivur_1 .token.url{color:var(--color-accent-dark-gray);font-style:normal;font-weight:700}._root_1ivur_1 .token.function,._root_1ivur_1 .token.function-name{color:var(--color-accent-navy);font-style:normal;font-weight:700}._root_1ivur_1 .token.bold{color:#000;font-weight:700}._root_1ivur_1 .token.italic{color:#000;font-style:italic}._root_1ivur_1 .token.class-name,._root_1ivur_1 .token.function-name,._root_1ivur_1 .token.selector,._root_1ivur_1 .token.tag{color:var(--color-accent-navy);font-style:normal;font-weight:700}._root_1ivur_1 .token.string,._root_1ivur_1 .token.char,._root_1ivur_1 .token.number,._root_1ivur_1 .token.boolean,._root_1ivur_1 .token.constant,._root_1ivur_1 .token.symbol,._root_1ivur_1 .token.regex,._root_1ivur_1 .token.inserted,._root_1ivur_1 .token.deleted{color:var(--color-accent-orange-red);font-style:normal;font-weight:700}._root_1ivur_1 .token.property,._root_1ivur_1 .token.attr-name,._root_1ivur_1 .token.builtin,._root_1ivur_1 .token.important{color:var(--color-accent-dark-gray);font-style:normal;font-weight:700}
@@ -0,0 +1 @@
1
+ import{r,j as c}from"./files.browse-9p4xl9MV.js";const m=24;function E({children:i,footer:u,header:a,stickToBottom:n=!1}){const s=r.useRef(null),f=r.useRef(!1),t=r.useRef(!0),l=r.useCallback(()=>{const e=s.current;if(!e){t.current=!0;return}const d=e.scrollHeight-e.scrollTop-e.clientHeight;t.current=d<=m},[]),o=r.useCallback(()=>{const e=s.current;e&&(e.scrollTop=e.scrollHeight,t.current=!0,f.current=!0)},[]);return r.useEffect(()=>{if(!n)return;const e=s.current;if(e)return l(),e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)},[n,l]),r.useEffect(()=>{if(!n||f.current&&!t.current)return;const e=window.requestAnimationFrame(o);return()=>window.cancelAnimationFrame(e)},[i,o,n]),r.useEffect(()=>{if(!n)return;const e=()=>{t.current&&window.requestAnimationFrame(o)};return window.addEventListener("resize",e),window.visualViewport?.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),window.visualViewport?.removeEventListener("resize",e)}},[o,n]),c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[a?c.jsx("div",{className:"border-b-2 border-black px-6 sm:px-8",children:a}):null,c.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto",ref:s,children:i}),u?c.jsx("footer",{className:"mt-auto",children:u}):null]})}export{E as S};
@@ -0,0 +1 @@
1
+ function t(e){return e?.title?.trim()||e?.id?.slice(0,12)||"Session"}function s(e){return[{label:e.instanceName?.trim()||"Instance",...e.instanceId?{to:`/instances/${e.instanceId}`}:{}},{label:t(e.session),...e.instanceId&&e.sessionId?{to:`/instances/${e.instanceId}/sessions/${e.sessionId}`}:{}}]}function o(e,i){const n=`/instances/${e}/sessions/${i}`;return[{icon:"mdi:message-outline",label:"Chat transcript",to:n,end:!0},{icon:"mdi:source-branch",label:"Git view",to:`${n}/git`,end:!0},{icon:"mdi:file-document-multiple-outline",label:"Files view",to:`${n}/files`,end:!0}]}export{o as a,s as g};
@@ -0,0 +1 @@
1
+ import{r as a,j as m}from"./files.browse-9p4xl9MV.js";import{a as w,n as E,s as R,l as h,u as C}from"./instance-events-provider-DTYnvumj.js";import{i as k,t as g}from"./sidebar-DRhB33rT.js";const D=w({type:h("session.read"),instanceId:R(),sessionId:R(),lastReadAt:E()}),b=a.createContext(null);function P(e,s){return s?!(s.instanceId&&s.instanceId!==e.instanceId||s.sessionId&&s.sessionId!==e.sessionId):!0}function J({children:e}){const s=a.useRef(null),r=a.useRef(new Map),o=a.useRef(0),i=a.useCallback(d=>{for(const u of r.current.values())P(d,u.filter)&&u.handler(d)},[]);a.useEffect(()=>{const d=new EventSource("/session-read-status/events");return s.current=d,d.onmessage=u=>{try{const c=D.safeParse(JSON.parse(u.data));if(!c.success){console.error("[session read events] Event did not match its schema.",{error:c.error.format(),raw:u.data});return}i(c.data)}catch(c){console.error("[session read events] Failed to parse SSE payload.",{error:c,raw:u.data})}},()=>{d.close(),s.current=null}},[i]);const l=a.useCallback((d,u)=>{const c=o.current;return o.current+=1,r.current.set(c,{filter:u,handler:d}),()=>{r.current.delete(c)}},[]),f=a.useMemo(()=>({subscribe:l}),[l]);return m.jsx(b.Provider,{value:f,children:e})}function j(e,s){const r=a.useContext(b),o=a.useRef(e);o.current=e,a.useEffect(()=>{if(!r)throw new Error("useReadStatusEvents must be used within a ReadStatusEventsProvider.");return r.subscribe(i=>o.current(i),s)},[r,s?.instanceId,s?.sessionId])}const A=a.createContext(null),S=a.createContext(null),v=a.createContext(null);function y(e,s){return s}function I(e){switch(e.type){case"session.created":case"session.updated":return e.properties.info.time.updated??e.properties.info.time.created;case"message.updated":return e.properties.info.time.created;case"message.part.updated":{const s="time"in e.properties.part?e.properties.part.time:void 0;if(s&&typeof s=="object"){const r="start"in s?s.start:null,o="end"in s?s.end:null;return typeof o=="number"?o:typeof r=="number"?r:Date.now()}return Date.now()}default:return Date.now()}}function M(e,s){switch(s.type){case"reset":return s.sessions;case"mark-read":{const r=e[s.sessionId];return!r||r.lastReadAt!==null&&r.lastReadAt>=s.lastReadAt?e:{...e,[s.sessionId]:{...r,lastReadAt:s.lastReadAt}}}case"update":{const r=e[s.sessionId],o=s.state;if(o===null){if(!(s.sessionId in e))return e;const{[s.sessionId]:l,...f}=e;return f}const i={id:s.sessionId,title:r?.title??null,directory:r?.directory??null,createdAt:r?.createdAt??null,updatedAt:r?.updatedAt??null,lastReadAt:r?.lastReadAt??null,...o};return r?.title===i.title&&r?.directory===i.directory&&r?.createdAt===i.createdAt&&r?.updatedAt===i.updatedAt&&r?.lastReadAt===i.lastReadAt?e:{...e,[s.sessionId]:i}}}}function N({children:e,initialSessions:s}){const[r,o]=a.useReducer(M,s),i=a.useRef(new Map),l=a.useRef(0);a.useEffect(()=>{o({type:"reset",sessions:s})},[s]);const f=a.useCallback((t,n)=>{const p=l.current;return l.current+=1,i.current.set(p,{filter:n,handler:t}),()=>{i.current.delete(p)}},[]),d=a.useCallback(t=>{for(const n of i.current.values())n.filter?.instanceId&&n.filter.instanceId!==t.instanceId||n.filter?.sessionId&&n.filter.sessionId!==t.sessionId||n.handler(t)},[]),u=a.useCallback((t,n,p=Date.now())=>{o({type:"mark-read",sessionId:y(t,n),lastReadAt:p})},[]),c=a.useMemo(()=>({subscribe:f}),[f]),x=a.useMemo(()=>({markReadOptimistic:u}),[u]);return j(t=>{o({type:"update",sessionId:t.sessionId,state:{lastReadAt:t.lastReadAt}})}),C(t=>{switch(t.type){case"session.deleted":o({type:"update",sessionId:t.properties.info.id,state:null});return;case"session.created":case"session.updated":{const n=I(t);o({type:"update",sessionId:t.properties.info.id,state:{...g(t.properties.info),updatedAt:n}}),d({instanceId:t.instanceId,sessionId:t.properties.info.id,updatedAt:n});return}case"message.updated":{const n=I(t);o({type:"update",sessionId:t.properties.info.sessionID,state:{updatedAt:n}}),d({instanceId:t.instanceId,sessionId:t.properties.info.sessionID,updatedAt:n});return}case"message.part.updated":{const n=I(t);o({type:"update",sessionId:t.properties.part.sessionID,state:{updatedAt:n}}),d({instanceId:t.instanceId,sessionId:t.properties.part.sessionID,updatedAt:n});return}case"message.part.delta":case"message.part.removed":case"permission.asked":{const n=I(t);o({type:"update",sessionId:t.properties.sessionID,state:{updatedAt:n}}),d({instanceId:t.instanceId,sessionId:t.properties.sessionID,updatedAt:n});return}case"session.error":{const n=t.properties.sessionID;if(!n)return;const p=I(t);o({type:"update",sessionId:n,state:{updatedAt:p}}),d({instanceId:t.instanceId,sessionId:n,updatedAt:p})}}},{types:["session.created","session.updated","session.deleted","message.updated","message.part.updated","message.part.delta","message.part.removed","permission.asked","session.error"]}),m.jsx(S.Provider,{value:x,children:m.jsx(v.Provider,{value:c,children:m.jsx(A.Provider,{value:r,children:e})})})}function O(){const e=a.useContext(A);if(!e)throw new Error("useSessions must be used within a SessionsProvider.");return e}function U(e){return O()[e]??null}function T(e,s){const r=U(y(e,s));return r?k(r,r.lastReadAt):!1}function q(){const e=a.useContext(S);if(!e)throw new Error("useMarkSessionReadOptimistic must be used within a SessionsProvider.");return e.markReadOptimistic}export{J as R,N as S,q as a,O as b,U as c,T as u};
@@ -0,0 +1 @@
1
+ import{w as e,L as t}from"./chunk-EPOLDU6W-B-j6nV8T.js";import{j as s}from"./files.browse-9p4xl9MV.js";import{S as a}from"./scrollable-layout-CS-vPTNM.js";import{d as n}from"./route-handle-DcEil3NY.js";const p=n({title:[{label:"Settings"}]}),m=e(function(){return s.jsx(a,{children:s.jsxs("section",{className:"space-y-4 pt-6",children:[s.jsx("p",{className:"px-6 text-sm uppercase tracking-[0.08em] sm:px-8",children:"Sections"}),s.jsxs(t,{className:"block min-h-11 border-l-4 border-black px-3 py-2 text-base font-bold",to:"/settings/passkeys",children:[s.jsx("span",{className:"block",children:"Passkeys"}),s.jsx("span",{className:"block text-sm leading-6 opacity-60",children:"Review active passkeys and revoke devices that should no longer sign in."})]})]})})});export{m as default,p as handle};
@@ -0,0 +1 @@
1
+ const i=3;function S(t){return{id:t.id,title:t.title??null,directory:t.directory??null,createdAt:t.time?.created??null,updatedAt:t.time?.updated??null}}function n(t){return t.updatedAt??t.createdAt??0}function o(t,e){const r=n(t);return r<=0?!1:e===null?!0:r>e}function u(t){return[...t].sort((e,r)=>n(r)-n(e))}function c(t,e=Date.now()){return u(t).filter(r=>{const s=n(r);return s>0&&e-s<=6048e5})}export{i as S,c as f,o as i,u as s,S as t};
@@ -0,0 +1 @@
1
+ import{r as c}from"./files.browse-9p4xl9MV.js";function r(...o){return(...e)=>o.forEach(t=>t?.(...e))}function k(o=5e3){const[e,t]=c.useState(!1);c.useEffect(()=>{if(!e)return;const n=window.setTimeout(()=>{t(!1)},o);return()=>{window.clearTimeout(n)}},[e,o]);function l(n){const s=()=>{t(!1)},f=e?void 0:u=>{u.preventDefault(),t(!0)},i=u=>{u.key==="Escape"&&t(!1)};return{...n,onBlur:r(s,n?.onBlur),onClick:r(f,n?.onClick),onKeyUp:r(i,n?.onKeyUp)}}return{doubleCheck:e,getButtonProps:l}}export{k as u};
@@ -0,0 +1,2 @@
1
+ function u(e){const t=new Uint8Array(e);let n="";for(const i of t)n+=String.fromCharCode(i);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function g(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,"="),i=atob(r),c=new ArrayBuffer(i.length),d=new Uint8Array(c);for(let a=0;a<i.length;a++)d[a]=i.charCodeAt(a);return c}function m(){return _.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}const _={stubThis:e=>e};function y(e){const{id:t}=e;return{...e,id:g(t),transports:e.transports}}function O(e){return e==="localhost"||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}class o extends Error{constructor({message:t,code:n,cause:r,name:i}){super(t,{cause:r}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=i??r.name,this.code=n}}function T({error:e,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new o({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(n.authenticatorSelection?.requireResidentKey===!0)return new o({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&n.authenticatorSelection?.userVerification==="required")return new o({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(n.authenticatorSelection?.userVerification==="required")return new o({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else{if(e.name==="InvalidStateError")return new o({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new o({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return n.pubKeyCredParams.filter(i=>i.type==="public-key").length===0?new o({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new o({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){const r=globalThis.location.hostname;if(O(r)){if(n.rp.id!==r)return new o({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new o({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new o({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new o({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}class P{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){const n=new Error("Cancelling existing WebAuthn API call for new one");n.name="AbortError",this.controller.abort(n)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}}const S=new P,C=["cross-platform","platform"];function I(e){if(e&&!(C.indexOf(e)<0))return e}async function N(e){!e.optionsJSON&&e.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});const{optionsJSON:t,useAutoRegister:n=!1}=e;if(!m())throw new Error("WebAuthn is not supported in this browser");const r={...t,challenge:g(t.challenge),user:{...t.user,id:g(t.user.id)},excludeCredentials:t.excludeCredentials?.map(y)},i={};n&&(i.mediation="conditional"),i.publicKey=r,i.signal=S.createNewAbortSignal();let c;try{c=await navigator.credentials.create(i)}catch(l){throw T({error:l,options:i})}if(!c)throw new Error("Registration was not completed");const{id:d,rawId:a,response:s,type:R}=c;let h;typeof s.getTransports=="function"&&(h=s.getTransports());let p;if(typeof s.getPublicKeyAlgorithm=="function")try{p=s.getPublicKeyAlgorithm()}catch(l){E("getPublicKeyAlgorithm()",l)}let f;if(typeof s.getPublicKey=="function")try{const l=s.getPublicKey();l!==null&&(f=u(l))}catch(l){E("getPublicKey()",l)}let b;if(typeof s.getAuthenticatorData=="function")try{b=u(s.getAuthenticatorData())}catch(l){E("getAuthenticatorData()",l)}return{id:d,rawId:u(a),response:{attestationObject:u(s.attestationObject),clientDataJSON:u(s.clientDataJSON),transports:h,publicKeyAlgorithm:p,publicKey:f,authenticatorData:b},type:R,clientExtensionResults:c.getClientExtensionResults(),authenticatorAttachment:I(c.authenticatorAttachment)}}function E(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.
2
+ `,t)}function D(){if(!m())return A.stubThis(new Promise(t=>t(!1)));const e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?A.stubThis(new Promise(t=>t(!1))):A.stubThis(e.isConditionalMediationAvailable())}const A={stubThis:e=>e};function v({error:e,options:t}){const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new o({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if(e.name==="NotAllowedError")return new o({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){const r=globalThis.location.hostname;if(O(r)){if(n.rpId!==r)return new o({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new o({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new o({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}async function K(e){!e.optionsJSON&&e.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});const{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!m())throw new Error("WebAuthn is not supported in this browser");let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(y));const c={...t,challenge:g(t.challenge),allowCredentials:i},d={};if(n){if(!await D())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');d.mediation="conditional",c.allowCredentials=[]}d.publicKey=c,d.signal=S.createNewAbortSignal();let a;try{a=await navigator.credentials.get(d)}catch(b){throw v({error:b,options:d})}if(!a)throw new Error("Authentication was not completed");const{id:s,rawId:R,response:h,type:p}=a;let f;return h.userHandle&&(f=u(h.userHandle)),{id:s,rawId:u(R),response:{authenticatorData:u(h.authenticatorData),clientDataJSON:u(h.clientDataJSON),signature:u(h.signature),userHandle:f},type:p,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:I(a.authenticatorAttachment)}}function U(e){return e&&typeof e=="object"&&"error"in e&&typeof e.error=="string"?e.error:"Something went wrong. Please try again."}async function w(e,t){const n=await fetch(e,{method:"post",body:JSON.stringify(t),headers:{Accept:"application/json","Content-Type":"application/json"},credentials:"same-origin"}),r=await n.json();if(!n.ok)throw new Error(U(r));return r}async function L(e){const t=await w("/auth/register/begin",{label:e}),n=await N({optionsJSON:t.options});return w("/auth/register/finish",{flowId:t.flowId,credential:n})}async function x(){const e=await w("/auth/login/begin",{}),t=await K({optionsJSON:e.options});return w("/auth/login/finish",{flowId:e.flowId,credential:t})}export{L as r,x as s};
@@ -0,0 +1,7 @@
1
+ self.addEventListener("install", () => {
2
+ self.skipWaiting();
3
+ });
4
+
5
+ self.addEventListener("activate", (event) => {
6
+ event.waitUntil(self.clients.claim());
7
+ });
Binary file
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
2
+ <rect width="512" height="512" fill="#fff" />
3
+ <path
4
+ fill="#000"
5
+ transform="translate(128 128) scale(10.6666666667)"
6
+ d="M6.94 14.033a30 30 0 0 0-.606 1.783c.96-.697 2.101-1.14 3.418-1.304c2.513-.314 4.746-1.973 5.876-4.058l-1.456-1.455l1.413-1.415l1-1.002c.43-.429.915-1.224 1.428-2.367c-5.593.867-9.018 4.291-11.074 9.818M17 8.997l1 1c-1 3-4 6-8 6.5q-4.003.5-5.002 5.5H3c1-6 3-20 18-20q-1.5 4.496-2.997 5.997z"
7
+ />
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
2
+ <rect width="512" height="512" fill="#fff" />
3
+ <path
4
+ fill="#000"
5
+ transform="translate(96 96) scale(13.3333333333)"
6
+ d="M6.94 14.033a30 30 0 0 0-.606 1.783c.96-.697 2.101-1.14 3.418-1.304c2.513-.314 4.746-1.973 5.876-4.058l-1.456-1.455l1.413-1.415l1-1.002c.43-.429.915-1.224 1.428-2.367c-5.593.867-9.018 4.291-11.074 9.818M17 8.997l1 1c-1 3-4 6-8 6.5q-4.003.5-5.002 5.5H3c1-6 3-20 18-20q-1.5 4.496-2.997 5.997z"
7
+ />
8
+ </svg>
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "Scriptorium",
3
+ "short_name": "Scriptorium",
4
+ "description": "Manage Opencode instances from an e-ink friendly web interface",
5
+ "start_url": "/",
6
+ "scope": "/",
7
+ "display": "standalone",
8
+ "background_color": "#ffffff",
9
+ "theme_color": "#ffffff",
10
+ "icons": [
11
+ {
12
+ "src": "/icon-192.png",
13
+ "sizes": "192x192",
14
+ "type": "image/png"
15
+ },
16
+ {
17
+ "src": "/icon-512.png",
18
+ "sizes": "512x512",
19
+ "type": "image/png"
20
+ },
21
+ {
22
+ "src": "/icon-maskable-512.png",
23
+ "sizes": "512x512",
24
+ "type": "image/png",
25
+ "purpose": "maskable"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,73 @@
1
+ const STATIC_CACHE = "scriptorium-static-v1";
2
+ const STATIC_ASSETS = [
3
+ "/manifest.webmanifest",
4
+ "/icon.svg",
5
+ "/icon-192.png",
6
+ "/icon-512.png",
7
+ "/icon-maskable-512.png",
8
+ "/apple-touch-icon.png",
9
+ "/favicon.ico",
10
+ ];
11
+
12
+ self.addEventListener("install", (event) => {
13
+ event.waitUntil(caches.open(STATIC_CACHE).then((cache) => cache.addAll(STATIC_ASSETS)));
14
+ self.skipWaiting();
15
+ });
16
+
17
+ self.addEventListener("activate", (event) => {
18
+ event.waitUntil(
19
+ caches.keys().then((keys) =>
20
+ Promise.all(keys.filter((key) => key !== STATIC_CACHE).map((key) => caches.delete(key))),
21
+ ).then(() => self.clients.claim()),
22
+ );
23
+ });
24
+
25
+ self.addEventListener("fetch", (event) => {
26
+ const { request } = event;
27
+ const url = new URL(request.url);
28
+
29
+ if (request.method !== "GET" || url.origin !== self.location.origin) {
30
+ return;
31
+ }
32
+
33
+ if (request.mode === "navigate") {
34
+ event.respondWith(
35
+ fetch(request).catch(
36
+ () =>
37
+ new Response(
38
+ "<!doctype html><html lang=\"en\"><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Offline</title><body style=\"font-family: Charter, Georgia, serif; margin: 0; padding: 24px; background: #fff; color: #000;\"><main style=\"max-width: 40rem; margin: 0 auto;\"><h1 style=\"font-size: 2rem; margin-bottom: 1rem;\">You are offline</h1><p>Scriptorium needs a network connection for live workspace data. Reconnect and reopen the app to continue.</p></main></body></html>",
39
+ {
40
+ headers: {
41
+ "Content-Type": "text/html; charset=utf-8",
42
+ },
43
+ },
44
+ ),
45
+ ),
46
+ );
47
+ return;
48
+ }
49
+
50
+ const destination = request.destination;
51
+ const isStaticAsset = ["font", "image", "manifest", "script", "style"].includes(destination);
52
+
53
+ if (!isStaticAsset) {
54
+ return;
55
+ }
56
+
57
+ event.respondWith(
58
+ caches.match(request).then((cachedResponse) => {
59
+ const networkResponse = fetch(request)
60
+ .then((response) => {
61
+ if (response.ok) {
62
+ const responseClone = response.clone();
63
+ void caches.open(STATIC_CACHE).then((cache) => cache.put(request, responseClone));
64
+ }
65
+
66
+ return response;
67
+ })
68
+ .catch(() => cachedResponse);
69
+
70
+ return cachedResponse || networkResponse;
71
+ }),
72
+ );
73
+ });