@preventive/triage 1.0.0-alpha.44 → 1.0.0-alpha.45

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 (183) hide show
  1. package/common/bundle-sources.js +20 -1
  2. package/common/default-scan-models.ts +1 -1
  3. package/common/dependency-reviews.d.ts +0 -5
  4. package/common/dependency-reviews.js +0 -17
  5. package/common/managed/agent-tasks.ts +292 -0
  6. package/common/managed/github-agents.ts +92 -0
  7. package/common/managed/github-logins.ts +49 -0
  8. package/common/managed/roles.ts +7 -0
  9. package/common/managed/routes.js +88 -7
  10. package/common/managed/team-app.d.ts +5 -2
  11. package/common/managed/team-app.js +2 -2
  12. package/common/server-info.ts +3 -0
  13. package/common/workspace-app.js +6 -3
  14. package/out/brotli-fallback.js +3 -3
  15. package/out/chunk-2XUEZHIP.js +18 -18
  16. package/out/chunk-2ZDZWLFY.js +1 -0
  17. package/out/chunk-3PS4KWD2.js +10 -0
  18. package/out/chunk-5DHL5NG3.js +2 -0
  19. package/out/chunk-6HNXNIQY.js +52 -0
  20. package/out/chunk-7C7DWL7I.js +1 -0
  21. package/out/chunk-AFLZH7WG.js +1 -0
  22. package/out/chunk-BC2UCLFJ.js +1 -0
  23. package/out/chunk-C4Z6ZBXV.js +6 -6
  24. package/out/chunk-GDPCLSOS.js +2 -0
  25. package/out/chunk-GO7FT4OD.js +1 -0
  26. package/out/chunk-HMAJDVXN.js +1 -0
  27. package/out/chunk-I2MDGSQX.js +3 -0
  28. package/out/chunk-IYPY47MC.js +1 -0
  29. package/out/chunk-IZ7POWI3.js +18 -0
  30. package/out/chunk-JCIIBLKR.js +1 -1
  31. package/out/chunk-NPW52BM2.js +17 -0
  32. package/out/chunk-NRPC74AM.js +1 -1
  33. package/out/chunk-NV7ES4EW.js +1 -0
  34. package/out/chunk-OKRLLE5I.js +17 -0
  35. package/out/chunk-OOJM4CTU.js +1 -1
  36. package/out/chunk-PNHBZGDD.js +1 -1
  37. package/out/chunk-PTGDYLNS.js +36 -0
  38. package/out/chunk-PXK7EU4V.js +1 -0
  39. package/out/chunk-Q6MVYGYV.js +3 -0
  40. package/out/chunk-QB4CBOX2.js +1 -0
  41. package/out/chunk-QRD6GIG5.js +229 -0
  42. package/out/chunk-R3NZFXVR.js +1 -0
  43. package/out/chunk-R5O6FAW4.js +1 -1
  44. package/out/chunk-SXV2T5C4.js +80 -0
  45. package/out/chunk-TUII34K2.js +1 -1
  46. package/out/chunk-VFWMQ3LG.js +2 -0
  47. package/out/chunk-VH4XMZIW.js +2 -0
  48. package/out/chunk-WFYLMF6Z.js +10 -0
  49. package/out/chunk-WI7Z5A2T.js +6 -0
  50. package/out/chunk-WQ74ZBZF.js +7 -0
  51. package/out/chunk-XVBEOGOS.js +3 -0
  52. package/out/client-managed-import.js +3 -3
  53. package/out/client-managed.js +31 -35
  54. package/out/client-sync.js +11 -11
  55. package/out/compare.js +35 -0
  56. package/out/dialogs.js +51 -0
  57. package/out/github-issue-authorized.html +1 -1
  58. package/out/github-issue-authorized.js +1 -1
  59. package/out/graph.js +17 -17
  60. package/out/index.html +30 -34
  61. package/out/prism.js +14 -14
  62. package/out/scan.js +2 -0
  63. package/out/terminal.js +294 -293
  64. package/out/view.css +1 -1
  65. package/out/view.js +16 -107
  66. package/package.json +51 -6
  67. package/risk/actions/findings.js +156 -0
  68. package/risk/actions/resolve.js +219 -0
  69. package/risk/actions/scripts/commands.js +182 -0
  70. package/risk/actions/scripts/grade.js +113 -0
  71. package/risk/actions/scripts/packages.js +123 -0
  72. package/risk/actions/scripts/shell.js +165 -0
  73. package/risk/actions/uses.js +76 -0
  74. package/risk/actions/workflow.js +110 -0
  75. package/risk/files/hosts.js +6 -6
  76. package/risk/files/readability.js +23 -17
  77. package/risk/files/runs-code.js +18 -6
  78. package/risk/files/script.js +7 -3
  79. package/risk/files/stamps.js +8 -7
  80. package/risk/index.d.ts +68 -1
  81. package/risk/index.js +6 -2
  82. package/risk/npm/assess.js +1 -1
  83. package/risk/npm/compare.js +34 -10
  84. package/risk/npm/files.js +413 -2
  85. package/risk/npm/tarball.js +56 -73
  86. package/server-managed/agent-merges.ts +198 -0
  87. package/server-managed/app-agents.ts +30 -0
  88. package/server-managed/avatar-store.ts +1 -0
  89. package/server-managed/commit-coauthors.ts +83 -0
  90. package/server-managed/commit-lockfiles.ts +62 -0
  91. package/server-managed/db-methods.ts +29 -10
  92. package/server-managed/db-neon.ts +30 -2
  93. package/server-managed/db-schema.ts +9 -2
  94. package/server-managed/db.ts +7 -0
  95. package/server-managed/dependabot-access.ts +60 -0
  96. package/server-managed/dependabot-alerts.ts +185 -0
  97. package/server-managed/dependency-review-comments.ts +97 -0
  98. package/server-managed/dependency-reviews.ts +65 -15
  99. package/server-managed/github-accounts.ts +33 -0
  100. package/server-managed/github-actions.ts +71 -0
  101. package/server-managed/github-app.ts +23 -9
  102. package/server-managed/github-errors.ts +2 -0
  103. package/server-managed/github-link-oauth.ts +69 -0
  104. package/server-managed/github-links.ts +204 -0
  105. package/server-managed/github-oauth.ts +5 -2
  106. package/server-managed/github-users.ts +30 -0
  107. package/server-managed/http.ts +1122 -52
  108. package/server-managed/index.ts +6 -2
  109. package/server-managed/locked-packages.ts +37 -16
  110. package/server-managed/lockfile-scope.ts +49 -0
  111. package/server-managed/npm-delta-worker.js +23 -0
  112. package/server-managed/npm-delta.ts +173 -0
  113. package/server-managed/npm-insights.ts +20 -11
  114. package/server-managed/npm-kept.ts +51 -4
  115. package/server-managed/npm-loads.ts +20 -13
  116. package/server-managed/npm-packages.ts +24 -64
  117. package/server-managed/pull-comment-reviews.ts +161 -0
  118. package/server-managed/pull-dependencies.ts +280 -0
  119. package/server-managed/pull-dependency-reviews.ts +318 -0
  120. package/server-managed/pull-reviews.ts +205 -0
  121. package/server-managed/release-commits.ts +84 -0
  122. package/server-managed/repository-actions.ts +209 -0
  123. package/server-managed/repository-agents.ts +220 -0
  124. package/server-managed/repository-browser.ts +54 -13
  125. package/server-managed/repository-changes.ts +284 -0
  126. package/server-managed/repository-code.ts +52 -0
  127. package/server-managed/repository-dependency-reviews.ts +135 -0
  128. package/server-managed/repository-history.ts +445 -0
  129. package/server-managed/repository-issues.ts +181 -0
  130. package/server-managed/repository-pulse.ts +432 -0
  131. package/server-managed/repository-risk-read.ts +165 -0
  132. package/server-managed/repository-risk.ts +113 -105
  133. package/server-managed/reviewed-dependencies.ts +149 -0
  134. package/server-managed/session.ts +9 -5
  135. package/server-managed/sql.ts +1 -1
  136. package/server-managed/storage-stores.ts +5 -0
  137. package/server-managed/team-app.ts +19 -3
  138. package/server-managed/workspace-shares.ts +4 -1
  139. package/server.ts +11 -0
  140. package/out/chunk-2ABLKCOY.js +0 -46
  141. package/out/chunk-2KBF5TZ7.js +0 -2
  142. package/out/chunk-35VE6CDH.js +0 -2
  143. package/out/chunk-3BZ7JERB.js +0 -1
  144. package/out/chunk-4XCDFGDP.js +0 -10
  145. package/out/chunk-5LSXOLUS.js +0 -1
  146. package/out/chunk-5RCM2J63.js +0 -1
  147. package/out/chunk-7B6HB4D7.js +0 -1
  148. package/out/chunk-AJ4GTATZ.js +0 -3
  149. package/out/chunk-CH4UN6WK.js +0 -225
  150. package/out/chunk-CMQA4DM6.js +0 -1
  151. package/out/chunk-CVVJAXVY.js +0 -2
  152. package/out/chunk-DIJJNTRH.js +0 -10
  153. package/out/chunk-EDKLBQQN.js +0 -17
  154. package/out/chunk-F47DXCEV.js +0 -33
  155. package/out/chunk-FK3DZEKL.js +0 -1
  156. package/out/chunk-G6AJWENO.js +0 -1
  157. package/out/chunk-GJ4IUCNS.js +0 -1
  158. package/out/chunk-GNXOKIGP.js +0 -80
  159. package/out/chunk-GZ4MS3TE.js +0 -13
  160. package/out/chunk-GZWM7UQM.js +0 -2
  161. package/out/chunk-IU3CCINR.js +0 -3
  162. package/out/chunk-K3X5EJBQ.js +0 -2
  163. package/out/chunk-KEX2ATEW.js +0 -2
  164. package/out/chunk-KYCNJVB7.js +0 -1
  165. package/out/chunk-LPCTJYNA.js +0 -7
  166. package/out/chunk-O4RJY5TP.js +0 -2
  167. package/out/chunk-OD4LPN3H.js +0 -1
  168. package/out/chunk-QWDWTBM7.js +0 -1
  169. package/out/chunk-QYWKC557.js +0 -1
  170. package/out/chunk-R75XOKUP.js +0 -1
  171. package/out/chunk-SWTLADW5.js +0 -1
  172. package/out/chunk-T7OKH4VW.js +0 -1
  173. package/out/chunk-TZ5KB2Y5.js +0 -10
  174. package/out/chunk-UNTRGE26.js +0 -2
  175. package/out/chunk-UTR2LVME.js +0 -2
  176. package/out/chunk-UYAXVRVL.js +0 -1
  177. package/out/chunk-V3ME6FI5.js +0 -2
  178. package/out/chunk-V5O7M2YT.js +0 -1
  179. package/out/chunk-VIHGO77Y.js +0 -1
  180. package/out/chunk-W4J3MGLB.js +0 -1
  181. package/out/chunk-WGG7KQUH.js +0 -1
  182. package/out/chunk-XYFXXB2G.js +0 -10
  183. package/out/chunk-ZESLQCTF.js +0 -6
@@ -0,0 +1,229 @@
1
+ import{a as e,b as t,c as n,m as r}from"./chunk-VH4XMZIW.js";import{b as i}from"./chunk-JCIIBLKR.js";import{a,b as o,c as s,e as c,f as l,g as u,h as d,i as f,j as p,k as m,l as h,m as g,n as _,o as v,p as y,q as b,r as x,s as ee,t as te,u as ne}from"./chunk-NV7ES4EW.js";import{$ as re,A as ie,Aa as ae,B as oe,Ba as se,C as ce,Ca as le,D as ue,Da as de,E as fe,Ea as pe,F as me,Fa as he,G as ge,Ga as _e,Ha as ve,I as ye,Ia as be,J as xe,Ja as Se,K as Ce,Ka as we,L as Te,La as Ee,Ma as De,Na as Oe,Oa as ke,Pa as Ae,Qa as je,Ra as Me,Sa as Ne,T as Pe,Ta as Fe,U as Ie,Ua as Le,V as Re,Va as ze,W as Be,_ as Ve,a as He,aa as Ue,b as We,ba as Ge,c as Ke,ca as qe,d as Je,e as Ye,ea as Xe,f as Ze,ga as Qe,h as $e,ha as et,i as tt,ia as nt,j as rt,ja as it,k as at,ka as ot,l as st,m as ct,ma as lt,n as ut,na as dt,o as ft,oa as pt,p as mt,pa as ht,q as gt,r as _t,ra as vt,s as yt,sa as bt,t as xt,ta as St,u as Ct,ua as wt,v as Tt,va as Et,wa as Dt,xa as Ot,ya as kt,z as At,za as jt}from"./chunk-6HNXNIQY.js";import{a as Mt,b as Nt,c as Pt,d as Ft,f as It,g as Lt,h as Rt,i as zt,j as Bt,k as Vt,m as Ht,n as Ut,o as Wt,p as Gt,q as Kt,r as qt,s as Jt,t as Yt,u as Xt,v as Zt,w as Qt,x as $t}from"./chunk-WI7Z5A2T.js";import{g as en,h as tn,i as nn,j as rn,k as an,l as on,m as sn,n as cn,o as ln,q as un,r as dn,s as fn,t as pn,w as mn}from"./chunk-WQ74ZBZF.js";import{a as hn,b as gn,c as _n,d as vn,e as yn,f as S,g as bn,h as xn,i as Sn}from"./chunk-7C7DWL7I.js";import{a as Cn,b as wn,c as Tn,d as En}from"./chunk-PNHBZGDD.js";import{$ as Dn,A as On,B as kn,C as An,D as jn,F as Mn,G as Nn,H as Pn,I as Fn,J as In,K as Ln,L as Rn,M as zn,N as Bn,O as Vn,P as Hn,Q as Un,R as Wn,S as Gn,T as Kn,U as qn,W as Jn,X as Yn,Y as Xn,Z as Zn,_ as Qn,a as C,aa as $n,b as er,ba as tr,ca as nr,da as rr,ea as ir,f as ar,fa as w,g as or,ga as sr,h as cr,ha as T,i as lr,ia as ur,j as dr,ja as fr,k as pr,l as mr,la as hr,m as gr,ma as _r,n as vr,na as yr,o as br,oa as xr,pa as Sr,q as Cr,qa as wr,r as Tr,ra as Er,s as Dr,t as Or,ta as kr,u as Ar,ua as jr,v as Mr,w as Nr,wa as Pr,x as Fr,y as Ir,z as Lr}from"./chunk-PTGDYLNS.js";import{b as Rr,c as zr,d as Br,e as Vr,f as Hr,g as Ur}from"./chunk-I2MDGSQX.js";import{a as Wr,b as Gr,e as Kr}from"./chunk-3PS4KWD2.js";import{a as qr,b as Jr,d as Yr,e as Xr}from"./chunk-IYPY47MC.js";import{a as Zr,c as E,d as D}from"./chunk-OKRLLE5I.js";import{a as Qr,c as $r,d as ei,e as ti,g as ni,h as ri,i as ii,j as ai,k as oi,l as si,m as ci,n as li,o as ui,p as di,q as fi}from"./chunk-BC2UCLFJ.js";import{A as pi,B as mi,C as hi,D as gi,E as _i,G as vi,H as yi,J as bi,K as xi,L as Si,M as Ci,N as wi,O as Ti,a as Ei,f as Di,h as Oi,i as ki,j as Ai,k as ji,l as Mi,m as Ni,n as Pi,o as Fi,p as Ii,q as Li,r as Ri,t as zi,u as Bi,v as Vi,w as Hi,x as Ui,y as Wi,z as Gi}from"./chunk-SXV2T5C4.js";import{A as Ki,d as O,e as qi,f as Ji,g as Yi,i as Xi,j as Zi,k as Qi,o as $i,p as ea,q as ta,r as na,s as ra,t as ia,w as aa,y as oa,z as sa}from"./chunk-WFYLMF6Z.js";import{a as ca,b as la,c as ua}from"./chunk-C4Z6ZBXV.js";import{a as da,b as fa,c as pa}from"./chunk-TUII34K2.js";import{a as ma,b as ha,c as k,d as A,g as j,i as M,j as ga}from"./chunk-2XUEZHIP.js";var _a=new Uint8Array([68,86,69,49]),va=12,ya=32,ba=`deepview-passkey.v1.content-key`;function xa(){return!(typeof window>`u`||typeof PublicKeyCredential>`u`||typeof navigator>`u`||!navigator.credentials)}async function Sa(){if(typeof PublicKeyCredential>`u`)return!1;let e=PublicKeyCredential.getClientCapabilities;if(typeof e!=`function`)return null;try{let t=await e.call(PublicKeyCredential);if(!t||typeof t!=`object`)return null;let n=t[`extension:prf`],r=t.prf;return n===!0||r===!0?!0:n===!1||r===!1?!1:null}catch{return null}}function Ca(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function wa(e){if(e.length<32)throw Error(`PRF output too short (${e.length} bytes; need \u2265 32)`);let t=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),n=await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:new Uint8Array,info:da(ba)},t,ya*8);return new Uint8Array(n)}function Ta(e){return crypto.subtle.importKey(`raw`,e,{name:`AES-GCM`},!1,[`encrypt`,`decrypt`])}async function Ea(e,t,n){let r=Ca(va),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:r,additionalData:n},e,t)),a=new Uint8Array(_a.length+va+i.length);return a.set(_a,0),a.set(r,_a.length),a.set(i,_a.length+va),a}async function Da(e,t,n){if(!Oa(t))throw Error(`passkey: missing envelope magic`);if(t.length<_a.length+va+16)throw Error(`passkey: envelope too short`);let r=t.subarray(_a.length,_a.length+va),i=t.subarray(_a.length+va);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r,additionalData:n},e,i))}function Oa(e){if(e.length<_a.length)return!1;for(let t=0;t<_a.length;t++)if(e[t]!==_a[t])return!1;return!0}async function ka(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(32),n=Ca(32),r=await navigator.credentials.create({publicKey:{challenge:t,rp:{name:e.rpName,id:e.rpId},user:{id:e.userId,name:e.userName,displayName:e.userName},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}],authenticatorSelection:{residentKey:`required`,userVerification:`required`},extensions:{prf:{eval:{first:n}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(r instanceof PublicKeyCredential))throw Error(`passkey: registration returned no credential`);let i=new Uint8Array(r.rawId).toBase64({alphabet:`base64url`,omitPadding:!0}),a=r.getClientExtensionResults().prf,o=a?.results?.first?new Uint8Array(a.results.first):null;return{credentialId:i,prfSalt:n.toBase64({alphabet:`base64url`,omitPadding:!0}),prfOutput:o}}async function Aa(e){if(!xa())throw Error(`passkey: not supported in this environment`);let t=Ca(32),n=Uint8Array.fromBase64(e.credentialId,{alphabet:`base64url`}),r=Uint8Array.fromBase64(e.prfSalt,{alphabet:`base64url`}),i=await navigator.credentials.get({publicKey:{challenge:t,rpId:e.rpId,allowCredentials:[{type:`public-key`,id:n}],userVerification:`required`,extensions:{prf:{eval:{first:r}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(i instanceof PublicKeyCredential))throw Error(`passkey: assertion returned no credential`);let a=i.getClientExtensionResults().prf?.results?.first;if(!a)throw Error(`passkey: authenticator did not return PRF output (extension unsupported)`);return new Uint8Array(a)}var ja=Object.freeze([`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.sync.password`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`]),Ma=new Map,Na=!1,Pa=new Map,Fa=new Map,Ia=new Set;function La(e){let t=()=>e();return Ia.add(t),Na&&queueMicrotask(()=>{if(Ia.has(t))try{t()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}),()=>Ia.delete(t)}function Ra(){for(let e of Ia)try{e()}catch(e){console.warn(`secure-storage after-hydrate listener:`,e)}}function za(e){let t=So()??``;return da(`deepview.secure.v1|${t}|${e}`)}function Ba(e){try{let t=Uint8Array.fromBase64(e);if(Oa(t))return t}catch{}return null}function Va(e){return Ma.get(e)??null}async function Ha(e,t){if(typeof t!=`string`)throw TypeError(`secure-storage: value must be a string`);if(yo()&&!wo())throw Error(`secure-storage: vault locked, cannot save "${e}"`);if(po())throw Error(`secure-storage: wipe in progress, cannot save "${e}"`);let n=Ma.has(e),r=Ma.get(e);Ma.set(e,t),Fa.set(e,t);let i=Pa.get(e)??Promise.resolve(),a=()=>{Fa.get(e)===t&&Fa.delete(e)},o=i.catch(()=>{}).then(()=>Wa(e,t)).then(()=>a(),i=>{throw a(),Ma.get(e)===t&&(n?Ma.set(e,r):Ma.delete(e)),i});Pa.set(e,o.catch(()=>{})),await o}async function Ua(e){let t=Symbol(`secure-storage:removed`);Ma.delete(e),Fa.set(e,t);let n=Pa.get(e)??Promise.resolve(),r=()=>{try{localStorage.removeItem(e)}catch{}Fa.get(e)===t&&(Fa.delete(e),Ma.delete(e))},i=n.catch(()=>{}).then(()=>r());Pa.set(e,i.catch(()=>{})),await i}async function Wa(e,t){let n=wo();if(n){let r=await Ea(n,da(t),za(e));localStorage.setItem(e,r.toBase64())}else localStorage.setItem(e,t)}async function Ga(){Na||ko(()=>{Ga().catch(e=>console.warn(`secure-storage rehydrate:`,e))}),Na=!0;for(let e of[...Ma.keys()])Fa.has(e)||Ma.delete(e);await qa(ja,!0)}async function Ka(e){if(!ja.includes(e))throw Error(`secure-storage: unknown secure key "${e}"`);return Fa.has(e)||Ma.delete(e),(await qa([e],!1)).get(e)??null}async function qa(e,t){let n=wo(),r=[],i=new Map;for(let t of e){if(Fa.has(t)){i.set(t,Va(t));continue}let e=localStorage.getItem(t);if(e===null)continue;let a=Ba(e);if(a){if(!n)continue;try{let e=await Da(n,a,za(t));if(Fa.has(t)){i.set(t,Va(t));continue}let r=pa(e);Ma.set(t,r),i.set(t,r)}catch(e){console.warn(`secure-storage: decrypt failed for "${t}":`,e)}}else Ma.set(t,e),i.set(t,e),n&&yo()&&r.push([t,e])}return t&&Ra(),r.length>0&&queueMicrotask(()=>{for(let[e,t]of r)Ma.get(e)===t&&Ha(e,t).catch(t=>{console.warn(`secure-storage: self-heal failed for "${e}":`,t)})}),i}async function Ja(e,t){let n=(Pa.get(e)??Promise.resolve()).catch(()=>{}).then(async()=>{if(Fa.has(e))return;let n=localStorage.getItem(e);if(n===null)return;let r=await t(n);r!==null&&(Fa.has(e)||(localStorage.setItem(e,r.storageValue),Ma.set(e,r.cacheValue)))});Pa.set(e,n.catch(()=>{})),await n}async function Ya({seal:e}){for(let e of ja)await Ja(e,async t=>{if(Ba(t))return null;let n=wo();return n?{storageValue:(await Ea(n,da(t),za(e))).toBase64(),cacheValue:t}:null})}async function Xa({open:e}){for(let t of ja)await Ja(t,async n=>{let r=Ba(n);if(!r)return null;let i=await e(r,za(t)),a=pa(i);return{storageValue:a,cacheValue:a}})}var Za=`deepview.secure.v1.mutate:`;function Qa(e,t){return ja.includes(e)?navigator.locks.request(Za+e,async()=>{let n=Pa.get(e);n&&await n.catch(()=>{}),await Ga();let r=Va(e),i=await t(r);if(i!=null&&i!==r){if(typeof i!=`string`)throw TypeError(`secure-storage: mutate updater for "${e}" must return a string`);await Ha(e,i)}}):Promise.reject(Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function $a(){await Promise.allSettled([...Pa.values()]),Fa.clear(),Pa.clear()}typeof window<`u`&&window.addEventListener(`storage`,e=>{!Na||!e.key||!ja.includes(e.key)||Ga().catch(()=>{})});var eo=`deepview.passkey.v1`,to=`deepview.passkey.userId`,no=`deepview.passkey.cleanDisable`,ro=`deepview.passkey.v1.write`,io=`deepview.triage.v1|`,ao=`deepview.opfs.v1|`,oo=`deepview.bundle.v1|`,N=null,so=null,co=null,lo=0;function uo(){return lo>0}var fo=0;function po(){return fo>0}function mo(){try{let e=localStorage.getItem(eo);if(!e)return null;let t=JSON.parse(e);return t&&typeof t==`object`&&t.enabled===!0&&typeof t.credentialId==`string`&&t.credentialId.length>0&&typeof t.prfSalt==`string`&&t.prfSalt.length>0&&typeof t.userId==`string`&&t.userId.length>0?t:null}catch{return null}}function ho(e){localStorage.setItem(eo,JSON.stringify(e))}function go(){localStorage.removeItem(eo)}function _o(){try{let e=localStorage.getItem(to);if(e){let t=Uint8Array.fromBase64(e,{alphabet:`base64url`});if(t.length===16)return t}}catch{}let e=new Uint8Array(16);crypto.getRandomValues(e);try{localStorage.setItem(to,e.toBase64({alphabet:`base64url`,omitPadding:!0}))}catch{}return e}function vo(){return typeof location>`u`?``:location.hostname}function yo(){return mo()!==null}function bo(){return N!==null}function xo(){return!(!xa()||typeof navigator>`u`||!navigator.locks?.request||!vo())}function So(){return so}function Co(){if(mo()!==null)return!1;try{return localStorage.getItem(no)!==`1`&&localStorage.getItem(to)!==null}catch{return!1}}function wo(){return N}function To(){return da(io+(so??``))}function Eo(e){if(typeof e!=`string`)throw TypeError(`passkey vault: OPFS AAD requires a filename string`);return da(ao+(so??``)+`|`+e)}function Do(e){if(typeof e!=`string`)throw TypeError(`passkey vault: bundle AAD requires a slot string`);return da(oo+(so??``)+`|`+e)}var Oo=new Set;function ko(e){return Oo.add(e),()=>Oo.delete(e)}function Ao(){for(let e of Oo)try{e()}catch(e){console.warn(`passkey vault listener:`,e)}}async function jo({signal:e}={}){let t=mo();if(!t)return!1;let n;try{n=await Aa({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??vo(),...e?{signal:e}:{}})}catch(e){if(e&&e.name===`NotAllowedError`||e&&e.name===`AbortError`)return!1;throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!n||n.length<32)throw Mo();let r=await wa(n);return n.fill(0),navigator.locks.request(ro,async()=>{let e=mo();if(!e||e.credentialId!==t.credentialId)throw r.fill(0),Error(`passkey: vault state changed during unlock (another tab wiped or re-enabled it). Reload this page and try again.`);return N=await Ta(r),r.fill(0),so=e.userId,co=e.credentialId,Ao(),!0})}function Mo(e){let t=Error(`Your browser or authenticator doesn't support passkey-derived encryption keys (the WebAuthn PRF extension). Try Chrome 116+, Safari 18+, or Firefox 130+ on a device with a platform authenticator (TouchID / Windows Hello).`);return e&&(t.cause=e),t}function No({migrate:e,userName:t,rpName:n,signal:r,acknowledgeOrphan:i}){if(!xa())throw Error(`passkey: WebAuthn unavailable in this environment`);if(Co()&&!i)throw Error(`passkey: a previous vault exists on this device with no metadata. Any data encrypted under the old passkey will be unreadable after a new setup. Call enableEncryption({acknowledgeOrphan: true}) to proceed, or wipeAllVaultData() to start clean first.`);let a=vo();return navigator.locks.request(ro,async()=>{if(yo())throw Error(`passkey: encryption is already enabled`);if(await Sa()===!1)throw Mo();let i=_o(),o=await ka({userName:t||`DeepView user`,userId:i,rpName:n||`DeepView`,rpId:a,...r?{signal:r}:{}}),s=o.prfOutput;if(!s)try{s=await Aa({credentialId:o.credentialId,prfSalt:o.prfSalt,rpId:a,...r?{signal:r}:{}})}catch(e){let t=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:t}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw e&&e.message?.includes(`PRF`)?Mo(e):e}if(!s||s.length<32){let e=i.toBase64({alphabet:`base64url`,omitPadding:!0});await Fo({credentialId:o.credentialId,rpId:a,userId:e}).catch(()=>{});try{localStorage.removeItem(to)}catch{}throw Mo()}let c=await wa(s);s.fill(0);let l=await Ta(c);c.fill(0);let u=i.toBase64({alphabet:`base64url`,omitPadding:!0}),d={enabled:!0,credentialId:o.credentialId,prfSalt:o.prfSalt,userId:u,rpId:a,createdAt:Date.now()};N=l,so=u,co=o.credentialId,ho(d),typeof e==`function`&&await e({seal:(e,t)=>Ea(l,e,t)});try{localStorage.removeItem(no)}catch{}return Ao(),!0})}async function Po({migrate:e}){if(!yo())return{disabled:!1,signalAttempted:!1};if(!bo())throw Error(`passkey: must unlock before disabling encryption`);lo+=1;try{return await navigator.locks.request(ro,async()=>{let t=mo();if(!t)return{disabled:!1,signalAttempted:!1};let n=N;if(!n)return{disabled:!1,signalAttempted:!1};if(go(),N=null,co=null,typeof e==`function`){let r=(e,t)=>Da(n,e,t);try{await e({open:r})}catch(e){throw ho(t),N=n,co=t.credentialId,Ao(),e}}so=null;try{localStorage.setItem(no,`1`)}catch{}let r=await Fo(t).catch(()=>!1);return Ao(),{disabled:!0,signalAttempted:r}})}finally{--lo}}async function Fo({credentialId:e,rpId:t,userId:n}){if(typeof PublicKeyCredential>`u`||!t)return!1;let r=PublicKeyCredential,i=!1;if(typeof r.signalUnknownCredential==`function`){i=!0;try{await r.signalUnknownCredential({rpId:t,credentialId:e})}catch{}}if(typeof r.signalAllAcceptedCredentials==`function`&&n){i=!0;try{await r.signalAllAcceptedCredentials({rpId:t,userId:n,allAcceptedCredentialIds:[]})}catch{}}return i}async function Io(e,t){try{return await e.removeEntry(t,{recursive:!0}),null}catch(e){return e?.name===`NotFoundError`?null:`${t}: ${e?.message??String(e)}`}}async function Lo(e){let t=[];if(typeof navigator>`u`||!navigator.storage?.getDirectory)return t;let n;try{n=await navigator.storage.getDirectory()}catch(e){return t.push(`storage root: ${e?.message??String(e)}`),t}for(let r of e){let e=await Io(n,r);e&&t.push(e)}return t}async function Ro({refuseIfEnabled:e=!1}={}){lo+=1,fo+=1;try{return await navigator.locks.request(ro,async()=>{if(e&&yo())throw Error(`passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.`);await $a();let t=mo();if(t)try{await Fo({credentialId:t.credentialId,rpId:t.rpId??vo(),userId:t.userId})}catch{}try{localStorage.removeItem(eo)}catch{}try{localStorage.removeItem(to)}catch{}try{localStorage.removeItem(no)}catch{}for(let e of[`deepview.workspaces`,`deepview.sync.sessions`,`deepview.sync.userEnabled`,`deepview.repoUrls`,`deepview.fileCounts`,`deepview.workspaceApp`,`deepview.lastFile`,`deepview.scan.access`,`deepview.triage`,`deepview.triage.pending`,`deepview.passkey.firstImportPrompted`,`deepview.viewMode`])try{localStorage.removeItem(e)}catch{}try{let e=[];for(let t=0;t<localStorage.length;t+=1){let n=localStorage.key(t);n&&n.startsWith(`deepview.report:`)&&e.push(n)}for(let t of e)try{localStorage.removeItem(t)}catch{}}catch{}N=null,so=null,co=null,Ao();let n=await Lo([`deepview-reports`,`deepview-bundles`]);if(n.length>0)throw Error(`passkey: wipe partially succeeded \u2014 localStorage cleared but the following OPFS paths could not be removed: ${n.join(`; `)}. Open DevTools \u2192 Application \u2192 Storage \u2192 Origin Private File System to inspect, or use the browser's site-data clear tool to finish.`)})}finally{--lo,--fo}}function zo(e){return N?Ea(N,e,To()):Promise.reject(Error(`passkey: vault locked, cannot seal triage`))}function Bo(e){return N?Da(N,e,To()):Promise.reject(Error(`passkey: vault locked, cannot open triage`))}function Vo(e,t){return N?Ea(N,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot seal OPFS file`))}function Ho(e,t){return N?Da(N,e,Eo(t)):Promise.reject(Error(`passkey: vault locked, cannot open OPFS file`))}function Uo(e,t){return N?Ea(N,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot seal bundle`))}function Wo(e,t){return N?Da(N,e,Do(t)):Promise.reject(Error(`passkey: vault locked, cannot open bundle`))}typeof window<`u`&&window.addEventListener(`storage`,e=>{if(e.key!==eo)return;let t=mo();(!t&&N||t&&N&&t.credentialId!==co)&&(N=null,so=null,co=null),Ao()});var Go=new WeakMap,Ko=Symbol(`iteration key`);function qo(e){Go.set(e,new Map)}function Jo(e,{target:t,key:n,type:r}){r===`iterate`&&(n=Ko);let i=Go.get(t),a=i.get(n);a||(a=new Set,i.set(n,a)),a.has(e)||(a.add(e),e.cleaners.push(a))}function Yo({target:e,key:t,type:n}){let r=Go.get(e),i=new Set;return n===`clear`?r.forEach((e,t)=>{Xo(i,r,t)}):Xo(i,r,t),(n===`add`||n===`delete`||n===`clear`)&&Xo(i,r,Array.isArray(e)?`length`:Ko),i}function Xo(e,t,n){let r=t.get(n);r&&r.forEach(e.add,e)}function Zo(e){e.cleaners&&e.cleaners.forEach(Qo,e),e.cleaners=[]}function Qo(e){e.delete(this)}var $o=[],es=!1;function ts(e,t,n,r){if(e.unobserved)return Reflect.apply(t,n,r);if($o.indexOf(e)===-1){Zo(e);try{return $o.push(e),Reflect.apply(t,n,r)}finally{$o.pop()}}}function ns(e){let t=$o[$o.length-1];t&&(as(t,e),Jo(t,e))}function rs(e){Yo(e).forEach(is,e)}function is(e){as(e,this),typeof e.scheduler==`function`?e.scheduler(e):typeof e.scheduler==`object`?e.scheduler.add(e):e()}function as(e,t){if(e.debugger&&!es)try{es=!0,e.debugger(t)}finally{es=!1}}function os(){return $o.length>0}var ss=Symbol(`is reaction`);function cs(e,t={}){let n=e[ss]?e:function t(){return ts(t,e,this,arguments)};return n.scheduler=t.scheduler,n.debugger=t.debugger,n[ss]=!0,t.lazy||n(),n}function ls(e){e.unobserved||(e.unobserved=!0,Zo(e)),typeof e.scheduler==`object`&&e.scheduler.delete(e)}var us=new WeakMap,ds=new WeakMap,fs=Object.prototype.hasOwnProperty;function ps(e){let t=ds.get(e);return os()&&typeof e==`object`&&e?t||ks(e):t||e}function ms(e,t){let n=e.next;return e.next=()=>{let{done:r,value:i}=n.call(e);return r||(t?i[1]=ps(i[1]):i=ps(i)),{done:r,value:i}},e}var hs={has(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`has`}),n.has.apply(t,arguments)},get(e){let t=us.get(this),n=Reflect.getPrototypeOf(this);return ns({target:t,key:e,type:`get`}),ps(n.get.apply(t,arguments))},add(e){let t=us.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.add.apply(t,arguments);return r||rs({target:t,key:e,value:e,type:`add`}),i},set(e,t){let n=us.get(this),r=Reflect.getPrototypeOf(this),i=r.has.call(n,e),a=r.get.call(n,e),o=r.set.apply(n,arguments);return i?t!==a&&rs({target:n,key:e,value:t,oldValue:a,type:`set`}):rs({target:n,key:e,value:t,type:`add`}),o},delete(e){let t=us.get(this),n=Reflect.getPrototypeOf(this),r=n.has.call(t,e),i=n.get?n.get.call(t,e):void 0,a=n.delete.apply(t,arguments);return r&&rs({target:t,key:e,oldValue:i,type:`delete`}),a},clear(){let e=us.get(this),t=Reflect.getPrototypeOf(this),n=e.size!==0,r=e instanceof Map?new Map(e):new Set(e),i=t.clear.apply(e,arguments);return n&&rs({target:e,oldTarget:r,type:`clear`}),i},forEach(e,...t){let n=us.get(this),r=Reflect.getPrototypeOf(this);return ns({target:n,type:`iterate`}),r.forEach.call(n,(t,...n)=>e(ps(t),...n),...t)},keys(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),t.keys.apply(e,arguments)},values(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.values.apply(e,arguments),!1)},entries(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t.entries.apply(e,arguments),!0)},[Symbol.iterator](){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),ms(t[Symbol.iterator].apply(e,arguments),e instanceof Map)},get size(){let e=us.get(this),t=Reflect.getPrototypeOf(this);return ns({target:e,type:`iterate`}),Reflect.get(t,`size`,e)}},gs={get(e,t,n){return e=fs.call(hs,t)?hs:e,Reflect.get(e,t,n)}},_s=typeof window==`object`?window:Function(`return this`)(),vs=new Map([[Map,gs],[Set,gs],[WeakMap,gs],[WeakSet,gs],[Object,!1],[Array,!1],[Int8Array,!1],[Uint8Array,!1],[Uint8ClampedArray,!1],[Int16Array,!1],[Uint16Array,!1],[Int32Array,!1],[Uint32Array,!1],[Float32Array,!1],[Float64Array,!1]]);function ys({constructor:e}){return!(typeof e==`function`&&e.name in _s&&_s[e.name]===e)||vs.has(e)}function bs(e){return vs.get(e.constructor)}var xs=Object.prototype.hasOwnProperty,Ss=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(e=>typeof e==`symbol`));function Cs(e,t,n){let r=Reflect.get(e,t,n);if(typeof t==`symbol`&&Ss.has(t))return r;ns({target:e,key:t,receiver:n,type:`get`});let i=ds.get(r);if(os()&&typeof r==`object`&&r){if(i)return i;let n=Reflect.getOwnPropertyDescriptor(e,t);if(!n||n.writable!==!1||n.configurable!==!1)return ks(r)}return i||r}function ws(e,t){let n=Reflect.has(e,t);return ns({target:e,key:t,type:`has`}),n}function Ts(e){return ns({target:e,type:`iterate`}),Reflect.ownKeys(e)}function Es(e,t,n,r){typeof n==`object`&&n&&(n=us.get(n)||n);let i=xs.call(e,t),a=e[t],o=Reflect.set(e,t,n,r);return e!==us.get(r)||(i?n!==a&&rs({target:e,key:t,value:n,oldValue:a,receiver:r,type:`set`}):rs({target:e,key:t,value:n,receiver:r,type:`add`})),o}function Ds(e,t){let n=xs.call(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return n&&rs({target:e,key:t,oldValue:r,type:`delete`}),i}var Os={get:Cs,has:ws,ownKeys:Ts,set:Es,deleteProperty:Ds};function ks(e={}){return us.has(e)||!ys(e)?e:ds.get(e)||As(e)}function As(e){let t=bs(e)||Os,n=new Proxy(e,t);return ds.set(e,n),us.set(n,e),qo(e),n}var js=ks;function Ms(e){let t=!0,n=cs(()=>{try{e(t)}finally{t=!1}},{lazy:!0});try{n()}catch(e){throw ls(n),e}return()=>ls(n)}var Ns=`deepview.viewMode`,Ps=`deepview.severityMode`,Fs=`deepview.repoUrls`,Is=`deepview.focusSplit`,Ls=`deepview.kanbanDetailFullscreen`,Rs=`deepview.bundleSourceWrap`,zs=new Set([`corrected`,`original`]),Bs=50,Vs=20,Hs=80;try{localStorage.removeItem(Ns)}catch{}function Us(){try{let e=localStorage.getItem(Ps);return e!==null&&zs.has(e)?e:null}catch{return null}}function Ws(){try{let e=localStorage.getItem(Ls);return e===`true`||e!==`false`&&null}catch{return null}}function Gs(){try{let e=localStorage.getItem(Rs);return e===`true`||e!==`false`&&null}catch{return null}}function Ks(e){if(!Number.isFinite(e))return Bs;let t=Math.round(e*10)/10;return Math.min(Math.max(t,Vs),Hs)}function qs(){try{let e=localStorage.getItem(Is);if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?Ks(t):null}catch{return null}}function Js(e){try{let t=JSON.parse(e||`{}`);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function Ys(){return Js(Va(Fs))}function Xs(e){return e?Ys()[e]??``:``}var Zs=new Set;function Qs(e){return Zs.add(e),()=>{Zs.delete(e)}}function $s(e){for(let t of Zs)try{t(e)}catch(e){console.warn(`repo-url listener:`,e)}}function ec(e,t){if(F()||!e)return;let n=Ys();t?n[e]=t:delete n[e],Ha(Fs,JSON.stringify(n)).catch(e=>console.warn(`saveRepoUrlFor:`,e)),Qa(Fs,n=>{let r=Js(n);return t?r[e]=t:delete r[e],JSON.stringify(r)}).catch(e=>console.warn(`saveRepoUrlFor cross-tab merge:`,e)),$s(e)}async function tc(e,t){await Qa(Fs,n=>{let r=Js(n),i=t===`replace`?{...e}:t===`prefer-imported`?{...r,...e}:{...e,...r};return JSON.stringify(i)}),uc()}async function nc(e){if(!e||typeof e!=`object`)return[];let t=[];if(await Qa(Fs,n=>{let r=Js(n);t=[];for(let[n,i]of Object.entries(e))!n||typeof i!=`string`||!i||r[n]||(r[n]=i,t.push(n));return t.length===0?n:JSON.stringify(r)}),t.length===0)return t;uc();for(let e of t)$s(e);return t}async function rc(e,t){return!e||!t?!1:(await nc({[e]:t})).length>0}var ic=fn(),ac=sn(ic?.mode??`e2e`,globalThis.location?.pathname??``)?`managed`:null,P=js({reports:[],workspaceMerges:[],currentFile:null,currentWorkspace:null,currentManagedTeam:null,currentManagedReport:null,currentReportWorkspace:null,currentView:`findings`,currentLinks:null,bundles:[],storedFiles:[],selectedBundle:null,selectedBundleWorkspace:null,scanSelection:null,bundleCreationRepoId:null,bundleDetails:null,bundleDetailsTab:`overview`,teamDependenciesTab:`pulls`,selectedPackage:null,selectedPackageVersion:null,packageDetailsTab:`overview`,packageSlideTriage:null,packageSlideTransient:!1,packagesSearchQuery:``,packagesSortBy:`findings-desc`,expandedPackages:new Set,selectedRepository:null,repositoryDetailsTab:`overview`,repositorySlideTriage:null,repositorySlideTransient:!1,repositoriesSearchQuery:``,repositoriesSortBy:`findings-desc`,bundleSourceFile:null,bundleSourceFindingIdx:null,bundleSourceTargetLine:null,bundleSourceWrap:Gs()??!0,bundleSourcePretty:!1,bundleCodeTerminal:!1,bundleSourceLockfile:!1,bundleCodeFileRequest:null,npmLookup:{input:``,error:null},npmOpening:null,repositoryCodeOpening:null,repositoryCodePending:null,profileLinkError:null,bundleCompare:null,bundleOverviewFilesSort:`name`,bundleOverviewPackagesSort:`size`,bundleCodeHistory:null,bundleCodeSearchMode:`files`,bundleCodeSearchQuery:``,bundleSearchQuery:``,bundleSearchRegex:!1,bundleSearchCase:!1,bundleSearchContext:!0,filterSeverities:new Set,filterColors:new Set,filterSources:new Set,filterAnalyzer:``,filterModel:``,filterRepo:``,filterRevalidate:``,filterPartial:``,showRevalidation:!0,revalidationDetailed:!1,upstreamOnly:!1,revalidateConflicts:new Map,codePreviews:new Set,filterConfMin:0,filterConfMax:10,filterInclude:``,filterIncludeNegate:!1,filterComment:``,filterFix:``,filterFlagged:``,filterDuplicates:``,filterCrossContext:``,filterAppStacked:``,filterSecurity:``,repoUrl:``,repoEditing:!1,sortBy:`severity`,viewMode:`kanban`,severityMode:Us()??`corrected`,triage:new Map,shownTriage:null,nextFindingId:0,activeTabByGroup:new Map,tableSelectedGid:null,filesViewMode:`table`,filesSearch:``,filesSelectedFile:null,kanbanPopoverGid:null,kanbanDetailFullscreen:Ws()??!1,kanbanExpandedColumn:null,focusGid:null,focusCodeTick:0,focusCodeStack:[],focusCodeAt:0,focusSplit:qs()??Bs,codeBlockTick:0,bundleHashTick:0,linksTick:0,findingIndexTick:0,serverMode:cn(ic?.mode??`e2e`,ac),serverModeConfig:ic?.mode??null,serverModeSelection:ac,deepviewScanServer:null,githubNewIssueLabels:ic?.githubNewIssueLabels??``,localMode:!1,managed:ic?.managed??null,managedSession:null,managedTeams:[],managedReport:null,managedReports:[],managedComments:new Map,managedIssues:new Map});function F(){return P.serverMode===`managed`&&!P.localMode}function oc(e){P.localMode=!!e}function sc(e,t=globalThis.location?.pathname??``){let n=sn(e,t);n&&(P.serverModeSelection=`managed`),P.serverModeConfig=e,P.serverMode=cn(e,P.serverModeSelection),P.serverModeSelection!==P.serverMode&&(P.serverModeSelection=null),(n||P.serverMode===`e2e`||on(e))&&oc(!1)}function cc(){return on(P.serverModeConfig)?(P.serverModeSelection=P.serverMode===`managed`?`e2e`:`managed`,P.serverMode=P.serverModeSelection,oc(!1),!0):P.serverMode===`managed`&&(oc(!P.localMode),!0)}function lc(){return P.serverMode===`standalone`&&P.localMode?`local`:P.serverMode===`managed`?P.localMode?`local`:`managed`:P.serverMode}function uc(){F()||P.repoEditing||P.currentFile&&(P.repoUrl=Xs(P.currentFile))}La(()=>{uc()});var dc=`__meta__`,fc=`deepview-reports`,pc=`deepview-bundles`,mc=`deepview.report:`;function hc(e,t,n,r){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:n},r)}function gc(e,t,n){return hc(e,t,`shared`,n)}function _c(e,t,n){return hc(e,t,`exclusive`,()=>navigator.locks.request(ro,{mode:`shared`},n))}var vc=!1;async function yc(e,{create:t,warnOnce:n=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(e){return n&&!vc&&(vc=!0,console.warn(`OPFS unavailable, falling back to gzipped localStorage (limited quota).`,e)),null}}async function bc(e,t){let n=await e.createWritable();try{await n.write(t),await n.close()}catch(e){try{await n.abort(e)}catch{}throw e}}async function xc(e,t){if(!Oa(e))return e;if(!wo())throw Error(`storage: vault locked, cannot decrypt "${t}"`);return await Ho(e,t)}function Sc(e){return e.length===0||e.length>=18&&e[0]===31&&e[1]===139&&e.at(-4)===0&&e.at(-3)===0&&e.at(-2)===0&&e.at(-1)===0}async function Cc(e,t){Nc(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(ro,{mode:`exclusive`},async()=>{if(Nc(e)!==t)return;I(e),Ac.delete(e);let n=await Ec();if(n)try{await n.removeEntry(e)}catch{}Oc(e),I(e),Ic(e,`delete`)}))}async function wc(e,t,n){try{(await t.getFile()).size===0&&await e.removeEntry(n)}catch{}}async function Tc(e,t,n,r,i=()=>{}){if(yo()&&!wo())throw i(),Error(`storage: vault locked, cannot save ${r}`);let a=wo(),o=a?await t(e,n):e;if(wo()!==a)throw i(),Error(`storage: vault state changed mid-save for ${r}; retry`);return o}function Ec(){return yc(fc,{create:!0,warnOnce:!0})}function Dc(e){try{return localStorage.getItem(mc+e)}catch{return null}}function Oc(e){try{localStorage.removeItem(mc+e)}catch{}}function kc(){let e=[];for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&n.startsWith(mc)&&e.push(n.slice(mc.length))}return e}var Ac=new Map,jc=new Map,Mc=new Map;function I(e){Mc.set(e,(Mc.get(e)??0)+1)}function Nc(e){return Mc.get(e)??0}var Pc=new Set;function Fc(e){return Pc.add(e),()=>Pc.delete(e)}function Ic(e,t){for(let n of Pc)try{n(e,t)}catch(e){console.warn(`storage file-change listener:`,e)}}async function Lc(){let e=new Set(kc()),t=await Ec();if(t)for await(let[n]of t.entries())e.add(n);return[...e].toSorted()}async function Rc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(t===``)throw Error(`Refusing to save empty report "${e}"`);return I(e),_c(`report`,e,async()=>{let n=await Ec();if(n){let r=await Cn(da(t));r=await Tc(r,Vo,e,`"${e}"`,()=>I(e));let i=await n.getFileHandle(e,{create:!0}),a=await i.createWritable();try{await a.write(r),await a.close()}catch(t){Ac.delete(e),I(e);try{await a.abort(t)}catch{}throw await wc(n,i,e),t}Ac.set(e,t),I(e),Oc(e),Ic(e,`save`);return}let r=da(t);r=await Cn(r),r=await Tc(r,Vo,e,`"${e}"`,()=>I(e));let i=r.toBase64();try{localStorage.setItem(mc+e,i),Ac.set(e,t),I(e),Ic(e,`save`)}catch(t){throw I(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function zc(e,t){let n=Dc(e);if(n===null)return null;let r=Uint8Array.fromBase64(n);if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return pa(await wn(r))}async function Bc(e){if(Ac.has(e))return Ac.get(e);if(jc.has(e))return jc.get(e);let t=Nc(e),n=(async()=>{let n=await Ec();if(n){let r;try{r=await n.getFileHandle(e)}catch(n){if(n instanceof DOMException&&n.name===`NotFoundError`){let n=await zc(e,t);if(n!==null)return Rc(e,n).catch(t=>{console.warn(`storage: stranded-localStorage migration of "${e}" failed:`,t)}),n}throw n}let i=await r.getFile(),a=new Uint8Array(await i.arrayBuffer());if(a=await xc(a,e),Sc(a))throw await Cc(e,t),Error(`File not found: ${e}`);if(a.length>=2&&a[0]===31&&a[1]===139){let e=await wn(a);return pa(e)}let o=pa(a);return Rc(e,o).catch(t=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,t)}),o}let r=await zc(e,t);if(r===null)throw Error(`File not found: ${e}`);return r})();jc.set(e,n);try{let r=await n;return Nc(e)===t&&Ac.set(e,r),r}finally{jc.delete(e)}}async function Vc(e){let t=Nc(e),n=await Ec(),r;if(n){let t=null;try{t=await n.getFileHandle(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw t;let n=Dc(e);if(n===null)throw t;r=Uint8Array.fromBase64(n)}if(t){let e=await t.getFile();r=new Uint8Array(await e.arrayBuffer())}}else{let t=Dc(e);if(t===null)throw Error(`File not found: ${e}`);r=Uint8Array.fromBase64(t)}if(r=await xc(r,e),Sc(r))throw await Cc(e,t),Error(`File not found: ${e}`);return r}async function Hc(e){let t=await Vc(e),n=t[0]===31&&t[1]===139?await wn(t):t;return pa(n)}async function Uc(e,t){if(typeof e!=`string`||e.includes(`\0`))throw Error(`Invalid report name: contains NUL byte or is not a string`);if(Sc(t))throw Error(`Refusing to save empty report bytes for "${e}"`);return I(e),Ac.delete(e),_c(`report`,e,async()=>{let n=await Tc(t,Vo,e,`"${e}"`,()=>I(e)),r=await Ec();if(r){let t=await r.getFileHandle(e,{create:!0}),i=await t.createWritable();try{await i.write(n),await i.close()}catch(n){I(e);try{await i.abort(n)}catch{}throw await wc(r,t,e),n}I(e),Oc(e),Ic(e,`save`);return}try{localStorage.setItem(mc+e,n.toBase64()),I(e),Ic(e,`save`)}catch(t){throw I(e),Error(`localStorage write failed for ${e}: ${t.message}`,{cause:t})}})}async function Wc(e){return I(e),Ac.delete(e),jc.delete(e),_c(`report`,e,async()=>{let t=await Ec();if(t){try{await t.removeEntry(e)}catch(t){if(!(t instanceof DOMException)||t.name!==`NotFoundError`)throw I(e),t}Oc(e),I(e),Ic(e,`delete`);return}localStorage.removeItem(mc+e),I(e),Ic(e,`delete`)})}var Gc=`_meta.json`,Kc=`.index-v1`,qc=new Set;function Jc(e){return qc.add(e),()=>qc.delete(e)}function Yc(e,t){for(let n of qc)try{n(e,t)}catch(e){console.warn(`storage bundle-change listener:`,e)}}function Xc(){return yc(pc,{create:!0})}function Zc(e){return e.replaceAll(`/`,`_`)}async function Qc(e){let t;try{let n=await(await e.getFileHandle(Gc)).getFile();t=new Uint8Array(await n.arrayBuffer())}catch(e){return e instanceof DOMException&&e.name===`NotFoundError`||console.warn(`readBundleMeta: failed to read _meta.json:`,e),[]}let n=t;if(Oa(t)){if(!wo())return console.warn(`readBundleMeta: vault locked, returning empty bundle list`),[];try{n=await Wo(t,dc)}catch(e){return console.warn(`readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):`,e),[]}}try{let e=JSON.parse(pa(n));return Array.isArray(e)?e:[]}catch(e){return console.warn(`readBundleMeta: JSON.parse failed:`,e),[]}}async function $c(e,t){let n=da(JSON.stringify(t));n=await Tc(n,Uo,dc,`bundle metadata`);try{await e.removeEntry(Gc)}catch{}await bc(await e.getFileHandle(Gc,{create:!0}),n)}var el=`${pc}/${Gc}`;function tl(e){return navigator.locks.request(el,e)}async function nl(){let e=await Xc();return e?[...await navigator.locks.request(el,{mode:`shared`},()=>Qc(e))].toSorted((e,t)=>e.name.localeCompare(t.name)):[]}function rl(){return al(()=>!0)}function il(){return al((e,t)=>t.kind===`file`&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function al(e){if(typeof navigator>`u`||!navigator.storage?.getDirectory)return!1;let t=await yc(pc,{create:!1});if(!t)return!1;try{for await(let[n,r]of t.entries())if(e(n,r))return!0}catch{}return!1}async function ol(e,t){let n=await Xc();if(!n)throw Error(`Cannot save bundle ${e}: OPFS unavailable`);let r=t instanceof Uint8Array?t:da(t),i=await Sn(r),a=Zc(i),o=e.toLowerCase().endsWith(`.map`)?await Cn(r):r;return _c(`bundle`,i,async()=>{o=await Tc(o,Uo,i,`bundle "${e}"`);try{await n.removeEntry(a)}catch{}await bc(await n.getFileHandle(a,{create:!0}),o);try{await tl(async()=>{let t=await Qc(n),r=t.findIndex(e=>e.integrity===i);r>=0?t[r]={integrity:i,name:e}:t.push({integrity:i,name:e}),await $c(n,t)})}catch(e){try{await n.removeEntry(a),Yc(i,`delete`)}catch{}throw e}return Yc(i,`save`),{integrity:i,name:e}})}async function sl(e){let t=await Xc();if(t)return _c(`bundle`,e,async()=>{try{await t.removeEntry(Zc(e))}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}Yc(e,`delete`);try{await tl(async()=>{try{await t.removeEntry(Zc(e)+Kc)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}let n=await Qc(t),r=n.filter(t=>t.integrity!==e);r.length!==n.length&&await $c(t,r)})}finally{Yc(e,`delete`)}})}async function cl(e){let t=await Xc();if(!t)throw Error(`OPFS unavailable`);let n=await(await t.getFileHandle(Zc(e))).getFile(),r=new Uint8Array(await n.arrayBuffer());if(Oa(r)){if(!wo())throw Error(`storage: vault locked, cannot read bundle "${e}"`);r=await Wo(r,e)}return r.length>=2&&r[0]===31&&r[1]===139?await wn(r):r}async function ll(e){let t=await Xc();if(!t||yo()&&!wo())return null;try{let n=await t.getFileHandle(Zc(e)+Kc),r=new Uint8Array(await(await n.getFile()).arrayBuffer());return Oa(r)&&(r=await Wo(r,e+Kc)),JSON.parse(pa(await wn(r)))}catch{return null}}async function ul(e,t){let n=await Cn(da(JSON.stringify(t)));return navigator.locks.request(ro,{mode:`shared`},()=>tl(async()=>{let t=await Xc();if(!t)return;await t.getFileHandle(Zc(e));let r=e+Kc,i=await Tc(n,Uo,r,`bundle index`);await bc(await t.getFileHandle(Zc(r),{create:!0}),i)}))}async function dl(e,t){let n=await Ec();if(n){let r=null;try{r=await n.getFileHandle(e)}catch(e){if(!(e instanceof DOMException)||e.name!==`NotFoundError`)throw e}if(r){let i=await r.getFile(),a=await t(new Uint8Array(await i.arrayBuffer()));if(a===null)return;Ac.delete(e),jc.delete(e),I(e);let o=await n.getFileHandle(e,{create:!0});try{await bc(o,a)}catch(t){throw await wc(n,o,e),t}I(e);return}}let r=Dc(e);if(r===null)return;let i=await t(Uint8Array.fromBase64(r));i!==null&&(Ac.delete(e),jc.delete(e),I(e),localStorage.setItem(mc+e,i.toBase64()),I(e))}function fl(e,t){return e.seal?n=>Oa(n)?null:e.seal(n,t):n=>Oa(n)?e.open(n,t):null}async function pl(e){let t=await Lc();for(let n of t)try{await dl(n,fl(e,Eo(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}var ml=({seal:e})=>pl({seal:e}),hl=({open:e})=>pl({open:e});async function gl(){let e=await Xc();if(!e)return{dir:null,keys:[]};let t=[];for await(let[n]of e.entries())t.push(n);return{dir:e,keys:t}}function _l(e){return e===Gc?dc:e.startsWith(`sha512-`)?e.replaceAll(`_`,`/`):null}async function vl(e,t,n){let r=await(await e.getFileHandle(t)).getFile(),i=await n(new Uint8Array(await r.arrayBuffer()));i!==null&&await bc(await e.getFileHandle(t,{create:!0}),i)}async function yl(e){let{dir:t,keys:n}=await gl();if(t)for(let r of n){let n=_l(r);if(n!==null)try{await vl(t,r,fl(e,Do(n)))}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`)continue;throw e}}}var bl=({seal:e})=>yl({seal:e}),xl=({open:e})=>yl({open:e});ko(()=>{Ac.clear(),jc.clear()});var Sl=`deepview/workspace-id/v1
2
+ `;async function Cl(e){let t=Uint8Array.fromBase64(e),n=da(Sl),r=new Uint8Array(n.length+t.length);r.set(n,0),r.set(t,n.length);let i=new Uint8Array(await crypto.subtle.digest(`SHA-256`,r)),a=Array.from(i.subarray(0,16),e=>e.toString(16).padStart(2,`0`)).join(``).split(``);a[12]=`8`,a[16]=(parseInt(a[16],16)&3|8).toString(16);let o=a.join(``);return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20,32)}`}function wl(e){let t=new Set;function n(e){return t.add(e),()=>t.delete(e)}function r(n){for(let r of t)try{r(n)}catch(t){console.warn(`workspace ${e} listener failed:`,t)}}return{on:n,fire:r}}var Tl=wl(`create`),El=wl(`delete`),Dl=wl(`privateKey`),Ol=wl(`report-membership`),kl=wl(`bundle-membership`);Tl.on;var Al=El.on,jl=Dl.on,Ml=Ol.on,Nl=kl.on,Pl=Tl.fire,Fl=El.fire,Il=Dl.fire,Ll=Ol.fire,Rl=kl.fire,zl=`deepview.workspaces`,Bl=1;function Vl(){try{let e=Va(zl);if(!e)return[];let t=JSON.parse(e);return t&&typeof t==`object`&&Array.isArray(t.workspaces)?t.workspaces:Array.isArray(t)?t:[]}catch{return[]}}async function Hl(e){await Ha(zl,JSON.stringify({version:Bl,workspaces:e}))}var Ul=zl;function Wl(e){return navigator.locks.request(Ul,async()=>{await Ga();let t=Vl(),n=await e(t);if(n!==!1)return await Hl(t),n})}function Gl(e){return{id:e.id,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...e.reports]:[],bundles:Array.isArray(e.bundles)?[...e.bundles]:[]}}var Kl=Vl().map(Gl);function ql(){Kl=Vl().map(Gl)}function Jl(e){Kl=Kl.filter(t=>t.id!==e.id),Kl.push(Gl(e))}function Yl(e,t){let n=Array.isArray(e[t])?[...e[t]]:[],r=Kl.find(t=>t.id===e.id);if(r){r[t]=n;return}Kl.push(Gl(e))}function Xl(e){Kl=Kl.filter(t=>t.id!==e)}function L(){let e=Vl();for(let t of e)Array.isArray(t.reports)||(t.reports=[]),Array.isArray(t.bundles)||(t.bundles=[]);return e}var Zl=200;function Ql(e){let t=(e??``).trim();return t&&t.replaceAll(/[\u0000-\u001F\u007F]/gu,``).slice(0,Zl)||null}async function $l(e){let t=Ql(e);if(!t)return null;let n=new Uint8Array(32);crypto.getRandomValues(n);let r=n.toBase64(),i={id:await Cl(r),name:t,privateKey:r,reports:[],bundles:[],createdAt:Date.now()};return await Wl(e=>!e.some(e=>e.id===i.id)&&(e.push(i),i))?(Jl(i),i):null}async function eu(e){await Wl(t=>{let n=t.findIndex(t=>t.id===e);return n<0?!1:(t.splice(n,1),!0)})&&(Fl(e),Xl(e))}async function tu(e,t){let n=Ql(t);return!(!n||!await Wl(t=>{let r=t.find(t=>t.id===e);return!r||r.name===n?!1:(r.name=n,r)}))}async function nu(e){let{next:t}=await Wl(t=>{let n=t.findIndex(t=>t.id===e.id),r=n>=0?t[n]:null,i=Ql(e.name)??r?.name??`Workspace`,a=e.preserveBundles?Array.isArray(r?.bundles)?r.bundles:[]:Array.isArray(e.bundles)?e.bundles:[],o={id:e.id,name:i,privateKey:e.privateKey,reports:Array.isArray(e.reports)?[...new Set(e.reports)]:[],bundles:[...new Set(a)],createdAt:e.createdAt??Date.now()};return n>=0?t[n]=o:t.push(o),{previous:r,next:o}}),n=Kl.find(e=>e.id===t.id)??null;return n==null?Pl(t.id):(n.privateKey!==t.privateKey&&Il(t.id),iu(n.reports,t.reports)||Ll(t.id),iu(n.bundles,t.bundles)||Rl(t.id)),Jl(t),t}async function ru({id:e,name:t,privateKey:n,createdAt:r}){let i=null;return await Wl(a=>{let o=Ql(t);if(!o)return i={status:`name-collision`,existing:null},!1;let s=a.find(t=>t.id===e)??null;if(s)return i={status:`already-attached`,workspace:s},!1;let c=a.find(e=>Ql(e.name)===o)??null;if(c)return i={status:`name-collision`,existing:c},!1;let l={id:e,name:o,privateKey:n,reports:[],bundles:[],createdAt:r??Date.now()};a.push(l),i={status:`attached`,workspace:l}}),i?.status===`attached`&&(Pl(i.workspace.id),Jl(i.workspace)),i}function iu(e,t){let n=new Set(e),r=new Set(t);if(n.size!==r.size)return!1;for(let e of n)if(!r.has(e))return!1;return!0}async function au({identifier:e,workspaceId:t,field:n,fire:r,additive:i=!1,from:a=void 0}){let o=await Wl(r=>{if((r.find(t=>Array.isArray(t[n])&&t[n].includes(e))?.id??null)===(t??null))return!1;let o=null;if(t!=null&&(o=r.find(e=>e.id===t)??null,!o))return!1;let s=new Set;if(!i)for(let t of r)a!==void 0&&t.id!==a||(Array.isArray(t[n])||(t[n]=[]),t[n].includes(e)&&(t[n]=t[n].filter(t=>t!==e),s.add(t.id)));if(o&&(Array.isArray(o[n])||(o[n]=[]),o[n].includes(e)||(o[n].push(e),s.add(o.id))),s.size===0)return!1;let c=new Map;for(let e of s){let t=r.find(t=>t.id===e);t&&c.set(e,t)}return{affected:s,snapshot:c}});if(!o)return;let{affected:s,snapshot:c}=o;for(let e of s){r(e);let t=c.get(e);t&&Yl(t,n)}}function ou(e,t){return{move:(n,r)=>au({identifier:n,workspaceId:r,field:e,fire:t}),add:(n,r)=>au({identifier:n,workspaceId:r,field:e,fire:t,additive:!0}),remove:(n,r)=>au({identifier:n,field:e,fire:t,from:r})}}var su=ou(`reports`,Ll),cu=ou(`bundles`,Rl),lu=su.move,uu=su.add,du=su.remove,fu=cu.move,pu=cu.add,mu=cu.remove;function hu(){let e=Vl().map(Gl),t=new Map(Kl.map(e=>[e.id,e])),n=new Map(e.map(e=>[e.id,e]));for(let e of t.keys())n.has(e)||Fl(e);for(let[e,r]of n){let n=t.get(e);if(!n){Pl(e);continue}n.privateKey!==r.privateKey&&Il(e),iu(n.reports,r.reports)||Ll(e),iu(n.bundles,r.bundles)||Rl(e)}Kl=e}La(()=>{hu()});function gu(e=[]){let t=new Map,n=(e,n)=>{t.has(e)||t.set(e,new Set),t.get(e).add(n)},r=e=>{for(let t of e.slice(1))n(e[0],t),n(t,e[0])};for(let t of e)r(t);return{add:r,linkedIds:e=>t.get(e)??[]}}function _u(e){let t=[];for(let n of e){let e=n?.revalidateInputs;n?.isApp!==!0||typeof n.id!=`string`||!Array.isArray(e)||t.push([n.id,...e.filter(e=>typeof e==`string`&&e!==``)])}return t}var vu=null;function yu(){vu=null}function bu(){return F()&&vu?.teamId===P.currentManagedTeam&&vu?.userId===P.managedSession?.id&&vu?.role===P.managedSession?.role?vu:null}function xu(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[];ee(t.links??[],i);for(let e of t){let t=e.data;if(t.source===`links`&&Array.isArray(t.links)){a.push({id:e.id,name:e.filename,groups:t.links,skipped:0}),ee(t.links,i);continue}let s=bi(t)??[],c=Rr([{groups:[s.flat().filter(e=>e&&typeof e==`object`)],tree:t.tree}]);for(let[i,a]of s.entries()){let s=(Array.isArray(a)?a:[a]).filter(e=>e&&typeof e==`object`).map(n=>{let r={...n,_managedReportId:e.id,_reportName:e.filename,_repoFallback:e.repo.github,_repoDirectory:e.repo.directory,_source:n.source??t.source??null,_bundleHashes:t.bundleHashes??[],_depsDirectory:c};return hi(r,t),r._analyzer=r._source??r.type??null,`isApp`in r||(r.isApp=Li(r,r._source)),r}),l={report:e.filename,managedReportId:e.id,index:i,members:s};o.push(l);for(let e of s)n.has(e.id)||n.set(e.id,[]),n.get(e.id).push(l);for(let e of _u(s).flatMap(([,...e])=>e))r.has(e)||r.set(e,new Set),r.get(e).add(l)}}vu={teamId:e,userId:P.managedSession?.id,role:P.managedSession?.role,links:a,rows:o,byId:n,citedBy:r,duplicates:i},P.linksTick++,P.findingIndexTick++}function Su(e){let t=bu();return[...new Set(e.flatMap(e=>t?.byId.get(e)??[]))]}function Cu(e){let t=bu();return[...new Set(e.flatMap(e=>[...t?.citedBy.get(e)??[]]))]}function wu(e){for(let t of Su([e])){let n=Vi(t.members.find(t=>t.id===e));if(n)return n}return``}var Tu=`deepview.fileCounts`,Eu=4,Du=new Set([3,Eu]),Ou=null;function ku(){if(Ou)return Ou;let e;try{e=JSON.parse(Va(Tu)||`{}`)}catch{e={}}return Du.has(e?.__v)?e.__v=Eu:e={__v:Eu},Ou=e,Ou}function Au(){Ha(Tu,JSON.stringify(Ou)).catch(e=>console.warn(`counts persist:`,e))}function ju(e){if(e===`__v`)return;let t=ku()[e];if(t!==void 0)return typeof t==`number`?{count:t}:t}function Mu(e){return ju(e)?.count}function Nu(e){return ju(e)?.source}function Pu(e,t,n){let r=ku();r[e]={count:t,source:n??null},Au()}function Fu(e){let t=ku();delete t[e],Au()}function Iu(e){let t=b(e);return t?{count:x(t.groups),source:y,recognized:!0}:Ci(e)}var Lu=null,Ru=null,zu=null;function Bu(e,t){for(let{names:n,onUpdate:r}of zu)if(n.has(e))try{r(e,t)}catch(e){console.warn(`ensureCounts onUpdate:`,e)}}function Vu(e,t){if(Lu){t&&zu.push({names:new Set(e),onUpdate:t});for(let t of e)Ru.add(t);return Lu}return Ru=new Set(e),zu=t?[{names:new Set(e),onUpdate:t}]:[],Lu=(async()=>{await Promise.resolve();try{let e=ku();for(;Ru.size>0;){let t=Ru.values().next().value;if(Ru.delete(t),e[t]===void 0)try{let n=await Bc(t);if(e[t]!==void 0)continue;let{count:r,source:i}=Iu(n);e[t]=i?{count:r,source:i}:{count:r},Au(),Bu(t,r)}catch{}}}finally{Lu=null,Ru=null,zu=null}})(),Lu}var Hu=new Map,Uu=new Map,Wu=new Map,Gu=new Set,Ku=null,qu=null,Ju=0,Yu=!1,Xu=!1;function Zu(){return F()||Xu}function Qu(e){return Gu.add(e),()=>Gu.delete(e)}function $u(){for(let e of Gu)try{e()}catch(e){console.warn(`linked-findings listener:`,e)}}function ed(){let e=new Map;for(let t of Hu.values())t&&ee(t.groups,e);Uu=e}function td(){if(F())return bu()?.links??[];let e=[];for(let[t,n]of Hu)n&&e.push({name:t,groups:n.groups,skipped:n.skipped});return e.toSorted((e,t)=>e.name.localeCompare(t.name))}function nd(){return F()?!!bu()?.duplicates.size:Uu.size>0}function rd(e){if(F())return[...bu()?.duplicates.get(e)??[]];let t=Uu.get(e);return t?[...t]:[]}async function id(e){if(Hu.has(e))return!1;let t=Wu.get(e)??0,n;try{n=await Bc(e)}catch{return!1}if(n==null)return!1;if((Wu.get(e)??0)!==t)return Yu=!0,!1;let r=/^\s*\[/u.test(n)?b(n):null;if(Hu.set(e,r),r&&Nu(e)!==y)Pu(e,x(r.groups),y);else if(!r&&Nu(e)===y){let{count:t,source:r}=Iu(n);Pu(e,t,r)}return r!==null}function ad(){return F()?Promise.resolve():qu||(qu=(async()=>{try{let e,t;do{t=Ju,e=await Lc(),Xu&&e.some(e=>!Hu.has(e))&&(Xu=!1,$u());let n=e.filter(e=>Nu(e)===y);(await Promise.all(n.map(e=>id(e)))).some(Boolean)&&(ed(),$u())}while(t!==Ju);return e}catch(e){throw Xu&&(Xu=!1,$u()),e}finally{qu=null}})(),qu)}function od(){return F()?Promise.resolve():Ku||(Ku=(async()=>{try{do{Yu=!1;let e=await ad(),t=!1;for(let n of e)await id(n)&&(t=!0);let n=!Yu&&e.every(e=>Hu.has(e)),r=Xu!==n;Xu=n,t&&ed(),(t||r)&&$u()}while(Yu)}catch(e){throw Xu&&(Xu=!1,$u()),e}finally{Ku=null}})(),Ku)}Fc(e=>{let t=Xu;Xu=!1,Ju++,Wu.set(e,(Wu.get(e)??0)+1),Yu=!0;let n=Hu.get(e)!=null;Hu.delete(e),n&&ed(),(n||t)&&$u()});var sd=()=>{};function cd(e){sd=typeof e==`function`?e:()=>{}}var ld=()=>{};function ud(e){ld=typeof e==`function`?e:()=>{}}var dd=()=>{};function fd(e){dd=typeof e==`function`?e:()=>{}}var pd=`deepview.triage`,md=`deepview.triage.pending`,hd=/^\d+$/u;async function gd(e){let t=new Blob([e]).stream().pipeThrough(new CompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}async function _d(e){let t=new Blob([e]).stream().pipeThrough(new DecompressionStream(`deflate`));return new Uint8Array(await new Response(t).arrayBuffer())}var vd=`deepview.triage.save`,yd=0;function bd(){return!F()&&c(P.triage,P.reports)}function xd(){bd();let e={};for(let[t,n]of P.triage){if(hd.test(t))continue;let r=yn(n);r&&(e[t]=r)}return e}function Sd(){if(F())return ld(),Promise.resolve();let e=++yd,t=xd(),n=Object.keys(t).length===0,r=n?null:JSON.stringify(t);if(r!=null)try{localStorage.setItem(md,r)}catch{}return navigator.locks.request(ro,{mode:`shared`},async()=>{let t=null,i=null;if(r!=null)try{let e=await gd(da(r));i=wo(),t=(i?await zo(e):e).toBase64()}catch(e){console.warn(`Failed to save triage:`,e),sd();return}await navigator.locks.request(vd,()=>{try{if(e!==yd)return;if(r!=null&&wo()!==i){queueMicrotask(()=>{Sd()});return}if(n)localStorage.removeItem(pd),localStorage.removeItem(md);else{localStorage.setItem(pd,t);try{localStorage.removeItem(md)}catch{}}}catch(e){console.warn(`Failed to save triage:`,e)}}),sd()})}async function Cd(){let e=localStorage.getItem(md);if(e)try{return JSON.parse(e)}catch{}let t=localStorage.getItem(pd);if(!t)return null;let n=Uint8Array.fromBase64(t);if(Oa(n)){if(!wo())throw Error(`triage: vault locked, cannot decrypt envelope`);n=await Bo(n)}let r=await _d(n);return JSON.parse(pa(r))}function wd(e,{replace:t=!1}={}){let n=P.triage;if(t){let t=null,r=localStorage.getItem(md);if(r)try{t=JSON.parse(r)}catch{}let i=e=>t!=null&&e in t;for(let r of[...n.keys()]){if(hd.test(r))continue;let a=e?.[r],o=!e||!(r in e);!(i(r)&&t[r]?.color)&&(o||!a?.color)&&S(n,r,{color:void 0}),!(i(r)&&(t[r]?.triage||t[r]?.deleted))&&!hn(a)&&S(n,r,{triage:void 0}),!(i(r)&&t[r]?.comment)&&(o||typeof a?.comment!=`string`||!a.comment)&&S(n,r,{comment:void 0}),!(i(r)&&t[r]?.fix)&&(o||typeof a?.fix!=`string`||!a.fix)&&S(n,r,{fix:void 0}),!(i(r)&&t[r]?.flagged!==void 0)&&(o||a?.flagged===void 0)&&S(n,r,{flagged:void 0})}for(let r of[...n.keys()]){if(hd.test(r))continue;let a=n.get(r)?.ignoredReports;if(!a||a.length===0)continue;let o=e?.[r],s=!gn(o);for(let e of[...a]){if(i(r)&&Array.isArray(t[r]?.ignoredReports)&&t[r].ignoredReports.includes(e))continue;if(s){xn(n,r,e,!1);continue}let a=o?.ignoredReports;(!Array.isArray(a)||!a.includes(e))&&xn(n,r,e,!1)}}}if(e)for(let[t,r]of Object.entries(e)){let e=hn(r),i={};if(r&&r.color&&(i.color=r.color),e&&(i.triage=e),r&&typeof r.comment==`string`&&r.comment&&(i.comment=r.comment),r&&typeof r.fix==`string`&&r.fix&&(i.fix=r.fix),r&&typeof r.flagged==`boolean`&&(i.flagged=r.flagged),Object.keys(i).length>0&&S(n,t,i),gn(r)&&r&&Array.isArray(r.ignoredReports))for(let e of r.ignoredReports)typeof e==`string`&&xn(n,t,e,!0,vn(r,e))}}async function Td(){if(F())return!1;if(![...P.triage.values()].some(e=>e.ignoredReports?.length))return;let e=await l(Object.fromEntries(P.triage),e=>gc(`report`,e,()=>Hc(e)));if(!F())return c(P.triage,e)}async function Ed(){if(!F())try{let e=await Cd();if(F())return;wd(e),await Td()&&await Sd()}catch(e){console.warn(`Failed to load triage:`,e)}}async function Dd(){if(!F())try{let e=await Cd();if(F())return;wd(e,{replace:!0}),await Td()&&await Sd(),dd()}catch(e){console.warn(`Failed to reload triage:`,e)}}typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key!==pd&&e.key!==md||Dd()});var Od;function kd(){return F()?Promise.resolve():Od??=Ed()}ko(()=>{Dd()}),ko(()=>{F()||wo()&&localStorage.getItem(md)&&Sd()});async function Ad({seal:e}){try{localStorage.removeItem(md)}catch{}let t=localStorage.getItem(pd);if(!t)return;let n=Uint8Array.fromBase64(t);if(Oa(n))return;let r=await e(n,To());localStorage.setItem(pd,r.toBase64())}async function jd({open:e}){try{localStorage.removeItem(md)}catch{}let t=localStorage.getItem(pd);if(!t)return;let n=Uint8Array.fromBase64(t);if(!Oa(n))return;let r=await e(n,To());localStorage.setItem(pd,r.toBase64())}function Md(e,t){return t?`r:${JSON.stringify({name:e,workspaceId:t})}`:e}function Nd(e){if(typeof e!=`string`||!e)return null;if(e.startsWith(`r:`))try{let t=JSON.parse(e.slice(2));if(t&&typeof t.name==`string`&&t.name&&typeof t.workspaceId==`string`&&t.workspaceId)return{name:t.name,workspaceId:t.workspaceId}}catch{}return{name:e,workspaceId:null}}async function Pd({id:e,name:t,privateKeyBase64:n,password:r}){if(typeof e!=`string`||!e)throw TypeError(`encodeShareLink: id required`);if(typeof t!=`string`||!t)throw TypeError(`encodeShareLink: name required`);if(typeof n!=`string`||!n)throw TypeError(`encodeShareLink: privateKey required`);if(typeof r!=`string`||!r)throw TypeError(`encodeShareLink: password required`);let i=await Cl(n)===e?{v:1,n:t,k:n}:{v:1,i:e,n:t,k:n};return(await d(da(JSON.stringify(i)),r)).toBase64({alphabet:`base64url`,omitPadding:!0})}async function Fd({encoded:e,password:t}){if(typeof e!=`string`||!e)throw Error(`malformed share link`);if(typeof t!=`string`||!t)throw TypeError(`decodeShareLink: password required`);let n;try{n=Uint8Array.fromBase64(e,{alphabet:`base64url`})}catch{throw Error(`malformed share link`)}let r=await f(n,t,{malformedMsg:`malformed share link`,wrongPasswordMsg:`wrong password or corrupt link`});try{return await Id(r)}catch(e){throw Error(`wrong password or corrupt link`,{cause:e})}}async function Id(e){let t=JSON.parse(pa(e));if(!t||typeof t!=`object`||typeof t.n!=`string`||typeof t.k!=`string`||!t.n||!t.k||t.i!==void 0&&(typeof t.i!=`string`||!t.i)||typeof t.i==`string`&&t.i.length>256||t.n.length>1024||Uint8Array.fromBase64(t.k).length!==32)throw Error(`shape`);return{id:typeof t.i==`string`?t.i:await Cl(t.k),name:t.n,privateKeyBase64:t.k}}function Ld(e){return typeof location>`u`?`#share=${e}`:`${location.origin}${location.pathname}#share=${e}`}function Rd(e){let t=typeof e==`string`?e:typeof location>`u`?``:location.hash;if(!t)return null;let n=t.replace(/^#/u,``);if(!n)return null;for(let e of n.split(`&`)){let t=e.indexOf(`=`);if(!(t<0||e.slice(0,t)!==`share`))return e.slice(t+1)||null}return null}var zd=new Map,Bd=new Map,Vd=new Map;function Hd(e){return F()?[...new Set(Su([e]).map(e=>e.report))]:[...zd.get(e)?.reports.keys()??[]]}function Ud(e){if(F())return wu(e);for(let{title:t}of zd.get(e)?.reports.values()??[])if(t)return t;return``}function Wd(e){if(F())return Su(e);let t=new Set;for(let n of e)for(let e of zd.get(n)?.reports.values()??[])for(let n of e.rows)t.add(n);return[...t]}function Gd(e){if(F())return Cu(e);let t=new Set;for(let n of e)for(let e of Bd.get(n)?.values()??[])for(let n of e)t.add(n);return[...t]}function Kd(e){return Vd.has(e)||Vd.set(e,{ids:new Set,inputs:new Set}),Vd.get(e)}function qd(e,t){let n=!1;for(let r of t.members){let i=zd.get(r.id);i||zd.set(r.id,i={reports:new Map});let a=i.reports.get(e);if(a){a.rows.add(t);continue}i.reports.set(e,{title:Vi(r),rows:new Set([t])}),Kd(e).ids.add(r.id),n=!0}for(let[,...n]of _u(t.members))for(let r of n){Bd.has(r)||Bd.set(r,new Map);let n=Bd.get(r);n.has(e)||n.set(e,new Set),n.get(e).add(t),Kd(e).inputs.add(r)}return n}function Jd(e){let t=Vd.get(e);if(Vd.delete(e),!t)return!1;for(let n of t.ids){let t=zd.get(n);t?.reports.delete(e),t?.reports.size===0&&zd.delete(n)}for(let n of t.inputs){let t=Bd.get(n);t?.delete(e),t?.size===0&&Bd.delete(n)}return!0}var Yd=`solidity-bundle`,Xd=`0.0.0`;function Zd(e){if(e?.name!==Yd)return!1;let t=e.version;return!t||t===Xd}function Qd(e){let t=e?.package?.npm,n=t?.version;if(typeof n==`string`&&n&&!Zd(t))return n;let r=e?.file;if(!r)return null;let i=/(?:^|\/)node_modules\/\.pnpm\/([^/]+)\/node_modules\//u.exec(r);if(!i)return null;let a=i[1],o=a.indexOf(`_`);o>0&&(a=a.slice(0,o));let s=a.lastIndexOf(`@`);return s<=0?null:a.slice(s+1)||null}function $d(){return{keys:new Set,findings:[],files:new Map,reports:new Set,_keyReports:new Map}}function ef(e,t,n,r){e.reports.add(n);let i=e._keyReports.get(t);i||e._keyReports.set(t,i=new Set);let a=!i.has(n);return i.add(n),e.keys.has(t)||(e.keys.add(t),e.findings.push(r),e.files.has(r.file)||e.files.set(r.file,[]),e.files.get(r.file).push(r)),a}function tf(e,t,n,r){e._keyReports.delete(t),e.keys.delete(t);let i=e.findings.findIndex(e=>r(e)===t);i>=0&&e.findings.splice(i,1);let a=e.files.get(n);if(!a)return;let o=a.findIndex(e=>r(e)===t);o>=0&&a.splice(o,1),a.length===0&&e.files.delete(n)}function nf(e){let t=new Set;for(let n of e._keyReports.values())for(let e of n)t.add(e);e.reports=t}function rf(e,t,n,r,i){let a=e.byVersion.get(t);a||(a=$d(),e.byVersion.set(t,a)),ef(a,r,i,n)}function af(e,t,n,r,i,a){let o=e.byVersion.get(t);if(!o)return;let s=o._keyReports.get(n);if(s&&(s.delete(i),s.size===0&&tf(o,n,r,a)),o._keyReports.size===0){e.byVersion.delete(t);return}nf(o)}function of(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let[n,r=``]=sf(e,`-`),[i,a=``]=sf(t,`-`),o=n.split(`.`),s=i.split(`.`),c=Math.max(o.length,s.length);for(let e=0;e<c;e++){let t=o[e]??`0`,n=s[e]??`0`,r=/^\d+$/u.test(t),i=/^\d+$/u.test(n);if(r&&i){let e=Number(n)-Number(t);if(e!==0)return e}else{let e=n.localeCompare(t);if(e!==0)return e}}return r===``&&a!==``?-1:r!==``&&a===``?1:a.localeCompare(r)}function sf(e,t){let n=e.indexOf(t);return n<0?[e,``]:[e.slice(0,n),e.slice(n+1)]}var cf=new Map,lf=new Map,uf=new Map,df=new Map;function ff(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!Zd(t))return t.name;if(!e?.file)return null;let n=/(?:^|\/)(?:node_modules|dependencies)\/(@[^/]+\/[^/]+|[^/]+)/gu,r;for(;(r=n.exec(e.file))!==null;)if(r[1]!==`.pnpm`)return r[1];return null}function pf(e){return typeof e?.file==`string`&&/(?:^|\/)(?:node_modules|dependencies)\//u.test(e.file)}function mf(e,t){return typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:typeof t==`string`&&t?t:null}var hf=new Set,gf=new Set,_f=null,vf=!1;function yf(e){return gf.add(e),()=>gf.delete(e)}function bf(){for(let e of gf)try{e()}catch{}}function xf(e){return cf.get(e)?.list??[]}function Sf(){let e=0;for(let t of cf.values())e+=t.list.length;return e}function Cf(){return lf}function wf(){return uf}function Tf(e,t){let n=cf.get(e);if(!n)return[];let r=n.reports.get(Of(t));return r?[...r]:[]}function Ef(e,t){let n=lf.get(e);if(!n)return[];let r=n._keyReports.get(Of(t));return r?[...r]:[]}function Df(e,t){let n=uf.get(e);if(!n)return[];let r=n._keyReports.get(Of(t));return r?[...r]:[]}function Of(e){let t=e.id?`id:${e.id}`:`c:${e.severity??``}|${e.description??``}|${e.file??``}|${e.line??``}`;return JSON.stringify([t,o(e)])}function kf(e,t,n){let r=df.get(e);r||(r={hash:[],pkg:[],repo:[]},df.set(e,r)),r[t].push(n)}function Af(e,t,n){let r=cf.get(e.fileHash);r||(r={keys:new Set,list:[],reports:new Map},cf.set(e.fileHash,r));let i=r.reports.get(t);i||(i=new Set,r.reports.set(t,i));let a=!i.has(n);return i.add(n),a&&kf(n,`hash`,{hash:e.fileHash,key:t}),r.keys.has(t)?a:(r.keys.add(t),r.list.push(e),!0)}function jf(e,t,n){let r=ff(e);if(!r)return!1;let i=Qd(e),a=lf.get(r);if(a||(a={...$d(),repos:new Set,byVersion:new Map,_repoReports:new Map},lf.set(r,a)),typeof e.repo?.github==`string`&&e.repo.github){a.repos.add(e.repo.github);let t=a._repoReports.get(e.repo.github);t||a._repoReports.set(e.repo.github,t=new Set),t.add(n)}rf(a,i,e,t,n);let o=ef(a,t,n,e);return kf(n,`pkg`,{pkg:r,key:t,file:e.file,version:i}),o}function Mf(e,t,n,r){if(pf(e))return!1;let i=mf(e,r);if(!i)return!1;let a=uf.get(i);a||(a=$d(),uf.set(i,a));let o=ef(a,t,n,e);return o&&kf(n,`repo`,{repo:i,key:t,file:e.file}),o}function Nf(e){let t=df.get(e);df.delete(e),hf.delete(e);let n=Jd(e);if(!t)return n;let r=n;for(let{hash:n,key:i}of t.hash){let t=cf.get(n);if(!t)continue;let a=t.reports.get(i);if(a){if(a.delete(e)&&(r=!0),a.size===0){t.reports.delete(i),t.keys.delete(i);let e=t.list.findIndex(e=>Of(e)===i);e>=0&&t.list.splice(e,1)}t.keys.size===0&&cf.delete(n)}}let i=new Set;for(let{pkg:n,key:a,file:o,version:s}of t.pkg){let t=lf.get(n);if(!t)continue;let c=t._keyReports.get(a);if(c){if(c.delete(e)&&(r=!0),c.size===0&&tf(t,a,o,Of),af(t,s,a,o,e,Of),!i.has(n)){i.add(n);for(let n of[...t._repoReports.keys()]){let i=t._repoReports.get(n);i?.delete(e)&&i.size===0&&(t._repoReports.delete(n),t.repos.delete(n),r=!0)}}t._keyReports.size===0?lf.delete(n):nf(t)}}for(let{repo:n,key:i,file:a}of t.repo){let t=uf.get(n);if(!t)continue;let o=t._keyReports.get(i);o&&(o.delete(e)&&(r=!0),o.size===0&&tf(t,i,a,Of),t._keyReports.size===0?uf.delete(n):nf(t))}return r}async function Pf(e){if(hf.has(e))return!1;hf.add(e);try{let t=await Bc(e),n=await Ti(t);if(!n)return!1;let{data:r,findings:i}=n;if(i.length===0)return!1;a(i,r),yi(bi(r).map(e=>Array.isArray(e)?e:[e]),{source:r.source});let o=gi(r)??``;if(!o)try{o=Xs(e)}catch{}let s=!1;for(let t of i){let n=Of(t);t.fileHash&&Af(t,n,e)&&(s=!0),t.file&&jf(t,n,e)&&(s=!0),t.file&&Mf(t,n,e,o)&&(s=!0)}for(let[t,n]of bi(r).entries()){let i=(Array.isArray(n)?n:[n]).filter(e=>e?.id);i.length!==0&&qd(e,{report:e,index:t,members:i.map(e=>{let t=e.source??r.source??null;return{id:e.id,title:Vi(e),source:t,revalidate:Ii(e),isApp:e.isApp??Li(e,t),isSecurity:e.isSecurity,...e.file?{file:e.file,_depsDirectory:e._depsDirectory}:{},...Array.isArray(e.revalidateInputs)?{revalidateInputs:[...e.revalidateInputs]}:{}}})})&&(s=!0)}return hf.has(e)?s:(Nf(e),vf=!0,!1)}catch{return hf.delete(e),!1}}function Ff(){return F()?Promise.resolve():_f||(_f=(async()=>{try{do{vf=!1;let e=await Lc();for(let t of e)await Pf(t)&&bf()}while(vf)}finally{_f=null}})(),_f)}Fc(e=>{Nf(e)&&bf()}),Qs(e=>{Nf(e)&&bf(),Ff().catch(()=>{})});var If=new Map,Lf=new Map,Rf=new Map,zf=new Set;function Bf(e){return zf.add(e),()=>zf.delete(e)}function Vf(){for(let e of zf)try{e()}catch{}}function Hf(e,t){if(!e||!t)return!1;let n=!Lf.has(e);Lf.set(e,t),Rf.delete(e);for(let[n,r]of t){if(!r)continue;let t=If.get(r);t||(t=new Map,If.set(r,t)),t.set(e,n)}return n&&Vf(),n}function Uf(e){let t=Lf.get(e);if(Lf.delete(e),Rf.delete(e),t){for(let n of t.values()){let t=If.get(n);t&&(t.delete(e),t.size===0&&If.delete(n))}Vf()}}function Wf(e,t){let n=Lf.get(e);if(!n||typeof t!=`string`||t===``)return null;if(n.has(t))return t;let r=Kf(e,n).get(Gf(t));if(!r)return null;let i=t.startsWith(`/`)?t:`/${t}`,a=null;for(let e of r)if(e.endsWith(i)){if(a!==null)return null;a=e}return a}function Gf(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function Kf(e,t){let n=Rf.get(e);if(n)return n;n=new Map;for(let e of t.keys()){let t=Gf(e),r=n.get(t);r?r.push(e):n.set(t,[e])}return Rf.set(e,n),n}function qf(e){if(!e)return[];let t=If.get(e);if(!t)return[];let n=[];for(let[e,r]of t)n.push({integrity:e,file:r});return n}function Jf(e){return Lf.has(e)}async function Yf(e){if(!e)return null;let t=L(),n=(await Promise.all(t.map(e=>zr(`workspace`,e.id)))).indexOf(e);return n===-1?null:t[n]}async function Xf(e){if(!e)return null;let t=await Lc(),n=(await Promise.all(t.map(e=>zr(`report`,e)))).indexOf(e);return n===-1?null:t[n]}async function Zf(e,t){let n;try{n=await Bc(e)}catch{return!1}return n==null?!1:(await Ti(n))?.findings.some(e=>e.id===t)??!1}async function Qf(e,{skip:t=[]}={}){if(!e)return null;let n=new Set(t),r=(await Lc()).filter(e=>!n.has(e));for(let t of r)if(await Zf(t,e))return t;return null}function $f(e){return e?L().filter(t=>t.reports.includes(e)):[]}function ep(e){if(!e)return``;for(let t of e.split(`
3
+ `))if(t.trim())return t.trim();return``}function tp(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let e of P.reports)for(let r of e.groups)for(let e of r){let r=e.id??String(e._id);if(t.has(r)&&!n.has(r)&&(n.set(r,{severity:e.severity,file:e.file,line:e.line,description:ep(e.description)}),n.size===t.size))return n}return n}var np=`deepview.lastFile`,rp=null;function ip(){return rp||(rp=ap(),rp.catch(()=>{rp=null})),rp}async function ap(){try{await kd()}catch{}let e=await Lc(),t=new Set(e),n=new Set(e),r=new Set;for(let n of e){if(!n.toLowerCase().endsWith(`.deepseek`))continue;let e=n.slice(0,-9)+`.md`;if(t.has(e))continue;let i;try{i=await Bc(n),await Rc(e,i),await Wc(n)}catch(t){console.warn(`migrate: failed to rename ${n} -> ${e}`,t);continue}t.delete(n),t.add(e),r.add(n);let a=Mu(n);if(Fu(n),a===void 0){let{count:t,source:n}=Iu(i);Pu(e,t,n)}else{let{source:t}=Iu(i);Pu(e,a,t)}let o=Xs(n);o&&(ec(n,``),ec(e,o));let s=!1;for(let[t,r]of[...P.triage])r.ignoredReports?.includes(n)&&(xn(P.triage,t,n,!1),xn(P.triage,t,e,!0,vn(r,n)),s=!0);s&&await Sd();let c=Nd(Va(np));if(c?.name===n)try{await Ha(np,Md(e,c.workspaceId))}catch{}}for(let e of L())for(let t of e.reports){if(!t.toLowerCase().endsWith(`.deepseek`)||!r.has(t)&&n.has(t))continue;let i=t.slice(0,-9)+`.md`;await du(t,e.id),await uu(i,e.id)}}function op(){return{...sp,hydrateKey:Ka,localContentSyncStatus:mn,readTriageBlob:async()=>(await u(await Cd(),e=>gc(`report`,e,()=>Hc(e)))).entries,reportSyncHash:e=>gc(`report`,e,async()=>en(await Vc(e)))}}var sp={hasStoredBundleBytes:il,listBundles:nl,listFiles:Lc,onBundleMutated:Jc,onFileMutated:Fc,readBundle:cl,readFile:Hc,withStoredItem:gc,isEncryptionEnabled:yo,isUnlocked:bo,onVaultStateChange:ko,unlockEncryption:jo};function cp(e=sp){let t=()=>e.isEncryptionEnabled()&&!e.isUnlocked(),n=(n,r,i)=>{let a=!1,o=!1,s=e.onVaultStateChange(()=>{a=!0}),c=r===`report`?e.onFileMutated:e.onBundleMutated,l=i===void 0?null:c(e=>{e===i&&(o=!0)});return{check(){if(n?.throwIfAborted(),t()||a)throw Error(`Local data is locked or has changed. Unlock it and select the file again.`);if(o)throw Error(`This local ${r} changed. Select it again before importing.`)},unsubscribe(){s(),l?.()}}},r=async t=>t===`report`?(await e.listFiles()).map(e=>({value:e,label:e})):(await e.listBundles()).map(e=>({value:e.integrity,label:e.name,secondary:e.integrity}));return{get locked(){return t()},async hasData(n){return n===`report`?(await e.listFiles()).length>0:t()?e.hasStoredBundleBytes():(await e.listBundles()).length>0},async list(e){let t=n();try{t.check();let n=await r(e);return t.check(),n}finally{t.unsubscribe()}},unlock(t){return e.unlockEncryption(t)},subscribe(t){let n=e.onVaultStateChange(()=>t()),r=e.onFileMutated(e=>t({kind:`report`,value:e})),i=e.onBundleMutated(e=>t({kind:`bundle`,value:e}));return()=>{n(),r(),i()}},async importItem(t,i,a,{signal:o}={}){let s=n(o,t,i);try{s.check();let{result:n}=await e.withStoredItem(t,i,async()=>{s.check();let n=(await r(t)).find(e=>e.value===i);if(s.check(),!n)throw Error(`This file is no longer in local storage. Select another file.`);let o=t===`report`?await e.readFile(i):await e.readBundle(i);s.check();let c=new File([o],n.label,{type:t===`report`?`text/plain`:`application/octet-stream`});try{let e=Promise.resolve(a(c));return e.catch(()=>{}),{result:e}}finally{s.unsubscribe()}});return n}finally{s.unsubscribe()}}}}function lp(){return typeof navigator<`u`&&typeof navigator.storage==`object`&&navigator.storage!==null}async function up(){if(!lp()||typeof navigator.storage.persist!=`function`)return!1;try{return await navigator.storage.persist()===!0}catch{return!1}}async function dp(){let e={supported:lp(),persisted:null,usage:null,quota:null};if(!e.supported)return e;if(typeof navigator.storage.persisted==`function`)try{e.persisted=await navigator.storage.persisted()}catch{}if(typeof navigator.storage.estimate==`function`)try{let t=await navigator.storage.estimate();typeof t?.usage==`number`&&(e.usage=t.usage),typeof t?.quota==`number`&&(e.quota=t.quota)}catch{}return e}var fp=`deepview.scan.access`,pp=new Set;function mp(){for(let e of pp)e()}function hp(){return Va(fp)!=null}function gp(e){try{let t=JSON.parse(Va(fp)),n=t?.provider===`moonshotai`?`moonshot`:t?.provider;return!e||t?.server!==e||typeof t.deepview!=`string`||!t.deepview.trim()||![null,`anthropic`,`openai`,`moonshot`,`openrouter`].includes(n)||typeof t.token!=`string`?null:{...t,provider:n}}catch{return null}}async function _p({server:e,deepview:t,provider:n,token:r}){await Ha(fp,JSON.stringify({server:e,deepview:t,provider:n,token:r})),mp()}async function vp(){await Ua(fp),mp()}function yp(e){pp.add(e);let t=La(e);return()=>{pp.delete(e),t()}}var bp=1;function xp(){let e=xd(),t=Ys();return{version:bp,exportedAt:new Date().toISOString(),triage:e,repoUrls:t}}function Sp(){return`deepview-triage-${new Date().toISOString().replaceAll(/[:.]/gu,`-`).slice(0,19)}.json.gz`}async function Cp(){let e=xp();return{blob:new Blob([await Tn(JSON.stringify(e))]),filename:Sp()}}async function wp(e){let t;try{t=await En(new Uint8Array(await e.arrayBuffer()))}catch(e){throw Error(`Failed to gunzip: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON: ${e.message}`,{cause:e})}if(!n||typeof n!=`object`)throw Error(`Invalid backup file (not an object)`);if(n.version!==bp)throw Error(`Unsupported backup version: ${n.version} (expected ${bp})`);if(!n.triage||typeof n.triage!=`object`)throw Error("Backup is missing the `triage` map");if(!n.repoUrls||typeof n.repoUrls!=`object`)throw Error("Backup is missing the `repoUrls` map");return n}async function Tp(e,t){if(![`replace`,`prefer-imported`,`prefer-current`].includes(t))throw Error(`Unknown merge mode: ${t}`);if(!e||typeof e!=`object`)throw Error(`Invalid payload: not an object`);if(!e.triage||typeof e.triage!=`object`||Array.isArray(e.triage))throw Error("Invalid payload: missing or non-object `triage`");if(!e.repoUrls||typeof e.repoUrls!=`object`||Array.isArray(e.repoUrls))throw Error("Invalid payload: missing or non-object `repoUrls`");let n=e.triage,r=P.triage;if(t===`replace`)for(let e of[...r.keys()])hd.test(e)||r.delete(e);let i=t===`prefer-current`;for(let[e,t]of Object.entries(n)){if(hd.test(e)||!t||typeof t!=`object`)continue;typeof t.color==`string`&&t.color&&(!i||!r.get(e)?.color)&&S(r,e,{color:t.color});let n=hn(t);if(n&&(!i||!hn(r.get(e)))&&S(r,e,{triage:n}),typeof t.comment==`string`&&t.comment&&(!i||!r.get(e)?.comment)&&S(r,e,{comment:t.comment}),typeof t.fix==`string`&&t.fix&&(!i||!r.get(e)?.fix)&&S(r,e,{fix:t.fix}),typeof t.flagged==`boolean`&&(!i||r.get(e)?.flagged===void 0)&&S(r,e,{flagged:t.flagged}),Array.isArray(t.ignoredReports)&&gn(r.get(e)))for(let n of t.ignoredReports)typeof n==`string`&&xn(r,e,n,!0,vn(t,n))}await Td(),await Sd();let a=0,o=null;try{await tc(e.repoUrls,t),a=Object.keys(e.repoUrls).length}catch(e){console.warn(`applyTriageImport: repo-URL import failed:`,e),o=e}return{triageEntries:Object.keys(n).length,repoUrls:a,repoUrlError:o}}function Ep(e){return e?.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}async function Dp(e){let t=new Set;for(let n of e){let e;try{e=await Bc(n)}catch(e){if(Ep(e))continue;throw Error(`Failed to read ${n}: ${e.message}`,{cause:e})}if(e==null)continue;let r=await Ti(e);if(r)for(let e of r.findings)e.id&&t.add(e.id)}return t}function Op(){let e=new Set;for(let t of P.triage.keys())hd.test(t)||e.add(t);return e}async function kp(e){let t=Op();if(t.size===0)return{orphanedCount:0,sharedCount:0};let n=await Dp(e),r=new Set;for(let e of t)n.has(e)&&r.add(e);if(r.size===0)return{orphanedCount:0,sharedCount:0};let i=await Lc(),a=new Set(e),o=await Dp(i.filter(e=>!a.has(e))),s=0,c=0;for(let e of r)o.has(e)?c++:s++;return{orphanedCount:s,sharedCount:c}}async function Ap(){let e=new Set(P.triage.keys()),t=[];for(let[e,n]of P.triage)if(n.ignoredReports)for(let r of n.ignoredReports)t.push({id:e,report:r});let n=await Lc(),r=new Set(n),i=await Dp(n),a=!1;for(let t of e){if(hd.test(t)||i.has(t))continue;let e=P.triage.get(t);!e||!(e.color||hn(e)||e.comment||e.fix||e.flagged!==void 0)||S(P.triage,t,{color:void 0,triage:void 0,comment:void 0,fix:void 0,flagged:void 0,deleted:void 0})&&(a=!0)}for(let{id:e,report:n}of t)hd.test(e)||i.has(e)&&r.has(n)||_n(P.triage,e,n)&&xn(P.triage,e,n,!1)&&(a=!0);a&&await Sd()}var jp=1;async function Mp(e){let t=new Set,n=await Ti(e);for(let e of n?.findings??[])e.id&&t.add(e.id);return t}function Np(e){return(e??``).replaceAll(/[^a-zA-Z0-9._-]+/gu,`_`).replaceAll(/^_+|_+$/gu,``)||`workspace`}async function Pp(e){if(!Array.isArray(e)||e.length===0)return[];let t=await nl(),n=new Map(t.map(e=>[e.integrity,e.name])),r=[];for(let t of e){let e=n.get(t);if(!e)continue;let i;try{i=await cl(t)}catch(e){console.warn(`Workspace export: failed to read bundle ${t}: ${e?.message??e}`);continue}r.push({integrity:t,name:e,data:i.toBase64()})}return r}function Fp(e){let t=Xs(e);return t?{github:t}:null}async function Ip(e){let t=[];for(let n of e.reports??[]){let e;try{e=await Bc(n)}catch(e){console.warn(`Workspace export: skipping ${n}: ${e?.message??e}`),(e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`))&&await lu(n,null);continue}let r=Fp(n);t.push(r?{name:n,content:e,repo:r}:{name:n,content:e})}return t}async function Lp(e,{includeBundleBytes:t=!1}={}){let n=await Ip(e),r=new Set;for(let e of n)for(let t of await Mp(e.content))r.add(t);let i=new Set(e.reports??[]),a={};for(let[e,t]of P.triage){if(!r.has(e))continue;let n=(t.ignoredReports??[]).filter(e=>i.has(e)),o=yn({...t,ignoredReports:n});o&&(a[e]=o)}let o={};for(let e of n)e.repo?.github&&(o[e.name]=e.repo.github);let s=(e.bundles??[]).filter(e=>typeof e==`string`&&e.length>0),c={version:jp,exportedAt:new Date().toISOString(),workspace:{id:e.id,name:e.name,privateKey:e.privateKey,createdAt:e.createdAt},reports:n,bundles:s,repoUrls:o,triage:a};if(t){let e=await Pp(s);e.length>0&&(c.bundleBlobs=e)}return c}async function Rp(e,{includeBundleBytes:t=!1}={}){let n=await Lp(e,{includeBundleBytes:t});return{blob:new Blob([await Tn(JSON.stringify(n))]),filename:`${Np(e.name)}.deepview-workspace.json.gz`}}async function zp(e,t,{includeBundleBytes:n=!1}={}){if(typeof t!=`string`||!t)throw TypeError(`buildWorkspaceExportEncrypted: password required`);let{blob:r}=await Rp(e,{includeBundleBytes:n}),i=new Uint8Array(await r.arrayBuffer()),a=await m(i,t);return{blob:new Blob([a],{type:`application/octet-stream`}),filename:`${Np(e.name)}.deepview-workspace.enc`}}async function Bp(e,{password:t,includeBundleBytes:n=!1}={}){return typeof t==`string`&&t?await zp(e,t,{includeBundleBytes:n}):await Rp(e,{includeBundleBytes:n})}async function Vp(e){return{reports:await Ip(e)}}async function Hp(e){let t=await Vp(e);return{blob:new Blob([await Tn(JSON.stringify(t))]),filename:`${Np(e.name)}.deepview-reports.json.gz`}}function Up(e){return hn(e)??null}async function Wp(e){let t=new Map;for(let n of e??[]){if(typeof n?.content!=`string`)continue;let e=await Ti(n.content);if(e)for(let n of e.findings)!n.id||t.has(n.id)||t.set(n.id,{severity:n.severity,file:n.file,line:n.line,description:ep(n.description)})}return t}async function Gp(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return;let r=P.triage,i=[];for(let[t,n]of Object.entries(e)){if(!n||typeof n!=`object`)continue;let e=r.get(t)?.color,a=typeof n.color==`string`?n.color:void 0;a&&e&&e!==a?i.push({id:t,property:`color`,local:e,imported:a}):a&&a!==e&&S(r,t,{color:a});let o=r.get(t)?.comment??``,s=typeof n.comment==`string`?n.comment:``;s&&o&&o!==s?i.push({id:t,property:`comment`,local:o,imported:s}):s&&s!==o&&S(r,t,{comment:s});let c=r.get(t)?.fix??``,l=typeof n.fix==`string`?n.fix:``;l&&c&&c!==l?i.push({id:t,property:`fix`,local:c,imported:l}):l&&l!==c&&S(r,t,{fix:l});let u=Up(n),d=hn(r.get(t))??null;u&&d&&d!==u?i.push({id:t,property:`triage`,local:d,imported:u}):u&&!d&&S(r,t,{triage:u,...u===`ignored`?{}:{ignoredReports:void 0}});let f=r.get(t)?.flagged,p=typeof n.flagged==`boolean`?n.flagged:void 0;p!==void 0&&f!==void 0&&f!==p?i.push({id:t,property:`flagged`,local:f?`flagged`:`not flagged`,imported:p?`flagged`:`not flagged`}):p!==void 0&&p!==f&&S(r,t,{flagged:p});let m=Array.isArray(n.ignoredReports)?n.ignoredReports:[];if(gn(r.get(t)))for(let e of m)typeof e==`string`&&xn(r,t,e,!0,vn(n,e))}if(i.length>0&&t){let e=await t(i,n??new Map);e&&Kp(i,e)}await Sd()}function Kp(e,t){for(let n of e)t[`${n.id}:${n.property}`]===`imported`&&qp(n.id,n.property)===n.local&&(n.property===`color`?S(P.triage,n.id,{color:n.imported}):n.property===`comment`?S(P.triage,n.id,{comment:n.imported}):n.property===`fix`?S(P.triage,n.id,{fix:n.imported}):n.property===`triage`?S(P.triage,n.id,{triage:n.imported,...n.imported===`ignored`?{}:{ignoredReports:void 0}}):n.property===`flagged`&&S(P.triage,n.id,{flagged:n.imported===`flagged`||n.imported!==`not flagged`&&void 0}))}function qp(e,t){if(t===`color`)return P.triage.get(e)?.color;if(t===`triage`)return hn(P.triage.get(e))??null;if(t===`comment`)return P.triage.get(e)?.comment??``;if(t===`fix`)return P.triage.get(e)?.fix??``;if(t===`flagged`){let t=P.triage.get(e)?.flagged;return t===!0?`flagged`:t===!1?`not flagged`:``}}async function Jp(e){if(Array.isArray(e))for(let t of e){let e;try{e=Uint8Array.fromBase64(t.data)}catch(e){console.warn(`Workspace import: failed to decode bundle ${t.integrity}: ${e?.message??e}`);continue}try{let n=await ol(t.name,e);n?.integrity!==t.integrity&&console.warn(`Workspace import: bundle ${t.name} integrity mismatch (claimed ${t.integrity}, computed ${n?.integrity})`)}catch(e){console.warn(`Workspace import: failed to save bundle ${t.name}: ${e?.message??e}`)}}}async function Yp(e,{conflictResolver:t}={}){let n=[];for(let t of e.reports)if(typeof t?.name==`string`&&typeof t?.content==`string`)try{await Rc(t.name,t.content);let{count:e,source:r}=Iu(t.content);Pu(t.name,e,r??Nu(t.name)),n.push(t.name)}catch(e){console.warn(`Workspace import: failed to save ${t.name}: ${e.message}`)}Array.isArray(e.bundleBlobs)&&e.bundleBlobs.length>0&&await Jp(e.bundleBlobs);let r=e.triage&&Object.keys(e.triage).length>0?await Wp(e.reports):new Map;await Gp((await u(e.triage,t=>e.reports.find(e=>e.name===t)?.content)).entries,t,r);let i=Array.isArray(e.bundles),a=i?e.bundles.filter(e=>typeof e==`string`&&e.length>0):[],o=await nu({id:e.workspace.id,name:e.workspace.name,privateKey:e.workspace.privateKey,reports:n,bundles:i?a:void 0,preserveBundles:!i,createdAt:e.workspace.createdAt}),s=new Set(n),c=Object.create(null);if(e.repoUrls&&typeof e.repoUrls==`object`)for(let[t,n]of Object.entries(e.repoUrls))!s.has(t)||typeof n!=`string`||!n||(c[t]=n);if(Object.keys(c).length>0)try{await nc(c)}catch(e){console.warn(`Workspace import: failed to adopt per-report repository URLs:`,e)}return o}function Xp(e){return!e||typeof e!=`object`||Array.isArray(e)?`payload is not an object`:e.version!==void 0||e.workspace!==void 0?`payload claims to be a workspace export`:Array.isArray(e.reports)?e.reports.length>h?`reports count (${e.reports.length}) exceeds cap (${h})`:null:`reports field must be an array`}function Zp(e){return Xp(e)===null}async function Qp(e){if(p(e))return{kind:`encrypted`};let t;try{t=await En(e)}catch(e){throw Error(`gzip decompression failed: ${e.message}`,{cause:e})}let n;try{n=JSON.parse(t)}catch{return{kind:`workspace`,text:t}}return Zp(n)?{kind:`reports`,reports:n.reports}:{kind:`workspace`,text:t}}var $p=`deepview.workspaceApp`,em=2,tm=new Set,nm=new Set,rm=0,im=0,am=0,om=new Map,sm=Promise.resolve(),cm=null;function lm(e=Va($p)){try{let t=JSON.parse(e);if(t?.version===em&&t.entries&&typeof t.entries==`object`)return t}catch{}return{version:em,revision:``,links:`[]`,entries:{}}}function um(){for(let e of tm)e()}function dm(e){let t=sm.then(()=>Qa($p,t=>e(lm(t))));return sm=t.catch(e=>console.warn(`workspace App cache:`,e)),t}function fm(e){return JSON.stringify(e.reports.toSorted())}function pm(){return JSON.stringify(td().map(({name:e,groups:t})=>({name:e,groups:t})))}function mm(e){return Zu()&&e.links===pm()}function hm(e,t){return e.workspaceRevisions?.[t]??``}function gm(e,t,n){return n.workspaceId===t?.id&&n.workspaceEpoch===(om.get(t?.id)??0)&&n.workspaceRevision===hm(e,t?.id)}function _m(e,t,n){return n.reportEpoch===am&&n.reportRevision===(e.reportRevision??e.revision)&&gm(e,t,n)}function vm(e,t){return _m(lm(),e,t)}function ym(e,t){if(rm||nm.has(e.id))return null;let n=t.entries[e.id];return!n||n.reports!==fm(e)||typeof n.appMode!=`boolean`||n.appMode&&(!Number.isSafeInteger(n.appFindings)||n.appFindings<0)?null:n}function bm(e){return ym(e,lm())?.appMode??null}function xm(e){let t=lm(),n=ym(e,t);return!n||!mm(t)?null:n}async function Sm(e,t=null){let n;do n=sm,await n;while(n!==sm);let r=lm(),i=r.reportRevision??r.revision;return t&&(!_m(r,e,t)||!mm(r))?null:{epoch:im,revision:r.revision,reportEpoch:am,reportRevision:i,workspaceId:e?.id,workspaceEpoch:om.get(e?.id)??0,workspaceRevision:hm(r,e?.id)}}async function Cm(e,t,n){let r=!1;return await dm(i=>{if(n.epoch!==im||n.revision!==i.revision||!gm(i,e,n)||!mm(i))return;let a=L().find(t=>t.id===e.id);if(a&&fm(a)===fm(e))return i.entries[e.id]={...t,reports:fm(e)},r=!0,JSON.stringify(i)}),r&&um(),r}function wm(e=null,t){if(e?.length===0)return Promise.resolve();if(e===null)im++,t===void 0&&am++,rm++;else for(let t of e)om.set(t,(om.get(t)??0)+1),nm.add(t);return um(),dm(n=>{if(n.reportRevision??=n.revision,e===null)n.revision=crypto.randomUUID(),t===void 0&&(n.reportRevision=n.revision),n.entries={};else{n.workspaceRevisions??={};for(let t of e)n.workspaceRevisions[t]=crypto.randomUUID(),delete n.entries[t]}return t!==void 0&&(n.links=t),JSON.stringify(n)}).finally(()=>{if(e===null)rm--;else for(let t of e)nm.delete(t);um()})}function Tm(e){return tm.add(e),()=>tm.delete(e)}La(()=>{let e=Va($p);e!==cm&&(cm=e,um())}),Ml(e=>{wm([e]).catch(()=>{})}),Al(e=>{wm([e]).catch(()=>{})}),Fc(e=>{wm(L().filter(t=>t.reports.includes(e)).map(e=>e.id)).catch(()=>{})}),Qu(()=>{if(!Zu()){um();return}let e=pm();lm().links===e?um():wm(null,e).catch(()=>{})});var Em=null,Dm=null;function Om(){for(let e of[`br`,`brotli`])try{return new DecompressionStream(e),e}catch{}return null}async function km(e,t){let n=new Blob([t]).stream().pipeThrough(new DecompressionStream(e));return new Uint8Array(await new Response(n).arrayBuffer())}async function Am(){if(`serviceWorker`in navigator)try{let e=await navigator.serviceWorker.getRegistrations();for(let t of e){let e=t.active?.scriptURL??t.installing?.scriptURL??t.waiting?.scriptURL;e&&e.endsWith(`/brotli-sw.js`)&&await t.unregister()}}catch{}}var jm=`./brotli-fallback.js`,Mm=Symbol(`brotli worker unavailable`),Nm=null,Pm=!1,Fm=0,Im=new Map;function Lm(){return Dm||(Dm=(async()=>await import(jm))(),Dm)}function Rm(){Pm=!0,Nm&&=(Nm.terminate(),null);let e=[...Im.values()];Im.clear();for(let t of e)t.resolve(Mm)}function zm(e){let{id:t,bytes:n,error:r}=e.data??{},i=Im.get(t);i&&(Im.delete(t),r?i.reject(Error(r)):i.resolve(n))}function Bm(){if(Nm)return Nm;if(Pm||typeof Worker>`u`)return null;try{Nm=new Worker(ir(new URL(jm,import.meta.url)),{type:`module`})}catch{return Pm=!0,null}return Nm.addEventListener(`message`,zm),Nm.addEventListener(`error`,Rm),Nm.addEventListener(`messageerror`,Rm),Nm}function Vm(e){let t=Bm();return t?new Promise((n,r)=>{let i=++Fm;Im.set(i,{resolve:n,reject:r});try{t.postMessage({id:i,bytes:e})}catch{Im.delete(i),Rm(),n(Mm)}}):Promise.resolve(Mm)}async function Hm(){await Am();let e=Om();return e?{kind:`native`,format:e}:{kind:`fallback`}}function Um(){return Em||(Em=Hm(),Em)}async function Wm(e,t=()=>!0){let n=()=>{if(!t())throw new DOMException(`Bundle decode cancelled`,`AbortError`)};n();let r=await Um();if(n(),r.kind===`native`)return km(r.format,e);let i=await Vm(e);return n(),i===Mm?(await Lm()).brotliDecompress(e):i}Um().catch(()=>{});var Gm=document.querySelector(`#drop-zone`),R=document.querySelector(`#report`),Km=document.querySelector(`app-sidebar`);function qm(e,t){let n=URL.createObjectURL(e),r=document.createElement(`span`);r.style.display=`none`,M(k`<a href="${n}" download="${t}"></a>`,r),document.body.append(r),r.firstElementChild.click(),r.remove(),URL.revokeObjectURL(n)}function Jm(e){return Error(`Another dialog is already open. Close it and try again.`,{cause:e})}var Ym={get state(){return P},listWorkspaces:L,addReportToWorkspace:uu,addBundleToWorkspace:pu,onReportMembershipChanged:Ml,onBundleMembershipChanged:Nl,onWorkspaceDeleted:Al,onWorkspacePrivateKeyChanged:jl,analyzeContent:Iu,setCount:Pu,gunzipBytes:wn,listBundles:nl,listFiles:Lc,readBundle:cl,readFileBytes:Vc,saveBundle:ol,saveFileBytes:Uc,onFileMutated:Fc,async saveTriage(){return await Td(),Sd()},getSecureItem:Va,setSecureItem:Ha,removeSecureItem:Ua,onSecureStorageHydrated:La};function Xm(e){e.installSyncHost(Ym),cd(()=>e.triageSync.notify())}var z=null,Zm=null;function Qm(){try{return Va(`deepview.sync.userEnabled`)!==`0`}catch{return!0}}var $m=!1;function eh(e){$m=!!e}function th(){if($m||P.serverMode!==`e2e`)return!0;try{return fn()?.mode===`managed`}catch{return!1}}function nh(){return Zm||(th()&&!z?Promise.resolve(null):(Zm=(async()=>{try{let e=await import(`./client-sync.js`);return Xm(e),z=e,ah(),e}catch(e){throw Zm=null,e}})(),Zm))}var rh=[];function ih(e){z?e(z):rh.push(e)}function ah(){let e=rh.splice(0);for(let t of e)try{t(z)}catch(e){console.warn(`client-sync: deferred apply failed:`,e)}}function oh(e,t){let n={cancelled:!1,unsub:null};return ih(r=>{n.cancelled||(n.unsub=t(r,e))}),()=>{n.cancelled=!0,n.unsub&&n.unsub()}}function sh(e,t){return z?z.isInRemote(e,t):!1}function ch(e,t){return z?z.isBundleInRemote(e,t):!1}var lh=`deepview.objstore-presence.`;function uh(e){try{let t=localStorage.getItem(lh+e);if(!t)return null;let n=JSON.parse(t);return n&&typeof n==`object`?n:null}catch{return null}}function dh(e,t){if(z&&z.isInRemote(e,t))return!0;let n=uh(e);return!n||typeof n.names!=`object`?!1:Object.values(n.names).includes(t)}function fh(e,t){if(z&&z.isBundleInRemote(e,t))return!0;let n=uh(e);return!n||typeof n.bundles!=`object`?!1:Object.values(n.bundles).includes(t)}function ph(e){return z?z.remoteCount(e):0}function mh(e){return z?z.differingReports(e):[]}function hh(e){return oh(e,(e,t)=>e.onAutoDownloaded(t))}function gh(e){return oh(e,(e,t)=>e.onBundleAutoDownloaded(t))}function _h(e){return oh(e,(e,t)=>e.onChange(t))}var vh=null,yh=null,bh=null,xh=[];function Sh(e){if(z){z.setRedraw(e);return}vh=e,ih(t=>{vh===e&&t.setRedraw(e)})}function Ch(e){if(z){z.setAuthenticationResolver(e);return}yh=e,ih(t=>{yh===e&&t.setAuthenticationResolver(e)})}function wh(e){if(z){z.setHydrationConflictResolver(e);return}bh=e,ih(t=>{bh===e&&t.setHydrationConflictResolver(e)})}async function Th(e,t){if(th()||!Qm()&&!z)return;let n=await nh();if(n&&!th())return n[e](...t)}function Eh(...e){return Th(`downloadFileFromRemote`,e)}function Dh(...e){return Th(`fetchBundleFromRemote`,e)}function Oh(...e){return Th(`putFile`,e)}function kh(...e){return Th(`holdLocalChangeChecks`,e)}function Ah(...e){return Th(`putBundleToRemote`,e)}function jh(...e){return Th(`deleteFromRemote`,e)}function Mh(...e){return Th(`deleteBundleFromRemote`,e)}function Nh(...e){return Th(`openWorkspace`,e)}async function Ph(...e){return(z??(Zm?await Zm:null))?.closeWorkspace(...e)}function Fh(...e){return Th(`recheckRemoteStorage`,e)}function Ih(...e){return Th(`resolveReportDifference`,e)}function Lh(e,t){if(z)return z.triageSync[e](...t);ih(n=>{n.triageSync[e](...t)})}var B={get status(){return z?z.triageSync.status:`off`},get openSessions(){return z?z.triageSync.openSessions:[]},get persistenceDegraded(){return z?z.triageSync.persistenceDegraded:!1},get proxyAuthRequired(){return z?z.triageSync.proxyAuthRequired:!1},setEnabled(e){if(e===!0)return th()?Promise.resolve(null):nh().then(e=>{e.triageSync.setEnabled(!0);let t=xh;xh=[];for(let n of t)try{e.openWorkspace(n)}catch(e){console.warn(`client-sync: openWorkspace(${n}) failed during re-enable:`,e)}return null}).catch(e=>(console.warn(`client-sync: setEnabled load failed:`,e),null));if(z){xh=z.openWorkspaceIds();for(let e of xh)try{z.closeWorkspace(e)}catch(t){console.warn(`client-sync: closeWorkspace(${e}) failed during disable:`,t)}z.triageSync.setEnabled(!1);return}Lh(`setEnabled`,[e])},isEnabled(){return z?z.triageSync.isEnabled():Qm()},openSession(e){Lh(`openSession`,[e])},closeSession(e){Lh(`closeSession`,[e])},refreshSession(e){Lh(`refreshSession`,[e])},dismissError(e){Lh(`dismissError`,[e])},setForcedOff(e){Lh(`setForcedOff`,[e])},setProtocolLocked(e){Lh(`setProtocolLocked`,[e])},setServerUrl(e){Lh(`setServerUrl`,[e])},getServerUrl(){return z?z.triageSync.getServerUrl():null},notify(){Lh(`notify`,[])},onStatusChange(e){return oh(e,(e,t)=>e.triageSync.onStatusChange(t))},onServerInfo(e){return oh(e,(e,t)=>e.triageSync.onServerInfo(t))},onPersistenceDegraded(e){return oh(e,(e,t)=>e.triageSync.onPersistenceDegraded(t))},onProxyAuthRequired(e){return oh(e,(e,t)=>e.triageSync.onProxyAuthRequired(t))}},Rh=class extends ga{_disposers=[];observes=null;connectedCallback(){super.connectedCallback(),this.bindState()}bindState(){if(this.observes){this._disposers.push(Ms(e=>{this.observes(),e||this.requestUpdate()}));return}this._render||(this._render=this.render,this.render=()=>{let e,t=Ms(n=>{if(!n){t(),this._dispose===t&&(this._dispose=null),this.updateComplete.then(()=>this.requestUpdate());return}e=this._render()});return this._dispose=t,e}),this._disposers.push(()=>this._dispose&&this._dispose())}disconnectedCallback(){for(super.disconnectedCallback();this._disposers.length>0;)this._disposers.pop()()}};function zh(e){return e===`completed`||e===`not_planned`||e===`duplicate`?e:`unknown`}function Bh(e){let[t,n,r]=e.split(`/`);return r===void 0&&t!==void 0&&n!==void 0&&t.length<=39&&/^[a-zA-Z\d](?:-?[a-zA-Z\d])*$/u.test(t)&&n.length<=100&&n!==`.`&&n!==`..`&&/^[a-zA-Z\d._-]+$/u.test(n)}function Vh(e,t){if(typeof e!=`string`||e.length>2048)return null;let n;try{n=new URL(e)}catch{return null}if(n.href!==e||n.origin!==`https://github.com`||n.username||n.password)return null;let r=t.exec(n.pathname);if(!r)return null;let i=`${r[1]}/${r[2]}`,a=Number(r[3]);return!Bh(i)||!Number.isSafeInteger(a)||a<=0?null:{repo:i,number:a}}function Hh(e){return Vh(e,/^\/([^/]+)\/([^/]+)\/pull\/(\d+)(?:\/(?:files|commits|checks))?\/?$/u)}function Uh(e){return Vh(e,/^\/([^/]+)\/([^/]+)\/issues\/(\d+)\/?$/u)}function Wh(e){let t=Hh(e);if(t)return{...t,kind:`pull`};let n=Uh(e);return n?{...n,kind:`issue`}:null}function Gh(e){return`${e.repo.toLowerCase()}#${e.kind}:${e.number}`}function Kh(e){return F()&&P.currentManagedTeam&&P.managedSession&&!P.managedSession.publicShare?P.managedIssues.get(e?.id)??null:null}function qh(e){return Kh(e)?.autoFix??``}function Jh(e,t={},n){let r=!1;for(let i of e){if(n&&P.managedIssues.get(i)!==n.get(i))continue;let e=Object.hasOwn(t,i)?t[i]:null,a=Uh(e?.url)?{url:e.url,autoFix:Hh(e.autoFix)?e.autoFix:null}:null,o=P.managedIssues.get(i);o?.url===a?.url&&o?.autoFix===a?.autoFix||(a?P.managedIssues.set(i,a):P.managedIssues.delete(i),r=!0)}return r}function Yh(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>e.startsWith(`revalidate`)&&t!=null))}function Xh(e,t,n){let r=Yh(t);if(!e._revalidationCopies){let t=Yh(e);if(Object.keys(t).length===0&&Object.keys(r).length===0)return[];e._revalidationCopies=Object.keys(t).length>0?[{reportName:e._reportName??``,fields:t}]:[]}return Object.keys(r).length>0&&e._revalidationCopies.push({reportName:n,fields:r}),e._revalidationCopies}function Zh(e){let t=new Map,n=new Set(Fi);for(let{reportName:r,fields:i}of e)for(let[e,a]of Object.entries(i)){if(a==null)continue;let o=e===`revalidate`?Ii(i)||String(a).trim().toLowerCase():String(a).trim();if(e===`revalidate`&&!o||e===`revalidate`&&!n.has(o))continue;t.has(e)||t.set(e,new Map);let s=t.get(e);s.has(o)||s.set(o,new Set),s.get(o).add(r)}return[...t].filter(([,e])=>e.size>1).map(([e,t])=>({field:e,variants:[...t].map(([e,t])=>({value:e,reports:[...t]}))}))}var Qh=new Set([`correctedSeverity`,`correctedSeverityReason`,`isApp`,`isUpstream`,`isSecurity`,`source`]);function $h(e,t){if(!e||!t||e===t)return!1;let n=!1;for(let[r,i]of Object.entries(t)){if(r.startsWith(`_`)||Qh.has(r)||i==null)continue;if(r===`revalidate`){let a=Ii(t);if(!a)continue;let o=Ii(e);o?o!==a&&(n=!0):e[r]=i;continue}let a=e[r];if(a==null){e[r]=i;continue}r.startsWith(`revalidate`)&&String(a).trim()!==String(i).trim()&&(n=!0)}return n}function eg(e,t,n,r){if(!e||!t||e===t)return;(e.correctedSeverity||t.correctedSeverity)&&(e._correctedByReport??={[e._reportName??``]:{severity:ji(e),reason:e.correctedSeverityReason}},e._correctedByReport[n]={severity:ji(t),reason:t.correctedSeverityReason});let i=Xh(e,t,n);($h(e,t)||r.has(e.id))&&r.set(e.id,{finding:e,copies:i})}function tg(e,t=null){let n=t??e.filter(e=>e.isApp),r=e.filter(e=>!e.isApp);if(n.length===0||r.length===0||t&&e.some(e=>e.isApp)||r.some(e=>typeof e.id!=`string`||!e.id))return[e];let i=new Set(r.map(e=>e.id)),a=new Map,o=new Set;for(let t of n){let n=t.revalidateInputs===void 0?[]:t.revalidateInputs;if(!Array.isArray(n))return[e];for(let t of n){if(!i.has(t))return[e];o.add(t)}a.set(t,n)}if(o.size!==i.size)return[e];let s=new Map([...i].map(e=>[e,e])),c=e=>{let t=e;for(;s.get(t)!==t;)t=s.get(t);for(;s.get(e)!==t;){let n=s.get(e);s.set(e,t),e=n}return t};for(let e of a.values()){if(e.length===0)continue;let t=c(e[0]);for(let n of e)s.set(c(n),t)}let l=new Map;for(let t of e){let e=a.get(t),n=e?e.length>0?c(e[0]):t:c(t.id);l.has(n)||l.set(n,[]),l.get(n).push(t)}return l.size===1?[e]:[...l.values()]}function ng(e,{showRevalidation:t=!0,upstreamOnly:n=!1,hideRuledOut:r=!1,merges:i=[]}={}){let a=[],o=new Set;for(let i=0;i<e.length;i++){let s=e[i];for(let e of s.groups){for(let t of e)t.id&&[`refuted`,`unreachable`].includes(Ii(t))&&o.add(t.id);let c=n?e.filter(e=>e.isUpstream&&Ii(e)!==`revalidation`).map(ig):t?r?e.filter(e=>![`refuted`,`unreachable`].includes(Ii(e))):e:e.filter(e=>Ii(e)!==`revalidation`).map(ig),l=c.length===e.length&&c.every((t,n)=>t===e[n])?e:c;l.length>0&&a.push({group:l,sourceGroup:e,reportIndex:i,reportName:s.fileName??``,hasApp:l.some(e=>e.isApp)})}}let s=a.map((e,t)=>t),c=a.map(e=>e.hasApp),l=e=>{let t=e;for(;s[t]!==t;)t=s[t];for(;s[e]!==t;){let n=s[e];s[e]=t,e=n}return t},u=(e,t)=>{e=l(e),t=l(t),e!==t&&(s[t]=e,c[e]||=c[t])},d=new Map;for(let e=0;e<a.length;e++)for(let t of a[e].group)t.id&&(d.has(t.id)||d.set(t.id,[]),d.get(t.id).push({index:e,app:t.isApp}));for(let e of d.values()){let t=new Map,n=e.find(e=>e.app);for(let{index:r}of e){n&&u(n.index,r);let e=a[r].reportIndex;t.has(e)?u(t.get(e),r):t.set(e,r)}}for(let e of d.values()){let t=null;for(let{index:n}of e)c[l(n)]||(t===null?t=n:u(t,n))}for(let e of i){let t=null;for(let n of e)for(let{index:e}of d.get(n)??[])t===null?t=e:u(t,e)}let f=new Map;for(let e=0;e<a.length;e++){let t=l(e);f.has(t)||f.set(t,[]),f.get(t).push(a[e])}let p=new Map,m=[];for(let r of f.values()){let a=r[0].group,o=a.map(e=>e.id).filter(Boolean);if(r.length===1&&new Set(o).size===o.length&&i.length===0){let i=e.length>1&&a.find(e=>e.isApp);if(i){let e=[...a];e.workspaceKey=i.id??String(i._id),m.push(...rg(r,e,t,n))}else m.push(...rg(r,a,t,n));continue}let s=new Map,c=new Map,l=[];for(let{group:e,reportName:t}of r)for(let n of e)if(n.id&&c.has(n.id))eg(c.get(n.id),n,t,s);else{let e={...n,_reportName:n._reportName??t};n.id&&c.set(n.id,e),l.push(e)}let u=new Set;for(let e of i)for(let t of e)c.has(t)&&u.add(t);for(let{group:e}of r)if(e.length>1)for(let t of e)t.id&&u.add(t.id);let d=[...u].map(e=>c.get(e));for(let e of l)u.has(e.id)||d.push(e);if(e.length>1){let e=d.find(e=>e.isApp);e&&(d.workspaceKey=e.id??String(e._id))}m.push(...rg(r,d,t,n));for(let[e,t]of s){let n=p.get(e);p.set(e,n?{finding:n.finding,copies:[...n.copies,...t.copies]}:t)}}return Object.defineProperty(m,"ruledOutIds",{value:o,configurable:!0}),{groups:m,conflicts:p}}function rg(e,t,n,r){if(n)return[t];if(r){let n=tg(e.flatMap(e=>e.sourceGroup));if(n.length===1)return[t];let r=[],i=new Set;for(let e of n){let n=new Set(e.filter(e=>!e.isApp&&e.id).map(e=>e.id)),a=t.filter(e=>n.has(e.id));if(a.length>0){r.push(a);for(let e of a)i.add(e.id)}}let a=new Set(t.map(e=>e.id).filter(Boolean));return i.size===a.size?r:[t]}return tg(t,e.flatMap(e=>e.sourceGroup.filter(e=>e.isApp)))}function ig(e){let t=Object.keys(e).filter(e=>e.startsWith(`revalidate`)||e===`_revalidationCopies`);if(t.length===0)return e;let n={...e};for(let e of t)delete n[e];return n}function ag(e,t=Wd){let n=gu(_u(e.flat()));return{linkedIds:e=>[...rd(e),...n.linkedIds(e)],knownRows:e=>{let r=[...t(e),...Gd(e)];for(let e of r)for(let t of _u(e.members))n.add(t);return r}}}var og=null,sg=0;function cg(){return P.currentView===`links`&&og?.owner===P.currentLinks?og:null}function lg(){sg++,og=null}async function ug(e,t,n,r){if(P.currentView!==`links`||!P.currentLinks)return;let i=js(P.currentLinks),a=++sg;og={owner:i,id:e,reportName:t,group:null,error:``},P.focusCodeStack=[],P.focusCodeAt=0;let o=()=>a===sg&&P.currentView===`links`&&P.currentLinks===i;try{if(F()){let a=Wd([e]).find(e=>e.report===t&&(!r||e.managedReportId===r)&&(n==null||e.index===Number(n)));if(!a)throw Error(`This finding is no longer in the report.`);og={owner:i,id:e,reportName:t,group:a.members.map(e=>({...e})),error:``},P.activeTabByGroup.set(a.members[0].id,e);return}let a=await Ti(await Bc(t));if(!o())return;let s=(bi(a?.data)??[]).map(e=>Array.isArray(e)?e:[e]),c=t=>t?.some(t=>String(t?.id)===e),l=c(s[n])?s[n]:s.find(c);if(!l)throw Error(`This finding is no longer in the report.`);let{data:u}=a,d=l.filter(e=>e?.id).map(e=>{let n={...e,_reportName:t,_repoFallback:gi(u)??Xs(t),_repoDirectory:_i(u?.repo),_bundleHashes:u.bundleHashes??[],_source:e.source??u.source??null};return hi(n,u),n._analyzer=n._source??n.type??null,`isApp`in n||(n.isApp=Li(n,n._source)),n});if(await Promise.all([kd(),zr(`report`,t),...$f(t).map(e=>zr(`workspace`,e.id))]),o()){let t=(e,t)=>t.includes(e.id)||Array.isArray(e.revalidateInputs)&&e.revalidateInputs.some(e=>t.includes(e));yi([d],ag([d],e=>[...Wd(e),...P.reports.flatMap(e=>e.groups??[]).filter(n=>n.some(n=>t(n,e))).map(e=>({members:e}))])),og.group=d,P.activeTabByGroup.set(d[0].id,e)}}catch(e){o()&&(og.error=e.message||`Unable to load this finding.`)}}function dg(e,t,n,r=n){let i=e.map((e,t)=>t),a=e=>{for(;i[e]!==e;)i[e]=i[i[e]],e=i[e];return e},o=e.map(n),s=new Map;for(let e=0;e<o.length;e++)for(let t of o[e])t.id&&(s.has(t.id)||s.set(t.id,[]),s.get(t.id).push(e));for(let[e,n]of s)for(let r of t(e))if(r!==e)for(let e of n)for(let t of s.get(r)??[]){let n=a(e),r=a(t);n!==r&&(i[r]=n)}let c=new Map;for(let t=0;t<e.length;t++){let e=a(t);c.has(e)||c.set(e,[]),c.get(e).push(t)}if(c.size===e.length)return e;let l=e=>e.id??String(e._id),u=[...c.values()].map(t=>{if(t.length===1)return e[t[0]];let n=new Map;for(let i of t)for(let t of r(e[i]))n.has(l(t))||n.set(l(t),t);let i=new Map;for(let r of t)for(let t of e[r])i.has(l(t))||i.set(l(t),n.get(l(t))??t);let a=[...i.values()],o=e[t[0]];return a.workspaceKey=o.workspaceKey??l(o[0]),a.linkedTabs=[...n.values()],a});return Object.defineProperty(u,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),u}function V(e){return e.workspaceKey??C(e[0])}function fg(e){return Array.isArray(e)?e:[e]}function pg(){return P.revalidationDetailed===!0}function mg(e){return e?._reportName??``}var hg=null,gg=!0;function _g(){let e=P.reports;return!Array.isArray(e)||e.length===0||(e!==hg&&(hg=e,gg=Cr(e)),gg)}function vg(e){return!e.isUpstream||P.showRevalidation===!1||P.upstreamOnly===!0||!_g()}function yg(){let e=P.managedSession;return F()&&(e?.publicShare===!0||!Ke(e?.role,`triage`))}function bg(e){return vg(e)&&!yg()}function xg(e){if(!vg(e))return;let t=P.triage.get(C(e)),n=t?.triage===`ignored`&&o(e,Fr())?{...t,triage:void 0}:t;if(!F())return n;let r=P.managedComments?.get(e.id)??[];return r.length===0&&!n?.comment?n:{...n,comment:r.map(e=>e.authorLogin?`${e.authorLogin}: ${e.body}`:e.body).join(`
4
+
5
+ `)}}function Sg(e){return vg(e)&&(s(e,P.triage.get(C(e)),Fr())===`ignored`||o(e,Fr())&&_n(P.triage,C(e),mg(e)))}function Cg(e,t=xg(e)){if(vg(e))return s(e,t,Fr())??(Sg(e)?`ignored`:void 0)}function wg(e){return cg()?.group===e?e:e.linkedTabs?e.linkedTabs:pg()?e:Tg(e)}function Tg(e){return e.length<=1||!e.some(Dr)?e:e.filter(Dr)}function Eg(e){let t=wg(e);return t.length<=1?t:[...t].toSorted((e,t)=>{let n=+!!Dr(e),r=+!!Dr(t);if(n!==r)return r-n;let i=+!!xg(e)?.color,a=+!!xg(t)?.color;if(i!==a)return a-i;let o=ki[Ni(e,P.severityMode)]||0,s=ki[Ni(t,P.severityMode)]||0;if(o!==s)return s-o;let c=e.confidence??-1;return(t.confidence??-1)-c})}function Dg(e){return e.length===1?e[0]:Eg(e)[0]}function Og(e){let t=[],n=[];for(let r of e)(r.isApp?t:n).push(r);return{app:t,source:n}}function kg(e){let t=xg(e);return!!t?.comment||!!(t?.fix||qh(e))||t?.flagged===!0}function Ag(e){if(e.length===1)return e[0];let t=Eg(e);if(t.length===1)return t[0];let n=P.activeTabByGroup.get(V(e));if(n){let e=t.find(e=>C(e)===n);if(e)return e}let r=t;if(P.filterAnalyzer||P.filterModel){let e=t.filter(r_);e.length>0&&(r=e)}return r.find(kg)??r[0]}function jg(e){return e?._repoFallback||P.repoUrl||``}function Mg(e){return{github:jg(e),directory:e?._repoDirectory??``}}function Ng(e){for(let t of Cf().values())if(t.files.has(e.file))return t.repos?.size===1?[...t.repos][0]:null;return e.repo?.github||jg(e)||null}function Pg(e){if(!Array.isArray(e))return[];let t=e.filter(e=>!e.isUpstream);return t.length===0||t.length===e.length?e:t}function Fg(e){let t=Pg(e),n=0,r=!1,i,a=!1,o=!1,s,c=!1,l=null,u=!1,d=!0;for(let e of t){let t=xg(e),f=Cg(e,t),p=t?.color;p===void 0&&f===void 0||(n++,p!==void 0&&(a?p!==i&&(r=!0):(a=!0,i=p)),c?f!==s&&(o=!0):(c=!0,s=f),f?(l===null&&(l=f),f===`ignored`&&t?.triage!==`ignored`?d=!1:u=!0):d=!1)}let f=r||o,p=!f&&a?i:null,m=n>0&&d,h=!f&&l!==null?l:null;return{hasConflict:f,commonColor:p,anyTriage:u,allTriaged:m,commonTriage:h,allIgnored:h===`ignored`&&n===t.length,isInProgress:h===`inprogress`,isFixed:h===`fixed`,isInvalid:h===`invalid`,isDeleted:h===`deleted`,isIgnored:h===`ignored`}}function Ig(e,t){if(!Array.isArray(e)||e.length<2)return!1;let n=e.filter(bg);if(n.length<2)return!1;let r=(t??``).trim();return n.every(e=>Lg(e,r))}function Lg(e,t){if(!bg(e))return!1;let n=(xg(e)?.fix??``).trim();return n===``||n===(t??``).trim()}function Rg(e,t){if(!bg(Ag(e)))return{targets:[],clearing:!1};let n=Fg(e);return{targets:zg(e,n),clearing:t===`restore`||Bg(e,n)===t}}function zg(e,t=Fg(e)){let n=Pg(e),r=e.linkedTabs||n!==e&&e.some(e=>e.isApp)?n:t.hasConflict?[Ag(e)]:n;return r.every(bg)?r:r.filter(bg)}function Bg(e,t=Fg(e),n=null){return e.linkedTabs||e.some(e=>e.isApp)&&Pg(e)!==e||!t.hasConflict?t.commonTriage??null:Cg(n??Ag(e))??null}function Vg(e){let t=Pg(e);if(t.length<2)return!1;let n=Fg(e).commonTriage;if(!n||n===`ignored`&&!t.some(e=>xg(e)?.triage===`ignored`))return!1;let r=!1;for(let e of t){if(!bg(e))continue;let t=C(e),i=P.triage.get(t);Cg(e,i)!==n&&(n===`ignored`&&o(e,Fr())||n!==`ignored`&&i?.ignoredReports?.length||S(P.triage,t,{triage:n})&&(r=!0))}return r}var Hg=null;function Ug(){Hg=null}function Wg(e,t=!1,n=!1){let r=P.reports,i=P.workspaceMerges,a=F();if(!Hg||Hg.reports.length!==r.length||Hg.reports.some((e,t)=>e!==r[t])||Hg.merges!==i||Hg.mergeCount!==i.length||Hg.securityLinksTick!==P.linksTick||Hg.findingIndexTick!==P.findingIndexTick||Hg.managed!==a){let e=r.flatMap(e=>e.groups??[]);yi(e,ag(e)),Hg={reports:[...r],merges:i,mergeCount:i.length,managed:a,securityLinksTick:P.linksTick,findingIndexTick:P.findingIndexTick}}let o=t?`upstream`:e?n?`workspace-app`:`app`:`code`;return Hg[o]||(Hg[o]=ng(r,{showRevalidation:e&&!t,upstreamOnly:t,hideRuledOut:n,merges:i})),Hg[o]}function Gg(){return Wg(P.showRevalidation!==!1).groups}function Kg(){return Wg(!0).groups}function qg(){return Wg(!0,!1,!!P.currentWorkspace).conflicts}function Jg(){let e=Wg(P.showRevalidation!==!1,P.upstreamOnly===!0,!!P.currentWorkspace),t=e.groups;if(P.showRevalidation===!1||P.upstreamOnly)return t;if(P.currentWorkspace){let n=pg();return(!e.linkedGroups||e.linksTick!==P.linksTick||e.linkedDetailed!==n)&&(e.linkedGroups=dg(t,rd,Tg,wg),e.linksTick=P.linksTick,e.linkedDetailed=n),e.linkedGroups}return pg()?t:e.visibleGroups??=(()=>{let e=t.flatMap(e=>{let t=e.filter(e=>!Or(e));return t.length===e.length?[e]:t.length===0?[]:(t.workspaceKey=V(e),[t])});return Object.defineProperty(e,"ruledOutIds",{value:t.ruledOutIds,configurable:!0}),e})()}function Yg(){let e=Jg();if(P.viewMode===`kanban`)return e;let t=e.filter(e=>Fg(e).commonTriage===P.shownTriage);return Object.defineProperty(t,"ruledOutIds",{value:e.ruledOutIds,configurable:!0}),t}function Xg(e){if(P.showRevalidation||P.upstreamOnly||!Array.isArray(e)||e.length===0)return e;let t=new Set(e.map(C)),n=new Map;for(let e of Kg())for(let r of tg(e))if(r.some(e=>t.has(C(e))))for(let e of r)n.set(C(e),e);return n.size===e.length&&e.every(e=>n.get(C(e))===e)?e:n.size>0?[...n.values()]:e}function Zg(e){let t=cg()?.group;if(t&&V(t)===e)return t;for(let t of Jg())if(V(t)===e)return t;return null}function Qg(){let e=new Set;if(P.currentWorkspace||!nd())return e;let t=P.currentFile??P.reports[0]?.fileName;if(!t)return e;let n=new Set;for(let e of P.reports)if(e.fileName===t)for(let t of e.groups)for(let e of t)e.id!=null&&n.add(String(e.id));for(let r of n)rd(r).some(e=>!n.has(e)&&Hd(e).some(e=>e!==t))&&e.add(r);return e}var $g=`\0`,e_=`\x01`,t_=`\x02`;function n_(e){return Ri(e.model)||null}function r_(e){let t=f_();return!(t.filterAnalyzer&&(e._analyzer??null)!==(t.filterAnalyzer===$g?null:t.filterAnalyzer)||t.filterModel&&n_(e)!==(t.filterModel===t_?null:t.filterModel))}function i_(e){let t=typeof e._repoFallback==`string`&&e._repoFallback?e._repoFallback:null;return e.isApp&&!(e._source??e.source)&&t?t:typeof e.repo?.github==`string`&&e.repo.github?e.repo.github:t}function a_(e){let t=new Set;for(let n of e)for(let e of n)t.add(i_(e));return t}function o_(){P.filterSeverities=new Set,P.filterColors=new Set,P.filterSources=new Set,P.filterAnalyzer=``,P.filterModel=``,P.filterRepo=``,P.filterConfMin=0,P.filterConfMax=10,P.filterInclude=``,P.filterIncludeNegate=!1,P.filterComment=``,P.filterFix=``,P.filterFlagged=``,P.filterDuplicates=``,P.filterCrossContext=``,P.filterAppStacked=``,P.filterSecurity=``,P.filterRevalidate=``,P.filterPartial=``,P.sortBy=`severity`}var s_=[`filterSeverities`,`filterColors`,`filterSources`,`filterAnalyzer`,`filterModel`,`filterRepo`,`filterConfMin`,`filterConfMax`,`filterInclude`,`filterIncludeNegate`,`filterComment`,`filterFix`,`filterFlagged`,`filterDuplicates`,`filterCrossContext`,`filterAppStacked`,`filterSecurity`,`filterRevalidate`,`filterPartial`];function c_(){let e={};for(let t of s_){let n=P[t];e[t]=n instanceof Set?new Set(n):n}return e}var l_=null;function u_(e){l_=e}function d_(){l_=null}function f_(){return l_??P}function p_(e){return br(e)||(e._source&&!e._sourcePass?`revalidation`:``)}function m_(e){let t=ar(`confirmed`,``);return e.some(e=>t.includes(p_(e)))}function h_(e,t){let n=e.map(wg).filter(e=>e.length>0);return pr(n,t,dr(e,wg,br),br)?`confirmed`:``}function g_(e,t=wg){return lr(e,t)}function __(e,{tabs:t=wg,kindOf:n=br,severityMode:r=P.severityMode}={}){return mr(e,{tabs:t,kindOf:n,severityMode:r})}function v_(e){return P.showRevalidation===!1||P.upstreamOnly||pg()?!1:__(e)}function y_(e,{resetSort:t=!0}={}){P.filterConfMin=g_(e),P.filterConfMax=10,P.filterRevalidate=h_(e,P.filterConfMin),P.filterPartial=``,t&&(P.sortBy=b_(e)?`priority-desc`:`severity`)}function b_(e){return!Array.isArray(e)||e.length===0?!1:e.every(e=>{if(x_(e)===void 0)return!1;let t=e.filter(e=>e.isApp);if(t.length===0)return!0;let n=e.some(e=>e.priority!==void 0);return t.some(e=>e.priority!==void 0||!n&&Or(e))})}function x_(e){let t=e.find(e=>e.priority!==void 0);return t?t.priority:e.some(Or)?0:void 0}function S_(e){let t=f_();if(t.filterSources.size===1){let n=t.filterSources.has(`own`);if(n&&Ir(e.file)||!n&&!Ir(e.file))return!1}if(t.filterRevalidate){let n=ar(t.filterRevalidate,t.filterPartial);if(n&&!n.includes(p_(e)))return!1}if(!t.filterRevalidate){let n=Ar(e)?0:or(e);if(n===void 0){if(t.filterConfMin>0)return!1}else if(n<t.filterConfMin||t.filterConfMax<10&&n>t.filterConfMax)return!1}return!0}function C_(e){if(!S_(e))return!1;let t=f_(),n=t.filterInclude.toLowerCase();if(t.filterSeverities.size>0&&!t.filterSeverities.has(Ni(e,P.severityMode)))return!1;if(t.filterColors.size>0){let n=xg(e)?.color??`none`;if(!t.filterColors.has(n))return!1}if(!r_(e)||t.filterRepo&&i_(e)!==(t.filterRepo===e_?null:t.filterRepo))return!1;if(n){let r=xg(e),i=An(e).includes(n)||(r?.comment??``).toLowerCase().includes(n)||(r?.fix??``).toLowerCase().includes(n)||n.length>=6&&n.split(/\s+/u).some(t=>t.length>=6&&e.id?.toLowerCase().includes(t));return t.filterIncludeNegate?!i:i}return!0}function w_(e){let t=f_();if(!t.filterComment&&!t.filterFix&&!t.filterFlagged)return!0;let n=t=>e.some(e=>t(xg(e)));if(t.filterComment){let e=n(e=>!!e?.comment);if(t.filterComment===`with`?!e:e)return!1}if(t.filterFix){let n=e.some(e=>!!(xg(e)?.fix||qh(e)));if(t.filterFix===`with`?!n:n)return!1}if(t.filterFlagged){let e=n(e=>e?.flagged===!0);if(t.filterFlagged===`with`?!e:e)return!1}return!0}function T_(e){let t=e?.package?.npm;if(typeof t?.name==`string`&&t.name&&!Zd(t))return t.name;let n=typeof e?.file==`string`?e.file:``;return/(?:^|\/)(?:node_modules|dependencies|vendor)\/(@[^/]+\/[^/]+|[^/]+)(?:\/|$)/u.exec(n)?.[1]??null}function E_(){return P.showRevalidation!==!1&&!P.upstreamOnly}function D_(e){if(E_())return!1;let t=wg(e);if(t.length<2)return!1;let n=new Set,r=new Set;for(let e of t){let t=i_(e);t&&n.add(t);let i=T_(e);i&&r.add(i)}return n.size>1||r.size>1}function O_(e){if(!E_()||wg(e).length===0)return!1;let t=e.filter(e=>e.isApp);return t.length>0&&t.length>1}function k_(e){return e.some(e=>e.isSecurity===!0)}function A_(e){return e.some(k_)&&e.some(e=>!k_(e))}function j_(e){return e.filter(e=>e.some(S_)).map(wg)}function M_(e){let t=!P.currentWorkspace&&f_().filterDuplicates,n=t?Qg():null,r=f_().filterCrossContext,i=f_().filterAppStacked,a=f_().filterSecurity;return e.filter(e=>e.some(C_)&&w_(e)&&(!t||t===`with`===e.some(e=>n.has(C(e))))&&(!r||r===`with`===D_(e))&&(!i||i===`with`===O_(e))&&(!a||a===`with`===k_(e)))}function N_(e,t){let n=t===`desc`?-1:11;return(r,i)=>{let a=r[e]??n,o=i[e]??n;return(t===`desc`?o-a:a-o)||r.file.localeCompare(i.file)}}function P_(e){let t=e===`desc`?-1:11;return(n,r)=>{let i=n.confidence===void 0&&n.critical===!0,a=r.confidence===void 0&&r.critical===!0,o=n.confidence??(i?10:t),s=r.confidence??(a?10:t);return(e===`desc`?s-o:o-s)||(i===a?0:i?-1:1)||n.file.localeCompare(r.file)}}var F_=P_(`desc`),I_={severity:(e,t)=>(ki[Ni(t,P.severityMode)]||0)-(ki[Ni(e,P.severityMode)]||0)||F_(e,t)||parseInt(e.line,10)-parseInt(t.line,10),"confidence-desc":F_,"confidence-asc":P_(`asc`),"priority-desc":N_(`priority`,`desc`),"priority-asc":N_(`priority`,`asc`)};function L_(e){let t=I_[P.sortBy];if(!t)return[...e];if(P.sortBy===`priority-desc`||P.sortBy===`priority-asc`){let t=P.sortBy===`priority-desc`?`desc`:`asc`,n=t===`desc`?-1:11;return e.map(e=>({p:x_(e),g:e})).toSorted((e,r)=>{let i=e.p??n,a=r.p??n;return(t===`desc`?a-i:i-a)||Dg(e.g).file.localeCompare(Dg(r.g).file)}).map(e=>e.g)}return e.map(e=>({p:Dg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var R_=Oi;function z_(e){return e==null?`(none)`:R_[e]??e}function B_(e){return e??`(no model)`}var V_=class extends Rh{static properties={analyzers:{attribute:!1},models:{attribute:!1},groups:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.analyzers=[],this.models=[],this.groups=[],this._open=!1}render(){let e=this.analyzers.length>1,t=this.models.length>1;if(!e&&!t)return j;let n=P.filterAnalyzer===``?void 0:P.filterAnalyzer===$g?null:P.filterAnalyzer,r=P.filterModel===``?void 0:P.filterModel===t_?null:P.filterModel,i=new Map,a=new Map;for(let e of this.groups){let t=new Set,o=new Set;for(let i of e){let e=i._analyzer??null,a=n_(i);(r===void 0||a===r)&&t.add(e),(n===void 0||e===n)&&o.add(a)}for(let e of t)i.set(e,(i.get(e)??0)+1);for(let e of o)a.set(e,(a.get(e)??0)+1)}let o=n===void 0?null:z_(n),s=r===void 0?null:B_(r),c=o!=null&&s!=null?`${o} \xB7 ${s}`:o??s??(e?`All analyzers`:`All models`);return k`<button type="button" class="${T({"analyzer-btn":!0,active:o!=null||s!=null})}" popovertarget="analyzer-select-menu" popovertargetaction="toggle" aria-label="${`Filter by analyzer / model: ${c}`}"><span class="analyzer-btn-label">${c}</span> <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="analyzer-select-menu" class="analyzer-menu" @beforetoggle="${this._onToggle}">${e?this._column({dim:`analyzer`,heading:`Analyzer`,allLabel:`All analyzers`,values:this.analyzers,sentinel:$g,labelOf:z_,counts:i,current:P.filterAnalyzer}):j} ${e&&t?k`<div class="analyzer-menu-sep"></div>`:j} ${t?this._column({dim:`model`,heading:`Model`,allLabel:`All models`,values:this.models,sentinel:t_,labelOf:B_,counts:a,current:P.filterModel}):j}</div>`}_column({dim:e,heading:t,allLabel:n,values:r,sentinel:i,labelOf:a,counts:o,current:s}){return k`<div class="analyzer-menu-col" role="group" aria-label="${`Filter by ${e}`}"><div class="analyzer-menu-head">${t}</div><button type="button" aria-pressed="${String(s===``)}" class="${T({"analyzer-menu-item":!0,active:s===``})}" @click="${()=>this._pick(e,``)}"><span class="analyzer-menu-label">${n}</span></button> ${r.map(t=>{let n=t??i,r=o.get(t)??0,c=s===n;return k`<button type="button" aria-pressed="${String(c)}" class="${T({"analyzer-menu-item":!0,active:c,zero:r===0})}" @click="${()=>this._pick(e,n)}"><span class="analyzer-menu-label">${a(t)}</span><span class="analyzer-menu-count">${r}</span></button>`})}</div>`}_pick(e,t){let n=e===`analyzer`?P.filterAnalyzer:P.filterModel,r=t!==``&&n===t?``:t;this.dispatchEvent(new CustomEvent(`analyzer-change`,{detail:{analyzer:e===`analyzer`?r:P.filterAnalyzer,model:e===`model`?r:P.filterModel},bubbles:!0,composed:!0}))}_onToggle=e=>{this._open=e.newState===`open`,this._open&&this._position()};_position(){let e=this.querySelector(`.analyzer-menu`),t=this.querySelector(`.analyzer-btn`);if(!e||!t)return;let n=t.getBoundingClientRect(),r=e.offsetWidth||240,i=e.offsetHeight||200,a=n.left;a+r>window.innerWidth-4&&(a=window.innerWidth-r-4),a<4&&(a=4);let o=n.bottom+4;o+i>window.innerHeight-4&&n.top>i+4&&(o=n.top-i-4),e.style.top=`${o}px`,e.style.left=`${a}px`}updated(){this._open&&this.querySelector(`.analyzer-menu`)?.matches(`:popover-open`)&&this._position()}};customElements.define(`analyzer-select`,V_);var H_=0,U_=new AbortController;function H(){return H_}function W_(){return U_.signal}function G_(){return U_.abort(),U_=new AbortController,++H_}var K_=e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t).toLowerCase():``};function q_(e,t=``){let n=e.map(e=>e.split(`/`)),r=[];for(;;){let e=r.length,t=new Set;for(let i of n)i.length>e+1&&r.every((e,t)=>i[t]===e)&&t.add(i[e]);if(t.size!==1)break;r.push(t.values().next().value)}let i=n.map(e=>{let n=0;for(;n<r.length&&e.length>n+1;)n++;let i=t+e.slice(0,n).map(e=>`${e}/`).join(``);return e.length>n+1?`${i}${e[n]}/`:`${i}*`});if(new Set(i).size>1){let t=new Map;i.forEach((e,r)=>{if(!e.endsWith(`*`))return;let i=t.get(e)??new Set;i.add(K_(n[r].at(-1))),t.set(e,i)});let r=e=>{let n=t.get(e);return n?.size===1&&!n.has(``)?`${e}${[...n][0]}`:e};return new Map(e.map((e,t)=>[e,r(i[t])]))}return new Map(e.map((e,t)=>{let r=K_(n[t].at(-1));return[e,r?`*${r}`:`No extension`]}))}var J_=[{key:`metro`,label:`metro`,subtitle:`Metro bundle contents`},{key:`run`,label:`run`,subtitle:`Node.js CLI`},{key:`add`,label:`add`,subtitle:`Manually added files`}];function Y_(e){let t=e.filter(e=>e.id!==`all`);if(t.length===0)return null;let n=new Map(t.map(e=>[String(e.id).replace(/^reason:/u,``),e]));return n.size!==t.length||[...n.keys()].some(e=>!J_.some(t=>t.key===e))?null:[{id:``,label:`All files`,subtitle:`Everything`},...J_.filter(e=>n.has(e.key)).map(({key:e,...t})=>({...t,id:n.get(e).id,subtitle:e===`run`&&n.has(`metro`)?`Bundler and Node.js CLI`:t.subtitle}))]}var X_=class extends ga{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value=``,this.label=`Choose scope`}_select(e){this.dispatchEvent(new CustomEvent(`scope-change`,{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(e=>e.id!==`all`);if(e.length===0)return j;let t=Y_(e);if(!t)return k`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${st(this.value===`all`?``:this.value)}" @change="${e=>this._select(e.target.value)}"><option value="">All files</option>${e.map(e=>k`<option value="${e.id}">${e.label??e.id}</option>`)}</select></label>`;let n=t.find(e=>e.id===this.value)??t[0];return k`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(e=>k`<label class="scope-option"><input type="radio" name="scope" value="${e.id}" .checked="${n.id===e.id}" @change="${()=>this._select(e.id)}"><span>${e.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${n.subtitle}</span></div>`}static styles=ha`:host{display:block;min-width:0}*{box-sizing:border-box}.scope-toggle,.scope-field{cursor:default;user-select:none;-webkit-user-select:none}.scope-toggle{display:flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:.4rem .7rem;min-width:0;min-height:var(--scope-height, 2rem)}.scope-options{display:flex;flex-shrink:0;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden;background:var(--bg)}.scope-option{position:relative;flex:1 0 auto}.scope-option+.scope-option{border-left:1px solid var(--border)}.scope-option input{position:absolute;width:1px;height:1px;opacity:0}.scope-option span{display:grid;place-items:center;height:calc(var(--scope-height, 2rem) - 2px);padding:.3rem .55rem;color:var(--muted);font-size:.74rem;white-space:nowrap}.scope-option:hover span{color:var(--text);background:var(--surface-active)}.scope-option input:checked+span{color:var(--text);background:var(--surface-active);font-weight:500}.scope-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.scope-description{order:-1;min-width:0;color:var(--muted);font-size:.66rem;line-height:1rem;text-align:right}.scope-field{display:flex;align-items:center;justify-content:end;gap:.5rem;min-width:0;max-width:100%;margin-left:auto;color:var(--muted);font-size:.7rem}select{width:13rem;height:var(--scope-height, auto);min-width:0;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);color:var(--text);font:inherit;font-size:.76rem}:host([compact]) .scope-toggle{min-height:0;gap:.3rem .5rem}:host([compact]) .scope-option span{height:auto;padding:2px 8px;font-size:.68rem;line-height:1.2}:host([compact]) .scope-field{font-size:.68rem}:host([compact]) .scope-description{display:none}:host([compact]) select{width:auto;max-width:22ch;padding:2px 6px;font-size:.68rem;line-height:1.2}`};customElements.get(`bundle-scope-selector`)||customElements.define(`bundle-scope-selector`,X_);var Z_=6,Q_=14,$_=2,ev=24,tv=4,nv=1.5,rv=new Map,iv=new Map,av=`treemap`,ov=``;function sv(e){let t=/^#?([0-9a-f]{6})$/iu.exec(e);if(!t)return`#fff`;let n=parseInt(t[1],16),r=n>>16&255,i=n>>8&255,a=n&255;return(.2126*r+.7152*i+.0722*a)/255>.6?`#1a1a1a`:`#fff`}function cv(e,t,n,r){let i=n*n,a=r*r;return Math.max(a*e/i,i/(a*t))}function lv(e,t){let n=[],r=e.filter(e=>e.value>0),{x:i,y:a,w:o,h:s}=t;if(r.length===0||o<=0||s<=0)return n;let c=0;for(let e of r)c+=e.value;let l=o*s/c,u=0;for(;u<r.length&&o>.5&&s>.5;){let e=Math.min(o,s),t=u,c=0,d=0,f=1/0,p=1/0;for(;t<r.length;){let n=r[t].value*l,i=n>d?n:d,a=n<f?n:f,o=cv(i,a,c+n,e);if(t===u||o<=p)p=o,c+=n,d=i,f=a,t++;else break}let m=c/e;if(o>=s){let e=a;for(let o=u;o<t;o++){let c=o===t-1?a+s-e:r[o].value*l/m;n.push({node:r[o],x:i,y:e,w:m,h:c}),e+=c}i+=m,o-=m}else{let e=i;for(let s=u;s<t;s++){let c=s===t-1?i+o-e:r[s].value*l/m;n.push({node:r[s],x:e,y:a,w:c,h:m}),e+=c}a+=m,s-=m}u=t}return n}function uv(e){for(;e.children&&e.children.size===1;){let t=e.children.values().next().value;if(t.isFile)break;e.name=`${e.name}/${t.name}`,e.children=t.children}if(e.children)for(let t of e.children.values())uv(t)}function dv(e,t,n,r){if(e.path=e.name?t?`${t}/${e.name}`:e.name:t,e.parent=n,e.isFile)return e.count=1,e.value;r.set(e.path,e);let i=0,a=0,o,s;for(let t of e.children.values())i+=dv(t,e.path,e,r),a+=t.count,s===void 0?s=t.pkg:s!==t.pkg&&(s=null),o===void 0?o=t.group:o!==t.group&&(o=null);return e.value=i,e.count=a,e.pkg=s??null,e.group=o??null,i}function fv(e,t,n,r){let i=new Set(e).size===1?q_(t,n):new Map,a=new Map;return t.forEach((e,t)=>{i.has(e)&&a.set(i.get(e),(a.get(i.get(e))??0)+Math.max(r[t]??0,0))}),{groups:i,ranks:new Map([...a].toSorted((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e],t)=>[e,t]))}}function pv(e,t,n,r,i,a,o){if(r<tv||i<tv)return;if(e.isFile){o.push({kind:`file`,node:e,x:t,y:n,w:r,h:i});return}if(!(a<Z_&&r>=ev&&i>=ev&&e.children.size>0)){o.push({kind:`agg`,node:e,x:t,y:n,w:r,h:i});return}o.push({kind:`dir`,node:e,x:t,y:n,w:r,h:i});let s=i>=Q_+tv+$_?Q_:0,c=t+$_,l=n+s,u=r-$_*2,d=i-s-$_;if(u<tv||d<tv)return;let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of lv(f,{x:c,y:l,w:u,h:d}))pv(e.node,e.x,e.y,e.w,e.h,a+1,o)}function mv(e,t){let n=e/(t||1)*100;return n>=10?n.toFixed(0):n.toFixed(n>=1?1:2)}function hv(e,t){if(t<=0||e.isFile||!e.children||e.children.size===0)return 0;let n=1;for(let r of e.children.values()){if(n>=t)break;let e=1+hv(r,t-1);e>n&&(n=e)}return n}function gv(e,t,n,r,i,a){let o=Math.min(a-i,Math.PI*2-1e-4),s=i+o,c=+(o>Math.PI),l=Math.cos(i),u=Math.sin(i),d=Math.cos(s),f=Math.sin(s),p=e=>e.toFixed(2);return`M${p(e+r*l)} ${p(t+r*u)}A${p(r)} ${p(r)} 0 ${c} 1 ${p(e+r*d)} ${p(t+r*f)}L${p(e+n*d)} ${p(t+n*f)}A${p(n)} ${p(n)} 0 ${c} 0 ${p(e+n*l)} ${p(t+n*u)}Z`}function _v(e,t){let n=Math.max(4,Math.floor(t/6.4));return e.length>n?`${e.slice(0,n-1)}\u2026`:e}var vv=class extends ga{static properties={details:{attribute:!1},_w:{state:!0},_h:{state:!0},_focus:{state:!0},_mode:{state:!0},_reason:{state:!0},_kind:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.details=null,this._w=0,this._h=0,this._root=null,this._focus=[],this._mode=av,this._reason=``,this._kind=ov,this._mixedKinds=!1,this._reasons=new Map,this._dirByPath=new Map,this._status=`loading`,this._meta={total:0,prefix:``},this._ro=null,this._plot=null,this._tooltip=null,this._ttCell=null}willUpdate(e){e.has(`details`)&&(this._reason=iv.get(this.details?.integrity)??``),(e.has(`details`)||e.has(`_reason`)||e.has(`_kind`))&&this._rebuild()}firstUpdated(){this._plot=this.querySelector(`.bundle-treemap-plot`),this._tooltip=this.querySelector(`.bundle-treemap-tooltip`),this._plot&&typeof ResizeObserver<`u`&&(this._ro=new ResizeObserver(e=>{let t=e[0]?.contentRect;if(!t)return;let n=Math.floor(t.width),r=Math.floor(t.height);(n!==this._w||r!==this._h)&&(this._w=n,this._h=r)}),this._ro.observe(this._plot))}disconnectedCallback(){super.disconnectedCallback(),this._ro&&=(this._ro.disconnect(),null)}_onPointerMove(e){let t=e.target.closest(`.bundle-treemap-node`);if(!t||!this._tooltip){this._hideTooltip();return}if(t!==this._ttCell){this._ttCell=t;let e=t.dataset;M(k`<div class="bundle-treemap-tt-path">${e.ttPath}</div>${e.ttPkg?k`<div class="bundle-treemap-tt-head"><span class="bundle-treemap-tt-dot" style="${E({background:e.ttColor})}"></span> <span class="bundle-treemap-tt-pkg">${e.ttPkg}</span></div>`:``}<div class="bundle-treemap-tt-meta">${e.ttMeta}</div>`,this._tooltip)}this._positionTooltip(e.clientX,e.clientY)}_onPointerLeave(){this._hideTooltip()}_positionTooltip(e,t){let n=this._tooltip;if(!n||!this._plot)return;n.classList.add(`show`);let r=this._plot.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=i+12;o+n.offsetWidth>r.width-4&&(o=i-n.offsetWidth-12),o<4&&(o=4);let s=a+12;s+n.offsetHeight>r.height-4&&(s=a-n.offsetHeight-12),s<4&&(s=4),n.style.left=`${o}px`,n.style.top=`${s}px`}_hideTooltip(){this._ttCell=null,this._tooltip&&this._tooltip.classList.remove(`show`)}_rebuild(){if(this._root=null,this._focus=[],this._dirByPath=new Map,this._reasons=new Map,this._mixedKinds=!1,this._meta={total:0,prefix:``},this._hideTooltip(),!this.details){this._status=`loading`;return}let e=Ht(this.details),t=[...e.keys()].filter(t=>e.get(t)!==null);if(t.length===0){this._status=`empty`;return}this._reasons=At(this.details,t),this._reasons.has(this._reason)||(this._reason=``,iv.delete(this.details.integrity));let n=this._reasons.get(this._reason),r=Gt(this.details),i=Ut(this.details),a=e=>i.get(e)===`resource`,o=t.filter(t=>e.get(t)>0);this._mixedKinds=o.some(a)&&!o.every(a);let s=this._mixedKinds?this._kind:``,{prefix:c,stripped:l}=kn(t),u=t.map(e=>Jr(e,{packageDir:r?.get(e)})),{groups:d,ranks:f}=fv(u,l,c,t.map(t=>e.get(t))),p={name:``,children:new Map,value:0,isFile:!1},m=0;for(let r=0;r<t.length;r++){if(n&&!n.has(t[r])||s&&a(t[r])!==(s===`resources`))continue;let o=e.get(t[r]);if(o<=0)continue;let c=l[r].split(`/`),f=p,h=!1;for(let e=0;e<c.length-1;e++){let t=f.children.get(c[e]);if(t&&t.isFile){h=!0;break}t||(t={name:c[e],children:new Map,value:0,isFile:!1},f.children.set(c[e],t)),f=t}if(h)continue;let g=c.at(-1),_=f.children.get(g);_&&!_.isFile||(_||(_={name:g,isFile:!0,value:0,origPath:t[r],pkg:u[r],group:d.get(l[r])??null,resource:i.get(t[r])===`resource`||this.details.listedOnly===!0},f.children.set(g,_)),_.value+=o,m+=o)}if(m===0){this._status=`empty`;return}for(let e of p.children.values())uv(e);let h=new Map;dv(p,``,null,h),this._groupRanks=f,this._root=p,this._dirByPath=h,this._meta={total:m,prefix:c},this._status=`ok`;let g=this.details?.integrity?rv.get(this.details.integrity):null;if(g){let e=h.get(g);e?this._focus=this._chainTo(e):rv.delete(this.details.integrity)}}get _focusNode(){return this._focus.length>0?this._focus.at(-1):this._root}_chainTo(e){let t=[];for(let n=e;n&&n!==this._root;n=n.parent)t.push(n);return t.reverse(),t}_rememberFocus(){let e=this.details?.integrity;if(!e)return;let t=this._focus.at(-1)?.path;t?rv.set(e,t):rv.delete(e)}_drillInto(e){!e||e.isFile||!e.children||e.children.size===0||(this._focus=this._chainTo(e),this._rememberFocus(),this._hideTooltip())}_focusTo(e){let t=e<0?[]:this._focus.slice(0,e+1);t.length!==this._focus.length&&(this._focus=t,this._rememberFocus(),this._hideTooltip())}_toggleMode(){this._mode=this._mode===`sunburst`?`treemap`:`sunburst`,av=this._mode,this._hideTooltip()}_toggleKind(e){this._kind=this._kind?``:e,ov=this._kind}_changeReason(e){this._reason=e.detail.value.replace(/^reason:/u,``);let t=this.details?.integrity;t&&(this._reason?iv.set(t,this._reason):iv.delete(t))}_onPlotClick(e){let t=e.target.closest(`[data-treemap-into]`);if(!t)return;let n=this._dirByPath.get(t.dataset.treemapInto);n&&this._drillInto(n)}_renderCrumbs(){let e=this._focus,t=e.length===0,n=e.slice(0,-1),r=t?null:e.at(-1);return k`<nav class="bundle-treemap-crumbs" aria-label="Treemap location"><span class="bundle-treemap-crumbs-lead"><button type="button" class="${T({"bundle-treemap-crumb-home":!0,"at-root":t})}" @click="${()=>this._focusTo(-1)}">Source ${this._mode===`sunburst`?`sunburst`:`treemap`}</button> ${n.map((e,t)=>k`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><button type="button" class="bundle-treemap-crumb" @click="${()=>this._focusTo(t)}" data-tooltip-truncated data-tooltip="${e.path}">${e.name}</button>`)} </span>${r?k`<span class="bundle-treemap-crumb-sep" aria-hidden="true">›</span><span class="bundle-treemap-crumb-current" aria-current="location" data-tooltip-truncated data-tooltip="${r.path}">${r.name}</span>`:``}</nav>`}_paint(e){if(this._groupRanks?.size>0)return e.group==null?{color:tr(),label:null,named:!1}:{color:$n(this._groupRanks.get(e.group)??0),label:e.group,named:!0};let t=e.pkg??Jr(e.path);return{color:nr(t),label:Xr(t),named:e.pkg!=null}}_cell(e){let t=mv(e.node.value,this._meta.total),n={left:`${e.x}px`,top:`${e.y}px`,width:`${e.w}px`,height:`${e.h}px`},r=`${e.node.count} ${e.node.count===1?`file`:`files`}`;if(e.kind===`dir`)return k`<div class="bundle-treemap-node bundle-treemap-dir" style="${E(n)}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-meta="${`${On(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-dirname">${e.node.name}</span></div>`;let{color:i,label:a}=this._paint(e.node),o=E({...n,background:i,color:sv(i)}),s=a??j;return e.kind===`agg`?k`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-agg" style="${o}" data-treemap-into="${e.node.path}" data-tt-path="${`${e.node.path}/`}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${On(e.node.value)} \xB7 ${r} \xB7 ${t}%`}"><span class="bundle-treemap-label">${e.node.name}/</span></div>`:k`<div class="bundle-treemap-node bundle-treemap-leaf bundle-treemap-file" style="${o}" data-bundle-view-source="${e.node.resource?j:e.node.origPath}" data-tt-path="${e.node.path}" data-tt-pkg="${s}" data-tt-color="${i}" data-tt-meta="${`${On(e.node.value)} \xB7 ${t}% of bundle`}"><span class="bundle-treemap-label">${e.node.name}</span></div>`}_arc(e,t,n){let r=mv(e.value,n),{color:i,label:a,named:o}=this._paint(e),s=a??j;if(e.isFile)return A`<path
6
+ class="bundle-treemap-node bundle-treemap-arc"
7
+ d=${t}
8
+ fill=${i}
9
+ data-bundle-view-source=${e.resource?j:e.origPath}
10
+ data-tt-path=${e.path}
11
+ data-tt-pkg=${s}
12
+ data-tt-color=${i}
13
+ data-tt-meta=${`${On(e.value)} \xB7 ${r}% of bundle`}
14
+ ></path>`;let c=`${e.count} ${e.count===1?`file`:`files`}`;return A`<path
15
+ class="bundle-treemap-node bundle-treemap-arc"
16
+ d=${t}
17
+ fill=${i}
18
+ data-treemap-into=${e.path}
19
+ data-tt-path=${`${e.path}/`}
20
+ data-tt-pkg=${o?s:j}
21
+ data-tt-color=${o?i:j}
22
+ data-tt-meta=${`${On(e.value)} \xB7 ${c} \xB7 ${r}%`}
23
+ ></path>`}_renderSunburst(e){let t=this._w,n=this._h,r=t/2,i=n/2,a=Math.min(t,n)/2-6;if(a<30)return j;let o=hv(e,Z_),s=Math.min(Math.max(a*.18,26),a*.45),c=(a-s)/o,l=this._meta.total||1,u=[],d=(e,t,n,a)=>{let f=[...e.children.values()].toSorted((e,t)=>t.value-e.value),p=n-t,m=t;for(let t of f){let n=p*(t.value/e.value),f=s+(a-1)*c,h=f+c;n*h>=nv&&(u.push(this._arc(t,gv(r,i,f,h,m,m+n),l)),!t.isFile&&a<o&&t.children.size>0&&d(t,m,m+n,a+1)),m+=n}};d(e,-Math.PI/2,Math.PI*1.5,1);let f=this._focus.length>0,p=Math.max(s-4,10),m=f?A`<circle
24
+ class="bundle-treemap-node bundle-treemap-center"
25
+ cx=${r} cy=${i} r=${p}
26
+ data-treemap-into=${e.parent.path}
27
+ data-tt-path=${`${e.path}/`}
28
+ data-tt-meta=${`${On(e.value)} \xB7 ${e.count} ${e.count===1?`file`:`files`} \xB7 ${mv(e.value,l)}%`}
29
+ ></circle>`:A`<circle class="bundle-treemap-center" cx=${r} cy=${i} r=${p}></circle>`,h=A`<text class="bundle-treemap-center-label" x=${r} y=${i} text-anchor="middle">
30
+ ${f?A`<tspan x=${r} dy="-0.3em">${_v(e.name,p*2-12)}</tspan><tspan class="bundle-treemap-center-sub" x=${r} dy="1.5em">${On(e.value)}</tspan>`:A`<tspan x=${r} dy="0.35em">${On(e.value)}</tspan>`}
31
+ </text>`;return k`<svg class="bundle-treemap-sunburst" width="${t}" height="${n}" viewBox="${`0 0 ${t} ${n}`}">${u}${m}${h}</svg>`}render(){let e=this._focusNode,t=this._mode===`sunburst`,n=this._status===`ok`&&e&&e.children&&this._w>0&&this._h>0,r=[];if(n&&!t){let t=[...e.children.values()].toSorted((e,t)=>t.value-e.value);for(let e of lv(t,{x:0,y:0,w:this._w,h:this._h}))pv(e.node,e.x,e.y,e.w,e.h,1,r)}let{prefix:i}=this._meta,a=e?e.count:0,o=e?e.value:0;return k`<header class="bundle-treemap-head">${this._renderCrumbs()} <span class="bundle-treemap-head-right"><span class="bundle-treemap-sub">${a} ${a===1?`file`:`files`} · ${On(o)}${i?k` · <span class="mono">${i}</span>`:``}</span> ${this._reasons.size>0?k`<bundle-scope-selector compact="compact" .reasons="${[...this._reasons.keys()].map(e=>({id:`reason:${e}`,label:e}))}" .value="${this._reason?`reason:${this._reason}`:``}" label="Filter files" @scope-change="${this._changeReason}"></bundle-scope-selector>`:j} ${this._mixedKinds?k`<span class="bundle-treemap-kind" role="group" aria-label="Show only">${[[`code`,`Code`],[`resources`,`Resources`]].map(([e,t])=>k`<button type="button" aria-pressed="${String(this._kind===e)}" @click="${()=>this._toggleKind(e)}">${t}</button>`)}</span>`:j}<mode-switch compact="compact" label="Sunburst" .checked="${t}" accessible-label="Toggle sunburst view" @click="${this._toggleMode}"></mode-switch></span></header><div class="bundle-treemap-plot" @click="${this._onPlotClick}" @pointermove="${this._onPointerMove}" @pointerleave="${this._onPointerLeave}">${this._status===`loading`?k`<div class="bundle-treemap-empty">Loading…</div>`:this._status===`empty`?k`<div class="bundle-treemap-empty">${!this._mixedKinds||!this._kind?`This bundle doesn't carry any source content.`:this._kind===`code`?`No code here, only resources.`:`No resources here, only code.`}</div>`:t?n?this._renderSunburst(e):j:r.map(e=>this._cell(e))}<div class="bundle-treemap-tooltip"></div></div>`}};customElements.define(`bundle-treemap`,vv);function yv(e=document){if(e.querySelector(`:modal`))return!0;for(let t of e.querySelectorAll(`*`))if(t.shadowRoot&&yv(t.shadowRoot))return!0;return!1}var bv=`a{cursor:default}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,summary,select,label,legend,header h3,.section-title,.ui-hint,.hint,.note,.lwd-note,.lwd-empty,.empty:not(.error,[role=alert]),.empty-discussion,.history-state[role=status],.history-summary{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea,[contenteditable],pre,code,.mono{cursor:text;user-select:text;-webkit-user-select:text}dialog{margin-top:5rem;margin-inline:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 10px);background:var(--surface);color:var(--text);padding:1.1rem 1.25rem 1rem;max-width:480px;width:min(94vw,480px);box-shadow:0 20px 60px #00000059;&::backdrop{background:rgb(from var(--theme-bar) r g b / .55);backdrop-filter:blur(2px)}}header h3{margin:0 0 .6rem;font-size:1rem;font-weight:600}.nwd-input{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.88rem;&:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgb(from var(--accent) r g b / .18)}&::placeholder{color:var(--muted)}}.nwd-note{margin:.55rem 0 0;color:var(--muted);font-size:.74rem;line-height:1.45}.nwd-intro{margin:0 0 .8rem;color:var(--muted);font-size:.82rem;line-height:1.5}.nwd-actions{display:flex;align-items:center;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}.nwd-spacer{flex:1}.nwd-actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.35rem .9rem;font:inherit;font-size:.8rem;&:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent);&:hover:not(:disabled){color:var(--surface);filter:brightness(1.08)}}&.quiet{border-color:transparent;color:var(--muted);&:hover:not(:disabled){border-color:transparent}}&.danger{color:var(--critical, #f87171);border-color:var(--border);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--critical, #f87171)}}&:disabled{opacity:.5}}:host-context(body.theme-w95){& dialog{border:0;box-shadow:var(--w95-window);&:before{content:"";display:block;flex:none;height:20px}&::backdrop{background:none;backdrop-filter:none}}& header h3{position:absolute;top:3px;right:3px;left:3px;display:flex;align-items:center;gap:4px;height:18px;margin:0;padding:0 24px 0 4px;overflow:hidden;background:var(--w95-title);color:#fff;font-size:11px;font-weight:700;line-height:18px;white-space:nowrap;& svg{flex:none;width:14px;height:14px}}& button[aria-label^=Close]{position:absolute;top:5px;right:5px;z-index:1;display:grid;place-items:center;width:16px;height:14px;padding:0;border:0;border-radius:0;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:13px;line-height:1;&:hover{background:var(--w95-face);color:#000}&:active{box-shadow:var(--w95-pressed)}}.nwd-actions button{min-width:75px;min-height:23px;border-color:transparent;background:var(--w95-face);color:#000;box-shadow:var(--w95-raised);font-size:11px;&:hover:not(:disabled){border-color:transparent;color:#000}&:active:not(:disabled){box-shadow:var(--w95-pressed)}&:disabled{color:var(--w95-shadow);text-shadow:1px 1px #fff;opacity:1}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}&.primary,&.primary:hover:not(:disabled){box-shadow:var(--w95-default);color:#000;filter:none}&.primary:active:not(:disabled){box-shadow:inset 0 0 0 1px #000,inset 0 0 0 2px var(--w95-shadow)}&.quiet{box-shadow:none}&.danger,&.danger:hover:not(:disabled){color:var(--critical)}}.nwd-input{border-color:transparent;box-shadow:var(--w95-sunken);&:focus{border-color:transparent;box-shadow:var(--w95-sunken)}}}@media(display-mode:window-controls-overlay){dialog{-webkit-app-region:no-drag;app-region:no-drag}}:host-context(body.theme-w95) *{overscroll-behavior:none}
32
+ `,xv=class extends ga{static styles=[ma(bv)];exclusive=!1;firstUpdated(){hr(this.renderRoot),this.beforeOpen();let e=this.renderRoot.querySelector(`dialog`);if(e){if(this.exclusive&&yv()){this._conflict(new DOMException(`Another modal dialog is already open`,`InvalidStateError`));return}try{e.showModal()}catch(e){this._conflict(e);return}this.focusInitial()}}_conflict(e){this._settled=!0,this.dispatchEvent(new CustomEvent(`modal-conflict`,{detail:{cause:e}}))}beforeOpen(){}focusInitial(){(this.renderRoot.querySelector(`input, textarea`)??this.renderRoot.querySelector(`button.primary`)??this.renderRoot.querySelector(`button`))?.focus()}_finish(e){this._settled||(this._settled=!0,this.renderRoot.querySelector(`dialog`)?.close(),this.dispatchEvent(new CustomEvent(`resolve`,{detail:e})))}_onClose=()=>this._finish(null);_onBackdrop=e=>{if(e.target!==e.currentTarget)return;let{left:t,right:n,top:r,bottom:i}=e.currentTarget.getBoundingClientRect();(e.clientX<t||e.clientX>n||e.clientY<r||e.clientY>i)&&this._onClose()}};function Sv(e,t={}){return new Promise(n=>{let r=document.createElement(e);Object.assign(r,t),r.addEventListener(`resolve`,e=>{r.remove(),n(e.detail)}),document.body.append(r)})}function Cv(e,t,n){return new Promise((r,i)=>{let a=document.createElement(e);Object.assign(a,t),a.exclusive=!0,a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{n(a),a.remove(),i(Jm(e.detail?.cause))}),document.body.append(a)})}var wv=`dialog{max-width:520px;width:min(94vw,520px)}.wsl-field{display:block;margin-top:.6rem;color:var(--text);font-size:.78rem;>span{display:block;margin-bottom:.25rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}}.wsl-ack{display:flex;align-items:flex-start;gap:.5rem;margin-top:.6rem;color:var(--text);font-size:.8rem;line-height:1.4;>input[type=checkbox]{flex:0 0 auto;margin-top:.15rem}>span{flex:1 1 auto}}.wsl-link{display:block;width:100%;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg, var(--surface));color:var(--text);font:inherit;font-size:.78rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;word-break:break-all}.wsl-error{margin:.55rem 0 0;color:var(--critical, #f87171);font-size:.74rem;line-height:1.4}.wsl-warning{padding:.55rem .65rem;border:1px solid var(--critical, #f87171);border-radius:var(--ui-radius, 6px);background:rgb(from var(--critical, #f87171) r g b / .08);>p+p{margin-top:.45rem}}.wsl-optout{display:flex;align-items:center;gap:.5rem;margin-top:.7rem;color:var(--text);font-size:.78rem}.nwd-input:disabled{opacity:.5}.nwd-actions button.primary.danger{background:var(--critical, #f87171);border-color:var(--critical, #f87171);color:var(--surface);&:hover:not(:disabled){border-color:var(--critical, #f87171);color:var(--surface);filter:brightness(1.08)}}
33
+ `,Tv=class extends xv{static styles=[...xv.styles,ma(wv)];static properties={_busy:{state:!0},_error:{state:!0}};constructor(){super(),this._busy=!1,this._error=``,this._abortController=null}_finish(e){if(!this._settled){if(this._abortController)try{this._abortController.abort()}catch{}super._finish(!!e)}}_onCancel=()=>this._finish(!1);_onUnlock=async()=>{if(!this._busy){this._busy=!0,this._error=``,this._abortController=new AbortController;try{if(await jo({signal:this._abortController.signal})){this._finish(!0);return}this._error=``}catch(e){this._error=e?.message??String(e)}finally{this._busy=!1,this._abortController=null}}};render(){return k`<dialog @close="${this._onClose}"><header><h3>Unlock your data</h3></header><p class="nwd-note ui-hint">Your triage data and report files are encrypted with a passkey on this device. Unlock to load them.</p>${this._error?k`<p class="wsl-error">${this._error}</p>`:j}<footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onCancel}">${this._busy?`Cancel`:`Later`}</button> <button type="button" class="primary" ?disabled="${this._busy}" @click="${this._onUnlock}">${this._busy?`Waiting…`:`Unlock with passkey`}</button></footer></dialog>`}};customElements.define(`passkey-unlock-dialog`,Tv);function Ev(){return Sv(`passkey-unlock-dialog`)}var Dv=`deepviewManagedNavigation`,Ov=`deepviewManagedLoginFinding`;function kv(e,t){return e?.view===`findings`&&t?.view===`findings`&&e.teamSlug===t.teamSlug&&(e.reportSlug??null)===(t.reportSlug??null)}function Av(e,t){return e?.bundleTab!==`code`||t?.bundleTab!==`code`||e.view!==t.view?!1:e.view===`npm`?e.packageName===t.packageName&&(e.packageSpec??null)===(t.packageSpec??null):e.view===`repository-code`?e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``):e.view===`bundles`&&(e.teamSlug??null)===(t.teamSlug??null)&&e.bundleSlug===t.bundleSlug}function jv(e){let t=e.location.hash,n=Ye(t),r=!1,i=null,a=0,o=null,s=null,c=!1,l=null,u=null,d=null;function f(){return e.location.hash.startsWith(`#public=`)&&e.location.hash!==t}function p(e){let t=ui(e),n=t?.view===`home`?Ur(e.hash):null;return t?{...t,...n?{finding:n}:{}}:null}function m(){try{let t=e.sessionStorage?.getItem(Ov);if(e.sessionStorage?.removeItem(Ov),!t)return null;let n=new URL(t,e.location.origin),r=n.origin===e.location.origin?p(n):null;return r?.finding?r:null}catch{return null}}function h(){if(!r||!Ur(e.location.hash)||l===e.location.href||e.history.state?.[Dv]&&e.history.state[Dv]!==i)return;let t=l=e.location.href;_(p(new URL(t))??{view:`home`},{replace:!0}).finally(()=>{l===t&&(l=null)})}function g(t){f()||(t=$e(t,n),e.history.replaceState(r?{[Dv]:i}:null,``,t),s=t)}async function _(t,{replace:c=!1,pop:l=!1}={}){if(!r||!o||f())return!1;t??={view:`home`};let d=oi(t);if(d===null)return!1;let p=++a,m=u={route:t,path:d,push:!l&&!c,shown:!1,findingRoute:null,codeRoute:null},h=()=>r&&p===a&&!f(),_=!1;try{_=await o(t,h)}catch(e){console.warn(`managed: navigation failed:`,e)}return h()?_?(typeof _==`object`&&(d=oi(_)??d),kv(m.findingRoute,typeof _==`object`?_:t)&&(d=oi(m.findingRoute)),Av(m.codeRoute,typeof _==`object`?_:t)&&(d=oi(m.codeRoute)),u=null,l||c||m.shown?g(d):$e(d,n)!==s&&(d=$e(d,n),e.history.pushState({[Dv]:i},``,d),s=d),!0):(await o({view:`home`},h),h()&&(u=null,g(`/`)),!1):!1}function v(t){if(!f()){if(!r){t.state?.[Dv]&&g(`/`);return}if((!t.state?.[Dv]||t.state[Dv]===i)&&Ur(e.location.hash)){h();return}if(!t.state?.[Dv]){let t=p(new URL(e.location.href)),n=s==null?null:ui(new URL(s,e.location.href));if(t?.file!=null&&t.file===n?.file&&Av(t,n)){g(oi(t));return}}_((t.state?.[Dv]===i?p(new URL(e.location.href)):null)??{view:`home`},{pop:!0})}}function y(t){if(!r||t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let n=t.composedPath().find(e=>e.matches?.(`a.comment-self-ref[href]`));if(!n||n.hasAttribute(`download`)||n.target&&n.target!==`_self`)return;let i=new URL(n.href);if(i.origin!==e.location.origin)return;let a=p(i);if(a?.finding)return t.preventDefault(),_(a)}return{get active(){return r},rememberFinding(){let t=p(new URL(e.location.href));if(!t?.finding)return;let n=t.view===`home`?`/#${Vr(t.finding)}`:oi(t);try{e.sessionStorage?.setItem(Ov,n)}catch{}},start(t,{onCancel:n=null}={}){if(r)return;r=!0,o=t,d=n,i=typeof e.history.state?.[Dv]==`string`?e.history.state[Dv]:e.crypto.randomUUID(),c||=(e.addEventListener(`popstate`,v),e.addEventListener(`hashchange`,h),e.addEventListener(`click`,y),e.launchQueue?.setConsumer(({targetURL:t})=>{if(!r||!t)return;let n=new URL(t);if(n.origin!==e.location.origin)return;let i=p(n);i&&_(i)}),!0);let a=m(),s=p(new URL(e.location.href))??{view:`home`};return a&&s.view===`home`&&!s.finding&&(s=a),_(s,{replace:!0})},navigate:_,replaceFindingRoute(t){if(!r||t?.view!==`findings`||f())return;let i=oi(t);if(i!=null){if(u){(u.route.view===`home`&&u.route.finding||kv(t,{...u.route,view:`findings`}))&&(u.findingRoute=t);return}kv(t,ui(new URL(e.location.href)))&&$e(i,n)!==s&&g(i)}},replaceCodeRoute(t){if(!r||f()||![`bundles`,`npm`,`repository-code`].includes(t?.view)||t.bundleTab!==`code`)return;let i=oi(t);if(i!=null){if(u){Av(t,u.route)&&(u.codeRoute=t);return}Av(t,ui(new URL(e.location.href)))&&$e(i,n)!==s&&g(i)}},showing(t){let a=u;if(!r||f()||!a||a.route!==t||a.shown)return;a.shown=!0;let o=$e(a.path,n);!a.push||o===s?g(a.path):(e.history.pushState({[Dv]:i},``,o),s=o)},replaceRoute(e){if(!r||!e||f())return;let t=oi(e);t!=null&&!u&&g(t)},pushRoute(t){if(!r||!t||f())return;let o=oi(t);if(o==null)return;let c=u!==null;++a,u=null,o=$e(o,n),o!==s&&(e.history.pushState({[Dv]:i},``,o),s=o),c&&d?.()},reset({force:t=!1}={}){if(++a,u=null,r||t){try{e.sessionStorage?.removeItem(Ov)}catch{}r=!1,i=null,o=null,g(`/`)}}}}var U=typeof window>`u`?null:jv(window);function Mv(e){return F()&&!P.managedSession?.publicShare&&Ke(P.managedSession?.role,`triage`)&&!!(e?._managedReportId&&e.id)}function Nv(e){let t=e?.teams?.find(t=>t.id===e.teamId);return t?!t.cacheKey||!Array.isArray(t.reports)||t.reports.some(e=>!e.cacheKey)?e.teams:JSON.stringify([t.cacheKey,t.reports.map(e=>[e.id,e.cacheKey,e.visible!==!1]).toSorted()]):null}var Pv=class{constructor({context:e,fetchWorkspace:t,changed:n=()=>{},now:r=Date.now}){this.getContext=e,this.fetchWorkspace=t,this.changed=n,this.now=r,this.entries=new Map,this.required=new Set,this.expires=0,this.context=null,this.scope=null,this.timer=null,this.run=null}reset(){this.run?.abort(),this.run=null,clearTimeout(this.timer),this.timer=null,this.entries.clear(),this.required.clear(),this.expires=0,this.context=null,this.scope=null}syncContext(){let e=this.getContext();if(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||e?.teams!==this.context?.teams){let t=Nv(e);(e?.key!==this.context?.key||e?.teamId!==this.context?.teamId||e?.reportId!==this.context?.reportId||t!==this.scope)&&this.reset(),this.context=e,this.scope=t}return this.scope===null?null:this.context}schedule(){!this.timer&&!this.run&&(this.timer=setTimeout(()=>{this.timer=null,this.flush()},0))}read(e,{refreshIfMissing:t=!1}={}){let n=this.syncContext()?.teamId&&Wh(e);if(!n)return null;let r=Gh(n),i=this.entries.get(r)??null;return t&&!i&&(this.run?this.required.add(r):this.expires=0),this.expires<=this.now()&&this.schedule(),i}async flush(){let e=this.syncContext();if(!e?.teamId||this.run||this.expires>this.now())return;let t=this.run=new AbortController,n;try{n=await this.fetchWorkspace(e.teamId,t.signal,e.reportId)}catch{n=null}if(this.syncContext(),this.run!==t||t.signal.aborted)return;this.entries.clear();for(let e of Array.isArray(n)?n:[]){let t=Wh(e?.url);if(t&&typeof e.title==`string`&&[`open`,`draft`,`closed`,`merged`].includes(e.status)){let n=t.kind===`issue`&&e.status===`closed`?zh(e.stateReason):null;this.entries.set(Gh(t),{title:e.title,description:typeof e.description==`string`?e.description:null,status:e.status,stateReason:n})}}this.expires=this.now()+6e4,this.run=null;let r=[...this.required].some(e=>!this.entries.has(e));this.required.clear(),r&&(this.expires=0,this.schedule()),this.changed()}},Fv=new Set,Iv=new Pv({context:()=>{let e=P.managedSession;return F()&&e?.id&&P.currentManagedTeam?{key:JSON.stringify([e.id,e.role,e.csrfToken]),teamId:P.currentManagedTeam,reportId:P.managedTeams.find(e=>e.id===P.currentManagedTeam)?.reports.find(e=>e.id===P.currentManagedReport&&e.visible===!1)?.id??null,teams:P.managedTeams}:null},fetchWorkspace:Xb,changed:()=>{for(let e of Fv)e()}});function Lv(e){return Fv.add(e),()=>Fv.delete(e)}function Rv(){Iv.reset();for(let e of Fv)e()}function zv(e){P.currentManagedTeam===e&&Rv()}function Bv(e,t,n){if(P.currentManagedTeam!==e)return;let r=[...t].map(e=>({id:e,issue:P.managedIssues.get(e)}));r.some(({id:e,issue:t})=>t?.url!==n.get(e)?.url)&&zv(e);for(let{id:e,issue:t}of r)t?.autoFix&&t.autoFix!==n.get(e)?.autoFix&&Iv.read(t.autoFix,{refreshIfMissing:!0});let i=r.find(({issue:e})=>e?.url)?.issue.url;i&&Iv.read(i)}var Vv={claude:{name:`Claude`,mark:`anthropic`,accounts:[{id:81847,logins:[`claude`]},{logins:[`claude[bot]`]}],names:[`Claude`],emails:[`noreply@anthropic.com`]},codex:{name:`Codex`,mark:`openai`,accounts:[{id:199175422,logins:[`chatgpt-codex-connector`,`chatgpt-codex-connector[bot]`]}],names:[`Codex`],emails:[`codex@openai.com`]},copilot:{name:`Copilot`,mark:`github-copilot`,accounts:[{id:198982749,logins:[`Copilot`,`copilot-swe-agent`]},{id:175728472,logins:[`Copilot`,`copilot-pull-request-reviewer`,`copilot-pull-request-reviewer[bot]`]}],names:[`Copilot`]},dependabot:{name:`Dependabot`,avatar:`app-29110`,accounts:[{id:49699333,logins:[`dependabot`,`dependabot[bot]`]}],names:[`dependabot[bot]`]},actions:{name:`GitHub Actions`,avatar:`app-15368`,accounts:[{id:41898282,logins:[`github-actions`,`github-actions[bot]`]}],names:[`github-actions[bot]`]},cursor:{name:`Cursor`,accounts:[],names:[`Cursor Agent`],emails:[`cursoragent@cursor.com`]}},Hv=Object.entries(Vv),Uv=new Map;for(let[e,{accounts:t}]of Hv)for(let{id:n,logins:r}of t)for(let t of r)Uv.set(t.toLowerCase(),{agent:e,ids:[...Uv.get(t.toLowerCase())?.ids??[],n]});var Wv=new Map(Hv.flatMap(([e,{names:t}])=>t.map(t=>[t.toLowerCase(),e])));new Map(Hv.flatMap(([e,{emails:t=[]}])=>t.map(t=>[t,e])));function Gv(e,t=null,n=null){if(typeof e!=`string`)return typeof n==`string`?Wv.get(n.trim().toLowerCase())??null:null;let r=Uv.get(e.toLowerCase());return r&&(t===null||r.ids.includes(void 0)||r.ids.includes(t))?r.agent:null}function Kv(e,t){let n=new Set([...t].map(t=>Gv(e,t)));return n.size===1&&!n.has(null)}var qv=new Map([[`author`,`authorId`],[`authorLogin`,`authorId`],[`mergedBy`,`mergedById`],[`login`,`id`]]),Jv=/^[A-Za-z\d][A-Za-z\d-]{0,38}(?:\[bot\])?$/u,Yv=8,Xv=e=>Number.isSafeInteger(e)&&e>0?e:null;function Zv(e){let t=new Map;Qv(e,t,0);let n=new Map;for(let[e,r]of t)n.set(e.toLowerCase(),new Set([...n.get(e.toLowerCase())??[],...r]));return new Map([...t.keys()].map(e=>{let t=n.get(e.toLowerCase());return t.size<=1?[e,[...t][0]??null]:[e,Kv(e,t)?null:`ambiguous`]}))}function Qv(e,t,n){if(n>Yv||typeof e!=`object`||!e)return;if(Array.isArray(e)){for(let r of e)Qv(r,t,n+1);return}let r=e;for(let[e,i]of Object.entries(r)){let a=qv.get(e);if(a&&typeof i==`string`&&Jv.test(i)){let e=Xv(r[a]);t.set(i,new Set([...t.get(i)??[],...e===null?[]:[e]]))}else Qv(i,t,n+1)}}var $v=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M23.75 4.48c-.26-.12-.37.11-.51.24l-.14.13c-.37.4-.8.66-1.37.63a2.7 2.7 0 0 0-2.17.85 2 2 0 0 0-1.24-1.55c-.36-.16-.71-.31-.96-.65-.17-.24-.22-.51-.3-.78-.06-.16-.11-.32-.3-.35-.2-.03-.27.14-.35.28q-.46.87-.43 1.84a4 4 0 0 0 1.84 3.4q.2.12.13.32l-.26.83c-.06.18-.14.22-.33.14a6 6 0 0 1-1.74-1.18c-.86-.83-1.63-1.74-2.6-2.46l-.69-.47c-.98-.96.13-1.74.4-1.84.26-.1.09-.43-.79-.42-.87 0-1.67.3-2.68.68l-.47.14a10 10 0 0 0-2.88-.1 6.2 6.2 0 0 0-4.5 2.62 7.7 7.7 0 0 0-1.26 6.07 9.3 9.3 0 0 0 3.36 5.65 9 9 0 0 0 6.44 2.14 7.6 7.6 0 0 0 5-1.86c.46.24.96.33 1.77.4.63.06 1.24-.03 1.7-.13.74-.15.7-.84.43-.96-2.16-1-1.68-.6-2.11-.92 1.1-1.3 2.74-2.65 3.39-7 .05-.35 0-.57 0-.85 0-.17.03-.24.23-.26a4 4 0 0 0 1.54-.47c1.4-.77 1.96-2.02 2.1-3.52.02-.23 0-.47-.25-.59M11.58 18c-2.09-1.64-3.1-2.18-3.52-2.16-.4.02-.32.47-.23.76s.2.49.37.74c.11.17.19.42-.12.6-.67.42-1.84-.13-1.9-.16a8.7 8.7 0 0 1-3.3-3.3 10 10 0 0 1-1.3-4.5c-.01-.38.1-.51.48-.58a5 5 0 0 1 1.53-.04 9.6 9.6 0 0 1 5.47 2.77c.87.86 1.53 1.89 2.2 2.9a14 14 0 0 0 2.48 2.9q.51.45.9.68c-.8.1-2.15.11-3.06-.61m1-6.44a.3.3 0 0 1 .42-.29.3.3 0 0 1 .2.3.3.3 0 0 1-.31.3.3.3 0 0 1-.3-.31m3.11 1.6q-.3.13-.59.16a1.3 1.3 0 0 1-.8-.26c-.27-.23-.47-.36-.55-.76a2 2 0 0 1 .02-.58c.07-.33-.01-.54-.24-.73q-.3-.22-.69-.2l-.25-.08a.25.25 0 0 1-.12-.36 1 1 0 0 1 .2-.2c.35-.2.76-.14 1.14.01.35.14.62.4 1 .78.4.45.46.58.69.92q.27.38.44.84.1.3-.25.46"/></svg>`,ey=k`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`,ty=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`,ny=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M6.9 4c1.91 0 3.51.93 5.43 3.38L12.6 7q.28-.36.58-.7l.31-.36C14.6 4.8 15.8 4 17.23 4a5 5 0 0 1 3.49 1.52l.21.2c1.73 1.77 2.92 4.72 3.06 8.04v.39l.01.25q0 2.27-.82 3.7l-.14.23-.1.15q-.45.64-1.1 1l-.26.15-.08.04-.3.12a4 4 0 0 1-1.34.2q-.78 0-1.43-.2a4.4 4.4 0 0 1-1.73-1.12l-.23-.24a22 22 0 0 1-2.49-3.59l-1.43-2.4-.54-.9-1.77 3.13-.34.6C7.6 19.15 6.23 20 4.36 20c-1.21 0-2.2-.42-2.94-1.18l-.17-.19a5 5 0 0 1-1.04-2.18l-.07-.32a9 9 0 0 1-.13-1.3L0 14.48q0-1.13.17-2.23l.1-.58c.3-1.53.83-2.95 1.54-4.15l.2-.34C3.2 5.34 4.82 4.1 6.64 4zm-.04 2.62h-.2c-.83.09-1.6.68-2.25 1.58l-.14.2v.02a11 11 0 0 0-1.46 3.84v.03a13 13 0 0 0-.21 2.25v.19q0 .27.04.54l.04.29q.15.75.49 1.2l.11.14q.46.5 1.17.5c1.1 0 1.8-.68 3.7-3.64l2.17-3.4.46-.7-.14-.2C9.11 7.3 8.08 6.62 6.86 6.62m10.2-.56-.18.01q-.93.08-1.82.93l-.2.2q-.64.7-1.36 1.8l.27.4.55.86.29.48 1.4 2.33.7 1.12q.84 1.37 1.4 2.08l.21.26q.41.48.78.68l.1.05q.34.14.72.13.27 0 .52-.07.5-.16.81-.64l.1-.16.07-.16q.3-.7.3-1.79l-.01-.45c-.08-2.87-.94-5.37-2.2-6.8l-.18-.18a3.2 3.2 0 0 0-2.27-1.08"/></svg>`,ry=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`,iy=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m1.05 16.92 9.54 2.55a21 21 0 0 0 .06 2.03l5.96 1.6a12 12 0 0 1-5.59.86l-.18-.02h-.04l-.09-.01-.1-.01-.15-.02-.1-.01-.11-.02-.32-.05h-.05l-.07-.02-.1-.02-.08-.02-.1-.02-.07-.01-.1-.02-.09-.02-.1-.03-.06-.01-.09-.03-.09-.02-.1-.02-.08-.03-.1-.03-.07-.02-.08-.02-.1-.03-.1-.03-.06-.02-.08-.03-.09-.03-.06-.02-.05-.02-.06-.02-.1-.04-.06-.02-.08-.03-.09-.04-.09-.03-.08-.04-.1-.04-.05-.02-.07-.03-.04-.02-.06-.03-.1-.05-.06-.02-.1-.05-.06-.03-.08-.04-.09-.04-.1-.05-.04-.02-.1-.06-.06-.03-.06-.03-.05-.03-.1-.05-.05-.03-.05-.03-.07-.04-.09-.05-.09-.06-.05-.03-.08-.06-.07-.03-.07-.05-.07-.05-.06-.04-.05-.03-.05-.03-.04-.03-.04-.03-.06-.04-.07-.05-.07-.05-.08-.06-.05-.04-.08-.06-.07-.06-.09-.06-.04-.04-.07-.05-.07-.06-.1-.07-.04-.04-.04-.04-.05-.04-.04-.04-.06-.05-.07-.06-.07-.06-.06-.06-.07-.06-.05-.05-.1-.09-.09-.1-.03-.02-.04-.04-.07-.07-.05-.06-.05-.05-.17-.18-.08-.09-.06-.07-.07-.08-.04-.04-.05-.07-.06-.06-.05-.06-.03-.03-.04-.06-.07-.08-.04-.05-.05-.07-.02-.02a12 12 0 0 1-1.44-2.4m-1.02-5.8 11.36 3.04a21 21 0 0 0-.47 2.01l10.81 2.9a12 12 0 0 1-1.84 2L.66 15.92l-.02-.04-.03-.1-.05-.16-.01-.02-.2-.74-.04-.13-.02-.08-.02-.1-.02-.08-.01-.09-.02-.08-.02-.1-.07-.42-.02-.12v-.08l-.02-.1-.02-.17v-.04a12 12 0 0 1-.04-2.15m1.6-5.15 11.94 3.2q-.54.9-1 1.87l11.29 3.03q-.22 1.22-.67 2.36l-11.55-3.09L.12 10.26l.02-.1v-.05l.02-.07.01-.08.02-.1.09-.44.03-.13.02-.08.02-.1.07-.27.03-.1.02-.08.03-.1.03-.08.03-.1.02-.08.03-.1a12 12 0 0 1 1.01-2.23zm4.44-4.4L17.35 4.6a21 21 0 0 0-1.69 1.72l7.83 2.1q.4 1.28.51 2.66L2.1 5.2l.05-.06.03-.04.04-.06.04-.06.06-.08.05-.07.07-.09.05-.06.05-.07.06-.07.06-.08.05-.07.07-.07.05-.07.07-.08.05-.06.07-.08.06-.06.06-.07.06-.06.07-.08.06-.06.06-.07.17-.17.1-.1.06-.05.07-.07a12 12 0 0 1 2.28-1.68M12.02 0h.41l.08.01h.16l.09.01h.1l.15.02h.08l.05.01h.08l.08.02h.04l.1.01.06.01.1.01.09.01.04.01.06.01.2.03.08.01.06.02.14.02.1.02.1.02.05.01.08.02h.04l.06.02.04.01.07.02h.05l.07.02.1.03.1.03.12.03.11.03.05.02.07.02.08.02.07.02.05.02.05.01.08.03.1.03.1.04.05.02.06.02.1.03.1.04.12.05.1.04.05.02.06.02.04.02.06.03.04.01.06.03.1.05.1.04.08.04.08.03.06.03.09.05.09.04.1.06.05.02.05.03.05.02.06.04.04.02.05.03.1.05.1.06.08.05.06.03.05.03.1.06.09.06.1.06.03.02.07.05.08.05.04.03.06.04.06.04.03.02.16.11.08.06.07.05.05.05.09.06.08.06.04.03.05.05.09.06.07.07.09.07q1.07.9 1.9 2.03L7.23 1l.06-.02.07-.03.08-.04.09-.03q.15-.07.34-.13l.1-.04.09-.03.08-.03.1-.03.26-.09.1-.02.08-.03.1-.03.08-.02.1-.03.09-.02.09-.02.1-.02.09-.03.09-.02.1-.02.08-.02.1-.02.1-.01.1-.02.08-.02.1-.02h.1l.09-.02.1-.02.1-.01.08-.01.11-.01.09-.01.1-.01.29-.03h.1l.1-.01h.1l.1-.01h.29z"/></svg>`,ay=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M10.21 8.98V7.62l.39-.02c3.6-.12 5.96 3.18 5.96 3.18s-2.55 3.65-5.28 3.65a3 3 0 0 1-1.07-.17v-4.11c1.4.17 1.68.8 2.52 2.25l1.88-1.62a5 5 0 0 0-3.67-1.85zm0-4.47v2.02l.39-.02c5-.17 8.26 4.23 8.26 4.23s-3.75 4.69-7.65 4.69q-.5 0-1-.1v1.25q.42.06.84.06c3.62 0 6.25-1.9 8.79-4.17.42.35 2.15 1.2 2.5 1.57-2.42 2.08-8.05 3.76-11.24 3.76q-.45 0-.9-.05v1.76H24v-15zm0 9.75v1.07c-3.36-.61-4.29-4.2-4.29-4.2a7.2 7.2 0 0 1 4.29-2.14v1.17a3.2 3.2 0 0 0-2.5 1.17s.6 2.28 2.5 2.94m-5.96-3.3a8.3 8.3 0 0 1 5.96-3.34v-1.1C5.8 6.9 2 10.72 2 10.72s2.16 6.43 8.21 7.02v-1.17c-4.44-.57-5.96-5.61-5.96-5.61"/></svg>`,oy=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`,sy=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="m12.6 1.34 1.18 2.08a.2.2 0 0 0 .15.09h5.56q.26 0 .44.32L21.4 6.4c.19.34.24.48.02.84l-.76 1.3-.37.66c-.1.2-.22.28-.04.51l2.66 4.64c.17.3.1.5-.05.77q-.65 1.17-1.33 2.34c-.16.27-.35.37-.68.37q-1.16-.03-2.33.01a.1.1 0 0 0-.08.05l-2.7 4.74c-.17.3-.38.37-.73.37h-3.02a.5.5 0 0 1-.46-.27l-1.34-2.32a.1.1 0 0 0-.08-.05H4.98q-.42.05-.8-.1l-1.6-2.77a.5.5 0 0 1 0-.54l1.2-2.12a.2.2 0 0 0 0-.2L1.9 11.38l-.79-1.4c-.16-.31-.17-.5.1-.96L2.6 6.57q.18-.34.58-.34h2.59a.1.1 0 0 0 .1-.06l2.81-4.9a.5.5 0 0 1 .42-.24h1.59L11.7 1c.35 0 .73.03.9.34m-3.43.4-.05.03L6.25 6.8a.2.2 0 0 1-.13.08H3.25q-.08 0-.04.07L9.02 17.1q.04.06-.03.06l-2.8.01a.2.2 0 0 0-.2.12L4.67 19.6q-.06.12.07.12h5.72q.06 0 .1.07l1.4 2.45q.08.12.14 0l5-8.76.8-1.38a.1.1 0 0 1 .09 0l1.42 2.53a.1.1 0 0 0 .1.06l2.77-.02.04-.02v-.04l-2.9-5.09a.1.1 0 0 1 0-.1l.29-.52 1.12-1.97q.03-.06-.04-.06H9.2q-.09 0-.04-.08l1.43-2.5a.1.1 0 0 0 0-.12l-1.37-2.4zm6.3 8.02q.06 0 .03.06l-.84 1.47-2.6 4.58-.06.03-.05-.03L8.5 9.84q-.03-.05.03-.05l.21-.02z"/></svg>`,cy=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="#FF7764" d="M7.52 2a4.47 4.47 0 0 0 8.96 0h4.55A9 9 0 0 1 12 10.98 9 9 0 0 1 2.98 2z"/><path fill="#FF563F" d="M16.48 22a4.47 4.47 0 0 0-8.96 0H2.98A9 9 0 0 1 12 13.02 9 9 0 0 1 21.03 22z"/></svg>`,ly=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`,uy=k`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`,dy=e=>k`<svg width="1em" height="1em" fill="currentColor" viewBox="4 5 8 8" aria-hidden="true"><path d="${e}"></path></svg>`,fy=dy(qi),py=dy(Ji),my={anthropic:fy,deepseek:$v,"github-copilot":k`<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="${Yi}"></path></svg>`,google:ey,meta:ny,mistralai:ry,moonshot:iy,moonshotai:iy,nvidia:ay,openai:py,openrouter:oy,qwen:sy,unbiased:cy,xiaomi:ly,"x-ai":ty,"z-ai":uy},hy=k`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function gy(e){return Object.hasOwn(my,e)?my[e]:hy}var _y=new Map,vy=new Map,yy=new Set;function by(e){let{users:t,...n}=e??{},r=t??{};for(let[e,t]of Zv(n)){let n=e.toLowerCase();t===`ambiguous`||t!==null&&vy.has(n)&&vy.get(n)!==t&&!Kv(e,[t,vy.get(n)])?yy.add(n):t!==null&&vy.set(n,t),(!Object.hasOwn(r,e)||yy.has(n))&&_y.delete(n)}for(let[e,t]of Object.entries(r))yy.has(e.toLowerCase())||(typeof t?.agent==`string`&&Object.hasOwn(Vv,t.agent)?_y.set(e.toLowerCase(),{agent:t.agent}):typeof t?.id==`string`&&typeof t.login==`string`?_y.set(e.toLowerCase(),{id:t.id,login:t.login,name:typeof t.name==`string`&&t.name.trim()?t.name.trim():null}):_y.delete(e.toLowerCase()));return e}var xy=0;function Sy(){_y.clear(),vy.clear(),yy.clear(),Dy.clear(),Oy.clear(),xy++}async function Cy(e){let t=xy,n=Ey,r=await e();return t!==xy||(by(r),n!==Ey&&Ay(Ty.userId,Ty.profile)),r}var wy=new Map,Ty=null,Ey=0,Dy=new Set,Oy=new Set;function ky(e,t,n=!1,r=null){n&&wy.set(e,(wy.get(e)??0)+1),r&&Dy.add(r.login.toLowerCase()),Number.isSafeInteger(r?.githubId)&&Oy.add(r.githubId),Ty={userId:e,profile:t},Ey++,Ay(e,t)}function Ay(e,t){for(let[n,r]of _y)r.id===e&&((vy.has(n)?Oy.has(vy.get(n)):Dy.has(n))?_y.delete(n):_y.set(n,{...r,login:t.login,name:t.name?.trim()||null}))}function jy(e){let t=typeof e==`string`?_y.get(e.toLowerCase()):null;return t?.id?t:null}var My=e=>_y.get(e.toLowerCase())?.agent??null,Ny=e=>k`<img src="${e}" alt="" loading="lazy" decoding="async" @error="${e=>e.currentTarget.remove()}">`,Py=e=>Ny(`/api/avatar/${encodeURIComponent(e.id)}${wy.has(e.id)?`?v=${wy.get(e.id)}`:``}`);function Fy(e,t){let{name:n,mark:r,avatar:i}=Vv[e];return k`<span class="app-user" data-tooltip="${t}">${r||i?k`<span class="${`app-user-mark is-${e}`}" aria-hidden="true">${r?gy(r):Ny(`/api/avatar/${i}`)}</span>`:k`<span class="app-user-avatar" aria-hidden="true">${n[0]}</span>`}<span class="app-user-name">${n}</span></span>`}function Iy(e){let t=typeof e==`string`?My(e):null;if(t)return Vv[t].name;let n=jy(e);return n?n.name??n.login:e}function Ly(e,t=e){let n=typeof e==`string`?My(e):null;if(n)return Fy(n,`@${e} on GitHub`);let r=jy(e);return r?k`<span class="app-user" data-tooltip="${`@${e} on GitHub`}"><span class="app-user-avatar" aria-hidden="true">${(r.name??r.login)[0].toUpperCase()}${Py(r)}</span><span class="app-user-name">${r.name??r.login}</span></span>`:t}function Ry(e){let t=new Map;for(let n of e){let e=My(n),r=e?`agent:${e}`:jy(n)?.id??`login:${n.toLowerCase()}`;t.has(r)||t.set(r,n)}return[...t.values()]}function zy(e,t=null){return typeof e==`string`?My(e):Gv(null,null,t)}function By(e,t=null,n=t??e??``){if(typeof e==`string`)return Ly(e,n);let r=zy(null,t);return r?Fy(r,t):n}function Vy(e,t=null){if(typeof e==`string`)return Iy(e);let n=zy(null,t);return n?Vv[n].name:t}var Hy=/^(?:app|user)-[1-9]\d{0,11}$/u,Uy=3,Wy=e=>typeof e==`string`&&Object.hasOwn(Vv,e)?e:null,Gy=e=>e.length>1?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:e[0]??``;function Ky({login:e=null,name:t=null,agent:n=null,avatar:r=null}){let i=Wy(n)??zy(e,t);if(i){let{name:e,mark:t,avatar:n}=Vv[i];return k`<span class="${`commit-avatar is-${i}`}">${t?gy(t):n?Ny(`/api/avatar/${n}`):e[0]}</span>`}if(typeof r==`string`&&Hy.test(r))return k`<span class="commit-avatar">${Ny(`/api/avatar/${r}`)}</span>`;let a=jy(e),o=(a?.name??a?.login??t??e??``).trim()[0]?.toUpperCase()??`?`;return k`<span class="commit-avatar">${o}${a?Py(a):j}</span>`}function qy(e,t,n=null){return Wy(n)&&t?t:typeof e==`string`&&(jy(e)||My(e))?Iy(e):t??Vy(e,t)??e??``}function Jy(e,t=null,n=[]){let r=(Array.isArray(n)?n:[]).filter(e=>typeof e?.name==`string`||typeof e?.login==`string`).slice(0,Uy);if(r.length===0)return By(e,t);let i=qy(e,t),a=r.map(e=>qy(e.login??null,e.name??null,e.agent));return k`<span class="app-user commit-authors" data-tooltip="${Gy([i,...a])}"><span class="commit-avatars" aria-hidden="true">${[{login:e,name:t},...r].map(Ky)}</span><span class="app-user-name">${i}</span><span class="sr-only"> with ${Gy(a)}</span></span>`}var Yy=null,Xy=null;function Zy(){return Xy?.getPreviewRole()??null}function Qy(){Xy?.setPreviewRole(null)}function $y(){Sy(),eb=null,Xy?.resetManagedAppState()}var eb=null;function tb(e){let t=e?`${e.id}\0${e.role}`:null;t!==eb&&(Sy(),eb=t),Xy?.setManagedAppSession(e)}function nb(e){return Xy?.setManagedReportCatalog(e)??new Set}function rb(e,t=P.currentManagedTeam){return Xy?.readReportSources(e,t)}function ib(){Xy?.clearReportSources(),Xy?.clearFindingHistory()}async function ab(e,t=P.currentManagedTeam){return(await W()).fetchReportSources(e,t)}function W(){return Yy||(Yy=(async()=>{try{return Xy=await import(`./client-managed.js`),Xy}catch(e){throw Yy=null,e}})(),Yy)}async function ob(e){return(await W()).probeSession(e)}async function sb(e){return(await W()).probeTeams(e)}async function cb(e){return(await W()).fetchManagedBundleCatalog(e)}async function lb(e,t,n){return(await W()).fetchNpmPackage(e,t,n)}async function ub(e,t,n,r){return(await W()).fetchRepositoryCode(e,t,n,r)}async function db(e){return(await W()).fetchBrowsableRepositories(e)}async function fb(e,t){return(await W()).fetchRepositoryRefs(e,t)}async function pb(e,t,n,r){return(await W()).fetchRepositoryContents(e,t,n,r)}function mb(e,t,n,r){return Cy(async()=>(await W()).fetchRepositoryHistory(e,t,n,r))}async function hb(e,t,n,r){return(await W()).fetchRepositoryChanges(e,t,n,r)}async function gb(e,t,n,r){return(await W()).fetchRepositoryTree(e,t,n,r)}function _b(e,t){return Cy(async()=>(await W()).fetchRepositoryAgents(e,t))}function vb(e,t,n){return Cy(async()=>(await W()).fetchRepositoryIssues(e,t,n))}function yb(e,t,n){return Cy(async()=>(await W()).fetchRepositoryItem(e,t,n))}async function bb(e,t,n){return(await W()).fetchPullDependencies(e,t,n)}async function xb(e,t){return(await W()).fetchBranchDependencies(e,t)}async function Sb(e,t,n,r){return(await W()).fetchNpmDelta(e,t,n,r)}function Cb(e,t,n){return Cy(async()=>(await W()).fetchRepositoryPulse(e,t,n))}function wb(e,t,n,r){return Cy(async()=>(await W()).fetchRepositoryPulseItems(e,t,n,r))}async function Tb(e,t){return(await W()).fetchNpmVersions(e,t)}async function Eb(e,t){return(await W()).fetchNpmStats(e,t)}async function Db(e,t){return(await W()).fetchNpmAdvisories(e,t)}async function Ob(e,t,n){return(await W()).fetchNpmTags(e,t,n)}async function kb(e,t,n,r){return(await W()).fetchNpmRisk(e,t,n,r)}async function Ab(e,t,n){return(await W()).fetchNpmSocket(e,t,n)}async function jb(e,t,n){return(await W()).fetchNpmProvenance(e,t,n)}async function Mb(e,t,n,r){return(await W()).fetchPrettyBundleFile(e,t,n,r)}async function Nb(e,t,n,r){return(await W()).fetchPrettyNpmFiles(e,t,n,r)}async function Pb(e,t,n,r,i){return(await W()).fetchPrettyNpmFile(e,t,n,r,i)}async function Fb(e,t,n,r){return(await W()).fetchPrettyBundleChanges(e,t,n,r)}async function Ib(e,t,n,r,i){return(await W()).fetchPrettyNpmChanges(e,t,n,r,i)}async function Lb(e,t,n,r){return(await W()).fetchBundleRenameDiff(e,t,n,r)}async function Rb(e,t,n,r,i){return(await W()).fetchNpmRenameDiff(e,t,n,r,i)}async function zb(e,t,n,r){return(await W()).fetchBundleRenameDiffs(e,t,n,r)}async function Bb(e,t,n,r,i){return(await W()).fetchNpmRenameDiffs(e,t,n,r,i)}async function Vb(e,t,n,r){return(await W()).fetchBundleTypeOnly(e,t,n,r)}async function Hb(e,t,n,r,i){return(await W()).fetchNpmTypeOnly(e,t,n,r,i)}async function Ub(e,t,n){return(await W()).fetchBundleComparison(e,t,n)}async function Wb(e,t,n,r){return(await W()).fetchNpmComparison(e,t,n,r)}async function Gb(e){return(await W()).openManagedShareDialog(e,``,P.managedSession)}async function Kb({render:e,...t}){let n=()=>P.managedSession?.id===t.session.id&&P.managedSession?.csrfToken===t.session.csrfToken&&P.currentManagedTeam===t.teamId,r=await W();return n()?r.openManagedIssueDialog({...t,isCurrent:n,onCreated:r=>{if(!n())return;let i=t.context.findingId,a=P.managedIssues.get(i),o=Jh([i],{[i]:{url:r,autoFix:a?.url===r?a.autoFix:null}});zv(t.teamId),o&&e()}}):null}async function qb(e){if(!Mv(e))return null;let t=P.reports,n=P.managedSession,r=P.currentManagedTeam,i=()=>Mv(e)&&P.managedSession===n&&P.currentManagedTeam===r&&P.reports===t,a=await W();return i()?a.openFindingHistoryDialog({finding:e,teamId:r,isCurrent:i}):null}async function Jb(e,t){return(await W()).fetchTeamAnnotations(e,t)}async function Yb(e,t=P.currentManagedTeam,n){return(await W()).fetchReportTriage(e,t,n)}async function Xb(e,t,n){return(await W()).fetchFixes(e,t,n)}async function Zb(e,t=P.currentManagedTeam,n){return(await W()).fetchReportComments(e,t,n)}async function Qb(e,t,n,r=P.currentManagedTeam){return(await W()).saveReportComment(e,t,n,r)}async function $b(e,t,n,r,i=P.currentManagedTeam){return(await W()).deleteReportComment(e,t,n,r,i)}async function ex(e,t,n,r=P.currentManagedTeam){return(await W()).pushReportTriage(e,t,n,r)}async function tx(e){return e&&U?.rememberFinding(),(await W()).login(e)}async function nx(e){return(await W()).logout(e)}async function rx(e){return(await W()).stopViewing(e)}async function ix(e){return(await W()).fetchProfile(e)}async function ax(e,t,n){return(await W()).chooseProfileAccounts(e,t,n)}async function ox(e,t,n){return(await W()).unlinkGithubAccount(e,t,n)}async function sx(e,t){return(await W()).fetchBundleMetadata(e,t)}async function cx(e,t){return(await W()).fetchBundleContents(e,t)}async function lx(e,t){return(await W()).fetchTeamReports(e,t)}async function ux(e,t){return(await W()).watchTeamFeed(e,t)}async function dx(e,t=P.currentManagedTeam,n=``,r=!1,i=!1){return(await W()).fetchBundleAdvisories(e,t,n,r,i)}async function fx(...e){return(await W()).dependencyReviews(...e)}async function px(...e){return(await W()).myDependencyReviews(...e)}async function mx(...e){return(await W()).teamDependencyReviews(...e)}async function hx(...e){return(await W()).discardDependencyReview(...e)}async function gx(...e){return(await W()).latestDependencyReview(...e)}var _x=null,vx=null,yx=0;function bx(){return _x||(_x=document.createElement(`div`),_x.id=`app-toast`,_x.setAttribute(`role`,`status`),_x.setAttribute(`aria-live`,`polite`),document.body.append(_x),_x)}function xx(e,{kind:t=`info`,duration:n=5200}={}){let r=bx(),i=++yx;clearTimeout(vx),vx=null,r.className=t,r.textContent=e,requestAnimationFrame(()=>{yx===i&&r.classList.add(`visible`)});let a=()=>{yx===i&&Sx()};return n>0&&(vx=setTimeout(a,n)),a}function Sx(){yx++,_x&&(clearTimeout(vx),vx=null,_x.classList.remove(`visible`))}function Cx(e,t){let n=e.find(e=>e.integrity===t);return e.filter(e=>e.integrity!==t&&(n?.managedId?e.managedId&&n.repoId!=null&&e.repoId===n.repoId:!e.managedId))}function wx(e){return{managedId:e.id,slug:e.slug,integrity:e.integrity,kind:e.kind,summary:e.summary,commitInfo:e.commitInfo??null,name:e.filename,size:e.byteSize,repoId:e.repoId,repoFullName:e.repoFullName,repoDirectory:e.repoDirectory??``}}function Tx(e){return e.currentView===`bundles`?e.bundleDetails?e.bundleDetails.managedId??null:e.bundles?.find(t=>t.integrity===e.selectedBundle)?.managedId??null:null}function Ex(e,t,n,r=`overview`,i=null,a=[t]){if(!t?.managedId)return null;let o=e.find(e=>e.id===n&&e.bundles?.some(e=>e.id===t.managedId));if(n!=null&&!o)return null;let s=[t,...a.filter(e=>e.managedId&&e.managedId===i?.compareId)];return fi({view:`bundles`,teamId:o?.id??null,bundleId:t.managedId,bundleTab:r,...i},e,s.map(e=>({id:e.managedId,slug:e.slug})))}function Dx(e,t=e.bundleDetailsTab){if(t!==`code`)return null;let n=e.bundleCodeFileRequest;if(n?.bundle===e.selectedBundle){if(n.file==null)return null;let{bundle:e,...t}=n;return t}if(!e.bundleSourceFile||e.bundleDetails?.integrity!==e.selectedBundle)return null;let r=zt(Lt(e.bundleDetails)).numbers.get(e.bundleSourceFile);if(r==null)return null;let i=e.bundleSourceTargetLine;return i?.bundle!==e.selectedBundle||i.path!==e.bundleSourceFile?{file:r}:{file:r,line:i.line,...i.end>i.line?{endLine:i.end}:{}}}function Ox(e,t=e.bundleDetailsTab){let n=e.bundleCompare;if(t!==`compare`||!n?.target||n.bundle!==e.selectedBundle)return null;let r=e.bundles?.find(t=>t.integrity===e.selectedBundle);if(r?.npm)return{compareSpec:n.target,...ri(n.mode)};if(r?.repository)return/^[a-f\d]{40}$/u.test(n.target)?{compareCommit:n.target,...ri(n.mode)}:null;let i=Cx(e.bundles??[],e.selectedBundle).find(e=>e.integrity===n.target);return i?.managedId?{compareId:i.managedId,...ri(n.mode)}:null}function kx(e,t=e.bundleDetailsTab){let n=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm,r=e.npmReview?.bundle===e.selectedBundle?e.npmReview:null,i=e.bundleCompare?.bundle===e.selectedBundle?e.bundleCompare:null;if(n&&t===`review`&&e.bundleDetailsTab===`compare`&&i?.target&&!(r?.started&&r.user===e.managedSession?.id))return{reviewPackage:n.name,reviewSpec:i.target};if(n&&t===`compare`&&e.bundleDetailsTab===`review`&&r?.reviewPackage===n.name)return{compareSpec:r.reviewSpec,...ri(i?.mode??`code`)};if(t===`review`&&r){let{bundle:e,started:t,user:n,resume:i,...a}=r;return a}return Dx(e,t)??Ox(e,t)}function Ax(e,t,n=()=>null){let r=e.bundles?.find(t=>t.integrity===e.selectedBundle)?.npm;if(!r||t===e.bundleDetailsTab)return;let i=kx(e,t);if(t===`review`&&(e.npmReview={...e.npmReview?.bundle===e.selectedBundle&&e.npmReview.started&&e.npmReview.user===e.managedSession?.id?e.npmReview:{bundle:e.selectedBundle,...i},resume:!0}),t!==`compare`)return;let a=e.npmReview?.bundle===e.selectedBundle&&e.npmReview.reviewPackage===r.name?e.npmReview:null,o=i?.compareSpec??a?.reviewSpec??n(r);o&&(e.bundleDetailsTab===`review`||!i?.compareSpec)&&(e.bundleCompare={bundle:e.selectedBundle,target:o,mode:i?.compareMode??`overview`})}function jx(e){return[...new Map(e.flatMap(e=>e.bundles??[]).map(e=>[e.id,wx(e)])).values()]}function Mx(e,t,n){if(e.currentView!==`findings`&&e.currentView!==`files`&&e.currentView!==`links`||!e.currentManagedTeam)return!1;let r=t.find(t=>t.id===e.currentManagedTeam);if(n.has(`team:${e.currentManagedTeam}`)||!r||e.managedReports.some(e=>n.has(e.id)))return!0;let i=new Set(r.reports.filter(t=>e.currentManagedReport!==null||t.visible!==!1).map(e=>e.id));if(e.currentManagedReport!==null)return!i.has(e.currentManagedReport);let a=new Set(e.managedReports.map(e=>e.id));return i.size!==a.size||[...i].some(e=>!a.has(e))}async function Nx(e,t,{fetchCatalog:n,isCurrent:r,render:i,replaceRoute:a}){let o=Tx(e);if(!o||!r())return!0;let s=[`admin`,`manage`].includes(e.managedSession?.role),c,l=null;if(e.currentManagedTeam!=null||!s){let n=e=>e.bundles?.some(e=>e.id===o);l=t.find(t=>t.id===e.currentManagedTeam&&n(t))??t.find(n)}if(l)c=jx(t);else if(s)try{c=(await n()).map(wx)}catch(e){if(e.status!==401&&e.status!==403)throw e;c=[]}else c=[];if(!r())return!0;let u=c.find(e=>e.managedId===o);return u?(e.bundles=c,e.currentManagedTeam=l?.id??null,i(),a(Ex(t,u,e.currentManagedTeam,e.bundleDetailsTab,kx(e),c)),!0):!1}var Px={...tt,[y]:ta},Fx=new Set(Object.keys(Oi)),Ix={...Oi,default:`DeepView`};function Lx(e){let t=e._source??e.source;return t!=="default"&&Object.hasOwn(rt,t)?t:null}function Rx(e){return zx(e,Nu(e))}function zx(e,t){if(t===y)return y;if(t!==void 0)return Fx.has(t)?t:`default`;let n=e.toLowerCase();return n.endsWith(`.generic-md`)?`markdown-generic`:n.endsWith(`.codex`)?`codex-security`:n.endsWith(`.md`)?`claude-security`:`default`}function Bx(e){return Nu(e)===y}var Vx=`.conflict-sev{display:inline-block;padding:1px .4rem;border-radius:3px;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff;flex-shrink:0;&.sev-critical{background:var(--critical)}&.sev-high{background:var(--high)}&.sev-medium,&.sev-moderate{background:var(--medium)}&.sev-low{background:var(--low)}&.sev-high_bug{background:var(--high-bug)}&.sev-bug{background:var(--bug)}&.sev-informational,&.sev-info{background:var(--info)}&.sev-unrated{background:var(--low);color:var(--badge-low-text)}}
34
+ `,Hx=`dialog{max-width:720px;width:min(94vw,720px)}header h3{margin:0 0 .25rem}header p{margin:0 0 .75rem;color:var(--muted);font-size:.82rem}.bulk{display:flex;gap:.4rem;margin-bottom:.7rem;padding-bottom:.7rem;border-bottom:1px solid var(--border)}.bulk button,.actions button{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:var(--ui-radius, 5px);padding:.3rem .8rem;font:inherit;font-size:.78rem;&:hover{border-color:var(--accent);color:var(--accent)}&.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}&.primary:hover{filter:brightness(1.08)}}.list{list-style:none;margin:0;padding:0;max-height:60vh;overflow-y:auto;overscroll-behavior:none;-webkit-app-region:no-drag;app-region:no-drag;display:flex;flex-direction:column;gap:.5rem}.card{border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.55rem .7rem .6rem;background:rgb(from var(--text) r g b / .02)}.card-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.35rem}.loc{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;color:var(--muted);padding:1px .3rem;background:rgb(from var(--text) r g b / .05);border-radius:var(--ui-radius, 3px)}.desc{font-size:.78rem;color:var(--muted);margin-bottom:.55rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rows{display:flex;flex-direction:column;gap:.35rem}.row{display:grid;grid-template-columns:5rem 1fr 1fr;align-items:stretch;gap:.4rem}.row-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;align-self:center}.choice{position:relative;display:flex;flex-direction:column;gap:.15rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);min-width:0;&:has(input:checked){border-color:var(--accent);background:rgb(from var(--accent) r g b / .07)}&:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}}.choice input[type=radio]{position:absolute;opacity:0;pointer-events:none}.choice-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.choice:has(input:checked) .choice-label{color:var(--accent)}.choice-value{font-size:.82rem;min-width:0}.flag-badge{font-size:.82rem;color:var(--muted)}.flag-badge.on{color:var(--accent);font-weight:600}.color{display:inline-flex;align-items:center;gap:.35rem}.color-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .2);flex-shrink:0;&.marker-red{background:var(--marker-red)}&.marker-blue{background:var(--marker-blue)}&.marker-green{background:var(--marker-green)}&.marker-gray{background:var(--marker-gray)}}.color-name{text-transform:capitalize}.comment-text,.fix-text{cursor:text;user-select:text;-webkit-user-select:text}.comment-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;& em{color:var(--muted);font-style:italic}}.fix-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}}.actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border)}
35
+ `;function Ux({tabs:e,current:t,prefix:n,select:r,disabled:i=!1}){return k`<div class="dlg-tabs" role="tablist" @keydown="${i=>{if(i.key!==`ArrowLeft`&&i.key!==`ArrowRight`)return;i.preventDefault();let a=e[(e.findIndex(e=>e.id===t)+(i.key===`ArrowRight`?1:-1)+e.length)%e.length];if(!a||a.id===t)return;let o=i.currentTarget;r(a.id),requestAnimationFrame(()=>o.querySelector(`#${n}-tab-${a.id}`)?.focus())}}">${e.map(e=>k`<button type="button" role="tab" class="dlg-tab" id="${`${n}-tab-${e.id}`}" aria-controls="${`${n}-panel-${e.id}`}" aria-selected="${String(t===e.id)}" tabindex="${t===e.id?0:-1}" ?disabled="${i&&t!==e.id}" @click="${()=>r(e.id)}">${e.icon??j}${e.label}</button>`)}</div>`}function Wx(e){if(!e)return j;let t=e.replaceAll(`_`,` `);return k`<span class="${`conflict-sev sev-${e}`}">${t}</span>`}function Gx(e){return`bundle-${e.slice(7,19)}\u2026`}function Kx(e){return e.kind===`bundle`?e.label??Gx(e.identifier):e.identifier}function qx(e){return e.kind===`bundle`?`bundle`:Bx(e.identifier)?`links file`:`report`}function Jx(e){let t=e.length,n=t===1,r=new Set(e.map(qx)),i=`items`;if(r.size===1){let e=[...r][0];i=n?e:`${e}s`}return{count:t,singular:n,kindLabel:i}}function Yx(e){return k`<ul class="lwd-list">${e.map(e=>{let t=qx(e);return k`<li>${Kx(e)}${t===`report`?j:k`<span class="lwd-kind-tag">${t}</span>`}</li>`})}</ul>`}function Xx(e){return e.length===0?j:k`<ul class="lwd-list" role="alert">${e.map(e=>k`<li><strong>${e.label}</strong> — ${e.reason}</li>`)}</ul>`}function Zx(e){return e?k`<span class="color"><span class="${`color-dot marker-${e}`}"></span> <span class="color-name">${e}</span></span>`:k`<em>none</em>`}function Qx(e){return k`<span class="comment-text">${e||k`<em>empty</em>`}</span>`}function $x(e){return e?mi(e)?k`<span class="fix-text"><a href="${e}" target="_blank" rel="noopener noreferrer">${e}</a></span>`:k`<span class="fix-text">${e}</span>`:k`<span class="comment-text"><em>empty</em></span>`}function eS(e){return e?k`<span class="${`triage triage-${e}`}">${e}</span>`:k`<em>none</em>`}function tS(e){return e?k`<span class="${`flag-badge${e===`flagged`?` on`:``}`}">${e}</span>`:k`<em>none</em>`}function nS(e,t){return e===`color`?Zx(t):e===`comment`?Qx(t):e===`fix`?$x(t):e===`triage`?eS(t):e===`flagged`?tS(t):k`${String(t)}`}function rS(e,t){let n=e?.file?e.line?`${e.file}:${e.line}`:e.file:``;return k`<div class="card-head">${Wx(e?.severity)} ${n?k`<span class="loc" data-tooltip-truncated data-tooltip="${n}">${n}</span>`:j} <code class="id" data-tooltip="${t}">${t.slice(0,8)}…</code></div>${e?.description?k`<div class="desc" data-tooltip-truncated data-tooltip="${e.description}">${e.description}</div>`:j}`}var iS={title:`Triage conflicts`,intro:`disagree with your local triage on`,trailingNote:``,applyButton:`Apply`,importedSideLabel:`Apply imported`},aS={color:0,comment:1,fix:2,triage:3,flagged:4},oS={color:`Color`,comment:`Comment`,fix:`Fix`,triage:`Triage state`,flagged:`Flag`},sS=class extends xv{static styles=[...xv.styles,ma(Vx),ma(Hx)];static properties={conflicts:{attribute:!1},findingLookup:{attribute:!1},labels:{attribute:!1},_settled:{state:!0}};constructor(){super(),this.conflicts=[],this.findingLookup=new Map,this.labels={...iS},this._settled=!1}focusInitial(){}_blockEscClose=e=>e.preventDefault();_onClick=e=>{let t=e.target.closest(`[data-bulk]`);if(!t)return;let n=t.dataset.bulk;for(let e of this.renderRoot.querySelectorAll(`input[type="radio"][value="${n}"]`))e.checked=!0};_onSubmit=e=>{e.preventDefault();let t={};for(let e of this.conflicts){let n=`${e.id}:${e.property}`,r=this.renderRoot.querySelector(`input[name="conflict-${CSS.escape(n)}"]:checked`);r&&(t[n]=r.value)}this._finish(t)};render(){let e=this.labels,t=new Map;for(let e of this.conflicts)t.has(e.id)||t.set(e.id,[]),t.get(e.id).push(e);for(let e of t.values())e.sort((e,t)=>(aS[e.property]??99)-(aS[t.property]??99));let n=this.conflicts.filter(e=>e.property===`color`).length,r=this.conflicts.filter(e=>e.property===`comment`).length,i=this.conflicts.filter(e=>e.property===`fix`).length,a=this.conflicts.filter(e=>e.property===`triage`).length,o=this.conflicts.filter(e=>e.property===`flagged`).length,s=[n?`${n} color${n===1?``:`s`}`:``,r?`${r} comment${r===1?``:`s`}`:``,i?`${i} fix${i===1?``:`es`}`:``,a?`${a} triage state${a===1?``:`s`}`:``,o?`${o} flag${o===1?``:`s`}`:``].filter(Boolean).join(`, `),c=`${t.size} finding${t.size===1?``:`s`}`;return k`<dialog @click="${this._onClick}" @cancel="${this._blockEscClose}" @close="${this._onClose}"><header><h3>${e.title}</h3><p>${c} ${e.intro} ${s}.${e.trailingNote?` ${e.trailingNote}`:``}</p><div class="bulk"><button type="button" data-bulk="local">Keep all current</button> <button type="button" data-bulk="imported">${e.importedSideLabel} (all)</button></div></header><form @submit="${this._onSubmit}"><ul class="list">${[...t.entries()].map(([t,n])=>k`<li class="card" data-id="${t}">${rS(this.findingLookup.get(t),t)}<div class="rows">${n.map(t=>{let n=`${t.id}:${t.property}`,r=`conflict-${n}`;return k`<div class="row" data-key="${n}"><span class="row-label">${oS[t.property]??t.property}</span> <label class="choice"><input type="radio" name="${r}" value="local" required> <span class="choice-label">Keep current</span> <span class="choice-value">${nS(t.property,t.local)}</span></label> <label class="choice"><input type="radio" name="${r}" value="imported" required> <span class="choice-label">${e.importedSideLabel}</span> <span class="choice-value">${nS(t.property,t.imported)}</span></label></div>`})}</div></li>`)}</ul><footer class="actions"><button type="submit" class="primary">${e.applyButton}</button></footer></form></dialog>`}};customElements.define(`triage-conflict-dialog`,sS);function cS(e,t,n={}){return new Promise((r,i)=>{let a=document.createElement(`triage-conflict-dialog`);a.conflicts=e,a.findingLookup=t,a.labels={...iS,...n},a.addEventListener(`resolve`,e=>{a.remove(),r(e.detail)}),a.addEventListener(`modal-conflict`,e=>{a.remove(),i(Jm(e.detail?.cause))}),document.body.append(a)})}var lS=[`type`,`model`,`effort`,`exportsMode`],uS=[`security`,`correctness`],dS=[`max`,`xhigh`,`high`,`medium`,`low`,`minimal`],fS=[`list`,`isolate`];function pS(e,t){if(t==null)return e.length+1;let n=e.indexOf(t);return n===-1?e.length:n}var mS={type:e=>e===`terminal`?uS.length+2:pS(uS,e),model:e=>+(e==null),effort:e=>pS(dS,e),exportsMode:e=>pS(fS,e)};function hS(e,t,n){for(let r of n){let n=mS[r],i=n(e[r])-n(t[r]);if(i!==0)return i;let a=String(e[r]??``).localeCompare(String(t[r]??``));if(a!==0)return a}return 0}function gS(e,t,{typePrefix:n=!0}={}){return e===`type`?n?`analyzer: ${t??`null`}`:`${t??`null`}`:t??null}function _S(e,t){let n=t.filter(e=>e!==`exportsMode`),r=[],i=new Map;for(let t of e){if(t.exportsMode==null){r.push({...t});continue}let e=n.map(e=>t[e]??``).join(`|`),a=i.get(e);if(a){a.exportsMode=`${a.exportsMode}+${t.exportsMode}`;continue}let o={...t};i.set(e,o),r.push(o)}return r}function vS(e,t=lS){let n=new Map;for(let r of e){let e={};for(let n of t)e[n]=n===`model`?Ri(r.model)??null:r[n]??null;let i=t.map(t=>e[t]??``).join(`|`);n.has(i)||n.set(i,e)}let r=[...n.values()].toSorted((e,n)=>hS(e,n,t));if(r.length===0)return[];let i={};for(let e of t)i[e]=new Set(r.map(t=>t[e])).size===1;let a=t.filter(e=>!i[e]),o=a.includes(`exportsMode`)?_S(r,t):r,s=o.length>2&&a.includes(`type`)&&a.length>1,c=[`model`,`effort`].filter(e=>t.includes(e)&&i[e]),l=[...c,...t.filter(e=>!c.includes(e))],u=[],d=!1;for(let e of l)if(i[e]){let t=gS(e,o[0][e]);t!=null&&u.push(t)}else if(!d){for(let e of o){let t=a.map(t=>gS(t,e[t],{typePrefix:!s})).filter(e=>e!=null);t.length>0&&u.push(t.join(` · `))}d=!0}return u}function yS(e=!1,t=``){let n=new Set;return[`deepview`,...e?[`security`]:[],...t.split(`,`)].map(e=>e.trim()).filter(e=>{let t=e.toLowerCase();return!e||n.has(t)?!1:(n.add(t),!0)})}var bS=null;function xS(){return bS||(bS=(async()=>await import(`./prism.js`))(),bS)}var SS=1048576;function CS(e){return e.length<=SS&&fa(e)<=SS}var wS={__proto__:null,js:`javascript`,javascript:`javascript`,mjs:`javascript`,cjs:`javascript`,node:`javascript`,jsx:`jsx`,ts:`typescript`,typescript:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,json:`json`,css:`css`,html:`markup`,htm:`markup`,xml:`markup`,svg:`markup`,markup:`markup`,yaml:`yaml`,yml:`yaml`,sh:`bash`,bash:`bash`,shell:`bash`,zsh:`bash`,console:`bash`,md:`markdown`,markdown:`markdown`,sol:`solidity`,solidity:`solidity`,rs:`rust`,rust:`rust`,rb:`ruby`,ruby:`ruby`,py:`python`,python:`python`,py3:`python`,python3:`python`,php:`php`,phtml:`php`,java:`java`,cpp:`cpp`,"c++":`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,hxx:`cpp`,"h++":`cpp`,h:`cpp`,c:`c`,objc:`objectivec`,objectivec:`objectivec`,"objective-c":`objectivec`,m:`objectivec`,mm:`objectivec`};function TS(e){return typeof e==`string`?wS[e.toLowerCase()]??null:null}async function ES(e,t,n=null){if(!t||!CS(e))return null;try{return(await xS()).highlight(e,t,n)}catch{return null}}function DS(e){let t=[],n=[],r=``,i=0;for(;i<e.length;){let a=e.indexOf(`<`,i),o=(a===-1?e.slice(i):e.slice(i,a)).split(`
36
+ `);r+=o[0];for(let e=1;e<o.length;e++){for(let e=n.length-1;e>=0;e--)r+=n[e].close;t.push(r),r=n.map(e=>e.open).join(``)+o[e]}if(a===-1)break;let s=e.indexOf(`>`,a);if(s===-1){r+=e.slice(a);break}let c=e.slice(a,s+1);c.startsWith(`</`)?n.pop():n.push({open:c,close:`</${/^<([a-zA-Z][^\s/>]*)/u.exec(c)?.[1]??`span`}>`}),r+=c,i=s+1}return t.push(r),t}var OS=new Map,kS=new Set,AS=!1;function jS(){AS||(AS=!0,queueMicrotask(()=>{AS=!1,P.codeBlockTick++,Z()}))}function MS(e,t){let n=TS(t);if(!n||!e)return null;let r=`${n}\0${e}`;return OS.has(r)?OS.get(r):(kS.has(r)||(kS.add(r),(async()=>{let t=await ES(e,n);OS.set(r,t??null),kS.delete(r),jS()})()),null)}var NS=new WeakMap,PS=new WeakMap;function FS(e){let t=/^([a-z][a-z\d+.-]*:\/\/[^/]*)(.*)$/iu.exec(e),n=t?.[1]??``,r=t?.[2]??e,i=r.startsWith(`/`),a=[];for(let e of r.split(`/`))if(e&&e!==`.`){if(e===`..`&&a.length>0&&a.at(-1)!==`..`)a.pop();else{if(e===`..`&&i&&a.length===0)return null;a.push(e)}}return n+(i?`/`:``)+a.join(`/`)}function IS(e){let t=new Map;for(let n of e.keys()){let e=FS(n);e!==null&&t.set(e,t.has(e)?null:n)}return t}function LS(e,t,n,r){let i=FS(n);if(i===null)return null;let a=typeof r==`string`?FS(`${r}/package.json`):null,o=i.slice(0,i.lastIndexOf(`/`)+1),s=PS.get(e);for(s||(s=new Map,PS.set(e,s));;){if(o.endsWith(`node_modules/`))return null;let n=`${o}package.json`;if(t.has(n)){if(!s.has(n)){let r=e.get(t.get(n)),i=null;try{i=typeof r==`string`?JSON.parse(r.replace(/^\uFEFF/u,``))?.imports??null:null}catch{}s.set(n,i&&typeof i==`object`&&!Array.isArray(i)?i:null)}return{directory:o,imports:s.get(n)}}if(n===a||!o||o===`/`||o.endsWith(`../`)||/^[a-z][a-z\d+.-]*:\/\/[^/]*\/?$/iu.test(o))return null;let r=o.slice(0,-1);o=r.slice(0,r.lastIndexOf(`/`)+1)}}function RS(e,t){if(!e)return null;if(Object.hasOwn(e,t)&&!t.includes(`*`))return{value:e[t],wildcard:null};let n=null;for(let r of Object.keys(e)){let e=r.indexOf(`*`);if(!r.startsWith(`#`)||e===-1||r.indexOf(`*`,e+1)!==-1)continue;let i=r.slice(0,e),a=r.slice(e+1);t.length<=i.length+a.length||!t.startsWith(i)||!t.endsWith(a)||(!n||e>n.star||e===n.star&&r.length>n.pattern.length)&&(n={pattern:r,star:e,suffix:a})}return n?{value:e[n.pattern],wildcard:t.slice(n.star,t.length-n.suffix.length)}:null}function zS(e,t,n=0){return n>16?[null]:typeof e==`string`?[t===null?e:e.replaceAll(`*`,t)]:e&&typeof e==`object`?Object.values(e).flatMap(e=>zS(e,t,n+1)):[null]}function BS(e,t,n,r,i,a){if(typeof e!=`string`||/[\\\p{Cc}]/u.test(e)||/%2f|%5c/iu.test(e))return null;let o=e.startsWith(`./`),s=null;if(o){let n;try{n=decodeURIComponent(e.slice(2))}catch{return null}if(/[\\\p{Cc}]/u.test(n)||n.split(`/`).some(e=>[`.`,`..`,`node_modules`].includes(e.toLowerCase())))return null;s=FS(t.directory+n)}else if(e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`#`)||e.includes(`:`))return null;let c=new Set([e]);if(o)for(let e of i?.keys()??[])(e.startsWith(`./`)||e.startsWith(`../`))&&FS(a+e)===s&&c.add(e);let l=!1,u=null;for(let e of c){if(!i?.has(e))continue;let t=i.get(e);if(typeof t!=`string`||!n.has(t)||l&&t!==u)return null;l=!0,u=t}return l?u:o?r.get(s)??null:null}function VS(e,t,n,r,i,a){let o=RS(e?.imports,t);if(!o)return null;let s=zS(o.value,o.wildcard),c=null;for(let t of s){let o=BS(t,e,n,r,i,a);if(!o||c&&o!==c)return null;c=o}return c}function HS(e,t=Lt(e)){let n=new Map;if(e?.kind===`stasis`)for(let r of e.bundle?.imports?.values()??[])for(let[e,i]of r){if(!t.has(e))continue;n.has(e)||n.set(e,new Map);let r=n.get(e);for(let[e,n]of i){let i=typeof n==`string`&&t.has(n)?n:null;r.set(e,r.has(e)&&r.get(e)!==i?null:i)}}else if(e?.kind===`sourcemap`)for(let[r,i]of It(e))t.has(r)&&n.set(r,new Map([...i].map(([e,n])=>[e,t.has(n)?n:null])));return n}function US(e,t,n=null,r=e,i=null){let a=NS.get(e);a||(a=IS(e),NS.set(e,a));let o=NS.get(r);o||(o=IS(r),NS.set(r,o));let s=n?.get(t),c=t.slice(0,t.lastIndexOf(`/`)+1),l=n?LS(r,o,t,i?.get(t)):null;return t=>{if(typeof t!=`string`||/\p{Cc}/u.test(t))return null;if(s?.has(t)){let n=s.get(t);return typeof n==`string`&&e.has(n)?n:null}if(t.startsWith(`#`))return VS(l,t,e,a,s,c);if(!t.startsWith(`./`)&&!t.startsWith(`../`))return null;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<=0||r===n.length-1?null:a.get(FS(c+t))??null}}var WS=new WeakMap;function GS(e,t){let n=Lt(e),r=WS.get(n);return r||(r={imports:HS(e,n),packageDirs:Gt(e)},WS.set(n,r)),US(n,t,r.imports,Vt(e),r.packageDirs)}var KS=/[\u0000-\u0008\u000B-\u001F\u007F-\u009F\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u2800\u3000\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Default_Ignorable_Code_Point}]/u,qS=new RegExp(KS.source,`gu`),JS=new Map(`0000 NUL NULL
37
+ 0001 SOH START OF HEADING
38
+ 0002 STX START OF TEXT
39
+ 0003 ETX END OF TEXT
40
+ 0004 EOT END OF TRANSMISSION
41
+ 0005 ENQ ENQUIRY
42
+ 0006 ACK ACKNOWLEDGE
43
+ 0007 BEL BELL
44
+ 0008 BS BACKSPACE
45
+ 000B VT LINE TABULATION
46
+ 000C FF FORM FEED
47
+ 000D CR CARRIAGE RETURN
48
+ 000E SO SHIFT OUT
49
+ 000F SI SHIFT IN
50
+ 0010 DLE DATA LINK ESCAPE
51
+ 0011 DC1 DEVICE CONTROL ONE
52
+ 0012 DC2 DEVICE CONTROL TWO
53
+ 0013 DC3 DEVICE CONTROL THREE
54
+ 0014 DC4 DEVICE CONTROL FOUR
55
+ 0015 NAK NEGATIVE ACKNOWLEDGE
56
+ 0016 SYN SYNCHRONOUS IDLE
57
+ 0017 ETB END OF TRANSMISSION BLOCK
58
+ 0018 CAN CANCEL
59
+ 0019 EM END OF MEDIUM
60
+ 001A SUB SUBSTITUTE
61
+ 001B ESC ESCAPE
62
+ 001C FS FILE SEPARATOR
63
+ 001D GS GROUP SEPARATOR
64
+ 001E RS RECORD SEPARATOR
65
+ 001F US UNIT SEPARATOR
66
+ 007F DEL DELETE
67
+ 0080 PAD PADDING CHARACTER
68
+ 0081 HOP HIGH OCTET PRESET
69
+ 0082 BPH BREAK PERMITTED HERE
70
+ 0083 NBH NO BREAK HERE
71
+ 0084 IND INDEX
72
+ 0085 NEL NEXT LINE
73
+ 0086 SSA START OF SELECTED AREA
74
+ 0087 ESA END OF SELECTED AREA
75
+ 0088 HTS CHARACTER TABULATION SET
76
+ 0089 HTJ CHARACTER TABULATION WITH JUSTIFICATION
77
+ 008A VTS LINE TABULATION SET
78
+ 008B PLD PARTIAL LINE FORWARD
79
+ 008C PLU PARTIAL LINE BACKWARD
80
+ 008D RI REVERSE LINE FEED
81
+ 008E SS2 SINGLE SHIFT TWO
82
+ 008F SS3 SINGLE SHIFT THREE
83
+ 0090 DCS DEVICE CONTROL STRING
84
+ 0091 PU1 PRIVATE USE ONE
85
+ 0092 PU2 PRIVATE USE TWO
86
+ 0093 STS SET TRANSMIT STATE
87
+ 0094 CCH CANCEL CHARACTER
88
+ 0095 MW MESSAGE WAITING
89
+ 0096 SPA START OF GUARDED AREA
90
+ 0097 EPA END OF GUARDED AREA
91
+ 0098 SOS START OF STRING
92
+ 0099 SGC SINGLE GRAPHIC CHARACTER INTRODUCER
93
+ 009A SCI SINGLE CHARACTER INTRODUCER
94
+ 009B CSI CONTROL SEQUENCE INTRODUCER
95
+ 009C ST STRING TERMINATOR
96
+ 009D OSC OPERATING SYSTEM COMMAND
97
+ 009E PM PRIVACY MESSAGE
98
+ 009F APC APPLICATION PROGRAM COMMAND
99
+ 00A0 NBSP NO-BREAK SPACE
100
+ 00AD SHY SOFT HYPHEN
101
+ 034F CGJ COMBINING GRAPHEME JOINER
102
+ 061C ALM ARABIC LETTER MARK
103
+ 115F HCF HANGUL CHOSEONG FILLER
104
+ 1160 HJF HANGUL JUNGSEONG FILLER
105
+ 1680 OSM OGHAM SPACE MARK
106
+ 17B4 KIVAQ KHMER VOWEL INHERENT AQ
107
+ 17B5 KIVAA KHMER VOWEL INHERENT AA
108
+ 180E MVS MONGOLIAN VOWEL SEPARATOR
109
+ 2000 NQSP EN QUAD
110
+ 2001 MQSP EM QUAD
111
+ 2002 ENSP EN SPACE
112
+ 2003 EMSP EM SPACE
113
+ 2004 3/MSP THREE-PER-EM SPACE
114
+ 2005 4/MSP FOUR-PER-EM SPACE
115
+ 2006 6/MSP SIX-PER-EM SPACE
116
+ 2007 FSP FIGURE SPACE
117
+ 2008 PSP PUNCTUATION SPACE
118
+ 2009 THSP THIN SPACE
119
+ 200A HSP HAIR SPACE
120
+ 200B ZWSP ZERO WIDTH SPACE
121
+ 200C ZWNJ ZERO WIDTH NON-JOINER
122
+ 200D ZWJ ZERO WIDTH JOINER
123
+ 200E LRM LEFT-TO-RIGHT MARK
124
+ 200F RLM RIGHT-TO-LEFT MARK
125
+ 2028 LS LINE SEPARATOR
126
+ 2029 PS PARAGRAPH SEPARATOR
127
+ 202A LRE LEFT-TO-RIGHT EMBEDDING
128
+ 202B RLE RIGHT-TO-LEFT EMBEDDING
129
+ 202C PDF POP DIRECTIONAL FORMATTING
130
+ 202D LRO LEFT-TO-RIGHT OVERRIDE
131
+ 202E RLO RIGHT-TO-LEFT OVERRIDE
132
+ 202F NNBSP NARROW NO-BREAK SPACE
133
+ 205F MMSP MEDIUM MATHEMATICAL SPACE
134
+ 2060 WJ WORD JOINER
135
+ 2061 FA FUNCTION APPLICATION
136
+ 2062 IT INVISIBLE TIMES
137
+ 2063 IS INVISIBLE SEPARATOR
138
+ 2064 IP INVISIBLE PLUS
139
+ 2066 LRI LEFT-TO-RIGHT ISOLATE
140
+ 2067 RLI RIGHT-TO-LEFT ISOLATE
141
+ 2068 FSI FIRST STRONG ISOLATE
142
+ 2069 PDI POP DIRECTIONAL ISOLATE
143
+ 2800 BLANK BRAILLE PATTERN BLANK
144
+ 3000 IDSP IDEOGRAPHIC SPACE
145
+ 3164 HF HANGUL FILLER
146
+ FEFF BOM ZERO WIDTH NO-BREAK SPACE
147
+ FFA0 HWHF HALFWIDTH HANGUL FILLER
148
+ E0001 LANG LANGUAGE TAG
149
+ E0020 SP TAG SPACE
150
+ E007F CANCEL CANCEL TAG`.split(`
151
+ `).map(e=>{let[,t,n,r]=/^(\S+) (\S+) (.+)$/u.exec(e);return[Number.parseInt(t,16),{label:n,name:r}]})),YS=e=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)}`;function XS(e){let t=JS.get(e);if(t)return{label:t.label,title:`${YS(e)} ${t.name}`};if(e>917536&&e<917631){let t=String.fromCodePoint(e-917504);return{label:t,title:`${YS(e)} TAG ${t}`}}let n=e>=65024&&e<=65039?e-65024+1:e>=917760&&e<=917999?e-917760+17:0;return n?{label:`VS${n}`,title:`${YS(e)} VARIATION SELECTOR-${n}`}:{label:YS(e),title:`${YS(e)} ${eC(e)}`}}var ZS=/\p{Cf}/u,QS=/\p{Default_Ignorable_Code_Point}/u,$S=/\p{Cn}/u;function eC(e){if(e>=55296&&e<57344)return`lone surrogate`;if((e&65534)==65534||e>=64976&&e<=65007)return`noncharacter`;if(e>=57344&&e<=63743||e>=983040)return`private use character`;let t=String.fromCodePoint(e);return ZS.test(t)?`format character`:QS.test(t)&&!$S.test(t)?`invisible character`:`unassigned code point`}function tC(e,t){let n=[];qS.lastIndex=0;for(let r=qS.exec(e);r;r=qS.exec(e)){let i=r[0].codePointAt(0),a=Ot(e,r.index,i,t);a===-1?n.push([r.index,i]):qS.lastIndex=a}return n}function nC(e){return KS.test(e)}var rC=e=>{let{label:t,title:n}=XS(e);return k`<span class="code-control" data-tooltip="${n}">${t}</span>`};function iC(e,t=!1){if(!nC(e))return[e];let n=[],r=0;for(let[i,a]of tC(e,t))i>r&&n.push(e.slice(r,i)),n.push(rC(a)),r=i+(a>65535?2:1);return r<e.length&&n.push(e.slice(r)),n}var aC=e=>e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`);function oC(e,t=!1){if(!nC(e))return e;let n=``,r=[];for(let t=0;t<e.length;){let i=e.indexOf(`<`,t),a=i===-1?e.length:i;if(a>t&&(r.push({text:n.length,markup:t}),n+=e.slice(t,a)),i===-1)break;let o=e.indexOf(`>`,i);t=o===-1?e.length:o+1}let i=``,a=0,o=0;for(let[s,c]of tC(n,t)){for(;r[o+1]?.text<=s;)o++;let t=r[o].markup+s-r[o].text,{label:n,title:l}=XS(c);i+=`${e.slice(a,t)}<span class="code-control" data-tooltip="${aC(l)}">${aC(n)}</span>`,a=t+(c>65535?2:1)}return i+e.slice(a)}function sC(e,t){return!!e&&!!t&&e.integrity===t.integrity&&e.file===t.file&&(e.range?.start??null)===(t.range?.start??null)&&(e.range?.end??null)===(t.range?.end??null)}var cC=[];function lC(e,t,n){if(!n)return null;if(!Array.isArray(e)||e.length===0||!sC(e[0],n))return{stack:cC,at:0,pos:n};let r=Math.min(Math.max(t,0),e.length-1);return{stack:e,at:r,pos:e[r]}}function uC({stack:e,at:t,base:n},r){if(sC(e.length>0?e[t]:n,r))return null;let i=e.length>0?e.slice(0,t+1):[n];return{stack:[...i,r],at:i.length}}function dC(e,t,n){return!Array.isArray(e)||e.length===0?0:Math.min(Math.max(t+n,0),e.length-1)}function fC(e,t){if(!e||!t||t.length===0)return;let n=e.getBoundingClientRect().top,r=t[0].getBoundingClientRect(),i=t.item(t.length-1).getBoundingClientRect(),a=r.top-n+e.scrollTop,o=a+(i.bottom-n+e.scrollTop-a)/2-e.clientHeight/2;e.scrollTo({top:Math.max(0,Math.min(o,a-r.height)),behavior:`instant`})}var pC=new Map,mC=new Map,hC=new Set,gC=new WeakMap,_C=new Set;function vC(e,t,n,r,i,a=mC,o=hC){let s=`${e}\0${t}`;if(a.has(s)||o.has(s))return;let c=Mt(t,r,n);if(!c){a.set(s,null);return}o.add(s),(async()=>{let e=await ES(n,c,i);a.set(s,typeof e==`string`?oC(e):null),o.delete(s),P.focusCodeTick++,queueMicrotask(Z)})()}async function yC(e){let t=pC.get(e);if(t&&(t.loading||t.sources))return;let n=(P.bundles??[]).find(t=>t.integrity===e);if(n){pC.set(e,{sources:null,loading:!0,error:null});try{let t=await GX(e,n),r=Lt(t);pC.set(e,{sources:r,packageFiles:Vt(t),packageDirs:Gt(t),imports:HS(t,r),formats:t.kind===`stasis`?t.bundle?.formats:null,loading:!1,error:t.error??null})}catch(t){pC.set(e,{sources:null,loading:!1,error:t.message})}P.focusCodeTick++,queueMicrotask(Z),queueMicrotask(bC)}}function bC(){let e=R.querySelectorAll(`.focus-code-line-active`);e.length!==0&&fC(e[0].closest(`.focus-code-body`),e)}function xC(e){if(F()){if(!e?._managedReportId||!Array.isArray(e._bundleHashes)||e._bundleHashes.length===0)return null;P.focusCodeTick;let t=rb(e._managedReportId);if(t?.data===null||t?.error)return null;let n={integrity:t?.data?.integrity??null,reportId:e._managedReportId},r=[e,...Array.isArray(e.evidence)?e.evidence:[]];for(let e of r){let t=SC(n,e?.file);if(t)return{...n,file:t,line:e.line}}return null}let t=e?._bundleHashes;return!e?.fileHash||!Array.isArray(t)||t.length===0?null:qf(e.fileHash).find(({integrity:e})=>t.includes(e))??null}function SC(e,t){if(typeof t!=`string`||!t)return null;if(!e.reportId)return Wf(e.integrity,t);let n=rb(e.reportId);if(!n||n.data===void 0&&!n.error)return t;let r=n.data;return r?.paths.get(t)??(r?.sources.has(t)?t:null)}function CC(e,t,n){if(!F())return null;let r=rb(e);if(!r||r.data===void 0&&!r.error)return n&&!_C.has(e)&&(_C.add(e),ab(e).catch(()=>{}).finally(()=>{_C.delete(e),P.focusCodeTick++,queueMicrotask(Z),queueMicrotask(bC)})),n?{loading:!0}:null;let i=r.data;if(!i)return null;t=i.paths.get(t)??t;let a=i.sources.get(t);if(typeof a!=`string`)return null;let o=gC.get(i);return o||(o={cache:new Map,pending:new Set},gC.set(i,o)),vC(i.integrity,t,a,i.formats?.get(t),US(i.sources,t,i.imports,i.sources,i.packageDirs),o.cache,o.pending),{content:a,highlighted:o.cache.get(`${i.integrity}\0${t}`)??null,loading:!1}}function wC(e,t,{kick:n=!0,reportId:r=null}={}){if(r)return CC(r,t,n);if(F())return null;let i=pC.get(e);if(!i)return n?(yC(e),{loading:!0}):null;if(i.loading&&!n)return null;if(i.loading)return{loading:!0};if(!i.sources)return null;let a=i.sources.get(t);if(typeof a!=`string`)return null;vC(e,t,a,i.formats?.get(t),US(i.sources,t,i.imports,i.packageFiles,i.packageDirs));let o=`${e}\0${t}`;return{content:a,highlighted:mC.has(o)?mC.get(o):void 0,loading:!1}}function TC(e){let t=xC(e);return t?.integrity?{integrity:t.integrity,file:t.file,range:Bn(t.reportId?t.line:e.line)}:null}function EC(e){return e?TC(Ag(e)):null}function DC(e){let t=EC(e);return t?{base:t,...lC(P.focusCodeStack,P.focusCodeAt,t)}:null}function OC(e){let t=TC(e);return t?lC(P.focusCodeStack,P.focusCodeAt,t).pos:null}function kC(e,t,n,r){let i=DC(e);if(!i||i.pos.integrity!==t||i.pos.file!==n)return null;let a=wC(t,r,{kick:!1,reportId:Ag(e)?._managedReportId});return a&&!a.loading?{integrity:t,file:r,range:null}:null}function AC(e){let t=e&&Ag(e),n=xC(t);if(n?.reportId&&!n.integrity)return CC(n.reportId,n.file,!0);let r=DC(e);if(!r)return null;let{pos:i}=r,a=wC(i.integrity,i.file,{reportId:t?._managedReportId});return!a||a.loading?a:{...a,file:i.file,integrity:i.integrity,range:i.range}}function jC(e,{teamOnly:t=!1,reportId:n}={}){if(!e)return null;let r=C(e);if(!$r(r))return null;if(F()){let i=t?null:n??(P.currentView===`links`?e._managedReportId:P.currentManagedReport),a=oi(fi({view:`findings`,teamId:P.currentManagedTeam,reportId:i,finding:{id:r}},P.managedTeams));return a?`${typeof location>`u`?``:location.origin}${a}`:null}let i=e._reportName||P.currentFile||``,a=P.currentWorkspace||MC(i);return Hr({id:r,report:P.currentWorkspace?null:Br(`report`,i),workspace:Br(`workspace`,a??``)})}function MC(e,t=P.currentReportWorkspace||P.currentWorkspace){let n=$f(e);return n.some(e=>e.id===t)?t:n.length===1?n[0].id:null}function NC(e){for(let t of[Jg(),Gg()])for(let n of t)for(let t of n)if(C(t)===e)return{group:n,finding:t};return null}function PC(e,t){P.currentView=`findings`,P.viewMode===`graph`&&(P.viewMode=`table`,sr());let n=Fg(e).commonTriage;if(P.viewMode===`kanban`){let e=n??`untriaged`;P.kanbanExpandedColumn!==null&&P.kanbanExpandedColumn!==e&&(P.kanbanExpandedColumn=null)}else n!==P.shownTriage&&(P.shownTriage=n);P.upstreamOnly&&!e.every(e=>e.isUpstream)&&(P.upstreamOnly=!1),gr(P.showRevalidation,P.upstreamOnly);let r=e.find(e=>C(e)===t);if(Or(r)||v_(Yg())&&!m_(e)||!Eg(e).some(e=>C(e)===t)){if(P.currentWorkspace){r?.isUpstream?P.upstreamOnly=!0:P.showRevalidation=!1,gr(P.showRevalidation,P.upstreamOnly);let e=Jg().find(e=>e.some(e=>C(e)===t));if(e)return PC(e,t)}else P.revalidationDetailed=!0}if(M_([e]).length===0){let e=P.sortBy;o_(),P.sortBy=e}let i=V(e);return e.length>1&&P.activeTabByGroup.set(i,t),P.viewMode===`table`?P.tableSelectedGid=i:P.viewMode===`focus`?P.focusGid=i:P.viewMode===`kanban`&&(P.kanbanPopoverGid=i),i}function FC(e,t){return t!=null&&(e.authorId===t.id||e.authorId==null&&t.role===`admin`)}function IC(e,t){if(e.createdAt==null&&t.createdAt!=null)return-1;if(e.createdAt!=null&&t.createdAt==null)return 1;let n=(e.createdAt??0)-(t.createdAt??0);return n===0?e.id===t.id?0:e.id<t.id?-1:1:n}var LC=new Map;function RC(e,t){LC.has(e)||LC.set(e,new Set);let n=LC.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&LC.delete(e)}}function zC(e,t){P.managedComments.set(e,t);for(let t of LC.get(e)??[])t()}function BC(e){return F()?P.managedComments?.get(e?.id)??[]:[]}function VC(){return F()&&P.managedSession!=null&&Ke(P.managedSession.role,`triage`)}function HC(e){return VC()&&FC(e,P.managedSession)}function UC(e){let t=P.reports,n=P.managedSession?.id;return()=>F()&&n!=null&&P.managedSession?.id===n&&P.reports===t&&P.managedReports.some(t=>t.id===e)}async function WC(e,{signal:t,readAnnotations:n}={}){let r=UC(e);if(!r())return!1;let i=new Set(P.reports.filter(t=>t._managedReportId===e).flatMap(e=>e.groups.flatMap(e=>e.map(e=>e.id)))),a=new Map([...i].map(e=>[e,P.managedComments.get(e)])),o=n?(await n(e))?.comments:await Zb(e,P.currentManagedTeam,{signal:t});if(!r()||o==null||t?.aborted)return!1;let s=new Map([...i].map(e=>[e,[]]));for(let e of o)s.has(e.findingId)&&s.get(e.findingId).push(e);for(let[e,t]of s)P.managedComments.get(e)===a.get(e)&&zC(e,t);return!0}async function GC(e,t,n=null){let r=e?._managedReportId,i=UC(r);if(!i()||!VC()||n&&n.authorId!==P.managedSession.id)return{status:403};let a=await Qb(r,{findingId:e.id,body:t,commentId:n?.id,version:n?.version},P.managedSession.csrfToken);if(!i())return{status:0};if(a.comment){let t=(P.managedComments.get(e.id)??[]).filter(e=>e.id!==a.comment.id);t.push(a.comment),t.sort(IC),zC(e.id,t)}return a}async function KC(e,t){let n=e?._managedReportId,r=UC(n);if(!r()||!HC(t))return 403;let i=await $b(n,t.id,t.version,P.managedSession.csrfToken);if(!r())return 0;if(i===204){let n=P.managedComments.get(e.id)??[];zC(e.id,n.filter(e=>e.id!==t.id))}return i}function qC(e,t){return e?Kr(e,k`<span class="managed-comment-avatar" aria-hidden="true"><span>${(t?.[0]??`?`).toUpperCase()}</span> ${Ze()?j:k`<img alt="" src="${`/api/avatar/${encodeURIComponent(e)}`}" loading="lazy" @error="${e=>{e.currentTarget.hidden=!0}}">`}</span>`):j}function JC(e){let t=e.version>1&&e.updatedAt!=null,n=e.createdAt??(t?e.updatedAt:null);if(n==null)return j;let r=new Date(n),i=[e.createdAt==null?``:`Posted ${new Date(e.createdAt).toLocaleString()}`,t?`Edited ${new Date(e.updatedAt).toLocaleString()}`:``].filter(Boolean).join(`
152
+ `);return k`<time class="managed-comment-time" datetime="${r.toISOString()}" data-tooltip="${i}">${e.createdAt==null?`edited `:``}${r.toLocaleString(void 0,{dateStyle:`short`,timeStyle:`short`})}${t&&e.createdAt!=null?` (edited)`:``}</time>`}function YC(e,t,n=j){let r=JC(e);return k`<div class="managed-comment"><div class="managed-comment-row">${e.authorId||e.authorLogin?k`<span class="managed-comment-author">${qC(e.authorId,e.authorLogin)} ${e.authorLogin?k`<strong>${e.authorLogin}</strong>`:j}</span>`:j}<div class="managed-comment-body">${t}</div>${r===j&&n===j?j:k`<div class="managed-comment-meta">${n===j?j:k`<div class="managed-comment-actions">${n}</div>`} ${r}</div>`}</div></div>`}function XC(e){return Zn(e,{managed:F()}).map(e=>typeof e==`string`?e:e.self?k`<a class="comment-self-ref" href="${e.url}">${e.label}</a>`:k`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`)}var ZC=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><rect x="3" y="2.5" width="8" height="10" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/><rect x="5.5" y="5" width="8" height="9" rx="1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,QC=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 3 5 8l5 5"/></svg>`,$C=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3 11 8l-5 5"/></svg>`,ew=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3.5h12M2 8h9a2.5 2.5 0 0 1 0 5H8.5M10 11.5 8.5 13l1.5 1.5M2 13h3.5"/></svg>`,tw=k`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M5 2h8a1 1 0 0 1 1 1v8M3 5h7a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1ZM4.5 9.5h4"/></svg>`,nw=k`<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><path d="m4.5 6 2 2-2 2M8.5 10h3"/></svg>`,rw=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5H13a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4.5Z"/></svg>`,iw=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 4.5L2 8l3.5 3.5"/><path d="M10.5 4.5L14 8l-3.5 3.5"/></svg>`;function aw(e){return e===`informational`?`info`:e.replaceAll(`_`,` `)}function ow(e,{variant:t=`full`}={}){let n=P.severityMode,r=Ni(e,n),i=k`<span class="${`badge ${r}`}">${aw(r)}</span>`,a=Mi(e),o=t===`tab`?null:Pi(e);if(!a&&!o)return i;let s=o?`Corrected severity varies across reports \u2014 ${Object.entries(o).map(([e,t])=>`${e||`(this report)`}: ${aw(t.severity)}`).join(`; `)}`:null,c=o?k`<span class="badge-varies" data-tooltip="${s}" aria-label="${s}">varies</span>`:j;if(!a)return k`<span class="${`badge-pair badge-pair-${t}`}">${i}${c}</span>`;let l=Ni(e,`original`),u=ji(e),d=e.correctedSeverityReason,f=(ki[u]??0)>(ki[l]??0),p=f?`up`:`down`,m=f?`▲`:`▼`,h=n!==`original`,g=(h?`Corrected ${p} from ${aw(l)}`:`Original severity \u2014 corrected ${p} to ${aw(u)}`)+(d?` \u2014 ${d}`:``),_=`Severity ${aw(r)}; ${h?`corrected ${p} from ${aw(l)}`:`original, corrected to ${aw(u)}`}${d?`; reason: ${d}`:``}`;if(t===`tab`)return k`<span class="badge-pair badge-pair-tab" data-tooltip="${g}" aria-label="${_}">${i}<span class="${`badge-corr-mark ${p}`}" aria-hidden="true">${m}</span></span>`;let v=h?l:u;return k`<span class="${`badge-pair badge-pair-${t}`}" data-tooltip="${g}" aria-label="${_}">${i}<span class="badge-orig-wrap"><span class="${`badge-arrow ${p}`}" aria-hidden="true">${m}</span>${h?k`<span class="badge-pre" aria-hidden="true">was</span>`:j}<span class="${`badge-orig ${v}${h?` struck`:``}`}">${aw(v)}</span></span>${c}</span>`}var sw=/\[[^\]\n]+\]\([^)\s]+\)|\*\*[^*\n]+\*\*|(?<![\p{L}\p{M}\p{N}_])_(?![\s_])(?:[^_\n]|(?<=[\p{L}\p{M}\p{N}])_(?=[\p{L}\p{M}\p{N}]))*?(?<!\s)_(?![\p{L}\p{M}\p{N}_])|"[^"\n]+"|`[^`\n]+`/gu;function cw(e){let t=[],n=0;for(let r of e.matchAll(sw)){r.index>n&&t.push(e.slice(n,r.index));let i=r[0].codePointAt(0);if(i===91){let e=Gn(r[0]);t.push(e?k`<a href="${e.url}" target="_blank" rel="noopener noreferrer" data-tooltip="${e.url}">${e.label}</a>`:r[0])}else i===42?t.push(k`<strong>${cw(r[0].slice(2,-2))}</strong>`):i===95?t.push(k`<em>${cw(r[0].slice(1,-1))}</em>`):i===96?t.push(k`<span class="inline-code">${r[0].slice(1,-1)}</span>`):t.push(k`<span class="inline-quote">${r[0]}</span>`);n=r.index+r[0].length}return n===0?e:(n<e.length&&t.push(e.slice(n)),t)}function lw({lang:e,code:t}){P.codeBlockTick;let n=MS(t,e);return k`<div class="code-block" data-lang="${e||j}">${e?k`<div class="code-block-lang">${e}</div>`:j}<pre><code>${n?O(n):t}</code></pre></div>`}function uw(e,{wrap:t=!1}={}){let n=e.split(/\n{2,}/u).filter(e=>e.trim()).flatMap(zn);return n.length<2&&typeof n[0]!=`object`?t?k`<div class="para">${cw(e)}</div>`:cw(e):n.map(e=>typeof e==`string`?k`<div class="para">${cw(e)}</div>`:dw(e))}function dw({level:e,text:t,rule:n}){return n?k`<hr class="md-rule">`:k`<div class="md-heading" role="heading" aria-level="${e}">${cw(t)}</div>`}var fw=/^\[([ xX])\][ \t]+/u;function pw({ordered:e,start:t,items:n}){let r=n.map(e=>{let t=fw.exec(e);return t?k`<li class="md-task"><input type="checkbox" disabled="disabled" ?checked="${t[1]!==` `}">${mw(e.slice(t[0].length))}</li>`:k`<li>${mw(e)}</li>`});return e?k`<ol class="md-list" start="${t>1?t:j}">${r}</ol>`:k`<ul class="md-list">${r}</ul>`}function mw(e,{paragraphs:t=!0}={}){if(!e)return e;let n=e.replaceAll(`\r
153
+ `,`
154
+ `),r=t?Rn(n):[n],i=r.length>1,a=e=>t?uw(e,{wrap:i}):cw(e),o=e=>{let t=Ln(e);return t.length===1&&typeof t[0]==`string`?a(t[0]):t.map(e=>typeof e==`string`?a(e):lw(e))};return r.length===1&&typeof r[0]==`string`?o(r[0]):r.map(e=>typeof e==`string`?o(e):pw(e))}function hw(e){let t=new Set;for(let n of e)t.add(Rx(n));return[...t]}function gw(e){let t=Rx(e);return Ix[t]??t}function _w(e,t){P.linksTick,P.findingIndexTick;let n=C(e),r=$r(n)?rd(n).filter(e=>!t.has(e)):[];return r.length===0?j:k`<div class="duplicates-block"><span class="duplicates-label">Duplicates:</span>${r.map(e=>{let t=Xn(e),n=Hd(e),r=P.currentView===`links`&&P.currentLinks?.managedId?Wd([e])[0]:null,i=n.length===0?``:` \u2014 in ${n.map(e=>`${at(e)} (${gw(e)})`).join(`, `)}`;return k`<a class="duplicate-ref" href="${F()?jC({id:e},{teamOnly:!0}):`#${Vr({id:e})}`}" data-links-preview="${r?e:j}" data-preview-report="${r?.report??j}" data-preview-row="${r?.index??j}" data-preview-managed-report="${r?.managedReportId??j}" data-tooltip="${`${t}${i}`}">${hw(n).map(e=>O(Px[e]??Px.default))}<span class="duplicate-ref-id">${Yn(e)??t}</span></a>`})}</div>`}function vw(e){let t=Tr(e);return t?k`<span class="${`revalidate-stamp ${t}`}">${t}</span><div class="value-label">Revalidation</div>`:j}function yw(e){let t=vr()?zi(e.revalidateVerdict,e):``;return t?k`<div class="revalidate-verdict">${mw(In(t))}</div>`:j}function bw(e,t,n=`section`,{collapsible:r=!1}={}){let i=t?k`<div class="section-body">${mw(In(t))}</div>`:j;return!r||!t?k`<div class="${n}"><div class="section-label">${e}</div>${i}</div>`:k`<details class="${n}"><summary class="section-label">${e}</summary>${i}</details>`}function xw(e,t,n){let r=e?.integrity&&t?.file?SC(e,t.file):null;return r?k`<span class="evidence-ref" role="link" tabindex="0" data-code-nav-integrity="${e.integrity}" data-code-nav-file="${r}" data-code-nav-line="${t?.line??``}">${n}</span>`:k`<span class="evidence-ref">${n}</span>`}function Sw(e,t){let n=Array.isArray(e.evidence)?e.evidence:[];if(n.length===0)return j;let r=Mg(e),i=xC(e),a=t===`focus`&&i!==null,o=a?OC(e):null;return k`<details class="evidence"><summary class="section-label">Evidence<span class="evidence-count">(${n.length})</span></summary><ol class="evidence-list">${n.map((t,n)=>{let s=Gi(t),c=Un(t,e,r,n),l=pi(t),u=Fw(e,`ev${n}`,i,t?.file,t?.line),d=Aw(c),f=a&&sC(o,{integrity:i.integrity,file:SC(i,t?.file),range:Bn(t?.line)});return k`<li class="${T({current:f})}">${a?xw(i,t,s):c?k`<a class="evidence-ref" href="${c}" target="_blank" rel="noopener">${s}</a>`:k`<span class="evidence-ref">${s}</span>`} ${u?.mark??j} ${d} ${u?.tip??j} ${l?k`<div class="evidence-note">${mw(In(l))}</div>`:j} ${u?.body??j}</li>`})}</ol></details>`}function Cw(e,t){let n=Gi(e);return t?k`<a href="${t}" target="_blank" rel="noopener">${n}</a>`:n}function ww(e,t){if(!t)return j;let n=t.slice(0,7),r=qn(e,t);return r?k`<a href="${r}" target="_blank" rel="noopener" data-tooltip="${t}">${n}</a>`:k`<span data-tooltip="${t}">${n}</span>`}var Tw=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="bubble" d="M2.5 3h11a.5.5 0 0 1 .5.5v6.5a.5.5 0 0 1-.5.5H8.4l-3 2.6V10.5H2.5a.5.5 0 0 1-.5-.5V3.5a.5.5 0 0 1 .5-.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Ew=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="wrench" d="M10.4 2.6a3 3 0 0 0-3.6 4.5L2 12l2 2 4.9-4.8a3 3 0 0 0 4.5-3.6l-1.8 1.8-1.5-.4-.4-1.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,Dw=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"><path d="M6.2 11.2H4.8a3.2 3.2 0 0 1 0-6.4h1.4"/><path d="M9.8 4.8h1.4a3.2 3.2 0 0 1 0 6.4H9.8"/><path d="M5.6 8h4.8"/></g></svg>`,Ow=k`<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.4 4.6 1.3 8l3.1 3.4"/><path d="m11.6 4.6 3.1 3.4-3.1 3.4"/><path d="M9.8 2.6 6.2 13.4"/></g></svg>`,kw=O(aa);function Aw(e){let t=Fn(e);return t?k`<a class="gh-ref-btn" href="${e}" target="_blank" rel="noopener noreferrer" data-tooltip="${t}" aria-label="${`Open ${t} on GitHub`}">${kw}</a>`:j}function jw(e,t,n,r){return`${C(e)}\0${t}\0${n}\0${r?`${r.start}-${r.end}`:``}`}var Mw={key:null,host:null};function Nw(e,t){if(Mw.key===e)return;let n=Mw.host,r=e===null?null:t?.getRootNode?.()?.host??null;Mw={key:e,host:r},n?.requestUpdate?.(),r!==n&&r?.requestUpdate?.()}function Pw(e,t,n){P.codeBlockTick;let{text:r,lines:i,startLine:a}=Hn(e,t);if(i.length===0)return j;let o=n.lastIndexOf(`.`),s=MS(r,o<0?``:n.slice(o+1)),c=a+i.length-1;return k`<div class="code-preview" style="${E({"--lineno-width":`${String(c).length}ch`})}"><aside class="code-preview-gutter" aria-hidden="true">${i.map((e,n)=>{let r=a+n,i=!!t&&r>=t.start&&r<=t.end;return k`<div class="${T({"code-preview-lineno":!0,cited:i})}">${r}</div>`})}</aside><pre class="code-preview-source"><code>${s?O(s):r}</code></pre></div>`}function Fw(e,t,n,r,i){if(P.bundleHashTick,!n||!r)return null;let a=SC(n,r);if(!a)return null;let o=Bn(i),s=jw(e,t,r,o),c=P.codePreviews.has(s);P.focusCodeTick;let l=k`<button type="button" class="${T({"code-preview-btn":!0,open:c})}" data-code-preview="${s}" aria-expanded="${String(c)}" aria-label="${c?`Hide the source at ${r}`:`Show the source at ${r}`}" @mouseenter="${e=>{Nw(s,e.currentTarget),wC(n.integrity,a,{reportId:n.reportId})}}" @mouseleave="${e=>{Mw.key===s&&Nw(null,e.currentTarget)}}" @focus="${e=>{Nw(s,e.currentTarget),wC(n.integrity,a,{reportId:n.reportId})}}" @blur="${e=>{Mw.key===s&&Nw(null,e.currentTarget)}}">${Ow}</button>`;if(c){let e=wC(n.integrity,a,{reportId:n.reportId}),t=!e||e.loading?k`<div class="code-preview code-preview-pending">${e?`Loading source…`:`Source unavailable`}</div>`:Pw(e.content,o,a);return{mark:l,tip:j,body:t}}if(Mw.key!==s)return{mark:l,tip:j,body:j};let u=wC(n.integrity,a,{kick:!1,reportId:n.reportId});return{mark:l,tip:u&&!u.loading?k`<div class="code-preview-tip" role="tooltip">${Pw(u.content,o,a)}</div>`:j,body:j}}var Iw=k`<svg viewBox="4 5 8 8" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="${qi}"/></svg>`,Lw=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.2"/><circle cx="8" cy="8" r="1.7" fill="currentColor"/></svg>`,Rw=k`<svg viewBox="0 0 16 16" width="11" height="11" aria-hidden="true"><path class="flag-cloth" d="M5 1.5h6v13l-3-2.7-3 2.7z" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/></svg>`;function zw(e,t=!1){let n=xg(e)?.flagged===!0,r=n?`Remove flag`:`Flag this finding`;return k`<button type="button" class="${T({"mark-flag":!0,flagged:n})}" data-flag-toggle="${C(e)}" ?disabled="${!bg(e)}" aria-label="${r}" aria-pressed="${String(n)}">${Rw}${t?k`<span class="mark-btn-label">${n?`Flagged`:`Flag`}</span>`:j}</button>`}function Bw(e){let t=Vi(e)||e.file||`Security finding`;return t.length>120?`${t.slice(0,119)}\u2026`:t}function Vw(e){let t=Pn(e,Mg(e)),n=Gi(e),r=[];e.file&&r.push(`File: ${t?`[${n}](${t})`:n}`),e.description&&r.push(e.description);let i=Wn(e);return i&&r.push(i),e.confidence!==void 0&&e.confidence!==null&&r.push(`Confidence: ${e.confidence}/10`),r.join(`
155
+
156
+ `)}function Hw(e){if(!P.currentWorkspace)return j;let t=e._reportName;if(!t||F()&&!e._managedReportId)return j;let n=rt[Rx(t)]??rt.default,r=k`${O(n)}<span class="report-chip-label report-button-label">${at(t)}</span>`;if(F()){let t=jC(e,{reportId:e._managedReportId});if(t)return k`<a class="report-chip report-button comment-self-ref" href="${$e(t)}">${r}</a>`}return k`<button type="button" class="report-chip report-button" data-links-report="${t}" data-links-finding="${C(e)}" data-managed-report="${F()?e._managedReportId:j}">${r}</button>`}function Uw(e,t,n,r,i=null){let a=i===`table`?j:Hw(r),o=xg(r),s=!vg(r),c=!bg(r),l=o?.color??null,u=o?.comment??``,d=o?.fix??``,f=F()?`View comments`:u?`Edit comment: ${u}`:`Add comment`,p=d?`Edit fix link: ${d}`:`Add fix link (PR URL, etc.)`,m=i===`focus`&&a===j,h=F()?`Comments`:u?`Edit comment`:`Comment`,g=d?`Edit fix link`:`Fix link`,_=k`<button type="button" ?disabled="${s}" class="${T({"mark-comment":!0,"has-comment":u})}" data-tooltip="${u&&!F()?f:j}" aria-label="${f}">${Tw}${m?k`<span class="mark-btn-label">${h}</span>`:j}</button>`,v=k`<button type="button" ?disabled="${c}" class="${T({"mark-fix":!0,"has-fix":d})}" data-tooltip="${d?p:j}" aria-label="${p}">${Ew}${m?k`<span class="mark-btn-label">${g}</span>`:j}</button>`,y=zw(r,m),b=k`<button type="button" class="mark-copy" aria-label="Copy finding details to clipboard">${ZC}${m?k`<span class="mark-btn-label">Copy</span>`:j}</button>`,x=jC(r)?k`<button type="button" class="mark-link" aria-label="Copy a link to this finding">${Dw}${m?k`<span class="mark-btn-label">Link</span>`:j}</button>`:j,ee=F()?gi({repo:{github:r.repo?.github||r._repoFallback}}):Ng(r),te=Jn(ee,{title:Bw(r),body:Vw(r),labels:yS(r.isSecurity===!0,P.githubNewIssueLabels)}),ne=F()&&P.managedSession&&!P.managedSession.publicShare&&P.currentManagedTeam,re=k`${Lw}${m?k`<span class="mark-btn-label">Issue</span>`:j}`,ie=Kh(r)?j:te?ne?k`<button type="button" class="mark-issue" data-issue-form="${te}" data-tooltip="${m?j:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${re}</button>`:k`<a class="mark-issue" href="${te}" target="_blank" rel="noopener" data-tooltip="${m?j:`Create a GitHub issue for this finding`}" aria-label="Create a GitHub issue for this finding">${re}</a>`:j,ae=k`<button type="button" class="mark-claude" data-tooltip="${m?j:`Open in Claude Code (claude://) with a confirm-and-fix prompt`}" aria-label="Open finding in Claude Code">${Iw}${m?k`<span class="mark-btn-label">Claude</span>`:j}</button>`,oe=k`<color-marker .selected="${l}" .disabled="${c}"></color-marker>`,se=Pg(e)!==e,ce=e.linkedTabs?`change triage state for linked findings`:se?`change triage state for App and own-source findings`:n.hasConflict?`change triage state (colors mismatch — acts per-tab)`:t.length>1?`change triage state for the whole group`:`change triage state`;return k`<div class="finding-actions">${a}<div class="finding-action-controls"><span class="mark-action-group">${_}${v}${y}</span><span class="mark-action-group">${b}${x}${ie}${ae}</span>${oe}${Gw(e,ce,i,n,r)}</div></div>`}function Ww(e){if(e.newState!==`open`)return;let t=e.currentTarget,n=t.getRootNode().querySelector?.(`[popovertarget="${t.id}"]`);if(!n)return;let r=n.getBoundingClientRect(),i=t.offsetWidth||110,a=t.offsetHeight||100,o=r.right-i;o<4&&(o=4),o+i>window.innerWidth-4&&(o=window.innerWidth-i-4);let s=r.bottom+4;s+a>window.innerHeight-4&&r.top>a+4&&(s=r.top-a-4),t.style.top=`${s}px`,t.style.left=`${o}px`}function Gw(e,t,n,r,i){let a=V(e),o=!bg(i)||zg(e,r).length===0,s=o?null:Bg(e,r,i),c={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Deleted`,ignored:`Ignored`},l={inprogress:`In progress`,fixed:`Fixed`,invalid:`Invalid`,deleted:`Delete`,ignored:`Ignore`},u=!!P.shownTriage,d=u?c[P.shownTriage]:null,f=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],p=u&&n!==`focus`?[{key:`restore`,label:`Restore`},...f.filter(e=>e!==P.shownTriage).map(e=>({key:e,label:l[e]}))]:f.map(e=>({key:e,label:l[e]})),m=[`mark-triage-menu`];u&&m.push(`with-label`,`triage-state-${P.shownTriage}`);let h=`triage-menu-${a.replaceAll(/[^A-Za-z0-9_-]/gu,`_`)}`;return k`<div class="triage-menu-wrap"><button type="button" class="${m.join(` `)}" popovertarget="${h}" popovertargetaction="toggle" aria-label="${t}" ?disabled="${o}">${d?k`<span class="mark-triage-label">${d}</span>`:j} <svg viewBox="0 0 12 12" width="11" height="11" aria-hidden="true"><path d="M2 4l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div popover="auto" id="${h}" class="triage-menu" data-gid="${a}" role="menu" @beforetoggle="${Ww}">${p.map(e=>k`<button type="button" class="${T({"triage-menu-item":!0,[`triage-menu-${e.key}`]:!0,active:s===e.key})}" data-triage-action="${e.key}" ?disabled="${o}" role="menuitem">${e.label}</button>`)}</div></div>`}function Kw(e,t){let n=!!e?.comment,r=!!(e?.fix||qh(t)),i=e?.flagged===!0;return!n&&!r&&!i?j:k`<span class="tab-marks">${n?k`<span class="has-comment" role="img" aria-label="Has a comment">${Tw}</span>`:j}${r?k`<span class="has-fix" role="img" aria-label="Has a fix link">${Ew}</span>`:j}${i?k`<span class="flagged" role="img" aria-label="Flagged">${Rw}</span>`:j}</span>`}function qw(e,t,n){let{app:r,source:i}=Og(e),a=e=>Jw(e,C(e)===t,n);return k`<div class="tabs">${r.map(a)} ${r.length>0&&i.length>0?k`<span class="tab-level-separator" aria-hidden="true">•</span>`:j} ${i.map(a)}</div>`}function Jw(e,t,n){let r=C(e),i=xg(e),a=i?.color,o=Cg(e,i),s=[`tab`,`tab-severity-${Ni(e,P.severityMode)}`];t&&s.push(`active`),a&&s.push(`tab-mark-${a}`),o===`ignored`&&!n.allIgnored?s.push(`tab-ignored`):o&&o!==`ignored`&&n.commonTriage===null&&s.push(`tab-${o}`);let c=Lx(e),l=c?rt[c]:null,u=!l&&e.confidence!=null;l?s.push(`tab-with-analyzer`):u&&s.push(`tab-with-confidence`);let d=l?k`<span class="tab-analyzer" role="img" aria-label="${Ix[c]}">${O(l)}</span>`:u?k`<span class="tab-conf" aria-label="${`Confidence ${e.confidence} out of 10`}">${e.confidence}<span class="tab-conf-max">/10</span></span>`:j;return k`<button type="button" class="${s.join(` `)}" data-tid="${r}" aria-pressed="${t}" aria-description="${a?`${a} color label`:j}"><span class="tab-label"><span class="tab-severity">${ow(e,{variant:`tab`})}</span><span class="tab-indicators">${Kw(i,e)}</span></span>${d}</button>`}function Yw(e){if(P.viewMode===`table`||P.viewMode===`focus`){let t=e.confidence*10;return k`<div class="${`conf-ring ${Ni(e,P.severityMode)}`}"><svg viewBox="0 0 36 36" aria-hidden="true"><circle class="conf-ring-track" cx="18" cy="18" r="15.9155"/><circle class="conf-ring-arc" cx="18" cy="18" r="15.9155" style="${E({"stroke-dasharray":`${t} 100`})}"/></svg> <span>${e.confidence}<small>/10</small></span></div><div class="value-label">Confidence</div>`}return k`<div class="conf-score"><strong>${e.confidence}</strong>/10</div><div class="value-label">Confidence</div>`}var Xw=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/iu;function Zw(e){if(Zd(e))return j;let t=e?.name;if(typeof t!=`string`||!Xw.test(t))return j;let n=e?.version,r=typeof n==`string`&&n.length>0,i=r?`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`:`https://www.npmjs.com/package/${t}`,a=r?`${t}@${n}`:t;return k`<span class="line-num"><a class="npm-link" href="${i}" target="_blank" rel="noopener noreferrer">npm: ${a}</a></span>`}function Qw(e,t,n,r,i,a){let o=C(e),s=xg(e),c=s?.comment??``,l=s?.fix??``,u=qh(e),d=Kh(e),f=Pn(e,Mg(e)),p=Cw(e,f),m=Bi(e),h=xC(e),g=Fw(e,`loc`,h,e.file,e.line),_=Aw(f),v=k`<span class="line-num">${m?k`${p}, ${m}`:p}${g?.mark??j}${_}</span>`,y=jn(e),b=String(e.discoveredIn??``).trim(),x=b===String(e.file??``).trim()?``:b,ee=i===`focus`?Zw(e.package?.npm):j,te=j;if(i!==`focus`&&F()&&g)te=k`<button type="button" class="finding-code-btn" data-finding-code-report="${h.reportId}" data-finding-code-file="${e.file}" data-finding-code-line="${e.line??``}" aria-label="${`Open full source for ${e.file}`}">Code</button>`;else if(i!==`focus`&&!F()&&e.fileHash&&Array.isArray(e._bundleHashes)&&e._bundleHashes.length>0){P.bundleHashTick;let t=new Set(e._bundleHashes),n=qf(e.fileHash).find(({integrity:e})=>t.has(e));n&&(te=k`<button type="button" class="finding-code-btn" data-finding-code-bundle="${n.integrity}" data-finding-code-file="${n.file}" data-finding-code-line="${e.line??``}" data-tooltip="${`Open ${n.file} in bundle source viewer`}">Code</button>`)}let{title:ne,body:re}=Hi(e),ie=Wi(re),ae=ie.findIndex(e=>e.label!==null),oe=ae===-1?ie:ie.slice(0,ae),se=ae===-1?[]:ie.slice(ae);return k`<div class="${T({"tab-body":!0,active:t})}" data-tid="${o}">${r>1?k`<div class="print-case-label">${n+1} of ${r}</div>`:j}<div class="finding-left">${s?.color||s?.flagged===!0?k`<div class="${s?.color?`finding-top-marks color-${s.color}`:`finding-top-marks`}">${s?.color?k`<span class="finding-color-mark" role="img" aria-label="${`Color label: ${s.color}`}"></span>`:j} ${s?.flagged===!0?k`<span class="finding-bookmark-mark" role="img" aria-label="Bookmarked"></span>`:j}</div>`:j} ${ow(e,{variant:`full`})}<div class="value-label">Severity</div>${e.confidence===void 0?j:Yw(e)} ${vw(e)} ${te}</div><div class="finding-body"><div class="line-row">${v} ${g?.tip??j} ${ee} ${x?k`<span class="line-num discovered-in">(found analyzing ${x})</span>`:j} ${y?k`<span class="run-meta">${y}</span>`:j}</div>${g?.body??j} ${ne?k`<div class="desc-title">${cw(ne)}</div>`:j} ${oe.map(e=>k`<div class="desc">${mw(In(e.body))}</div>`)} ${Sw(e,i)} ${se.map(e=>e.label===null?k`<div class="desc">${mw(In(e.body))}</div>`:bw(e.label,e.body))} ${e.impact?bw(`Impact`,zi(e.impact,e)):j} ${e.reproduction?bw(`Reproduction`,zi(e.reproduction,e),`section`,{collapsible:!0}):j} ${e.recommendation?bw(`Recommendation`,zi(e.recommendation,e),`recommendation`,{collapsible:!0}):j} ${e.confidenceReason?k`<div class="conf-reason">${mw(zi(e.confidenceReason,e))}</div>`:j} ${yw(e)} ${e.revalidateRecommendation&&vr()?bw(`Revalidation recommendation`,zi(e.revalidateRecommendation,e),`recommendation`,{collapsible:!0}):j} ${Mi(e)&&e.correctedSeverityReason?k`<div class="severity-reason"><span class="severity-reason-label">Severity correction:</span> ${mw(e.correctedSeverityReason)}</div>`:j} ${_w(e,a)} ${F()?BC(e).map(e=>k`<div class="comment-block">${YC(e,XC(e.body))}</div>`):c?k`<div class="comment-block"><span class="comment-label">Comment:</span> ${XC(c)}</div>`:j} ${d?k`<div class="fix-block"><span class="fix-label">Issue:</span><managed-fix-link .url="${d.url}"></managed-fix-link></div>`:j} ${l?k`<div class="fix-block"><span class="fix-label">Fix:</span> ${mi(l)?k`<managed-fix-link .url="${l}"></managed-fix-link>`:l}</div>`:j} ${u&&u!==l?k`<div class="fix-block"><span class="fix-label">Fix from issue:</span><managed-fix-link .url="${u}"></managed-fix-link></div>`:j}</div></div>`}function $w(e){let t=[`finding`,...tT(e)];return Eg(e).length>1&&t.push(`multi-case`),t}function eT(e,t={}){let{context:n=null}=t,r=Fg(e),i=Eg(e),a=new Set(i.map(C)),o=Ag(e),s=C(o),c=o.commitHash?k`<div class="commit-ref">introduced in ${ww(o.repo?.github,o.commitHash)}</div>`:j,l=P.currentWorkspace&&c!==j;return k`${i.map((e,t)=>Qw(e,C(e)===s,t,i.length,n,a))} ${l?k`<div class="marks-commit-row">${c}</div>`:j}<div class="marks"><div class="marks-left">${l?j:c} ${i.length>1?qw(i,s,r):j}</div>${Uw(e,i,r,o,n)}</div>`}function tT(e){let t=Fg(e),n=e.some(e=>e.critical||Ni(e,P.severityMode)===`critical`),r=[];return n&&r.push(`is-critical`),t.hasConflict?r.push(`has-conflict`):t.commonColor&&r.push(`mark-${t.commonColor}`),P.shownTriage&&r.push(`triage-${P.shownTriage}`),r}function nT(e){let t=Fg(e),n=Eg(e),r=Ag(e),i=C(r),a=r,o=Vi(a),s=jn(a),c=Bi(a),l=c?`, ${c}`:``,u=Pn(a,Mg(a));return k`<div class="row-score">${ow(a,{variant:`compact`})} ${a.confidence===void 0?j:k`<span class="row-conf"><strong>${a.confidence}</strong>/10</span>`}</div><div class="row-body"><div class="title-row"><span class="title">${o}</span> ${s?k`<span class="row-type">${s}</span>`:j}</div><div class="meta-row"><span class="row-loc">${Cw(a,u)}${l}</span> ${Aw(u)}<div class="marks">${Uw(e,n,t,r,`table`)}</div></div>${n.length>1?k`<div class="tabs-row">${qw(n,i,t)}</div>`:j}</div>`}function rT(e){if(!e)return j;let t=qf(e)[0];return t?k`<button type="button" class="tree-code-btn" data-finding-code-bundle="${t.integrity}" data-finding-code-file="${t.file}" data-tooltip="${`Open ${t.file} in bundle source viewer`}">Code</button>`:j}function iT(e,t){let n=Object.keys(e).toSorted(),r=new Map;for(let t of n)for(let n of e[t].imports??[]){let e=r.get(n)??[];e.push(t),r.set(n,e)}let i=P.filesSearch.trim().toLowerCase(),a=i?n.filter(e=>e.toLowerCase().includes(i)):n,o=t=>e[t]?k`<a href="${`#${yr(t)}`}"><span class="name">${t}</span></a>`:k`<span class="name">${t}</span>`,s=e=>{let n=t.get(e);if(!n)return null;let r=Ai.filter(e=>(n[e]??0)>0);return r.length===0?null:k`<span class="tree-count-chips">${r.map(e=>k`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</span>`},c=e=>{let n=t.get(e);return n?Ai.reduce((e,t)=>e+(n[t]??0),0):0},l=k`<div class="tree-toolbar"><view-mode-buttons modes="table,list" kind="files"></view-mode-buttons><div class="search-row"><toolbar-search kind="files"></toolbar-search><span class="result-count">${a.length} of ${n.length}</span></div></div>`;if(P.filesViewMode===`table`){let t=P.filesSelectedFile&&e[P.filesSelectedFile]&&a.includes(P.filesSelectedFile)?P.filesSelectedFile:null;return k`<div class="${t?`tree-view tree-view-table with-details`:`tree-view tree-view-table`}">${l}<div class="${t?`tree-table-layout open`:`tree-table-layout`}"><div class="tree-table-list">${a.length===0?k`<div class="tree-table-empty">No files match the search.</div>`:j} ${a.map(n=>{let r=c(n),i=n===t,a=On(e[n].size);return k`<div class="${`tree-table-row${i?` selected`:``}${r===0?` clean`:``}`}" data-tree-select="${n}"><span class="tree-table-name" data-tooltip-truncated data-tooltip="${n}">${n}</span> ${s(n)??k`<span class="tree-table-clean-marker">—</span>`} ${a?k`<span class="tree-table-size">${a}</span>`:j}</div>`})}</div>${t?k`<aside class="tree-table-details" id="tree-table-details"><header class="tree-table-details-bar"><span class="tree-table-details-label">Details</span> <button type="button" class="tree-table-details-close" data-tree-deselect aria-label="Close details">×</button></header><div class="tree-table-details-body">${oT(e[t],t,r.get(t)??[],o)}</div></aside>`:j}</div></div>`}return k`<div class="tree-view">${l} ${a.length===0?k`<div class="tree-table-empty">No files match the search.</div>`:j} ${a.map(t=>{let n=e[t],i=r.get(t)??[],a=On(n.size);return k`<section class="tree-file" id="${yr(t)}"><div class="tree-file-header"><span class="name">${t}</span> ${s(t)} ${a?k`<span class="tree-file-size">${a}</span>`:j} ${rT(n.fileHash)}</div>${aT(n,i,o)}</section>`})}</div>`}function aT(e,t,n){return k`${e.fileHash||e.treeHash?k`<div class="tree-hashes hashes">${e.fileHash?k`<div class="tree-hash">file: ${e.fileHash}</div>`:j} ${e.treeHash?k`<div class="tree-hash">tree: ${e.treeHash}</div>`:j}</div>`:j} ${e.imports?.length>0?k`<div class="tree-section"><span class="tree-section-label">imports</span><ul>${e.imports.map(e=>k`<li>${n(e)}</li>`)}</ul></div>`:j} ${t.length>0?k`<div class="tree-section"><span class="tree-section-label">imported by</span><ul>${t.map(e=>k`<li>${n(e)}</li>`)}</ul></div>`:j} ${e.exports?.length>0?k`<div class="tree-section"><span class="tree-section-label">exports</span><ul>${e.exports.map(e=>k`<li><span class="name">${e}</span></li>`)}</ul></div>`:j}`}function oT(e,t,n,r){let i=On(e.size);return k`<div class="tree-detail-name"><span class="name">${t}</span> ${i?k`<span class="tree-detail-size">${i}</span>`:j} ${rT(e.fileHash)}</div>${aT(e,n,r)}`}var sT=null,cT=null;function lT(){return cT}function uT(){return sT||(sT=(async()=>{try{let e=await import(`./graph.js`);return cT=e,e}catch(e){throw sT=null,e}})(),sT)}async function dT(e,t,n,r,i){try{let a=await uT(),o=a.buildGraphFromPrep(t);M(k`<graph-layout .graph="${o}" .options="${n}"></graph-layout>`,e);let s=e.querySelector(`graph-layout`);return await s.updateComplete,r(),i(),a.attachGraph2Interaction(e,o,r,i),s}catch(t){return e.textContent=`Graph failed to load: ${t instanceof Error?t.message:String(t)}`,null}}var fT=null,pT=null;function mT(){pT=null}async function hT(){let e=await pT?.promise.catch(()=>null);e?.isConnected&&e.focusInput()}function gT(){return fT||(fT=(async()=>{try{return await import(`./terminal.js`)}catch(e){throw fT=null,e}})(),fT)}function _T(e){let t=new Map([...Vt(e)].filter(([,e])=>e?.format!==`digest`));if(t.size===0)return t;let n=[...t.keys()],{stripped:r}=kn(n),i=new Map;for(let e=0;e<n.length;e++)i.set(r[e],t.get(n[e]));return i}async function vT(e,t){let n=t?.integrity??``;(!pT||pT.integrity!==n||(t?.managedId||pT.managedId)&&pT.details!==t)&&(pT={integrity:n,managedId:t?.managedId,details:t?.managedId?t:null,promise:yT(t,n)});try{let t=await pT.promise;return!e.isConnected||e.contains(t)||e.replaceChildren(t),t}catch(t){return pT=null,e.textContent=`Terminal failed to load: ${t instanceof Error?t.message:String(t)}`,null}}async function yT(e,t){return(await gT()).createTerminalElement(_T(e),t)}var bT=(e,t,n)=>{for(let n of t)if(n[0]===e)return(0,n[1])();return n?.()},xT=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),xT(e,t);return!0},ST=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},CT=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),ET(t)}};function wT(e){this._$AN===void 0?this._$AM=e:(ST(this),this._$AM=e,CT(this))}function TT(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0){if(t){if(Array.isArray(r))for(let e=n;e<r.length;e++)xT(r[e],!1),ST(r[e]);else r!=null&&(xT(r,!1),ST(r))}else xT(this,e)}}var ET=e=>{e.type==ca.CHILD&&(e._$AP??=TT,e._$AQ??=wT)},DT=class extends ua{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),CT(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(xT(this,e),ST(this))}setValue(e){if(Zr(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},OT=new WeakMap,kT=la(class extends DT{render(e){return j}update(e,[t]){let n=t!==this.G;return n&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),j}rt(e){if(this.G!==void 0){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=OT.get(t);n===void 0&&(n=new WeakMap,OT.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}}get lt(){return typeof this.G==`function`?OT.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),AT=2**20,jT=Math.floor(2**25/15);function MT(e){let t=[];for(let n=0;n<e.length;){let r=Math.min(n+AT,e.length);r<e.length&&e.codePointAt(r-1)>65535&&r--,t.push(e.slice(n,r)),n=r}return t}function NT(e,t=!1){return e.length<=AT&&!nC(e)?e:iC(e,t).flatMap(e=>typeof e==`string`?MT(e):[e])}var PT=class extends n{};function G(e,t,n){if(!e)throw new PT(typeof n==`function`?n():n,t.line)}var FT=/^(\d{4})-(\d\d)-(\d\d)([Tt])(\d\d):(\d\d):(\d\d)(\.\d+)?(?:([Zz])|([+-])(\d\d):(\d\d))$/u,IT=/^(?:\d{4}-\d\d-\d\d(?:[Tt]\d\d:\d\d:\d\d(?:\.\d+)?)?|\d\d:\d\d:\d\d(?:\.\d+)?)$/u,LT=/^(?:\d{4}-\d\d-\d\d[Tt])?\d\d:\d\d(?:[Zz]|[+-]\d\d:\d\d)?$/u,RT=[31,28,31,30,31,30,31,31,30,31,30,31];function zT(e){let t=FT.exec(e);if(t===null)return;let[n,r,i,a,o,s]=[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[5]),Number(t[6]),Number(t[7])],c=n%4==0&&n%100!=0||n%400==0;if(r<1||r>12||i<1||i>(r===2&&c?29:RT[r-1])||a>23||o>59||s>60||t[10]!==void 0&&(Number(t[11])>23||Number(t[12])>59))return;let l=[];(t[4]===`t`||t[9]===`z`)&&l.push(`a date-time with a lower-case "t" or "z" is not supported`),n===0&&l.push(`the year 0000 is not supported`),s===60&&l.push(`a leap second is not supported`);let u=t[10]===void 0?0:(t[10]===`-`?-1:1)*(Number(t[11])*60+Number(t[12]));return{year:n,month:r,day:i,hour:a,minute:o,second:s,fraction:t[8]?.slice(1)??``,offset:u,unsupported:l}}var BT=class{constructor(e){if(typeof e!=`string`||zT(e)?.unsupported.length!==0)throw TypeError(`expected an RFC 3339 offset date-time`);this.text=e,Object.freeze(this)}toString(){return this.text}toJSON(){return this.text}toDate(){let{year:e,month:t,day:n,hour:r,minute:i,second:a,fraction:o,offset:s}=zT(this.text),c=new Date(0);return c.setUTCFullYear(e,t-1,n),c.setUTCHours(r,i-s,a,Number(o.padEnd(3,`0`).slice(0,3))),c}};function VT(e,n){if(!/^(?:\d{4}-\d\d-\d\d|\d\d:\d\d)/u.test(e))return;let r=zT(e);if(r?.unsupported.length===0)return new BT(e);throw G(!(/^\d{4}-\d\d-\d\d$/u.test(e)&&/^ \d\d:/u.test(n.text.slice(n.pos,n.pos+4))),n,`a date-time with a space in place of "T" is not supported`),G(!IT.test(e),n,()=>`local dates and times are not supported: ${t(e)}`),G(!LT.test(e),n,()=>`a date-time or a time without seconds is not supported: ${t(e)}`),G(r?.unsupported.length!==1,n,()=>`${r.unsupported[0]}: ${t(e)}`),new PT(`${t(e)} is not a date-time of the form YYYY-MM-DDTHH:MM:SS[.fraction](Z|\xB1HH:MM)`,n.line)}var HT=/^[+-]?(?:0|[1-9](?:_?\d)*)$/u,UT=/^0(?:x[\dA-Fa-f](?:_?[\dA-Fa-f])*|o[0-7](?:_?[0-7])*|b[01](?:_?[01])*)$/u,WT=/^[+-]?(?:inf|nan|(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*(?:[Ee][+-]?\d(?:_?\d)*)?|[Ee][+-]?\d(?:_?\d)*))$/u,GT=2n**63n,KT=BigInt(2**53-1),qT={__proto__:null,x:16,o:21,b:63};function JT(e,n){let r=HT.test(e);if(!r&&!UT.test(e))return;let i=e.replaceAll(`_`,``),a=r?i.replace(/^[+-]/u,``):i.slice(2).replace(/^0+/u,``),o=a.length<=(r?19:qT[i[1]])?BigInt(r?i:`${i.slice(0,2)}${a||`0`}`):void 0;return G(o!==void 0&&o>=-GT&&o<GT,n,()=>`integer out of range ${t(e)}`),o>=-KT&&o<=KT?Number(o):o}var YT={__proto__:null,inf:1/0,"+inf":1/0,"-inf":-1/0,nan:NaN,"+nan":NaN,"-nan":NaN};function XT(e){if(typeof e!=`string`||!WT.test(e))return;if(e in YT)return YT[e];let t=Number(e.replaceAll(`_`,``)),n=!/[1-9]/u.test(e.split(/[Ee]/u)[0]);return Number.isFinite(t)&&(t!==0||n)?t:null}var ZT=class{constructor(e){let t=XT(e);if(t==null)throw TypeError(`expected a TOML float that a double can hold`);this.text=e,this.value=t,Object.freeze(this)}valueOf(){return this.value}toString(){return this.text}toJSON(){return this.value}};function QT(e,n){let r=XT(e);if(r!==void 0)return G(r!==null,n,()=>`float out of range ${t(e)}`),new ZT(e)}var $T=64;function eE(e){for(;e.text[e.pos]===` `||e.text[e.pos]===` `;)e.pos++}function tE(e){if(e.pos>=e.text.length)return`the end of the text`;let n=/^[^\n]*/u.exec(e.text.slice(e.pos,e.pos+64+1))[0].replace(/\r$/u,``);return n===``?`the end of the line`:t(n)}var nE=`a carriage return must be followed by a line feed`;function rE(t,n,r){throw new PT(n===`\r`?nE:`${e(n)} is not allowed in ${r}`,t.line)}var iE=e=>e.pos>=e.text.length||e.text[e.pos]===`
157
+ `||e.text.startsWith(`\r
158
+ `,e.pos),aE=/#[^[\p{Cc}--[\t\u0080-\u009F]]]*/vy;function oE(e){e.text[e.pos]===`#`&&(r(e,aE),iE(e)||rE(e,e.text[e.pos],`a comment`))}function sE(e){if(e.text[e.pos]===`
159
+ `)e.pos+=1;else if(e.text.startsWith(`\r
160
+ `,e.pos))e.pos+=2;else return!1;return e.line++,!0}function cE(e){do eE(e),oE(e);while(sE(e))}var lE={__proto__:null,b:`\b`,t:` `,n:`
161
+ `,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`},uE={__proto__:null,'"':/[^"\\[\p{Cc}--[\t\u0080-\u009F]]]*/vy,"'":/[^'[\p{Cc}--[\t\u0080-\u009F]]]*/vy},dE=/u([\dA-Fa-f]{4})|U([\dA-Fa-f]{8})/uy;function fE(e){let n=e.text[e.pos];if(n in lE)return lE[e.text[e.pos++]];let i=r(e,dE);G(i!==null,e,()=>`unsupported escape ${t(`\\${n??``}`)}`);let a=Number.parseInt(i[1]??i[2],16);return G(a<=1114111&&(a<55296||a>57343),e,()=>`\\${i[0]} is not a Unicode scalar value`),String.fromCodePoint(a)}var pE=/[\t ]*\r?\n(?:[\t ]|\r?\n)*/uy;function mE(e){let t=r(e,pE);return t===null?fE(e):(e.line+=t[0].split(`
162
+ `).length-1,``)}var hE=(e,t)=>e.text[e.pos+1]===t&&e.text[e.pos+2]===t,gE={__proto__:null,'"':/"/uy,"'":/'/uy,'"""':/"{3,5}/uy,"'''":/'{3,5}/uy};function _E(e,t){let n=hE(e,t),i=gE[n?t.repeat(3):t];e.pos+=n?3:1,n&&sE(e);let a=``;for(;;){if(a+=r(e,uE[t])[0],n&&sE(e)){a+=`
163
+ `;continue}G(!iE(e),e,`unterminated string`);let o=r(e,i);if(o!==null)return a+o[0].slice(3);let s=e.text[e.pos++];s===t?a+=s:s===`\\`?a+=n?mE(e):fE(e):rE(e,s,`a string`)}}var vE=/[\w-]+/uy;function yE(e){let t=e.text[e.pos];if(t===`"`||t===`'`)return G(!hE(e,t),e,`a multi-line string cannot be a key`),_E(e,t);let n=r(e,vE);return G(n!==null,e,()=>`expected a key, found ${tE(e)}`),n[0]}function bE(e){let t=[yE(e)];for(;;){if(eE(e),e.text[e.pos]!==`.`)return t;e.pos++,eE(e),t.push(yE(e)),G(t.length<=$T,e,`a key with too many parts`)}}var xE=/[\w+.:-]+/uy;function SE(e){let n=r(e,xE);G(n!==null,e,()=>`expected a value, found ${tE(e)}`);let i=n[0];if(i===`true`)return!0;if(i===`false`)return!1;let a=JT(i,e)??QT(i,e)??VT(i,e);return G(a!==void 0,e,()=>`expected a value, found ${t(i)}`),a}function CE(e,n,r,i){G(n[r]===void 0,e,()=>`duplicate key ${t(r)}`),n[r]=i}function wE(e,t){let n=bE(e);return G(e.text[e.pos]===`=`,e,()=>`expected "=" after the key, found ${tE(e)}`),e.pos++,eE(e),{header:!1,keys:n,value:NE(e,t)}}function TE(e,t){e.pos++;let n=[];for(cE(e);e.text[e.pos]!==`]`&&(n.push(NE(e,t+1)),cE(e),e.text[e.pos]!==`]`);cE(e))G(e.text[e.pos]===`,`,e,()=>`expected "," or "]", found ${tE(e)}`),e.pos++;return e.pos++,n}var EE=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===null,DE=new WeakSet;function OE(e,t,n,r,i,a){let o=t;for(let t of r.slice(0,-1)){t in o||n.add(o[t]=Object.create(null));let r=o[t];G(n.has(r),e,()=>a(t,r)),o=r}CE(e,o,r.at(-1),i)}var kE=e=>Array.isArray(e)?`an array`:EE(e)?`an inline table`:`a value`,AE=(e,n)=>`${t(e)} is ${kE(n)}, which a dotted key cannot add to`;function jE(e){eE(e),G(!iE(e)&&e.text[e.pos]!==`#`,e,`an inline table across lines is not supported`)}function ME(e,t){e.pos++;let n=Object.create(null);DE.add(n);let r=new Set;if(jE(e),e.text[e.pos]===`}`)e.pos++;else do{jE(e),G(e.text[e.pos]!==`}`,e,`a trailing comma in an inline table is not supported`);let{keys:i,value:a}=wE(e,t+1);OE(e,n,r,i,a,AE),jE(e);let o=e.text[e.pos];G(o===`,`||o===`}`,e,()=>`expected "," or "}" on the inline table's line, found ${tE(e)}`)}while(e.text[e.pos++]===`,`);return n}function NE(e,t){G(t<=$T,e,`nested too deep`);let n=e.text[e.pos];return n===`"`||n===`'`?_E(e,n):n===`[`?TE(e,t):n===`{`?ME(e,t):SE(e)}function PE(e){let t=e.text.startsWith(`[[`,e.pos);e.pos+=t?2:1,eE(e);let n=bE(e),r=t?`]]`:`]`;return G(e.text.startsWith(r,e.pos),e,()=>`expected "${r}", found ${tE(e)}`),e.pos+=r.length,{header:!0,keys:n,array:t}}function FE(e){eE(e);let t=e.text[e.pos];if(t===`[`)return PE(e);if(!(t===`#`||t===`\r`||iE(e)))return wE(e,0)}function IE(e){if(eE(e),oE(e),!(sE(e)||e.pos===e.text.length))throw G(e.text[e.pos]!==`\r`,e,nE),new PT(`expected the end of the line, found ${tE(e)}`,e.line)}function LE(e,t){return e.arrays.has(t)?`an array of tables`:Array.isArray(t)?`an array`:EE(t)?e.fixed.has(t)?`an inline table`:`a table`:`a value`}var RE=e=>t(e.join(`.`));function zE(e,n,r){let i=e.root;for(let a of r){a in i||e.implicit.add(i[a]=Object.create(null));let r=e.arrays.has(i[a])?i[a].at(-1):i[a];G(EE(r)&&!e.fixed.has(r),n,()=>`${t(a)} is ${LE(e,r)}, which a header cannot add to`),i=r}return i}function BE(e,t,n,r){e.pending.clear();let i=zE(e,t,n.slice(0,-1)),a=n.at(-1);if(r){a in i||e.arrays.add(i[a]=[]),G(e.arrays.has(i[a]),t,()=>`${RE(n)} is ${LE(e,i[a])}, not an array of tables`),i[a].push(e.current=Object.create(null));return}a in i?G(e.implicit.delete(i[a]),t,()=>`${RE(n)} is ${LE(e,i[a])} already`):i[a]=Object.create(null),e.current=i[a]}function VE(e,n,r){return!EE(r)||e.fixed.has(r)?`${t(n)} is ${LE(e,r)}, which a dotted key cannot add to`:e.implicit.has(r)?`a dotted key through ${t(n)}, a table a header made on its way, is not supported`:`${t(n)} is a table declared elsewhere, which a dotted key cannot add to`}function HE(e,t,n,r){OE(t,e.current,e.pending,n,r,(t,n)=>VE(e,t,n)),EE(r)&&e.fixed.add(r)}var UE={__proto__:null,"":`a byte order mark is not read`,"�":`U+FFFD is not supported: a decoder puts it where bytes are not UTF-8`};function WE(e){if(typeof e!=`string`)throw TypeError(`expected a string`);let t=/\p{Cs}|^\uFEFF|\uFFFD/u.exec(e);if(t===null)return;let n=e.slice(0,t.index).split(`
164
+ `).length-1;throw new PT(UE[t[0]]??`a lone surrogate is not well-formed Unicode`,n)}function GE(e){WE(e);let t=Object.create(null),n={text:e,pos:0,line:0},r={root:t,current:t,implicit:new Set,pending:new Set,arrays:new Set,fixed:new Set};for(;n.pos<e.length;){let e=FE(n);e?.header===!0?BE(r,n,e.keys,e.array):e!==void 0&&HE(r,n,e.keys,e.value),IE(n)}return t}function KE(e){if(typeof e!=`string`)return null;let t=/^(?:github:|(?:git\+)?(?:(?:https?|ssh|git):\/\/(?:[\w.~%!$&'()*+,;=:-]*@)?(?:www\.)?github\.com(?::\d+)?\/|ssh:\/\/(?:[\w.~%!$&'()*+,;=-]*@)?(?:www\.)?github\.com:|(?:[^@/:]+@)?(?:www\.)?github\.com:))?([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/iu.exec(e.trim().replace(/#.*$/su,``)),n=t&&`${t[1]}/${t[2]}`;return n&&Pt(`github`,n)?n:null}function qE(e,t){if(typeof e!=`string`)return;let n=/^https?:\/\/(?:www\.)?github\.com\/([^/]+\/[^/]+)\/tree\/[^/#?]+\/([^#?]+)/iu.exec(e.trim());if(n&&n[1].toLowerCase()===t.toLowerCase())try{return decodeURIComponent(n[2])}catch{return}}var JE=e=>e.replaceAll(`\\`,`/`).split(`/`).every(e=>e===``||e===`.`);function YE(e){if(typeof e!=`string`)return{};let t=e.replaceAll(`\\`,`/`).split(`/`);if(t.includes(`..`))return{};let n=t.filter(e=>e!==``&&e!==`.`).join(`/`);return Pt(`directory`,n)?{directory:n}:{}}function XE(e){let t=e?.repository,n=KE(typeof t==`string`?t:t?.url);if(!n)return;let r=t.directory;return typeof r!=`string`&&(r=qE(e.homepage,n),r!==void 0&&JE(r)&&(r=void 0)),{github:n,...YE(r)}}function ZE(e,t){let n=e?.[t];if(typeof n!=`string`)return null;try{return t.endsWith(`.toml`)?GE(n):JSON.parse(n.replace(/^\uFEFF/u,``))}catch{return null}}function QE(e){let t=typeof e==`string`?e:e?.url;if(typeof t!=`string`)return null;let n=t.trim().replace(/#.*$/su,``).replace(/^github:/iu,``).replace(/^git\+/iu,``).replace(/^(?:ssh|git):\/\/(?:git@)?github\.com\//iu,`https://github.com/`).replace(/^git@github\.com:/iu,`https://github.com/`);return/^(?:https?:\/\/)?(?:www\.)?github\.com\//iu.test(n)?gi({repo:{github:n}}):null}function $E(e,t,n){let r=t?.ecosystem??e.ecosystem??`npm`,i=r===`composer`?ZE(t?.files,`composer.json`):r===`cargo`?ZE(t?.files,`Cargo.toml`)?.package:ZE(t?.files,`package.json`),a=t?.name??e.name,o=t?.version??e.version??i?.version,s=gi(t),c=s?{github:s,directory:t.repo.directory}:r===`npm`||r===`soldeer`?XE(i):{github:[i?.repository,i?.support?.source,i?.source?.url,i?.homepage,i?.bugs].map(e=>QE(e)).find(Boolean)},l=typeof c?.directory==`string`?c.directory:void 0,u=s?qr(t.repo.commit):null;return{ecosystem:r,name:a,version:typeof o==`string`?o:void 0,github:c?.github??null,...l===void 0?{}:{directory:l},...u?{commit:u}:{},fileCount:n}}var eD=new WeakMap;function tD(e,t){let n=eD.get(e);if(n||eD.set(e,n=new Map),!n.has(t)){let r=`${t}/`,i=0,a=0;for(let[t,n]of e)t.startsWith(r)&&(i+=fa(n),a+=Yt(n));n.set(t,{bytes:i,loc:a})}return n.get(t)}var nD=new Set([`cargo`,`composer`,`soldeer`]);function rD(e,t,n){if(t?.ecosystem!==void 0)return t.ecosystem;if(!t?.name||/(?:^|\/)vendor\/([^/]+\/[^/]+)$/u.exec(e)?.[1]!==t.name)return;let r=Object.entries(t.files??{}).filter(([t,r])=>typeof r==`string`&&(!n||n.has(`${e}/${t}`)));return r.length>0&&r.every(([e])=>/\.(?:php|phtml)$/iu.test(e))?`composer`:void 0}function iD(e,t=e,n=null){let r={path:``,files:new Map,dirs:new Map};for(let n=0;n<e.length;n++){let i=e[n].split(`/`),a=r,o=t[n].split(`/`);for(let[e,t]of i.slice(0,-1).entries())a.dirs.has(t)||a.dirs.set(t,{path:i.slice(0,e+1).join(`/`),sourcePath:o.slice(0,-(i.length-e-1)).join(`/`),files:new Map,dirs:new Map}),a=a.dirs.get(t);a.files.set(i.at(-1),t[n])}oD(r,n,n?new Set(t):null);let i=e=>{e.package&&(e.packageInfo=$E(e.package,n?.get(e.sourcePath),e.fileCount));for(let t of e.dirs.values())i(t)};return i(r),r}function aD(e,t=null,n=null){let r=/(?:^|\/)node_modules\//u.exec(e),i=r?r.index+ +!!r[0].startsWith(`/`):e.length,a=n?new Set(n):null;for(let[n,r]of t??[]){let t=rD(n,r,a);if(!nD.has(t)||!r.name||n===`.`||!e.startsWith(`${n}/`)&&!n.startsWith(e))continue;let o=(t===`soldeer`?/(?:^|\/)dependencies\//u:/(?:^|\/)vendor\//u).exec(`${n}/`),s=o?o.index+ +!!o[0].startsWith(`/`):n.lastIndexOf(`/`)+1;i=Math.min(i,s)}return e.slice(0,i)}function oD(e,t,n){for(let r of e.dirs.values())oD(r,t,n);e.fileCount=e.files.size+[...e.dirs.values()].reduce((e,t)=>e+t.fileCount,0);let r=t?.get(e.sourcePath),i=rD(e.sourcePath,r,n);if(nD.has(i)&&r.name&&(e.boundary=!0,e.package={name:r.name,version:r.version,ecosystem:i},e.hideSrc=e.dirs.size===1&&e.dirs.has(`src`),e.hideSrc&&(e.srcNameConflicts=new Set([...e.dirs.get(`src`).files.keys()].filter(t=>e.files.has(t))))),/(?:^|\/)dependencies$/u.test(e.path)&&[...e.dirs.values()].some(e=>e.package?.ecosystem===`soldeer`)&&(e.boundary=!0),/(?:^|\/)vendor$/u.test(e.path)){let t=new Map;for(let[n,r]of e.dirs)if(!r.package&&r.files.size===0&&r.dirs.size>0&&[...r.dirs.values()].every(e=>e.package?.ecosystem===`composer`)){e.boundary=!0;for(let[e,i]of r.dirs)t.set(`${n}/${e}`,i)}else nD.has(r.package?.ecosystem)&&(e.boundary=!0),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs)if(r.boundary=!0,n.startsWith(`@`)&&r.files.size===0&&[...r.dirs.keys()].every(e=>!e.startsWith(`.`)&&!e.startsWith(`@`)))for(let[e,i]of r.dirs)i.boundary=!0,i.package??={name:`${n}/${e}`},t.set(`${n}/${e}`,i);else!n.startsWith(`.`)&&!n.startsWith(`@`)&&(r.package??={name:n}),t.set(n,r);e.dirs=t}if(/(?:^|\/)node_modules\/\.pnpm$/u.test(e.path)){e.boundary=!0;let t=new Map;for(let[n,r]of e.dirs){if(r.boundary=!0,r.files.size>0||r.dirs.size!==1)continue;let i=r.dirs.get(`node_modules`);if(!i||i.files.size>0||i.dirs.size!==1)continue;let a=i.dirs.values().next().value;if(!a.package)continue;let o=`${a.package.name.replace(`/`,`+`)}@`;if(!n.startsWith(o))continue;let s=/^(\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?)([_(].*)?$/iu.exec(n.slice(o.length));if(!s)continue;a.package={...a.package,version:s[1]},e.dirs.set(n,a);let c=sD(n,a);t.has(c)||t.set(c,[]),t.get(c).push(a)}for(let e of t.values())if(!(e.length<2)){e.sort((e,t)=>e.path.localeCompare(t.path));for(let[t,n]of e.entries())n.package.variant=t+1}}return e}function sD(e,t){let n=t.package;return n?`${n.name}${n.version?`${nD.has(n.ecosystem)?` - `:`@`}${n.version}`:``}`:e}function cD(e,t,n=``,r=null){let i=t.toLowerCase(),a=(e,t,o=null)=>{let s=new Map([...e.files].filter(([e,a])=>{let s=n&&a.startsWith(n)?a.slice(n.length):a,c=o?.srcNameConflicts.has(e)?`src/${e}`:e;return(!r||r(a))&&(s.toLowerCase().includes(i)||`${t}/${c}`.toLowerCase().includes(i))})),c=new Map;for(let[n,r]of e.dirs){let i=e.hideSrc&&n===`src`,o=a(r,i?t:`${t}/${sD(n,r)}`,i?e:null);o&&c.set(n,o)}return s.size>0||c.size>0?{...e,files:s,dirs:c}:null};return i||r?a(e,``):e}function lD(e,t,n){let r=[e];if(t.hideSrc&&t.dirs.has(`src`)){let e=t.dirs.get(`src`),n=new Map(t.files);for(let[r,i]of e.files)n.set(t.srcNameConflicts.has(r)?`src/${r}`:r,i);return{names:r,node:{...t,sourcePath:e.sourcePath,files:n,dirs:e.dirs}}}if(e===`node_modules`&&t.files.size===0&&t.dirs.size===1&&t.dirs.has(`.pnpm`))return{names:[`node_modules`,`.pnpm`],node:t.dirs.get(`.pnpm`)};let i=Math.max(12,24-Math.max(0,n-1)*2);for(;!t.boundary&&t.files.size===0&&t.dirs.size===1&&r.length<3;){let[e,n]=t.dirs.entries().next().value;if(n.boundary||[...r,e].join(`/`).length>i)break;r.push(e),t=n}return{names:r,node:t}}function uD(e){if(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.currentTarget,n=e.target.closest(`summary, .bundle-code-tree-link`);if(!n||!t.contains(n)||![`ArrowDown`,`ArrowUp`,`ArrowRight`,`ArrowLeft`,`Home`,`End`].includes(e.key))return;e.preventDefault(),e.stopPropagation();let r=[...t.querySelectorAll(`summary, .bundle-code-tree-link`)].filter(e=>{let t=e.parentElement;return e.tagName===`SUMMARY`&&(t=t.parentElement),!t.closest(`details:not([open])`)}),i=r.indexOf(n),a=n.tagName===`SUMMARY`?n.parentElement:null,o=n;e.key===`ArrowDown`&&(o=r[Math.min(i+1,r.length-1)]),e.key===`ArrowUp`&&(o=r[Math.max(i-1,0)]),e.key===`Home`&&(o=r[0]),e.key===`End`&&(o=r.at(-1)),e.key===`ArrowRight`&&a&&(a.open?o=r[i+1]??n:n.click()),e.key===`ArrowLeft`&&(a?.open?n.click():o=(a??n).parentElement.closest(`details`)?.querySelector(`summary`)??n),o?.focus()}function dD([e,t],[n,r]){return sD(e,t).localeCompare(sD(n,r))||t.path.localeCompare(r.path)}function fD(e,t=0,n=[]){for(let[r,i]of[...e.dirs.entries()].toSorted(dD))fD(lD(r,i,t).node,t+1,n);for(let[,t]of[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)))n.push(t);return n}function pD(e,t,n,r,i){let a=[t,n].filter(Boolean).join(`/`),o=qr(r);return{href:`https://github.com/${e}/blob/${o??`HEAD`}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,github:e,path:a,commit:o,package:typeof i?.name==`string`&&i.name?{name:i.name,version:i.version,ecosystem:i.ecosystem}:null}}function mD(e,t,n=null){if(typeof t!=`string`)return null;let r=e?.npm?.manifest;if(r){let e=qr(r.gitHead);return r.github?.github&&e?pD(r.github.github,_i({directory:r.github.directory??``}),t,e,null):null}let i=e?.repository;if(i)return pD(i.repo,i.path,t,i.commit,null);if(e?.kind!==`stasis`)return null;let a=e.bundle,o=null;for(let[e,n]of a?.modules??[]){let r=e===`.`?t:t.startsWith(`${e}/`)?t.slice(e.length+1):null;if(r!==null&&Object.hasOwn(n.files,r)){o={dir:e,info:n,rel:r};break}}if(!o)return null;let{dir:s,info:c,rel:l}=o,u=s===`.`?void 0:rD(s,c,null)??(s.split(`/`).includes(`node_modules`)?`npm`:void 0);if(u===void 0){let e=gi(a),r=gi({repo:{github:n?.github}}),i=e??r;return i?pD(i,typeof a.repo?.directory==`string`?_i(a.repo):r?.toLowerCase()===i.toLowerCase()?_i({directory:n.directory}):``,t,e?a.repo?.commit:void 0,null):null}let d=$E({name:c.name,ecosystem:u},c,0);return d.github?pD(d.github,d.directory??``,l,d.commit,d):null}function hD(e,t=null){return k`<a class="bundle-code-github-link" href="${e.href}" target="_blank" rel="noopener noreferrer" aria-label="Open on GitHub" data-tooltip="${e.path}" data-tooltip-repo="${e.github}" data-tooltip-commit="${e.commit??j}" data-tooltip-commit-info="${Le(t,e.commit,e.github)??j}" data-tooltip-package="${e.package?.name??j}" data-tooltip-ecosystem="${e.package?.ecosystem??j}" data-tooltip-version="${e.package?.version??j}">${O(aa)}${e.package?k`<span hidden data-tooltip-package-icon>${Tt(e.package.ecosystem)}</span>`:j}</a>`}var gD=`.bundle-code-main, .bundle-source-modal, .bundle-search-side`,_D=new Map,vD=new WeakMap,yD=null;function bD(e){if(!e){queueMicrotask(xD);return}if(xD(),_D.has(e))return;if(!e.isConnected){queueMicrotask(()=>{e.isConnected&&bD(e)});return}let t=e.querySelector(`:scope > .bundle-source-code`);if(!t)return;let n=new ResizeObserver(()=>{vD.get(e)?.width!==SD(e)&&CD(e)});n.observe(t),n.observe(e.parentElement);let r=new MutationObserver(()=>CD(e));r.observe(t,{childList:!0,subtree:!0,characterData:!0}),r.observe(e,{attributes:!0,attributeFilter:[`class`]}),_D.set(e,()=>{n.disconnect(),r.disconnect()})}function xD(){for(let[e,t]of _D)e.isConnected||(t(),_D.delete(e))}function SD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`);if(!t||!n)return 0;let r=getComputedStyle(t);return e.parentElement.clientWidth-n.getBoundingClientRect().width-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight)}function CD(e){let t=e.querySelector(`:scope > .bundle-source-code`),n=e.querySelector(`:scope > .bundle-source-lineno-col`),r=SD(e);if(!t||!n||!e.isConnected||r<=0)return;let i=e.classList.contains(`is-wrapped`),a=vD.get(e)?.rows??new Map,o=null;for(let e of n.children)if((!o||(a.get(e)??1)<a.get(o))&&(o=e),!a.has(e))break;let{rows:s,toggles:c}=wD(t,r,i,o?parseFloat(getComputedStyle(o).height)/(a.get(o)??1):parseFloat(getComputedStyle(t).lineHeight)),l=new Map;for(let[e,t]of s){let r=n.children[e];if(!r)continue;let i=`"${`\\A `.repeat(t-1)} "`;r.style.getPropertyValue(`--wrap-breaks`)!==i&&r.style.setProperty(`--wrap-breaks`,i),l.set(r,t)}for(let e of a.keys())l.has(e)||e.style.removeProperty(`--wrap-breaks`);vD.set(e,{rows:l,width:r});let u=e.closest(gD)?.querySelector(`[data-bundle-source-wrap]`);u&&(u.hidden=!c)}function wD(e,t,n,r){let i=getComputedStyle(e);yD??=document.createElement(`canvas`).getContext(`2d`),yD.font=`${i.fontSize} ${i.fontFamily}`;let a=t/(2*yD.measureText(`0`).width),o=[],s=null,c=null,l=0,u=0,d=()=>{l>a&&c&&o.push({line:u,first:s,last:c}),u++,l=0,s=c=null},f=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=f.nextNode();e;e=f.nextNode()){let t=e.data;for(let n=0;n<t.length;){let r=t.indexOf(`
165
+ `,n),i=r===-1?t.length:r;if(i>n){s??={node:e,from:n,to:n+(t.codePointAt(n)>65535?2:1)};let r=i;for(;r>n&&(t[r-1]===` `||t[r-1]===` `);)r--;r>n&&(c={node:e,from:r-(r-2>=n&&t.codePointAt(r-2)>65535?2:1),to:r}),l+=i-n}if(r===-1)break;d(),n=r+1}}d();let p=new Map,m=document.createRange(),h=({node:e,from:t,to:n})=>(m.setStart(e,t),m.setEnd(e,n),m.getBoundingClientRect()),g=e.getBoundingClientRect().left+e.clientLeft+parseFloat(i.paddingLeft),_=!1;for(let{line:e,first:i,last:a}of o){let o=!!i.node.parentElement.closest(`.bundle-source-long-line`);if(n||o){let t=Math.round((h(a).top-h(i).top)/r)+1;t>1&&p.set(e,t),t>1&&!o&&(_=!0)}else!_&&h(a).right-g>t+.5&&(_=!0)}return{rows:p,toggles:_}}function TD(e){let t=e.closest(gD)?.querySelector(`.bundle-source-code-wrap`),n=t?.querySelectorAll(`.bundle-source-lineno-row`);if(!n?.length)return()=>{};let r=t.getBoundingClientRect().top,i=n.length-1,a=0;for(;a<i;){let e=a+i>>1;n[e].getBoundingClientRect().bottom<=r?a=e+1:i=e}let o=n[a],s=o.getBoundingClientRect().top-r;return()=>{o.isConnected&&(t.scrollTop+=o.getBoundingClientRect().top-r-s)}}var ED=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`css`,`json`]),DD=4194304;function OD(e){let t=/\.([a-z]+)$/iu.exec(e)?.[1]?.toLowerCase();return ED.has(t)?t:null}function kD(e,t,n=()=>pe(e,t)){return OD(e)!==null&&fa(t)<=DD&&n().category===`minified`}var AD=e=>e.bundle??e.json??e,jD=/\\(?:x([\dA-Fa-f]{2})|u([\dA-Fa-f]{4})|u\{([\dA-Fa-f]{1,6})\}|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[\s\S]))/gu,MD={b:`\b`,f:`\f`,n:`
166
+ `,r:`\r`,t:` `,v:`\v`},ND=e=>e.replaceAll(jD,(e,t,n,r,i,a)=>{if(i!==void 0)return String.fromCodePoint(Number.parseInt(i,8));if(a!==void 0)return/^(?:\r\n|[\n\r\u2028\u2029])$/u.test(a)?``:MD[a]??a;let o=Number.parseInt(t??n??r,16);return o<=1114111?String.fromCodePoint(o):e}),PD={i:`ı`,k:`K`,s:`ſ`},FD=e=>new Set([e,e.toLowerCase(),e.toUpperCase(),...PD[e.toLowerCase()]??``]);function ID(e){let t=String.raw`(?=[.\\${[...e].map(e=>String.raw`\u{${e.codePointAt(0).toString(16)}}`).join(``)}])`,n=e=>String.raw`${e}(?=${t}((?:[^${e}\\\n]|\\(?:\r\n|[\s\S]))*)${e})`;return new RegExp(String.raw`(?<=(?:^|[^\\])(?:\\\\)*)(?:${n(`"`)}|${n(`'`)}|\x60(?=${t}((?:[^\x60\\]|\\[\s\S])*)\x60))`,`gu`)}function LD(e,t){return t.includes(`\\`)?e==="`"?t.replaceAll(/\\[\s\S]/gu,``).includes("${")?[]:[ND(t),t]:[ND(t)]:e==="`"&&t.includes("${")?[]:[t]}var RD=/(?<=(?<![\p{ID_Continue}$.#])(?:import|from)[ \t]*)/uy,zD=/(?<=(?<![\p{ID_Continue}$.#])import[ \t]*\([ \t]*)/uy,BD=/[ \t]*[,)]/uy,VD=(e,t,n)=>(e.lastIndex=n,e.test(t)),HD=(e,t,n,r)=>t!=="`"&&VD(RD,e,n)||VD(zD,e,n)&&VD(BD,e,r),UD=/^\.\.?(?:\/|$)/u,WD=/\.(?:json|node)$/u,GD=[`.js`,`.json`,`.node`],KD=/(?:^|\/)\.{0,2}$/u,qD=/[^/.][^/]*\.[^/]*$/u;function JD(e,t){let n=[...e];for(let e of t.split(`/`)){if(e===`..`&&n.pop()===void 0)return null;e!==`..`&&e!==`.`&&e!==``&&n.push(e)}return n}var YD=(e,t)=>t!==null&&e.every((e,n)=>n<t.length&&(t[n]===e||rO(t[n])===e))?t.slice(e.length).join(`/`):null,XD=(e,t,n)=>YD(e,JD([...e,...t===``?[]:t.split(`/`)],n)),ZD=e=>new Set([e,e.replaceAll(`\\`,`/`)]),QD=(e,t,n)=>[...ZD(n)].filter(e=>UD.test(e)).map(n=>XD(e,t,n)),$D=/[%?#\\\t\n\r]|[\0- ]$/u;function eO(e,t,n){if(!UD.test(n))return null;if(!$D.test(n))return XD(e,t,n);try{let r=[...e,...t===``?[]:t.split(`/`)].map(e=>`${encodeURIComponent(e)}/`).join(``),{pathname:i}=new URL(n,`file:///${r}`);return/%(?:2f|5c)/iu.test(i)?null:YD(e,JD([],decodeURIComponent(i)))}catch{return null}}var tO=/^(?:@[^/]+\/)?[^/@.][^/]*$/u,nO=e=>typeof e==`string`&&tO.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)?[`node_modules`,...e.split(`/`)].map(rO):[],rO=e=>e.toWellFormed().normalize(`NFC`).toUpperCase().toLowerCase();function iO(e){let t=new Map,n=new Map,r=(e,t,n)=>e.has(t)?e.get(t).push(n):e.set(t,[n]);for(let i of e.keys()){let e=/(?:^|\/)\.gitignore$/u.test(i)?[i,i.replace(/\.gitignore$/u,`.npmignore`)]:[i];for(let a of e)r(n,rO(a),i),r(t,a,i)}let i=e=>n.get(e)??[];return{installed:e=>e===null?[]:i(rO(e)),cased:{named:e=>t.get(e)??[],fold:e=>e},folding:{named:i,fold:rO}}}function aO(e){let t=[],n=[e];for(;n.length>0;){let e=n.pop();if(typeof e==`string`)t.push(e);else if(e&&typeof e==`object`)for(let t of Object.values(e))n.push(t)}return t}function oO(e,t){return(e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).some(t)?Object.entries(e):[[`.`,e]]).flatMap(([e,t])=>aO(t).map(t=>({key:e,pattern:e.includes(`*`),target:t})))}function sO(e){let t={name:null,main:null,targets:[],exports:[],hasExports:!1,imports:[]};if(typeof e!=`string`)return t;try{let{name:t,main:n,exports:r,imports:i}=JSON.parse(e.replace(/^\uFEFF/u,``)),a=oO(r,e=>e.startsWith(`.`)).filter(({key:e,target:t})=>e.startsWith(`.`)&&t.startsWith(`./`)),o=oO(i,e=>e.startsWith(`#`)).filter(({key:e})=>e.startsWith(`#`)),s=[...a,...o.filter(({target:e})=>e.startsWith(`./`))];return{name:t,main:typeof n==`string`&&n!==``?n:null,targets:s,exports:a,hasExports:r!=null,imports:o}}catch{return t}}var cO=e=>e.replaceAll(/\/+/gu,`/`).replace(/^\//u,``);function lO(e,t,n,r,i){let a=eO(t,n,r);if(a===null||!i||!a.includes(`*`))return[a];let o=rO(a).split(`*`),s=o.length-1,c=o[0].replace(/\/+$/u,``),l=cO(o.join(`/`)),u=o.at(-1).replace(/^\/+/u,``),d=e=>e.includes(!0)&&e.includes(!1)?[``,`/`]:[``],f=d(o.slice(1).map(e=>e.startsWith(`/`))),p=d(o.slice(0,-1).map((e,t)=>e.endsWith(`/`)||t===0&&e===``)).flatMap(e=>f.map(t=>({after:t,at:cO(`${o[0]}${e}x`).length-1,before:e,length:cO(o.join(`${e}x${t}`)).length})));return e.filter(([e,t])=>!t.startsWith(c)||!t.endsWith(u)||o.at(-1)===``&&(qD.test(e)||se.test(e))?!1:t===l||p.some(({after:e,at:n,before:r,length:i})=>{let a=(t.length-i)/s+1;if(!Number.isInteger(a)||a<=0)return!1;let c=o.join(`${r}${t.slice(n,n+a)}${e}`);return c===t||(c.includes(`//`)||c.startsWith(`/`))&&cO(c)===t})).map(([e])=>e)}var uO=65536,dO=Symbol(`every file`),fO=(e,t)=>e.flatMap(({dir:e,key:n,target:r})=>{let i=n.indexOf(`*`);if(i===-1?n!==t:i!==n.lastIndexOf(`*`)||t.length<n.length||!t.startsWith(n.slice(0,i))||!t.endsWith(n.slice(i+1)))return[];if(i===-1)return[{dir:e,target:r}];let a=t.slice(i,t.length-(n.length-i-1));return[{dir:e,target:(r.split(`*`).length-1)*a.length>uO?dO:r.replaceAll(`*`,a)}]}),pO=(e,{exports:t,hasExports:n},r)=>n?fO(t.map(e=>({...e,dir:``})),r).map(({target:t})=>t===dO?dO:eO(e,``,t)):[eO(e,``,r)];function mO({named:e,fold:t},n,r){let i=n===``?null:t(n),a=i===null?void 0:r.find(t=>e(`${i}${t}`).length>0);return a===void 0?null:`${n}${a}`}var hO=(e,t)=>mO(e,t===``?`index`:`${t}/index`,GD);function gO(e,t,n,r,i){if(r===null)return[];let a=i?null:mO(t,r,[``,...GD]);if(a!==null)return[a];let o=t.named(r===``?`package.json`:`${t.fold(r)}/package.json`).map(t=>sO(e.get(t)).main).filter(e=>e!==null).flatMap(e=>[...ZD(e)].map(e=>XD(n,r,e))).filter(e=>e!==null).map(e=>mO(t,e,[``,...GD])??hO(t,e)).filter(e=>e!==null);return o.length>0?o:[hO(t,r)].filter(e=>e!==null)}var _O=e=>[...e].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>sO(t).imports.map(({key:t,target:n})=>({dir:e.slice(0,-13),key:t,target:n}))),vO=64,yO=new WeakMap;function bO(e){let t=yO.get(AD(e));if(t)return t;t=new Set;let n=Vt(e),{installed:r,cased:i,folding:a}=iO(n),o=[],s=sO(n.get(n.has(`package.json`)?`package.json`:r(`package.json`)[0])),c=nO(s.name),l=(e,t)=>!(t===`require`?WD:qD).test(e),u=new Set,d=(e,i)=>{let a=e===null?null:`${i}\0${l(e,i)}\0${rO(e)}`;if(!(a===null||u.has(a))){u.add(a);for(let a of r(e)){let r=n.get(a);t.has(a)||kt(a,r)||r?.runnable===!1||!l(e,i)&&!l(a,i)||(t.add(a),typeof r==`string`&&o.push(a))}}},f=(e,t)=>{let r=gO(n,a,c,e,t);if(r.length>0)for(let a of[...r,...gO(n,i,c,e,t)])d(a,`require`)};f(``,!0);let p=[...n].filter(([e])=>/(?:^|\/)package\.json$/iu.test(e)).flatMap(([e,t])=>sO(t).targets.map(({pattern:t,target:n})=>[e.slice(0,-13),n,t&&n.includes(`*`)]));if(p.filter(([,,e])=>e).length>vO)for(let e of n.keys())d(e,`require`);else{let e=p.some(([,,e])=>e)?[...n.keys()].map(e=>[e,rO(e)]):[];for(let[t,n,r]of p)for(let i of lO(e,c,t,n,r))d(i,`require`)}for(let[e,t]of n)kt(e,t)&&o.push(e);let m=_O(n),h=e=>c.length>0&&e.length>s.name.length&&`/\\`.includes(e[s.name.length])&&rO(e.slice(0,s.name.length))===c.slice(1).join(`/`),g=new Set,_=ID([...c.length>0?FD(s.name[0]):[],...m.length>0?[`#`]:[]]),v=e=>pO(c,s,e),y=!1,b=(e,t)=>{if(e!==dO)return d(e,t);if(!y)for(let e of n.keys())d(e,`require`);y=!0},x=(e,t)=>{if(!g.has(`${t}\0#\0${e}`)){g.add(`${t}\0#\0${e}`);for(let{dir:n,target:r}of fO(m,e)){let e=r===dO?[dO]:r.startsWith(`./`)?[eO(c,n,r)]:h(r)?v(`./${r.slice(s.name.length+1)}`):c.length>0&&r===s.name?v(`.`):[];for(let n of e)b(n,t)}}},ee=(e,t,n)=>{if(e.startsWith(`#`))return x(e,n()?`import`:`require`);let[r,i]=h(e)?[``,`./${e.slice(s.name.length+1)}`]:[t,e];if(!UD.test(i.replaceAll(`\\`,`/`)))return;let a=n()?`import`:`require`,o=`${a}\0${r}\0${i}`;if(!g.has(o)){if(g.add(o),h(e))for(let e of v(i))b(e,a);if(!(h(e)&&s.hasExports)){if(a===`require`)for(let e of QD(c,r,i))f(e,KD.test(i));d(eO(c,r,i),`import`)}}};for(let e=0;e<o.length;e++){let t=o[e],r=n.get(t),i=t.includes(`/`)?t.slice(0,t.lastIndexOf(`/`)):``;for(let{1:e,2:t,3:n,index:a}of r.matchAll(_)){let o=e??t??n,s=r[a];for(let e of LD(s,o))ee(e,i,()=>HD(r,s,a,a+o.length+2))}}return yO.set(AD(e),t),t}var xO=new WeakMap;function SO(e,t){let n=xO.get(AD(e));if(n||xO.set(AD(e),n=new Map),!n.has(t)){let r=Vt(e).get(t);n.set(t,Me(t,typeof r==`string`?r:null,Ht(e).get(t),bO(e).has(t)))}return n.get(t)}var CO=(e,t=e=>e)=>e?new Map(Object.entries(e).map(([e,n])=>[t(e),n])):null,wO=({stamps:e,readability:t,runsCode:n,exfiltration:r,hosts:i})=>({stamps:e,runsCode:CO(n),exfiltration:CO(r),hosts:CO(i),readability:t&&{...t,controls:CO(t.controls,Number)}});function TO(e){switch(e.id){case`held-runs-code`:case`held-credentials`:case`held-exfiltration`:case`held-remote`:case`held-ip-lookup`:return{...e,files:e.files.map(e=>({...e,found:CO(e.found),...e.added?{added:CO(e.added)}:{}}))};case`popularity`:return{...e,tier:e.tier??1/0};default:return e}}var EO=e=>({oldVersion:e.oldVersion??null,findings:e.findings.map(TO),files:new Map(Object.entries(e.files).map(([e,t])=>[e,wO(t)])),dependencies:e.dependencies,score:e.score??null}),DO=e=>e?.npm?e.risk?.()?.files??null:null,OO={stamps:[],readability:null,runsCode:null,exfiltration:null,hosts:null};function kO(e,t){return e?.npm?DO(e)?.get(t)??OO:SO(e,t)}var AO=({names:e,loop:t})=>[e>=le&&`${e.toLocaleString(`en`)}${e===de?` or more`:``} names such as _0x1a2b`,t&&`while(!![])`].filter(Boolean).join(`, and `);function jO(e,t,n){return n===Vt(e).get(t)&&typeof n==`string`?kO(e,t).readability:NO(e,t,n)}var MO=new WeakMap;function NO(e,t,n){let r=MO.get(e);r||MO.set(e,r=new Map);let i=r.get(t);if(i?.text===n)return i.read;let a=pe(t,n);return r.set(t,{text:n,read:a}),a}function PO(e,t){let n=Se(e,t),r=n.slice(0,6).map(([e,t])=>`U+${e.toString(16).toUpperCase().padStart(4,`0`)} \xD7${t.toLocaleString(`en`)}`);return`${be.get(t).name}: ${r.join(`, `)}${n.length>6?`, and ${n.length-6} more`:``}`}var FO=({longLines:e,longest:t})=>`${e.toLocaleString(`en`)} ${e===1?`line`:`lines`} over ${ae} characters, the longest ${t.toLocaleString(`en`)}`;function IO(e){let{average:t,category:n,longLines:r,inlineMap:i}=e,a=()=>FO(e);switch(n){case`binary`:return`Not UTF-8 text, or holding a NUL: there is no text to read`;case`map`:return`A source map`;case`inline-map`:return`Inline source map, ${Wr(i)}${r>0?`; minified: ${a()}`:``}`;case`minified`:return`Minified: ${r>0?a():`its lines of code ${t.toLocaleString(`en`)} characters long on average, strings and comments aside, with few spaces`}`;default:return j}}function LO(e,t=!1){if(!e)return j;let n=he(e),{tag:r,short:i,mark:a}=be.get(n);return k`<span class="${`npm-encoding-tag${a?` is-${a}`:``}`}" data-tooltip="${IO({...e,category:n})}">${t?i??r:r}</span>`}function RO(e){let t=e?.kind;return t!==`ascii`&&t!==`utf8`||he(e)===t?j:LO({...e,category:t})}function zO(e,t=null){let n=e?_e(e).filter(n=>[`controls`,`invisible`,`long`].includes(n)&&(t===null||t.includes(ve(e,n)))):[];if(n.length===0)return j;let r=t=>t===`long`?`${FO(e)}${e.category===`long`?`, among readable ones`:``}`:PO(e.controls,t);return n.map(t=>k`<span class="${`npm-flag-tag is-${ve(e,t)}`}" data-tooltip="${r(t)}">${be.get(t).tag}</span>`)}function BO(e){if(!e)return j;let t=he(e);return t===`ascii`||t===`map`?zO(e):VO(e)}var VO=e=>e?k`${zO(e)}${LO(e)}`:j;function HO(e,t,n,r=!0){let{stamps:i,readability:a}=kO(e,t),o=r&&i.some(({name:e})=>e===`Large`),s=a?.obfuscation;return!o&&!s?j:k`${o?k`<span class="npm-flag-tag is-notice" data-tooltip="${`A code file of ${Wr(n)}, 256 KiB or more`}">Large</span>`:j}${s?k`<span class="npm-flag-tag is-warn" data-tooltip="${`An obfuscator's fingerprint: ${AO(s)}`}">Obfuscated</span>`:j}`}var UO=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5.5 2.5c-1.4 0-2 .6-2 2v1.6c0 .9-.5 1.6-1.5 1.9 1 .3 1.5 1 1.5 1.9v1.6c0 1.4.6 2 2 2M10.5 2.5c1.4 0 2 .6 2 2v1.6c0 .9.5 1.6 1.5 1.9-1 .3-1.5 1-1.5 1.9v1.6c0 1.4-.6 2-2 2"/></svg>`,WO=e=>e?.status===`loading`?`Pretty-printing…`:e?.status===`error`?`Couldn't pretty-print${e.of>1?` ${e.failed} of ${e.of} files`:``}: ${e.message}`:`Pretty-print`,GO=8,KO=4,qO=2,JO=30,YO=2,XO=`The server's copy is of another file than the one open.`,ZO=`The server didn't pretty-print this file.`,QO=e=>!(e>=400&&e<500&&e!==429),$O=5e3,ek=3e5,tk=new Map;function nk(e,t,n,r){if(!t?.retry){tk.delete(e);return}let i=tk.get(e)??0;tk.set(e,i+1),setTimeout(()=>{n()&&r()?.()},Math.min($O*2**i,ek))?.unref?.()}var rk=new Map,ik=0,ak=()=>ik,ok=new Map,sk=(e,t)=>`${e.integrity}\0${t}`,ck=new Map,lk=new Map,uk=new WeakMap;function dk(e,t,n,r){if(!(t?.managedId||t?.npm)||typeof r!=`string`)return!1;let i=uk.get(e);return i||uk.set(e,i=new Map),i.has(n)||i.set(n,kD(n,r,()=>NO(e,n,r))),i.get(n)}var fk=!1,pk=new Set,mk=new Set;function hk(e,t){rk.delete(e),rk.set(e,t),fk||(fk=!0,mk=pk,pk=new Set,setTimeout(()=>{fk=!1})),pk.add(e),gk()}function gk(){for(let[e,t]of rk){if(rk.size<=GO)break;pk.has(e)||mk.has(e)||t.status===`loading`||(rk.delete(e),ok.delete(e))}}var _k=0,vk=[];async function yk(e){_k<YO?_k++:await new Promise(e=>{vk.push(e)});try{return await e()}finally{let e=vk.shift();e?e():_k--}}async function bk(e,t,n,r,i,a){let o;try{let e=a??await Ei(i),{text:t,source:s}=await yk(()=>n.npm?Pb(n.npm.name,n.npm.version,r,e):Mb(n.managedId,r,e));o=s===e&&typeof t==`string`?{status:`ready`,text:t,hash:await Ei(t)}:{status:`error`,message:XO,retry:!0}}catch(n){if(n?.name===`AbortError`){rk.get(e)===t&&(rk.delete(e),ok.delete(e));return}o={status:`error`,message:n?.message??String(n),retry:QO(n?.status)}}if(rk.get(e)!==t)return;rk.set(e,o),ik++;let s=ok.get(e),c=o.status===`error`&&o.retry;c||ok.delete(e),nk(`file ${e}`,c?o:null,()=>rk.get(e)===o&&rk.delete(e),()=>ok.get(e)),s?.(),gk()}function xk(){for(let[e,t]of ck){if(ck.size<=KO)break;t.rest&&ck.delete(e)}}function Sk(e,t){let n=e.notifiers.get(t);e.notifiers.delete(t),n?.()}async function Ck(e,t,n,{npm:r}){let i=Vt(n),a;try{await Nb(r.name,r.version,async({path:e,source:n,text:r,status:a,message:o})=>{let s=i.get(e),c=typeof r==`string`&&typeof s==`string`&&n===await Ei(s)?{status:`ready`,text:r,hash:await Ei(r)}:typeof r==`string`?{status:`error`,message:XO,retry:!0}:{status:`error`,message:o,retry:QO(a)};t.copies.set(e,c),ik++,Sk(t,e)}),a={status:`error`,message:ZO,retry:!1}}catch(n){if(n?.name===`AbortError`){ck.get(e)===t&&ck.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:QO(n?.status)}}t.rest=a,ik++;for(let e of[...t.notifiers.keys()])Sk(t,e);xk()}function wk(e,t,n,r,i){let a=e.integrity,o=ck.get(a);return ck.delete(a),o||(o={copies:new Map,notifiers:new Map,rest:null},Ck(a,o,e,t)),ck.set(a,o),xk(),r===Vt(e).get(n)?(o.copies.get(n)??o.rest)||(o.notifiers.set(n,i),{status:`loading`}):{status:`error`,message:XO,retry:!1}}function Tk(e,t,n,r,i){return P.bundleSourcePretty?t.npm?wk(e,t,n,r,i):Ek(e,n,r,i,t):null}function Ek(e,t,n,r,i=e){let a=sk(e,t),o=rk.get(a),s=o??{status:`loading`};return hk(a,s),(s.status===`loading`||s.retry)&&ok.set(a,r),o||bk(a,s,i,t,n,e.fileHashes?.get(t)),s}var Dk=new Set;function Ok(e){e&&(Dk.size===0&&setTimeout(()=>{let e=[...Dk];Dk.clear();for(let t of e)t()},JO),Dk.add(e))}function kk(){for(let[e,t]of lk){if(lk.size<=qO)break;t.ended&&lk.delete(e)}}async function Ak(e,t,n,r){let i={base:n,other:r},a=null;try{let e=async({side:e,path:n,source:r,text:a,status:o,message:s})=>{if(typeof a!=`string`&&QO(o))return;let c=Object.hasOwn(i,e)?i[e]:null,l=c&&Vt(c).get(n),u=typeof a==`string`&&typeof l==`string`&&r===(c.fileHashes?.get(n)??await Ei(l));t.copies.set(`${e}\0${n}`,u?{status:`ready`,text:a,hash:await Ei(a)}:typeof a==`string`?{status:`error`,message:XO,retry:!0}:{status:`error`,message:s,retry:QO(o)}),ik++,Ok(t.notify)};await(n.npm?Ib(n.npm.name,n.npm.version,r.npm.version,e):Fb(n.managedId,r.managedId,e))}catch(n){if(n?.name===`AbortError`){lk.get(e)===t&&lk.delete(e);return}a={status:`error`,message:n?.message??String(n),retry:QO(n?.status)}}Object.assign(t,{ended:!0,rest:a}),ik++,nk(`comparison ${e}`,a,()=>lk.get(e)===t&&lk.delete(e),()=>t.notify),Ok(t.notify),kk()}function jk(e,t,n,r,i,a){let o=`${e.integrity}\0${t.integrity}`,s=lk.get(o);lk.delete(o),s||(s={copies:new Map,notify:null,ended:!1,rest:null},Ak(o,s,e,t)),lk.set(o,s),kk();let c=n===`base`?e:t;return i===Vt(c).get(r)?(s.notify=a,s.copies.get(`${n}\0${r}`)??s.rest??(s.ended?Ek(c,r,i,a):{status:`loading`})):{status:`error`,message:XO,retry:!1}}function Mk(){if(P.bundleSourcePretty=!P.bundleSourcePretty,!P.bundleSourcePretty)return;let e=e=>e.status===`error`&&e.retry;for(let[t,n]of rk)e(n)&&rk.delete(t);for(let[t,n]of ck)n.rest&&(e(n.rest)||[...n.copies.values()].some(e))&&ck.delete(t);for(let[t,n]of lk)n.ended&&(n.rest?e(n.rest):[...n.copies.values()].some(e))&&lk.delete(t)}function Nk(e,t,n){return e?.bundle===t&&e.files[e.at]===n?e:{bundle:t,files:n?[n]:[],at:0}}function Pk(e,t){if(e.files[e.at]===t)return e;let n=[...e.files.slice(0,e.at+1),t];return{...e,files:n,at:n.length-1}}function Fk(e,t){return{...e,at:Math.max(0,Math.min(e.at+t,e.files.length-1))}}function Ik(e){let t=e.slice(e.lastIndexOf(`/`)+1);return t===`package-lock.json`||t===`npm-shrinkwrap.json`?`npm`:t===`pnpm-lock.yaml`||/^pnpm-lock\..+\.yaml$/u.test(t)?`pnpm`:t===`yarn.lock`?`yarn`:null}var Lk=4,Rk=new Map;function zk(e,t,n,r,i){if(!P.bundleSourceLockfile)return null;let a=Ik(t);if(a===null)return null;let o=`${e.integrity}\0${t}`,s=Rk.get(o)??{status:`loading`};Rk.delete(o),Rk.set(o,s);for(let e of Rk.keys())Rk.size>Lk&&Rk.delete(e);if(s.status===`loading`&&!s.started){s.started=!0;let e=r.get(`${t.slice(0,t.lastIndexOf(`/`)+1)}package.json`);import(`./chunk-IZ7POWI3.js`).then(({readLockfile:t})=>Object.assign(s,{status:`ready`,lockfile:{id:o,...t(a,n,{manifest:e})}})).catch(e=>Object.assign(s,{status:`error`,message:e instanceof Error?e.message:String(e)})).finally(i)}return s}function Bk(){P.bundleSourceLockfile=!P.bundleSourceLockfile;for(let[e,t]of Rk)t.status===`error`&&Rk.delete(e)}var Vk=e=>e?.status===`loading`?`Reading the lockfile…`:e?.status===`error`?`Couldn't read the lockfile: ${e.message}`:`View lockfile`,Hk=e=>`link:${e}`,Uk=e=>e===`.`?`__own__`:e;function Wk(e){let t=Object.entries(e?.importers??{}),n=Object.entries(e?.packages??{}),r=new Map([...t.map(([e])=>[Hk(e),Uk(e)]),...n.map(([e,t])=>[e,t.name])]),i=new Map([...t.map(([e,t])=>[Hk(e),t]),...n]),a=e=>r.has(e)?e:e.startsWith(`link:`)&&r.has(e.slice(5))?e.slice(5):null,o=Object.create(null);for(let[e,{dependencies:t}]of i)o[e]={imports:[...new Set(t.map(a).filter(t=>t!==null&&t!==e))]};let s=[...i.keys()];if(s.length===0)return null;let c=[...new Set(t.map(([e])=>Uk(e)))];return{treeData:o,files:s,ownCounts:new Map,transitiveCounts:null,severitySets:new Map,colorSets:new Map,fileFindings:new Map,options:{pkgOf:e=>r.get(e),packageInfoOf:e=>({version:i.get(e).version})},packagesOnly:!0,supportsLayers:!0,layerRoots:{roots:c,appImports:[]},ownSourcePackages:new Set(c),entryPackages:new Set(c),ownSourceFiles:new Set(t.map(([e])=>Hk(e))),hasIssues:!1,issuesShown:!1,viewId:e.id??null}}var Gk=[`graph`,`matrix`,`dependencies`],Kk=class extends ga{static properties={lockfile:{attribute:!1}};static styles=ha`:host{display:flex;flex-direction:column;min-height:0}.slot{display:flex;flex-direction:column;flex:1;min-height:0}graph-layout{flex:1;min-height:0;border:none;border-radius:0}.empty{color:var(--muted)}`;constructor(){super(),this.lockfile=null,this._prep=null,this._graphState=null,this._attachment=0,this._bundleLayout=null,this.addEventListener(`click`,e=>this._click(e)),this.addEventListener(`input`,e=>this._input(e))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this._prep&&this._attach()}disconnectedCallback(){super.disconnectedCallback(),this._detach()}willUpdate(e){e.has(`lockfile`)&&(this._prep=Wk(this.lockfile),this._prep||this._detach(),w.selected=null,w.solo=null,w.focusedPkg=null)}render(){return this.lockfile?this._prep?k`<div class="slot"></div>`:k`<p class="empty">No packages.</p>`:null}updated(e){e.has(`lockfile`)&&this._prep&&this._attach()}_detach(){this._attachment++,this._graphState&&w.graphState===this._graphState&&sr(),this._graphState=null,this._bundleLayout!==null&&(w.bundleLayout=this._bundleLayout),this._bundleLayout=null}async _attach(){this._bundleLayout??=w.bundleLayout,w.bundleLayout=w.lockfileLayout;let e=this.renderRoot.querySelector(`.slot`);if(!e)return;let t=++this._attachment;if(await uT().catch(()=>{}),t!==this._attachment||!this.isConnected)return;let n={showBundleLayouts:!0,layouts:Gk,hideAllFiles:!0};await dT(e,this._prep,n,()=>this._refreshSidebar(),()=>this._refreshTopPkgs()),this._graphState=w.graphState}get _host(){return this.renderRoot.querySelector(`graph-layout`)}_refreshSidebar(){lT()?.refreshSidebar(this._prep,{},this._host)}_refreshTopPkgs(){lT()?.refreshTopPkgs(this._prep,this._host)}_click(e){let t=t=>e.composedPath().find(e=>e.matches?.(t)),n=t(`[data-g2-layout]`)?.dataset.g2Layout,r=t(`[data-g2-pkg]`)?.dataset.g2Pkg;if(n!==void 0)Gk.includes(n)&&n!==w.bundleLayout&&(w.lockfileLayout=w.bundleLayout=n,w.selected=null,w.solo=null,w.layoutCache=null,sr(),this._attach());else if(r!==void 0)w.solo=w.solo===r?null:r,this._refreshSidebar(),this._refreshTopPkgs(),w.graphState?.requestDraw?.();else if(t(`#g2-path-filter-clear`)){w.pathFilter=``;let e=this._host?.shadowRoot?.querySelector(`#g2-path-filter`);e&&(e.value=``),w.graphState?.requestDraw?.()}else if(t(`#g2-fullscreen`))document.body.classList.toggle(`report-fullscreen`);else return;e.stopPropagation()}_input(e){let t=e.composedPath()[0];t?.id===`g2-path-filter`&&(w.pathFilter=t.value,w.graphState?.requestDraw?.(),e.stopPropagation())}};customElements.define(`lockfile-graph`,Kk);function qk({title:e,count:t,extra:n=j,tools:r=j,body:i,list:a=!1,className:o=``}){return k`<section class="${`bundles-overview-col ${o}`}"><header class="bundles-overview-col-head"><span class="bundles-overview-col-title">${e} <span class="bundles-overview-col-count">${t}</span>${n}</span>${r}</header><div class="${`bundles-overview-col-body${a?` bundles-overview-col-body--list`:``}`}">${i}</div></section>`}var Jk=1024,Yk=1024*Jk,Xk=[`tiny`,`small`,`medium`,`large`,`gigantic`],Zk={dependencies:[1,4,11,26],files:[3,24,192,1536],lines:[400,3200,25600,204800],unpacked:[16*Jk,128*Jk,Yk,8*Yk]};function Qk(e,t){let n=Zk[e].findIndex(e=>t<e);return Xk[n===-1?Xk.length-1:n]}function $k(e,t,n){return k`<span class="${`npm-sized is-${Qk(e,t)}`}">${n}</span>`}var eA=[`preinstall`,`install`,`postinstall`];function tA(e,t=!1){let n={...e};return!n.preinstall&&!n.install&&t&&(n.install=`node-gyp rebuild`),eA.filter(e=>typeof n[e]==`string`).map(e=>[e,n[e]])}function nA(e,t=[]){return tA(e?.installScripts,!!(t&&(t instanceof Set?t.has(`binding.gyp`):t.includes(`binding.gyp`))))}function rA(e,t=!1){let n=null;try{n=typeof e==`string`?JSON.parse(e.replace(/^\uFEFF/u,``)):null}catch{}return tA(n&&typeof n==`object`&&n.scripts&&typeof n.scripts==`object`?n.scripts:{},t)}var iA=12096e5,aA=(e,{minimumReleaseAge:t=iA,now:n=Date.now()}={})=>t>0&&typeof e==`string`&&n-Date.parse(e)<t,oA=72,sA={top:6,right:0,bottom:18,left:40},cA=24,lA=4,uA=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),dA=new Intl.NumberFormat(`en`),fA=e=>new Intl.DateTimeFormat(`en`,{...e,timeZone:`UTC`}).format,pA=fA({month:`short`,day:`numeric`}),mA=fA({month:`short`,day:`numeric`,year:`numeric`}),hA=fA({month:`short`,year:`numeric`}),gA=fA({month:`long`,year:`numeric`}),_A=e=>e===1/0?`unpopular`:`top ${e.toLocaleString(`en`)}`,vA=(e,t)=>{let n=t&&Dt(e);return k`<dd class="${`npm-downloads-tier ${n?`is-mid`:Et(e)}`}" data-tooltip="${n?t:j}">${_A(e)}</dd>`},yA={week:{label:`Weekly`,of:e=>bt(e).slice(-52),name:e=>`${pA(e.from)} \u2013 ${mA(e.to)}`},month:{label:`Monthly`,of:St,name:e=>gA(e.from)}},bA=(e,t)=>`${dA.format(e)} downloads, ${t}`;function xA(e){let t=St(e).at(-1);return t?SA(t):null}var SA=({total:e,from:t})=>({total:e,month:gA(t)});function CA(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));return[1,2,2.5,5,10].map(e=>e*t).find(t=>t>=e)}var wA=class extends ga{static properties={downloads:{attribute:!1},status:{},known:{attribute:!1},_width:{state:!0},_at:{state:!0},_unit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.downloads=null,this.status=`loading`,this.known=null,this._width=0,this._at=null,this._unit=`week`,this._resize=new ResizeObserver(([e])=>{this._width=Math.floor(e.contentRect.width)})}connectedCallback(){super.connectedCallback(),this._resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this._resize.disconnect()}_key(e){let t=this._periods.length-1,n={ArrowLeft:-1,ArrowRight:1,Home:-t-1,End:t+1};e.key in n&&(e.preventDefault(),this._at=Math.min(t,Math.max(0,(this._at??t)+n[e.key])))}willUpdate(e){let t=yA[this._unit],{downloads:n}=this;if((e.has(`downloads`)||e.has(`_unit`))&&(this._periods=t.of(n)),e.has(`downloads`)){this._latest=n==null?null:Object.fromEntries(Object.entries(yA).map(([e,{of:t,name:r}])=>{let i=t(n).at(-1);return[e,{total:i?.total??0,tooltip:i&&bA(i.total,r(i))}]})),this._tier=wt(n);let e=n?.days.slice(-365),t=e?.reduce((e,t)=>e+t,0);this._year=n==null?null:{total:t,tooltip:bA(t,`${mA(vt(n.start,n.days.length-e.length))} \u2013 ${mA(Date.parse(n.end))}`)}}(e.has(`downloads`)||e.has(`_unit`)||e.has(`_width`))&&(this._shape=this._shapeOf(t))}_shapeOf(e){let t=this._periods,n=this._width;if(t.length===0||n<=sA.left+sA.right)return null;let r=n-sA.left-sA.right,i=oA-sA.bottom,a=CA(Math.max(...t.map(e=>e.total))),o=e=>i-e/a*(i-sA.top),s=e=>e.toFixed(1),c=this._unit===`month`,l=r/(c?t.length:Math.max(t.length-1,1)),u=c?e=>sA.left+(e+.5)*l:e=>sA.left+(t.length>1?e*l:r/2),d=t.length-1,f=e=>Math.min(d,Math.max(0,(c?Math.floor:Math.round)((e-sA.left)/l))),p=hA(t[0].from),m=t.at(-1),h;if(c){let e=Math.min(cA,l*.7)/2;h={bars:t.map(({total:t},n)=>{let[r,a,c]=[u(n)-e,u(n)+e,o(t)],l=Math.min(lA,e,i-c);return`M${s(r)},${i}V${s(c+l)}Q${s(r)},${s(c)} ${s(r+l)},${s(c)}H${s(a-l)}Q${s(a)},${s(c)} ${s(a)},${s(c+l)}V${i}Z`})}}else{let e=t.map((e,t)=>`${t===0?`M`:`L`}${s(u(t))},${s(o(e.total))}`).join(``);h={line:e,area:`${e}L${s(u(d))},${i}L${s(u(0))},${i}Z`}}return{x:u,y:o,bottom:i,indexAt:f,first:p,last:hA(m.to),...h,ticks:[[0,uA.format(0)],[a,uA.format(a)]],label:`${e.label} downloads over the last year, from ${p} to ${hA(m.to)}; the latest ${this._unit}: ${bA(m.total,e.name(m))}.`}}_stat(e,t,n){return k`<div class="npm-stat"><dt class="sr-only">${e}</dt><dd data-tooltip="${t?.tooltip||j}">${this._figure(t,n)}</dd></div>`}_figure(e,t){return k`${e?uA.format(e.total):this.status===`loading`?`…`:`—`}<span class="npm-stat-per">/${t}</span>`}_latestStat(){let e=this._latest?.[this._unit];return k`<div class="npm-stat"><dt class="sr-only">${yA[this._unit].label} downloads</dt><dd class="npm-stat-units" data-tooltip="${e?.tooltip||j}">${Object.keys(yA).map(e=>k`<span class="${e===this._unit?``:`is-held`}" aria-hidden="${e===this._unit?j:`true`}">${this._figure(this._latest?.[e],e)}</span>`)}</dd></div>`}_controls(e){return k`<div class="npm-downloads-controls"><span class="bundles-overview-sort" role="group" aria-label="Downloads by">${Object.entries(yA).map(([e,{label:t}])=>k`<button type="button" aria-pressed="${String(this._unit===e)}" @click="${()=>{this._unit=e,this._at=null}}">${t}</button>`)} </span><span class="npm-downloads-readout" aria-live="polite">${e?k`<strong>${dA.format(e.total)}</strong> <span>${yA[this._unit].name(e)}</span>`:j}</span></div>`}render(){let e=this.downloads!=null||this.status!==`ready`,t=this._at===null?null:this._periods[this._at]??null;return k`<div class="npm-downloads-head"><dl class="npm-stats">${this._latestStat()} ${this._stat(`Downloads, last 12 months`,this._year,`year`)} ${this._tier?k`<div class="npm-stat"><dt class="sr-only">Popularity</dt>${vA(this._tier,this.known)}</div>`:j}</dl>${e?this._controls(t):j}</div>${e?this._plot(t):j}`}_plot(e){let t=this._shape;if(!t)return k`<div class="npm-downloads-plot" style="${E({height:`${oA}px`})}"></div>`;let n=this._width;return k`<div class="npm-downloads-plot" style="${E({height:`${oA}px`})}" tabindex="0" role="img" aria-label="${t.label}" @pointermove="${e=>{this._at=t.indexAt(e.offsetX)}}" @pointerleave="${()=>{this._at=null}}" @keydown="${e=>this._key(e)}" @blur="${()=>{this._at=null}}"><svg width="${n}" height="${oA}" viewBox="0 0 ${n} ${oA}" aria-hidden="true">${t.ticks.map(([e,r])=>A`<line class="npm-downloads-grid" x1=${sA.left} x2=${n-sA.right} y1=${t.y(e)} y2=${t.y(e)}></line>
167
+ <text class="npm-downloads-tick" x=${sA.left-6} y=${t.y(e)} dy="0.32em" text-anchor="end">${r}</text>`)} ${t.bars?t.bars.map((e,t)=>A`<path class=${`npm-downloads-bar${t===this._at?` is-at`:``}`} d=${e}></path>`):A`<path class="npm-downloads-area" d=${t.area}></path><path class="npm-downloads-line" d=${t.line}></path>`}<text class="npm-downloads-tick" x="${sA.left}" y="${oA-4}">${t.first}</text><text class="npm-downloads-tick" x="${n-sA.right}" y="${oA-4}" text-anchor="end">${t.last}</text>${e&&!t.bars?A`<line class="npm-downloads-crosshair" x1=${t.x(this._at)} x2=${t.x(this._at)} y1=${sA.top} y2=${t.bottom}></line>
168
+ <circle class="npm-downloads-dot" cx=${t.x(this._at)} cy=${t.y(e.total)} r="4"></circle>`:j}</svg></div>`}};customElements.get(`npm-downloads-chart`)||customElements.define(`npm-downloads-chart`,wA);function TA(e,t){let n=EA(e);return[n,`${n}.js`,`${n}.cjs`,`${n}.mjs`,`${n}/index.js`].find(e=>e&&t?.has(e))}var EA=e=>e.replace(/^(?:\.\/)+/u,``).replace(/\/+$/u,``),DA=/^licen[cs]e(?:-[\w.]+)?(?:\.(?:md|txt))?$/iu;function OA(e,t){let n=t.filter(e=>DA.test(e)),r=e=>{let t=e.toLowerCase().match(/^[a-z]+/u)?.[0]??``;return n.find(e=>{let n=e.toLowerCase().match(/^licen[cs]e-([a-z]+)/u)?.[1];return n!==void 0&&t!==``&&(n.startsWith(t)||t.startsWith(n))})??(n.length===1?n[0]:null)};return e.split(/(\s+(?:OR|AND|WITH)\s+|[()])/u).filter(Boolean).map(e=>({text:e,file:/^[\w.+-]+$/u.test(e)&&!/^(?:OR|AND|WITH)$/u.test(e)?r(e):null}))}var kA=e=>e?.replace(/\.git$/u,``),AA=new Map([[`github`,{label:`GitHub`,domain:`github.com`,protocols:[`git:`,`http:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i,a]=e.split(`/`,5);return(!i||i===`tree`)&&n&&kA(r)?[n,kA(r),i?a:t.slice(1)]:null}}],[`bitbucket`,{label:`Bitbucket`,domain:`bitbucket.org`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`get`&&n&&kA(r)?[n,kA(r),t.slice(1)]:null}}],[`gitlab`,{label:`GitLab`,domain:`gitlab.com`,protocols:[`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let n=e.slice(1),r=n.lastIndexOf(`/`);return n.includes(`/-/`)||n.includes(`/archive.tar.gz`)?null:n.slice(0,Math.max(r,0))&&kA(n.slice(r+1))?[n.slice(0,r),kA(n.slice(r+1)),t.slice(1)]:null}}],[`gist`,{label:`Gist`,domain:`gist.github.com`,protocols:[`git:`,`git+ssh:`,`git+https:`,`ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`raw`&&(n||r)?[r?n:null,kA(r||n),t.slice(1)]:null}}],[`sourcehut`,{label:`SourceHut`,domain:`git.sr.ht`,protocols:[`git+ssh:`,`https:`],repo({pathname:e,hash:t}){let[,n,r,i]=e.split(`/`,4);return i!==`archive`&&n&&kA(r)?[n,kA(r),t.slice(1)]:null}}]]),jA=new Map([...AA.values()].map(e=>[e.domain,e])),MA=new Set([`git+ssh:`,`ssh:`,`git+https:`,`git:`,`http:`,`https:`,`git+http:`,...[...AA.keys()].map(e=>`${e}:`)]);function NA(e){let t=e.indexOf(`#`),n=e.indexOf(`/`);return n>0&&!e.startsWith(`.`)&&(t>-1?e[t-1]!==`/`:!e.endsWith(`/`))&&![/\s/u.exec(e)?.index??-1,e.indexOf(`@`),e.indexOf(`:`),e.indexOf(`/`,n+1)].some(e=>e>-1&&!(t>-1&&e>t))}var PA=e=>{try{return new URL(e)}catch{return null}};function FA(e){let t=e.indexOf(`@`),n=e.indexOf(`:`),r=MA.has(e.slice(0,n+1))||t>-1&&t<n?e:t>-1?`git+ssh://${e}`:e.indexOf(`//`)===n+1?e:`${e.slice(0,n+1)}//${e.slice(n+1)}`;if(PA(r))return PA(r);let i=e=>{let t=r.indexOf(`#`);return r.lastIndexOf(e,t>-1?t:1/0)},a=i(`:`)>i(`@`)?`${r.slice(0,i(`:`))}/${r.slice(i(`:`)+1)}`:r;return a.lastIndexOf(`:`,a.indexOf(`#`)>-1?a.indexOf(`#`):1/0)===-1&&!a.includes(`//`)&&(a=`git+ssh://${a}`),PA(a)}function IA(e){if(!e)return null;let t=FA(NA(e)?`github:${e}`:e);if(!t)return null;let n=AA.get(t.protocol.slice(0,-1)),r=n??jA.get(t.hostname.replace(/^www\./u,``)),i=n?[t.pathname.replace(/^\/?[^@]*@|^\//u,``),t.hash.slice(1)]:r?.protocols.includes(t.protocol)&&r.repo(t);try{return i?(i.forEach(e=>e&&decodeURIComponent(e)),r):null}catch{return null}}function LA(e){let t=String(e??``).trim();if(/^(?:[.]|~\/|\/|[a-z]:|file:)/iu.test(t))return`path`;if(/^npm:/iu.test(t)||!/[/:]|[.](?:tgz|tar\.gz|tar)$/iu.test(t))return`registry`;let n=IA(t);if(n)return n.label;if(/^(?:git\+)?[a-z]+:/iu.test(t)){let e=/^git\+ssh:\/\/([^:#]+:[^#]+(?:\.git)?)(?:#.*)?$/iu.exec(t);if(t.startsWith(`git+ssh:`)&&e&&!/:\d+(?:\/|$)/u.test(e[1]))return`git`;let n=PA(t)?.protocol;return/^(?:git|git\+(?:https?|rsync|ftp|file|ssh)):$/u.test(n)?`git`:/^https?:$/u.test(n)?`URL`:null}return/\/|[.](?:tgz|tar\.gz|tar)$/iu.test(t)?`path`:`registry`}function RA(e){let[,t,n=``]=/^npm:((?:@[^/@]+\/)?[^/@]+)(?:@(.*))?$/iu.exec(String(e??``).trim())??[];return t?{name:t,spec:n}:null}var zA=e=>LA(e)===`registry`,BA=[[`dependencies`,null],[`peerDependencies`,`peer`],[`optionalDependencies`,`optional`]];function VA(e){let t=[];for(let[n,r]of BA)for(let[i,a]of Object.entries(e?.[n]??{})){let e=RA(a)?.name??i;t.push({name:i,range:a,kind:r,opens:ei(e)&&zA(a)?e:null})}return t.toSorted((e,t)=>e.name.localeCompare(t.name)||(e.kind??``).localeCompare(t.kind??``))}function HA(e,t){let n=e=>new Map(VA(e).map(e=>[`${e.kind??``}\0${e.name}`,e])),r=n(t),i=n(e),a=[],o=[],s=[];for(let[e,{name:t,kind:n,range:a,opens:c}]of i){let i=r.get(e);i?i.range!==a&&o.push({key:e,name:t,kind:n,from:a,to:i.range,opens:i.opens}):s.push({key:e,name:t,kind:n,range:a,opens:c})}for(let[e,{name:t,kind:n,range:o,opens:s}]of r)i.has(e)||a.push({key:e,name:t,kind:n,range:o,opens:s});return{removed:s,added:a,changed:o}}var UA=(e=[])=>e.map(({check:e,label:t,tooltip:n})=>k`<span class="${`npm-dependency-flag is-${e}`}" data-tooltip="${n}">${t}</span>`);function WA(e,t=null,n=void 0){let r=dj(`risk`,`${e.name}@${e.version}${t===null?``:`..${t}`}`,()=>kb(e.name,e.version,t,{signal:n}),EO);return r.status===`ready`?r:null}function GA(e){return e.map(e=>{let t=e.format===`npm`?`npm`:[`sourcemap`,`sourcemaps`].includes(e.kind)||e.filename.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,n=t===`npm`?e.detail??``:t===`sourcemap`?`Sourcemap`:`Stasis`,r=[];if(e.date&&r.push(e.date),typeof e.size==`string`&&![``,`—`].includes(e.size)&&r.push(e.size),e.files){r.push(`${e.files.length.toLocaleString()} files`);let{lines:t}=Gr(e.files);t!=null&&r.push(`${t.toLocaleString()} LoC`)}else e.summary&&(Number.isSafeInteger(e.summary.files)&&e.summary.files>=0&&r.push(`${e.summary.files.toLocaleString()} files`),Number.isSafeInteger(e.summary.lines)&&e.summary.lines>=0&&r.push(`${e.summary.lines.toLocaleString()} LoC`));return{value:e.id,label:e.filename,displayLabel:e.displayLabel,detail:n,format:t,secondary:r.join(` · `),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var KA=e=>e.displayLabel??e.label,qA=class extends ct{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[ct.styles,ha`.bundle-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.05rem;width:1.05rem;height:1.05rem;color:var(--muted)}.bundle-icon img,.bundle-icon svg{display:block;width:100%;height:100%;opacity:1;color:inherit}.option{gap:.5rem;padding-block:.25rem}.option-copy{gap:0}.option .name{line-height:1.3}.option .bundle-icon{flex-basis:1.35rem;width:1.35rem;height:1.35rem;margin-right:.15rem}.secondary{line-height:1.25;font-variant-numeric:tabular-nums}:host([versions]) .group{display:grid;gap:.1rem;font-size:.76rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(max(var(--option-width, 6ch),var(--secondary-width, 0ch) * .76) + 1rem)),1fr))}:host([versions]) .secondary{font-size:.76em}:host([versions]) .option{flex-wrap:wrap;align-content:start;gap:0 .8rem;padding:.3rem .45rem;font-variant-numeric:tabular-nums}:host([versions]) .option>svg,:host([versions]) .option .bundle-icon{display:none}:host([versions]) .option-copy{flex:0 1 auto}:host([versions]) .option .detail{font-size:.62rem;line-height:1.6}:host([versions]) .trigger .name:has(+.detail){flex:0 1 auto}:host([versions]) .trigger .detail{flex:1 1 0%;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}`];constructor(){super(),this.bundles=null,this.noun=`bundle`,this.versions=!1,this.label=`Choose bundle`,this.placeholder=`Choose bundle`}get searchLabel(){return`Search ${this.noun}s`}get optionsLabel(){return`${this.noun[0].toUpperCase()}${this.noun.slice(1)}s`}get noMatchesLabel(){return`No matching ${this.noun}s`}get emptyLabel(){return this.noun===`bundle`?`No stored bundles`:`No other ${this.noun}s`}get changeEvent(){return`bundle-change`}get menuWidth(){return this.versions?500:super.menuWidth}willUpdate(e){if(e.has(`bundles`)&&this.bundles&&(this.options=GA(this.bundles)),e.has(`options`)&&this.versions){let e=e=>Math.min(Math.max(0,...this.options.map(t=>e(t)?.length??0)),28);this.style.setProperty(`--option-width`,`${e(KA)}ch`),this.style.setProperty(`--secondary-width`,`${e(e=>e.secondary)}ch`)}}optionTooltip(e){return KA(e)}optionIcon(e){return e.format?k`<span class="bundle-icon" aria-hidden="true">${e.format===`npm`?O(Zi):e.format===`sourcemap`?O(Xi):k`<img src="./stasis.svg" alt="">`}</span>`:j}choices(){let e=this._query.normalize(`NFKC`).toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(t=>e.every(e=>`${t.label} ${t.detail}`.normalize(`NFKC`).toLocaleLowerCase().includes(e))),n=this.versions?t:t.toSorted((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`}));return{pinned:[],sections:[{label:null,options:n}],facets:[],showFacets:!1,count:n.length,total:this.options.length}}};customElements.get(`bundle-selector`)||customElements.define(`bundle-selector`,qA);var JA=/^https?:\/\/(?:www\.)?npmjs\.(?:com|org)\/package\/((?:@[^/]+\/)?[^/?#]+)(?:\/v\/([^/?#]+))?\/?(?:[?#].*)?$/u;function YA(e){let t=String(e??``).trim(),n=JA.exec(t),r,i=null;if(n)try{[r,i]=[decodeURIComponent(n[1]),n[2]?decodeURIComponent(n[2]):null]}catch{return null}else{let e=t.indexOf(`@`,1);[r,i]=e===-1?[t,null]:[t.slice(0,e),t.slice(e+1)]}return!ei(r)||i!==null&&!ti(i)?null:{name:r,spec:i}}var XA=(e,t=null)=>t==null?e:`${e}@${t}`;function ZA(e,t){let n=new Set(t),r=[];for(let t of[e?.main,e?.module,`index.js`]){if(typeof t!=`string`)continue;let e=TA(t,n);e&&!r.includes(e)&&r.push(e)}return r}function QA(e){return{integrity:e.integrity,kind:`sourcemap`,name:`${e.name}@${e.version}`,size:e.tarballSize,npm:{name:e.name,version:e.version,private:e.private===!0,published:typeof e.published==`string`?e.published:null,manifest:e.manifest??{}}}}function $A(e,t){let n=Bt(e,t.files);return{...n,npm:e.npm,npmEntries:ZA(e.npm.manifest,n.json.sources),risk:()=>WA(e.npm)}}function ej(e,t=`overview`,n=null){return e?.npm?{view:`npm`,packageName:e.npm.name,packageSpec:e.npm.version,bundleTab:si.has(t)?t:`overview`,...n}:null}var tj=3,nj=new Map,rj=new Map,ij=1e4,aj=3e5,oj=null;function sj(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==oj&&(nj.clear(),rj.clear(),oj=e),nj}function cj(e,t){let n=sj();for(n.delete(e.name),n.set(e.name,{entry:e,details:t});n.size>tj;)n.delete(n.keys().next().value)}async function lj(e,t,n){let r=sj().get(`${e}@${t}`);if(r)return cj(r.entry,r.details),r;let i=await lb(e,t,n),a=QA(i),o=$A(a,i);return a.npm.private||cj(a,o),uj(i),{entry:a,details:o}}function uj({name:e,version:t,known:n}){if(!n||typeof n!=`object`)return;let r={stats:e,advisories:e,tags:`${e}@${t}`,socket:`${e}@${t}`,provenance:`${e}@${t}`};for(let[e,t]of Object.entries(r)){let r=`${e}\0${t}`;n[e]&&rj.get(r)?.status!==`ready`&&rj.set(r,{status:`known`,data:n[e]})}}function dj(e,t,n,r){sj();let i=`${e}\0${t}`,a=rj.get(i);if(a?.status===`known`){let e={status:`ready`,...r(a.data)};return rj.set(i,e),e}if(a&&!(a.status===`error`&&Date.now()>=a.retryAt))return a;let o={status:`loading`,failures:a?.failures??0};return rj.set(i,o),n().then(e=>({status:`ready`,...r(e)}),e=>{if(e?.name===`AbortError`)return null;let t=o.failures+1,n=Math.min(ij*2**(t-1),aj);return{status:`error`,failures:t,wait:n,retryAt:Date.now()+n}}).then(e=>rj.get(i)===o?e===null?(rj.delete(i),null):(rj.set(i,e),e.status===`error`&&setTimeout(()=>{rj.get(i)===e&&Z()},e.wait).unref?.(),pj(),null):null).catch(()=>{}),o}var fj=!1;function pj(){fj||(fj=!0,queueMicrotask(()=>{fj=!1,Z()}))}function mj(e,t=void 0){return dj(`versions`,e,()=>Tb(e,{signal:t}),e=>({versions:e.versions??[],distTags:e.distTags??{},times:e.times??{},created:typeof e.created==`string`?e.created:null,private:e.private===!0,teamScoped:e.teamScoped===!0}))}function hj(e={}){let t=new Map;for(let[n,r]of Object.entries(e))t.set(r,[...t.get(r)??[],n]);return t}function gj(e,t,n=Date.now()){let r=hj(e.distTags);return(e.versions?.includes(t)?e.versions:[t,...e.versions??[]]).map(t=>{let i=e.times?.[t];return{id:t,detail:r.get(t)?.join(`, `)??``,...i&&{date:i.slice(0,10)},...i&&_j(e,i,n)&&{age:xj(i,n)}}})}function _j(e,t,n=Date.now()){return e.status===`ready`&&aA(t,{minimumReleaseAge:e.teamScoped?0:iA,now:n})}var vj=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`});function yj(e,t=Date.now()){let n=Math.floor((t-Date.parse(e))/864e5),r=n<60?vj.format(-n,`day`):n<730?vj.format(-Math.floor(n/30.44),`month`):vj.format(-Math.floor(n/365.25),`year`);return`${mA(Date.parse(e))} \xB7 ${r}`}var bj=new Intl.RelativeTimeFormat(`en`,{numeric:`always`});function xj(e,t=Date.now()){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return n<60?bj.format(-n,`minute`):n<1440?bj.format(-Math.floor(n/60),`hour`):bj.format(-Math.floor(n/1440),`day`)}var Sj=e=>mA(Date.parse(e)),Cj=e=>`Published on ${Sj(e)}`;function wj(e){let{name:t,version:n}=e.npm,r=mj(t),i=gj(r,n).map(({id:e,detail:n,date:r,age:i})=>({id:e,name:`${t}@${e}`,displayLabel:e,format:`npm`,detail:n,...r&&{date:r},...i&&{dateWarning:i}}));return{noun:`version`,base:n,widest:{name:`${t}@10.90.90`,detail:`latest`},pending:r.status===`loading`,error:r.status===`error`?`Couldn't list the versions of ${t}.`:null,options:i.filter(e=>e.id!==n),choices:i,name:r=>r===e.integrity||r===n?e.name:`${t}@${r}`,load:async e=>(await lj(t,e)).details,dependencies:zj,openDependency:Gj,open:(e,n,r)=>Tj(t,e,`compare`,n?{compareSpec:n,...ri(r)}:{})}}function Tj(e=null,t=null,n=`overview`,r={}){!F()||!U?.active||U.navigate(e==null?{view:`npm`}:{view:`npm`,packageName:e,packageSpec:t,bundleTab:n,...r})}function Ej(e,t=null){P.currentView=`npm`,P.npmLookup=e,P.npmOpening=t,P.currentManagedTeam=null,P.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),Z({animate:!1})}var Dj=/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*)?$/u,Oj=new Set([`overview`,`compare`]);async function kj(e,t,n){let{packageName:r,packageSpec:i=null,bundleTab:a=`overview`}=e;if(r==null)return Ej({input:P.npmLookup?.input??``,error:null}),n(),{view:`npm`};let o=XA(r,i),s=P.currentView===`bundles`&&P.bundleDetails?.npm,c=s&&P.bundles?.[0]?.npm?.name===r&&P.bundles[0].npm.version===i?P.bundles[0]:null,l=c?P.bundleDetails:null;if(!c){let e=i!=null&&sj().has(`${r}@${i}`);!s&&!e&&(Ej({input:o,error:null},{name:r,spec:i,tab:a}),n());let u=new AbortController;mj(r,u.signal),i!=null&&Dj.test(i)&&Oj.has(a)&&WA({name:r,version:i},null,u.signal);try{({entry:c,details:l}=await lj(r,i??`latest`,{signal:W_()}))}catch(e){return u.abort(),e?.name===`AbortError`||!t()?!1:(Mj=null,Ej({input:o,error:e.message}),{view:`npm`})}if(!t()||!F())return u.abort(),!1}Mj?.name===r&&Mj.spec===i&&(Pj([o,...Nj().filter(e=>e!==o)]),Mj=null),sr();let u=P.bundleCompare?.bundle===c.integrity?P.bundleCompare:null;return a===`review`&&(P.npmReview={bundle:c.integrity,...e.reviewPackage?{reviewPackage:e.reviewPackage,reviewSpec:e.reviewSpec??null}:{}}),P.bundles=[c],KX(c.integrity,a),a===`code`&&e.file!=null&&(P.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}),a===`compare`&&e.compareSpec!=null?P.bundleCompare={bundle:c.integrity,target:e.compareSpec,mode:ni(e.compareMode)}:u&&(P.bundleCompare=u),P.bundleDetails=l,P.npmLookup={input:c.name,error:null},P.npmOpening=null,P.currentManagedTeam=null,P.currentManagedReport=null,P.reports=[],document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),ej(c,P.bundleDetailsTab,kx(P))}var Aj=10,jj=()=>`deepview.npm.recent.${P.managedSession?.id??`anonymous`}`,Mj=null;function Nj(){try{let e=JSON.parse(localStorage.getItem(jj())??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`&&YA(e)):[]}catch{return[]}}function Pj(e){try{localStorage.setItem(jj(),JSON.stringify(e.slice(0,Aj)))}catch{}}function Fj(e){Pj(Nj().filter(t=>t!==e)),Z()}function Ij(e){let t=YA(e);if(!t){P.npmLookup={input:e??``,error:`Enter a package name, like lodash, @scope/name or name@1.2.3.`},Z();return}Mj=t,Tj(t.name,t.spec)}function Lj(e){e.preventDefault(),Ij(e.currentTarget.querySelector(`input[name="package"]`)?.value)}function Rj(){let e=P.npmLookup??{input:``,error:null},t=[`admin`,`manage`].includes(P.managedSession?.role),n=Nj();return k`<section class="npm-lookup" aria-labelledby="npm-lookup-title"><header class="npm-lookup-head"><span class="npm-lookup-icon" aria-hidden="true">${O(Zi)}</span><h1 id="npm-lookup-title">npm packages</h1></header><p class="npm-lookup-intro">Open a published version to read its files, as its tarball has them. ${t?j:`You can open public packages, and private ones in npm scopes your teams list.`}</p><form class="npm-lookup-form" @submit="${Lj}"><input name="package" type="text" aria-label="Package" autocomplete="off" spellcheck="false" maxlength="500" placeholder="lodash, @scope/name@1.2.3 or an npmjs.com link" .value="${e.input??``}"> <button type="submit">Open</button></form><div class="npm-lookup-message">${e.error?k`<p class="npm-lookup-error" role="alert">${e.error}</p>`:j}</div>${n.length>0?k`<section class="npm-lookup-recent" aria-labelledby="npm-lookup-recent-title"><h2 id="npm-lookup-recent-title">Recent searches</h2><ul>${n.map(e=>k`<li><button type="button" class="npm-lookup-recent-open" @click="${()=>Ij(e)}">${e}</button> <button type="button" class="npm-lookup-recent-remove" aria-label="${`Remove ${e} from recent searches`}" @click="${()=>Fj(e)}">×</button></li>`)}</ul></section>`:j}</section>`}function zj(e,t){let n=HA(e?.npm?.manifest,t?.npm?.manifest),r=e?.npm&&t?.npm?WA(t.npm,e.npm.version)?.dependencies:null,i=[e?.npm,t?.npm],a=(e,t)=>e.map(e=>({flags:[],...t?.find(({key:t})=>t===e.key),...e}));return{removed:n.removed,added:a(n.added,r?.added).map(e=>({...e,compared:i})),changed:a(n.changed,r?.changed)}}var Bj=e=>{let t=WA(e)?.dependencies;return new Map((t?.held??t?.added??[]).map(({key:e,flags:t})=>[e,t]))},Vj=({kind:e,name:t})=>`${e??``}\0${t}`,Hj=/^(?:[\^~]|=)?v?(\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?)$/u,Uj=e=>Hj.exec(RA(e)?.spec??e.trim())?.[1]??null,Wj=e=>RA(e)?.name??null;function Gj({opens:e,from:t,to:n}){if(!e)return;let r=n&&Uj(n),i=t&&Uj(t);!i||!r||i===r||Wj(t)!==Wj(n)?Tj(e):Tj(e,r,`compare`,{compareSpec:i})}function Kj(e){let t=VA(e.npm.manifest);if(t.length===0)return j;let n=Bj(e.npm);return qk({title:`Dependencies`,count:t.length,list:!0,body:k`<ul class="bundles-sources-list npm-dependency-list">${t.map(e=>{let{name:t,range:r,kind:i,opens:a}=e,o=n.get(Vj(e))??[],s=k`<span class="npm-dependency-name"><span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${t}</span>${UA(o)}</span> ${i?k`<span class="npm-dependency-kind">${i}</span>`:j} <span class="bundles-source-size" data-tooltip-truncated data-tooltip="${r}">${r}</span>`;return k`<li>${a?k`<button type="button" class="bundles-source-row npm-dependency-row" data-npm-dependency="${a}" @click="${()=>Tj(a)}">${s}</button>`:k`<div class="bundles-source-row npm-dependency-row is-resource">${s}</div>`}</li>`})}</ul>`})}var qj=[[`source`,`Non-registry`,()=>`From elsewhere than npm's registry`],[`unimported`,`Unimported`,e=>`Imported by nothing of ${e}`]];function Jj(e){let t=Bj(e),n=Map.groupBy(VA(e.manifest).flatMap(e=>(t.get(Vj(e))??[]).map(({check:t})=>({...e,check:t}))),({check:e})=>e);return qj.filter(([e])=>n.has(e)).map(([t,r,i])=>k`<span class="npm-extension is-warn npm-dependency-check" data-tooltip="${`${i(e.version)}: ${n.get(t).map(({name:e,range:t})=>`${e} ${t}`).join(`, `)}`}"><span>${r}</span><span class="npm-extension-count">${n.get(t).length}</span></span>`)}function Yj(e,t){let{name:n,version:r}=e.npm,i=dj(`tags`,`${n}@${r}`,()=>Ob(n,r),e=>({tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`&&e):[]}));return i.status!==`ready`||i.tags.length===0?j:k`<span class="bundle-origin-tags">${i.tags.map(e=>k`<a class="bundle-origin-link bundle-tag-link" href="${Fe(t,e)}" target="_blank" rel="noopener noreferrer">${O(Ki)}<span>${e}</span></a>`)}</span>`}function Xj(e,t,n=e){let r=n===e||n===`./${e}`?j:`./${e}`;return t?.has(e)?k`<button type="button" class="bundle-entry-point" data-bundle-view-source="${e}" data-tooltip="${r}">${n}</button>`:n}function Zj(e,t,n){let r=e.knownAccounts?.includes(t);return k`<a class="${`bundle-origin-link npm-account ${r?`is-known`:`is-unknown`}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(t)}`}" data-tooltip="${r?`Publishes one of npm's most downloaded packages`:`Unknown publisher`}" target="_blank" rel="noopener noreferrer"><span>${n}</span></a>`}var Qj=/^\s*(Package no longer supported\.)\s+Contact Support at https:\/\/www\.npmjs\.com\/support for more info\.\s*$/u,$j=e=>e.replace(Qj,`$1`);function eM(e,{prefix:t=``,githubFigures:n=j,provenance:r=j,provenanceNamesBuilder:i=!1,files:a=null}={}){let{manifest:o}=e.npm,s=o.github?.github,c=s?ze({repo:{github:s,directory:o.github.directory??``,commit:o.gitHead}})[0]:null,l=mj(e.npm.name),u=e.npm.published??l.times?.[e.npm.version];return k`<dl class="bundles-detail-meta npm-facts">${e.npm.private?k`<dt>Access</dt><dd>Private</dd>`:j} ${o.deprecated?k`<dt>Deprecated</dt><dd class="npm-deprecated">${$j(o.deprecated)}</dd>`:j} ${o.description?k`<dt>Description</dt><dd>${o.description}</dd>`:j} ${o.license?k`<dt>License</dt><dd>${OA(o.license,[...a??[]]).map(({text:e,file:t})=>Xj(t,a,e))}</dd>`:j} ${o.author?k`<dt>Author</dt><dd class="bundle-origin-row">${o.authorAccount?k`${Zj(o,o.authorAccount,o.author)}${o.author===o.authorAccount?j:k`<span class="npm-publisher">~${o.authorAccount}</span>`}`:o.author}</dd>`:j} ${o.publisher&&o.publisher!==o.authorAccount?k`<dt>Publisher</dt><dd class="bundle-origin-row">${Zj(o,o.publisher,`~${o.publisher}`)}</dd>`:o.trustedPublisher&&!i?k`<dt>Publisher</dt><dd class="npm-trusted-publisher">${o.trustedPublisher}</dd>`:j} ${u?k`<dt>Published</dt><dd>${_j(l,u)?k`<span class="npm-recent">${yj(u)}</span>`:yj(u)}</dd>`:j} ${c?k`<dt>GitHub</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${c.href}" target="_blank" rel="noopener noreferrer">${O(aa)}<span>${c.text}</span></a> ${n}</dd><dt>Commit</dt><dd class="bundle-origin-row">${c.commit?k`<a class="bundle-origin-link bundle-commit-link" href="${c.commit.href}" data-tooltip="${c.commit.hash}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer">${O(oa)}<span>${c.commit.text}</span></a> ${Yj(e,s)}`:k`<span class="npm-commit-missing">Not recorded at publish</span>`}</dd>`:j} ${r===j?j:k`<dt>Provenance</dt><dd class="bundle-origin-row">${r}</dd>`} ${o.homepage&&/^https?:\/\//iu.test(o.homepage)?k`<dt>Homepage</dt><dd><a class="bundle-origin-link" href="${o.homepage}" target="_blank" rel="noopener noreferrer"><span>${o.homepage}</span></a></dd>`:j}<dt>Integrity</dt><dd class="mono bundle-integrity" data-tooltip-truncated data-tooltip="${e.integrity}">${e.integrity}</dd>${t?k`<dt>Prefix</dt><dd class="mono">${t}</dd>`:j}</dl>`}var tM=(e,t)=>e.split(/(\s+)/u).map(e=>{let n=e.replace(/^\.\//u,``);return t?.has(n)?Xj(n,t,e):e});function nM(e,t=null,n=null){let{manifest:r}=e.npm,i=[`main`,`module`,`types`].filter(e=>typeof r[e]==`string`).map(e=>({label:`${e[0].toUpperCase()}${e.slice(1)}`,path:r[e],file:TA(r[e],t)??EA(r[e])})),a=i.find(e=>e.label===`Main`),o=i.find(e=>e.label===`Module`);a&&o&&a.file===o.file&&(a.label=`Main, Module`,i.splice(i.indexOf(o),1));let s=Object.keys(r.bin??{}),c=nA(r,t),l=VA(r).length;return k`${i.map(({label:e,path:r,file:i})=>k`<dt>${e}</dt><dd class="mono"><span class="npm-entry-point">${yt(i,_t(n,i))}${Xj(i,t,r)}</span></dd>`)} ${r.type?k`<dt>Type</dt><dd class="mono">${r.type}</dd>`:j} ${s.length>0?k`<dt>Bin</dt><dd class="mono">${s.join(`, `)}</dd>`:j} ${r.engines?k`<dt>Engines</dt><dd class="mono">${Object.entries(r.engines).map(([e,t])=>`${e} ${t}`).join(`, `)}</dd>`:j} ${c.length>0||r.hasInstallScript?k`<dt>Install scripts</dt><dd class="npm-install-scripts">${c.length===0?`Yes`:c.map(([e,n])=>k`<div class="npm-install-script"><span class="npm-install-script-name">${e}</span><code>${tM(n,t)}</code></div>`)}</dd>`:j}<dt>Dependencies</dt><dd class="npm-dependencies-fact">${$k(`dependencies`,l,l===0?`None`:l)}${Jj(e.npm)}</dd>`}var rM=class extends ga{static properties={name:{},version:{},tab:{},list:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.name=``,this.version=``,this.tab=`overview`,this.list=null}render(){let e=gj(this.list?.status===`ready`?this.list:{versions:[],distTags:{}},this.version).map(({id:e,detail:t,date:n,age:r})=>({value:e,label:e,detail:t,secondary:n,...r&&{secondaryWarning:r}}));return k`<bundle-selector .options="${e}" .value="${this.version}" noun="version" versions label="${`Version of ${this.name}`}" placeholder="${this.version}" ?disabled="${e.length<=1}" aria-busy="${this.list?.status===`loading`?`true`:j}" @bundle-change="${e=>{e.detail.value!==this.version&&Tj(this.name,e.detail.value,this.tab)}}"></bundle-selector>`}};customElements.get(`npm-version-select`)||customElements.define(`npm-version-select`,rM);var iM=e=>k`<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,aM=[[`commits`,`Commits`,iM(A`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`)],[`issues`,`Issues`,iM(A`<circle cx="8" cy="8" r="6.25"/><circle cx="8" cy="8" r="1.6" fill="currentColor" stroke="none"/>`)],[`pulls`,`Pull requests`,iM(A`<circle cx="4" cy="3.5" r="1.75"/><circle cx="4" cy="12.5" r="1.75"/><circle cx="12" cy="12.5" r="1.75"/>
169
+ <path d="M4 5.25v5.5M12 10.75V6.5a2 2 0 0 0-2-2H7.5M9 3 7.5 4.5 9 6"/>`)],[`agents`,`Agents`,iM(A`<rect x="2.25" y="4.5" width="11.5" height="9" rx="2.5"/><path d="M8 4.5V2M6 11h4"/>
170
+ <circle cx="5.75" cy="8.25" r="1.1" fill="currentColor" stroke="none"/><circle cx="10.25" cy="8.25" r="1.1" fill="currentColor" stroke="none"/>`)],[`pulse`,`Pulse`,iM(A`<path d="M1 8.5h3l1.75-4.5 3 9 2-6.5 1.25 2H15"/>`)],[`replay`,`Replay`,iM(A`<path d="M5 3.25v9.5L12.75 8z"/>`)]],oM=new Set(aM.map(([e])=>e)),sM=`commits`;function cM(e){return oM.has(e)&&(sM=e),sM}var lM=e=>k`<div class="activity-views" role="group" aria-label="Activity">${aM.map(([t,n,r])=>k`<button type="button" data-bundle-tab="${t}" aria-label="${n}" aria-pressed="${String(t===e)}">${r}</button>`)}</div>`,uM=/^[a-f\d]{40}$/iu,dM=(e,t)=>e.repoId===t.repoId&&e.commit===t.commit&&(e.path??``)===(t.path??``),fM=({repo:e,path:t})=>t?`${e}/${t}`:e,pM=new Map,mM=new Map,hM=3e4,gM=null;function _M(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==gM&&(pM.clear(),mM.clear(),gM=e),pM}function vM(e,t){let n=_M(),r=n.get(e);if(r&&!r.stale&&!(r.status===`error`&&Date.now()>=r.retryAt))return r;let i=r?.stale?{status:`ready`,value:r.value}:{status:`loading`};return n.set(e,i),t().then(e=>({status:`ready`,value:e}),e=>e?.name===`AbortError`?null:{status:`error`,retryAt:Date.now()+hM}).then(t=>{if(n.get(e)!==i)return null;if(t?.status===`ready`||t&&i.status===`loading`)n.set(e,t);else if(i.status===`loading`)n.delete(e);else return null;return Z(),null}).catch(()=>{}),i}function yM(e){let t=_M().get(e);t?.status===`ready`?_M().set(e,{...t,stale:!0}):_M().delete(e)}var bM=()=>vM(`repositories`,()=>db()),xM=e=>vM(`refs\0${e}`,()=>fb(e)),SM=({repoId:e,repo:t})=>t??bM().value?.find(t=>t.repoId===e)?.fullName??null,CM=(e,t)=>mM.get(`${e}\0${t}`)??null;function wM(e,t,n){_M(),n&&mM.set(`${e}\0${t}`,n)}function TM(e,t=null){let{repoId:n,repo:r,commit:i,path:a}=e,o=Array.isArray(e.files)?e.files:[];return{integrity:`repository:${n}:${i}:${a}`,kind:`sourcemap`,name:`${fM({repo:r,path:a})}@${i.slice(0,7)}`,size:o.reduce((e,[,t])=>e+t,0),repository:{repoId:n,repo:r,commit:i,path:a,revision:t}}}var EM=/^readme(?:\.[^/]*)?$/iu;function DM(e){return e.filter(e=>EM.test(e)).toSorted((e,t)=>+!/\.md$/iu.test(e)-!/\.md$/iu.test(t)||e.localeCompare(t)).slice(0,1)}function OM(e,t){let n=Bt(e,t.files);return{...n,repository:e.repository,npmEntries:DM(n.json.sources)}}function kM(e,t=`code`,n=null){if(!e?.repository)return null;let{repoId:r,commit:i,path:a}=e.repository;return{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:ci.has(t)?t:`code`,...n}}function AM({repoId:e,commit:t=null,ref:n=null,revision:r=void 0,path:i=``,repo:a=null,file:o=null,bundleTab:s=`code`,compare:c=null}){if(!F()||!U?.active)return;let l=c?.target?{...uM.test(c.target)?{compareCommit:c.target.toLowerCase()}:{compareTarget:c.target},...ri(c.mode)}:{};U.navigate({view:`repository-code`,repoId:e,commit:t,path:i,bundleTab:s,...n==null?{}:{ref:n},...r===void 0?{}:{revision:r},...a?{repo:a}:{},...o?{filePath:o}:{},...l})}var jM=e=>e.commit??e.ref??``,MM=e=>e?.name?e.kind===`commit`?e.name.toLowerCase():`${e.kind===`branch`?`heads`:`tags`}/${e.name}`:``;function NM({repoId:e,repo:t,path:n},r,i){let a=r.kind===`commit`&&uM.test(r.name)?r.name.toLowerCase():null;AM({repoId:e,repo:t,path:n,commit:a,bundleTab:i,...a?{}:{ref:MM(r),revision:r}})}function PM({repoId:e,repo:t,commit:n,revision:r},i,a){AM({repoId:e,repo:t,path:i,commit:n,bundleTab:a,...n?{}:{ref:MM(r),revision:r}})}function FM(e){P.currentView=`repository-code`,P.repositoryCodeOpening=e,P.currentManagedTeam=null,P.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),Z({animate:!1})}function IM(e){let t=P.repositoryCodePending;return t&&t.integrity===e?.integrity&&t.generation===H()?t.repository:null}var LM=new Set([`directory-too-large`,`directory-unreadable`,`no-directory`]);async function RM(e,t){if(LM.has(t?.code))try{let t=await pb(e.repoId,jM(e),e.path,{signal:W_()}),n=(t.entries??[]).filter(e=>e.type===`dir`).toSorted((e,t)=>e.name.localeCompare(t.name));P.repositoryCodeOpening?.error&&dM(P.repositoryCodeOpening,e)&&n.length>0&&uM.test(t.commit)&&(P.repositoryCodeOpening={...P.repositoryCodeOpening,listing:{commit:t.commit.toLowerCase(),directories:n}},Z())}catch{}}async function zM(e){try{let t=await pb(e.repoId,jM(e),``,{signal:W_()});P.repositoryCodeOpening===e&&uM.test(t?.commit??``)&&(P.repositoryCodeOpening={...e,commit:t.commit.toLowerCase()},Z({animate:!1}))}catch{}}function BM({repoId:e,repo:t,commit:n,ref:r,path:i,revision:a},o){AM({repoId:e,repo:t,path:i,commit:n,bundleTab:o,...n?{}:{ref:r??``,revision:a}})}async function VM(e,t,n){let{repoId:r,commit:i=null,path:a=``}=e,o=ci.has(e.bundleTab)?e.bundleTab:`code`;_M();let s=P.currentView===`bundles`&&P.bundles?.[0]?.repository&&P.bundleDetails?.integrity===P.bundles[0].integrity?P.bundles[0]:null,c=i&&s&&dM(s.repository,{repoId:r,commit:i,path:a})?s:null,l=c?P.bundleDetails:null,u=P.currentView===`repository-code`?P.repositoryCodeOpening:null;if(!c&&i&&u?.code===`directory-too-large`&&dM(u,{repoId:r,commit:i,path:a}))return FM({...u,tab:o}),{view:`repository-code`,repoId:r,commit:i,path:a,bundleTab:o};if(!c&&li.has(o)){let s=e.revision===void 0?i?mM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision;yM(`refs\0${r}`);let c=bM().value?.find(e=>e.repoId===r)?.fullName,l={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??c??null,revision:s,error:null},u=i;if(!u){FM(l),U?.showing(e),n();try{let t=await pb(r,jM(e),``,{signal:W_()});u=uM.test(t?.commit??``)?t.commit.toLowerCase():null}catch(e){return e?.name===`AbortError`||!t()?!1:(FM({...l,error:e.message,code:e?.code??null}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o})}if(!t())return!1;if(!u)return FM({...l,error:`The server answered with no commit.`}),{view:`repository-code`,repoId:r,commit:null,path:a,bundleTab:o}}return s&&mM.set(`${r}\0${u}`,s),FM({...l,commit:u,ref:null,historyOnly:!0}),n(),{view:`repository-code`,repoId:r,commit:u,path:a,bundleTab:o}}if(!c){let u=e.revision===void 0?i?mM.get(`${r}\0${i}`)??null:e.ref?null:{kind:`branch`,name:null}:e.revision,d=bM().value?.find(e=>e.repoId===r)?.fullName,f={repoId:r,commit:i,ref:e.ref??null,path:a,tab:o,repo:e.repo??d??null,revision:u,error:null};yM(`refs\0${r}`);let p=o===`treemap`,m=s&&!p?{integrity:s.integrity,generation:H(),repository:{repoId:r,repo:f.repo,commit:i,path:a,revision:u}}:null;m?(P.repositoryCodePending=m,Z({animate:!1})):(FM(f),n()),p&&!i&&zM(f),U?.showing(e);let h;try{if(h=await ub(r,jM(e),a,{signal:W_()}),h?.repoId!==r||i&&h.commit!==i||h.path!==a||!uM.test(h.commit??``))throw Error(`The server answered with another directory.`)}catch(e){if(e?.name===`AbortError`||!t())return!1;let n=!i&&e?.code===`directory-too-large`&&uM.test(e.commit??``)?e.commit.toLowerCase():i,s={...f,commit:n,error:e.message,code:e?.code??null};return FM(s),RM(s,e),{view:`repository-code`,repoId:r,commit:n,path:a,bundleTab:o}}finally{m&&P.repositoryCodePending===m&&(P.repositoryCodePending=null,P.currentView===`bundles`&&P.selectedBundle===m.integrity&&Z({animate:!1}))}if(!t()||!F())return!1;u&&mM.set(`${r}\0${h.commit}`,u),c=TM(h,u),l=OM(c,h)}sr();let d=P.bundleCompare?.bundle===c.integrity?P.bundleCompare:null,f=e.compareCommit??e.compareTarget??null;return P.bundles=[c],KX(c.integrity,o),o===`compare`&&f?P.bundleCompare={bundle:c.integrity,target:f,mode:ni(e.compareMode)}:d&&o!==`compare`&&(P.bundleCompare=d),o===`code`&&e.file!=null?P.bundleCodeFileRequest={bundle:c.integrity,file:e.file,...e.line==null?{}:{line:e.line},...e.endLine==null?{}:{endLine:e.endLine}}:o===`code`&&typeof e.filePath==`string`&&(P.bundleCodeFileRequest={bundle:c.integrity,path:e.filePath}),P.bundleDetails=l,P.repositoryCodeOpening=null,P.currentManagedTeam=null,P.currentManagedReport=null,P.reports=[],document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),n(),document.querySelector(`#main-content`)?.scrollTo({top:0}),kM(c,P.bundleDetailsTab,kx(P))}function HM({revision:e,commit:t},n){if(e?.name)return e;let r=n?.status===`ready`?n.value:null;if(e)return{kind:`branch`,name:r?.defaultBranch??``};let i=e=>(Array.isArray(r?.[e])?r[e]:[]).flatMap(e=>e?.sha===t&&typeof e.name==`string`?[e.name]:[]),a=t?i(`branchCommits`):[],o=a.includes(r?.defaultBranch)?r.defaultBranch:a[0],s=t?i(`tagCommits`)[0]:null;return o?{kind:`branch`,name:o}:s?{kind:`tag`,name:s}:{kind:`commit`,name:t??``}}var UM=new Set([`issues`,`pulls`,`agents`,`pulse`]);function WM({how:e,kind:t,name:n}){let r=n.trim();return e===`kind`||e===`input`||!r||t===`commit`&&!/^[a-f\d]{7,40}$/iu.test(r)?null:{kind:t,name:r}}var GM=class extends ga{static properties={repository:{attribute:!1},tab:{type:String},repos:{attribute:!1},refs:{attribute:!1},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.tab=`code`,this.repos=null,this.refs=null,this._edit=null,this._shownKey=null}willUpdate(){let{repoId:e,commit:t,path:n,revision:r}=this.repository??{},i=JSON.stringify([e,t,n,r]);i!==this._shownKey&&(this._shownKey=i,this._edit=null)}revisionChanged({detail:e}){let t=WM(e);this._edit=t??{kind:e.kind,name:e.name},t&&NM(this.repository,t,this.tab)}render(){if(!this.repository)return j;let{repoId:e,repo:t,commit:n,path:r}=this.repository,i=this.repos?.status===`ready`?this.repos.value:[],a=i.map(e=>({value:e.repoId,label:e.fullName}));i.some(t=>t.repoId===e)||a.unshift({value:e,label:t??`Repository ${e}`});let o=this._edit??HM(this.repository,this.refs),s=UM.has(this.tab),c=r&&!s?r.split(`/`):[],l=t??i.find(t=>t.repoId===e)?.fullName,u=l&&n?`https://github.com/${[...l.split(`/`),`tree`,n,...c].map(encodeURIComponent).join(`/`)}`:null;return k`<repository-selector class="repository-code-repo" label="Repository" .options="${a}" .value="${e}" @repository-change="${t=>{t.detail.value!==e&&AM({repoId:t.detail.value,repo:a.find(e=>e.value===t.detail.value)?.label,bundleTab:this.tab})}}"></repository-selector>${c.length>0?k`<nav class="repository-code-path" aria-label="Directory"><button type="button" aria-label="Open the repository's root" @click="${()=>PM(this.repository,``,this.tab)}">/</button> ${c.map((e,t)=>t===c.length-1?k`<span aria-current="location">${e}</span>`:k`<button type="button" @click="${()=>PM(this.repository,c.slice(0,t+1).join(`/`),this.tab)}">${e}</button><span aria-hidden="true">/</span>`)}</nav>`:j} ${s?j:k`<revision-select class="repository-code-revision" .refs="${this.refs?.status===`ready`?this.refs.value:null}" .kind="${o.kind}" .name="${o.name}" .installTooltips="${e=>hr(e)}" @revision-change="${this.revisionChanged}"></revision-select>`} ${u&&!s?k`<a class="bundles-slide-commit" href="${u}" data-tooltip="${n}" data-tooltip-icon="commit" target="_blank" rel="noopener noreferrer" aria-label="${`View this directory at commit ${n.slice(0,7)} on GitHub`}">${O(oa)}<span>${n.slice(0,7)}</span></a>`:j}`}};customElements.get(`repository-code-source`)||customElements.define(`repository-code-source`,GM);function KM(e){let{listing:t}=e;return t?k`<div class="repository-code-listing"><p>Open one of its directories:</p><ul>${t.directories.map(n=>k`<li><button type="button" class="repository-code-directory" @click="${()=>PM({...e,commit:t.commit},n.path,e.tab)}">${xt}<span>${n.name}</span></button></li>`)}</ul></div>`:j}var qM=e=>e.committedAt??-1/0;function JM(e){let t=new Map(e.map((e,t)=>[e.sha,t])),n=new Map(e.map(e=>[e.sha,0]));for(let r of e)for(let e of new Set(r.parents))t.has(e)&&n.set(e,n.get(e)+1);let r=(e,n)=>qM(e)-qM(n)||t.get(n.sha)-t.get(e.sha),i=e.filter(e=>n.get(e.sha)===0).toSorted(r),a=[];for(;i.length>0;){let o=i.pop();a.push(o);for(let a of new Set(o.parents)){if(!t.has(a))continue;let o=n.get(a)-1;if(n.set(a,o),o>0)continue;let s=e[t.get(a)],c=i.length,l=0;for(;l<c;){let e=l+c>>1;r(i[e],s)<0?l=e+1:c=e}i.splice(l,0,s)}}return a}function YM(e,t){let n=new Map(e.map(e=>[e.sha,e])),r=new Set;for(let e=n.get(t);e&&!r.has(e.sha);e=n.get(e.parents[0]))r.add(e.sha);return r}function XM(e,{linear:t=!1,trunk:n=null,colors:r=8}={}){let i=new Set(e.map(e=>e.sha)),a=+(n?.size>0),o=[],s=[],c=[],l=[],u=[],d=0,f=0,p=()=>{let e=o.indexOf(null,a);return e===-1?Math.max(o.length,a):e},m=e=>{if(n?.has(e))return 0;let t=o.indexOf(e);return t===-1?null:t},h=e=>{let t=Math.max(1,r-a),n=new Set([e-1,e+1].filter(e=>o[e]!=null).map(e=>s[e])),i=Array.from({length:t},(e,t)=>t).find(e=>!n.has(a+(f+e)%t))??0,c=a+(f+i)%t;return f=(f+i+1)%t,c};for(let[r,a]of e.entries()){let f=e[r+1],g=t?f?[f.sha]:a.parents.slice(0,1):[...new Set(a.parents)],_=g.filter(e=>i.has(e)),v=m(a.sha),y=v??p(),b=n?.has(a.sha)?0:v===null?h(y):s[y];for(let[e,t]of o.entries())t===a.sha&&(o[e]=null);c.push({commit:a,col:y,color:b});let x=new Set;o[y]=_[0]??null,s[y]=b,_.length>0&&x.add(y);let ee=[];for(let e of _.slice(1)){let t=n?.has(e)?0:o.indexOf(e);if(t===-1||o[t]!==e){let t=p();s[t]=h(t),o[t]=e,x.add(t)}else ee.push(t)}let te=o[y]===null;for(let e of g.filter(e=>!i.has(e)))u.push({row:r,col:y,straight:te,color:b}),te=!1;for(let e=0;e<o.length;e++)o[e]??=null;if(d=Math.max(d,o.length),f){let e=m(f.sha);for(let[t,n]of o.entries())n!==null&&l.push({row:r,from:x.has(t)?y:t,to:n===f.sha?e:t,color:s[t]});for(let t of ee)l.push({row:r,from:y,to:o[t]===f.sha?e:t,color:s[t]})}for(;o.length>0&&o.at(-1)===null;)o.pop()}return{rows:c,segments:l,stubs:u,width:Math.max(d,+(c.length>0))}}var ZM=`100% 0px`,QM=new WeakMap,$M=new WeakMap,eN=[],tN=!1,nN=new WeakMap;function rN(e){let t=nN.get(e);if(t===void 0){let n=getComputedStyle(e).overflowY;t=n===`auto`||n===`scroll`||n===`overlay`,nN.set(e,t)}return t}function iN(e){let t=e.parentNode;for(;t;){if(t.nodeType===Node.DOCUMENT_FRAGMENT_NODE){t=t.host??null;continue}if(t.nodeType!==Node.ELEMENT_NODE||t===document.documentElement)return null;if(rN(t))return t;t=t.parentNode}return null}function aN(e){for(let t of e)$M.get(t.target)?.cb(t.isIntersecting)}function oN(e){let t=e??document,n=QM.get(t);return n||(n=new IntersectionObserver(aN,{root:e,rootMargin:ZM,threshold:0}),QM.set(t,n)),n}function sN(e,t){let n=$M.get(e);n?.io&&n.io.unobserve(e),$M.set(e,{cb:t,io:null}),eN.push(e),tN||(tN=!0,queueMicrotask(cN))}function cN(){tN=!1;let e=eN;eN=[];for(let t of e){let e=$M.get(t);!e||e.io||(e.io=oN(iN(t)),e.io.observe(t))}}function lN(e){let t=$M.get(e);t&&(t.io?.unobserve(e),$M.delete(e))}var uN=12,dN=24,fN=9,pN=8,mN=3,hN=`a[href], .history-commit`,gN=3e5,_N=15e3,vN=3e4,yN=25,bN=new Map,xN=new Set,SN=null,CN=`all`,wN=new Set;function TN(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==SN&&(bN.clear(),wN.clear(),SN=e),bN}var EN=()=>{for(let e of xN)e.requestUpdate()};function DN(e,t,n=new Set){let r={status:`ready`,until:Date.now()+gN,page:1,commits:e.commits,more:e.more===!0,branches:e.branches??[],tags:e.tags??[],defaultBranch:e.defaultBranch??null,unread:e.unread,cut:e.cut===!0,pulls:e.pulls,openPulls:e.openPulls,loadingMore:!1,moreError:null,sought:n};return t?.(r),r}function ON(e,t,n){let r=TN(),i=r.get(e);if(i&&Date.now()<i.until)return i;let a={status:`loading`,until:1/0};return r.set(e,a),t(1).then(t=>(r.get(e)===a&&r.set(e,DN(t,n)),null),t=>(r.get(e)!==a||(t?.name===`AbortError`?r.delete(e):r.set(e,{status:`error`,until:Date.now()+vN,error:t?.message||`The history could not be read.`,code:t?.code??null})),null)).finally(EN),a}function kN(e,t,n,r,i){let a=t.sought;t.sought=new Set(a).add(i),t.refreshing=!0,n(1,null,!0).then(n=>{if(TN().get(e)!==t)return null;let o=t.retried===i?0:Math.min(Number(n.retryIn)||0,_N),s=DN(n,r,o>0?a:t.sought);return o>0&&(Object.assign(s,{retried:i,retryAt:Date.now()+o}),setTimeout(EN,o)),TN().set(e,s),null},()=>null).finally(()=>{t.refreshing=!1,EN()})}function AN(e){let t=new Set(e.commits.map(e=>e.sha));e.branches=[...e.branches,...e.unread.flatMap(({name:e,sha:n})=>t.has(n)?[{name:e,sha:n}]:[])],e.unread=e.unread.filter(e=>!t.has(e.sha)),e.asked??=new Set;let n=new Map,r=(t,r)=>{e.asked.has(t)||n.set(t,Math.max(n.get(t)??-1/0,r??0))};for(let n of e.commits)for(let e of n.parents)t.has(e)||r(e,n.committedAt);for(let t of e.unread)r(t.sha,t.at);e.next=[...n].toSorted((e,t)=>t[1]-e[1]).slice(0,yN).map(([e])=>e);for(let t of e.next)e.asked.add(t);return e.more&&=e.next.length>0,e}function jN(e,t,n,r){t.loadingMore||!t.more||(t.loadingMore=!0,t.moreError=null,t.until=Date.now()+gN,EN(),n(t.page+1,t).then(n=>{if(TN().get(e)!==t)return null;let i=new Set(t.commits.map(e=>e.sha));t.commits=[...t.commits,...n.commits.filter(e=>!i.has(e.sha))];let a=new Set(t.pulls.map(e=>e.merge));return t.pulls=[...t.pulls,...n.pulls.filter(e=>!a.has(e.merge))],t.page+=1,t.more=n.more===!0,r?.(t),t.until=Date.now()+gN,null},e=>(e?.name!==`AbortError`&&(t.moreError=e?.message||`More commits could not be read.`),null)).finally(()=>{t.loadingMore=!1,EN()}))}var MN=/^[a-f\d]{40}$/u,NN=e=>typeof e?.sha==`string`&&MN.test(e.sha)&&Array.isArray(e.parents);function PN(e){if(!Array.isArray(e?.commits))throw Error(`The server answered with no history.`);let t=e.commits.filter(NN),n=Array.isArray(e.unread)?e.unread.filter(e=>typeof e?.name==`string`&&typeof e.sha==`string`&&MN.test(e.sha)):[],r=Array.isArray(e.pulls)?e.pulls.filter(e=>typeof e?.merge==`string`&&MN.test(e.merge)&&Number.isSafeInteger(e.number)&&typeof e.head==`string`&&MN.test(e.head)&&Array.isArray(e.commits)).map(e=>({...e,commits:e.commits.filter(NN)})):[],i=Array.isArray(e.openPulls)?e.openPulls.filter(e=>Number.isSafeInteger(e?.number)&&typeof e.sha==`string`&&MN.test(e.sha)):[];return{...e,commits:t,unread:n,pulls:r,openPulls:i}}function FN(e,t,n){let r=IN(e,t),i=new Map(r.map(e=>[e.sha,e]));if(!i.has(n))return r;let a=new Set;for(let e=[n];e.length>0;){let t=e.pop();a.has(t)||!i.has(t)||(a.add(t),e.push(...i.get(t).parents))}let o=i.get(n);for(let e=new Set;i.has(o.parents[0])&&!e.has(o.sha);o=i.get(o.parents[0]))e.add(o.sha);let s=o.parents.length>0?o.committedAt??1/0:-1/0;return r.filter(e=>!a.has(e.sha)&&(e.committedAt??-1/0)>s)}function IN(e,t){if(t.length===0)return e;let n=new Map(t.map(e=>[e.merge,e])),r=new Set(e.map(e=>e.sha)),i=new Map;for(let e of t)for(let t of e.commits)!r.has(t.sha)&&!i.has(t.sha)&&i.set(t.sha,{...t,pull:e.number});return[...e.map(e=>{let t=n.get(e.sha);return t&&e.parents.length===1&&t.head!==e.parents[0]?{...e,parents:[e.parents[0],t.head]}:e}),...i.values()]}var LN=6e4,RN=60*LN,zN=24*RN;function BN(e,t=Date.now()){if(e==null)return``;let n=t-e;if(n>=-LN&&n<LN)return`now`;if(n>0&&n<RN)return`${Math.floor(n/LN)}m`;if(n>0&&n<zN)return`${Math.floor(n/RN)}h`;if(n>0&&n<7*zN)return`${Math.floor(n/zN)}d`;let r=new Date(e);return r.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,...r.getFullYear()===new Date(t).getFullYear()?{}:{year:`numeric`}})}function VN({branches:e=[],tags:t=[],pulls:n=[],openPulls:r=[]},i){let a=new Map,o=(e,t)=>a.set(e,[...a.get(e)??[],t]);for(let t of e.toSorted((e,t)=>+(t.name===i)-(e.name===i)))o(t.sha,{kind:`branch`,name:t.name,main:t.name===i});let s=new Set;for(let{number:e,sha:t}of[...n.map(e=>({number:e.number,sha:e.head})),...r])s.has(e)||(s.add(e),o(t,{kind:`pull`,name:`#${e}`,number:e}));for(let e of t)o(e.sha,{kind:`tag`,name:e.name});return a}function HN(e,t){if(!t)return e;let n=[],r=0;for(let i of e.matchAll(/(?<=^|[\s([])#(\d+)\b/gu))n.push(e.slice(r,i.index),k`<a href="${`${t}/issues/${i[1]}`}" target="_blank" rel="noopener noreferrer" tabindex="-1">${i[0]}</a>`),r=i.index+i[0].length;return r===0?e:[...n,e.slice(r)]}var UN=e=>fN+e*uN,WN=e=>e*dN+dN/2;function GN({row:e,from:t,to:n}){let[r,i,a,o]=[UN(t),UN(n),WN(e),WN(e+1)];if(r===i)return`M${r} ${a}V${o}`;let s=(a+o)/2;return`M${r} ${a}C${r} ${s} ${i} ${s} ${i} ${o}`}var KN=({row:e,col:t,straight:n})=>n?`M${UN(t)} ${WN(e)+6}v${dN*.55}`:`M${UN(t)+4} ${WN(e)+5}l${uN*.6} ${dN*.5}`;function qN(e,t){let n=Array.from({length:pN},()=>[]);for(let t of e.segments)n[t.color].push(GN(t));let r=Array.from({length:pN},()=>[]);for(let t of e.stubs)r[t.color].push(KN(t));let i=fN*2+(e.width-1)*uN;return k`<svg class="history-graph" width="${i}" height="${e.rows.length*dN}" aria-hidden="true">${n.map((e,t)=>e.length>0?A`<path class=${`lane-${t}`} d=${e.join(``)}/>`:j)} ${r.map((e,t)=>e.length>0?A`<path class=${`history-stub lane-${t}`} d=${e.join(``)}/>`:j)} ${e.rows.map(({commit:e,col:n,color:r},i)=>A`<circle class=${`lane-${r}${e.sha===t?` is-shown`:``}`} cx=${UN(n)} cy=${WN(i)}
171
+ r=${e.sha===t?4.5:e.parents.length>1?3:3.5}/>`)}</svg>`}function JN(e,t,n,r){if(!e?.length)return j;let i=e=>{let t=T({"history-ref":!0,[`is-${e.kind}`]:!0,"is-default":e.main===!0,"is-shown":e.kind===n.kind&&e.name===n.name}),i=k`${e.kind===`tag`?O(Ki):e.kind===`pull`?O(sa):j}<span>${e.name}</span>`;return e.kind===`pull`&&r?k`<a class="${t}" href="${`${r}/pull/${e.number}`}" target="_blank" rel="noopener noreferrer" tabindex="-1" aria-label="${`Pull request ${e.name} on GitHub`}">${i}</a>`:k`<span class="${t}">${i}</span>`},a=e.slice(mN);return k`<span class="history-refs" style="${E({"--ref":`var(--lane-${t})`})}">${e.slice(0,mN).map(i)}${a.length>0?k`<span class="history-ref is-more" data-tooltip="${a.map(e=>e.name).join(`, `)}">+${a.length}</span>`:j}</span>`}function YN(e,t){let{repoId:n,commit:r,path:i}=e,a=t===`all`||t===`unmerged`,o=a?`all\0${n}`:`${n}\0${r}\0${i}`,s=(e,o,s=!1)=>mb(n,a?``:r,i,{page:e,all:a,...s?{fresh:!0}:{},...t!==`path`&&e>1?{from:o.next}:{}}).then(e=>{if(!a&&e?.commit!==r)throw Error(`The server answered with another revision's history.`);return PN(e)}),c=t===`path`?null:AN,l=ON(o,s,c);return a&&l.status===`ready`&&!l.refreshing&&!l.sought.has(r)&&!(l.retryAt>Date.now())&&!IN(l.commits,l.pulls??[]).some(e=>e.sha===r)&&kN(o,l,s,c,r),a&&l.status===`error`&&l.code===`github-token-required`?(wN.add(n),YN(e,`revision`)):{mode:t,key:o,entry:l,more:()=>jN(o,l,s,c)}}var XN=e=>YN(e,e.path?`path`:`revision`),ZN=e=>{xN.add(e)},QN=e=>{xN.delete(e)};function $N(e){TN().delete(e),EN()}var eP=class extends ga{static properties={repository:{attribute:!1},repo:{attribute:!1},refs:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.repo=null,this.refs=null,this._drawn=null,this._moreButton=null,this._mode=null}connectedCallback(){super.connectedCallback(),xN.add(this)}disconnectedCallback(){super.disconnectedCallback(),xN.delete(this),this._moreButton&&lN(this._moreButton),this._moreButton=null}updated(){let e=this.querySelector(`.history-more > button`);this._moreButton&&this._moreButton!==e&&lN(this._moreButton),this._moreButton=e,e&&sN(e,t=>{t&&this.readNear(e)})}readNear(e){e===this._moreButton&&e.isConnected&&!e.disabled&&!e.parentElement.querySelector(`[role=alert]`)&&this._mode!==`unmerged`&&e.click()}mode(){let{repoId:e,path:t}=this.repository;return t?`path`:(TN(),wN.has(e)?`revision`:CN)}history(e){return YN(this.repository,e)}layout(e,t,n){let r=this._drawn;if(r?.commits===t.commits&&r.pulls===t.pulls&&r.mode===e&&r.defaultBranch===n)return r.layout;let i=e===`path`,a=t.branches.find(e=>e.name===n)?.sha,o=i?t.commits:JM(e===`unmerged`?FN(t.commits,t.pulls??[],a):IN(t.commits,t.pulls??[])),s=e===`all`?a:e===`revision`?o[0]?.sha:null,c=XM(o,{linear:i,trunk:s&&!i?YM(o,s):null,colors:pN});return this._drawn={commits:t.commits,pulls:t.pulls,mode:e,defaultBranch:n,layout:c},c}pick(e){CN=e,EN()}open(e,t){let{repoId:n,repo:r,path:i}=this.repository,a=t?.find(e=>e.kind===`branch`)??t?.find(e=>e.kind===`tag`);AM({repoId:n,repo:r,path:i,commit:e.sha,bundleTab:`commits`,...a?{revision:{kind:a.kind,name:a.name}}:{}})}keydown(e){let t=[...this.querySelectorAll(`.history-row`)],n=e.target.closest(`.history-row`),r=n?[...n.querySelectorAll(hN)]:[],i=r.indexOf(e.target);if(i===-1)return;let a={ArrowLeft:-1,ArrowRight:1}[e.key],o={ArrowUp:-1,ArrowDown:1}[e.key],s=a?r[i+a]:(o?t[t.indexOf(n)+o]:{Home:t[0],End:t.at(-1)}[e.key])?.querySelector(`.history-commit`);if(s){e.preventDefault();for(let e of this.querySelectorAll(`.history-row :is(${hN})`))e.tabIndex=e===s?0:-1;s.focus()}}render(){if(!this.repository)return j;let{mode:e,key:t,entry:n,more:r}=this.history(this.mode());this._mode=e;let i=n.status===`ready`,a=e===`all`||e===`unmerged`?n.defaultBranch:this.refs?.status===`ready`?this.refs.value.defaultBranch??null:null,o=i?this.layout(e,n,a):null,s=e===`unmerged`?o?.rows.length??0:n.commits?.length??0,c=e===`unmerged`&&o?new Set(o.rows.map(e=>e.commit.sha)):null,l=i&&e===`all`?n.branches.length:c?n.branches.filter(e=>c.has(e.sha)).length:0,u=i?`${s}${n.more||n.cut?`+`:``} commit${s===1?``:`s`}`:``,d=wN.has(this.repository.repoId);return k`<div class="history-bar">${lM(`commits`)} ${e===`path`?k`<span class="history-scope">Commits touching <code>${this.repository.path}</code></span>`:d?k`<span class="history-scope">Every branch needs your GitHub sign-in.</span>`:k`<div class="history-modes" role="group" aria-label="Branches"><button type="button" aria-pressed="${String(e===`all`)}" @click="${()=>this.pick(`all`)}">All branches</button> <button type="button" aria-pressed="${String(e===`unmerged`)}" @click="${()=>this.pick(`unmerged`)}">Unmerged</button></div>`} ${i?k`<span class="history-summary">${u}${l>0?` on ${l} branch${l===1?``:`es`}`:``}</span>`:j}</div>${i?this.renderCommits(e,n,r,o,a):n.status===`error`?k`<div class="bundles-slide-placeholder is-error"><p role="alert">${n.error}</p><button type="button" @click="${()=>{TN().delete(t),EN()}}">Retry</button></div>`:k`<div class="bundles-slide-placeholder" role="status">Reading the history…</div>`}`}renderCommits(e,t,n,r,i){if(r.rows.length===0&&(e!==`unmerged`||!t.more&&!t.moreError))return k`<div class="bundles-slide-placeholder">${e===`unmerged`?`Every branch read is merged.`:`No commits.`}</div>`;let a=this.repository.commit,o=HM(this.repository,this.refs),s=VN(t,i),c=Math.max(0,r.rows.findIndex(e=>e.commit.sha===a)),l=fN*2+(r.width-1)*uN,u=this.repo??this.repository.repo,d=u?`https://github.com/${u.split(`/`).map(encodeURIComponent).join(`/`)}`:null;return k`<div class="history-scroll">${e===`all`&&!t.refreshing&&!(t.retryAt>Date.now())&&!r.rows.some(e=>e.commit.sha===a)?k`<p class="history-note"><code>${a.slice(0,7)}</code> isn’t among these commits.</p>`:j}<div class="history-lines" style="${E({"--history-graph":`${l}px`})}">${qN(r,a)}<ol class="history-list" aria-label="Commits" @keydown="${this.keydown}">${r.rows.map(({commit:e,color:t},n)=>{let r=s.get(e.sha),i=e.committedAt==null?null:new Date(e.committedAt),l=e.sha.slice(0,7);return k`<li class="${T({"history-row":!0,"is-shown":e.sha===a})}">${d?k`<a class="history-sha" href="${`${d}/commit/${e.sha}`}" target="_blank" rel="noopener noreferrer" tabindex="-1" aria-label="${`Commit ${l} on GitHub`}">${l}</a>`:k`<code class="history-sha">${l}</code>`} ${JN(r,t,o,d)} <span class="history-subject" id="${`history-subject-${e.sha}`}">${HN(e.subject||`(no message)`,d)}</span> <button type="button" class="history-commit" id="${`history-commit-${e.sha}`}" tabindex="${n===c?0:-1}" aria-labelledby="${`history-subject-${e.sha} history-commit-${e.sha}`}" aria-current="${e.sha===a?`true`:j}" @click="${()=>this.open(e,r)}"><span class="history-author">${Jy(e.authorLogin,e.authorName,e.coauthors)}</span> ${i?k`<time class="history-time" datetime="${i.toISOString()}">${BN(e.committedAt)}</time>`:k`<span class="history-time"></span>`}</button></li>`})}</ol></div>${t.cut?k`<p class="history-note">Only the first 5,000 branches by name are read.</p>`:j} ${t.more||t.moreError?k`<div class="history-more">${t.moreError?k`<span role="alert">${t.moreError}</span>`:j} <button type="button" ?disabled="${t.loadingMore}" @click="${n}">${t.loadingMore?`Reading…`:`Older commits`}</button></div>`:j}</div>`}};customElements.get(`repository-history`)||customElements.define(`repository-history`,eP);function tP(e){let t=e?.startsWith(`claude/`)?`claude`:e?.startsWith(`codex/`)?`codex`:null,n=t===`claude`?/^claude\/(issue|pr)-([1-9]\d{0,9})-/u.exec(e):null;return{agent:t,issue:n?.[1]===`issue`?Number(n[2]):null,pull:n?.[1]===`pr`?Number(n[2]):null}}var nP=e=>e.head&&e.fork?`${e.fork}:${e.head}`:e.head,rP=e=>[...e.agents,...e.sessions.length>0||e.claude?[`claude`]:[],...e.tasks.length>0||e.codex?[`codex`]:[]],iP=new Set([`claude`,`codex`]);function aP({pulls:e=[],commits:t=[],branches:n=[]}){let r=new Map,i=e=>{let t=e;for(;r.has(t)&&r.get(t)!==t;)t=r.get(t);return r.set(e,t),t},a=(e,t)=>{let[n,a]=[i(e),i(t)];n!==a&&r.set(a,n)},o=new Map,s=(e,t)=>{for(let n of t)o.set(e,new Set([...o.get(e)??[],n]))},c=(e,t)=>{if(i(e),t.agents.length===0)for(let n of t.sessions)a(e,`session:${n}`);if(t.agents.length===0)for(let n of t.tasks)a(e,`task:${n}`);s(e,rP(t))},l=new Set(n.map(e=>e.name));for(let e of n){let t=`branch:${e.name}`;c(t,e.signals);let{agent:n}=tP(e.name);n&&s(t,[n])}let u=new Map;for(let t of e){let e=nP(t);e!==null&&t.number>(u.get(e)??0)&&u.set(e,t.number)}for(let t of e){let e=`pull:${t.number}`;c(e,t.signals);let{agent:n,pull:r}=tP(t.head);n&&s(e,[n]);let i=nP(t);if(t.signals.agents.length>0){i!==null&&u.get(i)===t.number&&a(e,`branch:${i}`);continue}i&&(n||rP(t.signals).length>0||l.has(i))&&a(e,`branch:${i}`),r&&a(e,`pull:${r}`)}for(let e of t)c(`commit:${e.oid}`,e.signals);let d=new Map;for(let e of r.keys()){let t=i(e),n=d.get(t)??{agents:new Set,keys:[]};n.keys.push(e);for(let t of o.get(e)??[])n.agents.add(t);d.set(t,n)}return[...d.values()]}var oP=e=>(t,n)=>(e(t)??0)-(e(n)??0);function sP({agents:e,keys:t},{pulls:n,commits:r,issues:i,branches:a}){if(e.size===0)return null;let o=e=>t.filter(t=>t.startsWith(e)).map(t=>t.slice(e.length)),s=o(`pull:`).flatMap(e=>n.get(Number(e))??[]).toSorted(oP(e=>e.createdAt)),c=o(`commit:`).flatMap(e=>r.get(e)??[]).toSorted(oP(e=>e.at)),l=[...new Set([...o(`branch:`),...s.flatMap(e=>nP(e)??[])])],u=[...new Set([...s.flatMap(e=>e.closes),...s.flatMap(e=>tP(e.head).issue??[]),...o(`branch:`).flatMap(e=>tP(e).issue??[])])].flatMap(e=>i.get(e)??[]).toSorted(oP(e=>e.createdAt)),d=l.flatMap(e=>a.get(e)??[]),f=[...s,...c,...u,...d];if(f.length===0)return null;let[p,m]=[o(`task:`),o(`session:`)],h=f.flatMap(e=>(`createdAt`in e?e.createdAt:e.at)??[]),g=f.flatMap(e=>(`updatedAt`in e?e.updatedAt:e.at)??[]),_=new Set(s.map(e=>e.state)),v=[...s.map(e=>({at:e.createdAt,title:e.title})),...c.map(e=>({at:e.at,title:e.title}))].toSorted(oP(e=>e.at))[0],y=[...s,...c];return{id:m[0]??p[0]??(s[0]?`pull-${s[0].number}`:c[0]?.oid??l[0]??``),agents:[...[...e].filter(e=>!iP.has(e)),...[`claude`,`codex`].filter(t=>e.has(t))],sessions:m,tasks:p,title:v?.title??u[0]?.title??l[0]??``,authors:[...new Set(f.flatMap(e=>e.author??[]))],startedAt:h.length>0?Math.min(...h):null,updatedAt:g.length>0?Math.max(...g):null,state:_.has(`open`)?`open`:_.has(`merged`)||c.length>0?`merged`:_.has(`closed`)?`closed`:`branch`,pulls:s.map(({number:e,title:t,state:n,draft:r})=>({number:e,title:t,state:n,draft:r})).toReversed(),commits:c.map(({oid:e,title:t})=>({oid:e,title:t})).toReversed(),issues:u.map(({number:e,title:t,state:n})=>({number:e,title:t,state:n})),branches:l,commitCount:s.reduce((e,t)=>e+t.commits,0)+c.length,additions:y.reduce((e,t)=>e+t.additions,0),deletions:y.reduce((e,t)=>e+t.deletions,0)}}function cP(e,{branchesSince:t=null}={}){let n={pulls:new Map((e.pulls??[]).map(e=>[e.number,e])),commits:new Map((e.commits??[]).map(e=>[e.oid,e])),issues:new Map((e.issues??[]).map(e=>[e.number,e])),branches:new Map((e.branches??[]).map(e=>[e.name,e]))},r=e=>t!==null&&e.pulls.length===0&&e.commits.length===0&&(e.updatedAt??0)<t;return aP(e).flatMap(e=>sP(e,n)??[]).filter(e=>!r(e)).toSorted(oP(e=>e.updatedAt)).toReversed()}var K=e=>k`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true">${e}</svg>`,lP=A`<circle cx="8" cy="8" r="6.25"/>`,uP=A`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8"/><circle cx="11.5" cy="12.5" r="1.6"/>`,dP={issues:{open:K(A`${lP}<circle class="fill" cx="8" cy="8" r="1.6"/>`),completed:K(A`${lP}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`),"not-planned":K(A`${lP}<path d="M3.9 12.1l8.2-8.2"/>`)},pulls:{open:K(A`${uP}<path d="M11.5 10.9V6.5a2 2 0 0 0-2-2H7.4M8.9 3 7.4 4.5 8.9 6"/>`),draft:K(A`${uP}<path class="dotted" d="M11.5 10.9V4"/>`),merged:K(A`<circle cx="4.5" cy="3.5" r="1.6"/><circle cx="4.5" cy="12.5" r="1.6"/><path d="M4.5 5.1v5.8M4.5 5.1c0 2.4 2.4 3.4 5.4 3.4"/><circle cx="11.5" cy="8.5" r="1.6"/>`),closed:K(A`${uP}<path d="M9.6 3.1l3.8 3.8M13.4 3.1 9.6 6.9"/>`)}},fP=K(A`<path d="M2.6 3.2h10.8v7.3H8l-3.2 2.6v-2.6H2.6z"/>`),pP={success:[`Checks passed`,K(A`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`)],failure:[`Checks failed`,K(A`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`)],pending:[`Checks running`,K(A`<circle class="fill" cx="8" cy="8" r="3"/>`)]},mP={approved:[`Approved`,K(A`${lP}<path d="M5.4 8.3l1.8 1.8 3.4-3.7"/>`)],changes:[`Changes requested`,K(A`<path d="M3.75 1.75h5.5l3 3v9.5h-8.5z"/><path d="M8 4.5v4M6 6.5h4M6 11h4"/>`)],required:[`Review required`,K(A`<path d="M1.25 8S3.75 3.5 8 3.5 14.75 8 14.75 8 12.25 12.5 8 12.5 1.25 8 1.25 8z"/><circle cx="8" cy="8" r="2"/>`)]},hP=K(A`<circle cx="4" cy="3.5" r="1.5"/><circle cx="4" cy="12.5" r="1.5"/><circle cx="12" cy="12.5" r="1.5"/><path d="M4 5v6M12 11V6a2 2 0 0 0-2-2H7m1.5-1.5L7 4l1.5 1.5"/>`),gP=K(A`<circle cx="4" cy="3" r="1.5"/><circle cx="4" cy="13" r="1.5"/><circle cx="12" cy="3" r="1.5"/><path d="M4 4.5v7m0-3h3a5 5 0 0 0 5-4"/>`),_P=K(A`<circle cx="8" cy="8" r="3"/><path d="M1 8h4m6 0h4"/>`),vP=K(A`<path d="M8 1.75 2.25 4.5v7L8 14.25l5.75-2.75v-7z"/><path d="M2.25 4.5 8 7.25l5.75-2.75M8 7.25v7"/>`);function yP(e,t){return e===`pulls`?t.state===`merged`?[`merged`,`Merged`]:t.state===`closed`?[`closed`,`Closed`]:t.draft?[`draft`,`Draft`]:[`open`,`Open`]:t.state===`open`?[`open`,`Open`]:t.reason===`not-planned`||t.reason===`duplicate`?[`not-planned`,t.reason===`duplicate`?`Closed as duplicate`:`Closed as not planned`]:[`completed`,`Closed`]}var bP={claude:k`<span class="agent-logo" aria-hidden="true">${gy(`anthropic`)}</span>`,codex:k`<span class="agent-logo" aria-hidden="true">${gy(`openai`)}</span>`,copilot:k`<span class="agent-logo" aria-hidden="true">${gy(`github-copilot`)}</span>`},xP={claude:`Claude`,codex:`Codex`},SP=new Map;function CP(e){for(let t of e)SP.set(t.id,t)}var wP=e=>xP[e]??SP.get(e)?.name??e;function TP(e){if(bP[e])return bP[e];let t=SP.get(e)?.avatar;return t?k`<img class="agent-avatar" src="${`/api/avatar/${t}`}" alt="" width="14" height="14" loading="lazy" decoding="async">`:j}var EP=e=>e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey;function DP(e){return e.sessions[0]?`https://claude.ai/code/${e.sessions[0]}`:e.tasks[0]?`https://chatgpt.com/codex/tasks/${e.tasks[0]}`:null}function OP(e,t){return t?e.pulls[0]?`https://github.com/${t}/pull/${e.pulls[0].number}`:e.commits[0]?`https://github.com/${t}/commit/${e.commits[0].oid}`:e.branches[0]?kP(t,e.branches[0]):null:null}function kP(e,t){let[n,r]=t.includes(`:`)?[t.slice(0,t.indexOf(`:`)),t.slice(t.indexOf(`:`)+1)]:[null,t],i=r.split(`/`).map(encodeURIComponent).join(`/`);return n?`https://github.com/${encodeURIComponent(n)}/${encodeURIComponent(e.split(`/`)[1]??``)}/tree/${i}`:`https://github.com/${e}/tree/${i}`}var AP=(e,t)=>DP(e)??OP(e,t),jP=3e5,MP=/^[a-z][a-z\d-]{0,31}$/u,NP=/^(?:app|user)-[1-9]\d{0,11}$/u,PP=3e4,FP=12,IP=new Map,LP=new Set,RP=null,zP=`all`;function BP(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==RP&&(IP.clear(),RP=e),IP}var VP=()=>{for(let e of LP)e.requestUpdate()};function HP(e){if(!Array.isArray(e?.pulls)||!Array.isArray(e.commits))throw Error(`The server answered with no pull requests or commits.`);let t=(Array.isArray(e.agents)?e.agents:[]).filter(e=>typeof e?.id==`string`&&MP.test(e.id)&&![`claude`,`codex`,`all`].includes(e.id)&&typeof e.name==`string`&&e.name.trim()&&(e.avatar===void 0||typeof e.avatar==`string`&&NP.test(e.avatar))).map(({id:e,name:t,avatar:n})=>[e,{id:e,name:t.trim().slice(0,64),avatar:n??null}]),n=e=>Array.isArray(e?.signals?.sessions)&&Array.isArray(e.signals.tasks),r=e=>({...e,signals:{...e.signals,agents:Array.isArray(e.signals.agents)?e.signals.agents.filter(e=>typeof e==`string`&&MP.test(e)&&![`claude`,`codex`,`all`].includes(e)):[]}});return{pulls:e.pulls.filter(e=>Number.isSafeInteger(e?.number)&&typeof e.title==`string`&&Array.isArray(e.closes)&&n(e)).map(r),commits:e.commits.filter(e=>typeof e?.oid==`string`&&/^[a-f\d]{40}$/u.test(e.oid)&&n(e)).map(r),issues:Array.isArray(e.issues)?e.issues.filter(e=>Number.isSafeInteger(e?.number)):[],branches:Array.isArray(e.branches)?e.branches.filter(e=>typeof e?.name==`string`&&n(e)).map(r):[],agents:[...new Map(t).values()],more:e.more===!0,after:e.more===!0?{pulls:e.after?.pulls??null,commits:e.after?.commits??null}:null}}var UP=e=>Object.assign(e,{sessions:cP(e,{branchesSince:e.after?.pulls?Math.min(...e.pulls.map(e=>e.updatedAt??1/0)):null})});function WP(e,t){let n=BP(),r=n.get(e);if(r&&Date.now()<r.until)return r;let i={status:`loading`,until:1/0};return n.set(e,i),t(null).then(t=>(CP(t.agents),n.get(e)===i&&n.set(e,UP({status:`ready`,until:Date.now()+jP,...t,loadingMore:!1,moreError:null})),null),t=>(n.get(e)!==i||(t?.name===`AbortError`?n.delete(e):n.set(e,{status:`error`,until:Date.now()+PP,error:t?.message||`The agents' work could not be read.`})),null)).finally(VP),i}function GP(e,t,n){t.loadingMore||!t.more||(t.loadingMore=!0,t.moreError=null,t.until=Date.now()+jP,VP(),n(t.after).then(n=>{if(BP().get(e)!==t)return null;let r=new Set(t.pulls.map(e=>e.number)),i=new Set(t.commits.map(e=>e.oid));t.pulls=[...t.pulls,...n.pulls.filter(e=>!r.has(e.number))],t.commits=[...t.commits,...n.commits.filter(e=>!i.has(e.oid))],t.more=n.more,t.after=n.after,t.until=Date.now()+jP;let a=t.sessions.length;return UP(t),t.stalled=t.sessions.length<=a,null},e=>(e?.name!==`AbortError`&&(t.moreError=e?.message||`More could not be read.`),null)).finally(()=>{t.loadingMore=!1,VP()}))}function KP(e,t,n){let r=n.trim().toLowerCase().split(/\s+/u).filter(Boolean);return e.filter(e=>{if(t!==`all`&&!e.agents.includes(t))return!1;if(r.length===0)return!0;let n=[e.title,...e.authors,...e.authors.map(Iy),...e.branches,...e.sessions,...e.tasks,...e.pulls.flatMap(e=>[`#${e.number}`,e.title]),...e.commits.flatMap(e=>[e.oid.slice(0,7),e.title]),...e.issues.flatMap(e=>[`#${e.number}`,e.title])].join(`
172
+ `).toLowerCase();return r.every(e=>n.includes(e))})}var qP={open:`open`,merged:`merged`,closed:`closed`,branch:`draft`},JP=e=>(e.agents??[]).map(e=>e.id).filter(t=>(e.sessions??[]).some(e=>e.agents.includes(t))),YP=e=>[`claude`,`codex`,...JP(e)],XP=[[`pulls`,hP,`pull request`,`pull requests`],[`branches`,gP,`branch`,`branches`],[`commits`,_P,`commit to the default branch without a pull request`,`commits to the default branch without a pull request`]];function ZP(e){if(!e.after?.pulls)return 100;let t=Math.max(e.pulls.length,...e.pulls.map(e=>e.number),...(e.issues??[]).map(e=>e.number));return t>0?Math.min(99,Math.floor(100*e.pulls.length/t)):0}function QP(e,t,n){let r=2*Math.PI*9;return k`<span class="${`history-summary read-gauge${n?` is-reading`:``}`}" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="${e}" aria-label="${t}" data-tooltip="${t}"><svg class="read-gauge-ring" viewBox="0 0 22 22" aria-hidden="true"><circle class="read-gauge-track" cx="11" cy="11" r="9"/>${e>0?A`<circle class="read-gauge-arc" cx="11" cy="11" r="9" transform="rotate(-90 11 11)" stroke-dasharray=${`${r*e/100} ${r}`}/>`:j}</svg> ${e===100?k`<svg class="read-gauge-check" viewBox="0 0 16 16" aria-hidden="true"><path d="m4.25 8.5 2.5 2.5 5-5.5"/></svg>`:k`<span class="read-gauge-value" aria-hidden="true">${e}%</span>`}</span>`}function $P(e,t){let n=e.filter(e=>e.agents.includes(t));return{pulls:n.reduce((e,t)=>e+t.pulls.length,0),branches:new Set(n.flatMap(e=>e.branches)).size,commits:n.reduce((e,t)=>e+t.commits.length,0)}}var eF=class extends ga{static properties={repository:{attribute:!1},repo:{attribute:!1},_filter:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.repo=null,this._filter=``,this._moreButton=null}connectedCallback(){super.connectedCallback(),LP.add(this)}disconnectedCallback(){super.disconnectedCallback(),LP.delete(this),this._moreButton&&lN(this._moreButton),this._moreButton=null}updated(){let e=this.querySelector(`.issues-more > button`);this._moreButton&&this._moreButton!==e&&lN(this._moreButton),this._moreButton=e,e&&sN(e,t=>{t&&this.readNear(e)})}readNear(e){e===this._moreButton&&e.isConnected&&!e.disabled&&!this._filter.trim()&&!e.parentElement.querySelector(`[role=alert]`)&&!this.list().entry.stalled&&e.click()}list(){let{repoId:e}=this.repository,t=`${e}`,n=t=>_b(e,t??{}).then(HP),r=WP(t,n);return{key:t,entry:r,more:()=>GP(t,r,n)}}pick(e){zP=e,VP()}render(){if(!this.repository)return j;let{key:e,entry:t,more:n}=this.list(),r=t.status===`ready`,i=r?t.sessions:[],a=e=>r?k`<span class="n">${(e===`all`?i:i.filter(t=>t.agents.includes(e))).length}${t.more?`+`:``}</span>`:j,o=YP(t).includes(zP)?zP:`all`,s=KP(i,o,this._filter);return k`<div class="history-bar issues-bar">${lM(`agents`)}<div class="history-modes" role="group" aria-label="Agents"><button type="button" aria-pressed="${String(o===`all`)}" @click="${()=>this.pick(`all`)}">All${a(`all`)}</button> ${YP(t).map(e=>k`<button type="button" class="${`agent-pick is-${e}`}" aria-pressed="${String(o===e)}" @click="${()=>this.pick(e)}">${TP(e)}${wP(e)}${a(e)}</button>`)}</div><input class="issues-filter" type="search" placeholder="Filter" aria-label="Filter the sessions read" .value="${this._filter}" @input="${e=>{this._filter=e.target.value}}"> ${r?this.renderStats(t):j} ${r?QP(ZP(t),`${t.pulls.length} pull request${t.pulls.length===1?``:`s`} read`,t.loadingMore):j}</div>${r?this.renderSessions(t,s,n,o):t.status===`error`?k`<div class="bundles-slide-placeholder is-error"><p role="alert">${t.error}</p><button type="button" @click="${()=>{BP().delete(e),VP()}}">Retry</button></div>`:k`<div class="bundles-slide-placeholder" role="status">Reading what the agents did…</div>`}`}renderStats(e){let t={pulls:!!e.after?.pulls,branches:!!e.after?.pulls,commits:!!e.after?.commits},n=t=>e.sessions.some(e=>e.agents.includes(t));return k`<span class="agent-totals">${[...JP(e),`claude`,`codex`].filter(n).map(n=>{let r=$P(e.sessions,n);return k`<span class="agent-stats" role="group" aria-label="${wP(n)}"><span class="${`agent-mark is-${n}`}">${TP(n)}</span> ${XP.filter(([e])=>r[e]>0).map(([e,n,i,a])=>{let o=`${r[e].toLocaleString(`en-US`)}${t[e]?`+`:``}`,s=`${o} ${r[e]===1&&!t[e]?i:a}`;return k`<span class="agent-stat" role="img" aria-label="${s}" data-tooltip="${s}">${n}${o}</span>`})}</span>`})}</span>`}renderSessions(e,t,n,r){let i=r===`all`?`agents' sessions`:`${wP(r)} sessions`;return k`<div class="issues-scroll">${t.length>0?k`<ol class="issues-grid" aria-label="Sessions">${t.map(e=>this.renderSession(e))}</ol>`:k`<p class="history-note">${e.sessions.length>0&&this._filter.trim()?`None of the ${i} read match.`:`No ${i} among those read.`}</p>`} ${e.more||e.moreError?k`<div class="history-more issues-more">${e.moreError?k`<span role="alert">${e.moreError}</span>`:j} <button type="button" ?disabled="${e.loadingMore}" @click="${()=>{e.stalled=!1,n()}}">${e.loadingMore?`Reading…`:`More`}</button></div>`:j}</div>`}openSession(e,t){!EP(e)||e.target?.closest?.(`.agent-chip.is-commit`)||(e.preventDefault(),Xe({repository:{...this.repository,repo:this.repo??this.repository.repo},target:{session:t}}))}openItem(e,t,n){EP(e)&&(e.preventDefault(),e.stopPropagation(),Xe({repository:{...this.repository,repo:this.repo??this.repository.repo},target:{number:t,preview:n}}))}renderSession(e){let t=this.repo??this.repository.repo,n=AP(e,t),r=e.updatedAt==null?null:new Date(e.updatedAt),i=e.authors.find(e=>!zy(e)),a=e.pulls.length+e.commits.length,o=a!==e.pulls.length+e.commits.length,s=r?k`<time datetime="${r.toISOString()}">${BN(e.updatedAt)}</time>`:j,c=e.additions||e.deletions?k`<span class="issue-diff"><span class="is-added">+${e.additions.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${e.deletions.toLocaleString(`en-US`)}</span></span>`:j,l=a===1,u=[i?k`<span class="issue-author">${Ly(i)}</span>`:j,l?j:s,a===0?k`<span>no pull request</span>`:o?k`<span>${a} tasks</span>`:j,l?j:c].filter(e=>e!==j),d=[...e.pulls.map(e=>[`is-${e.draft&&e.state===`open`?`draft`:e.state}`,`pull/${e.number}`,`#${e.number}`,{kind:`pulls`,...e}]),...e.commits.map(e=>[`is-commit`,`commit/${e.oid}`,k`<code>${e.oid.slice(0,7)}</code>`,null]),...e.issues.map(e=>[`is-issue is-${e.state===`open`?`open`:`merged`}`,`issues/${e.number}`,k`<span class="sr-only">Issue </span>#${e.number}`,{kind:`issues`,reason:null,...e}])];return k`<li class="${`issue-tile agent-tile is-${qP[e.state]}`}"><div class="issue-body" @click="${t=>this.openSession(t,e)}"><span class="issue-rail">${e.agents.map(e=>k`<span class="${`agent-mark is-${e}`}" role="img" aria-label="${wP(e)}">${TP(e)}</span>`)}</span> <span class="issue-lines">${n?k`<a class="issue-name" href="${n}" target="_blank" rel="noopener noreferrer">${e.title||`(no title)`}</a>`:k`<button type="button" class="issue-name">${e.title||`(no title)`}</button>`} ${u.length>0?k`<span class="issue-meta">${u}</span>`:j} ${d.length>0?k`<span class="agent-task-row"><span class="agent-chips">${d.slice(0,FP).map(([e,n,r,i],a)=>k`<a class="${`agent-chip ${e}`}" href="${t?`https://github.com/${t}/${n}`:j}" target="_blank" rel="noopener noreferrer" @click="${i?e=>this.openItem(e,i.number,i):j}" data-rest="${a<d.length-1?d.length-1-a:j}">${r}</a>`)}</span>${l&&(s!==j||c!==j)?k`<span class="issue-meta">${s}${c}</span>`:j}</span>`:j} ${e.branches[0]?k`<span class="issue-branch"><code>${e.branches[0]}</code>${e.branches.length>1?k`<span>+${e.branches.length-1}</span>`:j}</span>`:j}</span></div></li>`}};customElements.get(`repository-agents`)||customElements.define(`repository-agents`,eF);var tF=3e5,nF=3e4,rF=1e3,iF=5,aF=5e3,oF=12,q=864e5,sF=7*q,cF=8,lF=3,uF=[[1,`Week`,`the week before`],[4,`Month`,`the month before`],[13,`Quarter`,`the quarter before`],[52,`Year`,`the year before`]],dF=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],fF=[1,2,3,4,5,6,0],pF=6,mF=new Map,hF=new Map,gF=new Map,_F=new Map,vF=new Set,yF=null,bF=4,xF={pulls:`merged`,issues:`closed`},SF={pulls:[`Pull requests`,[[`merged`,`Merged`,`is:pr is:merged merged:`],[`opened`,`Opened`,`is:pr created:`]]],issues:[`Issues`,[[`closed`,`Closed`,`is:issue is:closed closed:`],[`created`,`Opened`,`is:issue created:`]]]},CF=[`merged`,`opened`,`closed`,`created`],wF=K(A`<circle cx="8" cy="8" r="2.75"/><path d="M8 1v4.25M8 10.75V15"/>`),TF={agent:`Commit with agents`,without:`Commit without agents`,release:`Release`},EF=10,DF=10;function OF(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==yF&&(mF.clear(),hF.clear(),gF.clear(),_F.clear(),yF=e),mF}var kF=()=>{for(let e of vF)e.requestUpdate()},J=e=>Number.isSafeInteger(e)&&e>=0?e:0,AF=(e,t)=>({count:J(e?.[t]?.count),previous:Number.isSafeInteger(e?.[t]?.previous)?e[t].previous:null,items:Array.isArray(e?.[t]?.items)?e[t].items.filter(e=>Number.isSafeInteger(e?.number)&&typeof e.title==`string`):[]});function jF(e){if(!Number.isSafeInteger(e?.since)||!uF.some(([t])=>t===e.weeks))throw Error(`The server answered with no period.`);let t=t=>AF(e,t),n=e=>Array.isArray(e)&&e.length===7&&e.every(Array.isArray)?e.map(([e,t])=>[J(e),J(t)]):null,r=e=>Array.isArray(e)&&e.length===7?e.map(J):null,i=Array.isArray(e.stats?.weeks)?e.stats.weeks.filter(e=>Number.isSafeInteger(e?.week)&&Array.isArray(e.days)).map(e=>({...e,dayLines:n(e.dayLines),agentDays:r(e.agentDays),releaseDays:r(e.releaseDays),directDays:r(e.directDays)})):[],a=e.stats&&Array.isArray(e.stats.weeks)&&Array.isArray(e.stats.contributors)&&Array.isArray(e.stats.punch)?{weeks:i,contributors:e.stats.contributors.filter(e=>(typeof e?.login==`string`||typeof e?.name==`string`)&&Array.isArray(e.weeks)).map(e=>({login:typeof e.login==`string`?e.login:null,id:Number.isSafeInteger(e.id)?e.id:null,name:typeof e.name==`string`?e.name:null,weeks:e.weeks,days:Array.isArray(e.days)?e.days:null})),punch:fF.map(t=>Array.from({length:24},(n,r)=>J(e.stats.punch[t]?.[r]))),periodPunch:e.stats.periodPunch===!0,lines:typeof e.stats.lines==`boolean`?e.stats.lines:null,agents:i.length>0&&i.every(e=>e.agentDays!==null),releases:i.length>0&&i.every(e=>e.releaseDays!==null),direct:i.length>0&&i.every(e=>e.directDays!==null)&&Array.isArray(e.stats.directCommits),directCommits:Array.isArray(e.stats.directCommits)?e.stats.directCommits.filter(e=>typeof e?.sha==`string`&&Number.isSafeInteger(e.at)).map(e=>({sha:e.sha,at:e.at,subject:typeof e.subject==`string`?e.subject:``,login:typeof e.login==`string`?e.login:null,id:Number.isSafeInteger(e.id)?e.id:null,name:typeof e.name==`string`?e.name:null,kind:typeof e.kind==`string`&&Object.hasOwn(TF,e.kind)?e.kind:null})):[]}:null;return{weeks:e.weeks,since:e.since,merged:t(`merged`),opened:t(`opened`),closed:t(`closed`),created:t(`created`),stats:a,reading:Number.isSafeInteger(e.reading)?e.reading:null,pulls:Number.isSafeInteger(e.pulls)?e.pulls:null,pending:e.pending===!0}}function MF(e,t){gF.set(e,t),t.answer.stats&&_F.set(e,t.answer)}var NF=e=>e.reading??e.pulls,PF=e=>NF(e)===null?e.pending?[aF,oF]:null:[rF,iF];function FF(e,t){let n=OF(),r=`${e}\0${t}`,i=n.get(r);if(i&&Date.now()<i.until)return i;let a={status:`loading`,until:1/0};return n.set(r,a),Cb(e,t).then(jF).then(i=>{if(n.get(r)!==a)return null;let o={status:`ready`,until:Date.now()+tF,answer:i,tries:0,asking:!1};return n.set(r,o),MF(e,o),PF(i)&&IF(r,o,e,t,PF(i)[0]),null},e=>(n.get(r)!==a||(e?.name===`AbortError`?n.delete(r):n.set(r,{status:`error`,until:Date.now()+nF,error:e?.message||`The repository’s pulse could not be read.`})),null)).finally(kF),a}function IF(e,t,n,r,i){t.asking=!0,setTimeout(()=>{OF().get(e)===t&&Cb(n,r).then(jF).then(i=>{if(OF().get(e)!==t)return null;let a=NF(i)!==null&&NF(t.answer)!==null&&NF(i)>NF(t.answer);t.answer=i,t.until=Date.now()+tF,t.tries=a?0:t.tries+1;let o=PF(i);return o&&t.tries<o[1]?IF(e,t,n,r,o[0]):t.asking=!1,null},()=>(t.asking=!1,null)).finally(kF)},i)}function LF(e,t,n){OF();let r=[e,t,n.from,n.to??``,n.authors.join(`,`)].join(`\0`),i=hF.get(r);if(i&&Date.now()<i.until)return i;let a={status:`loading`,until:1/0};return hF.set(r,a),wb(e,t,n).then(e=>(hF.get(r)!==a||hF.set(r,{status:`ready`,until:Date.now()+tF,answer:Object.fromEntries(CF.map(t=>[t,AF(e,t)]))}),null),e=>(hF.get(r)===a&&hF.set(r,{status:`error`,until:Date.now()+nF,error:e?.message||`These couldn’t be read.`}),null)).finally(kF),a}var RF=e=>e.agents===!0&&e.weeks.some(e=>e.agentDays.some(e=>e>0)),zF=e=>e.releases===!0&&e.weeks.some(e=>e.releaseDays.some(e=>e>0)),BF=(e,t,n,r=`days`)=>e.reduce((e,i)=>e+i[r].reduce((e,r,a)=>{let o=i.week+a*q;return o>=t&&o<=n?e+J(r):e},0),0);function VF(e,t=Date.now()){let n=Math.floor(t/q)*q;return n-new Date(n).getUTCDay()*q-(e-1)*sF}function HF(e,t,n,r=Date.now()){return{weeks:n,since:e?.since??VF(n,r),merged:e?.merged??null,opened:e?.opened??null,closed:e?.closed??null,created:e?.created??null,stats:{...t.stats,otherPunch:t.weeks!==n},reading:e?.reading??null,pulls:e?.pulls??null,pending:e?.pending??!1}}function UF(e,t=Date.now()){let{stats:n,since:r}=e;if(!n)return{commits:null,previous:null,agents:null,previousAgents:null,releases:null,previousReleases:null,additions:null,deletions:null,authors:null};let i=Math.floor(t/q)*q,a=e.weeks*sF,o=n.weeks.filter(e=>e.week>=r),s=n.weeks.length>0&&n.weeks[0].week<=r-a,c=e=>n.lines===!0?o.reduce((t,n)=>t+J(n[e]),0):null;return{commits:BF(n.weeks,r,i),previous:s?BF(n.weeks,r-a,i-a):null,agents:n.agents?BF(n.weeks,r,i,`agentDays`):null,previousAgents:n.agents&&s?BF(n.weeks,r-a,i-a,`agentDays`):null,releases:n.releases?BF(n.weeks,r,i,`releaseDays`):null,previousReleases:n.releases&&s?BF(n.weeks,r-a,i-a,`releaseDays`):null,additions:c(`additions`),deletions:c(`deletions`),authors:GF(n.contributors,r).length}}function WF({id:e=null,login:t,name:n}){let r=zy(t,n);if(r)return`agent:${r}`;let i=jy(t)?.id;return i==null?e===null?t?`@${t.toLowerCase()}`:`=${n}`:`#${e}`:`user:${i}`}function GF(e,t,n=1/0){let r=new Map;for(let i of e){let{login:e,name:a}=i,o=WF(i);r.set(o,(i.days??i.weeks).reduce((e,[r,i,a,o])=>r>=t&&r<n?{...e,commits:e.commits+J(i),additions:e.additions+J(a),deletions:e.deletions+J(o)}:e,r.get(o)??{key:o,login:e,name:a,commits:0,additions:0,deletions:0}))}return[...r.values()].filter(e=>e.commits>0).toSorted((e,t)=>t.commits-e.commits||(e.login??e.name).localeCompare(t.login??t.name))}function KF(e,t){let n=e.contributors.filter(e=>WF(e)===t),r=n.length>0&&n.every(e=>e.days),i=e.weeks.map(({week:e})=>({week:e,days:Array.from({length:7},()=>0),dayLines:Array.from({length:7},()=>[0,0]),agentDays:Array.from({length:7},()=>0),releaseDays:Array.from({length:7},()=>0),directDays:Array.from({length:7},()=>0),commits:0,additions:0,deletions:0}));for(let[e,t,a,o,s,c,l]of n.flatMap(e=>r?e.days:e.weeks)){let n=i[Math.floor((e-(i[0]?.week??0))/sF)];if(!n||(n.commits+=J(t),n.additions+=J(a),n.deletions+=J(o),!r))continue;let u=Math.floor((e-n.week)/q);n.days[u]+=J(t),n.dayLines[u]=[n.dayLines[u][0]+J(a),n.dayLines[u][1]+J(o)],n.agentDays[u]+=J(s),n.releaseDays[u]+=J(c),n.directDays[u]+=J(l)}let a=e.agents===!0&&r&&n.every(e=>e.days.every(e=>e.length>4)),o=e.releases===!0&&r&&n.every(e=>e.days.every(e=>e.length>5)),s=e.direct===!0&&r&&n.every(e=>e.days.every(e=>e.length>6));return{...e,weeks:i,agents:a,releases:o,direct:s,byDays:r}}function qF(e,t,n,r=null,i=Date.now()){let a=r===null?e:KF(e,r);if(!e?.direct||!a.direct)return null;let o=Math.min(n-q,Math.floor(i/q)*q),s=e.directCommits.filter(e=>e.at>=t&&e.at<o+q&&(r===null||WF(e)===r));return{count:BF(a.weeks,t,o,`directDays`),items:s}}function JF(e,t=Date.now()){let{stats:n,since:r,weeks:i}=e,a=n.lines===!0;if(i>4)return n.weeks.filter(e=>e.week>=r).map(e=>({from:e.week,to:e.week+sF,day:!1,commits:J(e.commits),agents:n.agents?e.agentDays.reduce((e,t)=>e+t,0):null,releases:n.releases?e.releaseDays.reduce((e,t)=>e+t,0):null,additions:a?J(e.additions):null,deletions:a?J(e.deletions):null,future:!1}));let o=Math.floor(t/q)*q;return Array.from({length:i*7},(e,t)=>{let i=r+t*q,s=n.weeks.find(e=>i>=e.week&&i<e.week+sF),c=s?Math.floor((i-s.week)/q):0,l=a?s?.dayLines?.[c]??null:null;return{from:i,to:i+q,day:!0,commits:J(s?.days[c]),agents:n.agents?J(s?.agentDays[c]):null,releases:n.releases?J(s?.releaseDays[c]):null,additions:l?.[0]??null,deletions:l?.[1]??null,future:i>o}})}function YF(e,t){if(!e.day||t.every(e=>e.days))return[e.from,e.to,!1];let n=e.from-new Date(e.from).getUTCDay()*q;return[n,n+sF,!0]}function XF(e){if(!(e>0))return{top:1,ticks:[0,1]};let t=e/3,n=10**Math.floor(Math.log10(t)),r=Math.max(1,[1,2,5,10].map(e=>e*n).find(e=>e>=t)),i=Math.ceil(e/r)*r;return{top:i,ticks:Array.from({length:i/r+1},(e,t)=>t*r)}}var Y=e=>e.toLocaleString(`en-US`),ZF=new Intl.NumberFormat(`en-US`,{notation:`compact`,maximumFractionDigits:1}),QF=e=>ZF.format(e),$F=(e,t,n=`${t}s`)=>`${Y(e)} ${e===1?t:n}`,eI=(e,t=!1)=>new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,...t?{year:`numeric`}:{},timeZone:`UTC`}),tI=e=>new Date(e).toISOString().slice(0,10),nI=(e,t)=>new Date(e).getUTCFullYear()!==new Date(t).getUTCFullYear(),rI=(e,t)=>{let n=Math.floor(t/q)*q,r=nI(e,n);return e>=n?eI(n,r):`${eI(e,r)} \u2013 ${eI(n,r)}`},iI=(e,t)=>e.day?new Date(e.from).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`,...nI(e.from,t)?{year:`numeric`}:{},timeZone:`UTC`}):`Week of ${eI(e.from,nI(e.from,t))}`,aI=(e,t,n={})=>`${iI(e,t)}: ${$F(e.commits,`commit`)}${n.agents?`, ${Y(e.agents)} with agents`:``}${n.releases?`, ${$F(e.releases,`release`)}`:``}${e.additions===null?``:`, +${Y(e.additions)} \u2212${Y(e.deletions)} lines`}`;function oI(e,t,n){let r=new Date(e[t].from);if(n===1)return`${r.toLocaleDateString(`en-US`,{weekday:`short`,timeZone:`UTC`})} ${r.getUTCDate()}`;if(n===4)return r.getUTCDay()===0?eI(e[t].from):``;if(n===13)return t%2==0?eI(e[t].from):``;let i=r.getUTCMonth();return(t===0?e.length>3&&new Date(e[3].from).getUTCMonth()===i:new Date(e[t-1].from).getUTCMonth()!==i)?i===0?String(r.getUTCFullYear()):r.toLocaleDateString(`en-US`,{month:`short`,timeZone:`UTC`}):``}var sI=(e,t,n)=>t===null||e===null?null:e===t?`Same as ${n}`:`${e>t?`↑`:`↓`}${t>0?` ${Math.max(1,Math.round(Math.abs(e-t)/t*100))}%`:``} from ${Y(t)} ${n}`,cI=(e,t)=>e===0?0:e===t?100:Math.min(99,Math.max(1,Math.round(e/t*100)));function lI(e,t=!1){let[n,r]=t?[`latest `,`: the year shown is as it was before.`]:[``,`.`];return e.reading===null?e.pulls===null?[`GitHub is still counting this repository\u2019s ${n}commits\u2026`,`GitHub hasn\u2019t counted this repository\u2019s ${n}commits yet.`,`Ask again`]:[`Reading the pull requests merged in this repository\u2026 ${Y(e.pulls)} so far`,`${Y(e.pulls)} of the pull requests merged in this repository read so far${r}`,`Read on`]:[`Reading this repository\u2019s ${n}commits\u2026 ${Y(e.reading)} of the last year so far`,`${Y(e.reading)} of this repository\u2019s commits of the last year read so far${r}`,`Read on`]}var uI=(e,t,n)=>e===t?`Same as ${n}`:`${e>t?`↑`:`↓`} from ${t}% ${n}`,dI=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13 13 3M5 3h8v8"/></svg>`,fI=e=>e.endsWith(`[bot]`)?`https://github.com/apps/${encodeURIComponent(e.slice(0,-5))}`:`https://github.com/${encodeURIComponent(e)}`,pI=e=>e.login?By(e.login,e.name,e.login):By(null,e.name),mI=class extends ga{static properties={repository:{attribute:!1},repo:{attribute:!1},_column:{state:!0},_typed:{state:!0},_picked:{state:!0},_everyone:{state:!0},_person:{state:!0},_allDirect:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.repo=null,this._column=null,this._typed=!1,this._picked=null,this._everyone=!1,this._person=null,this._allDirect=!1}connectedCallback(){super.connectedCallback(),vF.add(this)}disconnectedCallback(){super.disconnectedCallback(),vF.delete(this)}willUpdate(e){!e.has(`repository`)||e.get(`repository`)?.repoId===this.repository?.repoId||(this._column=null,this._picked=null,this._everyone=!1,this._person=null,this._allDirect=!1)}pick(e){bF=e,this._column=null,this._picked=null,this._everyone=!1,this._allDirect=!1,kF()}showList(e,t){xF[e]=t,kF()}askAgain(){let{repoId:e}=this.repository,t=`${e}\0${bF}`,n=OF().get(t);n?.status!==`ready`||n.asking||(n.tries=0,IF(t,n,e,bF,0),kF())}render(){if(!this.repository)return j;let{repoId:e}=this.repository,t=FF(e,bF);t.status===`ready`&&MF(e,t);let n=Date.now(),r=t.status===`ready`?t.answer:null,i=_F.get(e),a=r?.stats?r:i&&t.status!==`error`?HF(r,i,bF,n):r,o=!a&&t.status===`loading`?gF.get(e)??null:null,s=a?{answer:a,asking:t.asking===!0}:o,c=s?.answer.stats&&(NF(s.answer)!==null||s.answer.pending);return k`<div class="history-bar">${lM(`pulse`)}<div class="history-modes" role="group" aria-label="Period">${uF.map(([e,t])=>k`<button type="button" aria-pressed="${String(bF===e)}" @click="${()=>this.pick(e)}">${t}</button>`)}</div>${s?k`<span class="pulse-range">${rI(s.answer.since,n)}</span>`:j} ${c?k`<span class="pulse-updating" role="status">${this.renderWaiting(s,lI(s.answer,!0))}</span>`:j}</div>${s?k`<div class="${`pulse-scroll${o?` is-reading`:``}`}" aria-busy="${String(t.status!==`ready`)}">${this.renderPulse(s,n)}</div>`:t.status===`error`?k`<div class="bundles-slide-placeholder is-error"><p role="alert">${t.error}</p><button type="button" @click="${()=>{OF().delete(`${e}\0${bF}`),kF()}}">Retry</button></div>`:k`<div class="bundles-slide-placeholder" role="status">Reading the repository’s pulse…</div>`}`}renderPulse(e,t){let{answer:n}=e,r=uF.find(([e])=>e===n.weeks)[2],i=UF(n,t),a=this.narrowing(n,t),o=n.stats?null:n.reading===null?n.pulls===null?`Counting…`:`Reading pull requests…`:`Reading commits…`,s=o??(n.stats?.lines===null?`Counting…`:null),c=(e,t,i)=>n[t]?this.renderTile(e,Y(n[t].count),sI(n[t].count,n[t].previous,r),`${Y(n[i].count)} opened`):this.renderTile(e,`–`,`Reading…`,``),l=this.renderLists(n,a,t);return k`<section class="pulse-tiles" aria-label="Figures">${this.renderTile(`Commits`,i.commits===null?`–`:Y(i.commits),o??sI(i.commits,i.previous,r),`to the default branch`)} ${this.renderTile(`Contributors`,i.authors===null?`–`:Y(i.authors),o,`who made them`)} ${c(`Pull requests merged`,`merged`,`opened`)} ${c(`Issues closed`,`closed`,`created`)} ${n.stats?.lines===!1?j:this.renderTile(`Lines`,i.additions===null?`–`:k`<span class="is-added">+${Y(i.additions)}</span> <span class="is-removed">−${Y(i.deletions)}</span>`,s,`added and removed`,i.additions===null?j:this.renderRatio(i.additions,i.deletions))} ${i.agents===null||!RF(n.stats)?j:this.renderAgentsTile(i,r)}</section><div class="${`pulse-grid${l.length>2?` is-lists`:``}`}">${n.stats?k`${this.renderActivity(e,t)}${this.renderContributors(n,t)}`:k`<div class="pulse-pending pulse-wide" role="status">${this.renderWaiting(e,lI(n))}</div>`} ${l} ${n.stats?this.renderPunch(n.stats):j}</div>`}renderAgentsTile(e,t){let n=e.commits-(e.releases??0),r=e.previous===null?null:e.previous-(e.previousReleases??0),i=e.releases>0?`, ${$F(e.releases,`release`)} apart`:``;return this.renderTile(k`<span data-tooltip="${`Commits an agent made or co-authored, or merged from an agent’s branch or a pull request labelled for one; releases, tagged commits changing only package.json, lockfiles and changelogs, counted in neither`}">With agents</span>`,n===0?`–`:`${cI(e.agents,n)}%`,e.previousAgents===null||n===0||!r?null:uI(cI(e.agents,n),cI(e.previousAgents,r),t),n===0?`no commits${i}`:`${Y(e.agents)} of ${$F(n,`commit`)}${i}`)}renderWaiting(e,[t,n,r]){return e.asking?t:k`${n} <button type="button" class="history-link" @click="${()=>this.askAgain()}">${r}</button>`}renderTile(e,t,n,r,i=j){return k`<div class="pulse-tile"><span class="pulse-tile-label">${e}</span> <span class="pulse-tile-value">${t}</span> ${i} <span class="pulse-tile-note">${n??r}</span> ${n?k`<span class="pulse-tile-note">${r}</span>`:j}</div>`}renderRatio(e,t){return e+t===0?j:k`<span class="pulse-ratio" aria-hidden="true">${[[`is-added`,e],[`is-removed`,t]].map(([n,r])=>r>0?k`<span class="${n}" style="${E({"--share":`${r/(e+t)}`})}"></span>`:j)}</span>`}renderActivity(e,t){let{answer:n}=e,r=this._person===null?null:n.stats.contributors.find(e=>WF(e)===this._person)??null,i=r?KF(n.stats,this._person):n.stats,a=JF({...n,stats:i},t),o=a[0]?.day?`day`:`week`,s=r?Vy(r.login,r.name):null,c=r?k`<span>a ${o} by</span><button type="button" class="pulse-picked is-person" aria-label="${`${s}\u2019s: show everyone\u2019s`}" @click="${()=>this.showPerson(null)}">${pI(r)}<span aria-hidden="true">×</span></button>`:k`<span>a ${o}</span>`,l=r&&!i.byDays&&o===`day`?`GitHub counts each contributor’s commits a week, not a day, in a repository this large: the quarter and the year show theirs.`:a.some(e=>e.commits>0)?null:`No commits${r?` by ${s}`:``} in the period.`;if(l)return k`<figure class="pulse-panel pulse-activity"><figcaption class="pulse-head"><h3>Commits</h3>${c}</figcaption><p class="pulse-note">${l}</p></figure>`;let u=XF(Math.max(...a.map(e=>e.commits))),d=i.lines===!0&&a.every(e=>e.additions!==null)?XF(Math.max(...a.flatMap(e=>[e.additions,e.deletions]))):null,f={agents:RF(n.stats)&&a.some(e=>e.agents!==null),releases:zF(n.stats)&&a.some(e=>e.releases!==null)},p=f.agents||f.releases,m=n.weeks===1,h=Math.floor(t/q)*q,g=a[this._column]&&!a[this._column].future?this._column:null,_=a.findIndex(e=>e.from===this._picked),v=(e,r,i,o)=>k`<span class="${`pulse-column${r===g?` is-at`:``}${r===_?` is-picked`:``}${e.future?` is-future`:``}${e.day&&n.weeks===4&&[0,6].includes(new Date(e.from).getUTCDay())?` is-weekend`:``}`}" role="${i?`img`:j}" aria-label="${i?aI(e,t,f):j}" aria-hidden="${i?j:`true`}" @pointerenter="${()=>this.point(e.future?null:r)}" @click="${()=>this.pickColumn(a,r)}">${o}</span>`,y=(e,t)=>m&&!e.future?k`<span class="pulse-figure">${t}</span>`:j,b=(e,t,n=j)=>k`<span class="${`pulse-bar${e}`}" style="${E({"--value":`${t}`})}">${n}</span>`,x=e=>{let t=f.releases?e.releases:0,n=e.commits-t;return[...f.agents?[[``,e.agents],[` is-without`,n-e.agents]]:[[``,n]],[` is-release`,t]].map(([e,t])=>t>0?k`<span class="${`pulse-part${e}`}" style="${E({"--part":`${t}`})}"></span>`:j)};return k`<figure class="${`pulse-panel pulse-activity${m?` is-written`:``}`}" tabindex="0" aria-label="${`Commits${d?` and lines`:``} a ${o}${r?` by ${s}`:``}: the arrow keys read each ${o}, Enter picks it for its contributors`}" @keydown="${e=>this.readColumns(e,a)}" @focus="${e=>this.focusColumns(e,a)}" @blur="${()=>this.point(null)}"><figcaption class="pulse-head"><h3>Commits</h3>${c}${p?k`<span class="pulse-legend">${f.agents?k`<span class="pulse-key"></span>With agents<span class="pulse-key is-without"></span>Without`:j}${f.releases?k`<span class="pulse-key is-release"></span>Releases`:j}</span>`:j}</figcaption><div class="pulse-plots" @pointerleave="${()=>this.point(null)}"><div class="pulse-plot">${this.renderTicks(u.ticks.map(e=>[e/u.top,QF(e),e===0]))}<div class="pulse-columns">${a.map((e,t)=>v(e,t,!0,k`${y(e,Y(e.commits))}${p?b(` is-split`,e.commits/u.top,x(e)):b(``,e.commits/u.top)}`))}</div></div>${d?k`<div class="pulse-head is-sub"><h3>Lines</h3><span>added and removed a ${o}</span> <span class="pulse-legend"><span class="pulse-key is-added"></span>Added<span class="pulse-key is-removed"></span>Removed</span></div><div class="pulse-plot is-diverging">${this.renderTicks([[1,`+${QF(d.top)}`],[.5,`0`,!0],[0,`\u2212${QF(d.top)}`]])}<div class="pulse-columns">${a.map((e,t)=>v(e,t,!1,k`<span class="pulse-half">${y(e,`+${QF(e.additions)}`)}${b(` is-added`,e.additions/d.top)}</span> <span class="pulse-half is-below">${b(` is-removed`,e.deletions/d.top)}${y(e,`\u2212${QF(e.deletions)}`)}</span>`))}</div></div>`:i.lines===!1?k`<p class="pulse-note">GitHub doesn’t count lines added and removed in a repository of 10,000 commits or more.</p>`:i.lines===!0?k`<p class="pulse-note">GitHub counts this repository’s lines a week, not a day: the quarter and the year show them.</p>`:k`<p class="pulse-note" role="status">${this.renderWaiting(e,[`GitHub is still counting lines added and removed…`,`GitHub hasn’t counted lines added and removed yet.`,`Ask again`])}</p>`}<div class="${`pulse-axis${m?` is-each`:``}`}" aria-hidden="true">${a.map((e,t)=>k`<span class="${e.future?`is-future`:e.day&&e.from===h?`is-today`:``}">${oI(a,t,n.weeks)}</span>`)}</div>${g===null?j:this.renderTip(n,a,g,t,f,!r)}</div><span class="sr-only" aria-live="polite">${this._typed&&g!==null?aI(a[g],t,f):``}</span></figure>`}renderTip(e,t,n,r,i,a){let o=t[n],s=Math.floor(r/q)*q,[c,l,u]=YF(o,e.stats.contributors),d=a?GF(e.stats.contributors,c,l).slice(0,lF):[],f=(n+.5)/t.length;return k`<div class="${`pulse-tip${f>.6?` is-left`:``}`}" style="${E({"--x":`${f}`})}" aria-hidden="true"><span class="pulse-tip-when">${iI(o,r)}${o.day?o.from===s?k`<span>today</span>`:j:r<o.to?k`<span>so far</span>`:j}</span> <span class="pulse-tip-row"><span class="${`pulse-tip-key${i.agents||i.releases?` is-none`:``}`}"></span><strong>${Y(o.commits)}</strong> ${o.commits===1?`commit`:`commits`}</span> ${i.agents?k`<span class="pulse-tip-row"><span class="pulse-tip-key"></span><strong>${Y(o.agents)}</strong> with agents</span>`:j} ${i.releases?k`<span class="pulse-tip-row"><span class="pulse-tip-key is-release"></span><strong>${Y(o.releases)}</strong> ${o.releases===1?`release`:`releases`}</span>`:j} ${o.additions===null?j:k`<span class="pulse-tip-row"><span class="pulse-tip-key is-added"></span><strong>+${Y(o.additions)}</strong> added</span> <span class="pulse-tip-row"><span class="pulse-tip-key is-removed"></span><strong>−${Y(o.deletions)}</strong> removed</span>`} ${d.length>0?k`<span class="pulse-tip-people">${u?k`<span class="pulse-tip-note">Its week’s</span>`:j} ${d.map(e=>k`<span class="pulse-tip-person">${pI(e)}<strong>${Y(e.commits)}</strong></span>`)}</span>`:j}</div>`}point(e){this._column=e,this._typed=!1}showPerson(e){this._person=e===this._person?null:e,this._column=null,this._allDirect=!1}pickColumn(e,t){let n=e[t];!n||n.future||(this._picked=this._picked===n.from?null:n.from,this._everyone=!1,this._allDirect=!1)}focusColumns(e,t){if(!e.target.matches?.(`:focus-visible`))return;let n=t.findIndex(e=>e.from===this._picked);this._column=n>=0?n:t.findLastIndex(e=>!e.future),this._typed=!0}readColumns(e,t){let n=t.flatMap((e,t)=>e.future?[]:[t]);if(n.length===0)return;let r=t.findIndex(e=>e.from===this._picked),i=n.indexOf(n.includes(this._column)?this._column:n.includes(r)?r:n.at(-1)),a={ArrowLeft:i-1,ArrowRight:i+1,Home:0,End:n.length-1}[e.key];if(a!==void 0)this._column=n[Math.min(Math.max(a,0),n.length-1)];else if(e.key===`Enter`||e.key===` `)this._column=n[i],this.pickColumn(t,n[i]);else if(e.key===`Escape`&&(this._picked!==null||this._column!==null))this._picked=null,this._column=null;else return;this._typed=!0,e.preventDefault()}renderTicks(e){return k`<div class="pulse-ticks" aria-hidden="true">${e.map(([e,t,n])=>k`<span class="${n?`is-zero`:j}" style="${E({"--at":`${e}`})}"><span>${t}</span></span>`)}</div>`}renderContributors(e,t){let{contributors:n}=e.stats,r=JF(e,t).find(e=>e.from===this._picked)??null,[i,a,o]=r?YF(r,n):[e.since,1/0,!1],s=GF(n,i,a),c=s[0]?.commits??1,l=e.stats.lines===!0,u=r?o?`Week of ${eI(i,nI(i,t))}`:iI(r,t):null;return k`<figure class="pulse-panel pulse-people"><figcaption class="pulse-head"><h3>Contributors</h3>${u?k`<button type="button" class="pulse-picked" aria-label="${`${u}: show the whole period\u2019s`}" @click="${()=>{this._picked=null,this._everyone=!1}}">${u}<span aria-hidden="true">×</span></button>`:k`<span>by their commits in the period</span>`}</figcaption>${s.length===0?k`<p class="pulse-note">No commits ${r?o||!r.day?`that week`:`that day`:`in the period`}.</p>`:k`<ol class="${`pulse-ranks${this._person===null?``:` is-picking`}`}">${(this._everyone?s:s.slice(0,cF)).map(e=>k`<li class="${e.key===this._person?`is-person`:j}"><span class="pulse-rank-who"><button type="button" class="pulse-rank-name" aria-pressed="${String(e.key===this._person)}" @click="${()=>this.showPerson(e.key)}">${pI(e)}</button> ${e.login?k`<a class="pulse-rank-profile" href="${fI(e.login)}" target="_blank" rel="noopener noreferrer" aria-label="${`${Vy(e.login,e.name)} on GitHub`}">${dI}</a>`:j}</span> <span class="pulse-rank-bar"><span style="${E({"--value":`${e.commits/c}`})}"></span><span class="pulse-rank-value">${Y(e.commits)}</span></span> ${l?k`<span class="pulse-rank-lines"><span class="is-added">+${QF(e.additions)}</span> <span class="is-removed">−${QF(e.deletions)}</span></span>`:j}</li>`)}</ol>${s.length>cF?k`<button type="button" class="history-link pulse-more" @click="${()=>{this._everyone=!this._everyone}}">${this._everyone?`Fewer`:`and ${$F(s.length-cF,`more`,`more`)}`}</button>`:j}`}</figure>`}renderPunch(e){let{punch:t}=e,n=Math.max(1,...t.flat());return k`<figure class="${`pulse-panel${e.otherPunch?` is-reading`:``}`}" aria-busy="${String(e.otherPunch===!0)}"><figcaption class="pulse-head"><h3>When commits are made</h3><span>by day and hour, in each author’s own time zone${e.periodPunch?``:`, not only the period’s`}</span></figcaption><div class="pulse-punch">${t.map((e,t)=>k`<span class="pulse-punch-day">${dF[fF[t]].slice(0,3)}</span>${e.map((e,r)=>{let i=`${dF[fF[t]]}s, ${String(r).padStart(2,`0`)}:00\u2013${String(r+1).padStart(2,`0`)}:00: ${$F(e,`commit`)}`;return k`<span class="${`pulse-cell is-${e===0?0:Math.ceil(e/n*pF)}`}" role="img" aria-label="${i}" data-tooltip="${i}"></span>`})}`)} <span></span>${Array.from({length:24},(e,t)=>k`<span class="pulse-punch-hour">${t%6==0?`${t}h`:``}</span>`)}</div><div class="pulse-scale" aria-hidden="true">Fewer${Array.from({length:pF},(e,t)=>k`<span class="${`pulse-cell is-${t+1}`}"></span>`)}More</div></figure>`}renderLists(e,t,n){let r=e.stats?qF(e.stats,e.since,1/0,null,n):null,i=r!==null&&r.count>0,a=e.closed&&e.created?e.closed.count+e.created.count:null,o=i&&t?qF(e.stats,t.since??e.since,t.until??1/0,t.person??null,n)??{count:0,items:[]}:r;return[this.renderList(e,`pulls`,t),...i?[this.renderDirect(o,t)]:[],...i&&a===0?[]:[this.renderList(e,`issues`,t)]]}renderDirect(e,t){let n=this.repo??this.repository.repo,r=t?.who?Vy(t.who.login,t.who.name):null,i=t?[r&&`by ${r}`,t.when].filter(Boolean).join(` `):``,a=t?[r&&`by ${r}`,t.when??`in the period`].filter(Boolean).join(` `):`in the period`,o=this._allDirect?e.items:e.items.slice(0,EF),s=Math.max(0,e.count-e.items.length);return k`<section class="pulse-panel pulse-list" aria-label="Direct commits"><div class="pulse-head"><h3 data-tooltip="Commits pushed to the default branch, not merged from a pull request">Direct commits</h3>${t?k`<span class="pulse-narrowed">${i}</span>`:j}<span class="pulse-count">${Y(e.count)}</span></div>${e.count===0?k`<p class="pulse-note">None ${a}.</p>`:k`<ol>${o.map(e=>k`<li><a class="${`pulse-item is-commit${e.kind?` is-${e.kind}`:``}`}" href="${n?`https://github.com/${n}/commit/${e.sha}`:j}" target="_blank" rel="noopener noreferrer"><span class="issue-state" role="img" aria-label="${e.kind?TF[e.kind]:`Commit`}">${wF}</span> <span class="pulse-item-title">${e.subject||`(no message)`}</span> <span class="pulse-item-meta"><span>${e.sha.slice(0,7)}</span><span>${pI(e)}</span><time datetime="${new Date(e.at).toISOString()}">${BN(e.at)}</time></span></a></li>`)}</ol>`} ${e.items.length>EF?k`<button type="button" class="history-link pulse-more" @click="${()=>{this._allDirect=!this._allDirect}}">${this._allDirect?`Fewer`:`and ${$F(e.items.length-EF,`more`,`more`)}`}</button>`:j} ${s>0?k`<p class="pulse-note">${e.items.length>0?$F(s,`older commit`,`older commits`):$F(s,`commit`)} not listed.</p>`:j}</section>`}narrowing(e,t){let n=this._picked===null||!e.stats?null:JF(e,t).find(e=>e.from===this._picked)??null,r=this._person===null||!e.stats?null:e.stats.contributors.filter(e=>WF(e)===this._person);if(!n&&!r)return null;let i=[...new Set((r??[]).flatMap(e=>e.login?[e.login]:[]))].slice(0,DF);return{from:tI(n?.from??e.since),to:n?tI(n.to-q):null,authors:i,nobody:r!==null&&i.length===0,who:r?.[0]??null,when:n?n.day?`on ${iI(n,t)}`:`in the w${iI(n,t).slice(1)}`:null,since:n?.from??e.since,until:n?.to??1/0,person:r?this._person:null}}renderList(e,t,n=null){let[r,i]=SF[t],[a,,o]=i.find(([e])=>e===xF[t]),s=n&&!n.nobody?LF(this.repository.repoId,e.weeks,n):null,c=n?s?.status===`ready`?s.answer:null:e,{count:l,items:u}=c?.[a]??{count:null,items:null},d=this.repo??this.repository.repo,f=n?n.to===null?`>=${n.from}`:`${n.from}..${n.to}`:`>=${tI(e.since)}`,p=(n?.authors??[]).map(e=>` author:${e.endsWith(`[bot]`)?`app/${e.slice(0,-5)}`:e}`).join(``),m=d?`https://github.com/${d}/${t===`pulls`?`pulls`:`issues`}?q=${encodeURIComponent(`${o}${f}${p}`)}`:null,h=n?.who?Vy(n.who.login,n.who.name):null,g=n?[h&&`by ${h}`,n.when??`in the period`].filter(Boolean).join(` `):`in the period`,_=n?[h&&`by ${h}`,n.when].filter(Boolean).join(` `):``;return k`<section class="pulse-panel pulse-list" aria-label="${r}"><div class="pulse-head"><h3>${r}</h3>${n?k`<span class="pulse-narrowed">${_}</span>`:j}<div class="history-modes" role="group" aria-label="${`${r} shown`}">${i.map(([e,n])=>k`<button type="button" aria-pressed="${String(e===a)}" @click="${()=>this.showList(t,e)}">${n}<span class="n">${c?.[e]?Y(c[e].count):`–`}</span></button>`)}</div></div>${n?.nobody?k`<p class="pulse-note">${h}’s commits name no GitHub account to find their ${r.toLowerCase()} by.</p>`:s?.status===`error`?k`<p class="pulse-note" role="alert">${s.error}</p>`:u===null?k`<p class="pulse-note" role="status">Reading…</p>`:u.length===0?k`<p class="pulse-note">None ${g}.</p>`:k`<ol>${u.map(e=>{let[n,r]=yP(t,e);return k`<li><a class="${`pulse-item is-${n}`}" href="${d?`https://github.com/${d}/${t===`pulls`?`pull`:`issues`}/${e.number}`:j}" target="_blank" rel="noopener noreferrer" @click="${n=>this.openItem(n,t,e)}"><span class="issue-state" role="img" aria-label="${r}">${dP[t][n]}</span> <span class="pulse-item-title">${e.title||`(no title)`}</span> <span class="pulse-item-meta"><span>#${e.number}</span>${e.author?k`<span>${Ly(e.author)}</span>`:j} ${e.at==null?j:k`<time datetime="${new Date(e.at).toISOString()}">${BN(e.at)}</time>`}</span></a></li>`})}</ol>`} ${m&&u!==null&&l>u.length?k`<a class="pulse-all" href="${m}" target="_blank" rel="noopener noreferrer">All ${Y(l)} on GitHub</a>`:j}</section>`}openItem(e,t,n){EP(e)&&(e.preventDefault(),Xe({repository:{...this.repository,repo:this.repo??this.repository.repo},target:{number:n.number,preview:{...n,kind:t,labels:[],comments:0}}}))}};customElements.get(`repository-pulse`)||customElements.define(`repository-pulse`,mI);var hI=864e5,gI=[100,300,1e3];function _I(e,t){return JM(e).filter(e=>e.parents.length<=1&&Number.isFinite(e.committedAt)).slice(0,t).toReversed()}var vI=1,yI=.08,bI=.6;function xI(e){let t=[];for(let[n,r]of e.entries()){let i=n===0?0:(r.committedAt-e[n-1].committedAt)/hI;t.push(n===0?0:t[n-1]+Math.min(bI,Math.max(yI,i*vI)))}return t}function SI(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=t.lastIndexOf(`.`);return n>0?t.slice(n+1).toLowerCase():``}function CI(e,t,n){let r=new Set(e.values()),i=Array.from({length:n},(e,t)=>t).filter(e=>!r.has(e)),a=[...t].filter(([t])=>t!==``&&!e.has(t)).toSorted((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0]));for(let[t]of a.slice(0,i.length))e.set(t,i.shift());return e}var wI=.9,TI=2,EI=1,DI=5,OI=1,kI=.06;function AI(){let e=jI(``,null);return{root:e,dirs:new Map([[``,e]]),files:new Map,going:new Set,users:new Map,beams:[],due:[],layout:!0}}function jI(e,t){return{path:e,name:e.slice(e.lastIndexOf(`/`)+1),parent:t,dirs:[],files:[],depth:t?t.depth+1:0,x:t?.x??0,y:t?.y??0,tx:t?.tx??0,ty:t?.ty??0,cluster:0,radius:0,node:[0,0],at:[0,0],lx:void 0,ly:void 0,packed:!1,dirty:!0,touched:-1/0}}function MI(e,t){let n=e.dirs.get(t);if(n)return n;let r=t.lastIndexOf(`/`),i=MI(e,r===-1?``:t.slice(0,r)),a=jI(t,i),[o,s]=[0,i.dirs.length];for(;o<s;){let e=o+s>>1;i.dirs[e].name<a.name?o=e+1:s=e}return i.dirs.splice(o,0,a),e.dirs.set(t,a),YI(i),e.layout=!0,a}function NI(e,t,n,r){let i=e.files.get(t);if(n===`D`&&!i)return null;if(!i){let a=t.lastIndexOf(`/`),o=MI(e,a===-1?``:t.slice(0,a));i={path:t,name:t.slice(a+1),extension:SI(t),dir:o,ox:0,oy:0,touched:r,kind:n,removed:null},o.files.push(i),e.files.set(t,i),YI(o),e.layout=!0}i.touched=r,i.kind=n,i.removed=n===`D`?i.removed??r:null,n===`D`?e.going.add(i):e.going.delete(i);for(let e=i.dir;e;e=e.parent)e.touched=r;return i}function PI(e,t){let{dir:n}=t;n.files.splice(n.files.indexOf(t),1),e.files.delete(t.path),e.going.delete(t);let r=n;for(;r.parent&&r.files.length===0&&r.dirs.length===0;r=r.parent)r.parent.dirs.splice(r.parent.dirs.indexOf(r),1),e.dirs.delete(r.path);YI(r),e.layout=!0}var FI=e=>e.flatMap(([e,t,n])=>t===`R`?[[n,`D`],[e,`A`]]:[[e,t]]);function II(e,t,n,r,i){let a=t.map(t=>{let n=e.users.get(t.key)??{...t,x:NaN,y:NaN,active:r};return e.users.set(t.key,n),n.active=r,n}),o=FI(n),s=o.length>1?Math.min(kI,i/o.length):0;for(let[t,[n,i]]of o.entries())e.due.push({at:r+t*s,path:n,kind:i,users:a});e.due.sort((e,t)=>e.at-t.at)}function LI(e,t){for(let[n,r]of FI(t)){let t=NI(e,n,r,-1/0);t&&r===`D`&&PI(e,t)}}function RI(e,t,n,r=[]){let i=new Set([...e.files.values()].filter(e=>e.removed===null).map(e=>e.path));for(let[t,n]of[...e.due.map(e=>[e.path,e.kind]),...r])n===`D`?i.delete(t):i.add(t);let a=new Set(t);return[...t.filter(e=>!i.has(e)).map(e=>[e,`A`]),...n?[]:[...i].filter(e=>!a.has(e)).map(e=>[e,`D`])]}function zI(e,t){let n=0;for(;n<e.due.length&&e.due[n].at<=t;n++){let{at:t,path:r,kind:i,users:a}=e.due[n],o=NI(e,r,i,t);if(o)for(let n of a)e.beams.push({user:n,file:o,kind:i,at:t})}n>0&&e.due.splice(0,n),e.beams=e.beams.filter(e=>t-e.at<wI);for(let n of[...e.going])t-n.removed>=EI&&PI(e,n);for(let[n,r]of e.users)t-r.active>DI+OI&&e.users.delete(n)}var BI=6,VI=2.2,HI=12,UI=Math.PI*(3-Math.sqrt(5)),WI=46,GI=34,KI=e=>e===0?0:BI*.62*Math.sqrt(e)+VI;function qI(e){let t=BI*.62*Math.sqrt(e+.5);return[t*Math.cos(e*UI),t*Math.sin(e*UI)]}function JI(e){XI(e.root),ZI(e.root,-e.root.node[0],-e.root.node[1],0),e.layout=!1}function YI(e){for(let t=e;t&&!t.dirty;t=t.parent)t.dirty=!0}function XI(e){if(!e.dirty)return;for(let t of e.dirs)XI(t);e.cluster=Math.max(KI(e.files.length),VI)+HI/2;let t={x:0,y:0,r:e.cluster},n=e.dirs.map(e=>({child:e,x:e.lx,y:e.ly,r:e.radius}));if(e.packed)dL(t,n);else{QI([t,...n.toSorted((e,t)=>t.r-e.r||(e.child.name<t.child.name?-1:1))]);for(let e of n)[e.x,e.y]=[e.x-t.x,e.y-t.y];[t.x,t.y]=[0,0]}let r=rL([t,...n]);e.radius=r.r,e.node=[-r.x,-r.y];for(let e of n)[e.child.lx,e.child.ly]=[e.x,e.y],e.child.at=[e.x-r.x,e.y-r.y];e.packed=!0,e.dirty=!1}function ZI(e,t,n,r){let[i,a]=[Math.cos(r),Math.sin(r)],o=([e,r])=>[t+e*i-r*a,n+e*a+r*i];[e.tx,e.ty]=o(e.node);for(let t of e.dirs){let[n,r]=o(t.at);ZI(t,n,r,Math.atan2(r-e.ty,n-e.tx))}}function QI(e){let[t,n,r]=e;if(!t||([t.x,t.y]=[0,0],!n)||([t.x,n.x,n.y]=[-n.r,t.r,0],!r))return;$I(n,t,r);let i={c:t},a={c:n},o={c:r};i.next=o.previous=a,a.next=i.previous=o,o.next=a.previous=i;e:for(let t=3;t<e.length;t++){let n=e[t];$I(i.c,a.c,n);let r=a.next,o=a.c.r,s=i.previous,c=i.c.r;do if(o<=c){if(eL(r.c,n)){a=r,i.next=a,a.previous=i,t--;continue e}o+=r.c.r,r=r.next}else{if(eL(s.c,n)){i=s,i.next=a,a.previous=i,t--;continue e}c+=s.c.r,s=s.previous}while(r!==s.next);let l={c:n,previous:i,next:a};i.next=a.previous=a=l;let u=tL(i);for(let e=l.next;e!==a;e=e.next){let t=tL(e);t<u&&([i,u]=[e,t])}a=i.next}}function $I(e,t,n){let[r,i]=[e.x-t.x,e.y-t.y],a=r*r+i*i;if(!a){[n.x,n.y]=[t.x+n.r,t.y];return}let o=(t.r+n.r)**2,s=(e.r+n.r)**2;if(o>s){let t=(a+s-o)/(2*a),c=Math.sqrt(Math.max(0,s/a-t*t));[n.x,n.y]=[e.x-t*r-c*i,e.y-t*i+c*r]}else{let e=(a+o-s)/(2*a),c=Math.sqrt(Math.max(0,o/a-e*e));[n.x,n.y]=[t.x+e*r-c*i,t.y+e*i+c*r]}}var eL=(e,t)=>{let n=e.r+t.r-1e-6;return n>0&&n*n>(t.x-e.x)**2+(t.y-e.y)**2};function tL(e){let[t,n]=[e.c,e.next.c],r=t.r+n.r;return((t.x*n.r+n.x*t.r)/r)**2+((t.y*n.r+n.y*t.r)/r)**2}var nL=64;function rL(e){let t=e.toSorted((e,t)=>mL(`${e.x},${e.y}`)-mL(`${t.x},${t.y}`)),n=[],r=null,i=0;for(let a=0;a<t.length;a++)if(!(r&&sL(r,t[a]))){if(n=aL(n,t[a]),r=cL(n),!Number.isFinite(r.x+r.y+r.r)||++i>nL*t.length)return iL(e);a=-1}return r}function iL(e){let[t,n]=[0,1].map(t=>{let n=e.flatMap(e=>t===0?[e.x-e.r,e.x+e.r]:[e.y-e.r,e.y+e.r]);return(Math.min(...n)+Math.max(...n))/2});return{x:t,y:n,r:Math.max(...e.map(e=>Math.hypot(e.x-t,e.y-n)+e.r))}}function aL(e,t){if(e.every(e=>sL(t,e)))return[t];for(let n of e)if(!oL(t,n)&&e.every(e=>sL(cL([n,t]),e)))return[n,t];for(let[n,r]of e.entries())for(let i of e.slice(n+1))if(!oL(cL([r,i]),t)&&!oL(cL([r,t]),i)&&!oL(cL([i,t]),r)&&e.every(e=>sL(cL([r,i,t]),e)))return[r,i,t];return[...e,t].length<=3?[...e,t]:[t]}var oL=(e,t)=>e.r-t.r>=0&&(e.r-t.r)**2>=(t.x-e.x)**2+(t.y-e.y)**2;function sL(e,t){let n=e.r-t.r+Math.max(e.r,t.r,1)*1e-9;return n>0&&n*n>(t.x-e.x)**2+(t.y-e.y)**2}function cL([e,t,n]){if(!t)return{x:e.x,y:e.y,r:e.r};if(!n){let[n,r,i]=[t.x-e.x,t.y-e.y,t.r-e.r],a=Math.hypot(n,r)||1e-12;return{x:(e.x+t.x+n/a*i)/2,y:(e.y+t.y+r/a*i)/2,r:(a+e.r+t.r)/2}}let[r,i,a,o,s,c]=[e.x-t.x,e.x-n.x,e.y-t.y,e.y-n.y,t.r-e.r,n.r-e.r],l=e.x**2+e.y**2-e.r**2,[u,d]=[l-t.x**2-t.y**2+t.r**2,l-n.x**2-n.y**2+n.r**2],f=i*a-r*o,[p,m,h,g]=[(a*d-o*u)/(f*2)-e.x,(o*s-a*c)/f,(i*u-r*d)/(f*2)-e.y,(r*c-i*s)/f],[_,v,y]=[m**2+g**2-1,2*(e.r+p*m+h*g),p**2+h**2-e.r**2],b=-(Math.abs(_)>1e-6?(v+Math.sqrt(v*v-4*_*y))/(2*_):y/v);return{x:e.x+p+m*b,y:e.y+h+g*b,r:b}}var lL=60,uL=.5;function dL(e,t){let n=t.filter(e=>e.x!==void 0);for(let r of t)r.x===void 0&&(fL(r,e,n),n.push(r));for(let n=0;n<lL;n++){let n=!1;for(let r of t){let t=Math.hypot(r.x,r.y),i=e.r+r.r;if(t>=i-uL)continue;let a=t>1e-6?Math.atan2(r.y,r.x):mL(r.child.name);[r.x,r.y]=[Math.cos(a)*i,Math.sin(a)*i],n=!0}let r=t.toSorted((e,t)=>e.x-e.r-(t.x-t.r));for(let[e,t]of r.entries())for(let i=e+1;i<r.length&&r[i].x-r[i].r<t.x+t.r;i++){let e=r[i],a=t.r+e.r,[o,s]=[e.x-t.x,e.y-t.y];if(Math.abs(s)>=a-uL)continue;let c=Math.hypot(o,s);if(c>=a-uL)continue;let l=c>1e-6?Math.atan2(s,o):mL(e.child.name),[u,d]=[e.r**2,t.r**2].map(n=>n/(t.r**2+e.r**2)*(a-c));[t.x,t.y]=[t.x-Math.cos(l)*u,t.y-Math.sin(l)*u],[e.x,e.y]=[e.x+Math.cos(l)*d,e.y+Math.sin(l)*d],n=!0}if(!n)return}}function fL(e,t,n){let r=r=>Math.hypot(r.x,r.y)>=t.r+e.r-uL&&n.every(t=>Math.hypot(t.x-r.x,t.y-r.y)>=t.r+e.r-uL),i=[],a=(t,n)=>{for(let[r,a]of[[t,n],[n,t]]){let t={r:e.r};$I(r,a,t),i.push(t)}};for(let e of n)a(t,e);let o=n.toSorted((e,t)=>e.x-e.r-(t.x-t.r));for(let[t,n]of o.entries())for(let r=t+1;r<o.length&&o[r].x-o[r].r<n.x+n.r+2*e.r;r++){let t=o[r];Math.hypot(t.x-n.x,t.y-n.y)<n.r+t.r+2*e.r&&a(n,t)}let s=mL(e.child.name);n.length===0&&i.push({x:Math.cos(s)*(t.r+e.r),y:Math.sin(s)*(t.r+e.r)});let c=null;for(let e of i)r(e)&&(!c||Math.hypot(e.x,e.y)<Math.hypot(c.x,c.y))&&(c=e);let l=Math.max(t.r,...n.map(e=>Math.hypot(e.x,e.y)+e.r))+e.r;[e.x,e.y]=c?[c.x,c.y]:[Math.cos(s)*l,Math.sin(s)*l]}function pL(e,t,n=GI){let r=e=>1-Math.exp(-t*e),i=r(3),a=r(6),o=r(2.5);for(let t of e.dirs.values()){t.x+=(t.tx-t.x)*i,t.y+=(t.ty-t.y)*i;for(let[e,n]of t.files.entries()){let[t,r]=qI(e);n.ox+=(t-n.ox)*a,n.oy+=(r-n.oy)*a}}let s=new Map;for(let{user:t,file:n}of e.beams){let e=s.get(t)??s.set(t,{x:0,y:0,count:0}).get(t);e.x+=n.dir.x+n.ox,e.y+=n.dir.y+n.oy,e.count++}for(let[e,t]of s){let[n,r]=[t.x/t.count,t.y/t.count];if(Number.isNaN(e.x)){let t=mL(e.key);[e.x,e.y]=[n+Math.cos(t)*WI*3,r+Math.sin(t)*WI*3]}let i=Math.hypot(e.x-n,e.y-r)||1,[a,s]=[n+(e.x-n)/i*WI,r+(e.y-r)/i*WI];e.x+=(a-e.x)*o,e.y+=(s-e.y)*o}let c=[...e.users.values()].filter(e=>!Number.isNaN(e.x));for(let[e,t]of c.entries())for(let r of c.slice(e+1)){let[e,i]=[r.x-t.x,r.y-t.y],a=Math.hypot(e,i);if(a>=n)continue;let[s,c]=a>0?[e/a,i/a]:[Math.cos(mL(r.key)),Math.sin(mL(r.key))],l=(n-a)/2*o;[t.x,t.y,r.x,r.y]=[t.x-s*l,t.y-c*l,r.x+s*l,r.y+c*l]}}function mL(e){let t=0;for(let n of e)t=t*31+n.codePointAt(0)|0;return(t>>>0)/2**32*2*Math.PI}function hL(e){e.layout&&JI(e);for(let t of e.dirs.values()){t.x=t.tx,t.y=t.ty;for(let[e,n]of t.files.entries())[n.ox,n.oy]=qI(e)}}function gL(e){let t={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0},n=(e,n,r)=>{t.minX=Math.min(t.minX,e-r),t.minY=Math.min(t.minY,n-r),t.maxX=Math.max(t.maxX,e+r),t.maxY=Math.max(t.maxY,n+r)};for(let t of e.dirs.values())n(t.x,t.y,KI(t.files.length)+VI);for(let t of e.users.values())Number.isNaN(t.x)||n(t.x,t.y,14);return t}var _L=[.5,1,2,4,8],vL=20,yL=50,bL=8,xL={side:40,top:64,bottom:40},SL=3,CL=10,wL=11,TL=72,EL=250,DL=1.8,OL=2,kL=new Set([`A`,`M`,`D`,`R`]),AL=/^(?:app|user)-[1-9]\d{0,11}$/u,jL=new Map,ML=new Map,NL=new Set,PL=new Map,FL=new Set,IL=new Map,LL=null,RL=300,zL=1;function BL(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==LL&&(jL.clear(),ML.clear(),NL.clear(),PL.clear(),LL=e),jL}var VL=()=>{for(let e of FL)e.requestUpdate()},HL=()=>globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0;function UL(e,t){let{repoId:n,commit:r,path:i}=e,a=`${n}\0${r}\0${i}\0${t}`,o=BL().get(a);if(o)return o;let s={key:a,repoId:n,path:i,count:t,commits:null,times:[],reading:!1,treeReading:!1,error:null,counted:``,counts:new Map,colors:new Map,people:null,scene:AI(),clock:0,next:0,playing:!1,waiting:!1,ended:!1,started:!1};return jL.set(a,s),s}var WL={files:[],cut:!1},GL=e=>e.commits[0]?.parents[0]??null,KL=e=>`${e.repoId}\0${e.path}\0${GL(e)}`,qL=e=>GL(e)?PL.get(KL(e)):WL,JL=(e,t)=>`${e.repoId}\0${e.path}\0${t}`,YL=(e,t)=>ML.get(JL(e,t)),XL=(e,t)=>NL.has(JL(e,t)),ZL=(e,t)=>PL.get(JL(e,t)),QL=(e,t)=>!(!YL(e,t.sha)||XL(e,t.sha)&&!ZL(e,t.sha));function $L(e){let t=0;for(;t<(e.commits?.length??0)&&QL(e,e.commits[t]);)t++;return t}function eR(e,t){if(!Array.isArray(e)||!kL.has(e[1]))return null;let n=e=>typeof e==`string`&&(t===``||e.startsWith(`${t}/`))?e.slice(t===``?0:t.length+1):null,[r,i,a]=[n(e[0]),e[1],n(e[2])];return!r||i===`R`&&!a?null:i===`R`?[r,i,a]:[r,i]}function tR(e){let t=qL(e),n=e.commits.filter(t=>YL(e,t.sha)),r=`${t?t.files.length:`-`}\0${n.length}`;if(r===e.counted)return;e.counted=r,e.counts=new Map;let i=t=>e.counts.set(SI(t),(e.counts.get(SI(t))??0)+1);for(let e of t?.files??[])i(e);for(let t of n)for(let[n,r]of FI(YL(e,t.sha)))r!==`D`&&i(n);CI(e.colors,e.counts,bL)}function nR(e){if(e.treeReading||e.error)return;let t=[...e.commits.slice(e.next),...e.commits.slice(0,e.next)],n=GL(e)&&!qL(e),r=n?GL(e):t.find(t=>XL(e,t.sha)&&!ZL(e,t.sha))?.sha;if(!r)return;e.treeReading=!0;let i=JL(e,r);gb(e.repoId,e.path,r).then(t=>{if(BL().get(e.key)!==e)return null;let r=Array.isArray(t?.files)?t.files.map(t=>eR([t,`A`],e.path)?.[0]).filter(Boolean):[];return PL.set(i,{files:r,cut:t?.cut===!0||!n&&!Array.isArray(t?.files)}),null},t=>(t?.name!==`AbortError`&&(e.error=t?.message||(n?`The files the commits start from could not be read.`:`The files a commit leaves could not be read.`)),null)).finally(()=>{e.treeReading=!1,VL()})}function rR(e,t,n){let r=YL(e,n.sha),i=XL(e,n.sha)?ZL(e,n.sha):null;return i?[...r,...RI(t,i.files,i.cut,FI(r))]:r}function iR(e,t){let n=AI();n.start=qL(e),LI(n,n.start.files.map(e=>[e,`A`]));for(let r of e.commits.slice(0,t))LI(n,rR(e,n,r));return hL(n),n}function aR(e){if(e.reading||e.error||!e.commits)return;let t=$L(e)===0?vL:yL,n=[...e.commits.slice(e.next),...e.commits.slice(0,e.next)].filter(t=>!YL(e,t.sha)).slice(0,t).map(e=>e.sha);n.length!==0&&(e.reading=!0,hb(e.repoId,e.path,n).then(t=>{if(BL().get(e.key)!==e)return null;let r=new Map((Array.isArray(t?.changes)?t.changes:[]).filter(e=>typeof e?.sha==`string`).map(e=>[e.sha,e]));for(let t of n)ML.set(JL(e,t),Array.isArray(r.get(t)?.files)?r.get(t).files.map(t=>eR(t,e.path)).filter(Boolean):[]),r.get(t)?.more===!0&&NL.add(JL(e,t));return null},t=>(t?.name!==`AbortError`&&(e.error=t?.message||`What the commits changed could not be read.`),null)).finally(()=>{e.reading=!1,VL()}))}function oR(e){let t=new Map;for(let{login:n=null,name:r=null,agent:i=null,avatar:a=null}of[{login:e.authorLogin,name:e.authorName},...e.coauthors??[]]){if(typeof n!=`string`&&typeof r!=`string`)continue;let e=typeof i==`string`&&Object.hasOwn(Vv,i)?i:zy(n,r),o=e?null:jy(n),s=e?`agent:${e}`:o?`user:${o.id}`:typeof n==`string`?`login:${n.toLowerCase()}`:`name:${r.toLowerCase()}`;if(t.has(s))continue;let c=e?Vv[e].name:o?o.name??o.login:r??n,l=e?Vv[e].mark??null:null,u=e?!l&&Vv[e].avatar?`/api/avatar/${Vv[e].avatar}`:null:o?`/api/avatar/${encodeURIComponent(o.id)}`:typeof a==`string`&&AL.test(a)?`/api/avatar/${a}`:null;t.set(s,{key:s,label:c,letter:c.trim()[0]?.toUpperCase()??`?`,agent:e,mark:l,image:u})}return[...t.values()]}var sR={anthropic:[qi,4,5,8],openai:[Ji,4,5,8],"github-copilot":[Yi,0,0,24]},cR={claude:[`#d97757`,`#fff`],codex:[`#fff`,`#000`],copilot:[`#0d1117`,`#fff`]},lR=new Map,uR=e=>lR.get(e)??lR.set(e,new Path2D(sR[e][0])).get(e);function dR(e){let t=IL.get(e);return t||(t=new Image,t.decoding=`async`,t.src=e,IL.set(e,t)),t.complete&&t.naturalWidth>0?t:null}var fR=e=>e.toLocaleString(`en-US`),pR=e=>new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`}),mR=e=>e===.5?`½×`:`${e}\xD7`,hR=A`<path d="M5 3.25v9.5L12.75 8z" fill="currentColor"/>`,gR=A`<path d="M5.25 3.5v9M10.75 3.5v9"/>`,_R=A`<path d="M3.25 8a4.75 4.75 0 1 0 1.4-3.36M3.25 2.5v2.75H6"/>`,vR=class extends ga{static properties={repository:{attribute:!1},repo:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.repo=null,this.replay=null,this._frame=null,this._last=0,this._camera=null,this._colors=null,this._themes=null,this._resize=null,this._restless=0,this._laidOut=-1/0,this._pointer=null,this._hovered=null,this._shownNext=-1}connectedCallback(){super.connectedCallback(),FL.add(this),ZN(this),this._themes=new AbortController,globalThis.addEventListener(`deepview-theme-changed`,()=>this.themeChanged(),{signal:this._themes.signal}),this._resize=globalThis.ResizeObserver?new ResizeObserver(()=>{this.restless()}):null,this._resize?.observe(this),this._last=performance.now(),this._frame=requestAnimationFrame(e=>this.frame(e))}disconnectedCallback(){super.disconnectedCallback(),FL.delete(this),QN(this),this._themes?.abort(),this._resize?.disconnect(),cancelAnimationFrame(this._frame),this._frame=null,this.replay&&![...FL].some(e=>e.replay===this.replay)&&(this.replay.playing=!1)}updated(){let e=this.replay;if(!e)return;if(this.restless(),!e.commits){let{entry:t,more:n}=XN(this.repository);if(t.status!==`ready`)return;if(t.commits.filter(e=>e.parents.length<=1&&Number.isFinite(e.committedAt)).length<e.count&&t.more){!t.loadingMore&&!t.moreError&&n();return}e.commits=_I(t.commits,e.count),e.times=xI(e.commits)}nR(e),aR(e);let t=qL(e);t&&(tR(e),e.scene.start!==t&&this.seek(e.next),!e.started&&$L(e)>0&&(e.started=!0,e.playing=!HL(),this.requestUpdate()))}pickCount(e){RL=e,VL()}pickSpeed(e){zL=e,VL()}toggle(){let e=this.replay;e?.commits?.length&&(e.ended?(this.seek(0),e.playing=!0):e.playing=!e.playing,e.started=!0,this.requestUpdate())}seek(e){let t=this.replay;if(!t?.commits||!qL(t))return;let n=Math.max(0,Math.min(e,$L(t)));Object.assign(t,{scene:iR(t,n),next:n,clock:n>0?t.times[n-1]:-.001,ended:!1,waiting:!1}),this._camera=null,this.requestUpdate()}restless(){this._restless=performance.now()+3e3}themeChanged(){this.readColors(),this.restless(),this.replay&&this.draw(this.replay,0)}frame(e){this._frame=requestAnimationFrame(e=>this.frame(e));let t=Math.min(.1,Math.max(0,(e-this._last)/1e3));this._last=e;let n=this.replay;n&&(n.playing&&n.commits&&this.play(n,t),n.next!==this._shownNext&&(this._shownNext=n.next,this.requestUpdate()),this._colors||this.readColors(),(n.playing||e<this._restless)&&(zI(n.scene,n.clock),n.scene.layout&&e-this._laidOut>=EL&&(JI(n.scene),this._laidOut=e),pL(n.scene,t,Math.max(GI,TL/(this._camera?.zoom??1))),this.draw(n,t)))}play(e,t){let n=e.clock+t*zL,r=e.waiting;for(e.waiting=!1;e.next<e.commits.length&&e.times[e.next]<=n;){let t=e.commits[e.next];if(!QL(e,t)){n=e.times[e.next],e.waiting=!0;break}let r=e.times[e.next],i=(e.times[e.next+1]??r+bI)-r;II(e.scene,oR(t),rR(e,e.scene,t),r,i*.8),e.next++}e.clock=n,e.next>=e.commits.length&&n>(e.times.at(-1)??0)+OL&&(e.playing=!1,e.ended=!0),(r!==e.waiting||e.ended)&&this.requestUpdate()}readColors(){let e=this.querySelector(`.replay-swatches`);if(!e)return;let t=t=>getComputedStyle(e.querySelector(`.is-${t}`)).color,n={background:t(`background`),text:t(`text`),muted:t(`muted`),surface:t(`surface`),added:t(`added`),modified:t(`modified`),removed:t(`removed`),kinds:Array.from({length:bL},(e,n)=>t(`kind-${n}`)),font:getComputedStyle(this).fontFamily},r=Object.assign(document.createElement(`canvas`),{width:1,height:1}).getContext(`2d`,{willReadFrequently:!0});n.pixels=new Map([n.muted,...n.kinds].map(e=>(r.clearRect(0,0,1,1),r.fillStyle=e,r.fillRect(0,0,1,1),[e,[...r.getImageData(0,0,1,1).data]]))),this._colors=n}draw(e,t){let n=this.querySelector(`canvas`),r=this._colors;if(!n||!r)return;let{clientHeight:i,clientWidth:a}=n;if(a===0||i===0)return;let o=globalThis.devicePixelRatio||1;(n.width!==Math.round(a*o)||n.height!==Math.round(i*o))&&(n.width=Math.round(a*o),n.height=Math.round(i*o));let s=n.getContext(`2d`);if(!s)return;s.setTransform(o,0,0,o,0,0),s.clearRect(0,0,a,i);let{scene:c,clock:l}=e,u=this.aim(c,a,i,t),d=e=>(e-u.x)*u.zoom+a/2,f=e=>(e-u.y)*u.zoom+i/2,p=e=>d(e.dir.x+e.ox),m=e=>f(e.dir.y+e.oy);s.lineCap=`round`,s.strokeStyle=r.muted,s.globalAlpha=.35,s.lineWidth=Math.max(1,Math.min(2.5,1.5*u.zoom)),s.beginPath();for(let e of c.dirs.values())e.parent&&(s.moveTo(d(e.parent.x),f(e.parent.y)),s.lineTo(d(e.x),f(e.y)));s.stroke();let h=Math.max(1.2,VI*u.zoom),g=h<DL,_=t=>e.colors.has(t.extension)?r.kinds[e.colors.get(t.extension)]:r.muted,v=[],y=new Map;for(let e of c.files.values()){if(e.removed!==null||l-e.touched<TI){v.push(e);continue}let[t,n]=[p(e),m(e)];if(t<-h||n<-h||t>a+h||n>i+h)continue;let r=_(e);(y.get(r)??y.set(r,[]).get(r)).push(t,n)}if(g)s.globalAlpha=1,s.drawImage(this.dotLayer(n,y,o,h*o,.85),0,0,a,i);else{s.globalAlpha=.85;for(let[e,t]of y){s.fillStyle=e,s.beginPath();for(let e=0;e<t.length;e+=2)s.moveTo(t[e]+h,t[e+1]),s.arc(t[e],t[e+1],h,0,2*Math.PI);s.fill()}}for(let e of v){let t=Math.max(0,1-(l-e.touched)/TI),n=e.removed===null?1:Math.max(0,1-(l-e.removed)/EI);s.globalAlpha=.85*n+.15*t,s.fillStyle=_(e),s.beginPath(),s.arc(p(e),m(e),h*(1+t)*n,0,2*Math.PI),s.fill()}s.lineWidth=1.5;for(let e of c.beams)Number.isNaN(e.user.x)||(s.globalAlpha=Math.max(0,1-(l-e.at)/wI)*.85,s.strokeStyle=e.kind===`A`?r.added:e.kind===`D`?r.removed:r.modified,s.beginPath(),s.moveTo(d(e.user.x),f(e.user.y)),s.lineTo(p(e.file),m(e.file)),s.stroke());let b=(e,t,n)=>{s.strokeText(e,t,n),s.fillText(e,t,n)};s.lineJoin=`round`,s.globalAlpha=1,s.textBaseline=`middle`,s.font=`11px ${r.font}`,s.fillStyle=r.muted,s.strokeStyle=r.background,s.lineWidth=3;for(let e of c.dirs.values())!e.parent||e.depth>1&&l-e.touched>TI||b(e.name,d(e.x)+Math.max(6,(KI(e.files.length)+3)*u.zoom),f(e.y));let x=v.filter(e=>e.removed===null);if(x.length<=CL){s.fillStyle=r.text;for(let e of x)s.globalAlpha=Math.max(0,1-(l-e.touched)/TI),b(e.name,p(e)+h*2+3,m(e))}s.textAlign=`center`;for(let e of c.users.values()){if(Number.isNaN(e.x))continue;let[t,n]=[d(e.x),f(e.y)];s.globalAlpha=Math.max(0,Math.min(1,1-(l-e.active-DI)/OI));let[i,a]=Object.hasOwn(cR,e.agent)?cR[e.agent]:[r.surface,r.text];s.fillStyle=i,s.beginPath(),s.arc(t,n,wL,0,2*Math.PI),s.fill();let o=e.image?dR(e.image):null;if(e.mark&&Object.hasOwn(sR,e.mark)){let[,r,i,o]=sR[e.mark],c=wL*2*.62;s.save(),s.translate(t-c/2,n-c/2),s.scale(c/o,c/o),s.translate(-r,-i),s.fillStyle=a,s.fill(uR(e.mark)),s.restore(),s.beginPath(),s.arc(t,n,wL,0,2*Math.PI)}else o?(s.save(),s.clip(),s.drawImage(o,t-wL,n-wL,wL*2,wL*2),s.restore()):(s.fillStyle=r.text,s.font=`600 11px ${r.font}`,s.fillText(e.letter,t,n+.5));s.strokeStyle=r.muted,s.lineWidth=1,s.stroke(),s.fillStyle=r.text,s.strokeStyle=r.background,s.lineWidth=3,s.font=`11px ${r.font}`,b(e.label,t,n+wL+9)}s.textAlign=`start`,s.globalAlpha=1,this.hover(c,d,f,p,m,h)}dotLayer(e,t,n,r,i){let[a,o]=[e.width,e.height];if(this._dots?.wide!==a||this._dots?.high!==o){let e=new ImageData(a,o);this._dots={wide:a,high:o,image:e,pixels:new Uint32Array(e.data.buffer),layer:Object.assign(document.createElement(`canvas`),{width:a,height:o})}}let{image:s,pixels:c,layer:l}=this._dots;c.fill(0);for(let[e,s]of t){let[t,l,u,d]=this._colors.pixels.get(e)??[128,128,128,255],f=(Math.round(d*i)<<24|u<<16|l<<8|t)>>>0;for(let e=0;e<s.length;e+=2){let t=s[e]*n,i=s[e+1]*n,l=Math.max(0,Math.round(t-r)),u=Math.min(a,Math.round(t+r)),d=Math.min(o,Math.round(i+r));for(let e=Math.max(0,Math.round(i-r));e<d;e++)for(let t=e*a+l,n=e*a+u;t<n;t++)c[t]=f}}return l.getContext(`2d`).putImageData(s,0,0),l}aim(e,t,n,r){let i=gL(e),a=Number.isFinite(i.minX),o=a?Math.max(.02,Math.min(SL,(t-2*xL.side)/Math.max(1,i.maxX-i.minX),(n-xL.top-xL.bottom)/Math.max(1,i.maxY-i.minY))):1,s={x:a?(i.minX+i.maxX)/2:0,y:a?(i.minY+i.maxY)/2-(xL.top-xL.bottom)/2/o:0,zoom:o};if(this._camera){let e=1-Math.exp(-r*1.8);this._camera.x+=(s.x-this._camera.x)*e,this._camera.y+=(s.y-this._camera.y)*e,this._camera.zoom=Math.exp(Math.log(this._camera.zoom)+(Math.log(s.zoom)-Math.log(this._camera.zoom))*e)}else this._camera=s;return this._camera}hover(e,t,n,r,i,a){let o=this._pointer,s=null;if(o){let c=(e,t)=>Math.hypot(e-o.x,t-o.y),l=[...e.users.values()].find(e=>!Number.isNaN(e.x)&&c(t(e.x),n(e.y))<=wL+2),u=a+4,d=null;if(!l)for(let t of e.files.values()){let e=c(r(t),i(t));e<=u&&([u,d]=[e,t])}let f=l||d?null:[...e.dirs.values()].find(e=>e.parent&&c(t(e.x),n(e.y))<=6);s=l?l.label:d?this.pathName(d.path):f?`${this.pathName(f.path)}/`:null}let c=s?{text:s,x:o.x,y:o.y}:null;(c?.text!==this._hovered?.text||c?.x!==this._hovered?.x||c?.y!==this._hovered?.y)&&(this._hovered=c,this.requestUpdate())}pathName(e){return this.repository.path?`${this.repository.path}/${e}`:e}pointer(e){let t=e.currentTarget.getBoundingClientRect();this._pointer=e.type===`pointerleave`?null:{x:e.clientX-t.left,y:e.clientY-t.top},this.restless()}render(){if(!this.repository)return j;let e=UL(this.repository,RL);this.replay&&this.replay!==e&&(this.replay.playing=!1),this.replay=e;let t=e.commits?null:XN(this.repository),n=e.commits?.length??0,r=$L(e),i=e.next>0?e.commits[e.next-1]:null,a=e.commits?e.people??=new Set(e.commits.flatMap(e=>oR(e).map(e=>e.key))).size:0,o=(e.commits?qL(e):null)?.cut||e.commits?.some(t=>XL(e,t.sha)&&ZL(e,t.sha)?.cut),s=e.commits&&n>0?`${fR(n)} commit${n===1?``:`s`} by ${fR(a)}, ${pR(e.commits[0].committedAt)} \u2013 ${pR(e.commits.at(-1).committedAt)}${o?`, drawn in part: more files than are read`:``}`:``;return k`<div class="history-bar">${lM(`replay`)}<div class="history-modes" role="group" aria-label="Commits played">${gI.map(e=>k`<button type="button" aria-pressed="${String(RL===e)}" @click="${()=>this.pickCount(e)}">Last ${fR(e)}</button>`)}</div>${s?k`<span class="history-summary">${s}</span>`:j}</div><div class="replay-stage"><canvas class="replay-canvas" role="img" aria-label="${i?`The repository\u2019s files as of ${pR(i.committedAt)}, ${fR(e.next)} of ${fR(n)} commits played`:`The repository’s files, as its commits change them`}" @pointermove="${this.pointer}" @pointerleave="${this.pointer}"></canvas>${i?k`<div class="replay-day"><time datetime="${new Date(i.committedAt).toISOString()}">${pR(i.committedAt)}</time> <span>${fR(e.next)} of ${fR(n)}</span></div>${this.renderCommit(i)}`:j} ${this.renderKey(e)} ${this.renderStatus(e,t,r)} ${this._hovered?k`<div class="replay-tip" style="${E({left:`${this._hovered.x}px`,top:`${this._hovered.y}px`})}">${this._hovered.text}</div>`:j}<div class="replay-swatches" aria-hidden="true">${[`background`,`text`,`muted`,`surface`,`added`,`modified`,`removed`,...Array.from({length:bL},(e,t)=>`kind-${t}`)].map(e=>k`<span class="${`is-${e}`}"></span>`)}</div></div>${this.renderControls(e,n,r)}`}renderCommit(e){let t=this.repo??this.repository.repo,n=t?`https://github.com/${t.split(`/`).map(encodeURIComponent).join(`/`)}`:null,r=e.sha.slice(0,7);return k`<p class="replay-commit">${n?k`<a class="replay-sha" href="${`${n}/commit/${e.sha}`}" target="_blank" rel="noopener noreferrer" aria-label="${`Commit ${r} on GitHub`}">${r}</a>`:k`<code class="replay-sha">${r}</code>`} <span class="replay-commit-subject">${HN(e.subject||`(no message)`,n)}</span> <span class="replay-commit-author">${Jy(e.authorLogin,e.authorName,e.coauthors)}</span></p>`}renderKey(e){if(e.colors.size===0)return j;let t=[...e.colors].toSorted((t,n)=>(e.counts.get(n[0])??0)-(e.counts.get(t[0])??0));return k`<ul class="replay-key" aria-label="Kinds of files">${t.map(([e,t])=>k`<li><span class="${`replay-dot is-kind-${t}`}"></span>.${e}</li>`)}<li><span class="replay-dot is-muted"></span>Other</li><li class="replay-beams"><span class="replay-beam is-added"></span>Added</li><li><span class="replay-beam is-modified"></span>Modified</li><li><span class="replay-beam is-removed"></span>Removed</li></ul>`}renderStatus(e,t,n){if(t?.entry.status===`error`)return k`<div class="replay-status is-error"><p role="alert">${t.entry.error}</p><button type="button" @click="${()=>$N(t.key)}">Retry</button></div>`;if(e.error)return k`<div class="replay-status is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{e.error=null,VL()}}">Retry</button></div>`;if(t?.entry.status===`ready`&&t.entry.moreError)return k`<div class="replay-status is-error"><p role="alert">${t.entry.moreError}</p><button type="button" @click="${()=>t.more()}">Retry</button></div>`;if(t){let e=t.entry.status===`ready`?t.entry.commits.length:0;return k`<div class="replay-status" role="status">${e>0?`Reading commits\u2026 ${fR(e)} so far`:`Reading the history…`}</div>`}return e.commits.length===0?k`<div class="replay-status">No commits to play.</div>`:qL(e)?n===0?k`<div class="replay-status" role="status">Reading what the commits changed…</div>`:e.waiting?k`<div class="replay-status is-waiting" role="status">Reading what the next commits changed…</div>`:j:k`<div class="replay-status" role="status">Reading the files as they were before ${pR(e.commits[0].committedAt)}…</div>`}renderControls(e,t,n){let r=e.ended?`Play again`:e.playing?`Pause`:`Play`,i=n>0&&!!(e.commits&&qL(e)),a=e=>`${t>0?e/t*100:0}%`;return k`<div class="replay-controls"><button type="button" class="replay-play" aria-label="${r}" ?disabled="${!i}" @click="${()=>this.toggle()}"><svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e.ended?_R:e.playing?gR:hR}</svg></button><div class="replay-track" style="${E({"--buffered":a(n),"--played":a(e.next)})}"><input type="range" min="0" max="${t}" step="1" .value="${String(e.next)}" aria-label="Commits played" ?disabled="${!i}" aria-valuetext="${`${fR(e.next)} of ${fR(t)} commits`}" @input="${e=>this.seek(Number(e.target.value))}"></div><div class="history-modes" role="group" aria-label="Speed">${_L.map(e=>k`<button type="button" aria-pressed="${String(zL===e)}" @click="${()=>this.pickSpeed(e)}">${mR(e)}</button>`)}</div></div>`}};customElements.get(`repository-replay`)||customElements.define(`repository-replay`,vR);var yR=new Map,bR=new Set,xR=null;function SR(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==xR&&(yR.clear(),xR=e),yR}var CR=()=>{for(let e of bR)e.requestUpdate()};function wR({repoId:e,commit:t,path:n}){let r=`${e}\0${t}\0${n}`,i=SR().get(r);if(i)return i;let a={key:r,status:`loading`};return yR.set(r,a),gb(e,n,t).then(e=>{if(e?.files===null)throw Error(`GitHub has no files at this commit.`);if(!Array.isArray(e?.files)||!Array.isArray(e.sizes)||e.sizes.length!==e.files.length)throw Error(`The server answered with no files.`);let t=new Map(e.files.map((t,n)=>[t,Number.isSafeInteger(e.sizes[n])&&e.sizes[n]>0?e.sizes[n]:0]));return yR.get(r)===a&&yR.set(r,{key:r,status:`ready`,cut:e.cut===!0,details:{integrity:`tree\0${r}`,kind:`tree`,metadataOnly:!0,listedOnly:!0,fileSizes:t}}),null}).catch(e=>{yR.get(r)===a&&(e?.name===`AbortError`?yR.delete(r):yR.set(r,{key:r,status:`error`,error:e?.message||`Its files could not be read.`}))}).finally(CR),a}var TR=class extends ga{static properties={repository:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this.repository=null}connectedCallback(){super.connectedCallback(),bR.add(this)}disconnectedCallback(){bR.delete(this),super.disconnectedCallback()}render(){if(!this.repository?.commit)return j;let e=wR(this.repository);return e.status===`error`?k`<div class="bundles-slide-placeholder is-error"><p role="alert">${e.error}</p><button type="button" @click="${()=>{yR.delete(e.key),CR()}}">Retry</button></div>`:e.status===`ready`?k`${e.cut?k`<p class="history-note">Only the ${e.details.fileSizes.size.toLocaleString(`en-US`)} files nearest its root are drawn.</p>`:j}<bundle-treemap .details="${e.details}"></bundle-treemap>`:k`<div class="bundles-slide-placeholder" role="status">Reading its files…</div>`}};customElements.define(`repository-treemap`,TR);var ER=3e5,DR=3e4,OR=2,kR=new Map,AR=[],jR=new Set,MR=null,NR=0;function PR(e){return jR.add(e),()=>jR.delete(e)}var FR=()=>{for(let e of jR)e()};globalThis.addEventListener?.(`dependency-review-changed`,()=>{kR.clear(),AR.length=0,FR()});function IR(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==MR&&(kR.clear(),AR.length=0,MR=e),kR}var LR=e=>e?.touchesLockfile===!0||e?.touchesLockfile===null,RR=e=>Number.isSafeInteger(e)&&e>=0?e:null,zR=new Set([`git`,`tarball`,`integrity`]);function BR(e){if(typeof e?.name!=`string`)return[];let{was:t,reviews:n,rejected:r,commented:i,baseline:a,reviewed:o,unsupported:s,patched:c,...l}=e;return[{...l,...Array.isArray(t)&&t.length>0&&t.every(e=>typeof e==`string`)?{was:t}:{},...c===!0?{patched:c}:{},...zR.has(s)?{unsupported:s}:a===!0?{baseline:a}:o===!0?{reviewed:o}:RR(n)===null?{}:{reviews:n,...r===!0?{rejected:r}:{},...RR(i)>0?{commented:i}:{}}}]}var VR=e=>Array.isArray(e)?e.flatMap(BR):[];function HR(e){if(!Array.isArray(e?.lockfiles))throw Error(`The server answered with no lockfiles.`);let t=e.lockfiles.filter(e=>Array.isArray(e?.paths)&&(Array.isArray(e.added)||typeof e.error==`string`)).map(e=>e.error?e:{...e,added:e.added.flatMap(BR),more:RR(e.more)??0,unreviewed:VR(e.unreviewed),moreUnreviewed:RR(e.moreUnreviewed)??0,unsupported:VR(e.unsupported),moreUnsupported:RR(e.moreUnsupported)??0,moreLocked:RR(e.moreLocked)??0}),n=e.review;return{lockfiles:t,cut:e.cut===!0,...typeof e.formatted==`string`&&e.formatted.trim()!==``?{formatted:e.formatted}:{},...RR(n?.required)>0?{review:{required:n.required,since:typeof n.since==`string`?n.since:null,canReview:n.canReview===!0,...RR(n.toReview)===null?{}:{toReview:n.toReview},...RR(n.unreviewed)===null?{}:{unreviewed:n.unreviewed},...RR(n.unsupported)===null?{}:{unsupported:n.unsupported},...Array.isArray(n.baselineUnread)&&n.baselineUnread.every(e=>typeof e==`string`)?{baselineUnread:n.baselineUnread}:{},...n.reviewedDependencies===!0?{reviewedDependencies:!0}:{},...RR(n.unasked)>0?{unasked:n.unasked}:{},...RR(n.commentReviews)>0?{commentReviews:n.commentReviews}:{},...n.commentsFailed===!0?{commentsFailed:!0}:{},...typeof n.baselineError==`string`?{baselineError:n.baselineError}:{},...[`exclude`,`include`].includes(n.lockfiles?.mode)&&Array.isArray(n.lockfiles.paths)&&n.lockfiles.paths.every(e=>typeof e==`string`)?{lockfiles:{mode:n.lockfiles.mode,paths:n.lockfiles.paths}}:{}}}:{}}}function UR(){for(;NR<OR&&AR.length>0;)NR++,AR.shift()().finally(WR)}function WR(){NR--,FR(),UR()}function GR(e,t,n=!1){let r=IR(),i=`${e}\0${t}\0${n}`,a=r.get(i);if(a&&Date.now()<a.until)return a;let o={status:`loading`,until:1/0};return r.set(i,o),AR.push(()=>bb(e,t,{review:n}).then(HR).then(e=>(r.get(i)===o&&r.set(i,{status:`ready`,until:Date.now()+ER,...e}),null),e=>(r.get(i)!==o||(e?.name===`AbortError`?r.delete(i):r.set(i,{status:`error`,until:Date.now()+DR,error:e?.message||`Its lockfiles could not be read.`})),null))),UR(),o}function KR({lockfiles:e,review:t}){let n=new Map;for(let r of e.flatMap(e=>e.added??[])){let e=`${r.name}@${r.version??``}`,i=n.get(e);if(!i){n.set(e,r);continue}let{reviews:a,baseline:o,reviewed:s,unsupported:c,patched:l,...u}=i;n.set(e,{...u,...r.was||i.was?{was:[...new Set([...i.was??[],...r.was??[]])]}:{},...JR(i,r,t)})}let r=[...n.values()],i=r.filter(e=>!e.was);return{versions:[...i,...r.filter(e=>e.was)],fresh:i.length,updated:r.length-i.length,more:e.some(e=>e.more>0),toReview:t?.toReview??r.filter(e=>YR(e,t)===`wanted`).length}}var qR={unsupported:0,wanted:1,passed:2,baseline:3};function JR(e,t,n){let r=e=>qR[YR(e,n)]??4,{unsupported:i,baseline:a,reviewed:o,reviews:s,rejected:c}=r(t)<r(e)||r(t)===r(e)&&(t.reviews??1/0)<(e.reviews??1/0)?t:e,l=Math.max(e.commented??0,t.commented??0);return{...e.patched||t.patched?{patched:!0}:{},...i?{unsupported:i}:a?{baseline:a}:o?{reviewed:o}:s==null?{}:{reviews:s,...c?{rejected:c}:{},...l>0?{commented:l}:{}}}}function YR(e,t){return t?e.unsupported?`unsupported`:e.baseline?`baseline`:e.reviewed?`passed`:e.reviews==null?null:e.reviews>=t.required&&!e.rejected?`passed`:`wanted`:null}function XR({lockfiles:e,review:t}){let n=new Map;for(let t of e.flatMap(e=>e.unreviewed??[])){let e=`${t.name}@${t.version??``}`;n.has(e)||n.set(e,t)}return{versions:[...n.values()],count:t?.unreviewed??n.size+e.reduce((e,t)=>e+(t.moreUnreviewed??0),0)}}function ZR({lockfiles:e,cut:t,review:n}){if(!n)return null;let r=new Map;for(let t of e.flatMap(e=>e.unsupported??[])){let e=`${t.source}\0${t.name}@${t.version??``}\0${t.from??``}`;r.has(e)||r.set(e,t)}let i=t=>e.reduce((e,n)=>e+(n[t]??0),0),a={versions:[...r.values()],count:n.unsupported??r.size+i(`moreUnsupported`),unread:e.filter(e=>e.error),unchecked:i(`moreLocked`),cut:t};return a.count>0||a.unread.length>0||a.unchecked>0||t?a:null}var QR=K(A`<path d="M3.5 8.4l2.9 2.9 6.1-6.6"/>`),$R=K(A`<circle class="fill" cx="8" cy="8" r="3"/>`),ez=K(A`<path d="M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6"/>`),tz=K(A`<circle class="dotted" cx="8" cy="8" r="5.5"/>`),nz=K(A`<path d="M2.6 3.2h7.6v5.3H6.3L4 10.4V8.5H2.6z"/><path d="M12.2 6.2h1.2v5.3H12v1.9l-2.3-1.9H7"/>`),rz={approved:[`approved`,mP.approved[1],`Approved`],changes:[`changes`,mP.changes[1],`Changes requested`],commented:[`commented`,fP,`Commented`],dismissed:[`dismissed`,fP,`Review dismissed`]},iz={done:[`reviewed`,QR,`Reviewed`],running:[`running`,$R,`Reviewing`],failed:[`failed`,ez,`Review failed`],requested:[`requested`,tz,`Asked to review again`]},az=[`requested`,tz,`Review requested`],oz=e=>e.slice(0,7),sz=e=>new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`}),cz=(e,t,n=!1)=>`${e.toLocaleString(`en-US`)}${n?`+`:``} ${t}${e===1&&!n?``:`s`}`;function lz(e){return e?e.failed?iz.failed:e.requested?iz.requested:iz[e.code?.status]??null:null}function uz(e){let t=lz(e.codex),n=e.codex?.code?.commit??null;return[...t?[{who:Ly(e.codex.login,`Codex`),standing:t,commit:n,stale:n!==null&&n!==e.head}]:[],...e.reviewers.map(t=>({who:Ly(t.login,t.login??`someone`),standing:rz[t.state]??az,requested:t.requested&&!!rz[t.state],workflow:t.workflow??null,commit:t.commit,at:t.at,stale:t.commit!==null&&t.commit!==e.head}))]}var dz=e=>(e.moreReviews??0)+(e.moreRequests??0),fz=e=>[e.moreReviews>0?cz(e.moreReviews,`more review`):null,e.moreRequests>0?cz(e.moreRequests,`more review request`):null].filter(Boolean).join(` and `);function pz(e){if(!e.head)return!0;let t=e.codex?.code;return t?.status===`done`&&t.commit===e.head||e.reviewers.some(t=>rz[t.state]&&t.state!==`dismissed`&&t.commit===e.head)?!0:e.moreReviews>0&&null}var mz=e=>e?k`<span class="${`review-severity is-${e}`}">${e.toUpperCase()}</span>`:j;function hz(e){if(!e)return j;let t=uz(e),{open:n,more:r,severity:i}=e.threads,a=n>0?`${cz(n,`open review thread`,r)}${i?`, the gravest ${i.toUpperCase()}`:``}`:r?`No open review thread among those read; more on GitHub`:null,o=pz(e);return k`<span class="issue-reviews">${t.map(({who:e,standing:[t,n,r],commit:i,stale:a,requested:o})=>{let s=`${r}${o?`, and requested again`:``}${a?`, on an earlier commit (${oz(i)})`:i?`, on the latest commit`:``}`;return k`<span class="${`review-mark is-${t}${a?` is-stale`:``}`}"><span class="review-glyph" role="img" aria-label="${s}" data-tooltip="${s}">${n}</span><span class="review-who">${e}</span></span>`})} ${dz(e)>0?k`<span class="review-more" data-tooltip="${`${fz(e)}, on GitHub`}">+${dz(e)}</span>`:j} ${a?k`<span class="review-threads" role="img" aria-label="${a}" data-tooltip="${a}">${nz}<span>${n}${r?`+`:``}</span>${mz(i)}</span>`:j} ${o===!1?k`<span class="review-unreviewed" data-tooltip="${t.length>0?`No review is on the latest commit`:`No reviews yet`}">Unreviewed</span>`:o===null?k`<span class="review-unreviewed" data-tooltip="No review read is on the latest commit; more on GitHub">Unreviewed?</span>`:j}</span>`}function gz(e,t,n){if(!e)return j;let r=k`<code>${oz(e)}</code>`;return k`<span class="review-on">on ${n?k`<a href="${`https://github.com/${n}/commit/${e}`}" target="_blank" rel="noopener noreferrer">${r}</a>`:r}${e===t?`, the latest commit`:`, an earlier commit`}</span>`}function _z(e,t){if(!e)return j;let{head:n,codex:r}=e,i=(e,[i,a,o],s)=>k`<li class="review-row">${Ly(r.login,`Codex`)} <span class="${`review-state is-${i}`}">${a}${s}: ${o.toLowerCase()}</span>${gz(e.commit,n,t)}</li>`,a=[...r?.code?[i(r.code,lz(r)??iz.done,`Code review`)]:[],...r?.security?[i(r.security,iz[r.security.status]??iz.done,`Security review`)]:[],...uz({...e,codex:null}).map(({who:e,standing:[r,i,a],commit:o,at:s,requested:c,workflow:l})=>k`<li class="review-row">${e} <span class="${`review-state is-${r}`}">${i}${a}${c?`, requested again`:``}</span>${l?k`<span class="review-on">by the workflow <code>${l}</code></span>`:j}${gz(o,n,t)}${s?k`<time datetime="${new Date(s).toISOString()}">${sz(s)}</time>`:j}</li>`)],{open:o,resolved:s,more:c,list:l=[]}=e.threads;return k`<section class="repo-item-section"><h4>Reviews</h4>${a.length>0?k`<ul>${a}</ul>`:k`<p class="repo-item-quiet">No reviews yet.</p>`} ${dz(e)>0?k`<p class="repo-item-quiet">And ${fz(e)}, on GitHub.</p>`:j} ${pz(e)===null?k`<p class="repo-item-quiet">No review read is on the latest commit, <code>${oz(n)}</code>; one of those on GitHub may be.</p>`:a.length>0&&!pz(e)?k`<p class="repo-item-quiet">No review is on the latest commit, <code>${oz(n)}</code>.</p>`:j}</section>${o>0||s>0?k`<section class="repo-item-section"><h4>Open threads</h4>${l.length>0?k`<ul>${l.map(e=>k`<li><a class="repo-item-row review-thread" href="${e.url??j}" target="_blank" rel="noopener noreferrer">${mz(e.severity)}<span class="repo-item-title">${e.title||`(no comment)`}</span> ${e.path?k`<code class="review-path">${e.path}${e.line?`:${e.line}`:``}</code>`:j} ${e.outdated?k`<span class="repo-item-quiet">outdated</span>`:j}</a></li>`)}</ul>`:k`<p class="repo-item-quiet">${c?`None open among those read.`:`None open.`}</p>`} ${s>0||c?k`<p class="repo-item-quiet">${s>0?`${cz(s,`thread`)} resolved`:``}${c?`${s>0?`; `:``}more on GitHub`:``}.</p>`:j}</section>`:j}`}var vz=js({items:new Map,changes:0}),yz=null,bz=()=>P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null,xz=(e,t,n)=>`${e}\0${t}\0${n}`,Sz=e=>Number.isSafeInteger(e?.readAt)&&e.readAt>0?e.readAt:Date.now();function Cz(e,t,n,r=null){let i=bz();i!==yz&&(vz.items.clear(),yz=i);let a=!1;for(let o of t){let t=xz(i,e,o.number),s=vz.items.get(t);if(s&&s.readAt>n)continue;let c=s&&(s.item.state===`open`?`open`:`closed`),l=!c||c===(o.state===`open`?`open`:`closed`)?s?.moved??null:{from:c,before:s.readAt};vz.items.set(t,{item:{...o,kind:o.kind??r??s?.item.kind??null},readAt:n,moved:l}),a=!0}a&&vz.changes++}var wz=(e,t)=>vz.items.get(xz(bz(),e,t))??null;function Tz(e,t){let n=xz(bz(),e,``);return vz.changes,[...vz.items].flatMap(([e,r])=>e.startsWith(n)&&r.item.kind===t?[r]:[])}var Ez=()=>vz.changes,Dz=e=>e.state===`open`?`open`:`closed`;function Oz(e,t){let n=Dz(e.item);if(e.readAt<=t||!e.moved)return n;if(e.moved.before>=t)return e.moved.from;let r=e.item.closedAt??e.item.mergedAt??null;return n===`closed`&&r!==null&&r>t?e.moved.from:n}var kz=3e5,Az=3e4,jz=8,Mz=20,Nz=new Map,Pz=new Set,Fz=null,Iz={issues:`open`,pulls:`open`};function Lz(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==Fz&&(Nz.clear(),Fz=e),Nz}var Rz=()=>{for(let e of Pz)e.requestUpdate()};PR(Rz);function zz(e){if(!Array.isArray(e?.items))throw Error(`The server answered with no list.`);return{items:e.items.filter(e=>Number.isSafeInteger(e?.number)&&typeof e.title==`string`&&Array.isArray(e.labels)),counts:{open:e.counts?.open??0,closed:e.counts?.closed??0},more:e.more===!0,after:e.more===!0?e.after:null,readAt:Sz(e)}}function Bz(e,t,n,r){let i=e=>e.state===`open`==(n===`open`),a=r.items.map(t=>wz(e,t.number)??{item:t,readAt:r.readAt}),o=a.map(({item:e})=>e),s=new Set(o.map(e=>e.number)),c=r.more?r.items.at(-1)?.updatedAt??0:null,l=Tz(e,t).filter(({item:e,readAt:t})=>t>r.readAt&&!s.has(e.number)&&i(e)&&(c===null||(e.updatedAt??0)>=c)).toSorted((e,t)=>(t.item.updatedAt??0)-(e.item.updatedAt??0));for(let{item:e}of l){let t=o.findIndex(t=>(t.updatedAt??0)<(e.updatedAt??0));o.splice(t===-1?o.length:t,0,e)}let u=r.countsAt??r.readAt,d=e=>{let t=Dz(e.item),n=e.item.closedAt??e.item.mergedAt??null;return(t===`closed`?n!==null&&n<=u:(e.item.updatedAt??1/0)<=u)?t:r.counted?.get(e.item.number)??Oz(e,u)},f=new Map(Tz(e,t).map(e=>[e.item.number,e]));for(let e of a)f.has(e.item.number)||f.set(e.item.number,e);let p=0;for(let e of f.values()){let t=d(e);t!==Dz(e.item)&&(p+=t===n?1:-1)}let m=n===`open`?`closed`:`open`;return{items:o,counts:{[n]:Math.max(0,r.counts[n]-p),[m]:Math.max(0,r.counts[m]+p)}}}function Vz(e,t,n){let r=new Map(Tz(e,t).map(e=>[e.item.number,Oz(e,n.countsAt)]));for(let e of n.items)r.has(e.number)||r.set(e.number,Dz(e));n.counted=r}function Hz(e,t,n){let r=Lz(),i=r.get(e);if(i&&Date.now()<i.until)return i;let a={status:`loading`,until:1/0};return r.set(e,a),t(null).then(t=>{if(r.get(e)!==a)return null;let i={status:`ready`,until:Date.now()+kz,...t,countsAt:t.readAt,loadingMore:!1,moreError:null};return n(i),r.set(e,i),null},t=>(r.get(e)!==a||(t?.name===`AbortError`?r.delete(e):r.set(e,{status:`error`,until:Date.now()+Az,error:t?.message||`The list could not be read.`})),null)).finally(Rz),a}function Uz(e,t,n,r){t.loadingMore||!t.more||(t.loadingMore=!0,t.moreError=null,t.until=Date.now()+kz,Rz(),n(t.after).then(n=>{if(Lz().get(e)!==t)return null;let i=new Set(t.items.map(e=>e.number));return t.items=[...t.items,...n.items.filter(e=>!i.has(e.number))],n.readAt>=t.countsAt&&(t.counts=n.counts,t.countsAt=n.readAt,r(t)),t.more=n.more,t.after=n.after,t.until=Date.now()+kz,null},e=>(e?.name!==`AbortError`&&(t.moreError=e?.message||`More could not be read.`),null)).finally(()=>{t.loadingMore=!1,Rz()}))}function Wz(e,t){let n=t.trim().toLowerCase().split(/\s+/u).filter(Boolean);return n.length===0?e:e.filter(e=>{let t=[`#${e.number}`,e.title,e.author??``,Iy(e.author)??``,e.head??``,...e.labels.map(e=>e.name)].join(`
173
+ `).toLowerCase();return n.every(e=>t.includes(e))})}var Gz=new Intl.NumberFormat(`en-US`,{notation:`compact`,maximumSignificantDigits:2}),Kz=e=>e<1e3?String(e):Gz.format(e);function qz(e){let t=e.labels.length+(e.moreLabels??0),n=e.labels.slice(0,t>jz?jz-1:jz),r=e=>k`<span class="issue-label" style="${E(e.color?{"--label":`#${e.color}`}:{})}" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</span>`,i=e=>k`${r(e[0])}${e.length>1?k`<span class="issue-labels-rest" style="${E({"--labels":String(e.length-1)})}">${i(e.slice(1))}</span>`:j}`;return k`${n.length>0?i(n):j}${t>n.length?k`<span class="issue-label is-more">+${t-n.length}</span>`:j}`}var Jz={git:`from git`,tarball:`a tarball not npm’s registry’s`,integrity:`locked with no integrity`};function Yz({versions:e,count:t,unread:n,unchecked:r,cut:i}){let a=t-Math.min(e.length,Mz);return[t>0?`${e.slice(0,Mz).map(e=>`${e.name}${e.version?`@${e.version}`:``} (${Jz[e.unsupported]})`).join(`, `)}${a>0?` and ${a.toLocaleString(`en-US`)} more`:``} can\u2019t be reviewed`:null,n.length>0||r>0||i?`not every lockfile it changes was read`:null].filter(Boolean).join(`; `)}function Xz(e){if(e.status!==`ready`)return j;let{versions:t,fresh:n,updated:r,more:i,toReview:a}=KR(e),o=e.review?XR(e).count:0,s=ZR(e);if(t.length===0&&o===0&&!s)return j;let c=i?`+`:``,l=t=>{let n=YR(t,e.review);return n===`unsupported`?`, can\u2019t be reviewed: ${Jz[t.unsupported]}`:n===`baseline`?`, needs no review`:t.reviewed?`, reviewed`:t.rejected?`, rejected`:t.patched&&n===`wanted`?`, patched, unreviewed`:n?`, ${t.reviews}/${e.review.required} reviews`:``},u=e=>`${e.name}@${e.version??`?`}${e.was?` (was ${e.was.join(`, `)}${l(e)})`:` (new${l(e)})`}`,d=t.length-Mz,f=[t.length>0?`New in its lockfiles: ${t.slice(0,Mz).map(u).join(`, `)}${d>0?` and ${d.toLocaleString(`en-US`)}${c} more`:i?` and more`:``}`:null,o>0?`${o.toLocaleString(`en-US`)} other ${o===1?`version`:`versions`} in its lockfiles unreviewed`:null,s?`Its review fails: ${Yz(s)}`:null].filter(Boolean).join(`. `),p=[n?`${n.toLocaleString(`en-US`)} new`:null,r?`${r.toLocaleString(`en-US`)} updated`:null].filter(Boolean).join(`, `),m=a&&o?`${a.toLocaleString(`en-US`)} + ${o.toLocaleString(`en-US`)} to review`:a?`${a.toLocaleString(`en-US`)} to review`:o?`${o.toLocaleString(`en-US`)} unreviewed`:``;return k`<span class="issue-deps" data-tooltip="${f}">${vP}<span class="issue-deps-names">${[...new Set(t.map(e=>e.name))].join(`, `)}</span> ${p?k`<span class="issue-deps-count">${p}${c}</span>`:j} ${s?k`<span class="issue-deps-review is-failed">${s.count>0?`${s.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:`lockfiles unread`}</span>`:e.review?m?k`<span class="issue-deps-review is-wanted">${m}</span>`:k`<span class="issue-deps-review is-passed" role="img" aria-label="Every version reviewed">${pP.success[1]}</span>`:j}</span>`}var Zz=class extends Rh{static properties={repository:{attribute:!1},repo:{attribute:!1},kind:{},_filter:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repository=null,this.repo=null,this.kind=`issues`,this._filter=``,this._moreButton=null}connectedCallback(){super.connectedCallback(),Pz.add(this)}disconnectedCallback(){super.disconnectedCallback(),Pz.delete(this),this._moreButton&&lN(this._moreButton),this._moreButton=null}updated(){let e=this.querySelector(`.issues-more > button`);this._moreButton&&this._moreButton!==e&&lN(this._moreButton),this._moreButton=e,e&&sN(e,t=>{t&&this.readNear(e)})}readNear(e){e===this._moreButton&&e.isConnected&&!e.disabled&&!this._filter.trim()&&!e.parentElement.querySelector(`[role=alert]`)&&e.click()}list(e){let{repoId:t}=this.repository,n=this.kind,r=`${t}\0${n}\0${e}`,i=r=>vb(t,n,{state:e,after:r}).then(zz).then(e=>(Cz(t,e.items,e.readAt,n),e)),a=e=>Vz(t,n,e),o=Hz(r,i,a);return{key:r,entry:o,more:()=>Uz(r,o,i,a)}}pick(e){Iz[this.kind]=e,Rz()}render(){if(!this.repository)return j;let e=Iz[this.kind],{key:t,entry:n,more:r}=this.list(e),i=n.status===`ready`,a=this.kind===`pulls`?`pull requests`:`issues`,o=e===`open`?`closed`:`open`,s=Lz().get(`${this.repository.repoId}\0${this.kind}\0${o}`),c=i?Bz(this.repository.repoId,this.kind,e,n):null,l=c?c.counts:s?.status===`ready`?Bz(this.repository.repoId,this.kind,o,s).counts:null,u=e=>l?k`<span class="n">${l[e].toLocaleString(`en-US`)}</span>`:j,d=c?Wz(c.items,this._filter):[];return k`<div class="history-bar issues-bar">${lM(this.kind)}<div class="history-modes" role="group" aria-label="${this.kind===`pulls`?`Pull requests`:`Issues`}"><button type="button" aria-pressed="${String(e===`open`)}" @click="${()=>this.pick(`open`)}">Open${u(`open`)}</button> <button type="button" aria-pressed="${String(e===`closed`)}" @click="${()=>this.pick(`closed`)}">Closed${u(`closed`)}</button></div><input class="issues-filter" type="search" placeholder="Filter" aria-label="${`Filter the ${a} read`}" .value="${this._filter}" @input="${e=>{this._filter=e.target.value}}"> ${c&&this._filter.trim()?k`<span class="history-summary">${d.length} of ${c.items.length} read</span>`:j}</div>${c?this.renderTiles(n,c.items,d,r,`${e} ${a}`):n.status===`error`?k`<div class="bundles-slide-placeholder is-error"><p role="alert">${n.error}</p><button type="button" @click="${()=>{Lz().delete(t),Rz()}}">Retry</button></div>`:k`<div class="bundles-slide-placeholder" role="status">Reading the ${a}…</div>`}`}renderTiles(e,t,n,r,i){if(t.length===0)return k`<div class="bundles-slide-placeholder">No ${i}.</div>`;let a=this.repo??this.repository.repo,o=this.kind===`pulls`?`pull`:`issues`;return k`<div class="issues-scroll">${n.length===0?k`<p class="history-note">None of the ${i} read match.</p>`:k`<ol class="issues-grid" aria-label="${i}">${n.map(e=>{let[t,n]=yP(this.kind,e),r=this.renderTile(e,t,n);return k`<li class="${T({"issue-tile":!0,[`is-${t}`]:!0})}">${a?k`<a class="issue-body" href="${`https://github.com/${a}/${o}/${e.number}`}" target="_blank" rel="noopener noreferrer" @click="${t=>this.openTile(t,e)}">${r}</a>`:k`<div class="issue-body" @click="${t=>this.openTile(t,e)}">${r}</div>`}</li>`})}</ol>`} ${e.more||e.moreError?k`<div class="history-more issues-more">${e.moreError?k`<span role="alert">${e.moreError}</span>`:j} <button type="button" ?disabled="${e.loadingMore}" @click="${r}">${e.loadingMore?`Reading…`:`More`}</button></div>`:j}</div>`}openTile(e,t){EP(e)&&(e.preventDefault(),Xe({repository:{...this.repository,repo:this.repo??this.repository.repo},target:{number:t.number,preview:{...t,kind:this.kind}}}))}renderTile(e,t,n){let r=this.kind===`pulls`,i=r&&e.state===`open`&&LR(e)?GR(this.repository.repoId,e.number,!0):null,a=e.updatedAt==null?null:new Date(e.updatedAt),o=r&&e.checks?pP[e.checks]:null,s=r&&e.state===`open`&&e.review?mP[e.review]:null,c=e.comments>0?`${e.comments.toLocaleString(`en-US`)} comment${e.comments===1?``:`s`}`:null,l=(t,[n,r])=>k`<span class="${`issue-${t} is-${e[t]}`}" role="img" aria-label="${n}" data-tooltip="${n}">${r}</span>`;return k`<span class="issue-rail"><span class="issue-state" role="img" aria-label="${n}">${dP[this.kind][t]}</span> ${r?k`<span class="issue-marks">${s?l(`review`,s):j}${o?l(`checks`,o):j}</span>`:j} ${c?k`<span class="issue-comments" role="img" aria-label="${c}" data-tooltip="${c}">${fP}<span>${Kz(e.comments)}</span></span>`:j} </span><span class="issue-lines"><span class="issue-name">${e.title||`(no title)`}</span> <span class="issue-meta"><span class="issue-number">#${e.number}</span> <span class="issue-author">${Ly(e.author,e.author??`ghost`)}</span> ${a?k`<time datetime="${a.toISOString()}">${BN(e.updatedAt)}</time>`:j} </span>${e.labels.length>0||e.moreLabels>0?k`<span class="issue-labels">${qz(e)}</span>`:j} ${r&&e.head?k`<span class="issue-branch"><code>${e.head}</code>${e.base?k`<span aria-hidden="true">→</span><code>${e.base}</code>`:j} <span class="issue-diff"><span class="is-added">+${e.additions.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${e.deletions.toLocaleString(`en-US`)}</span></span></span>`:j} ${r&&e.state===`open`?hz(e.reviews):j} ${i?Xz(i):j}</span>`}};customElements.get(`repository-issues`)||customElements.define(`repository-issues`,Zz);var Qz=k`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" aria-hidden="true" viewBox="0 75 405 400"><path fill="currentColor" d="m62 447.6 65.8-68.2c2.2-.9 22.7 12 28.2 14.1C295.4 446.8 399.2 263.6 285.1 172 184.3 91.1 41.1 191.5 82 315.6c3.9 12 10.8 21.7 15.4 33.2l-47.1 47C-32 294.9 7.4 142.3 126.3 91.3 241.3 42 374.4 112 398 234.5c29.4 152.7-116.5 274.9-262.7 223.6-15.9-5.6-17-10.6-34.9-10.6H62Z"/><path fill="#e02129" d="M190.1 181.8c128.8-15 141.2 170.8 26 182.6-126.4 12.9-137.9-169.5-26-182.6M209 236c-7.4 5.6-10.8-5.4-13-7.7-9.6-10.3-19.4-.8-14 1.7s9.5-.3 10.1 5.6-9 9.9-7.9 16.4c13.2-5.9 25.9-6.4 39.1 0 3.2-7.1-7.9-12.1-7.8-14.8.1-9.4 11.6-6.2 12.6-7.2 4.3-4.3-8.9-11.7-17.1-.6-1.3 1.8-1.4 6.3-1.9 6.6zm-7.6 14.3c-10.1-1.5-19.3 10-25 11.8s-23.2 1.5-14.9 16.3c3.9.8 5.1-13.1 13.3-9.4 1.9 13.1-2.8 8.7-9 12.2-10 5.7-8.1 20.2-1.3 12.8 2.7-3 1.5-9.6 10.3-7.7 1.3 15.9-.8 8.4-7.9 11.7-11.5 5.3-9 20.2-1.7 14.8s0-10.8 8.6-9.3c1 .2 5.8 10.8 12.4 14.5 13.7 7.9 35 5.5 44.8-7.6s1.6-6.5 1.8-6.7c4-3.1 11.3 4.6 11 9.2l5.5-1.5c2.2-3.1-1.6-8.2-3.9-10.3-7.6-6.8-13.5.9-11-14.8 9-2.6 8.4 8.7 9.4 9.4 6 4.2 8.4-7.8 1.5-13.2-7.4-5.8-13.2 3.6-10.9-13.4 7.4-1.3 8.3 3.2 9.4 9.4 8.3 1.4 6.9-7.2 3.1-11.8-4.5-5.5-10.5-2.6-15.7-4.7-1.3-.5-25.1-18.8-25.1-9.4v52.5c-1.5.6-4.7-1.4-4.7-2.3z"/><ellipse cx="206.6" cy="270" fill="#e02129" rx="74.6" ry="66.5"/><path fill="#fff" d="M200.6 250v55.5s.4 1 .5 1.1c1.1 1.8 3.7 1.8 4.9 0 .1-.2.5-1.1.5-1.3v-55.4a34 34 0 0 1 17.2 5.8c3.1 2.2 5.6 5.1 7.7 8.3 3.8.1 7.6-.5 11.3.8 5.2 1.8 9.6 7.5 9.6 13.1 0 4.2-5.8 5.3-7.3 1.5-.7-1.8-.3-3.2-1.7-5-.8-1-3-2.7-4.3-2.7h-4.5c1.1 4.1.8 8.4.8 12.6.1.1 1.7-.1 2-.1 7.3 0 13.9 6 14.4 13.5.3 5.3-6.3 6-7.5 1.8-.6-2.1-.3-3.5-2-5.3-.8-.9-2.9-2.2-4.2-2.2h-3c.2 1 .2 2.2.1 3.2 0 2.1-.4 4.3-.9 6.4-.2.9-.5 1.8-.7 2.6 5.5-.7 10.5.7 14.1 5 1.7 2 3.4 5.6 3.6 8.3.5 5.4-6.6 6.7-7.8 1.2-.5-2.3-.7-3.8-2.7-5.4-3.1-2.5-7-1.2-10.7-1.4-1.9 3.2-4.5 6.1-7.5 8.4-14.4 10.8-36.9 7.2-46.2-8.4-.4-.2-2.4 0-2.9 0-3.2 0-6-.6-8.4 2.1-1.6 1.8-1.5 3.2-2.1 5.3-1.2 4.5-7.9 3.6-7.7-1.4.3-5.5 4.9-11.3 10.1-13 1.7-.5 5.7-1 7.4-.6.1 0 .1.1.1-.1 0-1.1-.7-2.8-.9-4.1-.4-2.7-.6-5.4-.4-8.1-2.8-.1-5.3.2-7.2 2.5-1.4 1.7-1.3 2.9-1.8 4.9-1.1 4.4-7.9 3.8-7.6-1.5.2-4.1 2.9-8.7 6.3-11 3-2.1 6.5-2.7 10.1-2.6v-5.8c.2-2.2.3-4.5.9-6.6h-4.5c-1.8 0-4.2 2.2-4.9 3.7-1.1 2.3-.4 6-4.1 6.3-3.4.3-4.5-2.3-4.1-5.2.9-6.1 5.1-11 11.3-12.2 3.1-.6 6.2 0 9.3-.4 2.2-3.1 4.8-6 7.9-8.3 4.9-3.5 10.9-5.1 16.8-5.8Z"/><path fill="#fff" d="M197.3 235.1c4.1-.7 8.3-.9 12.4 0 1.1-7.6 7-14.6 15.2-14 3.3.2 5.7 3.1 3.6 6.1-1.5 2-4.1 1-6.2 1.7s-3.7 2.5-4.5 4.4c-.3.7-1.2 3.8-.9 4.3 0 .1 1.3 1 1.6 1.2 3.4 3.1 6.2 7.4 6.6 12 0 .6-.1 1.2.1 1.8-.1.1-2.6-1.5-2.9-1.8-10.5-6-27.5-5.7-37.9.4-.2.1-2.3 1.6-2.4 1.5-.2-5.5 2.8-10.5 6.8-14 .3-.3 1.3-.9 1.5-1.1.1-.1.1-.2.1-.3 0-.5-.3-1.8-.5-2.3-.9-3.3-3-6-6.6-6.3h-2.2c-4.2-.4-4.5-6.5-.2-7.4 2.3-.5 5.2 0 7.3 1 5.2 2.2 8.5 7.4 9.1 12.9Z"/></svg>`,$z=new Map([[`registry`,{label:`Source: npm registry`,icon:Ct}],[`repository`,{label:`Source: GitHub repository`,icon:O(aa)}],[`osv`,{label:`Source: OSV`,icon:Qz}]]);function eB(e){return e===`unknown`?`Unrated`:e.charAt(0).toUpperCase()+e.slice(1)}function tB(e){if(typeof e!=`string`)return null;let t=/\/(GHSA-[a-z0-9-]+)(?:[/?#]|$)/iu.exec(e);return t?t[1]:null}var nB=k`<svg class="external-link-icon" viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13L13 3"/><path d="M5 3h8v8"/></svg>`;function rB(e){let t=/^CWE-(\d+)$/u.exec(e);if(!t)return k`<span>${e}</span>`;let n=`https://cwe.mitre.org/data/definitions/${t[1]}.html`;return k`<a class="bundle-advisory-cwe" href="${n}" target="_blank" rel="noopener noreferrer">${e}</a>`}function iB(e,t){return k`<div class="bundle-advisory-rail"><span class="${`bundle-advisory-severity sev-${e}`}">${eB(e)}</span> ${typeof t==`number`?k`<span class="bundle-advisory-cvss-score">CVSS <span class="mono">${t.toFixed(1)}</span></span>`:j}</div>`}function aB(e){let t=typeof e.url==`string`&&/^https?:\/\//iu.test(e.url)?e.url:null,n=e.ghsa??tB(t)??(typeof e.id==`string`?e.id:null),r=$z.get(e.source);return!r&&!(n&&t)?j:k`<span class="bundle-advisory-reference">${r?k`<span class="bundle-advisory-source" role="img" aria-label="${r.label}">${r.icon}</span>`:j} ${n&&t?k`<a class="bundle-advisory-ghsa" href="${t}" target="_blank" rel="noopener noreferrer">${n}${nB}</a>`:j}</span>`}function oB(e){let t=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return t.length>0?k`<span class="bundle-advisory-cwes">${t.map((e,t)=>k`${t===0?``:`, `}${rB(e)}`)}</span>`:j}function sB(e,t=null){let n=typeof e.cvss?.vectorString==`string`?e.cvss.vectorString:``,r=typeof e.vulnerable_versions==`string`?e.vulnerable_versions:null,i=Array.isArray(e.versions)?e.versions.filter(e=>typeof e==`string`):[];return k`<li class="bundle-advisory-row">${iB(e.severity,e.cvss?.score)}<div class="bundle-advisory-body"><div class="bundle-advisory-header">${t&&typeof e.details==`string`&&e.details.trim()?k`<button type="button" class="bundle-advisory-title" aria-haspopup="dialog" @click="${()=>t(e)}">${e.title}</button>`:k`<span class="bundle-advisory-title">${e.title}</span>`} ${aB(e)}</div><div class="bundle-advisory-subrow"><div class="bundle-advisory-meta">${e.informational?k`<span>${e.informational}</span>`:j} ${r?k`<span>Affected <span class="mono">${r}</span></span>`:j} ${i.length>0?k`<span>Matches <span class="mono">${i.join(`, `)}</span></span>`:j} ${oB(e.cwe)}</div>${n?k`<div class="bundle-advisory-cvss-vector mono">${n}</div>`:j}</div></div></li>`}var cB=(e,t)=>kO(e,t).runsCode,lB=(e,t=e.length>=jt)=>e.length===1?`line ${e[0]}`:`lines ${e.slice(0,5).join(`, `)}${e.length>5?` and ${(e.length-5).toLocaleString(`en`)}${t?`+`:``} more`:``}`,uB=/^[\w$.]+$/u,dB=(e,t=null)=>[...Map.groupBy([...e],([e])=>{let{name:t,tag:n}=ke.get(e);return t&&uB.test(t)?t:n})].map(([e,n])=>`${e} (${lB([...new Set(n.flatMap(([,e])=>e))].toSorted((e,t)=>e-t),n.some(([,e])=>e.length>=jt))}${n.some(([e])=>t?.has(e))?`, new`:``})`).join(`, `),fB=e=>{let t=new Set(e.flat());return t.size===1?[...t][0]:void 0},pB=(e,t)=>t===void 0?{path:j,line:j}:{path:e,line:t},mB=(e,t=null)=>[...e].map(([e,n])=>`${ke.get(e).name} (${lB(n)}${t?.has(e)?`, new`:``})`).join(`, `);function hB(e,t,n){return e?[...Map.groupBy(e,([e])=>ke.get(e).tag)].map(([e,r])=>{let{note:i,mark:a}=ke.get(r[0][0]),o=r.map(([e,t])=>[ke.get(e).name,lB(t)]),s=t===void 0?[]:r.filter(([e])=>!t?.has(e)).map(([e])=>ke.get(e).name),c=s.length===0?null:s.length===r.length?`New in this version`:`New in this version: ${s.join(`, `)}`,l=pB(n,n===void 0?void 0:fB(r.map(([,e])=>e)));return k`<span data-bundle-view-source="${l.path}" data-bundle-view-line="${l.line}" class="${`npm-runs-code${a?` is-${a}`:``}`}" data-tooltip="${[`${i}: ${o.map(e=>e.join(`, `)).join(`; `)}`,c].filter(Boolean).join(` · `)}" .tooltipContent="${k`<div class="compare-tip"><div class="compare-tip-head">${i}</div><div class="compare-tip-rows is-files">${o.map(([e,t])=>k`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">${t}</span>`)}</div>${c?k`<div class="compare-tip-notice">${c}</div>`:j}</div>`}">${e}</span>`}):j}var gB=(e,t)=>kO(e,t).exfiltration,_B=e=>[...Ee].filter(([t])=>e.some(e=>e.has(t))).map(([,{name:e}])=>e).join(`, `),vB=(e,t)=>[...e].map(([e,n])=>`${Ee.get(e).name} (${lB(n)}${t!==void 0&&!t?.has(e)?`, new`:``})`).join(`, `),yB=new Map([[`Exfiltration`,`Names a host that catches what is sent to it, as malicious packages send what they take to`],[`Remote`,`Names a service malicious packages send what they take to, or fetch what they run from, though code may well use it`],[`IP lookup`,`Looks up the machine's public address, as malicious packages do before sending what they take`]]);function bB(e,t,n){return e?De(e).map(([e,r])=>{let i=pB(n,n===void 0?void 0:fB([...r.values()]));return k`<span data-bundle-view-source="${i.path}" data-bundle-view-line="${i.line}" class="${`npm-exfiltration is-${Oe(e,r,t)}`}" data-tooltip="${`${yB.get(e)}: ${vB(r,t)}`}">${e}</span>`}):j}var xB=e=>e.toLowerCase().replaceAll(` `,`-`),SB=({id:e,aliases:t,cwe:n,title:r})=>[e,...t??[]].some(e=>(e??``).startsWith(`MAL-`))||(n??[]).includes(`CWE-506`)||/\bmalware\b/iu.test(r??``),CB={accept:`Accept`,"accept-with-nits":`Accept with nits (non-blocking)`,"request-changes":`Request changes`,reject:`Reject`};function wB(e,t){return[e,t].every(e=>e===void 0||typeof e==`string`)&&[e,t].some(e=>typeof e==`string`)}function TB(e,t,n=[]){let r=Object.keys(CB),i=new Set(n??[]),a=e.filter(e=>n!==null&&!i.has(e.file)&&r.includes(e.status)),o=r.findLast(e=>a.some(t=>t.status===e))??`accept`;if(t===null)return{coverage:null,checkedFiles:null,totalFiles:null,verdictLimit:o};let s=new Set(a.map(e=>e.file)),c=t.filter(e=>s.has(e)).length;return{coverage:c===t.length?`full`:`partial`,checkedFiles:c,totalFiles:t.length,verdictLimit:o}}function EB(e,t=`accept`){let n=Object.keys(CB);return n.slice(Math.max(n.indexOf(t),n.indexOf(TB(e,null).verdictLimit)))}function DB({npm:{version:e,manifest:t={}}}){return(t.description===`security holding package`||t.github?.github?.toLowerCase()===`npm/security-holder`)&&(t.publisher===`npm`||/-security(?:\.\d+)?$/u.test(e))}function OB(e,t,n,r){if(!e)return`accept`;let i=t?.versions?.indexOf(e.version)??-1,a=i<0?[]:t.advisories.filter(e=>e.affected.includes(i)),o=e.private?[]:n?.alerts??[];return r?.findings?.some(e=>e.id===`malware`)||DB({npm:e})||o.some(e=>e.type===`malware`)||a.some(e=>SB(e)||e.id?.startsWith(`MAL-`)||/^Malicious package\b/iu.test(e.title??``))?`reject`:a.some(e=>e.severity===`critical`)||o.some(e=>e.type===`criticalCVE`)?`request-changes`:`accept`}function kB(e,t,n=[]){return TB(e,t,n).coverage===`partial`&&(n===null||n.includes(`package.json`)||!e.some(e=>e.file===`package.json`&&Object.keys(CB).includes(e.status)))}function AB(e){return e.replaceAll(/\r\n?/gu,`
174
+ `).split(/(?:^|\n)[\t ]*\*[\t ]+/u).map((e,t)=>({text:e.trim(),bullet:t>0})).filter(e=>e.text)}var jB=[`critical`,`high`,`moderate`,`low`,`unknown`],MB=e=>jB.includes(e.severity)?e.severity:`unknown`,NB=[[`affects`,e=>`Affects ${e}`],[`later`,()=>`Later versions`],[`fixed`,e=>`Fixed in ${e}`]];function PB(e){return dj(`stats`,e,()=>Eb(e),e=>({downloads:e.downloads??null,github:e.github??null}))}function FB(e){return dj(`advisories`,e,()=>Db(e),e=>({versions:e.versions??[],advisories:e.advisories??[],repository:e.repository!==!1,keptAt:e.keptAt??null}))}function IB(e){let{name:t,version:n}=e.npm,r=(e,t)=>k`<a class="npm-package-link" href="${e}" target="_blank" rel="noopener noreferrer">${t}${nB}</a>`;return k`<span class="npm-package-links">${r(`https://www.npmjs.com/package/${t}/v/${encodeURIComponent(n)}`,`npmjs`)} ${e.npm.private?j:r(LB(e),`socket.dev`)}</span>`}var LB=e=>`https://socket.dev/npm/package/${e.npm.name}/overview/${encodeURIComponent(e.npm.version)}`;function RB(e){let{name:t,version:n}=e.npm;if(e.npm.private)return null;let r=dj(`socket`,`${t}@${n}`,()=>Ab(t,n),e=>({socket:e.socket??null}));return r.status===`ready`?r.socket:null}var zB=[[`supplyChain`,`Supply chain`,85,85],[`vulnerability`,`Vulnerability`,85,85],[`quality`,`Quality`,70,80],[`maintenance`,`Maintenance`,70,80],[`license`,`License`,80,80]],BB=50,VB=(e,t)=>e===100?`is-good is-max`:e>=t?`is-good`:e>=50?`is-fair`:`is-poor`,HB=e=>k`<svg class="npm-socket-gauge" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6" pathLength="100"></circle><circle class="npm-socket-gauge-fill" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="${`${e} 100`}"></circle></svg>`;function UB(e){let t=RB(e)?.scores;return t?k`<ul class="npm-extensions npm-socket-scores" aria-label="Socket scores">${zB.map(([n,r,,i])=>{let a=Math.round(t[n]*100);return k`<li><a class="${`npm-extension npm-socket-score ${VB(a,i)}`}" href="${LB(e)}" target="_blank" rel="noopener noreferrer">${HB(a)}<span>${r}</span><span class="npm-extension-count">${a}</span></a></li>`})}</ul>`:j}var WB=new Map([[`critical`,`critical`],[`high`,`high`],[`middle`,`moderate`],[`low`,`low`]]),GB=e=>e.replaceAll(/(?<=[a-z])(?=[A-Z])/gu,` `).toLowerCase().replace(/^./u,e=>e.toUpperCase()),KB=new Map,qB=new WeakMap;function JB(e){let t=e?RB({npm:e}):null;return t?(qB.has(t)||qB.set(t,Map.groupBy(t.alerts.filter(e=>e.file),e=>e.file)),qB.get(t)):KB}var YB=(e=[])=>e.map(e=>{let t=WB.get(e.severity)??`low`;return k`<span class="${`npm-socket-file-alert sev-${t}`}" data-tooltip="${`Socket: ${GB(e.type)}, ${t}${e.note?` \xB7 ${e.note}`:``}`}">${GB(e.type)}</span>`});function XB(e,t){return OB(e.npm,FB(e.npm.name),RB(e),WA(e.npm,t?t.npm?.version??`(empty)`:null))}function ZB(e,t){let n=DB(e),r=n&&t!==null&&[...t].every(jH)?[]:RB(e)?.alerts??[];if(!n&&r.length===0)return j;let i=[...t??[]].find(e=>/^readme(?:\.md)?$/iu.test(e));return k`<div class="npm-alerts">${n?k`<p class="npm-alert" role="note"><strong>Taken down by npm.</strong> npm's security team removed this package's versions, as it does for malicious code, and serves this placeholder in their place${i?k`: ${Xj(i,t,`its readme`)}`:``}.</p>`:j} ${r.length>0?QB(e,r,t):j}</div>`}function QB(e,t,n){return k`<div class="npm-alert npm-socket-alerts" role="note"><span class="npm-socket-alerts-head"><strong>Socket raises ${t.length===1?`an alert`:`${t.length} alerts`} on this version</strong> <a class="npm-package-link" href="${LB(e)}" target="_blank" rel="noopener noreferrer">socket.dev${nB}</a></span><ul>${t.map(e=>{let t=WB.get(e.severity)??`info`;return k`<li><span class="${`bundle-advisory-severity sev-${t}`}">${t}</span> <span class="npm-socket-alert-type">${GB(e.type)}</span> ${e.file?k`<span class="npm-socket-alert-file">in ${Xj(e.file,n)}</span>`:j} ${e.note?k`<p class="npm-socket-alert-note">${e.note}</p>`:j}</li>`})}</ul></div>`}function $B(e,t,n=j){let r=PB(e.npm.name),i=vH(WA(e.npm)?.findings.find(({id:e})=>e===`popularity`));return k`<div class="npm-figures"><npm-downloads-chart role="region" aria-label="Downloads" .downloads="${r.downloads}" .status="${r.status}" .known="${i}"></npm-downloads-chart><div class="npm-figures-actions">${IB(e)}${t}</div>${n}</div>`}var eV=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="m8 1.75 1.9 3.9 4.3.6-3.1 3 .75 4.25L8 11.5l-3.85 2 .75-4.25-3.1-3 4.3-.6Z"/></svg>`,tV=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="6"/><circle cx="8" cy="8" r="1.25" fill="currentColor"/></svg>`,nV=O(sa),rV=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><circle cx="4.5" cy="3.25" r="1.5"/><circle cx="11.5" cy="3.25" r="1.5"/><circle cx="8" cy="12.75" r="1.5"/><path d="M4.5 4.75v.75a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2v-.75M8 7.5v3.75"/></svg>`;function iV(e){if(!e.npm.manifest.github?.github)return j;let t=PB(e.npm.name),n=t.status===`ready`?t.github:null;if(!n)return j;let r=(e,t,r,i)=>k`<a class="bundle-origin-link npm-github-figure" href="${`https://github.com/${Ne(n.repo)}/${i}`}" data-tooltip="${`${t.toLocaleString(`en`)} ${r}`}" target="_blank" rel="noopener noreferrer">${e}<span>${uA.format(t)}</span></a>`,i=typeof n.openPulls==`number`?n.openPulls:null,a=i===null?n.openIssues:Math.max(n.openIssues-i,0);return k`${r(eV,n.stars,n.stars===1?`star`:`stars`,`stargazers`)} ${r(rV,n.forks,n.forks===1?`fork`:`forks`,`forks`)} ${r(tV,a,i===null?`open issues and pull requests`:a===1?`open issue`:`open issues`,`issues`)} ${i===null?j:r(nV,i,i===1?`open pull request`:`open pull requests`,`pulls`)} ${n.archived?k`<span class="npm-github-archived">Archived</span>`:j}`}var aV=({name:e,version:t,private:n,manifest:r})=>n||!r.provenance?null:dj(`provenance`,`${e}@${t}`,()=>jb(e,t),e=>({provenance:e.provenance??null}));function oV(e){let t=aV(e);return t!==null&&(t.status===`loading`||!!t.provenance?.builder)}function sV(e,t){return e?/^https:\/\/github\.com\/actions\/runner(?:\/github-hosted)?$/u.test(e)?`GitHub Actions`:e.startsWith(`https://github.com/actions/runner/`)?`GitHub Actions, self-hosted runner`:e.startsWith(`https://gitlab.com/`)||e.includes(`/-/runners/`)?t===`self-hosted`?`GitLab CI, self-hosted runner`:`GitLab CI`:new URL(e).host:null}var cV=(e,t)=>t?t===`github-hosted`||t===`gitlab-hosted`:e===`GitHub Actions`;function lV(e){if(e.npm.private)return j;let t=aV(e.npm);if(!t)return k`<span class="npm-commit-missing">None</span>`;if(t.status===`loading`)return k`<span class="npm-commit-missing">Checking…</span>`;if(t.status===`error`)return k`<span class="npm-commit-missing">Couldn't be read</span>`;if(!t.provenance)return k`<span class="npm-provenance-warning" data-tooltip="npm lists provenance for this version, but no statement naming its tarball could be read">Listed, but none for this tarball</span>`;let{manifest:n}=e.npm,{repository:r,commit:i,workflow:a,ref:o,builder:s,run:c,logIndex:l,runner:u}=t.provenance,d=(e,t,n=j)=>k`<a class="bundle-origin-link" href="${e}" data-tooltip="${n}" target="_blank" rel="noopener noreferrer"><span>${t}</span></a>`,f=/^https:\/\/github\.com\/([^/]+\/[^/]+)$/u.exec(r)?.[1]??null,p=sV(s,u),m=p?.startsWith(`GitLab CI`),h=f??r.replace(/^https:\/\//u,``),g=n.github?.github??(n.gitlab?`gitlab.com/${n.gitlab}`:null),_=g&&g.toLowerCase()!==h.toLowerCase(),v=a?.split(`/`).at(-1),y=[a?f&&i?d(`${r}/blob/${i}/${a.split(`/`).map(encodeURIComponent).join(`/`)}`,v,a===v?j:a):k`<span class="mono" data-tooltip="${a===v?j:a}">${v}</span>`:j,c?d(c,`Run`):j,l===null?j:d(`https://search.sigstore.dev/?logIndex=${l}`,`Transparency log`)].filter(e=>e!==j);return k`<span class="npm-provenance"><span class="npm-provenance-line">${p?k`<span class="${cV(p,u)&&!_?`npm-provenance-builder is-hosted`:`npm-provenance-builder`}">${p}</span>`:j} <span class="npm-provenance-sep">from</span> ${i?d(f?`${r}/commit/${i}`:m?`${r}/-/commit/${i}`:r,`${h}@${i.slice(0,7)}`,`${r} at ${i}${o?` (${o})`:``}`):d(r,h)} ${_?k`<span class="npm-provenance-warning" data-tooltip="${`The package names ${g}`}">Not the repository it names</span>`:j}</span> ${y.length>0?k`<span class="npm-provenance-line is-how">${y.map((e,t)=>t===0?e:k`<span class="npm-provenance-sep" aria-hidden="true">·</span>${e}`)}</span>`:j}</span>`}function uV(e,t,n){let r=e.affected.map(e=>t[e]).filter(Boolean);return r.includes(n)?`affects`:r.length>0&&r.every(e=>i(e,n)<0)?`fixed`:`later`}function dV(){let e=P.managedSession?.id;return()=>P.managedSession?.id===e}function fV(e,t){return sB({...e,title:e.title??e.id,severity:MB(e),cvss:{score:e.cvss},vulnerable_versions:e.range},({title:e,severity:n,details:r})=>ge({heading:e,severity:n,markdown:r,isCurrent:t}))}function pV(e){let{name:t,version:n}=e.npm,r=FB(t),i=dV(),a=r.status===`ready`,o=a?r.advisories:[],s=o.map(e=>uV(e,r.versions,n)),c=NB.map(([e,t])=>({status:e,heading:t(n),advisories:o.filter((t,n)=>s[n]===e)})).filter(e=>e.advisories.length>0),l=s.filter(e=>e===`affects`).length,u=a&&r.keptAt?k`<p class="npm-advisories-note">GitHub's repository advisories are as of ${wH(Date.now()-Date.parse(r.keptAt))} ago: they couldn't be checked now.</p>`:a&&!r.repository?k`<p class="npm-advisories-note">GitHub's repository advisories couldn't be checked; npm's are shown.</p>`:j,d=r.status===`loading`?k`<p class="bundles-overview-col-empty">Checking advisories…</p>`:r.status===`error`?k`<p class="bundles-overview-col-empty">Couldn't check advisories.</p>`:c.length===0?k`${u}<p class="bundles-overview-col-empty">No advisories for any version.</p>`:k`${u}${c.map(e=>k`<section class="${`npm-advisory-group is-${e.status}`}"><h4 class="npm-advisory-group-head">${e.heading} <span class="bundles-overview-col-count">${e.advisories.length}</span></h4><ul class="bundle-advisories-rows">${e.advisories.map(e=>fV(e,i))}</ul></section>`)}`;return qk({title:`Advisories`,count:a?o.length:`…`,body:d,className:`npm-advisories-col`,extra:a?k`<span class="${`npm-advisories-active${l>0?` is-active`:``}`}">${l} active</span>`:j})}var mV=[...be].filter(([,{mark:e}])=>e!==null).map(([e])=>e),hV=[...be].filter(([,{mark:e}])=>e===null).map(([e])=>e),gV=[null,`notice`,`warn`];function _V(e){let t=new Map,n=new Map,r=0;for(let i of e){let e=_e(i);for(let r of e){t.set(r,(t.get(r)??0)+1);let e=ve(i,r);gV.indexOf(e)>gV.indexOf(n.get(r)??null)&&n.set(r,e)}e.some(e=>be.get(e).mark)&&r++}return{counts:t,marks:n,unreadable:r}}var vV=new WeakMap;function yV(e){let t=e.npm?DO(e):e,n=vV.get(e);if(n?.of!==t){let{sources:r,sourcesContent:i}=e.json,a=new Map(r.map((t,n)=>[t,jO(e,t,i[n])]).filter(([,e])=>e)),o=new Set(r.filter((e,t)=>typeof i[t]!=`string`)),{counts:s,marks:c,unreadable:l}=_V(a.values()),u=Xt(e),d=Ht(e),f={files:0,lines:0,unpacked:0};for(let e of r.filter(e=>!jH(e)))o.has(e)||f.files++,f.lines+=u.get(e)??0,f.unpacked+=d.get(e)??0;n={of:t,paths:new Set(r),byPath:a,counts:s,marks:c,unreadable:l,sizes:d,extensions:new Map(r.map(e=>[e,OH(e)])),binaries:new Set([...o].toSorted((e,t)=>e.localeCompare(t))),types:MH(r,d,u),content:f},vV.set(e,n)}return n}var bV={key:null,chip:null},xV=e=>`${e.npm.name}@${e.npm.version}`,SV=e=>bV.key===xV(e)?bV.chip:null;function CV(e){let t=SV(e);return t&&{label:t.label,keeps:t.keeps,clear:()=>{bV={key:null,chip:null},Z()}}}function wV(e,t,n,r,{classes:i=``,tooltip:a=j}={}){let o=SV(e)?.id===t.id;return k`<li><button type="button" class="${`npm-extension npm-category${i}`}" aria-pressed="${String(o)}" data-tooltip="${a}" @click="${()=>{bV={key:xV(e),chip:o?null:t},Z()}}">${n}<span class="npm-extension-count">${r.toLocaleString(`en`)}</span></button></li>`}function TV(e,t,n){let{name:r}=be.get(n),{byPath:i,counts:a,marks:o}=yV(t),s=o.get(n);return wV(e,{id:`category:${n}`,label:r,keeps:e=>i.has(e)&&_e(i.get(e)).includes(n)},k`<span>${r}</span>`,a.get(n),{classes:s?` is-${s}`:``})}function EV({counts:e,marks:t,unreadable:n},r,i,a){let o=mV.filter(t=>e.has(t));if(o.length===0)return j;let s=o.some(e=>t.get(e)===`warn`);return k`<div class="${`npm-readability-warning${s?` is-warn`:``}`}" role="note"><span class="npm-readability-warning-text"><strong>${n.toLocaleString(`en`)} of ${r.toLocaleString(`en`)} ${i}</strong> can be hard to review by reading them:</span><ul class="npm-extensions">${o.map(a)}</ul></div>`}function DV(e,t){return EV(yV(t),t.json.sources.length,`files`,n=>TV(e,t,n))}function OV(e,t,n=!1,r=void 0){let{byPath:i,sizes:a}=yV(e),o=n?t:void 0;return k`${hB(cB(e,t),void 0,o)}${bB(gB(e,t),kV(r),o)}${HO(e,t,a.get(t))}${BO(i.get(t))}`}var kV=e=>e===void 0||e?.details.npm&&!DO(e.details)?void 0:e&&gB(e.details,e.path);function AV(e,t,n=[],r=void 0){let{stamps:i,exfiltration:a}=kO(e,t),o=kV(r),s=o===void 0?null:new Map(De(a).map(([e,t])=>[e,Oe(e,t,o)]));return[...n.map(e=>({name:GB(e.type),severity:WB.get(e.severity)??`low`})),...i.map(e=>s?.has(e.name)?{...e,severity:s.get(e.name)}:e)]}var jV=new WeakMap;function MV(e,t){let n=e&&t?.npm?WA(t.npm,e.npm?.version??`(empty)`):null;if(!n)return null;if(!jV.has(n)){let t=new Map;for(let{host:r,places:i}of BV(n).get(`new-hosts`)?.hosts??[])for(let{path:n,line:a}of i)t.set(n,[...t.get(n)??[],{host:r,line:a,was:e.npm?.version??null}]);jV.set(n,t)}return jV.get(n)}function NV(e){if(!e?.length)return j;let t=e.length===1?`New host`:`New hosts`,{was:n}=e[0],r=`${n?`None of ${n}'s files`:`No file of the version compared with`} named ${e.length===1?`it`:`them`}`;return k`<span class="npm-new-host" data-tooltip="${`${t}: ${e.map(({host:e,line:t})=>`${e}, line ${t}`).join(`; `)} \xB7 ${r}`}" .tooltipContent="${k`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${e.map(({host:e,line:t})=>k`<span class="compare-tip-path">${e}</span><span class="compare-tip-said">line ${t}</span>`)}</div><div class="compare-tip-note">${r}</div></div>`}">${t}</span>`}var PV={icon:(e,t)=>yt(e,t.map(([e,t])=>_t(e,t)).find(gt)),alerts:e=>JB(e?.npm),alertTags:YB,newHosts:MV,newHostTag:NV,tag:(e,t,n)=>OV(e,t,!1,n),flags:(e,t,n)=>AV(e,t,[],n),warning(e,t){let{byPath:n}=yV(e),r=_V(t.filter(e=>n.has(e)).map(e=>n.get(e))),{counts:i,marks:a}=r;return EV(r,t.length,t.length===1?`file added or changed`:`files added or changed`,e=>{let{name:t}=be.get(e),n=a.get(e);return k`<li><span class="${`npm-extension is-${n}`}"><span>${t}</span><span class="npm-extension-count">${i.get(e).toLocaleString(`en`)}</span></span></li>`})}},FV=new Map([[`malware`,`Malware`],[`deprecated`,`Deprecated`],[`publisher`,`Publisher`],[`provenance-lost`,`Provenance lost`],[`held-install-scripts`,`Install scripts`],[`held-non-registry-deps`,`Non-registry deps`],[`held-unused-deps`,`Unused deps`],[`held-runs-code`,`Runs code`],[`held-credentials`,`Credentials`],[`held-exfiltration`,`Exfiltration`],[`held-remote`,`Remote`],[`held-ip-lookup`,`IP lookup`],[`held-obfuscated`,`Obfuscated`],[`large-code`,`Large new code`],[`now-unreadable`,`Now unreadable`],[`binary-code`,`Binary code`],[`new-hosts`,`New hosts`],[`popularity`,`Few downloads`]]),IV={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`,low:`is-low`},LV=e=>e>=730?`${Math.floor(e/365)} years`:e>=60?`${Math.floor(e/30)} months`:`${e} days`;function RV(e){let t=e?.score;if(!t)return j;let{score:n,level:r,raised:i,lowered:a}=t,o=i.map(({id:e,severity:t})=>[FV.get(e)??e,t]),s=a&&o.length>0?`Lowered by ${Math.round(a.by*100)}%: out ${LV(a.days)}${a.tier===null?``:`, its package npm's ${_A(a.tier)} by downloads`}`:null,c=[`Risk ${n} of 100`,...o.length===0?[`Nothing found that calls for a look`]:o.map(([e,t])=>`${e}, ${t}`),...s?[s]:[]].join(`
175
+ `);return k`<li><span class="${`npm-extension npm-risk-score ${IV[r]}`}" data-tooltip="${c}" .tooltipContent="${k`<div class="compare-tip"><div class="compare-tip-head">Risk ${n} of 100</div>${o.length===0?k`<span class="compare-tip-none">Nothing found that calls for a look</span>`:k`<div class="compare-tip-rows">${o.map(([e,t])=>k`<span class="npm-risk-finding">${e}</span><span class="${`compare-tip-said npm-risk-severity sev-${t}`}">${t}</span>`)}</div>`} ${s?k`<div class="compare-tip-note">${s}</div>`:j}</div>`}">${HB(n)}<span>Risk</span><span class="npm-extension-count">${n}</span></span></li>`}var zV=(e,t)=>[YV(t.get(`malware`)),XV(t.get(`deprecated`)),eH(e,t.get(`publisher`)),tH(e,t.get(`provenance-lost`)),nH(e,t.get(`held-install-scripts`)),...lH(e,t),...iH(e,t),aH(t.get(`new-hosts`)),uH(t.get(`too-new`))],BV=e=>new Map((e?.findings??[]).map(e=>[e.id,e]));function VV(e,t){if(!e||!t?.npm)return j;let n=[e.npm??{name:t.npm.name,version:`Empty package`,private:!0},t.npm],r=KV(n),i=WA(t.npm,e.npm?.version??`(empty)`),a=BV(i),o=[RV(i),...zV(n,a),dH(n,r),...gH(n,r,a.get(`malware`)),bH(t.npm.name,a.get(`popularity`))].filter(e=>e!==j);return o.length===0?j:k`<ul class="npm-extensions npm-compare-badges" aria-label="Versions at a glance">${o}</ul>`}function HV(e){let{npm:t}=e,n=KV([t]),r=WA(t),i=BV(r),a=r?.oldVersion?[{name:t.name,version:r.oldVersion},t]:[t],o=[RV(r),...zV(a,i),dH([t],n),...gH([t],n,i.get(`malware`))].filter(e=>e!==j);return o.length===0?j:k`<ul class="npm-extensions npm-overview-badges" aria-label="Version at a glance">${o}</ul>`}function UV(e){let t=e?.files??[],n=t=>[`${t.was.toLocaleString(`en`)} \u2192 ${t.now.toLocaleString(`en`)} characters`,...t.rebuilt?[`its source map rebuilt with it`]:[],...e.major?[`in a major release`]:[]];return e?.severity===`critical`||!e?oH(`npm-compare-unreadable`,`Now unreadable`,t,n):sH(`${WV[e.severity]} npm-held-file npm-compare-unreadable`,`Now unreadable`,t,n)}var WV={critical:`is-critical`,high:`is-warn`,moderate:`is-moderate`},GV=e=>[...we.keys()].map(t=>{let n=e.get(`held-${xB(t)}`),r=n?.files??[],i=e=>e.added?new Map([...e.found].filter(([t])=>!e.added.has(t))):void 0;return sH(`${WV[n?.severity]} npm-held-file npm-files-${xB(t)}`,t,r,e=>vB(e.found,i(e)),_B(r.map(e=>e.found)))});function KV(e){let t=FB(e.at(-1).name);return t.status===`loading`?null:e.map(({version:e})=>{let n=t.status===`ready`?t.versions.indexOf(e):-1;return n===-1?[]:t.advisories.filter(e=>e.affected.includes(n))})}var qV=(e,t)=>e===t?`${t??`–`}`:`${e??`–`} \u2192 ${t??`–`}`,JV=e=>jB.find(t=>e.some(e=>MB(e)===t));function YV(e){if(!e)return j;let t=[...e.takenDown?[`Taken down by npm`]:[],...(e.advisories??[]).map(({id:e,title:t})=>t?`${e}: ${t}`:e)];return k`<li><span class="npm-extension npm-malware" data-tooltip="${t.join(`
176
+ `)}">Malware</span></li>`}function XV(e){return e?k`<li><span class="npm-extension npm-compare-deprecated" data-tooltip="${$j(e.message)}">Deprecated</span></li>`:j}var ZV={critical:`is-from-known`,high:`is-to-unknown`},QV={known:`is-known`,maintainer:`is-maintainer`},$V={known:`one that publishes one of npm's most downloaded packages`,maintainer:`one of the package's maintainers`,new:`an unknown publisher, new to the package`,unknown:`an unknown publisher`};function eH([e,t],n){if(!n)return j;let{was:r,now:i,wasKnown:a,nowKnown:o,severity:s,major:c}=n,l=n.wasStanding??(a?`known`:`unknown`),u=n.nowStanding??(o?`known`:`unknown`),d=(e,t)=>k`<span class="${`npm-compare-account ${QV[t]??`is-unknown`}`}">~${e}</span>`,f=ZV[s]??`is-to-known`,p=k`A different npm account published the open version,<br>${$V[u]},<br>after ${$V[l]}${c?k`<br>in a major release`:j}`;return k`<li><a class="${`npm-extension npm-compare-publisher ${f}`}" href="${`https://www.npmjs.com/~${encodeURIComponent(i)}`}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Published by ~${r} (${e.version}), then ~${i} (${t.version})`}" .tooltipContent="${pH(`Published by`,[e,t],[d(r,l),d(i,u)],p)}"><span>Publisher</span><span class="npm-extension-count">${d(r,l)} → ${d(i,u)}</span></a></li>`}function tH([e,t],n){return n?k`<li><span class="npm-extension npm-compare-provenance" data-tooltip="${`npm lists provenance for ${e.version}, none for ${t.version}`}" .tooltipContent="${pH(`npm provenance`,[e,t],[`Listed by npm`,k`<span class="compare-tip-none">None</span>`],`The open version was published without the provenance the one compared with has`)}">Provenance lost</span></li>`:j}function nH(e,t){if(!t)return j;let{scripts:n,flagged:r=[],was:i}=t,a=new Map(i??[]),o=i?e:e.slice(-1),s=i?[i,n]:[n],c=(e,t)=>e.length===0?k`<span class="compare-tip-none">None</span>`:fH(e.map(([e,n])=>[e,n,t.includes(e)])),l=n.map(([e])=>r.includes(e)?`${e} ${a.has(e)?`changed`:`added`}`:e).join(`, `);return k`<li><span class="npm-extension is-warn npm-compare-install" data-tooltip="${o.map(({version:e},t)=>`${e}: ${s[t].map(([e,t])=>`${e}: ${t}`).join(`; `)||`none`}`).join(` · `)}" .tooltipContent="${pH(`Install scripts`,o,s.map((e,t)=>c(e,t===s.length-1?r:[])))}"><span>${n.length===1?`Install script`:`Install scripts`}</span><span class="npm-extension-count">${l}</span></span></li>`}var rH=8;function iH(e,t){let n=e=>t.get(e)?.files??[],r=(e,n)=>`${WV[t.get(e)?.severity]} npm-held-file ${n}`;return[sH(r(`held-runs-code`,`npm-files-runs`),`Runs code`,n(`held-runs-code`),e=>dB(e.found,e.added),Ae(n(`held-runs-code`).map(e=>e.found)),null,!1),sH(r(`held-credentials`,`npm-files-credentials`),`Credentials`,n(`held-credentials`),e=>mB(e.found,e.added)),...GV(t),oH(`npm-compare-large`,`Large new code`,n(`large-code`),e=>Wr(e.bytes)),UV(t.get(`now-unreadable`)),sH(r(`held-obfuscated`,`npm-files-obfuscated`),`Obfuscated`,n(`held-obfuscated`),t=>`${AO(t.found)}${t.added?`, new since ${e[0].version}`:``}`),oH(`npm-compare-binary`,`Binary code`,n(`binary-code`),e=>`${Wr(e.bytes)}, not UTF-8 or holding a NUL`)]}function aH(e){let t=e?.hosts??[],n=t.map(({host:e,places:t})=>{let n=t.slice(0,rH).map(({path:e,line:t})=>`${e}, line ${t}`);return{path:e,at:t.length>n.length?[...n,`and ${(t.length-n.length).toLocaleString(`en`)} more files`]:n}}),[r]=t,i=t.length===1&&r.places.length===1?{path:r.path,line:r.line,query:r.host}:null;return sH(`is-warn npm-compare-hosts`,n.length===1?`New host`:`New hosts`,n,e=>e.at,n.length===1?n[0].path:null,i&&(e=>e.currentTarget.dispatchEvent(new CustomEvent(`compare-open-line`,{detail:i,bubbles:!0,composed:!0}))))}function oH(e,...t){return sH(`npm-compare-file ${e}`,...t)}function sH(e,t,n,r,i=null,a=null,o=!0){if(n.length===0)return j;let s=n.slice(0,rH),c=n.length>s.length?`and ${(n.length-s.length).toLocaleString(`en`)} more`:null,l=e=>[r(e)].flat(),u=`${t}: ${[...s.map(e=>`${e.path} (${l(e).join(`; `)})`),...c?[c]:[]].join(`, `)}`,d=k`<div class="compare-tip"><div class="compare-tip-head">${t}</div><div class="compare-tip-rows is-files">${s.map(e=>k`<span class="compare-tip-path">${e.path}</span><span class="compare-tip-said">${l(e).length>1?k`<span class="compare-tip-lines">${l(e).map(e=>k`<span>${e}</span>`)}</span>`:r(e)}</span>`)}</div>${c?k`<div class="compare-tip-note">${c}</div>`:j}</div>`,f=k`${o?k`<span>${t}</span>`:k`<span class="sr-only">${t}</span>`}${i!==null||n.length>1?k`<span class="npm-extension-count">${i??n.length.toLocaleString(`en`)}</span>`:j}`;return a?k`<li><button type="button" class="${`npm-extension is-open ${e}`}" data-tooltip="${u}" .tooltipContent="${d}" @click="${a}">${f}</button></li>`:k`<li><span class="${`npm-extension ${e}`}" data-tooltip="${u}" .tooltipContent="${d}">${f}</span></li>`}var cH=(e,{created:t,gap:n,level:r,tier:i,installs:a,missing:o,was:s,severity:c})=>[c===`notice`?`no risk counted`:null,s===void 0?null:`was ${s}`,t?`new package, ${n>=0?`${wH(n)} old`:`published later`}`:o?`no package npm has`:r?`npm's ${_A(i??1/0)}`:null,a?.scripts?`installs ${a.version}${a.latest&&a.latest!==a.version?` (its latest ${a.latest})`:``}${a.new?`, published since ${e[0].version}`:``}, running its install scripts`:null].filter(Boolean).join(`; `)||null;function lH(e,t){let{version:n}=e.at(-1),r=t.get(`held-non-registry-deps`)?.dependencies??[],i=t.get(`held-unused-deps`),a=i?.dependencies??[],o=t=>t.some(e=>e.added)?`; new since ${e[0].version}: ${t.filter(e=>e.added).map(({name:e})=>e).join(`, `)}`:``,s=[];if(r.length>0){let t=r.filter(e=>e.added).map(e=>`${e.name} was ${e.was??`none`}`);s.push(k`<li><span class="npm-extension is-warn npm-compare-registry" data-tooltip="${`From elsewhere than npm's registry: ${r.map(e=>`${e.name} ${e.now}`).join(`, `)}${o(r)}`}" .tooltipContent="${pH(`From elsewhere than npm's registry`,[e.at(-1)],[fH(r.map(e=>[e.name,e.now,e.added]))],t.length>0?`New since ${e[0].version}: ${t.join(`, `)}`:null)}"><span>Non-registry deps</span><span class="npm-extension-count">${r.length.toLocaleString(`en`)}</span></span></li>`)}if(a.length>0){let[t,r]=a.length===1?[`it`,`its`]:[`them`,`their`],c=e=>e.kind?`${e.name} (${e.kind})`:e.name;s.push(k`<li><span class="${`npm-extension ${i.severity===`notice`?`is-notice`:WV[i.severity]??`is-warn`} npm-compare-unimported`}" data-tooltip="${`Imported by nothing of ${n}: ${a.map(t=>`${t.name} ${t.range}${cH(e,t)?` (${cH(e,t)})`:``}`).join(`, `)}${o(a)}`}" .tooltipContent="${pH(`Nothing imports ${t}`,[e.at(-1)],[fH(a.map(t=>[[c(t),cH(e,t)].filter(Boolean).join(`, `),t.range,t.added]))],`No code file of ${n} names ${t} as an import would, nor does an install script; npm installs ${t} all the same, running ${r} install scripts`)}"><span>Unused deps</span><span class="npm-extension-count">${a.length.toLocaleString(`en`)}</span></span></li>`)}return s}function uH(e){return e?k`<li><span class="npm-extension is-warn npm-compare-published" data-tooltip="${Cj(e.published)}">${xj(e.published)}</span></li>`:j}function dH(e,t){if(!t)return j;let n=t.at(-1),r=e.length>1?t[0]:n;if(r.length===0&&n.length===0)return j;let i=n.length===0?`is-cleared`:`sev-${JV(n)}`,a=n.filter(e=>!r.includes(e)).length,o=r.filter(e=>!n.includes(e)).length,s=pH(`Advisories affecting`,e,t.map(e=>e.length===0?k`<span class="compare-tip-none">none</span>`:k`<span class="compare-tip-count">${e.length}</span><span class="compare-tip-severities">${jB.map(t=>[t,e.filter(e=>MB(e)===t).length]).filter(([,e])=>e>0).map(([e,t])=>k`<span class="${`compare-tip-severity sev-${e}`}">${t} ${e}</span>`)}</span>`),e.length>1?`${a} new \xB7 ${o} fixed`:null),c=`Advisories affecting ${e.map(({version:e},n)=>`${e}: ${t[n].length}`).join(`, `)}`,l=k`<span>Advisories</span><span class="npm-extension-count">${qV(r.length,n.length)}</span>`;return e.length>1?k`<li><button type="button" class="${`npm-extension npm-compare-advisories ${i}`}" aria-haspopup="dialog" data-tooltip="${c}" .tooltipContent="${s}" @click="${()=>mH(e,t)}">${l}</button></li>`:k`<li><span class="${`npm-extension npm-compare-advisories ${i}`}" data-tooltip="${c}" .tooltipContent="${s}">${l}</span></li>`}var fH=e=>k`<span class="compare-tip-lines">${e.map(([e,t,n])=>t==null?k`<span class="compare-tip-none">${e}: none</span>`:k`<span class="${n?`is-flagged`:j}">${e}: <code>${t}</code></span>`)}</span>`,pH=(e,t,n,r=null)=>k`<div class="compare-tip"><div class="compare-tip-head">${e}</div><div class="compare-tip-rows">${t.map(({version:e},t)=>k`<span class="compare-tip-version">${e}</span><span class="compare-tip-said">${n[t]}</span>`)}</div>${r?k`<div class="compare-tip-note">${r}</div>`:j}</div>`;function mH([e,t],[n,r]){let i=dV(),a=[[`new`,`New in ${t.version}`,r.filter(e=>!n.includes(e))],[`kept`,`Still affecting ${t.version}`,r.filter(e=>n.includes(e))],[`fixed`,`Fixed in ${t.version}`,n.filter(e=>!r.includes(e))]].filter(([,,e])=>e.length>0).map(([e,t,n])=>({status:e,heading:t,rows:n.map(e=>fV(e,i))}));re({heading:`Advisories \xB7 ${e.name} ${e.version} \u2192 ${t.version}`,groups:a,isCurrent:i})}function hH(e,t,n){if(e===null||e>=n)return!1;let r=JV(t);return r===void 0||jB.indexOf(e<=25?`critical`:`high`)<jB.indexOf(r)}function gH(e,t,n=null){let r=e.at(-1),i=e.map(e=>RB({npm:e})?.scores??null);return!i.at(-1)||n?[]:zB.flatMap(([n,a,o,s])=>{let c=i.map(e=>e?Math.round(e[n]*100):null),l=c.at(-1),u=e.length>1?c[0]:l;return l===null||l>=o||n===`vulnerability`&&!(t&&hH(l,t.at(-1),o))||n===`maintenance`&&r.manifest?.deprecated&&l>=BB?[]:[k`<li><a class="${`npm-extension npm-socket-score ${VB(l,s)}`}" href="${LB({npm:r})}" target="_blank" rel="noopener noreferrer" data-tooltip="${`Socket's ${a.toLowerCase()} score: ${e.map(({version:e},t)=>`${c[t]??`none`} for ${e}`).join(`, `)}`}" .tooltipContent="${pH(`Socket's ${a.toLowerCase()} score`,e,c.map(e=>e===null?k`<span class="compare-tip-none">none</span>`:k`<span class="${`compare-tip-score ${VB(e,s)}`}">${HB(e)}${e}</span>`),n===`vulnerability`?`Shown under ${o}, where worse than the advisories found`:`Shown under ${o}`)}">${HB(l)}<span>${a}</span><span class="npm-extension-count">${qV(u,l)}</span></a></li>`]})}var _H={critical:`is-unpopular`,high:`is-low`,moderate:`is-mid`};function vH({known:e,scope:t,account:n}={}){return e?n?`Published with provenance in ${t}, the scope of ~${n}, an account that publishes one of npm's most downloaded packages`:t?`Published with provenance in ${t}, the scope of one of npm's most downloaded packages, which only its owner publishes in`:`Published by an account that publishes one of npm's most downloaded packages`:null}function yH(e,t=null,n=!1){let{tier:r,level:i,severity:a}=e,o=t?.total.toLocaleString(`en`),s=n?`npm-extension npm-popularity npm-downloads-tier ${_H[a]??`is-low`}`:`npm-downloads-tier ${i}`,c=n?vH(e):null,l=[t&&`${o} downloads/month, ${t.month}`,c].filter(Boolean).join(` · `);return k`<span class="${s}" data-tooltip="${l||j}" .tooltipContent="${t||c?k`${t?k`<div><strong>${o}</strong> downloads/month</div><div class="compare-tip-note">${t.month}</div>`:j}${c?k`<div class="compare-tip-note">${c}</div>`:j}`:null}">${_A(r??1/0)}</span>`}function bH(e,t){let n=PB(e);return t?k`<li>${yH(t,n.status===`ready`&&n.downloads?xA(n.downloads):null,!0)}</li>`:j}var xH=k`<span class="npm-downloads-tier is-unpopular" data-tooltip="No downloads counted by npm, which counts a package's from the day after it was first published">unpopular</span>`,SH=e=>new Intl.NumberFormat(`en`,{style:`unit`,unit:e,unitDisplay:`long`}),CH={minute:SH(`minute`),hour:SH(`hour`),day:SH(`day`),month:SH(`month`),year:SH(`year`)};function wH(e){let t=Math.max(0,Math.floor(e/6e4)),n=Math.floor(t/1440);return t<60?CH.minute.format(t):t<1440?CH.hour.format(Math.floor(t/60)):n<60?CH.day.format(n):n<730?CH.month.format(Math.floor(n/30.44)):CH.year.format(Math.floor(n/365.25))}function TH({compared:e},{created:t,gap:n}){if(!t)return j;let[r,i]=e,a=wH(Math.abs(n)),o=[`First published on ${Sj(t)}`,`${a} ${n>=0?`before`:`after`} ${i.version} was`],s=`npm had no package by its name when ${n>=0?r.version:`either version`} was published`;return k`<span class="npm-dependency-flag is-new" data-tooltip="${[...o,s].join(` · `)}" .tooltipContent="${k`<div class="compare-tip"><div class="compare-tip-head">New package</div>${o.map(e=>k`<div>${e}</div>`)}<div class="compare-tip-note">${s}</div></div>`}">${n>=0?`${a} old`:`published later`}</span>`}function EH(e,t){let n=UA(e.flags);if(t!==`added`||!e.level)return[n,j];let r=e.month?SA({total:e.month.total,from:new Date(e.month.from)}):null;return[n,e.uncounted?xH:yH(e,r),e.compared?TH(e,e):j]}function DH(e,t){let{counts:n}=yV(t),r=hV.filter(e=>n.has(e));return r.length===0?j:k`<ul class="npm-extensions" aria-label="Readable files">${r.map(n=>TV(e,t,n))}</ul>`}function OH(e){let t=e.slice(e.lastIndexOf(`/`)+1),n=/\.d\.[cm]?ts$/iu.exec(t);if(n&&n.index>0)return n[0].toLowerCase();let r=t.lastIndexOf(`.`);return r>0?t.slice(r).toLowerCase():``}function kH(e,t,n=new Map){let r=new Map;for(let i of e){let e=OH(i),a=r.get(e)??{extension:e,files:0,bytes:0,lines:null};a.files++,a.bytes+=t.get(i)??0,n.has(i)&&(a.lines=(a.lines??0)+n.get(i)),r.set(e,a)}return[...r.values()].toSorted((e,t)=>t.files-e.files||e.extension.localeCompare(t.extension))}var AH=/^(?:package\.json|readme(?:\.md)?)$/iu,jH=e=>AH.test(e)||DA.test(e);function MH(e,t,n=new Map){let r=e.filter(jH),i=new Set(e.filter(e=>!jH(e)).map(OH)),{files:a,bytes:o,lines:s}=kH(r,t,n).reduce((e,t)=>({files:e.files+t.files,bytes:e.bytes+t.bytes,lines:t.lines===null?e.lines:(e.lines??0)+t.lines}),{files:0,bytes:0,lines:null});return{package:r.length>0?{files:a,bytes:o,lines:s}:null,extensions:kH(e,t,n).filter(e=>i.has(e.extension))}}var NH=({bytes:e,lines:t})=>t===null?Wr(e):`${Wr(e)} \xB7 ${t.toLocaleString(`en`)} LoC`;function PH(e,t){let{types:n,extensions:r}=yV(t);return!n.package&&n.extensions.length===0?j:k`<ul class="npm-extensions" aria-label="File types">${n.package?wV(e,{id:`package`,label:`Package`,keeps:jH},k`<span>Package</span>`,n.package.files,{tooltip:`package.json, readme and license: ${NH(n.package)}`}):j} ${n.extensions.map(t=>wV(e,{id:`extension:${t.extension}`,label:t.extension||`No extension`,keeps:e=>r.get(e)===t.extension},k`<span class="npm-extension-name">${t.extension||`no extension`}</span>`,t.files,{tooltip:NH(t)}))}</ul>`}function FH(e,t,n){let r=[[`languages`,`Languages`,t],[`readable`,`Readable`,DH(e,n)],[`types`,`File types`,PH(e,n)],[`socket`,`Socket`,UB(e)]].filter(([,,e])=>e!==j);return r.length===0?j:k`<dl class="npm-contents" aria-label="Contents">${r.map(([e,t,n])=>k`<div class="${`npm-contents-${e}`}"><dt>${t}</dt><dd>${n}</dd></div>`)}</dl>`}function IH(e,t){return e.size===0?j:qk({title:`Binary files`,count:e.size,list:!0,body:k`<ul class="bundles-sources-list">${[...e].map(e=>k`<li><div class="bundles-source-row is-resource">${yt(e,`binary`)}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${e}">${e}</span> ${t.has(e)?k`<span class="bundles-source-size">${Wr(t.get(e))}</span>`:j}</div></li>`)}</ul>`})}var LH=({severity:e})=>je.indexOf(e),RH=(e,t)=>e.reduce((e,n,r)=>e||n.name.localeCompare(t[r].name),0);function zH(e,t,n){return e.map(e=>({row:e,path:n(e),flags:t(e).toSorted((e,t)=>LH(e)-LH(t)||e.name.localeCompare(t.name))})).toSorted((e,t)=>(t.flags.length>0)-(e.flags.length>0)||e.flags.length>0&&(LH(e.flags[0])-LH(t.flags[0])||t.flags.length-e.flags.length||RH(e.flags,t.flags))||e.path.localeCompare(t.path)).map(({row:e})=>e)}function BH(e){return{...wj(e),files:PV,badges:VV,dependencyTags:EH,reviewVerdictLimit:XB}}var VH=/^[a-f\d]{40}$/iu,HH={removed:[],added:[],changed:[]},UH=e=>e.kind===`commit`&&VH.test(e.name)?e.name.toLowerCase():MM(e);function WH(e,t,n){return HM({revision:VH.test(t)?CM(e,t)??{kind:`commit`,name:t}:t.startsWith(`heads/`)?{kind:`branch`,name:t.slice(6)}:t.startsWith(`tags/`)?{kind:`tag`,name:t.slice(5)}:{kind:`commit`,name:t},commit:t},n)}var GH=(e,t)=>e.kind===`commit`||!e.name?(e.name||t).slice(0,7):e.name;function KH(e){let{repoId:t,repo:n,commit:r,path:i}=e.repository,a=xM(t),o=HM(e.repository,a);return{noun:`revision`,base:r,options:[],choices:[],name:n=>n===e.integrity||n===r?GH(o,r):GH(WH(t,n,a),n),async load(e){let n=await ub(t,e,i,{signal:W_()});if(n?.repoId!==t||n.path!==i||!VH.test(n.commit??``)||VH.test(e)&&n.commit.toLowerCase()!==e.toLowerCase())throw Error(`The server answered with another directory.`);let r=n.commit.toLowerCase();return VH.test(e)||wM(t,r,WH(t,e,null)),{...OM(TM({...n,commit:r},CM(t,r)),n),compareId:r}},open:(e,r,a)=>AM({repoId:t,repo:n,path:i,bundleTab:`compare`,compare:{target:r,mode:a},...VH.test(e)?{commit:e.toLowerCase()}:{ref:e,revision:WH(t,e,null)}}),dependencies:()=>HH,files:{icon:(e,t)=>yt(e,t.map(([e,t])=>_t(e,t)).find(gt))},select:(e,n)=>k`<repository-revision-pick .refs="${a.status===`ready`?a.value:null}" label="${n}" ?empty="${!e.value}" .revision="${e.value?e.value===r?o:WH(t,e.value,a):null}" @revision-pick="${t=>e.pick(UH(t.detail))}"></repository-revision-pick>`}}var qH=class extends ga{static properties={refs:{attribute:!1},revision:{attribute:!1},label:{},_edit:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.refs=null,this.revision=null,this.label=``,this._edit=null,this._shownKey=null}willUpdate(){let e=JSON.stringify(this.revision);e!==this._shownKey&&(this._shownKey=e,this._edit=null)}changed({detail:e}){let t=WM(e);this._edit=t??{kind:e.kind,name:e.name},t&&this.dispatchEvent(new CustomEvent(`revision-pick`,{detail:t}))}render(){let e=this._edit??this.revision??{kind:`branch`,name:``};return k`<revision-select role="group" aria-label="${this.label}" .refs="${this.refs}" .kind="${e.kind}" .name="${e.name}" .installTooltips="${e=>hr(e)}" @revision-change="${this.changed}"></revision-select>`}};customElements.get(`repository-revision-pick`)||customElements.define(`repository-revision-pick`,qH);var JH=500,YH=14;function XH(e){if(!e)return null;let t={};e.color&&(t.color=e.color);let n=hn(e);return n&&(t.triage=n),typeof e.fix==`string`&&e.fix&&(t.fix=e.fix),typeof e.flagged==`boolean`&&(t.flagged=e.flagged),Object.keys(t).length>0?t:null}function ZH(e){return e==null?``:JSON.stringify([e.color??``,e.triage??``,e.fix??``,e.flagged])}function QH(e,t){return e.length>100?!1:t==null||(t.color?.length??0)<=50&&(t.fix?.length??0)<=1e4}var $H=e=>new TextEncoder().encode(e).length,eU=new Map,tU=new Set,nU=(e,t=P.currentManagedTeam)=>JSON.stringify([t,e]),rU=new Map,iU=null,aU=Promise.resolve();function oU(){let e=new Set;for(let t of P.reports)for(let n of t.groups)for(let t of n)typeof t.id==`string`&&t.id&&e.add(t.id);return e}function sU(){return Array.isArray(P.managedReports)&&P.managedReports.length>0?P.managedReports:P.managedReport==null?[]:[P.managedReport]}function cU(e){let t=new Set,n=!1;for(let r of P.reports)if(r._managedReportId===e){n=!0;for(let e of r.groups??[])for(let n of e)typeof n.id==`string`&&n.id&&t.add(n.id)}return n||P.reports.length===0?t:new Set(oU())}function lU(e){let t=sU();for(let n of P.reports)if(n._managedReportId!=null&&(n.groups??[]).some(t=>t.some(t=>t.id===e))){let e=t.find(e=>e.id===n._managedReportId);if(e)return e}return t[0]??null}function uU(){let e=P.managedSession;return P.serverMode===`managed`&&P.localMode!==!0&&e!=null&&Ke(e.role,`triage`)}function dU(e){return e===403&&P.managedSession?.viewer?!0:e>=400&&e<500&&e!==401&&e!==403&&e!==408&&e!==429}function fU(e,t){let n=rU.get(e.key);n??(n={report:e.report,key:e.key,teamId:e.teamId,changes:new Map},rU.set(e.key,n));for(let r of t)n.changes.has(r)||n.changes.set(r,e.changes.get(r))}async function pU(e,t,n){if(!uU())return;let r=[...e.changes.keys()],i=0;for(;i<r.length;){let a=i,o={},s=0,c=YH;for(;i<r.length&&s<200;){let t=r[i],n=$H(`${JSON.stringify(t)}:${JSON.stringify(e.changes.get(t))},`);if(s>0&&c+n>262144)break;o[t]=e.changes.get(t),c+=n,s++,i++}let l=await ex(e.report.id,o,P.managedSession?.csrfToken,e.teamId),u=l>=200&&l<300;if(!u&&!dU(l)){fU(e,r.slice(a));return}u||console.warn(`managed: the server refused a triage batch`,e.report.id,l,Object.keys(o)),!u&&l===403&&P.managedSession?.viewer&&n.add(e.report.id);for(let[n,r]of Object.entries(o)){let i=eU.get(n)?.fix??``,a=u?r?.fix??``:i;a!==i&&t.add(e.teamId),eU.set(n,{key:ZH(r),fix:a})}}}function mU(){iU!=null&&(clearTimeout(iU),iU=null);let e=[...rU.values()];if(rU.clear(),e.length===0)return;let t=new Set,n=new Set;for(let r of e)aU=aU.then(()=>pU(r,t,n)).catch(e=>{console.warn(`managed: triage push failed`,e)});aU=aU.finally(()=>{for(let e of t)zv(e);for(let e of n)xU(e)}).catch(e=>{console.warn(`managed: Fix cache invalidation failed`,e)})}function hU(){if(sU().length!==0&&uU()&&tU.size!==0){for(let e of oU()){let t=XH(P.triage.get(e)),n=ZH(t);if((eU.get(e)?.key??``)===n)continue;if(!QH(e,t)){console.warn(`managed: triage entry exceeds the server caps, kept local only`,e),eU.set(e,{key:n,fix:eU.get(e)?.fix??``});continue}let r=lU(e);if(r==null||!tU.has(nU(r.id)))continue;let i=P.currentManagedTeam,a=nU(r.id,i),o=rU.get(a);o??(o={report:r,key:a,teamId:i,changes:new Map},rU.set(a,o)),o.changes.set(e,t)}rU.size!==0&&(iU!=null&&clearTimeout(iU),iU=setTimeout(mU,JH))}}var gU=!1;function _U(){gU||!uU()||(gU=!0,ud(hU))}function vU(){yu(),P.managedComments?.clear(),P.managedIssues.clear(),globalThis.document?.dispatchEvent(new Event(`managed-comments-reset`)),iU!=null&&(clearTimeout(iU),iU=null),rU.clear(),tU.clear(),eU.clear()}async function yU(e,{renderView:t=!0,signal:n,readAnnotations:r}={}){let i=P.reports,a=P.currentManagedTeam,o=P.managedSession?.role,s=P.managedSession?.id,c=()=>!n?.aborted&&P.serverMode===`managed`&&P.localMode!==!0&&P.managedSession!=null&&P.managedSession.id===s&&P.managedSession.role===o&&P.reports===i&&P.currentManagedTeam===a&&sU().some(t=>t.id===e);if(!c()||(tU.delete(nU(e)),mU(),!await bU(n)||!c()))return!1;let l=new Map(P.managedIssues),u=r?await r(e):null,d=r?u?.entries:await Yb(e,a,{signal:n});if(d==null||!c())return!1;let f=!1,p=cU(e),m=u&&Jh(p,u.issues,l);for(let e of p){if(!Object.hasOwn(d,e)){eU.delete(e);continue}let t=XH(d[e]);eU.set(e,{key:ZH(t),fix:t?.fix??``});let n=t?.triage==null||t.triage===`ignored`?P.triage.get(e)?.ignoredReports:void 0;bn(P.triage,e,{...t,ignoredReports:n,scopedIgnoredReports:P.triage.get(e)?.scopedIgnoredReports})&&(f=!0)}if(tU.add(nU(e)),u&&Bv(a,p,l),m&&!f&&t&&Z(),f){if(await Sd(),!c())return!1;t&&Z()}return hU(),!0}function bU(e){return e?e.aborted?Promise.resolve(!1):new Promise(t=>{let n=n=>{e.removeEventListener(`abort`,r),t(n)},r=()=>n(!1);e.addEventListener(`abort`,r,{once:!0}),aU.then(()=>n(!0),()=>n(!1))}):aU.then(()=>!0)}async function xU(e,{signal:t,readAnnotations:n}={}){let r=P.reports,i=P.currentManagedTeam,a=P.managedSession?.role,o=P.managedSession?.id,s=()=>!t?.aborted&&P.serverMode===`managed`&&!P.localMode&&P.reports===r&&P.currentManagedTeam===i&&P.managedSession?.id===o&&P.managedSession?.role===a&&tU.has(nU(e,i));if(!s()||(mU(),!await bU(t)||!s()))return!1;let c=cU(e),l=new Map([...c].map(e=>[e,eU.get(e)])),u=new Map(P.managedIssues),d=n?await n(e):null,f=n?d?.entries:await Yb(e,i,{signal:t});if(f==null||!s())return!1;let p=d&&Jh(c,d.issues,u),m=!1,h=!1;for(let e of c){let t=l.get(e),n=XH(P.triage.get(e));if(eU.get(e)!==t||ZH(n)!==(t?.key??``))continue;let r=XH(f[e]);(t?.fix??``)!==(r?.fix??``)&&(h=!0),eU.set(e,{key:ZH(r),fix:r?.fix??``});let i=r?.triage==null||r.triage===`ignored`?P.triage.get(e)?.ignoredReports:void 0;bn(P.triage,e,{...r,ignoredReports:i,scopedIgnoredReports:P.triage.get(e)?.scopedIgnoredReports})&&(m=!0)}if(h&&zv(i),d&&Bv(i,c,u),p&&!m&&Z(),m){if(await Sd(),!s())return!1;Z()}return!0}function SU(e,t){if(!e)return;let n=P.currentManagedReport;if(n!=null&&(P.managedReports.length!==1||P.managedReports[0].id!==n))return;let r;return async i=>(r??=(async()=>(mU(),!await bU(t)||t?.aborted?null:Jb(e,{signal:t,reportId:n})))(),(await r)?.(i)??null)}async function CU(e){let t=await g(e),n=await Qp(t);if(n.kind===`reports`)return{kind:`reports`,reports:n.reports};let r;if(n.kind===`encrypted`){if(r=await ht({tryPassword:e=>_(t,e)}),!r)return null}else r=v(n.text);let i=await Yp(r,{conflictResolver:async(t,n)=>{try{return await cS(t,n,{title:`Triage conflicts on import`,intro:`disagree with your local triage on`,trailingNote:`Reports and non-conflicting triage were already merged; pick which side to keep for these disagreements.`,importedSideLabel:`Apply imported`})}catch{let n=t.length;return alert(`Imported ${e.name}. Kept your local triage on ${n} conflicting entr${n===1?`y`:`ies`} because another dialog is open \u2014 re-drop the file to pick again.`),null}}});return(P.currentFile||P.currentWorkspace)&&Z(),{kind:`workspace`,workspace:i}}var wU=`deepview.passkey.firstImportPrompted`;function TU(){try{return localStorage.getItem(wU)===`1`}catch{return!1}}function EU(){try{localStorage.setItem(wU,`1`)}catch{}}async function DU(){if(!(yo()||!xo()||TU())){if(!confirm(`Encrypt your DeepView data with a passkey?
177
+
178
+ Your triage notes, workspaces, and report files are stored on this device. Encryption locks them under a passkey (TouchID, Windows Hello, security key) so scripts running here can't read them without the passkey.
179
+
180
+ You can change this anytime from the lock icon in the sidebar header.`)){EU();return}await Ge(),yo()&&EU()}}var OU=null,kU=()=>Promise.resolve(!0);function AU(e){kU=e}function jU(){OU?.controller.abort(),OU=null}function MU(e,t,n){let{promise:r,resolve:i}=Promise.withResolvers(),a=!1,o=e=>{clearTimeout(l),t.removeEventListener(`abort`,s),i(e)},s=()=>o(!1),c=()=>(!a&&!t.aborted&&(a=!0,clearTimeout(l),Promise.resolve().then(()=>n()&&e(t)).then(e=>o(!!e&&n()),()=>o(!1))),r),l=setTimeout(c,1e3);return t.addEventListener(`abort`,s,{once:!0}),t.aborted&&s(),{promise:r,start:c}}function NU(e,t){return t.aborted?Promise.resolve(!1):new Promise(n=>{let r=e=>{t.removeEventListener(`abort`,i),n(e)},i=()=>r(!1);t.addEventListener(`abort`,i,{once:!0}),e.then(r,()=>r(!1))})}function PU({catalogOnly:e=!1,hydrate:t}={}){let n=P.managedSession,r=W_(),i=[`findings`,`files`,`links`].includes(P.currentView),a=[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(P.currentView),o=a||i&&(!e||OU?.teamId===P.currentManagedTeam&&!OU.signal.aborted)?P.currentManagedTeam:null;if(!F()||!n||n.role===`none`||n.publicShare&&!o)return jU(),t?Promise.resolve(!1):void 0;let s=P.managedTeams?.find(e=>e.id===o)?.reports.find(e=>e.id===P.currentManagedReport&&e.visible===!1)?.id??null,c=JSON.stringify([o,s,n.id,n.role,n.csrfToken,!!n.publicShare]);if(OU?.key!==c||OU.signal.aborted){jU();let e=new AbortController,t={key:c,controller:e,signal:e.signal,teamId:o,reportId:s,version:0,target:null};t.current=(e=t.signal)=>!e.aborted&&!t.signal.aborted&&OU===t&&F()&&P.managedSession?.id===n.id&&P.managedSession?.role===n.role&&P.managedSession?.csrfToken===n.csrfToken&&!!P.managedSession?.publicShare==!!n.publicShare,OU=t,FU(t)}let l=OU;if(e||a||!o)return l.target?.ready;let u=js(P.reports),d=l.target;if(d?.view===r&&d.reports===u&&!d.signal.aborted)return d.ready;d?.controller.abort();let f=new AbortController,p=AbortSignal.any([f.signal,l.signal,r]),m={controller:f,signal:p,view:r,reports:u,version:d?.reports===u?d.version:0};return l.target=m,m.current=()=>l.current()&&!p.aborted&&l.target===m&&P.currentManagedTeam===o&&js(P.reports)===u,m.hydration=t?MU(async e=>{let n=l.version,r=await t(e);return r&&m.current()&&(m.version=n),r},p,m.current):null,m.ready=m.hydration?.promise,(l.version||l.finished)&&(m.hydration?m.hydration.start():m.version<l.version&&IU(l,m,l.signal).then(e=>(!e&&m.current()&&(jU(),PU()),e))),m.ready}function FU(e){let{signal:t,controller:n,current:r}=e;ux(e.teamId,{signal:t,reportId:e.reportId,onTeams:async(e,t)=>{let n=()=>r(e);return n()?await kU(n,e,t)&&n():!1},onUpdate:t=>r(t)?(e.version++,IU(e,e.target,t)):!1,onClose:()=>{r()&&document.dispatchEvent(new Event(`managed-feed-closed`)),n.abort()}}).catch(e=>{r()&&console.warn(`managed: team feed failed`,e)}).finally(()=>{e.finished=!0,r()&&e.target?.hydration?.start()})}async function IU(e,t,n){if(!e.current(n))return!1;if(!t?.current())return!0;if(!t.refresh||t.refresh.controller.signal.aborted){let n=new AbortController,r={controller:n,promise:null},i=AbortSignal.any([n.signal,t.signal]);t.refresh=r,r.promise=LU(e,t,i).catch(()=>!1).finally(()=>{t.refresh===r&&(t.refresh=null)})}let r=t.refresh,i=AbortSignal.any([n,t.signal,r.controller.signal]),a=()=>r.controller.abort();n.addEventListener(`abort`,a,{once:!0});let o;try{o=await NU(r.promise,i)}finally{n.removeEventListener(`abort`,a)}return e.current(n)?t.current()?o?t.version<e.version?IU(e,t,n):!0:!1:!0:!1}async function LU(e,t,n){if(t.hydration&&!await NU(t.hydration.start(),n))return!1;for(;t.current()&&!n.aborted&&t.version<e.version;){let r=e.version,i=SU(e.teamId,n),a=P.managedReports.filter(e=>t.reports.some(t=>t._managedReportId===e.id));if(!(await Promise.all(a.flatMap(e=>[xU(e.id,{signal:n,readAnnotations:i}),WC(e.id,{signal:n,readAnnotations:i})]))).every(Boolean)||!t.current()||n.aborted)return!1;t.version=r}return!n.aborted&&t.current()}function RU(e){if(e.linkedTabs)return e.linkedTabs;let t=e.filter(e=>Ii(e)===`revalidation`);return t.length>0?t:e}function zU(e){let t=e.map(RU).filter(e=>e.length>0);return t.length>0&&t.every(e=>e.every(e=>e.isApp&&e._source&&!e._sourcePass&&Ii(e)===``))}function BU(e,t=()=>[],{countFindings:n=!1}={}){let{groups:r,conflicts:i}=ng(e,{hideRuledOut:!0}),a=dg(r,t,RU),o=n?{appMode:!1,findings:a.length}:{appMode:!1};return i.size>0||!zU(a)&&!mr(a,{tabs:RU,kindOf:Ii,severityMode:`corrected`})?o:{appMode:!0,appFindings:a.filter(e=>RU(e).some(e=>e.isApp)).length}}var VU=null,HU=0;Qu(()=>{HU++});function UU(e,t,n,{complete:r,isCurrent:i}){VU={id:e.id,membership:JSON.stringify(e.reports.toSorted()),reports:t,token:n,complete:r,isCurrent:i}}function WU(e){return!VU||VU.id!==e.id||!VU.isCurrent()||VU.membership!==JSON.stringify(e.reports.toSorted())||!vm(e,VU.token)?null:(VU.linksRevision!==HU&&(VU.metadata=VU.complete?BU(VU.reports,rd):{appMode:!1},VU.linksRevision=HU),VU.metadata)}async function GU(e,t,n,{complete:r,isCurrent:i,onReady:a}){if(!i()||(await od(),!i()))return;let o=await Sm(e,n);if(!o||!i())return;let s=r?BU(t,rd):{appMode:!1};await Cm(e,s,o)&&i()&&await a(s)}var KU=`deepview.lastFile`;function qU(e,t=`overview`,{push:n=!1}={}){if(F()){let r=P.bundles.find(t=>t.integrity===e),i=r?.npm?ej(r,t,kx(P,t)):r?.repository?kM(r,t,kx(P,t)):Ex(P.managedTeams,r,P.currentManagedTeam,t,kx(P,t),P.bundles);n?U.pushRoute(i):U.replaceRoute(i);return}Ha(KU,`b:${e}${t&&t!==`overview`&&Qr.has(t)?` ${t}`:``}`).catch(()=>{})}var X=e=>e!==H();function JU(){return new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(e,0)})}async function YU(e){return await JU(),e!==null&&X(e)?!1:(Z(),ZX(P.reports.flatMap(e=>e.bundleHashes??[]),()=>e===null||!X(e)).catch(()=>{}),!0)}function XU(){w.selected=null,w.focusedPkg=null,w.layoutCache=null,w.solo=null,w.hidden.clear(),w.pathFilter=``,sr()}function ZU(e){for(let t of B.openSessions)t&&!e.has(t.workspaceId)&&(B.closeSession(t.workspaceId),Ph(t.workspaceId))}function QU(){R.classList.remove(`active`),R.replaceChildren(),Gm.classList.remove(`hidden`),document.title=`DeepView`}function $U(e){return e instanceof DOMException&&e.name===`NotFoundError`||typeof e?.message==`string`&&e.message.startsWith(`File not found:`)}function eW(e){let t=tW(e.toLowerCase());return t.endsWith(`.map`)?`sourcemap`:t===`stasis.code.br`||t.endsWith(`.stasis.code.br`)?`stasis`:null}function tW(e){return e.replace(/ \(\d+\)(?=\.[^.]*$)/u,``)}async function nW({name:e,content:t,existingNames:n}){if(!n.has(e))return await Rc(e,t),n.add(e),{name:e,content:t};let r;try{r=await Bc(e)}catch(r){if(!$U(r))throw r;return await Rc(e,t),n.add(e),{name:e,content:t}}if(r===t)return{name:e,content:t};let i=L().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>dh(t.id,e)),a=await Pe({name:e,workspaceNames:i.map(e=>e.name),existingNames:n});if(a.action===`cancel`)return null;if(a.action===`rename`){let e=a.newName;return await Rc(e,t),n.add(e),{name:e,content:t}}let o;if(i.length>0)try{o=await kh(e)}catch(t){console.warn(`Import: couldn't announce the replace of "${e}" to sync:`,t)}try{await Rc(e,t),i.length>0&&await iW(e,i)}finally{typeof o==`function`&&o()}return{name:e,content:t}}async function rW(e,t){let n=typeof t?.github==`string`?t.github:``;if(n)try{await rc(e,n)}catch(t){console.warn(`Import: failed to adopt the repository "${n}" for "${e}":`,t)}}async function iW(e,t){let n;try{n=await Vc(e)}catch(t){console.warn(`Import: failed to read freshly-saved "${e}" for cloud sync:`,t);return}for(let r of t)try{await Nh(r.id);let t=await Oh(r.id,e,n);t&&t.ok===!1&&console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}): ${t.reason??`unknown`}`)}catch(t){console.warn(`Import: failed to upload "${e}" to workspace "${r.name}" (${r.id}):`,t)}}async function aW(e){if(e=[...e],e.length===0||(await Q$(),F())||(await DU(),F()))return;let t=null,n=null,r=new Set,i=new Set(await Lc()),a=[];for(let o of e)try{let e=tW(o.name.toLowerCase());if(e.endsWith(`.gz`)||e.endsWith(`.deepview-workspace.enc`)){let e=await CU(o);if(e?.kind===`reports`)for(let n of e.reports){if(typeof n?.name!=`string`||!n.name||typeof n?.content!=`string`)continue;let e=Iu(n.content);if(!e.recognized){a.push(n.name);continue}let r=await nW({name:n.name,content:n.content,existingNames:i});r&&(Pu(r.name,e.count,e.source),await rW(r.name,n.repo),t={name:r.name,content:r.content})}try{let e=await Lc();i.clear();for(let t of e)i.add(t)}catch(e){console.warn(`Import: failed to refresh existingNames after workspace import:`,e)}continue}if(eW(o.name)){let e=new Uint8Array(await o.arrayBuffer()),{integrity:t}=await ol(o.name,e);n=t,r.add(t);continue}let s=await o.text(),c=ut(s,o.name);if(c)for(let e of c){let{count:n,source:r}=Iu(e.content),a=await nW({...e,existingNames:i});a&&(Pu(a.name,n,r),t={name:a.name,content:a.content})}else if(xi(s,e)===`codex`){let e=vi(s);for(let{displayName:n,data:r}of e){let e=n.replaceAll(`/`,`__`)+`.codex`,a=JSON.stringify(r),{count:o,source:s}=Iu(a),c=await nW({name:e,content:a,existingNames:i});c&&(Pu(c.name,o,s),t={name:c.name,content:c.content})}}else{let e=Iu(s);if(!e.recognized)throw Error(`not a recognized DeepView, DeepSec, Piolium, Claude Security, Codex, or Markdown (generic) report, and not a links file`);let n=await nW({name:o.name,content:s,existingNames:i});if(!n)continue;Pu(n.name,e.count,e.source),t={name:n.name,content:n.content}}}catch(e){alert(`Failed to load ${o.name}: ${e.message}`)}if(a.length>0){let e=a.length;alert(`Skipped ${e} report${e===1?``:`s`} no parser recognised: ${a.join(`, `)}`)}await $(),t?await oW(t.name,t.content):n&&(KX(n),qU(n,P.bundleDetailsTab),Z(),await $(),QX(n)),ZX(r).catch(()=>{})}async function oW(e,t,{workspaceId:n}={}){if(F())return;let r=G_();P.currentManagedTeam=null,P.currentManagedReport=null,P.currentReportWorkspace=MC(e,n);let i=new Set(L().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).map(e=>e.id));if(ZU(i),P.reports=[],Ug(),P.workspaceMerges=[],P.revalidateConflicts=new Map,P.currentFile=e,P.currentWorkspace=null,P.currentLinks=null,P.managedReport=null,P.managedReports=[],P.managedComments.clear(),P.managedIssues.clear(),P.currentView!==`findings`&&P.currentView!==`files`&&(P.currentView=`findings`),P.repoUrl=Xs(e),P.repoEditing=!1,XU(),Ha(KU,Md(e,P.currentReportWorkspace)).catch(()=>{}),t===void 0){try{t=await Bc(e)}catch(t){if(X(r))return;if(t&&t.message?.includes(`vault locked`)){if(await Ev()&&!X(r)){await oW(e);return}X(r)||(P.currentFile=null,await $());return}if($U(t)){let t=L().find(t=>Array.isArray(t.reports)&&t.reports.includes(e)&&dh(t.id,e));if(t)try{if(await Nh(t.id),X(r))return;let n=await et({workspaceId:t.id,items:[{kind:`report`,identifier:e}]});if(X(r))return;if(n?.downloaded?.some(t=>t.kind===`report`&&t.identifier===e)){await oW(e);return}}catch(t){if(console.warn(`Re-download prompt for missing "${e}" failed:`,t),X(r))return}X(r)||(P.currentFile=null,await $());return}alert(`Failed to read ${e}: ${t.message}`),P.currentFile=null,await $();return}if(X(r))return}let a=b(t);if(a?(P.currentLinks={name:e,...a},P.currentView=`links`,Z()):await _W(e,t,r),!X(r)){for(let e of i)B.openSession(e),B.refreshSession(e),Nh(e);return await $(),!0}}function sW(e){return P.managedSession?.role===`admin`&&lW({id:null,reports:[{id:e}]},e,{history:!1,deduplication:!0})}async function cW(e,t,{history:n=!0,tab:r=P.teamDependenciesTab}={}){let i=F();if(![`reports`,`bundles`,...i?[`repositories`,`dependencies`]:[]].includes(t))return!1;let a=`workspace-${t}`,o=i?P.managedTeams.find(t=>t.id===e):L().find(t=>t.id===e);if(!o||t===`dependencies`&&(o.dependencyReview!==!0||!ai.has(r)))return!1;if(i&&n&&U.active)return U.navigate(fi({view:a,teamId:e,...t===`dependencies`?{dependencyTab:r}:{}},P.managedTeams));t===`dependencies`&&(P.teamDependenciesTab=r);let s=i?`managed-team:${e}`:e,c=G_();return ZU(new Set),fW({forgetLastView:!1}),P.currentWorkspace=s,P.currentManagedTeam=i?e:null,P.currentView=a,i&&(P.bundles=jx(P.managedTeams)),R.classList.add(`active`),Gm.classList.add(`hidden`),document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),document.querySelector(`#main-content`)?.scrollTo({top:0}),i||Ha(KU,`${t===`reports`?`wrs`:`wbs`}:${e}`).catch(()=>{}),await $(),!X(c)&&(Z({animate:!1}),!X(c))}async function lW(e,t=null,{history:n=!0,deduplication:r=!1}={}){if(!F()||!e||!Array.isArray(e.reports))return!1;if(n&&U.active)return U.navigate(fi({view:`findings`,teamId:e.id,reportId:t},P.managedTeams));if(t!==null&&!e.reports.some(e=>e.id===t))return!1;let i=G_(),a=e.reports.find(e=>e.id===t&&e.visible===!1),o=W_(),s;try{s=r?await(await W()).fetchManagedLinkWorkspace(t,{signal:o}):await lx(e.id,{reportId:a?.id??null})}catch(e){return X(i)||xx(e.message||`Could not load link report.`),!1}if(X(i))return!1;if(ib(),s===null||t!==null&&!s.some(e=>e.id===t))return xx(`Could not load all team reports. Please try again.`),!1;let c=s.find(e=>e.id===t&&e.data.source===`links`&&Array.isArray(e.data.links)),l=s.filter(e=>t===null||c||e.id===t),u=l.filter(e=>e.data.source!==`links`||!Array.isArray(e.data.links));ZU(new Set),OX(t===null&&!r?e.id:null),R.classList.add(`active`),Gm.classList.add(`hidden`),P.currentView=`findings`,P.reports=[],Ug(),P.workspaceMerges=[],P.revalidateConflicts=new Map,P.currentFile=t===null?null:s.find(e=>e.id===t).filename,P.currentWorkspace=t===null?`managed-team:${e.id}`:null,P.currentManagedTeam=e.id,P.currentManagedReport=t,xu(e.id,s),P.managedReports=l.map(e=>({id:e.id,filename:e.filename})),P.managedComments.clear(),P.managedIssues.clear(),P.managedReport=t===null?null:P.managedReports[0]??null,P.currentReportWorkspace=null,P.currentLinks=null,P.selectedBundle=null,P.selectedBundleWorkspace=null,P.scanSelection=null,P.repoUrl=``,P.repoEditing=!1,XU();for(let e of u)if(await _W(e.filename,e.data,i,{renderView:!1,managedReportId:e.id,managedRepo:e.repo}),X(i))return!1;if(u.length>0){let e=async e=>{let t=SU(P.currentManagedTeam,e);return(await Promise.all(u.flatMap(n=>[yU(n.id,{renderView:!1,signal:e,readAnnotations:t}),WC(n.id,{signal:e,readAnnotations:t})]))).every(Boolean)&&!e.aborted&&!X(i)},t=r?await e(W_()):await PU({hydrate:e});if(X(i))return!1;if(!t)return await mW({history:!1}),xx(`Could not load report annotations. Open the team or report again to retry.`),!1}if(c){if(P.currentView=`links`,P.currentLinks={name:c.filename,groups:c.data.links,skipped:0,...r?{managedId:t}:{}},!await YU(i))return!1}else if(u.length===0)kX();else if(y_(Yg()),!await YU(i))return!1;return PU(),await $(),!0}async function uW(e){if(F())return;P.currentManagedTeam=null,P.currentManagedReport=null,P.managedReport=null,P.managedReports=[],P.managedComments.clear(),P.managedIssues.clear();let t=L().find(t=>t.id===e);if(!t)return;let n=G_();ZU(new Set([e])),P.currentView!==`findings`&&P.currentView!==`files`&&(P.currentView=`findings`),zr(`workspace`,e),P.reports=[],Ug(),P.workspaceMerges=[],P.revalidateConflicts=new Map,P.currentFile=null,P.currentWorkspace=e,P.currentReportWorkspace=null,P.currentLinks=null,P.repoUrl=``,P.repoEditing=!1,XU(),Ha(KU,`ws:${e}`).catch(()=>{}),t.reports.length===0&&QU();let r=await Sm(t);if(X(n))return;let i=!0,a=t.reports.map(e=>Bc(e).catch(()=>null)),o=0;for(let e=0;e<t.reports.length;e++){let r=await a[e];if(X(n))return;if(r===null){i=!1;continue}if(!b(r)&&(await _W(t.reports[e],r,n,{renderView:!1})?o++:i=!1,X(n)))return}o===0&&t.reports.length>0&&QU(),i&&xm(t)?.appMode&&(P.showRevalidation=!0,P.upstreamOnly=!1,P.revalidationDetailed=!1,NX());let s=P.reports.slice();UU(t,s,r,{complete:i,isCurrent:()=>!X(n)&&P.currentWorkspace===e&&[`findings`,`files`].includes(P.currentView)});let c=$().catch(e=>console.warn(`workspace sidebar:`,e));if(o>0){if(y_(Yg()),!await YU(n))return}else kX();let l=[`showRevalidation`,`upstreamOnly`,`revalidationDetailed`,`filterConfMin`,`filterConfMax`,`filterRevalidate`,`filterPartial`,`sortBy`,`severityMode`],u=l.map(e=>P[e]);GU(t,s,r,{complete:i,isCurrent:()=>!X(n),onReady:async t=>{!t.appMode||P.currentWorkspace!==e||![`findings`,`files`].includes(P.currentView)||l.some((e,t)=>P[e]!==u[t])||(P.showRevalidation=!0,P.upstreamOnly=!1,P.revalidationDetailed=!1,NX(),y_(Yg()),await YU(n))}}).catch(e=>console.warn(`workspace App metadata:`,e)),B.openSession(e),B.refreshSession(e),Nh(e),await c}async function dW({triage:e=`keep`,deleteFromRemoteWorkspaceIds:t=[]}={}){if(!P.currentFile)return;let n=G_(),r=P.currentFile;Fu(r),ec(r,``);for(let e of t)try{let t=await jh(e,r);if(X(n))return;t&&t.ok===!1&&t.reason!==`not-found`&&console.warn(`Failed to delete '${r}' from workspace ${e} remote: ${t.reason}`)}catch(t){console.warn(`Failed to delete '${r}' from workspace ${e} remote:`,t)}if(await Wc(r),!X(n)&&(await lu(r,null),!X(n))){if(e===`wipe`){try{await Ap()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}if(X(n))return}X(n)||(fW(),await $())}}function fW({forgetLastView:e=!0}={}){mT(),P.currentManagedTeam=null,P.currentManagedReport=null,P.currentFile=null,P.currentWorkspace=null,P.currentReportWorkspace=null,P.currentLinks=null,P.managedReport=null,P.managedReports=[],P.managedComments.clear(),P.managedIssues.clear(),P.selectedBundle=null,P.selectedBundleWorkspace=null,P.scanSelection=null,P.bundleDetails=null,P.bundleDetailsTab=`overview`,P.bundleSourceFile=null,P.bundleSourceFindingIdx=null,P.selectedPackage=null,P.selectedPackageVersion=null,P.packageDetailsTab=`overview`,P.packageSlideTriage=null,P.packageSlideTransient=!1,P.expandedPackages.clear(),P.selectedRepository=null,P.repositoryDetailsTab=`overview`,P.repositorySlideTriage=null,P.repositorySlideTransient=!1,P.filesSelectedFile=null,P.tableSelectedGid=null,P.kanbanPopoverGid=null,P.kanbanExpandedColumn=null,P.focusGid=null,P.activeTabByGroup.clear(),P.reports=[],Ug(),P.workspaceMerges=[],P.revalidateConflicts=new Map,P.repoUrl=``,P.repoEditing=!1,P.shownTriage=null,P.currentView=`findings`,XU(),e&&Ua(KU),QU()}function pW(e){G_(),ZU(new Set),fW(e)}async function mW({history:e=!0}={}){return e&&F()&&U.active?U.navigate({view:`home`}):(G_(),ZU(new Set),fW({forgetLastView:!F()}),await $(),!0)}async function hW({deleteFromRemoteWorkspaceIds:e=[]}={}){if(!P.selectedBundle)return;let t=G_(),n=P.selectedBundle;for(let r of e)try{let e=await Mh(r,n);if(X(t))return;e&&e.ok===!1&&e.reason!==`not-found`&&console.warn(`Failed to delete bundle from workspace ${r} remote: ${e.reason}`)}catch(e){console.warn(`Failed to delete bundle from workspace ${r} remote:`,e)}if(await sl(n),X(t)||(await fu(n,null),X(t)))return;P.selectedBundle=null,P.selectedBundleWorkspace=null,P.bundleDetails=null,P.bundleSourceFile=null,P.bundleSourceFindingIdx=null;let r=Va(KU);typeof r==`string`&&(r===`b:${n}`||r.startsWith(`b:${n} `))&&Ua(KU),Uf(n),P.bundles=await nl(),!X(t)&&(Z(),await $())}async function gW(e,t=`detach`,{triage:n=`keep`}={}){let r=L().find(t=>t.id===e);if(!r)return;G_();let i=Array.isArray(r.reports)?[...r.reports]:[];if(B.closeSession(e),Ph(e),t===`delete`){for(let e of i){try{await Wc(e)}catch{}Fu(e),ec(e,``)}if(n===`wipe`)try{await Ap()}catch(e){console.warn(`Skipped orphan-triage GC:`,e)}}let a=P.currentWorkspace===e,o=t===`delete`&&P.currentFile!=null&&i.includes(P.currentFile);(a||o)&&fW(),await eu(e),await $()}async function _W(e,t,n=null,{renderView:r=!0,managedReportId:i=null,managedRepo:a=null}={}){let o=()=>n!==null&&X(n);try{if(await Promise.all([zr(`report`,e),zr(`workspace`,P.currentWorkspace||P.currentReportWorkspace)]),o()||(await kd(),o()))return;let{data:s,reason:c}=i===null?F()?te(t,e):Si(t):{data:structuredClone(t),reason:null};if(!s)throw Error(c);let l=P.reports.length===0,u=bi(s)??[],d=u.flatMap(fg);if(await wi(d),o())return;let f=new Set(d.filter(er).map(e=>e.source??s.source??null)),p=a??s?.repo,m=gi({repo:p}),h=m??(i==null?Xs(e):``),g=_i(p),_=Rr([{groups:u.map(fg),tree:s.tree}]),v=[];for(let t of u){let n=fg(t);if(n.length===0)continue;let r=[];for(let t of n){let n={...t,_id:P.nextFindingId++,_repoFallback:h,_repoDirectory:g,_reportName:e,_depsDirectory:_,_managedReportId:i,_bundleHashes:s.bundleHashes??[]};hi(n,s),n._source=n.source??s.source??null,`isApp`in n||(n.isApp=Li(n,n._source)),n._sourcePass=f.has(n._source),n._analyzer=n._source??n.type??null,r.push(n)}v.push(r)}return yi(v),P.reports.push({type:s.type||`analysis`,source:s.source??null,fileName:e,_managedReportId:i,groups:v,repo:m,tree:s.tree??null,bundleHashes:s.bundleHashes??[]}),Nr(P.reports),Lr(P.reports)&&Ug(),P.revalidateConflicts=qg(),NX(),l&&(o_(),y_(Yg())),r&&await YU(n),!0}catch(t){alert(`Failed to parse ${e}: ${t.message}`)}}window.__loadFile=(e,t)=>_W(e,t),window.__setFilters=({severities:e,confMin:t}={})=>{e!=null&&(P.filterSeverities=new Set(e)),t!==void 0&&(P.filterConfMin=t),Z()},document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`report-fullscreen`)&&document.body.classList.remove(`report-fullscreen`)}),document.addEventListener(`dragover`,e=>e.preventDefault()),document.addEventListener(`drop`,e=>{e.preventDefault(),!e.target.closest(`#drop-zone`)&&aW(e.dataTransfer.files)}),Gm.addEventListener(`dragover`,e=>{e.preventDefault(),F()||Gm.classList.add(`hover`)}),Gm.addEventListener(`dragleave`,()=>Gm.classList.remove(`hover`)),Gm.addEventListener(`drop`,e=>{e.preventDefault(),Gm.classList.remove(`hover`),aW(e.dataTransfer.files)});var vW=null;function yW(){F()||(vW||(vW=document.createElement(`input`),vW.type=`file`,vW.multiple=!0,vW.hidden=!0,vW.addEventListener(`change`,()=>{let e=[...vW.files];e.length>0&&aW(e),vW.value=``}),document.body.append(vW)),vW.click())}Gm.addEventListener(`click`,e=>{let t=e.target.closest(`[data-managed-page]`);if(t){X$(t.dataset.managedPage);return}if(e.target.closest(`[data-managed-login]`)){tx(P.managed?.loginPath);return}let n=e.target.closest(`[data-managed-team]`);if(n){let e=P.managedTeams.find(e=>e.id===n.dataset.managedTeam);e&&lW(e);return}let r=e.target.closest(`[data-landing-workspace]`);if(r){uW(r.dataset.landingWorkspace);return}e.target.closest(`.drop-prompt-action`)&&yW()});function bW({hostname:e,devServer:t,serverMode:n,localMode:r,deepviewScanServer:i}){return n===`managed`&&!r?null:n===`e2e`?nn(i):nn(t)??(e===`127.0.0.1`?tn:null)}function xW(){return bW({hostname:window.location.hostname,devServer:document.querySelector(`meta[name="deepview-scan-server"]`)?.content,serverMode:P.serverMode,localMode:P.localMode,deepviewScanServer:P.deepviewScanServer})}function SW(e){return F()?!!e.managedId&&[`admin`,`manage`].includes(P.managedSession?.role):!e.managedId&&!!xW()}async function CW(e=null,{mode:t}={}){let n=P.selectedBundleWorkspace,r=H();if(await Q$(),r!==H()||e&&!SW(e))return;if(F()){e&&await X$(`manage-scans`,{bundleId:e.managedId,...t?{scanMode:t}:{}});return}if(!xW())return;let i=await mt().then(()=>!0,()=>!1);if(!xW()||r!==H())return;if(!i){xx(`Couldn’t load Scans. Try again.`,{kind:`warning`});return}let a=mW(),o=H();await a,xW()&&o===H()&&(P.scanSelection=e?{bundleId:e.integrity,...n?{repoId:n}:{},...t?{mode:t}:{}}:null,P.currentView=`scan`,Z(),$())}function wW(){let e=document.querySelector(`#drop-zone`);if(!e)return;let t=e.querySelector(`.local-scan-button`);t||(t=document.createElement(`button`),t.type=`button`,t.className=`local-scan-button`,t.innerHTML=rr(`${na}<span>Scan</span>`),t.addEventListener(`click`,()=>{CW()}),e.append(t));let n=xW();t.hidden=!n,document.querySelector(`local-scan-page`)?.setScanServer(n);let r=document.querySelector(`.bundles-scan-button`),i=P.bundles?.find(e=>e.integrity===P.selectedBundle);r&&(r.hidden=!i||!SW(i))}var TW=ft(`./compare.js`),EW=!1,DW=null;async function OW(){EW=!0;try{await TW.load()}catch(e){DW=String(e?.message??e)}EW=!1,Z()}function kW(e){return TW.module?e():DW?k`<div class="bundles-slide-placeholder is-error">Couldn’t load: ${DW} <button type="button" @click="${()=>{DW=null,Z()}}">Retry</button></div>`:(EW||OW(),k`<div class="bundles-slide-placeholder">Loading…</div>`)}var AW=`@preventive/triage`;function jW(e,t){let n=e.toLowerCase(),r=``,i=n;if(n.startsWith(`@`)){let e=n.indexOf(`/`);e>0&&(r=n.slice(0,e),i=n.slice(e+1))}return`pkg:npm/${r?`${encodeURIComponent(r)}/`:``}${encodeURIComponent(i)}@${encodeURIComponent(t)}`}function MW(e){let t=/^(.*?)\.stasis\.(?:code|resources)\.br$/u.exec(e);return t?t[1]:e.replace(/\.[^.]+$/u,``)||e}function NW(e){let t=[];if(e?.kind!==`stasis`||!e.bundle?.modules)return t;let n=new Map;for(let[r,i]of e.bundle.modules){if(!i?.name||typeof i.version!=`string`||!i.version)continue;let e=`${i.name}@${i.version}`,a=n.get(e);if(a!==void 0){r===`.`&&(t[a].dir=`.`);continue}n.set(e,t.length),t.push({name:i.name,version:i.version,dir:r})}return t}function PW(e){if(e?.kind!==`stasis`||!e.bundle?.modules)return!1;for(let[,t]of e.bundle.modules)if(t?.name&&typeof t.version==`string`&&t.version)return!0;return!1}function FW(e,t){let n=e.find(e=>e.dir===`.`)??null,r=n?e.filter(e=>e!==n):e;return{root:n?{name:n.name,version:n.version,purl:jW(n.name,n.version)}:{name:MW(t?.name??`bundle`),version:null,purl:null},rest:r}}function IW(e){return e??globalThis.crypto.randomUUID()}function LW(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=FW(NW(e),t),o={type:`application`,"bom-ref":i.purl??`application:${i.name}`,name:i.name};i.version&&(o.version=i.version),i.purl&&(o.purl=i.purl);let s={bomFormat:`CycloneDX`,specVersion:`1.5`,serialNumber:`urn:uuid:${IW(r)}`,version:1,metadata:{timestamp:n.toISOString(),tools:{components:[{type:`application`,name:AW}]},component:o},components:a.map(e=>{let t=jW(e.name,e.version);return{type:`library`,"bom-ref":t,name:e.name,version:e.version,purl:t}})};return`${JSON.stringify(s,null,2)}
181
+ `}function RW(e){return{referenceCategory:`PACKAGE-MANAGER`,referenceType:`purl`,referenceLocator:e}}function zW(e,t,{now:n=new Date,uuid:r}={}){let{root:i,rest:a}=FW(NW(e),t),o=MW(t?.name??`bundle`),s=n.toISOString().replace(/\.\d{3}Z$/u,`Z`),c=(e,t,n,r)=>{let i={SPDXID:e,name:t,downloadLocation:`NOASSERTION`,filesAnalyzed:!1,licenseConcluded:`NOASSERTION`,licenseDeclared:`NOASSERTION`,copyrightText:`NOASSERTION`};return n&&(i.versionInfo=n),r&&(i.externalRefs=[RW(r)]),i},l=`SPDXRef-Package-root`,u=[c(l,i.name,i.version,i.purl)],d=[{spdxElementId:`SPDXRef-DOCUMENT`,relationshipType:`DESCRIBES`,relatedSpdxElement:l}];a.forEach((e,t)=>{let n=`SPDXRef-Package-${t+1}`;u.push(c(n,e.name,e.version,jW(e.name,e.version))),d.push({spdxElementId:l,relationshipType:`DEPENDS_ON`,relatedSpdxElement:n})});let f={spdxVersion:`SPDX-2.3`,dataLicense:`CC0-1.0`,SPDXID:`SPDXRef-DOCUMENT`,name:o,documentNamespace:`https://spdx.org/spdxdocs/${encodeURIComponent(o)}-${IW(r)}`,creationInfo:{created:s,creators:[`Tool: ${AW}`]},packages:u,relationships:d};return`${JSON.stringify(f,null,2)}
182
+ `}function BW(e,t){let n=t?`gu`:`giu`,r=t?`g`:`gi`;try{return{re:new RegExp(e,n)}}catch{try{return{re:new RegExp(e,r)}}catch(e){return{error:e.message}}}}function VW(e,t,n){if(t){let t=BW(e,n);if(t.error)return{error:t.error};let{re:r}=t;return{ranges(e){r.lastIndex=0;let t=[],n;for(;(n=r.exec(e))!==null;){if(n[0].length===0){r.lastIndex++;continue}if(t.push([n.index,n.index+n[0].length]),t.length>=50)break}return t}}}let r=n?e:e.toLowerCase(),i=r.length;return{ranges(e){let t=n?e:e.toLowerCase(),a=[],o=0,s;for(;(s=t.indexOf(r,o))!==-1&&(a.push([s,s+i]),o=s+i,!(a.length>=50)););return a}}}function HW(e,t,n){let r=[],i=0,a=!1;for(let o of n){let n=e.get(o);if(typeof n!=`string`)continue;let s=n.split(`
183
+ `),c=[];for(let e=0;e<s.length;e++){let n=t.ranges(s[e]);if(n.length!==0&&(c.push({ln:e+1,ranges:n}),i++,i>=5e3)){a=!0;break}}if(c.length>0&&r.push({path:o,lines:s,hits:c}),a)break;if(r.length>=500){a=!0;break}}return{fileResults:r,totalHits:i,truncated:a}}function UW(e,t){let n=[],r=0;for(let{path:i,lines:a,hits:o}of e.fileResults){let e=[];for(let{ln:n}of o){let i=t.ranges(a[n-1]);i.length!==0&&(e.push({ln:n,ranges:i}),r++)}e.length>0&&n.push({path:i,lines:a,hits:e})}return{fileResults:n,totalHits:r,truncated:!1}}var WW={tag:null,useRegex:!1,caseSensitive:!1,entries:[]};function GW(e,t,n,r,i,a=null){if(!n)return{fileResults:[],totalHits:0,truncated:!1};let o=VW(n,r,i);if(o.error)return{error:o.error};(WW.tag!==e||WW.useRegex!==r||WW.caseSensitive!==i)&&(WW.tag=e,WW.useRegex=r,WW.caseSensitive=i,WW.entries.length=0);let s=r||i?e=>e:e=>e.toLowerCase(),c=s(n),l=null,u=-1;for(let e=0;e<WW.entries.length;e++){let t=WW.entries[e],n=s(t.query);if(n===c)return WW.entries.splice(e,1),WW.entries.unshift(t),t.result;r||t.result.truncated||n.length<=u||!c.includes(n)||(l=t.result,u=n.length)}let d=l?UW(l,o):HW(t,o,a??[...t.keys()].toSorted());return WW.entries.unshift({query:n,result:d}),WW.entries.length>8&&WW.entries.pop(),d}var KW=200,qW=28,JW=12;function YW(e,t){let n=t.length>0?t[0][0]:0;return ZW(e,t,n-(e.length-e.trimStart().length)>qW?n-JW:0,KW)}function XW(e,t){let n=YW(e,t);return k`${n.clipped?k`<span class="bundle-search-clip">…</span>`:j}${QW(n.text,n.ranges)}`}function ZW(e,t,n,r){let i=e.slice(n,n+r);if(n===0)return{text:i,ranges:t,clipped:!1};let a=[];for(let[e,r]of t){let t=e-n,o=r-n;o<=0||t>=i.length||a.push([Math.max(0,t),Math.min(i.length,o)])}return{text:i,ranges:a,clipped:!0}}function QW(e,t){if(t.length===0)return e;let n=[],r=0;for(let[i,a]of t){let t=Math.max(r,Math.min(i,e.length)),o=Math.max(t,Math.min(a,e.length));o<=t||(t>r&&n.push(e.slice(r,t)),n.push(k`<mark class="bundle-search-mark">${e.slice(t,o)}</mark>`),r=o)}return r<e.length&&n.push(e.slice(r)),n}function $W(e,t){let n=new Map(e.map(e=>[e,[...t.get(e)].map(([n,r])=>{let i=t.get(e),a=t.get(n),o=i.size<a.size?i:a,s=0,c=0;for(let e of o.keys())if(i.has(e)&&a.has(e)&&s++,++c===32)break;return{to:n,score:r*2+s}}).toSorted((e,n)=>n.score-e.score||t.get(e.to).size-t.get(n.to).size||e.to.localeCompare(n.to))])),r=[],i=new Set;for(let t of e){let e=[t];for(;e.length>0;){let t=e.pop();if(!i.has(t)){i.add(t),r.push(t);for(let{to:r}of n.get(t).toReversed())i.has(r)||e.push(r)}}}return r}function eG(e,t,n){let r=e.toSorted(),i=new Set(r),a=new Map,o=new Map(r.map(e=>[e,new Map]));for(let e of r){a.set(e,new Map);for(let n of t.get(e)??[])e===n||!i.has(n)||(a.get(e).set(n,{to:n,count:1}),o.get(e).set(n,(o.get(e).get(n)??0)+1),o.get(n).set(e,(o.get(n).get(e)??0)+1))}let s=kr(r,a),c=r.map((e,t)=>({col:t%n,row:Math.floor(t/n)})),l=c.map(({col:e,row:t})=>({col:t%2?n-e-1:e,row:t})),u=(e,t)=>Math.abs(e.col-t.col)+Math.abs(e.row-t.row),d=e=>r.reduce((t,n)=>t+[...o.get(n)].reduce((t,[r,i])=>t+i*u(e.get(n),e.get(r)),0),0),f=new Map(r.map((e,t)=>[e,c[t]])),p=d(f);for(let e of[s,$W(r,o)])for(let t of[c,l]){let n=new Map(e.map((e,n)=>[e,t[n]])),r=d(n);r<p&&(f=n,p=r)}let m=({col:e,row:t})=>`${e},${t}`,h=new Map([...f].map(([e,t])=>[m(t),e])),g=(e,t,n,r)=>{let i=0;for(let[a,s]of o.get(e))i+=s*u(t,a===n?r:f.get(a));return i};for(let e=0;e<8;e++){let e=!1;for(let t of r){let n=f.get(t),r=o.get(t),i=0,a=0,s=0;for(let[e,t]of r)i+=f.get(e).col*t,a+=f.get(e).row*t,s+=t;if(!s)continue;let c=new Set;for(let e of[n,{col:Math.round(i/s),row:Math.round(a/s)}])for(let n=-1;n<=1;n++)for(let r=-1;r<=1;r++){let i=h.get(`${e.col+n},${e.row+r}`);i!==void 0&&i!==t&&c.add(i)}let l=0,u=null;for(let e of c){let r=f.get(e),i=g(t,r,e,n)+g(e,n,t,r)-g(t,n,e,r)-g(e,r,t,n);i<l&&(l=i,u=e)}if(u!==null){let r=f.get(u);f.set(t,r),f.set(u,n),h.set(m(r),t),h.set(m(n),u),e=!0}}if(!e)break}return r.map(e=>({id:e,...f.get(e)})).toSorted((e,t)=>e.row-t.row||e.col-t.col)}var tG=216,nG=48,rG=32,iG=20,aG=24,oG=20,sG=10;function cG(e,t){let n=e=>e&&(e.collapsed||e.members.length===1),r=e.map((t,r)=>e.length>5&&n(t)&&n(e[r+1])),i=0,a=0;e.forEach((t,n)=>{r[n]?a+=t.width:i+=t.width+(n===e.length-1?0:iG)});let o=Math.min(t,tG*5+iG*4),s=a?Math.max(.3,Math.min(.9,(o-i)/a)):1,c=0;return{groups:e.map((t,n)=>{let i=t.width*(r[n]?s:1),a={...t,x:c,visibleWidth:i,stacked:!!(r[n]||r[n-1])};return c+=i+(r[n]||n===e.length-1?0:iG),a}),width:c,height:Math.max(...e.map(e=>e.height))}}function lG(e){let t=`M${e[0].join(`,`)}`;for(let n=1;n<e.length-1;n++){let[r,i]=e[n],[a,o]=e[n-1],[s,c]=e[n+1],l=Math.hypot(s-r,c-i),u=Math.hypot(r-a,i-o);if(!u||!l)continue;let d=Math.min(6,u/2,l/2);t+=` L${r-(r-a)/u*d},${i-(i-o)/u*d} Q${r},${i} ${r+(s-r)/l*d},${i+(c-i)/l*d}`}return`${t} L${e.at(-1).join(`,`)}`}var uG=({count:e,index:t})=>(t-(e-1)/2)*Math.min(8,48/Math.max(1,e-1));function dG(e,t,n,r){let i=e.packages.find(e=>e.id===t),a=uG(r),o=n?e.y-12:e.rowBottom;if(e.members.length===1||e.collapsed){let t=e.x+e.visibleWidth/2+a;return[[t,n?e.y-5:e.y+e.height],[t,o]]}let s=e.x+i.x+(n?0:tG),c=e.y+i.y+nG/2+a/2,l=s+(n?-7-r.lane*6:3+r.lane*6);return[[s+(n?-4:0),c],[l,c],[l,o]]}function fG(e,t){let n=(t,n)=>{let r=e.get(t[n]),i=r.packages.find(e=>e.id===t[`${n}Package`]);return r.members.length===1||r.collapsed?[r.x+r.visibleWidth/2,r.y+r.height/2]:i?[r.x+i.x+tG/2,r.y+i.y+nG/2]:[r.x+r.width/2,r.y+r.height/2]},r=(r,i,a=e=>n(e,i))=>{let o=new Map,s=Map.groupBy(t,t=>{let n=e.get(t[r]);return n.collapsed?n:t[`${r}Package`]});for(let e of s.values())e.toSorted((e,t)=>{let[n,o]=a(e),[s,c]=a(t);return(e.bypassLane??n)-(t.bypassLane??s)||o-c||e[`${i}Package`].localeCompare(t[`${i}Package`])||e[`${r}Package`].localeCompare(t[`${r}Package`])}).forEach((t,n)=>o.set(t,{count:e.length,index:n}));for(let e of Map.groupBy(t,e=>e[r]).values())e.toSorted((e,t)=>{let[i,a]=n(e,r),[s,c]=n(t,r);return i-s||a-c||uG(o.get(e))-uG(o.get(t))}).forEach((t,n)=>{let i=n/Math.max(1,e.length-1);o.get(t).lane=r===`from`?1-i:i});return o},i=r(`from`,`to`),a=r(`to`,`from`,t=>{let n=dG(e.get(t.from),t.fromPackage,!1,i.get(t));return[n.at(-1)[0],n[0][1]]}),o=t.map(t=>{let n=e.get(t.from),r=e.get(t.to),o=dG(n,t.fromPackage,!1,i.get(t)),s=dG(r,t.toPackage,!0,a.get(t));return{edge:t,end:s,start:o,rowBottom:n.rowBottom,x1:o.at(-1)[0],x2:t.bypassLane??s.at(-1)[0]}});for(let e of Map.groupBy(o,e=>e.rowBottom).values())for(let t of[!0,!1]){let n=e.filter(e=>e.x2<e.x1===t).toSorted((e,n)=>(t?1:-1)*(e.x1-n.x1||e.x2-n.x2));n.forEach((e,t)=>{e.bendY=e.rowBottom+9+12*t/Math.max(1,n.length-1)})}return o.map(({edge:e,end:t,start:n,x1:r,x2:i,bendY:a})=>{let o=[[r,a],[i,a]],{bypassLane:s,...c}=e;return s!==null&&o.push([i,t.at(-1)[1]]),{...c,path:lG([...n,...o,...t.toReversed()])}})}function pG(e,t){let n=Math.sign(t.x-e.x),r=Math.sign(t.y-e.y),i=nG,a=tG;if(r===0&&Math.abs(t.x-e.x)===a+iG){let r=e.y+i/2-n*6;return`M${e.x+(n>0?a:0)},${r} L${t.x+(n>0?-4:a+4)},${r}`}if(n===0&&Math.abs(t.y-e.y)===i+aG){let n=e.x+a/2+r*8;return`M${n},${e.y+(r>0?i:0)} L${n},${t.y+(r>0?-4:i+4)}`}let o=n||r,s=e.x+(o>0?a:0),c=e.y+i/2,l=s+o*(iG/2-3),u=t.x+a/2+o*8,d=r>0||r===0&&n>0,f=t.y+(d?-10:i+10),p=t.y+(d?-4:i+4);return lG([[s,c],[l,c],[l,f],[u,f],[u,p]])}function mG(e,t,n,r=1184,i=!1){if(i)return{id:e,members:t,collapsed:i,packages:[],internalEdges:[],width:tG+sG*2,height:nG};let a=t.length>1,o=Math.max(1,Math.floor((r-sG*2+iG)/(tG+iG))),s=a?Math.min(o,Math.max(2,Math.ceil(Math.sqrt(t.length/2)))):1,c=a?sG:0,l=Math.ceil(t.length/s),u=a?oG:0,d=(a?eG(t,n,s):[{id:t[0],col:0,row:0}]).map(e=>({id:e.id,x:c+e.col*(tG+iG),y:c+u+e.row*(nG+aG)})),f=new Map(d.map(e=>[e.id,e])),p=[];if(a)for(let e of t)for(let t of n.get(e)??[])e!==t&&f.has(t)&&p.push({from:e,to:t,path:pG(f.get(e),f.get(t))});return{id:e,members:t,collapsed:i,packages:d,internalEdges:p,width:s*tG+(s-1)*iG+c*2,height:l*nG+(l-1)*aG+c*2+u}}function hG(e,t={}){let n=t.ecosystem??(/(?:^|\/)node_modules\//u.test(e)?`npm`:``);return{id:e,name:t.name||(e===`.`?`App`:e),ecosystem:n,version:t.version??``,own:e===`.`,root:!1,target:!1}}var gG=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function _G(e,t){let n=e?.bundle?.modules.get(t);if(!t||t===`.`||!n)return null;let r=hG(t,n);return{packageKey:r.ecosystem?gG(r):r.name,packageGroup:Jr(``,{packageDir:t})}}function vG(e,{packageKey:t,packageGroup:n,version:r,reason:i=``}){let a=new Map,o=new Map,s=new Map,c=Gt(e)??new Map,l=new Map([...c.keys()].map(e=>[e,e])),u=At(e).get(i),d=new Map([...l].filter(([e])=>!u||u.has(e)));for(let t of new Set([...d.keys()].map(e=>c.get(e))))s.set(t,hG(t,e.bundle.modules.get(t)));let f=(e,t)=>{e!==t&&(o.has(e)||o.set(e,new Set),a.has(t)||a.set(t,new Set),o.get(e).add(t),a.get(t).add(e))};for(let[t,n]of ue(e))if(d.has(t))for(let e of n){if(!d.has(e))continue;let n=c.get(t),r=c.get(e);if(jr(t,e,r===`.`,n===`.`))f(n,r);else if(n!==r){let e=s.get(r);e.excludedImporters??=new Set,e.excludedImporters.add(n)}}let{roots:p,appImports:m}=me(e,d,e=>c.get(e),c,l);m.length>0&&!s.has(`.`)&&s.set(`.`,hG(`.`));for(let e of m)f(`.`,e);for(let[e,t]of s){if(!(t.own||t.ecosystem===`npm`&&(t.name===`@babel/core`||t.name===`react-native`&&o.get(`.`)?.has(e))))continue;t.traceBoundary=!0;let n=a.get(e);for(let t of n??[])t!==`.`&&(n.delete(t),o.get(t).delete(e))}for(let e of p){let t=s.get(e===`__own__`?`.`:e);t&&(t.root=!0)}let h=[];for(let e of s.values()){let i=gG(e),a=n===void 0?e.ecosystem===`github`?i.toLowerCase()===t.toLowerCase():i===t:Jr(``,{packageDir:e.id})===n,o=e.ecosystem===`github`&&e.version===`.`?`0.0.0`:e.version;!e.own&&a&&(r===void 0||o===r)&&(e.target=!0,h.push(e.id))}let g=new Set(h),_=[...h];for(let e=0;e<_.length;e++)for(let t of a.get(_[e])??[])g.has(t)||(g.add(t),_.push(t));let v=e=>new Map([...g].map(t=>[t,new Set([...e.get(t)??[]].filter(e=>g.has(e)))]));return{nodes:new Map([...s].filter(([e])=>g.has(e))),imports:v(o),importedBy:v(a),targets:h}}function yG(e,{maxWidth:t=1280,expandedCycles:n=new Set}={}){let r=[...e.nodes.keys()].toSorted(),{groups:i,componentOf:a}=Pr(r,e.imports),o=i.map(()=>new Set),s=[];for(let[t,n]of e.imports){let e=a.get(t);for(let r of n){let n=a.get(r);e!==n&&(o[e].add(n),s.push({from:e,to:n,fromPackage:t,toPackage:r}))}}let c=i.map(()=>0),l=i.map(()=>0);for(let e of o)for(let t of e)l[t]++;let u=i.flatMap((e,t)=>l[t]===0?[t]:[]);for(let e=0;e<u.length;e++){let t=u[e];for(let e of o[t])c[e]=Math.max(c[e],c[t]+1),--l[e]===0&&u.push(e)}let d=o.some((e,t)=>[...e].some(e=>c[e]!==c[t]+1)),f=t-rG-24-(d?56:0),p=[...Map.groupBy(i.map((t,r)=>{let i=t.length>10;return{...mG(r,t,e.imports,f,i&&!n.has(r)),collapsible:i}}),e=>c[e.id])].toSorted(([e],[t])=>e-t).map(([,e])=>cG(e,f)),m=p.reduce((e,t)=>Math.max(e,t.width+24),240),h=new Map,g=12;for(let{groups:e,width:t,height:n}of p){for(let r of e)h.set(r.id,{...r,x:r.x+(m-t)/2,y:g,rowBottom:g+n});g+=n+36}let _=0,v=fG(h,s.map(e=>{let t=c[e.to]===c[e.from]+1?null:m+8+_++%4*10;return{...e,bypassLane:t}}));return{boxes:[...h.values()],componentOf:a,edges:v,width:m+(_?56:0),height:Math.max(0,g-24)}}function bG(e,t){if(t===null)return null;let n=new Set,r=new Set([t]);for(let i of[!1,!0]){let a=new Map,o=[t],s=new Set([t]);for(let t of e.edges){let e=i?t.to:t.from,n=i?t.from:t.to;a.has(e)||a.set(e,[]),a.get(e).push(n)}for(let e=0;e<o.length;e++)for(let t of a.get(o[e])??[])s.has(t)||(s.add(t),r.add(t),o.push(t));for(let t of e.edges)s.has(t.from)&&s.has(t.to)&&n.add(t)}return{groups:r,edges:n}}var xG=new Map,SG=new Map,CG=[];function wG(e){if(!e?.managedId)return xG;let t=P.managedSession,n=P.managedTeams&&js(P.managedTeams),r=[t?.id,t?.role,t?.csrfToken,P.currentManagedTeam,n];return r.some((e,t)=>e!==CG[t])&&(CG=r,SG=new Map),SG}var TG=new WeakMap;function EG(e){return TG.has(e)||TG.set(e,{reasons:At(e),selected:``}),TG.get(e)}function DG(e,t=EG(e).selected){return JSON.stringify([e.managedId??e.integrity,t])}var OG=`deepview.advisories.proxyConsent`;function kG(){try{return localStorage.getItem(OG)===`1`}catch{return!1}}function AG(){try{localStorage.setItem(OG,`1`)}catch{}}function jG(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t.includes(`node_modules`)&&n?.name&&typeof n.version==`string`&&n.version)return!0;return!1}function MG(e){if(!e||e.kind!==`stasis`||!e.bundle)return!1;for(let[t,n]of e.bundle.modules)if(t!==`.`&&typeof n?.name==`string`&&n.name&&typeof n.version==`string`&&n.version&&(n.ecosystem||/(?:^|\/)node_modules\//u.test(t)))return!0;return!1}function NG(e){if(e.bundle&&!MG(e))return!0;let t=wG(e).get(DG(e,``));return t?.state===`ok`&&t.query.size===0&&t.skipped.length===0}function PG(e,t,n=!1){return!e||e.managedId&&!IG(e)||FG(e,t)<1||e.summary?.versionedPackages===0?!1:n?!0:eW(e.name)===`stasis`?!t||t.integrity!==e.integrity?!0:e.managedId?!t.bundle||MG(t):jG(t):!1}function FG(e,t){let n=t?.integrity===e.integrity&&t.bundle?t.bundle.version:e.summary?.stasisVersion;return Number.isSafeInteger(n)?n:1/0}function IG(e){let t=P.managedSession?.role;return[`admin`,`manage`].includes(t)?!0:[`view`,`triage`].includes(t)?P.managedTeams.some(t=>(P.currentManagedTeam==null||t.id===P.currentManagedTeam)&&t.permissions?.security===!0&&t.bundles?.some(t=>t.id===e.managedId)):!1}function LG(e){return Object.fromEntries([...e].map(([e,t])=>[e,[...t].toSorted()]))}var RG=e=>e.ecosystem===`npm`?e.name:`${e.ecosystem}:${e.name}`;function zG(e){return{...e,title:e.title||e.id,severity:e.severity??`unknown`,cvss:{score:e.cvss,vectorString:e.cvssVector},vulnerable_versions:e.range}}function BG(e){let t=Array.isArray(e),n=t?Map.groupBy(e.map(zG),RG):new Map(Object.entries(e??{}));for(let[e,r]of n){let i=Array.isArray(r)?r.filter(e=>e&&typeof e.title==`string`&&typeof e.severity==`string`):[];i.length>0?n.set(e,t?i:i.map(e=>({...e,source:`registry`}))):n.delete(e)}return n}function VG(e,t){return!!(e?.managedId&&t?.state===`ok`&&!t.recheckingRepositories&&t.query.size>0)}async function HG(e){let t=await fetch(`/api/npm-advisories`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(LG(e))});if(!t.ok){let e=`HTTP ${t.status}`;try{let n=await t.json();typeof n?.error==`string`&&n.error&&(e=`${n.error} (HTTP ${t.status})`)}catch{}throw Error(e)}return t.json()}function UG(e,t){return GG(e,t)}function WG(e,t){return GG(e,t,!0)}async function GG(e,t,n=!1){if(!e?.integrity||!e.managedId&&!kG())return;let r=wG(e),i=DG(e),a=r.get(i);if(n){if(!VG(e,a))return;r.set(i,{...a,recheckingRepositories:!0,repositoryError:null}),t()}else if(a)return;let{reasons:o,selected:s}=EG(e),c=e.managedId?new Map:Kt(e,o.get(s)??null);n||r.set(i,{state:`loading`,query:c});try{let t,a=[];if(e.managedId){let r=await dx(e.managedId,void 0,s,n,n);c=Array.isArray(r.packages)?new Map(r.packages.map(e=>[RG(e),new Set(e.versions)])):new Map(Object.entries(r.packages).map(([e,t])=>[e,new Set(t)])),t=r.advisories,a=Array.isArray(r.skipped)?r.skipped:[]}else t=c.size>0?await HG(c):{};r.set(i,{state:`ok`,byPackage:BG(t),query:c,skipped:a})}catch(e){let t=e?.message??`fetch-failed`;r.set(i,n&&![401,403,404].includes(e?.status)?{...a,recheckingRepositories:!1,repositoryError:t}:{state:`error`,reason:t,query:c})}t()}async function KG(e,t){if(!e?.integrity)return;let n=wG(e),r=DG(e);n.get(r)?.state===`error`&&(n.delete(r),await UG(e,t))}var qG={critical:0,high:1,moderate:2,low:3,info:4};function JG(e){return qG[e]??999}function YG(){let e=typeof window>`u`?``:window.location.host;return k`<div class="bundle-advisories-consent"><div class="bundle-advisories-consent-card"><p class="bundle-advisories-consent-text">This bundle's dependency names and versions will be sent to the npm registry through a same-origin proxy (<span class="mono">${e}</span> → <span class="mono">registry.npmjs.org</span>) to look up published security advisories.</p><button type="button" class="bundle-advisories-consent-btn" data-advisories-consent>Confirm</button><p class="bundle-advisories-consent-note">This preference will be saved and reused for other bundles.</p></div></div>`}function XG(e,t=()=>{},n=null){let r=e?EG(e):null,i=[...r?.reasons.keys()??[]].map(e=>({id:`reason:${e}`,label:e})),a=QG(e),o=!!e?.managedId&&!NG(e);return k`<div class="bundle-advisories-panel">${a!==j||i.length>0||o?k`<div class="bundle-advisories-toolbar">${a} ${i.length>0||o?k`<div class="bundle-advisories-scopes">${i.length>0?k`<bundle-scope-selector .reasons="${i}" .value="${r.selected?`reason:${r.selected}`:``}" label="Choose advisory scope" @scope-change="${n=>{let i=n.detail.value.replace(/^reason:/u,``);r.selected=r.reasons.has(i)?i:``;let a=UG(e,t);return t(),a}}"></bundle-scope-selector>`:j} ${o?ZG(e,t):j} ${o&&n?k`<button type="button" class="bundle-advisories-retry bundle-advisories-scan" @click="${n}">${O(na)}<span>Validate</span></button>`:j}</div>`:j}</div>`:j} ${eK(e)}</div>`}function ZG(e,t){if(!e?.managedId)return j;let n=wG(e).get(DG(e)),r=!!n?.recheckingRepositories;return k`<button type="button" class="bundle-advisories-retry bundle-advisories-recheck" ?disabled="${!VG(e,n)}" aria-busy="${String(r)}" @click="${()=>WG(e,t)}">${r?`Rechecking…`:`Recheck against repositories`}</button>`}function QG(e){if(!e||!e.managedId&&!kG())return j;let t=wG(e).get(DG(e));if(t?.state!==`ok`)return j;let n=t.query.size,r=t.byPackage.size;if(r===0)return j;let i=[...t.byPackage.values()].reduce((e,t)=>e+t.length,0);return k`<div class="bundle-advisories-summary">${i} ${i===1?`advisory`:`advisories`} across ${r} of ${n} ${n===1?`package`:`packages`}</div>`}function $G(e,t){let n=t.query.size;return n===0&&t.skipped.length>0?k`No packages could be audited.`:k`No advisories for the ${n} ${t.skipped.length>0?`audited `:``}${n===1?`package`:`packages`} in ${EG(e).selected?`this scope`:`this bundle`}.`}function eK(e){if(!e)return k`<div class="bundle-advisories-empty">Bundle not loaded yet.</div>`;if(e.kind!==`stasis`||!e.managedId&&!e.bundle)return k`<div class="bundle-advisories-empty">Advisories are only available for stasis bundles.</div>`;if(!e.managedId&&!kG())return YG();let t=wG(e).get(DG(e));if(!t||t.state===`loading`)return k`<div class="bundle-advisories-empty">Loading advisories…</div>`;if(t.state===`error`)return k`<div class="bundle-advisories-empty is-error"><span>Failed to fetch advisories: ${t.reason}</span> <button type="button" class="bundle-advisories-retry" data-advisories-retry>Retry</button></div>`;let n=t.byPackage.size===0?k`<div class="bundle-advisories-empty"><span>${$G(e,t)}</span></div>`:j;if(t.byPackage.size===0&&t.skipped.length===0&&!t.repositoryError)return n;let r=[...t.byPackage.entries()].toSorted(([e,t],[n,r])=>{let i=Math.min(...t.map(e=>JG(e.severity))),a=Math.min(...r.map(e=>JG(e.severity)));return i===a?e.localeCompare(n):i-a});return k`${n}<div class="bundle-advisories">${t.repositoryError?k`<div class="bundle-advisories-empty is-error" role="alert">Repository recheck failed: ${t.repositoryError}. Previous results are shown.</div>`:j} ${t.skipped.length>0?k`<section class="bundle-advisories-skipped" aria-label="Dependencies not audited"><h3>Not audited</h3><ul>${t.skipped.map(e=>k`<li><span class="mono">${RG(e)}@${e.version}</span>: ${e.because}</li>`)}</ul></section>`:j}<ul class="bundle-advisories-list">${r.map(([n,r])=>tK(e,n,r,t.query.get(n),()=>wG(e).get(DG(e))?.byPackage===t.byPackage))}</ul></div>`}function tK(e,t,n,r,i){let a=[...n].toSorted((e,t)=>{let n=JG(e.severity)-JG(t.severity);return n===0?(e.title??``).localeCompare(t.title??``):n}),o=r?[...r].toSorted():[];return k`<li class="bundle-advisories-section"><div class="bundle-advisories-package"><span class="bundle-advisories-section-name">${t}</span> ${o.length>0?k`<span class="bundle-advisories-section-versions">${o.map(n=>k`<button type="button" class="bundle-advisories-version" aria-haspopup="dialog" aria-label="${`Why is ${t}@${n} here?`}" @click="${()=>lt({details:e,packageKey:t,version:n,reason:EG(e).selected,isCurrent:i})}">${n}</button>`)}</span>`:j}</div><ul class="bundle-advisories-rows">${a.map(e=>sB(e,({title:e,severity:t,details:n})=>ge({heading:e,severity:t,markdown:n,isCurrent:i})))}</ul></li>`}var nK=e=>F()?[]:xf(e),rK=()=>F()?0:Sf(),iK=null,aK=new WeakMap;function oK(e){if(aK.has(e))return aK.get(e);let t=Wt(e),n=ue(e),r=[...t.keys()],{stripped:i}=kn(r),a=new Map(r.map((e,t)=>[e,i[t]])),o={};for(let e of r){let r=a.get(e),i=n.get(e);o[r]={imports:i?[...i].map(e=>a.get(e)).filter(Boolean):[],size:t.get(e)}}let s={tree:o,origToStripped:a};return aK.set(e,s),s}function sK(e,t=null){let n={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0};if(!e?.fileHashes)return n;let r=new Set;for(let[i,a]of e.fileHashes)if((!t||t.has(i))&&!r.has(a)){r.add(a);for(let e of nK(a)){let t=s(e,P.triage.get(C(e)));t&&n[t]!==void 0&&n[t]++}}return n}function cK(e,t=`graph`){if(!e||e.size===0)return new Map;let n=new Map;for(let[r,i]of e){let e=nK(i);if(e.length===0)continue;let a=e.filter(e=>{let n=s(e,P.triage.get(C(e)))??null;return t===`issues`?n!==`invalid`&&n!==`deleted`:n===P.shownTriage});a.length!==0&&n.set(r,a)}return n}function lK(e){let t=oK(e),n=At(e,t.origToStripped.keys());w.bundleReasonFor!==e.integrity&&(w.bundleReasonFor=e.integrity,w.dependencyPackagesView=!1,w.bundleReason=null);let{tree:r,origToStripped:i,selected:a}=ce(t.tree,t.origToStripped,n,w.bundleReason);w.bundleReason=a;let o=Object.keys(r);if(o.length===0)return null;let s=null;if(e.fileHashes&&e.fileHashes.size>0){s=new Map;for(let[t,n]of e.fileHashes){let e=i.get(t);e!==void 0&&s.set(e,n)}}let c=cK(s),l=c.size>0||[...e.fileHashes??[]].some(([e,n])=>t.origToStripped.has(e)&&nK(n).length>0),u=l&&w.bundleIssues,d=new Map,f=new Map,p=new Map,m=new Map;for(let[e,t]of u?c:[]){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},r=new Set,i=new Set,a=[];for(let e of t){n[e.severity]=(n[e.severity]||0)+1,r.add(e.severity);let t=P.triage.get(C(e))?.color??`none`;i.add(t),a.push({severity:e.severity,color:t})}d.set(e,n),f.set(e,r),p.set(e,i),m.set(e,a)}let h=[`matrix`,`flow`].includes(w.bundleLayout)||d.size===0?null:wr(r,d),g=new Map;for(let[e,t]of i)g.set(t,e);let _=Gt(e),v=new Map(_?[...e.bundle.modules].map(([e,t])=>[e,{directory:e,version:typeof t.version==`string`?t.version:void 0}]):[]),y=e=>{let t=g.get(e)??e;return Jr(t,{packageDir:_?.get(t)})},b=o.filter(e=>y(e)===`__own__`),x=me(e,i,y,_,t.origToStripped),ee=new Set;for(let e of o)if(ee.add(y(e)),ee.size>=3)break;let te=ee.size>=3,ne=o;if(w.focusedPkg){let e=o.filter(e=>y(e)===w.focusedPkg);e.length>0?ne=e:w.focusedPkg=null}return w.selected&&!Object.hasOwn(r,w.selected)&&(w.selected=null),{treeData:r,files:ne,ownCounts:d,transitiveCounts:h,severitySets:f,colorSets:p,fileFindings:m,options:{pkgOf:y,packageInfoOf:e=>v.get(_?.get(g.get(e)??e))},strippedToOrig:g,canPackagesView:te,hasIssues:l,issuesShown:u,viewId:e.integrity??null,supportsLayers:!0,layerRoots:x,flowEntries:w.bundleLayout===`flow`?fe(e,i,t.origToStripped,_):void 0,ownSourcePackages:ie(i,y,_),entryPackages:oe(e,i,y),ownSourceFiles:new Set(b),reasons:[...n.keys()]}}function uK(){if(!iK)return;let e=lT();e&&e.refreshSidebar(iK,{isBundleContext:!0,findingsJump:!F()})}function dK(){if(!iK)return;let e=lT();e&&e.refreshTopPkgs(iK)}function fK(e){iK=e}function pK(e,t,n){let r=new Map,i=new Map,a=0;for(let{path:t,size:o,pkgDir:s}of e){if(typeof o!=`number`||o<=0)continue;let e=Jr(t,{packageDir:s});r.set(e,(r.get(e)??0)+o),i.has(e)||i.set(e,_G(n,s)),a+=o}if(a===0)return j;let o=[...r.entries()].toSorted((e,n)=>+(n[0]===`__own__`)-(e[0]===`__own__`)||(t===`size`?n[1]-e[1]:0)||Xr(e[0]).localeCompare(Xr(n[0]))||e[0].localeCompare(n[0]));return k`<div class="bundles-dist"><div class="bundles-dist-bar" aria-hidden="true">${D(o,([e])=>e,([e,t])=>k`<span class="bundles-dist-seg" style="${E({flexGrow:t,background:nr(e)})}" data-tooltip="${e===`__own__`?j:`${e}: ${Wr(t)}`}"></span>`)}</div><ul class="bundles-dist-list">${D(o,([e])=>e,([e,t])=>{let r=(t/a*100).toFixed(1),o=Xr(e),s=nr(e),c=i.get(e);return k`<li><span class="bundles-dist-dot" style="${E({background:s})}"></span> ${c?k`<button type="button" class="bundles-dist-pkg" aria-haspopup="dialog" aria-label="${`Show dependency chains for ${o}`}" @click="${()=>mK(n,c)}" data-tooltip-truncated data-tooltip="${e}">${o}</button>`:k`<span class="bundles-dist-pkg" data-tooltip-truncated data-tooltip="${e===`__own__`?j:e}">${o}</span>`} <span class="bundles-dist-bar-row" aria-hidden="true"><span class="bundles-dist-bar-fill" style="${E({width:`${r}%`,background:s})}"></span> </span><span class="bundles-dist-size">${Wr(t)}</span> <span class="bundles-dist-percent">${r}%</span></li>`})}</ul></div>`}function mK(e,t){let n=P.currentManagedTeam,r=P.currentWorkspace,i=P.managedSession&&js(P.managedSession);return lt({details:e,...t,isCurrent:()=>P.currentView===`bundles`&&P.selectedBundle===e.integrity&&(P.bundleDetails&&js(P.bundleDetails))===js(e)&&P.currentWorkspace===r&&P.currentManagedTeam===n&&(P.managedSession&&js(P.managedSession))===i})}function hK(e,t,n,r,i,a,{bundleSize:o=null,unpackedSize:s=null,resources:c=null,details:l=null,leadColumn:u=null,trailColumns:d=j,summaryExtra:f=j,fileTag:p=null,fileIcon:m=null,fileFlags:h=null,overviewClass:g=``,fileFilter:_=null,lines:v=null,sized:y=(e,t,n)=>n}={}){let{prefix:b,stripped:x}=kn(n),ee=e=>i?.get(n[e]),te=new Set;for(let e=0;e<x.length;e++)te.add(Jr(n[e],{packageDir:ee(e)}));let ne=x.map((e,t)=>t).filter(e=>!_||_.keeps(n[e])),re=e=>h?.(n[e])??[],ie=ne.some(e=>re(e).length>0),ae=P.bundleOverviewFilesSort===`flags`&&!ie?`name`:P.bundleOverviewFilesSort,oe=ae===`flags`?zH(ne,re,e=>x[e]):ne.toSorted((e,t)=>(ae===`size`?(r[t]??-1)-(r[e]??-1):0)||x[e].localeCompare(x[t])),se=n.map((e,t)=>({path:e,size:r[t],pkgDir:ee(t)})),ce=P.bundleOverviewPackagesSort,le=pK(se,ce,l),ue=le===j?k`<p class="bundles-overview-col-empty">No size information for this bundle's sources.</p>`:le,de={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},fe=0,pe=new Map;if(P.bundleDetails?.fileHashes){let e=cK(P.bundleDetails.fileHashes,`issues`);for(let t of e.values())for(let e of t){de[e.severity]!==void 0&&de[e.severity]++,fe++;for(let t of Tf(e.fileHash,e))pe.set(t,(pe.get(t)??0)+1)}}let me=[...pe.keys()].toSorted(),he=Ai.filter(e=>de[e]>0).map(e=>k`<span class="${`tree-count-chip ${e}`}">${de[e]} ${e.replaceAll(`_`,` `)}</span>`),ge=n.length>0?k`<ul class="bundles-sources-list">${oe.map(e=>{let t=n[e],i=r[e],a=k`${m?m(t):j}<span class="bundles-source-path" data-tooltip-truncated data-tooltip="${t}">${x[e]}</span> ${p?p(t):j} ${i==null?j:k`<span class="bundles-source-size">${Wr(i)}</span>`}`;return k`<li>${c?.has(t)?k`<div class="bundles-source-row is-resource">${a}</div>`:k`<button type="button" class="bundles-source-row" data-bundle-view-source="${t}">${a}</button>`}</li>`})}</ul>`:k`<p class="bundles-overview-col-empty">No source files in this bundle.</p>`,_e=me.length>0?k`<ul class="bundles-reports-list">${me.map(e=>{let t=Px[Rx(e)]??Px.default,n=pe.get(e)??0;return k`<li><button type="button" class="report-chip bundles-report-chip" data-bundle-issue-report="${e}">${O(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${at(e)}</span> <span class="bundles-report-count">${n} ${n===1?`issue`:`issues`}</span></button></li>`})}</ul>`:k`<p class="bundles-overview-col-empty">No matching reports indexed yet.</p>`,ve=n.length-(c?.size??0);return k`<div class="bundles-overview ${g}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e(b)}<dl class="bundles-detail-meta is-build">${t}<dt>Sources</dt><dd>${v==null?y(`files`,ve,ve):k`${y(`files`,ve,`${ve} ${ve===1?`file`:`files`}`)} · ${y(`lines`,v,`${v.toLocaleString(`en`)} LoC`)}`}</dd>${o==null?j:k`<dt>Size</dt><dd>${Wr(o)}</dd>`} ${s==null?j:k`<dt>Unpacked</dt><dd>${y(`unpacked`,s,Wr(s))}</dd>`} ${c?.size?k`<dt>Resources</dt><dd>${c.size}</dd>`:j}</dl>${a??j}</div>${fe>0?k`<div class="bundles-issue-summary tree-count-chips">${he}</div>`:j} ${f}</div><div class="bundles-overview-columns">${u??qk({title:`Packages`,count:te.size,body:ue,tools:k`<span class="bundles-overview-sort" role="group" aria-label="Package order">${[[`name`,`Name`],[`size`,`Size`]].map(([e,t])=>k`<button type="button" aria-pressed="${String(ce===e)}" @click="${()=>{P.bundleOverviewPackagesSort=e,Z()}}">${t}</button>`)}</span>`})} ${qk({title:`Files`,count:_?`${oe.length} of ${n.length}`:n.length,body:ge,list:!0,extra:_?k`<button type="button" class="bundles-overview-filter" aria-label="${`Show every file, not only ${_.label}`}" @click="${_.clear}">${_.label}<span aria-hidden="true">×</span></button>`:j,tools:k`<span class="bundles-overview-sort" role="group" aria-label="File order">${[[`name`,`Name`],[`size`,`Size`],...ie?[[`flags`,`Flags`]]:[]].map(([e,t])=>k`<button type="button" aria-pressed="${String(ae===e)}" @click="${()=>{P.bundleOverviewFilesSort=e,Z()}}">${t}</button>`)}</span>`})} ${me.length>0?qk({title:`Reports`,count:me.length,body:_e,list:!0}):j} ${d}</div></div>`}var gK=new Map,_K=new Set,vK=()=>k`<button type="button" class="bundle-source-wrap-toggle" data-bundle-source-wrap hidden aria-pressed="${P.bundleSourceWrap?`true`:`false`}" aria-label="Wrap lines" data-tooltip="Wrap lines">${ew}</button>`;function yK(e){let t=e?.status;return k`<button type="button" class="${T({"bundle-source-pretty-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-pretty aria-pressed="${P.bundleSourcePretty?`true`:`false`}" aria-busy="${t===`loading`?`true`:j}" aria-label="Pretty-print" data-tooltip="${WO(e)}">${UO}</button>`}function bK(e,t,n,r,i,a){let o=dk(e,t,n,r),s=o?Tk(e,t,n,r,()=>{P.bundleSourceFile===n&&Z()}):null,c=s?.status===`ready`;return{pretty:c,toggle:o?yK(s):j,content:c?s.text:r,fileFindings:c?[]:i,lineFindings:c?new Map:a}}function xK(e){let t=e?.status;return k`<button type="button" class="${T({"bundle-source-lockfile-toggle":!0,"is-loading":t===`loading`,"is-error":t===`error`})}" data-bundle-source-lockfile aria-pressed="${P.bundleSourceLockfile?`true`:`false`}" aria-busy="${t===`loading`?`true`:j}" aria-label="View lockfile" data-tooltip="${Vk(e)}">${O($i)}</button>`}var SK=null;function CK(){queueMicrotask(()=>{document.querySelector(`.bundle-code-rail-body .bundle-code-tree-link.current`)?.scrollIntoView({block:`nearest`})})}function wK(e){requestAnimationFrame(()=>requestAnimationFrame(()=>{document.querySelector(`.bundle-code-main .bundle-source-lineno-row[data-line="${e}"]`)?.scrollIntoView({block:`center`})}))}function TK(e){for(let t of Ai)for(let n of e)if(n.severity===t)return t;return e[0]?.severity??null}var EK={content:``,parts:``};function DK(e){if(EK.content===e)return EK.parts;let t=e;if(e.length>AT||nC(e)){let n=e=>[NT(e)].flat();t=[];let r=0;for(let i=0;i<e.length;){let a=e.indexOf(`
184
+ `,i),o=a===-1?e.length:a+1;(a===-1?o:a)-i>jT&&(t.push(...n(e.slice(r,i)),k`<span class="bundle-source-long-line">${n(e.slice(i,o))}</span>`),r=o),i=o}t.push(...n(e.slice(r)))}return EK={content:e,parts:t},t}function OK(e,t,n,r,i=null,a=!1,o=!1){let s=e.split(`
185
+ `).length,c=P.bundleSourceTargetLine,l=!o&&c&&c.path===t&&c.bundle===(n?.integrity??null)?c.line:null,u=l==null?null:Math.max(c.end??l,l),d=String(s).length,f=Mt(t,n?.kind===`stasis`?n.bundle?.formats?.get(t):void 0,e),p=`${n?.integrity??``}\0${t}${o?`\0pretty`:``}`;f&&!gK.has(p)&&!_K.has(p)&&(_K.add(p),(async()=>{let r=await ES(e,f,GS(n,t));gK.set(p,typeof r==`string`?oC(r):null),_K.delete(p),P.bundleSourceFile===t&&Z()})());let m=gK.get(p);return k`<div class="${T({"bundle-source-lines":!0,"is-wrapped":P.bundleSourceWrap})}" style="${E({"--lineno-width":`${d}ch`})}" ${kT(bD)}><aside class="bundle-source-lineno-col" aria-hidden="true">${Array.from({length:s},(e,t)=>{let n=t+1,o=r.get(n),s=o?TK(o.map(e=>e.f)):null,c=o&&P.bundleSourceFindingIdx!=null&&o.some(e=>e.idx===P.bundleSourceFindingIdx);return k`<div class="${T({"bundle-source-lineno-row":!0,"is-match":i?.has(n)??!1,"is-target":l!=null&&n>=l&&n<=u})}" data-line="${n}">${o?k`<button type="button" class="${T({"bundle-source-dot":!0,[`sev-${s}`]:!0,active:c})}" data-bundle-source-finding="${o[0].idx}" data-tooltip="${`${o.length} ${o.length===1?`issue`:`issues`} on line ${n}`}" aria-label="${`${o.length} issues on line ${n}`}"></button>`:k`<span class="bundle-source-dot-placeholder"></span>`} <span class="bundle-source-lineno-num" data-bundle-source-line="${a?n:j}">${n}</span></div>`})}</aside><pre class="bundle-source-code" tabindex="-1" aria-label="${t}"><code class="${f?`language-${f}`:``}">${typeof m==`string`?O(m):DK(e)}</code></pre></div>`}function kK(e){let t=P.bundleSourceFindingIdx;if(t==null)return j;let n=e[t];if(!n)return j;let r=n.fileHash?Tf(n.fileHash,n):[],i=s(n,P.triage.get(C(n))),a=i===`fixed`?`Fixed`:i===`inprogress`?`In progress`:i===`ignored`?`Ignored`:null,o=jn(n),c=Tq(n.line);return k`<aside class="bundle-source-panel"><header class="bundle-source-panel-bar"><span class="${`bundle-source-panel-sev sev-${n.severity}`}">${n.severity.replaceAll(`_`,` `)}</span> ${a?k`<span class="${`bundle-source-panel-triage triage-${i}`}">${a}</span>`:j} <button type="button" class="bundle-source-panel-close" data-action="bundle-source-panel-close" aria-label="Close finding details">×</button></header><div class="bundle-source-panel-body">${c||o?k`<div class="bundle-source-panel-line-row">${c?k`<span class="bundle-source-panel-line">${c}</span>`:j} ${o?k`<span class="bundle-source-panel-meta" data-tooltip-truncated data-tooltip="${o}">${o}</span>`:j}</div>`:j}<div class="bundle-source-panel-desc">${mw(Ui(n),{paragraphs:!1})}</div>${r.length>0?k`<div class="bundle-source-panel-reports"><div class="bundle-source-panel-reports-label">Reported by</div>${r.map(e=>{let t=rt[Rx(e)]??rt.default;return k`<button type="button" class="report-chip bundle-source-panel-report" data-bundle-issue-report="${e}">${O(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${at(e)}</span></button>`})}</div>`:j}</div></aside>`}function AK(e,t,n){let r=[],i=new Map;if(typeof n==`string`&&e?.fileHashes){let n=cK(e.fileHashes,`issues`).get(t)??[];for(let e=0;e<n.length;e++){let t=n[e];r.push(t);let a=parseInt(t.line,10);Number.isFinite(a)&&a>0&&(i.has(a)||i.set(a,[]),i.get(a).push({f:t,idx:e}))}}return{fileFindings:r,lineFindings:i}}function jK(e,t=null,n=j){return k`<header class="bundle-source-bar"><div class="bundle-source-title mono" data-tooltip-truncated data-tooltip="${e}">${e}</div>${t?.files.length>1?nq(t):j} ${vK()} ${n} <button type="button" class="bundle-source-close" data-action="bundle-source-close" aria-label="Close source viewer">×</button></header>`}function MK(e,t,n,r,i,a=null,o=!1,s=!1){return k`<div class="bundle-source-code-wrap">${typeof t==`string`?OK(t,e,n,i,a,o,s):k`<div class="bundle-source-empty">Source content not bundled.</div>`}</div>${kK(r)}`}function NK(){let e=P.bundleSourceFile;if(!e||P.bundleDetailsTab===`code`||P.bundleDetailsTab===`search`)return j;let t=P.bundleDetails,n=t?.sourceError||t?.error,r=!n&&(!t||t.metadataOnly===!0),i=Lt(t),{fileFindings:a,lineFindings:o}=AK(t,e,i.get(e)),s=P.bundles?.find(e=>e.integrity===t?.integrity)??(t?.npm?{npm:t.npm}:null),c=r||n?null:bK(t,s,e,i.get(e),a,o);return k`<div class="bundle-source-overlay"><div class="${T({"bundle-source-modal":!0,"with-panel":P.bundleSourceFindingIdx!=null})}">${jK(e,Nk(P.bundleCodeHistory,t?.integrity??null,e),c?.toggle)}<div class="bundle-source-body" aria-busy="${String(r)}">${n?k`<div class="bundles-slide-placeholder is-error" role="status">Failed to load source: ${n}</div>`:r?k`<div class="bundles-slide-placeholder" role="status">Loading source…</div>`:MK(e,c.content,t,c.fileFindings,c.lineFindings,null,!1,c.pretty)}</div></div></div>`}var PK=new Map,FK=null,IK=null;function LK(e,t){let n=WK(e??``,t).split(`/`);for(let e=1;e<n.length;e++)PK.set(n.slice(0,e).join(`/`),!0)}function RK(e,t){P.bundleCodeSearchMode=`files`,P.bundleCodeSearchQuery=``,LK(e,t),Z(),CK()}function zK(e){let t=e=>{for(let n of e.dirs.values())PK.set(n.path,!1),t(n)};t(e),Z()}function BK(e){P.bundleCodeTerminal=e,Z(),e?hT():document.querySelector(`[data-bundle-code-terminal-toggle]`)?.focus()}function VK(){return k`<bundle-code-terminal-splitter role="separator" tabindex="0" aria-orientation="horizontal" aria-label="Resize terminal" data-tooltip="Drag to resize · double-click to reset"></bundle-code-terminal-splitter><section class="bundle-code-terminal" aria-label="Terminal"><header class="bundle-code-terminal-bar"><span class="bundle-code-rail-label">Terminal</span> <button type="button" class="bundle-code-rail-action" aria-label="Close terminal" @click="${()=>BK(!1)}">×</button></header><div id="bundle-terminal-slot" class="bundle-code-terminal-slot"></div></section>`}function HK(e,t){let n=0,r=null;if(!t||t.size===0)return{count:n,worst:r};let i=e=>{for(let i of e.files.values()){let e=t.get(i);if(!e||e.length===0)continue;n+=e.length;let a=TK(e);(r===null||(ki[a]??0)>(ki[r]??0))&&(r=a)}for(let t of e.dirs.values())i(t)};return i(e),{count:n,worst:r}}function UK(e,t,n=0,r=null,i=!1,a=null,o=null){let s=[...e.dirs.entries()].toSorted(([e,t],[n,r])=>sD(e,t).localeCompare(sD(n,r))||t.path.localeCompare(r.path)),c=[...e.files.entries()].toSorted(([e],[t])=>e.localeCompare(t)),l=e=>{if(!t)return!1;for(let n of e.files.values())if(n===t)return!0;for(let t of e.dirs.values())if(l(t))return!0;return!1},u=(e,t)=>i?!0:PK.has(e)?PK.get(e):n===0||l(t),d=e=>t=>{PK.set(e,!t.currentTarget.parentElement.open)};return k`<ul class="${T({"bundle-code-tree":!0,root:n===0})}" aria-label="${n===0?`Source files`:j}" @keydown="${n===0?uD:j}">${D(s,([,e])=>e.path,([e,s])=>{let c=s.path,l=lD(e,s,n),f=s.package,p=f?.ecosystem===`cargo`||f?.ecosystem===`composer`||f?.ecosystem===`soldeer`,m=Tt(f?.ecosystem),h=f?.variant?`${l.node.sourcePath}
186
+ Variant ${f.variant}`:l.node.sourcePath,g=s.packageInfo,_=!!g||!!f?.variant,v=g&&o?e=>{let{bytes:t,loc:n}=tD(o,s.sourcePath);Object.assign(e.dataset,{tooltipLoc:String(n),tooltipSize:Wr(t)})}:void 0,y=HK(s,r);return k`<li class="bundle-code-tree-dir"><details .open="${st(u(c,s))}"><summary @click="${d(c)}" .prepareTooltip="${v}" data-tooltip-package="${g?.name??j}" data-tooltip-ecosystem="${g?.ecosystem??j}" data-tooltip-version="${g?.version??j}" data-tooltip-files="${g?.fileCount??j}" data-tooltip-repo="${g?.github?g.github+(g.directory?`/${g.directory}`:``):j}" data-tooltip-commit="${g?.commit??j}" data-tooltip="${_?h:j}" data-tooltip-placement="${_?`right-start`:j}"><span class="bundle-code-tree-chevron" aria-hidden="true"></span> ${f?m:j} <span class="${T({"bundle-code-tree-dirname":!0,"bundle-code-tree-package":!!f,"bundle-code-tree-package-vendored":p})}" data-tooltip-truncated data-tooltip="${_?j:h}">${f?k`<span class="bundle-code-tree-package-name">${f.name}</span>${f.version?k`<span class="bundle-code-tree-package-version">${p?`- `:`@`}${f.version}</span>`:j}`:l.names.map((e,t)=>k`${t>0?k`<span class="bundle-code-tree-separator">/</span>`:j}${e}`)} </span>${f?.variant?k`<span class="bundle-code-tree-variant">variant ${f.variant}</span>`:j} ${y.count>0?k`<span class="${`bundle-code-tree-count sev-${y.worst}`}" data-tooltip="${`${y.count} ${y.count===1?`issue`:`issues`} inside`}">${y.count}</span>`:j}</summary>${UK(l.node,t,n+1,r,i,a,o)}</details></li>`})} ${D(c,([,e])=>e,([e,n])=>{let i=r?.get(n),o=i&&i.length>0?TK(i):null,s=i?.length??0;return k`<li class="bundle-code-tree-file"><button type="button" class="${T({"bundle-code-tree-link":!0,current:n===t})}" data-bundle-view-source="${n}" aria-current="${n===t?`true`:j}">${yt(n,a?.get(n))}<span class="bundle-code-tree-name" data-tooltip-truncated data-tooltip="${n}">${e}</span> ${s>0?k`<span class="${`bundle-code-tree-count sev-${o}`}" data-tooltip="${`${s} ${s===1?`issue`:`issues`}`}">${s}</span>`:j}</button></li>`})}</ul>`}function WK(e,t){return t&&e.startsWith(t)?e.slice(t.length):e}function GK(e,t,n,r,i=``,a=null,o=null){if(!n)return UK(e,t,0,r,!1,a,o);let s=cD(e,n,i);return s?UK(s,t,0,r,!0,a,o):k`<div class="bundle-code-search-empty">No files match.</div>`}var KK=new WeakMap;function qK(e,t){let n=KK.get(t);return n||(n=Yr([...t.keys()].toSorted(),Gt(e)),KK.set(t,n)),n}var JK=1e3,YK=new WeakMap;function XK(e,t,n,r,i=``){let a=Wt(e),o=YK.get(t);o||(o=[...t.keys()].filter(e=>a.get(e)!=null).toSorted((e,t)=>a.get(t)-a.get(e)||e.localeCompare(t)),YK.set(t,o));let s=n.toLowerCase(),c=s?o.filter(e=>WK(e,i).toLowerCase().includes(s)):o;if(c.length===0)return k`<div class="bundle-code-search-empty">No files match.</div>`;let l=c.length>JK?c.slice(0,JK):c;return k`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${l.length<c.length?`${l.length.toLocaleString()} largest of ${c.length.toLocaleString()} files`:`${c.length.toLocaleString()} ${c.length===1?`file`:`files`} by size`}</div><ul class="bundle-code-largest">${D(l,e=>e,e=>k`<li><button type="button" class="${T({"bundle-code-largest-file":!0,current:e===r})}" data-bundle-view-source="${e}" aria-current="${e===r?`true`:j}"><span class="bundle-code-largest-path" data-tooltip-truncated data-tooltip="${e}">${WK(e,i)}</span><span class="bundle-code-largest-size">${Wr(a.get(e))}</span></button></li>`)}</ul></div>`}function ZK(e,t,n,r,i=``){if(!n)return k`<div class="bundle-code-search-hint">Type to search across every source in this bundle.</div>`;let a=VW(n,!1,!1),o=[],s=0;for(let n of qK(e,t)){let e=t.get(n);if(typeof e!=`string`)continue;let r=[],i=e.split(`
187
+ `);for(let e=0;e<i.length;e++){let t=a.ranges(i[e]);if(t.length!==0&&(r.push({ln:e+1,text:i[e],ranges:t}),s++,r.length>=20))break}if(r.length>0&&o.push({path:n,hits:r}),o.length>=100)break}return o.length===0?k`<div class="bundle-code-search-empty">No matches.</div>`:k`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${s} ${s===1?`hit`:`hits`} in ${o.length} ${o.length===1?`file`:`files`}</div>${o.map(({path:e,hits:t})=>{let n=WK(e,i);return k`<div class="${T({"bundle-code-search-file":!0,current:e===r})}"><button type="button" class="bundle-code-search-file-name" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${n}</button><ul class="bundle-code-search-hits">${t.map(t=>k`<li class="bundle-code-search-hit"><button type="button" class="bundle-code-search-hit-link" data-bundle-view-source="${e}" data-bundle-view-line="${t.ln}" data-bundle-view-scroll-block="start"><span class="bundle-code-search-hit-ln">${t.ln}</span> <span class="bundle-code-search-hit-text mono">${XW(t.text,t.ranges)}</span></button></li>`)}</ul></div>`})}</div>`}function QK(e,t,n,r=``){if(!e.fileHashes)return k`<div class="bundle-code-search-empty">Computing file hashes…</div>`;let i=cK(e.fileHashes,`issues`);if(i.size===0)return k`<div class="bundle-code-search-empty">No issues match this bundle's files.</div>`;let a=t.toLowerCase(),o=[];for(let[e,t]of i)for(let n=0;n<t.length;n++){let r=t[n],i=r.description??``;a&&!e.toLowerCase().includes(a)&&!r.severity.includes(a)&&!r.severity.replaceAll(`_`,` `).includes(a)&&!i.toLowerCase().includes(a)||o.push({file:e,finding:r,fileIdx:n})}return o.sort((e,t)=>{let n=ki[e.finding.severity]??0,r=ki[t.finding.severity]??0;return r===n?e.file.localeCompare(t.file):r-n}),o.length===0?k`<div class="bundle-code-search-empty">No matches.</div>`:k`<div class="bundle-code-search-results"><div class="bundle-code-search-summary">${o.length} ${o.length===1?`issue`:`issues`}</div><ul class="bundle-code-search-issues">${o.map(({file:e,finding:t,fileIdx:i})=>{let a=t.severity,o=WK(e,r),s=e===n&&P.bundleSourceFindingIdx===i;return k`<li class="${T({"bundle-code-search-issue":!0,current:s})}"><button type="button" class="bundle-code-search-issue-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${i}" data-bundle-view-line="${t.line??``}"><div class="bundle-code-search-issue-row"><span class="${`bundle-code-search-issue-sev sev-${a}`}">${a.replaceAll(`_`,` `)}</span> <span class="bundle-code-search-issue-path mono" data-tooltip-truncated data-tooltip="${e}">${o}${t.line?`:${t.line}`:``}</span></div><div class="bundle-code-search-issue-desc">${mw(Ui(t),{paragraphs:!1})}</div></button></li>`})}</ul></div>`}function $K(e,t){if(e.kind!==`stasis`)return t;let n=Gt(e),r=new Map([...t].filter(([e])=>!/(?:^|\/)node_modules(?:\/|$)/u.test(e)&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n?.get(e)??e)));return r.size>0?r:t}function eq(e,t,n){let r=null,i=-1,a=0;for(let[e,o]of n){if(typeof t.get(e)!=`string`)continue;let n=ki[TK(o)]??0;(n>i||n===i&&o.length>a||n===i&&o.length===a&&(r===null||e.localeCompare(r)<0))&&(r=e,i=n,a=o.length)}if(r)return r;if(e.kind===`stasis`&&e.bundle){for(let n of e.bundle.entries)if(typeof t.get(n)==`string`)return n}for(let n of e.npmEntries??[])if(typeof t.get(n)==`string`)return n;let o=null,s=-1;for(let[e,n]of t)typeof n==`string`&&n.length>s&&(o=e,s=n.length);return o}function tq(e,t=null){let n=Lt(e);if(n.size===0)return k`<div class="bundle-code-empty">This bundle doesn't carry any source content.</div>`;FK!==P.selectedBundle&&(PK.clear(),FK=P.selectedBundle,IK=null);let r=zt(n).paths,i=e.kind===`stasis`?e.bundle.modules:null,a=aD(kn(r).prefix,i,r),o=iD(r.map(e=>WK(e,a)),r,i),s=e.fileHashes?cK(e.fileHashes,`issues`):new Map,c=$K(e,n),l=e.kind===`stasis`?new Map([...s].filter(([e])=>c.has(e))):s,u=P.bundleSourceFile,d=P.bundleCodeFileRequest;if(d?.bundle===P.selectedBundle){P.bundleCodeFileRequest=null;let t=d.path==null?r[d.file-1]:n.has(d.path)?d.path:null;if(t){u=t,P.bundleSourceFile=t,CK();let r=d.endLine??d.line;P.bundleSourceTargetLine=d.line&&r<=Rt(n.get(t))?{bundle:e.integrity,path:t,line:d.line,...r>d.line?{end:r}:{}}:null,P.bundleSourceTargetLine&&wK(d.line)}}if(SK&&(SK.bundle!==P.selectedBundle||u&&u!==SK.path)&&(SK=null),!u)u=eq(e,c,l),u&&(P.bundleSourceFile=u,SK={bundle:P.selectedBundle,path:u,hadIssues:l.size>0},CK());else if(SK&&!SK.hadIssues&&l.size>0){SK.hadIssues=!0;let t=eq(e,c,l);t&&t!==u&&(u=t,P.bundleSourceFile=t,P.bundleSourceFindingIdx=null,SK.path=t,CK())}u!==IK&&(LK(u,a),IK=u),u&&t?.managedId&&F()?U?.replaceCodeRoute(Ex(P.managedTeams,t,P.currentManagedTeam,`code`,Dx(P))):u&&t?.npm&&F()?U?.replaceCodeRoute(ej(t,`code`,Dx(P))):u&&t?.repository&&F()&&U?.replaceCodeRoute(kM(t,`code`,Dx(P)));let f=u?n.get(u):null,{fileFindings:p,lineFindings:m}=AK(e,u,f),h=s.size>0?[`files`,`code`,`issues`,`largest`]:[`files`,`code`,`largest`],g=h.includes(P.bundleCodeSearchMode)?P.bundleCodeSearchMode:`files`,_=P.bundleCodeSearchQuery;return k`<div class="bundle-code-view"><aside class="bundle-code-rail"><div class="bundle-code-rail-head"><span class="bundle-code-rail-label">Files</span> <span class="bundle-code-rail-count">${r.length}</span> <span class="bundle-code-rail-actions"><button type="button" class="bundle-code-rail-action" aria-label="Terminal" data-tooltip="Terminal" data-bundle-code-terminal-toggle aria-pressed="${P.bundleCodeTerminal?`true`:`false`}" @click="${()=>BK(!P.bundleCodeTerminal)}">${nw}</button> <button type="button" class="bundle-code-rail-action" aria-label="Reveal current file" data-tooltip="Reveal current file" ?disabled="${!u}" @click="${()=>RK(u,a)}"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" aria-hidden="true"><circle cx="8" cy="8" r="4.5"/><circle cx="8" cy="8" r="1.5"/><path d="M8 0v3m0 10v3M0 8h3m10 0h3"/></svg></button> <button type="button" class="bundle-code-rail-action" aria-label="Collapse directories" data-tooltip="Collapse directories" ?disabled="${g!==`files`||!!_||o.dirs.size===0}" @click="${()=>zK(o)}">${tw}</button></span></div>${a?k`<div class="bundle-code-rail-prefix mono" data-tooltip-truncated data-tooltip="${a}">${a}</div>`:j}<bundle-code-search .modes="${h}"></bundle-code-search><div class="bundle-code-rail-body">${bT(g,[[`files`,()=>GK(o,u,_,s,a,e.kind===`stasis`?e.bundle.formats:null,n)],[`code`,()=>ZK(e,n,_,u,a)],[`issues`,()=>QK(e,_,u,a)],[`largest`,()=>XK(e,n,_,u,a)]])}</div></aside><bundle-code-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize file tree" data-tooltip="Drag to resize · double-click to reset"></bundle-code-splitter><div class="${T({"bundle-code-main":!0,"with-panel":P.bundleSourceFindingIdx!=null})}">${u?iq(e,u,f,p,m,t):k`<div class="bundle-code-placeholder">Pick a file from the tree to view its source.</div>`} ${P.bundleCodeTerminal?VK():j}</div></div>`}function nq(e){return k`<span class="bundle-code-file-nav"><button type="button" class="focus-code-nav-btn" data-bundle-code-history="back" aria-label="Back to the previously shown file" ?disabled="${e.at===0}">${QC}</button> <button type="button" class="focus-code-nav-btn" data-bundle-code-history="forward" aria-label="Forward to the next shown file" ?disabled="${e.at>=e.files.length-1}">${$C}</button></span>`}function rq(e){let t=e.split(`
188
+ `).length;return`${t.toLocaleString()} ${t===1?`line`:`lines`} \xB7 ${Wr(fa(e))}`}function iq(e,t,n,r,i,a=null){let o=Nk(P.bundleCodeHistory,e.integrity,t),s=bK(e,a,t,n,r,i),{pretty:c,toggle:l,fileFindings:u,lineFindings:d}=s,f=typeof n==`string`&&Ik(t)!==null,p=f?zk(e,t,n,Lt(e),()=>{P.bundleSourceFile===t&&Z()}):null,m=p?.status===`ready`,h=m?n:s.content,g=u.map((e,t)=>({idx:t,line:parseInt(e.line,10)||0})).toSorted((e,t)=>e.line-t.line||e.idx-t.idx),_=mD(e,t,a?.managedId&&a.repoId!=null?{github:a.repoFullName,directory:a.repoDirectory}:null);return k`<header class="bundle-code-main-bar">${nq(o)} ${yt(t,_t(e,t))} <span class="bundle-code-main-path mono" data-tooltip-truncated data-tooltip="${t}">${t}</span> <button type="button" class="bundle-code-copy-path" data-copy-path="${t}" aria-label="Copy file path">${ZC}</button> ${_?hD(_,a?.commitInfo):j} <span class="bundle-code-main-spacer"></span> ${u.length>0&&!m?k`<span class="bundle-code-main-issues" data-bundle-code-issue-order="${JSON.stringify(g)}"><span class="${`bundle-code-tree-count sev-${TK(u)}`}" data-tooltip="${`${u.length} ${u.length===1?`issue`:`issues`} in this file`}">${u.length}</span> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="-1" aria-label="Previous issue">‹</button> <button type="button" class="bundle-code-issue-step" data-bundle-code-issue-step="1" aria-label="Next issue">›</button></span>`:j} ${m?j:vK()} ${m?j:l} ${f?xK(p):j} ${typeof h==`string`?k`<span class="bundle-code-main-stats">${l===j?j:k`<span class="bundle-code-main-stats-room" aria-hidden="true">${rq(n)}</span>`}<span>${rq(h)}</span></span>`:j}</header><div class="bundle-code-main-body">${m?k`<lockfile-graph .lockfile="${p.lockfile}"></lockfile-graph>`:MK(t,h,e,u,d,null,!c&&!!(a?.managedId||a?.npm)&&F()&&!Ze(),c)}</div>`}var aq=400;function oq(e){return e<=5?8:e<=15?6:e<=40?4:e<=120?3:2}function sq(e,t,n){let r=[];for(let i of e){let e=Math.max(1,i.ln-n),a=Math.min(t,i.ln+n),o=r.at(-1);o&&e<=o.end+1?o.end=Math.max(o.end,a):r.push({start:e,end:a})}return r}function cq(e,t,n){if(e.length<=n)return{text:e,ranges:t,clipped:!1};let r=t.length>0?t[0][0]:0;return ZW(e,t,r>n-60?Math.max(0,r-60):0,n)}function lq(e,t,n){let r=cq(e,n??[],aq);return k`<div class="${T({"bundle-search-line":!0,"is-match":n!=null})}"><span class="bundle-search-lineno">${t}</span> <span class="bundle-search-code">${r.clipped?k`<span class="bundle-search-clip">…</span>`:j}${QW(r.text,r.ranges)}</span></div>`}function uq(e,t,n,r,i){let{start:a,end:o}=n,s=a;for(let e=a;e<=o;e++)if(r.has(e)){s=e;break}let c=String(o).length,l=[];for(let e=a;e<=o;e++)l.push(lq(t[e-1]??``,e,r.get(e)??null));return k`${i?k`<div class="bundle-search-gap" aria-hidden="true"></div>`:j} <button type="button" class="bundle-search-snippet" style="${E({"--bundle-search-lineno-w":`${c}ch`})}" data-bundle-view-source="${e}" data-bundle-view-line="${s}" data-bundle-view-scroll-block="center">${l}</button>`}function dq(e,t,n){let{path:r,lines:i,hits:a}=e,o=WK(r,t),s=sq(a,i.length,n),c=new Map(a.map(e=>[e.ln,e.ranges])),l=a[0].ln,u=r===P.bundleSourceFile;return k`<section class="${T({"bundle-search-file":!0,current:u})}"><header class="bundle-search-file-head"><button type="button" class="bundle-search-file-name mono" data-bundle-view-source="${r}" data-bundle-view-line="${l}" data-bundle-view-scroll-block="center" data-tooltip-truncated data-tooltip="${r}">${o}</button> <span class="bundle-search-file-count">${a.length} ${a.length===1?`match`:`matches`}</span></header><div class="bundle-search-snippets">${s.map((e,t)=>uq(r,i,e,c,t>0))}</div></section>`}function fq(e,t,n,r,i,a){if(!n)return k`<div class="bundle-search-results"><div class="bundle-search-hint">Search across every ${e.npm?`file of this version`:e.repository?`file of this directory`:`source in this bundle`}. Each match shows the surrounding lines for context — fewer matches get more context. Toggle <span class="bundle-search-hint-kbd">Aa</span> for case-sensitive and <span class="bundle-search-hint-kbd">.*</span> for regular-expression matching.</div></div>`;let o=GW(e.integrity??``,t,n,r,i,qK(e,t));if(o.error)return k`<div class="bundle-search-results"><div class="bundle-search-error"><span class="bundle-search-error-label">Invalid regular expression</span> <span class="bundle-search-error-msg mono">${o.error}</span></div></div>`;let{fileResults:s,totalHits:c,truncated:l}=o,u=[...t.keys()].toSorted(),{prefix:d}=kn(u);if(s.length===0)return k`<div class="bundle-search-results"><div class="bundle-search-empty">No matches.</div></div>`;let f=a?oq(c):0,p=s.length;return k`<div class="bundle-search-results"><div class="bundle-search-summary"><span>${c}${l?`+`:``} ${c===1?`match`:`matches`} in ${p}${l?`+`:``} ${p===1?`file`:`files`}</span> ${d?k`<span class="bundle-search-summary-prefix mono" data-tooltip-truncated data-tooltip="${d}">${d}</span>`:j} ${l?k`<span class="bundle-search-summary-more">results capped — refine to narrow</span>`:j}</div>${D(s,e=>e.path,e=>dq(e,d,f))}</div>`}function pq(e,t,n,r){if(!t||typeof e!=`string`)return null;let i=VW(t,n,r);if(i.error)return null;let a=new Set,o=e.split(`
189
+ `);for(let e=0;e<o.length;e++)i.ranges(o[e]).length>0&&a.add(e+1);return a}function mq(e,t,n,r){let i=P.bundleSourceFile;if(!i)return j;let a=t.get(i),{fileFindings:o,lineFindings:s}=AK(e,i,a),c=bK(e,r,i,a,o,s);return k`<aside class="bundle-search-side">${jK(i,null,c.toggle)}<div class="bundle-source-body">${MK(i,c.content,e,c.fileFindings,c.lineFindings,c.pretty?null:n,!1,c.pretty)}</div></aside>`}function hq(e,t=null){let n=Lt(e);if(n.size===0)return k`<div class="bundle-search-view"><div class="bundle-code-empty">${e.npm?`This version has no text files to search.`:e.repository?`This directory has no text files to search.`:`This bundle doesn't carry any source content.`}</div></div>`;let r=P.bundleSearchQuery,i=P.bundleSearchRegex,a=P.bundleSearchCase,o=null;if(P.bundleSourceFile){let e=pq(n.get(P.bundleSourceFile),r,i,a);e&&e.size===0?(P.bundleSourceFile=null,P.bundleSourceFindingIdx=null):o=e}let s=P.bundleSearchContext;return k`<div class="bundle-search-view"><div class="bundle-search-bar-row"><bundle-search></bundle-search><mode-switch data-bundle-search-context label="Context" .checked="${s}" accessible-label="Toggle context lines"></mode-switch></div><div class="bundle-search-main">${fq(e,n,r,i,a,s)} ${mq(e,n,o,t)}</div></div>`}var gq=(e,t,n,r=!1,i=null)=>i?k`<button type="button" class="${T({"bundles-tab":!0,active:n===e})}" aria-selected="${String(n===e)}" role="tab" @click="${()=>{e!==n&&i(e)}}">${t}</button>`:k`<button type="button" class="${T({"bundles-tab":!0,active:n===e})}" data-bundle-tab="${e}" aria-selected="${String(n===e)}" role="tab" ?disabled="${r}">${t}</button>`,_q=()=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],...P.managedSession&&!P.managedSession.publicShare&&(P.managedSession.dependencyReview===!0||P.managedTeams?.some(e=>e.dependencyReview===!0))?[[`review`,`Review`]]:[],[`overview`,`Overview`]],vq=e=>[[`treemap`,`Treemap`],[`code`,`Code`],[`search`,`Search`],[`compare`,`Compare`],[cM(e),`Activity`]];function yq(e,t){return t===`commits`?k`<repository-history .repository="${e}" .repo="${SM(e)}" .refs="${xM(e.repoId)}"></repository-history>`:t===`agents`?k`<repository-agents .repository="${e}" .repo="${SM(e)}"></repository-agents>`:t===`pulse`?k`<repository-pulse .repository="${e}" .repo="${SM(e)}"></repository-pulse>`:t===`replay`?k`<repository-replay .repository="${e}" .repo="${SM(e)}"></repository-replay>`:k`<repository-issues .repository="${e}" .repo="${SM(e)}" .kind="${t}"></repository-issues>`}function bq(e,t,n,r,{overview:i=!1,opening:a=!1,onTab:o=null}={}){let{npm:s}=e,c=e.repository&&!a?IM(e):null,l=c??e.repository,u=!!c||a&&!!l&&!P.repositoryCodeOpening?.error,d=o?e=>{let n=e.target.closest?.(`[data-bundle-tab]`)?.dataset.bundleTab;n&&(e.stopPropagation(),n!==t&&o(n))}:j;return k`<div class="bundles-view bundles-slide-view"><bundle-slide-header class="bundles-slide-header"><header class="bundles-slide-bar">${F()&&e.managedId&&e.repoId==null?k`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-bundles`},bubbles:!0,composed:!0}))}">Bundles</button> <span aria-hidden="true">></span></span>`:j} ${s?k`<span class="bundles-slide-breadcrumb"><button type="button" @click="${()=>Tj()}">npm</button> <span aria-hidden="true">></span></span>`:j} <span class="bundles-slide-icon" aria-hidden="true">${O(s?Zi:l?ia:Xi)}</span><div class="${T({"bundles-slide-title":!0,"bundles-slide-repository":!!l})}">${s?k`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${s.name}">${s.name}</div><npm-version-select .name="${s.name}" .version="${s.version}" .tab="${t}" .list="${a?null:mj(s.name)}"></npm-version-select>`:l?k`<repository-code-source .repository="${l}" .tab="${t}" .repos="${bM()}" .refs="${xM(l.repoId)}"></repository-code-source>`:k`<div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${e.name}">${e.name}</div>`}</div><button type="button" class="bundles-download-btn bundles-scan-button" ?hidden="${!SW(e)}" @click="${()=>{CW(e)}}">${O(na)}<span>Scan</span></button><div class="bundles-slide-tabs" role="tablist">${n.map(([e,n])=>gq(e,n,t,a||!!c,o))}</div>${u?k`<span class="bundles-slide-progress" role="progressbar" aria-label="${`Opening ${l.repo?fM(l):`the repository`}`}"></span>`:j}</header></bundle-slide-header><div class="${T({"bundles-slide-body":!0,"bundles-slide-body-overview":i,"is-pending":!!c})}" ?inert="${!!c}" aria-busy="${c?`true`:j}" @click="${d}">${r}</div></div>`}function xq({name:e,spec:t,tab:n}){return bq({npm:{name:e,version:t??`latest`}},n,_q(),k`<div class="bundles-slide-placeholder" role="status">Opening ${XA(e,t)}…</div>`,{opening:!0})}function Sq(e){let{repoId:t,commit:n,path:r,tab:i,repo:a,revision:o,error:s,code:c,historyOnly:l=!1}=e,u=a?fM({repo:a,path:r}):r||`the repository`,d=n?` at ${n.slice(0,7)}`:``,f={repoId:t,repo:a,commit:n,path:r,revision:o},p=!!(n&&(l||s));return bq({repository:f},i,vq(i),p&&li.has(i)?yq(f,i):i===`treemap`&&n&&(!s||c===`directory-too-large`)?k`<repository-treemap .repository="${f}"></repository-treemap>`:s?k`<div class="bundles-slide-placeholder is-error repository-code-failed"><p role="alert">Couldn't open ${u}${d}: ${s}</p>${KM(e)}</div>`:k`<div class="bundles-slide-placeholder" role="status">Opening ${u}${d}…</div>`,{opening:!l,onTab:p?t=>BM(e,t):null})}function Cq(e){let t=!!e.npm;t&&!si.has(P.bundleDetailsTab)&&(P.bundleDetailsTab=`overview`);let n=!!e.repository;n&&!ci.has(P.bundleDetailsTab)&&(P.bundleDetailsTab=`code`);let r=!t&&!n&&PG(e,P.bundleDetails,P.bundleDetailsTab===`advisories`);P.bundleDetailsTab===`advisories`&&!r&&(P.bundleDetailsTab=`overview`);let i=t||P.bundleDetailsTab===`compare`||Cx(P.bundles??[],P.selectedBundle).length>0,a=!F();P.bundleDetailsTab===`issues`&&!a&&!n&&(P.bundleDetailsTab=`overview`);let o=P.bundleDetailsTab,s=o===`overview`,c=P.bundleDetails,l=!!(c&&c.integrity===e.integrity),u=l&&!c.error&&!!(c.json||c.bundle)&&!(c.metadataOnly&&qt(o));return o===`advisories`&&r&&u&&c.kind===`stasis`&&UG(c,Z).catch(()=>{}),bq(e,o,t?_q():n?vq(P.bundleDetailsTab):[...r?[[`advisories`,`Advisories`]]:[],...a?[[`issues`,`Issues`]]:[],[`terminal`,`Terminal`],[`treemap`,`Treemap`],[`graph`,`Graph`],[`code`,`Code`],[`search`,`Search`],...i?[[`compare`,`Compare`]]:[],[`overview`,`Overview`]],s?Uq(e,c):u?bT(o,[[`terminal`,()=>k`<div id="bundle-terminal-slot" class="bundle-terminal-slot"></div>`],[`graph`,()=>k`<div id="bundle-graph-slot" class="bundle-graph-slot"></div>`],[`treemap`,()=>k`<bundle-treemap .details="${c}"></bundle-treemap>`],[`code`,()=>tq(c,e)],[`search`,()=>hq(c,e)],[`commits`,()=>yq(e.repository,`commits`)],[`pulls`,()=>yq(e.repository,`pulls`)],[`agents`,()=>yq(e.repository,`agents`)],[`pulse`,()=>yq(e.repository,`pulse`)],[`replay`,()=>yq(e.repository,`replay`)],[`review`,()=>kW(()=>k`<npm-review .entry="${e}" .details="${c}" .request="${P.npmReview}" .session="${P.managedSession}" .source="${BH(e)}"></npm-review>`)],[`compare`,()=>kW(()=>k`<bundle-compare .details="${c}" .integrity="${e.integrity}" .request="${P.bundleCompare}" .source="${t?BH(e):n?KH(e):null}"></bundle-compare>`)],[`issues`,()=>n?yq(e.repository,`issues`):Dq(c)],[`advisories`,()=>XG(c,Z,SW(e)?()=>{CW(e,{mode:`dependencies`})}:null)]]):l&&c.sourceError?k`<div class="bundles-slide-placeholder is-error">${c.sourceError} <button type="button" data-bundle-retry-sources>Retry</button></div>`:l&&!c.metadataOnly?k`<div class="${T({"bundles-slide-placeholder":!0,"is-error":!!c.error})}">${c.error?`Failed to parse: ${c.error}`:`Bundle contents not parsed.`}</div>`:k`<div class="bundles-slide-placeholder">Loading bundle…</div>`,{overview:s})}function wq(e,t={}){if(!e)return j;let n=[];if(e.fileHash&&(n=Tf(e.fileHash,e)),n.length===0&&t.bucketKey&&(t.kind===`package`?n=Ef(t.bucketKey,e):t.kind===`repository`&&(n=Df(t.bucketKey,e))),n.length===0)return j;let r=n.slice(0,2),i=n.length-r.length;return k`<div class="bundle-issue-reports">${r.map(e=>{let t=rt[Rx(e)]??rt.default;return k`<button type="button" class="report-chip" data-bundle-issue-report="${e}">${O(t)}<span class="report-chip-label" data-tooltip-truncated data-tooltip="${e}">${at(e)}</span></button>`})} ${i>0?k`<span class="bundle-issue-reports-more">, and ${i} more…</span>`:j}</div>`}function Tq(e){if(e==null||e===``)return``;let t=String(e),n=t.indexOf(`-`);if(n>0){let e=parseInt(t.slice(0,n),10),r=parseInt(t.slice(n+1),10);return Number.isFinite(e)&&Number.isFinite(r)&&r>e?`Lines ${e}-${r}`:Number.isFinite(e)?`Line ${e}`:``}let r=parseInt(t,10);return Number.isFinite(r)?`Line ${r}`:``}function Eq(e,t){return k`<div class="bundle-issues-empty"><p class="bundle-issues-empty-primary">${e}</p>${t?k`<p class="bundle-issues-empty-hint">${t}</p>`:j}</div>`}function Dq(e){if(e.managedId)return Eq(`Open a report to review its findings.`,`Bundle metadata includes source hashes; reports are available through your teams.`);if(!e.fileHashes)return Eq(`Computing file hashes…`,`Hashing this bundle's sources so findings from your reports can be matched against them.`);if(e.fileHashes.size===0)return Eq(`This bundle doesn't carry any source content.`,`Issues are matched by source-file hash, so a bundle without inline sources has nothing to match findings against.`);let t=cK(e.fileHashes,`issues`);if(t.size===0){let t=rK();if(t===0)return Eq(`No issues match this bundle's files.`,`Issues are analyzer findings matched to this bundle by source-file hash. No hash-carrying findings are indexed yet — hash matching needs the analyzer's native JSON reports; drop one and any matches will appear here automatically.`);let n=0;for(let t of e.fileHashes.values())n+=nK(t).length;return n>0?Eq(`All matching issues are dismissed.`,`${n} ${n===1?`finding matches`:`findings match`} this bundle's files, but every one is triaged invalid or deleted.`):Eq(`No issues match this bundle's files.`,`None of the ${t.toLocaleString()} indexed ${t===1?`finding`:`findings`} reference a source file in this bundle \u2014 matching compares exact file hashes, so findings from a different build of the same project won't line up.`)}return Oq(t,{kind:`bundle`})}function Oq(e,{kind:t,bucketKey:n}={}){let r=[...e.keys()],{prefix:i,stripped:a}=kn(r),c=new Map(r.map((e,t)=>[e,a[t]])),l=[...e.entries()].toSorted(([e,t],[n,r])=>{let i=ki[TK(t)]??0,a=ki[TK(r)]??0;return a===i?(c.get(e)??e).localeCompare(c.get(n)??n):a-i}),u=[...e.values()].reduce((e,t)=>e+t.length,0);return k`<div class="bundle-issues"><div class="bundle-issues-summary">${u} ${u===1?`issue`:`issues`} across ${e.size} ${e.size===1?`file`:`files`} ${i?k`<span class="mono">${i}</span>`:j}</div><ul class="bundle-issues-list">${D(l,([e])=>e,([e,r])=>{let i=c.get(e)??e,a=[...r].toSorted((e,t)=>{let n=ki[e.severity]??0,r=ki[t.severity]??0;return r===n?(parseInt(e.line,10)||0)-(parseInt(t.line,10)||0):r-n}),l=t===`repository`&&n?`${/^https?:/iu.test(n)?n.replace(/\/$/u,``):`https://github.com/${n}`}/blob/HEAD/${e}`:null;return k`<li class="bundle-issues-file-group"><header class="bundle-issues-file-header">${t===`bundle`?k`<button type="button" class="bundle-issues-file-name mono" data-bundle-view-source="${e}" data-tooltip-truncated data-tooltip="${e}">${i}</button>`:l?k`<a class="bundle-issues-file-name bundle-issues-file-name-link mono" href="${l}" target="_blank" rel="noopener" data-tooltip-truncated data-tooltip="${e}">${i}</a>`:k`<span class="bundle-issues-file-name bundle-issues-file-name-static mono" data-tooltip-truncated data-tooltip="${e}">${i}</span>`} <span class="bundle-issues-file-count">${r.length} ${r.length===1?`issue`:`issues`}</span></header><ul class="bundle-issues-findings">${D(a,t=>JSON.stringify([t.id??`${e}\0${t.line??``}\0${t.severity??``}\0${t.description??``}`,o(t)]),i=>{let a=r.indexOf(i),o=i.severity,c=Tq(i.line),l=s(i,P.triage.get(C(i))),u=l===`fixed`||l===`invalid`||l===`deleted`?l.toUpperCase():l===`inprogress`?`In progress`:l===`ignored`?`Ignored`:null,d=k`<div class="bundle-issues-finding-head"><span class="${`bundle-issue-sev sev-${o}`}">${o.replaceAll(`_`,` `)}</span> ${c?k`<span class="bundle-issues-finding-line">${c}</span>`:j} ${u?k`<span class="${`bundle-issues-finding-triage triage-${l}`}">${u}</span>`:j} <span class="bundle-issues-finding-spacer"></span> ${wq(i,{kind:t,bucketKey:n})}</div><div class="bundle-issues-finding-desc">${mw(Ui(i),{paragraphs:!1})}</div>`;return k`<li class="bundle-issues-finding">${t===`bundle`?k`<button type="button" class="bundle-issues-finding-link" data-bundle-view-source="${e}" data-bundle-view-finding-idx="${a}" data-bundle-view-line="${i.line??``}">${d}</button>`:k`<div class="bundle-issues-finding-link bundle-issues-finding-static">${d}</div>`}</li>`})}</ul></li>`})}</ul></div>`}function kq(e){let t=P.selectedBundle,n=t?e.find(e=>e.integrity===t):null;return n?Cq(n):k`<div class="bundles-view bundles-view-empty"><p class="bundles-empty-hint">Pick a bundle from the sidebar to open it.</p></div>`}var Aq=k`<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8"/><path d="m4.5 7 3.5 3.5L11.5 7"/><path d="M2.5 13h11"/></svg>`,jq=k`<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" aria-hidden="true"><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg>`,Mq=Object.freeze({javascript:`#f1e05a`,jsx:`#f1e05a`,typescript:`#3178c6`,tsx:`#3178c6`,json:`#f1e05a`,css:`#663399`,markup:`#e34c26`,yaml:`#cb171e`,bash:`#89e051`,markdown:`#083fa1`,solidity:`#AA6746`,php:`#4F5D95`,rust:`#dea584`,ruby:`#701516`,java:`#b07219`,cpp:`#f34b7d`,c:`#555555`,objectivec:`#438eff`,python:`#3572A5`,go:`#00ADD8`,kotlin:`#A97BFF`,swift:`#F05138`,dart:`#00B4AB`,sql:`#e38c00`,lua:`#000080`,csharp:`#178600`,scala:`#DC322F`,vue:`#41B883`,svelte:`#FF3E00`}),Nq=Object.freeze([`#8b5cf6`,`#ec4899`,`#14b8a6`,`#f97316`,`#06b6d4`,`#84cc16`,`#e11d48`,`#a855f7`]);function Pq(e){if(Mq[e])return Mq[e];let t=0;for(let n of e)t=Math.imul(t,31)+n.codePointAt(0)|0;return Nq[(t>>>0)%Nq.length]}function Fq(e){let t=e.currentTarget,n=e.target.closest?.(`.bundles-languages-segment`);!n||!t.contains(n)||(t.dataset.tooltip=n.dataset.languageTooltip??``,ur(t))}function Iq(e){delete e.currentTarget.dataset.tooltip,fr()}var Lq=e=>e.codeStats??=Nt(e.npm?new Map([...Xt(e)].filter(([e])=>!DA.test(e.slice(e.lastIndexOf(`/`)+1)))):Xt(e),Ht(e));function Rq(e,{legend:t=!1}={}){if(!(e?.kind===`stasis`&&e.bundle)&&!(e?.npm&&e.json))return j;let n=Lq(e),r=n.lines,i=n.languages.filter(e=>e.lines>0);if(r<=0||i.length===0)return j;let a=e=>{let t=e/r*100;return t<.1?`<0.1`:t<1?t.toFixed(1):t.toFixed(0)},o=t?k`<ul class="bundles-languages-legend">${i.slice(0,4).map(({key:e,label:t,lines:n})=>k`<li><span class="bundles-languages-swatch" style="${E({background:Pq(e)})}"></span>${t}<span class="bundles-languages-share">${a(n)}%</span></li>`)}</ul>`:j;return k`<div class="bundles-languages-bar" data-tooltip-managed aria-label="Languages in this bundle" @pointerover="${Fq}" @pointerleave="${Iq}">${i.map(({key:e,label:t,lines:n})=>k`<span class="bundles-languages-segment" style="${E({flexGrow:n,background:Pq(e)})}" data-language-tooltip="${`${t} \xB7 ${a(n)}% \xB7 ${n.toLocaleString()} LoC`}"></span>`)}</div>${o}`}async function zq(e){try{await(await W()).downloadManagedBundle(e.managedId,e.filename??e.name??`bundle`)}catch(e){alert(e.message)}}function Bq(e,t){let n=PW(t),r=Rq(t);return k`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${e.managedId?Ze()?k`<button type="button" class="bundles-download-btn" @click="${()=>{zq(e)}}">${Aq}<span>Download bundle</span></button>`:k`<a class="bundles-download-btn" href="${`/api/bundles/${encodeURIComponent(e.managedId)}/download`}">${Aq}<span>Download bundle</span></a>`:k`<button type="button" class="bundles-download-btn" data-bundle-download="${e.integrity}">${Aq}<span>Download bundle</span></button>`} ${n?k`<div class="bundles-export-pair"><button type="button" class="bundles-download-btn" data-bundle-export-sbom="cyclonedx" data-tooltip="Export a CycloneDX SBOM (.cdx.json)">CycloneDX</button> <button type="button" class="bundles-download-btn" data-bundle-export-sbom="spdx" data-tooltip="Export an SPDX SBOM (.spdx.json)">${jq}<span>SPDX</span></button></div>`:j}</div>${r}</div>`}function Vq(e,t,{placeholder:n=j,overviewClass:r=``}={}){return k`<div class="bundles-overview ${r}"><div class="bundles-overview-summary"><div class="bundles-detail-meta-row">${e}${t}</div></div>${n}</div>`}function Hq(e){let t=e.filter(e=>typeof e==`number`);return t.length>0?t.reduce((e,t)=>e+t,0):null}function Uq(e,t){if(e.npm)return Wq(e,t);let n=t?.integrity===e.integrity,r=e.summary?.commit,i=n?!t.error&&t.kind===`stasis`?t.bundle:null:e.managedId&&e.repoFullName&&r?{repo:{github:e.repoFullName,directory:e.repoDirectory??``,commit:r}}:null,a=n?t.size:e.managedId?e.size:null,o=(t=``,n=!1)=>k`<dl class="bundles-detail-meta"><dt>Name</dt><dd>${e.name}</dd>${e.managedId?k`<dt>Repository</dt><dd>${e.repoFullName||`Unattached`}</dd>${e.repoId==null?j:k`<dt>Directory</dt><dd class="mono">/${e.repoDirectory??``}</dd>`}`:j} ${ze(i,t,e.commitInfo).map(t=>k`<dt>${t.label}</dt><dd class="bundle-origin-row"><a class="bundle-origin-link" href="${t.href}" target="_blank" rel="noopener noreferrer">${t.label===`GitHub`?O(aa):j}<span>${t.text}</span></a> ${t.commit?k`<a class="bundle-origin-link bundle-commit-link" href="${t.commit.href}" data-tooltip="${t.commit.hash}" data-tooltip-icon="commit" data-tooltip-commit-info="${Le(e.commitInfo,t.commit.hash)??j}" target="_blank" rel="noopener noreferrer">${O(oa)}<span>${t.commit.text}</span></a>`:j} ${t.commit?.tags?k`<span class="bundle-origin-tags">${t.commit.tags.map(e=>k`<a class="bundle-origin-link bundle-tag-link" href="${e.href}" target="_blank" rel="noopener noreferrer">${O(Ki)}<span>${e.name}</span></a>`)}</span>`:j}</dd>`)}<dt>Integrity</dt><dd class="mono bundle-integrity">${e.integrity}</dd>${t?k`<dt>Prefix</dt><dd class="mono">${t}</dd>`:j} ${i?.entries?.size>0?k`<dt>${i.entries.size===1?`Entry`:`Entries`}</dt><dd class="mono"><ul class="bundles-entry-points">${[...i.entries].map(e=>k`<li><button type="button" class="bundle-entry-point" data-bundle-view-source="${e}">${WK(e,t)}</button></li>`)}</ul></dd>`:j} ${n&&Number.isSafeInteger(a)?k`<dt>Size</dt><dd>${Wr(a)}</dd>`:j}</dl>`,s=Bq(e,t);if(!n)return Vq(o(``,!0),s);if(t.error)return Vq(o(``,!0),s,{placeholder:k`<div class="bundles-overview-placeholder is-error">Failed to parse: ${t.error}</div>`});if(t.kind===`sourcemap`&&t.json){let e=t.json,n=Ht(t),r=e.sources??[...n.keys()],i=t.sourceSizes??(n.size===r.length?r.map(e=>n.get(e)??null):r.map((t,n)=>typeof e.sourcesContent?.[n]==`string`?fa(e.sourcesContent[n]):null));return hK(o,k`<dt>Version</dt><dd>${String(e.version??`?`)}</dd>${e.file?k`<dt>Output</dt><dd class="mono">${e.file}</dd>`:j} ${e.sourceRoot?k`<dt>Source root</dt><dd class="mono">${e.sourceRoot}</dd>`:j} ${e.names||t.namesCount!=null?k`<dt>Names</dt><dd>${e.names?.length??t.namesCount}</dd>`:j}`,r,i,null,s,{bundleSize:t.size,unpackedSize:Hq(i)})}if(t.kind===`stasis`&&t.bundle){let e=t.bundle,n=Ht(t),r=Ut(t),i=[...r.keys()],a=new Set(i.filter(e=>r.get(e)===`resource`)),c=new Set;for(let t of e.imports.keys()){let e=t.replace(/\s*\(with: .*\)\s*$/u,``);for(let t of e.split(`, `))c.add(t)}let l=[...c].toSorted(),u=i.map(e=>n.get(e));return hK(o,k`<dt>Version</dt><dd>${String(e.version)}</dd>${l.length>0?k`<dt>Resolution kinds</dt><dd>${l.join(`, `)}</dd>`:j}`,i,u,Gt(t),s,{bundleSize:t.size,unpackedSize:Hq(u),resources:a,details:t})}return Vq(o(``,!0),s,{placeholder:k`<div class="bundles-overview-placeholder">Bundle contents not parsed.</div>`})}function Wq(e,t){let n=`/api/npm/download?${new URLSearchParams({name:e.npm.name,version:e.npm.version})}`,r=k`<a class="bundles-download-btn" href="${n}">${Aq}<span>Tarball</span></a>`,i=k`<div class="bundles-overview-exports"><div class="bundles-overview-exports-row">${IB(e)}${r}</div></div>`;if(t?.integrity!==e.integrity||!t.json)return Vq(eM(e,{githubFigures:iV(e),provenance:lV(e),provenanceNamesBuilder:oV(e.npm)}),i,{overviewClass:`npm-overview`});let{sources:a}=t.json,o=Ht(t),s=a.map(e=>o.get(e)??null),{paths:c,binaries:l,content:u}=yV(t),d=JB(e.npm);return hK(t=>eM(e,{prefix:t,githubFigures:iV(e),provenance:lV(e),provenanceNamesBuilder:oV(e.npm),files:c}),nM(e,c,t),a,s,null,j,{bundleSize:t.size,unpackedSize:Hq(s),resources:l,leadColumn:k`${Kj(e)}${pV(e)}`,trailColumns:IH(l,o),summaryExtra:k`${ZB(e,c)}${DV(e,t)}${FH(e,Rq(t,{legend:!0}),t)}${$B(e,r,HV(e))}`,overviewClass:`npm-overview`,lines:Lq(t).lines,sized:(e,t,n)=>$k(e,u[e],n),fileTag:e=>k`${YB(d.get(e))}${OV(t,e,!0)}`,fileFlags:e=>AV(t,e,d.get(e)),fileIcon:e=>yt(e,l.has(e)?`binary`:void 0),fileFilter:CV(e)})}function Gq(){Ff().catch(()=>{});let e=Cf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=[],o=new Map,c=new Set;for(let[n,r]of i.byVersion){let i=[],l=new Map;for(let e of r.findings){let n=s(e,P.triage.get(C(e)))??null;n===`inprogress`?t.inprogress++:n===`fixed`?t.fixed++:n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:n===`ignored`&&t.ignored++,n===P.shownTriage&&(i.push(e),l.has(e.file)||l.set(e.file,[]),l.get(e.file).push(e))}if(i.length!==0){e.push([n,{findings:i,files:l,reports:r.reports}]);for(let e of i)a.push(e),o.has(e.file)||o.set(e.file,[]),o.get(e.file).push(e);for(let e of r.reports)c.add(e)}}e.length!==0&&(e.sort(([e],[t])=>of(e,t)),n.push([r,{findings:a,files:o,reports:c,versions:e}]))}let r=P.selectedPackage,i=r?n.find(([e])=>e===r)??null:null,a=null;if(i){let e=i[1].versions,t=P.selectedPackageVersion;a=e.find(([e])=>e===t)??null,!a&&e.length===1&&(a=e[0])}let o=a?a[1]:i?i[1]:null;if(i&&P.packageDetailsTab===`issues`)return Qq(i[0],o,a?a[0]:void 0);let c=P.packagesSearchQuery.trim().toLowerCase(),l=c?n.filter(([e])=>e.toLowerCase().includes(c)):n.slice();Xq(l,P.packagesSortBy);let u=n.reduce((e,[,t])=>e+t.findings.length,0),d=new Set;for(let[,e]of n)for(let t of e.reports)d.add(t);let f=i?`packages-layout open`:`packages-layout`;return k`<div class="${T({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Packages</h1><div class="meta-row"><span>${l.length===n.length?k`${n.length} ${n.length===1?`package`:`packages`}`:k`${l.length} of ${n.length} ${n.length===1?`package`:`packages`}`}</span> ${u>0?k`<span>${u} ${u===1?`finding`:`findings`} across ${d.size} ${d.size===1?`report`:`reports`}</span>`:j}</div></div>${Jq(t)}</header>${n.length===0?k`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:P.shownTriage?`No ${P.shownTriage} findings in any package.`:`No untriaged findings in any package.`}</p>`:l.length===0?k`<p style="${E({color:`var(--muted)`})}">No packages match "${P.packagesSearchQuery}".</p>`:k`<div class="${f}"><ul class="packages-list">${D(Kq(l),qq,e=>$q(e,r,P.selectedPackageVersion))}</ul>${i?k`<aside class="packages-details" id="packages-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-package aria-label="Close details">×</button></header><div class="packages-details-body">${nJ(i[0],o,a?a[0]:void 0)}</div></aside>`:j}</div>`}</div>`}function Kq(e){let t=[];for(let[n,r]of e){let e=r.versions;if(e.length<=1){let[r,i]=e[0];t.push({kind:`single`,pkg:n,version:r,bucket:i,totalVersions:1});continue}let[i,a]=e[0],o=P.expandedPackages.has(n);if(t.push({kind:`latest`,pkg:n,version:i,bucket:a,totalVersions:e.length,expanded:o}),o)for(let r=1;r<e.length;r++){let[i,a]=e[r];t.push({kind:`other`,pkg:n,version:i,bucket:a,totalVersions:e.length})}}return t}function qq(e){return e.version===null?`${e.kind}:${e.pkg}`:`${e.kind}:${e.pkg}@${e.version}`}function Jq(e){return k`<div class="packages-toolbar"><entity-search kind="packages"></entity-search><entity-sort kind="packages"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${Yq}"></triage-selector></div>`}var Yq=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function Xq(e,t){let n=t===`name-asc`?(e,t)=>e[0].localeCompare(t[0]):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||e[0].localeCompare(t[0]):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||e[0].localeCompare(t[0]):(e,t)=>t[1].findings.length-e[1].findings.length||e[0].localeCompare(t[0]);e.sort(n)}function Zq(e,t){let n={live:0,invalid:0,deleted:0};if(!e)return n;let r=t===void 0?e.files.values():e.byVersion.get(t)?.files.values()??[].values();for(let e of r)for(let t of e){let e=s(t,P.triage.get(C(t)))??null;e===`invalid`?n.invalid++:e===`deleted`?n.deleted++:n.live++}return n}function Qq(e,t,n){let r=Cf().get(e),i=Zq(r,n),a=P.packageSlideTriage??`live`,o=r?rJ(r,e,a,n):new Map,s=[...o.values()].reduce((e,t)=>e+t.length,0),c=a===`live`?s===1?`issue`:`issues`:s===1?`${a} issue`:`${a} issues`,l=a===`live`?`No live issues for this package.`:`No ${a} issues for this package.`,u=typeof n==`string`?` @ ${n}`:``;return k`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="package-slide-back" aria-label="Back to packages">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${`${e}${u}`}">${e}${u}</div><div class="bundles-slide-integrity">${s} ${c} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="package" .counts="${i}"></slide-triage-tabs></header><div class="bundles-slide-body">${o.size===0?k`<div class="bundle-issues-empty">${l}</div>`:Oq(o,{kind:`package`,bucketKey:e})}</div></div>`}function $q(e,t,n){let{kind:r,pkg:i,version:a,bucket:o}=e,s={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of o.findings){let t=Ni(e,P.severityMode);s[t]!==void 0&&s[t]++}let c=Ai.filter(e=>s[e]>0),l=nr(i),u={selected:i===t&&eJ(e,n),"packages-row-latest":r===`latest`,"packages-row-other":r===`other`},d=a===null?``:a,f=a===null?`Open issues for ${i}`:`Open issues for ${i}@${a}`;return k`<li class="${T(u)}" data-select-package="${i}" data-select-package-version="${d}"><span class="packages-dot" style="${E({background:l})}"></span><div class="packages-row-text"><div class="packages-name-line"><span class="packages-name" data-tooltip-truncated data-tooltip="${a===null?i:`${i}@${a}`}">${i}${a===null?j:k`<span class="packages-version">@${a}</span>`} </span>${r===`latest`?tJ(i,e.expanded,e.totalVersions-1):j}</div><span class="packages-row-meta">${o.findings.length} ${o.findings.length===1?`finding`:`findings`} · ${o.files.size} ${o.files.size===1?`file`:`files`} · ${o.reports.size} ${o.reports.size===1?`report`:`reports`}</span></div>${c.length>0?k`<div class="packages-row-chips">${c.map(e=>k`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${s[e]}</span>`)}</div>`:j} <button type="button" class="packages-row-issues" data-package-row-issues="${i}" data-package-row-issues-version="${d}" aria-label="${f}">Issues →</button></li>`}function eJ(e,t){return e.kind===`single`||e.version===t}function tJ(e,t,n){let r=t?`Hide`:`+${n} ${n===1?`version`:`versions`}`;return k`<button type="button" class="${T({"packages-row-expand":!0,expanded:t})}" data-package-expand="${e}" aria-expanded="${String(t)}" aria-label="${t?`Hide older versions of ${e}`:`Show older versions of ${e}`}" data-tooltip="${t?`Hide older versions`:`Show older versions (${n})`}"><span class="packages-row-expand-chevron" aria-hidden="true"></span> <span class="packages-row-expand-label">${r}</span></button>`}function nJ(e,t,n){let r=Cf().get(e),i=[...(r?rJ(r,e,`live`,n):new Map).values()].reduce((e,t)=>e+t.length,0);return k`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-package-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${i>0?k`<button type="button" class="bundles-tab bundles-tab-action" data-package-tab="issues">Issues (${i}) →</button>`:j}</div>${iJ(e,t,n)}`}function rJ(e,t,n=`live`,r){let i=new Map,a=r===void 0?e.files:e.byVersion.get(r)?.files??new Map;for(let[e,r]of a){let a=r.filter(e=>{let t=s(e,P.triage.get(C(e)))??null;return n===`invalid`?t===`invalid`:n===`deleted`?t===`deleted`:t!==`invalid`&&t!==`deleted`});if(a.length===0)continue;let o=aJ(t,e);i.has(o)||i.set(o,[]);let c=i.get(o);for(let e of a)c.push(e)}return i}function iJ(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=Ni(e,P.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),o=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),s=Cf().get(e)?.repos,c=s&&s.size===1?[...s][0]:null,l=c?/^https?:/iu.test(c)?c:`https://github.com/${c}`:null;return k`<dl class="packages-detail-meta"><dt>Package</dt><dd class="mono">${e}</dd>${n?k`<dt>Version</dt><dd class="mono">${n}</dd>`:j} ${l?k`<dt>Repository</dt><dd class="mono"><a href="${l}" target="_blank" rel="noopener">${c}</a></dd>`:j}<dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${i.length>0?k`<div class="packages-detail-chips">${i.map(e=>k`<span class="${`tree-count-chip ${e}`}">${r[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:j}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${o.map(e=>{let t=Px[Rx(e)]??Px.default;return k`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${O(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${at(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${a.map(([t,n])=>{let r=aJ(e,t);return k`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${t}">${r}</span> <span class="packages-detail-file-count">${n.length}</span></li>`})}</ul>`}function aJ(e,t){for(let n of[`node_modules`,`dependencies`]){let r=`${n}/${e}/`,i=t.indexOf(r);if(i>=0)return t.slice(i+r.length)}return t.startsWith(`${e}/`)?t.slice(e.length+1):t}function oJ(){Ff().catch(()=>{});let e=wf(),t={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},n=[];for(let[r,i]of e){let e=[],a=new Map;for(let n of i.findings){let r=s(n,P.triage.get(C(n)))??null;r===`inprogress`?t.inprogress++:r===`fixed`?t.fixed++:r===`invalid`?t.invalid++:r===`deleted`?t.deleted++:r===`ignored`&&t.ignored++,r===P.shownTriage&&(e.push(n),a.has(n.file)||a.set(n.file,[]),a.get(n.file).push(n))}e.length>0&&n.push([r,{findings:e,files:a,reports:i.reports}])}let r=P.selectedRepository,i=r?n.find(([e])=>e===r)??null:null;if(i&&P.repositoryDetailsTab===`issues`)return dJ(i[0],i[1]);let a=P.repositoriesSearchQuery.trim().toLowerCase(),o=a?n.filter(([e])=>e.toLowerCase().includes(a)||Mn(e).toLowerCase().includes(a)):n.slice();lJ(o,P.repositoriesSortBy);let c=n.reduce((e,[,t])=>e+t.findings.length,0),l=new Set;for(let[,e]of n)for(let t of e.reports)l.add(t);let u=i?`packages-layout open`:`packages-layout`;return k`<div class="${T({"packages-view":!0,"with-details":!!i})}"><header class="page-head"><div class="page-title"><h1>Repositories</h1><div class="meta-row"><span>${o.length===n.length?k`${n.length} ${n.length===1?`repository`:`repositories`}`:k`${o.length} of ${n.length} ${n.length===1?`repository`:`repositories`}`}</span> ${c>0?k`<span>${c} ${c===1?`finding`:`findings`} across ${l.size} ${l.size===1?`report`:`reports`}</span>`:j}</div></div>${sJ(t)}</header>${n.length===0?k`<p style="${E({color:`var(--muted)`})}">${e.size===0?`Indexing reports… this view populates as the OPFS scan finishes.`:P.shownTriage?`No ${P.shownTriage} findings in any repository.`:`No untriaged findings in any repository.`}</p>`:o.length===0?k`<p style="${E({color:`var(--muted)`})}">No repositories match "${P.repositoriesSearchQuery}".</p>`:k`<div class="${u}"><ul class="packages-list">${D(o,([e])=>e,([e,t])=>fJ(e,t,e===r))}</ul>${i?k`<aside class="packages-details" id="repositories-details"><header class="packages-details-bar"><span class="packages-details-label">Details</span> <button type="button" class="packages-details-close" data-deselect-repository aria-label="Close details">×</button></header><div class="packages-details-body">${pJ(i[0],i[1])}</div></aside>`:j}</div>`}</div>`}function sJ(e){return k`<div class="packages-toolbar"><entity-search kind="repositories"></entity-search><entity-sort kind="repositories"></entity-sort><triage-selector variant="packages" .counts="${e}" .states="${cJ}"></triage-selector></div>`}var cJ=[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`];function lJ(e,t){let n=t===`name-asc`?(e,t)=>Mn(e[0]).localeCompare(Mn(t[0])):t===`files-desc`?(e,t)=>t[1].files.size-e[1].files.size||Mn(e[0]).localeCompare(Mn(t[0])):t===`reports-desc`?(e,t)=>t[1].reports.size-e[1].reports.size||Mn(e[0]).localeCompare(Mn(t[0])):(e,t)=>t[1].findings.length-e[1].findings.length||Mn(e[0]).localeCompare(Mn(t[0]));e.sort(n)}function uJ(e){let t={live:0,invalid:0,deleted:0};if(!e)return t;for(let n of e.files.values())for(let e of n){let n=s(e,P.triage.get(C(e)))??null;n===`invalid`?t.invalid++:n===`deleted`?t.deleted++:t.live++}return t}function dJ(e,t){let n=wf().get(e),r=uJ(n),i=P.repositorySlideTriage??`live`,a=n?mJ(n,i):new Map,o=[...a.values()].reduce((e,t)=>e+t.length,0),s=i===`live`?o===1?`issue`:`issues`:o===1?`${i} issue`:`${i} issues`,c=i===`live`?`No live issues for this repository.`:`No ${i} issues for this repository.`;return k`<div class="packages-view packages-slide-view"><header class="bundles-slide-bar"><button type="button" class="bundles-slide-back" data-action="repository-slide-back" aria-label="Back to repositories">← Back</button><div class="bundles-slide-title"><div class="bundles-slide-name" data-tooltip-truncated data-tooltip="${Mn(e)}">${Mn(e)}</div><div class="bundles-slide-integrity">${o} ${s} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</div></div><slide-triage-tabs kind="repository" .counts="${r}"></slide-triage-tabs></header><div class="bundles-slide-body">${a.size===0?k`<div class="bundle-issues-empty">${c}</div>`:Oq(a,{kind:`repository`,bucketKey:e})}</div></div>`}function fJ(e,t,n){let r={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=Ni(e,P.severityMode);r[t]!==void 0&&r[t]++}let i=Ai.filter(e=>r[e]>0),a=nr(e),o=Mn(e);return k`<li class="${n?`selected`:``}" data-select-repository="${e}"><span class="packages-dot" style="${E({background:a})}"></span><div class="packages-row-text"><span class="packages-name" data-tooltip-truncated data-tooltip="${o}">${o}</span> <span class="packages-row-meta">${t.findings.length} ${t.findings.length===1?`finding`:`findings`} · ${t.files.size} ${t.files.size===1?`file`:`files`} · ${t.reports.size} ${t.reports.size===1?`report`:`reports`}</span></div>${i.length>0?k`<div class="packages-row-chips">${i.map(e=>k`<span class="${`tree-count-chip ${e}`}" data-tooltip="${e.replaceAll(`_`,` `)}">${r[e]}</span>`)}</div>`:j} <button type="button" class="packages-row-issues" data-repository-row-issues="${e}" aria-label="${`Open issues for ${o}`}">Issues →</button></li>`}function pJ(e,t){let n=wf().get(e),r=[...(n?mJ(n):new Map).values()].reduce((e,t)=>e+t.length,0);return k`<div class="bundles-tabs" role="tablist"><button type="button" class="bundles-tab active" data-repository-tab="overview" aria-selected="true" role="tab">Overview</button> <span class="bundles-tabs-spacer"></span> ${r>0?k`<button type="button" class="bundles-tab bundles-tab-action" data-repository-tab="issues">Issues (${r}) →</button>`:j}</div>${hJ(e,t)}`}function mJ(e,t=`live`){let n=new Map;for(let[r,i]of e.files){let e=i.filter(e=>{let n=s(e,P.triage.get(C(e)))??null;return t===`invalid`?n===`invalid`:t===`deleted`?n===`deleted`:n!==`invalid`&&n!==`deleted`});e.length>0&&n.set(r,e)}return n}function hJ(e,t){let n={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0};for(let e of t.findings){let t=Ni(e,P.severityMode);n[t]!==void 0&&n[t]++}let r=Ai.filter(e=>n[e]>0),i=[...t.files.entries()].toSorted(([e,t],[n,r])=>r.length===t.length?e.localeCompare(n):r.length-t.length),a=[...t.reports].toSorted((e,t)=>e.localeCompare(t)),o=/^https?:/iu.test(e)?e:`https://github.com/${e}`;return k`<dl class="packages-detail-meta"><dt>Repository</dt><dd class="mono"><a href="${o}" target="_blank" rel="noopener">${Mn(e)}</a></dd><dt>Findings</dt><dd>${t.findings.length}</dd><dt>Files</dt><dd>${t.files.size}</dd><dt>Reports</dt><dd>${t.reports.size}</dd></dl>${r.length>0?k`<div class="packages-detail-chips">${r.map(e=>k`<span class="${`tree-count-chip ${e}`}">${n[e]} ${e.replaceAll(`_`,` `)}</span>`)}</div>`:j}<h3 class="packages-detail-section">Reports</h3><ul class="packages-detail-reports">${a.map(e=>{let t=Px[Rx(e)]??Px.default;return k`<li><button type="button" class="packages-detail-report" data-package-report="${e}">${O(t)}<span class="packages-detail-report-label" data-tooltip-truncated data-tooltip="${e}">${at(e)}</span></button></li>`})}</ul><h3 class="packages-detail-section">Files</h3><ul class="packages-detail-files">${i.map(([e,t])=>k`<li class="packages-detail-file"><span class="packages-detail-file-path mono" data-tooltip-truncated data-tooltip="${e}">${e}</span> <span class="packages-detail-file-count">${t.length}</span></li>`)}</ul>`}function gJ(e,t){let n=new Set(e),r=new Set,i=new Map,a=new Map(e.map((e,t)=>[e,t]));for(let e of t){let t=[...new Map(e.members.map(e=>[JSON.stringify([e.id,o(e)]),e])).values()],s=t.filter(e=>n.has(e.id));if(s.length===0)continue;for(let e of s)r.add(e.id);let c=t.filter(e=>n.has(e.id)||e.isApp),l=JSON.stringify([t.map(e=>e.id).toSorted(),c.map(e=>[e.id,o(e),e.title??``,e.source??null,e.revalidate??``]).toSorted(([e,t],[n,r])=>e.localeCompare(n)||Number(t)-Number(r))]),u=i.get(l);u||(u={key:l,members:c,reports:[],first:Math.min(...s.map(e=>a.get(e.id)))},i.set(l,u)),u.reports.some(t=>t.name===e.report&&t.managedReportId===e.managedReportId)||u.reports.push({name:e.report,...e.managedReportId?{managedReportId:e.managedReportId}:{},findingId:s[0].id,rowIndex:e.index})}return{rows:[...i.values()].toSorted((e,t)=>e.first-t.first),missing:e.filter(e=>!r.has(e))}}function _J(e,t,n){return`${e} ${e===1?t:n}`}function vJ(e,t){let n=s(e,P.triage.get(e.id)),r=o(e)?t.filter(({name:t})=>_n(P.triage,e.id,t)):[],i=n??(r.length>0?`ignored`:null);if(!i)return j;let a=n!==`ignored`&&i===`ignored`&&r.length<t.length,c=a?`Ignored in ${r.length}/${t.length} reports`:Di[i];return k`<span class="${`links-finding-status triage-${i}`}" data-tooltip="${a?r.map(({name:e})=>at(e)).join(`, `):j}">${c}</span>`}function yJ(e,t=[],n=!0,r=j){let{id:i,title:a}=e,o=t[0]?.name,s=Xn(i),c=Yn(i)??s;return k`<li class="${n?`links-finding`:`links-finding links-finding-context`}">${o?k`<button type="button" class="links-finding-id mono" data-links-preview="${i}" data-preview-report="${o}" data-preview-row="${t[0].rowIndex??j}" data-preview-managed-report="${t[0].managedReportId??j}" data-tooltip="${s}" aria-haspopup="dialog">${c}</button>`:$r(i)?k`<a class="links-finding-id mono" href="${`#${Vr({id:i})}`}" data-tooltip="${s}">${c}</a>`:k`<span class="links-finding-id mono">${c}</span>`} ${a?k`<span class="links-finding-title">${a}</span>`:j} ${vJ(e,t)} ${n?j:k`<span class="links-member-context">not in this link</span>`} ${r}</li>`}function bJ(e){let t=!!P.currentLinks?.managedId;return k`<div class="links-finding-reports">${e.map(({name:e,findingId:n,managedReportId:r,rowIndex:i})=>k`<button type="button" class="links-finding-report report-button" data-links-report="${t?j:e}" data-links-finding="${n}" data-managed-report="${r??j}" data-links-preview="${t?n:j}" data-preview-report="${t?e:j}" data-preview-row="${t?i:j}" data-preview-managed-report="${t?r:j}">${O(rt[Rx(e)]??rt.default)}<span class="links-finding-report-label report-button-label" data-tooltip-truncated data-tooltip="${at(e)}">${at(e)}</span></button>`)}</div>`}function xJ(e,t){let n=e.reports.toSorted((e,t)=>at(e.name).localeCompare(at(t.name)));if(e.members.length===1){let r=e.members[0];return k`<li class="links-report-row links-report-row-single"><ul class="links-row-members">${yJ(r,n,t.has(r.id),bJ(n))}</ul></li>`}return k`<li class="links-report-row"><div class="links-report-row-head"><span class="links-row-count">${_J(e.members.length,`finding`,`findings`)} in row</span> ${bJ(n)}</div><ul class="links-row-members">${e.members.map(e=>yJ(e,n,t.has(e.id)))}</ul></li>`}function SJ(e,t){let{rows:n,missing:r}=gJ(e,Wd(e)),i=new Set(e);return k`<li class="links-group"><div class="links-group-head"><span class="links-group-index">Link ${t+1}</span> <span class="links-group-count">${_J(e.length,`finding`,`findings`)}</span></div><ul class="links-group-rows">${D(n,e=>e.key,e=>xJ(e,i))}</ul>${r.length>0?k`<div class="links-unlocated"><div class="links-finding-missing">Not in your reports</div><ul class="links-row-members">${r.map(e=>yJ({id:e,title:Ud(e)}))}</ul></div>`:j}</li>`}function CJ(e=j){let t=P.currentLinks;if(!t)return j;Ff().catch(()=>{});let{name:n,groups:r,skipped:i}=t,a=new Set,o=new Set,s=0;for(let e of r)for(let t of e){if(a.has(t))continue;a.add(t);let e=Hd(t);if(e.length!==0){s++;for(let t of e)o.add(t)}}return k`<div class="links-view">${t.managedId?k`<div class="meta-row"><button type="button" class="report-button" @click="${()=>document.dispatchEvent(new CustomEvent(`managed-admin-navigate`,{detail:{view:`manage-deduplication`}}))}">‹ Deduplication</button></div>`:j}<header class="page-head"><div class="page-title"><h1>Links${e}</h1><div class="meta-row"><span class="links-file-name" data-tooltip-truncated data-tooltip="${n}">${O(Px[Rx(n)]??Px.default)}${at(n)}</span> <span>${_J(r.length,`link`,`links`)}</span> <span>${_J(a.size,`finding`,`findings`)}</span> ${o.size>0?k`<span>found in ${_J(o.size,`report`,`reports`)}</span>`:j}</div></div></header>${s<a.size?k`<p class="links-note">${_J(a.size-s,`linked finding is`,`linked findings are`)} not in any report you hold. Import the reports they came from and this page fills in.</p>`:j} ${i>0?k`<p class="links-note">${_J(i,`entry`,`entries`)} in this file could not be linked — an id the app can't follow (a session-local number, or something that isn't an id at all).</p>`:j} ${r.length===0?k`<p class="links-empty">This file declares no links: every entry in it named fewer than two findings this app can reach.</p>`:k`<ol class="links-list">${D(r,(e,t)=>`${t}:${e.join(` `)}`,(e,t)=>SJ(e,t))}</ol>`}</div>`}function wJ(e,t,n){let r=new Set(t);for(let e of n)r.add(e);return e.filter(e=>r.has(e))}function TJ(){if(P.currentWorkspace){let e=L().find(e=>e.id===P.currentWorkspace),t=P.reports.map(e=>e.fileName).filter(e=>typeof e==`string`);return{mode:`workspace`,workspaceId:P.currentWorkspace,fileNames:e?wJ(e.reports??[],P.storedFiles??[],t):t}}if(P.currentFile){let e=L().find(e=>Array.isArray(e.reports)&&e.reports.includes(P.currentFile));return e?{mode:`single`,workspaceId:e.id,fileNames:[P.currentFile]}:null}return null}var EJ=1500;function DJ({open:e,later:t=(e,t)=>setTimeout(e,t),modalOpen:n=()=>yv()}){let r=new Set,i=!1;function a(a,o,{onSync:s,retry:c}={}){!a||!Array.isArray(o)||o.length===0||i||r.has(a)||(i=!0,t(async()=>{let l;if(n())l={shown:!1,sync:!1};else try{l=await e([...o])}catch{l={shown:!1,sync:!1}}if(i=!1,!l.shown){typeof c==`function`&&t(c,EJ);return}r.add(a),l.sync&&typeof s==`function`&&s()},0))}return{suggestSync:a,isClosedFor:e=>r.has(e)}}function OJ(e,t,n=0){let{viewMode:r,focusGid:i,tableSelectedGid:a,kanbanPopoverGid:o}=t,s=r===`focus`?i:r===`table`?a:r===`kanban`?o:null;return(s?e.find(e=>V(e)===s):null)||(r===`focus`?e[Math.min(n,e.length-1)]??null:null)}function kJ(e,t){if(t.currentView!==`findings`)return null;let n=fi({view:`findings`,teamId:t.currentManagedTeam,reportId:t.currentManagedReport},t.managedTeams);if(!n||!e)return n;let r={...n,finding:{id:C(Ag(e))}};return oi(r)?r:n}function AJ(e){return e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:``}function jJ(e){let t=e.summary,n=[];return Number.isSafeInteger(e.byteSize)&&e.byteSize>=0&&n.push(Wr(e.byteSize)),t&&[t.files,t.lines].every(e=>Number.isSafeInteger(e)&&e>=0)&&n.push(`${t.files.toLocaleString()} files`,`${t.lines.toLocaleString()} LoC`),n.join(` · `)}function MJ(e,t=``){let n=t.trim().toLowerCase(),r=e=>String(e??``).toLowerCase().includes(n);return(Array.isArray(e)?e:[]).flatMap(e=>{let t=(e.reports??[]).filter(e=>r(e.filename)||r(at(e.filename??``))),n=(e.bundles??[]).filter(e=>r(e.filename));return r(e.name)||t.length>0||n.length>0?[{team:e,reports:t,bundles:n}]:[]})}function NJ(e,t){return e?.appMode===!0||e?.appReports===0&&t>0}function PJ(e){return(e?.appMode?e.appFindings:e?.findings)??null}var FJ=class{constructor(){this.expanded=new Map}sync(e,t=!1){let n=JSON.stringify([e.managedSession?.id,e.managedSession?.role,e.managedSession?.csrfToken]);n!==this.owner&&(this.expanded.clear(),this.focus=``,this.owner=n);let r=e.managedTeams??[];for(let e of this.expanded.keys())r.some(t=>t.id===e)||this.expanded.delete(e);let i=Tx(e),a=[`findings`,`files`,`links`].includes(e.currentView)?e.currentManagedReport:null,o=i?`bundles`:`reports`,s=r.find(t=>t.id===e.currentManagedTeam&&(i?t.bundles?.some(e=>e.id===i):t.reports?.some(e=>e.id===a))),c=JSON.stringify([o,i||a,s?.id]);if((t||c!==this.focus)&&(this.focus=c,s)){let e=this.expanded.get(s.id)??new Set;e.add(o),this.expanded.set(s.id,e)}}toggle(e,t){let n=this.expanded.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),this.expanded.set(e,n)}shown(e,t,n,r){return!n||r||this.expanded.get(e)?.has(t)===!0}};function IJ(e,t,n=()=>null){if(!e.currentWorkspace)return null;if(e.currentManagedTeam){let t=e.managedTeams.find(t=>t.id===e.currentManagedTeam);if(!t)return null;let n=(t.reports??[]).filter(e=>e.analyzer!==`links`).map(e=>({...e,managedId:e.id,name:e.filename,hidden:e.visible===!1,available:!0})),r=(t.bundles??[]).map(e=>({...wx(e),hidden:e.visible===!1,available:!0})),i=e.managedSession;return{id:t.id,scope:`team`,title:`Team: ${t.name}`,findings:PJ(t.app),reports:n,bundles:r,repositories:LJ(t.repos??[],n,r,Je(i)),dependencyReview:t.dependencyReview===!0}}let r=t.find(t=>t.id===e.currentWorkspace);if(!r)return null;let i=new Map(e.bundles.map(e=>[e.integrity,e])),a=new Set(e.storedFiles??[]);return{id:r.id,scope:`workspace`,title:`Workspace: ${r.name}`,reports:[...new Set(r.reports??[])].filter(e=>n(e)!==`links`).map(e=>({name:e,available:a.has(e)})),bundles:[...new Set(r.bundles??[])].map(e=>{let t=i.get(e);return t?{...t,available:!0}:{integrity:e,name:`${e.slice(0,24)}\u2026`,available:!1}})}}function LJ(e,t,n,r){let i=new Map;for(let{repoId:t,fullName:n,path:a}of e){let e=i.get(t)??{repoId:t,name:n,paths:[],reports:0,bundles:0,available:r};a&&e.paths.push(a),i.set(t,e)}let a=new Map([...i.values()].map(e=>[e.name,e]));for(let e of t)a.has(e.repoFullName)&&a.get(e.repoFullName).reports++;for(let e of n)i.has(e.repoId)&&i.get(e.repoId).bundles++;return[...i.values()]}var RJ=[[`findings`,`Findings`],[`reports`,`Reports`],[`bundles`,`Bundles`],[`repositories`,`Repositories`],[`dependencies`,`Dependencies`]],zJ=e=>e===`findings`||e===`files`?`findings`:e.slice(10);function BJ(e,t,{findings:n=e.findings,statusBar:r=j}={}){let i=zJ(t),a={findings:n,reports:e.reports.length,bundles:e.bundles.length,repositories:e.repositories.length};return k`<bundle-slide-header class="bundles-slide-header team-slide-header"><header class="bundles-slide-bar team-slide-bar"><h1 class="team-slide-name" data-tooltip-truncated data-tooltip="${e.title}">${e.title}</h1>${r}<div class="bundles-slide-tabs" role="tablist" aria-label="Team">${RJ.filter(([t])=>t!==`dependencies`||e.dependencyReview).map(([e,t])=>k`<button type="button" class="${T({"bundles-tab":!0,"team-slide-tab":!0,active:i===e})}" role="tab" aria-selected="${String(i===e)}" data-action="${`workspace-${e}`}">${t}${a[e]==null?j:k`<span class="n">${a[e].toLocaleString()}</span>`}</button>`)}</div></header></bundle-slide-header>`}function VJ(e){return k`${e?.scope===`team`?BJ(e,`findings`):j}<p class="triage-loading" role="status">Loading report triage…</p>`}function HJ(e,t){return t===`findings`?e.title:k`<button type="button" class="workspace-title-link" data-action="workspace-findings">${e.title}</button>`}function UJ(e,t,n){if(!e)return j;let r=e[t].length;if(t===`bundles`&&r===0)return j;let i=n===`workspace-${t}`;return k`<button type="button" class="${`files-toggle-btn${i?` active`:``}`}" data-action="${`workspace-${t}`}" aria-pressed="${String(i)}">${`${r} ${r===1?t.slice(0,-1):t}`}</button>`}function WJ(e,t){if(!(e>1))return j;let n=t===`files`;return k`<button type="button" class="${`files-toggle-btn${n?` active`:``}`}" data-action="toggle-files" aria-pressed="${String(n)}">${`${e} files`}</button>`}function GJ(e){let t=[e.reports?`${e.reports.toLocaleString()} report${e.reports===1?``:`s`}`:null,e.bundles?`${e.bundles.toLocaleString()} bundle${e.bundles===1?``:`s`}`:null].filter(Boolean).join(` · `),n=k`<span class="workspace-content-icon">${O(ia)}</span> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}</span> ${e.paths.length>0?k`<span class="workspace-content-repo">${e.paths.join(`, `)}</span>`:j} </span><span class="workspace-content-stats">${t}</span> ${e.available?k`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:j}`;return k`<li>${e.available?k`<button type="button" class="workspace-content-row" data-workspace-repository="${e.repoId}" data-repository-name="${e.name}" data-repository-path="${e.paths.length===1?e.paths[0]:``}">${n}</button>`:k`<div class="workspace-content-row">${n}</div>`}</li>`}function KJ(e,t){if(!e)return k`<p class="workspace-content-empty">This workspace is no longer available.</p>`;let n=`workspace-${t}`;if(t===`dependencies`&&e.scope===`team`)return k`<section class="workspace-content-view">${BJ(e,n)} ${e.dependencyReview?k`<team-dependencies .repositories="${e.repositories}" .team="${e.id}"></team-dependencies>`:k`<p class="workspace-content-empty">You review no dependencies in this team.</p>`}</section>`;let r=e[t]??[];return k`<section class="workspace-content-view">${e.scope===`team`?BJ(e,n):k`<header class="page-head"><div class="page-title"><h1>${HJ(e,n)}${UJ(e,`reports`,n)}${UJ(e,`bundles`,n)}</h1></div></header>`} ${r.length>0?k`<ul class="workspace-content-list">${t===`repositories`?r.map(GJ):r.map(e=>{let n=[e.kind===`stasis`?`Stasis`:e.kind===`sourcemap`?`Sourcemap`:null,Number.isFinite(e.size)?Wr(e.size):null,Number.isFinite(e.summary?.files)?`${e.summary.files.toLocaleString()} files`:null,Number.isFinite(e.summary?.lines)?`${e.summary.lines.toLocaleString()} LoC`:null].filter(Boolean).join(` · `),r=e.repoFullName?`${e.repoFullName}${e.repoDirectory?`/${e.repoDirectory}`:``}`:null;return k`<li class="${e.hidden?`workspace-content-hidden`:``}"><button type="button" class="workspace-content-row" data-workspace-report="${t===`reports`?e.managedId??e.name:j}" data-workspace-bundle="${t===`bundles`?e.managedId??e.integrity:j}" ?disabled="${!e.available}"><svg class="workspace-content-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="${t===`bundles`?`m12 3 9 5v8l-9 5-9-5V8zM3 8l9 5 9-5M12 13v8M7.5 5.5l9 5`:`M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9zM14 3v6h6M8 13h8M8 17h5`}/"></path></svg> <span class="workspace-content-label"><span class="workspace-content-name">${e.name}${e.hidden?k`<span class="workspace-content-visibility">Hidden</span>`:j}</span> ${r?k`<span class="workspace-content-repo">${r}</span>`:j} </span><span class="workspace-content-stats">${e.available?n:`Not available locally`}</span> ${e.available?k`<span class="workspace-content-arrow" aria-hidden="true">→</span>`:j}</button></li>`})}</ul>`:k`<p class="workspace-content-empty">No ${t} in this ${e.scope}.</p>`}</section>`}var qJ=2,JJ=6e4,YJ=new Map,XJ=[],ZJ=new Set,QJ=null,$J=0,eY=()=>{for(let e of ZJ)e()};function tY(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==QJ&&(YJ.clear(),XJ.length=0,QJ=e),YJ}function nY(){for(;$J<qJ&&XJ.length>0;)$J++,XJ.shift()().finally(rY)}function rY(){$J--,eY(),nY()}var iY=e=>Number.isSafeInteger(e)&&e>=0?e:null,aY=e=>iY(e?.additions)===null||iY(e?.deletions)===null?null:{additions:e.additions,deletions:e.deletions};function oY(e,t,n){let r=tY(),i=`${e}\0${t}\0${n}`,a=r.get(i);if(a&&Date.now()<a.until)return a;let o={status:`loading`,until:1/0};return r.set(i,o),XJ.push(()=>Sb(e,t,n).then(e=>{let t=aY(e);return r.get(i)!==o||r.set(i,t?{status:`ready`,until:1/0,...t,typeless:aY(e.typeless),binary:e.binary===!0}:{status:`error`,until:Date.now()+JJ,error:`The server answered with no lines.`}),null},e=>(r.get(i)!==o||(e?.name===`AbortError`?r.delete(i):r.set(i,{status:`error`,until:Date.now()+JJ,error:e?.message||`Its lines couldn’t be counted.`})),null))),nY(),o}var sY=e=>e.was?.find(t=>t!==e.version)??`(empty)`,cY=(e,t)=>k`<span class="is-added">+${e.toLocaleString(`en-US`)}</span> <span class="is-deleted">−${t.toLocaleString(`en-US`)}</span>`,lY=class extends ga{static properties={name:{attribute:!1},version:{attribute:!1},base:{attribute:!1}};createRenderRoot(){return this}constructor(){super(),this._near=!1,this._notify=()=>this.requestUpdate()}connectedCallback(){super.connectedCallback(),this._watch()}disconnectedCallback(){super.disconnectedCallback(),this._unwatch()}_watch(){ZJ.add(this._notify),sN(this,e=>{!e||this._near||(this._near=!0,this.requestUpdate())})}_unwatch(){ZJ.delete(this._notify),lN(this)}render(){if(!this._near||!this.name||!this.version)return j;let e=oY(this.name,this.version,this.base??`(empty)`),t=this.base&&this.base!==`(empty)`?`against ${this.base}`:`the whole package`;return e.status===`loading`?k`<span class="npm-delta is-loading" aria-label="Counting its lines">…</span>`:e.status===`error`?k`<span class="npm-delta is-error" data-tooltip="${e.error}">?</span>`:k`<span class="npm-delta" data-tooltip="${`Lines it adds and removes, ${t}`}">${cY(e.additions,e.deletions)}${e.binary?k`<span class="npm-delta-binary" data-tooltip="Binary files changed too, which no line counts">, binary</span>`:j}${e.typeless?k`<span class="npm-delta-typeless" data-tooltip="Leaving out the declaration files changed in types alone">(${cY(e.typeless.additions,e.typeless.deletions)} -types)</span>`:j}</span>`}};customElements.get(`npm-delta`)||customElements.define(`npm-delta`,lY);var uY=class extends ga{static properties={text:{attribute:!1},label:{attribute:!1},_copied:{state:!0},_error:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.text=null,this.label=`Copy dependency review`}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this._timer)}async _copy(){if(this._copyable()){this._error=!1;try{await navigator.clipboard.writeText(this.text),this._copied=!0,clearTimeout(this._timer),this._timer=setTimeout(()=>{this._copied=!1},2e3)}catch{this._error=!0}}}_copyable(){return typeof this.text==`string`&&this.text.trim()!==``}render(){return this._copyable()?k`<button type="button" class="${`bundle-code-copy-path dependency-review-copy-button${this._copied?` copied`:``}`}" aria-label="${this.label}" data-tooltip="${this.label}" @click="${()=>this._copy()}">${ZC}</button> ${this._error?k`<span role="alert">Could not copy to the clipboard.</span>`:j}`:j}};customElements.define(`dependency-review-copy`,uY);var dY=12e4,fY=3e4,pY=3,mY=12,hY=48,gY=3,_Y=[[`pulls`,`Pull requests`],[`versions`,`Versions`],[`branch`,`Default branch`],[`reviews`,`Reviews`]],vY=new Map,yY=new Set,bY=[],xY=null,SY=0,CY=()=>{for(let e of yY)e()};globalThis.addEventListener?.(`dependency-review-changed`,()=>{vY.clear(),bY.length=0,CY()});function wY(){let e=P.managedSession?`${P.managedSession.id}\0${P.managedSession.role}`:null;return e!==xY&&(vY.clear(),bY.length=0,xY=e),vY}function TY(){for(;SY<gY&&bY.length>0;)SY++,bY.shift()().finally(EY)}function EY(){SY--,CY(),TY()}async function DY(e){let t=[],n=null;for(let r=0;r<pY;r++){let r=await vb(e,`pulls`,{state:`open`,...n?{after:n}:{}});if(t.push(...(Array.isArray(r?.items)?r.items:[]).filter(e=>Number.isSafeInteger(e?.number)&&e.number>0)),r?.more!==!0||typeof r.after!=`string`)return{items:t,more:!1};n=r.after}return{items:t,more:!0}}var OY=new Set([`no-directory`,`no-repository`]);async function kY(e){try{let t=await xb(e);return t?.review?{branch:HR(t),pulls:await DY(e)}:{branch:null}}catch(e){if(OY.has(e?.code))return{branch:null};throw e}}function AY(e){let t=wY(),n=t.get(e);if(n&&Date.now()<n.until)return n;let r={status:`loading`,until:1/0};return t.set(e,r),bY.push(()=>kY(e).then(n=>(t.get(e)===r&&t.set(e,{status:`ready`,until:Date.now()+dY,...n}),null),n=>(t.get(e)!==r||(n?.name===`AbortError`?t.delete(e):t.set(e,{status:`error`,until:Date.now()+fY,error:n?.message||`It couldn’t be read.`})),null))),TY(),r}var jY=(e,t)=>`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`,MY=e=>`${e.name}@${e.version??``}${e.patched?`+patch`:``}`,NY=({repo:e,item:t})=>`${e.name}#${t.number}`,PY={git:`From git, which isn’t reviewed`,tarball:`A tarball not npm’s registry’s of its version, which isn’t reviewed`,integrity:`Locked with no integrity, which its reviews are held to`};function FY(e,t){let n=YR(e,t);return n===`unsupported`?k`<span class="team-deps-review is-failed" data-tooltip="${PY[e.unsupported]??j}">can’t review</span>`:e.rejected?k`<span class="team-deps-review is-failed" data-tooltip="A reviewer rejects it: it wants their newer accepting review">rejected</span>`:e.patched&&n===`wanted`?k`<span class="team-deps-review is-wanted" data-tooltip="Reviews here pass no patch: the server’s reviewed dependencies, or reviews of its patch in the pull request’s comments, pass it">patched</span>`:n===`wanted`?k`<span class="team-deps-review is-wanted" data-tooltip="${`${jY(e.reviews,`review`)} of ${t.required} required${e.commented?`; ${jY(e.commented,`reviewer`)} in its comments, which count here alone`:``}`}">${e.reviews}/${t.required}</span>`:j}function IY(e,t,{others:n=[],adders:r=!1,elsewhere:i=[]}={}){let a=e.source===`registry`&&e.version,o=e.was?.find(t=>t!==e.version),s=t?.canReview&&!e.patched&&YR(e,t)!==`unsupported`,c=a?oi({view:`npm`,packageName:e.name,packageSpec:e.version,...s?{bundleTab:`review`,...o?{reviewPackage:e.name,reviewSpec:o}:{}}:{}}):null,l=k`${vP}<span class="team-deps-name">${e.name}${e.version?k`<span class="team-deps-version">@${e.version}</span>`:j}</span> ${a&&YR(e,t)===`wanted`?k`<npm-delta .name="${e.name}" .version="${e.version}" .base="${sY(e)}"></npm-delta>`:j} ${FY(e,t)} ${i.length>0?k`<span class="team-deps-elsewhere" data-tooltip="${`Reviewed in the comments of ${i.join(`, `)}, which count there alone`}">in review in ${i[0]}${i.length>1?` +${i.length-1}`:``}</span>`:j} ${n.length>0?k`<span class="team-deps-also" data-tooltip="${`Added by ${n.join(`, `)}${r?``:` too`}`}">${r?`${n[0]}${n.length>1?` +${n.length-1}`:``}`:`+${n.length}`}</span>`:j}`;return k`<li>${c?k`<a class="team-deps-row" href="${c}" target="_blank" rel="noopener noreferrer">${l}</a>`:k`<span class="team-deps-row">${l}</span>`}</li>`}var LY=K(A`<path d="m6 4 4 4-4 4"/>`),RY=class extends Rh{static properties={repositories:{attribute:!1},team:{attribute:!1},_open:{state:!0}};createRenderRoot(){return this}constructor(){super(),this.repositories=[],this.team=null,this._open=new Set,this._notify=()=>this.requestUpdate()}pick(e,{push:t=!0}={}){P.teamDependenciesTab=e;let n=fi({view:`workspace-dependencies`,teamId:this.team,dependencyTab:e},P.managedTeams);t?U?.pushRoute(n):U?.replaceRoute(n)}updated(){this._shown&&this._shown!==P.teamDependenciesTab&&this.pick(this._shown,{push:!1})}toggle(e){let t=new Set(this._open);t.delete(e)||t.add(e),this._open=t}connectedCallback(){super.connectedCallback(),yY.add(this._notify),this._unsubscribe=PR(this._notify)}disconnectedCallback(){super.disconnectedCallback(),yY.delete(this._notify),this._unsubscribe?.()}open(e,{repo:t,item:n}){e.preventDefault(),Xe({repository:{repoId:t.repoId,repo:t.name},target:{number:n.number,preview:{...n,kind:`pulls`}}})}rows(e,t,n,r=mY){if(t.length===0)return j;let i=this._open.has(e);return k`<ul class="team-deps-versions">${(i?t:t.slice(0,r)).map(n)}</ul>${t.length>r?k`<button type="button" class="team-deps-more" aria-expanded="${String(i)}" @click="${()=>this.toggle(e)}">${LY}${i?`Show fewer`:`and ${(t.length-r).toLocaleString(`en-US`)} more`}</button>`:j}`}disclosed(e,t,n,r,i=0){let a=this._open.has(e);return k`<div class="team-deps-disclosed"><button type="button" class="team-deps-more" aria-expanded="${String(a)}" @click="${()=>this.toggle(e)}">${LY}${t}</button> ${a?k`${this.rows(e,n,r,hY)}${i>0?k`<p class="team-deps-quiet">and ${i.toLocaleString(`en-US`)} more, not listed</p>`:j}`:j}</div>`}render(){let e=[...new Map((this.repositories??[]).map(e=>[e.repoId,e])).values()].map(e=>({repo:e,read:AY(e.repoId)})),t=e.filter(({read:e})=>e.status===`ready`&&e.branch),n=t.flatMap(({repo:e,read:t})=>t.pulls.items.filter(LR).map(t=>({repo:e,item:t,entry:GR(e.repoId,t.number,!0)}))),r=n.filter(({entry:e})=>e.status===`ready`&&e.review).map(e=>{let t=KR(e.entry).versions.filter(t=>[`wanted`,`unsupported`].includes(YR(t,e.entry.review))),n=t.filter(t=>YR(t,e.entry.review)===`wanted`).length,r=Math.max(e.entry.review.toReview??n,n);return{...e,wanted:t,failed:ZR(e.entry),toReview:r,untold:r-n,size:t.length+r-n,others:XR(e.entry).count}}).filter(e=>e.size>0||e.others>0||e.failed).toSorted((e,t)=>+(e.size===0)-(t.size===0)||e.size-t.size||e.others-t.others||(e.repo.name<t.repo.name?-1:e.repo.name>t.repo.name?1:t.item.number-e.item.number)),i=t.filter(({read:e})=>e.pulls.more),a=new Map;for(let e of r)for(let t of e.wanted)a.set(MY(t),[...a.get(MY(t))??[],e]);let o=e.some(({read:e})=>e.status===`loading`)||n.some(({entry:e})=>e.status===`loading`),s=[...e.filter(({read:e})=>e.status===`error`).map(({repo:e,read:t})=>[e.name,t.error]),...n.filter(({entry:e})=>e.status===`error`).map(e=>[NY(e),e.entry.error])],c=t.flatMap(({repo:e,read:t})=>{let{count:n}=XR(t.branch),r=ZR(t.branch);return n>0||r?[{repo:e,read:t,count:n+(r?.count??0)}]:[]}),l=new Map;for(let e of n.filter(({entry:e})=>e.status===`ready`&&e.review))for(let t of[...KR(e.entry).versions,...XR(e.entry).versions])t.commented>0&&!t.patched&&l.set(MY(t),new Set([...l.get(MY(t))??[],NY(e)]));let u=new Set(e.filter(({read:e})=>e.status!==`ready`||e.branch).map(({repo:e})=>e.name.split(`/`)[0])).size===1?e=>e.slice(e.indexOf(`/`)+1):e=>e,d={elsewhere:(e,t=null)=>e.patched?[]:[...l.get(MY(e))??[]].filter(e=>!t||e!==NY(t)).map(u),named:e=>u(NY(e)),shorten:u},f=s.map(([e,t])=>`${u(e)}: ${t}`),p=P.teamDependenciesTab,m=_Y.filter(([e])=>e!==`branch`||c.length>0||o&&p===`branch`),h=m.some(([e])=>e===p)?p:`pulls`;this._shown=h;let g={pulls:r.length,versions:a.size,branch:c.reduce((e,{count:t})=>e+t,0)};return k`<div class="team-deps">${Ux({tabs:m.map(([e,t])=>({id:e,label:k`${t}${g[e]==null||o&&g[e]===0?j:k`<span class="team-deps-tab-n">${g[e].toLocaleString(`en-US`)}</span>`}`})),current:h,prefix:`team-deps`,select:e=>this.pick(e)})}<div class="team-deps-panel" role="tabpanel" id="${`team-deps-panel-${h}`}" aria-labelledby="${`team-deps-tab-${h}`}">${h===`reviews`?kW(()=>k`<dependency-review-list .session="${P.managedSession}" .team="${this.team}"></dependency-review-list>`):k`${o?k`<p class="team-deps-quiet" role="status">Reading their pull requests…</p>`:j} ${f.length===1?k`<p class="team-deps-quiet" role="alert">${f[0]}</p>`:f.length>1?k`<p class="team-deps-quiet" role="alert" data-tooltip="${f.join(`
190
+ `)}">${jY(f.length,`repository or pull request`)} couldn’t be read.</p>`:j} ${!o&&e.length>0&&t.length===0&&s.length===0?k`<p class="workspace-content-empty">None of this team’s repositories reviews its dependencies for you.</p>`:j} ${h===`branch`?j:i.map(({repo:e,read:t})=>k`<p class="team-deps-quiet" role="alert">Only ${u(e.name)}’s ${jY(t.pulls.items.length,`open pull request`)} updated latest are checked; its others aren’t.</p>`)} ${t.length===0?j:h===`pulls`?this.renderPulls(r,a,o,i.length>0,d):h===`versions`?this.renderVersions(a,o,d):c.map(({repo:e,read:t})=>this.renderBranch(e,t,d))}`}</div></div>`}renderPulls(e,t,n,r,{elsewhere:i,named:a}){if(e.length===0)return n?j:k`<p class="workspace-content-empty">No open pull request${r?` checked`:``} wants its dependencies reviewed.</p>`;let o=new Set,s=e=>n=>IY(n,e.entry.review,{others:(t.get(MY(n))??[]).filter(t=>t!==e).map(a),elsewhere:i(n,e)});return k`<ol class="team-deps-pulls" aria-label="Pull requests wanting reviews">${e.map(e=>{let t=e.wanted.filter(e=>!o.has(MY(e))),n=e.wanted.filter(e=>o.has(MY(e)));for(let e of t)o.add(MY(e));let r=NY(e),c=XR(e.entry),l=`https://github.com/${e.repo.name}/pull/${e.item.number}`;return k`<li class="team-deps-pull"><div class="team-deps-pull-top"><a class="team-deps-pull-head" href="${l}" target="_blank" rel="noopener noreferrer" @click="${t=>this.open(t,e)}"><span class="team-deps-pull-name">${a(e)}</span><span class="team-deps-pull-title">${e.item.title||`(no title)`}</span> <span class="${`team-deps-count${e.failed?` is-failed`:``}`}">${e.failed?`review fails`:e.size>0?`${jY(e.toReview,`version`)} to review`:`${jY(e.others,`other version`)} unreviewed`}</span> </a>${e.entry.formatted?k`<dependency-review-copy .text="${e.entry.formatted}" .label="${`Copy your dependency reviews of its versions`}"></dependency-review-copy>`:j}</div>${this.rows(`${r}:own`,t,s(e))} ${e.untold>0?k`<p class="team-deps-quiet">and ${jY(e.untold,`more version`)} past those listed</p>`:j} ${n.length>0?this.disclosed(`${r}:above`,`${jY(n.length,`version`)} a pull request above adds too`,n,s(e)):j} ${e.others>0?this.disclosed(`${r}:others`,e.size>0||e.failed?`${jY(e.others,`other version`)} its lockfiles lock ${e.others===1?`wants`:`want`} reviews`:`Its own versions pass; ${jY(e.others,`version`)} its lockfiles locked before ${e.others===1?`wants`:`want`} reviews`,c.versions,t=>IY(t,e.entry.review,{elsewhere:i(t,e)}),e.others-c.versions.length):j}</li>`})}</ol>`}renderVersions(e,t,{elsewhere:n,named:r}){return e.size===0?t?j:k`<p class="workspace-content-empty">No version an open pull request adds wants a review.</p>`:k`<section class="team-deps-section" aria-label="Versions to review"><p class="team-deps-quiet">${jY(e.size,`version`)} to review, each once, by the pull requests adding it.</p>${this.rows(`versions`,[...e.entries()],([e,t])=>{let i=t[0].wanted.find(t=>MY(t)===e);return IY(i,t[0].entry.review,{others:t.map(r),adders:!0,elsewhere:n(i)})},hY)}</section>`}renderBranch(e,t,{elsewhere:n,shorten:r}){let{versions:i,count:a}=XR(t.branch),o=ZR(t.branch),s=o?.unread.flatMap(e=>e.paths)??[],c=[...i,...o?.versions??[]];return k`<section class="team-deps-section" aria-label="${`${r(e.name)}\u2019s default branch`}"><h2>${r(e.name)}</h2><p class="team-deps-quiet">${jY(a,`version`)} unreviewed${o?.count?`, ${o.count.toLocaleString(`en-US`)} can\u2019t be reviewed`:``}${s.length>0?`, ${jY(s.length,`lockfile`)} unread`:``}</p>${s.length>0?k`<p class="team-deps-quiet" role="alert">Unread, so what ${s.length===1?`it locks isn’t`:`they lock aren’t`} checked: ${s.map((e,t)=>k`${t>0?`, `:``}<code>${e}</code>`)}</p>`:j} ${this.rows(`branch:${e.repoId}`,c,e=>IY(e,t.branch.review,{elsewhere:n(e)}),hY)} ${a>i.length?k`<p class="team-deps-quiet">and ${(a-i.length).toLocaleString(`en-US`)} more, not listed</p>`:j}</section>`}};customElements.define(`team-dependencies`,RY);var zY=null;function BY(e){let t=zY=document.startViewTransition(e);return t.ready.catch(()=>{}),t.finished.finally(()=>{zY===t&&(zY=null)}).catch(()=>{}),t}function VY(e){let t=null;return n=>{t!==null&&t!==n&&zY?.skipTransition(),t=n,e()}}function HY(){R.classList.add(`active`),Gm.classList.add(`hidden`)}function UY(){let e=Sr(P.reports);if(!e)return null;let t=Object.keys(e),n=Jg().filter(e=>Fg(e).commonTriage===P.shownTriage),r=xr(n,P.severityMode),i=wr(e,r),a=new Map,o=new Map,s=new Map;for(let e of n)for(let t of e){let e=Ni(t,P.severityMode);a.has(t.file)||a.set(t.file,new Set),a.get(t.file).add(e);let n=xg(t)?.color??`none`;o.has(t.file)||o.set(t.file,new Set),o.get(t.file).add(n),s.has(t.file)||s.set(t.file,[]),s.get(t.file).push({severity:e,color:n})}let c;return w.focusedPkg?(c=t.filter(e=>(Qn(e)??`__own__`)===w.focusedPkg),w.showAll||(c=c.filter(e=>Er(e,r,i)))):c=w.showAll?t:t.filter(e=>Er(e,r,i)),{treeData:e,files:c,ownCounts:r,transitiveCounts:i,severitySets:a,colorSets:o,fileFindings:s,ownSourceFiles:Dn(c)}}function WY(){let e=lT();if(!e)return;let t=UY();if(!t)return;let n=P.currentView===`bundles`;e.refreshSidebar(t,{isBundleContext:n,findingsJump:!(n&&F())})}function GY(){let e=lT();if(!e)return;let t=UY();t&&e.refreshTopPkgs(t)}function KY(e){return`${Oi[e]??e} findings`}function qY(e,t,n){return n?k`<repo-chip url="${n}"></repo-chip>`:F()?j:P.currentWorkspace?t?k`<repo-chip url="${t}"></repo-chip>`:j:e?k`<repo-chip url="${P.repoUrl}" editable ?editing="${P.repoEditing}" ?empty="${!P.repoUrl}"></repo-chip>`:t?k`<repo-chip url="${t}"></repo-chip>`:j}function JY(e,t,n,r,i){let a=e.length,o=new Set(P.reports.map(e=>e.source)),s=o.size===1?[...o][0]:null,c=P.currentWorkspace?L().find(e=>e.id===P.currentWorkspace):null,l=IJ(P,c?[c]:[],Nu),u=c?`Workspace: ${c.name}`:s?KY(s):`Findings`,d=s&&Px[s]?s:`default`,f=O(Px[d]),p=k`<svg class="file-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg>`,m=j;if(l)m=UJ(l,`reports`,P.currentView);else if(t.length===1){let e=at(t[0]);m=k`<button type="button" class="file-chip" data-copy-report="${e}">${f}<span>${e}</span></button>`}else t.length>1&&(m=k`<button type="button" class="file-chip" data-copy-report="${t.map(at).join(`
191
+ `)}">${p}<span>${t.length} reports</span></button>`);let h=P.reports.flatMap(e=>e.groups.flat()),g=`${a} ${`finding${a===1?``:`s`}`}`,_=P.currentWorkspace?[]:vS(h,s?lS.filter(e=>e!==`type`):lS),v=j;if(a>0){let t={};for(let n of e){let e=Ni(Dg(n),P.severityMode);e&&(t[e]=(t[e]||0)+1)}let n=Ai.filter(e=>t[e]>0);n.length>0&&(v=k`<span class="status-bar" aria-hidden="true">${n.map(e=>{let n=`${t[e]} ${e.replaceAll(`_`,` `)}`;return k`<span class="${`status-seg sev-${e}`}" style="${E({flexGrow:t[e]})}" data-tooltip="${n}"></span>`})}</span>`)}if(l?.scope===`team`)return BJ(l,P.currentView,{findings:a,statusBar:v});let y=new Set(P.reports.map(e=>e.repo??null)),b=qY(n,r,y.size===1?[...y][0]:null),x=k`<span class="sep" aria-hidden="true"></span>`,ee=l?j:WJ(i,P.currentView);return k`<header class="page-head"><div class="page-title"><h1>${l?HJ(l,P.currentView):u}${m}${UJ(l,`bundles`,P.currentView)}${b}${ee}${ZY()}</h1><div class="meta-row"><span>${g}</span> ${v} ${_.length>0?k`${x}${_.map(e=>k`<span class="tag">${e}</span>`)}`:j}</div></div></header>`}var{suggestSync:YY}=DJ({open:e=>nt({names:e})}),XY=new Set([`findings`,`files`,`links`]);function ZY(){if(B.status!==`online`||!XY.has(P.currentView))return j;let e=TJ();if(!e)return j;let{workspaceId:t,fileNames:n,mode:r}=e,i=mh(t);if(i.length>0&&YY(t,i,{onSync:()=>QY(t,r,n),retry:Z}),r===`single`){let e=n[0];if(i.includes(e))return $Y({status:`differ`,label:`differs`,title:`Your copy of "${e}" doesn't match its cloud copy. Click to re-check and bring them in line.`,onClick:()=>QY(t,r,n)});let a=sh(t,e)?`cloud`:`local`;return $Y({status:a,label:a,title:a===`cloud`?`Synced to remote`:`Local only — click to upload`,onClick:a===`local`?()=>rX({workspaceId:t,items:[{kind:`report`,identifier:e}]}):null})}let a=L().find(e=>e.id===t),o=a&&Array.isArray(a.bundles)?a.bundles:[],s=ph(t),c=n.filter(e=>!sh(t,e)),l=o.filter(e=>!ch(t,e)),u=[...c.map(e=>({kind:`report`,identifier:e})),...l.map(e=>({kind:`bundle`,identifier:e}))];if(s===0&&u.length===0)return j;let d=[s>0?`${s} in cloud`:null,u.length>0?`${u.length} local-only`:null,i.length>0?`${i.length} differ from the cloud`:null,s>0?`click "cloud" to re-check storage`:null,u.length>0?`click "local" to upload ${u.length}`:null].filter(Boolean).join(` — `),f=i.length===1?`Your copy of "${i[0]}" doesn't match its cloud copy. Click to re-check and bring them in line.`:`${i.length} reports don't match their cloud copies. Click to re-check and bring them in line.`,p=i.length===0?j:k`<button type="button" class="sync-badge-chunk differ" data-tooltip="${f}" aria-label="${`${i.length} report${i.length===1?``:`s`} differ from the cloud \u2014 re-check`}" @click="${e=>{e.stopPropagation(),QY(t,r,n)}}">${tX()}<span>${i.length} differ</span></button>`,m=s===0?j:k`<button type="button" class="sync-badge-chunk cloud" aria-label="${`re-check ${s} cloud object${s===1?``:`s`}`}" @click="${e=>{e.stopPropagation(),Ue({workspaceId:t,cloudCount:s,localFileNames:n,localBundles:o})}}">${nX()}<span>${s} cloud</span></button>`,h=u.length===0?j:k`<button type="button" class="sync-badge-chunk local" aria-label="${`${u.length} items not yet uploaded \u2014 open upload dialog`}" @click="${e=>{e.stopPropagation(),rX({workspaceId:t,items:u})}}">${eX()}<span>${u.length} local</span></button>`,g=k`<span class="sync-badge-divider" aria-hidden="true"></span>`,_=[m,p,h].filter(e=>e!==j);return k`<div class="report-sync-badge report-sync-badge-clickable" data-status="mixed" data-tooltip="${d}">${_.map((e,t)=>t===0?e:k`${g}${e}`)}</div>`}function QY(e,t,n){let r=L().find(t=>t.id===e),i=t===`single`?wJ(r?.reports??[],P.storedFiles??[],n):n,a=r&&Array.isArray(r.bundles)?r.bundles:[];return Ue({workspaceId:e,cloudCount:ph(e),localFileNames:i,localBundles:a,autoRun:!0})}function $Y({status:e,label:t,title:n,onClick:r}){let i=e===`cloud`?nX():e===`differ`?tX():eX(),a=k`<span class="sync-badge-label">${t}</span>`;return typeof r==`function`?k`<button type="button" class="report-sync-badge report-sync-badge-clickable" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}" @click="${r}">${i}${a}</button>`:k`<span class="report-sync-badge" data-status="${e}" data-tooltip="${n}" aria-label="${`report sync status: ${t}`}">${i}${a}</span>`}function eX(){return k`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="14" width="20" height="8" rx="2" ry="2"/><line x1="6" y1="18" x2="6.01" y2="18"/><line x1="10" y1="18" x2="10.01" y2="18"/><path d="M6 14V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v10"/></svg>`}function tX(){return k`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 4v14"/><path d="M3 14l4 4 4-4"/><path d="M17 20V6"/><path d="M13 10l4-4 4 4"/></svg>`}function nX(){return k`<svg class="sync-badge-icon" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.5 19a4.5 4.5 0 1 0-1-8.9A6 6 0 0 0 5.07 13.5 4 4 0 0 0 6 21h11.5z"/></svg>`}async function rX({workspaceId:e,items:t}){let n=t.filter(e=>e.kind===`bundle`);if(n.length>0){let e=await nl(),t=new Map(e.map(e=>[e.integrity,e.name]));for(let e of n){let n=t.get(e.identifier);n&&(e.label=n)}}await it({workspaceId:e,items:t})}function iX(e){return Object.values(e).some(e=>e>0)||P.filterSeverities.size>0?k`<severity-chips .counts="${e}"></severity-chips>`:j}function aX(e){return Object.values(e).some(e=>e>0)||P.filterColors.size>0?k`<triage-filter .counts="${e}"></triage-filter>`:j}function oX(e,t,n,r,i,a,o,s){let{showSource:c,showConfidence:l,showPriority:u,showGraphMode:d,showFileSort:f,kanbanMode:p,showRepo:m,hasComment:h,hasFix:g,hasFlagged:_,hasDuplicates:v,hasCrossContext:y,hasAppStacked:b,showSecurity:x,showSeverityMode:ee,revalidateOptions:te,showPartial:ne,canDropLayer:re,canDetailLayer:ie,canUpstreamLens:ae,confirmedLocked:oe}=a;return k`<div class="toolbar"><div class="toolbar-row"><view-mode-buttons modes="${d?`kanban,focus,table,list,grouped,graph`:`kanban,focus,table,list,grouped`}"></view-mode-buttons><findings-sort ?show-file="${f}" ?show-confidence="${l}" ?show-priority="${u}"></findings-sort>${c?k`<source-filter></source-filter>`:j} ${!oe&&(l||te.length>0)?k`<conf-filter ?range-disabled="${!l}" .revalidateOptions="${te}" ?has-partial="${ne}"></conf-filter>`:j} ${h||g||_||P.filterComment||P.filterFix||P.filterFlagged?k`<annotation-filter .hasComment="${h}" .hasFix="${g}" .hasFlagged="${_}"></annotation-filter>`:j} ${p?j:k`<triage-selector .counts="${n}"></triage-selector>`}<div class="toolbar-end"><download-button></download-button>${!P.currentWorkspace&&(v||P.filterDuplicates)||y||b||x||P.filterCrossContext||P.filterAppStacked?k`<annotation-filter group="context" .hasDuplicates="${v}" .hasCrossContext="${y}" .hasAppStacked="${b}" .hasSecurityContrast="${x}"></annotation-filter>`:j} ${re||P.revalidateConflicts.size>0?k`<revalidation-switch ?can-drop="${re}" ?can-detail="${ie}" ?can-upstream="${ae&&re}" .upstreamDisabled="${P.showRevalidation===!1&&re}"></revalidation-switch>`:j}</div></div><div class="toolbar-row sev-row">${ee?k`<severity-mode-switch></severity-mode-switch>`:j} ${iX(r)} ${o.analyzers.length>1||o.models.length>1?k`<analyzer-select .analyzers="${o.analyzers}" .models="${o.models}" .groups="${o.groups}"></analyzer-select>`:j} ${m&&s.length>1?k`<repo-filter .options="${s}"></repo-filter>`:j} ${aX(i)}<div class="search-row"><toolbar-search kind="findings"></toolbar-search><span class="result-count">${e} of ${t}</span></div></div></div>`}function sX(e,t){return e.map(e=>({p:Dg(e),g:e})).toSorted((e,n)=>t(e.p,n.p)).map(e=>e.g)}var cX=(e,t)=>e.file.localeCompare(t.file)||parseInt(e.line,10)-parseInt(t.line,10),lX=null,uX=0,dX=null;function fX(e,t=!1,n=null,r=!1,i=!1){return k`<finding-card data-gid="${V(e)}" .group="${e}" ?in-group="${t}" context="${n??j}" ?lazy="${r}" ?popup="${i}"></finding-card>`}var pX=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2H2v4M10 2h4v4M14 10v4h-4M6 14H2v-4"/></svg>`,mX=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v4H2M10 2v4h4M10 14v-4h4M6 14v-4H2"/></svg>`,hX={critical:`C`,high:`H`,medium:`M`,low:`L`,high_bug:`H`,bug:`B`,informational:`i`};function gX(e,t={}){let{variant:n=`kanban`,active:r=!1,expandedTrackLast:i=!1}=t,a=Fg(e),o=Ag(e),s=Vi(o)||`(untitled finding)`,c=n===`kanban`,l=n===`kanban-side`,u=c&&P.currentWorkspace?Lx(o):null,d={"kanban-card":!0,"has-conflict":a.hasConflict,"focus-side-card":!c,"kanban-expanded-track-last":i,active:r};!a.hasConflict&&a.commonColor&&(d[`mark-${a.commonColor}`]=!0);let f=parseInt(o.line,10),p=Number.isFinite(f)?`:${f}`:``,m=Ni(o,P.severityMode),h=hX[m]??`?`,g=Mi(o)&&P.severityMode!==`original`,_=xg(o),v=_?.flagged===!0,y=_?.fix||qh(o),b=_?.comment??``,x=j;c&&y?x=mi(y)?k`<managed-fix-link class="kanban-action kanban-fix-link" compact="compact" .url="${y}">${Ew}</managed-fix-link>`:bg(o)?k`<button type="button" class="kanban-action mark-fix" data-tooltip="${`Edit fix link: ${y}`}" aria-label="${`Edit fix link: ${y}`}">${Ew}</button>`:k`<span class="kanban-action kanban-fix-note" role="img" data-tooltip="${`Fix: ${y}`}" aria-label="${`Fix: ${y}`}">${Ew}</span>`:c&&(b||F()&&vg(o))&&(x=k`<comment-preview class="kanban-action" .finding="${o}" .comment="${b}">${Tw}</comment-preview>`);let ee=k`<div class="kanban-badge-col"><span class="${`kanban-badge sev-${m}`}" data-tooltip="${g?`${aw(m)} \u2014 corrected from ${aw(o.severity)}`:j}" aria-label="${g?`Severity ${aw(m)}, corrected from ${aw(o.severity)}`:`Severity ${aw(m)}`}">${h}${g?`*`:``}</span> ${v?k`<span class="kanban-flag" aria-label="Flagged">${Rw}</span>`:j} ${x}</div><span class="kanban-title">${s}</span><div class="kanban-meta"><span class="kanban-loc">${o.file}${p}</span> ${o.confidence===void 0||o.confidence===null?j:k`<span class="kanban-conf" data-tooltip="${`Confidence ${o.confidence}/10`}">${o.confidence}</span>`} ${u?k`<span class="kanban-analyzer" role="img" data-tooltip="${Ix[u]}" aria-label="${Ix[u]}">${O(rt[u])}</span>`:j}</div>`;return c?k`<div class="${T(d)}" data-gid="${V(e)}" data-kanban-source draggable="${zg(e,a).length>0?`true`:`false`}" role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Open details for ${s}`}">${ee}</div>`:l?k`<div class="${T(d)}" data-gid="${V(e)}" data-kanban-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Show details for ${s}`}">${ee}</div>`:k`<div class="${T(d)}" data-gid="${V(e)}" data-focus-select role="button" tabindex="0" aria-current="${r?`true`:`false`}" aria-label="${`Focus on ${s}`}">${ee}</div>`}var _X={content:``,parts:``};function vX(e){return _X.content!==e&&(_X={content:e,parts:NT(e)}),_X.parts}function yX(e){let{content:t,range:n,highlighted:r}=e,i=t.split(`
192
+ `).length,a=String(i).length;return k`<div class="focus-code-lines" style="${E({"--lineno-width":`${a}ch`})}"><aside class="focus-code-gutter" aria-hidden="true">${Array.from({length:i},(e,t)=>{let r=t+1,i={"focus-code-lineno":!0,"focus-code-line-active":!!n&&r>=n.start&&r<=n.end};return k`<div class="${T(i)}" data-focus-code-line="${r}">${r}</div>`})}</aside><pre class="focus-code-source" tabindex="-1" aria-label="${e.file}"><code>${typeof r==`string`?O(r):vX(t)}</code></pre></div>`}function bX(e){return!e||!Mv(Ag(e))?j:k`<button type="button" class="finding-history detail-action" data-finding-history data-gid="${V(e)}" aria-label="View issue history"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5"/></svg></button>`}function xX(e,t=j,n=!1){P.focusCodeTick;let r=AC(e),i=DC(e),a=r?`focus-main with-code`:`focus-main`,o=E({"--focus-split":String(P.focusSplit)});return k`<div class="${a}" style="${o}" data-gid="${V(e)}"><div class="focus-pane focus-pane-card"><div class="focus-card-wrapper">${n?j:bX(e)} ${fX(e,!1,`focus`,!1,n)}</div></div>${t} ${r?k`<div class="focus-splitter" data-focus-splitter role="separator" tabindex="0" aria-orientation="vertical" aria-label="Resize the finding and code panes" aria-valuemin="${Vs}" aria-valuemax="${Hs}" aria-valuenow="${Math.round(P.focusSplit)}" data-tooltip="Drag to resize · double-click to reset"></div><div class="focus-pane focus-pane-code" data-focus-code-file="${r.file??j}" data-focus-code-integrity="${r.integrity??j}">${r.loading?k`<div class="focus-code-empty">Loading source…</div>`:k`<header class="focus-code-bar"><span class="focus-code-file" data-tooltip-truncated data-tooltip="${r.file}">${r.file}</span> ${r.range?k`<span class="focus-code-line">:${Vn(r.range)}</span>`:j} ${(i?.stack.length??0)>1?k`<div class="focus-code-nav"><button type="button" class="focus-code-nav-btn" data-code-history="back" ?disabled="${i.at===0}" aria-label="Back to the previously shown file">${QC}</button> <button type="button" class="focus-code-nav-btn" data-code-history="forward" ?disabled="${i.at===i.stack.length-1}" aria-label="Forward to the next shown file">${$C}</button></div>`:j}</header><div class="focus-code-body">${yX(r)}</div>`}</div>`:j}</div>`}function SX(e,t,n=[],r=null){if(!e&&!r)return j;let i=e?Fg(e):{},a=P.kanbanDetailFullscreen,o={"kanban-detail-modal":!0,fullscreen:a,"has-conflict":i.hasConflict},s=e?V(e):null,c=t?.items??[],l=c.findIndex(e=>V(e)===s),u=k`<div class="kanban-detail-actions">${bX(e)} <button type="button" class="kanban-detail-expand detail-action" data-kanban-detail-fullscreen aria-pressed="${a?`true`:`false`}" aria-label="${a?`Back to the readable width`:`Fill the available space`}">${a?mX:pX}</button> <button type="button" class="kanban-detail-close detail-action" aria-label="Close details">×</button></div>`;return k`<div class="${T({"kanban-detail-backdrop":!0,"links-preview-backdrop":!!r})}"><div class="kanban-detail-dim"></div><div class="${T(o)}" role="dialog" aria-modal="true" aria-label="${r?`Finding preview`:`Finding details`}">${a&&e?j:u}<div class="kanban-detail-body">${e?a?xX(e,u,!0):fX(e,!1,`kanban-detail`,!1,!0):k`<div class="links-preview-message" role="status">${r.error||`Loading finding…`}</div>`}</div></div>${c.length===0?j:k`<aside class="kanban-detail-side" aria-label="${`${t.label} findings`}"><div class="kanban-detail-side-header"><span class="kanban-detail-side-pick"><select class="kanban-detail-side-select" data-kanban-column aria-label="Column to show">${n.map(e=>{let n=e.key===t.key,r=n?e.label:`${e.label} (${e.count})`;return k`<option value="${e.key}" data-gid="${e.firstGid}" .selected="${n}" ?disabled="${e.count===0}">${r}</option>`})}</select></span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-kanban-nav="prev" ?disabled="${l===0}" aria-label="Previous finding">${QC}</button> <span class="count">${l<0?c.length:`${l+1} / ${c.length}`}</span> <button type="button" class="focus-nav-btn" data-kanban-nav="next" ?disabled="${l===c.length-1}" aria-label="Next finding">${$C}</button></div></div><kanban-rail class="kanban-detail-side-body" .items="${c}" .activeKey="${s}" .keyOf="${V}" .renderItem="${e=>gX(e,{variant:`kanban-side`,active:V(e)===s})}"></kanban-rail></aside>`}</div>`}function CX(e,t){if(P.viewMode===`table`){let n=P.sortBy===`file`?sX(e,cX):e;return n.length===0?j:(lX=n,k`<div class="${t?`findings-table-layout open`:`findings-table-layout`}"><div class="findings-table-list"><div class="finding-table-slot"></div></div>${t?k`<aside class="findings-table-details" id="findings-table-details" aria-label="Finding details"><button type="button" class="findings-table-details-close" data-table-deselect aria-label="Close details">×</button><div class="findings-table-details-body">${fX(t)}</div></aside>`:j}</div>`)}if(P.viewMode===`focus`){if(e.length===0)return j;let n=e.indexOf(t);uX=n;let r=t,i=n===0,a=n===e.length-1;return k`<div class="focus-view">${xX(r)}<aside class="focus-sidebar" aria-label="Up next"><div class="focus-sidebar-header"><span class="label">Up next</span><div class="focus-nav"><button type="button" class="focus-nav-btn" data-focus-nav="prev" ?disabled="${i}" aria-label="Previous finding">${QC}</button> <span class="count">${n+1} / ${e.length}</span> <button type="button" class="focus-nav-btn" data-focus-nav="next" ?disabled="${a}" aria-label="Next finding">${$C}</button></div></div><div class="focus-sidebar-body">${D(e,e=>V(e),e=>gX(e,{variant:`focus`,active:V(e)===V(r)}))}</div></aside></div>`}if(P.viewMode===`kanban`){let n=[{key:`untriaged`,label:`Untriaged`},{key:`inprogress`,label:`In progress`},{key:`fixed`,label:`Fixed`},{key:`invalid`,label:`Invalid`},{key:`deleted`,label:`Deleted`},{key:`ignored`,label:`Ignored`}],r=new Map(n.map(e=>[e.key,[]]));for(let t of e){let e=Fg(t).commonTriage??`untriaged`,n=r.get(e);n&&n.push(t)}let i=n.some(e=>e.key===P.kanbanExpandedColumn)?P.kanbanExpandedColumn:null,a=i?n.filter(e=>e.key===i):n,o={"--kanban-cols":String(n.length)},s=t,c=s?n.find(e=>e.key===(Fg(s).commonTriage??`untriaged`)):null;return k`<div class="kanban-board" style="${E(o)}">${D(a,e=>e.key,e=>{let t=r.get(e.key),a=e.key===i;return k`<div class="${`kanban-column kanban-column-${e.key}${a?` expanded`:``}`}" data-kanban-target="${e.key}"><div class="kanban-column-header"><span class="label">${e.label}</span> <span class="count">${t.length}</span> <button type="button" class="kanban-expand" data-kanban-expand="${e.key}" aria-pressed="${a}" aria-label="${a?`Show all columns`:`Show only ${e.label}`}">${a?mX:pX}</button></div><div class="kanban-column-body">${t.length===0?k`<div class="kanban-empty">No ${e.label.toLowerCase()} findings.</div>`:D(t,e=>V(e),(e,t)=>gX(e,{active:V(e)===P.kanbanPopoverGid,expandedTrackLast:(t+1)%n.length===0}))}</div></div>`})}</div>${SX(s,c&&{key:c.key,label:c.label,items:r.get(c.key)},n.map(e=>{let t=r.get(e.key);return{key:e.key,label:e.label,count:t.length,firstGid:t.length>0?V(t[0]):``}}))}`}if(P.viewMode===`grouped`){let t=new Map;for(let n of e){let e=Dg(n).file;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=P.sortBy===`file`?[...t.keys()].toSorted():[...t.keys()];return k`${D(n,e=>e,e=>{let n=P.sortBy===`file`?sX(t.get(e),(e,t)=>parseInt(e.line,10)-parseInt(t.line,10)):t.get(e),r=Dg(n[0]);return k`<div class="file-group"><div class="file-header"><span>${Nn(r,Mg(r))}</span> <span class="count">${n.length}</span></div><div class="file-body">${D(n,e=>V(e),e=>fX(e,!1,null,!0))}</div></div>`})}`}let n=P.sortBy===`file`?sX(e,cX):e;return k`${D(n,e=>V(e),e=>{let t=Ag(e),n=Kn(t,Mg(t)),r=jn(t),i=Bi(t),a=e.length>1;return k`<div class="${T({"flat-group":!0,"multi-case":a})}"><div class="flat-group-loc"><span class="file">${Nn(t,Mg(t))}</span> ${n===j?j:k`<span class="line-num">${n}</span>`} ${i?k`<span class="meta">${i}</span>`:j} ${r?k`<span class="run-meta">${r}</span>`:j}</div>${fX(e,!0,null,!0)}</div>`})}`}function wX(){P.bundleSourceFile&&$X().catch(()=>{});let e=document.querySelector(`#bundle-source-overlay-slot`);e&&M(NK(),e)}var TX=VY(FX);function Z(){TX(P.currentView)}var EX=e=>Object.assign(document.createElement(`div`),{id:e});function DX(e){let t=document.querySelector(`#${e}`);return(!t||!R.contains(t)||R.firstElementChild!==t)&&(t=EX(e),R.replaceChildren(t)),t}function OX(e=null){let t=e==null?null:P.managedTeams.find(t=>t.id===e),n=t?IJ({currentWorkspace:`managed-team:${t.id}`,currentManagedTeam:t.id,managedTeams:P.managedTeams,managedSession:P.managedSession},[]):null;M(VJ(n),DX(`triage-loading-slot`))}function kX(){let e=IJ(P,L(),Nu);document.title=e?`${e.title} \u2014 findings`:`DeepView`;let t=DX(`empty-workspace-slot`);t&&M(k`${JY([],[],!1,null,0)}<p class="workspace-content-empty">No findings available.</p>`,t),HY()}var AX={"manage-deduplication":{slot:`manage-deduplication-slot`,tag:`managed-admin-deduplication`,title:`DeepView — deduplication`},manage:{slot:`manage-slot`,tag:`managed-admin-home`,title:`DeepView — manage`},"admin-users":{slot:`admin-users-slot`,tag:`managed-admin-users`,title:`DeepView — users`},"manage-repos":{slot:`manage-repos-slot`,tag:`managed-admin-repos`,title:`DeepView — repositories`},"manage-repo-risk":{slot:`manage-repo-risk-slot`,tag:`managed-admin-repo-risk`,title:`DeepView — repository risk`},"manage-reports":{slot:`manage-reports-slot`,tag:`managed-admin-reports`,title:`DeepView — reports`},"manage-bundles":{slot:`manage-bundles-slot`,tag:`managed-admin-bundles`,title:`DeepView — bundles`},"manage-history":{slot:`manage-history-slot`,tag:`managed-admin-history`,title:`DeepView — history`},"manage-teams":{slot:`manage-teams-slot`,tag:`managed-admin-teams`,title:`DeepView — teams`},"manage-import":{slot:`manage-import-slot`,tag:`managed-admin-import`,title:`DeepView — import`},"manage-links":{slot:`manage-links-slot`,tag:`managed-admin-links`,title:`DeepView — links`},"manage-scans":{slot:`manage-scans-slot`,tag:`managed-admin-scans`,title:`DeepView — scans`}},jX=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:e.localeCompare(t),MX=null;function NX(){let e=P.revalidateConflicts.size>0,t=!e&&Cr(P.reports);return e?P.showRevalidation!==!1&&(MX=P.showRevalidation,P.showRevalidation=!1):(MX!==null&&(P.showRevalidation=MX,MX=null),!t&&P.showRevalidation===!1&&(P.showRevalidation=!0)),P.upstreamOnly&&(!t||P.showRevalidation===!1||!P.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream))))&&(P.upstreamOnly=!1),gr(P.showRevalidation,P.upstreamOnly),t}var PX=null;function FX(){cg()||lg(),wX(),Nr(P.reports),bd()&&queueMicrotask(()=>{Sd()}),Lr(P.reports)&&Ug();let e=NX(),t=P.reports.some(e=>(e.groups??[]).some(e=>e.some(e=>e.isUpstream)));if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(P.currentView)){let e=P.currentView.slice(10),t=IJ(P,L(),Nu),n=DX(`workspace-content-slot`);n&&M(KJ(t,e),n),document.title=t?`${t.title} \u2014 ${e}`:`DeepView \u2014 ${e}`;return}if(P.currentView===`bundles`){if((P.bundles??[]).length===0)P.currentView=`findings`;else{qt(P.bundleDetailsTab,P.bundleSourceFile)&&$X().catch(()=>{});let e=DX(`bundles-slot`);e&&M(kq(P.bundles),e);let t=P.bundleDetails,n=P.selectedBundle&&t&&(t.json||t.bundle);if(n&&P.bundleDetailsTab===`graph`){let e=document.querySelector(`#bundle-graph-slot`);if(e){let n=lK(P.bundleDetails);if(n){fK(n);let r={hideAllFiles:!0,triageCounts:sK(P.bundleDetails,new Set(n.strippedToOrig.values())),triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`],showPackagesView:n.canPackagesView,showBundleLayouts:!0,hasIssues:n.hasIssues},i=PX,a=e.querySelector(`graph-layout`);!n.issuesShown&&i&&!i.issuesShown&&a&&i.state===w.graphState&&i.details===t&&i.reason===w.bundleReason?a.options=r:(PX=null,dT(e,n,r,uK,dK).then(e=>(e&&w.graphState&&(PX={state:w.graphState,details:t,reason:w.bundleReason,issuesShown:n.issuesShown}),null)))}}}if(n&&!t.metadataOnly&&(P.bundleDetailsTab===`terminal`||P.bundleDetailsTab===`code`&&P.bundleCodeTerminal)){let e=document.querySelector(`#bundle-terminal-slot`);e&&vT(e,P.bundleDetails)}HY();let{npm:r,repository:i}=P.bundles.find(e=>e.integrity===P.selectedBundle)??{};document.title=r?`DeepView \u2014 ${r.name}@${r.version}`:i?`DeepView \u2014 ${fM(i)}`:`DeepView — bundles`;return}}if(P.currentView===`reviews`){let e=DX(`dependency-reviews-slot`);e&&M(kW(()=>k`<dependency-review-list .session="${P.managedSession}"></dependency-review-list>`),e),HY(),document.title=`DeepView — my reviews`;return}if(P.currentView===`profile`){let e=DX(`managed-profile-slot`);e&&M(k`<managed-profile .session="${P.managedSession}" .linkError="${P.profileLinkError}"></managed-profile>`,e),HY(),document.title=`DeepView — profile`;return}if(P.currentView===`npm`){let e=P.npmOpening,t=DX(e?`bundles-slot`:`npm-slot`);t&&M(e?xq(e):Rj(),t),HY(),document.title=e?`DeepView \u2014 ${XA(e.name,e.spec)}`:`DeepView — npm packages`;return}if(P.currentView===`repository-code`){let e=P.repositoryCodeOpening,t=DX(`bundles-slot`);t&&e&&M(Sq(e),t),HY(),document.title=`DeepView \u2014 ${e?.repo??`code`}`;return}if(P.currentView===`packages`){let e=DX(`packages-slot`);e&&M(Gq(),e),HY(),document.title=`DeepView — packages`;return}if(P.currentView===`repositories`){let e=DX(`repositories-slot`);e&&M(oJ(),e),HY(),document.title=`DeepView — repositories`;return}if(P.currentView===`links`){if(P.currentLinks){let e=DX(`links-slot`),t=cg();e&&M(k`${CJ(ZY())}${t?SX(t.group,null,[],t):j}`,e),HY(),document.title=`DeepView \u2014 ${P.currentLinks.name}`;return}P.currentView=`findings`}if(P.currentView===`scan`&&customElements.get(`local-scan-page`)){let e=DX(`scan-slot`);if(e&&!e.firstElementChild){let t=document.createElement(`local-scan-page`);t.selection=P.scanSelection,e.append(t),t.updateComplete.then(()=>hr(t.renderRoot,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth}))}HY(),document.title=`DeepView — scans`;return}let n=AX[P.currentView];if(n){let e=DX(n.slot);e?.classList.add(`managed-page-slot`);let t=e?.firstElementChild?.session;if((t?.id!==P.managedSession?.id||t?.role!==P.managedSession?.role)&&e?.replaceChildren(),e&&!e.firstElementChild){let t=document.createElement(n.tag),r=e=>hr(e,{gate:e=>!Object.hasOwn(e.dataset,`tooltipTruncated`)||e.scrollWidth>e.clientWidth});t.localImportSource=cp(),P.currentView===`manage-import`&&(t.localDeps=op(),t.promptPassword=ht,t.resolveConflicts=cS,t.confirmTriageImport=Be,t.confirmContentImport=Re,t.showTriageComparison=ot),t.session=P.managedSession,t.allowShare=P.managed?.allowShare===!0,P.currentView===`manage-scans`&&(t.selection=P.scanSelection),P.currentView===`manage-bundles`&&(t.createRepoId=P.bundleCreationRepoId,t.installTooltips=r),e.append(t),(async()=>{await customElements.whenDefined(n.tag),await t.updateComplete,r(t.renderRoot)})().catch(()=>{})}e?.firstElementChild&&(e.firstElementChild.session=P.managedSession,e.firstElementChild.allowShare=P.managed?.allowShare===!0),P.currentView===`manage-scans`&&e?.firstElementChild&&(e.firstElementChild.selection=P.scanSelection),P.currentView===`manage-bundles`&&e?.firstElementChild&&(e.firstElementChild.createRepoId=P.bundleCreationRepoId),HY(),document.title=n.title;return}if(P.reports.length===0){P.currentWorkspace&&document.querySelector(`#empty-workspace-slot`)&&kX();return}let r=Jg(),i=P.viewMode===`kanban`,a={inprogress:0,fixed:0,invalid:0,deleted:0,ignored:0},o=[];for(let e of r){let t=Fg(e).commonTriage;t&&a[t]++,(i||t===P.shownTriage)&&o.push(e)}Object.defineProperty(o,"ruledOutIds",{value:r.ruledOutIds});let s=!1,c=!1,l=!1,u=!1;for(let e of r)for(let t of e){Mi(t)&&(u=!0);let e=xg(t);qh(t)&&(c=!0),e&&(e.comment&&(s=!0),e.fix&&(c=!0),e.flagged===!0&&(l=!0))}let d=Qg(),f=r.some(e=>e.some(e=>d.has(e.id)));f||(P.filterDuplicates=``);let p=o.some(D_),m=o.some(O_);p||(P.filterCrossContext=``),m||(P.filterAppStacked=``);let h=A_(o);h||(P.filterSecurity=``);let g=new Set,_=!1,v=!1,y=!1;for(let e of o)for(let t of e){let e=br(t);e&&g.add(e)}for(let e of Kg()){let t=!1,n=!1;for(let r of e){let e=Ii(r);e===`partial`&&(v=!0),!((e===`unreachable`||e===`refuted`)&&(y=!0,P.currentWorkspace))&&(e===`revalidation`?t=!0:n=!0)}t&&n&&(_=!0)}let b=[...new Set(P.reports.map(e=>e.type))].join(`, `),x=P.reports.map(e=>e.fileName),ee=o.map(wg).filter(e=>e.length>0),te=ee.length>0&&cr(ee),ne=b_(r),re=r.some(e=>e.some(e=>Ir(e.file))),ie=r.some(e=>e.some(e=>!Ir(e.file))),ae=!1,oe=!1,se;e:for(let e of r)for(let t of e)if(!oe)oe=!0,se=t.file;else if(t.file!==se){ae=!0;break e}let ce=r.some(e=>e.some(e=>!e.repo?.github&&!Ir(e.file))),le=new Set;for(let e of r)for(let t of e)!Ir(t.file)&&t.repo?.github&&le.add(t.repo.github);let ue=le.size===1?[...le][0]:null,de=new Set,fe=new Set;for(let e of r)for(let t of e)de.add(t._analyzer??null),fe.add(n_(t));let pe=Object.keys(R_),me=e=>{if(e==null)return 1/0;let t=pe.indexOf(e);return t===-1?pe.length:t},he=[...de].toSorted((e,t)=>{let n=me(e),r=me(t);return n===r?String(e??``).localeCompare(String(t??``)):n-r}),ge=[...fe].toSorted(jX);if(P.filterAnalyzer){let e=P.filterAnalyzer===$g?null:P.filterAnalyzer;(!de.has(e)||de.size<2)&&(P.filterAnalyzer=``)}if(P.filterModel){let e=P.filterModel===t_?null:P.filterModel;(!fe.has(e)||fe.size<2)&&(P.filterModel=``)}let _e=Mr(g);P.filterRevalidate&&!_e.some(e=>e.value===P.filterRevalidate)&&(P.filterRevalidate=``);let ve=v_(o);ve&&(P.filterRevalidate=`confirmed`);let ye=g.has(`partial`)&&pg();ye||(P.filterPartial=``);let be=e&&(_||v||!P.currentWorkspace&&y),xe=!(e&&P.showRevalidation!==!1)&&!P.upstreamOnly&&re&&ie;!xe&&P.filterSources.size>0&&P.filterSources.clear(),te||(P.filterConfMin=0,P.filterConfMax=10,(P.sortBy===`confidence-desc`||P.sortBy===`confidence-asc`)&&(P.sortBy=`severity`)),!ne&&(P.sortBy===`priority-desc`||P.sortBy===`priority-asc`)&&(P.sortBy=`severity`),!ae&&P.sortBy===`file`&&(P.sortBy=`severity`);let Se=j_(o),Ce={critical:0,high:0,medium:0,low:0,high_bug:0,bug:0,informational:0},we={red:0,blue:0,green:0,gray:0,none:0};for(let e of Se){if(e.length===1){let t=Ni(e[0],P.severityMode);Ce[t]=(Ce[t]||0)+1;let n=xg(e[0])?.color??`none`;we[n]=(we[n]||0)+1;continue}let t=new Set(e.map(e=>Ni(e,P.severityMode)));for(let e of t)Ce[e]=(Ce[e]||0)+1;let n=new Set(e.map(e=>xg(e)?.color??`none`));for(let e of n)we[e]=(we[e]||0)+1}let Te=a_(Se),Ee=[...Te].toSorted(jX);if(P.filterRepo){let e=P.filterRepo===e_?null:P.filterRepo;Te.has(e)||(P.filterRepo=``)}let De=L_(M_(o)),Oe=Sr(P.reports),ke=Oe?Object.keys(Oe).length:0,Ae=ke>1;!Ae&&P.currentView===`files`&&(P.currentView=`findings`),!Ae&&P.viewMode===`graph`&&(P.viewMode=`kanban`);let je=JY(r,x,ce,ue,ke);if(P.currentView===`files`){let e=xr(r,P.severityMode),t=document.querySelector(`#header-slot`),n=document.querySelector(`#tree-view-slot`);(!t||!n||!R.contains(t)||!R.contains(n))&&(t=EX(`header-slot`),n=EX(`tree-view-slot`),R.replaceChildren(t,n)),t&&M(je,t),n&&M(iT(Oe,e),n),HY(),document.title=`DeepView \u2014 ${b||`no analyzer`}`;return}let Me=P.viewMode===`table`&&P.tableSelectedGid&&De.some(e=>V(e)===P.tableSelectedGid),Ne=null;P.viewMode===`graph`&&Oe&&(Ne=UY(),Ne||(P.viewMode=`kanban`));let Pe=!!Ne,Fe=`findings-content`;Me&&(Fe+=` with-details`),Pe&&(Fe+=` with-graph`),i&&(Fe+=` with-kanban`),P.viewMode===`focus`&&(Fe+=` with-focus`);let Ie=j,Le=j,ze=j,Ve=OJ(De,P,uX);lX=null,Pe||(Ie=oX(De.length,o.length,a,Ce,we,{showSource:xe,showConfidence:te,showPriority:ne,showGraphMode:Ae,showFileSort:ae,kanbanMode:i,showRepo:!!P.currentWorkspace,hasComment:s,revalidateOptions:_e,showPartial:ye,canDropLayer:e,canDetailLayer:be,canUpstreamLens:t,confirmedLocked:ve,hasFix:c,hasFlagged:l,hasDuplicates:f,hasCrossContext:p,hasAppStacked:m,showSecurity:h,showSeverityMode:u||P.severityMode===`original`},{analyzers:he,models:ge,groups:Se},Ee),P.shownTriage&&o.length===0?Le=k`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No ${P.shownTriage} findings.</p>`:De.length===0&&o.length>0&&!i?Le=k`<p style="${E({color:`var(--muted)`,margin:`1rem 0`})}">No findings match the current filters.</p>`:o.length===0&&(Le=r.length>0?k`<p style="${E({color:`var(--green)`})}">All ${b} issues triaged.</p>`:k`<p style="${E({color:`var(--green)`})}">No ${b} issues found.</p>`),ze=CX(De,Ve));let He=document.querySelector(`#header-slot`),Ue=R.querySelector(`:scope > .findings-content`),We=Ue&&Ue.querySelector(`:scope > #findings-graph-slot`),Ge=Ue&&Ue.querySelector(`:scope > #findings-body-slot`),Ke=Ue&&(We?`graph`:Ge?`body`:null)===(Pe?`graph`:`body`);!He||!Ue||!R.contains(He)||!R.contains(Ue)||!Ke?(He=EX(`header-slot`),Ue=Object.assign(document.createElement(`div`),{className:Fe}),Ue.append(...Pe?[EX(`findings-graph-slot`)]:[EX(`toolbar-slot`),EX(`empty-state-slot`),EX(`findings-body-slot`)]),R.replaceChildren(He,Ue)):Ue.className!==Fe&&(Ue.className=Fe),He&&M(je,He);let qe=document.querySelector(`#toolbar-slot`);qe&&M(Ie,qe);let Je=document.querySelector(`#empty-state-slot`);Je&&M(Le,Je);let Ye=document.querySelector(`#findings-body-slot`);if(Ye&&M(ze,Ye),Ne){let e=document.querySelector(`#findings-graph-slot`);if(e){let t={extraTopRow:k`<view-mode-buttons modes="kanban,focus,table,list,grouped,graph"></view-mode-buttons>`,triageCounts:a,triageStates:[`inprogress`,`fixed`,`invalid`,`deleted`,`ignored`]};dT(e,Ne,t,WY,GY)}}if(lX){let e=R.querySelector(`.finding-table-slot`);e&&(dX||=document.createElement(`finding-table`),dX.items=lX,dX.selectedGid=P.tableSelectedGid,dX.parentNode!==e&&e.append(dX))}HY(),document.title=`DeepView \u2014 ${b||`no analyzer`}`,F()&&U?.replaceFindingRoute(kJ(Ve,P))}var IX=new Map,LX=new Map,RX=new Map,zX=new WeakMap;async function BX(e){try{let t=await ll(e);return t?Qt(t,e):null}catch{return null}}var VX=null;function HX(e){let t=new Map(e.filter(e=>e&&!e.error).map(e=>[e.integrity,e]));return VX=t.size>0?{bundles:t}:null,VX}function UX(e){VX===e&&(VX=null)}function WX(e,t=()=>!0){let n=VX?.bundles.get(e);return!n||!t(n)?null:(VX.bundles.delete(e),VX.bundles.size===0&&(VX=null),n)}function GX(e,t,{sources:n=!0}={}){if(!t.managedId&&F())return Promise.reject(new DOMException(`Local bundle closed`,`AbortError`));let r=n?IX:LX,i=t.name.toLowerCase().endsWith(`.map`)?`sourcemap`:`stasis`,a=P.bundleDetails;if(a?.integrity===e&&a.kind===i&&a.managedId===t.managedId&&!a.error&&(!n||!a.metadataOnly))return Promise.resolve(a);let o=WX(e,e=>e.kind===i&&e.managedId===t.managedId&&(!n||!e.metadataOnly));if(o)return Promise.resolve(o);let s=`${t.managedId??`local`}:${e}:${i}`,c=t.managedId&&n?W_():void 0,l=r.get(s);if(l&&l.signal===c)return l.job;let u=(async()=>{if(t.managedId)try{let r=n?$t(await cx(t.managedId,{signal:c}),{integrity:e,kind:i,size:t.size}):Qt(await sx(t.managedId),e);return r.managedId=t.managedId,r}catch(n){if(n.name===`AbortError`)throw n;return{integrity:e,kind:i,size:t.size,managedId:t.managedId,error:n.message}}if(!n){let n=await BX(e);return n?.kind===i&&!n.stale?n:GX(e,t)}let[r,a]=await Promise.all([JX(e,t),BX(e)]);if(!r.error){let t=a?.kind===r.kind&&!a.stale;t&&(r.fileHashes=a.fileHashes,r.fileSizes=a.fileSizes,r.lineCounts=a.lineCounts),t||Zt(r).then(t=>ul(e,t)).catch(()=>{})}return r})();return r.set(s,{job:u,signal:c}),u.finally(()=>{r.get(s)?.job===u&&r.delete(s)}).catch(()=>{}),u}function KX(e,t=P.currentView===`bundles`?P.bundleDetailsTab:`overview`,{workspaceId:n=null}={}){let r=P.bundleDetails,i=P.bundleCodeFileRequest,a=i?.bundle===P.selectedBundle&&(!r||r.metadataOnly===!0&&!r.sourceError),o=P.currentView===`bundles`&&P.bundleDetailsTab===`code`&&t===`code`?P.bundleSourceFile??(a?i.path:null):null;G_(),P.currentView=`bundles`,P.selectedBundle=e,P.selectedBundleWorkspace=n,P.bundleDetails=null,P.bundleSourceFile=null,P.bundleCodeHistory=null,P.bundleCodeFileRequest=o?{bundle:e,path:o}:null,P.bundleCompare=null,P.bundleSourceFindingIdx=null,P.bundleCodeSearchQuery=``,P.bundleCodeSearchMode=`files`,P.bundleSearchQuery=``,P.bundleSearchRegex=!1,P.bundleSearchCase=!1,P.bundleSearchContext=!0,P.bundleDetailsTab=t??`overview`,w.showAll=!0,P.shownTriage=null}function qX(e,{preserveSource:t=!1}={}){qt(P.bundleDetailsTab,P.bundleSourceFile)&&!qt(e,t?P.bundleSourceFile:null)&&G_(),P.bundleDetailsTab=e,P.bundleCodeFileRequest=null,t||(P.bundleSourceFile=null,P.bundleCodeHistory=null),P.bundleSourceFindingIdx=null}async function JX(e,t){try{let n=await cl(e);if(F())throw new DOMException(`Local bundle closed`,`AbortError`);let r=t.name.toLowerCase().endsWith(`.map`),i=r?`sourcemap`:`stasis`;try{if(r)return $t(pa(n),{integrity:e,kind:i,size:n.byteLength});let t=pa(await Wm(n,()=>!F())),a=Ft.parse(t);return{integrity:e,kind:i,size:n.byteLength,bundle:a}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,kind:i,size:n.byteLength,error:t.message}}}catch(t){if(t.name===`AbortError`)throw t;return{integrity:e,error:t.message,size:0}}}function YX(e){if(!(e?.managedId||!e?.json&&!e?.bundle)){if(e.fileHashes){Hf(e.integrity,e.fileHashes);return}(async()=>{try{let t=await Jt(e);if(Hf(e.integrity,t),P.bundleDetails!==e)return;e.fileHashes=t,Z()}catch{}})()}}function XX(e){if(Jf(e))return Promise.resolve();if(RX.has(e))return RX.get(e);let t=(P.bundles??[]).find(t=>t.integrity===e);if(!t||t.managedId)return Promise.resolve();let n=(async()=>{let t=await BX(e);if(t?.json||t?.bundle)try{Hf(e,await Jt(t))}catch{}})();return RX.set(e,n),n.finally(()=>{RX.get(e)===n&&RX.delete(e)}).catch(()=>{}),n}async function ZX(e,t=()=>!0){let n=new Set(e);if(n.size!==0){await new Promise(e=>{let t=()=>setTimeout(e,0);typeof requestAnimationFrame==`function`?requestAnimationFrame(t):t()});for(let e of n){if(!t())return;await XX(e)}}}async function QX(e){let t=(P.bundles??[]).find(t=>t.integrity===e);if(!t)return;let n;try{n=await GX(e,t,{sources:qt(P.bundleDetailsTab,P.bundleSourceFile)})}catch(e){if(e.name===`AbortError`)return;throw e}P.selectedBundle!==e||t.managedId&&!P.bundles.includes(t)||(P.bundleDetails=n,Z(),YX(n),t.managedId||Ff().catch(()=>{}))}function $X(e=P.bundleDetails){if(e?.sourceError)return Promise.resolve(null);if(!e?.metadataOnly)return Promise.resolve(e);let t=e.managedId?W_():void 0,n=zX.get(e);if(n&&n.signal===t)return n.job;let r=(P.bundles??[]).find(t=>t.integrity===e.integrity);if(!r)return Promise.resolve(null);let i=GX(e.integrity,r).then(n=>(t?.throwIfAborted(),P.bundleDetails===e?n.error&&e.managedId?(e.sourceError=n.error,Z(),null):(n.error||(n.fileHashes=e.fileHashes,n.fileSizes=e.fileSizes,n.lineCounts=e.lineCounts,n.codeStats=e.codeStats,e.edges&&(n.edges=e.edges)),P.bundleDetails=n,Z(),n):n)).catch(e=>{if(e.name===`AbortError`)return null;throw e});return zX.set(e,{job:i,signal:t}),i.finally(()=>{zX.get(e)?.job===i&&zX.delete(e)}).catch(()=>{}),i}async function eZ({bundleId:e,teamId:t,bundleTab:n,file:r,line:i,endLine:a,compareId:o,compareMode:s},c,l,u){let d=c.find(t=>t.managedId===e);if(!d||!l()||!F())return!1;let f=WX(d.integrity,t=>t.managedId===e),p=P.bundleDetails?.managedId===e&&P.bundleDetails.integrity===d.integrity&&!P.bundleDetails.error?P.bundleDetails:null;try{P.bundles=c,sr(),KX(d.integrity,n),n===`code`&&r!=null&&(P.bundleCodeFileRequest={bundle:d.integrity,file:r,...i==null?{}:{line:i},...a==null?{}:{endLine:a}});let e=n===`compare`&&o!=null?Cx(c,d.integrity).find(e=>e.managedId===o):null;e&&(P.bundleCompare={bundle:d.integrity,target:e.integrity,mode:ni(s)}),P.bundleDetails=f??p,P.currentManagedTeam=t,P.currentManagedReport=null,P.reports=[],document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),u(),document.querySelector(`#main-content`)?.scrollTo({top:0})}catch(e){return l()&&e.name!==`AbortError`&&xx(`Couldn't open bundle: ${e.message}`,{kind:`error`}),!1}let m=P.bundleDetails,h=()=>F()&&P.currentView===`bundles`&&P.selectedBundle===d.integrity&&P.bundles.some(t=>t.managedId===e&&t.integrity===d.integrity)&&P.bundleDetails===m,g=(t,n)=>(t?.name===`AbortError`||(l()?n&&xx(`Couldn't open bundle: ${t.message}`,{kind:`error`}):h()&&(P.bundleDetails={integrity:d.integrity,kind:d.kind,size:d.size,managedId:e,error:t.message},Z())),!1),_=H(),v;for(;;){let t=W_();try{v=await sx(e,{signal:t});break}catch(e){if(e?.name===`AbortError`&&t.aborted&&h())continue;return g(e,!1)}}try{if(v.integrity!==d.integrity)throw Error(`the metadata is for another version of this bundle`);if(h()){let t=Qt(v,v.integrity),n=f?.integrity===t.integrity?Object.assign(f,{fileHashes:t.fileHashes,fileSizes:t.fileSizes,lineCounts:t.lineCounts,codeStats:t.codeStats},t.edges?{edges:t.edges}:{}):t;n.managedId=e,P.bundleDetails=n,Z({animate:!1})}return l()&&_===H()&&P.bundleDetails?.managedId===e&&P.selectedBundle===d.integrity}catch(e){return g(e,!0)}}function tZ(e){let t=1/0,n=Date.now()+5e3;for(let r of e)for(let e of r.bundles??[])[`stasis`,`sourcemap`].includes(e.kind)&&e.summary==null&&(t=Math.min(t,Math.max(n,e.summaryRetryAt??0)));return t}function nZ(e){let t=null,n=null,r=null;return async({generation:i,session:a,signal:o,reuse:s=!1,revision:c=null})=>{if(o.aborted)return null;let l=JSON.stringify([i,a?.id,a?.role,a?.csrfToken]);if(r!==l&&(t?.controller.abort(),t=null,n=null,r=l),n&&Date.now()<n.expiresAt&&(s||c!==null&&c===n.revision))return n.teams;if(!t||t.signal.aborted||c!==null&&t.revision!==c){t?.controller.abort(),n=null;let i=new AbortController,a=AbortSignal.any([o,i.signal]),s={controller:i,signal:a,promise:null,revision:c};t=s;let u=null;s.promise=e({fallback:null,signal:a,onRevision:e=>{u=e}}).then(e=>a.aborted||r!==l?null:(e!==null&&(n={teams:e,revision:u,expiresAt:tZ(e)}),e)).finally(()=>{t===s&&(t=null)})}let u=t,d=()=>u.controller.abort();o.addEventListener(`abort`,d,{once:!0});try{let e=await u.promise;return o.aborted||u.signal.aborted?null:e}finally{o.removeEventListener(`abort`,d)}}}function rZ(e){let t=String(e??``).split(/[\s\-_/.]+/u).filter(Boolean);if(t.length<2)return Array.from(t[0]??``).slice(0,2).join(``);let n=t.slice(0,2).map(e=>Array.from(e)[0]).join(``);return/^\p{Ll}/u.test(n)?n:n.toUpperCase()}var iZ=`*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:host{width:260px;flex-shrink:0;height:100%;background:var(--surface);backdrop-filter:var(--glass-blur);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .15s ease-out;overflow:hidden}:host(.collapsed){width:32px}:host([inert]) .brand-tag,:host([inert]) .sidebar-search,:host([inert]) .sidebar-actions,:host([inert]) #file-list,:host([inert]) #sidebar-toggle,:host([inert]) #sidebar-home,:host([inert]) #sidebar-rail,:host([inert]) #encryption-toggle,:host([inert]) #storage-status{visibility:hidden}:host(.collapsed) .brand,:host(.collapsed) .sidebar-search,:host(.collapsed) #encryption-toggle,:host(.collapsed) #file-list{display:none}:host(.collapsed) .sidebar-header{padding:.5rem 0;justify-content:center}:host(.collapsed) .sidebar-actions{padding:.35rem 0;flex-direction:column;justify-content:center}:host(.collapsed) sidebar-delete-current,:host(.collapsed) #storage-status,:host(.collapsed) #sync-status .sync-label{display:none}:host(.collapsed) #sync-status{padding:.25rem;border:0}:host(.collapsed) #view-as-status,:host(.collapsed) #public-status,:host(.collapsed) .auth-login{display:none}:host(.collapsed) #auth-status[data-authed="1"]{padding:.2rem}:host(.collapsed[data-view-as]) #auth-status .user-avatar{box-shadow:0 0 0 1.5px var(--surface),0 0 0 3px var(--accent)}#sidebar-home,#sidebar-rail{display:none}:host(.collapsed) #sidebar-home{display:grid;margin:0 auto;padding:.3rem 0}:host(.collapsed) #sidebar-rail{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.35rem 0;list-style:none;overflow-y:auto;overscroll-behavior:none;scrollbar-width:none}.rail-item{width:26px;padding:.25rem 0 .2rem;display:grid;justify-items:center;gap:.15rem;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);font:inherit;font-size:.58rem;font-weight:600;line-height:1;white-space:nowrap;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.current{color:var(--accent);background:rgb(from var(--text) r g b / .1)}&:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}:host([data-mode="managed"]:not([data-workspace-access])) .sidebar-search,:host([data-mode="managed"]:not([data-authenticated])) .sidebar-actions{display:none}.sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem .4rem;.brand{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;user-select:none}.brand-button{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;border-radius:var(--ui-radius, 4px);&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.brand-tag{padding:.08rem .25rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;font:inherit;font-size:.65rem;font-weight:500;color:var(--muted);text-transform:lowercase;letter-spacing:.02em;&[role=button]{cursor:default}&[role=button]:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}}@media(display-mode:window-controls-overlay){.sidebar-header{min-height:env(titlebar-area-height,0px);padding-left:max(.75rem,env(titlebar-area-x,0px));-webkit-app-region:drag;app-region:drag;.brand-button,.brand-tag,#encryption-toggle{-webkit-app-region:no-drag;app-region:no-drag}#sidebar-toggle{display:none}}}:host-context(body.theme-w95) .sidebar-header{position:fixed;z-index:1;top:calc(var(--w95-gap) + var(--w95-frame));right:calc(var(--w95-gap) + var(--w95-frame) + var(--wco-right-toolbar, 0px));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-title-height);min-height:0;justify-content:normal;gap:0;padding:0 20px 0 max(2px,env(titlebar-area-x,0px) - var(--w95-gap) - var(--w95-frame));background:var(--w95-title);color:#fff;.brand{display:flex;gap:4px;margin-right:4px;font-size:11px;letter-spacing:0;&:before{content:"";flex:none;width:16px;height:16px;background:url(./icon.svg) center / contain no-repeat}}.brand-button:focus-visible{outline:1px dotted #fff;outline-offset:1px}.brand-tag{padding:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;&:before{content:"- " / ""}&[role=button]:hover{color:inherit;background:none}&:focus-visible{outline:1px dotted #fff;outline-offset:1px}}:is(#encryption-toggle,#sidebar-toggle){display:grid;width:16px;height:14px;background:var(--w95-face);box-shadow:var(--w95-raised);-webkit-app-region:no-drag;app-region:no-drag;& svg{display:none}&:active{box-shadow:var(--w95-pressed)}&:focus-visible{outline:1px dotted #000;outline-offset:-4px}}#sidebar-toggle{background:var(--w95-glyph-maximize),var(--w95-face)}#encryption-toggle{background:var(--w95-glyph-unlock),var(--w95-face)}#encryption-toggle:is(.encrypted,.locked-pending){background:var(--w95-glyph-lock),var(--w95-face)}}:host-context(body.theme-w95):host(.collapsed) .sidebar-header #sidebar-toggle{background:var(--w95-glyph-restore),var(--w95-face)}:host-context(body.theme-w95) .sidebar-actions{position:fixed;z-index:1;right:calc(var(--w95-gap) + var(--w95-frame));bottom:calc(var(--w95-gap) + var(--w95-frame));left:calc(var(--w95-gap) + var(--w95-frame));height:var(--w95-status-height);flex-direction:row;justify-content:normal;gap:2px;padding:0;border-top:0;& sidebar-delete-current{display:contents}:is(button,#sync-status,#auth-status,#manage-status,#public-status){display:inline-flex;align-items:center;gap:4px;width:auto;height:100%;max-width:none;padding:0 6px;border:0;background:none;color:var(--text);box-shadow:var(--w95-status);font-size:11px;&:hover{background:none;color:var(--text)}&:active{box-shadow:inset 1px 1px #000,inset -1px -1px #fff;opacity:1}&[hidden]{display:none}}:is(#sync-status,#auth-status){order:-1}#manage-status{order:2}&:after{content:"";flex:1;order:1;align-self:stretch;box-shadow:var(--w95-status)}#sync-status .sync-label{display:inline}}#sidebar-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}}#encryption-toggle{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);background:rgb(from var(--text) r g b / .06)}&.encrypted{color:var(--accent)}&.locked-pending{color:light-dark(#b25b00,#f0a060);outline:1px dashed currentcolor;outline-offset:-2px}}#encryption-toggle[hidden]{display:none!important}.sidebar-search{display:flex;align-items:center;margin:0 .55rem .25rem;padding:0 .25rem 0 .55rem;background:rgb(from var(--bg) r g b / .45);border:1px solid var(--border);border-radius:var(--ui-radius, 7px);transition:background .12s,border-color .12s;-webkit-app-region:no-drag;app-region:no-drag;&:has(input:focus){border-color:var(--accent);background:rgb(from var(--text) r g b / .06)}.sidebar-search-icon{flex-shrink:0;color:var(--muted);pointer-events:none;margin-right:.4rem}& input{flex:1;min-width:0;padding:.3rem 0;background:transparent;color:var(--text);border:0;outline:none;font:inherit;font-size:.78rem;&::placeholder{color:var(--muted)}&:focus::placeholder{color:transparent}&::-webkit-search-cancel-button{display:none}}}sidebar-view-button{display:contents}sidebar-view-button[hidden]{display:none!important}.sidebar-view-btn{position:relative;flex-shrink:0;width:20px;height:20px;display:grid;place-items:center;background:transparent;color:var(--muted);border:0;border-radius:var(--ui-radius, 3px);padding:0;margin-left:2px;transition:background .12s,color .12s;sidebar-view-button+sidebar-view-button>&{margin-left:.4rem}sidebar-view-button:last-of-type>&{margin-right:.1rem}& svg{width:14px;height:14px}&:hover{color:var(--text);background:rgb(from var(--text) r g b / .08)}&.active{color:var(--accent);background:rgb(from var(--text) r g b / .1)}.view-btn-count{position:absolute;top:-4px;right:-4px;background:var(--bg);color:color-mix(in srgb,var(--muted),var(--text) 15%);font-size:8.5px;font-weight:600;border-radius:999px;padding:0 3px;min-width:11px;text-align:center;line-height:11px;font-variant-numeric:tabular-nums;pointer-events:none}&.active .view-btn-count{color:var(--accent)}}#file-list{list-style:none;flex:1;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable;-webkit-app-region:no-drag;app-region:no-drag;padding:0 .35rem .25rem 0;margin:0;scrollbar-width:thin;scrollbar-color:var(--border) transparent;&::-webkit-scrollbar{width:5px}&::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}}.file-group-header{display:flex;align-items:center;justify-content:space-between;padding:.45rem .35rem .2rem .55rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);user-select:none;&:first-child{padding-top:.25rem}}.file-group-header.workspace-header .workspace-header-actions{display:flex;align-items:center;gap:.35rem}.workspace-add{width:18px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover{color:var(--text);border-color:var(--accent)}}.file-item:is(.workspace-item,.team-item){display:block;border-radius:var(--ui-radius, 0 5px 5px 0)}.workspace-heading{display:flex;align-items:stretch;gap:.15rem}.workspace-meta{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:0 .3rem .2rem calc(2rem - 3px);color:var(--muted);font-size:.68rem;line-height:1.3;white-space:nowrap;user-select:none}.workspace-findings{min-width:0;overflow:hidden;text-overflow:ellipsis}.workspace-sections{display:inline-flex;flex-shrink:0;margin-left:auto;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);overflow:hidden}.workspace-sections button{padding:.06rem .25rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.64rem;line-height:1.4;font-variant-numeric:tabular-nums;+button{border-left:1px solid var(--border)}&:hover:not(:disabled){background:var(--surface-active);color:var(--text)}&[aria-expanded=true]{background:rgb(from var(--accent) r g b / .1);color:var(--accent)}&:disabled{background:var(--surface-active);color:var(--muted)}}.workspace-share,.workspace-export,.workspace-leave{flex-shrink:0;width:22px;align-self:center;height:22px;display:none;place-items:center;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:var(--ui-radius, 4px);padding:0;&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .06);border-color:var(--accent)}}.file-item.team-item:focus-within .workspace-share{display:grid}@media(hover:none){.file-item.team-item .workspace-share{display:grid}}.workspace-leave:hover:not(:disabled){color:var(--critical, #f87171);border-color:var(--critical, #f87171)}@media(hover:hover){.file-item.team-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-share,.file-item.workspace-item:hover .workspace-export,.file-item.workspace-item:hover .workspace-leave{display:grid}}.workspace-rename-input{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--ui-radius, 3px);padding:0 .25rem;margin:-1px 0;font:inherit;font-size:.76rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;outline:none}.file-item.team-item .team-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item>.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;background:none;border:0;padding:.2rem .3rem .2rem 1.3rem;font-family:inherit;font-size:.78rem;text-align:left}.file-item.team-bundle-item .file-icon{flex-shrink:0;color:var(--muted)}.file-item.team-bundle-item .file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}.file-item{list-style:none;position:relative}.file-item.current:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--accent);border-radius:var(--ui-radius, 0 2px 2px 0);pointer-events:none}.file-item button.file-name{display:flex;align-items:center;gap:.5rem;width:100%;box-sizing:border-box;padding:.2rem .3rem .2rem .55rem;background:transparent;color:var(--text);border:1px solid transparent;border-radius:var(--ui-radius, 0 5px 5px 0);font-family:inherit;font-size:.78rem;text-align:left;&:hover{background:rgb(from var(--text) r g b / .04)}.file-icon{flex-shrink:0;color:var(--muted)}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}.file-item:is(.workspace-item,.team-item) button.file-name{flex:1;min-width:0;padding-left:calc(.55rem - 3px)}.file-item .file-count{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);opacity:.65;font-size:.68rem;font-weight:500;font-variant-numeric:tabular-nums}.file-item.current button.file-name{background:rgb(from var(--accent) r g b / .09);border-color:rgb(from var(--accent) r g b / .16);.file-icon,.file-count{color:var(--text)}}.file-item.content-hidden button.file-name .file-label{color:var(--muted)}.file-item:is(.workspace-item,.team-item):hover{background:rgb(from var(--text) r g b / .04)}.file-item:is(.workspace-item,.team-item) button.file-name:hover{background:transparent}.file-item:is(.workspace-item,.team-item).current{background:rgb(from var(--accent) r g b / .09);border-radius:var(--ui-radius, 0 5px 5px 0);box-shadow:inset 0 0 0 1px rgb(from var(--accent) r g b / .16)}.file-item:is(.workspace-item,.team-item).current button.file-name{background:transparent;border-color:transparent}:host-context(body.theme-paper) .file-item.current{background:transparent;box-shadow:none;& button.file-name{background:transparent;border-color:transparent}.file-name:after{content:"";position:absolute;inset:0;border:1px dashed var(--border);border-left:0;pointer-events:none}}:host-context(body.theme-w95){.sidebar-search{margin:2px 2px 4px;border:0;background:#fff;box-shadow:var(--w95-sunken);&:has(input:focus){background:#fff}& input{font-size:11px}}.file-group-header{padding-top:.35rem;font-size:11px;color:#000;text-transform:none;letter-spacing:0}.file-item button.file-name{font-size:11px}.file-item.indented:before{background:none;border-left:1px dotted var(--w95-shadow)}#storage-status{border-color:#000;background:var(--w95-tooltip);color:#000;&:hover{border-color:#000;background:var(--w95-tooltip)}}#file-list{padding-right:0;scrollbar-width:auto;scrollbar-color:auto}::-webkit-scrollbar,#file-list::-webkit-scrollbar{width:16px;height:16px;background:var(--w95-dither)}::-webkit-scrollbar-thumb,#file-list::-webkit-scrollbar-thumb{background:var(--w95-face);border-radius:0;box-shadow:var(--w95-raised)}}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button{display:block;width:16px;height:16px;background:var(--w95-arrow-down),var(--w95-face);box-shadow:var(--w95-raised)}:host-context(body.theme-w95) ::-webkit-scrollbar-button:single-button:vertical:decrement{background:var(--w95-arrow-up),var(--w95-face)}:host-context(body.theme-w95) .file-item.current{--text: #fff;--muted: var(--w95-light);&:after{display:none}&:is(.workspace-item,.team-item),&:not(.workspace-item,.team-item) button.file-name{background:var(--w95-title);border-color:transparent;box-shadow:none}}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(prefers-reduced-motion:reduce){:host,*,*:before,*:after{transition:none!important}}.file-item.indented button.file-name{padding-left:1.3rem}.file-item.indented:before{content:"";position:absolute;left:.85rem;top:0;bottom:0;width:1px;background:var(--border)}.file-item.bundle-missing>.file-name,.file-item.report-missing>.file-name{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem 1.4rem;color:var(--muted);font-size:.78rem;font-style:italic;cursor:default;.file-icon{flex-shrink:0;color:var(--muted);font-style:normal}.file-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;line-height:14.5px}}:host-context(body.theme-pink) .workspace-rename-input,:host-context(body.theme-pink) .file-item button.file-name .file-label,:host-context(body.theme-pink) .file-item.bundle-missing .file-label,:host-context(body.theme-pink) .file-item.report-missing .file-label,:host-context(body.theme-w95) .workspace-rename-input,:host-context(body.theme-w95) .file-item button.file-name .file-label,:host-context(body.theme-w95) .file-item.bundle-missing .file-label,:host-context(body.theme-w95) .file-item.report-missing .file-label{font-family:inherit}.file-item.dragging button.file-name{opacity:.4}.file-item.workspace-item.drag-over button.file-name,.file-item.indented.drag-over button.file-name{background:rgb(from var(--accent) r g b / .12);border-color:var(--accent)}.file-group-header.drag-over{background:rgb(from var(--accent) r g b / .12);border-radius:var(--ui-radius, 4px)}.sidebar-actions{padding:.35rem .55rem .45rem;border-top:1px solid var(--border);display:flex;gap:.35rem;align-items:center;justify-content:space-between;& button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--ui-radius, 4px);padding:.2rem .5rem;font-size:.72rem;font-family:inherit;-webkit-app-region:no-drag;app-region:no-drag;&:hover{color:var(--text);border-color:var(--accent)}&.danger:hover{color:var(--critical);border-color:var(--critical)}&[disabled]{opacity:.4;border-color:var(--border)!important;color:var(--muted)!important}}}sidebar-delete-current{display:contents}sidebar-delete-current[hidden]{display:none!important}sidebar-delete-current button{display:inline-flex;align-items:center;gap:.35rem;.trash-icon{flex-shrink:0}}#sync-status{display:inline-flex;align-items:center;gap:.35rem;border-color:transparent;&:hover{border-color:var(--accent)}.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;box-shadow:0 0 0 1px rgb(from var(--text) r g b / .15)}&[data-status=online] .sync-dot{background:var(--green)}&[data-status=connecting] .sync-dot{background:var(--medium)}&[data-status=offline] .sync-dot{background:var(--critical)}}#sync-status[data-proxy-auth] .sync-dot{box-shadow:0 0 0 2px var(--accent)}#sync-status[data-degraded] .sync-dot{box-shadow:0 0 0 2px var(--medium)}#sync-status[hidden]{display:none}#storage-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .55rem;background:rgb(from var(--medium) r g b / .12);border:1px solid rgb(from var(--medium) r g b / .3);border-radius:var(--ui-radius, 5px);color:light-dark(#b25b00,#f0a060);font-size:.72rem;font-family:inherit;cursor:default;text-align:left;-webkit-app-region:no-drag;app-region:no-drag;&:hover{background:rgb(from var(--medium) r g b / .18);border-color:rgb(from var(--medium) r g b / .5)}.storage-dot{width:7px;height:7px;border-radius:50%;background:var(--medium);flex-shrink:0}}#storage-status[hidden]{display:none}#view-as-status{display:flex;align-items:center;gap:.4rem;margin:.3rem .55rem .45rem;padding:.3rem .3rem .3rem .55rem;background:rgb(from var(--accent) r g b / .12);border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 5px);color:var(--text);font-size:.72rem;user-select:none;-webkit-app-region:no-drag;app-region:no-drag;.view-as-label{flex:1;display:grid;gap:.05rem;min-width:0}.view-as-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-as-note{color:var(--muted);font-size:.66rem}.view-as-stop{flex-shrink:0;padding:.15rem .5rem;font:inherit;font-weight:500}}#view-as-status[hidden]{display:none}#auth-status[hidden],#manage-status[hidden]{display:none!important}#auth-status{display:inline-flex;align-items:center}#auth-status[data-authed="1"]{display:inline-flex;align-items:center;gap:.4rem;max-width:12rem;padding:.2rem .35rem;border-color:transparent;border-radius:var(--ui-radius, 5px)}#auth-status[data-authed="1"]:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#manage-status[hidden]{display:none}#manage-status{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;padding:.25rem;border-color:transparent;color:var(--muted)}#manage-status:hover{border-color:transparent;background:rgb(from var(--text) r g b / .07)}#public-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2rem 0;color:var(--muted);font-size:.72rem;user-select:none}#public-status[hidden]{display:none}.auth-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font:inherit;font-size:.72rem;font-weight:400}.user-avatar{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--accent);display:inline-grid;place-items:center;user-select:none}.user-avatar-lg{width:38px;height:38px}.user-avatar-fallback{font-size:.72rem;font-weight:600;line-height:1;color:var(--bg);text-transform:uppercase}.user-avatar-lg .user-avatar-fallback{font-size:1.05rem}.user-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.user-avatar img.broken{display:none}.user-menu[popover]{position:fixed;inset:auto;margin:0;min-width:11rem;flex-direction:column;gap:.1rem;background:var(--surface, var(--bg));border:1px solid var(--border);border-radius:var(--ui-radius, 6px);padding:.3rem;box-shadow:0 4px 14px #00000047}.user-menu[popover]:not(:popover-open){display:none}.user-menu[popover]:popover-open{display:flex}.user-card{display:flex;align-items:center;gap:.5rem;padding:.3rem .35rem .45rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.user-id{display:flex;flex-direction:column;min-width:0}.user-login{font-weight:600;font-size:.82rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{font-size:.74rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-row{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--ui-radius, 4px);padding:.4rem .5rem;font:inherit;font-size:.82rem;color:var(--text)}.user-menu-row.logout-row{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem}.logout-row svg{flex:0 0 auto}.user-menu-row:hover{background:rgb(from var(--text) r g b / .08)}:host-context(body.theme-w95) *{overscroll-behavior:none}
193
+ `,aZ=`:is(.file-icon,.report-logo){&.brand-deepview{--brand-bg: #2563eb;--brand-fg: #fff}&.brand-claude{--brand-bg: #d97757;--brand-fg: #fff}&.brand-codex{--brand-bg: #fff;--brand-fg: #000}&.brand-vercel{--brand-bg: #000;--brand-fg: #fff}&.brand-markdown{--brand-bg: #374151;--brand-fg: #fff}&.brand-piolium{--brand-bg: #fbb829;--brand-fg: #1c1b19}.bg{fill:var(--brand-bg)}.fg{fill:var(--brand-fg)}}.file-icon:is(.brand-codex,.brand-vercel) .bg{stroke:var(--brand-fg);stroke-width:.5}.report-logo{display:grid;place-items:center;align-self:stretch;flex:0 0 20px;background:var(--brand-bg);border-right:1px solid var(--border)}
194
+ `,oZ=null,sZ=null,cZ=!1,lZ=!1,uZ=0;function dZ(){let e=navigator.userAgent;return/AppleWebKit/u.test(e)&&!/Chrome\/|Chromium|Edg\/|OPR\/|Android/u.test(e)?`webkit`:/Firefox\//u.test(e)?`firefox`:`chromium`}function fZ(){return dZ()===`webkit`}function pZ(e){return e>=1e9?`${(e/1e9).toFixed(1)} GB`:e>=1e6?`${(e/1e6).toFixed(1)} MB`:e>=1e3?`${(e/1e3).toFixed(1)} kB`:`${e} B`}function mZ(){if(!oZ)return;if(F()||!sZ||sZ.persisted!==!1||!cZ){oZ.hidden=!0;return}oZ.hidden=!1;let e=sZ.usage===null||sZ.quota===null?``:` Using ${pZ(sZ.usage)} of ${pZ(sZ.quota)}.`;oZ.querySelector(`.storage-label`).textContent=`Storage at risk`,oZ.dataset.tooltip=`Reports, bundles and triage are in best-effort storage — the browser may delete them all under disk pressure or after long inactivity. `+(fZ()?`Click for how to protect them (on Safari and iOS browsers this needs the app installed to the Home Screen or Dock).`:`Click to request persistent storage — if the browser declines, instructions for enabling it follow.`)+e}function hZ(e,t){let n=t?` (user gesture)`:``;if(e){console.info(`storage: persistent-storage request granted${n}`);return}let r=!fZ()&&location.hostname===`localhost`?` Note: plain localhost can NEVER pass — Chromium keys site importance by registerable domain (IP literals excepted) and localhost has none; for local testing use 127.0.0.1 instead.`:``;console.info(`storage: persistent-storage request not granted${n} \u2014 `+(fZ()?`Safari ties persistence to install state; add the app to the Home Screen / Dock.`:`Chromium-based browsers never prompt and silently deny origins they don't consider important; installing the app, bookmarking it, allowing notifications, or regular use flips the heuristic (re-evaluated on every request). Firefox shows a prompt instead.`)+r)}async function gZ(){if(await Q$(),!oZ||F()){mZ();return}let[e,t]=await Promise.all([dp(),(async()=>{try{return(await Lc()).length>0||await rl()}catch{return!1}})()]);sZ=e,cZ=t,mZ()}function _Z(){!oZ||uZ||(uZ=setTimeout(()=>{uZ=0,gZ()},1e3))}async function vZ(){lZ||(await gZ(),F()||sZ?.persisted!==!1||!cZ||lZ)||(lZ=!0,hZ(await up(),!1),await gZ())}async function yZ(){if(sZ&&sZ.persisted===!1){lZ=!0;let e=await up();hZ(e,!0),e||await Qe()}await gZ()}function bZ(e){oZ=e,oZ&&(oZ.addEventListener(`click`,()=>{yZ()}),Fc((e,t)=>{_Z(),t===`save`&&vZ()}),vZ())}function xZ(e){let t=document.querySelector(`#landing-workspaces`);if(!t)return;let n=e.filter(e=>e.reports.length>0||e.bundles?.length>0).toSorted((e,t)=>t.reports.length-e.reports.length||e.name.localeCompare(t.name)).slice(0,5);M(n.length>0?k`<nav class="landing-workspaces" aria-label="Workspaces"><div class="landing-workspace-row">${D(n,e=>e.id,e=>{let t=xm(e),n=e.reports.filter(e=>Nu(e)!==y).length;return k`<button type="button" class="landing-workspace" data-landing-workspace="${e.id}">${O(Qi)} <span class="landing-workspace-text"><span class="landing-workspace-name">${e.name}</span> <span class="landing-workspace-count">${t?.appMode?`${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`} \xB7 `:``}${n.toLocaleString()} report${n===1?``:`s`}</span></span></button>`})}</div></nav>`:j,t)}var SZ=null;function CZ(e){return{reports:e.reports.filter(e=>e?.analyzer!==`links`).length,bundles:e.bundles?.length??0,repositories:new Set((e.repos??[]).map(e=>e.repoId)).size}}function wZ(e){let t=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${e===1?t:n}`,n=PJ(e.app),{reports:r,bundles:i,repositories:a}=CZ(e);return[n==null?null:t(n,`finding`),r?t(r,`report`):null,i?t(i,`bundle`):null,a?t(a,`repository`,`repositories`):null].filter(Boolean).join(` · `)}function TZ(e){let{serverMode:t,session:n,sessionPending:r=!1,teamsPending:i=!1,teams:a=[],alternateMode:o=`local`,onSwitchMode:s}=e,c=document.querySelector(`#drop-zone`),l=c?.querySelector(`.managed-landing`);if(!l)return;let u=t===`managed`,d=t===`local`,f=u&&(n?n.role!==`none`&&i:r);f?SZ?SZ.options=e:SZ={options:e,elapsed:!1,timer:setTimeout(()=>{SZ.elapsed=!0,TZ(SZ.options)},1e3)}:(clearTimeout(SZ?.timer),SZ=null);let p=f&&!SZ.elapsed;c.dataset.serverMode=u?`managed`:`local`,c.setAttribute(`aria-label`,u?p?n?`Loading teams`:`Loading session`:n?.role===`none`?`No workspace access`:n?`Team findings`:`Log in`:`Drop reports here`);let m=c.querySelector(`.drop-local-copy`);if(m&&(m.textContent=d?`Review locally in your browser.`:`Review locally in your browser. Sync across devices when you need it.`),!u||p){M(j,l);return}let h=n?.role===`admin`||n?.role===`manage`,g=a.filter(e=>Object.values(CZ(e)).some(Boolean));if(Ze()&&!n){M(k`<section class="managed-login"><h1>Public link unavailable</h1><p>This link is invalid, has been revoked, or public sharing is disabled.</p></section>`,l);return}M(n==null?k`<section class="managed-login"><button type="button" class="managed-login-button" data-managed-login><svg viewBox="0 0 16 16" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> <span>Continue with GitHub</span></button><div class="managed-login-alternative"><span>or continue to</span> <button type="button" @click="${s}">${o} mode</button></div></section>`:n.role===`none`?k`<section class="managed-login" aria-labelledby="managed-no-access-title"><h1 id="managed-no-access-title">No workspace access</h1><p>Ask an administrator to grant access to this workspace.</p></section>`:k`<div class="managed-landing-hero"><p class="drop-eyebrow">Your security workspace</p><h1>Your team's findings, in focus.</h1><p class="drop-prompt-intro">${g.length>0?`Review the security findings shared with your account and turn them into clear next steps.`:`Reports shared with your teams will appear here.`}</p></div>${g.length>0?k`<nav class="managed-team-list" aria-label="Teams">${D(g,e=>e.id,e=>k`<button type="button" class="managed-team-button" data-managed-team="${e.id}"><span class="managed-team-icon" aria-hidden="true">${O(Qi)}</span> <span class="managed-team-copy"><strong>${e.name}</strong> <span>${wZ(e)}</span> </span><svg class="managed-team-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 4 4 4-4 4"/></svg></button>`)}</nav>`:k`<p class="managed-landing-empty">No team reports are available yet.</p>`}<nav class="managed-content-links" aria-label="Content and activity">${[...h?[[`manage-bundles`,`Bundles`,Xi],[`manage-scans`,`Scans`,na],[`manage-reports`,`Reports`,ra]]:[],[`npm`,`npm packages`,Zi]].map(([e,t,n])=>k`<button type="button" class="managed-content-card" data-managed-page="${e}"><span class="managed-content-icon" aria-hidden="true">${O(n)}</span> <span>${t}</span></button>`)}</nav>${h?k`<div class="managed-landing-actions"><button type="button" class="managed-manage-button" data-managed-page="manage"><span aria-hidden="true">${O(ea)}</span><span>Manage</span></button></div>`:j}`,l)}async function EZ(e){await dt({workspace:e})}var DZ=class extends xv{focusInitial(){this.renderRoot.querySelector(`button.primary`)?.focus()}_onReload=()=>this._finish(`reload`);render(){return k`<dialog @close="${this._onClose}"><header><h3>Sign in to keep syncing</h3></header><p class="nwd-intro ui-hint">Triage can't reach the sync server — the connection is being redirected to an <strong>authentication proxy</strong> (for example Cloudflare Access). This usually means your access session has expired.</p><p class="nwd-note ui-hint">Reload the page to sign in again. Your triage is saved on this device, so reloading won't lose anything — or keep working offline and reload later.</p><footer class="nwd-actions"><span class="nwd-spacer"></span> <button type="button" @click="${this._onClose}">Not now</button> <button type="button" class="primary" @click="${this._onReload}">Reload page</button></footer></dialog>`}};customElements.define(`proxy-auth-dialog`,DZ);function OZ(){return new Promise(e=>{let t=document.createElement(`proxy-auth-dialog`);t.exclusive=!0;let n=(n,r)=>{t.remove(),e({shown:n,reload:r})};t.addEventListener(`resolve`,e=>n(!0,e.detail===`reload`)),t.addEventListener(`modal-conflict`,()=>n(!1,!1)),document.body.append(t)})}async function kZ(e,{openManagedReport:t,readTeam:n=lx,isCurrent:r=()=>!0}){let i=P.managedSession,a=()=>r()&&F()&&P.managedSession?.id===i?.id&&P.managedSession?.role===i?.role,o=P.managedTeams;if(!a())return null;async function s(n,r){return!a()||(P.currentManagedTeam!==n.id||P.currentManagedReport!==r)&&!await t(n,r)||!a()||P.currentManagedTeam!==n.id||P.currentManagedReport!==r?null:NC(e.id)}if(e.teamId){let t=o.find(t=>t.id===e.teamId);return!t||e.reportId&&!t.reports.some(t=>t.id===e.reportId)?null:s(t,e.reportId??null)}let c=o.flatMap(e=>e.reports.map(t=>({team:e,report:t}))),l=new Set,u=new Map;async function d(t){for(let{team:r,report:i}of t){if(!a())return null;if(l.has(`${r.id}:${i.id}`))continue;l.add(`${r.id}:${i.id}`),u.has(r.id)||u.set(r.id,await n(r.id));let t=u.get(r.id)?.find(e=>e.id===i.id);if(!a())return null;if(t==null)continue;let o=await ne(JSON.stringify(t.data),i.filename);if(!a())return null;if(o?.findings.some(t=>t.id===e.id))return s(r,i.id)}return null}if(e.report){let t=await Promise.all(c.map(({report:e})=>zr(`report`,e.filename))),n=await d(c.filter((n,r)=>t[r]===e.report));if(n||!a())return n}if(e.workspace){let t=o[(await Promise.all(o.map(e=>zr(`workspace`,`managed-team:${e.id}`)))).indexOf(e.workspace)];if(t){let e=await s(t,null);if(e||!a())return e}}if(!a())return null;let f=o.find(e=>e.id===P.currentManagedTeam);if(f&&(P.currentManagedReport==null||f.reports.some(e=>e.id===P.currentManagedReport))){let t=NC(e.id);if(t)return t}return d(c)}async function AZ(e,t,n,{openReport:r,openManagedReport:i}){if(F()){let e=P.managedTeams.find(e=>e.id===P.currentManagedTeam);if(!n||!e?.reports.some(e=>e.id===n)||(P.currentManagedReport!==n||P.currentWorkspace)&&!await i(e,n)||!F()||P.currentManagedTeam!==e.id||P.currentManagedReport!==n||P.currentWorkspace)return null}else if(n||((P.currentFile!==t||P.currentWorkspace)&&await r(t),F()||P.currentFile!==t||P.currentWorkspace))return null;return NC(e)}async function jZ(e,t){if(F())return kZ(e,t);let{openReport:n,openWorkspace:r}=t,[i,a]=await Promise.all([Xf(e.report),Yf(e.workspace)]);async function o(t){let r=MC(t,a?.id);return(P.currentFile!==t||P.currentWorkspace||P.currentReportWorkspace!==r)&&await n(t,void 0,{workspaceId:r}),NC(e.id)}if(i){let e=await o(i);if(e)return e}if(a){P.currentWorkspace!==a.id&&await r(a.id);let t=NC(e.id);if(t)return t}let s=NC(e.id);if(s)return s;let c=P.reports.map(e=>e.fileName).filter(Boolean),l=await Qf(e.id,{skip:c});return l?await o(l):null}var MZ=1600,NZ=`link-target`,PZ=`Couldn't find that finding in any of your reports. Import the report it came from, then open the link again.`,FZ=null,IZ=3,LZ=150,RZ=5;function zZ(e){FZ!==null&&clearTimeout(FZ);for(let e of document.querySelectorAll(`.${NZ}`))e.classList.remove(NZ);e.classList.add(NZ),FZ=setTimeout(()=>{e.classList.remove(NZ),FZ=null},MZ)}function BZ(e){return new Promise(t=>{let n=null,r=0,i=0,a=()=>{let o=Math.round(e.getBoundingClientRect().top);r=o===n?r+1:0,n=o,r>=IZ||++i>=LZ?t():requestAnimationFrame(a)};requestAnimationFrame(a)})}function VZ(e){let t=0,n=window.innerHeight,r=iN(e);if(r){let e=r.getBoundingClientRect();t=Math.max(t,e.top),n=Math.min(n,e.bottom)}return{top:t,bottom:n}}function HZ(e){let t=e.getBoundingClientRect();if(t.height===0)return!1;let{top:n,bottom:r}=VZ(e);if(r<=n)return!1;let i=(n+r)/2;return t.top>=n&&t.bottom<=r||t.top<=i&&t.bottom>=i}async function UZ(e){e.scrollIntoView({block:`center`,behavior:`smooth`});for(let t=0;t<RZ;t++){if(await BZ(e),!e.isConnected||HZ(e))return;e.scrollIntoView({block:`center`,behavior:`instant`})}}async function WZ(e){let t=CSS.escape(e);if(P.viewMode===`table`){let t=R.querySelector(`finding-table`);if(t){try{await t.updateComplete}catch{}for(let n of t.shadowRoot?.querySelectorAll(`finding-row`)??[])if(n.group&&V(n.group)===e)return n}}if(P.viewMode===`kanban`){let e=R.querySelector(`.kanban-card[data-gid="${t}"]`);if(e)return e}return R.querySelector(`finding-card[data-gid="${t}"]`)??R.querySelector(`[data-gid="${t}"]`)}async function GZ(e,t,n=()=>!0){let r=PC(e.group,t),i=Zg(r);if(i&&Vg(i)&&queueMicrotask(Sd),Z(),await $({revealSelection:!0}),!n())return{ok:!1};let a=await WZ(r);return n()?a?(typeof a.ensureRendered==`function`&&await a.ensureRendered(),await UZ(a),n()?(zZ(a),{ok:!0}):{ok:!1}):{ok:!0}:{ok:!1}}async function KZ(e,{openManagedReport:t=lW,isCurrent:n=()=>!0}={}){if(!e?.id)return{ok:!1,reason:`This link is missing a finding id.`};let r=await jZ(e,{openReport:oW,openWorkspace:uW,openManagedReport:t,isCurrent:n});return n()?r?await GZ(r,e.id,n):{ok:!1,reason:F()?`Couldn't find that finding in the team reports you can access.`:PZ}:{ok:!1}}async function qZ(e,t,n=null){if(!e||!t)return{ok:!1,reason:`Missing finding id or report name.`};let r=await AZ(e,t,n,{openReport:oW,openManagedReport:lW});return r?await GZ(r,e):{ok:!1,reason:n?`Could not open that finding in "${t}". Open the team and try again.`:`Couldn't find that finding in "${t}". It may have been re-imported since this links file was written.`}}var JZ=null,Q=null,YZ=null;function XZ(e){let t=document.querySelector(`#drop-zone`);t&&(e?t.dataset.serverModePending=`true`:delete t.dataset.serverModePending)}_r();function ZZ(){return Cf().size}function QZ(){return wf().size}var $Z=typeof location>`u`||location.hostname.endsWith(`.github.io`)?``:`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}/api/sync`,eQ=`application/x-deepview-report`,tQ=`application/x-deepview-source-ws`,nQ=`application/x-deepview-bundle`,rQ=!1,iQ=!1,aQ={default:`Reports`,"claude-security":`Claude Security`,"codex-security":`Codex Security`,deepsec:`DeepSec`,piolium:`Piolium`,"markdown-generic":`Markdown (generic)`,[y]:`Links`},oQ=[`default`,`claude-security`,`codex-security`,`deepsec`,`piolium`,`markdown-generic`,y],sQ=``,cQ=!1,lQ=new Map,uQ=``,dQ=new FJ;function fQ(e,t){let n=P.currentView===`bundles`?P.selectedBundle:null,r=[`findings`,`files`,`links`].includes(P.currentView)?P.currentFile:null,i=n?`bundles`:`reports`,a=r?MC(r):null,o=e.filter(e=>n?e.bundles.includes(n):e.id===a),s=JSON.stringify([i,n||r,o.map(e=>e.id)]);if(t||s!==uQ){uQ=s;for(let e of o){let t=lQ.get(e.id)??new Set;t.add(i),lQ.set(e.id,t)}}}function pQ(e,t={}){let n=`file-item${mQ(e,t.workspaceId??null)?` current`:``}${t.indented?` indented`:``}`,r=at(e),i=Mu(e),a=Px[Rx(e)]??Px.default;return k`<li class="${n}" data-file="${e}" data-workspace-id="${t.workspaceId??j}" draggable="true"><button type="button" class="file-name" data-tooltip="${r}">${O(a)}<span class="file-label">${r}</span>${i===void 0?j:k`<span class="file-count">${i}</span>`}</button></li>`}function mQ(e,t){return e===P.currentFile&&t===MC(e)&&(P.currentView===`findings`||P.currentView===`files`||P.currentView===`links`)}function hQ(e,t={}){let n=`file-group-header${t.dropTarget?` default-reports`:``}`;return k`<li class="${n}" data-default-reports="${t.dropTarget?`true`:j}"><span class="group-label">${e}</span></li>`}var gQ=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M8 3.5v9M3.5 8h9"/></svg>`,_Q=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.5H3.5v11H8M10 5l3 3-3 3M13 8H6"/></svg>`;function vQ(){return k`<li class="file-group-header workspace-header"><span class="group-label">Workspaces</span><span class="workspace-header-actions"><button type="button" class="workspace-add" data-action="new-workspace" aria-label="Create a new workspace">${gQ}</button></span></li>`}function yQ(){let e=MJ(P.managedTeams,sQ);return e.length===0?j:k`${hQ(`Teams`)} ${D(e,({team:e})=>e.id,({team:e,reports:t,bundles:n})=>{let r=e.app,i=NJ(r,(e.reports??[]).filter(e=>e.analyzer!==y).length),a=dQ.shown(e.id,`reports`,i,cQ),o=dQ.shown(e.id,`bundles`,i,cQ),s=t.filter(e=>e.analyzer!==y).length,c=PJ(r);return k`<li class="${`file-item team-item${CQ(e)?` current`:``}`}" data-team-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name" @click="${()=>{lW(e)}}">${IQ}<span class="file-label">${e.name}</span></button> ${P.managed?.allowShare&&[`admin`,`manage`].includes(P.managedSession?.role)?k`<button type="button" class="workspace-share" aria-label="${`Share ${e.name} publicly`}" @click="${()=>{Gb(e)}}">${zQ}</button>`:j}</div>${i?k`<div class="workspace-meta">${c===null?j:k`<span class="workspace-findings">${c.toLocaleString()} finding${c===1?``:`s`}</span>`} <span class="workspace-sections" role="group" aria-label="Team files"><button type="button" data-team-section="reports" aria-expanded="${String(a)}" ?disabled="${cQ}">${s.toLocaleString()} report${s===1?``:`s`}</button> ${n.length>0?k`<button type="button" data-team-section="bundles" aria-expanded="${String(o)}" ?disabled="${cQ}">${n.length.toLocaleString()} bundle${n.length===1?``:`s`}</button>`:j}</span></div>`:j}</li>${a?D(t,e=>e.id,t=>EQ(e,t)):j} ${o?D(n,e=>e.id,t=>OQ(e,t)):j}`})}`}function bQ(e,t,n,r){return k`<li><button type="button" class="${n?`rail-item current`:`rail-item`}" aria-label="${e}" aria-current="${n?`true`:j}" data-tooltip="${e}" @click="${r}">${t}<span aria-hidden="true">${rZ(e)}</span></button></li>`}function xQ(){return D(P.managedTeams??[],e=>e.id,e=>bQ(e.name,IQ,CQ(e)||(e.reports??[]).some(t=>wQ(e,t))||(e.bundles??[]).some(t=>TQ(e,t)),()=>{lW(e)}))}function SQ(e){return D(e,e=>e.id,e=>bQ(e.name,FQ,BQ(e)||e.reports.some(t=>mQ(t,e.id))||e.bundles.some(t=>jQ(t,e.id)),()=>qQ(e.id)))}function CQ(e){return P.currentManagedTeam===e.id&&!!P.currentWorkspace&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(P.currentView)}function wQ(e,t){return P.currentManagedTeam===e.id&&P.currentManagedReport===t.id&&[`findings`,`links`].includes(P.currentView)}function TQ(e,t){return P.currentManagedTeam===e.id&&Tx(P)===t.id}function EQ(e,t){let n=at(t.filename),r=wQ(e,t);return k`<li class="${`file-item indented team-report-item${t.visible===!1?` content-hidden`:``}${r?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${n} (hidden from teams)`:j}" data-tooltip="${n}" data-tooltip-repo="${AJ(t)||j}" data-tooltip-placement="right-start" @click="${()=>{DQ(e,t)}}">${O(Px[zx(t.filename,t.analyzer)])}<span class="file-label">${n}</span></button></li>`}function DQ(e,t){return lW(e,t.id)}function OQ(e,t){let n=TQ(e,t);return k`<li class="${`file-item indented team-bundle-item${t.visible===!1?` content-hidden`:``}${n?` current`:``}`}"><button type="button" class="file-name" aria-label="${t.visible===!1?`${t.filename} (hidden from teams)`:j}" data-managed-bundle="${t.id}" data-managed-team="${e.id}" data-tooltip="${t.filename}" data-tooltip-repo="${AJ(t)||j}" data-tooltip-bundle="${t.kind||j}" data-tooltip-built="${t.provenance===`build`?`true`:j}" data-tooltip-stats="${jJ(t)||j}" data-tooltip-commit="${t.summary?.commit||j}" data-tooltip-commit-info="${Le(t.commitInfo,t.summary?.commit,t.repoFullName)??j}" data-tooltip-placement="right-start">${AQ}<span class="file-label">${t.filename}</span></button></li>`}function kQ(){return k`<li class="file-group-header bundles-header" data-default-bundles="true"><span class="group-label">Bundles</span></li>`}var AQ=k`${O(Xi)}`;function jQ(e,t){return P.selectedBundle===e&&P.currentView===`bundles`&&t===P.selectedBundleWorkspace}function MQ(e,t={}){let{integrity:n,name:r}=e,i=jQ(n,t.workspaceId??null),a=`file-item bundle-item${t.workspaceId==null?``:` indented`}${i?` current`:``}`;return k`<li class="${a}" data-bundle-integrity="${n}" data-workspace-id="${t.workspaceId??j}" draggable="true"><button type="button" class="file-name" data-tooltip="${`${r}
195
+ ${n}`}">${AQ}<span class="file-label">${r}</span></button></li>`}function NQ(e,t){let n=e.slice(0,15);return k`<li class="file-item indented bundle-item bundle-missing" data-bundle-integrity="${e}" data-workspace-id="${t}" data-tooltip="Bundle bytes not on this device — drop the matching bundle to attach."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${n}…</em></span></span></li>`}function PQ(e,t){return k`<li class="file-item indented report-missing" data-workspace-id="${t}" data-tooltip="Report not on this device — it re-downloads automatically if a workspace member has uploaded it."><span class="file-name"><span class="file-icon" aria-hidden="true">?</span><span class="file-label"><em>missing · ${at(e)}</em></span></span></li>`}var FQ=k`${O(Qi)}`,IQ=k`<svg class="team-icon" viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M5.5 8a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Zm0 1C3.2 9 1.75 10.2 1.75 11.6V13h7.5v-1.4C9.25 10.2 7.8 9 5.5 9Zm5.25-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.25 1c-.43 0-.83.05-1.2.15.86.62 1.45 1.5 1.45 2.45V13h3.25v-1.3C14.5 10.1 13.15 9 11 9Z"/></svg>`,LQ=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2v8M5 7l3 3 3-3M3 13h10"/></svg>`,RQ=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 3H4v10h5"/><path d="M7 8h7M11 5l3 3-3 3"/></svg>`,zQ=k`<svg viewBox="0 0 16 16" width="11" height="11" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 9.5L9 7.5"/><path d="M9.5 5.5L10.5 4.5a2.1 2.1 0 1 1 3 3l-1 1"/><path d="M6.5 11.5L5.5 12.5a2.1 2.1 0 1 1-3-3l1-1"/></svg>`;function BQ(e){return P.currentWorkspace===e.id&&[`findings`,`files`,`workspace-reports`,`workspace-bundles`].includes(P.currentView)}function VQ(e,{app:t,compact:n,reports:r,bundles:i,showReports:a,showBundles:o}){let s=`file-item workspace-item${BQ(e)?` current`:``}`;return k`<li class="${s}" data-workspace-id="${e.id}"><div class="workspace-heading"><button type="button" class="file-name">${FQ}<span class="file-label" .textContent="${e.name}"></span></button> <button type="button" class="workspace-share" data-action="share-workspace" aria-label="Share workspace by link">${zQ}</button> <button type="button" class="workspace-export" data-action="export-workspace" aria-label="Export workspace">${LQ}</button> <button type="button" class="workspace-leave" data-action="leave-workspace" aria-label="Leave workspace">${RQ}</button></div>${n?k`<div class="workspace-meta">${t?.appMode?k`<span class="workspace-findings">${t.appFindings.toLocaleString()} finding${t.appFindings===1?``:`s`}</span>`:j} <span class="workspace-sections" role="group" aria-label="Workspace files"><button type="button" data-workspace-section="reports" aria-expanded="${String(a)}" ?disabled="${cQ}">${r.toLocaleString()} report${r===1?``:`s`}</button> ${i>0?k`<button type="button" data-workspace-section="bundles" aria-expanded="${String(o)}" ?disabled="${cQ}">${i.toLocaleString()} bundle${i===1?``:`s`}</button>`:j}</span></div>`:j}</li>`}function HQ(e){return!sQ||at(e).toLowerCase().includes(sQ)}var UQ=(e,t)=>at(e).localeCompare(at(t));async function $({revealSelection:e=!1}={}){await Q$();let t=lc();if(TZ({serverMode:t,session:P.managedSession,teams:P.managedTeams,sessionPending:E$,teamsPending:D$,alternateMode:on(P.serverModeConfig)?`e2e`:`local`,onSwitchMode:KQ}),wW(),F()){if(dQ.sync(P,e),!E$&&!D$&&!T$&&!O$&&PU({catalogOnly:!0}),P.bundles=(P.bundles??[]).filter(e=>e.managedId||e.npm||e.repository),P.storedFiles=[],xZ([]),!Q)return;M(k`${yQ()}`,YZ);let t=Q.querySelector(`#sidebar-rail`);t?.setAttribute(`aria-label`,`Teams`),t&&M(xQ(),t),Q.querySelector(`sidebar-view-button[kind="packages"]`)?.setAttribute(`hidden`,``),Q.querySelector(`sidebar-view-button[kind="repositories"]`)?.setAttribute(`hidden`,``),Q.querySelector(`#storage-status`)?.setAttribute(`hidden`,``),o$();return}if(dQ.sync({managedTeams:[]}),Q?.querySelector(`sidebar-view-button[kind="packages"]`)?.removeAttribute(`hidden`),Q?.querySelector(`sidebar-view-button[kind="repositories"]`)?.removeAttribute(`hidden`),await ip(),t!==lc()){await $();return}Ff().catch(()=>{}),od().catch(()=>{});let n=await Lc();if(t!==lc()){await $();return}let r=L();fQ(r,e),xZ(r);let[i]=await Promise.all([nl(),...r.map(e=>zr(`workspace`,e.id))]);if(t!==lc()){await $();return}if(P.bundles=i,P.storedFiles=n,_Z(),!Q)return;let a=new Set(n),o=new Set;for(let e of r)for(let t of e.reports)a.has(t)&&o.add(t);let s=new Map(i.map(e=>[e.integrity,e])),c=new Set;for(let e of r)for(let t of e.bundles)s.has(t)&&c.add(t);let l=new Map;for(let e of oQ)l.set(e,[]);for(let e of n){if(o.has(e)||!HQ(e))continue;let t=Rx(e);l.has(t)||l.set(t,[]),l.get(t).push(e)}let u=r.filter(e=>!sQ||e.name.toLowerCase().includes(sQ)||e.reports.some(e=>HQ(e))?!0:e.bundles.some(e=>{let t=s.get(e);return t&&HQ(t.name)})),d=i.filter(e=>!c.has(e.integrity)&&HQ(e.name));M(k`${vQ()} ${D(u,e=>e.id,e=>{let t=[],n=[];for(let r of e.reports)HQ(r)&&(a.has(r)?t.push(r):n.push(r));t.sort(UQ),n.sort(UQ);let r=[],i=[];for(let t of e.bundles){let e=s.get(t);e?(!sQ||HQ(e.name))&&r.push(e):sQ||i.push(t)}let o=WU(e)??xm(e),c=o?.appMode??bm(e)===!0,l=lQ.get(e.id),u=!c||cQ||l?.has(`reports`)===!0,d=!c||cQ||l?.has(`bundles`)===!0,f=[...t,...n].filter(e=>Nu(e)!==y).length,p=r.length+i.length;return k`${VQ(e,{app:o,compact:c,reports:f,bundles:p,showReports:u,showBundles:d})} ${u?k`${t.map(t=>pQ(t,{indented:!0,workspaceId:e.id}))}${n.map(t=>PQ(t,e.id))}`:j} ${d?k`${r.map(t=>MQ(t,{workspaceId:e.id}))}${i.map(t=>NQ(t,e.id))}`:j}`})} ${oQ.map(e=>{let t=(l.get(e)??[]).toSorted(UQ),n=e==="default";return t.length===0&&!(n&&rQ)?null:k`${hQ(aQ[e]??e,{dropTarget:n})} ${t.map(e=>pQ(e))}`})} ${d.length>0||iQ?kQ():null} ${D(d,e=>e.integrity,e=>MQ(e))}`,YZ);let f=Q.querySelector(`#sidebar-rail`);f?.setAttribute(`aria-label`,`Workspaces`),f&&M(SQ(r),f);let p=Q.querySelector(`sidebar-view-button[kind="packages"]`);p&&(p.count=ZZ());let m=Q.querySelector(`sidebar-view-button[kind="repositories"]`);m&&(m.count=QZ()),o$(),Vu(n,GQ)}var WQ=!1;function GQ(){WQ||(WQ=!0,requestAnimationFrame(()=>{WQ=!1,$().catch(e=>console.warn(`counts repaint:`,e))}))}ko(()=>{$()}),Tm(GQ);async function KQ(){Q?.querySelector(`#user-menu`)?.hidePopover?.(),x$?await F$():cc()&&await N$()}function qQ(e){let t=P.currentView===`findings`||P.currentView===`files`;(e!==P.currentWorkspace||!t)&&uW(e)}async function JQ(e){let t=e.target.closest(`[data-team-section]`);if(t){if(cQ||t.disabled)return;let e=t.closest(`[data-team-id]`)?.dataset.teamId;e&&dQ.toggle(e,t.dataset.teamSection),await $();return}let n=e.target.closest(`.file-item.team-item[data-team-id]`);if(n){let t=e.target.closest(`button`)?null:P.managedTeams.find(e=>e.id===n.dataset.teamId);t&&lW(t);return}let r=e.target.closest(`[data-workspace-section]`);if(r){if(cQ||r.disabled)return;let e=r.closest(`[data-workspace-id]`)?.dataset.workspaceId;if(!e)return;let t=r.dataset.workspaceSection,n=lQ.get(e)??new Set;n.has(t)?n.delete(t):n.add(t),lQ.set(e,n),await $();return}if(e.target.closest(`[data-action="toggle-client-mode"]`)){await KQ();return}if(e.target.closest(`[data-action="go-home"]`)){await mW();return}let i=e.target.closest(`[data-managed-bundle]`);if(i){U.navigate(fi({view:`bundles`,teamId:i.dataset.managedTeam,bundleId:i.dataset.managedBundle,bundleTab:P.currentView===`bundles`?P.bundleDetailsTab:`overview`},P.managedTeams));return}let a=e.target.closest(`.file-item[data-bundle-integrity]`);if(a){if(a.classList.contains(`bundle-missing`))return;let e=a.dataset.bundleIntegrity,t=a.dataset.workspaceId??null;if(P.selectedBundle===e&&P.currentView===`bundles`&&P.selectedBundleWorkspace===t)return;KX(e,void 0,{workspaceId:t}),qU(e,P.bundleDetailsTab),Z(),$(),QX(e);return}let o=e.target.closest(`sidebar-view-button`);if(o){let e=o.getAttribute(`kind`);(e===`packages`||e===`repositories`)&&(P.currentView=e,Z(),$());return}if(e.target.closest(`[data-action="new-workspace"]`)){if(F())return;let e=await Ve();e&&(await DU(),await $l(e),$());return}let s=e.target.closest(`[data-action="share-workspace"]`);if(s){let e=s.closest(`[data-workspace-id]`),t=e?L().find(t=>t.id===e.dataset.workspaceId):null;t&&pt({id:t.id,name:t.name,privateKeyBase64:t.privateKey}).catch(e=>alert(`Failed to open share dialog: ${e.message}`));return}let c=e.target.closest(`[data-action="export-workspace"]`);if(c){let e=c.closest(`[data-workspace-id]`),t=e?L().find(t=>t.id===e.dataset.workspaceId):null;t&&EZ(t).catch(e=>alert(`Failed to open export dialog: ${e.message}`));return}let l=e.target.closest(`[data-action="leave-workspace"]`);if(l){let e=l.closest(`[data-workspace-id]`),t=e?L().find(t=>t.id===e.dataset.workspaceId):null;if(!t)return;let n=Array.isArray(t.reports)?t.reports:[],r;try{r=await kp(n)}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let{confirmed:i,mode:a,triage:o}=await Ie({name:t.name,reportCount:n.length,bundleCount:t.bundles.length,triageImpact:r});if(!i)return;if(!L().some(e=>e.id===t.id)){alert(`Workspace "${t.name}" was removed elsewhere; nothing to leave.`);return}try{await gW(t.id,a,{triage:o})}catch(e){alert(`Failed to leave workspace: ${e.message}`)}return}let u=e.target.closest(`.file-item.workspace-item[data-workspace-id]`);if(u){let e=u.dataset.workspaceId;e&&qQ(e);return}let d=e.target.closest(`.file-item[data-file]`);if(d){let e=d.dataset.file,t=P.currentView===`findings`||P.currentView===`links`,n=d.dataset.workspaceId??null;e&&(e!==P.currentFile||n!==P.currentReportWorkspace||!t)&&oW(e,void 0,{workspaceId:n});return}if(e.target.closest(`sidebar-delete-current`)){if(P.currentView===`bundles`&&P.selectedBundle){let e=P.selectedBundle,t=(P.bundles??[]).find(t=>t.integrity===e)?.name??e,n=L().filter(t=>Array.isArray(t.bundles)&&t.bundles.includes(e)).filter(t=>fh(t.id,e)).map(e=>e.id),{confirmed:r}=await ye({name:t,inRemote:n.length>0});if(!r)return;if(P.selectedBundle!==e){alert(`Active bundle changed during confirmation; aborting delete of "${t}".`);return}try{await hW({deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete bundle: ${e.message}`)}return}if(!P.currentFile)return;let e=P.currentFile,t;try{t=await kp([e])}catch(e){alert(`Couldn't read reports to analyze triage impact: ${e.message}`);return}let n=L().filter(t=>Array.isArray(t.reports)&&t.reports.includes(e)).filter(t=>dh(t.id,e)).map(e=>e.id),r=n.length>0,i=Bx(e)?`links file`:`report`,{confirmed:a,triage:o}=await xe({name:e,kindLabel:i,triageImpact:t,inRemote:r});if(!a)return;if(P.currentFile!==e){alert(`Active file changed during confirmation; aborting delete of "${e}".`);return}try{await dW({triage:o,deleteFromRemoteWorkspaceIds:n})}catch(e){alert(`Failed to delete ${i}: ${e.message}`)}return}if(e.target.closest(`#sync-status`)){B.status===`error`?B.dismissError():B.status===`off`?(!B.getServerUrl()&&$Z&&B.setServerUrl($Z),B.setEnabled(!0)):B.setEnabled(!1);return}if(e.target.closest(`[data-action="manage"]`)){Q?.querySelector(`#user-menu`)?.hidePopover?.(),X$(`manage`);return}if(e.target.closest(`[data-action="view-as-stop"]`)){Q?.querySelector(`#user-menu`)?.hidePopover?.(),rx(P.managedSession?.csrfToken);return}if(e.target.closest(`[data-action="my-reviews"]`)){Q?.querySelector(`#user-menu`)?.hidePopover?.(),U.navigate({view:`reviews`});return}if(e.target.closest(`[data-action="my-profile"]`)){Q?.querySelector(`#user-menu`)?.hidePopover?.(),U.navigate({view:`profile`});return}if(e.target.closest(`[data-action="managed-logout"]`)){nx(P.managedSession?.csrfToken);return}if(e.target.closest(`#sidebar-toggle`)){JZ.classList.toggle(`collapsed`);try{localStorage.setItem(`deepview.sidebarCollapsed`,JZ.classList.contains(`collapsed`)?`1`:`0`)}catch{}}}var YQ={placement:`right`,gate:e=>{if(e.dataset.tooltipRepo||e.dataset.tooltipBundle)return!0;let t=e.querySelector(`.file-label`);return!t||(e.dataset.tooltip??``)!==t.textContent||t.scrollWidth>t.clientWidth}};function XQ(e){cQ=e.target.value.length>0,sQ=e.target.value.trim().toLowerCase(),$()}var ZQ={off:`Sync off`,online:`Online`,offline:`Offline`,connecting:`Connecting…`,error:`Sync error`};function QQ(){return B.getServerUrl()||$Z?L().length>0:!1}function $Q(){let e=Q?.querySelector(`#auth-status`);if(!e)return;let t=Q?.querySelector(`#manage-status`),n=Q?.querySelector(`#user-menu`),r=P.managedSession;JZ?.toggleAttribute(`data-authenticated`,r!=null),JZ?.toggleAttribute(`data-workspace-access`,r!=null&&r.role!==`none`),e$(r);let i=Q?.querySelector(`#public-status`);if(i&&(i.hidden=!r?.publicShare),e.hidden=r==null||r.publicShare===!0,r==null){t&&(t.hidden=!0),e.dataset.authed=`0`,e.removeAttribute(`popovertarget`),e.removeAttribute(`aria-label`),M(j,e),n&&M(j,n);return}if(r.publicShare){t&&(t.hidden=!0),e.removeAttribute(`popovertarget`),n&&M(j,n);return}let a=(r.login[0]??`?`).toUpperCase(),o=typeof r.name==`string`&&/\s/u.test(r.name.trim())?r.name.trim():`@${r.login}`;e.dataset.authed=`1`,e.setAttribute(`popovertarget`,`user-menu`),e.setAttribute(`aria-label`,`Account: ${r.login}`),M(k`${n$(a,r.id)}<span class="auth-login">${o}</span>`,e),t&&(t.hidden=!F()||r.role!==`admin`&&r.role!==`manage`),n&&M(k`<div class="user-card">${n$(a,r.id,!0)} <span class="user-id"><span class="user-login">${r.login}</span> ${r.name?k`<span class="user-name">${r.name}</span>`:j}</span></div>${r.viewer?k`<button type="button" class="user-menu-row" data-action="view-as-stop">Return to @${r.viewer.login}</button>`:j} ${r.role===`none`?j:k`<button type="button" class="user-menu-row" data-action="my-profile">Profile</button> <button type="button" class="user-menu-row" data-action="my-reviews">My reviews</button>`} <button type="button" class="user-menu-row" data-action="toggle-client-mode">${on(P.serverModeConfig)?`e2e mode`:`Local mode`}</button> <button type="button" class="user-menu-row logout-row" data-action="managed-logout">${_Q}<span>Log out</span></button>`,n)}function e$(e){let t=Q?.querySelector(`#view-as-status`);t&&(t.hidden=!e?.viewer,JZ?.toggleAttribute(`data-view-as`,e?.viewer!=null),M(e?.viewer?k`<span class="view-as-label"><span>Viewing as <strong>@${e.login}</strong></span> <span class="view-as-note">Read only · changes are not saved</span></span> <button type="button" class="view-as-stop" data-action="view-as-stop" aria-label="${`Stop viewing as ${e.login}`}">Stop</button>`:j,t))}document.addEventListener(`managed-view-only`,()=>{let e=P.managedSession;e?.viewer&&xx(`Viewing as @${e.login} is read only: changes are not saved.`,{kind:`error`})});var t$=0;document.addEventListener(`managed-profile-change`,e=>{let t=P.managedSession;!t||t.id!==e.detail.userId||(e.detail.avatarChanged&&t$++,P.managedSession={...t,name:e.detail.name},tb(P.managedSession),$Q())});function n$(e,t,n=!1){let r=`/api/avatar/${encodeURIComponent(t)}${t$?`?v=${t$}`:``}`;return k`<span class="${n?`user-avatar user-avatar-lg`:`user-avatar`}"><span class="user-avatar-fallback">${e}</span> ${Zy()||P.managedSession?.role===`none`?j:k`<img alt="" src="${r}" @error="${r$}">`}</span>`}function r$(e){e.currentTarget.classList.add(`broken`)}function i$(){let e=Q?.querySelector(`.brand-tag`);if(e){let t=P.serverMode===`managed`||on(P.serverModeConfig);e.textContent=lc(),t?(e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,`Switch from ${lc()} mode`)):(e.removeAttribute(`role`),e.removeAttribute(`tabindex`),e.removeAttribute(`aria-label`))}}function a$(){JZ&&(JZ.dataset.mode=lc()),F()?(Q?.querySelector(`sidebar-delete-current`)?.setAttribute(`hidden`,``),Q?.querySelector(`#encryption-toggle`)?.setAttribute(`hidden`,``),Q?.querySelector(`#auth-status`)?.removeAttribute(`hidden`)):(Q?.querySelector(`sidebar-delete-current`)?.removeAttribute(`hidden`),Q?.querySelector(`#encryption-toggle`)?.removeAttribute(`hidden`),Q?.querySelector(`#manage-status`)?.setAttribute(`hidden`,``),Q?.querySelector(`#auth-status`)?.setAttribute(`hidden`,``),Q?.querySelector(`#public-status`)?.setAttribute(`hidden`,``),Q?.querySelector(`#view-as-status`)?.setAttribute(`hidden`,``)),l1()}function o$(e){let t=Q?.querySelector(`#sync-status`);if(!t)return;if(i$(),a$(),P.serverMode===`managed`&&P.localMode){t.hidden=!0,B.setForcedOff(!0);let e=Q?.querySelector(`#auth-status`);e&&(e.hidden=!0),Q?.querySelector(`#public-status`)?.setAttribute(`hidden`,``);return}if(F()){t.hidden=!0,B.setForcedOff(!0),$Q();return}if(P.serverMode===`standalone`){t.hidden=!0;let e=Q?.querySelector(`#auth-status`);e&&(e.hidden=!0);return}let n=Q?.querySelector(`#auth-status`);n&&(n.hidden=!0);let r=QQ(),i=fn()!=null;if(r&&i&&B.isEnabled()&&nh().catch(e=>{console.warn(`sync: load failed`,e)}),r&&i&&!B.getServerUrl()&&$Z&&B.isEnabled()&&B.setServerUrl($Z),B.setForcedOff(!r),!r){t.hidden=!0;return}t.hidden=!1;let a=e??B.status;t.dataset.status=a;let o=B.persistenceDegraded;t.toggleAttribute(`data-degraded`,o);let s=B.proxyAuthRequired;t.toggleAttribute(`data-proxy-auth`,s);let c=o?`Not saving to this browser right now (storage may be full, or another tab is on a newer version). Changes that haven’t synced could be lost on reload.`:s?`Can’t reach the sync server — the connection is being redirected to a sign-in proxy (e.g. Cloudflare Access). Reload the page to sign in again.`:``;c?t.dataset.tooltip=c:delete t.dataset.tooltip;let l=t.querySelector(`.sync-label`);l&&(l.textContent=ZQ[a]??``)}B.onStatusChange(o$);var s$=!1,c$=!1;async function l$(){if(!B.persistenceDegraded||c$||s$)return;s$=!0;let{shown:e,unloaded:t}=await qe().catch(()=>({shown:!1,unloaded:!0}));if(s$=!1,e){c$=!0;return}B.persistenceDegraded&&setTimeout(l$,t?3e4:1500)}B.onPersistenceDegraded(e=>{o$(),e?l$():c$=!1});var u$=!1,d$=!1;async function f$(){if(!B.proxyAuthRequired||d$||u$)return;u$=!0;let{shown:e,reload:t}=await OZ();if(u$=!1,!e){B.proxyAuthRequired&&setTimeout(f$,1500);return}d$=!0,t&&location.reload()}B.onProxyAuthRequired(e=>{o$(),e?f$():d$=!1});function p$(e){if(e.target.closest(`[data-workspace-section], [data-action]`))return;let t=e.target.closest(`.file-item.workspace-item`);if(!t)return;let n=t.querySelector(`.file-label`);if(!n||n.querySelector(`input`))return;let r=t.dataset.workspaceId,i=L().find(e=>e.id===r);if(!i)return;e.preventDefault();let a=document.createElement(`input`);a.type=`text`,a.value=i.name,a.className=`workspace-rename-input`,n.textContent=``,n.append(a),a.focus(),a.select();let o=!1,s=async e=>{if(!o){o=!0;try{e&&await tu(r,a.value)}catch(e){alert(`Failed to rename workspace: ${e.message}`)}finally{n.contains(a)&&(n.textContent=L().find(e=>e.id===r)?.name??i.name),$()}}};a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),s(!0)):e.key===`Escape`&&(e.preventDefault(),s(!1))}),a.addEventListener(`blur`,()=>s(!0)),a.addEventListener(`click`,e=>e.stopPropagation()),a.addEventListener(`dblclick`,e=>e.stopPropagation())}function m$(){for(let e of Q.querySelectorAll(`.drag-over`))e.classList.remove(`drag-over`)}function h$(e){return e.dataTransfer.types.includes(eQ)||e.dataTransfer.types.includes(nQ)}function g$(e){let t=e.target.closest(`.file-item[data-bundle-integrity]`);if(t){if(t.classList.contains(`bundle-missing`)){e.preventDefault();return}let n=t.dataset.bundleIntegrity;e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(nQ,n),e.dataTransfer.setData(tQ,t.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n),t.classList.add(`dragging`),iQ=!0,$();return}let n=e.target.closest(`.file-item[data-file]`);n&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(eQ,n.dataset.file),e.dataTransfer.setData(tQ,n.dataset.workspaceId??``),e.dataTransfer.setData(`text/plain`,n.dataset.file),n.classList.add(`dragging`),rQ=!0,$())}function _$(){for(let e of Q.querySelectorAll(`.dragging`))e.classList.remove(`dragging`);m$(),(rQ||iQ)&&(rQ=!1,iQ=!1,$())}function v$(e){if(!h$(e))return;e.preventDefault();let t=e.target.closest(`[data-workspace-id]`),n=Q.querySelector(`.dragging`)?.closest(`[data-workspace-id]`)?.dataset.workspaceId??null,r=t&&n&&t.dataset.workspaceId===n||!t&&!n;if(e.dataTransfer.dropEffect=r?`none`:`move`,m$(),!r){if(t){let e=t.dataset.workspaceId;for(let t of Q.querySelectorAll(`[data-workspace-id="${CSS.escape(e)}"]`))t.classList.contains(`dragging`)||t.classList.add(`drag-over`)}else{let t=e.dataTransfer.types.includes(nQ)?`[data-default-bundles]`:`[data-default-reports]`,n=Q.querySelector(t);n&&n.classList.add(`drag-over`)}}}function y$(e){Q.contains(e.relatedTarget)||m$()}async function b$(e){if(!h$(e))return;e.preventDefault(),e.stopPropagation(),m$();let t=e.target.closest(`[data-workspace-id]`),n=t?t.dataset.workspaceId:null,r=e.dataTransfer.getData(tQ)||null;if(e.dataTransfer.types.includes(nQ)){let t=e.dataTransfer.getData(nQ);if(!t)return;if(r&&r!==n&&fh(r,t)){let e=(P.bundles??[]).find(e=>e.integrity===t)?.name??t,n=L().find(e=>e.id===r),{confirmed:i}=await Ce({name:e,workspaceName:n?.name??``});if(!i)return;try{await Mh(r,t)}catch(t){console.warn(`Failed to remove '${e}' from source workspace ${r} remote:`,t)}}n&&await pu(t,n),r&&r!==n&&await mu(t,r),$();return}let i=e.dataTransfer.getData(eQ);if(i){if(r&&r!==n&&dh(r,i)){let e=L().find(e=>e.id===r),{confirmed:t}=await Te({name:i,workspaceName:e?.name??``});if(!t)return;try{await jh(r,i)}catch(e){console.warn(`Failed to remove '${i}' from source workspace ${r} remote:`,e)}}n&&await uu(i,n),r&&r!==n&&await du(i,r),P.currentWorkspace&&(P.currentWorkspace===n||P.currentWorkspace===r)?await uW(P.currentWorkspace):$()}}var x$=null,S$=null,C$=0,w$=0,T$=null,E$=!0,D$=!0,O$=!1,k$=null,A$=null,j$;function M$(){let e=j$;return j$=void 0,e}async function N$({forgetLastView:e=!0,resetNavigation:t=!0}={}){U.reset({force:t}),k$?.remove(),k$=null;let n=++C$;if(D$=!0,O$=!1,$y(),Rv(),jU(),vU(),eh(P.serverMode!==`e2e`),B.setForcedOff(!0),B.setProtocolLocked(P.serverMode!==`e2e`||!!x$),pW({forgetLastView:e}),P.triage.clear(),F()){let e=L$();if(Zy()&&(await e,n!==C$))return}else{if(P.managedSession=null,P.managedTeams=[],await Ga(),n!==C$||(await Dd(),n!==C$))return;ql()}document.dispatchEvent(new CustomEvent(`managed-client-mode-change`)),wW(),i$(),o$(B.status),Z(),await $()}async function P$(e){if(e!==void 0&&!We(e))throw TypeError(`Unknown managed preview role: ${e}. Expected ${He.join(`, `)}.`);if(await Q$(),e===void 0&&(x$||F()))return;let t=C$,n=e===void 0?null:await W();t===C$&&(x$??={serverMode:P.serverMode,serverModeConfig:P.serverModeConfig,serverModeSelection:P.serverModeSelection,localMode:P.localMode,managed:P.managed},n&&n.setPreviewRole(e),P.serverMode=`managed`,oc(!1),P.managedSession=null,P.managedTeams=[],await N$({forgetLastView:!1}))}async function F$(){let e=x$,t=S$;x$=null,S$=null,Qy(),Object.assign(P,e),await N$({forgetLastView:!1}),t&&I$(t)}function I$(e,{runtime:t=!0}={}){if(x$){S$=e;return}XZ(!1);let n=fn()!=null,r=F(),i=P.serverMode;Ze()&&e.managed&&(P.serverModeSelection=`managed`),sc(e.mode),Ze()&&e.managed&&oc(!1),F()||(j$=void 0);let a=i!==P.serverMode;P.managed=e.managed;let o=t&&P.githubNewIssueLabels!==(e.githubNewIssueLabels??``);if(t&&(P.githubNewIssueLabels=e.githubNewIssueLabels??``),t&&(P.deepviewScanServer=e.mode===`managed`?null:e.deepviewScanServer??null),wW(),eh(P.serverMode!==`e2e`),B.setProtocolLocked(P.serverMode!==`e2e`),pn(e),r!==F()){N$({forgetLastView:!1,resetNavigation:n&&!Ze()&&!sn(e.mode,location.pathname)}).catch(e=>console.warn(`client mode transition:`,e));return}o$(B.status),a&&P.serverMode===`e2e`&&QQ()&&B.isEnabled()&&nh().then(e=>{if(e&&P.serverMode===`e2e`)for(let t of e.triageSync.openSessions)e.openWorkspace(t.workspaceId)}).catch(e=>console.warn(`sync: resume failed`,e)),a&&$(),o&&Z({animate:!1}),F()&&L$()}function L$(){if(T$?.generation===C$)return T$.promise;E$=!0;let e={generation:C$,promise:null};return T$=e,e.promise=R$().finally(()=>{T$===e&&(T$=null,$())}),e.promise}async function R$(){let e=C$,t=++w$,n=()=>e===C$&&t===w$&&F();try{let e=P.managedSession,t=await ob({fallback:e,sent:M$()});if(!n())return;P.managedSession=t,E$=!1,(!e||e.id!==t?.id||e.role!==t?.role)&&(D$=!0),$(),tb(t),e&&(e.id!==t?.id||e.role!==t?.role)?(P.managedTeams=[],P.bundles=[],jU(),vU(),U.reset(),mW({history:!1})):Object.hasOwn(ii,P.currentView)&&G$(P.currentView)&&Z({animate:!1}),$Q(),_U(),document.querySelector(`base`)||(k$=document.createElement(`base`),k$.href=`/`,document.head.prepend(k$));let r=A$=H$(n,{signal:new AbortController().signal}).finally(()=>{A$===r&&(A$=null)}),i=U.active&&Object.hasOwn(ii,P.currentView)&&!G$(P.currentView)?U.navigate({view:G$(`manage`)?`manage`:`home`},{replace:!0}):t?U.start(J$,{onCancel:q$}):null;await Promise.all([r,i])}catch(e){console.warn(`managed: session probe failed:`,e)}finally{n()&&(E$||D$)&&(E$=!1,D$=!1,$())}}AU((e,t,n)=>H$(e,{strict:!0,signal:t,revision:n}));var z$=nZ(sb);function B$(e){return A$??H$(e,{reuse:!0})}var V$=0;async function H$(e,{strict:t=!1,signal:n=W_(),reuse:r=!1,revision:i=null}={}){let a=C$,o=P.managedSession,s=await z$({generation:a,session:o,signal:n,reuse:r,revision:i}),c=s??(t?null:P.managedTeams);if(n.aborted||c===null||!e()||a!==C$||!F())return!1;let l=P.managedTeams.find(e=>e.id===P.currentManagedTeam)?.name,u=nb(c);P.managedTeams=c;let d=s===null?V$:++V$;D$=!1;let f=Tx(P);if(s!==null&&f&&!O$){let t=H(),r=()=>e()&&!n.aborted&&!O$&&d===V$&&t===H()&&a===C$&&P.managedSession?.id===o?.id&&P.managedSession?.role===o?.role&&F()&&Tx(P)===f,i;try{i=await Nx(P,c,{fetchCatalog:()=>cb({signal:AbortSignal.any([n,W_()])}),isCurrent:r,render:()=>Z({animate:!1}),replaceRoute:e=>U.replaceRoute(e)})}catch(t){return r()?(t.name!==`AbortError`&&xx(`Couldn't refresh bundle access: ${t.message}`,{kind:`error`}),$(),!1):e()}if(!r())return e();if(!i){W$=null;let t=mW({history:!1}),n=H();return await t,n===H()&&a===C$&&e()&&P.managedSession?.id===o?.id&&P.managedSession?.role===o?.role&&U.replaceRoute({view:`home`}),e()}}if(Mx(P,c,u)){let n=c.find(e=>e.id===P.currentManagedTeam),r=n&&(P.currentManagedReport===null||n.reports.some(e=>e.id===P.currentManagedReport))?fi({view:P.currentView===`links`?`findings`:P.currentView,teamId:n.id,reportId:P.currentManagedReport},c):null;W$=null;let i=mW({history:!1}),s=H();if(await i,t)return s===H()&&a===C$&&P.managedSession?.id===o?.id&&P.managedSession?.role===o?.role&&F()&&await U.navigate(r??{view:`home`},{replace:!0}),e();if(!e())return!1}if(!O$&&[`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(P.currentView)&&!c.some(e=>e.id===P.currentManagedTeam)){let t=mW({history:!1}),n=H();return await t,n===H()&&a===C$&&e()&&P.managedSession?.id===o?.id&&P.managedSession?.role===o?.role&&U.replaceRoute({view:`home`}),e()}return!O$&&(P.currentWorkspace||P.bundleDetails?.npm||l!==c.find(e=>e.id===P.currentManagedTeam)?.name)&&Z({animate:!1}),$(),!0}var U$=new Set([`admin-users`,`manage-repos`,`manage-repo-risk`,`manage-teams`,`manage-import`,`manage-deduplication`]),W$=null;function G$(e){let t=P.managedSession?.role;return e===`manage-links`&&!P.managed?.allowShare?!1:[`admin`,`manage`].includes(t)&&(!U$.has(e)||t===`admin`)}var K$=0;function q$(){++K$,O$=!1,G_();let e=C$;B$(()=>e===C$&&F())}async function J$(e,t){let n=++K$;O$=!0;try{return await Y$(e,t)}finally{n===K$&&(O$=!1,$())}}async function Y$(e,t){let n=W$===H()?W$:null;if(G_(),([`findings`,`files`,`bundles`,`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e?.view)||e?.finding)&&(!await B$(t)||!t()))return!1;let r=[];if(e?.view===`bundles`&&e.teamSlug==null&&(!G$(`manage-bundles`)||(r=await cb(),!t()||!F()))||(e=di(e,P.managedTeams,r),!e))return!1;let i=n!==null&&W$===n&&P.currentManagedTeam===e.teamId&&P.currentManagedReport===e.reportId;if(!t()||!F()||e.view!==`home`&&(!P.managedSession||P.managedSession.role===`none`))return!1;if(e.finding){let n=await KZ({...e.finding,teamId:e.teamId,reportId:e.reportId},{openManagedReport:(e,t)=>lW(e,t,{history:!1}),isCurrent:t});return t()?n.ok?(W$=H(),PU(),fi({view:`findings`,teamId:P.currentManagedTeam,reportId:P.currentManagedReport,finding:{id:e.finding.id}},P.managedTeams)):(n.reason&&xx(n.reason),!1):!1}if([`workspace-reports`,`workspace-bundles`,`workspace-repositories`,`workspace-dependencies`].includes(e.view))return cW(e.teamId,e.view.slice(10),{history:!1,tab:e.dependencyTab??`pulls`});if(e.view===`bundles`){let n=e.teamId==null?r.map(wx):jx(P.managedTeams);if(!await eZ(e,n,t,$))return!1;let{compareId:i,compareMode:a,...o}=e;return fi({...o,bundleTab:P.bundleDetailsTab,...Ox(P)},P.managedTeams,r)}if(e.view===`home`)return mW({history:!1});if(e.view===`npm`)return kj(e,t,$);if(e.view===`repository-code`)return Je(P.managedSession)&&VM(e,t,$);if(e.view===`reviews`||e.view===`profile`)return!P.managedSession.publicShare&&(sr(),P.currentView=e.view,P.profileLinkError=e.linkError??null,P.currentManagedTeam=null,P.currentManagedReport=null,document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),$(),e);if(e.view===`manage-deduplication`&&e.linkId)return G$(e.view)&&await sW(e.linkId);if(Object.hasOwn(ii,e.view))return X$(e.view,{...e,history:!1});let a=P.managedTeams.find(t=>t.id===e.teamId);return!a||!i&&!await lW(a,e.reportId,{history:!1})||!t()?!1:(P.currentView!==e.view&&sr(),P.currentView=P.currentLinks?`links`:e.view,document.body.classList.remove(`report-fullscreen`),Z({animate:!1}),W$=H(),PU(),$(),document.querySelector(`#main-content`)?.scrollTo({top:0}),fi({...e,view:P.currentView===`links`?`findings`:P.currentView},P.managedTeams))}document.addEventListener(`managed-bundle-open`,e=>{if(F()&&typeof e.detail?.id==`string`){let t=wx(e.detail),n=P.managedTeams,r=n.find(e=>e.id===P.currentManagedTeam&&e.bundles?.some(e=>e.id===t.managedId))??n.find(e=>e.bundles?.some(e=>e.id===t.managedId));U.navigate(Ex(n,t,r?.id,P.currentView===`bundles`?P.bundleDetailsTab:`overview`))}}),document.addEventListener(`managed-import-complete`,()=>{L$()}),document.addEventListener(`managed-feed-closed`,()=>{E$=!0,jU(),vU(),mW({history:!1}).then(()=>L$()),xx(`Workspace access changed. Refreshing your session.`)});async function X$(e,t={}){if(t.history!==!1&&F()&&(U.active||await L$(),U.active))return U.navigate({view:e,...t.actor?{actor:t.actor}:{},...t.bundleId?{bundleId:t.bundleId}:{},...[`link`,`dependencies`].includes(t.scanMode)?{scanMode:t.scanMode}:{},...t.linkId?{linkId:t.linkId}:{}});if(!Object.hasOwn(ii,e)||!F()||!G$(e))return!1;let n=G_(),r=C$;try{let t=await W();e===`manage-import`&&G$(e)&&await t.loadWorkspaceImportPage()}catch(t){return console.warn(`${e}: managed bundle load failed:`,t),!1}return r!==C$||n!==H()||!F()||!G$(e)?!1:(P.currentView=e,P.scanSelection=e===`manage-scans`?t.scanMode===`link`?{mode:`report`,reportMode:`link`}:t.bundleId?{bundleId:t.bundleId,...t.scanMode===`dependencies`?{mode:`dependencies`}:{}}:null:null,P.bundleCreationRepoId=e===`manage-bundles`?t.createRepoId??null:null,Z({animate:!1}),$(),L$(),document.querySelector(`#main-content`)?.scrollTo({top:0}),e===`manage-history`&&document.dispatchEvent(new CustomEvent(`managed-history-filter`,{detail:{actor:t.actor??``},bubbles:!0,composed:!0})),!0)}document.addEventListener(`managed-notice`,e=>xx(e.detail.message,{kind:`error`})),document.addEventListener(`managed-admin-navigate`,e=>{let t=e.detail?.view,n=e.detail?.actor;typeof t==`string`&&X$(t,{actor:n,scanMode:e.detail?.scanMode,linkId:e.detail?.linkId})}),document.addEventListener(`managed-repository-code-open`,e=>{let{repoId:t,repo:n=null,path:r=``}=e.detail??{};F()&&Number.isSafeInteger(t)&&t>0&&AM({repoId:t,repo:typeof n==`string`&&n?n:null,path:typeof r==`string`?r:``})});var Z$;function Q$(){return Z$??=e1().then(()=>document.querySelector(`app-sidebar`)?.removeAttribute(`inert`))}function $$(){let e=un();return j$=dn(e).then(e=>e?.session),e}async function e1(){let e=fn();if(e){sc(e.mode),P.managed=e.managed,$$().then(e=>{if(e&&e!==`standalone`)return I$(e)}).catch(e=>console.warn(`server mode revalidation:`,e));return}XZ(!rn());let t=$$(),n=await dn(t,rn()?0:3e3),r=fn();if(r)return n&&n!==`standalone`?I$(n):I$(r,{runtime:!1});if(n&&n!==`standalone`)return I$(n);n===`standalone`&&an(),P.serverMode=`standalone`,P.serverModeConfig=null,P.serverModeSelection=null,oc(n===null),eh(!0),XZ(!1),o$(B.status),$(),n===null&&t.then(e=>{let t=fn(),n=e&&e!==`standalone`?e:t??e;if(n===`standalone`){if(an(),x$){x$.serverMode=`standalone`,x$.serverModeConfig=null,x$.serverModeSelection=null,x$.localMode=!1;return}return oc(!1),o$(B.status),$()}if(n)return I$(n,{runtime:n!==t})}).catch(e=>console.warn(`server mode probe:`,e))}function t1(){let e=Q?.querySelector(`#user-menu`),t=Q?.querySelector(`#auth-status`);!e||!t||e.addEventListener(`beforetoggle`,n=>{if(n.newState!==`open`)return;let r=t.getBoundingClientRect();e.style.left=`${Math.round(r.left)}px`,e.style.bottom=`${Math.round(window.innerHeight-r.top+6)}px`,e.style.top=`auto`,e.style.right=`auto`})}function n1(e){JZ=e,Q=e.renderRoot,YZ=Q.querySelector(`#file-list`),u1(Q.querySelector(`#encryption-toggle`)),bZ(Q.querySelector(`#storage-status`)),Q.addEventListener(`click`,JQ),Q.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&e.target.closest?.(`[data-action="toggle-client-mode"]`)&&(e.preventDefault(),JQ(e))}),Q.addEventListener(`dblclick`,p$),Q.addEventListener(`dragstart`,g$),Q.addEventListener(`dragend`,_$),Q.addEventListener(`dragover`,v$),Q.addEventListener(`dragleave`,y$),Q.addEventListener(`drop`,b$),hr(Q,YQ),Q.querySelector(`#sidebar-search-input`)?.addEventListener(`input`,XQ),t1(),o$(B.status),fn()||XZ(!rn()),$(),B.onServerInfo(e=>{if(P.serverMode!==`e2e`)return;let t=fn(),n=t&&{...t,...P.deepviewScanServer?{deepviewScanServer:P.deepviewScanServer}:{}};return I$(ln(n,e))}),Q$(),P.serverMode===`managed`&&L$()}var r1=class extends ga{static styles=[ma(aZ),ma(iZ)];render(){return k`<div class="sidebar-header"><h2 class="brand"><button class="brand-button" type="button" data-action="go-home"><span class="brand-name">Triage</span></button> <span class="brand-tag" data-action="toggle-client-mode">${lc()}</span></h2><button id="encryption-toggle" type="button" hidden></button> <button id="sidebar-toggle" type="button" aria-label="toggle sidebar"><svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M2 4h12v1.5H2zM2 7.25h12v1.5H2zM2 10.5h12V12H2z"/></svg></button></div><button id="sidebar-home" class="rail-item" type="button" data-action="go-home" aria-label="Home" data-tooltip="Home"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2.5 7.5 8 3l5.5 4.5M4 6.5V13h3V9.5h2V13h3V6.5"/></svg></button><div class="sidebar-search"><svg class="sidebar-search-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M9.7 9.7L13 13" stroke-linecap="round"/></svg> <input id="sidebar-search-input" type="search" placeholder="Search reports…" aria-label="Search reports" autocomplete="off"><sidebar-view-button kind="packages"></sidebar-view-button><sidebar-view-button kind="repositories"></sidebar-view-button></div><ul id="file-list"></ul><ul id="sidebar-rail"></ul><button id="storage-status" type="button" hidden><span class="storage-dot" aria-hidden="true"></span> <span class="storage-label"></span></button><div id="view-as-status" role="status" hidden></div><div class="sidebar-actions"><sidebar-delete-current></sidebar-delete-current><button id="sync-status" type="button" data-status="off"><span class="sync-dot" aria-hidden="true"></span> <span class="sync-label">Sync off</span></button> <button id="auth-status" type="button" hidden></button> <span id="public-status" hidden>Public access link · Read only</span> <button id="manage-status" type="button" hidden data-action="manage" aria-label="Manage">${O(ea)}</button></div><div id="user-menu" popover class="user-menu"></div>`}firstUpdated(){n1(this)}};customElements.define(`app-sidebar`,r1);var i1=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5.5a3 3 0 0 1 6 0V8"/></svg>`,a1=k`<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="8" width="10" height="6" rx="1"/><path d="M5 8V5a3 3 0 0 1 6 -0.5"/></svg>`,o1=null;async function s1(){if(!o1)return;if(await Q$(),F()){o1.hidden=!0;return}if(!xo()){o1.hidden=!0;return}let e=yo();o1.hidden=!1;let t=bo();o1.classList.toggle(`encrypted`,e&&t),o1.classList.toggle(`locked-pending`,e&&!t),e&&t?(o1.dataset.tooltip=`Encryption on — click to disable`,o1.setAttribute(`aria-label`,`Disable encryption`),M(i1,o1)):e?(o1.dataset.tooltip=`Encryption on, locked — click to unlock`,o1.setAttribute(`aria-label`,`Unlock encrypted data`),M(i1,o1)):(o1.dataset.tooltip=`Encryption off — click to enable`,o1.setAttribute(`aria-label`,`Enable encryption`),M(a1,o1))}async function c1(){if(confirm(`Disable encryption?
196
+
197
+ Your local triage and report data will be rewritten as plaintext.
198
+
199
+ IMPORTANT: DeepView cannot directly delete your passkey. Most browsers / password managers require you to remove the entry manually after disabling. You can re-enable encryption later.`))try{(await Po({migrate:async({open:e})=>{await Xa({open:e}),await jd({open:e}),await hl({open:e}),await xl({open:e})}}))?.disabled&&alert(`Encryption disabled. Your data is now plaintext.
200
+
201
+ To complete cleanup, remove the DeepView passkey from your password manager / OS settings:
202
+ • macOS / iOS: Settings → Passwords
203
+ • Windows: Settings → Accounts → Sign-in options → Passkeys
204
+ • Chrome: chrome://settings/passkeys
205
+ • Hardware security key: use the vendor's management tool`)}catch(e){alert(`Could not disable encryption: ${e?.message??e}`)}}function l1(){s1()}function u1(e){if(!e||e===o1)return;o1=e;let t=!1;o1.addEventListener(`click`,async()=>{if(await Q$(),!F()&&!t){t=!0;try{if(!yo()){await Ge();return}if(!bo()){await Ev();return}await c1()}finally{t=!1}}}),ko(s1),s1()}export{Ms as a,uo as b,yo as c,bo as d,xo as e,Co as f,ko as g,jo as h,No as i,Ro as j,Va as k,Ga as l,Ya as m,Ps as n,Is as o,Ls as p,Rs as q,Bs as r,Ks as s,Xs as t,ec as u,P as v,F as w,Lc as x,Bc as y,Vc as z,nl as A,rl as B,cl as C,ml as D,bl as E,yf as F,Bf as G,Nu as H,ql as I,L as J,Ql as K,ru as L,pu as M,tp as N,Qu as O,ad as P,fd as Q,Sd as R,Ad as S,Nd as T,up as U,hp as V,gp as W,_p as X,vp as Y,yp as Z,Cp as _,wp as $,Tp as aa,Bp as ba,Hp as ca,Pd as da,Fd as ea,Ld as fa,Rd as ga,U as ha,Mv as ia,Hh as ja,Uh as ka,Iv as la,Lv as ma,gy as na,ky as oa,Ly as pa,Ry as qa,Zy as ra,rb as sa,ab as ta,yb as ua,Lb as va,Rb as wa,zb as xa,Bb as ya,Vb as za,Hb as Aa,Ub as Ba,Wb as Ca,Kb as Da,qb as Ea,ix as Fa,ax as Ga,ox as Ha,fx as Ia,px as Ja,mx as Ka,hx as La,gx as Ma,Px as Na,Rx as Oa,Gm as Pa,R as Qa,Km as Ra,qm as Sa,Jm as Ta,xv as Ua,Sv as Va,Cv as Wa,Vx as Xa,Ux as Ya,Wx as Za,Kx as _a,Jx as $a,Yx as ab,Xx as bb,cS as cb,hh as db,gh as eb,_h as fb,Sh as gb,Ch as hb,wh as ib,Eh as jb,Dh as kb,Oh as lb,Ah as mb,Fh as nb,Ih as ob,B as pb,$g as qb,e_ as rb,t_ as sb,o_ as tb,c_ as ub,u_ as vb,d_ as wb,f_ as xb,h_ as yb,g_ as zb,y_ as Ab,M_ as Bb,L_ as Cb,Zh as Db,cg as Eb,lg as Fb,ug as Gb,V as Hb,pg as Ib,vg as Jb,yg as Kb,bg as Lb,xg as Mb,Sg as Nb,Eg as Ob,Ag as Pb,Mg as Qb,Ng as Rb,Fg as Sb,Ig as Tb,Lg as Ub,Rg as Vb,zg as Wb,Vg as Xb,Jg as Yb,Yg as Zb,Xg as _b,Zg as $b,Rh as ac,ES as bc,DS as cc,oC as dc,uC as ec,dC as fc,fC as gc,bC as hc,DC as ic,kC as jc,jC as kc,RC as lc,BC as mc,VC as nc,HC as oc,UC as pc,WC as qc,GC as rc,KC as sc,qC as tc,YC as uc,XC as vc,ZC as wc,QC as xc,$C as yc,tw as zc,rw as Ac,iw as Bc,mw as Cc,$w as Dc,eT as Ec,tT as Fc,nT as Gc,Cx as Hc,Ex as Ic,Dx as Jc,Ax as Kc,jT as Lc,NT as Mc,iD as Nc,aD as Oc,cD as Pc,lD as Qc,uD as Rc,dD as Sc,fD as Tc,mD as Uc,hD as Vc,TD as Wc,DD as Xc,OD as Yc,jO as Zc,NO as _c,LO as $c,RO as ad,zO as bd,HO as cd,UO as dd,WO as ed,ak as fd,dk as gd,jk as hd,Mk as id,Nk as jd,Pk as kd,Fk as ld,Bk as md,rA as nd,TA as od,DA as pd,OA as qd,WA as rd,H as sd,YA as td,ej as ud,lj as vd,sN as wd,lN as xd,dP as yd,fP as zd,pP as Ad,mP as Bd,vP as Cd,yP as Dd,wP as Ed,TP as Fd,DP as Gd,OP as Hd,kP as Id,PR as Jd,LR as Kd,GR as Ld,YR as Md,XR as Nd,ZR as Od,_z as Pd,Sz as Qd,Cz as Rd,wz as Sd,Ez as Td,cB as Ud,hB as Vd,gB as Wd,bB as Xd,CB as Yd,wB as Zd,TB as _d,EB as $d,kB as ae,AB as be,zH as ce,BH as de,wv as ee,xx as fe,Sx as ge,aZ as he,dZ as ie,KZ as je,qZ as ke,$ as le,P$ as me,Q$ as ne,KU as oe,qU as pe,oW as qe,cW as re,lW as se,uW as te,mW as ue,xW as ve,MW as we,LW as xe,zW as ye,VW as ze,XW as Ae,tG as Be,nG as Ce,rG as De,vG as Ee,yG as Fe,bG as Ge,AG as He,KG as Ie,uK as Je,dK as Ke,CK as Le,BY as Me,WY as Ne,GY as Oe,Z as Pe,HX as Qe,UX as Re,WX as Se,GX as Te,KX as Ue,qX as Ve,XX as We,QX as Xe,$X as Ye};
206
+ /*! Bundled license information:
207
+
208
+ lit-html/directives/map.js:
209
+ lit-html/directives/choose.js:
210
+ (**
211
+ * @license
212
+ * Copyright 2021 Google LLC
213
+ * SPDX-License-Identifier: BSD-3-Clause
214
+ *)
215
+
216
+ lit-html/async-directive.js:
217
+ (**
218
+ * @license
219
+ * Copyright 2017 Google LLC
220
+ * SPDX-License-Identifier: BSD-3-Clause
221
+ *)
222
+
223
+ lit-html/directives/ref.js:
224
+ (**
225
+ * @license
226
+ * Copyright 2020 Google LLC
227
+ * SPDX-License-Identifier: BSD-3-Clause
228
+ *)
229
+ */