@startdownnotez404/ui 1.3.5 → 1.3.6

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 (254) hide show
  1. package/dist/AutocompleteField-653233JU.mjs +203 -0
  2. package/dist/AutocompleteField-653233JU.mjs.map +1 -0
  3. package/dist/AvatarField-KFASMVZU.mjs +378 -0
  4. package/dist/AvatarField-KFASMVZU.mjs.map +1 -0
  5. package/dist/{DateField-ZYMZFHL4.mjs → DateField-CDJ6W6XF.mjs} +19 -7
  6. package/dist/DateField-CDJ6W6XF.mjs.map +1 -0
  7. package/dist/DateRangeField-ZWSFT5KV.mjs +118 -0
  8. package/dist/DateRangeField-ZWSFT5KV.mjs.map +1 -0
  9. package/dist/{DateTimeField-TPTJ7YIZ.mjs → DateTimeField-SFAF4I6A.mjs} +36 -11
  10. package/dist/DateTimeField-SFAF4I6A.mjs.map +1 -0
  11. package/dist/FileUploadField-TSNCSLXX.mjs +101 -0
  12. package/dist/FileUploadField-TSNCSLXX.mjs.map +1 -0
  13. package/dist/{JSONEditorField-TMRWGXVR.mjs → JSONEditorField-3KXC2GOG.mjs} +7 -6
  14. package/dist/{JSONEditorField-TMRWGXVR.mjs.map → JSONEditorField-3KXC2GOG.mjs.map} +1 -1
  15. package/dist/{PopperMenu-LJ36RPBW.mjs → PopperMenu-PSHLKIEZ.mjs} +26 -12
  16. package/dist/{PopperMenu-LJ36RPBW.mjs.map → PopperMenu-PSHLKIEZ.mjs.map} +1 -1
  17. package/dist/{TelField-LOGRVZ4I.mjs → TelField-FRQT2UBJ.mjs} +8 -7
  18. package/dist/{TelField-LOGRVZ4I.mjs.map → TelField-FRQT2UBJ.mjs.map} +1 -1
  19. package/dist/TimeField-XVWXBJID.mjs +94 -0
  20. package/dist/TimeField-XVWXBJID.mjs.map +1 -0
  21. package/dist/alert.d.mts +148 -18
  22. package/dist/alert.d.ts +148 -18
  23. package/dist/alert.js +698 -254
  24. package/dist/alert.js.map +1 -1
  25. package/dist/alert.mjs +46 -10
  26. package/dist/autocomplete.d.mts +438 -4
  27. package/dist/autocomplete.d.ts +438 -4
  28. package/dist/autocomplete.js +632 -21
  29. package/dist/autocomplete.js.map +1 -1
  30. package/dist/autocomplete.mjs +26 -7
  31. package/dist/avatar.js +2 -1
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/avatar.mjs +12 -11
  34. package/dist/box.mjs +2 -1
  35. package/dist/button.mjs +3 -2
  36. package/dist/chart.mjs +3 -2
  37. package/dist/checkbox.mjs +3 -2
  38. package/dist/chunk-2FK24ZPJ.mjs +78 -0
  39. package/dist/chunk-2FK24ZPJ.mjs.map +1 -0
  40. package/dist/{chunk-V26V2S3W.mjs → chunk-3O3N6X6D.mjs} +3 -3
  41. package/dist/{chunk-Y74ALKBL.mjs → chunk-4MSPA7U7.mjs} +11 -9
  42. package/dist/{chunk-Y74ALKBL.mjs.map → chunk-4MSPA7U7.mjs.map} +1 -1
  43. package/dist/{chunk-24XDGNJ6.mjs → chunk-4P45Z5LR.mjs} +63 -41
  44. package/dist/chunk-4P45Z5LR.mjs.map +1 -0
  45. package/dist/chunk-4SSJY32J.mjs +1182 -0
  46. package/dist/chunk-4SSJY32J.mjs.map +1 -0
  47. package/dist/{chunk-XJ2SXC2Q.mjs → chunk-6B6I27TT.mjs} +18 -16
  48. package/dist/{chunk-XJ2SXC2Q.mjs.map → chunk-6B6I27TT.mjs.map} +1 -1
  49. package/dist/chunk-6JKMEH2L.mjs +205 -0
  50. package/dist/chunk-6JKMEH2L.mjs.map +1 -0
  51. package/dist/{chunk-IN3O4R7Q.mjs → chunk-7O526A2D.mjs} +6 -4
  52. package/dist/{chunk-IN3O4R7Q.mjs.map → chunk-7O526A2D.mjs.map} +1 -1
  53. package/dist/chunk-AFLEG5ZC.mjs +28 -0
  54. package/dist/chunk-AFLEG5ZC.mjs.map +1 -0
  55. package/dist/{chunk-UGMRJMFZ.mjs → chunk-BO5CU4ZM.mjs} +4 -4
  56. package/dist/{chunk-JIU5GVM7.mjs → chunk-D4XPNSSI.mjs} +5 -3
  57. package/dist/{chunk-JIU5GVM7.mjs.map → chunk-D4XPNSSI.mjs.map} +1 -1
  58. package/dist/chunk-DPIMA5IO.mjs +72 -0
  59. package/dist/chunk-DPIMA5IO.mjs.map +1 -0
  60. package/dist/chunk-F2CGFVIZ.mjs +83 -0
  61. package/dist/chunk-F2CGFVIZ.mjs.map +1 -0
  62. package/dist/{chunk-R5MKQN6D.mjs → chunk-FBLSJQWK.mjs} +3 -3
  63. package/dist/{chunk-BGB7JHIU.mjs → chunk-FMGZCOJC.mjs} +5 -3
  64. package/dist/{chunk-BGB7JHIU.mjs.map → chunk-FMGZCOJC.mjs.map} +1 -1
  65. package/dist/{chunk-UTVSYS6S.mjs → chunk-FNSIQ2B7.mjs} +18 -6
  66. package/dist/chunk-FNSIQ2B7.mjs.map +1 -0
  67. package/dist/{chunk-JWANK42G.mjs → chunk-FUZ2JNTZ.mjs} +3 -3
  68. package/dist/{chunk-CRYIEYZZ.mjs → chunk-HAJWE62X.mjs} +66 -42
  69. package/dist/chunk-HAJWE62X.mjs.map +1 -0
  70. package/dist/{chunk-CWFWRZWU.mjs → chunk-KSN33A6I.mjs} +3 -2
  71. package/dist/{chunk-CWFWRZWU.mjs.map → chunk-KSN33A6I.mjs.map} +1 -1
  72. package/dist/chunk-KYTHGFFY.mjs +866 -0
  73. package/dist/chunk-KYTHGFFY.mjs.map +1 -0
  74. package/dist/{chunk-QKGCW37O.mjs → chunk-LDFM46LV.mjs} +5 -3
  75. package/dist/{chunk-QKGCW37O.mjs.map → chunk-LDFM46LV.mjs.map} +1 -1
  76. package/dist/chunk-LQNDBPHU.mjs +142 -0
  77. package/dist/chunk-LQNDBPHU.mjs.map +1 -0
  78. package/dist/{chunk-E3I2VDHZ.mjs → chunk-M2PYXSAF.mjs} +6 -4
  79. package/dist/{chunk-E3I2VDHZ.mjs.map → chunk-M2PYXSAF.mjs.map} +1 -1
  80. package/dist/{chunk-DELCADNF.mjs → chunk-ODVKRIVN.mjs} +30 -30
  81. package/dist/{chunk-HR3A4H4E.mjs → chunk-PEJL2T2K.mjs} +13 -11
  82. package/dist/{chunk-HR3A4H4E.mjs.map → chunk-PEJL2T2K.mjs.map} +1 -1
  83. package/dist/{chunk-OGNGPI3M.mjs → chunk-PL55YKT4.mjs} +2 -2
  84. package/dist/{chunk-S6EZVRZC.mjs → chunk-PNSJC6PC.mjs} +5 -28
  85. package/dist/chunk-PNSJC6PC.mjs.map +1 -0
  86. package/dist/{chunk-TDRA5EZI.mjs → chunk-PUREEN2J.mjs} +7 -7
  87. package/dist/chunk-QFS5CENY.mjs +659 -0
  88. package/dist/chunk-QFS5CENY.mjs.map +1 -0
  89. package/dist/chunk-RSN7NH2J.mjs +250 -0
  90. package/dist/chunk-RSN7NH2J.mjs.map +1 -0
  91. package/dist/{chunk-UDREPVEY.mjs → chunk-RVSMEZE3.mjs} +12 -78
  92. package/dist/chunk-RVSMEZE3.mjs.map +1 -0
  93. package/dist/{chunk-SRWPHN2N.mjs → chunk-S64IYJ6Y.mjs} +2 -2
  94. package/dist/{chunk-ZG3NQI77.mjs → chunk-SMD7OEUW.mjs} +6 -4
  95. package/dist/{chunk-ZG3NQI77.mjs.map → chunk-SMD7OEUW.mjs.map} +1 -1
  96. package/dist/{chunk-NJYNJLT7.mjs → chunk-SWFB3A3G.mjs} +2 -2
  97. package/dist/{chunk-RXBQ7KXF.mjs → chunk-USXGNKWJ.mjs} +98 -44
  98. package/dist/chunk-USXGNKWJ.mjs.map +1 -0
  99. package/dist/{chunk-OJV6V7YZ.mjs → chunk-VL7V52YD.mjs} +27 -20
  100. package/dist/chunk-VL7V52YD.mjs.map +1 -0
  101. package/dist/{chunk-2ZZJTBTE.mjs → chunk-WJZ3IYET.mjs} +2 -2
  102. package/dist/chunk-XAJAMVAG.mjs +1720 -0
  103. package/dist/chunk-XAJAMVAG.mjs.map +1 -0
  104. package/dist/chunk-YIJ5QVJ6.mjs +277 -0
  105. package/dist/chunk-YIJ5QVJ6.mjs.map +1 -0
  106. package/dist/{chunk-T6AMRENK.mjs → chunk-YRW5NKD7.mjs} +148 -112
  107. package/dist/chunk-YRW5NKD7.mjs.map +1 -0
  108. package/dist/chunk-ZMJKG2UI.mjs +71 -0
  109. package/dist/chunk-ZMJKG2UI.mjs.map +1 -0
  110. package/dist/confirm.d.mts +48 -0
  111. package/dist/confirm.d.ts +48 -0
  112. package/dist/confirm.js +334 -0
  113. package/dist/confirm.js.map +1 -0
  114. package/dist/confirm.mjs +20 -0
  115. package/dist/datePicker.d.mts +256 -14
  116. package/dist/datePicker.d.ts +256 -14
  117. package/dist/datePicker.js +1624 -145
  118. package/dist/datePicker.js.map +1 -1
  119. package/dist/datePicker.mjs +19 -6
  120. package/dist/dialog.d.mts +166 -0
  121. package/dist/dialog.d.ts +166 -0
  122. package/dist/dialog.js +362 -0
  123. package/dist/dialog.js.map +1 -0
  124. package/dist/dialog.mjs +45 -0
  125. package/dist/emptyState.d.mts +17 -0
  126. package/dist/emptyState.d.ts +17 -0
  127. package/dist/emptyState.js +253 -0
  128. package/dist/emptyState.js.map +1 -0
  129. package/dist/emptyState.mjs +12 -0
  130. package/dist/emptyState.mjs.map +1 -0
  131. package/dist/errorState.d.mts +18 -0
  132. package/dist/errorState.d.ts +18 -0
  133. package/dist/{displayFile.js → errorState.js} +107 -156
  134. package/dist/errorState.js.map +1 -0
  135. package/dist/errorState.mjs +15 -0
  136. package/dist/errorState.mjs.map +1 -0
  137. package/dist/fileUpload.d.mts +197 -0
  138. package/dist/fileUpload.d.ts +197 -0
  139. package/dist/fileUpload.js +1483 -0
  140. package/dist/fileUpload.js.map +1 -0
  141. package/dist/fileUpload.mjs +65 -0
  142. package/dist/fileUpload.mjs.map +1 -0
  143. package/dist/flowMap.mjs +7 -6
  144. package/dist/flowMap.mjs.map +1 -1
  145. package/dist/image.js +1195 -429
  146. package/dist/image.js.map +1 -1
  147. package/dist/image.mjs +8 -6
  148. package/dist/index.d.ts +7 -2
  149. package/dist/index.js +8606 -4087
  150. package/dist/index.js.map +1 -1
  151. package/dist/index.mjs +314 -152
  152. package/dist/inlineError.d.mts +16 -0
  153. package/dist/inlineError.d.ts +16 -0
  154. package/dist/inlineError.js +297 -0
  155. package/dist/inlineError.js.map +1 -0
  156. package/dist/inlineError.mjs +15 -0
  157. package/dist/inlineError.mjs.map +1 -0
  158. package/dist/input.mjs +8 -7
  159. package/dist/jsonEditor.mjs +3 -2
  160. package/dist/list.mjs +7 -6
  161. package/dist/loading.mjs +8 -6
  162. package/dist/markdown.mjs +7 -6
  163. package/dist/markdown.mjs.map +1 -1
  164. package/dist/menu.mjs +9 -8
  165. package/dist/modal.js +2 -1
  166. package/dist/modal.js.map +1 -1
  167. package/dist/modal.mjs +7 -5
  168. package/dist/process.d.mts +33 -75
  169. package/dist/process.d.ts +33 -75
  170. package/dist/process.js +1275 -203
  171. package/dist/process.js.map +1 -1
  172. package/dist/process.mjs +12 -9
  173. package/dist/scrollToLoad.mjs +4 -3
  174. package/dist/select.mjs +10 -9
  175. package/dist/skeleton.d.mts +15 -1
  176. package/dist/skeleton.d.ts +15 -1
  177. package/dist/skeleton.js +114 -2
  178. package/dist/skeleton.js.map +1 -1
  179. package/dist/skeleton.mjs +6 -3
  180. package/dist/stepper.mjs +4 -3
  181. package/dist/tab.mjs +10 -9
  182. package/dist/table.d.mts +269 -85
  183. package/dist/table.d.ts +269 -85
  184. package/dist/table.js +5102 -3153
  185. package/dist/table.js.map +1 -1
  186. package/dist/table.mjs +21 -19
  187. package/dist/theme.js +1766 -432
  188. package/dist/theme.js.map +1 -1
  189. package/dist/theme.mjs +32 -25
  190. package/dist/timeline.mjs +4 -3
  191. package/dist/toast.d.mts +49 -0
  192. package/dist/toast.d.ts +49 -0
  193. package/dist/toast.js +175 -0
  194. package/dist/toast.js.map +1 -0
  195. package/dist/toast.mjs +9 -0
  196. package/dist/toast.mjs.map +1 -0
  197. package/dist/toggleButtonGroup.mjs +3 -2
  198. package/dist/useForm.d.mts +270 -86
  199. package/dist/useForm.d.ts +270 -86
  200. package/dist/useForm.js +4672 -2727
  201. package/dist/useForm.js.map +1 -1
  202. package/dist/useForm.mjs +18 -16
  203. package/dist/useSearch.mjs +13 -12
  204. package/dist/variablesRenderer.mjs +8 -7
  205. package/package.json +3 -3
  206. package/dist/AutocompleteField-ZKNU2IRR.mjs +0 -181
  207. package/dist/AutocompleteField-ZKNU2IRR.mjs.map +0 -1
  208. package/dist/AvatarField-SAODT3CZ.mjs +0 -275
  209. package/dist/AvatarField-SAODT3CZ.mjs.map +0 -1
  210. package/dist/DateField-ZYMZFHL4.mjs.map +0 -1
  211. package/dist/DateTimeField-TPTJ7YIZ.mjs.map +0 -1
  212. package/dist/FileUploadField-NTMWBJER.mjs +0 -78
  213. package/dist/FileUploadField-NTMWBJER.mjs.map +0 -1
  214. package/dist/chunk-24XDGNJ6.mjs.map +0 -1
  215. package/dist/chunk-27KYFU7R.mjs +0 -30
  216. package/dist/chunk-27KYFU7R.mjs.map +0 -1
  217. package/dist/chunk-AAH2O24U.mjs +0 -325
  218. package/dist/chunk-AAH2O24U.mjs.map +0 -1
  219. package/dist/chunk-CRYIEYZZ.mjs.map +0 -1
  220. package/dist/chunk-EEH7HACG.mjs +0 -249
  221. package/dist/chunk-EEH7HACG.mjs.map +0 -1
  222. package/dist/chunk-EKPULYPU.mjs +0 -497
  223. package/dist/chunk-EKPULYPU.mjs.map +0 -1
  224. package/dist/chunk-OJV6V7YZ.mjs.map +0 -1
  225. package/dist/chunk-RXBQ7KXF.mjs.map +0 -1
  226. package/dist/chunk-S6EZVRZC.mjs.map +0 -1
  227. package/dist/chunk-SGCUDWO3.mjs +0 -396
  228. package/dist/chunk-SGCUDWO3.mjs.map +0 -1
  229. package/dist/chunk-T6AMRENK.mjs.map +0 -1
  230. package/dist/chunk-UDREPVEY.mjs.map +0 -1
  231. package/dist/chunk-UTVSYS6S.mjs.map +0 -1
  232. package/dist/chunk-XIMFP6RB.mjs +0 -161
  233. package/dist/chunk-XIMFP6RB.mjs.map +0 -1
  234. package/dist/displayFile.d.mts +0 -95
  235. package/dist/displayFile.d.ts +0 -95
  236. package/dist/displayFile.js.map +0 -1
  237. package/dist/displayFile.mjs +0 -19
  238. package/dist/fileUploader.d.mts +0 -86
  239. package/dist/fileUploader.d.ts +0 -86
  240. package/dist/fileUploader.js +0 -722
  241. package/dist/fileUploader.js.map +0 -1
  242. package/dist/fileUploader.mjs +0 -16
  243. /package/dist/{chunk-V26V2S3W.mjs.map → chunk-3O3N6X6D.mjs.map} +0 -0
  244. /package/dist/{chunk-UGMRJMFZ.mjs.map → chunk-BO5CU4ZM.mjs.map} +0 -0
  245. /package/dist/{chunk-R5MKQN6D.mjs.map → chunk-FBLSJQWK.mjs.map} +0 -0
  246. /package/dist/{chunk-JWANK42G.mjs.map → chunk-FUZ2JNTZ.mjs.map} +0 -0
  247. /package/dist/{chunk-DELCADNF.mjs.map → chunk-ODVKRIVN.mjs.map} +0 -0
  248. /package/dist/{chunk-OGNGPI3M.mjs.map → chunk-PL55YKT4.mjs.map} +0 -0
  249. /package/dist/{chunk-TDRA5EZI.mjs.map → chunk-PUREEN2J.mjs.map} +0 -0
  250. /package/dist/{chunk-SRWPHN2N.mjs.map → chunk-S64IYJ6Y.mjs.map} +0 -0
  251. /package/dist/{chunk-NJYNJLT7.mjs.map → chunk-SWFB3A3G.mjs.map} +0 -0
  252. /package/dist/{chunk-2ZZJTBTE.mjs.map → chunk-WJZ3IYET.mjs.map} +0 -0
  253. /package/dist/{displayFile.mjs.map → confirm.mjs.map} +0 -0
  254. /package/dist/{fileUploader.mjs.map → dialog.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/classnames/index.js","../src/components/compound/Process/index.ts","../src/components/compound/Process/src/ProcessModal.tsx","../src/_utils/_func/random.ts","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Typography/src/Variants.tsx","../src/components/elemental/Button/src/Button/Button.tsx","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Modal/src/MuiModal/MuiModal.tsx","../src/_utils/_const/classNames.ts","../src/_utils/_const/index.ts","../src/components/elemental/Paper/src/Paper/ShinyPaper.tsx","../src/patterns/doodlePattern.ts","../src/patterns/generated/doodlePatternMask.ts","../src/patterns/doodlePatternStyles.ts","../src/components/elemental/Modal/src/MuiModal/theme.ts","../src/components/elemental/Progress/src/LinearProgress.tsx","../src/components/elemental/Progress/src/CircularProgress.tsx","../src/_utils/_const/file.ts","../src/components/compound/DisplayFile/src/DisplayFile.tsx","../src/components/compound/Process/src/ProcessItem.tsx","../src/components/compound/Process/src/hooks/useProgressTracking.ts","../src/components/compound/Process/src/hooks/useProcessAlert.ts","../src/components/compound/Alert/src/_utils/utils.ts","../src/components/compound/Alert/src/_utils/const.ts","../src/components/compound/Process/src/ProcessAlert.tsx","../src/components/compound/Process/src/_utils/ProgressObserver.ts","../src/components/compound/Process/src/theme.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export * from './src';\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { Button } from '@/ele/Button';\nimport { PauseIcon, PlayIcon, StopIcon, RemoveIcon as MinimizeIcon, CheckCircleIcon } from '@/icons/MuiIcon';\nimport { MuiModal } from '@/ele/Modal';\nimport { ProcessItem } from './ProcessItem';\nimport { ProcessModalProps, ProgressHook } from './types';\nimport PreviewableFile from '@/_utils/classes/PreviewableFile';\nimport { useProgressTracking, useProcessAlert } from './hooks';\nimport { processModalRootSx } from './theme';\nimport { mergeSx } from '@/_utils/_func';\n\n// Default hook returns 0 if not provided\nconst useDefaultProgress: ProgressHook = () => 0;\n\nconst ProcessLogicRunner = ({\n file,\n useProgress,\n onProgress,\n paused\n}: {\n file: PreviewableFile;\n useProgress: ProgressHook;\n onProgress: (file: PreviewableFile, progress: number) => void;\n paused: boolean;\n}) => {\n const progress = useProgress(file, paused);\n useEffect(() => {\n onProgress(file, progress);\n }, [file, progress, onProgress]);\n return null;\n};\n\nexport const ProcessModal: React.FC<ProcessModalProps> = ({ \n openProps, \n files, \n title = \"Uploading Documents\",\n description = \"Please wait while we upload your files.\",\n useProgress = useDefaultProgress,\n onPause,\n onStop,\n minimizable = false,\n minimizePlacement = 'bottom-right',\n autoClose = false\n}) => {\n const [open, setOpen] = openProps;\n const [minimized, setMinimized] = useState(false);\n const [paused, setPaused] = useState(false);\n\n const handleMaximize = useCallback(() => setMinimized(false), []);\n\n const { observerRef } = useProcessAlert({\n open,\n minimized,\n minimizePlacement,\n onMaximize: handleMaximize,\n });\n\n const { progressMap, handleProgress, allComplete } = useProgressTracking(files, observerRef);\n\n useEffect(() => {\n if (autoClose && allComplete && open) {\n const timer = setTimeout(() => {\n setOpen(false);\n }, 1000);\n return () => clearTimeout(timer);\n }\n }, [autoClose, allComplete, open, setOpen]);\n\n const handlePauseToggle = () => {\n setPaused(!paused);\n if (onPause) onPause();\n };\n\n const handleStop = () => {\n if (onStop) onStop();\n setOpen(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {/* Logic Layer: Always mounted when open */}\n {files.map((file) => (\n <ProcessLogicRunner\n key={file.filename}\n file={file}\n useProgress={useProgress}\n onProgress={handleProgress}\n paused={paused}\n />\n ))}\n\n {minimized ? null : (\n <MuiModal \n openProps={openProps}\n title={title}\n size={{ w: 500 }}\n slots={{\n closeIcon: minimizable?MinimizeIcon:undefined,\n }}\n slotProps={{\n closeButton: minimizable?{\n onClick: () => setMinimized(true),\n title: \"Minimize\",\n }:undefined,\n }}\n\n >\n <Box sx={mergeSx({ py: 2 }, processModalRootSx)}>\n {description && (\n <Typography variant=\"body2\" sx={{ mb: 3, color: 'var(--process-description-color)' }}>\n {description}\n </Typography>\n )}\n \n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1, maxHeight: '60vh', overflowY: 'auto' }}>\n {files.map((file) => (\n <ProcessItem \n key={file.filename} \n file={file} \n progress={progressMap.get(file.filename) || 0}\n />\n ))}\n </Box>\n\n <Box sx={{ mt: 3, display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\n {!allComplete && (\n <>\n {onStop && (\n <Button \n variant=\"outlined\" \n color=\"error\" \n startIcon={<StopIcon />} \n onClick={handleStop}\n >\n Stop\n </Button>\n )}\n {onPause && (\n <Button \n variant=\"outlined\" \n color=\"warning\" \n startIcon={paused ? <PlayIcon /> : <PauseIcon />} \n onClick={handlePauseToggle}\n >\n {paused ? \"Resume\" : \"Pause\"}\n </Button>\n )}\n </>\n )}\n \n {allComplete && <Button \n variant=\"contained\"\n onClick={() => setOpen(false)}\n disabled={!allComplete && !onStop}\n startIcon={<CheckCircleIcon />}\n color=\"success\"\n >\n Done\n </Button>}\n </Box>\n </Box>\n </MuiModal>\n )}\n </>\n );\n};\n","export function randomStrGenerator(length=20):string{\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n\n return result\n}\n\nexport function getRandomInt(max: number) {\n return Math.floor(Math.random() * max)\n}\nexport function getRandomBetween(min: number, max: number, isFloat = false) {\n const randomVal = Math.random() * (max - min) + min\n if (isFloat) {\n return randomVal\n }\n return Math.floor(randomVal)\n}","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","export { default } from '@mui/material/Typography'","import React from 'react'\nimport Typography, {type TypographyProps} from '@mui/material/Typography'\n\n/**\n * Mui Typography with variant h5\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Header(props: { children?: React.ReactNode } & TypographyProps) {\n\treturn <Typography variant=\"h5\" {...props} />\n}\n\n\n/**\n * Mui Typography with variant h6\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubHeader(props: TypographyProps) {\n\treturn <Typography variant=\"h6\" {...props} />\n}\n\n/**\n * Mui Typography with variant subtitle1\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubTitle(props: TypographyProps) {\n\treturn <Typography variant=\"subtitle1\" {...props} />\n}\n\n/**\n * Mui Typography with variant caption\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Subscript(props: TypographyProps) {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\t{...props}\n\t\t\tsx={{\n\t\t\t\t...props.sx,\n\t\t\t\tcolor: props.color ?? 'var(--mui-palette-text-subscript)',\n\t\t\t}}\n\t\t/>\n\t)\n}\n\n/**\n * Mui Typography with variant body\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Body(props: TypographyProps) {\n\treturn <Typography variant=\"body1\" {...props} />\n}","import React from 'react';\n\nimport MuiButton from '@mui/material/Button';\nimport { Box } from '@/ele/Box';\nimport { mergeSx } from '@/_utils/_func';\n\n/**\n * A modified MUI Button that truncates long text with ellipsis.\n * \n * [Doc](https://mui.com/material-ui/react-button/)\n * [API](https://mui.com/material-ui/api/button/)\n */\nexport default function Button(p:\n React.ComponentProps<typeof MuiButton> & {\n slotProps?: {\n innerBox?: React.ComponentProps<typeof Box>\n }\n }) {\n const {children, slotProps, ...rest} = p\n const {sx, ...boxRest} = slotProps?.innerBox ?? {}\n return <MuiButton {...rest}>\n <Box \n {...boxRest}\n sx={mergeSx(\n {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n },\n sx,\n )}>\n {children}\n </Box>\n </MuiButton>\n}","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","'use client'\nimport React, { useCallback, useMemo } from 'react'\nimport Modal, { type ModalProps } from '@mui/material/Modal'\nimport type { SxProps } from '@mui/material';\nimport type { Theme } from '@mui/material/styles';\nimport { useTheme, useMediaQuery } from '@mui/material';\nimport classnames from 'classnames';\nimport { CLASSNAMEs } from '@/_utils/_const/classNames';\nimport Tooltip from '@mui/material/Tooltip'\nimport { CloseIcon } from '@/icons/MuiIcon'\n\nimport { COMPONENTs } from '@/_utils/_const'\nimport { mergeSx } from '@/_utils/_func'\nimport { Box as Box } from '@/ele/Box'\nimport { Header as MuiHeader } from '@/ele/Typography'\nimport { ShinyPaper as MuiPaper } from '@/ele/Paper'\nimport { IconButton } from '@/ele/Button'\nimport { getDoodlePatternModalBackgroundSx } from '@/patterns'\nimport { MUI_MODAL_PAPER_RADIUS, muiModalPaperSx, muiModalRootSx } from './theme'\n\n/**\n * extended from Mui Modal\n * \n * [Doc](https://mui.com/material-ui/api/modal/)\n * \n * @param openProps - [open, setOpen]\n */\nexport default function MuiModal({\n children,\n openProps,\n size = {\n w: 'auto',\n h: 'auto',\n },\n maxHeight = '95vh', maxWidth = '95vw',\n\n onClose = () => { },\n title = \"\",\n titleIcon = null,\n closeButton = null,\n slots,\n slotProps,\n ...rest\n}: {\n children?: React.ReactNode;\n openProps: [\n boolean, // open\n (React.Dispatch<React.SetStateAction<boolean>> | React.Dispatch<boolean>) // setOpen\n ];\n size?: {\n w?: string | number;\n h?: string | number;\n },\n maxHeight?: string | number;\n maxWidth?: string | number;\n onClose?: () => void;\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n\n slots?: {\n closeButton?: React.ElementType;\n closeIcon?: React.ElementType;\n };\n slotProps?: {\n container?: {\n style?: {\n bgColor?: string;\n shadow?: string;\n },\n sx?: SxProps<Theme>;\n },\n header?: {\n style?: {\n headerImg: string;\n }\n },\n closeButton?: Partial<React.ComponentProps<typeof IconButton>> & {\n closeIcon?: Partial<React.ComponentProps<typeof CloseIcon>>;\n };\n };\n} & Omit<ModalProps, \"open\" | \"title\">) {\n const [open, setOpen] = openProps\n\n // responsive behavior: on small screens modal should occupy nearly full\n // viewport automatically so users are not staring at a tiny dialog.\n const theme = useTheme();\n const isSmDown = useMediaQuery(theme.breakpoints.down('sm'));\n const effectiveSize = useMemo(() => {\n if (isSmDown) {\n return { width: 'calc(100vw - 2%)', height: 'calc(100vh - 2%)' };\n }\n return {\n width: size.w || 'auto',\n height: size.h || 'auto',\n };\n }, [isSmDown, size.w, size.h]);\n\n const { \n closeButton: CloseButtonSlot = IconButton,\n closeIcon: CloseIconSlot = CloseIcon,\n } = slots || {};\n\n const {\n closeButton: closeButtonAllProps,\n } = slotProps || {};\n\n const { closeIcon: closeIconProps, ...closeButtonProps } = closeButtonAllProps || {sx:{}};\n\n /**\n * Internal close handler that ensures modal state is updated\n */\n const handleClose = useCallback(() => {\n // If setOpen is available (it should be from openProps), use it\n if (typeof setOpen === 'function') {\n setOpen(false);\n }\n // Also call generic onClose if provided\n onClose?.();\n }, [setOpen, onClose]);\n\n /**\n * Determine the close button to render\n * If closeButton is provided, use it\n * Otherwise generate a default IconButton that triggers handleClose\n */\n const renderCloseButton = useMemo(() => {\n if (closeButton) return closeButton;\n \n return (\n <CloseButtonSlot onClick={handleClose} size=\"small\" aria-label=\"close\" {...closeButtonProps} sx={{\n padding: 0,\n ...closeButtonProps?.sx,\n }}>\n <CloseIconSlot\n {...closeIconProps}\n fontSize=\"1rem\"\n sx={{\n color: 'var(--closeIconColor)',\n ...closeIconProps?.sx,\n }}\n />\n </CloseButtonSlot>\n );\n }, [closeButton, handleClose, CloseButtonSlot, CloseIconSlot, closeButtonProps, closeIconProps]);\n\n // ensure the elemental modal classname is always present so tests can target it\n const modalClass = classnames(CLASSNAMEs.elemental.modal, rest.className);\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className={modalClass}\n {...rest}\n sx={{\n zIndex: COMPONENTs.modal.zIndex,\n padding: \"1%\",\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'transparent',\n\n // backdropFilter: 'blur(5px)', // causing performance issues when blurring large areas\n }}\n\n >\n <Box\n style={{\n \"--w\": effectiveSize.width,\n \"--h\": effectiveSize.height,\n \"--max-h\": maxHeight,\n \"--max-w\": maxWidth,\n ...(slotProps?.header?.style?.headerImg\n ? { '--headerImg': slotProps.header.style.headerImg }\n : {}),\n ...(slotProps?.container?.style?.bgColor\n ? { '--bgC': slotProps.container.style.bgColor }\n : {}),\n ...(slotProps?.container?.style?.shadow\n ? { '--shadow': slotProps.container.style.shadow }\n : {}),\n } as React.CSSProperties}\n sx={mergeSx(muiModalRootSx, {\n display: \"flex\",\n justifyContent: \"center\",\n height: {xs: 'calc(100vh - 2%)', md: 'var(--h)'},\n width: {xs: 'calc(100vw - 2%)', md: 'var(--w)'},\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n })}>\n <MuiPaper sx={mergeSx(muiModalPaperSx, slotProps?.container?.sx)}>\n <BackgroundContainer overridePatternUrl={slotProps?.header?.style?.headerImg}>\n <MuiModalHeader\n title={title}\n titleIcon={titleIcon}\n closeButton={renderCloseButton}\n />\n\n <Box sx={{\n padding: \"16px\",\n paddingTop: \"8px\",\n flexGrow: 1,\n height: '-webkit-fill-available',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }}>\n {children}\n </Box>\n </BackgroundContainer>\n </MuiPaper>\n </Box>\n </Modal>\n )\n}\n\n/**\n * Background container for the modal\n * it places a background image and a gradient overlay\n */\nfunction BackgroundContainer({ children, overridePatternUrl }: {\n children?: React.ReactNode;\n overridePatternUrl?: string;\n}) {\n const isDefaultPattern = !overridePatternUrl;\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n }}>\n <Box \n sx={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n \n ...(isDefaultPattern\n ? getDoodlePatternModalBackgroundSx()\n : {\n backgroundImage: 'var(--headerImg)',\n backgroundSize: '27px',\n }),\n opacity: 0.2,\n }} \n />\n <Box sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n zIndex: 1,\n\n // Circular gradient overlay\n background: 'var(--modalOverlayBg)',\n }}>\n {children}\n </Box>\n </Box>\n )\n}\n\nfunction MuiModalHeader({\n title = '',\n titleIcon = null,\n closeButton = null,\n}: {\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n}) {\n return (\n <Box sx={{\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingTop: 1,\n gap: 1,\n maxWidth: '50%',\n }}\n >\n <MuiHeader\n sx={{\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n }}\n >\n {title}\n </MuiHeader>\n {titleIcon && (\n <MuiHeader sx={{ display: 'flex', flexShrink: 0, }}>\n <Tooltip title=\"Icon\" arrow>\n <span>{titleIcon}</span>\n </Tooltip>\n </MuiHeader>\n )}\n </Box>\n\n {closeButton && (\n <Box sx={{ position: 'absolute', right: '8px', top: '4px' }}>{closeButton}</Box>\n )}\n </Box>\n\n );\n};\n\n","// central registry for CSS class names used throughout the codebase\n//\n// Storing them in one object makes it easy to search for components in tests\n// and debugging tools, and prevents accidental mismatches when strings are\n// copied by hand. Add additional entries here as new components need them.\n\nexport const CLASSNAMEs = {\n elemental: {\n avatar: {\n // root wrapper for the Avatar component\n root: 'Elemental-Avatar',\n // button variant used by AvatarButton and related controls\n button: 'Elemental-AvatarButton',\n },\n modal: 'Elemental-Modal',\n },\n compound: {\n useForm: {\n // class applied to the wrapper around the avatar field inside UseForm\n avatarField: 'UseForm-AvatarField',\n },\n },\n} as const;\n","export const COMPONENTs = {\n modal:{\n zIndex: 1300,\n }\n}\n","'use client'\nimport Paper from '@mui/material/Paper'\nimport { styled } from '@mui/material/styles'\n\n/**\n * Mui Paper boxshadow with a shiny effect\n * \n * [Doc](https://mui.com/material-ui/api/paper/)\n */\nconst ShinyPaper = styled(Paper)({\n '--shiny-paper-shadow-color': 'var(--mui-palette-blink-secondary)',\n '--shiny-paper-grey-mix': 'color-mix(in lab, var(--mui-palette-grey-A700), transparent 50%)',\n '--shiny-paper-shadow-color-secondary': 'color-mix(in lab, var(--shiny-paper-shadow-color), var(--shiny-paper-grey-mix) 50%)',\n\n '--bs-1': 'var(--shiny-paper-shadow-color)',\n '--bs-2': 'var(--shiny-paper-shadow-color-secondary)',\n '--bs-3': 'var(--shiny-paper-shadow-color)',\n '--bs': `\n 0px 2px 1px -1px var(--bs-1),\n 0px 1px 1px 0px var(--bs-2),\n 0px 1px 3px 0px var(--bs-3)\n `,\n\n \"&.MuiPaper-root\":{\n transition:\"background-color 0s\",\n boxShadow: \"var(--bs)\",\n },\n})\nexport default ShinyPaper","export interface DoodlePatternPalette {\n primary: string;\n primaryOpacity: number;\n primaryWidth: number;\n accent: string;\n accentOpacity: number;\n accentWidth: number;\n}\n\nexport const DOODLE_PATTERN_PALETTE_LIGHT: DoodlePatternPalette = {\n primary: \"#5f516f\",\n primaryOpacity: 0.42,\n primaryWidth: 1.55,\n accent: \"#b84f86\",\n accentOpacity: 0.34,\n accentWidth: 1.3,\n};\n\nexport const DOODLE_PATTERN_PALETTE_DARK: DoodlePatternPalette = {\n primary: \"#e5f7ff\",\n primaryOpacity: 0.96,\n primaryWidth: 1.85,\n accent: \"#f0d7ff\",\n accentOpacity: 0.82,\n accentWidth: 1.55,\n};\n\nexport const DOODLE_PATTERN_STRUCTURE = {\n primaryWidth: DOODLE_PATTERN_PALETTE_LIGHT.primaryWidth,\n accentWidth: DOODLE_PATTERN_PALETTE_LIGHT.accentWidth,\n} as const;\n\nconst DOODLE_PATTERN_MASK_COLOR = \"#000\";\n\nexport interface DoodlePatternPlacement {\n x: number;\n y: number;\n icon: DoodlePatternIconName;\n rotate?: number;\n scale?: number;\n priority?: number;\n}\n\nexport const DOODLE_PATTERN_TILE_WIDTH = 520;\nexport const DOODLE_PATTERN_TILE_HEIGHT = 250;\nexport const DOODLE_PATTERN_RENDER_SCALE = 3;\n\nconst DOODLE_PATTERN_ICON_SIZE = 44;\nconst DOODLE_PATTERN_ICON_MUTATIONS = [\n { rotate: 0, scale: 1 },\n { rotate: 40, scale: 0.76 },\n { rotate: -180, scale: 1.18 },\n { rotate: -54, scale: 0.88 },\n { rotate: 132, scale: 0.64 },\n { rotate: -118, scale: 1.08 },\n { rotate: 74, scale: 0.92 },\n { rotate: -32, scale: 1.28 },\n] as const;\nexport const DOODLE_PATTERN_ICON_VIEW_BOX = \"0 0 44 44\";\n\nexport const DOODLE_PATTERN_ICON_SVGS = {\n chat:\n \"<path d='M8 8h26a7 7 0 0 1 7 7v13a7 7 0 0 1-7 7h-8l-8 7v-7H8a7 7 0 0 1-7-7V15a7 7 0 0 1 7-7Z'/><path d='M11 19h18M11 27h11'/>\",\n agent:\n \"<path d='M8 11h26a8 8 0 0 1 8 8v12a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V19a8 8 0 0 1 8-8Z'/><path d='M14 8V4M30 8V4'/><path d='M11 30h20'/><circle cx='15' cy='23' r='2.5'/><circle cx='27' cy='23' r='2.5'/>\",\n cursor:\n \"<path d='M8 5l25 13-17 6-7 17L8 5Z'/><path d='M18 25l12 12'/>\",\n model:\n \"<path d='M12 10h20a6 6 0 0 1 6 6v14a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6V16a6 6 0 0 1 6-6Z'/><circle cx='16' cy='20' r='2.5'/><circle cx='28' cy='20' r='2.5'/><circle cx='22' cy='29' r='2.5'/><path d='M18 21l3 6M26 21l-3 6'/>\",\n orchestra:\n \"<path d='M22 4l7 4v8l-7 4-7-4V8ZM11 24l7 4v8l-7 4-7-4v-8ZM33 24l7 4v8l-7 4-7-4v-8Z'/><path d='M19 21l-3 5M25 21l3 5M20 32h4'/>\",\n doc:\n \"<path d='M9 5h18l8 8v23H9Z'/><path d='M27 5v9h8M15 21h14M15 29h10'/>\",\n grid:\n \"<path d='M7 7h30v30H7ZM7 17h30M7 27h30M17 7v30M27 7v30'/>\",\n brain:\n \"<path d='M14 9c-6 0-10 4-10 10 0 3 1 5 3 7-1 5 3 9 8 9 3 0 5-1 7-3 2 2 4 3 7 3 5 0 9-4 8-9 2-2 3-4 3-7 0-6-4-10-10-10-3 0-6 1-8 3-2-2-5-3-8-3Z'/><path d='M22 12v20M12 17c4 0 7 2 10 6M32 17c-4 0-7 2-10 6M12 27c4-1 7 0 10 3M32 27c-4-1-7 0-10 3'/>\",\n tool:\n \"<path d='M31 6c-4-1-8 0-11 3-2 2-3 5-2 8L6 29l5 5 12-12c3 1 6 0 8-2 3-3 4-7 3-11l-6 6-4-4Z'/>\",\n code: \"<path d='M15 13l-7 7 7 7M27 13l7 7-7 7M23 10l-5 20'/>\",\n terminal:\n \"<path d='M5 8h32v25H5Z'/><path d='M11 17l6 4-6 5M21 27h10'/>\",\n laptop: \"<path d='M8 9h28v20H8Z'/><path d='M4 35h36M15 29h14'/>\",\n smartphone:\n \"<path d='M14 4h16a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H14a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4Z'/><path d='M18 9h8M14 32h16'/><circle cx='22' cy='36' r='1.5'/>\",\n battery:\n \"<path d='M6 12h30v20H6Z'/><path d='M36 18h5v8h-5'/><path d='M12 22l12-6-4 5h12l-13 7 4-6Z'/>\",\n sigma: \"<path d='M31 8H10l10 12-10 12h22'/>\",\n function:\n \"<path d='M29 8c-8-2-12 2-13 10l-3 17M8 19h19M26 25l6 7M32 25l-6 7'/>\",\n gear:\n \"<g transform='translate(2 2) scale(1.6667)'><path d='M10.3 4.3c.4-1.7 3-1.7 3.4 0 .3 1.1 1.6 1.7 2.6 1.1 1.5-.9 3.3.8 2.4 2.4-.6 1 0 2.3 1.1 2.6 1.7.4 1.7 3 0 3.4-1.1.3-1.7 1.6-1.1 2.6.9 1.5-.8 3.3-2.4 2.4-1-.6-2.3 0-2.6 1.1-.4 1.7-3 1.7-3.4 0-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1 0-2.3-1.1-2.6-1.7-.4-1.7-3 0-3.4 1.1-.3 1.7-1.6 1.1-2.6-.9-1.5.8-3.3 2.4-2.4 1 .6 2.3 0 2.6-1.1Z'/><circle cx='12' cy='12' r='4'/></g>\",\n chip:\n \"<path d='M11 11h22v22H11Z'/><path d='M16 6v5M22 6v5M28 6v5M16 33v5M22 33v5M28 33v5M6 16h5M6 22h5M6 28h5M33 16h5M33 22h5M33 28h5'/>\",\n logicGate:\n \"<path d='M9 12h12c8 0 14 4 14 10s-6 10-14 10H9Z'/><path d='M3 17h6M3 27h6M35 22h6'/><circle cx='15' cy='17' r='1.5'/><circle cx='15' cy='27' r='1.5'/>\",\n ram:\n \"<path d='M6 12h32v20H6Z'/><path d='M11 17h5v8h-5ZM20 17h5v8h-5ZM29 17h5v8h-5Z'/><path d='M10 8v4M16 8v4M22 8v4M28 8v4M34 8v4M10 32v4M16 32v4M22 32v4M28 32v4M34 32v4'/><path d='M17 32v3h10v-3'/>\",\n opticalFiber:\n \"<path d='M15 38V24h14v14'/><path d='M18 24C11 19 8 14 8 8M21 24C18 17 18 12 18 7M24 24C26 17 26 12 26 7M27 24C34 19 36 14 36 8'/><circle cx='8' cy='8' r='3'/><circle cx='18' cy='7' r='3'/><circle cx='26' cy='7' r='3'/><circle cx='36' cy='8' r='3'/><path d='M12 34h20'/>\",\n database:\n \"<ellipse cx='22' cy='11' rx='15' ry='6'/><path d='M7 11v20c0 3 7 6 15 6s15-3 15-6V11M7 21c0 3 7 6 15 6s15-3 15-6'/>\",\n dataTable:\n \"<path d='M7 9h30v26H7Z'/><path d='M7 16h30M17 16v19M27 16v19M12 12h2M18 12h2M24 12h2'/>\",\n dataPipeline:\n \"<path d='M6 12h10v8H6ZM28 12h10v8H28ZM17 26h10v8H17Z'/><path d='M16 16h12M22 20v6'/><circle cx='16' cy='16' r='1.5'/><circle cx='28' cy='16' r='1.5'/><circle cx='22' cy='26' r='1.5'/>\",\n dataFilter:\n \"<path d='M7 9h30L25 23v11l-6 3V23Z'/><path d='M14 14h16'/>\",\n dataSearch:\n \"<circle cx='18' cy='18' r='10'/><path d='M25 25l11 11M14 18h8M14 23h5'/>\",\n dataPieChart:\n \"<circle cx='22' cy='22' r='15'/><path d='M22 7v15h15'/><path d='M22 22L12 34'/>\",\n dataCloud:\n \"<path d='M13 31h20a7 7 0 0 0 1-14 10 10 0 0 0-19-3 8 8 0 0 0-2 17Z'/><path d='M22 18v11M18 25l4 4 4-4'/>\",\n dataBinaryArray:\n \"<path d='M12 8H8v28h4M32 8h4v28h-4'/><text x='22' y='17' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>101</text><text x='22' y='27' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>010</text><text x='22' y='37' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>111</text>\",\n bracket: \"<path d='M17 8h-7v24h7M27 8h7v24h-7'/>\",\n graph:\n \"<path d='M8 33V11M8 33h29M14 27l7-8 6 5 8-12'/><circle cx='21' cy='19' r='2'/><circle cx='27' cy='24' r='2'/><circle cx='35' cy='12' r='2'/>\",\n atom:\n \"<circle cx='22' cy='22' r='3'/><ellipse cx='22' cy='22' rx='16' ry='6'/><ellipse cx='22' cy='22' rx='16' ry='6' transform='rotate(60 22 22)'/><ellipse cx='22' cy='22' rx='16' ry='6' transform='rotate(-60 22 22)'/>\",\n plus: \"<path d='M22 13v18M13 22h18'/>\",\n dot: \"<circle cx='22' cy='22' r='4'/>\",\n wave: \"<path d='M7 22c8-10 17 10 25 0'/>\",\n equal: \"<path d='M12 18h22M12 26h22'/>\",\n pi: \"<path d='M10 14h26M16 14v20M30 14v15c0 4 3 6 7 4'/>\",\n lambda:\n \"<text x='22' y='35' text-anchor='middle' fill='none' stroke-width='0.65' font-family='Georgia,Times New Roman,serif' font-size='34' font-weight='400'>&#955;</text>\",\n functionDirac:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>i&#947;<tspan baseline-shift='super' font-size='6'>&#956;</tspan>&#8706;<tspan baseline-shift='sub' font-size='6'>&#956;</tspan>&#968;=m&#968;</text>\",\n functionSoftmax:\n \"<text x='43' y='25' text-anchor='end' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='7.5' font-weight='300'>softmax=</text><text x='55' y='18' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>e<tspan baseline-shift='super' font-size='6'>x</tspan></text><path d='M44 23h22'/><text x='55' y='34' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#931;e<tspan baseline-shift='super' font-size='5.5'>x</tspan></text>\",\n functionActivation:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='10' font-weight='300'>y=&#963;(Wx+b)</text>\",\n functionAttention:\n \"<text x='39' y='25' text-anchor='end' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='7.5' font-weight='300'>attn=</text><text x='52' y='18' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>QK<tspan baseline-shift='super' font-size='5.5'>T</tspan></text><path d='M41 23h22'/><text x='52' y='34' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8730;d</text><text x='66' y='25' text-anchor='start' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>V</text>\",\n functionLoss:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>L=-&#931;y log(p)</text>\",\n functionSchrodinger:\n \"<text x='6' y='26' text-anchor='start' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>i&#8463;</text><text x='30' y='18' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8706;&#968;</text><path d='M20 23h20'/><text x='30' y='35' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8706;t</text><text x='48' y='26' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>=-</text><text x='66' y='18' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8463;<tspan baseline-shift='super' font-size='5.5'>2</tspan></text><path d='M56 23h20'/><text x='66' y='35' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>2m</text><text x='81' y='26' text-anchor='start' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>&#8711;<tspan baseline-shift='super' font-size='5.5'>2</tspan>&#968;+V&#968;</text>\",\n functionGraphTanh:\n \"<path d='M7 22h30M22 7v30'/><path d='M8 31c7 0 10-2 14-9 4-7 7-9 14-9'/><path d='M11 31h5M30 13h5'/>\",\n functionGraphGaussian:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 34c5 0 6-20 12-20s7 20 12 20'/><path d='M22 14v21'/>\",\n distributionUniform:\n \"<path d='M7 35V9M7 35h30'/><path d='M11 32V17h22v15'/><path d='M11 17h22'/>\",\n distributionExponential:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 13c7 8 11 14 25 19'/><path d='M10 13h4M31 32h4'/>\",\n distributionBimodal:\n \"<path d='M7 35V9M7 35h30'/><path d='M9 34c4 0 5-13 10-13s5 13 8 13c2 0 3-11 7-11 3 0 3 11 4 11'/>\",\n distributionSkewed:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 34c3 0 4-19 9-19 6 0 7 17 17 17'/><path d='M19 15v19'/>\",\n derivative:\n \"<text x='22' y='17' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='12' font-weight='300'>dy</text><path d='M8 23h28'/><text x='22' y='38' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='12' font-weight='300'>dx</text>\",\n integral: \"<path d='M28 6c-8 0-8 8-8 17s-1 17-9 17M19 7h9M10 39h9'/>\",\n exp:\n \"<text x='18' y='30' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='20' font-weight='300'>e</text><text x='30' y='18' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='11' font-weight='300'>x</text>\",\n sin:\n \"<text x='22' y='28' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='18' font-weight='300'>sin</text>\",\n functionGraphCosin:\n \"<path d='M7 22h30M22 7v30'/><path d='M8 13c4 0 5 18 10 18s6-18 10-18 5 18 8 18'/><path d='M9 13h4M31 31h4'/>\",\n tanh:\n \"<text x='22' y='28' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='16' font-weight='300'>tanh</text>\",\n wifi:\n \"<path d='M9 20c8-8 18-8 26 0M14 26c5-5 11-5 16 0M19 32c2-2 4-2 6 0'/><circle cx='22' cy='36' r='2'/>\",\n internet:\n \"<circle cx='22' cy='22' r='15'/><path d='M7 22h30M22 7c6 8 6 22 0 30M22 7c-6 8-6 22 0 30M11 13c6 3 16 3 22 0M11 31c6-3 16-3 22 0'/>\",\n percent:\n \"<circle cx='14' cy='14' r='4'/><circle cx='30' cy='30' r='4'/><path d='M33 11L11 33'/>\",\n infinity:\n \"<path d='M6 22c0-5 4-9 9-9 4 0 7 3 10 9 3 6 6 9 10 9 5 0 9-4 9-9s-4-9-9-9c-4 0-7 3-10 9-3 6-6 9-10 9-5 0-9-4-9-9Z'/>\",\n bug:\n \"<path d='M14 16h16v15a8 8 0 0 1-16 0Z'/><path d='M18 16v-4h8v4M9 22h5M30 22h5M9 30h5M30 30h5M13 11l-5-5M31 11l5-5'/><circle cx='18' cy='24' r='1.5'/><circle cx='26' cy='24' r='1.5'/>\",\n server:\n \"<path d='M8 9h28v11H8ZM8 24h28v11H8Z'/><circle cx='14' cy='14' r='1.5'/><circle cx='14' cy='29' r='1.5'/>\",\n rocket:\n \"<path d='M22 6L29 15V28L33 36L26 30H18L11 36L15 28V15Z'/><circle cx='22' cy='21' r='3'/><path d='M19 34l3 4M25 34l-3 4M22 30v4'/>\",\n puzzle:\n \"<path d='M10 10h10c0-5 8-5 8 0h8v9c5 0 5 8 0 8v9h-9c0-5-8-5-8 0h-9v-9c5 0 5-8 0-8Z'/>\",\n book:\n \"<path d='M5 10h13c3 0 4 2 4 4 0-2 1-4 4-4h13v26H27c-3 0-5 2-5 4-1-2-2-4-5-4H5Z'/><path d='M22 14v26'/><path d='M10 17h8M10 23h8M10 29h8M26 17h8M26 23h8M26 29h8'/><path d='M5 14H2v26h15c3 0 4 1 5 3 1-2 2-3 5-3h15V14h-3'/>\",\n beaker:\n \"<path d='M16 7h16M20 7v10L11 34a4 4 0 0 0 4 6h18a4 4 0 0 0 4-6l-9-17V7M17 28h14'/>\",\n sliders:\n \"<path d='M8 14h28M8 24h28M8 34h28'/><circle cx='17' cy='14' r='4'/><circle cx='28' cy='24' r='4'/><circle cx='21' cy='34' r='4'/>\",\n keyboard:\n \"<path d='M6 12h32v24H6Z'/><path d='M12 19h3M20 19h3M28 19h3M12 27h3M20 27h12M12 34h20'/>\",\n branch:\n \"<circle cx='12' cy='12' r='4'/><circle cx='32' cy='20' r='4'/><circle cx='12' cy='32' r='4'/><path d='M16 12c8 0 8 8 12 8M16 32c8 0 8-12 12-12'/>\",\n cube:\n \"<path d='M22 6l16 9v18l-16 9-16-9V15Z'/><path d='M6 15l16 9 16-9M22 24v18'/>\",\n} as const;\n\nexport type DoodlePatternIconName = keyof typeof DOODLE_PATTERN_ICON_SVGS;\n\nconst DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH = 88;\nconst DOODLE_PATTERN_WIDE_FUNCTION_ICON_VIEW_BOX_WIDTH = 132;\n\nconst getDoodlePatternIconViewBoxWidth = (\n iconName: DoodlePatternIconName\n): number => {\n const iconViewBoxWidths: Partial<Record<DoodlePatternIconName, number>> = {\n functionActivation: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionAttention: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionDirac: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionLoss: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionSchrodinger: DOODLE_PATTERN_WIDE_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionSoftmax: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n };\n\n return iconViewBoxWidths[iconName] ?? DOODLE_PATTERN_ICON_SIZE;\n};\n\nexport const getDoodlePatternIconViewBox = (\n iconName: DoodlePatternIconName\n): string =>\n `0 0 ${getDoodlePatternIconViewBoxWidth(iconName)} ${DOODLE_PATTERN_ICON_SIZE}`;\n\nexport const getDoodlePatternIconWidth = (\n iconName: DoodlePatternIconName,\n iconSize = DOODLE_PATTERN_ICON_SIZE\n): number =>\n iconSize *\n (getDoodlePatternIconViewBoxWidth(iconName) / DOODLE_PATTERN_ICON_SIZE);\n\nconst PLAYGROUND_AI_DOODLE_HERO_PLACEMENTS = [\n { x: -10, y: 215, icon: \"sin\", rotate: -11, scale: 1.18, priority: 1 },\n { x: -8, y: 100, icon: \"lambda\", rotate: 10, scale: 0.74, priority: 10},\n { x: -2, y: -2, icon: \"code\", rotate: 18, scale: 0.3, priority: 1 }, \n { x: -2, y: 188, icon: \"percent\", rotate: -13, scale: 0.7, priority: 10},\n { x: -1, y: 151, icon: \"dataFilter\", rotate: -18, scale: 0.28, priority: 1 },\n { x: 2, y: 32, icon: \"wifi\", rotate: 13, scale: 0.28, priority: 10},\n { x: 2, y: 79, icon: \"dataSearch\", rotate: -12, scale: 0.3, priority: 10},\n { x: 8, y: 11, icon: \"doc\", rotate: -12, scale: 0.58, priority: 7},\n { x: 9, y: 135, icon: \"functionGraphGaussian\", rotate: -10, scale: 0.9, priority: 6},\n { x: 12, y: 83, icon: \"rocket\", rotate: 15, scale: 0.78, priority: 7},\n { x: 14, y: 121, icon: \"smartphone\", rotate: -19, scale: 0.55, priority: 4},\n { x: 16, y: 58, icon: \"internet\", rotate: -13, scale: 0.32, priority: 5},\n { x: 16, y: 212, icon: \"dataCloud\", rotate: 13, scale: 0.58, priority: 6},\n { x: 22, y: 29, icon: \"functionGraphCosin\", rotate: 9, scale: 0.82, priority: 6},\n { x: 22, y: 165, icon: \"server\", rotate: 13, scale: 1.24, priority: 3}, \n { x: 24, y: -2, icon: \"functionDirac\", rotate: -35, scale: 0.76, priority: 10},\n { x: 24, y: 113, icon: \"functionActivation\", rotate: -5, scale: 0.68, priority: 5},\n { x: 35, y: 91, icon: \"pi\", rotate: 11, scale: 0.8, priority: 6},\n { x: 36, y: 232, icon: \"wave\", rotate: 12, scale: 0.3, priority: 10},\n { x: 43, y: 146, icon: \"dataSearch\", rotate: 13, scale: 0.42, priority: 9},\n { x: 43, y: 219, icon: \"bug\", rotate: -12, scale: 0.34, priority: 4},\n { x: 48, y: 48, icon: \"agent\", rotate: -8, scale: 1.05, priority: 8},\n { x: 52, y: 227, icon: \"distributionSkewed\", rotate: 8, scale: 0.62, priority: 5},\n { x: 57, y: 132, icon: \"dataPipeline\", rotate: 14, scale: 0.34, priority: 5},\n { x: 67, y: 90, icon: \"integral\", rotate: 13, scale: 0.56, priority: 1 },\n { x: 69, y: 151, icon: \"function\", rotate: -14, scale: 0.3, priority: 1 },\n { x: 73, y: 112, icon: \"infinity\", rotate: 15, scale: 0.38, priority: 9},\n { x: 74, y: 12, icon: \"equal\", rotate: -10, scale: 0.28, priority: 10},\n { x: 75, y: 191, icon: \"cursor\", rotate: -9, scale: 0.34, priority: 5},\n { x: 76, y: 144, icon: \"functionGraphTanh\", rotate: -12, scale: 0.82, priority: 6},\n { x: 77, y: 31, icon: \"dataCloud\", rotate: -17, scale: 0.42, priority: 9},\n { x: 78, y: 216, icon: \"keyboard\", rotate: -8, scale: 0.34, priority: 4},\n { x: 82, y: 175, icon: \"derivative\", rotate: -8, scale: 0.38, priority: 6},\n { x: 93, y: 83, icon: \"atom\", rotate: -14, scale: 1.02, priority: 5},\n { x: 94, y: 232, icon: \"distributionSkewed\", rotate: -9, scale: 0.3, priority: 10},\n { x: 95, y: 127, icon: \"grid\", rotate: -9, scale: 0.34, priority: 7},\n { x: 96, y: 5, icon: \"chat\", rotate: 9, scale: 0.95, priority: 8},\n { x: 100, y: 49, icon: \"distributionSkewed\", rotate: 27, scale: 0.32, priority: 4},\n { x: 101, y: 201, icon: \"distributionUniform\", rotate: -8, scale: 0.38, priority: 6},\n { x: 104, y: 172, icon: \"battery\", rotate: 8, scale: 0.72, priority: 3},\n { x: 106, y: 195, icon: \"functionDirac\", rotate: 3, scale: 0.76, priority: 2},\n { x: 112, y: 134, icon: \"tanh\", rotate: -7, scale: 0.42, priority: 6},\n { x: 114, y: 154, icon: \"orchestra\", rotate: 30, scale: 0.42, priority: 6},\n { x: 115, y: 229, icon: \"ram\", rotate: 9, scale: 0.52, priority: 4},\n { x: 116, y: 68, icon: \"tool\", rotate: -18, scale: 0.4, priority: 4}, \n { x: 118, y: 121, icon: \"wifi\", rotate: -17, scale: 0.44, priority: 4 },\n { x: 125, y: 138, icon: \"plus\", rotate: 11, scale: 0.88, priority: 5},\n { x: 125, y: 166, icon: \"exp\", rotate: 8, scale: 0.42, priority: 1 },\n { x: 130, y: 165, icon: \"lambda\", rotate: 8, scale: 0.72, priority: 6},\n { x: 132, y: 115, icon: \"opticalFiber\", rotate: 14, scale: 0.54, priority: 4},\n { x: 132, y: 57, icon: \"wave\", rotate: -9, scale: 0.32, priority: 1 },\n { x: 133, y: 67, icon: \"functionLoss\", rotate: 3, scale: 0.42, priority: 1 },\n { x: 134, y: 2, icon: \"distributionExponential\", rotate: 9, scale: 0.3, priority: 10},\n { x: 141, y: 218, icon: \"pi\", rotate: -15, scale: 0.46, priority: 1 },\n { x: 151, y: 232, icon: \"brain\", rotate: 5, scale: 0.46, priority: 1 },\n { x: 142, y: 82, icon: \"dataTable\", rotate: 8, scale: 0.82, priority: 3},\n { x: 149, y: -1, icon: \"percent\", rotate: 8, scale: 0.28, priority: 1 },\n { x: 150, y: 150, icon: \"cube\", rotate: -13, scale: 1.08, priority: 3},\n { x: 151, y: 23, icon: \"brain\", rotate: -9, scale: 0.82, priority: 3},\n { x: 151, y: 125, icon: \"functionSoftmax\", rotate: -5, scale: 0.7, priority: 5},\n { x: 158, y: 197, icon: \"distributionExponential\", rotate: -12, scale: 0.34, priority: 5},\n { x: 159, y: -15, icon: \"plus\", rotate: 16, scale: 1.2, priority: 1 },\n { x: 163, y: 113, icon: \"sin\", rotate: -10, scale: 0.36, priority: 6},\n { x: 170, y: 67, icon: \"code\", rotate: 14, scale: 0.36, priority: 4},\n { x: 177, y: 53, icon: \"functionSoftmax\", rotate: 15, scale: 0.46, priority: 7},\n { x: 194, y: 183, icon: \"dataBinaryArray\", rotate: 11, scale: 0.34, priority: 4},\n { x: 176, y: 145, icon: \"infinity\", rotate: 14, scale: 0.38, priority: 6},\n { x: 176, y: 222, icon: \"functionGraphCosin\", rotate: 8, scale: 0.72, priority: 10},\n { x: 187, y: 90, icon: \"dataPieChart\", rotate: -12, scale: 0.42, priority: 6},\n { x: 190, y: 112, icon: \"keyboard\", rotate: 9, scale: 0.5, priority: 4},\n { x: 190, y: 207, icon: \"opticalFiber\", rotate: -14, scale: 0.34, priority: 4},\n { x: 198, y: 56, icon: \"functionAttention\", rotate: 4, scale: 0.72, priority: 5},\n { x: 202, y: 100, icon: \"lambda\", rotate: -30, scale: 0.70, priority: 1 },\n { x: 203, y: 5, icon: \"laptop\", rotate: -7, scale: 1.26, priority: 3},\n { x: 204, y: 71, icon: \"distributionExponential\", rotate: -12, scale: 0.9, priority: 3},\n { x: 218, y: 170, icon: \"book\", rotate: -11, scale: 0.94, priority: 5},\n { x: 218, y: 230, icon: \"terminal\", rotate: 5, scale: 0.44, priority: 5},\n { x: 212, y: 140, icon: \"dataCloud\", rotate: 21, scale: 0.40, priority: 1 },\n { x: 222, y: 158, icon: \"derivative\", rotate: 18, scale: 0.38, priority: 7},\n { x: 224, y: 128, icon: \"gear\", rotate: 18, scale: 0.38, priority: 7},\n { x: 229, y: 116, icon: \"dot\", rotate: 0, scale: 0.70, priority: 1 },\n { x: 230, y: 215, icon: \"dataFilter\", rotate: 13, scale: 0.34, priority: 5},\n { x: 238, y: 101, icon: \"puzzle\", rotate: 12, scale: 0.62, priority: 8},\n { x: 249, y: 121, icon: \"bug\", rotate: -8, scale: 0.66, priority: 4},\n { x: 250, y: 55, icon: \"dataBinaryArray\", rotate: 12, scale: 0.3, priority: 4},\n { x: 251, y: 221, icon: \"integral\", rotate: 9, scale: 0.38, priority: 6},\n { x: 254, y: 4, icon: \"sigma\", rotate: -12, scale: 0.48, priority: 1 },\n { x: 256, y: 149, icon: \"function\", rotate: -14, scale: 0.38, priority: 7},\n { x: 258, y: 49, icon: \"dataPieChart\", rotate: 13, scale: 0.2, priority: 1 },\n { x: 258, y: 192, icon: \"functionSchrodinger\", rotate: -2, scale: 0.78, priority: 5},\n { x: 262, y: 95, icon: \"dataSearch\", rotate: -21, scale: 0.40, priority: 1 },\n { x: 264, y: 60, icon: \"distributionUniform\", rotate: 10, scale: 0.72, priority: 9},\n { x: 268, y: 238, icon: \"doc\", rotate: -10, scale: 0.3, priority: 10}, \n { x: 268, y: 29, icon: \"book\", rotate: 13, scale: 0.2, priority: 1 },\n { x: 270, y: 160, icon: \"laptop\", rotate: 12, scale: 0.5, priority: 4 },\n { x: 278, y: 12, icon: \"chip\", rotate: 8, scale: 1.18, priority: 3},\n { x: 278, y: 116, icon: \"equal\", rotate: 15, scale: 0.74, priority: 1 },\n { x: 278, y: 180, icon: \"plus\", rotate: -8, scale: 0.57, priority: 1 },\n { x: 280, y: -4, icon: \"exp\", rotate: 8, scale: 0.62, priority: 1 },\n { x: 286, y: 138, icon: \"functionGraphCosin\", rotate: -8, scale: 0.54, priority: 5},\n { x: 288, y: 78, icon: \"database\", rotate: -11, scale: 1.12, priority: 3},\n { x: 296, y: 158, icon: \"orchestra\", rotate: -12, scale: 0.74, priority: 3},\n { x: 300, y: 62, icon: \"distributionBimodal\", rotate: -8, scale: 0.32, priority: 4},\n { x: 306, y: 218, icon: \"functionGraphGaussian\", rotate: -7, scale: 0.62, priority: 5},\n { x: 317, y: 119, icon: \"graph\", rotate: 11, scale: 0.56, priority: 4},\n { x: 318, y: -2, icon: \"dataBinaryArray\", rotate: -8, scale: 0.8, priority: 10},\n { x: 325, y: 35, icon: \"code\", rotate: 8, scale: 0.8, priority: 10},\n { x: 333, y: 220, icon: \"chip\", rotate: 13, scale: 0.28, priority: 1 },\n { x: 335, y: 65, icon: \"ram\", rotate: -12, scale: 0.68, priority: 4},\n { x: 335, y: 153, icon: \"battery\", rotate: -10, scale: 0.42, priority: 9},\n { x: 336, y: 185, icon: \"opticalFiber\", rotate: 12, scale: 0.4, priority: 9},\n { x: 342, y: 232, icon: \"wifi\", rotate: -11, scale: 0.52, priority: 10},\n { x: 348, y: 136, icon: \"atom\", rotate: 13, scale: 0.44, priority: 1 },\n { x: 350, y: 18, icon: \"branch\", rotate: 12, scale: 0.76, priority: 3},\n { x: 352, y: 86, icon: \"terminal\", rotate: 11, scale: 0.98, priority: 5},\n { x: 355, y: 172, icon: \"agent\", rotate: -12, scale: 0.4, priority: 9},\n { x: 360, y: 160, icon: \"beaker\", rotate: 16, scale: 1.24, priority: 3},\n { x: 360, y: 206, icon: \"functionLoss\", rotate: -4, scale: 1.2, priority: 1 },\n { x: 362, y: 55, icon: \"agent\", rotate: -7, scale: 0.38, priority: 4},\n { x: 364, y: 217, icon: \"dataTable\", rotate: 10, scale: 0.32, priority: 4},\n { x: 370, y: -4, icon: \"tool\", rotate: 11, scale: 0.6, priority: 10},\n { x: 372, y: 237, icon: \"distributionUniform\", rotate: 8, scale: 0.34, priority: 5},\n { x: 374, y: 125, icon: \"rocket\", rotate: 120, scale: 0.4, priority: 7},\n { x: 377, y: 71, icon: \"wifi\", rotate: 13, scale: 0.3, priority: 4},\n { x: 377, y: 81, icon: \"equal\", rotate: -5, scale: 0.3, priority: 4},\n { x: 379, y: 61, icon: \"functionLoss\", rotate: -6, scale: 0.62, priority: 5},\n { x: 381, y: 147, icon: \"distributionSkewed\", rotate: 12, scale: 0.42, priority: 6},\n { x: 384, y: 37, icon: \"distributionExponential\", rotate: -9, scale: 0.46, priority: 6},\n { x: 391, y: 126, icon: \"internet\", rotate: -12, scale: 0.52, priority: 4},\n { x: 391, y: 105, icon: \"lambda\", rotate: -12, scale: 0.44, priority: 5},\n { x: 399, y: 159, icon: \"dataPieChart\", rotate: 12, scale: 0.34, priority: 5},\n { x: 401, y: 86, icon: \"functionGraphCosin\", rotate: -9, scale: 0.42, priority: 6}, \n { x: 402, y: 21, icon: \"integral\", rotate: 9, scale: 0.4, priority: 9},\n { x: 402, y: 135, icon: \"sin\", rotate: -29, scale: 1.2, priority: 6},\n { x: 405, y: 2, icon: \"bracket\", rotate: 10, scale: 0.46, priority: 1 },\n { x: 406, y: 172, icon: \"sliders\", rotate: -16, scale: 0.9, priority: 5},\n { x: 410, y: 23, icon: \"derivative\", rotate: 9, scale: 0.4, priority: 5},\n { x: 410, y: 87, icon: \"exp\", rotate: 12, scale: 0.34, priority: 4},\n { x: 410, y: 94, icon: \"logicGate\", rotate: 13, scale: 1.04, priority: 3},\n { x: 411, y: 48, icon: \"tanh\", rotate: 6, scale: 0.46, priority: 2},\n { x: 419, y: 132, icon: \"distributionBimodal\", rotate: 8, scale: 0.4, priority: 6},\n { x: 423, y: 7, icon: \"model\", rotate: 7, scale: 1.28, priority: 3},\n { x: 428, y: 68, icon: \"dataTable\", rotate: -6, scale: 0.46, priority: 2},\n { x: 435, y: -2, icon: \"grid\", rotate: 2, scale: 0.26, priority: 1 },\n { x: 438, y: 238, icon: \"infinity\", rotate: 8, scale: 0.3, priority: 10},\n { x: 444, y: 122, icon: \"percent\", rotate: 11, scale: 0.32, priority: 4},\n { x: 444, y: 151, icon: \"functionGraphGaussian\", rotate: 12, scale: 0.42, priority: 6},\n { x: 449, y: 84, icon: \"bracket\", rotate: -10, scale: 0.32, priority: 4},\n { x: 447, y: 178, icon: \"functionGraphTanh\", rotate: -21, scale: 1.1, priority: 5},\n { x: 457, y: 58, icon: \"wifi\", rotate: 13, scale: 0.34, priority: 7},\n { x: 458, y: 125, icon: \"dataCloud\", rotate: 16, scale: 0.38, priority: 4},\n { x: 458, y: 143, icon: \"graph\", rotate: 10, scale: 0.66, priority: 5},\n { x: 459, y: 222, icon: \"function\", rotate: 0, scale: 0.7, priority: 1 },\n { x: 464, y: 78, icon: \"plus\", rotate: -16, scale: 0.28, priority: 1 },\n { x: 465, y: 0, icon: \"chat\", rotate: -12, scale: 0.28, priority: 10},\n { x: 468, y: 168, icon: \"dataSearch\", rotate: -13, scale: 0.36, priority: 4},\n { x: 471, y: 114, icon: \"sigma\", rotate: 13, scale: 0.34, priority: 4},\n { x: 473, y: 38, icon: \"dataPipeline\", rotate: -9, scale: 0.56, priority: 2},\n { x: 475, y: 85, icon: \"distributionBimodal\", rotate: -18, scale: 0.78, priority: 3},\n { x: 479, y: 59, icon: \"cursor\", rotate: -18, scale: 0.78, priority: 3},\n { x: 482, y: 204, icon: \"smartphone\", rotate: 13, scale: 0.62, priority: 3},\n { x: 486, y: 14, icon: \"dataFilter\", rotate: 17, scale: 0.54, priority: 6},\n { x: 490, y: 151, icon: \"cursor\", rotate: 15, scale: 0.36, priority: 10},\n { x: 500, y: 34, icon: \"function\", rotate: 12, scale: 0.3, priority: 10},\n { x: 500, y: 134, icon: \"dataBinaryArray\", rotate: 10, scale: 0.3, priority: 10},\n { x: 501, y: 193, icon: \"derivative\", rotate: -8, scale: 0.5, priority: 10}, \n { x: 508, y: -2, icon: \"pi\", rotate: 16, scale: 0.34, priority: 1 },\n { x: 509, y: 112, icon: \"integral\", rotate: 11, scale: 0.34, priority: 10},\n] satisfies DoodlePatternPlacement[];\n\nconst PLAYGROUND_AI_DOODLE_FLOATING_PLACEMENTS = [\n { x: 33, y: 5, icon: \"dataBinaryArray\", rotate: -11, scale: 0.3, priority: 1 },\n { x: 42, y: 58, icon: \"dot\", rotate: 0, scale: 0.24, priority: 1 },\n { x: 383, y: 59, icon: \"gear\", rotate: 11, scale: 0.28, priority: 1 },\n { x: 502, y: 83, icon: \"wave\", rotate: 13, scale: 0.3, priority: 1 },\n { x: 4, y: 72, icon: \"lambda\", rotate: 10, scale: 0.32, priority: 1 },\n { x: 498, y: 133, icon: \"dot\", rotate: 0, scale: 0.26, priority: 1 },\n { x: 204, y: 157, icon: \"wave\", rotate: 13, scale: 0.26, priority: 1 },\n { x: 244, y: 151, icon: \"sigma\", rotate: -9, scale: 0.24, priority: 4 },\n { x: 319, y: 154, icon: \"bracket\", rotate: -11, scale: 0.22, priority: 4 },\n { x: 348, y: 150, icon: \"lambda\", rotate: 8, scale: 0.22, priority: 4 },\n { x: 335, y: 202, icon: \"dot\", rotate: 0, scale: 0.22, priority: 1 },\n { x: 502, y: 184, icon: \"equal\", rotate: 15, scale: 0.28, priority: 1 },\n { x: 84, y: 229, icon: \"dot\", rotate: 0, scale: 0.24, priority: 1 },\n { x: 202, y: 221, icon: \"distributionUniform\", rotate: 8, scale: 0.3, priority: 1 },\n { x: 390, y: 228, icon: \"wave\", rotate: 9, scale: 0.3, priority: 1 },\n { x: 506, y: 226, icon: \"dataBinaryArray\", rotate: -18, scale: 0.28, priority: 1 },\n] satisfies DoodlePatternPlacement[];\n\nexport const PLAYGROUND_AI_DOODLE_PLACEMENTS: DoodlePatternPlacement[] = [\n ...PLAYGROUND_AI_DOODLE_HERO_PLACEMENTS,\n ...PLAYGROUND_AI_DOODLE_FLOATING_PLACEMENTS,\n];\n\nexport interface BuildDoodlePatternSvgOptions {\n width?: number;\n height?: number;\n iconSize?: number;\n renderScale?: number;\n placements?: DoodlePatternPlacement[];\n accentPlacements?: DoodlePatternPlacement[];\n}\n\nconst mutateDoodlePatternPlacements = (\n placements: DoodlePatternPlacement[]\n): DoodlePatternPlacement[] => {\n const iconOccurrences = new Map<DoodlePatternIconName, number>();\n\n return placements.map((placement) => {\n const occurrence = iconOccurrences.get(placement.icon) ?? 0;\n iconOccurrences.set(placement.icon, occurrence + 1);\n\n if (placement.priority) {\n return placement;\n }\n\n const mutation =\n DOODLE_PATTERN_ICON_MUTATIONS[\n occurrence % DOODLE_PATTERN_ICON_MUTATIONS.length\n ];\n\n return {\n ...placement,\n rotate: (placement.rotate ?? 0) + mutation.rotate,\n scale: (placement.scale ?? 1) * mutation.scale,\n };\n });\n};\n\nconst sortDoodlePatternPlacementsByPosition = (\n placements: DoodlePatternPlacement[]\n): DoodlePatternPlacement[] =>\n [...placements].sort((a, b) => a.x - b.x || a.y - b.y);\n\nconst renderDoodlePatternPlacement = (\n placement: DoodlePatternPlacement,\n iconSize: number\n): string => {\n const scale = placement.scale ?? 1;\n const width = getDoodlePatternIconWidth(placement.icon, iconSize) * scale;\n const height = iconSize * scale;\n const viewBox = getDoodlePatternIconViewBox(placement.icon);\n const centerX = getDoodlePatternIconViewBoxWidth(placement.icon) / 2;\n const transform = placement.rotate\n ? ` transform='rotate(${placement.rotate} ${centerX} ${iconSize / 2})'`\n : \"\";\n\n return `<svg x='${placement.x}' y='${placement.y}' width='${width}' height='${height}' viewBox='${viewBox}' overflow='visible'><g${transform}>${DOODLE_PATTERN_ICON_SVGS[placement.icon]}</g></svg>`;\n};\n\nexport const buildDoodlePatternSvg = (\n palette: DoodlePatternPalette,\n options: BuildDoodlePatternSvgOptions = {}\n): string =>\n buildDoodlePatternSvgWithStroke(\n {\n primary: palette.primary,\n primaryOpacity: palette.primaryOpacity,\n primaryWidth: palette.primaryWidth,\n accent: palette.accent,\n accentOpacity: palette.accentOpacity,\n accentWidth: palette.accentWidth,\n },\n options\n );\n\nexport const buildDoodlePatternMaskSvg = (\n options: BuildDoodlePatternSvgOptions = {}\n): string =>\n buildDoodlePatternSvgWithStroke(\n {\n primary: DOODLE_PATTERN_MASK_COLOR,\n primaryOpacity: 1,\n primaryWidth: DOODLE_PATTERN_STRUCTURE.primaryWidth,\n accent: DOODLE_PATTERN_MASK_COLOR,\n accentOpacity: 1,\n accentWidth: DOODLE_PATTERN_STRUCTURE.accentWidth,\n },\n options\n );\n\nconst buildDoodlePatternSvgWithStroke = (\n stroke: {\n primary: string;\n primaryOpacity: number;\n primaryWidth: number;\n accent: string;\n accentOpacity: number;\n accentWidth: number;\n },\n options: BuildDoodlePatternSvgOptions = {}\n): string => {\n const width = options.width ?? DOODLE_PATTERN_TILE_WIDTH;\n const height = options.height ?? DOODLE_PATTERN_TILE_HEIGHT;\n const renderScale = options.renderScale ?? DOODLE_PATTERN_RENDER_SCALE;\n const renderWidth = width * renderScale;\n const renderHeight = height * renderScale;\n const iconSize = options.iconSize ?? DOODLE_PATTERN_ICON_SIZE;\n const placements = sortDoodlePatternPlacementsByPosition(\n mutateDoodlePatternPlacements(\n options.placements ?? PLAYGROUND_AI_DOODLE_PLACEMENTS\n )\n );\n const accentPlacements = sortDoodlePatternPlacementsByPosition(\n mutateDoodlePatternPlacements(options.accentPlacements ?? [])\n );\n const renderedPlacements = placements\n .map((placement) => renderDoodlePatternPlacement(placement, iconSize))\n .join(\"\");\n const renderedAccentPlacements = accentPlacements\n .map((placement) => renderDoodlePatternPlacement(placement, iconSize))\n .join(\"\");\n\n return `<svg xmlns='http://www.w3.org/2000/svg' width='${renderWidth}' height='${renderHeight}' viewBox='0 0 ${width} ${height}'><g fill='none' stroke='${stroke.primary}' stroke-opacity='${stroke.primaryOpacity}' stroke-width='${stroke.primaryWidth}' stroke-linecap='round' stroke-linejoin='round'>${renderedPlacements}</g><g fill='none' stroke='${stroke.accent}' stroke-opacity='${stroke.accentOpacity}' stroke-width='${stroke.accentWidth}' stroke-linecap='round' stroke-linejoin='round'>${renderedAccentPlacements}</g></svg>`;\n};\n\nexport const toDoodlePatternBackgroundUrl = (svg: string): string =>\n `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\")`;\n","// Generated by scripts/generateDoodlePattern.mjs. Do not edit manually.\n\nexport const DOODLE_PATTERN_MASK_URL = \"url(\\\"data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'1560'%20height%3D'750'%20viewBox%3D'0%200%20520%20250'%3E%3Cg%20fill%3D'none'%20stroke%3D'%23000'%20stroke-opacity%3D'1'%20stroke-width%3D'1.55'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Csvg%20x%3D'-10'%20y%3D'215'%20width%3D'51.919999999999995'%20height%3D'51.919999999999995'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-8'%20y%3D'100'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-2'%20y%3D'-2'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-2'%20y%3D'188'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-1'%20y%3D'151'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'2'%20y%3D'32'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'2'%20y%3D'79'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'4'%20y%3D'72'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'8'%20y%3D'11'%20width%3D'25.52'%20height%3D'25.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M9%205h18l8%208v23H9Z'%2F%3E%3Cpath%20d%3D'M27%205v9h8M15%2021h14M15%2029h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'9'%20y%3D'135'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'12'%20y%3D'83'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M22%206L29%2015V28L33%2036L26%2030H18L11%2036L15%2028V15Z'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'21'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M19%2034l3%204M25%2034l-3%204M22%2030v4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'14'%20y%3D'121'%20width%3D'24.200000000000003'%20height%3D'24.200000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-19%2022%2022)'%3E%3Cpath%20d%3D'M14%204h16a4%204%200%200%201%204%204v28a4%204%200%200%201-4%204H14a4%204%200%200%201-4-4V8a4%204%200%200%201%204-4Z'%2F%3E%3Cpath%20d%3D'M18%209h8M14%2032h16'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'16'%20y%3D'58'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M7%2022h30M22%207c6%208%206%2022%200%2030M22%207c-6%208-6%2022%200%2030M11%2013c6%203%2016%203%2022%200M11%2031c6-3%2016-3%2022%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'16'%20y%3D'212'%20width%3D'25.52'%20height%3D'25.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'22'%20y%3D'29'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'22'%20y%3D'165'%20width%3D'54.56'%20height%3D'54.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v11H8ZM8%2024h28v11H8Z'%2F%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'14'%20cy%3D'29'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'24'%20y%3D'-2'%20width%3D'66.88'%20height%3D'33.44'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-35%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ei%26%23947%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%238706%3B%3Ctspan%20baseline-shift%3D'sub'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%23968%3B%3Dm%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'24'%20y%3D'113'%20width%3D'59.84'%20height%3D'29.92'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'10'%20font-weight%3D'300'%3Ey%3D%26%23963%3B(Wx%2Bb)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'33'%20y%3D'5'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'35'%20y%3D'91'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'36'%20y%3D'232'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'42'%20y%3D'58'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'43'%20y%3D'146'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'43'%20y%3D'219'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M14%2016h16v15a8%208%200%200%201-16%200Z'%2F%3E%3Cpath%20d%3D'M18%2016v-4h8v4M9%2022h5M30%2022h5M9%2030h5M30%2030h5M13%2011l-5-5M31%2011l5-5'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'48'%20y%3D'48'%20width%3D'46.2'%20height%3D'46.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'52'%20y%3D'227'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'57'%20y%3D'132'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h10v8H6ZM28%2012h10v8H28ZM17%2026h10v8H17Z'%2F%3E%3Cpath%20d%3D'M16%2016h12M22%2020v6'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'26'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'67'%20y%3D'90'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'69'%20y%3D'151'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'73'%20y%3D'112'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'74'%20y%3D'12'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'75'%20y%3D'191'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'76'%20y%3D'144'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2031c7%200%2010-2%2014-9%204-7%207-9%2014-9'%2F%3E%3Cpath%20d%3D'M11%2031h5M30%2013h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'77'%20y%3D'31'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-17%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'78'%20y%3D'216'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v24H6Z'%2F%3E%3Cpath%20d%3D'M12%2019h3M20%2019h3M28%2019h3M12%2027h3M20%2027h12M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'82'%20y%3D'175'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'84'%20y%3D'229'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'93'%20y%3D'83'%20width%3D'44.88'%20height%3D'44.88'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'3'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(60%2022%2022)'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(-60%2022%2022)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'94'%20y%3D'232'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'95'%20y%3D'127'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%207h30v30H7ZM7%2017h30M7%2027h30M17%207v30M27%207v30'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'96'%20y%3D'5'%20width%3D'41.8'%20height%3D'41.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M8%208h26a7%207%200%200%201%207%207v13a7%207%200%200%201-7%207h-8l-8%207v-7H8a7%207%200%200%201-7-7V15a7%207%200%200%201%207-7Z'%2F%3E%3Cpath%20d%3D'M11%2019h18M11%2027h11'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'100'%20y%3D'49'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(27%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'101'%20y%3D'201'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'104'%20y%3D'172'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h30v20H6Z'%2F%3E%3Cpath%20d%3D'M36%2018h5v8h-5'%2F%3E%3Cpath%20d%3D'M12%2022l12-6-4%205h12l-13%207%204-6Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'106'%20y%3D'195'%20width%3D'66.88'%20height%3D'33.44'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(3%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ei%26%23947%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%238706%3B%3Ctspan%20baseline-shift%3D'sub'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%23968%3B%3Dm%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'112'%20y%3D'134'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'16'%20font-weight%3D'300'%3Etanh%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'114'%20y%3D'154'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(30%2022%2022)'%3E%3Cpath%20d%3D'M22%204l7%204v8l-7%204-7-4V8ZM11%2024l7%204v8l-7%204-7-4v-8ZM33%2024l7%204v8l-7%204-7-4v-8Z'%2F%3E%3Cpath%20d%3D'M19%2021l-3%205M25%2021l3%205M20%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'115'%20y%3D'229'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v20H6Z'%2F%3E%3Cpath%20d%3D'M11%2017h5v8h-5ZM20%2017h5v8h-5ZM29%2017h5v8h-5Z'%2F%3E%3Cpath%20d%3D'M10%208v4M16%208v4M22%208v4M28%208v4M34%208v4M10%2032v4M16%2032v4M22%2032v4M28%2032v4M34%2032v4'%2F%3E%3Cpath%20d%3D'M17%2032v3h10v-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'116'%20y%3D'68'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M31%206c-4-1-8%200-11%203-2%202-3%205-2%208L6%2029l5%205%2012-12c3%201%206%200%208-2%203-3%204-7%203-11l-6%206-4-4Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'118'%20y%3D'121'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-17%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'125'%20y%3D'138'%20width%3D'38.72'%20height%3D'38.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'125'%20y%3D'166'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'130'%20y%3D'165'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'132'%20y%3D'57'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'132'%20y%3D'115'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'133'%20y%3D'67'%20width%3D'36.96'%20height%3D'18.48'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(3%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'134'%20y%3D'2'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'141'%20y%3D'218'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-15%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'142'%20y%3D'82'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'149'%20y%3D'-1'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'150'%20y%3D'150'%20width%3D'47.52'%20height%3D'47.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Cpath%20d%3D'M22%206l16%209v18l-16%209-16-9V15Z'%2F%3E%3Cpath%20d%3D'M6%2015l16%209%2016-9M22%2024v18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'23'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M14%209c-6%200-10%204-10%2010%200%203%201%205%203%207-1%205%203%209%208%209%203%200%205-1%207-3%202%202%204%203%207%203%205%200%209-4%208-9%202-2%203-4%203-7%200-6-4-10-10-10-3%200-6%201-8%203-2-2-5-3-8-3Z'%2F%3E%3Cpath%20d%3D'M22%2012v20M12%2017c4%200%207%202%2010%206M32%2017c-4%200-7%202-10%206M12%2027c4-1%207%200%2010%203M32%2027c-4-1-7%200-10%203'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'125'%20width%3D'61.599999999999994'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2044%2022)'%3E%3Ctext%20x%3D'43'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Esoftmax%3D%3C%2Ftext%3E%3Ctext%20x%3D'55'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ee%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M44%2023h22'%2F%3E%3Ctext%20x%3D'55'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%23931%3Be%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'232'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(5%2022%2022)'%3E%3Cpath%20d%3D'M14%209c-6%200-10%204-10%2010%200%203%201%205%203%207-1%205%203%209%208%209%203%200%205-1%207-3%202%202%204%203%207%203%205%200%209-4%208-9%202-2%203-4%203-7%200-6-4-10-10-10-3%200-6%201-8%203-2-2-5-3-8-3Z'%2F%3E%3Cpath%20d%3D'M22%2012v20M12%2017c4%200%207%202%2010%206M32%2017c-4%200-7%202-10%206M12%2027c4-1%207%200%2010%203M32%2027c-4-1-7%200-10%203'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'158'%20y%3D'197'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'159'%20y%3D'-15'%20width%3D'52.8'%20height%3D'52.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'163'%20y%3D'113'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'170'%20y%3D'67'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'176'%20y%3D'145'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'176'%20y%3D'222'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'177'%20y%3D'53'%20width%3D'40.480000000000004'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2044%2022)'%3E%3Ctext%20x%3D'43'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Esoftmax%3D%3C%2Ftext%3E%3Ctext%20x%3D'55'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ee%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M44%2023h22'%2F%3E%3Ctext%20x%3D'55'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%23931%3Be%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'187'%20y%3D'90'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'190'%20y%3D'112'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v24H6Z'%2F%3E%3Cpath%20d%3D'M12%2019h3M20%2019h3M28%2019h3M12%2027h3M20%2027h12M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'190'%20y%3D'207'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'194'%20y%3D'183'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'198'%20y%3D'56'%20width%3D'63.36'%20height%3D'31.68'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(4%2044%2022)'%3E%3Ctext%20x%3D'39'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Eattn%3D%3C%2Ftext%3E%3Ctext%20x%3D'52'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3EQK%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3ET%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M41%2023h22'%2F%3E%3Ctext%20x%3D'52'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238730%3Bd%3C%2Ftext%3E%3Ctext%20x%3D'66'%20y%3D'25'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3EV%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'202'%20y%3D'100'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-30%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'202'%20y%3D'221'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'203'%20y%3D'5'%20width%3D'55.44'%20height%3D'55.44'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v20H8Z'%2F%3E%3Cpath%20d%3D'M4%2035h36M15%2029h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'204'%20y%3D'71'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'204'%20y%3D'157'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'212'%20y%3D'140'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(21%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'218'%20y%3D'170'%20width%3D'41.36'%20height%3D'41.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M5%2010h13c3%200%204%202%204%204%200-2%201-4%204-4h13v26H27c-3%200-5%202-5%204-1-2-2-4-5-4H5Z'%2F%3E%3Cpath%20d%3D'M22%2014v26'%2F%3E%3Cpath%20d%3D'M10%2017h8M10%2023h8M10%2029h8M26%2017h8M26%2023h8M26%2029h8'%2F%3E%3Cpath%20d%3D'M5%2014H2v26h15c3%200%204%201%205%203%201-2%202-3%205-3h15V14h-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'218'%20y%3D'230'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(5%2022%2022)'%3E%3Cpath%20d%3D'M5%208h32v25H5Z'%2F%3E%3Cpath%20d%3D'M11%2017l6%204-6%205M21%2027h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'222'%20y%3D'158'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'224'%20y%3D'128'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Cg%20transform%3D'translate(2%202)%20scale(1.6667)'%3E%3Cpath%20d%3D'M10.3%204.3c.4-1.7%203-1.7%203.4%200%20.3%201.1%201.6%201.7%202.6%201.1%201.5-.9%203.3.8%202.4%202.4-.6%201%200%202.3%201.1%202.6%201.7.4%201.7%203%200%203.4-1.1.3-1.7%201.6-1.1%202.6.9%201.5-.8%203.3-2.4%202.4-1-.6-2.3%200-2.6%201.1-.4%201.7-3%201.7-3.4%200-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1%200-2.3-1.1-2.6-1.7-.4-1.7-3%200-3.4%201.1-.3%201.7-1.6%201.1-2.6-.9-1.5.8-3.3%202.4-2.4%201%20.6%202.3%200%202.6-1.1Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'229'%20y%3D'116'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'230'%20y%3D'215'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'238'%20y%3D'101'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M10%2010h10c0-5%208-5%208%200h8v9c5%200%205%208%200%208v9h-9c0-5-8-5-8%200h-9v-9c5%200%205-8%200-8Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'244'%20y%3D'151'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'249'%20y%3D'121'%20width%3D'29.040000000000003'%20height%3D'29.040000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M14%2016h16v15a8%208%200%200%201-16%200Z'%2F%3E%3Cpath%20d%3D'M18%2016v-4h8v4M9%2022h5M30%2022h5M9%2030h5M30%2030h5M13%2011l-5-5M31%2011l5-5'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'250'%20y%3D'55'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'251'%20y%3D'221'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'254'%20y%3D'4'%20width%3D'21.119999999999997'%20height%3D'21.119999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'256'%20y%3D'149'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'258'%20y%3D'49'%20width%3D'8.8'%20height%3D'8.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'258'%20y%3D'192'%20width%3D'102.96000000000001'%20height%3D'34.32'%20viewBox%3D'0%200%20132%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-2%2066%2022)'%3E%3Ctext%20x%3D'6'%20y%3D'26'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3Ei%26%238463%3B%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238706%3B%26%23968%3B%3C%2Ftext%3E%3Cpath%20d%3D'M20%2023h20'%2F%3E%3Ctext%20x%3D'30'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238706%3Bt%3C%2Ftext%3E%3Ctext%20x%3D'48'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3E%3D-%3C%2Ftext%3E%3Ctext%20x%3D'66'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238463%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3E2%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M56%2023h20'%2F%3E%3Ctext%20x%3D'66'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E2m%3C%2Ftext%3E%3Ctext%20x%3D'81'%20y%3D'26'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3E%26%238711%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3E2%3C%2Ftspan%3E%26%23968%3B%2BV%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'262'%20y%3D'95'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-21%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'264'%20y%3D'60'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'268'%20y%3D'29'%20width%3D'8.8'%20height%3D'8.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M5%2010h13c3%200%204%202%204%204%200-2%201-4%204-4h13v26H27c-3%200-5%202-5%204-1-2-2-4-5-4H5Z'%2F%3E%3Cpath%20d%3D'M22%2014v26'%2F%3E%3Cpath%20d%3D'M10%2017h8M10%2023h8M10%2029h8M26%2017h8M26%2023h8M26%2029h8'%2F%3E%3Cpath%20d%3D'M5%2014H2v26h15c3%200%204%201%205%203%201-2%202-3%205-3h15V14h-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'268'%20y%3D'238'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M9%205h18l8%208v23H9Z'%2F%3E%3Cpath%20d%3D'M27%205v9h8M15%2021h14M15%2029h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'270'%20y%3D'160'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v20H8Z'%2F%3E%3Cpath%20d%3D'M4%2035h36M15%2029h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'12'%20width%3D'51.919999999999995'%20height%3D'51.919999999999995'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M11%2011h22v22H11Z'%2F%3E%3Cpath%20d%3D'M16%206v5M22%206v5M28%206v5M16%2033v5M22%2033v5M28%2033v5M6%2016h5M6%2022h5M6%2028h5M33%2016h5M33%2022h5M33%2028h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'116'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'180'%20width%3D'25.08'%20height%3D'25.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'280'%20y%3D'-4'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'286'%20y%3D'138'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'288'%20y%3D'78'%20width%3D'49.28'%20height%3D'49.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cellipse%20cx%3D'22'%20cy%3D'11'%20rx%3D'15'%20ry%3D'6'%2F%3E%3Cpath%20d%3D'M7%2011v20c0%203%207%206%2015%206s15-3%2015-6V11M7%2021c0%203%207%206%2015%206s15-3%2015-6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'296'%20y%3D'158'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M22%204l7%204v8l-7%204-7-4V8ZM11%2024l7%204v8l-7%204-7-4v-8ZM33%2024l7%204v8l-7%204-7-4v-8Z'%2F%3E%3Cpath%20d%3D'M19%2021l-3%205M25%2021l3%205M20%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'300'%20y%3D'62'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'306'%20y%3D'218'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'317'%20y%3D'119'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M8%2033V11M8%2033h29M14%2027l7-8%206%205%208-12'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'19'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'24'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'35'%20cy%3D'12'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'318'%20y%3D'-2'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'319'%20y%3D'154'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'325'%20y%3D'35'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'333'%20y%3D'220'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M11%2011h22v22H11Z'%2F%3E%3Cpath%20d%3D'M16%206v5M22%206v5M28%206v5M16%2033v5M22%2033v5M28%2033v5M6%2016h5M6%2022h5M6%2028h5M33%2016h5M33%2022h5M33%2028h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'65'%20width%3D'29.92'%20height%3D'29.92'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v20H6Z'%2F%3E%3Cpath%20d%3D'M11%2017h5v8h-5ZM20%2017h5v8h-5ZM29%2017h5v8h-5Z'%2F%3E%3Cpath%20d%3D'M10%208v4M16%208v4M22%208v4M28%208v4M34%208v4M10%2032v4M16%2032v4M22%2032v4M28%2032v4M34%2032v4'%2F%3E%3Cpath%20d%3D'M17%2032v3h10v-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'153'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h30v20H6Z'%2F%3E%3Cpath%20d%3D'M36%2018h5v8h-5'%2F%3E%3Cpath%20d%3D'M12%2022l12-6-4%205h12l-13%207%204-6Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'202'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'336'%20y%3D'185'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'342'%20y%3D'232'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'348'%20y%3D'136'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'3'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(60%2022%2022)'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(-60%2022%2022)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'348'%20y%3D'150'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'350'%20y%3D'18'%20width%3D'33.44'%20height%3D'33.44'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'32'%20cy%3D'20'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'32'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M16%2012c8%200%208%208%2012%208M16%2032c8%200%208-12%2012-12'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'352'%20y%3D'86'%20width%3D'43.12'%20height%3D'43.12'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M5%208h32v25H5Z'%2F%3E%3Cpath%20d%3D'M11%2017l6%204-6%205M21%2027h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'355'%20y%3D'172'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'360'%20y%3D'160'%20width%3D'54.56'%20height%3D'54.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M16%207h16M20%207v10L11%2034a4%204%200%200%200%204%206h18a4%204%200%200%200%204-6l-9-17V7M17%2028h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'360'%20y%3D'206'%20width%3D'105.6'%20height%3D'52.8'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-4%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'362'%20y%3D'55'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'364'%20y%3D'217'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'370'%20y%3D'-4'%20width%3D'26.4'%20height%3D'26.4'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M31%206c-4-1-8%200-11%203-2%202-3%205-2%208L6%2029l5%205%2012-12c3%201%206%200%208-2%203-3%204-7%203-11l-6%206-4-4Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'372'%20y%3D'237'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'374'%20y%3D'125'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(120%2022%2022)'%3E%3Cpath%20d%3D'M22%206L29%2015V28L33%2036L26%2030H18L11%2036L15%2028V15Z'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'21'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M19%2034l3%204M25%2034l-3%204M22%2030v4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'377'%20y%3D'71'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'377'%20y%3D'81'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'379'%20y%3D'61'%20width%3D'54.56'%20height%3D'27.28'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-6%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'381'%20y%3D'147'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'383'%20y%3D'59'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cg%20transform%3D'translate(2%202)%20scale(1.6667)'%3E%3Cpath%20d%3D'M10.3%204.3c.4-1.7%203-1.7%203.4%200%20.3%201.1%201.6%201.7%202.6%201.1%201.5-.9%203.3.8%202.4%202.4-.6%201%200%202.3%201.1%202.6%201.7.4%201.7%203%200%203.4-1.1.3-1.7%201.6-1.1%202.6.9%201.5-.8%203.3-2.4%202.4-1-.6-2.3%200-2.6%201.1-.4%201.7-3%201.7-3.4%200-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1%200-2.3-1.1-2.6-1.7-.4-1.7-3%200-3.4%201.1-.3%201.7-1.6%201.1-2.6-.9-1.5.8-3.3%202.4-2.4%201%20.6%202.3%200%202.6-1.1Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'384'%20y%3D'37'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'390'%20y%3D'228'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'391'%20y%3D'105'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'391'%20y%3D'126'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M7%2022h30M22%207c6%208%206%2022%200%2030M22%207c-6%208-6%2022%200%2030M11%2013c6%203%2016%203%2022%200M11%2031c6-3%2016-3%2022%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'399'%20y%3D'159'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'401'%20y%3D'86'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'402'%20y%3D'21'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'402'%20y%3D'135'%20width%3D'52.8'%20height%3D'52.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-29%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'405'%20y%3D'2'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'406'%20y%3D'172'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-16%2022%2022)'%3E%3Cpath%20d%3D'M8%2014h28M8%2024h28M8%2034h28'%2F%3E%3Ccircle%20cx%3D'17'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'24'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'34'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'23'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'87'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'94'%20width%3D'45.760000000000005'%20height%3D'45.760000000000005'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2012h12c8%200%2014%204%2014%2010s-6%2010-14%2010H9Z'%2F%3E%3Cpath%20d%3D'M3%2017h6M3%2027h6M35%2022h6'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'17'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'27'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'411'%20y%3D'48'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(6%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'16'%20font-weight%3D'300'%3Etanh%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'419'%20y%3D'132'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'423'%20y%3D'7'%20width%3D'56.32'%20height%3D'56.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(7%2022%2022)'%3E%3Cpath%20d%3D'M12%2010h20a6%206%200%200%201%206%206v14a6%206%200%200%201-6%206H12a6%206%200%200%201-6-6V16a6%206%200%200%201%206-6Z'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'20'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'20'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'29'%20r%3D'2.5'%2F%3E%3Cpath%20d%3D'M18%2021l3%206M26%2021l-3%206'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'428'%20y%3D'68'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-6%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'435'%20y%3D'-2'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(2%2022%2022)'%3E%3Cpath%20d%3D'M7%207h30v30H7ZM7%2017h30M7%2027h30M17%207v30M27%207v30'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'438'%20y%3D'238'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'444'%20y%3D'122'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'444'%20y%3D'151'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'447'%20y%3D'178'%20width%3D'48.400000000000006'%20height%3D'48.400000000000006'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-21%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2031c7%200%2010-2%2014-9%204-7%207-9%2014-9'%2F%3E%3Cpath%20d%3D'M11%2031h5M30%2013h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'449'%20y%3D'84'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'457'%20y%3D'58'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'458'%20y%3D'125'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'458'%20y%3D'143'%20width%3D'29.040000000000003'%20height%3D'29.040000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M8%2033V11M8%2033h29M14%2027l7-8%206%205%208-12'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'19'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'24'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'35'%20cy%3D'12'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'459'%20y%3D'222'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'464'%20y%3D'78'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-16%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'465'%20y%3D'0'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M8%208h26a7%207%200%200%201%207%207v13a7%207%200%200%201-7%207h-8l-8%207v-7H8a7%207%200%200%201-7-7V15a7%207%200%200%201%207-7Z'%2F%3E%3Cpath%20d%3D'M11%2019h18M11%2027h11'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'468'%20y%3D'168'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'471'%20y%3D'114'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'473'%20y%3D'38'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h10v8H6ZM28%2012h10v8H28ZM17%2026h10v8H17Z'%2F%3E%3Cpath%20d%3D'M16%2016h12M22%2020v6'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'26'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'475'%20y%3D'85'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'479'%20y%3D'59'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'482'%20y%3D'204'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M14%204h16a4%204%200%200%201%204%204v28a4%204%200%200%201-4%204H14a4%204%200%200%201-4-4V8a4%204%200%200%201%204-4Z'%2F%3E%3Cpath%20d%3D'M18%209h8M14%2032h16'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'486'%20y%3D'14'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(17%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'490'%20y%3D'151'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'498'%20y%3D'133'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'500'%20y%3D'34'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'500'%20y%3D'134'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'501'%20y%3D'193'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'502'%20y%3D'83'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'502'%20y%3D'184'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'506'%20y%3D'226'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'508'%20y%3D'-2'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'509'%20y%3D'112'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3C%2Fg%3E%3Cg%20fill%3D'none'%20stroke%3D'%23000'%20stroke-opacity%3D'1'%20stroke-width%3D'1.3'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\")\";\n","import type { SxProps, Theme } from \"@mui/material/styles\";\nimport {\n DOODLE_PATTERN_TILE_HEIGHT,\n DOODLE_PATTERN_TILE_WIDTH,\n} from \"./doodlePattern\";\nimport { DOODLE_PATTERN_MASK_URL } from \"./generated/doodlePatternMask\";\n\nexport const doodlePatternCssVars = {\n \"--doodlePatternColor\":\n \"color-mix(in lab, var(--mui-palette-text-subscript) 75%, transparent 25%)\",\n} as const;\n\n/** Scaled tile size for compact surfaces such as modals. */\nexport const DOODLE_PATTERN_MODAL_MASK_SCALE = 0.7;\n\nexport const DOODLE_PATTERN_MODAL_MASK_SIZE = `${Math.round(\n DOODLE_PATTERN_TILE_WIDTH * DOODLE_PATTERN_MODAL_MASK_SCALE\n)}px ${Math.round(DOODLE_PATTERN_TILE_HEIGHT * DOODLE_PATTERN_MODAL_MASK_SCALE)}px`;\n\nexport type DoodlePatternBackgroundOptions = {\n repeat?: \"repeat\" | \"no-repeat\";\n size?: string;\n position?: string;\n};\n\nexport const getDoodlePatternBackgroundSx = (\n options: DoodlePatternBackgroundOptions = {}\n): SxProps<Theme> => {\n const tileSize = `${DOODLE_PATTERN_TILE_WIDTH}px ${DOODLE_PATTERN_TILE_HEIGHT}px`;\n const repeat = options.repeat ?? \"repeat\";\n const position =\n options.position ?? (repeat === \"no-repeat\" ? \"center\" : \"top left\");\n\n return {\n ...doodlePatternCssVars,\n backgroundColor: \"var(--doodlePatternColor)\",\n maskImage: DOODLE_PATTERN_MASK_URL,\n WebkitMaskImage: DOODLE_PATTERN_MASK_URL,\n maskRepeat: repeat,\n WebkitMaskRepeat: repeat,\n maskSize: options.size ?? tileSize,\n WebkitMaskSize: options.size ?? tileSize,\n maskPosition: position,\n WebkitMaskPosition: position,\n };\n};\n\nexport const getDoodlePatternModalBackgroundSx = (): SxProps<Theme> =>\n getDoodlePatternBackgroundSx({ size: DOODLE_PATTERN_MODAL_MASK_SIZE });\n","import type { SxProps, Theme } from '@mui/material/styles'\nimport { doodlePatternCssVars } from '@/patterns/doodlePatternStyles'\n\nexport const MUI_MODAL_PAPER_RADIUS = '20px'\n\nexport const muiModalRootSx: SxProps<Theme> = {\n ...doodlePatternCssVars,\n '--closeIconColor': 'var(--mui-palette-error-main)',\n '--bgC': 'var(--mui-palette-background-default)',\n '--shadow': 'var(--shadow-outset-1)',\n '--modalOverlayBg': 'radial-gradient(ellipse 120% 100% at 50% 50%, var(--bgC) 0%, transparent 70%)',\n}\n\n/** Internal paper chrome. Pass as the first `sx` array item so host `slotProps.container.sx` merges instead of replacing `&.MuiPaper-root`. */\nexport const muiModalPaperSx: SxProps<Theme> = {\n '&.MuiPaper-root': {\n boxShadow: 'var(--shadow)',\n backgroundColor: 'var(--bgC)',\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'var(--max-h)',\n maxWidth: 'var(--max-w)',\n padding: 0,\n paddingTop: 0,\n width: '-webkit-fill-available',\n height: '-webkit-fill-available',\n },\n}\n","import React from 'react';\nimport MuiLinearProgress, { LinearProgressProps as MuiLinearProgressProps } from '@mui/material/LinearProgress';\n\nexport type LinearProgressProps = MuiLinearProgressProps;\n\nexport const LinearProgress: React.FC<LinearProgressProps> = (props) => {\n return <MuiLinearProgress {...props} />;\n};\n","import React from 'react';\nimport MuiCircularProgress, { CircularProgressProps as MuiCircularProgressProps } from '@mui/material/CircularProgress';\n\nexport type CircularProgressProps = MuiCircularProgressProps;\n\nexport const CircularProgress: React.FC<CircularProgressProps> = (props) => {\n return <MuiCircularProgress {...props} />;\n};\n","import { ValueOf } from '../_types';\n\nexport const FILE_STATUSs = {\n // local status\n uploadingToLocal:\"local-uploading\",\n uploadedToLocal:\"local-uploaded\",\n localError:\"local-error\",\n\n \n pending:\"pending\",\n // upload s3\n uploadPending:'upload-pending',\n gettingSignedURL:'upload-gettingSignedURL',\n beginUploadToS3:'upload-beginUploadToS3',\n uploadedToCloud:'upload-uploadedToCloud',\n error:'upload-error',\n // download\n downloadPending:'download-pending',\n downloading:'download-in-progress',\n downloaded:'download-completed',\n downloadError:'download-error',\n} as const\n\nexport const FILE_TYPEs = {\n image:\"image\",\n video:\"video\",\n audio:\"audio\",\n pdf:\"pdf\",\n doc:\"doc\",\n xls:\"xls\",\n ppt:\"ppt\",\n txt:\"txt\",\n zip:\"zip\",\n json:\"json\",\n other:\"other\",\n} as const\n\nexport const MAX_FILE_NAME_LENGTH = 100\n\nexport type FileStatusType = ValueOf<typeof FILE_STATUSs>;\nexport type FileType = ValueOf<typeof FILE_TYPEs>;\n\nexport type Attachment = {\n url: string;\n keyPath: string;\n filename: string;\n fileType: string;\n hostname: string;\n}\n","// src/components/compound/DisplayFile/src/DisplayFile.tsx\nimport React from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { IconButton } from '@/ele/Button';\nimport {\n CloseIcon,\n DescriptionIcon,\n PictureAsPdfIcon,\n ImageIcon,\n AudioFileIcon,\n VideoFileIcon,\n TableChartIcon,\n FolderZipIcon,\n DataObjectIcon,\n InsertDriveFileIcon,\n} from '@/icons/MuiIcon';\n\nimport PreviewableFile, { FILE_TYPEs } from '@/_utils/classes/PreviewableFile';\n\nexport interface DisplayFileProps {\n file: PreviewableFile;\n onDelete?: (file: PreviewableFile) => void;\n mode?: 'thumbnail' | 'name';\n}\n\nexport const getFileIcon = (fileType: string) => {\n switch (fileType) {\n case FILE_TYPEs.image: return ImageIcon;\n case FILE_TYPEs.pdf: return PictureAsPdfIcon;\n case FILE_TYPEs.audio: return AudioFileIcon;\n case FILE_TYPEs.video: return VideoFileIcon;\n case FILE_TYPEs.xls: return TableChartIcon;\n case FILE_TYPEs.zip: return FolderZipIcon;\n case FILE_TYPEs.json: return DataObjectIcon;\n\n case FILE_TYPEs.ppt:\n case FILE_TYPEs.doc: \n case FILE_TYPEs.txt: \n return DescriptionIcon;\n default: return InsertDriveFileIcon;\n }\n};\n\nexport const FileThumbnail: React.FC<{ file: PreviewableFile; size?: number }> = ({ file, size = 60 }) => {\n const isImage = file.fileType === FILE_TYPEs.image;\n const FileIcon = getFileIcon(file.fileType || '');\n\n return (\n <Box\n sx={{\n width: size,\n height: size,\n minWidth: size,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n bgcolor: 'transparent',\n borderRadius: 1,\n overflow: 'hidden'\n }}\n >\n {isImage && file.blobUrl ? (\n <Box\n component=\"img\"\n src={file.blobUrl}\n alt={file.filename}\n sx={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n <FileIcon fontSize={size >= 60 ? \"large\" : \"medium\"} color=\"action\" />\n )}\n </Box>\n );\n};\n\nconst DisplayFile: React.FC<DisplayFileProps> & { DISPLAY_MODEs: { thumbnail: 'thumbnail'; name: 'name' } } = ({\n file,\n onDelete,\n mode = 'thumbnail'\n}) => {\n return (\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n p: 1,\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n width: mode === 'thumbnail' ? 'fit-content' : '100%',\n maxWidth: '100%',\n position: 'relative',\n }}>\n <FileThumbnail file={file} />\n \n <Box sx={{ flex: 1, overflow: 'hidden' }}>\n <Typography variant=\"body2\" noWrap sx={{ maxWidth: 150 }}>\n {file.filename}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {file.displaySize}\n </Typography>\n </Box>\n\n {onDelete && (\n <IconButton \n size=\"small\" \n onClick={() => onDelete(file)}\n sx={{ ml: 'auto' }}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n );\n};\n\nDisplayFile.DISPLAY_MODEs = {\n thumbnail: 'thumbnail',\n name: 'name'\n};\n\nexport default DisplayFile;\n","import React from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { LinearProgress } from '@/ele/Progress';\nimport { CheckCircleIcon } from '@/icons/MuiIcon';\nimport PreviewableFile from '@/_utils/classes/PreviewableFile';\nimport { FileThumbnail } from '@/compound/DisplayFile';\n\ninterface ProcessItemProps {\n file: PreviewableFile;\n progress: number;\n}\n\nexport const ProcessItem: React.FC<ProcessItemProps> = ({ file, progress }) => {\n const isComplete = progress >= 100;\n \n return (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', mb: 2, p: 1, border: '1px solid', borderColor: 'var(--process-item-border)', borderRadius: 1 }}>\n <FileThumbnail file={file} size={48} />\n \n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 0.5 }}>\n <Typography variant=\"body2\" noWrap sx={{ fontWeight: 500 }}>\n {file.filename}\n </Typography>\n <Typography variant=\"caption\" sx={{ pl: 0.5, color: 'var(--process-item-secondary-color)' }}>\n {file.displaySize}\n </Typography>\n </Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <LinearProgress \n variant=\"determinate\" \n value={progress} \n sx={{ \n flex: 1, \n height: 6, \n }} \n />\n <Typography variant=\"caption\" sx={{ minWidth: 35, textAlign: 'right', color: 'var(--process-item-secondary-color)' }}>\n {Math.round(progress)}%\n </Typography>\n </Box>\n </Box>\n\n <Box sx={{ display: 'flex', alignItems: 'center', width: 24, justifyContent: 'center' }}>\n {isComplete && <CheckCircleIcon color=\"success\" fontSize=\"small\" />}\n </Box>\n </Box>\n );\n};\n","import { useState, useEffect, useMemo, useCallback } from 'react';\nimport type React from 'react';\nimport PreviewableFile from '@/_utils/classes/PreviewableFile';\nimport { ProgressObserver } from '../_utils/ProgressObserver';\n\nexport function useProgressTracking(\n files: PreviewableFile[],\n observerRef: React.RefObject<ProgressObserver>,\n) {\n const [progressMap, setProgressMap] = useState<Map<string, number>>(new Map());\n\n const handleProgress = useCallback((file: PreviewableFile, progress: number) => {\n setProgressMap(prev => {\n if (prev.get(file.filename) === progress) return prev;\n const newMap = new Map(prev);\n newMap.set(file.filename, progress);\n return newMap;\n });\n }, []);\n\n useEffect(() => {\n if (files.length === 0) return;\n let total = 0;\n let completed = 0;\n progressMap.forEach(v => {\n total += v;\n if (v >= 100) completed++;\n });\n const avg = Math.round(total / files.length);\n observerRef.current.update(files.length, completed, avg);\n }, [progressMap, files, observerRef]);\n\n const allComplete = useMemo(() => {\n if (files.length === 0) return false;\n return files.every(f => (progressMap.get(f.filename) || 0) >= 100);\n }, [files, progressMap]);\n\n return { progressMap, handleProgress, allComplete };\n}\n","import React, { useRef, useEffect, useMemo } from 'react';\nimport { SnackbarKey } from 'notistack';\nimport { useAlert, type AlertOptions } from '@/compound/Alert';\nimport { ProcessAlertObserver } from '../ProcessAlert';\nimport { ProgressObserver } from '../_utils/ProgressObserver';\nimport type { ProcessModalProps } from '../types';\n\ninterface UseProcessAlertParams {\n open: boolean;\n minimized: boolean;\n minimizePlacement: NonNullable<ProcessModalProps['minimizePlacement']>;\n onMaximize: () => void;\n}\n\nexport function useProcessAlert({\n open,\n minimized,\n minimizePlacement,\n onMaximize,\n}: UseProcessAlertParams) {\n const { enqueueInfo, closeSnackbar } = useAlert();\n const observerRef = useRef(new ProgressObserver());\n const snackbarIdRef = useRef<SnackbarKey | null>(null);\n\n const alertAnchorOrigin = useMemo<NonNullable<AlertOptions['anchorOrigin']>>(() => (\n {\n 'bottom-right': { vertical: 'bottom', horizontal: 'right' },\n 'bottom-left': { vertical: 'bottom', horizontal: 'left' },\n 'top-right': { vertical: 'top', horizontal: 'right' },\n 'top-left': { vertical: 'top', horizontal: 'left' },\n } as const\n )[minimizePlacement], [minimizePlacement]);\n\n // Sync minimized state to observer\n useEffect(() => {\n observerRef.current.setMinimized(minimized);\n }, [minimized]);\n\n // Alert open/close lifecycle\n useEffect(() => {\n if (open) {\n if (!snackbarIdRef.current) {\n const message = React.createElement(ProcessAlertObserver, {\n observer: observerRef.current,\n onMaximize,\n });\n const result = enqueueInfo(message, {\n autoHideDuration: null,\n icon: null,\n anchorOrigin: alertAnchorOrigin,\n });\n if (result.success) {\n snackbarIdRef.current = result.data;\n }\n }\n } else {\n if (snackbarIdRef.current) {\n closeSnackbar(snackbarIdRef.current);\n snackbarIdRef.current = null;\n }\n }\n }, [alertAnchorOrigin, closeSnackbar, enqueueInfo, open, onMaximize]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (snackbarIdRef.current) {\n closeSnackbar(snackbarIdRef.current);\n snackbarIdRef.current = null;\n }\n };\n }, [closeSnackbar]);\n\n return { observerRef };\n}\n","'use client'\nimport { enqueueSnackbar, useSnackbar } from 'notistack'\nimport { randomStrGenerator } from '@/_utils/_func/random'\nimport { AlertOptions, CollapsableAlertOptions, AlertOperationResult } from './types'\nimport { ALERT_VARIANTs, DEFAULTs } from './const'\n\ntype EnqueueFn = ReturnType<typeof useSnackbar>['enqueueSnackbar']\n\nfunction enqueueAlertWith(\n enqueue: EnqueueFn,\n {\n message,\n variant,\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n icon,\n ...rest\n }: AlertOptions\n): AlertOperationResult<string> {\n try {\n enqueue(message, {\n variant,\n anchorOrigin,\n autoHideDuration,\n key: id,\n id,\n icon,\n ...rest,\n })\n return { success: true, data: id as string }\n } catch (error) {\n console.error('Failed to enqueue alert:', error)\n return { success: false, error: (error instanceof Error ? error.message : 'Unknown error') }\n }\n}\n\nfunction enqueueCollapsableWith(\n enqueue: EnqueueFn,\n {\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n componentProps = {},\n componentWrapperProps = {\n Renderer: () => null,\n },\n ...rest\n }: CollapsableAlertOptions\n): AlertOperationResult<string> {\n try {\n enqueue({\n variant: ALERT_VARIANTs.collapsable,\n anchorOrigin,\n autoHideDuration,\n componentProps,\n componentWrapperProps,\n id,\n ...rest,\n })\n return { success: true, data: id as string }\n } catch (error) {\n console.error('Failed to enqueue collapsable alert:', error)\n return { success: false, error: (error instanceof Error ? error.message : 'Unknown error') }\n }\n}\n\nexport function useAlert() {\n const { enqueueSnackbar: enqueue, closeSnackbar } = useSnackbar()\n\n const enqueueAlert = (options: AlertOptions) => enqueueAlertWith(enqueue, options)\n const enqueueCollapsable = (options: CollapsableAlertOptions) => enqueueCollapsableWith(enqueue, options)\n const enqueueError = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.error, message, ...options })\n const enqueueSuccess = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.success, message, ...options })\n const enqueueWarning = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.warning, message, ...options })\n const enqueueInfo = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.info, message, ...options })\n const enqueueSystem = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.system, message, ...options })\n const enqueueInsight = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.insight, message, ...options })\n\n return {\n enqueueAlert,\n enqueueCollapsable,\n enqueueError,\n enqueueSuccess,\n enqueueWarning,\n enqueueInfo,\n enqueueSystem,\n enqueueInsight,\n closeSnackbar,\n }\n}\n\nexport function enqueueAlert({\n message,\n variant,\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n icon,\n ...rest\n}: AlertOptions): AlertOperationResult<string> {\n return enqueueAlertWith(enqueueSnackbar, {\n message,\n variant,\n id,\n autoHideDuration,\n anchorOrigin,\n icon,\n ...rest,\n })\n}\n\nexport function enqueueCollapsable({\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n componentProps = {},\n componentWrapperProps = {\n Renderer: () => null, \n },\n ...rest\n}: CollapsableAlertOptions): AlertOperationResult<string> {\n return enqueueCollapsableWith(enqueueSnackbar, {\n id,\n autoHideDuration,\n anchorOrigin,\n componentProps,\n componentWrapperProps,\n ...rest,\n })\n}\n\nexport function enqueueError(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.error,\n message,\n ...options\n })\n}\n\nexport function enqueueSuccess(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.success,\n message,\n ...options\n })\n}\n\nexport function enqueueWarning(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.warning,\n message,\n ...options\n })\n}\n\nexport function enqueueInfo(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.info,\n message,\n ...options\n })\n}\n\nexport function enqueueSystem(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.system,\n message,\n ...options\n })\n}\n\nexport function enqueueInsight(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.insight,\n message,\n ...options\n })\n}\n","export const ALERT_VARIANTs = {\n info: 'myInfo',\n warning: 'myWarning',\n success: 'mySuccess',\n error: 'myError',\n system: 'mySystem',\n insight: 'myInsight',\n collapsable: 'myCollapsable',\n} as const\n\nexport const DEFAULTs = {\n AUTO_HIDE_DURATION: 3000,\n ANCHOR_ORIGIN: { horizontal: \"right\" as const, vertical: \"top\" as const },\n PROVIDER_CONFIGs: {\n maxSnack: 3,\n dense: true,\n preventDuplicate: true,\n autoHideDuration: 3000,\n }\n} as const\n\nexport const ERRORs = {\n invalid_variant: 'Invalid alert variant provided',\n enqueue_failed: 'Failed to enqueue alert',\n missing_message: 'Message is required for alert',\n missing_component_props: 'Component props are required for collapsible alert',\n} as const\n","import { useEffect, useState } from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { IconButton } from '@/ele/Button';\nimport { FullscreenIcon, CheckCircleIcon } from '@/icons/MuiIcon';\nimport { CircularProgress } from '@/ele/Progress';\nimport { ProgressObserver } from './_utils/ProgressObserver';\n\n// The display component (stateless mostly)\nexport const ProcessAlertContent = ({ \n allComplete, \n fileCount, \n totalProgress, \n onMaximize,\n minimized\n}: { \n allComplete: boolean; \n fileCount: number; \n totalProgress: number; \n onMaximize: () => void;\n minimized: boolean;\n}) => {\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, minWidth: 280 }}>\n {/* We don't render Icon here because MuiAlertVariant/Info handles the main icon usually. \n However, user might want the progress circle AS the icon. \n But MuiAlertVariant renders 'icon' prop.\n We are inside 'message'.\n */}\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {/* Explicitly show progress here, assuming we replace or hide the default Alert icon via props if needed, or just show standard info icon + this progress */}\n {allComplete ? <CheckCircleIcon /> : <CircularProgress variant=\"determinate\" value={totalProgress} size={24} thickness={5} />}\n </Box>\n \n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 600, lineHeight: 1.2 }}>\n {allComplete ? \"Uploads complete\" : \"Uploading files...\"}\n </Typography>\n {!allComplete && (\n <Typography variant=\"caption\" display=\"block\" sx={{ opacity: 0.8 }}>\n {fileCount} item{fileCount !== 1 ? 's' : ''} • {totalProgress}%\n </Typography>\n )}\n </Box>\n\n {minimized && (\n <IconButton size=\"small\" onClick={onMaximize} title=\"Maximize\" sx={{ color: 'inherit' }}>\n <FullscreenIcon />\n </IconButton>\n )}\n </Box>\n );\n};\n\n// The observer wrapper\nexport const ProcessAlertObserver = ({ observer, onMaximize }: { observer: ProgressObserver, onMaximize: () => void }) => {\n const [state, setState] = useState({ fileCount: 0, completedCount: 0, totalProgress: 0, minimized: false });\n\n useEffect(() => {\n return observer.subscribe((newState) => {\n setState(newState);\n });\n }, [observer]);\n\n // Derived\n const allComplete = state.fileCount > 0 && state.totalProgress >= 100;\n\n return (\n <ProcessAlertContent \n allComplete={allComplete}\n fileCount={state.fileCount}\n totalProgress={state.totalProgress}\n onMaximize={onMaximize}\n minimized={state.minimized}\n />\n );\n};\n","export interface ProgressState {\n fileCount: number;\n completedCount: number;\n totalProgress: number;\n minimized: boolean;\n}\n\nexport type ProgressListener = (state: ProgressState) => void;\n\nexport class ProgressObserver {\n private listeners: ProgressListener[] = [];\n private state: ProgressState = {\n fileCount: 0,\n completedCount: 0,\n totalProgress: 0,\n minimized: false\n };\n\n subscribe(listener: ProgressListener) {\n this.listeners.push(listener);\n // Immediate callback with current state\n listener(this.state);\n return () => {\n this.listeners = this.listeners.filter(l => l !== listener);\n };\n }\n\n update(fileCount: number, completedCount: number, totalProgress: number) {\n this.state = { ...this.state, fileCount, completedCount, totalProgress };\n this.notify();\n }\n\n setMinimized(minimized: boolean) {\n this.state = { ...this.state, minimized };\n this.notify();\n }\n\n private notify() {\n this.listeners.forEach(l => l(this.state));\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\n/**\n * Root-level CSS variable aliases for the ProcessModal compound component.\n * Declared once on the root element — child components consume via `var(--*)`.\n */\nexport const processModalRootSx: SxProps<Theme> = {\n '--process-description-color': 'var(--mui-palette-text-secondary)',\n '--process-item-secondary-color': 'var(--mui-palette-text-secondary)',\n '--process-item-border': 'var(--mui-palette-divider)',\n};\n"],"mappings":"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","names":["exports","module","import_react","import_Typography","Typography","import_jsx_runtime","MuiButton","import_jsx_runtime","MuiIconButton","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_react","import_Tooltip","Paper","import_jsx_runtime","classnames","Modal","Tooltip","import_jsx_runtime","MuiLinearProgress","import_jsx_runtime","MuiCircularProgress","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../node_modules/classnames/index.js","../src/components/compound/Process/index.ts","../src/components/compound/Process/src/ProcessModal.tsx","../src/_utils/_func/random.ts","../src/_utils/_func/sx.ts","../src/components/elemental/Box/src/index.ts","../src/components/elemental/Typography/src/Typography.ts","../src/components/elemental/Typography/src/Variants.tsx","../src/components/elemental/Button/src/Button/Button.tsx","../src/components/elemental/Button/src/IconButton/IconButton.tsx","../src/components/elemental/Tooltip/src/Tooltip/index.ts","../src/components/Icons/MuiIcon/index.ts","../src/components/elemental/Modal/src/MuiModal/MuiModal.tsx","../src/_utils/_const/classNames.ts","../src/_utils/_const/index.ts","../src/components/elemental/Paper/src/Paper/ShinyPaper.tsx","../src/patterns/doodlePattern.ts","../src/patterns/generated/doodlePatternMask.ts","../src/patterns/doodlePatternStyles.ts","../src/components/elemental/Modal/src/MuiModal/theme.ts","../src/components/elemental/FileUpload/src/FileUpload.tsx","../src/components/elemental/Form/src/FormLabel/FormLabel.tsx","../src/components/elemental/Form/src/index.ts","../src/components/elemental/Progress/src/LinearProgress.tsx","../src/components/elemental/Progress/src/CircularProgress.tsx","../src/components/elemental/FileUpload/src/theme.ts","../src/components/elemental/FileUpload/src/utils.ts","../src/components/compound/Process/src/hooks/useProgressTracking.ts","../src/components/compound/Process/src/hooks/useProcessAlert.ts","../src/components/compound/Alert/src/_utils/utils.ts","../src/components/compound/Alert/src/_utils/const.ts","../src/components/compound/Process/src/ProcessAlert.tsx","../src/components/compound/Process/src/_utils/ProgressObserver.ts","../src/components/compound/Process/src/theme.ts","../src/components/compound/Process/src/ProcessItem.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export * from './src';\n","import React, { useState, useEffect, useCallback, useMemo } from 'react'\nimport { Box } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button } from '@/ele/Button'\nimport {\n PauseIcon,\n PlayIcon,\n StopIcon,\n RemoveIcon as MinimizeIcon,\n CheckCircleIcon,\n} from '@/icons/MuiIcon'\nimport { MuiModal } from '@/ele/Modal'\nimport {\n FileUpload,\n type FileUploadItem,\n} from '@/ele/FileUpload'\nimport { ProcessModalProps, ProgressHook } from './types'\nimport { useProgressTracking, useProcessAlert } from './hooks'\nimport { processModalRootSx } from './theme'\nimport { mergeSx } from '@/_utils/_func'\n\nconst useDefaultProgress: ProgressHook = () => 0\n\nconst ProcessLogicRunner = ({\n file,\n useProgress,\n onProgress,\n paused,\n}: {\n file: FileUploadItem\n useProgress: ProgressHook\n onProgress: (file: FileUploadItem, progress: number) => void\n paused: boolean\n}) => {\n const progress = useProgress(file, paused)\n useEffect(() => {\n onProgress(file, progress)\n }, [file, progress, onProgress])\n return null\n}\n\nexport const ProcessModal: React.FC<ProcessModalProps> = ({\n openProps,\n files,\n title = 'Uploading Documents',\n description = 'Please wait while we upload your files.',\n useProgress = useDefaultProgress,\n onPause,\n onStop,\n minimizable = false,\n minimizePlacement = 'bottom-right',\n autoClose = false,\n itemVariant = 'row',\n}) => {\n const [open, setOpen] = openProps\n const [minimized, setMinimized] = useState(false)\n const [paused, setPaused] = useState(false)\n\n const handleMaximize = useCallback(() => setMinimized(false), [])\n\n const { observerRef } = useProcessAlert({\n open,\n minimized,\n minimizePlacement,\n onMaximize: handleMaximize,\n })\n\n const { progressMap, handleProgress, allComplete } = useProgressTracking(\n files,\n observerRef,\n )\n\n const queueValue = useMemo<FileUploadItem[]>(\n () =>\n files.map((file) => {\n const progress = progressMap.get(file.id) ?? 0\n const clamped = Math.max(0, Math.min(100, progress))\n return {\n ...file,\n progress: clamped,\n status: clamped >= 100 ? 'success' : 'uploading',\n }\n }),\n [files, progressMap],\n )\n\n useEffect(() => {\n if (autoClose && allComplete && open) {\n const timer = setTimeout(() => {\n setOpen(false)\n }, 1000)\n return () => clearTimeout(timer)\n }\n }, [autoClose, allComplete, open, setOpen])\n\n const handlePauseToggle = () => {\n setPaused(!paused)\n if (onPause) onPause()\n }\n\n const handleStop = () => {\n if (onStop) onStop()\n setOpen(false)\n }\n\n if (!open) return null\n\n return (\n <>\n {files.map((file) => (\n <ProcessLogicRunner\n key={file.id}\n file={file}\n useProgress={useProgress}\n onProgress={handleProgress}\n paused={paused}\n />\n ))}\n\n {minimized ? null : (\n <MuiModal\n openProps={openProps}\n title={title}\n size={{ w: 500 }}\n slots={{\n closeIcon: minimizable ? MinimizeIcon : undefined,\n }}\n slotProps={{\n closeButton: minimizable\n ? {\n onClick: () => setMinimized(true),\n title: 'Minimize',\n }\n : undefined,\n }}\n >\n <Box sx={mergeSx({ py: 2 }, processModalRootSx)}>\n {description ? (\n <Typography\n variant=\"body2\"\n sx={{ mb: 3, color: 'var(--process-description-color)' }}\n >\n {description}\n </Typography>\n ) : null}\n\n <Box\n sx={{\n maxHeight: '60vh',\n overflowY: 'auto',\n }}\n >\n <FileUpload\n value={queueValue}\n readOnly\n hideDropzone\n disableRemove\n itemVariant={itemVariant}\n data-testid=\"process-file-queue\"\n />\n </Box>\n\n <Box\n sx={{ mt: 3, display: 'flex', justifyContent: 'flex-end', gap: 2 }}\n >\n {!allComplete ? (\n <>\n {onStop ? (\n <Button\n variant=\"outlined\"\n color=\"error\"\n startIcon={<StopIcon />}\n onClick={handleStop}\n >\n Stop\n </Button>\n ) : null}\n {onPause ? (\n <Button\n variant=\"outlined\"\n color=\"warning\"\n startIcon={paused ? <PlayIcon /> : <PauseIcon />}\n onClick={handlePauseToggle}\n >\n {paused ? 'Resume' : 'Pause'}\n </Button>\n ) : null}\n </>\n ) : null}\n\n {allComplete ? (\n <Button\n variant=\"contained\"\n onClick={() => setOpen(false)}\n disabled={!allComplete && !onStop}\n startIcon={<CheckCircleIcon />}\n color=\"success\"\n >\n Done\n </Button>\n ) : null}\n </Box>\n </Box>\n </MuiModal>\n )}\n </>\n )\n}\n","export function randomStrGenerator(length=20):string{\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n\n return result\n}\n\nexport function getRandomInt(max: number) {\n return Math.floor(Math.random() * max)\n}\nexport function getRandomBetween(min: number, max: number, isFloat = false) {\n const randomVal = Math.random() * (max - min) + min\n if (isFloat) {\n return randomVal\n }\n return Math.floor(randomVal)\n}","import type { SxProps, Theme } from '@mui/material/styles'\n\n/** Values accepted by {@link mergeSx}: objects, callbacks, arrays (nested ok), or omitted. */\nexport type SxMergePart =\n | SxProps<Theme>\n | Record<string, unknown>\n | ReadonlyArray<SxMergePart>\n | false\n | null\n | undefined\n\nfunction flattenSx(part: unknown): unknown[] {\n if (part == null || typeof part === 'boolean') {\n return []\n }\n if (Array.isArray(part)) {\n return part.flatMap(flattenSx)\n }\n if (typeof part === 'function' || typeof part === 'object') {\n return [part]\n }\n return []\n}\n\n/**\n * Combine MUI `sx` values into one prop.\n *\n * Nested arrays are flattened (`[base, [a, b]]` → `[base, a, b]`).\n * `null` / `undefined` / `false` entries are dropped. Later parts win,\n * same as MUI's `sx` array merge.\n */\nexport function mergeSx(...parts: SxMergePart[]): SxProps<Theme> | undefined {\n const list = parts.flatMap(flattenSx)\n if (list.length === 0) {\n return undefined\n }\n if (list.length === 1) {\n return list[0] as SxProps<Theme>\n }\n return list as SxProps<Theme>\n}\n","export * from './BorderBox'\nexport {default as Box} from '@mui/material/Box'\nexport {default as Stack} from '@mui/material/Stack'\nexport {default as Grid} from '@mui/material/Grid'\n","export { default } from '@mui/material/Typography'","import React from 'react'\nimport Typography, {type TypographyProps} from '@mui/material/Typography'\n\n/**\n * Mui Typography with variant h5\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Header(props: { children?: React.ReactNode } & TypographyProps) {\n\treturn <Typography variant=\"h5\" {...props} />\n}\n\n\n/**\n * Mui Typography with variant h6\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubHeader(props: TypographyProps) {\n\treturn <Typography variant=\"h6\" {...props} />\n}\n\n/**\n * Mui Typography with variant subtitle1\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function SubTitle(props: TypographyProps) {\n\treturn <Typography variant=\"subtitle1\" {...props} />\n}\n\n/**\n * Mui Typography with variant caption\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Subscript(props: TypographyProps) {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\t{...props}\n\t\t\tsx={{\n\t\t\t\t...props.sx,\n\t\t\t\tcolor: props.color ?? 'var(--mui-palette-text-subscript)',\n\t\t\t}}\n\t\t/>\n\t)\n}\n\n/**\n * Mui Typography with variant body\n * \n * [Doc](https://material-ui.com/api/typography/)\n */\nexport function Body(props: TypographyProps) {\n\treturn <Typography variant=\"body1\" {...props} />\n}","import React from 'react';\n\nimport MuiButton from '@mui/material/Button';\nimport { Box } from '@/ele/Box';\nimport { mergeSx } from '@/_utils/_func';\n\n/**\n * A modified MUI Button that truncates long text with ellipsis.\n * \n * [Doc](https://mui.com/material-ui/react-button/)\n * [API](https://mui.com/material-ui/api/button/)\n */\nexport default function Button(p:\n React.ComponentProps<typeof MuiButton> & {\n slotProps?: {\n innerBox?: React.ComponentProps<typeof Box>\n }\n }) {\n const {children, slotProps, ...rest} = p\n const {sx, ...boxRest} = slotProps?.innerBox ?? {}\n return <MuiButton {...rest}>\n <Box \n {...boxRest}\n sx={mergeSx(\n {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n },\n sx,\n )}>\n {children}\n </Box>\n </MuiButton>\n}","'use client'\nimport {forwardRef} from 'react'\nimport MuiIconButton from '@mui/material/IconButton'\nimport { Tooltip } from '@/ele/Tooltip'\nimport { type TooltipProps } from '@mui/material/Tooltip'\nimport { Box } from '@/ele/Box'\n\ntype IconButtonProps = React.ComponentProps<typeof MuiIconButton>\ntype Props = {\n /** The Icon to render */\n children: React.ReactNode;\n /** The title of the tooltip */\n title?: string;\n /** \n * The color theme of the entire component.\n * @default 'secondary' (from theme)\n */\n color?: IconButtonProps['color'];\n /**\n * The size of the component.\n * @default 'small' (from theme)\n */\n size?: IconButtonProps['size'];\n \n selected?: boolean;\n \n slotProps?: {\n tooltip?: Omit<TooltipProps, \"children\">\n };\n} & Omit<IconButtonProps, \"color\" | \"size\">;\n\n/**\n * A MuiIconButton wrapped in a MuiTooltip.\n * Default props like `size` and `color` are handled by the theme.\n */\nconst IconButton = forwardRef<HTMLButtonElement, Props>(({\n title = \"\",\n children,\n color,\n size,\n slotProps,\n selected,\n className,\n ...props\n}, ref) => {\n return (\n <Tooltip \n title={title} \n slotProps={{\n popper: {\n sx: {\n textTransform: \"capitalize\",\n }\n },\n ...slotProps?.tooltip\n }}\n >\n <Box component=\"span\" sx={{width: \"fit-content\"}}>\n <MuiIconButton\n ref={ref}\n color={color}\n size={size}\n className={[className, selected ? 'Mui-selected' : ''].filter(Boolean).join(' ')}\n {...props}\n >\n {children}\n </MuiIconButton>\n </Box>\n </Tooltip>\n )\n})\n\nexport default IconButton","export {default as Tooltip} from '@mui/material/Tooltip'\nexport * from './theme'\n","// display\nexport {default as ArrowIcon} from '@mui/icons-material/ArrowRightAlt'\nexport {default as FileIcon} from '@mui/icons-material/DescriptionOutlined'\nexport {default as DescriptionIcon} from '@mui/icons-material/Description'\nexport {default as PictureAsPdfIcon} from '@mui/icons-material/PictureAsPdf'\nexport {default as AudioFileIcon} from '@mui/icons-material/AudioFile'\nexport {default as VideoFileIcon} from '@mui/icons-material/VideoFile'\nexport {default as TableChartIcon} from '@mui/icons-material/TableChart'\nexport {default as FolderZipIcon} from '@mui/icons-material/FolderZip'\nexport {default as InsertDriveFileIcon} from '@mui/icons-material/InsertDriveFile'\nexport {default as ImageIcon} from '@mui/icons-material/ImageOutlined'\nexport {default as LayersIcon} from '@mui/icons-material/LayersOutlined'\nexport {default as TextIcon} from '@mui/icons-material/TextFormat'\nexport {default as RemoveIcon} from '@mui/icons-material/Remove'\nexport {default as AddFileIcon} from '@mui/icons-material/PostAdd'\nexport {default as ErrorIcon} from '@mui/icons-material/ErrorOutline'\nexport {default as QuestionIcon} from '@mui/icons-material/QuestionMarkOutlined'\nexport {default as RoomIcon} from '@mui/icons-material/MeetingRoomOutlined'\nexport {default as BlacklistIcon} from '@mui/icons-material/PlaylistRemove'\nexport {default as WhitelistIcon} from '@mui/icons-material/ChecklistRtl'\nexport {default as NoImageIcon} from '@mui/icons-material/HideImageOutlined'\nexport {default as EyeIcon} from '@mui/icons-material/RemoveRedEyeTwoTone'\nexport {default as CropSizeIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as AdminIcon} from '@mui/icons-material/LockPersonOutlined'\nexport {default as UserIcon} from '@mui/icons-material/Person'\nexport {default as EmoticonIcon} from '@mui/icons-material/InsertEmoticon'\nexport {default as DisabledSelectionIcon} from '@mui/icons-material/RemoveDoneOutlined'\nexport {default as TagIcon} from '@mui/icons-material/Tag'\nexport {default as AudioIcon} from '@mui/icons-material/Audiotrack'\nexport {default as VideoIcon} from '@mui/icons-material/Videocam'\nexport {default as CodeIcon} from '@mui/icons-material/Code'\nexport {default as ChartIcon} from '@mui/icons-material/Equalizer'\nexport {default as TableIcon} from '@mui/icons-material/PivotTableChart'\nexport {default as SearchIcon} from '@mui/icons-material/Search'\nexport {default as DataObjectIcon} from '@mui/icons-material/DataObject'\nexport {default as A2ZIcon} from '@mui/icons-material/SortByAlpha'\nexport {default as ThumbUpIcon} from '@mui/icons-material/ThumbUp'\nexport {default as MoneyIcon} from '@mui/icons-material/AttachMoneyOutlined'\nexport {default as ServerIcon} from '@mui/icons-material/Storage'\nexport {default as CerticateIcon} from '@mui/icons-material/WorkspacePremium'\nexport {default as NumberIcon} from '@mui/icons-material/Numbers'\nexport {default as SumIcon} from '@mui/icons-material/Functions'\nexport {default as LightBulbIcon} from '@mui/icons-material/Lightbulb'\nexport {default as RotateIcon} from '@mui/icons-material/CropRotate'\nexport {default as ImageSzieScaleIcon} from '@mui/icons-material/PhotoSizeSelectLarge'\nexport {default as CollectionIcon} from '@mui/icons-material/CollectionsBookmark'\nexport {default as HistoryIcon} from '@mui/icons-material/Schedule'\nexport {default as StyleIcon} from '@mui/icons-material/Style'\nexport {default as ARHorizontalIcon} from '@mui/icons-material/Crop169'\nexport {default as ARSquareIcon} from '@mui/icons-material/CropSquare'\nexport {default as VoiceIcon} from '@mui/icons-material/GraphicEqRounded'\nexport {default as MemoryIcon} from '@mui/icons-material/MemoryRounded'\n\n// button\nexport {default as AddCircleIcon} from '@mui/icons-material/AddCircleOutlineRounded'\nexport {default as AddIcon} from '@mui/icons-material/Add'\nexport {default as CloseIcon} from '@mui/icons-material/Close'\nexport {default as ExpandMoreIcon} from '@mui/icons-material/ExpandMore'\nexport {default as AutorenewIcon} from '@mui/icons-material/Autorenew'\nexport {default as CheckCircleIcon} from '@mui/icons-material/CheckCircle'\nexport {default as MenuIcon} from '@mui/icons-material/Menu'\nexport {default as MoreIcon} from '@mui/icons-material/MoreVert'\nexport {default as MoreHorizIcon} from '@mui/icons-material/MoreHoriz'\nexport {default as CopyIcon} from '@mui/icons-material/ContentCopy'\nexport {default as PasteIcon} from '@mui/icons-material/ContentPaste'\nexport {default as CloudIcon} from '@mui/icons-material/Cloud'\nexport {default as DownloadIcon} from '@mui/icons-material/DownloadOutlined'\nexport {default as DownloadDoneIcon} from '@mui/icons-material/DownloadDoneOutlined'\nexport {default as StartIcon} from '@mui/icons-material/StarBorderOutlined'\nexport {default as DeleteIcon} from '@mui/icons-material/DeleteForever'\nexport {default as LayerClearIcon } from '@mui/icons-material/LayersClear'\nexport {default as CheckIcon } from '@mui/icons-material/Check'\nexport {default as CheckAllIcon } from '@mui/icons-material/DoneAll'\nexport {default as PowerIcon } from '@mui/icons-material/PowerSettingsNew'\nexport {default as SendIcon } from '@mui/icons-material/Send'\nexport {default as ZoomInIcon } from '@mui/icons-material/ZoomInMap'\nexport {default as ZoomOutIcon } from '@mui/icons-material/ZoomOutMap'\nexport {default as ToolIcon } from '@mui/icons-material/HomeRepairService'\nexport {default as ConstructionIcon } from '@mui/icons-material/Construction'\nexport {default as HelpIcon } from '@mui/icons-material/Help'\nexport {default as ReportIcon } from '@mui/icons-material/EmojiFlags'\nexport {default as EditIcon } from '@mui/icons-material/Edit'\nexport {default as ForkIcon } from '@mui/icons-material/ForkRight'\nexport {default as SettingIcon } from '@mui/icons-material/Settings'\nexport {default as RestoreIcon } from '@mui/icons-material/Restore'\nexport {default as EditListIcon } from '@mui/icons-material/EditNote'\nexport {default as HomeIcon } from '@mui/icons-material/HomeOutlined'\nexport {default as EnterRoomIcon } from '@mui/icons-material/ExitToAppOutlined'\nexport {default as SunIcon} from '@mui/icons-material/WbSunnyOutlined'\nexport {default as MoonIcon} from '@mui/icons-material/DarkModeOutlined'\nexport {default as AttachFileIcon} from '@mui/icons-material/AttachFileOutlined'\nexport {default as NoteAddIcon} from '@mui/icons-material/NoteAdd'\nexport {default as CloudUploadIcon} from '@mui/icons-material/CloudUpload'\nexport {default as DoubleRightArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRight'\nexport {default as DoubleLeftArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowLeft'\nexport {default as DoubleArrowIcon} from '@mui/icons-material/KeyboardDoubleArrowRightRounded'\nexport {default as FitScreenIcon} from '@mui/icons-material/FitScreen'\nexport {default as FullscreenIcon} from '@mui/icons-material/Fullscreen'\nexport {default as TestIcon} from '@mui/icons-material/Biotech'\nexport {default as ShareIcon} from '@mui/icons-material/Share'\nexport {default as FilterIcon} from '@mui/icons-material/FilterAlt'\nexport {default as SyncIcon} from '@mui/icons-material/Sync'\nexport {default as PlayIcon} from '@mui/icons-material/PlayArrow'\nexport {default as PauseIcon} from '@mui/icons-material/PauseOutlined'\nexport {default as RandomIcon} from '@mui/icons-material/Casino'\nexport {default as CoinIcon} from '@mui/icons-material/Paid'\nexport {default as SaveChangesIcon} from '@mui/icons-material/Save'\nexport {default as StopIcon} from '@mui/icons-material/StopRounded'\nexport {default as ReplayIcon} from '@mui/icons-material/Replay'\nexport {default as TreeIcon} from '@mui/icons-material/AccountTree'\nexport {default as ClearIcon} from '@mui/icons-material/Close'\nexport {default as KeyboardArrowDownIcon} from '@mui/icons-material/KeyboardArrowDown'\nexport {default as KeyboardArrowRightIcon} from '@mui/icons-material/KeyboardArrowRight'\nexport {default as SearchRoundedIcon} from '@mui/icons-material/SearchRounded'\nexport {default as CloseRoundedIcon} from '@mui/icons-material/CloseRounded'\nexport {default as SortByAlphaRoundedIcon} from '@mui/icons-material/SortByAlphaRounded'\nexport {default as FilterAltOutlinedIcon} from '@mui/icons-material/FilterAltOutlined'\nexport {default as InboxOutlinedIcon} from '@mui/icons-material/InboxOutlined'\nexport {default as SearchOffIcon} from '@mui/icons-material/SearchOff'\nexport {default as ClearRoundedIcon} from '@mui/icons-material/ClearRounded'\nexport {default as ArrowDropDownRoundedIcon} from '@mui/icons-material/ArrowDropDownRounded'\n\n// login\nexport {default as AccountIcon} from '@mui/icons-material/AccountBox'\nexport {default as LogoutIcon} from '@mui/icons-material/Logout'\nexport {default as LoginIcon} from '@mui/icons-material/Login'\nexport {default as DashboardIcon} from '@mui/icons-material/Dashboard'\n\n//logo\nexport {default as WorkFlowIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as HelpOutlineIcon} from '@mui/icons-material/HelpOutline'\nexport {default as NavigateBeforeIcon} from '@mui/icons-material/NavigateBefore'\nexport {default as NavigateNextIcon} from '@mui/icons-material/NavigateNext'\nexport {default as PersonIcon} from '@mui/icons-material/Person'\nexport {default as CalendarTodayIcon} from '@mui/icons-material/CalendarToday'\nexport {default as ChatIcon} from '@mui/icons-material/QuestionAnswerOutlined'\nexport {default as TodayIcon} from '@mui/icons-material/Today'\nexport {default as DeleteForeverIcon} from '@mui/icons-material/DeleteForever'\n\nexport {default as AdsClickIcon} from '@mui/icons-material/AdsClick'\nexport {default as FingerprintIcon} from '@mui/icons-material/Fingerprint'\nexport {default as SportsEsportsOutlinedIcon} from '@mui/icons-material/SportsEsportsOutlined'\nexport {default as HelpOutlineRoundedIcon} from '@mui/icons-material/HelpOutlineRounded'\nexport {default as AccountTreeOutlinedIcon} from '@mui/icons-material/AccountTreeOutlined'\nexport {default as SmartToyOutlinedIcon} from '@mui/icons-material/SmartToyOutlined'\nexport {default as AcUnitIcon} from '@mui/icons-material/AcUnit'\nexport {default as LoopIcon} from '@mui/icons-material/Loop'\nexport {default as PendingIcon} from '@mui/icons-material/Pending'\nexport {default as AllInclusiveIcon} from '@mui/icons-material/AllInclusive'\nexport {default as WarningOutlinedIcon} from '@mui/icons-material/WarningOutlined'\nexport {default as InfoOutlinedIcon} from '@mui/icons-material/InfoOutlined'\nexport {default as AutoAwesomeRoundedIcon} from '@mui/icons-material/AutoAwesomeRounded'\nexport {default as ErrorOutlineOutlinedIcon} from '@mui/icons-material/ErrorOutlineOutlined'\nexport {default as DownloadFilledIcon} from '@mui/icons-material/Download'","'use client'\nimport React, { useCallback, useMemo } from 'react'\nimport Modal, { type ModalProps } from '@mui/material/Modal'\nimport type { SxProps } from '@mui/material';\nimport type { Theme } from '@mui/material/styles';\nimport { useTheme, useMediaQuery } from '@mui/material';\nimport classnames from 'classnames';\nimport { CLASSNAMEs } from '@/_utils/_const/classNames';\nimport Tooltip from '@mui/material/Tooltip'\nimport { CloseIcon } from '@/icons/MuiIcon'\n\nimport { COMPONENTs } from '@/_utils/_const'\nimport { mergeSx } from '@/_utils/_func'\nimport { Box as Box } from '@/ele/Box'\nimport { Header as MuiHeader } from '@/ele/Typography'\nimport { ShinyPaper as MuiPaper } from '@/ele/Paper'\nimport { IconButton } from '@/ele/Button'\nimport { getDoodlePatternModalBackgroundSx } from '@/patterns'\nimport { MUI_MODAL_PAPER_RADIUS, muiModalPaperSx, muiModalRootSx } from './theme'\n\n/**\n * extended from Mui Modal\n * \n * [Doc](https://mui.com/material-ui/api/modal/)\n * \n * @param openProps - [open, setOpen]\n */\nexport default function MuiModal({\n children,\n openProps,\n size = {\n w: 'auto',\n h: 'auto',\n },\n maxHeight = '95vh', maxWidth = '95vw',\n\n onClose = () => { },\n title = \"\",\n titleIcon = null,\n closeButton = null,\n slots,\n slotProps,\n ...rest\n}: {\n children?: React.ReactNode;\n openProps: [\n boolean, // open\n (React.Dispatch<React.SetStateAction<boolean>> | React.Dispatch<boolean>) // setOpen\n ];\n size?: {\n w?: string | number;\n h?: string | number;\n },\n maxHeight?: string | number;\n maxWidth?: string | number;\n onClose?: () => void;\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n\n slots?: {\n closeButton?: React.ElementType;\n closeIcon?: React.ElementType;\n };\n slotProps?: {\n container?: {\n style?: {\n bgColor?: string;\n shadow?: string;\n },\n sx?: SxProps<Theme>;\n },\n header?: {\n style?: {\n headerImg: string;\n }\n },\n closeButton?: Partial<React.ComponentProps<typeof IconButton>> & {\n closeIcon?: Partial<React.ComponentProps<typeof CloseIcon>>;\n };\n };\n} & Omit<ModalProps, \"open\" | \"title\">) {\n const [open, setOpen] = openProps\n\n // responsive behavior: on small screens modal should occupy nearly full\n // viewport automatically so users are not staring at a tiny dialog.\n const theme = useTheme();\n const isSmDown = useMediaQuery(theme.breakpoints.down('sm'));\n const effectiveSize = useMemo(() => {\n if (isSmDown) {\n return { width: 'calc(100vw - 2%)', height: 'calc(100vh - 2%)' };\n }\n return {\n width: size.w || 'auto',\n height: size.h || 'auto',\n };\n }, [isSmDown, size.w, size.h]);\n\n const { \n closeButton: CloseButtonSlot = IconButton,\n closeIcon: CloseIconSlot = CloseIcon,\n } = slots || {};\n\n const {\n closeButton: closeButtonAllProps,\n } = slotProps || {};\n\n const { closeIcon: closeIconProps, ...closeButtonProps } = closeButtonAllProps || {sx:{}};\n\n /**\n * Internal close handler that ensures modal state is updated\n */\n const handleClose = useCallback(() => {\n // If setOpen is available (it should be from openProps), use it\n if (typeof setOpen === 'function') {\n setOpen(false);\n }\n // Also call generic onClose if provided\n onClose?.();\n }, [setOpen, onClose]);\n\n /**\n * Determine the close button to render\n * If closeButton is provided, use it\n * Otherwise generate a default IconButton that triggers handleClose\n */\n const renderCloseButton = useMemo(() => {\n if (closeButton) return closeButton;\n \n return (\n <CloseButtonSlot onClick={handleClose} size=\"small\" aria-label=\"close\" {...closeButtonProps} sx={{\n padding: 0,\n ...closeButtonProps?.sx,\n }}>\n <CloseIconSlot\n {...closeIconProps}\n fontSize=\"1rem\"\n sx={{\n color: 'var(--closeIconColor)',\n ...closeIconProps?.sx,\n }}\n />\n </CloseButtonSlot>\n );\n }, [closeButton, handleClose, CloseButtonSlot, CloseIconSlot, closeButtonProps, closeIconProps]);\n\n // ensure the elemental modal classname is always present so tests can target it\n const modalClass = classnames(CLASSNAMEs.elemental.modal, rest.className);\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className={modalClass}\n {...rest}\n sx={{\n zIndex: COMPONENTs.modal.zIndex,\n padding: \"1%\",\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'transparent',\n\n // backdropFilter: 'blur(5px)', // causing performance issues when blurring large areas\n }}\n\n >\n <Box\n style={{\n \"--w\": effectiveSize.width,\n \"--h\": effectiveSize.height,\n \"--max-h\": maxHeight,\n \"--max-w\": maxWidth,\n ...(slotProps?.header?.style?.headerImg\n ? { '--headerImg': slotProps.header.style.headerImg }\n : {}),\n ...(slotProps?.container?.style?.bgColor\n ? { '--bgC': slotProps.container.style.bgColor }\n : {}),\n ...(slotProps?.container?.style?.shadow\n ? { '--shadow': slotProps.container.style.shadow }\n : {}),\n } as React.CSSProperties}\n sx={mergeSx(muiModalRootSx, {\n display: \"flex\",\n justifyContent: \"center\",\n height: {xs: 'calc(100vh - 2%)', md: 'var(--h)'},\n width: {xs: 'calc(100vw - 2%)', md: 'var(--w)'},\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n })}>\n <MuiPaper sx={mergeSx(muiModalPaperSx, slotProps?.container?.sx)}>\n <BackgroundContainer overridePatternUrl={slotProps?.header?.style?.headerImg}>\n <MuiModalHeader\n title={title}\n titleIcon={titleIcon}\n closeButton={renderCloseButton}\n />\n\n <Box sx={{\n padding: \"16px\",\n paddingTop: \"8px\",\n flexGrow: 1,\n height: '-webkit-fill-available',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }}>\n {children}\n </Box>\n </BackgroundContainer>\n </MuiPaper>\n </Box>\n </Modal>\n )\n}\n\n/**\n * Background container for the modal\n * it places a background image and a gradient overlay\n */\nfunction BackgroundContainer({ children, overridePatternUrl }: {\n children?: React.ReactNode;\n overridePatternUrl?: string;\n}) {\n const isDefaultPattern = !overridePatternUrl;\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n }}>\n <Box \n sx={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n \n ...(isDefaultPattern\n ? getDoodlePatternModalBackgroundSx()\n : {\n backgroundImage: 'var(--headerImg)',\n backgroundSize: '27px',\n }),\n opacity: 0.2,\n }} \n />\n <Box sx={{\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n position: 'relative',\n zIndex: 1,\n\n // Circular gradient overlay\n background: 'var(--modalOverlayBg)',\n }}>\n {children}\n </Box>\n </Box>\n )\n}\n\nfunction MuiModalHeader({\n title = '',\n titleIcon = null,\n closeButton = null,\n}: {\n title?: string;\n titleIcon?: React.ReactNode;\n closeButton?: React.ReactNode;\n}) {\n return (\n <Box sx={{\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingTop: 1,\n gap: 1,\n maxWidth: '50%',\n }}\n >\n <MuiHeader\n sx={{\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'pre',\n }}\n >\n {title}\n </MuiHeader>\n {titleIcon && (\n <MuiHeader sx={{ display: 'flex', flexShrink: 0, }}>\n <Tooltip title=\"Icon\" arrow>\n <span>{titleIcon}</span>\n </Tooltip>\n </MuiHeader>\n )}\n </Box>\n\n {closeButton && (\n <Box sx={{ position: 'absolute', right: '8px', top: '4px' }}>{closeButton}</Box>\n )}\n </Box>\n\n );\n};\n\n","// central registry for CSS class names used throughout the codebase\n//\n// Storing them in one object makes it easy to search for components in tests\n// and debugging tools, and prevents accidental mismatches when strings are\n// copied by hand. Add additional entries here as new components need them.\n\nexport const CLASSNAMEs = {\n elemental: {\n avatar: {\n // root wrapper for the Avatar component\n root: 'Elemental-Avatar',\n // button variant used by AvatarButton and related controls\n button: 'Elemental-AvatarButton',\n },\n modal: 'Elemental-Modal',\n dialog: 'Elemental-Dialog',\n },\n compound: {\n useForm: {\n // class applied to the wrapper around the avatar field inside UseForm\n avatarField: 'UseForm-AvatarField',\n },\n },\n} as const;\n","export const COMPONENTs = {\n modal:{\n zIndex: 1300,\n }\n}\n","'use client'\nimport Paper from '@mui/material/Paper'\nimport { styled } from '@mui/material/styles'\n\n/**\n * Mui Paper boxshadow with a shiny effect\n * \n * [Doc](https://mui.com/material-ui/api/paper/)\n */\nconst ShinyPaper = styled(Paper)({\n '--shiny-paper-shadow-color': 'var(--mui-palette-blink-secondary)',\n '--shiny-paper-grey-mix': 'color-mix(in lab, var(--mui-palette-grey-A700), transparent 50%)',\n '--shiny-paper-shadow-color-secondary': 'color-mix(in lab, var(--shiny-paper-shadow-color), var(--shiny-paper-grey-mix) 50%)',\n\n '--bs-1': 'var(--shiny-paper-shadow-color)',\n '--bs-2': 'var(--shiny-paper-shadow-color-secondary)',\n '--bs-3': 'var(--shiny-paper-shadow-color)',\n '--bs': `\n 0px 2px 1px -1px var(--bs-1),\n 0px 1px 1px 0px var(--bs-2),\n 0px 1px 3px 0px var(--bs-3)\n `,\n\n \"&.MuiPaper-root\":{\n transition:\"background-color 0s\",\n boxShadow: \"var(--bs)\",\n },\n})\nexport default ShinyPaper","export interface DoodlePatternPalette {\n primary: string;\n primaryOpacity: number;\n primaryWidth: number;\n accent: string;\n accentOpacity: number;\n accentWidth: number;\n}\n\nexport const DOODLE_PATTERN_PALETTE_LIGHT: DoodlePatternPalette = {\n primary: \"#5f516f\",\n primaryOpacity: 0.42,\n primaryWidth: 1.55,\n accent: \"#b84f86\",\n accentOpacity: 0.34,\n accentWidth: 1.3,\n};\n\nexport const DOODLE_PATTERN_PALETTE_DARK: DoodlePatternPalette = {\n primary: \"#e5f7ff\",\n primaryOpacity: 0.96,\n primaryWidth: 1.85,\n accent: \"#f0d7ff\",\n accentOpacity: 0.82,\n accentWidth: 1.55,\n};\n\nexport const DOODLE_PATTERN_STRUCTURE = {\n primaryWidth: DOODLE_PATTERN_PALETTE_LIGHT.primaryWidth,\n accentWidth: DOODLE_PATTERN_PALETTE_LIGHT.accentWidth,\n} as const;\n\nconst DOODLE_PATTERN_MASK_COLOR = \"#000\";\n\nexport interface DoodlePatternPlacement {\n x: number;\n y: number;\n icon: DoodlePatternIconName;\n rotate?: number;\n scale?: number;\n priority?: number;\n}\n\nexport const DOODLE_PATTERN_TILE_WIDTH = 520;\nexport const DOODLE_PATTERN_TILE_HEIGHT = 250;\nexport const DOODLE_PATTERN_RENDER_SCALE = 3;\n\nconst DOODLE_PATTERN_ICON_SIZE = 44;\nconst DOODLE_PATTERN_ICON_MUTATIONS = [\n { rotate: 0, scale: 1 },\n { rotate: 40, scale: 0.76 },\n { rotate: -180, scale: 1.18 },\n { rotate: -54, scale: 0.88 },\n { rotate: 132, scale: 0.64 },\n { rotate: -118, scale: 1.08 },\n { rotate: 74, scale: 0.92 },\n { rotate: -32, scale: 1.28 },\n] as const;\nexport const DOODLE_PATTERN_ICON_VIEW_BOX = \"0 0 44 44\";\n\nexport const DOODLE_PATTERN_ICON_SVGS = {\n chat:\n \"<path d='M8 8h26a7 7 0 0 1 7 7v13a7 7 0 0 1-7 7h-8l-8 7v-7H8a7 7 0 0 1-7-7V15a7 7 0 0 1 7-7Z'/><path d='M11 19h18M11 27h11'/>\",\n agent:\n \"<path d='M8 11h26a8 8 0 0 1 8 8v12a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V19a8 8 0 0 1 8-8Z'/><path d='M14 8V4M30 8V4'/><path d='M11 30h20'/><circle cx='15' cy='23' r='2.5'/><circle cx='27' cy='23' r='2.5'/>\",\n cursor:\n \"<path d='M8 5l25 13-17 6-7 17L8 5Z'/><path d='M18 25l12 12'/>\",\n model:\n \"<path d='M12 10h20a6 6 0 0 1 6 6v14a6 6 0 0 1-6 6H12a6 6 0 0 1-6-6V16a6 6 0 0 1 6-6Z'/><circle cx='16' cy='20' r='2.5'/><circle cx='28' cy='20' r='2.5'/><circle cx='22' cy='29' r='2.5'/><path d='M18 21l3 6M26 21l-3 6'/>\",\n orchestra:\n \"<path d='M22 4l7 4v8l-7 4-7-4V8ZM11 24l7 4v8l-7 4-7-4v-8ZM33 24l7 4v8l-7 4-7-4v-8Z'/><path d='M19 21l-3 5M25 21l3 5M20 32h4'/>\",\n doc:\n \"<path d='M9 5h18l8 8v23H9Z'/><path d='M27 5v9h8M15 21h14M15 29h10'/>\",\n grid:\n \"<path d='M7 7h30v30H7ZM7 17h30M7 27h30M17 7v30M27 7v30'/>\",\n brain:\n \"<path d='M14 9c-6 0-10 4-10 10 0 3 1 5 3 7-1 5 3 9 8 9 3 0 5-1 7-3 2 2 4 3 7 3 5 0 9-4 8-9 2-2 3-4 3-7 0-6-4-10-10-10-3 0-6 1-8 3-2-2-5-3-8-3Z'/><path d='M22 12v20M12 17c4 0 7 2 10 6M32 17c-4 0-7 2-10 6M12 27c4-1 7 0 10 3M32 27c-4-1-7 0-10 3'/>\",\n tool:\n \"<path d='M31 6c-4-1-8 0-11 3-2 2-3 5-2 8L6 29l5 5 12-12c3 1 6 0 8-2 3-3 4-7 3-11l-6 6-4-4Z'/>\",\n code: \"<path d='M15 13l-7 7 7 7M27 13l7 7-7 7M23 10l-5 20'/>\",\n terminal:\n \"<path d='M5 8h32v25H5Z'/><path d='M11 17l6 4-6 5M21 27h10'/>\",\n laptop: \"<path d='M8 9h28v20H8Z'/><path d='M4 35h36M15 29h14'/>\",\n smartphone:\n \"<path d='M14 4h16a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H14a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4Z'/><path d='M18 9h8M14 32h16'/><circle cx='22' cy='36' r='1.5'/>\",\n battery:\n \"<path d='M6 12h30v20H6Z'/><path d='M36 18h5v8h-5'/><path d='M12 22l12-6-4 5h12l-13 7 4-6Z'/>\",\n sigma: \"<path d='M31 8H10l10 12-10 12h22'/>\",\n function:\n \"<path d='M29 8c-8-2-12 2-13 10l-3 17M8 19h19M26 25l6 7M32 25l-6 7'/>\",\n gear:\n \"<g transform='translate(2 2) scale(1.6667)'><path d='M10.3 4.3c.4-1.7 3-1.7 3.4 0 .3 1.1 1.6 1.7 2.6 1.1 1.5-.9 3.3.8 2.4 2.4-.6 1 0 2.3 1.1 2.6 1.7.4 1.7 3 0 3.4-1.1.3-1.7 1.6-1.1 2.6.9 1.5-.8 3.3-2.4 2.4-1-.6-2.3 0-2.6 1.1-.4 1.7-3 1.7-3.4 0-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1 0-2.3-1.1-2.6-1.7-.4-1.7-3 0-3.4 1.1-.3 1.7-1.6 1.1-2.6-.9-1.5.8-3.3 2.4-2.4 1 .6 2.3 0 2.6-1.1Z'/><circle cx='12' cy='12' r='4'/></g>\",\n chip:\n \"<path d='M11 11h22v22H11Z'/><path d='M16 6v5M22 6v5M28 6v5M16 33v5M22 33v5M28 33v5M6 16h5M6 22h5M6 28h5M33 16h5M33 22h5M33 28h5'/>\",\n logicGate:\n \"<path d='M9 12h12c8 0 14 4 14 10s-6 10-14 10H9Z'/><path d='M3 17h6M3 27h6M35 22h6'/><circle cx='15' cy='17' r='1.5'/><circle cx='15' cy='27' r='1.5'/>\",\n ram:\n \"<path d='M6 12h32v20H6Z'/><path d='M11 17h5v8h-5ZM20 17h5v8h-5ZM29 17h5v8h-5Z'/><path d='M10 8v4M16 8v4M22 8v4M28 8v4M34 8v4M10 32v4M16 32v4M22 32v4M28 32v4M34 32v4'/><path d='M17 32v3h10v-3'/>\",\n opticalFiber:\n \"<path d='M15 38V24h14v14'/><path d='M18 24C11 19 8 14 8 8M21 24C18 17 18 12 18 7M24 24C26 17 26 12 26 7M27 24C34 19 36 14 36 8'/><circle cx='8' cy='8' r='3'/><circle cx='18' cy='7' r='3'/><circle cx='26' cy='7' r='3'/><circle cx='36' cy='8' r='3'/><path d='M12 34h20'/>\",\n database:\n \"<ellipse cx='22' cy='11' rx='15' ry='6'/><path d='M7 11v20c0 3 7 6 15 6s15-3 15-6V11M7 21c0 3 7 6 15 6s15-3 15-6'/>\",\n dataTable:\n \"<path d='M7 9h30v26H7Z'/><path d='M7 16h30M17 16v19M27 16v19M12 12h2M18 12h2M24 12h2'/>\",\n dataPipeline:\n \"<path d='M6 12h10v8H6ZM28 12h10v8H28ZM17 26h10v8H17Z'/><path d='M16 16h12M22 20v6'/><circle cx='16' cy='16' r='1.5'/><circle cx='28' cy='16' r='1.5'/><circle cx='22' cy='26' r='1.5'/>\",\n dataFilter:\n \"<path d='M7 9h30L25 23v11l-6 3V23Z'/><path d='M14 14h16'/>\",\n dataSearch:\n \"<circle cx='18' cy='18' r='10'/><path d='M25 25l11 11M14 18h8M14 23h5'/>\",\n dataPieChart:\n \"<circle cx='22' cy='22' r='15'/><path d='M22 7v15h15'/><path d='M22 22L12 34'/>\",\n dataCloud:\n \"<path d='M13 31h20a7 7 0 0 0 1-14 10 10 0 0 0-19-3 8 8 0 0 0-2 17Z'/><path d='M22 18v11M18 25l4 4 4-4'/>\",\n dataBinaryArray:\n \"<path d='M12 8H8v28h4M32 8h4v28h-4'/><text x='22' y='17' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>101</text><text x='22' y='27' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>010</text><text x='22' y='37' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-monospace,SFMono-Regular,Menlo,monospace' font-size='8.5' font-weight='300'>111</text>\",\n bracket: \"<path d='M17 8h-7v24h7M27 8h7v24h-7'/>\",\n graph:\n \"<path d='M8 33V11M8 33h29M14 27l7-8 6 5 8-12'/><circle cx='21' cy='19' r='2'/><circle cx='27' cy='24' r='2'/><circle cx='35' cy='12' r='2'/>\",\n atom:\n \"<circle cx='22' cy='22' r='3'/><ellipse cx='22' cy='22' rx='16' ry='6'/><ellipse cx='22' cy='22' rx='16' ry='6' transform='rotate(60 22 22)'/><ellipse cx='22' cy='22' rx='16' ry='6' transform='rotate(-60 22 22)'/>\",\n plus: \"<path d='M22 13v18M13 22h18'/>\",\n dot: \"<circle cx='22' cy='22' r='4'/>\",\n wave: \"<path d='M7 22c8-10 17 10 25 0'/>\",\n equal: \"<path d='M12 18h22M12 26h22'/>\",\n pi: \"<path d='M10 14h26M16 14v20M30 14v15c0 4 3 6 7 4'/>\",\n lambda:\n \"<text x='22' y='35' text-anchor='middle' fill='none' stroke-width='0.65' font-family='Georgia,Times New Roman,serif' font-size='34' font-weight='400'>&#955;</text>\",\n functionDirac:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>i&#947;<tspan baseline-shift='super' font-size='6'>&#956;</tspan>&#8706;<tspan baseline-shift='sub' font-size='6'>&#956;</tspan>&#968;=m&#968;</text>\",\n functionSoftmax:\n \"<text x='43' y='25' text-anchor='end' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='7.5' font-weight='300'>softmax=</text><text x='55' y='18' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>e<tspan baseline-shift='super' font-size='6'>x</tspan></text><path d='M44 23h22'/><text x='55' y='34' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#931;e<tspan baseline-shift='super' font-size='5.5'>x</tspan></text>\",\n functionActivation:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='10' font-weight='300'>y=&#963;(Wx+b)</text>\",\n functionAttention:\n \"<text x='39' y='25' text-anchor='end' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='7.5' font-weight='300'>attn=</text><text x='52' y='18' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>QK<tspan baseline-shift='super' font-size='5.5'>T</tspan></text><path d='M41 23h22'/><text x='52' y='34' text-anchor='middle' fill='none' stroke-width='0.48' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8730;d</text><text x='66' y='25' text-anchor='start' fill='none' stroke-width='0.46' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>V</text>\",\n functionLoss:\n \"<text x='44' y='26' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>L=-&#931;y log(p)</text>\",\n functionSchrodinger:\n \"<text x='6' y='26' text-anchor='start' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>i&#8463;</text><text x='30' y='18' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8706;&#968;</text><path d='M20 23h20'/><text x='30' y='35' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8706;t</text><text x='48' y='26' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='9' font-weight='300'>=-</text><text x='66' y='18' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>&#8463;<tspan baseline-shift='super' font-size='5.5'>2</tspan></text><path d='M56 23h20'/><text x='66' y='35' text-anchor='middle' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8' font-weight='300'>2m</text><text x='81' y='26' text-anchor='start' fill='none' stroke-width='0.44' font-family='ui-sans-serif,system-ui,sans-serif' font-size='8.5' font-weight='300'>&#8711;<tspan baseline-shift='super' font-size='5.5'>2</tspan>&#968;+V&#968;</text>\",\n functionGraphTanh:\n \"<path d='M7 22h30M22 7v30'/><path d='M8 31c7 0 10-2 14-9 4-7 7-9 14-9'/><path d='M11 31h5M30 13h5'/>\",\n functionGraphGaussian:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 34c5 0 6-20 12-20s7 20 12 20'/><path d='M22 14v21'/>\",\n distributionUniform:\n \"<path d='M7 35V9M7 35h30'/><path d='M11 32V17h22v15'/><path d='M11 17h22'/>\",\n distributionExponential:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 13c7 8 11 14 25 19'/><path d='M10 13h4M31 32h4'/>\",\n distributionBimodal:\n \"<path d='M7 35V9M7 35h30'/><path d='M9 34c4 0 5-13 10-13s5 13 8 13c2 0 3-11 7-11 3 0 3 11 4 11'/>\",\n distributionSkewed:\n \"<path d='M7 35V9M7 35h30'/><path d='M10 34c3 0 4-19 9-19 6 0 7 17 17 17'/><path d='M19 15v19'/>\",\n derivative:\n \"<text x='22' y='17' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='12' font-weight='300'>dy</text><path d='M8 23h28'/><text x='22' y='38' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='12' font-weight='300'>dx</text>\",\n integral: \"<path d='M28 6c-8 0-8 8-8 17s-1 17-9 17M19 7h9M10 39h9'/>\",\n exp:\n \"<text x='18' y='30' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='20' font-weight='300'>e</text><text x='30' y='18' text-anchor='middle' fill='none' stroke-width='0.5' font-family='ui-sans-serif,system-ui,sans-serif' font-size='11' font-weight='300'>x</text>\",\n sin:\n \"<text x='22' y='28' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='18' font-weight='300'>sin</text>\",\n functionGraphCosin:\n \"<path d='M7 22h30M22 7v30'/><path d='M8 13c4 0 5 18 10 18s6-18 10-18 5 18 8 18'/><path d='M9 13h4M31 31h4'/>\",\n tanh:\n \"<text x='22' y='28' text-anchor='middle' fill='none' stroke-width='0.55' font-family='ui-sans-serif,system-ui,sans-serif' font-size='16' font-weight='300'>tanh</text>\",\n wifi:\n \"<path d='M9 20c8-8 18-8 26 0M14 26c5-5 11-5 16 0M19 32c2-2 4-2 6 0'/><circle cx='22' cy='36' r='2'/>\",\n internet:\n \"<circle cx='22' cy='22' r='15'/><path d='M7 22h30M22 7c6 8 6 22 0 30M22 7c-6 8-6 22 0 30M11 13c6 3 16 3 22 0M11 31c6-3 16-3 22 0'/>\",\n percent:\n \"<circle cx='14' cy='14' r='4'/><circle cx='30' cy='30' r='4'/><path d='M33 11L11 33'/>\",\n infinity:\n \"<path d='M6 22c0-5 4-9 9-9 4 0 7 3 10 9 3 6 6 9 10 9 5 0 9-4 9-9s-4-9-9-9c-4 0-7 3-10 9-3 6-6 9-10 9-5 0-9-4-9-9Z'/>\",\n bug:\n \"<path d='M14 16h16v15a8 8 0 0 1-16 0Z'/><path d='M18 16v-4h8v4M9 22h5M30 22h5M9 30h5M30 30h5M13 11l-5-5M31 11l5-5'/><circle cx='18' cy='24' r='1.5'/><circle cx='26' cy='24' r='1.5'/>\",\n server:\n \"<path d='M8 9h28v11H8ZM8 24h28v11H8Z'/><circle cx='14' cy='14' r='1.5'/><circle cx='14' cy='29' r='1.5'/>\",\n rocket:\n \"<path d='M22 6L29 15V28L33 36L26 30H18L11 36L15 28V15Z'/><circle cx='22' cy='21' r='3'/><path d='M19 34l3 4M25 34l-3 4M22 30v4'/>\",\n puzzle:\n \"<path d='M10 10h10c0-5 8-5 8 0h8v9c5 0 5 8 0 8v9h-9c0-5-8-5-8 0h-9v-9c5 0 5-8 0-8Z'/>\",\n book:\n \"<path d='M5 10h13c3 0 4 2 4 4 0-2 1-4 4-4h13v26H27c-3 0-5 2-5 4-1-2-2-4-5-4H5Z'/><path d='M22 14v26'/><path d='M10 17h8M10 23h8M10 29h8M26 17h8M26 23h8M26 29h8'/><path d='M5 14H2v26h15c3 0 4 1 5 3 1-2 2-3 5-3h15V14h-3'/>\",\n beaker:\n \"<path d='M16 7h16M20 7v10L11 34a4 4 0 0 0 4 6h18a4 4 0 0 0 4-6l-9-17V7M17 28h14'/>\",\n sliders:\n \"<path d='M8 14h28M8 24h28M8 34h28'/><circle cx='17' cy='14' r='4'/><circle cx='28' cy='24' r='4'/><circle cx='21' cy='34' r='4'/>\",\n keyboard:\n \"<path d='M6 12h32v24H6Z'/><path d='M12 19h3M20 19h3M28 19h3M12 27h3M20 27h12M12 34h20'/>\",\n branch:\n \"<circle cx='12' cy='12' r='4'/><circle cx='32' cy='20' r='4'/><circle cx='12' cy='32' r='4'/><path d='M16 12c8 0 8 8 12 8M16 32c8 0 8-12 12-12'/>\",\n cube:\n \"<path d='M22 6l16 9v18l-16 9-16-9V15Z'/><path d='M6 15l16 9 16-9M22 24v18'/>\",\n} as const;\n\nexport type DoodlePatternIconName = keyof typeof DOODLE_PATTERN_ICON_SVGS;\n\nconst DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH = 88;\nconst DOODLE_PATTERN_WIDE_FUNCTION_ICON_VIEW_BOX_WIDTH = 132;\n\nconst getDoodlePatternIconViewBoxWidth = (\n iconName: DoodlePatternIconName\n): number => {\n const iconViewBoxWidths: Partial<Record<DoodlePatternIconName, number>> = {\n functionActivation: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionAttention: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionDirac: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionLoss: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionSchrodinger: DOODLE_PATTERN_WIDE_FUNCTION_ICON_VIEW_BOX_WIDTH,\n functionSoftmax: DOODLE_PATTERN_FUNCTION_ICON_VIEW_BOX_WIDTH,\n };\n\n return iconViewBoxWidths[iconName] ?? DOODLE_PATTERN_ICON_SIZE;\n};\n\nexport const getDoodlePatternIconViewBox = (\n iconName: DoodlePatternIconName\n): string =>\n `0 0 ${getDoodlePatternIconViewBoxWidth(iconName)} ${DOODLE_PATTERN_ICON_SIZE}`;\n\nexport const getDoodlePatternIconWidth = (\n iconName: DoodlePatternIconName,\n iconSize = DOODLE_PATTERN_ICON_SIZE\n): number =>\n iconSize *\n (getDoodlePatternIconViewBoxWidth(iconName) / DOODLE_PATTERN_ICON_SIZE);\n\nconst PLAYGROUND_AI_DOODLE_HERO_PLACEMENTS = [\n { x: -10, y: 215, icon: \"sin\", rotate: -11, scale: 1.18, priority: 1 },\n { x: -8, y: 100, icon: \"lambda\", rotate: 10, scale: 0.74, priority: 10},\n { x: -2, y: -2, icon: \"code\", rotate: 18, scale: 0.3, priority: 1 }, \n { x: -2, y: 188, icon: \"percent\", rotate: -13, scale: 0.7, priority: 10},\n { x: -1, y: 151, icon: \"dataFilter\", rotate: -18, scale: 0.28, priority: 1 },\n { x: 2, y: 32, icon: \"wifi\", rotate: 13, scale: 0.28, priority: 10},\n { x: 2, y: 79, icon: \"dataSearch\", rotate: -12, scale: 0.3, priority: 10},\n { x: 8, y: 11, icon: \"doc\", rotate: -12, scale: 0.58, priority: 7},\n { x: 9, y: 135, icon: \"functionGraphGaussian\", rotate: -10, scale: 0.9, priority: 6},\n { x: 12, y: 83, icon: \"rocket\", rotate: 15, scale: 0.78, priority: 7},\n { x: 14, y: 121, icon: \"smartphone\", rotate: -19, scale: 0.55, priority: 4},\n { x: 16, y: 58, icon: \"internet\", rotate: -13, scale: 0.32, priority: 5},\n { x: 16, y: 212, icon: \"dataCloud\", rotate: 13, scale: 0.58, priority: 6},\n { x: 22, y: 29, icon: \"functionGraphCosin\", rotate: 9, scale: 0.82, priority: 6},\n { x: 22, y: 165, icon: \"server\", rotate: 13, scale: 1.24, priority: 3}, \n { x: 24, y: -2, icon: \"functionDirac\", rotate: -35, scale: 0.76, priority: 10},\n { x: 24, y: 113, icon: \"functionActivation\", rotate: -5, scale: 0.68, priority: 5},\n { x: 35, y: 91, icon: \"pi\", rotate: 11, scale: 0.8, priority: 6},\n { x: 36, y: 232, icon: \"wave\", rotate: 12, scale: 0.3, priority: 10},\n { x: 43, y: 146, icon: \"dataSearch\", rotate: 13, scale: 0.42, priority: 9},\n { x: 43, y: 219, icon: \"bug\", rotate: -12, scale: 0.34, priority: 4},\n { x: 48, y: 48, icon: \"agent\", rotate: -8, scale: 1.05, priority: 8},\n { x: 52, y: 227, icon: \"distributionSkewed\", rotate: 8, scale: 0.62, priority: 5},\n { x: 57, y: 132, icon: \"dataPipeline\", rotate: 14, scale: 0.34, priority: 5},\n { x: 67, y: 90, icon: \"integral\", rotate: 13, scale: 0.56, priority: 1 },\n { x: 69, y: 151, icon: \"function\", rotate: -14, scale: 0.3, priority: 1 },\n { x: 73, y: 112, icon: \"infinity\", rotate: 15, scale: 0.38, priority: 9},\n { x: 74, y: 12, icon: \"equal\", rotate: -10, scale: 0.28, priority: 10},\n { x: 75, y: 191, icon: \"cursor\", rotate: -9, scale: 0.34, priority: 5},\n { x: 76, y: 144, icon: \"functionGraphTanh\", rotate: -12, scale: 0.82, priority: 6},\n { x: 77, y: 31, icon: \"dataCloud\", rotate: -17, scale: 0.42, priority: 9},\n { x: 78, y: 216, icon: \"keyboard\", rotate: -8, scale: 0.34, priority: 4},\n { x: 82, y: 175, icon: \"derivative\", rotate: -8, scale: 0.38, priority: 6},\n { x: 93, y: 83, icon: \"atom\", rotate: -14, scale: 1.02, priority: 5},\n { x: 94, y: 232, icon: \"distributionSkewed\", rotate: -9, scale: 0.3, priority: 10},\n { x: 95, y: 127, icon: \"grid\", rotate: -9, scale: 0.34, priority: 7},\n { x: 96, y: 5, icon: \"chat\", rotate: 9, scale: 0.95, priority: 8},\n { x: 100, y: 49, icon: \"distributionSkewed\", rotate: 27, scale: 0.32, priority: 4},\n { x: 101, y: 201, icon: \"distributionUniform\", rotate: -8, scale: 0.38, priority: 6},\n { x: 104, y: 172, icon: \"battery\", rotate: 8, scale: 0.72, priority: 3},\n { x: 106, y: 195, icon: \"functionDirac\", rotate: 3, scale: 0.76, priority: 2},\n { x: 112, y: 134, icon: \"tanh\", rotate: -7, scale: 0.42, priority: 6},\n { x: 114, y: 154, icon: \"orchestra\", rotate: 30, scale: 0.42, priority: 6},\n { x: 115, y: 229, icon: \"ram\", rotate: 9, scale: 0.52, priority: 4},\n { x: 116, y: 68, icon: \"tool\", rotate: -18, scale: 0.4, priority: 4}, \n { x: 118, y: 121, icon: \"wifi\", rotate: -17, scale: 0.44, priority: 4 },\n { x: 125, y: 138, icon: \"plus\", rotate: 11, scale: 0.88, priority: 5},\n { x: 125, y: 166, icon: \"exp\", rotate: 8, scale: 0.42, priority: 1 },\n { x: 130, y: 165, icon: \"lambda\", rotate: 8, scale: 0.72, priority: 6},\n { x: 132, y: 115, icon: \"opticalFiber\", rotate: 14, scale: 0.54, priority: 4},\n { x: 132, y: 57, icon: \"wave\", rotate: -9, scale: 0.32, priority: 1 },\n { x: 133, y: 67, icon: \"functionLoss\", rotate: 3, scale: 0.42, priority: 1 },\n { x: 134, y: 2, icon: \"distributionExponential\", rotate: 9, scale: 0.3, priority: 10},\n { x: 141, y: 218, icon: \"pi\", rotate: -15, scale: 0.46, priority: 1 },\n { x: 151, y: 232, icon: \"brain\", rotate: 5, scale: 0.46, priority: 1 },\n { x: 142, y: 82, icon: \"dataTable\", rotate: 8, scale: 0.82, priority: 3},\n { x: 149, y: -1, icon: \"percent\", rotate: 8, scale: 0.28, priority: 1 },\n { x: 150, y: 150, icon: \"cube\", rotate: -13, scale: 1.08, priority: 3},\n { x: 151, y: 23, icon: \"brain\", rotate: -9, scale: 0.82, priority: 3},\n { x: 151, y: 125, icon: \"functionSoftmax\", rotate: -5, scale: 0.7, priority: 5},\n { x: 158, y: 197, icon: \"distributionExponential\", rotate: -12, scale: 0.34, priority: 5},\n { x: 159, y: -15, icon: \"plus\", rotate: 16, scale: 1.2, priority: 1 },\n { x: 163, y: 113, icon: \"sin\", rotate: -10, scale: 0.36, priority: 6},\n { x: 170, y: 67, icon: \"code\", rotate: 14, scale: 0.36, priority: 4},\n { x: 177, y: 53, icon: \"functionSoftmax\", rotate: 15, scale: 0.46, priority: 7},\n { x: 194, y: 183, icon: \"dataBinaryArray\", rotate: 11, scale: 0.34, priority: 4},\n { x: 176, y: 145, icon: \"infinity\", rotate: 14, scale: 0.38, priority: 6},\n { x: 176, y: 222, icon: \"functionGraphCosin\", rotate: 8, scale: 0.72, priority: 10},\n { x: 187, y: 90, icon: \"dataPieChart\", rotate: -12, scale: 0.42, priority: 6},\n { x: 190, y: 112, icon: \"keyboard\", rotate: 9, scale: 0.5, priority: 4},\n { x: 190, y: 207, icon: \"opticalFiber\", rotate: -14, scale: 0.34, priority: 4},\n { x: 198, y: 56, icon: \"functionAttention\", rotate: 4, scale: 0.72, priority: 5},\n { x: 202, y: 100, icon: \"lambda\", rotate: -30, scale: 0.70, priority: 1 },\n { x: 203, y: 5, icon: \"laptop\", rotate: -7, scale: 1.26, priority: 3},\n { x: 204, y: 71, icon: \"distributionExponential\", rotate: -12, scale: 0.9, priority: 3},\n { x: 218, y: 170, icon: \"book\", rotate: -11, scale: 0.94, priority: 5},\n { x: 218, y: 230, icon: \"terminal\", rotate: 5, scale: 0.44, priority: 5},\n { x: 212, y: 140, icon: \"dataCloud\", rotate: 21, scale: 0.40, priority: 1 },\n { x: 222, y: 158, icon: \"derivative\", rotate: 18, scale: 0.38, priority: 7},\n { x: 224, y: 128, icon: \"gear\", rotate: 18, scale: 0.38, priority: 7},\n { x: 229, y: 116, icon: \"dot\", rotate: 0, scale: 0.70, priority: 1 },\n { x: 230, y: 215, icon: \"dataFilter\", rotate: 13, scale: 0.34, priority: 5},\n { x: 238, y: 101, icon: \"puzzle\", rotate: 12, scale: 0.62, priority: 8},\n { x: 249, y: 121, icon: \"bug\", rotate: -8, scale: 0.66, priority: 4},\n { x: 250, y: 55, icon: \"dataBinaryArray\", rotate: 12, scale: 0.3, priority: 4},\n { x: 251, y: 221, icon: \"integral\", rotate: 9, scale: 0.38, priority: 6},\n { x: 254, y: 4, icon: \"sigma\", rotate: -12, scale: 0.48, priority: 1 },\n { x: 256, y: 149, icon: \"function\", rotate: -14, scale: 0.38, priority: 7},\n { x: 258, y: 49, icon: \"dataPieChart\", rotate: 13, scale: 0.2, priority: 1 },\n { x: 258, y: 192, icon: \"functionSchrodinger\", rotate: -2, scale: 0.78, priority: 5},\n { x: 262, y: 95, icon: \"dataSearch\", rotate: -21, scale: 0.40, priority: 1 },\n { x: 264, y: 60, icon: \"distributionUniform\", rotate: 10, scale: 0.72, priority: 9},\n { x: 268, y: 238, icon: \"doc\", rotate: -10, scale: 0.3, priority: 10}, \n { x: 268, y: 29, icon: \"book\", rotate: 13, scale: 0.2, priority: 1 },\n { x: 270, y: 160, icon: \"laptop\", rotate: 12, scale: 0.5, priority: 4 },\n { x: 278, y: 12, icon: \"chip\", rotate: 8, scale: 1.18, priority: 3},\n { x: 278, y: 116, icon: \"equal\", rotate: 15, scale: 0.74, priority: 1 },\n { x: 278, y: 180, icon: \"plus\", rotate: -8, scale: 0.57, priority: 1 },\n { x: 280, y: -4, icon: \"exp\", rotate: 8, scale: 0.62, priority: 1 },\n { x: 286, y: 138, icon: \"functionGraphCosin\", rotate: -8, scale: 0.54, priority: 5},\n { x: 288, y: 78, icon: \"database\", rotate: -11, scale: 1.12, priority: 3},\n { x: 296, y: 158, icon: \"orchestra\", rotate: -12, scale: 0.74, priority: 3},\n { x: 300, y: 62, icon: \"distributionBimodal\", rotate: -8, scale: 0.32, priority: 4},\n { x: 306, y: 218, icon: \"functionGraphGaussian\", rotate: -7, scale: 0.62, priority: 5},\n { x: 317, y: 119, icon: \"graph\", rotate: 11, scale: 0.56, priority: 4},\n { x: 318, y: -2, icon: \"dataBinaryArray\", rotate: -8, scale: 0.8, priority: 10},\n { x: 325, y: 35, icon: \"code\", rotate: 8, scale: 0.8, priority: 10},\n { x: 333, y: 220, icon: \"chip\", rotate: 13, scale: 0.28, priority: 1 },\n { x: 335, y: 65, icon: \"ram\", rotate: -12, scale: 0.68, priority: 4},\n { x: 335, y: 153, icon: \"battery\", rotate: -10, scale: 0.42, priority: 9},\n { x: 336, y: 185, icon: \"opticalFiber\", rotate: 12, scale: 0.4, priority: 9},\n { x: 342, y: 232, icon: \"wifi\", rotate: -11, scale: 0.52, priority: 10},\n { x: 348, y: 136, icon: \"atom\", rotate: 13, scale: 0.44, priority: 1 },\n { x: 350, y: 18, icon: \"branch\", rotate: 12, scale: 0.76, priority: 3},\n { x: 352, y: 86, icon: \"terminal\", rotate: 11, scale: 0.98, priority: 5},\n { x: 355, y: 172, icon: \"agent\", rotate: -12, scale: 0.4, priority: 9},\n { x: 360, y: 160, icon: \"beaker\", rotate: 16, scale: 1.24, priority: 3},\n { x: 360, y: 206, icon: \"functionLoss\", rotate: -4, scale: 1.2, priority: 1 },\n { x: 362, y: 55, icon: \"agent\", rotate: -7, scale: 0.38, priority: 4},\n { x: 364, y: 217, icon: \"dataTable\", rotate: 10, scale: 0.32, priority: 4},\n { x: 370, y: -4, icon: \"tool\", rotate: 11, scale: 0.6, priority: 10},\n { x: 372, y: 237, icon: \"distributionUniform\", rotate: 8, scale: 0.34, priority: 5},\n { x: 374, y: 125, icon: \"rocket\", rotate: 120, scale: 0.4, priority: 7},\n { x: 377, y: 71, icon: \"wifi\", rotate: 13, scale: 0.3, priority: 4},\n { x: 377, y: 81, icon: \"equal\", rotate: -5, scale: 0.3, priority: 4},\n { x: 379, y: 61, icon: \"functionLoss\", rotate: -6, scale: 0.62, priority: 5},\n { x: 381, y: 147, icon: \"distributionSkewed\", rotate: 12, scale: 0.42, priority: 6},\n { x: 384, y: 37, icon: \"distributionExponential\", rotate: -9, scale: 0.46, priority: 6},\n { x: 391, y: 126, icon: \"internet\", rotate: -12, scale: 0.52, priority: 4},\n { x: 391, y: 105, icon: \"lambda\", rotate: -12, scale: 0.44, priority: 5},\n { x: 399, y: 159, icon: \"dataPieChart\", rotate: 12, scale: 0.34, priority: 5},\n { x: 401, y: 86, icon: \"functionGraphCosin\", rotate: -9, scale: 0.42, priority: 6}, \n { x: 402, y: 21, icon: \"integral\", rotate: 9, scale: 0.4, priority: 9},\n { x: 402, y: 135, icon: \"sin\", rotate: -29, scale: 1.2, priority: 6},\n { x: 405, y: 2, icon: \"bracket\", rotate: 10, scale: 0.46, priority: 1 },\n { x: 406, y: 172, icon: \"sliders\", rotate: -16, scale: 0.9, priority: 5},\n { x: 410, y: 23, icon: \"derivative\", rotate: 9, scale: 0.4, priority: 5},\n { x: 410, y: 87, icon: \"exp\", rotate: 12, scale: 0.34, priority: 4},\n { x: 410, y: 94, icon: \"logicGate\", rotate: 13, scale: 1.04, priority: 3},\n { x: 411, y: 48, icon: \"tanh\", rotate: 6, scale: 0.46, priority: 2},\n { x: 419, y: 132, icon: \"distributionBimodal\", rotate: 8, scale: 0.4, priority: 6},\n { x: 423, y: 7, icon: \"model\", rotate: 7, scale: 1.28, priority: 3},\n { x: 428, y: 68, icon: \"dataTable\", rotate: -6, scale: 0.46, priority: 2},\n { x: 435, y: -2, icon: \"grid\", rotate: 2, scale: 0.26, priority: 1 },\n { x: 438, y: 238, icon: \"infinity\", rotate: 8, scale: 0.3, priority: 10},\n { x: 444, y: 122, icon: \"percent\", rotate: 11, scale: 0.32, priority: 4},\n { x: 444, y: 151, icon: \"functionGraphGaussian\", rotate: 12, scale: 0.42, priority: 6},\n { x: 449, y: 84, icon: \"bracket\", rotate: -10, scale: 0.32, priority: 4},\n { x: 447, y: 178, icon: \"functionGraphTanh\", rotate: -21, scale: 1.1, priority: 5},\n { x: 457, y: 58, icon: \"wifi\", rotate: 13, scale: 0.34, priority: 7},\n { x: 458, y: 125, icon: \"dataCloud\", rotate: 16, scale: 0.38, priority: 4},\n { x: 458, y: 143, icon: \"graph\", rotate: 10, scale: 0.66, priority: 5},\n { x: 459, y: 222, icon: \"function\", rotate: 0, scale: 0.7, priority: 1 },\n { x: 464, y: 78, icon: \"plus\", rotate: -16, scale: 0.28, priority: 1 },\n { x: 465, y: 0, icon: \"chat\", rotate: -12, scale: 0.28, priority: 10},\n { x: 468, y: 168, icon: \"dataSearch\", rotate: -13, scale: 0.36, priority: 4},\n { x: 471, y: 114, icon: \"sigma\", rotate: 13, scale: 0.34, priority: 4},\n { x: 473, y: 38, icon: \"dataPipeline\", rotate: -9, scale: 0.56, priority: 2},\n { x: 475, y: 85, icon: \"distributionBimodal\", rotate: -18, scale: 0.78, priority: 3},\n { x: 479, y: 59, icon: \"cursor\", rotate: -18, scale: 0.78, priority: 3},\n { x: 482, y: 204, icon: \"smartphone\", rotate: 13, scale: 0.62, priority: 3},\n { x: 486, y: 14, icon: \"dataFilter\", rotate: 17, scale: 0.54, priority: 6},\n { x: 490, y: 151, icon: \"cursor\", rotate: 15, scale: 0.36, priority: 10},\n { x: 500, y: 34, icon: \"function\", rotate: 12, scale: 0.3, priority: 10},\n { x: 500, y: 134, icon: \"dataBinaryArray\", rotate: 10, scale: 0.3, priority: 10},\n { x: 501, y: 193, icon: \"derivative\", rotate: -8, scale: 0.5, priority: 10}, \n { x: 508, y: -2, icon: \"pi\", rotate: 16, scale: 0.34, priority: 1 },\n { x: 509, y: 112, icon: \"integral\", rotate: 11, scale: 0.34, priority: 10},\n] satisfies DoodlePatternPlacement[];\n\nconst PLAYGROUND_AI_DOODLE_FLOATING_PLACEMENTS = [\n { x: 33, y: 5, icon: \"dataBinaryArray\", rotate: -11, scale: 0.3, priority: 1 },\n { x: 42, y: 58, icon: \"dot\", rotate: 0, scale: 0.24, priority: 1 },\n { x: 383, y: 59, icon: \"gear\", rotate: 11, scale: 0.28, priority: 1 },\n { x: 502, y: 83, icon: \"wave\", rotate: 13, scale: 0.3, priority: 1 },\n { x: 4, y: 72, icon: \"lambda\", rotate: 10, scale: 0.32, priority: 1 },\n { x: 498, y: 133, icon: \"dot\", rotate: 0, scale: 0.26, priority: 1 },\n { x: 204, y: 157, icon: \"wave\", rotate: 13, scale: 0.26, priority: 1 },\n { x: 244, y: 151, icon: \"sigma\", rotate: -9, scale: 0.24, priority: 4 },\n { x: 319, y: 154, icon: \"bracket\", rotate: -11, scale: 0.22, priority: 4 },\n { x: 348, y: 150, icon: \"lambda\", rotate: 8, scale: 0.22, priority: 4 },\n { x: 335, y: 202, icon: \"dot\", rotate: 0, scale: 0.22, priority: 1 },\n { x: 502, y: 184, icon: \"equal\", rotate: 15, scale: 0.28, priority: 1 },\n { x: 84, y: 229, icon: \"dot\", rotate: 0, scale: 0.24, priority: 1 },\n { x: 202, y: 221, icon: \"distributionUniform\", rotate: 8, scale: 0.3, priority: 1 },\n { x: 390, y: 228, icon: \"wave\", rotate: 9, scale: 0.3, priority: 1 },\n { x: 506, y: 226, icon: \"dataBinaryArray\", rotate: -18, scale: 0.28, priority: 1 },\n] satisfies DoodlePatternPlacement[];\n\nexport const PLAYGROUND_AI_DOODLE_PLACEMENTS: DoodlePatternPlacement[] = [\n ...PLAYGROUND_AI_DOODLE_HERO_PLACEMENTS,\n ...PLAYGROUND_AI_DOODLE_FLOATING_PLACEMENTS,\n];\n\nexport interface BuildDoodlePatternSvgOptions {\n width?: number;\n height?: number;\n iconSize?: number;\n renderScale?: number;\n placements?: DoodlePatternPlacement[];\n accentPlacements?: DoodlePatternPlacement[];\n}\n\nconst mutateDoodlePatternPlacements = (\n placements: DoodlePatternPlacement[]\n): DoodlePatternPlacement[] => {\n const iconOccurrences = new Map<DoodlePatternIconName, number>();\n\n return placements.map((placement) => {\n const occurrence = iconOccurrences.get(placement.icon) ?? 0;\n iconOccurrences.set(placement.icon, occurrence + 1);\n\n if (placement.priority) {\n return placement;\n }\n\n const mutation =\n DOODLE_PATTERN_ICON_MUTATIONS[\n occurrence % DOODLE_PATTERN_ICON_MUTATIONS.length\n ];\n\n return {\n ...placement,\n rotate: (placement.rotate ?? 0) + mutation.rotate,\n scale: (placement.scale ?? 1) * mutation.scale,\n };\n });\n};\n\nconst sortDoodlePatternPlacementsByPosition = (\n placements: DoodlePatternPlacement[]\n): DoodlePatternPlacement[] =>\n [...placements].sort((a, b) => a.x - b.x || a.y - b.y);\n\nconst renderDoodlePatternPlacement = (\n placement: DoodlePatternPlacement,\n iconSize: number\n): string => {\n const scale = placement.scale ?? 1;\n const width = getDoodlePatternIconWidth(placement.icon, iconSize) * scale;\n const height = iconSize * scale;\n const viewBox = getDoodlePatternIconViewBox(placement.icon);\n const centerX = getDoodlePatternIconViewBoxWidth(placement.icon) / 2;\n const transform = placement.rotate\n ? ` transform='rotate(${placement.rotate} ${centerX} ${iconSize / 2})'`\n : \"\";\n\n return `<svg x='${placement.x}' y='${placement.y}' width='${width}' height='${height}' viewBox='${viewBox}' overflow='visible'><g${transform}>${DOODLE_PATTERN_ICON_SVGS[placement.icon]}</g></svg>`;\n};\n\nexport const buildDoodlePatternSvg = (\n palette: DoodlePatternPalette,\n options: BuildDoodlePatternSvgOptions = {}\n): string =>\n buildDoodlePatternSvgWithStroke(\n {\n primary: palette.primary,\n primaryOpacity: palette.primaryOpacity,\n primaryWidth: palette.primaryWidth,\n accent: palette.accent,\n accentOpacity: palette.accentOpacity,\n accentWidth: palette.accentWidth,\n },\n options\n );\n\nexport const buildDoodlePatternMaskSvg = (\n options: BuildDoodlePatternSvgOptions = {}\n): string =>\n buildDoodlePatternSvgWithStroke(\n {\n primary: DOODLE_PATTERN_MASK_COLOR,\n primaryOpacity: 1,\n primaryWidth: DOODLE_PATTERN_STRUCTURE.primaryWidth,\n accent: DOODLE_PATTERN_MASK_COLOR,\n accentOpacity: 1,\n accentWidth: DOODLE_PATTERN_STRUCTURE.accentWidth,\n },\n options\n );\n\nconst buildDoodlePatternSvgWithStroke = (\n stroke: {\n primary: string;\n primaryOpacity: number;\n primaryWidth: number;\n accent: string;\n accentOpacity: number;\n accentWidth: number;\n },\n options: BuildDoodlePatternSvgOptions = {}\n): string => {\n const width = options.width ?? DOODLE_PATTERN_TILE_WIDTH;\n const height = options.height ?? DOODLE_PATTERN_TILE_HEIGHT;\n const renderScale = options.renderScale ?? DOODLE_PATTERN_RENDER_SCALE;\n const renderWidth = width * renderScale;\n const renderHeight = height * renderScale;\n const iconSize = options.iconSize ?? DOODLE_PATTERN_ICON_SIZE;\n const placements = sortDoodlePatternPlacementsByPosition(\n mutateDoodlePatternPlacements(\n options.placements ?? PLAYGROUND_AI_DOODLE_PLACEMENTS\n )\n );\n const accentPlacements = sortDoodlePatternPlacementsByPosition(\n mutateDoodlePatternPlacements(options.accentPlacements ?? [])\n );\n const renderedPlacements = placements\n .map((placement) => renderDoodlePatternPlacement(placement, iconSize))\n .join(\"\");\n const renderedAccentPlacements = accentPlacements\n .map((placement) => renderDoodlePatternPlacement(placement, iconSize))\n .join(\"\");\n\n return `<svg xmlns='http://www.w3.org/2000/svg' width='${renderWidth}' height='${renderHeight}' viewBox='0 0 ${width} ${height}'><g fill='none' stroke='${stroke.primary}' stroke-opacity='${stroke.primaryOpacity}' stroke-width='${stroke.primaryWidth}' stroke-linecap='round' stroke-linejoin='round'>${renderedPlacements}</g><g fill='none' stroke='${stroke.accent}' stroke-opacity='${stroke.accentOpacity}' stroke-width='${stroke.accentWidth}' stroke-linecap='round' stroke-linejoin='round'>${renderedAccentPlacements}</g></svg>`;\n};\n\nexport const toDoodlePatternBackgroundUrl = (svg: string): string =>\n `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\")`;\n","// Generated by scripts/generateDoodlePattern.mjs. Do not edit manually.\n\nexport const DOODLE_PATTERN_MASK_URL = \"url(\\\"data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'1560'%20height%3D'750'%20viewBox%3D'0%200%20520%20250'%3E%3Cg%20fill%3D'none'%20stroke%3D'%23000'%20stroke-opacity%3D'1'%20stroke-width%3D'1.55'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Csvg%20x%3D'-10'%20y%3D'215'%20width%3D'51.919999999999995'%20height%3D'51.919999999999995'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-8'%20y%3D'100'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-2'%20y%3D'-2'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-2'%20y%3D'188'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'-1'%20y%3D'151'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'2'%20y%3D'32'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'2'%20y%3D'79'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'4'%20y%3D'72'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'8'%20y%3D'11'%20width%3D'25.52'%20height%3D'25.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M9%205h18l8%208v23H9Z'%2F%3E%3Cpath%20d%3D'M27%205v9h8M15%2021h14M15%2029h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'9'%20y%3D'135'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'12'%20y%3D'83'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M22%206L29%2015V28L33%2036L26%2030H18L11%2036L15%2028V15Z'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'21'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M19%2034l3%204M25%2034l-3%204M22%2030v4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'14'%20y%3D'121'%20width%3D'24.200000000000003'%20height%3D'24.200000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-19%2022%2022)'%3E%3Cpath%20d%3D'M14%204h16a4%204%200%200%201%204%204v28a4%204%200%200%201-4%204H14a4%204%200%200%201-4-4V8a4%204%200%200%201%204-4Z'%2F%3E%3Cpath%20d%3D'M18%209h8M14%2032h16'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'16'%20y%3D'58'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M7%2022h30M22%207c6%208%206%2022%200%2030M22%207c-6%208-6%2022%200%2030M11%2013c6%203%2016%203%2022%200M11%2031c6-3%2016-3%2022%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'16'%20y%3D'212'%20width%3D'25.52'%20height%3D'25.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'22'%20y%3D'29'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'22'%20y%3D'165'%20width%3D'54.56'%20height%3D'54.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v11H8ZM8%2024h28v11H8Z'%2F%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'14'%20cy%3D'29'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'24'%20y%3D'-2'%20width%3D'66.88'%20height%3D'33.44'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-35%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ei%26%23947%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%238706%3B%3Ctspan%20baseline-shift%3D'sub'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%23968%3B%3Dm%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'24'%20y%3D'113'%20width%3D'59.84'%20height%3D'29.92'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'10'%20font-weight%3D'300'%3Ey%3D%26%23963%3B(Wx%2Bb)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'33'%20y%3D'5'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'35'%20y%3D'91'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'36'%20y%3D'232'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'42'%20y%3D'58'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'43'%20y%3D'146'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'43'%20y%3D'219'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M14%2016h16v15a8%208%200%200%201-16%200Z'%2F%3E%3Cpath%20d%3D'M18%2016v-4h8v4M9%2022h5M30%2022h5M9%2030h5M30%2030h5M13%2011l-5-5M31%2011l5-5'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'48'%20y%3D'48'%20width%3D'46.2'%20height%3D'46.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'52'%20y%3D'227'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'57'%20y%3D'132'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h10v8H6ZM28%2012h10v8H28ZM17%2026h10v8H17Z'%2F%3E%3Cpath%20d%3D'M16%2016h12M22%2020v6'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'26'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'67'%20y%3D'90'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'69'%20y%3D'151'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'73'%20y%3D'112'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'74'%20y%3D'12'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'75'%20y%3D'191'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'76'%20y%3D'144'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2031c7%200%2010-2%2014-9%204-7%207-9%2014-9'%2F%3E%3Cpath%20d%3D'M11%2031h5M30%2013h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'77'%20y%3D'31'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-17%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'78'%20y%3D'216'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v24H6Z'%2F%3E%3Cpath%20d%3D'M12%2019h3M20%2019h3M28%2019h3M12%2027h3M20%2027h12M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'82'%20y%3D'175'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'84'%20y%3D'229'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'93'%20y%3D'83'%20width%3D'44.88'%20height%3D'44.88'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'3'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(60%2022%2022)'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(-60%2022%2022)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'94'%20y%3D'232'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'95'%20y%3D'127'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%207h30v30H7ZM7%2017h30M7%2027h30M17%207v30M27%207v30'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'96'%20y%3D'5'%20width%3D'41.8'%20height%3D'41.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M8%208h26a7%207%200%200%201%207%207v13a7%207%200%200%201-7%207h-8l-8%207v-7H8a7%207%200%200%201-7-7V15a7%207%200%200%201%207-7Z'%2F%3E%3Cpath%20d%3D'M11%2019h18M11%2027h11'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'100'%20y%3D'49'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(27%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'101'%20y%3D'201'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'104'%20y%3D'172'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h30v20H6Z'%2F%3E%3Cpath%20d%3D'M36%2018h5v8h-5'%2F%3E%3Cpath%20d%3D'M12%2022l12-6-4%205h12l-13%207%204-6Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'106'%20y%3D'195'%20width%3D'66.88'%20height%3D'33.44'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(3%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ei%26%23947%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%238706%3B%3Ctspan%20baseline-shift%3D'sub'%20font-size%3D'6'%3E%26%23956%3B%3C%2Ftspan%3E%26%23968%3B%3Dm%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'112'%20y%3D'134'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'16'%20font-weight%3D'300'%3Etanh%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'114'%20y%3D'154'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(30%2022%2022)'%3E%3Cpath%20d%3D'M22%204l7%204v8l-7%204-7-4V8ZM11%2024l7%204v8l-7%204-7-4v-8ZM33%2024l7%204v8l-7%204-7-4v-8Z'%2F%3E%3Cpath%20d%3D'M19%2021l-3%205M25%2021l3%205M20%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'115'%20y%3D'229'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v20H6Z'%2F%3E%3Cpath%20d%3D'M11%2017h5v8h-5ZM20%2017h5v8h-5ZM29%2017h5v8h-5Z'%2F%3E%3Cpath%20d%3D'M10%208v4M16%208v4M22%208v4M28%208v4M34%208v4M10%2032v4M16%2032v4M22%2032v4M28%2032v4M34%2032v4'%2F%3E%3Cpath%20d%3D'M17%2032v3h10v-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'116'%20y%3D'68'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M31%206c-4-1-8%200-11%203-2%202-3%205-2%208L6%2029l5%205%2012-12c3%201%206%200%208-2%203-3%204-7%203-11l-6%206-4-4Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'118'%20y%3D'121'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-17%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'125'%20y%3D'138'%20width%3D'38.72'%20height%3D'38.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'125'%20y%3D'166'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'130'%20y%3D'165'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'132'%20y%3D'57'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'132'%20y%3D'115'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'133'%20y%3D'67'%20width%3D'36.96'%20height%3D'18.48'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(3%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'134'%20y%3D'2'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'141'%20y%3D'218'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-15%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'142'%20y%3D'82'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'149'%20y%3D'-1'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'150'%20y%3D'150'%20width%3D'47.52'%20height%3D'47.52'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Cpath%20d%3D'M22%206l16%209v18l-16%209-16-9V15Z'%2F%3E%3Cpath%20d%3D'M6%2015l16%209%2016-9M22%2024v18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'23'%20width%3D'36.08'%20height%3D'36.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M14%209c-6%200-10%204-10%2010%200%203%201%205%203%207-1%205%203%209%208%209%203%200%205-1%207-3%202%202%204%203%207%203%205%200%209-4%208-9%202-2%203-4%203-7%200-6-4-10-10-10-3%200-6%201-8%203-2-2-5-3-8-3Z'%2F%3E%3Cpath%20d%3D'M22%2012v20M12%2017c4%200%207%202%2010%206M32%2017c-4%200-7%202-10%206M12%2027c4-1%207%200%2010%203M32%2027c-4-1-7%200-10%203'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'125'%20width%3D'61.599999999999994'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2044%2022)'%3E%3Ctext%20x%3D'43'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Esoftmax%3D%3C%2Ftext%3E%3Ctext%20x%3D'55'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ee%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M44%2023h22'%2F%3E%3Ctext%20x%3D'55'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%23931%3Be%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'151'%20y%3D'232'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(5%2022%2022)'%3E%3Cpath%20d%3D'M14%209c-6%200-10%204-10%2010%200%203%201%205%203%207-1%205%203%209%208%209%203%200%205-1%207-3%202%202%204%203%207%203%205%200%209-4%208-9%202-2%203-4%203-7%200-6-4-10-10-10-3%200-6%201-8%203-2-2-5-3-8-3Z'%2F%3E%3Cpath%20d%3D'M22%2012v20M12%2017c4%200%207%202%2010%206M32%2017c-4%200-7%202-10%206M12%2027c4-1%207%200%2010%203M32%2027c-4-1-7%200-10%203'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'158'%20y%3D'197'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'159'%20y%3D'-15'%20width%3D'52.8'%20height%3D'52.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'163'%20y%3D'113'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'170'%20y%3D'67'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'176'%20y%3D'145'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(14%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'176'%20y%3D'222'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'177'%20y%3D'53'%20width%3D'40.480000000000004'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2044%2022)'%3E%3Ctext%20x%3D'43'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Esoftmax%3D%3C%2Ftext%3E%3Ctext%20x%3D'55'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3Ee%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'6'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M44%2023h22'%2F%3E%3Ctext%20x%3D'55'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%23931%3Be%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3Ex%3C%2Ftspan%3E%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'187'%20y%3D'90'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'190'%20y%3D'112'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v24H6Z'%2F%3E%3Cpath%20d%3D'M12%2019h3M20%2019h3M28%2019h3M12%2027h3M20%2027h12M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'190'%20y%3D'207'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'194'%20y%3D'183'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'198'%20y%3D'56'%20width%3D'63.36'%20height%3D'31.68'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(4%2044%2022)'%3E%3Ctext%20x%3D'39'%20y%3D'25'%20text-anchor%3D'end'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'7.5'%20font-weight%3D'300'%3Eattn%3D%3C%2Ftext%3E%3Ctext%20x%3D'52'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3EQK%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3ET%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M41%2023h22'%2F%3E%3Ctext%20x%3D'52'%20y%3D'34'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.48'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238730%3Bd%3C%2Ftext%3E%3Ctext%20x%3D'66'%20y%3D'25'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.46'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3EV%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'202'%20y%3D'100'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-30%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'202'%20y%3D'221'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'203'%20y%3D'5'%20width%3D'55.44'%20height%3D'55.44'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v20H8Z'%2F%3E%3Cpath%20d%3D'M4%2035h36M15%2029h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'204'%20y%3D'71'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'204'%20y%3D'157'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'212'%20y%3D'140'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(21%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'218'%20y%3D'170'%20width%3D'41.36'%20height%3D'41.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M5%2010h13c3%200%204%202%204%204%200-2%201-4%204-4h13v26H27c-3%200-5%202-5%204-1-2-2-4-5-4H5Z'%2F%3E%3Cpath%20d%3D'M22%2014v26'%2F%3E%3Cpath%20d%3D'M10%2017h8M10%2023h8M10%2029h8M26%2017h8M26%2023h8M26%2029h8'%2F%3E%3Cpath%20d%3D'M5%2014H2v26h15c3%200%204%201%205%203%201-2%202-3%205-3h15V14h-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'218'%20y%3D'230'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(5%2022%2022)'%3E%3Cpath%20d%3D'M5%208h32v25H5Z'%2F%3E%3Cpath%20d%3D'M11%2017l6%204-6%205M21%2027h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'222'%20y%3D'158'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'224'%20y%3D'128'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(18%2022%2022)'%3E%3Cg%20transform%3D'translate(2%202)%20scale(1.6667)'%3E%3Cpath%20d%3D'M10.3%204.3c.4-1.7%203-1.7%203.4%200%20.3%201.1%201.6%201.7%202.6%201.1%201.5-.9%203.3.8%202.4%202.4-.6%201%200%202.3%201.1%202.6%201.7.4%201.7%203%200%203.4-1.1.3-1.7%201.6-1.1%202.6.9%201.5-.8%203.3-2.4%202.4-1-.6-2.3%200-2.6%201.1-.4%201.7-3%201.7-3.4%200-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1%200-2.3-1.1-2.6-1.7-.4-1.7-3%200-3.4%201.1-.3%201.7-1.6%201.1-2.6-.9-1.5.8-3.3%202.4-2.4%201%20.6%202.3%200%202.6-1.1Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'229'%20y%3D'116'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'230'%20y%3D'215'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'238'%20y%3D'101'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M10%2010h10c0-5%208-5%208%200h8v9c5%200%205%208%200%208v9h-9c0-5-8-5-8%200h-9v-9c5%200%205-8%200-8Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'244'%20y%3D'151'%20width%3D'10.559999999999999'%20height%3D'10.559999999999999'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'249'%20y%3D'121'%20width%3D'29.040000000000003'%20height%3D'29.040000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M14%2016h16v15a8%208%200%200%201-16%200Z'%2F%3E%3Cpath%20d%3D'M18%2016v-4h8v4M9%2022h5M30%2022h5M9%2030h5M30%2030h5M13%2011l-5-5M31%2011l5-5'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'24'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'250'%20y%3D'55'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'251'%20y%3D'221'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'254'%20y%3D'4'%20width%3D'21.119999999999997'%20height%3D'21.119999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'256'%20y%3D'149'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-14%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'258'%20y%3D'49'%20width%3D'8.8'%20height%3D'8.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'258'%20y%3D'192'%20width%3D'102.96000000000001'%20height%3D'34.32'%20viewBox%3D'0%200%20132%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-2%2066%2022)'%3E%3Ctext%20x%3D'6'%20y%3D'26'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3Ei%26%238463%3B%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238706%3B%26%23968%3B%3C%2Ftext%3E%3Cpath%20d%3D'M20%2023h20'%2F%3E%3Ctext%20x%3D'30'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238706%3Bt%3C%2Ftext%3E%3Ctext%20x%3D'48'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3E%3D-%3C%2Ftext%3E%3Ctext%20x%3D'66'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E%26%238463%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3E2%3C%2Ftspan%3E%3C%2Ftext%3E%3Cpath%20d%3D'M56%2023h20'%2F%3E%3Ctext%20x%3D'66'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8'%20font-weight%3D'300'%3E2m%3C%2Ftext%3E%3Ctext%20x%3D'81'%20y%3D'26'%20text-anchor%3D'start'%20fill%3D'none'%20stroke-width%3D'0.44'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'8.5'%20font-weight%3D'300'%3E%26%238711%3B%3Ctspan%20baseline-shift%3D'super'%20font-size%3D'5.5'%3E2%3C%2Ftspan%3E%26%23968%3B%2BV%26%23968%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'262'%20y%3D'95'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-21%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'264'%20y%3D'60'%20width%3D'31.68'%20height%3D'31.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'268'%20y%3D'29'%20width%3D'8.8'%20height%3D'8.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M5%2010h13c3%200%204%202%204%204%200-2%201-4%204-4h13v26H27c-3%200-5%202-5%204-1-2-2-4-5-4H5Z'%2F%3E%3Cpath%20d%3D'M22%2014v26'%2F%3E%3Cpath%20d%3D'M10%2017h8M10%2023h8M10%2029h8M26%2017h8M26%2023h8M26%2029h8'%2F%3E%3Cpath%20d%3D'M5%2014H2v26h15c3%200%204%201%205%203%201-2%202-3%205-3h15V14h-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'268'%20y%3D'238'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M9%205h18l8%208v23H9Z'%2F%3E%3Cpath%20d%3D'M27%205v9h8M15%2021h14M15%2029h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'270'%20y%3D'160'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M8%209h28v20H8Z'%2F%3E%3Cpath%20d%3D'M4%2035h36M15%2029h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'12'%20width%3D'51.919999999999995'%20height%3D'51.919999999999995'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M11%2011h22v22H11Z'%2F%3E%3Cpath%20d%3D'M16%206v5M22%206v5M28%206v5M16%2033v5M22%2033v5M28%2033v5M6%2016h5M6%2022h5M6%2028h5M33%2016h5M33%2022h5M33%2028h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'116'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'278'%20y%3D'180'%20width%3D'25.08'%20height%3D'25.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'280'%20y%3D'-4'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'286'%20y%3D'138'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'288'%20y%3D'78'%20width%3D'49.28'%20height%3D'49.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cellipse%20cx%3D'22'%20cy%3D'11'%20rx%3D'15'%20ry%3D'6'%2F%3E%3Cpath%20d%3D'M7%2011v20c0%203%207%206%2015%206s15-3%2015-6V11M7%2021c0%203%207%206%2015%206s15-3%2015-6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'296'%20y%3D'158'%20width%3D'32.56'%20height%3D'32.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M22%204l7%204v8l-7%204-7-4V8ZM11%2024l7%204v8l-7%204-7-4v-8ZM33%2024l7%204v8l-7%204-7-4v-8Z'%2F%3E%3Cpath%20d%3D'M19%2021l-3%205M25%2021l3%205M20%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'300'%20y%3D'62'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'306'%20y%3D'218'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'317'%20y%3D'119'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M8%2033V11M8%2033h29M14%2027l7-8%206%205%208-12'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'19'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'24'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'35'%20cy%3D'12'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'318'%20y%3D'-2'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'319'%20y%3D'154'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'325'%20y%3D'35'%20width%3D'35.2'%20height%3D'35.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M15%2013l-7%207%207%207M27%2013l7%207-7%207M23%2010l-5%2020'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'333'%20y%3D'220'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M11%2011h22v22H11Z'%2F%3E%3Cpath%20d%3D'M16%206v5M22%206v5M28%206v5M16%2033v5M22%2033v5M28%2033v5M6%2016h5M6%2022h5M6%2028h5M33%2016h5M33%2022h5M33%2028h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'65'%20width%3D'29.92'%20height%3D'29.92'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h32v20H6Z'%2F%3E%3Cpath%20d%3D'M11%2017h5v8h-5ZM20%2017h5v8h-5ZM29%2017h5v8h-5Z'%2F%3E%3Cpath%20d%3D'M10%208v4M16%208v4M22%208v4M28%208v4M34%208v4M10%2032v4M16%2032v4M22%2032v4M28%2032v4M34%2032v4'%2F%3E%3Cpath%20d%3D'M17%2032v3h10v-3'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'153'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h30v20H6Z'%2F%3E%3Cpath%20d%3D'M36%2018h5v8h-5'%2F%3E%3Cpath%20d%3D'M12%2022l12-6-4%205h12l-13%207%204-6Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'335'%20y%3D'202'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'336'%20y%3D'185'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M15%2038V24h14v14'%2F%3E%3Cpath%20d%3D'M18%2024C11%2019%208%2014%208%208M21%2024C18%2017%2018%2012%2018%207M24%2024C26%2017%2026%2012%2026%207M27%2024C34%2019%2036%2014%2036%208'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'18'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'26'%20cy%3D'7'%20r%3D'3'%2F%3E%3Ccircle%20cx%3D'36'%20cy%3D'8'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M12%2034h20'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'342'%20y%3D'232'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-11%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'348'%20y%3D'136'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'3'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(60%2022%2022)'%2F%3E%3Cellipse%20cx%3D'22'%20cy%3D'22'%20rx%3D'16'%20ry%3D'6'%20transform%3D'rotate(-60%2022%2022)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'348'%20y%3D'150'%20width%3D'9.68'%20height%3D'9.68'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'350'%20y%3D'18'%20width%3D'33.44'%20height%3D'33.44'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'32'%20cy%3D'20'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'32'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M16%2012c8%200%208%208%2012%208M16%2032c8%200%208-12%2012-12'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'352'%20y%3D'86'%20width%3D'43.12'%20height%3D'43.12'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M5%208h32v25H5Z'%2F%3E%3Cpath%20d%3D'M11%2017l6%204-6%205M21%2027h10'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'355'%20y%3D'172'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'360'%20y%3D'160'%20width%3D'54.56'%20height%3D'54.56'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M16%207h16M20%207v10L11%2034a4%204%200%200%200%204%206h18a4%204%200%200%200%204-6l-9-17V7M17%2028h14'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'360'%20y%3D'206'%20width%3D'105.6'%20height%3D'52.8'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-4%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'362'%20y%3D'55'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-7%2022%2022)'%3E%3Cpath%20d%3D'M8%2011h26a8%208%200%200%201%208%208v12a8%208%200%200%201-8%208H8a8%208%200%200%201-8-8V19a8%208%200%200%201%208-8Z'%2F%3E%3Cpath%20d%3D'M14%208V4M30%208V4'%2F%3E%3Cpath%20d%3D'M11%2030h20'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'23'%20r%3D'2.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'364'%20y%3D'217'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'370'%20y%3D'-4'%20width%3D'26.4'%20height%3D'26.4'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M31%206c-4-1-8%200-11%203-2%202-3%205-2%208L6%2029l5%205%2012-12c3%201%206%200%208-2%203-3%204-7%203-11l-6%206-4-4Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'372'%20y%3D'237'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M11%2032V17h22v15'%2F%3E%3Cpath%20d%3D'M11%2017h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'374'%20y%3D'125'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(120%2022%2022)'%3E%3Cpath%20d%3D'M22%206L29%2015V28L33%2036L26%2030H18L11%2036L15%2028V15Z'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'21'%20r%3D'3'%2F%3E%3Cpath%20d%3D'M19%2034l3%204M25%2034l-3%204M22%2030v4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'377'%20y%3D'71'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'377'%20y%3D'81'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-5%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'379'%20y%3D'61'%20width%3D'54.56'%20height%3D'27.28'%20viewBox%3D'0%200%2088%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-6%2044%2022)'%3E%3Ctext%20x%3D'44'%20y%3D'26'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'9'%20font-weight%3D'300'%3EL%3D-%26%23931%3By%20log(p)%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'381'%20y%3D'147'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c3%200%204-19%209-19%206%200%207%2017%2017%2017'%2F%3E%3Cpath%20d%3D'M19%2015v19'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'383'%20y%3D'59'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cg%20transform%3D'translate(2%202)%20scale(1.6667)'%3E%3Cpath%20d%3D'M10.3%204.3c.4-1.7%203-1.7%203.4%200%20.3%201.1%201.6%201.7%202.6%201.1%201.5-.9%203.3.8%202.4%202.4-.6%201%200%202.3%201.1%202.6%201.7.4%201.7%203%200%203.4-1.1.3-1.7%201.6-1.1%202.6.9%201.5-.8%203.3-2.4%202.4-1-.6-2.3%200-2.6%201.1-.4%201.7-3%201.7-3.4%200-.3-1.1-1.6-1.7-2.6-1.1-1.5.9-3.3-.8-2.4-2.4.6-1%200-2.3-1.1-2.6-1.7-.4-1.7-3%200-3.4%201.1-.3%201.7-1.6%201.1-2.6-.9-1.5.8-3.3%202.4-2.4%201%20.6%202.3%200%202.6-1.1Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'384'%20y%3D'37'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2013c7%208%2011%2014%2025%2019'%2F%3E%3Cpath%20d%3D'M10%2013h4M31%2032h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'390'%20y%3D'228'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'391'%20y%3D'105'%20width%3D'19.36'%20height%3D'19.36'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'35'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.65'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%20font-size%3D'34'%20font-weight%3D'400'%3E%26%23955%3B%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'391'%20y%3D'126'%20width%3D'22.880000000000003'%20height%3D'22.880000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M7%2022h30M22%207c6%208%206%2022%200%2030M22%207c-6%208-6%2022%200%2030M11%2013c6%203%2016%203%2022%200M11%2031c6-3%2016-3%2022%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'399'%20y%3D'159'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'15'%2F%3E%3Cpath%20d%3D'M22%207v15h15'%2F%3E%3Cpath%20d%3D'M22%2022L12%2034'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'401'%20y%3D'86'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2013c4%200%205%2018%2010%2018s6-18%2010-18%205%2018%208%2018'%2F%3E%3Cpath%20d%3D'M9%2013h4M31%2031h4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'402'%20y%3D'21'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'402'%20y%3D'135'%20width%3D'52.8'%20height%3D'52.8'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-29%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'18'%20font-weight%3D'300'%3Esin%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'405'%20y%3D'2'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'406'%20y%3D'172'%20width%3D'39.6'%20height%3D'39.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-16%2022%2022)'%3E%3Cpath%20d%3D'M8%2014h28M8%2024h28M8%2034h28'%2F%3E%3Ccircle%20cx%3D'17'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'24'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'34'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'23'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(9%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'87'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Ctext%20x%3D'18'%20y%3D'30'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'20'%20font-weight%3D'300'%3Ee%3C%2Ftext%3E%3Ctext%20x%3D'30'%20y%3D'18'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'11'%20font-weight%3D'300'%3Ex%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'410'%20y%3D'94'%20width%3D'45.760000000000005'%20height%3D'45.760000000000005'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2012h12c8%200%2014%204%2014%2010s-6%2010-14%2010H9Z'%2F%3E%3Cpath%20d%3D'M3%2017h6M3%2027h6M35%2022h6'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'17'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'15'%20cy%3D'27'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'411'%20y%3D'48'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(6%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'28'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'16'%20font-weight%3D'300'%3Etanh%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'419'%20y%3D'132'%20width%3D'17.6'%20height%3D'17.6'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'423'%20y%3D'7'%20width%3D'56.32'%20height%3D'56.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(7%2022%2022)'%3E%3Cpath%20d%3D'M12%2010h20a6%206%200%200%201%206%206v14a6%206%200%200%201-6%206H12a6%206%200%200%201-6-6V16a6%206%200%200%201%206-6Z'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'20'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'20'%20r%3D'2.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'29'%20r%3D'2.5'%2F%3E%3Cpath%20d%3D'M18%2021l3%206M26%2021l-3%206'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'428'%20y%3D'68'%20width%3D'20.240000000000002'%20height%3D'20.240000000000002'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-6%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30v26H7Z'%2F%3E%3Cpath%20d%3D'M7%2016h30M17%2016v19M27%2016v19M12%2012h2M18%2012h2M24%2012h2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'435'%20y%3D'-2'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(2%2022%2022)'%3E%3Cpath%20d%3D'M7%207h30v30H7ZM7%2017h30M7%2027h30M17%207v30M27%207v30'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'438'%20y%3D'238'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(8%2022%2022)'%3E%3Cpath%20d%3D'M6%2022c0-5%204-9%209-9%204%200%207%203%2010%209%203%206%206%209%2010%209%205%200%209-4%209-9s-4-9-9-9c-4%200-7%203-10%209-3%206-6%209-10%209-5%200-9-4-9-9Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'444'%20y%3D'122'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Ccircle%20cx%3D'14'%20cy%3D'14'%20r%3D'4'%2F%3E%3Ccircle%20cx%3D'30'%20cy%3D'30'%20r%3D'4'%2F%3E%3Cpath%20d%3D'M33%2011L11%2033'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'444'%20y%3D'151'%20width%3D'18.48'%20height%3D'18.48'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M10%2034c5%200%206-20%2012-20s7%2020%2012%2020'%2F%3E%3Cpath%20d%3D'M22%2014v21'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'447'%20y%3D'178'%20width%3D'48.400000000000006'%20height%3D'48.400000000000006'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-21%2022%2022)'%3E%3Cpath%20d%3D'M7%2022h30M22%207v30'%2F%3E%3Cpath%20d%3D'M8%2031c7%200%2010-2%2014-9%204-7%207-9%2014-9'%2F%3E%3Cpath%20d%3D'M11%2031h5M30%2013h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'449'%20y%3D'84'%20width%3D'14.08'%20height%3D'14.08'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-10%2022%2022)'%3E%3Cpath%20d%3D'M17%208h-7v24h7M27%208h7v24h-7'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'457'%20y%3D'58'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M9%2020c8-8%2018-8%2026%200M14%2026c5-5%2011-5%2016%200M19%2032c2-2%204-2%206%200'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'458'%20y%3D'125'%20width%3D'16.72'%20height%3D'16.72'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M13%2031h20a7%207%200%200%200%201-14%2010%2010%200%200%200-19-3%208%208%200%200%200-2%2017Z'%2F%3E%3Cpath%20d%3D'M22%2018v11M18%2025l4%204%204-4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'458'%20y%3D'143'%20width%3D'29.040000000000003'%20height%3D'29.040000000000003'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M8%2033V11M8%2033h29M14%2027l7-8%206%205%208-12'%2F%3E%3Ccircle%20cx%3D'21'%20cy%3D'19'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'27'%20cy%3D'24'%20r%3D'2'%2F%3E%3Ccircle%20cx%3D'35'%20cy%3D'12'%20r%3D'2'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'459'%20y%3D'222'%20width%3D'30.799999999999997'%20height%3D'30.799999999999997'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'464'%20y%3D'78'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-16%2022%2022)'%3E%3Cpath%20d%3D'M22%2013v18M13%2022h18'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'465'%20y%3D'0'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-12%2022%2022)'%3E%3Cpath%20d%3D'M8%208h26a7%207%200%200%201%207%207v13a7%207%200%200%201-7%207h-8l-8%207v-7H8a7%207%200%200%201-7-7V15a7%207%200%200%201%207-7Z'%2F%3E%3Cpath%20d%3D'M11%2019h18M11%2027h11'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'468'%20y%3D'168'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-13%2022%2022)'%3E%3Ccircle%20cx%3D'18'%20cy%3D'18'%20r%3D'10'%2F%3E%3Cpath%20d%3D'M25%2025l11%2011M14%2018h8M14%2023h5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'471'%20y%3D'114'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M31%208H10l10%2012-10%2012h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'473'%20y%3D'38'%20width%3D'24.64'%20height%3D'24.64'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-9%2022%2022)'%3E%3Cpath%20d%3D'M6%2012h10v8H6ZM28%2012h10v8H28ZM17%2026h10v8H17Z'%2F%3E%3Cpath%20d%3D'M16%2016h12M22%2020v6'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'28'%20cy%3D'16'%20r%3D'1.5'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'26'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'475'%20y%3D'85'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M7%2035V9M7%2035h30'%2F%3E%3Cpath%20d%3D'M9%2034c4%200%205-13%2010-13s5%2013%208%2013c2%200%203-11%207-11%203%200%203%2011%204%2011'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'479'%20y%3D'59'%20width%3D'34.32'%20height%3D'34.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'482'%20y%3D'204'%20width%3D'27.28'%20height%3D'27.28'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M14%204h16a4%204%200%200%201%204%204v28a4%204%200%200%201-4%204H14a4%204%200%200%201-4-4V8a4%204%200%200%201%204-4Z'%2F%3E%3Cpath%20d%3D'M18%209h8M14%2032h16'%2F%3E%3Ccircle%20cx%3D'22'%20cy%3D'36'%20r%3D'1.5'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'486'%20y%3D'14'%20width%3D'23.76'%20height%3D'23.76'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(17%2022%2022)'%3E%3Cpath%20d%3D'M7%209h30L25%2023v11l-6%203V23Z'%2F%3E%3Cpath%20d%3D'M14%2014h16'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'490'%20y%3D'151'%20width%3D'15.84'%20height%3D'15.84'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M8%205l25%2013-17%206-7%2017L8%205Z'%2F%3E%3Cpath%20d%3D'M18%2025l12%2012'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'498'%20y%3D'133'%20width%3D'11.440000000000001'%20height%3D'11.440000000000001'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%3E%3Ccircle%20cx%3D'22'%20cy%3D'22'%20r%3D'4'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'500'%20y%3D'34'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(12%2022%2022)'%3E%3Cpath%20d%3D'M29%208c-8-2-12%202-13%2010l-3%2017M8%2019h19M26%2025l6%207M32%2025l-6%207'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'500'%20y%3D'134'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(10%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'501'%20y%3D'193'%20width%3D'22'%20height%3D'22'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-8%2022%2022)'%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edy%3C%2Ftext%3E%3Cpath%20d%3D'M8%2023h28'%2F%3E%3Ctext%20x%3D'22'%20y%3D'38'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.55'%20font-family%3D'ui-sans-serif%2Csystem-ui%2Csans-serif'%20font-size%3D'12'%20font-weight%3D'300'%3Edx%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'502'%20y%3D'83'%20width%3D'13.2'%20height%3D'13.2'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(13%2022%2022)'%3E%3Cpath%20d%3D'M7%2022c8-10%2017%2010%2025%200'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'502'%20y%3D'184'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(15%2022%2022)'%3E%3Cpath%20d%3D'M12%2018h22M12%2026h22'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'506'%20y%3D'226'%20width%3D'12.32'%20height%3D'12.32'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(-18%2022%2022)'%3E%3Cpath%20d%3D'M12%208H8v28h4M32%208h4v28h-4'%2F%3E%3Ctext%20x%3D'22'%20y%3D'17'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E101%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'27'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E010%3C%2Ftext%3E%3Ctext%20x%3D'22'%20y%3D'37'%20text-anchor%3D'middle'%20fill%3D'none'%20stroke-width%3D'0.5'%20font-family%3D'ui-monospace%2CSFMono-Regular%2CMenlo%2Cmonospace'%20font-size%3D'8.5'%20font-weight%3D'300'%3E111%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'508'%20y%3D'-2'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(16%2022%2022)'%3E%3Cpath%20d%3D'M10%2014h26M16%2014v20M30%2014v15c0%204%203%206%207%204'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3Csvg%20x%3D'509'%20y%3D'112'%20width%3D'14.96'%20height%3D'14.96'%20viewBox%3D'0%200%2044%2044'%20overflow%3D'visible'%3E%3Cg%20transform%3D'rotate(11%2022%2022)'%3E%3Cpath%20d%3D'M28%206c-8%200-8%208-8%2017s-1%2017-9%2017M19%207h9M10%2039h9'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%3C%2Fg%3E%3Cg%20fill%3D'none'%20stroke%3D'%23000'%20stroke-opacity%3D'1'%20stroke-width%3D'1.3'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3C%2Fg%3E%3C%2Fsvg%3E\\\")\";\n","import type { SxProps, Theme } from \"@mui/material/styles\";\nimport {\n DOODLE_PATTERN_TILE_HEIGHT,\n DOODLE_PATTERN_TILE_WIDTH,\n} from \"./doodlePattern\";\nimport { DOODLE_PATTERN_MASK_URL } from \"./generated/doodlePatternMask\";\n\nexport const doodlePatternCssVars = {\n \"--doodlePatternColor\":\n \"color-mix(in lab, var(--mui-palette-text-subscript) 75%, transparent 25%)\",\n} as const;\n\n/** Scaled tile size for compact surfaces such as modals. */\nexport const DOODLE_PATTERN_MODAL_MASK_SCALE = 0.7;\n\nexport const DOODLE_PATTERN_MODAL_MASK_SIZE = `${Math.round(\n DOODLE_PATTERN_TILE_WIDTH * DOODLE_PATTERN_MODAL_MASK_SCALE\n)}px ${Math.round(DOODLE_PATTERN_TILE_HEIGHT * DOODLE_PATTERN_MODAL_MASK_SCALE)}px`;\n\nexport type DoodlePatternBackgroundOptions = {\n repeat?: \"repeat\" | \"no-repeat\";\n size?: string;\n position?: string;\n};\n\nexport const getDoodlePatternBackgroundSx = (\n options: DoodlePatternBackgroundOptions = {}\n): SxProps<Theme> => {\n const tileSize = `${DOODLE_PATTERN_TILE_WIDTH}px ${DOODLE_PATTERN_TILE_HEIGHT}px`;\n const repeat = options.repeat ?? \"repeat\";\n const position =\n options.position ?? (repeat === \"no-repeat\" ? \"center\" : \"top left\");\n\n return {\n ...doodlePatternCssVars,\n backgroundColor: \"var(--doodlePatternColor)\",\n maskImage: DOODLE_PATTERN_MASK_URL,\n WebkitMaskImage: DOODLE_PATTERN_MASK_URL,\n maskRepeat: repeat,\n WebkitMaskRepeat: repeat,\n maskSize: options.size ?? tileSize,\n WebkitMaskSize: options.size ?? tileSize,\n maskPosition: position,\n WebkitMaskPosition: position,\n };\n};\n\nexport const getDoodlePatternModalBackgroundSx = (): SxProps<Theme> =>\n getDoodlePatternBackgroundSx({ size: DOODLE_PATTERN_MODAL_MASK_SIZE });\n","import type { SxProps, Theme } from '@mui/material/styles'\nimport { doodlePatternCssVars } from '@/patterns/doodlePatternStyles'\n\nexport const MUI_MODAL_PAPER_RADIUS = '20px'\n\nexport const muiModalRootSx: SxProps<Theme> = {\n ...doodlePatternCssVars,\n '--closeIconColor': 'var(--mui-palette-error-main)',\n '--bgC': 'var(--mui-palette-background-default)',\n '--shadow': 'var(--shadow-outset-1)',\n '--modalOverlayBg': 'radial-gradient(ellipse 120% 100% at 50% 50%, var(--bgC) 0%, transparent 70%)',\n}\n\n/** Internal paper chrome. Pass as the first `sx` array item so host `slotProps.container.sx` merges instead of replacing `&.MuiPaper-root`. */\nexport const muiModalPaperSx: SxProps<Theme> = {\n '&.MuiPaper-root': {\n boxShadow: 'var(--shadow)',\n backgroundColor: 'var(--bgC)',\n borderRadius: MUI_MODAL_PAPER_RADIUS,\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'var(--max-h)',\n maxWidth: 'var(--max-w)',\n padding: 0,\n paddingTop: 0,\n width: '-webkit-fill-available',\n height: '-webkit-fill-available',\n },\n}\n","'use client'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Box, Stack } from '@/ele/Box'\nimport { Typography } from '@/ele/Typography'\nimport { Button, IconButton } from '@/ele/Button'\nimport { FormHelperText, FormLabel } from '@/ele/Form'\nimport { LinearProgress } from '@/ele/Progress'\nimport { CloseIcon, CloudUploadIcon } from '@/icons/MuiIcon'\nimport { FileIcon, defaultStyles, type FileIconProps } from 'react-file-icon'\nimport {\n fileUploadButtonSx,\n fileUploadDropzoneSx,\n fileUploadIconWellSx,\n fileUploadItemSx,\n fileUploadLibIconSx,\n fileUploadRootSx,\n fileUploadThumbSx,\n fileUploadTileIconWellSx,\n fileUploadTileLibIconSx,\n fileUploadTileListSx,\n fileUploadTileMediaSx,\n fileUploadTileProgressSx,\n fileUploadTileRemoveSx,\n fileUploadTileSx,\n} from './theme'\nimport type { FileUploadItem, FileUploadProps } from './types'\nimport {\n createFileUploadItem,\n formatFileSize,\n isImageFile,\n resolveFileIconStyle,\n validateFiles,\n} from './utils'\n\nfunction mergeSx(\n ...parts: Array<FileUploadProps['sx'] | false | null | undefined>\n): FileUploadProps['sx'] {\n const out: unknown[] = []\n for (const p of parts) {\n if (!p) continue\n if (Array.isArray(p)) out.push(...p)\n else out.push(p)\n }\n return out as FileUploadProps['sx']\n}\n\n/**\n * Soft FileUpload dropzone + file list.\n *\n * **UseForm API:** controlled `value: FileUploadItem[]` / `onChange`.\n * Submit blobs with `value.map((i) => i.file)`. Drive progress from outside\n * by updating `progress` / `status` / `error` on the same items (stable `id`).\n *\n * Soft quiet 1px dashed border + elevated fill (EmptyState / Autocomplete glass).\n * `variant=\"button\"` = compact soft upload button (compound DropZoneButton parity).\n */\nexport const FileUpload = forwardRef<HTMLDivElement, FileUploadProps>(\n function FileUpload(props, ref) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n onRemove,\n onReject,\n multiple = true,\n accept,\n maxSize,\n maxFiles,\n disabled = false,\n hideDropzone = false,\n disableRemove = false,\n readOnly = false,\n label,\n name,\n helperText,\n error = false,\n required = false,\n variant = 'dropzone',\n itemVariant = 'row',\n buttonLabel = 'Upload file',\n dropzoneTitle = 'Drag & drop files here',\n dropzoneDescription = 'or click to browse',\n id: idProp,\n className,\n sx,\n 'data-testid': dataTestId = 'file-upload',\n } = props\n\n const reactId = useId()\n const inputId = idProp ?? `file-upload-${reactId}`\n const helperId = `${inputId}-helper`\n const inputRef = useRef<HTMLInputElement>(null)\n\n const isControlled = valueProp !== undefined\n const [uncontrolled, setUncontrolled] = useState<FileUploadItem[]>(\n () => defaultValue ?? [],\n )\n const items = useMemo(\n () => (isControlled ? (valueProp ?? []) : uncontrolled),\n [isControlled, valueProp, uncontrolled],\n )\n\n const [active, setActive] = useState(false)\n const dragDepth = useRef(0)\n\n const atCapacity = useMemo(() => {\n if (!multiple) return items.length >= 1\n if (maxFiles != null && maxFiles > 0) return items.length >= maxFiles\n return false\n }, [items.length, maxFiles, multiple])\n\n const commit = useCallback(\n (next: FileUploadItem[]) => {\n if (!isControlled) setUncontrolled(next)\n onChange?.(next)\n },\n [isControlled, onChange],\n )\n\n const ingest = useCallback(\n (fileList: FileList | File[]) => {\n if (disabled) return\n const incoming = Array.from(fileList)\n if (incoming.length === 0) return\n\n const { accepted, rejections } = validateFiles(incoming, {\n accept,\n maxSize,\n maxFiles,\n currentCount: items.length,\n multiple,\n })\n\n if (rejections.length > 0) {\n onReject?.(rejections)\n }\n\n if (accepted.length === 0) return\n\n const nextItems = accepted.map(createFileUploadItem)\n if (!multiple) {\n commit(nextItems.slice(0, 1))\n return\n }\n commit([...items, ...nextItems])\n },\n [\n accept,\n disabled,\n items,\n maxFiles,\n maxSize,\n multiple,\n onReject,\n commit,\n ],\n )\n\n const handleRemove = useCallback(\n (item: FileUploadItem) => {\n if (disabled) return\n const next = items.filter((i) => i.id !== item.id)\n commit(next)\n onRemove?.(item, next)\n if (inputRef.current) inputRef.current.value = ''\n },\n [commit, disabled, items, onRemove],\n )\n\n const openPicker = useCallback(() => {\n if (disabled || atCapacity) return\n inputRef.current?.click()\n }, [atCapacity, disabled])\n\n const onInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) ingest(e.target.files)\n // Allow re-selecting the same file name.\n e.target.value = ''\n },\n [ingest],\n )\n\n const onDragEnter = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (disabled || atCapacity) return\n dragDepth.current += 1\n setActive(true)\n },\n [atCapacity, disabled],\n )\n\n const onDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragDepth.current = Math.max(0, dragDepth.current - 1)\n if (dragDepth.current === 0) setActive(false)\n }, [])\n\n const onDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }, [])\n\n const onDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragDepth.current = 0\n setActive(false)\n if (disabled || atCapacity) return\n if (e.dataTransfer.files?.length) {\n ingest(e.dataTransfer.files)\n }\n },\n [atCapacity, disabled, ingest],\n )\n\n const queueOnly = readOnly || hideDropzone\n const removeDisabled = readOnly || disableRemove || disabled\n const showTrigger = !queueOnly && !atCapacity\n const isButton = variant === 'button'\n\n const fileInput = (\n <input\n ref={inputRef}\n id={inputId}\n name={name}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={onInputChange}\n style={{ display: 'none' }}\n aria-hidden\n tabIndex={-1}\n />\n )\n\n const dragHandlers = {\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n } as const\n\n return (\n <Box\n ref={ref}\n className={className}\n data-testid={dataTestId}\n data-variant={variant}\n data-readonly={readOnly || queueOnly ? 'true' : undefined}\n sx={mergeSx(fileUploadRootSx, sx) as never}\n >\n {label ? (\n <FormLabel\n htmlFor={showTrigger ? inputId : undefined}\n required={required}\n error={error}\n sx={{\n mb: 0.25,\n color: error ? 'error.main' : 'text.secondary',\n fontSize: '0.8rem',\n fontWeight: 600,\n }}\n >\n {label}\n </FormLabel>\n ) : null}\n\n {fileInput}\n\n {showTrigger ? (\n isButton ? (\n <Button\n type=\"button\"\n disableElevation\n disabled={disabled}\n aria-invalid={error || undefined}\n aria-describedby={helperText ? helperId : undefined}\n data-active={active ? 'true' : 'false'}\n data-error={error ? 'true' : 'false'}\n data-testid={`${dataTestId}-button`}\n startIcon={<CloudUploadIcon sx={{ fontSize: '1.15rem' }} />}\n onClick={openPicker}\n sx={fileUploadButtonSx}\n {...dragHandlers}\n >\n {buttonLabel}\n </Button>\n ) : (\n <Box\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n aria-describedby={helperText ? helperId : undefined}\n data-active={active ? 'true' : 'false'}\n data-error={error ? 'true' : 'false'}\n data-disabled={disabled ? 'true' : 'false'}\n data-testid={`${dataTestId}-dropzone`}\n sx={fileUploadDropzoneSx}\n onClick={openPicker}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openPicker()\n }\n }}\n {...dragHandlers}\n >\n <CloudUploadIcon\n aria-hidden\n sx={{ fontSize: 36, color: 'var(--fu-icon)', opacity: 0.9 }}\n />\n {typeof dropzoneTitle === 'string' ? (\n <Typography\n variant=\"subtitle2\"\n sx={{ m: 0, color: 'var(--fu-text)', fontWeight: 600 }}\n >\n {dropzoneTitle}\n </Typography>\n ) : (\n dropzoneTitle\n )}\n {dropzoneDescription ? (\n typeof dropzoneDescription === 'string' ? (\n <Typography\n variant=\"caption\"\n sx={{ m: 0, color: 'var(--fu-text-secondary)' }}\n >\n {dropzoneDescription}\n </Typography>\n ) : (\n dropzoneDescription\n )\n ) : null}\n </Box>\n )\n ) : null}\n\n {items.length > 0 ? (\n itemVariant === 'tile' ? (\n <Box\n component=\"ul\"\n data-testid={`${dataTestId}-list`}\n data-item-variant=\"tile\"\n sx={fileUploadTileListSx}\n >\n {items.map((item) => (\n <FileUploadListItem\n key={item.id}\n item={item}\n disabled={disabled}\n disableRemove={removeDisabled}\n onRemove={handleRemove}\n testId={`${dataTestId}-item`}\n itemVariant=\"tile\"\n />\n ))}\n </Box>\n ) : (\n <Stack\n component=\"ul\"\n spacing={1}\n data-testid={`${dataTestId}-list`}\n data-item-variant=\"row\"\n sx={{ m: 0, p: 0, listStyle: 'none' }}\n >\n {items.map((item) => (\n <FileUploadListItem\n key={item.id}\n item={item}\n disabled={disabled}\n disableRemove={removeDisabled}\n onRemove={handleRemove}\n testId={`${dataTestId}-item`}\n itemVariant=\"row\"\n />\n ))}\n </Stack>\n )\n ) : null}\n\n {helperText ? (\n <FormHelperText\n id={helperId}\n error={error}\n sx={{ mx: 0.5, mt: 0 }}\n >\n {helperText}\n </FormHelperText>\n ) : null}\n </Box>\n )\n },\n)\n\nfunction FileUploadTypeIcon({\n file,\n tile = false,\n}: {\n file: File\n tile?: boolean\n}) {\n const resolved = resolveFileIconStyle(\n file,\n defaultStyles as Record<string, Partial<FileIconProps> | undefined>,\n )\n const { extension, styleKey } = resolved\n const iconStyle = resolved.style as Partial<FileIconProps>\n\n return (\n <Box\n aria-hidden\n data-testid=\"file-upload-icon\"\n data-ext={extension || undefined}\n data-style-key={styleKey || undefined}\n sx={tile ? fileUploadTileIconWellSx : fileUploadIconWellSx}\n >\n <Box sx={tile ? fileUploadTileLibIconSx : fileUploadLibIconSx}>\n <FileIcon\n fold\n radius={3}\n extension={extension}\n {...iconStyle}\n />\n </Box>\n </Box>\n )\n}\n\n/**\n * Image/* → soft object-URL thumbnail; onError falls back to react-file-icon.\n * Non-images use react-file-icon + defaultStyles (extension / mime).\n * Object URLs revoked on file change / unmount.\n */\nfunction FileUploadThumb({\n file,\n tile = false,\n}: {\n file: File\n tile?: boolean\n}) {\n const [url, setUrl] = useState<string | null>(null)\n const [previewFailed, setPreviewFailed] = useState(false)\n\n useEffect(() => {\n setPreviewFailed(false)\n if (!isImageFile(file)) {\n setUrl(null)\n return\n }\n const objectUrl = URL.createObjectURL(file)\n setUrl(objectUrl)\n return () => {\n URL.revokeObjectURL(objectUrl)\n }\n }, [file])\n\n if (url && !previewFailed) {\n return (\n <Box\n component=\"img\"\n src={url}\n alt=\"\"\n data-testid=\"file-upload-thumb\"\n sx={tile ? fileUploadTileMediaSx : fileUploadThumbSx}\n onError={() => setPreviewFailed(true)}\n />\n )\n }\n\n return <FileUploadTypeIcon file={file} tile={tile} />\n}\n\ntype ListItemProps = {\n item: FileUploadItem\n disabled: boolean\n disableRemove?: boolean\n onRemove: (item: FileUploadItem) => void\n testId: string\n itemVariant: 'row' | 'tile'\n}\n\nfunction FileUploadListItem({\n item,\n disabled,\n disableRemove = false,\n onRemove,\n testId,\n itemVariant,\n}: ListItemProps) {\n if (itemVariant === 'tile') {\n return (\n <FileUploadTileItem\n item={item}\n disabled={disabled}\n disableRemove={disableRemove}\n onRemove={onRemove}\n testId={testId}\n />\n )\n }\n\n const status = item.status ?? (item.error ? 'error' : 'idle')\n const showProgress =\n status === 'uploading' ||\n (typeof item.progress === 'number' &&\n item.progress > 0 &&\n item.progress < 100 &&\n status !== 'error' &&\n status !== 'success')\n\n return (\n <Box\n component=\"li\"\n data-testid={testId}\n data-status={status}\n data-item-variant=\"row\"\n sx={fileUploadItemSx}\n >\n <FileUploadThumb file={item.file} />\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n noWrap\n title={item.file.name}\n sx={{ m: 0, fontWeight: 500, color: 'var(--fu-text)' }}\n >\n {item.file.name}\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{ m: 0, color: 'var(--fu-text-secondary)' }}\n >\n {formatFileSize(item.file.size)}\n {item.error ? ` · ${item.error}` : null}\n {status === 'success' && !item.error ? ' · Done' : null}\n </Typography>\n {showProgress ? (\n <LinearProgress\n variant=\"determinate\"\n value={Math.max(0, Math.min(100, item.progress ?? 0))}\n aria-label={`Upload progress ${item.progress ?? 0}%`}\n sx={{ mt: 0.75, height: 4, borderRadius: 2 }}\n />\n ) : null}\n {status === 'uploading' && item.progress == null ? (\n <LinearProgress\n aria-label=\"Uploading\"\n sx={{ mt: 0.75, height: 4, borderRadius: 2 }}\n />\n ) : null}\n </Box>\n {disableRemove ? null : (\n <IconButton\n size=\"small\"\n aria-label={`Remove ${item.file.name}`}\n disabled={disabled}\n onClick={() => onRemove(item)}\n sx={{\n flexShrink: 0,\n color: 'var(--fu-text-secondary)',\n p: 0.35,\n }}\n >\n <CloseIcon sx={{ fontSize: '1rem' }} />\n </IconButton>\n )}\n </Box>\n )\n}\n\n/** Square preview tile — hover shows circular white X at top-right. */\nfunction FileUploadTileItem({\n item,\n disabled,\n disableRemove = false,\n onRemove,\n testId,\n}: Omit<ListItemProps, 'itemVariant'>) {\n const status = item.status ?? (item.error ? 'error' : 'idle')\n const showProgress =\n status === 'uploading' ||\n (typeof item.progress === 'number' &&\n item.progress > 0 &&\n item.progress < 100 &&\n status !== 'error' &&\n status !== 'success')\n const indeterminate = status === 'uploading' && item.progress == null\n\n return (\n <Box\n component=\"li\"\n data-testid={testId}\n data-status={status}\n data-item-variant=\"tile\"\n title={item.file.name}\n sx={fileUploadTileSx}\n >\n <FileUploadThumb file={item.file} tile />\n {showProgress ? (\n <LinearProgress\n variant=\"determinate\"\n value={Math.max(0, Math.min(100, item.progress ?? 0))}\n aria-label={`Upload progress ${item.progress ?? 0}%`}\n sx={fileUploadTileProgressSx}\n />\n ) : null}\n {indeterminate ? (\n <LinearProgress\n aria-label=\"Uploading\"\n sx={fileUploadTileProgressSx}\n />\n ) : null}\n {disableRemove ? null : (\n <IconButton\n className=\"fu-tile-remove\"\n size=\"small\"\n aria-label={`Remove ${item.file.name}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation()\n onRemove(item)\n }}\n sx={fileUploadTileRemoveSx}\n >\n <CloseIcon sx={{ fontSize: '0.85rem' }} />\n </IconButton>\n )}\n </Box>\n )\n}\n\nexport default FileUpload\n","import FormLabel, { type FormLabelProps } from '@mui/material/FormLabel'\n\n/**\n * A wrapper for Mui FormLabel\n */\nexport default function MuiFormLabel(props: FormLabelProps) {\n return <FormLabel {...props} />\n}\n","export * from './FormLabel'\n\nexport * from './FormControlLabel'\n\nexport {default as FormControl} from '@mui/material/FormControl'\nexport {default as FormHelperText} from '@mui/material/FormHelperText'\nexport {default as InputAdornment} from '@mui/material/InputAdornment'\nexport {default as InputLabel} from '@mui/material/InputLabel'\nexport * from './themes'","import React from 'react';\nimport MuiLinearProgress, { LinearProgressProps as MuiLinearProgressProps } from '@mui/material/LinearProgress';\n\nexport type LinearProgressProps = MuiLinearProgressProps;\n\nexport const LinearProgress: React.FC<LinearProgressProps> = (props) => {\n return <MuiLinearProgress {...props} />;\n};\n","import React from 'react';\nimport MuiCircularProgress, { CircularProgressProps as MuiCircularProgressProps } from '@mui/material/CircularProgress';\n\nexport type CircularProgressProps = MuiCircularProgressProps;\n\nexport const CircularProgress: React.FC<CircularProgressProps> = (props) => {\n return <MuiCircularProgress {...props} />;\n};\n","import type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Soft / quiet FileUpload chrome — Google-style dark:\n * darker canvas, lighter elevated surfaces, 1px borders (not thick outlines).\n * Mirrors EmptyState dashed soft fill + Autocomplete glass vars language.\n */\nexport const fileUploadRootSx: SxProps<Theme> = {\n '--fu-border': 'var(--mui-palette-border-1)',\n '--fu-border-hover': 'var(--mui-palette-border-hover-1, var(--mui-palette-text-secondary))',\n '--fu-border-active': 'color-mix(in srgb, var(--mui-palette-text-secondary) 65%, transparent)',\n '--fu-border-error': 'var(--mui-palette-error-main)',\n '--fu-surface':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 78%, transparent)',\n '--fu-surface-hover':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 92%, transparent)',\n '--fu-surface-active':\n 'color-mix(in srgb, var(--mui-palette-primary-main) 8%, var(--mui-palette-background-paper))',\n '--fu-item-bg':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 88%, transparent)',\n '--fu-icon': 'var(--mui-palette-text-secondary)',\n '--fu-text': 'var(--mui-palette-text-primary)',\n '--fu-text-secondary': 'var(--mui-palette-text-secondary)',\n '--fu-shadow':\n 'inset 0 1px 0 color-mix(in srgb, var(--mui-palette-common-white) 6%, transparent)',\n '--fu-radius': '16px',\n '--fu-item-radius': '12px',\n\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n width: '100%',\n boxSizing: 'border-box',\n\n '[color-scheme=\"dark\"] &': {\n '--fu-surface':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 70%, transparent)',\n '--fu-surface-hover':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 88%, transparent)',\n '--fu-item-bg':\n 'color-mix(in srgb, var(--mui-palette-background-paper) 82%, transparent)',\n '--fu-shadow':\n 'inset 0 1px 0 color-mix(in srgb, var(--mui-palette-common-white) 8%, transparent), 0 1px 2px rgba(0,0,0,0.18)',\n },\n}\n\nexport const fileUploadDropzoneSx: SxProps<Theme> = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n gap: 0.75,\n px: 3,\n py: 3.5,\n minHeight: 140,\n borderRadius: 'var(--fu-radius)',\n border: '1px dashed var(--fu-drop-border, var(--fu-border))',\n backgroundColor: 'var(--fu-drop-bg, var(--fu-surface))',\n boxShadow: 'var(--fu-shadow)',\n color: 'var(--fu-text-secondary)',\n cursor: 'pointer',\n outline: 'none',\n boxSizing: 'border-box',\n transition: 'border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease',\n '&:hover': {\n borderColor: 'var(--fu-border-hover)',\n backgroundColor: 'var(--fu-surface-hover)',\n },\n '&:focus-visible': {\n borderColor: 'var(--fu-border-active)',\n borderStyle: 'solid',\n },\n '&[data-active=\"true\"]': {\n borderColor: 'var(--fu-border-active)',\n borderStyle: 'solid',\n backgroundColor: 'var(--fu-surface-active)',\n },\n '&[data-error=\"true\"]': {\n '--fu-drop-border': 'var(--fu-border-error)',\n },\n '&[data-disabled=\"true\"]': {\n opacity: 0.58,\n cursor: 'default',\n pointerEvents: 'none',\n },\n}\n\nexport const fileUploadItemSx: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n px: 1.25,\n py: 1,\n borderRadius: 'var(--fu-item-radius)',\n border: '1px solid var(--fu-border)',\n backgroundColor: 'var(--fu-item-bg)',\n boxShadow: 'var(--fu-shadow)',\n boxSizing: 'border-box',\n minWidth: 0,\n '&[data-status=\"error\"]': {\n borderColor: 'color-mix(in srgb, var(--mui-palette-error-main) 55%, var(--fu-border))',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-error-main) 8%, var(--fu-item-bg))',\n },\n}\n\n\nexport const fileUploadThumbSx: SxProps<Theme> = {\n width: 36,\n height: 36,\n minWidth: 36,\n borderRadius: '8px',\n objectFit: 'cover',\n flexShrink: 0,\n border: '1px solid var(--fu-border)',\n backgroundColor: 'var(--fu-item-bg)',\n display: 'block',\n boxSizing: 'border-box',\n}\n\nexport const fileUploadIconWellSx: SxProps<Theme> = {\n width: 36,\n height: 36,\n minWidth: 36,\n borderRadius: '8px',\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: '1px solid var(--fu-border)',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-background-paper) 55%, transparent)',\n boxSizing: 'border-box',\n overflow: 'hidden',\n}\n\n/** Scale react-file-icon SVG into the soft well — do not gray/desaturate. */\nexport const fileUploadLibIconSx: SxProps<Theme> = {\n width: 24,\n height: 30,\n lineHeight: 0,\n flexShrink: 0,\n // Keep library colors vivid (no opacity / filter / color overrides).\n color: 'unset',\n filter: 'none',\n opacity: 1,\n '& svg': {\n width: '100%',\n height: '100%',\n display: 'block',\n // Prevent inherited MUI text color from washing glyph/label fills.\n color: 'unset',\n },\n}\n\n/** Compact soft upload button — quiet 1px border, elevated dark surface. */\nexport const fileUploadButtonSx: SxProps<Theme> = {\n alignSelf: 'flex-start',\n textTransform: 'none',\n fontWeight: 600,\n fontSize: '0.8125rem',\n lineHeight: 1.25,\n borderRadius: '10px',\n px: 1.5,\n py: 0.75,\n minHeight: 36,\n border: '1px solid var(--fu-border)',\n backgroundColor: 'var(--fu-surface)',\n color: 'var(--fu-text)',\n boxShadow: 'var(--fu-shadow)',\n transition: 'border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease',\n '&:hover': {\n borderColor: 'var(--fu-border-hover)',\n backgroundColor: 'var(--fu-surface-hover)',\n },\n '&:focus-visible': {\n borderColor: 'var(--fu-border-active)',\n outline: 'none',\n },\n '&[data-active=\"true\"]': {\n borderColor: 'var(--fu-border-active)',\n backgroundColor: 'var(--fu-surface-active)',\n },\n '&[data-error=\"true\"]': {\n borderColor: 'var(--fu-border-error)',\n color: 'var(--fu-border-error)',\n },\n '&.Mui-disabled': {\n opacity: 0.58,\n borderColor: 'var(--fu-border)',\n color: 'var(--fu-text-secondary)',\n },\n '& .MuiButton-startIcon': {\n marginRight: '8px',\n marginLeft: 0,\n color: 'var(--fu-icon)',\n },\n}\n\n/** Flex wrap grid for tile items. */\nexport const fileUploadTileListSx: SxProps<Theme> = {\n display: 'flex',\n flexWrap: 'wrap',\n gap: 1.25,\n m: 0,\n p: 0,\n listStyle: 'none',\n}\n\n/** Soft square preview tile (~80px). */\nexport const fileUploadTileSx: SxProps<Theme> = {\n '--fu-tile-size': '80px',\n position: 'relative',\n width: 'var(--fu-tile-size)',\n height: 'var(--fu-tile-size)',\n minWidth: 'var(--fu-tile-size)',\n borderRadius: '12px',\n border: '1px solid var(--fu-border)',\n backgroundColor: 'var(--fu-item-bg)',\n boxShadow: 'var(--fu-shadow)',\n boxSizing: 'border-box',\n overflow: 'hidden',\n flexShrink: 0,\n '&[data-status=\"error\"]': {\n borderColor: 'color-mix(in srgb, var(--mui-palette-error-main) 55%, var(--fu-border))',\n },\n '&:hover .fu-tile-remove, &:focus-within .fu-tile-remove': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n}\n\n/** Fill tile with image cover. */\nexport const fileUploadTileMediaSx: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n display: 'block',\n borderRadius: 'inherit',\n}\n\n/** Centered type-icon well inside a tile (non-images). */\nexport const fileUploadTileIconWellSx: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor:\n 'color-mix(in srgb, var(--mui-palette-background-paper) 55%, transparent)',\n border: 'none',\n borderRadius: 0,\n boxSizing: 'border-box',\n overflow: 'hidden',\n}\n\nexport const fileUploadTileLibIconSx: SxProps<Theme> = {\n width: 36,\n height: 44,\n lineHeight: 0,\n flexShrink: 0,\n color: 'unset',\n filter: 'none',\n opacity: 1,\n '& svg': {\n width: '100%',\n height: '100%',\n display: 'block',\n color: 'unset',\n },\n}\n\n/** Circular white X — top-right overlap; visible on hover/focus. */\nexport const fileUploadTileRemoveSx: SxProps<Theme> = {\n position: 'absolute',\n top: 4,\n right: 4,\n zIndex: 2,\n width: 22,\n height: 22,\n p: 0,\n opacity: 0,\n pointerEvents: 'none',\n backgroundColor: '#fff',\n color: 'rgba(15, 23, 42, 0.72)',\n boxShadow: '0 1px 3px rgba(0,0,0,0.22)',\n border: '1px solid color-mix(in srgb, var(--mui-palette-common-black) 8%, transparent)',\n transition: 'opacity 140ms ease, background-color 140ms ease',\n '&:hover': {\n backgroundColor: '#fff',\n color: 'rgba(15, 23, 42, 0.92)',\n },\n '&.Mui-disabled': {\n opacity: 0,\n },\n}\n\n/** Thin progress strip along tile bottom. */\nexport const fileUploadTileProgressSx: SxProps<Theme> = {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n height: 3,\n borderRadius: 0,\n backgroundColor: 'color-mix(in srgb, var(--mui-palette-common-black) 25%, transparent)',\n '& .MuiLinearProgress-bar': {\n borderRadius: 0,\n },\n}\n","import type { FileRejectCode, FileRejection, FileUploadItem } from './types'\n\nlet idSeq = 0\n\n/** Stable id for a new upload item (browser crypto when available). */\nexport function createFileUploadId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID()\n }\n idSeq += 1\n return `fu-${Date.now()}-${idSeq}`\n}\n\nexport function createFileUploadItem(file: File): FileUploadItem {\n return {\n id: createFileUploadId(),\n file,\n status: 'idle',\n progress: 0,\n }\n}\n\nexport function formatFileSize(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return '—'\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n if (bytes < 1024 * 1024 * 1024) {\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n }\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`\n}\n\ntype AcceptRule = { type: 'ext'; value: string } | { type: 'mime'; value: string }\n\nfunction parseAccept(accept?: string): AcceptRule[] {\n if (!accept || !accept.trim()) return []\n return accept\n .split(',')\n .map((p) => p.trim())\n .filter(Boolean)\n .map((token) => {\n if (token.startsWith('.')) {\n return { type: 'ext' as const, value: token.toLowerCase() }\n }\n return { type: 'mime' as const, value: token.toLowerCase() }\n })\n}\n\nfunction matchesAccept(file: File, rules: AcceptRule[]): boolean {\n if (rules.length === 0) return true\n const name = file.name.toLowerCase()\n const mime = (file.type || '').toLowerCase()\n return rules.some((rule) => {\n if (rule.type === 'ext') {\n return name.endsWith(rule.value)\n }\n if (rule.value.endsWith('/*')) {\n const prefix = rule.value.slice(0, -1)\n return mime.startsWith(prefix)\n }\n return mime === rule.value\n })\n}\n\nexport type ValidateFilesOptions = {\n accept?: string\n maxSize?: number\n maxFiles?: number\n currentCount: number\n multiple: boolean\n}\n\n/**\n * Validate incoming FileList / File[] against accept, maxSize, maxFiles, multiple.\n * Accepted files are those that pass; capacity is applied in order.\n */\nexport function validateFiles(\n incoming: File[],\n opts: ValidateFilesOptions,\n): { accepted: File[]; rejections: FileRejection[] } {\n const rules = parseAccept(opts.accept)\n const accepted: File[] = []\n const rejections: FileRejection[] = []\n\n const hardCap = opts.multiple\n ? opts.maxFiles != null && opts.maxFiles > 0\n ? opts.maxFiles\n : Infinity\n : 1\n\n for (const file of incoming) {\n const errors: FileRejectCode[] = []\n\n if (!matchesAccept(file, rules)) {\n errors.push('file-invalid-type')\n }\n if (opts.maxSize != null && opts.maxSize > 0 && file.size > opts.maxSize) {\n errors.push('file-too-large')\n }\n if (opts.currentCount + accepted.length >= hardCap) {\n errors.push('too-many-files')\n }\n\n if (errors.length > 0) {\n rejections.push({ file, errors })\n } else {\n accepted.push(file)\n }\n }\n\n return { accepted, rejections }\n}\n\n\n/** Common mime → extension when File.name has no suffix. */\nconst MIME_TO_EXT: Record<string, string> = {\n 'application/pdf': 'pdf',\n 'application/zip': 'zip',\n 'application/x-zip-compressed': 'zip',\n 'application/gzip': 'gz',\n 'application/x-gzip': 'gz',\n 'application/x-rar-compressed': 'rar',\n 'application/vnd.rar': 'rar',\n 'application/x-7z-compressed': '7z',\n 'application/x-tar': 'tar',\n 'application/json': 'json',\n 'application/msword': 'doc',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',\n 'application/vnd.ms-excel': 'xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n 'application/vnd.ms-powerpoint': 'ppt',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',\n 'text/plain': 'txt',\n 'text/csv': 'csv',\n 'text/markdown': 'md',\n 'image/jpeg': 'jpg',\n 'image/png': 'png',\n 'image/gif': 'gif',\n 'image/webp': 'webp',\n 'image/svg+xml': 'svg',\n 'audio/mpeg': 'mp3',\n 'audio/wav': 'wav',\n 'video/mp4': 'mp4',\n 'video/webm': 'webm',\n}\n\n/**\n * Extension for react-file-icon / defaultStyles lookup.\n * Prefers File.name; falls back to a small mime map (not an icon map).\n */\nexport function getFileExtension(file: File): string {\n const name = file.name || ''\n const dot = name.lastIndexOf('.')\n if (dot > 0 && dot < name.length - 1) {\n return name.slice(dot + 1).toLowerCase()\n }\n const mime = (file.type || '').toLowerCase()\n return MIME_TO_EXT[mime] ?? ''\n}\n\nexport function isImageFile(file: File): boolean {\n return typeof file.type === 'string' && file.type.startsWith('image/')\n}\n\nexport type FileIconStyleBag = Record<string, unknown> & {\n type?: string\n labelColor?: string\n labelTextColor?: string\n labelUppercase?: boolean\n foldColor?: string\n color?: string\n glyphColor?: string\n gradientOpacity?: number\n}\n\n/** Alias odd archive suffixes onto react-file-icon defaultStyles keys. */\nconst EXT_ALIASES: Record<string, string> = {\n '7z': '7zip',\n tgz: 'gz',\n tbz: 'gz',\n tbz2: 'gz',\n}\n\n/**\n * defaultStyles.zip/rar/gz only set `type: \"compressed\"` — no labelColor.\n * Amber badge so archives read like pdf's red chip.\n */\nexport const ARCHIVE_FILE_ICON_STYLE = {\n type: 'compressed' as const,\n labelColor: '#E2A903',\n labelTextColor: '#1A1A1A',\n labelUppercase: true,\n foldColor: '#C48E02',\n color: '#F6E7A8',\n glyphColor: 'rgba(40, 30, 0, 0.35)',\n}\n\nconst ARCHIVE_EXTS = new Set([\n 'zip',\n 'zipx',\n 'rar',\n '7z',\n '7zip',\n 'gz',\n 'tar',\n 'tgz',\n 'sitx',\n 'bz2',\n])\n\n/**\n * Many defaultStyles entries are type-only (no labelColor/color) and render as\n * mono whitesmoke. Colorize by glyph `type` so every icon stays vivid.\n * Keys match react-file-icon `type` enum.\n */\nexport const TYPE_COLOR_FALLBACKS: Record<string, FileIconStyleBag> = {\n '3d': {\n type: '3d',\n labelColor: '#5FB9AD',\n foldColor: '#4A9E94',\n color: '#E5F6F4',\n },\n acrobat: {\n type: 'acrobat',\n labelColor: '#D93831',\n foldColor: '#B82E28',\n color: '#FCE8E7',\n },\n android: {\n type: 'android',\n labelColor: '#3DDC84',\n foldColor: '#2BB86A',\n color: '#E6FBF0',\n },\n audio: {\n type: 'audio',\n labelColor: '#9B59B6',\n foldColor: '#7E3F9A',\n color: '#F3E9F8',\n },\n binary: {\n type: 'binary',\n labelColor: '#E67E22',\n foldColor: '#C86A1A',\n color: '#FDF0E4',\n },\n code: {\n type: 'code',\n labelColor: '#3498DB',\n foldColor: '#2A7AB0',\n color: '#E7F3FB',\n },\n compressed: { ...ARCHIVE_FILE_ICON_STYLE },\n document: {\n type: 'document',\n labelColor: '#5B8DEF',\n labelUppercase: true,\n foldColor: '#4A75C9',\n color: '#E8EEF9',\n glyphColor: 'rgba(40, 60, 120, 0.35)',\n },\n drive: {\n type: 'drive',\n labelColor: '#27AE60',\n foldColor: '#1E8A4B',\n color: '#E5F7ED',\n },\n font: {\n type: 'font',\n labelColor: '#8E44AD',\n foldColor: '#71368A',\n color: '#F2E8F7',\n },\n image: {\n type: 'image',\n labelColor: '#1ABC9C',\n foldColor: '#14967C',\n color: '#E4F8F3',\n },\n presentation: {\n type: 'presentation',\n labelColor: '#D35400',\n labelUppercase: true,\n foldColor: '#A84300',\n color: '#FCEADE',\n glyphColor: 'rgba(120, 50, 0, 0.35)',\n },\n settings: {\n type: 'settings',\n labelColor: '#16A085',\n foldColor: '#117A65',\n color: '#E4F6F2',\n },\n spreadsheet: {\n type: 'spreadsheet',\n labelColor: '#2D7D46',\n labelUppercase: true,\n foldColor: '#246338',\n color: '#E5F2EA',\n glyphColor: 'rgba(20, 60, 30, 0.35)',\n },\n vector: {\n type: 'vector',\n labelColor: '#FF7F18',\n foldColor: '#D96A12',\n color: '#FFF0E4',\n },\n video: {\n type: 'video',\n labelColor: '#E74C3C',\n foldColor: '#C0392B',\n color: '#FCE9E7',\n },\n}\n\n/** Unknown / empty ext — never mono whitesmoke. */\nexport const UNKNOWN_FILE_ICON_STYLE: FileIconStyleBag = {\n type: 'document',\n labelColor: '#5B8DEF',\n labelTextColor: '#FFFFFF',\n labelUppercase: true,\n foldColor: '#4A75C9',\n color: '#E8EEF9',\n glyphColor: 'rgba(40, 60, 120, 0.35)',\n}\n\nexport type FileIconStyleProps = {\n /** Label text on the icon (original ext when possible). */\n extension?: string\n /** Key used for defaultStyles lookup (after aliases). */\n styleKey: string\n /** Props to spread onto <FileIcon /> (full defaultStyles + enrichments). */\n style: FileIconStyleBag\n}\n\nconst MONO_PAGE_COLORS = new Set([\n '',\n 'whitesmoke',\n '#fff',\n '#ffffff',\n 'white',\n '#f5f5f5',\n '#fafafa',\n])\n\nfunction hasVividColor(style: FileIconStyleBag): boolean {\n if (typeof style.labelColor === 'string' && style.labelColor.trim()) {\n return true\n }\n if (typeof style.color === 'string') {\n const c = style.color.trim().toLowerCase()\n if (c && !MONO_PAGE_COLORS.has(c)) return true\n }\n return false\n}\n\nfunction mergeColorEnrichment(\n lib: FileIconStyleBag,\n enrichment: FileIconStyleBag,\n): FileIconStyleBag {\n // Spread library defaults fully, then fill only missing color fields —\n // never clobber a rich defaultStyles entry (e.g. pdf/doc/ai).\n return {\n ...enrichment,\n ...lib,\n labelColor: lib.labelColor ?? enrichment.labelColor,\n labelTextColor: lib.labelTextColor ?? enrichment.labelTextColor,\n foldColor: lib.foldColor ?? enrichment.foldColor,\n color: lib.color ?? enrichment.color,\n glyphColor: lib.glyphColor ?? enrichment.glyphColor,\n labelUppercase: lib.labelUppercase ?? enrichment.labelUppercase,\n type: lib.type ?? enrichment.type,\n }\n}\n\n/**\n * Resolve extension + style for react-file-icon.\n * Always spreads `defaultStyles[key]` fully; enriches type-only / unknown\n * entries so icons are never forced grayscale.\n */\nexport function resolveFileIconStyle(\n file: File,\n defaultStyles: Record<string, FileIconStyleBag | undefined>,\n): FileIconStyleProps {\n const rawExt = getFileExtension(file)\n const styleKey = (EXT_ALIASES[rawExt] ?? rawExt).toLowerCase()\n const displayExt = rawExt || styleKey || undefined\n\n // Full library defaults (labelColor, glyphColor, foldColor, type, …).\n const lib: FileIconStyleBag = {\n ...((styleKey ? defaultStyles[styleKey] : undefined) ?? {}),\n }\n\n const isArchive =\n ARCHIVE_EXTS.has(rawExt) ||\n ARCHIVE_EXTS.has(styleKey) ||\n lib.type === 'compressed'\n\n let style: FileIconStyleBag\n if (isArchive) {\n style = { ...lib, ...ARCHIVE_FILE_ICON_STYLE }\n } else if (hasVividColor(lib)) {\n style = { ...lib }\n } else if (lib.type && TYPE_COLOR_FALLBACKS[lib.type]) {\n style = mergeColorEnrichment(lib, TYPE_COLOR_FALLBACKS[lib.type])\n } else {\n style = mergeColorEnrichment(lib, UNKNOWN_FILE_ICON_STYLE)\n }\n\n return {\n extension: displayExt,\n styleKey,\n style,\n }\n}\n","import { useState, useEffect, useMemo, useCallback } from 'react'\nimport type React from 'react'\nimport type { FileUploadItem } from '@/ele/FileUpload'\nimport { ProgressObserver } from '../_utils/ProgressObserver'\n\nexport function useProgressTracking(\n files: FileUploadItem[],\n observerRef: React.RefObject<ProgressObserver>,\n) {\n const [progressMap, setProgressMap] = useState<Map<string, number>>(new Map())\n\n const handleProgress = useCallback((file: FileUploadItem, progress: number) => {\n setProgressMap((prev) => {\n if (prev.get(file.id) === progress) return prev\n const next = new Map(prev)\n next.set(file.id, progress)\n return next\n })\n }, [])\n\n useEffect(() => {\n if (files.length === 0) return\n let total = 0\n let completed = 0\n progressMap.forEach((v) => {\n total += v\n if (v >= 100) completed++\n })\n const avg = Math.round(total / files.length)\n observerRef.current.update(files.length, completed, avg)\n }, [progressMap, files, observerRef])\n\n const allComplete = useMemo(() => {\n if (files.length === 0) return false\n return files.every((f) => (progressMap.get(f.id) || 0) >= 100)\n }, [files, progressMap])\n\n return { progressMap, handleProgress, allComplete }\n}\n","import React, { useRef, useEffect, useMemo } from 'react';\nimport { SnackbarKey } from 'notistack';\nimport { useAlert, type AlertOptions } from '@/compound/Alert';\nimport { ProcessAlertObserver } from '../ProcessAlert';\nimport { ProgressObserver } from '../_utils/ProgressObserver';\nimport type { ProcessModalProps } from '../types';\n\ninterface UseProcessAlertParams {\n open: boolean;\n minimized: boolean;\n minimizePlacement: NonNullable<ProcessModalProps['minimizePlacement']>;\n onMaximize: () => void;\n}\n\nexport function useProcessAlert({\n open,\n minimized,\n minimizePlacement,\n onMaximize,\n}: UseProcessAlertParams) {\n const { enqueueInfo, closeSnackbar } = useAlert();\n const observerRef = useRef(new ProgressObserver());\n const snackbarIdRef = useRef<SnackbarKey | null>(null);\n\n const alertAnchorOrigin = useMemo<NonNullable<AlertOptions['anchorOrigin']>>(() => (\n {\n 'bottom-right': { vertical: 'bottom', horizontal: 'right' },\n 'bottom-left': { vertical: 'bottom', horizontal: 'left' },\n 'top-right': { vertical: 'top', horizontal: 'right' },\n 'top-left': { vertical: 'top', horizontal: 'left' },\n } as const\n )[minimizePlacement], [minimizePlacement]);\n\n // Sync minimized state to observer\n useEffect(() => {\n observerRef.current.setMinimized(minimized);\n }, [minimized]);\n\n // Alert open/close lifecycle\n useEffect(() => {\n if (open) {\n if (!snackbarIdRef.current) {\n const message = React.createElement(ProcessAlertObserver, {\n observer: observerRef.current,\n onMaximize,\n });\n const result = enqueueInfo(message, {\n autoHideDuration: null,\n icon: null,\n anchorOrigin: alertAnchorOrigin,\n });\n if (result.success) {\n snackbarIdRef.current = result.data;\n }\n }\n } else {\n if (snackbarIdRef.current) {\n closeSnackbar(snackbarIdRef.current);\n snackbarIdRef.current = null;\n }\n }\n }, [alertAnchorOrigin, closeSnackbar, enqueueInfo, open, onMaximize]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (snackbarIdRef.current) {\n closeSnackbar(snackbarIdRef.current);\n snackbarIdRef.current = null;\n }\n };\n }, [closeSnackbar]);\n\n return { observerRef };\n}\n","'use client'\nimport { enqueueSnackbar, useSnackbar } from 'notistack'\nimport { randomStrGenerator } from '@/_utils/_func/random'\nimport { AlertOptions, CollapsableAlertOptions, AlertOperationResult } from './types'\nimport { ALERT_VARIANTs, DEFAULTs } from './const'\n\ntype EnqueueFn = ReturnType<typeof useSnackbar>['enqueueSnackbar']\n\nfunction enqueueAlertWith(\n enqueue: EnqueueFn,\n {\n message,\n variant,\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n icon,\n styleVariant,\n action,\n ...rest\n }: AlertOptions\n): AlertOperationResult<string> {\n try {\n // Cast: variant is a union (AlertVariant); OptionsWithExtraProps is per-variant.\n // Public API keeps action; wire as alertAction (notistack SharedProps already owns action).\n enqueue(message, {\n variant,\n anchorOrigin,\n autoHideDuration,\n key: id,\n id,\n icon,\n styleVariant,\n alertAction: action,\n ...rest,\n } as Parameters<EnqueueFn>[1])\n return { success: true, data: id as string }\n } catch (error) {\n console.error('Failed to enqueue alert:', error)\n return { success: false, error: (error instanceof Error ? error.message : 'Unknown error') }\n }\n}\n\nfunction enqueueCollapsableWith(\n enqueue: EnqueueFn,\n {\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n styleVariant,\n componentProps = {},\n componentWrapperProps = {},\n ...rest\n }: CollapsableAlertOptions\n): AlertOperationResult<string> {\n try {\n enqueue('', {\n variant: ALERT_VARIANTs.collapsable,\n anchorOrigin,\n autoHideDuration,\n componentProps,\n componentWrapperProps,\n id,\n styleVariant,\n ...rest,\n } as Parameters<EnqueueFn>[1])\n return { success: true, data: id as string }\n } catch (error) {\n console.error('Failed to enqueue collapsable alert:', error)\n return { success: false, error: (error instanceof Error ? error.message : 'Unknown error') }\n }\n}\n\nexport function useAlert() {\n const { enqueueSnackbar: enqueue, closeSnackbar } = useSnackbar()\n\n const enqueueAlert = (options: AlertOptions) => enqueueAlertWith(enqueue, options)\n const enqueueCollapsable = (options: CollapsableAlertOptions) => enqueueCollapsableWith(enqueue, options)\n const enqueueError = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.error, message, ...options })\n const enqueueSuccess = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.success, message, ...options })\n const enqueueWarning = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.warning, message, ...options })\n const enqueueInfo = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.info, message, ...options })\n const enqueueSystem = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.system, message, ...options })\n const enqueueInsight = (message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) =>\n enqueueAlert({ variant: ALERT_VARIANTs.insight, message, ...options })\n\n return {\n enqueueAlert,\n enqueueCollapsable,\n enqueueError,\n enqueueSuccess,\n enqueueWarning,\n enqueueInfo,\n enqueueSystem,\n enqueueInsight,\n closeSnackbar,\n }\n}\n\nexport function enqueueAlert({\n message,\n variant,\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n icon,\n styleVariant,\n action,\n ...rest\n}: AlertOptions): AlertOperationResult<string> {\n return enqueueAlertWith(enqueueSnackbar, {\n message,\n variant,\n id,\n autoHideDuration,\n anchorOrigin,\n icon,\n styleVariant,\n action,\n ...rest,\n })\n}\n\nexport function enqueueCollapsable({\n id = randomStrGenerator(10),\n autoHideDuration = DEFAULTs.AUTO_HIDE_DURATION,\n anchorOrigin = DEFAULTs.ANCHOR_ORIGIN,\n styleVariant,\n componentProps = {},\n componentWrapperProps = {},\n ...rest\n}: CollapsableAlertOptions): AlertOperationResult<string> {\n return enqueueCollapsableWith(enqueueSnackbar, {\n id,\n autoHideDuration,\n anchorOrigin,\n styleVariant,\n componentProps,\n componentWrapperProps,\n ...rest,\n })\n}\n\nexport function enqueueError(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.error,\n message,\n ...options\n })\n}\n\nexport function enqueueSuccess(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.success,\n message,\n ...options\n })\n}\n\nexport function enqueueWarning(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.warning,\n message,\n ...options\n })\n}\n\nexport function enqueueInfo(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.info,\n message,\n ...options\n })\n}\n\nexport function enqueueSystem(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.system,\n message,\n ...options\n })\n}\n\nexport function enqueueInsight(message: string | React.ReactNode, options?: Omit<AlertOptions, 'message' | 'variant'>) {\n return enqueueAlert({\n variant: ALERT_VARIANTs.insight,\n message,\n ...options\n })\n}\n","export const ALERT_VARIANTs = {\n info: 'myInfo',\n warning: 'myWarning',\n success: 'mySuccess',\n error: 'myError',\n system: 'mySystem',\n insight: 'myInsight',\n collapsable: 'myCollapsable',\n} as const\n\nexport const ALERT_STYLE_VARIANTs = {\n soft: 'soft',\n classic: 'classic',\n} as const\n\nexport const DEFAULTs = {\n AUTO_HIDE_DURATION: 3000,\n /** Quiet glass toast look is the default snackbar chrome. */\n STYLE_VARIANT: 'soft' as const,\n ANCHOR_ORIGIN: { horizontal: \"right\" as const, vertical: \"top\" as const },\n PROVIDER_CONFIGs: {\n maxSnack: 3,\n dense: true,\n preventDuplicate: true,\n autoHideDuration: 3000,\n }\n} as const\n\nexport const ERRORs = {\n invalid_variant: 'Invalid alert variant provided',\n enqueue_failed: 'Failed to enqueue alert',\n missing_message: 'Message is required for alert',\n missing_component_props: 'Component props are required for collapsible alert',\n} as const\n","import { useEffect, useState } from 'react';\nimport { Box } from '@/ele/Box';\nimport { Typography } from '@/ele/Typography';\nimport { IconButton } from '@/ele/Button';\nimport { FullscreenIcon, CheckCircleIcon } from '@/icons/MuiIcon';\nimport { CircularProgress } from '@/ele/Progress';\nimport { ProgressObserver } from './_utils/ProgressObserver';\n\n// The display component (stateless mostly)\nexport const ProcessAlertContent = ({ \n allComplete, \n fileCount, \n totalProgress, \n onMaximize,\n minimized\n}: { \n allComplete: boolean; \n fileCount: number; \n totalProgress: number; \n onMaximize: () => void;\n minimized: boolean;\n}) => {\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, minWidth: 280 }}>\n {/* We don't render Icon here because MuiAlertVariant/Info handles the main icon usually. \n However, user might want the progress circle AS the icon. \n But MuiAlertVariant renders 'icon' prop.\n We are inside 'message'.\n */}\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {/* Explicitly show progress here, assuming we replace or hide the default Alert icon via props if needed, or just show standard info icon + this progress */}\n {allComplete ? <CheckCircleIcon /> : <CircularProgress variant=\"determinate\" value={totalProgress} size={24} thickness={5} />}\n </Box>\n \n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 600, lineHeight: 1.2 }}>\n {allComplete ? \"Uploads complete\" : \"Uploading files...\"}\n </Typography>\n {!allComplete && (\n <Typography variant=\"caption\" display=\"block\" sx={{ opacity: 0.8 }}>\n {fileCount} item{fileCount !== 1 ? 's' : ''} • {totalProgress}%\n </Typography>\n )}\n </Box>\n\n {minimized && (\n <IconButton size=\"small\" onClick={onMaximize} title=\"Maximize\" sx={{ color: 'inherit' }}>\n <FullscreenIcon />\n </IconButton>\n )}\n </Box>\n );\n};\n\n// The observer wrapper\nexport const ProcessAlertObserver = ({ observer, onMaximize }: { observer: ProgressObserver, onMaximize: () => void }) => {\n const [state, setState] = useState({ fileCount: 0, completedCount: 0, totalProgress: 0, minimized: false });\n\n useEffect(() => {\n return observer.subscribe((newState) => {\n setState(newState);\n });\n }, [observer]);\n\n // Derived\n const allComplete = state.fileCount > 0 && state.totalProgress >= 100;\n\n return (\n <ProcessAlertContent \n allComplete={allComplete}\n fileCount={state.fileCount}\n totalProgress={state.totalProgress}\n onMaximize={onMaximize}\n minimized={state.minimized}\n />\n );\n};\n","export interface ProgressState {\n fileCount: number;\n completedCount: number;\n totalProgress: number;\n minimized: boolean;\n}\n\nexport type ProgressListener = (state: ProgressState) => void;\n\nexport class ProgressObserver {\n private listeners: ProgressListener[] = [];\n private state: ProgressState = {\n fileCount: 0,\n completedCount: 0,\n totalProgress: 0,\n minimized: false\n };\n\n subscribe(listener: ProgressListener) {\n this.listeners.push(listener);\n // Immediate callback with current state\n listener(this.state);\n return () => {\n this.listeners = this.listeners.filter(l => l !== listener);\n };\n }\n\n update(fileCount: number, completedCount: number, totalProgress: number) {\n this.state = { ...this.state, fileCount, completedCount, totalProgress };\n this.notify();\n }\n\n setMinimized(minimized: boolean) {\n this.state = { ...this.state, minimized };\n this.notify();\n }\n\n private notify() {\n this.listeners.forEach(l => l(this.state));\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles'\n\n/**\n * Root-level CSS variable aliases for the ProcessModal compound component.\n * File queue styling comes from elemental FileUpload (soft quiet rows/tiles).\n */\nexport const processModalRootSx: SxProps<Theme> = {\n '--process-description-color': 'var(--mui-palette-text-secondary)',\n '--process-item-secondary-color': 'var(--mui-palette-text-secondary)',\n '--process-item-border': 'var(--mui-palette-border-1)',\n}\n","'use client'\nimport React, { useMemo } from 'react'\nimport {\n FileUpload,\n type FileUploadItem,\n} from '@/ele/FileUpload'\n\nexport type ProcessItemProps = {\n file: FileUploadItem\n progress: number\n}\n\n/**\n * Single-file progress row — soft FileUpload readOnly queue item.\n * Prefer ProcessModal's batched FileUpload list for multi-file UIs.\n */\nexport const ProcessItem: React.FC<ProcessItemProps> = ({ file, progress }) => {\n const value = useMemo<FileUploadItem[]>(() => {\n const clamped = Math.max(0, Math.min(100, progress))\n return [\n {\n ...file,\n progress: clamped,\n status: clamped >= 100 ? 'success' : 'uploading',\n },\n ]\n }, [file, progress])\n\n return (\n <FileUpload\n value={value}\n readOnly\n hideDropzone\n disableRemove\n itemVariant=\"row\"\n data-testid=\"process-item\"\n />\n )\n}\n"],"mappings":"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","names":["exports","module","import_react","import_Typography","Typography","import_jsx_runtime","MuiButton","import_jsx_runtime","MuiIconButton","import_PhotoSizeSelectLarge","import_Close","import_Person","import_DeleteForever","import_AccountTreeOutlined","import_react","import_Tooltip","Paper","import_jsx_runtime","classnames","Modal","Tooltip","import_react","import_jsx_runtime","FormLabel","import_jsx_runtime","MuiLinearProgress","import_jsx_runtime","MuiCircularProgress","defaultStyles","import_jsx_runtime","mergeSx","FileUpload","import_react","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime"]}