dreamcontext 0.8.1 → 0.8.3

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 (127) hide show
  1. package/README.md +97 -3
  2. package/agents/sleep-product.md +22 -0
  3. package/agents/sleep-state.md +3 -1
  4. package/agents/sleep-tasks.md +3 -1
  5. package/dist/agents/sleep-product.md +22 -0
  6. package/dist/agents/sleep-state.md +3 -1
  7. package/dist/agents/sleep-tasks.md +3 -1
  8. package/dist/dashboard/assets/{BrainCanvas3D-CNDjMlun.js → BrainCanvas3D-CoTzHqzT.js} +1 -1
  9. package/dist/dashboard/assets/{_baseUniq-DtoPVYjz.js → _baseUniq-BlQ6XWxs.js} +1 -1
  10. package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-D_dXe_8i.js → ar-SA-G6X2FPQ2-C4qyHe9L.js} +1 -1
  11. package/dist/dashboard/assets/{arc-8LFYH4lG.js → arc-uGukQNxI.js} +1 -1
  12. package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-BIgEpM4v.js → architectureDiagram-Q4EWVU46-BhtWTFvf.js} +1 -1
  13. package/dist/dashboard/assets/{az-AZ-76LH7QW2-C30ZBwgT.js → az-AZ-76LH7QW2-HfK2pIVQ.js} +1 -1
  14. package/dist/dashboard/assets/{bg-BG-XCXSNQG7-D0R9pSdG.js → bg-BG-XCXSNQG7-L7TlhXli.js} +1 -1
  15. package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-DRTa0DpJ.js → blockDiagram-DXYQGD6D-BmPhQEp6.js} +1 -1
  16. package/dist/dashboard/assets/{bn-BD-2XOGV67Q-vkWxteG3.js → bn-BD-2XOGV67Q-DE0uNoU6.js} +1 -1
  17. package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-Do_gB8Cs.js → c4Diagram-AHTNJAMY-DtQKYrmP.js} +1 -1
  18. package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-CTyxGdzW.js → ca-ES-6MX7JW3Y-7JHCTA6b.js} +1 -1
  19. package/dist/dashboard/assets/channel-3OfE-PZ3.js +1 -0
  20. package/dist/dashboard/assets/{chunk-4BX2VUAB-DJlttKoY.js → chunk-4BX2VUAB-BvnLY9qE.js} +1 -1
  21. package/dist/dashboard/assets/{chunk-4TB4RGXK-BdixZX4J.js → chunk-4TB4RGXK--piiFXgS.js} +1 -1
  22. package/dist/dashboard/assets/{chunk-55IACEB6-CPhKaTLr.js → chunk-55IACEB6-C7uvmawY.js} +1 -1
  23. package/dist/dashboard/assets/{chunk-EDXVE4YY-Bv0bQVvi.js → chunk-EDXVE4YY-BuWBKOPY.js} +1 -1
  24. package/dist/dashboard/assets/{chunk-FMBD7UC4-DGjRdLDd.js → chunk-FMBD7UC4-C1Le6hxh.js} +1 -1
  25. package/dist/dashboard/assets/{chunk-OYMX7WX6-B-wzkRri.js → chunk-OYMX7WX6-B8JE8Wz4.js} +1 -1
  26. package/dist/dashboard/assets/{chunk-QZHKN3VN-BwK1NqpV.js → chunk-QZHKN3VN-U9FJi59p.js} +1 -1
  27. package/dist/dashboard/assets/{chunk-YZCP3GAM-DjEwJGlh.js → chunk-YZCP3GAM-BNc94uy1.js} +1 -1
  28. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-Dpt9qwZI.js +1 -0
  29. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-Dpt9qwZI.js +1 -0
  30. package/dist/dashboard/assets/clone-CZ-InUnR.js +1 -0
  31. package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-BJXUn11L.js → cose-bilkent-S5V4N54A-D0hUzBCj.js} +1 -1
  32. package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-BjRikaNe.js → cs-CZ-2BRQDIVT-B0rWHDIi.js} +1 -1
  33. package/dist/dashboard/assets/{da-DK-5WZEPLOC-Cn3GTxbV.js → da-DK-5WZEPLOC-D_PQO_T0.js} +1 -1
  34. package/dist/dashboard/assets/{dagre-KV5264BT-BHn2c24z.js → dagre-KV5264BT-B_bjkEDQ.js} +1 -1
  35. package/dist/dashboard/assets/{de-DE-XR44H4JA-IvGsdpTt.js → de-DE-XR44H4JA-D1G4J6Mz.js} +1 -1
  36. package/dist/dashboard/assets/{diagram-5BDNPKRD-YrlF3B5a.js → diagram-5BDNPKRD-B63uEoiS.js} +1 -1
  37. package/dist/dashboard/assets/{diagram-G4DWMVQ6-DHONF1OD.js → diagram-G4DWMVQ6-DShdwm3D.js} +1 -1
  38. package/dist/dashboard/assets/{diagram-MMDJMWI5-B1vJLt5b.js → diagram-MMDJMWI5-DdVsHQ-l.js} +1 -1
  39. package/dist/dashboard/assets/{diagram-TYMM5635-C8P5-4A3.js → diagram-TYMM5635-BdHifyqU.js} +1 -1
  40. package/dist/dashboard/assets/{el-GR-BZB4AONW-B9GA8_lO.js → el-GR-BZB4AONW-a0CO4RfB.js} +1 -1
  41. package/dist/dashboard/assets/{erDiagram-SMLLAGMA-CjWWTCWe.js → erDiagram-SMLLAGMA-CYxdxNcb.js} +1 -1
  42. package/dist/dashboard/assets/{es-ES-U4NZUMDT-Ct1wP_9r.js → es-ES-U4NZUMDT-ejRYVYRf.js} +1 -1
  43. package/dist/dashboard/assets/{eu-ES-A7QVB2H4-C-49gWlR.js → eu-ES-A7QVB2H4-B-4OXJLd.js} +1 -1
  44. package/dist/dashboard/assets/{fa-IR-HGAKTJCU-DUo8t-xv.js → fa-IR-HGAKTJCU-DhOcLy7v.js} +1 -1
  45. package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-DCObnr3i.js → fi-FI-Z5N7JZ37-CKQF9xKf.js} +1 -1
  46. package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-OQ_IRMqG.js → flowDiagram-DWJPFMVM-azQUtREP.js} +1 -1
  47. package/dist/dashboard/assets/{fr-FR-RHASNOE6-0EGg3zhN.js → fr-FR-RHASNOE6-CsGekBXq.js} +1 -1
  48. package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-DPTSBcnu.js → ganttDiagram-T4ZO3ILL-DjXmGcb4.js} +2 -2
  49. package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-BxfeiCqm.js → gitGraphDiagram-UUTBAWPF-Dz87wo6e.js} +1 -1
  50. package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-WtVwXY6x.js → gl-ES-HMX3MZ6V-NRfsjlmW.js} +1 -1
  51. package/dist/dashboard/assets/{graph-Du_3_o8q.js → graph-BMW3t-Jz.js} +1 -1
  52. package/dist/dashboard/assets/{he-IL-6SHJWFNN-CfgspIku.js → he-IL-6SHJWFNN-CK4gfEss.js} +1 -1
  53. package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-CS9l2g3B.js → hi-IN-IWLTKZ5I-CqyBl1jA.js} +1 -1
  54. package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-BQ46AerM.js → hu-HU-A5ZG7DT2-BO0SthvO.js} +1 -1
  55. package/dist/dashboard/assets/{id-ID-SAP4L64H-BeShJyKQ.js → id-ID-SAP4L64H-CrHxJe1s.js} +1 -1
  56. package/dist/dashboard/assets/{index-D7dWmypK.js → index-B0pCDfL8.js} +1 -1
  57. package/dist/dashboard/assets/index-rIZLhbl7.js +480 -0
  58. package/dist/dashboard/assets/index-sax--nf3.css +1 -0
  59. package/dist/dashboard/assets/{infoDiagram-42DDH7IO-CcFhyaQp.js → infoDiagram-42DDH7IO-zG-8q9HR.js} +1 -1
  60. package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-9QJeD00p.js → ishikawaDiagram-UXIWVN3A-5OzPmL1c.js} +1 -1
  61. package/dist/dashboard/assets/{it-IT-JPQ66NNP-csyvfk0t.js → it-IT-JPQ66NNP-CW6fpZrT.js} +1 -1
  62. package/dist/dashboard/assets/{ja-JP-DBVTYXUO-DctpJ2yz.js → ja-JP-DBVTYXUO-DMJRiMhd.js} +1 -1
  63. package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-CU4EYedt.js → journeyDiagram-VCZTEJTY-f8lbDQ22.js} +1 -1
  64. package/dist/dashboard/assets/{kaa-6HZHGXH3-D0tWzHt3.js → kaa-6HZHGXH3-C4yr2X6j.js} +1 -1
  65. package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-BC-g4xJU.js → kab-KAB-ZGHBKWFO-BtwhZ5Ak.js} +1 -1
  66. package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-BxXqVmz1.js → kanban-definition-6JOO6SKY-BJtF1llZ.js} +1 -1
  67. package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-TLB3Lxri.js → kk-KZ-P5N5QNE5-BiS5ISFw.js} +1 -1
  68. package/dist/dashboard/assets/{km-KH-HSX4SM5Z-DCh7cRAS.js → km-KH-HSX4SM5Z-CJcAjj0D.js} +1 -1
  69. package/dist/dashboard/assets/{ko-KR-MTYHY66A-BPIl5ido.js → ko-KR-MTYHY66A-yw6XRj7m.js} +1 -1
  70. package/dist/dashboard/assets/{ku-TR-6OUDTVRD-TUpeN1Tm.js → ku-TR-6OUDTVRD-nAwdHGyN.js} +1 -1
  71. package/dist/dashboard/assets/{layout-CyrgfqIp.js → layout-guqP2e-e.js} +1 -1
  72. package/dist/dashboard/assets/linear-W2_Ct9N6.js +1 -0
  73. package/dist/dashboard/assets/{lt-LT-XHIRWOB4-BRKyR_Xw.js → lt-LT-XHIRWOB4-D7h1NJrv.js} +1 -1
  74. package/dist/dashboard/assets/{lv-LV-5QDEKY6T-BANbTe4s.js → lv-LV-5QDEKY6T-DJfUJgRc.js} +1 -1
  75. package/dist/dashboard/assets/{min-lcwVZhZ7.js → min-BlLHklQU.js} +1 -1
  76. package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-fVIbdlXp.js → mindmap-definition-QFDTVHPH-Ch2AO4mc.js} +1 -1
  77. package/dist/dashboard/assets/{mr-IN-CRQNXWMA-DLFutdXk.js → mr-IN-CRQNXWMA-BV3znx0p.js} +1 -1
  78. package/dist/dashboard/assets/{my-MM-5M5IBNSE-CGWrcNBC.js → my-MM-5M5IBNSE-IjUN-e5U.js} +1 -1
  79. package/dist/dashboard/assets/{nb-NO-T6EIAALU-CGRDupuc.js → nb-NO-T6EIAALU-MMsvbc2a.js} +1 -1
  80. package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-BKwBfrzp.js → nl-NL-IS3SIHDZ-ByYTJGOK.js} +1 -1
  81. package/dist/dashboard/assets/{nn-NO-6E72VCQL-DDQkGe44.js → nn-NO-6E72VCQL-Bgbgzvhm.js} +1 -1
  82. package/dist/dashboard/assets/{oc-FR-POXYY2M6-DufeHCWh.js → oc-FR-POXYY2M6-BMBbvfQp.js} +1 -1
  83. package/dist/dashboard/assets/{pa-IN-N4M65BXN-BUzelJDX.js → pa-IN-N4M65BXN-CgcUC9Zd.js} +1 -1
  84. package/dist/dashboard/assets/{percentages-BXMCSKIN-FxAvjywS.js → percentages-BXMCSKIN-AuedyVVS.js} +7 -7
  85. package/dist/dashboard/assets/{pica-Cek5bFnr.js → pica-DxO5y0j_.js} +1 -1
  86. package/dist/dashboard/assets/{pieDiagram-DEJITSTG-PgIrKPnB.js → pieDiagram-DEJITSTG-q-J8tI3B.js} +1 -1
  87. package/dist/dashboard/assets/{pl-PL-T2D74RX3-Bd-rxZs3.js → pl-PL-T2D74RX3-BaZSYTKJ.js} +1 -1
  88. package/dist/dashboard/assets/{pt-BR-5N22H2LF-D0QJGoo5.js → pt-BR-5N22H2LF-DSPF7aLm.js} +1 -1
  89. package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-DjumltMq.js → pt-PT-UZXXM6DQ-aoPTHC3m.js} +1 -1
  90. package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-C30tZOBh.js → quadrantDiagram-34T5L4WZ-CGbfFson.js} +1 -1
  91. package/dist/dashboard/assets/{requirementDiagram-MS252O5E-D3vhi-ZB.js → requirementDiagram-MS252O5E-ThxVmoCe.js} +1 -1
  92. package/dist/dashboard/assets/{ro-RO-JPDTUUEW-DmEo8cEd.js → ro-RO-JPDTUUEW-YfCwiIS2.js} +1 -1
  93. package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-ZHCu1nBu.js → ru-RU-B4JR7IUQ-zIVsVhsz.js} +1 -1
  94. package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-Cmbs-PxO.js → sankeyDiagram-XADWPNL6-BvEv917s.js} +1 -1
  95. package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-DlBqk4uQ.js → sequenceDiagram-FGHM5R23-JrhjN3MG.js} +1 -1
  96. package/dist/dashboard/assets/{si-LK-N5RQ5JYF-iuqtpRqI.js → si-LK-N5RQ5JYF-CegSAwip.js} +1 -1
  97. package/dist/dashboard/assets/{sk-SK-C5VTKIMK-BWFUWdaQ.js → sk-SK-C5VTKIMK-C_K-Uoai.js} +1 -1
  98. package/dist/dashboard/assets/{sl-SI-NN7IZMDC-irYTfiq_.js → sl-SI-NN7IZMDC-DHGXOoZl.js} +1 -1
  99. package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-B6T9ib8G.js → stateDiagram-FHFEXIEX-BzOtZESp.js} +1 -1
  100. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-CjcHIbj7.js +1 -0
  101. package/dist/dashboard/assets/{subset-shared.chunk-LTgWgeng.js → subset-shared.chunk-BWfXaC19.js} +1 -1
  102. package/dist/dashboard/assets/{subset-worker.chunk-CT_2iDuG.js → subset-worker.chunk-DHcqLDUZ.js} +1 -1
  103. package/dist/dashboard/assets/{sv-SE-XGPEYMSR-BvDzjArd.js → sv-SE-XGPEYMSR-BoNob2y3.js} +1 -1
  104. package/dist/dashboard/assets/{ta-IN-2NMHFXQM-DdsS_3Yq.js → ta-IN-2NMHFXQM-C8UHJYct.js} +1 -1
  105. package/dist/dashboard/assets/{th-TH-HPSO5L25-Duadkok3.js → th-TH-HPSO5L25-D7wP1iSi.js} +1 -1
  106. package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-CHTQqVpC.js → timeline-definition-GMOUNBTQ-Gwb0w7bX.js} +1 -1
  107. package/dist/dashboard/assets/{tr-TR-DEFEU3FU-CTnPpl_3.js → tr-TR-DEFEU3FU-He51QB-L.js} +1 -1
  108. package/dist/dashboard/assets/{uk-UA-QMV73CPH-CAqmQ01_.js → uk-UA-QMV73CPH-Blg5n9CR.js} +1 -1
  109. package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-tWl34rwo.js → vennDiagram-DHZGUBPP-y2S0dZjp.js} +1 -1
  110. package/dist/dashboard/assets/{vi-VN-M7AON7JQ-Cz7FDG8R.js → vi-VN-M7AON7JQ-2z-4xcM3.js} +1 -1
  111. package/dist/dashboard/assets/{wardley-RL74JXVD-UjdnBcpJ.js → wardley-RL74JXVD-BNThyuCt.js} +1 -1
  112. package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-KhVWSzPf.js → wardleyDiagram-NUSXRM2D-Sljri5hz.js} +1 -1
  113. package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-SwtVQYTW.js → xychartDiagram-5P7HB3ND-BIFYd4_d.js} +1 -1
  114. package/dist/dashboard/assets/{zh-CN-LNUGB5OW-B7cbFS35.js → zh-CN-LNUGB5OW-DZ8sfmlq.js} +1 -1
  115. package/dist/dashboard/assets/{zh-HK-E62DVLB3-CLi9BFmp.js → zh-HK-E62DVLB3-Zvqwoloz.js} +1 -1
  116. package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-XAcgJHay.js → zh-TW-RAJ6MFWO-Ck_uDtMQ.js} +1 -1
  117. package/dist/dashboard/index.html +2 -2
  118. package/dist/index.js +931 -483
  119. package/package.json +1 -1
  120. package/dist/dashboard/assets/channel-C5p1t-nJ.js +0 -1
  121. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-sTJpbWV4.js +0 -1
  122. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-sTJpbWV4.js +0 -1
  123. package/dist/dashboard/assets/clone-DTslXBzp.js +0 -1
  124. package/dist/dashboard/assets/index-C9VT2u9E.js +0 -480
  125. package/dist/dashboard/assets/index-DoFaQKCx.css +0 -1
  126. package/dist/dashboard/assets/linear-B6cMUkoc.js +0 -1
  127. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-CN0hAOp7.js +0 -1
package/README.md CHANGED
@@ -19,8 +19,10 @@
19
19
  <a href="#skills">Skills</a> &nbsp;&middot;&nbsp;
20
20
  <a href="#staying-up-to-date">Updating</a> &nbsp;&middot;&nbsp;
21
21
  <a href="#dashboard">Dashboard</a> &nbsp;&middot;&nbsp;
22
+ <a href="#desktop-app">Desktop App</a> &nbsp;&middot;&nbsp;
22
23
  <a href="#council">Council</a> &nbsp;&middot;&nbsp;
23
24
  <a href="#memory-recall">Memory Recall</a> &nbsp;&middot;&nbsp;
25
+ <a href="#federation">Federation</a> &nbsp;&middot;&nbsp;
24
26
  <a href="#commands">Commands</a> &nbsp;&middot;&nbsp;
25
27
  <a href="DEEP-DIVE.md">Deep Dive</a>
26
28
  </p>
@@ -139,7 +141,7 @@ flowchart LR
139
141
  curl -fsSL https://cdn.jsdelivr.net/npm/dreamcontext/install.sh | sh
140
142
  ```
141
143
 
142
- > Served from the published npm package via CDN — works with a private repo, no GitHub access needed.
144
+ > Served from the published npm package via CDN — works with a private repo, no GitHub access needed. On macOS this also installs the optional [desktop app](#desktop-app) into `~/Applications` (skip with `DREAMCONTEXT_INSTALL_NO_APP=1`).
143
145
 
144
146
  **Manual install (npm):**
145
147
 
@@ -214,7 +216,9 @@ your-project/
214
216
  │ │ ├── dreamcontext-explore.md
215
217
  │ │ ├── sleep-tasks.md # RemSleep specialists —
216
218
  │ │ ├── sleep-state.md # the agent fans out to
217
- │ │ └── sleep-product.md # these in parallel
219
+ │ │ ├── sleep-product.md # these three in parallel
220
+ │ │ ├── sleep-federation.md # conditional: when peer connections exist
221
+ │ │ └── sleep-migration.md # conditional: when a migration is pending
218
222
  │ └── settings.json # 7 hooks (see Commands → System)
219
223
  ```
220
224
 
@@ -357,6 +361,26 @@ It also ships a built-in **“What is this?”** explainer page — a full landi
357
361
 
358
362
  Light and dark mode with system preference detection. Brand palette: purple-to-magenta gradient. Visby CF font with system font fallback.
359
363
 
364
+ ## Desktop App
365
+
366
+ > **macOS beta.** A native **Tauri 2** app that wraps the same dashboard server, so you manage every project from one window instead of a localhost tab per repo. Ships via the desktop release (and the macOS one-line installer), not the npm package.
367
+
368
+ ```bash
369
+ dreamcontext app install # Install to ~/Applications (no admin, no quarantine prompt)
370
+ dreamcontext app update # Update the installed app to the latest release
371
+ dreamcontext app status # Show installed app version and state
372
+ ```
373
+
374
+ - **Multi-vault launcher.** The app lists every registered [vault](#federation) and opens each project in its **own window** — multi-vault is multi-window over one shared Node server, with each window pinned to its vault via a request header.
375
+ - **In-app onboarding, no terminal.** A quiz-style wizard creates a brand-new project (native folder picker) or initializes an existing folder, scaffolds `_dream_context/`, runs `setup`, and best-effort installs the global CLI. It's deterministic and LLM-free; the success screen hands you a prompt to paste into Claude Code for the rich enrichment pass.
376
+ - **Sleepy — notch quick-capture _(beta)_.** A global-hotkey companion that drops a transparent notch panel over whatever you're doing, with an animated mascot whose mood follows your sleep debt. Pick a vault, type a thought, and choose a mode:
377
+ - **Learn** — saves the note to project memory, then enriches it.
378
+ - **Ask** — one-shot Q&A about the project; nothing is saved.
379
+ - **Sleep** — triggers a full consolidation cycle for that vault from the notch.
380
+ - **Continuous updates without Apple notarization.** The whole delivery path is CLI/curl-driven, so Gatekeeper's notarization check never fires (ad-hoc signing satisfies Apple Silicon). The app prefers your globally-installed, auto-upgrading CLI over its bundled copy, so ~95% of changes ride the normal CLI upgrade with no app rebuild. Downloaded artifacts require a matching `.sha256` or the install refuses.
381
+
382
+ > The desktop app is a working local beta — not yet Apple-signed/notarized, so first launch may need a right-click → Open. Windows/Linux are nice-to-have for later.
383
+
360
384
  ## Council
361
385
 
362
386
  **Multi-persona debates for hard decisions.** When a question is too load-bearing for a single model pass — architecture calls, hiring reviews, risk-heavy migrations, brand critiques — a council lets you convene N personas, run them through N rounds of structured deliberation, and synthesize a verdict that cites the contributing voices.
@@ -426,6 +450,42 @@ Hook injection is **ON by default**: top hits are auto-surfaced to the agent on
426
450
 
427
451
  **Recent CHANGELOG in the snapshot is tiered**: top 3 entries detailed (summary + ~300 char body), next 10 titles-only under an "Older" subheading. Everything older still lives in `CHANGELOG.json` and is reachable through `memory recall --types changelog`.
428
452
 
453
+ ## Federation
454
+
455
+ Most people end up with more than one dreamcontext project. **Federation** lets those projects discover each other, recall across each other, and quietly share consolidated knowledge — all opt-in, all local, no server in the middle.
456
+
457
+ It starts with a **global vault registry** — every project you register is a *vault* the CLI (and the [desktop app](#desktop-app)) can address by name.
458
+
459
+ ```bash
460
+ dreamcontext vaults add <name> <path> # Register a project directory as a vault
461
+ dreamcontext vaults discover [root] # Find every _dream_context/ project under a tree
462
+ dreamcontext vaults discover ~/projects --register # …and register the new ones (idempotent)
463
+ dreamcontext vaults list # List all registered vaults
464
+ dreamcontext vaults remove <name> # Unregister a vault
465
+ ```
466
+
467
+ **Cross-vault recall.** Point a recall at other vaults and it spans them, returning hits tagged with their source vault. Only vaults you've marked shareable are reachable.
468
+
469
+ ```bash
470
+ dreamcontext config shareable on # Allow this vault to be recalled by peers
471
+ dreamcontext memory recall "<query>" --vault other-project # Also search a named vault (repeatable)
472
+ dreamcontext memory recall "<query>" --connected # Span this vault + its out/both connections
473
+ dreamcontext memory recall "<query>" --all-vaults # Span this vault + every shareable vault
474
+ ```
475
+
476
+ **Connections + the sleep-driven digest inbox.** Connect two vaults and, during sleep consolidation, a conditional `sleep-federation` specialist pushes a recall-filtered **digest** of what changed into each consenting peer's inbox. The receiving project ingests those entries as first-class knowledge on its next drain — so a decision made in one repo can surface in a sibling repo without copy-paste.
477
+
478
+ ```bash
479
+ dreamcontext connect <vault> --direction both --topics api,auth # Connect to a peer (out | in | both)
480
+ dreamcontext connections # Inspect this vault's federation connections
481
+ dreamcontext disconnect <vault> # Remove a connection
482
+ dreamcontext federation status # Inbox counts + per-connection sync watermarks
483
+ dreamcontext federation sync --dry-run # Preview the digests a sleep cycle would push
484
+ dreamcontext federation drain # Ingest pending inbox entries as knowledge, then consume them
485
+ ```
486
+
487
+ Federation is **read-only and consent-gated by construction**: the browser-reachable dashboard route can only *preview* digests, never write into a peer; all writes live in the CLI (run by the sleep specialist), where the consent rule and watermark advance stay in one auditable place. Every ingested entry carries its provenance (origin vault, entry id, source timestamp). Dead or unreachable peers are marked stale and skipped, warned once.
488
+
429
489
  ## Commands
430
490
 
431
491
  ### Core
@@ -503,8 +563,11 @@ dreamcontext tasks sync-hooks install # best-effort post-commit/pr
503
563
  ```bash
504
564
  dreamcontext features create <name> # Create a feature PRD
505
565
  dreamcontext features insert <name> <section> <content>
566
+ dreamcontext features doctor # Audit PRD freshness (stale / orphaned / dangling refs)
506
567
  ```
507
568
 
569
+ Feature PRDs track freshness the same way knowledge does. `features doctor` reports which PRDs have gone stale, which have no linked task or release, and which reference things that no longer exist — so the sleep cycle (and you) can keep them in step with the code.
570
+
508
571
  ### Knowledge
509
572
 
510
573
  ```bash
@@ -523,6 +586,9 @@ Set `pinned: true` in frontmatter to auto-load a knowledge file in every snapsho
523
586
  dreamcontext memory recall <query...> # BM25 search over knowledge + features + tasks + memory + changelog
524
587
  dreamcontext memory recall <query...> --top 10 # Number of hits (1-50, default 5)
525
588
  dreamcontext memory recall <query...> --types knowledge,task,changelog
589
+ dreamcontext memory recall <query...> --vault other # Also search a named vault (repeatable)
590
+ dreamcontext memory recall <query...> --connected # Span this vault + its connected peers
591
+ dreamcontext memory recall <query...> --all-vaults # Span every shareable registered vault
526
592
  dreamcontext memory recall <query...> --json # Machine-readable
527
593
  dreamcontext memory recall <query...> --plain # No ANSI colors
528
594
  dreamcontext memory remember "<text>" # Writes a CHANGELOG entry (type=note, scope=quick by default)
@@ -605,6 +671,33 @@ dreamcontext council promote --to <knowledge-slug> # Promote verdict to knowl
605
671
 
606
672
  See the [Council](#council) section above for the full workflow.
607
673
 
674
+ ### Vaults & Federation
675
+
676
+ ```bash
677
+ dreamcontext vaults add <name> <path> # Register a project as a vault
678
+ dreamcontext vaults discover [root] # Find every _dream_context/ project under a tree
679
+ dreamcontext vaults discover [root] --register # …and register the new ones
680
+ dreamcontext vaults list # List registered vaults
681
+ dreamcontext vaults remove <name> # Unregister a vault
682
+ dreamcontext config shareable <on|off> # Allow/deny this vault being recalled by peers
683
+ dreamcontext connect <vault> [--direction out|in|both] [--topics a,b] # Connect to a peer
684
+ dreamcontext connections # Inspect federation connections
685
+ dreamcontext disconnect <vault> # Remove a connection
686
+ dreamcontext federation status # Inbox counts + per-connection sync watermarks
687
+ dreamcontext federation sync [--dry-run] # Push (or preview) digests into consenting peers
688
+ dreamcontext federation drain # Ingest pending inbox entries as knowledge
689
+ ```
690
+
691
+ See the [Federation](#federation) section above for the full workflow.
692
+
693
+ ### Desktop App (macOS)
694
+
695
+ ```bash
696
+ dreamcontext app install # Install the desktop app to ~/Applications
697
+ dreamcontext app update # Update the installed app
698
+ dreamcontext app status # Show installed app version and state
699
+ ```
700
+
608
701
  ### Dashboard
609
702
 
610
703
  ```bash
@@ -647,8 +740,9 @@ dreamcontext install-claude-md # Legacy alias: CLAUDE.md only
647
740
 
648
741
  ## Works With
649
742
 
650
- - **Claude Code**: full support via skill, 5 core sub-agents (initializer, explore, and the three RemSleep specialists — sleep-tasks, sleep-state, sleep-product), 7 hooks, plus optional pack sub-agents (council persona/synthesizer, multi-review specialists, goal-skill orchestrators)
743
+ - **Claude Code**: full support via skill, core sub-agents (initializer, explore, the three primary RemSleep specialists — sleep-tasks, sleep-state, sleep-product — plus conditional sleep-federation and sleep-migration specialists), 7 hooks, plus optional pack sub-agents (council persona/synthesizer, multi-review specialists, goal-skill orchestrators)
651
744
  - **Codex**: project-level skills (`.agents/skills`), managed `AGENTS.md`, native `.codex/agents/*.toml`, and managed `.codex/config.toml` hooks (best-effort parity where event semantics differ)
745
+ - **Desktop app (macOS beta)**: native Tauri 2 multi-vault launcher with in-app onboarding and the Sleepy notch quick-capture companion — wraps the same dashboard server (`dreamcontext app install`)
652
746
  - **Web Dashboard**: local UI with Kanban, Core editor, Knowledge, Features, Brain graph, Sleep tracker, and Council Hall (ships in the package)
653
747
  - **Obsidian**: `_dream_context/` can be opened as an Obsidian vault; the directory is scaffolded with curated vault settings at `dreamcontext init` time
654
748
 
@@ -176,6 +176,26 @@ For each knowledge candidate (research finding, sleep-state flag, extracted over
176
176
  | Overflow extracted from core file (one-line reference left there) | `dreamcontext knowledge create <slug>` and paste the extracted content |
177
177
  | Cross-cutting finding from your own features pass | Capture inline (no need to flag — you own both domains this cycle) |
178
178
 
179
+ #### B1.5. Depth gating — what you may actually DO this cycle
180
+
181
+ Your orchestrator brief states a `depth: <light|standard|deep>`. **Destructive/expensive knowledge ops run ONLY at `deep`.** Tag every action you are about to take:
182
+
183
+ | Tier | Allowed at light/standard? | Actions |
184
+ |---|---|---|
185
+ | **Non-destructive** | ✅ yes (any depth) | create a new file, extend an existing file, retag, flip `pinned`, tick checkboxes, append a section |
186
+ | **Deep-only** | ❌ no — `deep` required | merge-with-delete (fold two files into one and delete the loser), summarize-and-replace still-valid detail, archive/delete a stale file |
187
+
188
+ **At light/standard:** if you spot a merge or deletion candidate, do NOT act on it — **flag it in your report** ("merge candidates: `<a>` + `<b>`") so the next deep cycle (or the user via `sleep start --deep` / desktop Sleep) handles it. The agent MAY bump one tier with a stated reason if signals clearly warrant it (e.g. two exact-duplicate files at standard), but state the bump and reason explicitly in your report.
189
+
190
+ **Archive-before-delete safety net (deep only, MANDATORY):** before ANY deep-tier merge-with-delete or summarize-and-replace, FIRST copy the file you are about to lose to a dated archive:
191
+
192
+ ```bash
193
+ mkdir -p _dream_context/knowledge/.archive
194
+ cp _dream_context/knowledge/<slug>.md "_dream_context/knowledge/.archive/<slug>-$(date +%Y%m%d).md"
195
+ ```
196
+
197
+ The dated archive copy is the recovery net; the "Dropped-but-load-bearing self-check" report line is the audit signal. Both are required for every destructive op.
198
+
179
199
  #### B2. Create vs. extend — the consolidation rubric
180
200
 
181
201
  **A knowledge file is a tag-able identity, not a dumping ground.** Aim for the *fewest* files that keep each topic cleanly findable. Fragmenting one topic across many near-duplicate slugs makes tags noisy and recall worse; cramming unrelated topics into one super-file makes tags meaningless. Pick the boundary on purpose.
@@ -341,6 +361,8 @@ dreamcontext taxonomy resolve <tag>
341
361
  - taxonomy init: no-op (core/taxonomy.json already exists)
342
362
  - audit: 2 nonCanonical tags fixed (knowledge/auth-design.md: auth → domain:security; state/task-slug.md: db → domain:database)
343
363
  - Domain Vocabulary: added 'ripple' via `taxonomy add topic:ripple`, added alias 'bookmarking' → 'topic:sleep' via `taxonomy alias bookmarking topic:sleep`
364
+
365
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/research finding you saw but did NOT promote into a feature/knowledge file, with the reason>
344
366
  ```
345
367
 
346
368
  ## Rules
@@ -189,7 +189,7 @@ dreamcontext defaults to single-person. When you have **corroborated evidence**
189
189
  **Detection gate — require ≥2 corroborated signals** before flipping a project to multi-person (this gate prevents false positives; one weak signal is never enough):
190
190
 
191
191
  - **Self-identification in user turns** — a person names themselves or another teammate ("this is Ada", "Mehmet asked me to…", "I'm covering for Lina").
192
- - **Distinct git authors since the epoch** — `git log --since="$CUTOFF" --format='%an <%ae>' | sort -u` returns more than one real human author (ignore bots/CI like `github-actions`, `dependabot`).
192
+ - **Distinct git authors since the epoch** — `git log --since="$CUTOFF" --format='%an <%ae>' | sort -u` returns more than one real human author. Apply the **shared bot-filter** (drop any author whose kebab-case slug contains `github-actions` or `dependabot`) — this is the same `BOT_SLUG_FRAGMENTS` list `attributeByPerson` in `src/lib/attribution.ts` uses, so per-person attribution stays consistent with detection.
193
193
  - **Distinct voice / handoff** — the transcript shows a clear authorship handoff or a different working style/voice than the established user.
194
194
 
195
195
  ```bash
@@ -273,6 +273,8 @@ You do **not** edit knowledge files. Produce flags for `sleep-product` to act on
273
273
 
274
274
  ### Cross-domain mentions (for other specialists)
275
275
  - (none) | OR: research finding worth long-term retention — flagging for sleep-product
276
+
277
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/decision you saw but did NOT promote into changelog/core/2.memory.md, with the reason>
276
278
  ```
277
279
 
278
280
  ## Rules
@@ -100,7 +100,7 @@ Untracked, genuinely-separate work is invisible to future sessions — always li
100
100
 
101
101
  ### 2.5. Person attribution (multi-person projects only)
102
102
 
103
- When the project's `.config.json` `people` array has **>1 entry**, the person responsible for a task's progress this cycle must be recorded as a `person:<slug>` tag in the task's frontmatter `tags` array. Slug is kebab-case matching the roster (e.g., `person:mehmet`, `person:ada`). Determine attribution from the same signals sleep-state uses for Pass B.5 (git `%an` on the commits, self-identification in the session transcript).
103
+ When the project's `.config.json` `people` array has **>1 entry**, the person responsible for a task's progress this cycle must be recorded as a `person:<slug>` tag in the task's frontmatter `tags` array. Slug is kebab-case matching the roster (e.g., `person:mehmet`, `person:ada`). Determine attribution from the same signals sleep-state uses for Pass B.5 (git `%an` on the commits, self-identification in the session transcript), applying the **shared bot-filter** — drop any author whose kebab-case slug contains `github-actions` or `dependabot` (the `BOT_SLUG_FRAGMENTS` list in `src/lib/attribution.ts`, consumed by `attributeByPerson`). Never tag a task `person:github-actions`.
104
104
 
105
105
  ```bash
106
106
  # Read the current roster
@@ -194,6 +194,8 @@ Never silently delete a task and never auto-complete — `in_review` with an exp
194
194
  - Staleness sweep: <slug> in_review ("stale 21+ days, appears abandoned"), <slug> priority high→medium (untouched 30d), 2 tasks left as-is (genuinely planned)
195
195
  - Cross-domain mentions: <slug> includes a memory-worthy decision about JWT — flagging for sleep-state
196
196
  - Skipped: <session_id> had no actionable task signal
197
+
198
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/task signal you saw but did NOT fold into a task changelog/body, with the reason>
197
199
  ```
198
200
 
199
201
  ## Rules
@@ -176,6 +176,26 @@ For each knowledge candidate (research finding, sleep-state flag, extracted over
176
176
  | Overflow extracted from core file (one-line reference left there) | `dreamcontext knowledge create <slug>` and paste the extracted content |
177
177
  | Cross-cutting finding from your own features pass | Capture inline (no need to flag — you own both domains this cycle) |
178
178
 
179
+ #### B1.5. Depth gating — what you may actually DO this cycle
180
+
181
+ Your orchestrator brief states a `depth: <light|standard|deep>`. **Destructive/expensive knowledge ops run ONLY at `deep`.** Tag every action you are about to take:
182
+
183
+ | Tier | Allowed at light/standard? | Actions |
184
+ |---|---|---|
185
+ | **Non-destructive** | ✅ yes (any depth) | create a new file, extend an existing file, retag, flip `pinned`, tick checkboxes, append a section |
186
+ | **Deep-only** | ❌ no — `deep` required | merge-with-delete (fold two files into one and delete the loser), summarize-and-replace still-valid detail, archive/delete a stale file |
187
+
188
+ **At light/standard:** if you spot a merge or deletion candidate, do NOT act on it — **flag it in your report** ("merge candidates: `<a>` + `<b>`") so the next deep cycle (or the user via `sleep start --deep` / desktop Sleep) handles it. The agent MAY bump one tier with a stated reason if signals clearly warrant it (e.g. two exact-duplicate files at standard), but state the bump and reason explicitly in your report.
189
+
190
+ **Archive-before-delete safety net (deep only, MANDATORY):** before ANY deep-tier merge-with-delete or summarize-and-replace, FIRST copy the file you are about to lose to a dated archive:
191
+
192
+ ```bash
193
+ mkdir -p _dream_context/knowledge/.archive
194
+ cp _dream_context/knowledge/<slug>.md "_dream_context/knowledge/.archive/<slug>-$(date +%Y%m%d).md"
195
+ ```
196
+
197
+ The dated archive copy is the recovery net; the "Dropped-but-load-bearing self-check" report line is the audit signal. Both are required for every destructive op.
198
+
179
199
  #### B2. Create vs. extend — the consolidation rubric
180
200
 
181
201
  **A knowledge file is a tag-able identity, not a dumping ground.** Aim for the *fewest* files that keep each topic cleanly findable. Fragmenting one topic across many near-duplicate slugs makes tags noisy and recall worse; cramming unrelated topics into one super-file makes tags meaningless. Pick the boundary on purpose.
@@ -341,6 +361,8 @@ dreamcontext taxonomy resolve <tag>
341
361
  - taxonomy init: no-op (core/taxonomy.json already exists)
342
362
  - audit: 2 nonCanonical tags fixed (knowledge/auth-design.md: auth → domain:security; state/task-slug.md: db → domain:database)
343
363
  - Domain Vocabulary: added 'ripple' via `taxonomy add topic:ripple`, added alias 'bookmarking' → 'topic:sleep' via `taxonomy alias bookmarking topic:sleep`
364
+
365
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/research finding you saw but did NOT promote into a feature/knowledge file, with the reason>
344
366
  ```
345
367
 
346
368
  ## Rules
@@ -189,7 +189,7 @@ dreamcontext defaults to single-person. When you have **corroborated evidence**
189
189
  **Detection gate — require ≥2 corroborated signals** before flipping a project to multi-person (this gate prevents false positives; one weak signal is never enough):
190
190
 
191
191
  - **Self-identification in user turns** — a person names themselves or another teammate ("this is Ada", "Mehmet asked me to…", "I'm covering for Lina").
192
- - **Distinct git authors since the epoch** — `git log --since="$CUTOFF" --format='%an <%ae>' | sort -u` returns more than one real human author (ignore bots/CI like `github-actions`, `dependabot`).
192
+ - **Distinct git authors since the epoch** — `git log --since="$CUTOFF" --format='%an <%ae>' | sort -u` returns more than one real human author. Apply the **shared bot-filter** (drop any author whose kebab-case slug contains `github-actions` or `dependabot`) — this is the same `BOT_SLUG_FRAGMENTS` list `attributeByPerson` in `src/lib/attribution.ts` uses, so per-person attribution stays consistent with detection.
193
193
  - **Distinct voice / handoff** — the transcript shows a clear authorship handoff or a different working style/voice than the established user.
194
194
 
195
195
  ```bash
@@ -273,6 +273,8 @@ You do **not** edit knowledge files. Produce flags for `sleep-product` to act on
273
273
 
274
274
  ### Cross-domain mentions (for other specialists)
275
275
  - (none) | OR: research finding worth long-term retention — flagging for sleep-product
276
+
277
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/decision you saw but did NOT promote into changelog/core/2.memory.md, with the reason>
276
278
  ```
277
279
 
278
280
  ## Rules
@@ -100,7 +100,7 @@ Untracked, genuinely-separate work is invisible to future sessions — always li
100
100
 
101
101
  ### 2.5. Person attribution (multi-person projects only)
102
102
 
103
- When the project's `.config.json` `people` array has **>1 entry**, the person responsible for a task's progress this cycle must be recorded as a `person:<slug>` tag in the task's frontmatter `tags` array. Slug is kebab-case matching the roster (e.g., `person:mehmet`, `person:ada`). Determine attribution from the same signals sleep-state uses for Pass B.5 (git `%an` on the commits, self-identification in the session transcript).
103
+ When the project's `.config.json` `people` array has **>1 entry**, the person responsible for a task's progress this cycle must be recorded as a `person:<slug>` tag in the task's frontmatter `tags` array. Slug is kebab-case matching the roster (e.g., `person:mehmet`, `person:ada`). Determine attribution from the same signals sleep-state uses for Pass B.5 (git `%an` on the commits, self-identification in the session transcript), applying the **shared bot-filter** — drop any author whose kebab-case slug contains `github-actions` or `dependabot` (the `BOT_SLUG_FRAGMENTS` list in `src/lib/attribution.ts`, consumed by `attributeByPerson`). Never tag a task `person:github-actions`.
104
104
 
105
105
  ```bash
106
106
  # Read the current roster
@@ -194,6 +194,8 @@ Never silently delete a task and never auto-complete — `in_review` with an exp
194
194
  - Staleness sweep: <slug> in_review ("stale 21+ days, appears abandoned"), <slug> priority high→medium (untouched 30d), 2 tasks left as-is (genuinely planned)
195
195
  - Cross-domain mentions: <slug> includes a memory-worthy decision about JWT — flagging for sleep-state
196
196
  - Skipped: <session_id> had no actionable task signal
197
+
198
+ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/task signal you saw but did NOT fold into a task changelog/body, with the reason>
197
199
  ```
198
200
 
199
201
  ## Rules
@@ -1,4 +1,4 @@
1
- import{bt as jc,bu as I0,aH as pS,bv as xt,bw as Ip,bx as mS,by as gS,bz as _S,bA as xS,bB as yS,bq as vS,br as bS,bC as B0,aC as SS,bD as TS,bE as MS,bF as ES,bG as xg,bH as yg,bI as AS,bJ as k,bK as $s,bL as wS,bM as RS,bN as CS,bO as NS}from"./index-C9VT2u9E.js";import{_ as Bi}from"./extends-CF3RwP-h.js";function PS(r){var e=jc(.1),t,n,i;typeof r!="function"&&(r=jc(r==null?0:+r));function s(a){for(var l=0,c=t.length,u;l<c;++l)u=t[l],u.vz+=(i[l]-u.z)*n[l]*a}function o(){if(t){var a,l=t.length;for(n=new Array(l),i=new Array(l),a=0;a<l;++a)n[a]=isNaN(i[a]=+r(t[a],a,t))?0:+e(t[a],a,t)}}return s.initialize=function(a){t=a,o()},s.strength=function(a){return arguments.length?(e=typeof a=="function"?a:jc(+a),o(),s):e},s.z=function(a){return arguments.length?(r=typeof a=="function"?a:jc(+a),o(),s):r},s}/**
1
+ import{bt as jc,bu as I0,aH as pS,bv as xt,bw as Ip,bx as mS,by as gS,bz as _S,bA as xS,bB as yS,bq as vS,br as bS,bC as B0,aC as SS,bD as TS,bE as MS,bF as ES,bG as xg,bH as yg,bI as AS,bJ as k,bK as $s,bL as wS,bM as RS,bN as CS,bO as NS}from"./index-rIZLhbl7.js";import{_ as Bi}from"./extends-CF3RwP-h.js";function PS(r){var e=jc(.1),t,n,i;typeof r!="function"&&(r=jc(r==null?0:+r));function s(a){for(var l=0,c=t.length,u;l<c;++l)u=t[l],u.vz+=(i[l]-u.z)*n[l]*a}function o(){if(t){var a,l=t.length;for(n=new Array(l),i=new Array(l),a=0;a<l;++a)n[a]=isNaN(i[a]=+r(t[a],a,t))?0:+e(t[a],a,t)}}return s.initialize=function(a){t=a,o()},s.strength=function(a){return arguments.length?(e=typeof a=="function"?a:jc(+a),o(),s):e},s.z=function(a){return arguments.length?(r=typeof a=="function"?a:jc(+a),o(),s):r},s}/**
2
2
  * @license
3
3
  * Copyright 2010-2026 Three.js Authors
4
4
  * SPDX-License-Identifier: MIT
@@ -1 +1 @@
1
- import{aK as A,aL as S,a_ as P,aJ as W,bY as ln,bZ as gn,b_ as dn,b$ as z,c0 as hn,bT as pn,c1 as G,b1 as N,b6 as m,b9 as R,c2 as An,b0 as U,b4 as _n,c3 as wn,bW as on,aM as V,bU as On,c4 as I}from"./index-C9VT2u9E.js";function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var K=P?P.prototype:void 0,B=K?K.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(S(n))return B?B.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Pn(){}function cn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function En(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function yn(n){return n!==n}function Tn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?Tn(n,r,e):En(n,yn,e)}function bn(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function x(n){return W(n)?ln(n):gn(n)}var In=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ln=/^\w*$/;function M(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||S(n)?!0:Ln.test(n)||!In.test(n)||r!=null&&n in Object(r)}var Sn=500;function xn(n){var r=dn(n,function(i){return e.size===Sn&&e.clear(),i}),e=r.cache;return r}var Mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$n=/\\(\\)?/g,Cn=xn(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Mn,function(e,i,f,t){r.push(f?t.replace($n,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:M(n,r)?[n]:Cn(Dn(n))}function b(n){if(typeof n=="string"||S(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[b(r[e++])];return e&&e==i?n:void 0}function Fn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function Gn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Kr(n,r,e,i,f){var t=-1,u=n.length;for(e||(e=Gn),f||(f=[]);++t<u;){var s=n[t];e(s)?rn(f,s):i||(f[f.length]=s)}return f}function Nn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var u=n[e];r(u,e,n)&&(t[f++]=u)}return t}function mn(){return[]}var Un=Object.prototype,Kn=Un.propertyIsEnumerable,Z=Object.getOwnPropertySymbols,Bn=Z?function(n){return n==null?[]:(n=Object(n),en(Z(n),function(r){return Kn.call(n,r)}))}:mn;function Hn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function q(n){return Hn(n,x,Bn)}var Zn="__lodash_hash_undefined__";function qn(n){return this.__data__.set(n,Zn),this}function Yn(n){return this.__data__.has(n)}function c(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new hn;++r<e;)this.add(n[r])}c.prototype.add=c.prototype.push=qn;c.prototype.has=Yn;function Jn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Xn=1,Qn=2;function fn(n,r,e,i,f,t){var u=e&Xn,s=n.length,a=r.length;if(s!=a&&!(u&&a>s))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,w=e&Qn?new c:void 0;for(t.set(n,r),t.set(r,n);++l<s;){var p=n[l],_=r[l];if(i)var o=u?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(o!==void 0){if(o)continue;d=!1;break}if(w){if(!Jn(r,function(O,v){if(!tn(w,v)&&(p===O||f(p,O,e,i,t)))return w.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Wn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function $(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var zn=1,Vn=2,kn="[object Boolean]",jn="[object Date]",nr="[object Error]",rr="[object Map]",er="[object Number]",ir="[object RegExp]",tr="[object Set]",fr="[object String]",ur="[object Symbol]",sr="[object ArrayBuffer]",ar="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function lr(n,r,e,i,f,t,u){switch(e){case ar:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case sr:return!(n.byteLength!=r.byteLength||!t(new G(n),new G(r)));case kn:case jn:case er:return pn(+n,+r);case nr:return n.name==r.name&&n.message==r.message;case ir:case fr:return n==r+"";case rr:var s=Wn;case tr:var a=i&zn;if(s||(s=$),n.size!=r.size&&!a)return!1;var h=u.get(n);if(h)return h==r;i|=Vn,u.set(n,r);var g=fn(s(n),s(r),i,f,t,u);return u.delete(n),g;case ur:if(L)return L.call(n)==L.call(r)}return!1}var gr=1,dr=Object.prototype,hr=dr.hasOwnProperty;function pr(n,r,e,i,f,t){var u=e&gr,s=q(n),a=s.length,h=q(r),g=h.length;if(a!=g&&!u)return!1;for(var l=a;l--;){var d=s[l];if(!(u?d in r:hr.call(r,d)))return!1}var w=t.get(n),p=t.get(r);if(w&&p)return w==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var o=u;++l<a;){d=s[l];var O=n[d],v=r[d];if(i)var F=u?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(F===void 0?O===v||f(O,v,e,i,t):F)){_=!1;break}o||(o=d=="constructor")}if(_&&!o){var E=n.constructor,y=r.constructor;E!=y&&"constructor"in n&&"constructor"in r&&!(typeof E=="function"&&E instanceof E&&typeof y=="function"&&y instanceof y)&&(_=!1)}return t.delete(n),t.delete(r),_}var Ar=1,J="[object Arguments]",X="[object Array]",T="[object Object]",_r=Object.prototype,Q=_r.hasOwnProperty;function wr(n,r,e,i,f,t){var u=A(n),s=A(r),a=u?X:N(n),h=s?X:N(r);a=a==J?T:a,h=h==J?T:h;var g=a==T,l=h==T,d=a==h;if(d&&m(n)){if(!m(r))return!1;u=!0,g=!1}if(d&&!g)return t||(t=new R),u||An(n)?fn(n,r,e,i,f,t):lr(n,r,a,e,i,f,t);if(!(e&Ar)){var w=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(w||p){var _=w?n.value():n,o=p?r.value():r;return t||(t=new R),f(_,o,e,i,t)}}return d?(t||(t=new R),pr(n,r,e,i,f,t)):!1}function C(n,r,e,i,f){return n===r?!0:n==null||r==null||!U(n)&&!U(r)?n!==n&&r!==r:wr(n,r,e,i,C,f)}var or=1,Or=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var u=e[f];if(u[2]?u[1]!==n[u[0]]:!(u[0]in n))return!1}for(;++f<t;){u=e[f];var s=u[0],a=n[s],h=u[1];if(u[2]){if(a===void 0&&!(s in n))return!1}else{var g=new R,l;if(!(l===void 0?C(h,a,or|Or,i,g):l))return!1}}return!0}function un(n){return n===n&&!_n(n)}function Pr(n){for(var r=x(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,un(f)]}return r}function sn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function cr(n){var r=Pr(n);return r.length==1&&r[0][2]?sn(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function Er(n,r){return n!=null&&r in Object(n)}function yr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var u=b(r[i]);if(!(t=n!=null&&e(n,u)))break;n=n[u]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&on(u,f)&&(A(n)||z(n)))}function Tr(n,r){return n!=null&&yr(n,r,Er)}var Rr=1,br=2;function Ir(n,r){return M(n)&&un(r)?sn(b(n),r):function(e){var i=Fn(e,n);return i===void 0&&i===r?Tr(e,n):C(r,i,Rr|br)}}function Lr(n){return function(r){return r==null?void 0:r[n]}}function Sr(n){return function(r){return nn(r,n)}}function xr(n){return M(n)?Lr(b(n)):Sr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Ir(n[0],n[1]):cr(n):xr(n)}function Mr(n,r){return n&&On(n,r,x)}function $r(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,u=Object(e);++t<f&&i(u[t],t,u)!==!1;);return e}}var D=$r(Mr);function Cr(n){return typeof n=="function"?n:V}function Br(n,r){var e=A(n)?cn:D;return e(n,Cr(r))}function Dr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Hr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function Fr(n,r,e,i,f){return f(n,function(t,u,s){e=i?(i=!1,t):r(e,t,u,s)}),e}function Zr(n,r,e){var i=A(n)?Nn:Fr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Gr=1/0,Nr=I&&1/$(new I([,-0]))[1]==Gr?function(n){return new I(n)}:Pn,mr=200;function qr(n,r,e){var i=-1,f=bn,t=n.length,u=!0,s=[],a=s;if(t>=mr){var h=r?null:Nr(n);if(h)return $(h);u=!1,f=tn,a=new c}else a=r?[]:s;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,u&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),s.push(g)}else f(a,l,e)||(a!==s&&a.push(l),s.push(g))}return s}export{D as a,Kr as b,an as c,vn as d,rn as e,Hn as f,Bn as g,cn as h,q as i,qr as j,x as k,Hr as l,Br as m,En as n,Cr as o,Mr as p,yr as q,Zr as r,mn as s,j as t,b as u,nn as v,Tr as w,Dn as x};
1
+ import{aK as A,aL as S,a_ as P,aJ as W,bY as ln,bZ as gn,b_ as dn,b$ as z,c0 as hn,bT as pn,c1 as G,b1 as N,b6 as m,b9 as R,c2 as An,b0 as U,b4 as _n,c3 as wn,bW as on,aM as V,bU as On,c4 as I}from"./index-rIZLhbl7.js";function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var K=P?P.prototype:void 0,B=K?K.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(S(n))return B?B.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Pn(){}function cn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function En(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function yn(n){return n!==n}function Tn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?Tn(n,r,e):En(n,yn,e)}function bn(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function x(n){return W(n)?ln(n):gn(n)}var In=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ln=/^\w*$/;function M(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||S(n)?!0:Ln.test(n)||!In.test(n)||r!=null&&n in Object(r)}var Sn=500;function xn(n){var r=dn(n,function(i){return e.size===Sn&&e.clear(),i}),e=r.cache;return r}var Mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$n=/\\(\\)?/g,Cn=xn(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Mn,function(e,i,f,t){r.push(f?t.replace($n,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:M(n,r)?[n]:Cn(Dn(n))}function b(n){if(typeof n=="string"||S(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[b(r[e++])];return e&&e==i?n:void 0}function Fn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function Gn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Kr(n,r,e,i,f){var t=-1,u=n.length;for(e||(e=Gn),f||(f=[]);++t<u;){var s=n[t];e(s)?rn(f,s):i||(f[f.length]=s)}return f}function Nn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var u=n[e];r(u,e,n)&&(t[f++]=u)}return t}function mn(){return[]}var Un=Object.prototype,Kn=Un.propertyIsEnumerable,Z=Object.getOwnPropertySymbols,Bn=Z?function(n){return n==null?[]:(n=Object(n),en(Z(n),function(r){return Kn.call(n,r)}))}:mn;function Hn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function q(n){return Hn(n,x,Bn)}var Zn="__lodash_hash_undefined__";function qn(n){return this.__data__.set(n,Zn),this}function Yn(n){return this.__data__.has(n)}function c(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new hn;++r<e;)this.add(n[r])}c.prototype.add=c.prototype.push=qn;c.prototype.has=Yn;function Jn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Xn=1,Qn=2;function fn(n,r,e,i,f,t){var u=e&Xn,s=n.length,a=r.length;if(s!=a&&!(u&&a>s))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,w=e&Qn?new c:void 0;for(t.set(n,r),t.set(r,n);++l<s;){var p=n[l],_=r[l];if(i)var o=u?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(o!==void 0){if(o)continue;d=!1;break}if(w){if(!Jn(r,function(O,v){if(!tn(w,v)&&(p===O||f(p,O,e,i,t)))return w.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Wn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function $(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var zn=1,Vn=2,kn="[object Boolean]",jn="[object Date]",nr="[object Error]",rr="[object Map]",er="[object Number]",ir="[object RegExp]",tr="[object Set]",fr="[object String]",ur="[object Symbol]",sr="[object ArrayBuffer]",ar="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function lr(n,r,e,i,f,t,u){switch(e){case ar:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case sr:return!(n.byteLength!=r.byteLength||!t(new G(n),new G(r)));case kn:case jn:case er:return pn(+n,+r);case nr:return n.name==r.name&&n.message==r.message;case ir:case fr:return n==r+"";case rr:var s=Wn;case tr:var a=i&zn;if(s||(s=$),n.size!=r.size&&!a)return!1;var h=u.get(n);if(h)return h==r;i|=Vn,u.set(n,r);var g=fn(s(n),s(r),i,f,t,u);return u.delete(n),g;case ur:if(L)return L.call(n)==L.call(r)}return!1}var gr=1,dr=Object.prototype,hr=dr.hasOwnProperty;function pr(n,r,e,i,f,t){var u=e&gr,s=q(n),a=s.length,h=q(r),g=h.length;if(a!=g&&!u)return!1;for(var l=a;l--;){var d=s[l];if(!(u?d in r:hr.call(r,d)))return!1}var w=t.get(n),p=t.get(r);if(w&&p)return w==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var o=u;++l<a;){d=s[l];var O=n[d],v=r[d];if(i)var F=u?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(F===void 0?O===v||f(O,v,e,i,t):F)){_=!1;break}o||(o=d=="constructor")}if(_&&!o){var E=n.constructor,y=r.constructor;E!=y&&"constructor"in n&&"constructor"in r&&!(typeof E=="function"&&E instanceof E&&typeof y=="function"&&y instanceof y)&&(_=!1)}return t.delete(n),t.delete(r),_}var Ar=1,J="[object Arguments]",X="[object Array]",T="[object Object]",_r=Object.prototype,Q=_r.hasOwnProperty;function wr(n,r,e,i,f,t){var u=A(n),s=A(r),a=u?X:N(n),h=s?X:N(r);a=a==J?T:a,h=h==J?T:h;var g=a==T,l=h==T,d=a==h;if(d&&m(n)){if(!m(r))return!1;u=!0,g=!1}if(d&&!g)return t||(t=new R),u||An(n)?fn(n,r,e,i,f,t):lr(n,r,a,e,i,f,t);if(!(e&Ar)){var w=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(w||p){var _=w?n.value():n,o=p?r.value():r;return t||(t=new R),f(_,o,e,i,t)}}return d?(t||(t=new R),pr(n,r,e,i,f,t)):!1}function C(n,r,e,i,f){return n===r?!0:n==null||r==null||!U(n)&&!U(r)?n!==n&&r!==r:wr(n,r,e,i,C,f)}var or=1,Or=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var u=e[f];if(u[2]?u[1]!==n[u[0]]:!(u[0]in n))return!1}for(;++f<t;){u=e[f];var s=u[0],a=n[s],h=u[1];if(u[2]){if(a===void 0&&!(s in n))return!1}else{var g=new R,l;if(!(l===void 0?C(h,a,or|Or,i,g):l))return!1}}return!0}function un(n){return n===n&&!_n(n)}function Pr(n){for(var r=x(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,un(f)]}return r}function sn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function cr(n){var r=Pr(n);return r.length==1&&r[0][2]?sn(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function Er(n,r){return n!=null&&r in Object(n)}function yr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var u=b(r[i]);if(!(t=n!=null&&e(n,u)))break;n=n[u]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&on(u,f)&&(A(n)||z(n)))}function Tr(n,r){return n!=null&&yr(n,r,Er)}var Rr=1,br=2;function Ir(n,r){return M(n)&&un(r)?sn(b(n),r):function(e){var i=Fn(e,n);return i===void 0&&i===r?Tr(e,n):C(r,i,Rr|br)}}function Lr(n){return function(r){return r==null?void 0:r[n]}}function Sr(n){return function(r){return nn(r,n)}}function xr(n){return M(n)?Lr(b(n)):Sr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Ir(n[0],n[1]):cr(n):xr(n)}function Mr(n,r){return n&&On(n,r,x)}function $r(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,u=Object(e);++t<f&&i(u[t],t,u)!==!1;);return e}}var D=$r(Mr);function Cr(n){return typeof n=="function"?n:V}function Br(n,r){var e=A(n)?cn:D;return e(n,Cr(r))}function Dr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Hr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function Fr(n,r,e,i,f){return f(n,function(t,u,s){e=i?(i=!1,t):r(e,t,u,s)}),e}function Zr(n,r,e){var i=A(n)?Nn:Fr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Gr=1/0,Nr=I&&1/$(new I([,-0]))[1]==Gr?function(n){return new I(n)}:Pn,mr=200;function qr(n,r,e){var i=-1,f=bn,t=n.length,u=!0,s=[],a=s;if(t>=mr){var h=r?null:Nr(n);if(h)return $(h);u=!1,f=tn,a=new c}else a=r?[]:s;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,u&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),s.push(g)}else f(a,l,e)||(a!==s&&a.push(l),s.push(g))}return s}export{D as a,Kr as b,an as c,vn as d,rn as e,Hn as f,Bn as g,cn as h,q as i,qr as j,x as k,Hr as l,Br as m,En as n,Cr as o,Mr as p,yr as q,Zr as r,mn as s,j as t,b as u,nn as v,Tr as w,Dn as x};
@@ -1,4 +1,4 @@
1
- import"./percentages-BXMCSKIN-FxAvjywS.js";import"./index-C9VT2u9E.js";import"./extends-CF3RwP-h.js";var u={paste:"لصق",pasteAsPlaintext:"اللصق كنص عادي",pasteCharts:"لصق الرسوم البيانية",selectAll:"تحديد الكل",multiSelect:"إضافة عنصر للتحديد",moveCanvas:"نقل لوح الرسم",cut:"قص",copy:"نسخ",copyAsPng:"نسخ إلى الحافظة بصيغة PNG",copyAsSvg:"نسخ إلى الحافظة بصيغة SVG",copyText:"نسخ إلى الحافظة كنص",copySource:"",convertToCode:"",bringForward:"جلب للأمام",sendToBack:"أرسل للخلف",bringToFront:"أحضر للأمام",sendBackward:"أرسل للخلف",delete:"حذف",copyStyles:"نسخ الأنماط",pasteStyles:"لصق الأنماط",stroke:"الخط",background:"الخلفية",fill:"التعبئة",strokeWidth:"سُمك الخط",strokeStyle:"نمط الخط",strokeStyle_solid:"متصل",strokeStyle_dashed:"متقطع",strokeStyle_dotted:"منقط",sloppiness:"الإمالة",opacity:"الشفافية",textAlign:"محاذاة النص",edges:"الحواف",sharp:"حادة",round:"دائرية",arrowheads:"رؤوس الأسهم",arrowhead_none:"لا شيء",arrowhead_arrow:"سهم",arrowhead_bar:"شريط",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"مثلث",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"حجم الخط",fontFamily:"نوع الخط",addWatermark:'إضافة "مصنوعة بواسطة Excalidraw"',handDrawn:"رسم باليد",normal:"عادي",code:"رمز",small:"صغير",medium:"متوسط",large:"كبير",veryLarge:"كبير جدا",solid:"كامل",hachure:"خطوط",zigzag:"متعرج",crossHatch:"خطوط متقطعة",thin:"نحيف",bold:"داكن",left:"الـيسار",center:"وسط",right:"يمين",extraBold:"عريض",architect:"معماري",artist:"رسام",cartoonist:"كرتوني",fileTitle:"إسم الملف",colorPicker:"منتقي اللون",canvasColors:"تستخدم على القماش",canvasBackground:"خلفية اللوحة",drawingCanvas:"لوحة الرسم",layers:"الطبقات",actions:"الإجراءات",language:"اللغة",liveCollaboration:"التعاون المباشر...",duplicateSelection:"تكرار",untitled:"غير معنون",name:"الاسم",yourName:"اسمك",madeWithExcalidraw:"مصنوعة بواسطة Excalidraw",group:"تحديد مجموعة",ungroup:"إلغاء تحديد مجموعة",collaborators:"المتعاونون",showGrid:"إظهار الشبكة",addToLibrary:"أضف إلى المكتبة",removeFromLibrary:"حذف من المكتبة",libraryLoadingMessage:"جارٍ تحميل المكتبة…",libraries:"تصفح المكتبات",loadingScene:"جاري تحميل المشهد…",align:"محاذاة",alignTop:"محاذاة إلى اﻷعلى",alignBottom:"محاذاة إلى اﻷسفل",alignLeft:"محاذاة إلى اليسار",alignRight:"محاذاة إلى اليمين",centerVertically:"توسيط عمودي",centerHorizontally:"توسيط أفقي",distributeHorizontally:"التوزيع الأفقي",distributeVertically:"التوزيع عمودياً",flipHorizontal:"قلب عامودي",flipVertical:"قلب أفقي",viewMode:"نمط العرض",share:"مشاركة",showStroke:"إظهار منتقي لون الخط",showBackground:"إظهار منتقي لون الخلفية",toggleTheme:"غير النمط",personalLib:"المكتبة الشخصية",excalidrawLib:"مكتبتنا",decreaseFontSize:"تصغير حجم الخط",increaseFontSize:"تكبير حجم الخط",unbindText:"فك ربط النص",bindText:"ربط النص بالحاوية",createContainerFromText:"نص مغلف في حاوية",link:{edit:"تعديل الرابط",editEmbed:"تحرير الرابط وإدراجه",create:"إنشاء رابط",createEmbed:"إنشاء رابط و إدراجه",label:"رابط",labelEmbed:"رابط و إدراج",empty:"لم يتم تعيين رابط"},lineEditor:{edit:"تحرير السطر",exit:"الخروج من المُحرر"},elementLock:{lock:"قفل",unlock:"فتح",lockAll:"قفل الكل",unlockAll:"فتح الكل"},statusPublished:"نُشر",sidebarLock:"إبقاء الشريط الجانبي مفتوح",selectAllElementsInFrame:"تحديد جميع العناصر في الإطار",removeAllElementsFromFrame:"إزالة جميع العناصر من الإطار",eyeDropper:"اختيار اللون من القماش",textToDiagram:"",prompt:""},A={noItems:"لا توجد عناصر أضيفت بعد...",hint_emptyLibrary:"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",hint_emptyPrivateLibrary:"حدد عنصر على القماش لإضافته هنا."},e={clearReset:"إعادة تعيين اللوحة",exportJSON:"صدر الملف",exportImage:"تصدير الصورة...",export:"حفظ إلى...",copyToClipboard:"نسخ إلى الحافظة",save:"احفظ للملف الحالي",saveAs:"حفظ كـ",load:"فتح",getShareableLink:"احصل على رابط المشاركة",close:"غلق",selectLanguage:"اختر اللغة",scrollBackToContent:"الرجوع إلى المحتوى",zoomIn:"تكبير",zoomOut:"تصغير",resetZoom:"إعادة تعيين الشاشة",menu:"القائمة",done:"تم",edit:"تعديل",undo:"تراجع",redo:"إعادة تنفيذ",resetLibrary:"إعادة ضبط المكتبة",createNewRoom:"إنشاء غرفة جديدة",fullScreen:"شاشة كاملة",darkMode:"الوضع المظلم",lightMode:"الوضع المضيء",zenMode:"وضع التأمل",objectsSnapMode:"التقط إلى العناصر",exitZenMode:"إلغاء الوضع الليلى",cancel:"إلغاء",clear:"مسح",remove:"إزالة",embed:"تبديل الإدراج",publishLibrary:"انشر",submit:"أرسل",confirm:"تأكيد",embeddableInteractionButton:"اضغط للتفاعل"},a={clearReset:"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",couldNotCreateShareableLink:"تعذر إنشاء رابطة المشاركة.",couldNotCreateShareableLinkTooBig:"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",couldNotLoadInvalidFile:"تعذر التحميل، الملف غير صالح",importBackendFailed:"فشل الاستيراد من الخادوم.",cannotExportEmptyCanvas:"لا يمكن تصدير لوحة فارغة.",couldNotCopyToClipboard:"تعذر النسخ إلى الحافظة.",decryptFailed:"تعذر فك تشفير البيانات.",uploadedSecurly:"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",loadSceneOverridePrompt:"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
1
+ import"./percentages-BXMCSKIN-AuedyVVS.js";import"./index-rIZLhbl7.js";import"./extends-CF3RwP-h.js";var u={paste:"لصق",pasteAsPlaintext:"اللصق كنص عادي",pasteCharts:"لصق الرسوم البيانية",selectAll:"تحديد الكل",multiSelect:"إضافة عنصر للتحديد",moveCanvas:"نقل لوح الرسم",cut:"قص",copy:"نسخ",copyAsPng:"نسخ إلى الحافظة بصيغة PNG",copyAsSvg:"نسخ إلى الحافظة بصيغة SVG",copyText:"نسخ إلى الحافظة كنص",copySource:"",convertToCode:"",bringForward:"جلب للأمام",sendToBack:"أرسل للخلف",bringToFront:"أحضر للأمام",sendBackward:"أرسل للخلف",delete:"حذف",copyStyles:"نسخ الأنماط",pasteStyles:"لصق الأنماط",stroke:"الخط",background:"الخلفية",fill:"التعبئة",strokeWidth:"سُمك الخط",strokeStyle:"نمط الخط",strokeStyle_solid:"متصل",strokeStyle_dashed:"متقطع",strokeStyle_dotted:"منقط",sloppiness:"الإمالة",opacity:"الشفافية",textAlign:"محاذاة النص",edges:"الحواف",sharp:"حادة",round:"دائرية",arrowheads:"رؤوس الأسهم",arrowhead_none:"لا شيء",arrowhead_arrow:"سهم",arrowhead_bar:"شريط",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"مثلث",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"حجم الخط",fontFamily:"نوع الخط",addWatermark:'إضافة "مصنوعة بواسطة Excalidraw"',handDrawn:"رسم باليد",normal:"عادي",code:"رمز",small:"صغير",medium:"متوسط",large:"كبير",veryLarge:"كبير جدا",solid:"كامل",hachure:"خطوط",zigzag:"متعرج",crossHatch:"خطوط متقطعة",thin:"نحيف",bold:"داكن",left:"الـيسار",center:"وسط",right:"يمين",extraBold:"عريض",architect:"معماري",artist:"رسام",cartoonist:"كرتوني",fileTitle:"إسم الملف",colorPicker:"منتقي اللون",canvasColors:"تستخدم على القماش",canvasBackground:"خلفية اللوحة",drawingCanvas:"لوحة الرسم",layers:"الطبقات",actions:"الإجراءات",language:"اللغة",liveCollaboration:"التعاون المباشر...",duplicateSelection:"تكرار",untitled:"غير معنون",name:"الاسم",yourName:"اسمك",madeWithExcalidraw:"مصنوعة بواسطة Excalidraw",group:"تحديد مجموعة",ungroup:"إلغاء تحديد مجموعة",collaborators:"المتعاونون",showGrid:"إظهار الشبكة",addToLibrary:"أضف إلى المكتبة",removeFromLibrary:"حذف من المكتبة",libraryLoadingMessage:"جارٍ تحميل المكتبة…",libraries:"تصفح المكتبات",loadingScene:"جاري تحميل المشهد…",align:"محاذاة",alignTop:"محاذاة إلى اﻷعلى",alignBottom:"محاذاة إلى اﻷسفل",alignLeft:"محاذاة إلى اليسار",alignRight:"محاذاة إلى اليمين",centerVertically:"توسيط عمودي",centerHorizontally:"توسيط أفقي",distributeHorizontally:"التوزيع الأفقي",distributeVertically:"التوزيع عمودياً",flipHorizontal:"قلب عامودي",flipVertical:"قلب أفقي",viewMode:"نمط العرض",share:"مشاركة",showStroke:"إظهار منتقي لون الخط",showBackground:"إظهار منتقي لون الخلفية",toggleTheme:"غير النمط",personalLib:"المكتبة الشخصية",excalidrawLib:"مكتبتنا",decreaseFontSize:"تصغير حجم الخط",increaseFontSize:"تكبير حجم الخط",unbindText:"فك ربط النص",bindText:"ربط النص بالحاوية",createContainerFromText:"نص مغلف في حاوية",link:{edit:"تعديل الرابط",editEmbed:"تحرير الرابط وإدراجه",create:"إنشاء رابط",createEmbed:"إنشاء رابط و إدراجه",label:"رابط",labelEmbed:"رابط و إدراج",empty:"لم يتم تعيين رابط"},lineEditor:{edit:"تحرير السطر",exit:"الخروج من المُحرر"},elementLock:{lock:"قفل",unlock:"فتح",lockAll:"قفل الكل",unlockAll:"فتح الكل"},statusPublished:"نُشر",sidebarLock:"إبقاء الشريط الجانبي مفتوح",selectAllElementsInFrame:"تحديد جميع العناصر في الإطار",removeAllElementsFromFrame:"إزالة جميع العناصر من الإطار",eyeDropper:"اختيار اللون من القماش",textToDiagram:"",prompt:""},A={noItems:"لا توجد عناصر أضيفت بعد...",hint_emptyLibrary:"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",hint_emptyPrivateLibrary:"حدد عنصر على القماش لإضافته هنا."},e={clearReset:"إعادة تعيين اللوحة",exportJSON:"صدر الملف",exportImage:"تصدير الصورة...",export:"حفظ إلى...",copyToClipboard:"نسخ إلى الحافظة",save:"احفظ للملف الحالي",saveAs:"حفظ كـ",load:"فتح",getShareableLink:"احصل على رابط المشاركة",close:"غلق",selectLanguage:"اختر اللغة",scrollBackToContent:"الرجوع إلى المحتوى",zoomIn:"تكبير",zoomOut:"تصغير",resetZoom:"إعادة تعيين الشاشة",menu:"القائمة",done:"تم",edit:"تعديل",undo:"تراجع",redo:"إعادة تنفيذ",resetLibrary:"إعادة ضبط المكتبة",createNewRoom:"إنشاء غرفة جديدة",fullScreen:"شاشة كاملة",darkMode:"الوضع المظلم",lightMode:"الوضع المضيء",zenMode:"وضع التأمل",objectsSnapMode:"التقط إلى العناصر",exitZenMode:"إلغاء الوضع الليلى",cancel:"إلغاء",clear:"مسح",remove:"إزالة",embed:"تبديل الإدراج",publishLibrary:"انشر",submit:"أرسل",confirm:"تأكيد",embeddableInteractionButton:"اضغط للتفاعل"},a={clearReset:"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",couldNotCreateShareableLink:"تعذر إنشاء رابطة المشاركة.",couldNotCreateShareableLinkTooBig:"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",couldNotLoadInvalidFile:"تعذر التحميل، الملف غير صالح",importBackendFailed:"فشل الاستيراد من الخادوم.",cannotExportEmptyCanvas:"لا يمكن تصدير لوحة فارغة.",couldNotCopyToClipboard:"تعذر النسخ إلى الحافظة.",decryptFailed:"تعذر فك تشفير البيانات.",uploadedSecurly:"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",loadSceneOverridePrompt:"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
2
2
 
3
3
  (إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)`,errorAddingToLibrary:"تعذر إضافة العنصر للمكتبة",errorRemovingFromLibrary:"تعذر إزالة العنصر من المكتبة",confirmAddLibrary:"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",imageDoesNotContainScene:"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟",cannotRestoreFromImage:"تعذر استعادة المشهد من ملف الصورة",invalidSceneUrl:"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.",resetLibrary:"هذا سوف يمسح مكتبتك. هل أنت متأكد؟",removeItemsFromsLibrary:"حذف {{count}} عنصر (عناصر) من المكتبة؟",invalidEncryptionKey:"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.",collabOfflineWarning:`لا يوجد اتصال بالانترنت.
4
4
  لن يتم حفظ التغييرات التي قمت بها!`},r={unsupportedFileType:"نوع الملف غير مدعوم.",imageInsertError:"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...",fileTooBig:"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.",svgImageInsertError:"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.",failedToFetchImage:"",invalidSVGString:"SVG غير صالح.",cannotResolveCollabServer:"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.",importLibraryError:"تعذر تحميل المكتبة",collabSaveFailed:"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.",collabSaveFailed_sizeExceeded:"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.",imageToolNotSupported:"",brave_measure_text_error:{line1:"يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.",line2:"قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.",line3:"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.",line4:"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>"},libraryElementTypeError:{embeddable:"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.",iframe:"",image:"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},o={selection:"تحديد",image:"إدراج صورة",rectangle:"مستطيل",diamond:"مضلع",ellipse:"دائرة",arrow:"سهم",line:"خط",freedraw:"رسم",text:"نص",library:"مكتبة",lock:"الحفاظ على أداة التحديد نشطة بعد الرسم",penMode:"وضع القلم - امنع اللمس",link:"إضافة/تحديث الرابط للشكل المحدد",eraser:"ممحاة",frame:"أداة الإطار",magicframe:"",embeddable:"تضمين ويب",laser:"مؤشر ليزر",hand:"يد (أداة الإزاحة)",extraTools:"المزيد من أﻷدوات",mermaidToExcalidraw:"",magicSettings:""},t={canvasActions:"إجراءات اللوحة",selectedShapeActions:"إجراءات الشكل المحدد",shapes:"الأشكال"},i={canvasPanning:"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد",linearElement:"انقر لبدء نقاط متعددة، اسحب لخط واحد",freeDraw:"انقر واسحب، افرج عند الانتهاء",text:"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار",embeddable:"اضغط مع السحب لإنشاء موقع ويب مضمّن",text_selected:"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص",text_editing:"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل",linearElementMulti:"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء",lockAngle:"يمكنك تقييد الزاوية بالضغط على SHIFT",resize:`يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-C9VT2u9E.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-rIZLhbl7.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};