solid-ui 2.6.1-e5ad2945 → 2.6.1-e78cbe5

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 (369) hide show
  1. package/LICENSE.md +3 -1
  2. package/README.md +85 -26
  3. package/dist/acl/access-controller.js +238 -0
  4. package/dist/acl/access-controller.js.map +1 -0
  5. package/{lib → dist}/acl/access-groups.d.ts +2 -2
  6. package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
  7. package/dist/acl/access-groups.js +323 -0
  8. package/dist/acl/access-groups.js.map +1 -0
  9. package/dist/acl/acl-control.js +173 -0
  10. package/dist/acl/acl-control.js.map +1 -0
  11. package/dist/acl/acl.js +495 -0
  12. package/dist/acl/acl.js.map +1 -0
  13. package/dist/acl/add-agent-buttons.js +217 -0
  14. package/dist/acl/add-agent-buttons.js.map +1 -0
  15. package/dist/acl/index.js +32 -0
  16. package/dist/acl/index.js.map +1 -0
  17. package/dist/acl/types.js +6 -0
  18. package/dist/acl/types.js.map +1 -0
  19. package/dist/chat/keys.js +106 -0
  20. package/dist/chat/keys.js.map +1 -0
  21. package/dist/chat/signature.js +63 -0
  22. package/dist/chat/signature.js.map +1 -0
  23. package/dist/create/create.js +249 -0
  24. package/dist/create/create.js.map +1 -0
  25. package/dist/create/index.js +5 -0
  26. package/dist/create/index.js.map +1 -0
  27. package/dist/create/types.js +2 -0
  28. package/dist/create/types.js.map +1 -0
  29. package/dist/debug.d.ts.map +1 -0
  30. package/dist/debug.js +13 -0
  31. package/dist/debug.js.map +1 -0
  32. package/dist/footer/index.js +67 -0
  33. package/dist/footer/index.js.map +1 -0
  34. package/dist/header/empty-profile.js +11 -0
  35. package/dist/header/empty-profile.js.map +1 -0
  36. package/dist/header/index.js +260 -0
  37. package/dist/header/index.js.map +1 -0
  38. package/dist/iconBase.js +37 -0
  39. package/dist/iconBase.js.map +1 -0
  40. package/dist/icons/solid_logo.js.map +1 -0
  41. package/{lib → dist}/index.d.ts +7 -9
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +102 -0
  44. package/dist/index.js.map +1 -0
  45. package/{lib → dist}/log.d.ts.map +1 -1
  46. package/dist/log.js +182 -0
  47. package/dist/log.js.map +1 -0
  48. package/dist/login/login.js +858 -0
  49. package/dist/login/login.js.map +1 -0
  50. package/dist/matrix/index.js +5 -0
  51. package/dist/matrix/index.js.map +1 -0
  52. package/dist/matrix/matrix.js +217 -0
  53. package/dist/matrix/matrix.js.map +1 -0
  54. package/dist/matrix/types.js +2 -0
  55. package/dist/matrix/types.js.map +1 -0
  56. package/dist/media/index.js +6 -0
  57. package/dist/media/index.js.map +1 -0
  58. package/dist/media/media-capture.js +161 -0
  59. package/dist/media/media-capture.js.map +1 -0
  60. package/dist/pad.js +775 -0
  61. package/dist/pad.js.map +1 -0
  62. package/{lib → dist}/participation.d.ts.map +1 -1
  63. package/dist/participation.js +184 -0
  64. package/dist/participation.js.map +1 -0
  65. package/dist/solid-ui.esm.js +25531 -0
  66. package/dist/solid-ui.esm.js.map +1 -0
  67. package/dist/solid-ui.esm.min.js +43 -0
  68. package/dist/solid-ui.esm.min.js.map +1 -0
  69. package/dist/solid-ui.js +23479 -68931
  70. package/dist/solid-ui.js.map +1 -1
  71. package/dist/solid-ui.min.js +40 -2
  72. package/dist/solid-ui.min.js.map +1 -1
  73. package/dist/tabs.js +388 -0
  74. package/dist/tabs.js.map +1 -0
  75. package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
  76. package/dist/utils/headerFooterHelpers.js +114 -0
  77. package/dist/utils/headerFooterHelpers.js.map +1 -0
  78. package/dist/utils/keyHelpers/accessData.js +64 -0
  79. package/dist/utils/keyHelpers/accessData.js.map +1 -0
  80. package/dist/utils/keyHelpers/acl.js +74 -0
  81. package/dist/utils/keyHelpers/acl.js.map +1 -0
  82. package/dist/utils/keyHelpers/otherHelpers.js +13 -0
  83. package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
  84. package/dist/utils/label.js +111 -0
  85. package/dist/utils/label.js.map +1 -0
  86. package/dist/versionInfo.js +31 -0
  87. package/dist/versionInfo.js.map +1 -0
  88. package/dist/widgets/buttons/iconLinks.js +44 -0
  89. package/dist/widgets/buttons/iconLinks.js.map +1 -0
  90. package/dist/widgets/buttons.js +1280 -0
  91. package/dist/widgets/buttons.js.map +1 -0
  92. package/dist/widgets/error.d.ts +14 -0
  93. package/dist/widgets/error.d.ts.map +1 -0
  94. package/dist/widgets/error.js +35 -0
  95. package/dist/widgets/error.js.map +1 -0
  96. package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
  97. package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
  98. package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
  99. package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
  100. package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
  101. package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
  102. package/dist/widgets/forms/autocomplete/language.js +104 -0
  103. package/dist/widgets/forms/autocomplete/language.js.map +1 -0
  104. package/dist/widgets/forms/autocomplete/publicData.js +460 -0
  105. package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
  106. package/dist/widgets/forms/basic.js +241 -0
  107. package/dist/widgets/forms/basic.js.map +1 -0
  108. package/dist/widgets/forms/comment.js +46 -0
  109. package/dist/widgets/forms/comment.js.map +1 -0
  110. package/dist/widgets/forms/fieldFunction.js +44 -0
  111. package/dist/widgets/forms/fieldFunction.js.map +1 -0
  112. package/dist/widgets/forms/fieldParams.js +89 -0
  113. package/dist/widgets/forms/fieldParams.js.map +1 -0
  114. package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
  115. package/dist/widgets/forms/formStyle.js +36 -0
  116. package/dist/widgets/forms/formStyle.js.map +1 -0
  117. package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
  118. package/{lib → dist}/widgets/widgetHelpers.js +14 -25
  119. package/dist/widgets/widgetHelpers.js.map +1 -0
  120. package/package.json +48 -52
  121. package/dist/789.solid-ui.min.js +0 -1
  122. package/dist/841.solid-ui.min.js +0 -3
  123. package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
  124. package/dist/841.solid-ui.min.js.map +0 -1
  125. package/dist/_2b19.solid-ui.js +0 -14
  126. package/dist/_2b19.solid-ui.js.map +0 -1
  127. package/dist/index.html +0 -1
  128. package/dist/solid-ui.min.js.LICENSE.txt +0 -57
  129. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
  130. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
  131. package/lib/acl/access-controller.js +0 -391
  132. package/lib/acl/access-controller.js.map +0 -1
  133. package/lib/acl/access-groups.js +0 -507
  134. package/lib/acl/access-groups.js.map +0 -1
  135. package/lib/acl/acl-control.js +0 -237
  136. package/lib/acl/acl-control.js.map +0 -1
  137. package/lib/acl/acl.js +0 -517
  138. package/lib/acl/acl.js.map +0 -1
  139. package/lib/acl/add-agent-buttons.js +0 -434
  140. package/lib/acl/add-agent-buttons.js.map +0 -1
  141. package/lib/acl/index.js +0 -39
  142. package/lib/acl/index.js.map +0 -1
  143. package/lib/acl/types.js +0 -6
  144. package/lib/acl/types.js.map +0 -1
  145. package/lib/chat/bookmarks.js +0 -303
  146. package/lib/chat/bookmarks.js.map +0 -1
  147. package/lib/chat/chatLogic.js +0 -420
  148. package/lib/chat/chatLogic.js.map +0 -1
  149. package/lib/chat/dateFolder.js +0 -328
  150. package/lib/chat/dateFolder.js.map +0 -1
  151. package/lib/chat/infinite.js +0 -994
  152. package/lib/chat/infinite.js.map +0 -1
  153. package/lib/chat/keys.js +0 -232
  154. package/lib/chat/keys.js.map +0 -1
  155. package/lib/chat/message.js +0 -715
  156. package/lib/chat/message.js.map +0 -1
  157. package/lib/chat/messageTools.js +0 -538
  158. package/lib/chat/messageTools.js.map +0 -1
  159. package/lib/chat/signature.js +0 -109
  160. package/lib/chat/signature.js.map +0 -1
  161. package/lib/chat/thread.js +0 -535
  162. package/lib/chat/thread.js.map +0 -1
  163. package/lib/create/create.js +0 -242
  164. package/lib/create/create.js.map +0 -1
  165. package/lib/create/index.js +0 -11
  166. package/lib/create/index.js.map +0 -1
  167. package/lib/create/types.js +0 -6
  168. package/lib/create/types.js.map +0 -1
  169. package/lib/debug.d.ts.map +0 -1
  170. package/lib/debug.js +0 -30
  171. package/lib/debug.js.map +0 -1
  172. package/lib/folders.js +0 -132
  173. package/lib/folders.js.map +0 -1
  174. package/lib/footer/index.js +0 -123
  175. package/lib/footer/index.js.map +0 -1
  176. package/lib/header/empty-profile.js +0 -8
  177. package/lib/header/empty-profile.js.map +0 -1
  178. package/lib/header/index.js +0 -375
  179. package/lib/header/index.js.map +0 -1
  180. package/lib/iconBase.js +0 -44
  181. package/lib/iconBase.js.map +0 -1
  182. package/lib/icons/solid_logo.js.map +0 -1
  183. package/lib/index.d.ts.map +0 -1
  184. package/lib/index.js +0 -223
  185. package/lib/index.js.map +0 -1
  186. package/lib/log.js +0 -213
  187. package/lib/log.js.map +0 -1
  188. package/lib/login/login.js +0 -1241
  189. package/lib/login/login.js.map +0 -1
  190. package/lib/matrix/index.js +0 -11
  191. package/lib/matrix/index.js.map +0 -1
  192. package/lib/matrix/matrix.js +0 -216
  193. package/lib/matrix/matrix.js.map +0 -1
  194. package/lib/matrix/types.js +0 -6
  195. package/lib/matrix/types.js.map +0 -1
  196. package/lib/media/index.js +0 -12
  197. package/lib/media/index.js.map +0 -1
  198. package/lib/media/media-capture.js +0 -194
  199. package/lib/media/media-capture.js.map +0 -1
  200. package/lib/messageArea.js +0 -319
  201. package/lib/messageArea.js.map +0 -1
  202. package/lib/noun_Camera_1618446_000000.js +0 -8
  203. package/lib/noun_Camera_1618446_000000.js.map +0 -1
  204. package/lib/ns.js +0 -17
  205. package/lib/ns.js.map +0 -1
  206. package/lib/pad.js +0 -805
  207. package/lib/pad.js.map +0 -1
  208. package/lib/participation.js +0 -219
  209. package/lib/participation.js.map +0 -1
  210. package/lib/preferences.js +0 -215
  211. package/lib/preferences.js.map +0 -1
  212. package/lib/signup/config-default.js +0 -43
  213. package/lib/signup/config-default.js.map +0 -1
  214. package/lib/signup/signup.js +0 -74
  215. package/lib/signup/signup.js.map +0 -1
  216. package/lib/stories/decorators.js +0 -10
  217. package/lib/stories/decorators.js.map +0 -1
  218. package/lib/style.js +0 -158
  219. package/lib/style.js.map +0 -1
  220. package/lib/styleConstants.js +0 -35
  221. package/lib/styleConstants.js.map +0 -1
  222. package/lib/style_multiSelect.js +0 -62
  223. package/lib/style_multiSelect.js.map +0 -1
  224. package/lib/table.js +0 -1573
  225. package/lib/table.js.map +0 -1
  226. package/lib/tabs.js +0 -448
  227. package/lib/tabs.js.map +0 -1
  228. package/lib/typings.d.js +0 -2
  229. package/lib/typings.d.js.map +0 -1
  230. package/lib/utils/headerFooterHelpers.js +0 -165
  231. package/lib/utils/headerFooterHelpers.js.map +0 -1
  232. package/lib/utils/index.js +0 -527
  233. package/lib/utils/index.js.map +0 -1
  234. package/lib/utils/keyHelpers/accessData.js +0 -131
  235. package/lib/utils/keyHelpers/accessData.js.map +0 -1
  236. package/lib/utils/keyHelpers/acl.js +0 -90
  237. package/lib/utils/keyHelpers/acl.js.map +0 -1
  238. package/lib/utils/keyHelpers/otherHelpers.js +0 -21
  239. package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
  240. package/lib/utils/label.js +0 -103
  241. package/lib/utils/label.js.map +0 -1
  242. package/lib/versionInfo.d.ts +0 -32
  243. package/lib/versionInfo.d.ts.map +0 -1
  244. package/lib/versionInfo.js +0 -37
  245. package/lib/versionInfo.js.map +0 -1
  246. package/lib/widgets/buttons/iconLinks.js +0 -53
  247. package/lib/widgets/buttons/iconLinks.js.map +0 -1
  248. package/lib/widgets/buttons.js +0 -1306
  249. package/lib/widgets/buttons.js.map +0 -1
  250. package/lib/widgets/dragAndDrop.js +0 -194
  251. package/lib/widgets/dragAndDrop.js.map +0 -1
  252. package/lib/widgets/error.d.ts +0 -2
  253. package/lib/widgets/error.d.ts.map +0 -1
  254. package/lib/widgets/error.js +0 -46
  255. package/lib/widgets/error.js.map +0 -1
  256. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
  257. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
  258. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
  259. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
  260. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
  261. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
  262. package/lib/widgets/forms/autocomplete/language.js +0 -189
  263. package/lib/widgets/forms/autocomplete/language.js.map +0 -1
  264. package/lib/widgets/forms/autocomplete/publicData.js +0 -636
  265. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
  266. package/lib/widgets/forms/basic.js +0 -254
  267. package/lib/widgets/forms/basic.js.map +0 -1
  268. package/lib/widgets/forms/comment.js +0 -54
  269. package/lib/widgets/forms/comment.js.map +0 -1
  270. package/lib/widgets/forms/fieldFunction.js +0 -52
  271. package/lib/widgets/forms/fieldFunction.js.map +0 -1
  272. package/lib/widgets/forms/fieldParams.js +0 -77
  273. package/lib/widgets/forms/fieldParams.js.map +0 -1
  274. package/lib/widgets/forms/formStyle.js +0 -44
  275. package/lib/widgets/forms/formStyle.js.map +0 -1
  276. package/lib/widgets/forms.js +0 -2045
  277. package/lib/widgets/forms.js.map +0 -1
  278. package/lib/widgets/index.js +0 -110
  279. package/lib/widgets/index.js.map +0 -1
  280. package/lib/widgets/multiSelect.js +0 -658
  281. package/lib/widgets/multiSelect.js.map +0 -1
  282. package/lib/widgets/peoplePicker.js +0 -467
  283. package/lib/widgets/peoplePicker.js.map +0 -1
  284. package/lib/widgets/widgetHelpers.js.map +0 -1
  285. /package/{lib → dist}/acl/access-controller.d.ts +0 -0
  286. /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
  287. /package/{lib → dist}/acl/acl-control.d.ts +0 -0
  288. /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
  289. /package/{lib → dist}/acl/acl.d.ts +0 -0
  290. /package/{lib → dist}/acl/acl.d.ts.map +0 -0
  291. /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
  292. /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
  293. /package/{lib → dist}/acl/index.d.ts +0 -0
  294. /package/{lib → dist}/acl/index.d.ts.map +0 -0
  295. /package/{lib → dist}/acl/types.d.ts +0 -0
  296. /package/{lib → dist}/acl/types.d.ts.map +0 -0
  297. /package/{lib → dist}/chat/keys.d.ts +0 -0
  298. /package/{lib → dist}/chat/keys.d.ts.map +0 -0
  299. /package/{lib → dist}/chat/signature.d.ts +0 -0
  300. /package/{lib → dist}/chat/signature.d.ts.map +0 -0
  301. /package/{lib → dist}/create/create.d.ts +0 -0
  302. /package/{lib → dist}/create/create.d.ts.map +0 -0
  303. /package/{lib → dist}/create/index.d.ts +0 -0
  304. /package/{lib → dist}/create/index.d.ts.map +0 -0
  305. /package/{lib → dist}/create/types.d.ts +0 -0
  306. /package/{lib → dist}/create/types.d.ts.map +0 -0
  307. /package/{lib → dist}/debug.d.ts +0 -0
  308. /package/{lib → dist}/footer/index.d.ts +0 -0
  309. /package/{lib → dist}/footer/index.d.ts.map +0 -0
  310. /package/{lib → dist}/header/empty-profile.d.ts +0 -0
  311. /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
  312. /package/{lib → dist}/header/index.d.ts +0 -0
  313. /package/{lib → dist}/header/index.d.ts.map +0 -0
  314. /package/{lib → dist}/iconBase.d.ts +0 -0
  315. /package/{lib → dist}/iconBase.d.ts.map +0 -0
  316. /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
  317. /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
  318. /package/{lib → dist}/icons/solid_logo.js +0 -0
  319. /package/{lib → dist}/log.d.ts +0 -0
  320. /package/{lib → dist}/login/login.d.ts +0 -0
  321. /package/{lib → dist}/login/login.d.ts.map +0 -0
  322. /package/{lib → dist}/matrix/index.d.ts +0 -0
  323. /package/{lib → dist}/matrix/index.d.ts.map +0 -0
  324. /package/{lib → dist}/matrix/matrix.d.ts +0 -0
  325. /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
  326. /package/{lib → dist}/matrix/types.d.ts +0 -0
  327. /package/{lib → dist}/matrix/types.d.ts.map +0 -0
  328. /package/{lib → dist}/media/index.d.ts +0 -0
  329. /package/{lib → dist}/media/index.d.ts.map +0 -0
  330. /package/{lib → dist}/media/media-capture.d.ts +0 -0
  331. /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
  332. /package/{lib → dist}/pad.d.ts +0 -0
  333. /package/{lib → dist}/pad.d.ts.map +0 -0
  334. /package/{lib → dist}/participation.d.ts +0 -0
  335. /package/{lib → dist}/tabs.d.ts +0 -0
  336. /package/{lib → dist}/tabs.d.ts.map +0 -0
  337. /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
  338. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
  339. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
  340. /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
  341. /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
  342. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
  343. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
  344. /package/{lib → dist}/utils/label.d.ts +0 -0
  345. /package/{lib → dist}/utils/label.d.ts.map +0 -0
  346. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
  347. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
  348. /package/{lib → dist}/widgets/buttons.d.ts +0 -0
  349. /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
  350. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  351. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  352. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  353. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  354. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  355. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  356. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
  357. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
  358. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
  359. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  360. /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
  361. /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
  362. /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
  363. /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
  364. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
  365. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
  366. /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
  367. /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
  368. /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
  369. /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Contains the [[AddAgentButtons]] class
3
+ * @packageDocumentation
4
+ */
5
+ import * as debug from '../debug';
6
+ import { icons } from '../iconBase';
7
+ import { ensureLoadedProfile } from '../login/login';
8
+ import ns from '../ns';
9
+ import * as utils from '../utils';
10
+ import * as widgets from '../widgets';
11
+ import { style } from '../style';
12
+ /**
13
+ * Renders the Sharing pane's "+" button and the menus behind it,
14
+ * see https://github.com/solidos/userguide/blob/main/views/sharing/userguide.md#add
15
+ */
16
+ export class AddAgentButtons {
17
+ constructor(groupList) {
18
+ this.groupList = groupList;
19
+ this.isExpanded = false;
20
+ this.rootElement = groupList.controller.dom.createElement('div');
21
+ this.barElement = groupList.controller.dom.createElement('div');
22
+ }
23
+ render() {
24
+ this.rootElement.innerHTML = '';
25
+ this.rootElement.appendChild(this.renderAddButton());
26
+ this.rootElement.appendChild(this.barElement);
27
+ return this.rootElement;
28
+ }
29
+ renderAddButton() {
30
+ return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_34653_green.svg`, 'Add ...', () => {
31
+ this.toggleBar();
32
+ this.renderBar();
33
+ });
34
+ }
35
+ renderBar() {
36
+ this.barElement.innerHTML = '';
37
+ if (!this.isExpanded) {
38
+ return;
39
+ }
40
+ this.barElement.appendChild(this.renderPersonButton());
41
+ this.barElement.appendChild(this.renderGroupButton());
42
+ this.barElement.appendChild(this.renderPublicButton());
43
+ this.barElement.appendChild(this.renderAuthenticatedAgentButton());
44
+ this.barElement.appendChild(this.renderBotButton());
45
+ this.barElement.appendChild(this.renderAppsButton());
46
+ }
47
+ renderSimplifiedBar(button) {
48
+ Array.from(this.barElement.children)
49
+ .filter(element => element !== button)
50
+ .forEach(element => this.barElement.removeChild(element));
51
+ }
52
+ renderPersonButton() {
53
+ return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['vcard:Individual'], 'Add Person', event => {
54
+ this.renderSimplifiedBar(event.target);
55
+ this.renderNameForm(ns.vcard('Individual'), 'person')
56
+ .then(name => this.addPerson(name))
57
+ .then(() => this.renderCleanup())
58
+ .catch(error => this.groupList.controller.renderStatus(error));
59
+ });
60
+ }
61
+ renderGroupButton() {
62
+ return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['vcard:Group'], 'Add Group', event => {
63
+ this.renderSimplifiedBar(event.target);
64
+ this.renderNameForm(ns.vcard('Group'), 'group')
65
+ .then(name => this.addGroup(name))
66
+ .then(() => this.renderCleanup())
67
+ .catch(error => this.groupList.controller.renderStatus(error));
68
+ });
69
+ }
70
+ renderNameForm(type, noun) {
71
+ return widgets.askName(this.groupList.controller.dom, this.groupList.store, this.barElement, ns.vcard('URI'), type, noun);
72
+ }
73
+ renderPublicButton() {
74
+ return widgets.button(this.groupList.controller.dom, icons.iconBase + widgets.iconForClass['foaf:Agent'], 'Add Everyone', () => this.addAgent(ns.foaf('Agent').uri)
75
+ .then(() => this.groupList.controller.renderTemporaryStatus('Adding the general public to those who can read. Drag the globe to a different level to give them more access.'))
76
+ .then(() => this.renderCleanup()));
77
+ }
78
+ renderAuthenticatedAgentButton() {
79
+ return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_99101.svg`, 'Anyone logged In', () => this.addAgent(ns.acl('AuthenticatedAgent').uri)
80
+ .then(() => this.groupList.controller.renderTemporaryStatus('Adding anyone logged in to those who can read. Drag the ID icon to a different level to give them more access.'))
81
+ .then(() => this.renderCleanup()));
82
+ }
83
+ renderBotButton() {
84
+ return widgets.button(this.groupList.controller.dom, icons.iconBase + 'noun_Robot_849764.svg', 'A Software Agent (bot)', event => {
85
+ this.renderSimplifiedBar(event.target);
86
+ this.renderNameForm(ns.schema('Application'), 'bot')
87
+ .then(name => this.addBot(name))
88
+ .then(() => this.renderCleanup());
89
+ });
90
+ }
91
+ renderAppsButton() {
92
+ return widgets.button(this.groupList.controller.dom, `${icons.iconBase}noun_15177.svg`, 'A Web App (origin)', event => {
93
+ this.renderSimplifiedBar(event.target);
94
+ const eventContext = {
95
+ div: this.barElement,
96
+ dom: this.groupList.controller.dom
97
+ };
98
+ const existingApps = this.renderAppsTable(eventContext)
99
+ .catch(error => this.groupList.controller.renderStatus(error));
100
+ this.renderAppsView();
101
+ const newApp = this.renderNameForm(ns.schema('WebApplication'), 'webapp domain')
102
+ .then(name => this.getOriginFromName(name));
103
+ Promise.race([
104
+ existingApps,
105
+ newApp
106
+ ])
107
+ .then(origin => {
108
+ if (origin) {
109
+ this.groupList.addNewURI(origin);
110
+ }
111
+ })
112
+ .then(() => this.renderCleanup());
113
+ });
114
+ }
115
+ renderAppsView() {
116
+ const trustedApplications = this.groupList.controller.context.session.paneRegistry.byName('trustedApplications');
117
+ if (trustedApplications) {
118
+ const trustedApplicationsElement = trustedApplications.render(null, this.groupList.controller.context);
119
+ trustedApplicationsElement.setAttribute('style', style.trustedAppController);
120
+ const cancelButton = widgets.cancelButton(this.groupList.controller.dom, () => this.renderCleanup());
121
+ cancelButton.setAttribute('style', style.trustedAppCancelButton);
122
+ trustedApplicationsElement.insertBefore(cancelButton, trustedApplicationsElement.firstChild);
123
+ this.barElement.appendChild(trustedApplicationsElement);
124
+ }
125
+ }
126
+ async renderAppsTable(eventContext) {
127
+ await ensureLoadedProfile(eventContext);
128
+ const trustedApps = this.groupList.store.each(eventContext.me, ns.acl('trustedApp')); // @@ TODO fix as
129
+ const trustedOrigins = trustedApps.flatMap(app => this.groupList.store.each(app, ns.acl('origin'))); // @@ TODO fix as
130
+ this.barElement.appendChild(this.groupList.controller.dom.createElement('p')).textContent = `You have ${trustedOrigins.length} selected web apps.`;
131
+ return new Promise((resolve, reject) => {
132
+ const appsTable = this.barElement.appendChild(this.groupList.controller.dom.createElement('table'));
133
+ appsTable.setAttribute('style', style.trustedAppAddApplicationsTable);
134
+ trustedApps.forEach(app => {
135
+ const origin = this.groupList.store.any(app, ns.acl('origin')); // @@ TODO fix as
136
+ if (!origin) {
137
+ reject(new Error(`Unable to pick app: ${app.value}`));
138
+ }
139
+ const thingTR = widgets.personTR(this.groupList.controller.dom, ns.acl('origin'), origin, {});
140
+ const innerTable = this.groupList.controller.dom.createElement('table');
141
+ const innerRow = innerTable.appendChild(this.groupList.controller.dom.createElement('tr'));
142
+ const innerLeftColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
143
+ innerLeftColumn.appendChild(thingTR);
144
+ const innerMiddleColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
145
+ innerMiddleColumn.textContent = `Give access to ${this.groupList.controller.noun} ${utils.label(this.groupList.controller.subject)}?`;
146
+ const innerRightColumn = innerRow.appendChild(this.groupList.controller.dom.createElement('td'));
147
+ innerRightColumn.appendChild(widgets.continueButton(this.groupList.controller.dom, () => resolve(origin.value)));
148
+ appsTable.appendChild(innerTable);
149
+ });
150
+ });
151
+ }
152
+ renderCleanup() {
153
+ this.renderBar();
154
+ this.groupList.render();
155
+ }
156
+ async addPerson(name) {
157
+ if (!name)
158
+ return this.toggleBar(); // user cancelled
159
+ const domainNameRegexp = /^https?:/i;
160
+ if (!name.match(domainNameRegexp)) {
161
+ // @@ enforce in user input live like a form element
162
+ return Promise.reject(new Error('Not a http URI'));
163
+ }
164
+ // @@ check it actually is a person and has an owner who agrees they own it
165
+ debug.log(`Adding to ACL person: ${name}`);
166
+ await this.groupList.addNewURI(name);
167
+ this.toggleBar();
168
+ }
169
+ async addGroup(name) {
170
+ if (!name)
171
+ return this.toggleBar(); // user cancelled
172
+ const domainNameRegexp = /^https?:/i;
173
+ if (!name.match(domainNameRegexp)) {
174
+ // @@ enforce in user input live like a form element
175
+ return Promise.reject(new Error('Not a http URI'));
176
+ }
177
+ // @@ check it actually is a group and has an owner who agrees they own it
178
+ debug.log('Adding to ACL group: ' + name);
179
+ await this.groupList.addNewURI(name);
180
+ this.toggleBar();
181
+ }
182
+ async addAgent(agentUri) {
183
+ await this.groupList.addNewURI(agentUri);
184
+ this.toggleBar();
185
+ }
186
+ async addBot(name) {
187
+ if (!name)
188
+ return this.toggleBar(); // user cancelled
189
+ const domainNameRegexp = /^https?:/i;
190
+ if (!name.match(domainNameRegexp)) {
191
+ // @@ enforce in user input live like a form element
192
+ return Promise.reject(new Error('Not a http URI'));
193
+ }
194
+ // @@ check it actually is a bot and has an owner who agrees they own it
195
+ debug.log('Adding to ACL bot: ' + name);
196
+ await this.groupList.addNewURI(name);
197
+ this.toggleBar();
198
+ }
199
+ async getOriginFromName(name) {
200
+ if (!name)
201
+ return Promise.resolve(); // user cancelled
202
+ const domainNameRegexp = /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i;
203
+ // https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html
204
+ if (!name.match(domainNameRegexp)) {
205
+ // @@ enforce in user input live like a form element
206
+ return Promise.reject(new Error('Not a domain name'));
207
+ }
208
+ const origin = 'https://' + name;
209
+ debug.log('Adding to ACL origin: ' + origin);
210
+ this.toggleBar();
211
+ return origin;
212
+ }
213
+ toggleBar() {
214
+ this.isExpanded = !this.isExpanded;
215
+ }
216
+ }
217
+ //# sourceMappingURL=add-agent-buttons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-agent-buttons.js","sourceRoot":"","sources":["../../src/acl/add-agent-buttons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Re-exports all the exports from the various files in the src/acl/ folder
3
+ * @packageDocumentation
4
+ */
5
+ import { ACLbyCombination, ACLToString, ACLunion, adoptACLDefault, comboToString, fixIndividualACL, fixIndividualCardACL, getACL, getACLorDefault, loadUnionACL, makeACLGraph, makeACLGraphbyCombo, makeACLString, putACLbyCombo, putACLObject, readACL, sameACL, setACL } from './acl';
6
+ import { ACLControlBox5, preventBrowserDropEvents, shortNameForFolder } from './acl-control';
7
+ export const acl = {
8
+ adoptACLDefault,
9
+ readACL,
10
+ sameACL,
11
+ ACLunion,
12
+ loadUnionACL,
13
+ ACLbyCombination,
14
+ makeACLGraph,
15
+ makeACLGraphbyCombo,
16
+ ACLToString,
17
+ comboToString,
18
+ makeACLString,
19
+ putACLObject,
20
+ putACLbyCombo,
21
+ fixIndividualCardACL,
22
+ fixIndividualACL,
23
+ setACL,
24
+ getACLorDefault,
25
+ getACL
26
+ };
27
+ export const aclControl = {
28
+ preventBrowserDropEvents,
29
+ shortNameForFolder,
30
+ ACLControlBox5
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/acl/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,EACN,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,OAAO,EACP,MAAM,EACP,MAAM,OAAO,CAAA;AACd,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,eAAe,CAAA;AAEtB,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,eAAe;IACf,OAAO;IACP,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,aAAa;IACb,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,gBAAgB;IAChB,MAAM;IACN,eAAe;IACf,MAAM;CACP,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,cAAc;CACf,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Contains types for src/acl/
3
+ * @packageDocumentation
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/acl/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,106 @@
1
+ import * as debug from '../debug';
2
+ import { schnorr } from '@noble/curves/secp256k1';
3
+ import { bytesToHex } from '@noble/hashes/utils';
4
+ import ns from '../ns';
5
+ import { store } from 'solid-logic';
6
+ import * as $rdf from 'rdflib';
7
+ import { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData';
8
+ import { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl';
9
+ export function generatePrivateKey() {
10
+ return bytesToHex(schnorr.utils.randomPrivateKey());
11
+ }
12
+ export function generatePublicKey(privateKey) {
13
+ return bytesToHex(schnorr.getPublicKey(privateKey));
14
+ }
15
+ /**
16
+ * getPublicKey
17
+ * used for displaying messages in chat, therefore does not
18
+ * create a new key if not found
19
+ * @param webId
20
+ * @returns string | undefined
21
+ */
22
+ export async function getPublicKey(webId) {
23
+ await store.fetcher.load(webId);
24
+ const publicKeyDoc = await pubKeyUrl(webId);
25
+ try {
26
+ await store.fetcher.load(publicKeyDoc); // url.href)
27
+ const key = store.any(webId, ns.solid('publicKey'));
28
+ return key === null || key === void 0 ? void 0 : key.value; // as NamedNode
29
+ }
30
+ catch (_err) {
31
+ return undefined;
32
+ }
33
+ }
34
+ export async function getPrivateKey(webId) {
35
+ await store.fetcher.load(webId);
36
+ // find keys url's
37
+ const publicKeyDoc = await pubKeyUrl(webId);
38
+ const privateKeyDoc = await privKeyUrl(webId);
39
+ // find key pair
40
+ const publicKey = await getExistingPublicKey(webId, publicKeyDoc);
41
+ let privateKey = await getExistingPrivateKey(webId, privateKeyDoc);
42
+ // is publicKey valid ?
43
+ let validPublicKey = true;
44
+ if (privateKey && (publicKey !== generatePublicKey(privateKey))) {
45
+ if (confirm('This is strange the publicKey is not valid for\n' + (webId === null || webId === void 0 ? void 0 : webId.uri) +
46
+ '\'shall we repair keeping the private key ?'))
47
+ validPublicKey = false;
48
+ }
49
+ // create key pair or repair publicKey
50
+ if (!privateKey || !publicKey || !validPublicKey) {
51
+ let del = [];
52
+ let add = [];
53
+ if (!privateKey) {
54
+ // add = []
55
+ privateKey = generatePrivateKey();
56
+ add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))];
57
+ await saveKey(privateKeyDoc, [], add, webId.uri);
58
+ }
59
+ if (!publicKey || !validPublicKey) {
60
+ del = [];
61
+ // delete invalid public key
62
+ if (publicKey) {
63
+ del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), store.sym(publicKeyDoc))];
64
+ debug.log('delete invalid publicKey ' + del);
65
+ }
66
+ // update new valid key
67
+ const newPublicKey = generatePublicKey(privateKey);
68
+ add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))];
69
+ await saveKey(publicKeyDoc, del, add);
70
+ }
71
+ const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
72
+ await setAcl(keyContainer, keyContainerAclBody(webId.uri)); // includes DELETE and PUT
73
+ }
74
+ return privateKey;
75
+ }
76
+ const deleteKeyAcl = async (keyDoc) => {
77
+ await store.fetcher.load(keyDoc);
78
+ const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'));
79
+ if (keyAclDoc) {
80
+ // delete READ only keyAclDoc. This is possible if the webId is an owner
81
+ try {
82
+ const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value); // this may fail if webId is not an owner
83
+ debug.log('delete keyAcl' + keyAclDoc.value + ' ' + response.status); // should test 404 and 2xx
84
+ }
85
+ catch (err) {
86
+ if (err.response.status !== 404) {
87
+ throw new Error(err);
88
+ }
89
+ debug.log('delete keyAcl' + keyAclDoc.value + ' ' + err.response.status); // should test 404 and 2xx
90
+ }
91
+ }
92
+ };
93
+ /**
94
+ * delete acl if keydoc exists
95
+ * create/edit keyDoc
96
+ * set keyDoc acl
97
+ */
98
+ async function saveKey(keyDoc, del, add, me = '') {
99
+ await deleteKeyAcl(keyDoc);
100
+ // save key
101
+ await store.updater.updateMany(del, add); // or a promise store.updater.update ?
102
+ // create READ only ACL
103
+ const aclBody = keyAclBody(keyDoc, me);
104
+ await setAcl(keyDoc, aclBody);
105
+ }
106
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { schnorr } from '@noble/curves/secp256k1';
2
+ import { bytesToHex } from '@noble/hashes/utils';
3
+ import { sha256 } from '@noble/hashes/sha256';
4
+ // import {utf8Encoder} from './utils'
5
+ // import { getPublicKey } from './keys'
6
+ export const utf8Decoder = new TextDecoder('utf-8');
7
+ export const utf8Encoder = new TextEncoder();
8
+ export const SEC = 'https://w3id.org/security#'; // Proof, VerificationMethod
9
+ export function getBlankMsg() {
10
+ return {
11
+ id: '',
12
+ created: '',
13
+ dateDeleted: '', // TODO to remove if not used
14
+ content: '',
15
+ maker: '',
16
+ sig: '' // TODO to remove if not used
17
+ };
18
+ }
19
+ /* export function finishMsg (t: MsgTemplate, privateKey: string): Message {
20
+ // to update to chat message triples
21
+ const message = t as Message
22
+ // message.pubkey = getPublicKey(privateKey)
23
+ message.id = getMsgHash(message)
24
+ message.sig = signMsg(message, privateKey)
25
+ return message
26
+ } */
27
+ export function serializeMsg(msg) {
28
+ // to update to chat messages triples
29
+ /* if (!validateMsg(msg))
30
+ throw new Error("can't serialize message with wrong or missing properties") */
31
+ return JSON.stringify(msg);
32
+ }
33
+ export function getMsgHash(message) {
34
+ const msgHash = sha256(utf8Encoder.encode(serializeMsg(message)));
35
+ return bytesToHex(msgHash);
36
+ }
37
+ // const isRecord = (obj: unknown): obj is Record<string, unknown> => obj instanceof Object
38
+ /* export function validateMsg<T> (message: T): message is T & UnsignedMsg {
39
+ if (!isRecord(message)) return false
40
+ if (typeof message.kind !== 'number') return false
41
+ if (typeof message.content !== 'string') return false
42
+ if (typeof message.created_at !== 'number') return false
43
+ if (typeof message.pubkey !== 'string') return false
44
+ if (!message.pubkey.match(/^[a-f0-9]{64}$/)) return false
45
+
46
+ if (!Array.isArray(message.tags)) return false
47
+ for (let i = 0; i < message.tags.length; i++) {
48
+ let tag = message.tags[i]
49
+ if (!Array.isArray(tag)) return false
50
+ for (let j = 0; j < tag.length; j++) {
51
+ if (typeof tag[j] === 'object') return false
52
+ }
53
+ }
54
+
55
+ return true
56
+ } */
57
+ export function verifySignature(sig, message, pubKey) {
58
+ return schnorr.verify(sig, getMsgHash(message), pubKey);
59
+ }
60
+ export function signMsg(message, key) {
61
+ return bytesToHex(schnorr.sign(getMsgHash(message), key));
62
+ }
63
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/chat/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,sCAAsC;AACtC,wCAAwC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAE5C,MAAM,CAAC,MAAM,GAAG,GAAG,4BAA4B,CAAA,CAAC,4BAA4B;AA6C5E,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,EAAE,EAAE,EAAE;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE,EAAE,6BAA6B;QAC9C,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE,CAAC,6BAA6B;KACtC,CAAA;AACH,CAAC;AAED;;;;;;;IAOI;AAEJ,MAAM,UAAU,YAAY,CAAE,GAAgB;IAC5C,qCAAqC;IACrC;oFACgF;IAEhF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,OAAoB;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,2FAA2F;AAE3F;;;;;;;;;;;;;;;;;;IAkBI;AAEJ,MAAM,UAAU,eAAe,CAAE,GAAW,EAAE,OAAgB,EAAE,MAAc;IAC5E,OAAO,OAAO,CAAC,MAAM,CACnB,GAAG,EACH,UAAU,CAAC,OAAO,CAAC,EACnB,MAAM,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,OAAoB,EAAE,GAAW;IACxD,OAAO,UAAU,CACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CACvC,CAAA;AACH,CAAC"}