@subimpact/e 0.99.5 → 0.99.7

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 (63) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/bundle/chunks/{chunk-YGYY5CGE.js → chunk-JKK652B2.js} +20 -20
  3. package/dist/bundle/chunks/{chunk-SS3AAGL7.js → chunk-VVPSHZFU.js} +1 -1
  4. package/dist/bundle/chunks/{chunk-34ZJK2EZ.js → chunk-ZDC7MWVF.js} +1 -1
  5. package/dist/bundle/chunks/easter-egg-3d-567GSTG6.js +2 -0
  6. package/dist/bundle/chunks/{virtual-modules-GWKJPH7F.js → virtual-modules-EKUHB2H5.js} +1 -1
  7. package/dist/bundle/cli-runtime.js +1 -1
  8. package/dist/bundle/index.js +1 -1
  9. package/dist/bundle/rpc-entry.js +1 -1
  10. package/dist/cli/args.js +1 -1
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/core/agent-session.js +1 -1
  13. package/dist/core/agent-session.js.map +1 -1
  14. package/dist/core/bug-report.js +1 -1
  15. package/dist/core/bug-report.js.map +1 -1
  16. package/dist/core/settings-manager.d.ts.map +1 -1
  17. package/dist/core/settings-manager.js +6 -2
  18. package/dist/core/settings-manager.js.map +1 -1
  19. package/dist/core/slash-commands.js +1 -1
  20. package/dist/core/slash-commands.js.map +1 -1
  21. package/dist/modes/interactive/bug-report.js +1 -1
  22. package/dist/modes/interactive/bug-report.js.map +1 -1
  23. package/dist/modes/interactive/components/armin.d.ts +3 -0
  24. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  25. package/dist/modes/interactive/components/armin.js +7 -5
  26. package/dist/modes/interactive/components/armin.js.map +1 -1
  27. package/dist/modes/interactive/components/{pi-logo.d.ts → e-logo.d.ts} +2 -2
  28. package/dist/modes/interactive/components/e-logo.d.ts.map +1 -0
  29. package/dist/modes/interactive/components/{pi-logo.js → e-logo.js} +2 -2
  30. package/dist/modes/interactive/components/e-logo.js.map +1 -0
  31. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  32. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  33. package/dist/modes/interactive/components/{pi-logo-animation.js → easter-egg-3d.js} +126 -74
  34. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  35. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  36. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  37. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  38. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  39. package/dist/modes/interactive/components/first-time-setup.js +1 -1
  40. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  41. package/dist/modes/interactive/components/settings-selector.js +1 -1
  42. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  43. package/dist/modes/interactive/external-editor.js +1 -1
  44. package/dist/modes/interactive/external-editor.js.map +1 -1
  45. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  46. package/dist/modes/interactive/interactive-mode.js +7 -5
  47. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  48. package/dist/package-manager-cli.js +3 -3
  49. package/dist/package-manager-cli.js.map +1 -1
  50. package/docs/cli.md +1 -1
  51. package/docs/settings.md +2 -2
  52. package/docs/usage.md +1 -1
  53. package/package.json +1 -1
  54. package/dist/bundle/chunks/pi-logo-animation-5NR3P2W2.js +0 -2
  55. package/dist/modes/interactive/components/pi-logo-animation.d.ts +0 -68
  56. package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +0 -1
  57. package/dist/modes/interactive/components/pi-logo-animation.js.map +0 -1
  58. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +0 -7
  59. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +0 -1
  60. package/dist/modes/interactive/components/pi-logo-animation.lazy.js +0 -12
  61. package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +0 -1
  62. package/dist/modes/interactive/components/pi-logo.d.ts.map +0 -1
  63. package/dist/modes/interactive/components/pi-logo.js.map +0 -1
@@ -73,11 +73,11 @@ function verifyManagedRelease(releaseDir, expectedVersion) {
73
73
  });
74
74
  if (result.error || result.status !== 0) {
75
75
  const reason = result.error?.message || result.stderr.trim() || `exit code ${result.status ?? "unknown"}`;
76
- throw new Error(`Could not verify managed Pi ${expectedVersion}: ${reason}`);
76
+ throw new Error(`Could not verify managed e ${expectedVersion}: ${reason}`);
77
77
  }
78
78
  const installedVersion = result.stdout.trim();
79
79
  if (installedVersion !== expectedVersion) {
80
- throw new Error(`Managed Pi smoke test returned version ${installedVersion}; expected ${expectedVersion}.`);
80
+ throw new Error(`Managed e smoke test returned version ${installedVersion}; expected ${expectedVersion}.`);
81
81
  }
82
82
  }
83
83
  function activateManagedRelease(managedRoot, version) {
@@ -137,7 +137,7 @@ async function runManagedSelfUpdate(managedRoot, version) {
137
137
  }
138
138
  catch (error) {
139
139
  if (error instanceof Error && "code" in error && error.code === "ELOCKED") {
140
- throw new Error("Another managed Pi update is already running.");
140
+ throw new Error("Another managed e update is already running.");
141
141
  }
142
142
  throw error;
143
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-cli.js","sourceRoot":"","sources":["../src/package-manager-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAsB,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACN,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mCAAmC,EACnC,YAAY,EACZ,UAAU,EACV,mBAAmB,EAGnB,OAAO,GACP,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAgB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EACN,kCAAkC,EAClC,mCAAmC,GACnC,MAAM,gCAAgC,CAAC;AAMxC,MAAM,0BAA0B,GAAG,uCAAuC,CAAC;AAC3E,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AACtD,MAAM,0BAA0B,GAAG,0DAA0D,CAAC;AAE9F,SAAS,2BAA2B;IACnC,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACpE,8EAA8E;IAC9E,kFAAkF;IAClF,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,WAAW,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAEvG,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAIzD,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC3G,MAAM,IAAI,KAAK,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAAW,EAAE,KAAa;IAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,SAAS,GAAG,UAAU,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG;QACZ,IAAI;QACJ,kBAAkB;QAClB,qBAAqB;QACrB,YAAY;QACZ,oBAAoB;QACpB,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,kBAAkB;KAClB,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvG,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,eAAuB;IACxE,MAAM,OAAO,GAAG,IAAI,CACnB,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAC3D,CAAC;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;QACvD,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KACjC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC1G,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,gBAAgB,cAAc,eAAe,GAAG,CAAC,CAAC;IAC7G,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB,EAAE,OAAe;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,uBAAuB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC;QACJ,aAAa,CAAC,aAAa,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;QAC7C,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;IAChE,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACpC,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACJ,WAAW,GAAG,2BAA2B,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;IACR,CAAC;IACD,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC;YACJ,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACV,WAAW,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,uEAAuE;IACxE,CAAC;AACF,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,OAAe;IACvE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,WAAgC,CAAC;IACrC,IAAI,CAAC;QACJ,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IAED,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACJ,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,0BAA0B,CAAC,CAAC,OAAO,CACxG,MAAM,EACN,EAAE,CACF,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACnD,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1C,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO;QACR,CAAC;QAED,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClE,sBAAsB,CAAC,GAAG,UAAU,eAAe,EAAE,cAAc,CAAC;YACpE,sBAAsB,CAAC,GAAG,UAAU,oBAAoB,EAAE,mBAAmB,CAAC;SAC9E,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAClE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;YAAS,CAAC;QACV,IAAI,QAAQ;YAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,EAAE,CAAC;IACrB,CAAC;AACF,CAAC;AAED,MAAM,+BAA+B,GAAkB;IACtD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;CAC1C,CAAC;AAiBF,SAAS,oBAAoB,CAAC,eAAgC,EAAE,OAAe;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAC7C,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,OAAO,KAAK,KAAK,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAuB;IACtD,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,GAAG,QAAQ,iDAAiD,CAAC;QACrE,KAAK,QAAQ;YACZ,OAAO,GAAG,QAAQ,gDAAgD,CAAC;QACpE,KAAK,QAAQ;YACZ,OAAO,GAAG,QAAQ,yHAAyH,CAAC;QAC7I,KAAK,MAAM;YACV,OAAO,GAAG,QAAQ,gCAAgC,CAAC;IACrD,CAAC;AACF,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,QAAQ,uCAAuC,CAAC;AAEhF,SAAS,sBAAsB;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC,oBAAoB;;;2CAGmB,eAAe;;;;8CAIZ,eAAe;;;CAG5D,CAAC,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAuB;IACvD,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,SAAS,CAAC;;;;;+CAKU,eAAe;;;;;IAK1D,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,QAAQ;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,QAAQ,CAAC;;;SAG3B,QAAQ;;;oDAGmC,eAAe;;;;;IAK/D,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,QAAQ;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;IAehC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,MAAM;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,MAAM,CAAC;;;;;;;CAOjC,CAAC,CAAC;YACA,OAAO;IACT,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IAC1C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,OAAmC,CAAC;IACxC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,GAAG,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACpH,OAAO,GAAG,UAAU,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,oBAAyC,CAAC;IAC9C,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,aAAiC,CAAC;IACtC,IAAI,eAAmC,CAAC;IACxC,IAAI,kBAAsC,CAAC;IAC3C,IAAI,kBAAsC,CAAC;IAC3C,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,mBAAuC,CAAC;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC;YACZ,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC5B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,cAAc,GAAG,IAAI,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACzC,oBAAoB,GAAG,IAAI,CAAC;YAC5B,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAC7C,oBAAoB,GAAG,KAAK,CAAC;YAC7B,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;gBACrC,SAAS;YACV,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,kBAAkB,GAAG,kBAAkB,IAAI,GAAG,CAAC;YAChD,CAAC;iBAAM,IAAI,mBAAmB,EAAE,CAAC;gBAChC,kBAAkB,GAAG,kBAAkB,IAAI,uCAAuC,CAAC;gBACnF,KAAK,EAAE,CAAC;YACT,CAAC;iBAAM,CAAC;gBACP,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,KAAK,EAAE,CAAC;YACT,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACrC,SAAS;QACV,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC;QACd,CAAC;aAAM,CAAC;YACP,eAAe,GAAG,eAAe,IAAI,GAAG,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,IAAI,YAAsC,CAAC;IAC3C,IAAI,yBAAyB,GAAG,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,cAAc,IAAI,UAAU,IAAI,mBAAmB,CAAC,EAAE,CAAC;YAClF,kBAAkB;gBACjB,kBAAkB,IAAI,8EAA8E,CAAC;QACvG,CAAC;QACD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACvB,kBAAkB,GAAG,kBAAkB,IAAI,mDAAmD,CAAC;QAChG,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,QAAQ,IAAI,cAAc,IAAI,OAAO,IAAI,mBAAmB,EAAE,CAAC;gBAClE,kBAAkB;oBACjB,kBAAkB,IAAI,8EAA8E,CAAC;YACvG,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,kBAAkB,GAAG,kBAAkB,IAAI,sDAAsD,CAAC;YACnG,CAAC;YACD,YAAY,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,mBAAmB,EAAE,CAAC;YAChC,IAAI,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;gBAC3C,kBAAkB;oBACjB,kBAAkB,IAAI,oEAAoE,CAAC;YAC7F,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,kBAAkB,GAAG,kBAAkB,IAAI,yDAAyD,CAAC;YACtG,CAAC;YACD,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACpE,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;YAC1D,IAAI,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACP,IAAI,cAAc,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC3C,kBAAkB;wBACjB,kBAAkB;4BAClB,kFAAkF,CAAC;gBACrF,CAAC;gBACD,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;YAC/C,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACpB,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;YACvC,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACrB,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC3B,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAChC,yBAAyB,GAAG,IAAI,CAAC;QAClC,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO;QACP,MAAM;QACN,YAAY;QACZ,yBAAyB;QACzB,KAAK;QACL,KAAK;QACL,oBAAoB;QACpB,IAAI;QACJ,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,kBAAkB;KAClB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB;IACrD,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AACxD,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAoB;IAC3D,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;YAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;YACzC,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;YACzC,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7G,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,0BAA0B,CAClC,UAAqB,EACrB,mBAAmB,GAA4B,YAAY;IAE3D,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,wCAAwC,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,YAAY,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAElG,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA0B;IAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,+BAA+B;IACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,sFAAsF,CAAC,CAAC,CAAC;IACpH,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,QAAQ,mBAAmB,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC;aACpF,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AACf,CAAC;AAUD,KAAK,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,aAA6D,CAAC;IAClE,IAAI,CAAC;QACJ,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,aAAa,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE;YACpG,KAAK,EAAE,KAAK;SACZ,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,WAAW,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,YAAY,CAAC;IAC9D,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;IAC9D,IAAI,KAAK,IAAI,WAAW,KAAK,YAAY,IAAI,qBAAqB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACpG,OAAO;YACN,WAAW;YACX,WAAW;YACX,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,4BAA4B,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAA0B;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,QAAQ,SAAS,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;gBACnD,KAAK,EAAE,SAAS;aAChB,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAO,EAAE,CAAC;gBACX,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,yBAAyB,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,qBAAqB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO;IACR,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAC/C,mCAAmC,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAWD,SAAS,iBAAiB;IACzB,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9E,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;AACF,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAM3C;IACA,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACzG,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;QACjE,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,IAAI,mBAAmB,CAAC,CAAC;QACvF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,gBAAgB,GACrB,OAAO,CAAC,oBAAoB,KAAK,SAAS,IAAI,iCAAiC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3F,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,eAAe;YACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC9C,CAAC,CAAC,0BAA0B,EAAE;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QACpD,oBAAoB,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC;QAClD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU;QACV,aAAa,EAAE,OAAO,CAAC,oBAAoB;QAC3C,mBAAmB,EAAE,eAAe,CAAC,sBAAsB,EAAE;QAC7D,gBAAgB;QAChB,mBAAmB,EAAE,yBAAyB,CAAC;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,eAAe;YACf,KAAK,EAAE,OAAO,KAAK,aAAa;SAChC,CAAC;QACF,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;KACjE,CAAC,CAAC;IACH,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,IAAc,EACd,cAAc,GAAiC,EAAE;IAEjD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,sBAAsB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,oBAAyC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAChD,oBAAoB,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YACpD,oBAAoB,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,oBAAoB,IAAI,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,oBAAoB,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,4BAA4B,CAAC;QACpF,GAAG;QACH,QAAQ;QACR,oBAAoB;QACpB,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;KACrD,CAAC,CAAC;IACH,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC;SACjE,MAAM,CAAC,kBAAkB,CAAC;SAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,MAAM,mBAAmB,GAAG,MAAM,IAAI,qBAAqB,CAAC;QAC3D,GAAG;QACH,QAAQ;QACR,eAAe,EAAE,qBAAqB;QACtC,iBAAiB;KACjB,CAAC,CAAC,OAAO,EAAE,CAAC;IACb,MAAM,oBAAoB,GAAG,eAAe,CAAC,gBAAgB,EAAE;QAC9D,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;QAClG,CAAC,CAAC,mBAAmB,CAAC;IAEvB,MAAM,YAAY,CAAC;QAClB,aAAa,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE;QAC7E,eAAe;QACf,GAAG;QACH,QAAQ;QACR,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QACxC,oBAAoB,EAAE,eAAe,CAAC,gBAAgB,EAAE;KACxD,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,IAAc,EACd,cAAc,GAAiC,EAAE;IAEjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,SAAS,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,IAAI,CAAC;YACJ,MAAM,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,0BAA0B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;IACpH,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,4BAA4B,CAAC;QACpF,GAAG;QACH,QAAQ;QACR,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,wBAAwB,EAAE,OAAO,CAAC,OAAO,KAAK,QAAQ;QACtD,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;KACrD,CAAC,CAAC;IACH,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,0BAA0B,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,oBAAoB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC;IAE5E,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAErF,cAAc,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACJ,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,SAAS;gBACb,MAAM,cAAc,CAAC,iBAAiB,CAAC,MAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC;YAEb,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,MAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACb,CAAC;YAED,KAAK,MAAM,EAAE,CAAC;gBACb,MAAM,kBAAkB,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC;gBACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;gBAC9E,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;gBAEpF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;oBACjD,OAAO,IAAI,CAAC;gBACb,CAAC;gBAED,MAAM,aAAa,GAAG,CAAC,GAAwC,EAAE,EAAE;oBAClE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;oBAC5B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACF,CAAC,CAAC;gBAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;wBAChC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACF,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;wBAAE,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC7C,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBACnC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACF,CAAC;gBAED,OAAO,IAAI,CAAC;YACb,CAAC;YAED,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACxD,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;oBACvC,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CAAC,+BAA+B,QAAQ,4CAA4C,CAAC,CAC9F,CAAC;gBACH,CAAC;gBACD,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC9E,MAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC1C,IAAI,YAAY,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC9C,CAAC;gBACF,CAAC;gBACD,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC1B,uFAAuF;wBACvF,+EAA+E;wBAC/E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,gDAAgD,CAAC,CAAC,CAAC;wBACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC,CAAC;wBACrE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC5B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACtB,CAAC;wBACD,4EAA4E;wBAC5E,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,kBAAkB,GAAG,2BAA2B,EAAE,CAAC;oBACzD,IAAI,kBAAkB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBACzC,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,WAAW,QAAQ,yFAAyF,CAC5G,CACD,CAAC;wBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;wBAC/B,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,IAAI,kBAAkB,EAAE,CAAC;wBACxB,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;4BACzB,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC1C,CAAC;wBACD,IAAI,CAAC;4BACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,QAAQ,kBAAkB,CAAC,CAAC,CAAC;4BACvE,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;wBACxE,CAAC;wBAAC,OAAO,KAAc,EAAE,CAAC;4BACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;4BACxF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;4BAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACrB,OAAO,IAAI,CAAC;wBACb,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,SAAS,OAAO,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC7F,OAAO,IAAI,CAAC;oBACb,CAAC;oBAED,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;oBAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;wBACzF,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,sEAAsE,CAAC,CAC5F,CAAC;wBACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,aAAa,YAAY,QAAQ,YAAY,CAAC,CAAC,CAAC;wBACpG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,gBAAgB,GAAG;wBACxB,WAAW,EAAE,cAAc,CAAC,WAAW;wBACvC,WAAW,EAAE,cAAc,CAAC,WAAW;qBACvC,CAAC;oBACF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;oBACrG,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACxB,0BAA0B,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;wBACnE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;wBACzB,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC;wBACJ,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;4BAC7B,2BAA2B,EAAE,CAAC;wBAC/B,CAAC;wBACD,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;oBACxC,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;wBACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC9C,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;4BAC9B,+BAA+B,EAAE,CAAC;wBACnC,CAAC;wBACD,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;wBAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,SAAS,OAAO,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9F,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;QACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC","sourcesContent":["import {\n\texistsSync,\n\tmkdirSync,\n\tmkdtempSync,\n\treaddirSync,\n\treadFileSync,\n\trenameSync,\n\trmSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { Markdown, type MarkdownTheme } from \"@earendil-works/pi-tui\";\nimport chalk from \"chalk\";\nimport lockfile from \"proper-lockfile\";\nimport { selectConfig } from \"./cli/config-selector.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport {\n\tAPP_NAME,\n\tCONFIG_DIR_NAME,\n\tdetectInstallMethod,\n\tgetAgentDir,\n\tgetPackageDir,\n\tgetSelfUpdateCommand,\n\tgetSelfUpdateUnavailableInstruction,\n\tPACKAGE_NAME,\n\treadAppEnv,\n\tSELF_UPDATE_ENABLED,\n\ttype SelfUpdateCommand,\n\ttype SelfUpdatePackageTarget,\n\tVERSION,\n} from \"./config.ts\";\nimport type { InlineExtension } from \"./core/extensions/types.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.ts\";\nimport { DefaultPackageManager } from \"./core/package-manager.ts\";\nimport { type AppMode, resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { DefaultResourceLoader, isBuiltinExtension } from \"./core/resource-loader.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { hasTrustRequiringProjectResources, ProjectTrustStore } from \"./core/trust-manager.ts\";\nimport { spawnProcess, spawnProcessSync, waitForChildProcess } from \"./utils/child-process.ts\";\nimport { canonicalizePath, getCwdRelativePath } from \"./utils/paths.ts\";\nimport { getPiUserAgent } from \"./utils/pi-user-agent.ts\";\nimport { formatVersionCheckError, getLatestPiRelease, isNewerPackageVersion } from \"./utils/version-check.ts\";\nimport {\n\tcleanupWindowsSelfUpdateQuarantine,\n\tquarantineWindowsNativeDependencies,\n} from \"./utils/windows-self-update.ts\";\n\nexport type PackageCommand = \"install\" | \"remove\" | \"update\" | \"list\";\n\ntype UpdateTarget = { type: \"all\" } | { type: \"self\" } | { type: \"extensions\"; source?: string } | { type: \"models\" };\n\nconst DEFAULT_INSTALLER_API_BASE = \"https://pi.dev/api/installer/releases\";\nconst MANAGED_INSTALL_MARKER = \"managed-install.json\";\nconst MANAGED_RELEASE_VERSION_RE = /^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/;\n\nfunction getActiveManagedInstallRoot(): string | undefined {\n\tconst configuredRoot = readAppEnv(\"MANAGED_INSTALL_ROOT\")?.trim();\n\tif (!configuredRoot) return undefined;\n\n\tconst managedRoot = resolve(configuredRoot);\n\tconst releasesDir = canonicalizePath(join(managedRoot, \"releases\"));\n\t// The launcher environment is inherited by child processes. Do not classify a\n\t// source checkout or another Pi installation launched from managed Pi as managed.\n\tif (getCwdRelativePath(canonicalizePath(getPackageDir()), releasesDir) === undefined) return undefined;\n\n\tconst markerPath = join(managedRoot, MANAGED_INSTALL_MARKER);\n\ttry {\n\t\tconst marker = JSON.parse(readFileSync(markerPath, \"utf8\")) as {\n\t\t\tkind?: unknown;\n\t\t\tlayout?: unknown;\n\t\t\tschemaVersion?: unknown;\n\t\t};\n\t\tif (marker.kind !== \"pi-managed-install\" || marker.schemaVersion !== 1 || marker.layout !== \"releases-v1\") {\n\t\t\tthrow new Error();\n\t\t}\n\t} catch {\n\t\tthrow new Error(`Managed install marker is missing or invalid: ${markerPath}`);\n\t}\n\n\treturn managedRoot;\n}\n\nasync function fetchInstallerArtifact(url: string, label: string): Promise<string> {\n\tconst response = await fetch(url, { headers: { \"User-Agent\": getPiUserAgent(VERSION) } });\n\tif (!response.ok) {\n\t\tthrow new Error(`Could not download managed installer ${label} from ${url}: HTTP ${response.status}`);\n\t}\n\treturn await response.text();\n}\n\nasync function runManagedNpmCi(stageDir: string): Promise<void> {\n\tconst args = [\n\t\t\"ci\",\n\t\t\"--ignore-scripts\",\n\t\t\"--min-release-age=0\",\n\t\t\"--omit=dev\",\n\t\t\"--include=optional\",\n\t\t\"--no-fund\",\n\t\t\"--no-audit\",\n\t\t\"--loglevel=error\",\n\t\t\"--progress=false\",\n\t];\n\tconst code = await waitForChildProcess(spawnProcess(\"npm\", args, { cwd: stageDir, stdio: \"inherit\" }));\n\tif (code !== 0) throw new Error(`npm ${args.join(\" \")} exited with code ${code ?? \"unknown\"}`);\n}\n\nfunction verifyManagedRelease(releaseDir: string, expectedVersion: string): void {\n\tconst binPath = join(\n\t\treleaseDir,\n\t\t\"node_modules\",\n\t\t\".bin\",\n\t\tprocess.platform === \"win32\" ? `${APP_NAME}.cmd` : APP_NAME,\n\t);\n\tconst result = spawnProcessSync(binPath, [\"--version\"], {\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t});\n\tif (result.error || result.status !== 0) {\n\t\tconst reason = result.error?.message || result.stderr.trim() || `exit code ${result.status ?? \"unknown\"}`;\n\t\tthrow new Error(`Could not verify managed Pi ${expectedVersion}: ${reason}`);\n\t}\n\tconst installedVersion = result.stdout.trim();\n\tif (installedVersion !== expectedVersion) {\n\t\tthrow new Error(`Managed Pi smoke test returned version ${installedVersion}; expected ${expectedVersion}.`);\n\t}\n}\n\nfunction activateManagedRelease(managedRoot: string, version: string): void {\n\tconst currentPath = join(managedRoot, \"current-version\");\n\tconst temporaryPath = join(managedRoot, `current-version.tmp.${process.pid}-${Date.now()}`);\n\ttry {\n\t\twriteFileSync(temporaryPath, `${version}\\n`);\n\t\trenameSync(temporaryPath, currentPath);\n\t} finally {\n\t\trmSync(temporaryPath, { force: true });\n\t}\n}\n\nfunction cleanupManagedStaging(managedRoot: string): void {\n\tconst stagingRoot = join(managedRoot, \"staging\");\n\ttry {\n\t\tfor (const entry of readdirSync(stagingRoot)) {\n\t\t\tif (entry.startsWith(\"update-\")) {\n\t\t\t\trmSync(join(stagingRoot, entry), { force: true, recursive: true });\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// The staging directory does not exist yet or is not writable.\n\t}\n}\n\nexport function cleanupManagedInstall(): void {\n\tlet managedRoot: string | undefined;\n\ttry {\n\t\tmanagedRoot = getActiveManagedInstallRoot();\n\t} catch {\n\t\treturn;\n\t}\n\tif (!managedRoot) return;\n\n\ttry {\n\t\tconst releaseLock = lockfile.lockSync(join(managedRoot, \"update\"), { realpath: false });\n\t\ttry {\n\t\t\tcleanupManagedStaging(managedRoot);\n\t\t} finally {\n\t\t\treleaseLock();\n\t\t}\n\t} catch {\n\t\t// A live update owns the staging directory, or cleanup is unavailable.\n\t}\n}\n\nasync function runManagedSelfUpdate(managedRoot: string, version: string): Promise<void> {\n\tif (!MANAGED_RELEASE_VERSION_RE.test(version)) {\n\t\tthrow new Error(`Invalid managed release version: ${version}`);\n\t}\n\n\tlet releaseLock: () => Promise<void>;\n\ttry {\n\t\treleaseLock = await lockfile.lock(join(managedRoot, \"update\"), { realpath: false });\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error && \"code\" in error && error.code === \"ELOCKED\") {\n\t\t\tthrow new Error(\"Another managed Pi update is already running.\");\n\t\t}\n\t\tthrow error;\n\t}\n\n\tlet stageDir: string | undefined;\n\ttry {\n\t\tcleanupManagedStaging(managedRoot);\n\t\tconst installerApiBase = (readAppEnv(\"INSTALLER_API_BASE\")?.trim() || DEFAULT_INSTALLER_API_BASE).replace(\n\t\t\t/\\/+$/,\n\t\t\t\"\",\n\t\t);\n\t\tconst releaseUrl = `${installerApiBase}/${encodeURIComponent(version)}`;\n\t\tconst stagingRoot = join(managedRoot, \"staging\");\n\t\tconst releasesRoot = join(managedRoot, \"releases\");\n\t\tmkdirSync(releasesRoot, { recursive: true });\n\t\tconst releaseDir = join(releasesRoot, version);\n\t\tif (existsSync(releaseDir)) {\n\t\t\tverifyManagedRelease(releaseDir, version);\n\t\t\tactivateManagedRelease(managedRoot, version);\n\t\t\treturn;\n\t\t}\n\n\t\tmkdirSync(stagingRoot, { recursive: true });\n\t\tstageDir = mkdtempSync(join(stagingRoot, \"update-\"));\n\t\tconst [packageJsonContent, packageLockContent] = await Promise.all([\n\t\t\tfetchInstallerArtifact(`${releaseUrl}/package.json`, \"package.json\"),\n\t\t\tfetchInstallerArtifact(`${releaseUrl}/package-lock.json`, \"package-lock.json\"),\n\t\t]);\n\t\twriteFileSync(join(stageDir, \"package.json\"), packageJsonContent);\n\t\twriteFileSync(join(stageDir, \"package-lock.json\"), packageLockContent);\n\n\t\tawait runManagedNpmCi(stageDir);\n\t\tverifyManagedRelease(stageDir, version);\n\t\trenameSync(stageDir, releaseDir);\n\t\tactivateManagedRelease(managedRoot, version);\n\t} finally {\n\t\tif (stageDir) rmSync(stageDir, { force: true, recursive: true });\n\t\tawait releaseLock();\n\t}\n}\n\nconst SELF_UPDATE_NOTE_MARKDOWN_THEME: MarkdownTheme = {\n\theading: (text) => chalk.bold(chalk.yellow(text)),\n\tlink: (text) => chalk.cyan(text),\n\tlinkUrl: (text) => chalk.dim(text),\n\tcode: (text) => chalk.yellow(text),\n\tcodeBlock: (text) => chalk.dim(text),\n\tcodeBlockBorder: (text) => chalk.dim(text),\n\tquote: (text) => chalk.dim(text),\n\tquoteBorder: (text) => chalk.dim(text),\n\thr: (text) => chalk.dim(text),\n\tlistBullet: (text) => chalk.yellow(text),\n\tbold: (text) => chalk.bold(text),\n\titalic: (text) => chalk.italic(text),\n\tstrikethrough: (text) => chalk.strikethrough(text),\n\tunderline: (text) => chalk.underline(text),\n};\n\ninterface PackageCommandOptions {\n\tcommand: PackageCommand;\n\tsource?: string;\n\tupdateTarget?: UpdateTarget;\n\tshowExtensionsSkippedNote: boolean;\n\tlocal: boolean;\n\tforce: boolean;\n\tprojectTrustOverride?: boolean;\n\thelp: boolean;\n\tinvalidOption?: string;\n\tinvalidArgument?: string;\n\tmissingOptionValue?: string;\n\tconflictingOptions?: string;\n}\n\nfunction reportSettingsErrors(settingsManager: SettingsManager, context: string): void {\n\tconst errors = settingsManager.drainErrors();\n\tfor (const { scope, error } of errors) {\n\t\tconsole.error(chalk.yellow(`Warning (${context}, ${scope} settings): ${error.message}`));\n\t\tif (error.stack) {\n\t\t\tconsole.error(chalk.dim(error.stack));\n\t\t}\n\t}\n}\n\nfunction getPackageCommandUsage(command: PackageCommand): string {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\treturn `${APP_NAME} install <source> [-l] [--approve|--no-approve]`;\n\t\tcase \"remove\":\n\t\t\treturn `${APP_NAME} remove <source> [-l] [--approve|--no-approve]`;\n\t\tcase \"update\":\n\t\t\treturn `${APP_NAME} update [source|self|pi] [--self|--extensions|--models|--all] [--extension <source>] [--approve|--no-approve] [--force]`;\n\t\tcase \"list\":\n\t\t\treturn `${APP_NAME} list [--approve|--no-approve]`;\n\t}\n}\n\nconst CONFIG_COMMAND_USAGE = `${APP_NAME} config [-l] [--approve|--no-approve]`;\n\nfunction printConfigCommandHelp(): void {\n\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${CONFIG_COMMAND_USAGE}\n\nOpen the resource configuration TUI to enable or disable package resources.\nWithout -l, starts in global settings (~/${CONFIG_DIR_NAME}/agent/settings.json).\nPress Tab in the TUI to switch between global and project-local modes.\n\nOptions:\n -l, --local Edit project overrides (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command with -l\n -na, --no-approve Ignore project-local files for this command with -l\n`);\n}\n\nfunction printPackageCommandHelp(command: PackageCommand): void {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"install\")}\n\nInstall a package and add it to settings.\n\nOptions:\n -l, --local Install project-locally (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n\nExamples:\n ${APP_NAME} install npm:@foo/bar\n ${APP_NAME} install git:github.com/user/repo\n ${APP_NAME} install git:git@github.com:user/repo\n ${APP_NAME} install https://github.com/user/repo\n ${APP_NAME} install ssh://git@github.com/user/repo\n ${APP_NAME} install ./local/path\n`);\n\t\t\treturn;\n\n\t\tcase \"remove\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"remove\")}\n\nRemove a package and its source from settings.\nAlias: ${APP_NAME} uninstall <source> [-l]\n\nOptions:\n -l, --local Remove from project settings (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n\nExamples:\n ${APP_NAME} remove npm:@foo/bar\n ${APP_NAME} uninstall npm:@foo/bar\n`);\n\t\t\treturn;\n\n\t\tcase \"update\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"update\")}\n\nUpdate e, installed packages, or model catalogs.\n\nOptions:\n --self Update e only (default when no target is given)\n --extensions Update installed packages only\n --models Refresh model catalogs only\n --all Update e and installed packages\n --extension <source> Update one package only\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n --force Reinstall pi even if the current version is latest\n\nShort forms:\n ${APP_NAME} update Update e only\n ${APP_NAME} update --all Update e and all extensions\n ${APP_NAME} update --models Refresh model catalogs only\n ${APP_NAME} update <source> Update one package\n ${APP_NAME} update pi Update e only (self works as alias to pi)\n`);\n\t\t\treturn;\n\n\t\tcase \"list\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"list\")}\n\nList installed packages from user and project settings.\n\nOptions:\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n`);\n\t\t\treturn;\n\t}\n}\n\nfunction parsePackageCommand(args: string[]): PackageCommandOptions | undefined {\n\tconst [rawCommand, ...rest] = args;\n\tlet command: PackageCommand | undefined;\n\tif (rawCommand === \"uninstall\") {\n\t\tcommand = \"remove\";\n\t} else if (rawCommand === \"install\" || rawCommand === \"remove\" || rawCommand === \"update\" || rawCommand === \"list\") {\n\t\tcommand = rawCommand;\n\t}\n\tif (!command) {\n\t\treturn undefined;\n\t}\n\n\tlet local = false;\n\tlet force = false;\n\tlet projectTrustOverride: boolean | undefined;\n\tlet help = false;\n\tlet invalidOption: string | undefined;\n\tlet invalidArgument: string | undefined;\n\tlet missingOptionValue: string | undefined;\n\tlet conflictingOptions: string | undefined;\n\tlet source: string | undefined;\n\tlet selfFlag = false;\n\tlet extensionsFlag = false;\n\tlet modelsFlag = false;\n\tlet allFlag = false;\n\tlet extensionFlagSource: string | undefined;\n\n\tfor (let index = 0; index < rest.length; index++) {\n\t\tconst arg = rest[index];\n\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\thelp = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"-l\" || arg === \"--local\") {\n\t\t\tif (command === \"install\" || command === \"remove\") {\n\t\t\t\tlocal = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--self\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tselfFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--extensions\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\textensionsFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--models\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tmodelsFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--all\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tallFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--approve\" || arg === \"-a\") {\n\t\t\tprojectTrustOverride = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--no-approve\" || arg === \"-na\") {\n\t\t\tprojectTrustOverride = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--force\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tforce = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--extension\") {\n\t\t\tif (command !== \"update\") {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst value = rest[index + 1];\n\t\t\tif (!value || value.startsWith(\"-\")) {\n\t\t\t\tmissingOptionValue = missingOptionValue ?? arg;\n\t\t\t} else if (extensionFlagSource) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--extension can only be provided once\";\n\t\t\t\tindex++;\n\t\t\t} else {\n\t\t\t\textensionFlagSource = value;\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!source) {\n\t\t\tsource = arg;\n\t\t} else {\n\t\t\tinvalidArgument = invalidArgument ?? arg;\n\t\t}\n\t}\n\n\tlet updateTarget: UpdateTarget | undefined;\n\tlet showExtensionsSkippedNote = false;\n\tif (command === \"update\") {\n\t\tif (allFlag && (selfFlag || extensionsFlag || modelsFlag || extensionFlagSource)) {\n\t\t\tconflictingOptions =\n\t\t\t\tconflictingOptions ?? \"--all cannot be combined with --self, --extensions, --models, or --extension\";\n\t\t}\n\t\tif (allFlag && source) {\n\t\t\tconflictingOptions = conflictingOptions ?? \"--all cannot be combined with a positional source\";\n\t\t}\n\n\t\tif (modelsFlag) {\n\t\t\tif (selfFlag || extensionsFlag || allFlag || extensionFlagSource) {\n\t\t\t\tconflictingOptions =\n\t\t\t\t\tconflictingOptions ?? \"--models cannot be combined with --self, --extensions, --all, or --extension\";\n\t\t\t}\n\t\t\tif (source) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--models cannot be combined with a positional source\";\n\t\t\t}\n\t\t\tupdateTarget = { type: \"models\" };\n\t\t} else if (extensionFlagSource) {\n\t\t\tif (selfFlag || extensionsFlag || allFlag) {\n\t\t\t\tconflictingOptions =\n\t\t\t\t\tconflictingOptions ?? \"--extension cannot be combined with --self, --extensions, or --all\";\n\t\t\t}\n\t\t\tif (source) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--extension cannot be combined with a positional source\";\n\t\t\t}\n\t\t\tupdateTarget = { type: \"extensions\", source: extensionFlagSource };\n\t\t} else if (source) {\n\t\t\tconst sourceIsSelf = source === \"self\" || source === \"pi\";\n\t\t\tif (sourceIsSelf) {\n\t\t\t\tupdateTarget = extensionsFlag ? { type: \"all\" } : { type: \"self\" };\n\t\t\t} else {\n\t\t\t\tif (extensionsFlag || selfFlag || allFlag) {\n\t\t\t\t\tconflictingOptions =\n\t\t\t\t\t\tconflictingOptions ??\n\t\t\t\t\t\t\"positional update targets cannot be combined with --self, --extensions, or --all\";\n\t\t\t\t}\n\t\t\t\tupdateTarget = { type: \"extensions\", source };\n\t\t\t}\n\t\t} else if (allFlag) {\n\t\t\tupdateTarget = { type: \"all\" };\n\t\t} else if (selfFlag && extensionsFlag) {\n\t\t\tupdateTarget = { type: \"all\" };\n\t\t} else if (selfFlag) {\n\t\t\tupdateTarget = { type: \"self\" };\n\t\t} else if (extensionsFlag) {\n\t\t\tupdateTarget = { type: \"extensions\" };\n\t\t} else {\n\t\t\tupdateTarget = { type: \"self\" };\n\t\t\tshowExtensionsSkippedNote = true;\n\t\t}\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tsource,\n\t\tupdateTarget,\n\t\tshowExtensionsSkippedNote,\n\t\tlocal,\n\t\tforce,\n\t\tprojectTrustOverride,\n\t\thelp,\n\t\tinvalidOption,\n\t\tinvalidArgument,\n\t\tmissingOptionValue,\n\t\tconflictingOptions,\n\t};\n}\n\nfunction updateTargetIncludesSelf(target: UpdateTarget): boolean {\n\treturn target.type === \"all\" || target.type === \"self\";\n}\n\nfunction updateTargetIncludesExtensions(target: UpdateTarget): boolean {\n\treturn target.type === \"all\" || target.type === \"extensions\";\n}\n\nasync function refreshModelCatalogs(agentDir: string): Promise<void> {\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), 15_000);\n\ttry {\n\t\tconst modelRuntime = await ModelRuntime.create({\n\t\t\tauthPath: join(agentDir, \"auth.json\"),\n\t\t\tmodelsPath: join(agentDir, \"models.json\"),\n\t\t\tallowModelNetwork: false,\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tconst result = await modelRuntime.refresh({\n\t\t\tallowNetwork: true,\n\t\t\tforce: true,\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tif (result.aborted) {\n\t\t\tthrow new Error(\"Model catalog refresh timed out.\");\n\t\t}\n\t\tif (result.errors.size > 0) {\n\t\t\tconst details = Array.from(result.errors, ([provider, error]) => `${provider}: ${error.message}`).join(\"; \");\n\t\t\tthrow new Error(`Could not refresh model catalogs: ${details}`);\n\t\t}\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n\tconsole.log(chalk.green(\"Model catalogs refreshed\"));\n}\n\nfunction printSelfUpdateUnavailable(\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = PACKAGE_NAME,\n): void {\n\tconsole.error(`error: ${APP_NAME} cannot self-update this installation.`);\n\tconsole.error(getSelfUpdateUnavailableInstruction(PACKAGE_NAME, npmCommand, updatePackageTarget));\n\n\tconst entrypoint = process.argv[1];\n\tif (entrypoint) {\n\t\tconsole.error(\"\");\n\t\tconsole.error(`Location of ${APP_NAME} executable: ${entrypoint}`);\n\t}\n}\n\nfunction printSelfUpdateFallback(command: SelfUpdateCommand): void {\n\tconsole.error(chalk.dim(`If this keeps failing, run this command yourself: ${command.display}`));\n}\n\nfunction printPnpmSelfUpdateMetadataHint(): void {\n\tconsole.error(chalk.yellow(\"If pnpm reports missing package versions, its cached registry metadata may be stale.\"));\n\tconsole.error(chalk.yellow(`Run \\`pnpm store prune\\` and retry \\`${APP_NAME} update --self\\`.`));\n}\n\nfunction printSelfUpdateNote(note: string): void {\n\tconst trimmedNote = note.trim();\n\tif (!trimmedNote) {\n\t\treturn;\n\t}\n\n\tconsole.log();\n\tconsole.log(chalk.bold(chalk.yellow(\"Update note\")));\n\ttry {\n\t\tconst width = Math.max(20, process.stdout.columns ?? 80);\n\t\tconst renderedLines = new Markdown(trimmedNote, 0, 0, SELF_UPDATE_NOTE_MARKDOWN_THEME)\n\t\t\t.render(width)\n\t\t\t.map((line) => line.trimEnd());\n\t\tconsole.log(renderedLines.join(\"\\n\"));\n\t} catch {\n\t\tconsole.log(trimmedNote);\n\t}\n\tconsole.log();\n}\n\ninterface SelfUpdatePlan {\n\tpackageName: string;\n\tinstallSpec: string;\n\tversion: string;\n\tshouldRun: boolean;\n\tnote?: string;\n}\n\nasync function getSelfUpdatePlan(force: boolean): Promise<SelfUpdatePlan> {\n\tlet latestRelease: Awaited<ReturnType<typeof getLatestPiRelease>>;\n\ttry {\n\t\tlatestRelease = await getLatestPiRelease(VERSION, { retry: true });\n\t} catch (error: unknown) {\n\t\tthrow new Error(`Could not determine latest ${APP_NAME} version: ${formatVersionCheckError(error)}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n\tif (!latestRelease) {\n\t\tthrow new Error(`Could not determine latest ${APP_NAME} version.`);\n\t}\n\n\tconst packageName = latestRelease.packageName ?? PACKAGE_NAME;\n\tconst installSpec = `${packageName}@${latestRelease.version}`;\n\tif (force || packageName !== PACKAGE_NAME || isNewerPackageVersion(latestRelease.version, VERSION)) {\n\t\treturn {\n\t\t\tpackageName,\n\t\t\tinstallSpec,\n\t\t\tversion: latestRelease.version,\n\t\t\t...(latestRelease.note ? { note: latestRelease.note } : {}),\n\t\t\tshouldRun: true,\n\t\t};\n\t}\n\n\tconsole.log(chalk.green(`${APP_NAME} is already up to date (v${VERSION})`));\n\treturn { packageName, installSpec, version: latestRelease.version, shouldRun: false };\n}\n\nasync function runSelfUpdate(command: SelfUpdateCommand): Promise<void> {\n\tconsole.log(chalk.dim(`Updating ${APP_NAME} with ${command.display}...`));\n\tfor (const step of command.steps ?? [command]) {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tconst child = spawnProcess(step.command, step.args, {\n\t\t\t\tstdio: \"inherit\",\n\t\t\t});\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t\tchild.on(\"close\", (code, signal) => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolve();\n\t\t\t\t} else if (signal) {\n\t\t\t\t\treject(new Error(`${step.display} terminated by signal ${signal}`));\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error(`${step.display} exited with code ${code ?? \"unknown\"}`));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\nfunction prepareWindowsNpmSelfUpdate(): void {\n\tif (process.platform !== \"win32\") {\n\t\treturn;\n\t}\n\n\tconst packageDir = getPackageDir();\n\tcleanupWindowsSelfUpdateQuarantine(packageDir);\n\tquarantineWindowsNativeDependencies(packageDir);\n}\n\nexport interface PackageCommandRuntimeOptions {\n\textensionFactories?: InlineExtension[];\n}\n\ninterface CommandSettingsResult {\n\tsettingsManager: SettingsManager;\n\tprojectTrustWarnings: string[];\n}\n\nfunction getCommandAppMode(): AppMode {\n\treturn process.stdin.isTTY && process.stdout.isTTY ? \"interactive\" : \"print\";\n}\n\nfunction reportProjectTrustWarnings(warnings: readonly string[]): void {\n\tfor (const warning of warnings) {\n\t\tconsole.error(chalk.yellow(`Warning: ${warning}`));\n\t}\n}\n\nasync function createCommandSettingsManager(options: {\n\tcwd: string;\n\tagentDir: string;\n\tprojectTrustOverride?: boolean;\n\tuseSavedProjectTrustOnly?: boolean;\n\textensionFactories?: InlineExtension[];\n}): Promise<CommandSettingsResult> {\n\tconst settingsManager = SettingsManager.create(options.cwd, options.agentDir, { projectTrusted: false });\n\tconst projectTrustWarnings: string[] = [];\n\tconst trustStore = new ProjectTrustStore(options.agentDir);\n\tif (options.useSavedProjectTrustOnly) {\n\t\tconst savedProjectTrusted = trustStore.get(options.cwd) === true;\n\t\tsettingsManager.setProjectTrusted(options.projectTrustOverride ?? savedProjectTrusted);\n\t\treturn { settingsManager, projectTrustWarnings };\n\t}\n\n\tconst appMode = getCommandAppMode();\n\tconst extensionsResult =\n\t\toptions.projectTrustOverride === undefined && hasTrustRequiringProjectResources(options.cwd)\n\t\t\t? await new DefaultResourceLoader({\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\tagentDir: options.agentDir,\n\t\t\t\t\tsettingsManager,\n\t\t\t\t\textensionFactories: options.extensionFactories,\n\t\t\t\t}).loadProjectTrustExtensions()\n\t\t\t: undefined;\n\tfor (const error of extensionsResult?.errors ?? []) {\n\t\tprojectTrustWarnings.push(`Failed to load extension \"${error.path}\": ${error.error}`);\n\t}\n\n\tconst projectTrusted = await resolveProjectTrusted({\n\t\tcwd: options.cwd,\n\t\ttrustStore,\n\t\ttrustOverride: options.projectTrustOverride,\n\t\tdefaultProjectTrust: settingsManager.getDefaultProjectTrust(),\n\t\textensionsResult,\n\t\tprojectTrustContext: createProjectTrustContext({\n\t\t\tcwd: options.cwd,\n\t\t\tmode: appMode,\n\t\t\tsettingsManager,\n\t\t\thasUI: appMode === \"interactive\",\n\t\t}),\n\t\tonExtensionError: (message) => projectTrustWarnings.push(message),\n\t});\n\tsettingsManager.setProjectTrusted(projectTrusted);\n\treturn { settingsManager, projectTrustWarnings };\n}\n\nexport async function handleConfigCommand(\n\targs: string[],\n\truntimeOptions: PackageCommandRuntimeOptions = {},\n): Promise<boolean> {\n\tconst [command, ...rest] = args;\n\tif (command !== \"config\") {\n\t\treturn false;\n\t}\n\n\tif (rest.includes(\"-h\") || rest.includes(\"--help\")) {\n\t\tprintConfigCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet local = false;\n\tlet projectTrustOverride: boolean | undefined;\n\tfor (const arg of rest) {\n\t\tif (arg === \"-l\" || arg === \"--local\") {\n\t\t\tlocal = true;\n\t\t} else if (arg === \"-a\" || arg === \"--approve\") {\n\t\t\tprojectTrustOverride = true;\n\t\t} else if (arg === \"-na\" || arg === \"--no-approve\") {\n\t\t\tprojectTrustOverride = false;\n\t\t} else if (arg.startsWith(\"-\")) {\n\t\t\tconsole.error(chalk.red(`Unknown option ${arg} for \"config\".`));\n\t\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} --help\" or \"${CONFIG_COMMAND_USAGE}\".`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.error(chalk.red(`Unexpected argument ${arg}.`));\n\t\t\tconsole.error(chalk.dim(`Usage: ${CONFIG_COMMAND_USAGE}`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tprojectTrustOverride,\n\t\textensionFactories: runtimeOptions.extensionFactories,\n\t});\n\treportProjectTrustWarnings(projectTrustWarnings);\n\tif (local && !settingsManager.isProjectTrusted()) {\n\t\tconsole.error(chalk.red(\"Project is not trusted. Use --approve to modify local resource config.\"));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\treportSettingsErrors(settingsManager, \"config command\");\n\tconst builtinExtensions = (runtimeOptions.extensionFactories ?? [])\n\t\t.filter(isBuiltinExtension)\n\t\t.map((input) => input.name);\n\tconst globalSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tconst globalResolvedPaths = await new DefaultPackageManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tsettingsManager: globalSettingsManager,\n\t\tbuiltinExtensions,\n\t}).resolve();\n\tconst projectResolvedPaths = settingsManager.isProjectTrusted()\n\t\t? await new DefaultPackageManager({ cwd, agentDir, settingsManager, builtinExtensions }).resolve()\n\t\t: globalResolvedPaths;\n\n\tawait selectConfig({\n\t\tresolvedPaths: { global: globalResolvedPaths, project: projectResolvedPaths },\n\t\tsettingsManager,\n\t\tcwd,\n\t\tagentDir,\n\t\twriteScope: local ? \"project\" : \"global\",\n\t\tprojectModeAvailable: settingsManager.isProjectTrusted(),\n\t});\n\n\tprocess.exit(0);\n}\n\nexport async function handlePackageCommand(\n\targs: string[],\n\truntimeOptions: PackageCommandRuntimeOptions = {},\n): Promise<boolean> {\n\tconst options = parsePackageCommand(args);\n\tif (!options) {\n\t\treturn false;\n\t}\n\n\tif (options.help) {\n\t\tprintPackageCommandHelp(options.command);\n\t\treturn true;\n\t}\n\n\tif (options.invalidOption) {\n\t\tconsole.error(chalk.red(`Unknown option ${options.invalidOption} for \"${options.command}\".`));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} --help\" or \"${getPackageCommandUsage(options.command)}\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.missingOptionValue) {\n\t\tconsole.error(chalk.red(`Missing value for ${options.missingOptionValue}.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.invalidArgument) {\n\t\tconsole.error(chalk.red(`Unexpected argument ${options.invalidArgument}.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.conflictingOptions) {\n\t\tconsole.error(chalk.red(options.conflictingOptions));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst source = options.source;\n\tif ((options.command === \"install\" || options.command === \"remove\") && !source) {\n\t\tconsole.error(chalk.red(`Missing ${options.command} source.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.command === \"update\" && options.updateTarget?.type === \"models\") {\n\t\ttry {\n\t\t\tawait refreshModelCatalogs(getAgentDir());\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : \"Unknown model catalog refresh error\";\n\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\tprocess.exitCode = 1;\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst writesProjectPackageConfig = (options.command === \"install\" || options.command === \"remove\") && options.local;\n\tconst { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tprojectTrustOverride: options.projectTrustOverride,\n\t\tuseSavedProjectTrustOnly: options.command === \"update\",\n\t\textensionFactories: runtimeOptions.extensionFactories,\n\t});\n\treportProjectTrustWarnings(projectTrustWarnings);\n\tif (!settingsManager.isProjectTrusted() && writesProjectPackageConfig) {\n\t\tconsole.error(chalk.red(\"Project is not trusted. Use --approve to modify local package config.\"));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\treportSettingsErrors(settingsManager, \"package command\");\n\tconst selfUpdateNpmCommand = settingsManager.getGlobalSettings().npmCommand;\n\n\tconst packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });\n\n\tpackageManager.setProgressCallback((event) => {\n\t\tif (event.type === \"start\") {\n\t\t\tprocess.stdout.write(chalk.dim(`${event.message}\\n`));\n\t\t}\n\t});\n\n\ttry {\n\t\tswitch (options.command) {\n\t\t\tcase \"install\":\n\t\t\t\tawait packageManager.installAndPersist(source!, { local: options.local });\n\t\t\t\tconsole.log(chalk.green(`Installed ${source}`));\n\t\t\t\treturn true;\n\n\t\t\tcase \"remove\": {\n\t\t\t\tconst removed = await packageManager.removeAndPersist(source!, { local: options.local });\n\t\t\t\tif (!removed) {\n\t\t\t\t\tconsole.error(chalk.red(`No matching package found for ${source}`));\n\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.log(chalk.green(`Removed ${source}`));\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"list\": {\n\t\t\t\tconst configuredPackages = packageManager.listConfiguredPackages();\n\t\t\t\tconst userPackages = configuredPackages.filter((pkg) => pkg.scope === \"user\");\n\t\t\t\tconst projectPackages = configuredPackages.filter((pkg) => pkg.scope === \"project\");\n\n\t\t\t\tif (configuredPackages.length === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(\"No packages installed.\"));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst formatPackage = (pkg: (typeof configuredPackages)[number]) => {\n\t\t\t\t\tconst display = pkg.filtered ? `${pkg.source} (filtered)` : pkg.source;\n\t\t\t\t\tconsole.log(` ${display}`);\n\t\t\t\t\tif (pkg.installedPath) {\n\t\t\t\t\t\tconsole.log(chalk.dim(` ${pkg.installedPath}`));\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (userPackages.length > 0) {\n\t\t\t\t\tconsole.log(chalk.bold(\"User packages:\"));\n\t\t\t\t\tfor (const pkg of userPackages) {\n\t\t\t\t\t\tformatPackage(pkg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (projectPackages.length > 0) {\n\t\t\t\t\tif (userPackages.length > 0) console.log();\n\t\t\t\t\tconsole.log(chalk.bold(\"Project packages:\"));\n\t\t\t\t\tfor (const pkg of projectPackages) {\n\t\t\t\t\t\tformatPackage(pkg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"update\": {\n\t\t\t\tconst target = options.updateTarget ?? { type: \"self\" };\n\t\t\t\tif (options.showExtensionsSkippedNote) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\tchalk.dim(`Extensions are skipped. Run ${APP_NAME} update --extensions to update extensions.`),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (updateTargetIncludesExtensions(target)) {\n\t\t\t\t\tconst updateSource = target.type === \"extensions\" ? target.source : undefined;\n\t\t\t\t\tawait packageManager.update(updateSource);\n\t\t\t\t\tif (updateSource) {\n\t\t\t\t\t\tconsole.log(chalk.green(`Updated ${updateSource}`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(chalk.green(\"Updated packages\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (updateTargetIncludesSelf(target)) {\n\t\t\t\t\tif (!SELF_UPDATE_ENABLED) {\n\t\t\t\t\t\t// e fork: self-update resolves through upstream's pi.dev release channel, which serves\n\t\t\t\t\t\t// the upstream package; running it could replace e with pi. Update e manually.\n\t\t\t\t\t\tconsole.error(chalk.yellow(`${APP_NAME} self-update is disabled in this distribution.`));\n\t\t\t\t\t\tconsole.error(chalk.dim(`To update, run: npm i -g ${PACKAGE_NAME}`));\n\t\t\t\t\t\tif (target.type === \"self\") {\n\t\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// For --all runs, the packages portion already updated; skip the self part.\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst managedInstallRoot = getActiveManagedInstallRoot();\n\t\t\t\t\tif (managedInstallRoot && options.force) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t`Managed ${APP_NAME} installations do not support --force; rerun the installer to repair this installation.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst selfUpdatePlan = await getSelfUpdatePlan(options.force);\n\t\t\t\t\tif (!selfUpdatePlan.shouldRun) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (managedInstallRoot) {\n\t\t\t\t\t\tif (selfUpdatePlan.note) {\n\t\t\t\t\t\t\tprintSelfUpdateNote(selfUpdatePlan.note);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconsole.log(chalk.dim(`Updating managed ${APP_NAME} installation...`));\n\t\t\t\t\t\t\tawait runManagedSelfUpdate(managedInstallRoot, selfUpdatePlan.version);\n\t\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\t\tconst message = error instanceof Error ? error.message : \"Unknown managed update error\";\n\t\t\t\t\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.log(chalk.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`));\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst installMethod = detectInstallMethod();\n\t\t\t\t\tif (process.platform === \"win32\" && installMethod !== \"npm\" && installMethod !== \"pnpm\") {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\tchalk.red(`${APP_NAME} self-update on Windows is only supported for npm and pnpm installs.`),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconsole.error(chalk.dim(`Detected install method: ${installMethod}. Update ${APP_NAME} manually.`));\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst selfUpdateTarget = {\n\t\t\t\t\t\tpackageName: selfUpdatePlan.packageName,\n\t\t\t\t\t\tinstallSpec: selfUpdatePlan.installSpec,\n\t\t\t\t\t};\n\t\t\t\t\tconst selfUpdateCommand = getSelfUpdateCommand(PACKAGE_NAME, selfUpdateNpmCommand, selfUpdateTarget);\n\t\t\t\t\tif (!selfUpdateCommand) {\n\t\t\t\t\t\tprintSelfUpdateUnavailable(selfUpdateNpmCommand, selfUpdateTarget);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (selfUpdatePlan.note) {\n\t\t\t\t\t\tprintSelfUpdateNote(selfUpdatePlan.note);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (installMethod === \"npm\") {\n\t\t\t\t\t\t\tprepareWindowsNpmSelfUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait runSelfUpdate(selfUpdateCommand);\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : \"Unknown package command error\";\n\t\t\t\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\t\t\t\tif (installMethod === \"pnpm\") {\n\t\t\t\t\t\t\tprintPnpmSelfUpdateMetadataHint();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprintSelfUpdateFallback(selfUpdateCommand);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(chalk.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`));\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : \"Unknown package command error\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"file":"package-manager-cli.js","sourceRoot":"","sources":["../src/package-manager-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAsB,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACN,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mCAAmC,EACnC,YAAY,EACZ,UAAU,EACV,mBAAmB,EAGnB,OAAO,GACP,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAgB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EACN,kCAAkC,EAClC,mCAAmC,GACnC,MAAM,gCAAgC,CAAC;AAMxC,MAAM,0BAA0B,GAAG,uCAAuC,CAAC;AAC3E,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AACtD,MAAM,0BAA0B,GAAG,0DAA0D,CAAC;AAE9F,SAAS,2BAA2B;IACnC,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;IAClE,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACpE,8EAA8E;IAC9E,kFAAkF;IAClF,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,WAAW,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAEvG,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAIzD,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC3G,MAAM,IAAI,KAAK,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAAW,EAAE,KAAa;IAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,SAAS,GAAG,UAAU,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG;QACZ,IAAI;QACJ,kBAAkB;QAClB,qBAAqB;QACrB,YAAY;QACZ,oBAAoB;QACpB,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,kBAAkB;KAClB,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvG,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,eAAuB;IACxE,MAAM,OAAO,GAAG,IAAI,CACnB,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAC3D,CAAC;IACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;QACvD,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KACjC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC1G,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAe,KAAK,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,yCAAyC,gBAAgB,cAAc,eAAe,GAAG,CAAC,CAAC;IAC5G,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB,EAAE,OAAe;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,uBAAuB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC;QACJ,aAAa,CAAC,aAAa,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;QAC7C,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;IAChE,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACpC,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACJ,WAAW,GAAG,2BAA2B,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;IACR,CAAC;IACD,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC;YACJ,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACV,WAAW,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,uEAAuE;IACxE,CAAC;AACF,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,OAAe;IACvE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,WAAgC,CAAC;IACrC,IAAI,CAAC;QACJ,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IAED,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACJ,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,0BAA0B,CAAC,CAAC,OAAO,CACxG,MAAM,EACN,EAAE,CACF,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACnD,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1C,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO;QACR,CAAC;QAED,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClE,sBAAsB,CAAC,GAAG,UAAU,eAAe,EAAE,cAAc,CAAC;YACpE,sBAAsB,CAAC,GAAG,UAAU,oBAAoB,EAAE,mBAAmB,CAAC;SAC9E,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAClE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;YAAS,CAAC;QACV,IAAI,QAAQ;YAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,EAAE,CAAC;IACrB,CAAC;AACF,CAAC;AAED,MAAM,+BAA+B,GAAkB;IACtD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;CAC1C,CAAC;AAiBF,SAAS,oBAAoB,CAAC,eAAgC,EAAE,OAAe;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAC7C,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,OAAO,KAAK,KAAK,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAuB;IACtD,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,GAAG,QAAQ,iDAAiD,CAAC;QACrE,KAAK,QAAQ;YACZ,OAAO,GAAG,QAAQ,gDAAgD,CAAC;QACpE,KAAK,QAAQ;YACZ,OAAO,GAAG,QAAQ,yHAAyH,CAAC;QAC7I,KAAK,MAAM;YACV,OAAO,GAAG,QAAQ,gCAAgC,CAAC;IACrD,CAAC;AACF,CAAC;AAED,MAAM,oBAAoB,GAAG,GAAG,QAAQ,uCAAuC,CAAC;AAEhF,SAAS,sBAAsB;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC,oBAAoB;;;2CAGmB,eAAe;;;;8CAIZ,eAAe;;;CAG5D,CAAC,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAuB;IACvD,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,SAAS,CAAC;;;;;+CAKU,eAAe;;;;;IAK1D,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,QAAQ;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,QAAQ,CAAC;;;SAG3B,QAAQ;;;oDAGmC,eAAe;;;;;IAK/D,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,QAAQ;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;IAehC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC,CAAC;YACA,OAAO;QAER,KAAK,MAAM;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,sBAAsB,CAAC,MAAM,CAAC;;;;;;;CAOjC,CAAC,CAAC;YACA,OAAO;IACT,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IAC1C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,OAAmC,CAAC;IACxC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,GAAG,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACpH,OAAO,GAAG,UAAU,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,oBAAyC,CAAC;IAC9C,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,aAAiC,CAAC;IACtC,IAAI,eAAmC,CAAC;IACxC,IAAI,kBAAsC,CAAC;IAC3C,IAAI,kBAAsC,CAAC;IAC3C,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,mBAAuC,CAAC;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC;YACZ,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC5B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,cAAc,GAAG,IAAI,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACzC,oBAAoB,GAAG,IAAI,CAAC;YAC5B,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAC7C,oBAAoB,GAAG,KAAK,CAAC;YAC7B,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACtC,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1B,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;gBACrC,SAAS;YACV,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,kBAAkB,GAAG,kBAAkB,IAAI,GAAG,CAAC;YAChD,CAAC;iBAAM,IAAI,mBAAmB,EAAE,CAAC;gBAChC,kBAAkB,GAAG,kBAAkB,IAAI,uCAAuC,CAAC;gBACnF,KAAK,EAAE,CAAC;YACT,CAAC;iBAAM,CAAC;gBACP,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,KAAK,EAAE,CAAC;YACT,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;YACrC,SAAS;QACV,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC;QACd,CAAC;aAAM,CAAC;YACP,eAAe,GAAG,eAAe,IAAI,GAAG,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,IAAI,YAAsC,CAAC;IAC3C,IAAI,yBAAyB,GAAG,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,cAAc,IAAI,UAAU,IAAI,mBAAmB,CAAC,EAAE,CAAC;YAClF,kBAAkB;gBACjB,kBAAkB,IAAI,8EAA8E,CAAC;QACvG,CAAC;QACD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACvB,kBAAkB,GAAG,kBAAkB,IAAI,mDAAmD,CAAC;QAChG,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,QAAQ,IAAI,cAAc,IAAI,OAAO,IAAI,mBAAmB,EAAE,CAAC;gBAClE,kBAAkB;oBACjB,kBAAkB,IAAI,8EAA8E,CAAC;YACvG,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,kBAAkB,GAAG,kBAAkB,IAAI,sDAAsD,CAAC;YACnG,CAAC;YACD,YAAY,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,mBAAmB,EAAE,CAAC;YAChC,IAAI,QAAQ,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;gBAC3C,kBAAkB;oBACjB,kBAAkB,IAAI,oEAAoE,CAAC;YAC7F,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,kBAAkB,GAAG,kBAAkB,IAAI,yDAAyD,CAAC;YACtG,CAAC;YACD,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACpE,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC;YAC1D,IAAI,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACP,IAAI,cAAc,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC3C,kBAAkB;wBACjB,kBAAkB;4BAClB,kFAAkF,CAAC;gBACrF,CAAC;gBACD,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;YAC/C,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACpB,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;YACvC,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACrB,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC3B,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAChC,yBAAyB,GAAG,IAAI,CAAC;QAClC,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO;QACP,MAAM;QACN,YAAY;QACZ,yBAAyB;QACzB,KAAK;QACL,KAAK;QACL,oBAAoB;QACpB,IAAI;QACJ,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,kBAAkB;KAClB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB;IACrD,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AACxD,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAoB;IAC3D,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;YAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;YACzC,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;YACzC,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7G,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,0BAA0B,CAClC,UAAqB,EACrB,mBAAmB,GAA4B,YAAY;IAE3D,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,wCAAwC,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,YAAY,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAElG,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA0B;IAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,+BAA+B;IACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,sFAAsF,CAAC,CAAC,CAAC;IACpH,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,QAAQ,mBAAmB,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC;aACpF,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AACf,CAAC;AAUD,KAAK,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,aAA6D,CAAC;IAClE,IAAI,CAAC;QACJ,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,aAAa,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE;YACpG,KAAK,EAAE,KAAK;SACZ,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,WAAW,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,YAAY,CAAC;IAC9D,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;IAC9D,IAAI,KAAK,IAAI,WAAW,KAAK,YAAY,IAAI,qBAAqB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACpG,OAAO;YACN,WAAW;YACX,WAAW;YACX,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,4BAA4B,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAA0B;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,QAAQ,SAAS,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;gBACnD,KAAK,EAAE,SAAS;aAChB,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAO,EAAE,CAAC;gBACX,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,yBAAyB,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,qBAAqB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO;IACR,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAC/C,mCAAmC,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAWD,SAAS,iBAAiB;IACzB,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9E,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;AACF,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAM3C;IACA,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACzG,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;QACjE,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,IAAI,mBAAmB,CAAC,CAAC;QACvF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,gBAAgB,GACrB,OAAO,CAAC,oBAAoB,KAAK,SAAS,IAAI,iCAAiC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3F,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,eAAe;YACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC9C,CAAC,CAAC,0BAA0B,EAAE;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QACpD,oBAAoB,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC;QAClD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU;QACV,aAAa,EAAE,OAAO,CAAC,oBAAoB;QAC3C,mBAAmB,EAAE,eAAe,CAAC,sBAAsB,EAAE;QAC7D,gBAAgB;QAChB,mBAAmB,EAAE,yBAAyB,CAAC;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,eAAe;YACf,KAAK,EAAE,OAAO,KAAK,aAAa;SAChC,CAAC;QACF,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;KACjE,CAAC,CAAC;IACH,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,IAAc,EACd,cAAc,GAAiC,EAAE;IAEjD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,sBAAsB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,oBAAyC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAChD,oBAAoB,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YACpD,oBAAoB,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,oBAAoB,IAAI,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,oBAAoB,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,4BAA4B,CAAC;QACpF,GAAG;QACH,QAAQ;QACR,oBAAoB;QACpB,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;KACrD,CAAC,CAAC;IACH,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC;SACjE,MAAM,CAAC,kBAAkB,CAAC;SAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,MAAM,mBAAmB,GAAG,MAAM,IAAI,qBAAqB,CAAC;QAC3D,GAAG;QACH,QAAQ;QACR,eAAe,EAAE,qBAAqB;QACtC,iBAAiB;KACjB,CAAC,CAAC,OAAO,EAAE,CAAC;IACb,MAAM,oBAAoB,GAAG,eAAe,CAAC,gBAAgB,EAAE;QAC9D,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;QAClG,CAAC,CAAC,mBAAmB,CAAC;IAEvB,MAAM,YAAY,CAAC;QAClB,aAAa,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE;QAC7E,eAAe;QACf,GAAG;QACH,QAAQ;QACR,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QACxC,oBAAoB,EAAE,eAAe,CAAC,gBAAgB,EAAE;KACxD,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,IAAc,EACd,cAAc,GAAiC,EAAE;IAEjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,SAAS,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,IAAI,CAAC;YACJ,MAAM,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,0BAA0B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;IACpH,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,4BAA4B,CAAC;QACpF,GAAG;QACH,QAAQ;QACR,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,wBAAwB,EAAE,OAAO,CAAC,OAAO,KAAK,QAAQ;QACtD,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;KACrD,CAAC,CAAC;IACH,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,0BAA0B,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,oBAAoB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC;IAE5E,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAErF,cAAc,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACJ,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,SAAS;gBACb,MAAM,cAAc,CAAC,iBAAiB,CAAC,MAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC;YAEb,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,MAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACb,CAAC;YAED,KAAK,MAAM,EAAE,CAAC;gBACb,MAAM,kBAAkB,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC;gBACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;gBAC9E,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;gBAEpF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;oBACjD,OAAO,IAAI,CAAC;gBACb,CAAC;gBAED,MAAM,aAAa,GAAG,CAAC,GAAwC,EAAE,EAAE;oBAClE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;oBAC5B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACF,CAAC,CAAC;gBAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;wBAChC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACF,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;wBAAE,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC7C,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBACnC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACF,CAAC;gBAED,OAAO,IAAI,CAAC;YACb,CAAC;YAED,KAAK,QAAQ,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACxD,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;oBACvC,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CAAC,+BAA+B,QAAQ,4CAA4C,CAAC,CAC9F,CAAC;gBACH,CAAC;gBACD,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC9E,MAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC1C,IAAI,YAAY,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC9C,CAAC;gBACF,CAAC;gBACD,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC1B,uFAAuF;wBACvF,+EAA+E;wBAC/E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,gDAAgD,CAAC,CAAC,CAAC;wBACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC,CAAC;wBACrE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC5B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACtB,CAAC;wBACD,4EAA4E;wBAC5E,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,kBAAkB,GAAG,2BAA2B,EAAE,CAAC;oBACzD,IAAI,kBAAkB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBACzC,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,WAAW,QAAQ,yFAAyF,CAC5G,CACD,CAAC;wBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;wBAC/B,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,IAAI,kBAAkB,EAAE,CAAC;wBACxB,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;4BACzB,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC1C,CAAC;wBACD,IAAI,CAAC;4BACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,QAAQ,kBAAkB,CAAC,CAAC,CAAC;4BACvE,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;wBACxE,CAAC;wBAAC,OAAO,KAAc,EAAE,CAAC;4BACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;4BACxF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;4BAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACrB,OAAO,IAAI,CAAC;wBACb,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,SAAS,OAAO,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC7F,OAAO,IAAI,CAAC;oBACb,CAAC;oBAED,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;oBAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;wBACzF,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,sEAAsE,CAAC,CAC5F,CAAC;wBACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,aAAa,YAAY,QAAQ,YAAY,CAAC,CAAC,CAAC;wBACpG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,MAAM,gBAAgB,GAAG;wBACxB,WAAW,EAAE,cAAc,CAAC,WAAW;wBACvC,WAAW,EAAE,cAAc,CAAC,WAAW;qBACvC,CAAC;oBACF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;oBACrG,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACxB,0BAA0B,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;wBACnE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;wBACzB,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC;wBACJ,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;4BAC7B,2BAA2B,EAAE,CAAC;wBAC/B,CAAC;wBACD,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;oBACxC,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;wBACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC9C,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;4BAC9B,+BAA+B,EAAE,CAAC;wBACnC,CAAC;wBACD,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;wBAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;wBACrB,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,SAAS,OAAO,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9F,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC;QACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC","sourcesContent":["import {\n\texistsSync,\n\tmkdirSync,\n\tmkdtempSync,\n\treaddirSync,\n\treadFileSync,\n\trenameSync,\n\trmSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { Markdown, type MarkdownTheme } from \"@earendil-works/pi-tui\";\nimport chalk from \"chalk\";\nimport lockfile from \"proper-lockfile\";\nimport { selectConfig } from \"./cli/config-selector.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport {\n\tAPP_NAME,\n\tCONFIG_DIR_NAME,\n\tdetectInstallMethod,\n\tgetAgentDir,\n\tgetPackageDir,\n\tgetSelfUpdateCommand,\n\tgetSelfUpdateUnavailableInstruction,\n\tPACKAGE_NAME,\n\treadAppEnv,\n\tSELF_UPDATE_ENABLED,\n\ttype SelfUpdateCommand,\n\ttype SelfUpdatePackageTarget,\n\tVERSION,\n} from \"./config.ts\";\nimport type { InlineExtension } from \"./core/extensions/types.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.ts\";\nimport { DefaultPackageManager } from \"./core/package-manager.ts\";\nimport { type AppMode, resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { DefaultResourceLoader, isBuiltinExtension } from \"./core/resource-loader.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { hasTrustRequiringProjectResources, ProjectTrustStore } from \"./core/trust-manager.ts\";\nimport { spawnProcess, spawnProcessSync, waitForChildProcess } from \"./utils/child-process.ts\";\nimport { canonicalizePath, getCwdRelativePath } from \"./utils/paths.ts\";\nimport { getPiUserAgent } from \"./utils/pi-user-agent.ts\";\nimport { formatVersionCheckError, getLatestPiRelease, isNewerPackageVersion } from \"./utils/version-check.ts\";\nimport {\n\tcleanupWindowsSelfUpdateQuarantine,\n\tquarantineWindowsNativeDependencies,\n} from \"./utils/windows-self-update.ts\";\n\nexport type PackageCommand = \"install\" | \"remove\" | \"update\" | \"list\";\n\ntype UpdateTarget = { type: \"all\" } | { type: \"self\" } | { type: \"extensions\"; source?: string } | { type: \"models\" };\n\nconst DEFAULT_INSTALLER_API_BASE = \"https://pi.dev/api/installer/releases\";\nconst MANAGED_INSTALL_MARKER = \"managed-install.json\";\nconst MANAGED_RELEASE_VERSION_RE = /^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/;\n\nfunction getActiveManagedInstallRoot(): string | undefined {\n\tconst configuredRoot = readAppEnv(\"MANAGED_INSTALL_ROOT\")?.trim();\n\tif (!configuredRoot) return undefined;\n\n\tconst managedRoot = resolve(configuredRoot);\n\tconst releasesDir = canonicalizePath(join(managedRoot, \"releases\"));\n\t// The launcher environment is inherited by child processes. Do not classify a\n\t// source checkout or another Pi installation launched from managed Pi as managed.\n\tif (getCwdRelativePath(canonicalizePath(getPackageDir()), releasesDir) === undefined) return undefined;\n\n\tconst markerPath = join(managedRoot, MANAGED_INSTALL_MARKER);\n\ttry {\n\t\tconst marker = JSON.parse(readFileSync(markerPath, \"utf8\")) as {\n\t\t\tkind?: unknown;\n\t\t\tlayout?: unknown;\n\t\t\tschemaVersion?: unknown;\n\t\t};\n\t\tif (marker.kind !== \"pi-managed-install\" || marker.schemaVersion !== 1 || marker.layout !== \"releases-v1\") {\n\t\t\tthrow new Error();\n\t\t}\n\t} catch {\n\t\tthrow new Error(`Managed install marker is missing or invalid: ${markerPath}`);\n\t}\n\n\treturn managedRoot;\n}\n\nasync function fetchInstallerArtifact(url: string, label: string): Promise<string> {\n\tconst response = await fetch(url, { headers: { \"User-Agent\": getPiUserAgent(VERSION) } });\n\tif (!response.ok) {\n\t\tthrow new Error(`Could not download managed installer ${label} from ${url}: HTTP ${response.status}`);\n\t}\n\treturn await response.text();\n}\n\nasync function runManagedNpmCi(stageDir: string): Promise<void> {\n\tconst args = [\n\t\t\"ci\",\n\t\t\"--ignore-scripts\",\n\t\t\"--min-release-age=0\",\n\t\t\"--omit=dev\",\n\t\t\"--include=optional\",\n\t\t\"--no-fund\",\n\t\t\"--no-audit\",\n\t\t\"--loglevel=error\",\n\t\t\"--progress=false\",\n\t];\n\tconst code = await waitForChildProcess(spawnProcess(\"npm\", args, { cwd: stageDir, stdio: \"inherit\" }));\n\tif (code !== 0) throw new Error(`npm ${args.join(\" \")} exited with code ${code ?? \"unknown\"}`);\n}\n\nfunction verifyManagedRelease(releaseDir: string, expectedVersion: string): void {\n\tconst binPath = join(\n\t\treleaseDir,\n\t\t\"node_modules\",\n\t\t\".bin\",\n\t\tprocess.platform === \"win32\" ? `${APP_NAME}.cmd` : APP_NAME,\n\t);\n\tconst result = spawnProcessSync(binPath, [\"--version\"], {\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t});\n\tif (result.error || result.status !== 0) {\n\t\tconst reason = result.error?.message || result.stderr.trim() || `exit code ${result.status ?? \"unknown\"}`;\n\t\tthrow new Error(`Could not verify managed e ${expectedVersion}: ${reason}`);\n\t}\n\tconst installedVersion = result.stdout.trim();\n\tif (installedVersion !== expectedVersion) {\n\t\tthrow new Error(`Managed e smoke test returned version ${installedVersion}; expected ${expectedVersion}.`);\n\t}\n}\n\nfunction activateManagedRelease(managedRoot: string, version: string): void {\n\tconst currentPath = join(managedRoot, \"current-version\");\n\tconst temporaryPath = join(managedRoot, `current-version.tmp.${process.pid}-${Date.now()}`);\n\ttry {\n\t\twriteFileSync(temporaryPath, `${version}\\n`);\n\t\trenameSync(temporaryPath, currentPath);\n\t} finally {\n\t\trmSync(temporaryPath, { force: true });\n\t}\n}\n\nfunction cleanupManagedStaging(managedRoot: string): void {\n\tconst stagingRoot = join(managedRoot, \"staging\");\n\ttry {\n\t\tfor (const entry of readdirSync(stagingRoot)) {\n\t\t\tif (entry.startsWith(\"update-\")) {\n\t\t\t\trmSync(join(stagingRoot, entry), { force: true, recursive: true });\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// The staging directory does not exist yet or is not writable.\n\t}\n}\n\nexport function cleanupManagedInstall(): void {\n\tlet managedRoot: string | undefined;\n\ttry {\n\t\tmanagedRoot = getActiveManagedInstallRoot();\n\t} catch {\n\t\treturn;\n\t}\n\tif (!managedRoot) return;\n\n\ttry {\n\t\tconst releaseLock = lockfile.lockSync(join(managedRoot, \"update\"), { realpath: false });\n\t\ttry {\n\t\t\tcleanupManagedStaging(managedRoot);\n\t\t} finally {\n\t\t\treleaseLock();\n\t\t}\n\t} catch {\n\t\t// A live update owns the staging directory, or cleanup is unavailable.\n\t}\n}\n\nasync function runManagedSelfUpdate(managedRoot: string, version: string): Promise<void> {\n\tif (!MANAGED_RELEASE_VERSION_RE.test(version)) {\n\t\tthrow new Error(`Invalid managed release version: ${version}`);\n\t}\n\n\tlet releaseLock: () => Promise<void>;\n\ttry {\n\t\treleaseLock = await lockfile.lock(join(managedRoot, \"update\"), { realpath: false });\n\t} catch (error: unknown) {\n\t\tif (error instanceof Error && \"code\" in error && error.code === \"ELOCKED\") {\n\t\t\tthrow new Error(\"Another managed e update is already running.\");\n\t\t}\n\t\tthrow error;\n\t}\n\n\tlet stageDir: string | undefined;\n\ttry {\n\t\tcleanupManagedStaging(managedRoot);\n\t\tconst installerApiBase = (readAppEnv(\"INSTALLER_API_BASE\")?.trim() || DEFAULT_INSTALLER_API_BASE).replace(\n\t\t\t/\\/+$/,\n\t\t\t\"\",\n\t\t);\n\t\tconst releaseUrl = `${installerApiBase}/${encodeURIComponent(version)}`;\n\t\tconst stagingRoot = join(managedRoot, \"staging\");\n\t\tconst releasesRoot = join(managedRoot, \"releases\");\n\t\tmkdirSync(releasesRoot, { recursive: true });\n\t\tconst releaseDir = join(releasesRoot, version);\n\t\tif (existsSync(releaseDir)) {\n\t\t\tverifyManagedRelease(releaseDir, version);\n\t\t\tactivateManagedRelease(managedRoot, version);\n\t\t\treturn;\n\t\t}\n\n\t\tmkdirSync(stagingRoot, { recursive: true });\n\t\tstageDir = mkdtempSync(join(stagingRoot, \"update-\"));\n\t\tconst [packageJsonContent, packageLockContent] = await Promise.all([\n\t\t\tfetchInstallerArtifact(`${releaseUrl}/package.json`, \"package.json\"),\n\t\t\tfetchInstallerArtifact(`${releaseUrl}/package-lock.json`, \"package-lock.json\"),\n\t\t]);\n\t\twriteFileSync(join(stageDir, \"package.json\"), packageJsonContent);\n\t\twriteFileSync(join(stageDir, \"package-lock.json\"), packageLockContent);\n\n\t\tawait runManagedNpmCi(stageDir);\n\t\tverifyManagedRelease(stageDir, version);\n\t\trenameSync(stageDir, releaseDir);\n\t\tactivateManagedRelease(managedRoot, version);\n\t} finally {\n\t\tif (stageDir) rmSync(stageDir, { force: true, recursive: true });\n\t\tawait releaseLock();\n\t}\n}\n\nconst SELF_UPDATE_NOTE_MARKDOWN_THEME: MarkdownTheme = {\n\theading: (text) => chalk.bold(chalk.yellow(text)),\n\tlink: (text) => chalk.cyan(text),\n\tlinkUrl: (text) => chalk.dim(text),\n\tcode: (text) => chalk.yellow(text),\n\tcodeBlock: (text) => chalk.dim(text),\n\tcodeBlockBorder: (text) => chalk.dim(text),\n\tquote: (text) => chalk.dim(text),\n\tquoteBorder: (text) => chalk.dim(text),\n\thr: (text) => chalk.dim(text),\n\tlistBullet: (text) => chalk.yellow(text),\n\tbold: (text) => chalk.bold(text),\n\titalic: (text) => chalk.italic(text),\n\tstrikethrough: (text) => chalk.strikethrough(text),\n\tunderline: (text) => chalk.underline(text),\n};\n\ninterface PackageCommandOptions {\n\tcommand: PackageCommand;\n\tsource?: string;\n\tupdateTarget?: UpdateTarget;\n\tshowExtensionsSkippedNote: boolean;\n\tlocal: boolean;\n\tforce: boolean;\n\tprojectTrustOverride?: boolean;\n\thelp: boolean;\n\tinvalidOption?: string;\n\tinvalidArgument?: string;\n\tmissingOptionValue?: string;\n\tconflictingOptions?: string;\n}\n\nfunction reportSettingsErrors(settingsManager: SettingsManager, context: string): void {\n\tconst errors = settingsManager.drainErrors();\n\tfor (const { scope, error } of errors) {\n\t\tconsole.error(chalk.yellow(`Warning (${context}, ${scope} settings): ${error.message}`));\n\t\tif (error.stack) {\n\t\t\tconsole.error(chalk.dim(error.stack));\n\t\t}\n\t}\n}\n\nfunction getPackageCommandUsage(command: PackageCommand): string {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\treturn `${APP_NAME} install <source> [-l] [--approve|--no-approve]`;\n\t\tcase \"remove\":\n\t\t\treturn `${APP_NAME} remove <source> [-l] [--approve|--no-approve]`;\n\t\tcase \"update\":\n\t\t\treturn `${APP_NAME} update [source|self|pi] [--self|--extensions|--models|--all] [--extension <source>] [--approve|--no-approve] [--force]`;\n\t\tcase \"list\":\n\t\t\treturn `${APP_NAME} list [--approve|--no-approve]`;\n\t}\n}\n\nconst CONFIG_COMMAND_USAGE = `${APP_NAME} config [-l] [--approve|--no-approve]`;\n\nfunction printConfigCommandHelp(): void {\n\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${CONFIG_COMMAND_USAGE}\n\nOpen the resource configuration TUI to enable or disable package resources.\nWithout -l, starts in global settings (~/${CONFIG_DIR_NAME}/agent/settings.json).\nPress Tab in the TUI to switch between global and project-local modes.\n\nOptions:\n -l, --local Edit project overrides (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command with -l\n -na, --no-approve Ignore project-local files for this command with -l\n`);\n}\n\nfunction printPackageCommandHelp(command: PackageCommand): void {\n\tswitch (command) {\n\t\tcase \"install\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"install\")}\n\nInstall a package and add it to settings.\n\nOptions:\n -l, --local Install project-locally (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n\nExamples:\n ${APP_NAME} install npm:@foo/bar\n ${APP_NAME} install git:github.com/user/repo\n ${APP_NAME} install git:git@github.com:user/repo\n ${APP_NAME} install https://github.com/user/repo\n ${APP_NAME} install ssh://git@github.com/user/repo\n ${APP_NAME} install ./local/path\n`);\n\t\t\treturn;\n\n\t\tcase \"remove\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"remove\")}\n\nRemove a package and its source from settings.\nAlias: ${APP_NAME} uninstall <source> [-l]\n\nOptions:\n -l, --local Remove from project settings (${CONFIG_DIR_NAME}/settings.json)\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n\nExamples:\n ${APP_NAME} remove npm:@foo/bar\n ${APP_NAME} uninstall npm:@foo/bar\n`);\n\t\t\treturn;\n\n\t\tcase \"update\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"update\")}\n\nUpdate e, installed packages, or model catalogs.\n\nOptions:\n --self Update e only (default when no target is given)\n --extensions Update installed packages only\n --models Refresh model catalogs only\n --all Update e and installed packages\n --extension <source> Update one package only\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n --force Reinstall pi even if the current version is latest\n\nShort forms:\n ${APP_NAME} update Update e only\n ${APP_NAME} update --all Update e and all extensions\n ${APP_NAME} update --models Refresh model catalogs only\n ${APP_NAME} update <source> Update one package\n ${APP_NAME} update pi Update e only (self works as alias to pi)\n`);\n\t\t\treturn;\n\n\t\tcase \"list\":\n\t\t\tconsole.log(`${chalk.bold(\"Usage:\")}\n ${getPackageCommandUsage(\"list\")}\n\nList installed packages from user and project settings.\n\nOptions:\n -a, --approve Trust project-local files for this command\n -na, --no-approve Ignore project-local files for this command\n`);\n\t\t\treturn;\n\t}\n}\n\nfunction parsePackageCommand(args: string[]): PackageCommandOptions | undefined {\n\tconst [rawCommand, ...rest] = args;\n\tlet command: PackageCommand | undefined;\n\tif (rawCommand === \"uninstall\") {\n\t\tcommand = \"remove\";\n\t} else if (rawCommand === \"install\" || rawCommand === \"remove\" || rawCommand === \"update\" || rawCommand === \"list\") {\n\t\tcommand = rawCommand;\n\t}\n\tif (!command) {\n\t\treturn undefined;\n\t}\n\n\tlet local = false;\n\tlet force = false;\n\tlet projectTrustOverride: boolean | undefined;\n\tlet help = false;\n\tlet invalidOption: string | undefined;\n\tlet invalidArgument: string | undefined;\n\tlet missingOptionValue: string | undefined;\n\tlet conflictingOptions: string | undefined;\n\tlet source: string | undefined;\n\tlet selfFlag = false;\n\tlet extensionsFlag = false;\n\tlet modelsFlag = false;\n\tlet allFlag = false;\n\tlet extensionFlagSource: string | undefined;\n\n\tfor (let index = 0; index < rest.length; index++) {\n\t\tconst arg = rest[index];\n\t\tif (arg === \"-h\" || arg === \"--help\") {\n\t\t\thelp = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"-l\" || arg === \"--local\") {\n\t\t\tif (command === \"install\" || command === \"remove\") {\n\t\t\t\tlocal = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--self\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tselfFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--extensions\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\textensionsFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--models\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tmodelsFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--all\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tallFlag = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--approve\" || arg === \"-a\") {\n\t\t\tprojectTrustOverride = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--no-approve\" || arg === \"-na\") {\n\t\t\tprojectTrustOverride = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--force\") {\n\t\t\tif (command === \"update\") {\n\t\t\t\tforce = true;\n\t\t\t} else {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg === \"--extension\") {\n\t\t\tif (command !== \"update\") {\n\t\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst value = rest[index + 1];\n\t\t\tif (!value || value.startsWith(\"-\")) {\n\t\t\t\tmissingOptionValue = missingOptionValue ?? arg;\n\t\t\t} else if (extensionFlagSource) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--extension can only be provided once\";\n\t\t\t\tindex++;\n\t\t\t} else {\n\t\t\t\textensionFlagSource = value;\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (arg.startsWith(\"-\")) {\n\t\t\tinvalidOption = invalidOption ?? arg;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!source) {\n\t\t\tsource = arg;\n\t\t} else {\n\t\t\tinvalidArgument = invalidArgument ?? arg;\n\t\t}\n\t}\n\n\tlet updateTarget: UpdateTarget | undefined;\n\tlet showExtensionsSkippedNote = false;\n\tif (command === \"update\") {\n\t\tif (allFlag && (selfFlag || extensionsFlag || modelsFlag || extensionFlagSource)) {\n\t\t\tconflictingOptions =\n\t\t\t\tconflictingOptions ?? \"--all cannot be combined with --self, --extensions, --models, or --extension\";\n\t\t}\n\t\tif (allFlag && source) {\n\t\t\tconflictingOptions = conflictingOptions ?? \"--all cannot be combined with a positional source\";\n\t\t}\n\n\t\tif (modelsFlag) {\n\t\t\tif (selfFlag || extensionsFlag || allFlag || extensionFlagSource) {\n\t\t\t\tconflictingOptions =\n\t\t\t\t\tconflictingOptions ?? \"--models cannot be combined with --self, --extensions, --all, or --extension\";\n\t\t\t}\n\t\t\tif (source) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--models cannot be combined with a positional source\";\n\t\t\t}\n\t\t\tupdateTarget = { type: \"models\" };\n\t\t} else if (extensionFlagSource) {\n\t\t\tif (selfFlag || extensionsFlag || allFlag) {\n\t\t\t\tconflictingOptions =\n\t\t\t\t\tconflictingOptions ?? \"--extension cannot be combined with --self, --extensions, or --all\";\n\t\t\t}\n\t\t\tif (source) {\n\t\t\t\tconflictingOptions = conflictingOptions ?? \"--extension cannot be combined with a positional source\";\n\t\t\t}\n\t\t\tupdateTarget = { type: \"extensions\", source: extensionFlagSource };\n\t\t} else if (source) {\n\t\t\tconst sourceIsSelf = source === \"self\" || source === \"pi\";\n\t\t\tif (sourceIsSelf) {\n\t\t\t\tupdateTarget = extensionsFlag ? { type: \"all\" } : { type: \"self\" };\n\t\t\t} else {\n\t\t\t\tif (extensionsFlag || selfFlag || allFlag) {\n\t\t\t\t\tconflictingOptions =\n\t\t\t\t\t\tconflictingOptions ??\n\t\t\t\t\t\t\"positional update targets cannot be combined with --self, --extensions, or --all\";\n\t\t\t\t}\n\t\t\t\tupdateTarget = { type: \"extensions\", source };\n\t\t\t}\n\t\t} else if (allFlag) {\n\t\t\tupdateTarget = { type: \"all\" };\n\t\t} else if (selfFlag && extensionsFlag) {\n\t\t\tupdateTarget = { type: \"all\" };\n\t\t} else if (selfFlag) {\n\t\t\tupdateTarget = { type: \"self\" };\n\t\t} else if (extensionsFlag) {\n\t\t\tupdateTarget = { type: \"extensions\" };\n\t\t} else {\n\t\t\tupdateTarget = { type: \"self\" };\n\t\t\tshowExtensionsSkippedNote = true;\n\t\t}\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tsource,\n\t\tupdateTarget,\n\t\tshowExtensionsSkippedNote,\n\t\tlocal,\n\t\tforce,\n\t\tprojectTrustOverride,\n\t\thelp,\n\t\tinvalidOption,\n\t\tinvalidArgument,\n\t\tmissingOptionValue,\n\t\tconflictingOptions,\n\t};\n}\n\nfunction updateTargetIncludesSelf(target: UpdateTarget): boolean {\n\treturn target.type === \"all\" || target.type === \"self\";\n}\n\nfunction updateTargetIncludesExtensions(target: UpdateTarget): boolean {\n\treturn target.type === \"all\" || target.type === \"extensions\";\n}\n\nasync function refreshModelCatalogs(agentDir: string): Promise<void> {\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), 15_000);\n\ttry {\n\t\tconst modelRuntime = await ModelRuntime.create({\n\t\t\tauthPath: join(agentDir, \"auth.json\"),\n\t\t\tmodelsPath: join(agentDir, \"models.json\"),\n\t\t\tallowModelNetwork: false,\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tconst result = await modelRuntime.refresh({\n\t\t\tallowNetwork: true,\n\t\t\tforce: true,\n\t\t\tsignal: controller.signal,\n\t\t});\n\t\tif (result.aborted) {\n\t\t\tthrow new Error(\"Model catalog refresh timed out.\");\n\t\t}\n\t\tif (result.errors.size > 0) {\n\t\t\tconst details = Array.from(result.errors, ([provider, error]) => `${provider}: ${error.message}`).join(\"; \");\n\t\t\tthrow new Error(`Could not refresh model catalogs: ${details}`);\n\t\t}\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n\tconsole.log(chalk.green(\"Model catalogs refreshed\"));\n}\n\nfunction printSelfUpdateUnavailable(\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = PACKAGE_NAME,\n): void {\n\tconsole.error(`error: ${APP_NAME} cannot self-update this installation.`);\n\tconsole.error(getSelfUpdateUnavailableInstruction(PACKAGE_NAME, npmCommand, updatePackageTarget));\n\n\tconst entrypoint = process.argv[1];\n\tif (entrypoint) {\n\t\tconsole.error(\"\");\n\t\tconsole.error(`Location of ${APP_NAME} executable: ${entrypoint}`);\n\t}\n}\n\nfunction printSelfUpdateFallback(command: SelfUpdateCommand): void {\n\tconsole.error(chalk.dim(`If this keeps failing, run this command yourself: ${command.display}`));\n}\n\nfunction printPnpmSelfUpdateMetadataHint(): void {\n\tconsole.error(chalk.yellow(\"If pnpm reports missing package versions, its cached registry metadata may be stale.\"));\n\tconsole.error(chalk.yellow(`Run \\`pnpm store prune\\` and retry \\`${APP_NAME} update --self\\`.`));\n}\n\nfunction printSelfUpdateNote(note: string): void {\n\tconst trimmedNote = note.trim();\n\tif (!trimmedNote) {\n\t\treturn;\n\t}\n\n\tconsole.log();\n\tconsole.log(chalk.bold(chalk.yellow(\"Update note\")));\n\ttry {\n\t\tconst width = Math.max(20, process.stdout.columns ?? 80);\n\t\tconst renderedLines = new Markdown(trimmedNote, 0, 0, SELF_UPDATE_NOTE_MARKDOWN_THEME)\n\t\t\t.render(width)\n\t\t\t.map((line) => line.trimEnd());\n\t\tconsole.log(renderedLines.join(\"\\n\"));\n\t} catch {\n\t\tconsole.log(trimmedNote);\n\t}\n\tconsole.log();\n}\n\ninterface SelfUpdatePlan {\n\tpackageName: string;\n\tinstallSpec: string;\n\tversion: string;\n\tshouldRun: boolean;\n\tnote?: string;\n}\n\nasync function getSelfUpdatePlan(force: boolean): Promise<SelfUpdatePlan> {\n\tlet latestRelease: Awaited<ReturnType<typeof getLatestPiRelease>>;\n\ttry {\n\t\tlatestRelease = await getLatestPiRelease(VERSION, { retry: true });\n\t} catch (error: unknown) {\n\t\tthrow new Error(`Could not determine latest ${APP_NAME} version: ${formatVersionCheckError(error)}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n\tif (!latestRelease) {\n\t\tthrow new Error(`Could not determine latest ${APP_NAME} version.`);\n\t}\n\n\tconst packageName = latestRelease.packageName ?? PACKAGE_NAME;\n\tconst installSpec = `${packageName}@${latestRelease.version}`;\n\tif (force || packageName !== PACKAGE_NAME || isNewerPackageVersion(latestRelease.version, VERSION)) {\n\t\treturn {\n\t\t\tpackageName,\n\t\t\tinstallSpec,\n\t\t\tversion: latestRelease.version,\n\t\t\t...(latestRelease.note ? { note: latestRelease.note } : {}),\n\t\t\tshouldRun: true,\n\t\t};\n\t}\n\n\tconsole.log(chalk.green(`${APP_NAME} is already up to date (v${VERSION})`));\n\treturn { packageName, installSpec, version: latestRelease.version, shouldRun: false };\n}\n\nasync function runSelfUpdate(command: SelfUpdateCommand): Promise<void> {\n\tconsole.log(chalk.dim(`Updating ${APP_NAME} with ${command.display}...`));\n\tfor (const step of command.steps ?? [command]) {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tconst child = spawnProcess(step.command, step.args, {\n\t\t\t\tstdio: \"inherit\",\n\t\t\t});\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t\tchild.on(\"close\", (code, signal) => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolve();\n\t\t\t\t} else if (signal) {\n\t\t\t\t\treject(new Error(`${step.display} terminated by signal ${signal}`));\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error(`${step.display} exited with code ${code ?? \"unknown\"}`));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\nfunction prepareWindowsNpmSelfUpdate(): void {\n\tif (process.platform !== \"win32\") {\n\t\treturn;\n\t}\n\n\tconst packageDir = getPackageDir();\n\tcleanupWindowsSelfUpdateQuarantine(packageDir);\n\tquarantineWindowsNativeDependencies(packageDir);\n}\n\nexport interface PackageCommandRuntimeOptions {\n\textensionFactories?: InlineExtension[];\n}\n\ninterface CommandSettingsResult {\n\tsettingsManager: SettingsManager;\n\tprojectTrustWarnings: string[];\n}\n\nfunction getCommandAppMode(): AppMode {\n\treturn process.stdin.isTTY && process.stdout.isTTY ? \"interactive\" : \"print\";\n}\n\nfunction reportProjectTrustWarnings(warnings: readonly string[]): void {\n\tfor (const warning of warnings) {\n\t\tconsole.error(chalk.yellow(`Warning: ${warning}`));\n\t}\n}\n\nasync function createCommandSettingsManager(options: {\n\tcwd: string;\n\tagentDir: string;\n\tprojectTrustOverride?: boolean;\n\tuseSavedProjectTrustOnly?: boolean;\n\textensionFactories?: InlineExtension[];\n}): Promise<CommandSettingsResult> {\n\tconst settingsManager = SettingsManager.create(options.cwd, options.agentDir, { projectTrusted: false });\n\tconst projectTrustWarnings: string[] = [];\n\tconst trustStore = new ProjectTrustStore(options.agentDir);\n\tif (options.useSavedProjectTrustOnly) {\n\t\tconst savedProjectTrusted = trustStore.get(options.cwd) === true;\n\t\tsettingsManager.setProjectTrusted(options.projectTrustOverride ?? savedProjectTrusted);\n\t\treturn { settingsManager, projectTrustWarnings };\n\t}\n\n\tconst appMode = getCommandAppMode();\n\tconst extensionsResult =\n\t\toptions.projectTrustOverride === undefined && hasTrustRequiringProjectResources(options.cwd)\n\t\t\t? await new DefaultResourceLoader({\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\tagentDir: options.agentDir,\n\t\t\t\t\tsettingsManager,\n\t\t\t\t\textensionFactories: options.extensionFactories,\n\t\t\t\t}).loadProjectTrustExtensions()\n\t\t\t: undefined;\n\tfor (const error of extensionsResult?.errors ?? []) {\n\t\tprojectTrustWarnings.push(`Failed to load extension \"${error.path}\": ${error.error}`);\n\t}\n\n\tconst projectTrusted = await resolveProjectTrusted({\n\t\tcwd: options.cwd,\n\t\ttrustStore,\n\t\ttrustOverride: options.projectTrustOverride,\n\t\tdefaultProjectTrust: settingsManager.getDefaultProjectTrust(),\n\t\textensionsResult,\n\t\tprojectTrustContext: createProjectTrustContext({\n\t\t\tcwd: options.cwd,\n\t\t\tmode: appMode,\n\t\t\tsettingsManager,\n\t\t\thasUI: appMode === \"interactive\",\n\t\t}),\n\t\tonExtensionError: (message) => projectTrustWarnings.push(message),\n\t});\n\tsettingsManager.setProjectTrusted(projectTrusted);\n\treturn { settingsManager, projectTrustWarnings };\n}\n\nexport async function handleConfigCommand(\n\targs: string[],\n\truntimeOptions: PackageCommandRuntimeOptions = {},\n): Promise<boolean> {\n\tconst [command, ...rest] = args;\n\tif (command !== \"config\") {\n\t\treturn false;\n\t}\n\n\tif (rest.includes(\"-h\") || rest.includes(\"--help\")) {\n\t\tprintConfigCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet local = false;\n\tlet projectTrustOverride: boolean | undefined;\n\tfor (const arg of rest) {\n\t\tif (arg === \"-l\" || arg === \"--local\") {\n\t\t\tlocal = true;\n\t\t} else if (arg === \"-a\" || arg === \"--approve\") {\n\t\t\tprojectTrustOverride = true;\n\t\t} else if (arg === \"-na\" || arg === \"--no-approve\") {\n\t\t\tprojectTrustOverride = false;\n\t\t} else if (arg.startsWith(\"-\")) {\n\t\t\tconsole.error(chalk.red(`Unknown option ${arg} for \"config\".`));\n\t\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} --help\" or \"${CONFIG_COMMAND_USAGE}\".`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.error(chalk.red(`Unexpected argument ${arg}.`));\n\t\t\tconsole.error(chalk.dim(`Usage: ${CONFIG_COMMAND_USAGE}`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tprojectTrustOverride,\n\t\textensionFactories: runtimeOptions.extensionFactories,\n\t});\n\treportProjectTrustWarnings(projectTrustWarnings);\n\tif (local && !settingsManager.isProjectTrusted()) {\n\t\tconsole.error(chalk.red(\"Project is not trusted. Use --approve to modify local resource config.\"));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\treportSettingsErrors(settingsManager, \"config command\");\n\tconst builtinExtensions = (runtimeOptions.extensionFactories ?? [])\n\t\t.filter(isBuiltinExtension)\n\t\t.map((input) => input.name);\n\tconst globalSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tconst globalResolvedPaths = await new DefaultPackageManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tsettingsManager: globalSettingsManager,\n\t\tbuiltinExtensions,\n\t}).resolve();\n\tconst projectResolvedPaths = settingsManager.isProjectTrusted()\n\t\t? await new DefaultPackageManager({ cwd, agentDir, settingsManager, builtinExtensions }).resolve()\n\t\t: globalResolvedPaths;\n\n\tawait selectConfig({\n\t\tresolvedPaths: { global: globalResolvedPaths, project: projectResolvedPaths },\n\t\tsettingsManager,\n\t\tcwd,\n\t\tagentDir,\n\t\twriteScope: local ? \"project\" : \"global\",\n\t\tprojectModeAvailable: settingsManager.isProjectTrusted(),\n\t});\n\n\tprocess.exit(0);\n}\n\nexport async function handlePackageCommand(\n\targs: string[],\n\truntimeOptions: PackageCommandRuntimeOptions = {},\n): Promise<boolean> {\n\tconst options = parsePackageCommand(args);\n\tif (!options) {\n\t\treturn false;\n\t}\n\n\tif (options.help) {\n\t\tprintPackageCommandHelp(options.command);\n\t\treturn true;\n\t}\n\n\tif (options.invalidOption) {\n\t\tconsole.error(chalk.red(`Unknown option ${options.invalidOption} for \"${options.command}\".`));\n\t\tconsole.error(chalk.dim(`Use \"${APP_NAME} --help\" or \"${getPackageCommandUsage(options.command)}\".`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.missingOptionValue) {\n\t\tconsole.error(chalk.red(`Missing value for ${options.missingOptionValue}.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.invalidArgument) {\n\t\tconsole.error(chalk.red(`Unexpected argument ${options.invalidArgument}.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.conflictingOptions) {\n\t\tconsole.error(chalk.red(options.conflictingOptions));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst source = options.source;\n\tif ((options.command === \"install\" || options.command === \"remove\") && !source) {\n\t\tconsole.error(chalk.red(`Missing ${options.command} source.`));\n\t\tconsole.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (options.command === \"update\" && options.updateTarget?.type === \"models\") {\n\t\ttry {\n\t\t\tawait refreshModelCatalogs(getAgentDir());\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : \"Unknown model catalog refresh error\";\n\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\tprocess.exitCode = 1;\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst writesProjectPackageConfig = (options.command === \"install\" || options.command === \"remove\") && options.local;\n\tconst { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({\n\t\tcwd,\n\t\tagentDir,\n\t\tprojectTrustOverride: options.projectTrustOverride,\n\t\tuseSavedProjectTrustOnly: options.command === \"update\",\n\t\textensionFactories: runtimeOptions.extensionFactories,\n\t});\n\treportProjectTrustWarnings(projectTrustWarnings);\n\tif (!settingsManager.isProjectTrusted() && writesProjectPackageConfig) {\n\t\tconsole.error(chalk.red(\"Project is not trusted. Use --approve to modify local package config.\"));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\treportSettingsErrors(settingsManager, \"package command\");\n\tconst selfUpdateNpmCommand = settingsManager.getGlobalSettings().npmCommand;\n\n\tconst packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });\n\n\tpackageManager.setProgressCallback((event) => {\n\t\tif (event.type === \"start\") {\n\t\t\tprocess.stdout.write(chalk.dim(`${event.message}\\n`));\n\t\t}\n\t});\n\n\ttry {\n\t\tswitch (options.command) {\n\t\t\tcase \"install\":\n\t\t\t\tawait packageManager.installAndPersist(source!, { local: options.local });\n\t\t\t\tconsole.log(chalk.green(`Installed ${source}`));\n\t\t\t\treturn true;\n\n\t\t\tcase \"remove\": {\n\t\t\t\tconst removed = await packageManager.removeAndPersist(source!, { local: options.local });\n\t\t\t\tif (!removed) {\n\t\t\t\t\tconsole.error(chalk.red(`No matching package found for ${source}`));\n\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconsole.log(chalk.green(`Removed ${source}`));\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"list\": {\n\t\t\t\tconst configuredPackages = packageManager.listConfiguredPackages();\n\t\t\t\tconst userPackages = configuredPackages.filter((pkg) => pkg.scope === \"user\");\n\t\t\t\tconst projectPackages = configuredPackages.filter((pkg) => pkg.scope === \"project\");\n\n\t\t\t\tif (configuredPackages.length === 0) {\n\t\t\t\t\tconsole.log(chalk.dim(\"No packages installed.\"));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst formatPackage = (pkg: (typeof configuredPackages)[number]) => {\n\t\t\t\t\tconst display = pkg.filtered ? `${pkg.source} (filtered)` : pkg.source;\n\t\t\t\t\tconsole.log(` ${display}`);\n\t\t\t\t\tif (pkg.installedPath) {\n\t\t\t\t\t\tconsole.log(chalk.dim(` ${pkg.installedPath}`));\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (userPackages.length > 0) {\n\t\t\t\t\tconsole.log(chalk.bold(\"User packages:\"));\n\t\t\t\t\tfor (const pkg of userPackages) {\n\t\t\t\t\t\tformatPackage(pkg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (projectPackages.length > 0) {\n\t\t\t\t\tif (userPackages.length > 0) console.log();\n\t\t\t\t\tconsole.log(chalk.bold(\"Project packages:\"));\n\t\t\t\t\tfor (const pkg of projectPackages) {\n\t\t\t\t\t\tformatPackage(pkg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcase \"update\": {\n\t\t\t\tconst target = options.updateTarget ?? { type: \"self\" };\n\t\t\t\tif (options.showExtensionsSkippedNote) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\tchalk.dim(`Extensions are skipped. Run ${APP_NAME} update --extensions to update extensions.`),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (updateTargetIncludesExtensions(target)) {\n\t\t\t\t\tconst updateSource = target.type === \"extensions\" ? target.source : undefined;\n\t\t\t\t\tawait packageManager.update(updateSource);\n\t\t\t\t\tif (updateSource) {\n\t\t\t\t\t\tconsole.log(chalk.green(`Updated ${updateSource}`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(chalk.green(\"Updated packages\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (updateTargetIncludesSelf(target)) {\n\t\t\t\t\tif (!SELF_UPDATE_ENABLED) {\n\t\t\t\t\t\t// e fork: self-update resolves through upstream's pi.dev release channel, which serves\n\t\t\t\t\t\t// the upstream package; running it could replace e with pi. Update e manually.\n\t\t\t\t\t\tconsole.error(chalk.yellow(`${APP_NAME} self-update is disabled in this distribution.`));\n\t\t\t\t\t\tconsole.error(chalk.dim(`To update, run: npm i -g ${PACKAGE_NAME}`));\n\t\t\t\t\t\tif (target.type === \"self\") {\n\t\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// For --all runs, the packages portion already updated; skip the self part.\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst managedInstallRoot = getActiveManagedInstallRoot();\n\t\t\t\t\tif (managedInstallRoot && options.force) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\tchalk.red(\n\t\t\t\t\t\t\t\t`Managed ${APP_NAME} installations do not support --force; rerun the installer to repair this installation.`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst selfUpdatePlan = await getSelfUpdatePlan(options.force);\n\t\t\t\t\tif (!selfUpdatePlan.shouldRun) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (managedInstallRoot) {\n\t\t\t\t\t\tif (selfUpdatePlan.note) {\n\t\t\t\t\t\t\tprintSelfUpdateNote(selfUpdatePlan.note);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconsole.log(chalk.dim(`Updating managed ${APP_NAME} installation...`));\n\t\t\t\t\t\t\tawait runManagedSelfUpdate(managedInstallRoot, selfUpdatePlan.version);\n\t\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\t\tconst message = error instanceof Error ? error.message : \"Unknown managed update error\";\n\t\t\t\t\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.log(chalk.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`));\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst installMethod = detectInstallMethod();\n\t\t\t\t\tif (process.platform === \"win32\" && installMethod !== \"npm\" && installMethod !== \"pnpm\") {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\tchalk.red(`${APP_NAME} self-update on Windows is only supported for npm and pnpm installs.`),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconsole.error(chalk.dim(`Detected install method: ${installMethod}. Update ${APP_NAME} manually.`));\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconst selfUpdateTarget = {\n\t\t\t\t\t\tpackageName: selfUpdatePlan.packageName,\n\t\t\t\t\t\tinstallSpec: selfUpdatePlan.installSpec,\n\t\t\t\t\t};\n\t\t\t\t\tconst selfUpdateCommand = getSelfUpdateCommand(PACKAGE_NAME, selfUpdateNpmCommand, selfUpdateTarget);\n\t\t\t\t\tif (!selfUpdateCommand) {\n\t\t\t\t\t\tprintSelfUpdateUnavailable(selfUpdateNpmCommand, selfUpdateTarget);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (selfUpdatePlan.note) {\n\t\t\t\t\t\tprintSelfUpdateNote(selfUpdatePlan.note);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (installMethod === \"npm\") {\n\t\t\t\t\t\t\tprepareWindowsNpmSelfUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait runSelfUpdate(selfUpdateCommand);\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : \"Unknown package command error\";\n\t\t\t\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\t\t\t\tif (installMethod === \"pnpm\") {\n\t\t\t\t\t\t\tprintPnpmSelfUpdateMetadataHint();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprintSelfUpdateFallback(selfUpdateCommand);\n\t\t\t\t\t\tprocess.exitCode = 1;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(chalk.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`));\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : \"Unknown package command error\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n}\n"]}
package/docs/cli.md CHANGED
@@ -187,7 +187,7 @@ See [Configuration](configuration.md) for saved configuration, [Security](securi
187
187
  - `--append-system-prompt <text|path>`<br>
188
188
  Appends text or an existing file to the system prompt and is repeatable.
189
189
  - `--tui-mode <mode>`<br>
190
- Uses `regular` or `fullscreen` terminal mode.
190
+ Uses `fullscreen` (default) or `regular` terminal mode.
191
191
  - `--verbose`<br>
192
192
  Shows verbose interactive startup information, overriding `quietStartup`.
193
193
  - `-a`, `--approve`<br>
package/docs/settings.md CHANGED
@@ -89,7 +89,7 @@ See [Compaction Reference](compaction.md) for trigger, summarization, and valida
89
89
  |---|---|---|---|
90
90
  | `theme` | string | `"system"` | Built-in or custom theme name. `system` derives colors from the terminal theme. |
91
91
  | `quietStartup` | boolean | `false` | Hide the startup header. |
92
- | `tuiMode` | `"regular" \| "fullscreen"` | `"regular"` | Interactive terminal UI mode. |
92
+ | `tuiMode` | `"regular" \| "fullscreen"` | `"fullscreen"` | Interactive terminal UI mode. |
93
93
  | `fullscreenExitOutput` | `"transcript" \| "resume-hint"` | `"transcript"` | Output printed when fullscreen mode exits. |
94
94
  | `fullscreenScrollbar` | `"auto" \| "always" \| "hidden"` | `"auto"` | Fullscreen transcript scrollbar behavior. |
95
95
  | `fullscreenCopyOnSelect` | boolean | `true` | Copy selected text automatically in fullscreen mode. |
@@ -162,6 +162,6 @@ The built-in extension is named `builtin:llama.cpp` in `extensions`. It loads by
162
162
  | Setting | Type | Default | Description |
163
163
  |---|---|---|---|
164
164
  | `collapseChangelog` | boolean | `false` | Show a condensed changelog after an update. |
165
- | `enableInstallTelemetry` | boolean | `true` | Enable anonymous install/update reporting and selected provider attribution headers. Does not control update checks. |
165
+ | `enableInstallTelemetry` | boolean | `false` | Opt in to selected provider attribution headers (upstream pi branding). Does not control update checks. e sends no telemetry by default. |
166
166
  | `enableAnalytics` | boolean | `false` | Opt in to analytics data sharing. Currently used only by the experimental first-run setup. |
167
167
  | `warnings.anthropicExtraUsage` | boolean | `true` | Warn when Anthropic subscription authentication may use paid extra usage. |
package/docs/usage.md CHANGED
@@ -83,7 +83,7 @@ Use `/share` to upload the session and get a viewer link. With Radius authentica
83
83
 
84
84
  ## Adjust the terminal
85
85
 
86
- Regular mode uses the terminal's normal scrollback. Fullscreen mode keeps the editor and status area fixed while the transcript scrolls within the terminal window. Choose a mode through `/settings` or `--tui-mode`.
86
+ Fullscreen mode, the default, keeps the editor and status area fixed while the transcript scrolls within the terminal window. Regular mode uses the terminal's normal scrollback. Choose a mode through `/settings` or `--tui-mode`.
87
87
 
88
88
  Terminal support for mouse input, keyboard shortcuts, and inline images varies. See [Terminal Setup](terminal-setup.md) for platform-specific configuration and [Keybindings](keybindings.md) for every configurable shortcut. Run `/hotkeys` to inspect the shortcuts active in your current session.
89
89
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subimpact/e",
3
- "version": "0.99.5",
3
+ "version": "0.99.7",
4
4
  "description": "Minimal terminal coding harness. Fork of earendil-works/pi (MIT) with the MCP, codemode, and tool-search built-ins removed; compatibility with the classical pi extension/package ecosystem.",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -1,2 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{backgroundAnsi,colorToRgb,foregroundAnsi,formatKeyText,getKeybindings,indexedColor,rgbColor,theme,visibleWidth}from"./chunk-SS3AAGL7.js";import"./chunk-S3GGRYIO.js";import"./chunk-4L3WN2XY.js";var CORAL=[228,138,122],BLUE=[79,142,179],YELLOW=[234,182,93],DEPTH=.7,CAMERA_DISTANCE=10,FLY_START=.1,FLY_DURATION=1.3,LOGO_PIXELS=["c..c","cccc","bbbc","b..b"],BLOCKS=LOGO_PIXELS.flatMap((line,row)=>[...line].flatMap((pixel,column)=>{let color=pixel==="c"?CORAL:pixel==="b"?BLUE:pixel==="y"?YELLOW:void 0;return color?[{home:[column,row,0],color}]:[]})),LOGO_RADIUS=Math.hypot(2,2,1+DEPTH/2),PUZZLE_START=FLY_START+FLY_DURATION+3,PUZZLE_STEP=.3,PUZZLE_STEPS=12,PUZZLE_RETURN=1,PUZZLE_HOLD=.6,PUZZLE_CYCLE=PUZZLE_STEP*PUZZLE_STEPS+PUZZLE_RETURN+PUZZLE_HOLD,PUZZLE_MOVES=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]];function shuffleSteps(cycle){let positions=BLOCKS.map(block=>block.home),steps=[positions],lastMoved=new Set,random=cycle*7919+1,next=()=>hash(random++),key=([x,y,z])=>(z+1)*16+y*4+x;for(let step=0;step<PUZZLE_STEPS;step++){let occupied=new Set(positions.map(key)),nextPositions=[...positions],moved=new Set,moveCount=next()<.4?2:1;for(let move=0;move<moveCount;move++){let candidates=[];for(let block=0;block<positions.length;block++){if(moved.has(block))continue;let[x,y,z]=positions[block];for(let[dx,dy,dz]of PUZZLE_MOVES){let target=[x+dx,y+dy,z+dz];target[0]<0||target[0]>3||target[1]<0||target[1]>3||target[2]<-1||target[2]>1||occupied.has(key(target))||candidates.push({block,target})}}let fresh=candidates.filter(candidate=>!lastMoved.has(candidate.block)),pool=fresh.length>0?fresh:candidates,choice=pool[Math.floor(next()*pool.length)];if(!choice)break;occupied.add(key(choice.target)),nextPositions[choice.block]=choice.target,moved.add(choice.block)}lastMoved.clear();for(let block of moved)lastMoved.add(block);positions=nextPositions,steps.push(positions)}return steps}var FRAME_MS=1e3/30,DUST_DURATION=.35,WAVE_SPREAD=.55,WAVE_JITTER=.12,DISSOLVE_END=FLY_START+WAVE_SPREAD+WAVE_JITTER+DUST_DURATION,BACKGROUND_FADE=.5,EXIT_DURATION=1.1,STARS_START=2.5,STARS_FADE=2,STAR_DENSITY=.018,STAR_TINTS=[[255,255,255],[170,195,255],[255,225,170],[255,190,205]],LOGO_COLOR_STEP=5,LIGHT_HALO_STRENGTH=.3,HALO_RADIUS_X=6,HALO_RADIUS_Y=3,HALO_LEVELS=32,STAR_ALPHA_LEVELS=8,STAR_FLICKER_LEVELS=3,HINT_FADE=.5,DOT_BITS=[1,8,2,16,4,32,64,128],BRAILLE=Array.from({length:256},(_,bits)=>String.fromCharCode(10240+bits)),LIGHT=normalize([-.45,-.6,.75]),HALF_VECTOR=normalize([LIGHT[0],LIGHT[1],LIGHT[2]+1]);function normalize(v){let length=Math.hypot(v[0],v[1],v[2]);return[v[0]/length,v[1]/length,v[2]/length]}function clamp01(value){return value<0?0:value>1?1:value}function smooth(value){let t=clamp01(value);return t*t*t*(t*(t*6-15)+10)}function easeOut(value){let t=1-clamp01(value);return 1-t*t*t}function mix(a,b,amount){return[a[0]+(b[0]-a[0])*amount,a[1]+(b[1]-a[1])*amount,a[2]+(b[2]-a[2])*amount]}function hash(value){let x=Math.imul(value^2654435769,2246822507);return x^=x>>>13,x=Math.imul(x,3266489909),x^=x>>>16,(x>>>0)/4294967296}function isLight([r,g,b]){return .2126*r+.7152*g+.0722*b>128}function toRgb(color){let{r,g,b}=colorToRgb(color);return[r,g,b]}function glyphInk(text,seed){return text.trim()===""?0:/^[.,:;'`\-_·]$/.test(text)?2:/^[\u2500-\u257f]$/.test(text)?3:4+Math.floor(seed*3)}var segmenter=new Intl.Segmenter;function parseScreen(lines,width,foreground,background){let palette=index=>toRgb(indexedColor(index));return lines.map(line=>{let cells=[],fg,bg,dim=!1,inverse=!1,applySgr=params=>{let codes=params===""?["0"]:params.split(";");for(let i2=0;i2<codes.length;i2++){let parts=codes[i2].split(":").map(part=>Number.parseInt(part,10)),code=parts[0]??0;if(code===38||code===48){let args;if(parts.length>1)args=parts.slice(1).filter(part=>!Number.isNaN(part));else{let kind=Number.parseInt(codes[i2+1]??"",10),count=kind===5?2:kind===2?4:1;args=codes.slice(i2+1,i2+1+count).map(part=>Number.parseInt(part,10)),i2+=count}let color;args[0]===5&&args[1]!==void 0?color=palette(args[1]):args[0]===2&&args.length>=4&&(color=[args[1],args[2],args[3]]),color&&(code===38?fg=color:bg=color)}else code===0?(fg=void 0,bg=void 0,dim=!1,inverse=!1):code===2?dim=!0:code===22?dim=!1:code===7?inverse=!0:code===27?inverse=!1:code>=30&&code<=37?fg=palette(code-30):code>=90&&code<=97?fg=palette(code-90+8):code===39?fg=void 0:code>=40&&code<=47?bg=palette(code-40):code>=100&&code<=107?bg=palette(code-100+8):code===49&&(bg=void 0)}},pushText=text=>{for(let{segment}of segmenter.segment(text)){let glyphWidth=visibleWidth(segment);if(glyphWidth===0||cells.length+glyphWidth>width)continue;let cellFg=fg??foreground,cellBg=bg;inverse&&(cellFg=bg??background,cellBg=fg??foreground),dim&&(cellFg=mix(cellFg,cellBg??background,.4));let cell={text:segment,width:glyphWidth,fg:cellFg,bg:cellBg,delay:0,ink:0,seed:0};cells.push(cell),glyphWidth===2&&cells.push({...cell,text:"",width:0})}},i=0;for(;i<line.length;){let sequenceStart=line.indexOf("\x1B",i);if(sequenceStart===-1){pushText(line.slice(i));break}sequenceStart>i&&pushText(line.slice(i,sequenceStart));let kind=line[sequenceStart+1];if(kind==="["){let end=sequenceStart+2;for(;end<line.length&&(line.charCodeAt(end)<64||line.charCodeAt(end)>126);)end++;line[end]==="m"&&applySgr(line.slice(sequenceStart+2,end)),i=end+1}else if(kind==="]"||kind==="_"||kind==="P"||kind==="^"){let bell=line.indexOf("\x07",sequenceStart+2),st=line.indexOf("\x1B\\",sequenceStart+2);if(bell===-1&&st===-1)break;i=bell!==-1&&(st===-1||bell<st)?bell+1:st+2}else i=sequenceStart+2}return cells})}function rotation(yaw,pitch,roll){let[sy,cy,sx,cx,sz,cz]=[Math.sin(yaw),Math.cos(yaw),Math.sin(pitch),Math.cos(pitch),Math.sin(roll),Math.cos(roll)],ry=[cy,0,sy,0,1,0,-sy,0,cy],rx=[1,0,0,0,cx,-sx,0,sx,cx],rz=[cz,-sz,0,sz,cz,0,0,0,1];return multiply(rz,multiply(rx,ry))}function multiply(a,b){let result=new Array(9);for(let row=0;row<3;row++)for(let column=0;column<3;column++)result[row*3+column]=a[row*3]*b[column]+a[row*3+1]*b[3+column]+a[row*3+2]*b[6+column];return result}var SPIN_RAMP=1.4,SPIN_SPEED=Math.PI*2/PUZZLE_CYCLE,SPIN_LINGER=.6,FIRST_FRONT_VIEW=PUZZLE_START+PUZZLE_STEP*PUZZLE_STEPS+PUZZLE_RETURN+PUZZLE_HOLD/2;function baseSpinPhase(time){let elapsed=time-FLY_START;if(elapsed<=0)return 0;let u=elapsed/SPIN_RAMP;return u<1?SPIN_SPEED*SPIN_RAMP*(u**6-3*u**5+2.5*u**4):SPIN_SPEED*(SPIN_RAMP*.5+elapsed-SPIN_RAMP)}var SPIN_ALIGNMENT=Math.PI*2-baseSpinPhase(FIRST_FRONT_VIEW)%(Math.PI*2);function spinPhase(time){return baseSpinPhase(time)+SPIN_ALIGNMENT*smooth((time-FLY_START)/FLY_DURATION)}function spinAngle(time){let phase=spinPhase(time);return phase-SPIN_LINGER*Math.sin(phase)}var LogoRaster=class{bits=new Uint8Array(0);counts=new Uint8Array(0);rgb=new Float32Array(0);haloAmount=new Float32Array(0);haloRgb=new Float32Array(0);width=0;height=0;depth=new Float32Array(0);faceIds=new Uint8Array(0);dirty;haloDirty;render(width,height,pose,boxes,background,haloStrength){let dotWidth=width*2,dotHeight=height*4;if(width!==this.width||height!==this.height)this.width=width,this.height=height,this.bits=new Uint8Array(width*height),this.counts=new Uint8Array(width*height),this.rgb=new Float32Array(width*height*3),this.haloAmount=new Float32Array(width*height),this.haloRgb=new Float32Array(width*height*3),this.haloDirty=void 0,this.depth=new Float32Array(dotWidth*dotHeight).fill(1/0),this.faceIds=new Uint8Array(dotWidth*dotHeight),this.dirty=void 0;else if(this.dirty){let{minX:minX2,minY:minY2,maxX:maxX2,maxY:maxY2}=this.dirty;for(let row=minY2;row<=maxY2;row++)this.bits.fill(0,row*width+minX2,row*width+maxX2+1),this.counts.fill(0,row*width+minX2,row*width+maxX2+1),this.rgb.fill(0,(row*width+minX2)*3,(row*width+maxX2+1)*3);this.dirty=void 0}if(this.haloDirty){let{minX:minX2,minY:minY2,maxX:maxX2,maxY:maxY2}=this.haloDirty;for(let row=minY2;row<=maxY2;row++)this.haloAmount.fill(0,row*width+minX2,row*width+maxX2+1),this.haloRgb.fill(0,(row*width+minX2)*3,(row*width+maxX2+1)*3);this.haloDirty=void 0}let m=rotation(pose.yaw,pose.pitch,pose.roll),{centerX,centerY,scale}=pose,origin=[m[6]*CAMERA_DISTANCE,m[7]*CAMERA_DISTANCE,m[8]*CAMERA_DISTANCE],light=isLight(background),faces=this.visibleFaces(m,origin,pose,boxes,dotWidth,dotHeight,light);if(faces.length===0)return;let minX=dotWidth,minY=dotHeight,maxX=-1,maxY=-1;for(let face of faces)minX=Math.min(minX,face.minX),minY=Math.min(minY,face.minY),maxX=Math.max(maxX,face.maxX),maxY=Math.max(maxY,face.maxY);if(maxX<minX||maxY<minY)return;let depth=this.depth,faceIds=this.faceIds;for(let faceIndex=0;faceIndex<faces.length;faceIndex++){let face=faces[faceIndex],a=face.axis,u=(a+1)%3,v=(a+2)%3,originA=origin[a],originU=origin[u],originV=origin[v],stepA=m[a]/scale,stepU=m[u]/scale,stepV=m[v]/scale,sx=(face.minX+.5-centerX)/scale;for(let dotY=face.minY;dotY<=face.maxY;dotY++){let sy=(dotY+.5-centerY)/scale,directionA=m[a]*sx+m[3+a]*sy-m[6+a]*CAMERA_DISTANCE,directionU=m[u]*sx+m[3+u]*sy-m[6+u]*CAMERA_DISTANCE,directionV=m[v]*sx+m[3+v]*sy-m[6+v]*CAMERA_DISTANCE,index=dotY*dotWidth+face.minX;for(let dotX=face.minX;dotX<=face.maxX;dotX++,index++){let t=(face.plane-originA)/directionA;if(t>0&&t<depth[index]){let hitU=originU+t*directionU,hitV=originV+t*directionV;hitU>=face.uMin&&hitU<=face.uMax&&hitV>=face.vMin&&hitV<=face.vMax&&(depth[index]=t,faceIds[index]=faceIndex+1)}directionA+=stepA,directionU+=stepU,directionV+=stepV}}}let bits=this.bits,counts=this.counts,rgb=this.rgb,cellMinX=width,cellMinY=height,cellMaxX=-1,cellMaxY=-1;for(let dotY=minY;dotY<=maxY;dotY++){let index=dotY*dotWidth+minX;for(let dotX=minX;dotX<=maxX;dotX++,index++){let id=faceIds[index];if(id===0)continue;let face=faces[id-1],fog=clamp01(.15-CAMERA_DISTANCE*(1-depth[index])*.12)*(light?.5:1);faceIds[index]=0,depth[index]=1/0;let cellX=dotX>>1,cellY=dotY>>2,cell=cellY*width+cellX;bits[cell]|=DOT_BITS[(dotY&3)*2+(dotX&1)],counts[cell]++,rgb[cell*3]+=face.red+(background[0]-face.red)*fog,rgb[cell*3+1]+=face.green+(background[1]-face.green)*fog,rgb[cell*3+2]+=face.blue+(background[2]-face.blue)*fog,cellX<cellMinX&&(cellMinX=cellX),cellX>cellMaxX&&(cellMaxX=cellX),cellY<cellMinY&&(cellMinY=cellY),cellY>cellMaxY&&(cellMaxY=cellY)}}cellMaxX>=0&&(this.dirty={minX:cellMinX,minY:cellMinY,maxX:cellMaxX,maxY:cellMaxY}),haloStrength>0&&this.renderHalo(haloStrength)}renderHalo(strength){let cells=this.dirty;if(!cells)return;let{width,height,counts,rgb}=this,minX=Math.max(0,cells.minX-HALO_RADIUS_X),maxX=Math.min(width-1,cells.maxX+HALO_RADIUS_X),minY=Math.max(0,cells.minY-HALO_RADIUS_Y),maxY=Math.min(height-1,cells.maxY+HALO_RADIUS_Y),regionWidth=maxX-minX+1,tent=radius=>{let weights=Array.from({length:radius*2+1},(_,i)=>radius+1-Math.abs(i-radius)),total=weights.reduce((sum,weight)=>sum+weight,0);return weights.map(weight=>weight/total)},weightsX=tent(HALO_RADIUS_X),weightsY=tent(HALO_RADIUS_Y),rows=cells.maxY-cells.minY+1,horizontal=new Float32Array(rows*regionWidth*4);for(let y=cells.minY;y<=cells.maxY;y++)for(let x=minX;x<=maxX;x++){let coverage=0,red=0,green=0,blue=0;for(let dx=-HALO_RADIUS_X;dx<=HALO_RADIUS_X;dx++){let sourceX=x+dx;if(sourceX<cells.minX||sourceX>cells.maxX)continue;let source=y*width+sourceX,count=counts[source];if(count===0)continue;let weight=weightsX[dx+HALO_RADIUS_X]/8;coverage+=count*weight,red+=rgb[source*3]*weight,green+=rgb[source*3+1]*weight,blue+=rgb[source*3+2]*weight}let target=((y-cells.minY)*regionWidth+(x-minX))*4;horizontal[target]=coverage,horizontal[target+1]=red,horizontal[target+2]=green,horizontal[target+3]=blue}for(let y=minY;y<=maxY;y++)for(let x=minX;x<=maxX;x++){let coverage=0,red=0,green=0,blue=0;for(let dy=-HALO_RADIUS_Y;dy<=HALO_RADIUS_Y;dy++){let sourceY=y+dy;if(sourceY<cells.minY||sourceY>cells.maxY)continue;let weight=weightsY[dy+HALO_RADIUS_Y],source=((sourceY-cells.minY)*regionWidth+(x-minX))*4;coverage+=horizontal[source]*weight,red+=horizontal[source+1]*weight,green+=horizontal[source+2]*weight,blue+=horizontal[source+3]*weight}let target=y*width+x,count=counts[target];if(count>0&&count/8>coverage&&(coverage=count/8,red=rgb[target*3]/count*coverage,green=rgb[target*3+1]/count*coverage,blue=rgb[target*3+2]/count*coverage),coverage<=0)continue;let amount=Math.round(strength*Math.min(1,coverage)**.7*HALO_LEVELS)/HALO_LEVELS;amount<=0||(this.haloAmount[target]=amount,this.haloRgb[target*3]=Math.round(red/coverage/LOGO_COLOR_STEP)*LOGO_COLOR_STEP,this.haloRgb[target*3+1]=Math.round(green/coverage/LOGO_COLOR_STEP)*LOGO_COLOR_STEP,this.haloRgb[target*3+2]=Math.round(blue/coverage/LOGO_COLOR_STEP)*LOGO_COLOR_STEP)}this.haloDirty={minX,minY,maxX,maxY}}visibleFaces(m,origin,pose,boxes,dotWidth,dotHeight,lightBackground){let faces=[];for(let box of boxes)for(let a=0;a<3;a++){let u=(a+1)%3,v=(a+2)%3;for(let side of[-1,1]){let plane=side>0?box.max[a]:box.min[a];if((origin[a]-plane)*side<=0||boxes.some(other=>other!==box&&(side>0?other.min[a]:other.max[a])===plane&&other.min[u]<=box.min[u]&&other.max[u]>=box.max[u]&&other.min[v]<=box.min[v]&&other.max[v]>=box.max[v]))continue;let minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0,corner=[0,0,0];for(let cornerU of[box.min[u],box.max[u]])for(let cornerV of[box.min[v],box.max[v]]){corner[a]=plane,corner[u]=cornerU,corner[v]=cornerV;let x=m[0]*corner[0]+m[1]*corner[1]+m[2]*corner[2],y=m[3]*corner[0]+m[4]*corner[1]+m[5]*corner[2],z=m[6]*corner[0]+m[7]*corner[1]+m[8]*corner[2],perspective=pose.scale*CAMERA_DISTANCE/(CAMERA_DISTANCE-z),screenX=pose.centerX+x*perspective,screenY=pose.centerY+y*perspective;minX=Math.min(minX,screenX),minY=Math.min(minY,screenY),maxX=Math.max(maxX,screenX),maxY=Math.max(maxY,screenY)}let face={minX:Math.max(0,Math.floor(minX)),minY:Math.max(0,Math.floor(minY)),maxX:Math.min(dotWidth-1,Math.ceil(maxX)),maxY:Math.min(dotHeight-1,Math.ceil(maxY))};if(face.maxX<face.minX||face.maxY<face.minY)continue;let nx=m[a]*side,ny=m[3+a]*side,nz=m[6+a]*side,diffuse=Math.max(0,nx*LIGHT[0]+ny*LIGHT[1]+nz*LIGHT[2]),rim=Math.max(0,nx*.8-nz*.3),specular=lightBackground?0:Math.max(0,nx*HALF_VECTOR[0]+ny*HALF_VECTOR[1]+nz*HALF_VECTOR[2])**24*.6*255,light=lightBackground?Math.min(1,.55+diffuse*.45+rim*.1):.45+diffuse*.78+rim*.25;faces.push({axis:a,plane,uMin:box.min[u],uMax:box.max[u],vMin:box.min[v],vMax:box.max[v],...face,red:Math.min(255,box.color[0]*light+specular),green:Math.min(255,box.color[1]*light+specular),blue:Math.min(255,box.color[2]*light+specular)})}}return faces}},playing=!1;async function playPiLogoAnimation(tui,options){if(playing)return;playing=!0;let reported=await tui.queryTerminalColors({timeoutMs:100}),dark=theme.appearance==="dark",toRgbTuple=(rgb,fallback)=>rgb?[rgb.r,rgb.g,rgb.b]:fallback,colors={foreground:toRgbTuple(reported.foreground,toRgb(theme.colors.text)),background:toRgbTuple(reported.background,dark?[0,0,0]:[255,255,255])};if(tui.hasOverlay()){playing=!1;return}let animation=new PiLogoAnimation(tui,options,colors,()=>{playing=!1,overlay.hide()}),overlay=tui.showOverlay(animation,{anchor:"top-left",width:"100%",maxHeight:"100%"})}var PiLogoAnimation=class{tui;options;foreground;background;onDone;startTime=performance.now();lastRender=performance.now();timer;exit;shuffle;screenWidth=-1;screenHeight=-1;stars=[];cells=[];ansiCache=new Map;logo=new LogoRaster;constructor(tui,options,colors,onDone){this.tui=tui,this.options=options,this.foreground=colors.foreground,this.background=colors.background,this.onDone=onDone,this.timer=setInterval(()=>{this.exit&&this.exitProgress()>=1||performance.now()-this.lastRender>1e3?this.finish():this.tui.requestRender()},FRAME_MS),this.timer.unref?.()}close(){if(this.exit){this.finish();return}let time=this.elapsed(),yaw=spinAngle(time),turn=Math.PI*2;this.exit={start:performance.now(),time,yaw,targetYaw:Math.ceil(yaw/turn)*turn,offsets:this.blockOffsets(time)}}handleInput(data){let keybindings=getKeybindings();(keybindings.matches(data,"tui.select.cancel")||keybindings.matches(data,"app.clear"))&&this.close()}handleMouse(event){return event.type==="click"&&this.close(),{handled:!0,render:!1}}invalidate(){this.screenWidth=-1,this.screenHeight=-1,this.ansiCache.clear()}render(width){let height=Math.max(1,this.tui.terminal.rows),foreground=this.foreground,background=this.background;this.lastRender=performance.now(),(width!==this.screenWidth||height!==this.screenHeight)&&(this.screenWidth=width,this.screenHeight=height,this.cells=this.prepareCells(width,foreground),this.stars=this.prepareStars(width,height));let dissolveTime,pose,hintAlpha,starAlpha,offsets;if(this.exit){let progress=this.exitProgress(),landing=clamp01(progress/.8),settle=1-smooth(landing);dissolveTime=Math.min(this.exit.time,DISSOLVE_END)*(1-progress),pose=this.pose(width,height,this.flyProgress(this.exit.time)*settle,this.exit.time),pose.yaw=this.exit.yaw+(this.exit.targetYaw-this.exit.yaw)*easeOut(landing),pose.pitch*=settle,pose.roll*=settle,hintAlpha=this.hintAlpha(this.exit.time)*(1-smooth(progress/.2)),starAlpha=this.starAlpha(this.exit.time)*(1-smooth(progress/.3));let gather=1-smooth(progress/.5);offsets=this.exit.offsets.map(([x,y,z])=>[x*gather,y*gather,z*gather])}else{let time=this.elapsed();dissolveTime=time,pose=this.pose(width,height,this.flyProgress(time),time),hintAlpha=this.hintAlpha(time),starAlpha=this.starAlpha(time),offsets=this.blockOffsets(time)}let boxes=BLOCKS.map((block,index)=>{let[dx,dy,dz]=offsets[index],x=block.home[0]-2+dx,y=block.home[1]-2+dy;return{min:[x,y,dz-DEPTH/2],max:[x+1,y+1,dz+DEPTH/2],color:block.color}}),logo=this.logo;logo.render(width,height,pose,boxes,background,isLight(background)?LIGHT_HALO_STRENGTH:0);let halo=(index,base)=>{let amount=logo.haloAmount[index];if(amount<=0)return base;let color=logo.haloRgb;return mix(base??background,[color[index*3],color[index*3+1],color[index*3+2]],amount)},backgroundFade=smooth(dissolveTime/BACKGROUND_FADE),textFade=smooth(dissolveTime/.6)*.3,textActive=dissolveTime<DISSOLVE_END||backgroundFade<1,hint=this.hint(width,height,hintAlpha,background),frame=Math.floor(dissolveTime*14),now=this.elapsed(),starLevel=Math.round(starAlpha*STAR_ALPHA_LEVELS)/STAR_ALPHA_LEVELS,starfield=index=>{if(starLevel<=0)return;let star=this.stars[index];if(!star)return;let flicker=Math.round((.5+.5*Math.sin(now*star.speed+star.phase))*STAR_FLICKER_LEVELS)/STAR_FLICKER_LEVELS;return{text:star.glyph,fg:mix(background,mix(foreground,star.tint,.5),star.strength*(.7+.3*flicker)*starLevel)}},lines=[];for(let row=0;row<height;row++){let cells=this.cells[row]??[],line="",currentFg=-1,currentBg=-1,emit=(text,fg,bg)=>{let fgKey=fg?this.pack(fg):-1,bgKey=bg?this.pack(bg):-1;fgKey!==currentFg&&text!==" "&&(line+=fg?this.ansi(fgKey,!1):"\x1B[39m",currentFg=fgKey),bgKey!==currentBg&&(line+=bg?this.ansi(bgKey,!0):"\x1B[49m",currentBg=bgKey),line+=text};for(let column=0;column<width;column++){let index=row*width+column,cell=textActive?cells[column]:void 0,cellBg=halo(index,cell?.bg&&backgroundFade<1?mix(cell.bg,background,backgroundFade):void 0);if(hint&&row===hint.row&&column>=hint.start&&column<hint.start+hint.text.length){let offset=column-hint.start;emit(hint.text[offset],offset<hint.keyLength?hint.keyColor:hint.color,cellBg);continue}let dots=logo.bits[index];if(dots){let step=LOGO_COLOR_STEP*logo.counts[index],rgb=logo.rgb,color=[Math.round(rgb[index*3]/step)*LOGO_COLOR_STEP,Math.round(rgb[index*3+1]/step)*LOGO_COLOR_STEP,Math.round(rgb[index*3+2]/step)*LOGO_COLOR_STEP];emit(BRAILLE[dots],color,cellBg);continue}if(!cell){let star=starfield(index);emit(star?.text??" ",star?.fg,cellBg);continue}let dust=(dissolveTime-cell.delay)/DUST_DURATION;if(dust<0&&cell.width===2&&!logo.bits[index+1]){emit(cell.text,mix(cell.fg,background,textFade),cellBg),column++;continue}if(dust<0&&cell.width===1){emit(cell.text,mix(cell.fg,background,textFade),cellBg);continue}let dotCount=dust<0?cell.ink:Math.round(cell.ink*(1-clamp01(dust)));if(dotCount<=0){let star=starfield(index);emit(star?.text??" ",star?.fg,cellBg);continue}let bits=0,placed=0;for(let attempt=0;placed<dotCount&&attempt<32;attempt++){let bit=DOT_BITS[Math.floor(hash(cell.seed*7919+frame*131+attempt)*8)];bits&bit||(bits|=bit,placed++)}let fade=textFade+(1-textFade)*clamp01(dust)**.8;emit(BRAILLE[bits],mix(cell.fg,background,fade),cellBg)}lines.push(`${line}\x1B[0m`)}return lines}elapsed(){return(performance.now()-this.startTime)/1e3}exitProgress(){return this.exit?clamp01((performance.now()-this.exit.start)/1e3/EXIT_DURATION):0}finish(){this.timer&&(clearInterval(this.timer),this.timer=void 0,this.onDone())}blockOffsets(time){let home=()=>BLOCKS.map(()=>[0,0,0]);if(time<PUZZLE_START)return home();let cycle=Math.floor((time-PUZZLE_START)/PUZZLE_CYCLE),local=time-PUZZLE_START-cycle*PUZZLE_CYCLE;this.shuffle?.cycle!==cycle&&(this.shuffle={cycle,steps:shuffleSteps(cycle)});let steps=this.shuffle.steps,offset=(position,index)=>{let block=BLOCKS[index].home;return[position[0]-block[0],position[1]-block[1],position[2]-block[2]]},shuffleEnd=PUZZLE_STEP*PUZZLE_STEPS;if(local<shuffleEnd){let step=Math.floor(local/PUZZLE_STEP),progress=smooth((local-step*PUZZLE_STEP)/PUZZLE_STEP);return steps[step].map((from,index)=>{let a=offset(from,index),b=offset(steps[step+1][index],index);return[a[0]+(b[0]-a[0])*progress,a[1]+(b[1]-a[1])*progress,a[2]+(b[2]-a[2])*progress]})}if(local<shuffleEnd+PUZZLE_RETURN){let u=(local-shuffleEnd)/PUZZLE_RETURN,remaining=1-smooth(u),arc=Math.sin(Math.PI*clamp01(u))*.8;return steps[PUZZLE_STEPS].map((position,index)=>{let[x,y,z]=offset(position,index);return[x*remaining,y*remaining,z*remaining+(index%2===0?arc:-arc)]})}return home()}flyProgress(time){return smooth((time-FLY_START)/FLY_DURATION)}starAlpha(time){return smooth((time-STARS_START)/STARS_FADE)}hintAlpha(time){return smooth((time-FLY_START-FLY_DURATION)/HINT_FADE)}pose(width,height,progress,time){let startScale=2*(CAMERA_DISTANCE-DEPTH/2)/CAMERA_DISTANCE,reach=LOGO_RADIUS*(CAMERA_DISTANCE/(CAMERA_DISTANCE-LOGO_RADIUS)),endScale=Math.max(startScale,Math.min(width*2*.35,(height*4-8)*.48)/reach),startX=this.options.logoColumn*2+4,startY=this.options.logoRow*4+4,endX=width,endY=height*2-2;return{centerX:startX+(endX-startX)*progress,centerY:startY+(endY-startY)*progress,scale:startScale*(endScale/startScale)**progress,yaw:spinAngle(time),pitch:.3*Math.sin(spinPhase(time))*progress,roll:.06*Math.sin(2*spinPhase(time))*progress}}hint(width,height,alpha,background){if(alpha<=0)return;let key=formatKeyText(getKeybindings().getKeys("tui.select.cancel")[0]??"escape"),text=`${key} to return`;if(!(text.length>width))return{row:height-2,start:Math.floor((width-text.length)/2),text,keyLength:key.length,keyColor:mix(background,toRgb(theme.colors.muted),alpha),color:mix(background,toRgb(theme.colors.dim),alpha)}}prepareStars(width,height){let stars=new Array(width*height);for(let index=0;index<width*height;index++){if(hash(index*3+20973)>=STAR_DENSITY)continue;let random=salt=>hash(index*7+salt*40503);stars[index]={glyph:BRAILLE[DOT_BITS[Math.floor(random(1)*8)]],tint:STAR_TINTS[Math.floor(random(2)*STAR_TINTS.length)],strength:.1+random(3)*.12,phase:random(4)*Math.PI*2,speed:.4+random(5)*.8}}return stars}prepareCells(width,foreground){let cells=parseScreen(this.options.screen,width,foreground,this.background),centerX=this.options.logoColumn+2,centerY=this.options.logoRow+1,height=Math.max(1,this.tui.terminal.rows),farthest=Math.hypot(Math.max(centerX,width-centerX),Math.max(centerY,height-centerY)*2);for(let row=0;row<cells.length;row++){let line=cells[row];for(let column=0;column<line.length;column++){let cell=line[column],owner=cell.width===0?line[column-1]:cell,seed=hash(row*65537+column);if(cell.width!==0){let distance=Math.hypot(column-centerX,(row-centerY)*2)/farthest;cell.delay=FLY_START+distance*WAVE_SPREAD+seed*WAVE_JITTER}else cell.delay=owner.delay;cell.seed=row*65537+column,cell.ink=glyphInk(owner.text,seed)}}for(let row=this.options.logoRow;row<this.options.logoRow+2;row++){let line=cells[row];if(line)for(let column=this.options.logoColumn;column<this.options.logoColumn+4;column++){let cell=line[column];cell&&(cell.text=" ",cell.width=1,cell.ink=0,cell.bg=void 0)}}return cells}pack(color){return Math.round(color[0])<<16|Math.round(color[1])<<8|Math.round(color[2])}ansi(key,isBackground){let cacheKey=key*2+(isBackground?1:0),value=this.ansiCache.get(cacheKey);if(value===void 0){let color=rgbColor(key>>16&255,key>>8&255,key&255),mode=theme.getColorMode();value=isBackground?backgroundAnsi(color,mode):foregroundAnsi(color,mode),this.ansiCache.set(cacheKey,value)}return value}};export{PiLogoAnimation,playPiLogoAnimation};
@@ -1,68 +0,0 @@
1
- import { type Component, type TUI, type TuiMouseEvent, type TuiMouseEventResult } from "@earendil-works/pi-tui";
2
- /**
3
- * Fullscreen easter egg shown when the header logo is clicked. The current screen dissolves into braille dust,
4
- * spreading out from the logo, while the logo lifts off as a 3D object, flies to the center, grows, and spins.
5
- * Leaving plays the same timeline backwards, so the logo lands on the header and the screen reassembles.
6
- *
7
- * The logo is ray cast per braille dot. A braille cell holds 2x4 dots and roughly square dots, so one logo
8
- * pixel (a half block) is exactly 2x2 dots and the header logo (4x2 cells) is 8x8 dots at the start.
9
- */
10
- type Rgb = readonly [number, number, number];
11
- export interface PiLogoAnimationOptions {
12
- /** The screen to dissolve, as rendered lines. */
13
- screen: readonly string[];
14
- /** Terminal cell of the header logo's top-left corner. */
15
- logoColumn: number;
16
- logoRow: number;
17
- }
18
- /**
19
- * Show the animation as a fullscreen overlay until it is dismissed. The overlay takes focus and mouse input and
20
- * returns focus when hidden, so the rest of the UI keeps running underneath untouched.
21
- */
22
- export declare function playPiLogoAnimation(tui: TUI, options: PiLogoAnimationOptions): Promise<void>;
23
- export declare class PiLogoAnimation implements Component {
24
- private readonly tui;
25
- private readonly options;
26
- private readonly foreground;
27
- private readonly background;
28
- private readonly onDone;
29
- private readonly startTime;
30
- private lastRender;
31
- private timer;
32
- private exit;
33
- private shuffle;
34
- private screenWidth;
35
- private screenHeight;
36
- /** Star per cell index, or undefined. */
37
- private stars;
38
- private cells;
39
- private readonly ansiCache;
40
- private readonly logo;
41
- constructor(tui: TUI, options: PiLogoAnimationOptions, colors: {
42
- foreground: Rgb;
43
- background: Rgb;
44
- }, onDone: () => void);
45
- /** Play the exit animation. A second call skips it. */
46
- close(): void;
47
- handleInput(data: string): void;
48
- handleMouse(event: TuiMouseEvent): TuiMouseEventResult;
49
- invalidate(): void;
50
- render(width: number): string[];
51
- private elapsed;
52
- private exitProgress;
53
- private finish;
54
- /** Each block's displacement from its place in the logo at `time`, in grid units. */
55
- private blockOffsets;
56
- private flyProgress;
57
- private starAlpha;
58
- private hintAlpha;
59
- private pose;
60
- private hint;
61
- /** A sparse, deterministic starfield: one braille dot in about STAR_DENSITY of all cells. */
62
- private prepareStars;
63
- private prepareCells;
64
- private pack;
65
- private ansi;
66
- }
67
- export {};
68
- //# sourceMappingURL=pi-logo-animation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pi-logo-animation.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/pi-logo-animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,SAAS,EAMd,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAExB,MAAM,wBAAwB,CAAC;AAIhC;;;;;;;GAOG;AAEH,KAAK,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAiuB7C,MAAM,WAAW,sBAAsB;IACtC,iDAAiD;IACjD,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlG;AAED,qBAAa,eAAgB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,IAAI,CAEC;IACb,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,YAAY,CAAM;IAC1B,yCAAyC;IACzC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,YACC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE;QAAE,UAAU,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,GAAG,CAAA;KAAE,EAC5C,MAAM,EAAE,MAAM,IAAI,EAalB;IAED,uDAAuD;IACvD,KAAK,IAAI,IAAI,CAeZ;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG9B;IAED,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAGrD;IAED,UAAU,IAAI,IAAI,CAIjB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA6J9B;IAED,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,MAAM;IAOd,qFAAqF;IACrF,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,IAAI;IAoBZ,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;CAWZ"}