@webiny/app-admin 6.6.0-alpha.1 → 6.6.0-alpha.10

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 (718) hide show
  1. package/base/Admin.js +19 -2
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +4 -0
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
  6. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
  7. package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
  8. package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
  9. package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
  10. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
  11. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
  12. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
  13. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +21 -4
  14. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
  15. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +11 -2
  16. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -0
  18. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +14 -5
  19. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  20. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +16 -25
  21. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  22. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +18 -3
  23. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  24. package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
  25. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
  26. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
  27. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
  28. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
  29. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
  30. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
  31. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
  32. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
  33. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
  34. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
  35. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
  36. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
  37. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
  38. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
  39. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
  40. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
  41. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
  42. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
  43. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
  44. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
  45. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
  46. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
  47. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
  53. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
  54. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  55. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
  57. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
  58. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +3 -2
  59. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  60. package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
  61. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  62. package/base/Base.js +2 -1
  63. package/base/Base.js.map +1 -1
  64. package/base/createRootContainer.js +4 -0
  65. package/base/createRootContainer.js.map +1 -1
  66. package/base/resolveApiUrl.d.ts +10 -0
  67. package/base/resolveApiUrl.js +11 -3
  68. package/base/resolveApiUrl.js.map +1 -1
  69. package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
  70. package/base/ui/AssumedPermissionsSelector.js +7 -0
  71. package/base/ui/AssumedPermissionsSelector.js.map +1 -0
  72. package/base/ui/DebuggerIndicator.d.ts +23 -0
  73. package/base/ui/DebuggerIndicator.js +5 -0
  74. package/base/ui/DebuggerIndicator.js.map +1 -0
  75. package/base/ui/Layout.d.ts +20 -0
  76. package/base/ui/Layout.js +2 -1
  77. package/base/ui/Layout.js.map +1 -1
  78. package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
  79. package/components/DeveloperMode/DeveloperMode.js.map +1 -1
  80. package/components/Filters/Filters.js +7 -1
  81. package/components/Filters/Filters.js.map +1 -1
  82. package/components/IconPicker/IconPickerComponent.js +1 -1
  83. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  84. package/components/SplitView/SplitView.d.ts +2 -2
  85. package/components/SplitView/SplitView.js +7 -7
  86. package/components/SplitView/SplitView.js.map +1 -1
  87. package/config/AdminConfig/Widget.d.ts +9 -1
  88. package/config/AdminConfig/Widget.js +6 -2
  89. package/config/AdminConfig/Widget.js.map +1 -1
  90. package/domain/Identity.js +1 -1
  91. package/domain/Identity.js.map +1 -1
  92. package/exports/admin/ui.d.ts +4 -0
  93. package/exports/admin/ui.js +4 -1
  94. package/exports/admin.d.ts +4 -0
  95. package/exports/admin.js +2 -0
  96. package/features/{aiChat/AiChatGateway.d.ts → adminAssistant/AdminAssistantGateway.d.ts} +7 -7
  97. package/features/{aiChat/AiChatGateway.js → adminAssistant/AdminAssistantGateway.js} +8 -8
  98. package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
  99. package/features/adminAssistant/AdminAssistantPresenter.d.ts +60 -0
  100. package/features/adminAssistant/AdminAssistantPresenter.js +377 -0
  101. package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
  102. package/features/adminAssistant/abstractions.d.ts +176 -0
  103. package/features/adminAssistant/abstractions.js +6 -0
  104. package/features/adminAssistant/abstractions.js.map +1 -0
  105. package/features/adminAssistant/feature.d.ts +3 -0
  106. package/features/adminAssistant/feature.js +19 -0
  107. package/features/adminAssistant/feature.js.map +1 -0
  108. package/features/adminAssistant/index.d.ts +6 -0
  109. package/features/adminAssistant/index.js +3 -0
  110. package/features/adminAssistant/turnsFromMessages.d.ts +15 -0
  111. package/features/adminAssistant/turnsFromMessages.js +77 -0
  112. package/features/adminAssistant/turnsFromMessages.js.map +1 -0
  113. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
  114. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
  115. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
  116. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
  117. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
  118. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
  119. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
  120. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
  121. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
  122. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
  123. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
  124. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
  125. package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
  126. package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
  127. package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
  128. package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
  129. package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
  130. package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
  131. package/features/adminUsers/account/getCurrentUser/index.js +1 -0
  132. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
  133. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
  134. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
  135. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
  136. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
  137. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
  138. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
  139. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
  140. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
  141. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
  142. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
  143. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
  144. package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
  145. package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
  146. package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
  147. package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
  148. package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
  149. package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
  150. package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
  151. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
  152. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
  153. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
  154. package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
  155. package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
  156. package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
  157. package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
  158. package/features/adminUsers/passwordPolicy/feature.js +18 -0
  159. package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
  160. package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
  161. package/features/adminUsers/passwordPolicy/index.js +3 -0
  162. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
  163. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
  164. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
  165. package/features/adminUsers/permissions/abstractions.d.ts +17 -0
  166. package/features/adminUsers/permissions/abstractions.js +6 -0
  167. package/features/adminUsers/permissions/abstractions.js.map +1 -0
  168. package/features/adminUsers/permissions/feature.d.ts +14 -0
  169. package/features/adminUsers/permissions/feature.js +7 -0
  170. package/features/adminUsers/permissions/feature.js.map +1 -0
  171. package/features/adminUsers/permissionsSchema.d.ts +10 -0
  172. package/features/adminUsers/permissionsSchema.js +18 -0
  173. package/features/adminUsers/permissionsSchema.js.map +1 -0
  174. package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
  175. package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
  176. package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
  177. package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
  178. package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
  179. package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
  180. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
  181. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
  182. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
  183. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
  184. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
  185. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
  186. package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
  187. package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
  188. package/features/adminUsers/users/createUser/feature.d.ts +3 -0
  189. package/features/adminUsers/users/createUser/feature.js +19 -0
  190. package/features/adminUsers/users/createUser/feature.js.map +1 -0
  191. package/features/adminUsers/users/createUser/index.d.ts +2 -0
  192. package/features/adminUsers/users/createUser/index.js +2 -0
  193. package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
  194. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
  195. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
  196. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
  197. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
  198. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
  199. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
  200. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
  201. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
  202. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
  203. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
  204. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
  205. package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
  206. package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
  207. package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
  208. package/features/adminUsers/users/deleteUser/feature.js +19 -0
  209. package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
  210. package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
  211. package/features/adminUsers/users/deleteUser/index.js +2 -0
  212. package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
  213. package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
  214. package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
  215. package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
  216. package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
  217. package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
  218. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
  219. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
  220. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
  221. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
  222. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
  223. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
  224. package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
  225. package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
  226. package/features/adminUsers/users/getUser/feature.d.ts +3 -0
  227. package/features/adminUsers/users/getUser/feature.js +19 -0
  228. package/features/adminUsers/users/getUser/feature.js.map +1 -0
  229. package/features/adminUsers/users/getUser/index.d.ts +2 -0
  230. package/features/adminUsers/users/getUser/index.js +2 -0
  231. package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
  232. package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
  233. package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
  234. package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
  235. package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
  236. package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
  237. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
  238. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
  239. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
  240. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
  241. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
  242. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
  243. package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
  244. package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
  245. package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
  246. package/features/adminUsers/users/listUsers/feature.js +19 -0
  247. package/features/adminUsers/users/listUsers/feature.js.map +1 -0
  248. package/features/adminUsers/users/listUsers/index.d.ts +2 -0
  249. package/features/adminUsers/users/listUsers/index.js +2 -0
  250. package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
  251. package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
  252. package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
  253. package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
  254. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
  255. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
  256. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
  257. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
  258. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
  259. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
  260. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
  261. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
  262. package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
  263. package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
  264. package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
  265. package/features/adminUsers/users/updateUser/feature.js +19 -0
  266. package/features/adminUsers/users/updateUser/feature.js.map +1 -0
  267. package/features/adminUsers/users/updateUser/index.d.ts +2 -0
  268. package/features/adminUsers/users/updateUser/index.js +2 -0
  269. package/features/aiChats/AiChatSaveError.d.ts +6 -0
  270. package/features/aiChats/AiChatSaveError.js +8 -0
  271. package/features/aiChats/AiChatSaveError.js.map +1 -0
  272. package/features/aiChats/AiChatsGateway.d.ts +18 -0
  273. package/features/aiChats/AiChatsGateway.js +132 -0
  274. package/features/aiChats/AiChatsGateway.js.map +1 -0
  275. package/features/aiChats/AiChatsRepository.d.ts +36 -0
  276. package/features/aiChats/AiChatsRepository.js +110 -0
  277. package/features/aiChats/AiChatsRepository.js.map +1 -0
  278. package/features/aiChats/AiChatsRequestError.d.ts +9 -0
  279. package/features/aiChats/AiChatsRequestError.js +8 -0
  280. package/features/aiChats/AiChatsRequestError.js.map +1 -0
  281. package/features/aiChats/abstractions.d.ts +76 -0
  282. package/features/aiChats/abstractions.js +6 -0
  283. package/features/aiChats/abstractions.js.map +1 -0
  284. package/features/aiChats/feature.d.ts +3 -0
  285. package/features/aiChats/feature.js +19 -0
  286. package/features/aiChats/feature.js.map +1 -0
  287. package/features/aiChats/index.d.ts +9 -0
  288. package/features/aiChats/index.js +3 -0
  289. package/features/aiChats/messageOf.d.ts +2 -0
  290. package/features/aiChats/messageOf.js +7 -0
  291. package/features/aiChats/messageOf.js.map +1 -0
  292. package/features/aiSettings/abstractions.d.ts +16 -0
  293. package/features/aiSettings/abstractions.js +5 -0
  294. package/features/aiSettings/abstractions.js.map +1 -0
  295. package/features/aiSettings/index.d.ts +2 -0
  296. package/features/aiSettings/index.js +1 -0
  297. package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
  298. package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
  299. package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
  300. package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
  301. package/features/assumePermissions/AssumePermissionsContext.js +32 -0
  302. package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
  303. package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
  304. package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
  305. package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
  306. package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
  307. package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
  308. package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
  309. package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
  310. package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
  311. package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
  312. package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
  313. package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
  314. package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
  315. package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
  316. package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
  317. package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
  318. package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
  319. package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
  320. package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
  321. package/features/assumePermissions/abstractions.d.ts +78 -0
  322. package/features/assumePermissions/abstractions.js +8 -0
  323. package/features/assumePermissions/abstractions.js.map +1 -0
  324. package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
  325. package/features/assumePermissions/assumePermissionsHeader.js +7 -0
  326. package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
  327. package/features/assumePermissions/feature.d.ts +4 -0
  328. package/features/assumePermissions/feature.js +32 -0
  329. package/features/assumePermissions/feature.js.map +1 -0
  330. package/features/assumePermissions/index.d.ts +4 -0
  331. package/features/assumePermissions/index.js +2 -0
  332. package/features/banners/Banners.d.ts +15 -0
  333. package/features/banners/Banners.js +39 -0
  334. package/features/banners/Banners.js.map +1 -0
  335. package/features/banners/abstractions.d.ts +34 -0
  336. package/features/banners/abstractions.js +5 -0
  337. package/features/banners/abstractions.js.map +1 -0
  338. package/features/banners/feature.d.ts +3 -0
  339. package/features/banners/feature.js +17 -0
  340. package/features/banners/feature.js.map +1 -0
  341. package/features/banners/index.d.ts +2 -0
  342. package/features/banners/index.js +2 -0
  343. package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
  344. package/features/dateFormatter/formatUtcOffset.js +11 -0
  345. package/features/dateFormatter/formatUtcOffset.js.map +1 -0
  346. package/features/debugger/DebugSessionsRepository.d.ts +35 -0
  347. package/features/debugger/DebugSessionsRepository.js +57 -0
  348. package/features/debugger/DebugSessionsRepository.js.map +1 -0
  349. package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
  350. package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
  351. package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
  352. package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
  353. package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
  354. package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
  355. package/features/debugger/abstractions.d.ts +50 -0
  356. package/features/debugger/abstractions.js +5 -0
  357. package/features/debugger/abstractions.js.map +1 -0
  358. package/features/debugger/constants.d.ts +1 -0
  359. package/features/debugger/constants.js +4 -0
  360. package/features/debugger/constants.js.map +1 -0
  361. package/features/debugger/feature.d.ts +3 -0
  362. package/features/debugger/feature.js +19 -0
  363. package/features/debugger/feature.js.map +1 -0
  364. package/features/debugger/index.d.ts +3 -0
  365. package/features/debugger/index.js +3 -0
  366. package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
  367. package/features/formModel/AccessControlRuleEvaluator.js +30 -0
  368. package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
  369. package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
  370. package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
  371. package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
  372. package/features/formModel/ConditionRuleEvaluator.js +34 -4
  373. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  374. package/features/formModel/Field.d.ts +14 -1
  375. package/features/formModel/Field.js +41 -5
  376. package/features/formModel/Field.js.map +1 -1
  377. package/features/formModel/FieldBuilder.d.ts +3 -3
  378. package/features/formModel/FieldBuilder.js +2 -1
  379. package/features/formModel/FieldBuilder.js.map +1 -1
  380. package/features/formModel/FieldBuilder.test.js +158 -1
  381. package/features/formModel/FieldBuilder.test.js.map +1 -1
  382. package/features/formModel/FocusManager.js +10 -3
  383. package/features/formModel/FocusManager.js.map +1 -1
  384. package/features/formModel/FormErrors.js +1 -1
  385. package/features/formModel/FormErrors.js.map +1 -1
  386. package/features/formModel/FormModel.d.ts +2 -0
  387. package/features/formModel/FormModel.js +32 -9
  388. package/features/formModel/FormModel.js.map +1 -1
  389. package/features/formModel/FormModel.test.js +835 -4
  390. package/features/formModel/FormModel.test.js.map +1 -1
  391. package/features/formModel/ObjectField.d.ts +12 -1
  392. package/features/formModel/ObjectField.js +70 -20
  393. package/features/formModel/ObjectField.js.map +1 -1
  394. package/features/formModel/Rules.test.js +224 -16
  395. package/features/formModel/Rules.test.js.map +1 -1
  396. package/features/formModel/abstractions.d.ts +56 -4
  397. package/features/formModel/abstractions.js +2 -1
  398. package/features/formModel/abstractions.js.map +1 -1
  399. package/features/formModel/createFieldRenderer.d.ts +42 -0
  400. package/features/formModel/createFieldRenderer.js +33 -10
  401. package/features/formModel/createFieldRenderer.js.map +1 -1
  402. package/features/formModel/feature.js +2 -0
  403. package/features/formModel/feature.js.map +1 -1
  404. package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
  405. package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
  406. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  407. package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
  408. package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
  409. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  410. package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
  411. package/features/formModel/fieldTypes/dateLimits.js +64 -0
  412. package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
  413. package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
  414. package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
  415. package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
  416. package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
  417. package/features/formModel/hasSubtreeFocusRequest.js +15 -0
  418. package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
  419. package/features/formModel/index.d.ts +3 -2
  420. package/features/formModel/index.js +2 -1
  421. package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
  422. package/features/formModel/jsonSchema/JsonSchema.js +0 -0
  423. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
  424. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
  425. package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
  426. package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
  427. package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
  428. package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
  429. package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
  430. package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
  431. package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
  432. package/features/formModel/jsonSchema/PlainObject.js +0 -0
  433. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
  434. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
  435. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
  436. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
  437. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
  438. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
  439. package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
  440. package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
  441. package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
  442. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
  443. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
  444. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
  445. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
  446. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
  447. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
  448. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
  449. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
  450. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
  451. package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
  452. package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
  453. package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
  454. package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
  455. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
  456. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
  457. package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
  458. package/features/formModel/jsonSchema/isPlainObject.js +4 -0
  459. package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
  460. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
  461. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
  462. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
  463. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
  464. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
  465. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
  466. package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
  467. package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
  468. package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
  469. package/features/formModel/renderers.d.ts +1 -0
  470. package/features/formModel/renderers.js +1 -0
  471. package/features/notifications/Notifications.d.ts +1 -0
  472. package/features/notifications/Notifications.js +3 -0
  473. package/features/notifications/Notifications.js.map +1 -1
  474. package/features/notifications/Notifications.test.d.ts +1 -0
  475. package/features/notifications/Notifications.test.js +106 -0
  476. package/features/notifications/Notifications.test.js.map +1 -0
  477. package/features/notifications/NotificationsRenderer.d.ts +2 -1
  478. package/features/notifications/NotificationsRenderer.js +23 -4
  479. package/features/notifications/NotificationsRenderer.js.map +1 -1
  480. package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
  481. package/features/notifications/NotificationsRenderer.test.js +261 -0
  482. package/features/notifications/NotificationsRenderer.test.js.map +1 -0
  483. package/features/notifications/abstractions.d.ts +13 -2
  484. package/features/notifications/abstractions.js.map +1 -1
  485. package/features/security/LogIn/LogInUseCase.d.ts +0 -1
  486. package/features/security/LogIn/LogInUseCase.js +2 -5
  487. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  488. package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
  489. package/features/security/LogIn/hasAppPermissions.js +8 -0
  490. package/features/security/LogIn/hasAppPermissions.js.map +1 -0
  491. package/features/wcp/ReactLicense.d.ts +6 -1
  492. package/features/wcp/ReactLicense.js +17 -2
  493. package/features/wcp/ReactLicense.js.map +1 -1
  494. package/features/wcp/WcpGateway.js +4 -0
  495. package/features/wcp/WcpGateway.js.map +1 -1
  496. package/hooks/useHotkeys.js +6 -4
  497. package/hooks/useHotkeys.js.map +1 -1
  498. package/index.d.ts +27 -3
  499. package/index.js +23 -6
  500. package/modules/AccessManagementExtension.js +3 -1
  501. package/modules/AccessManagementExtension.js.map +1 -1
  502. package/modules/DebuggerExtension.d.ts +2 -0
  503. package/modules/DebuggerExtension.js +55 -0
  504. package/modules/DebuggerExtension.js.map +1 -0
  505. package/package.json +41 -41
  506. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +1 -2
  507. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
  508. package/presentation/accessManagement/roles/RolesPresenter.js +1 -2
  509. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
  510. package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
  511. package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
  512. package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
  513. package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
  514. package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
  515. package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
  516. package/presentation/accessManagement/roles/components/RolesView.js +6 -216
  517. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
  518. package/presentation/accessManagement/teams/TeamsPresenter.js +1 -2
  519. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
  520. package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
  521. package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
  522. package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
  523. package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
  524. package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
  525. package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
  526. package/presentation/accessManagement/teams/components/TeamsView.js +6 -198
  527. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
  528. package/presentation/adminUsers/AdminUsers.d.ts +10 -0
  529. package/presentation/adminUsers/AdminUsers.js +77 -0
  530. package/presentation/adminUsers/AdminUsers.js.map +1 -0
  531. package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
  532. package/presentation/adminUsers/SecurityPermission.js +15 -0
  533. package/presentation/adminUsers/SecurityPermission.js.map +1 -0
  534. package/presentation/adminUsers/UserItem.d.ts +10 -0
  535. package/presentation/adminUsers/UserItem.js +0 -0
  536. package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
  537. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
  538. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
  539. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  540. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
  541. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  542. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  543. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
  544. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  545. package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
  546. package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
  547. package/presentation/adminUsers/routes.d.ts +10 -0
  548. package/presentation/adminUsers/routes.js +20 -0
  549. package/presentation/adminUsers/routes.js.map +1 -0
  550. package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
  551. package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
  552. package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
  553. package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
  554. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
  555. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
  556. package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
  557. package/presentation/adminUsers/views/Account/Account.js +137 -0
  558. package/presentation/adminUsers/views/Account/Account.js.map +1 -0
  559. package/presentation/adminUsers/views/Account/index.d.ts +1 -0
  560. package/presentation/adminUsers/views/Account/index.js +1 -0
  561. package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
  562. package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
  563. package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
  564. package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
  565. package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
  566. package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
  567. package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
  568. package/presentation/adminUsers/views/Users/UsersView.js +15 -0
  569. package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
  570. package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
  571. package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
  572. package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
  573. package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
  574. package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
  575. package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
  576. package/presentation/adminUsers/views/Users/search.js +21 -0
  577. package/presentation/adminUsers/views/Users/search.js.map +1 -0
  578. package/presentation/adminUsers/views/Users/search.svg +20 -0
  579. package/presentation/adminUsers/views/utils.d.ts +3 -0
  580. package/presentation/adminUsers/views/utils.js +12 -0
  581. package/presentation/adminUsers/views/utils.js.map +1 -0
  582. package/presentation/aiChats/AiChatsPanelPresenter.d.ts +28 -0
  583. package/presentation/aiChats/AiChatsPanelPresenter.js +132 -0
  584. package/presentation/aiChats/AiChatsPanelPresenter.js.map +1 -0
  585. package/presentation/aiChats/abstractions.d.ts +69 -0
  586. package/presentation/aiChats/abstractions.js +5 -0
  587. package/presentation/aiChats/abstractions.js.map +1 -0
  588. package/presentation/aiChats/feature.d.ts +3 -0
  589. package/presentation/aiChats/feature.js +17 -0
  590. package/presentation/aiChats/feature.js.map +1 -0
  591. package/presentation/aiChats/index.d.ts +2 -0
  592. package/presentation/aiChats/index.js +2 -0
  593. package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
  594. package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
  595. package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
  596. package/presentation/assumePermissions/abstractions.d.ts +30 -0
  597. package/presentation/assumePermissions/abstractions.js +5 -0
  598. package/presentation/assumePermissions/abstractions.js.map +1 -0
  599. package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
  600. package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
  601. package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
  602. package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
  603. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
  604. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
  605. package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
  606. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
  607. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
  608. package/presentation/assumePermissions/feature.d.ts +3 -0
  609. package/presentation/assumePermissions/feature.js +17 -0
  610. package/presentation/assumePermissions/feature.js.map +1 -0
  611. package/presentation/assumePermissions/index.d.ts +4 -0
  612. package/presentation/assumePermissions/index.js +4 -0
  613. package/presentation/banners/BannersPresenter.d.ts +14 -0
  614. package/presentation/banners/BannersPresenter.js +60 -0
  615. package/presentation/banners/BannersPresenter.js.map +1 -0
  616. package/presentation/banners/abstractions.d.ts +24 -0
  617. package/presentation/banners/abstractions.js +5 -0
  618. package/presentation/banners/abstractions.js.map +1 -0
  619. package/presentation/banners/components/Banner.d.ts +10 -0
  620. package/presentation/banners/components/Banner.js +32 -0
  621. package/presentation/banners/components/Banner.js.map +1 -0
  622. package/presentation/banners/components/BannerBar.d.ts +11 -0
  623. package/presentation/banners/components/BannerBar.js +51 -0
  624. package/presentation/banners/components/BannerBar.js.map +1 -0
  625. package/presentation/banners/feature.d.ts +3 -0
  626. package/presentation/banners/feature.js +17 -0
  627. package/presentation/banners/feature.js.map +1 -0
  628. package/presentation/banners/index.d.ts +6 -0
  629. package/presentation/banners/index.js +4 -0
  630. package/presentation/banners/useBanner.d.ts +10 -0
  631. package/presentation/banners/useBanner.js +15 -0
  632. package/presentation/banners/useBanner.js.map +1 -0
  633. package/presentation/commandPalette/CommandPalettePresenter.js +3 -1
  634. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
  635. package/presentation/commandPalette/abstractions.d.ts +5 -0
  636. package/presentation/commandPalette/abstractions.js.map +1 -1
  637. package/presentation/commandPalette/commands/AiChatsCommand.d.ts +24 -0
  638. package/presentation/commandPalette/commands/AiChatsCommand.js +41 -0
  639. package/presentation/commandPalette/commands/AiChatsCommand.js.map +1 -0
  640. package/presentation/commandPalette/commands/AskAiCommand.d.ts +1 -0
  641. package/presentation/commandPalette/commands/AskAiCommand.js +3 -2
  642. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -1
  643. package/presentation/commandPalette/commands/feature.js +2 -0
  644. package/presentation/commandPalette/commands/feature.js.map +1 -1
  645. package/presentation/createReactiveComponent.d.ts +1 -0
  646. package/presentation/createReactiveComponent.js +1 -0
  647. package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
  648. package/presentation/debugger/DebuggerPresenter.js +45 -0
  649. package/presentation/debugger/DebuggerPresenter.js.map +1 -0
  650. package/presentation/debugger/abstractions.d.ts +17 -0
  651. package/presentation/debugger/abstractions.js +5 -0
  652. package/presentation/debugger/abstractions.js.map +1 -0
  653. package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
  654. package/presentation/debugger/components/DebuggerIndicator.js +45 -0
  655. package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
  656. package/presentation/debugger/components/DebuggerView.d.ts +4 -0
  657. package/presentation/debugger/components/DebuggerView.js +44 -0
  658. package/presentation/debugger/components/DebuggerView.js.map +1 -0
  659. package/presentation/debugger/downloadJson.d.ts +7 -0
  660. package/presentation/debugger/downloadJson.js +17 -0
  661. package/presentation/debugger/downloadJson.js.map +1 -0
  662. package/presentation/debugger/feature.d.ts +3 -0
  663. package/presentation/debugger/feature.js +17 -0
  664. package/presentation/debugger/feature.js.map +1 -0
  665. package/presentation/debugger/routes.d.ts +4 -0
  666. package/presentation/debugger/routes.js +10 -0
  667. package/presentation/debugger/routes.js.map +1 -0
  668. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +4 -3
  669. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  670. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  671. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  672. package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
  673. package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
  674. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
  675. package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
  676. package/presentation/listPresenter/QueryMatcher.js +72 -2
  677. package/presentation/listPresenter/QueryMatcher.js.map +1 -1
  678. package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
  679. package/presentation/listPresenter/QueryMatcher.test.js +345 -0
  680. package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
  681. package/presentation/trashBin/TrashBinPresenter.js +3 -1
  682. package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
  683. package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
  684. package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
  685. package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
  686. package/presentation/trashBin/abstractions.d.ts +1 -1
  687. package/presentation/trashBin/abstractions.js.map +1 -1
  688. package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
  689. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
  690. package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
  691. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
  692. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
  693. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
  694. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
  695. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
  696. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
  697. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
  698. package/static/svg/search.43fa797c.svg +20 -0
  699. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
  700. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
  701. package/features/aiChat/AiChatGateway.js.map +0 -1
  702. package/features/aiChat/AiChatPresenter.d.ts +0 -32
  703. package/features/aiChat/AiChatPresenter.js +0 -220
  704. package/features/aiChat/AiChatPresenter.js.map +0 -1
  705. package/features/aiChat/abstractions.d.ts +0 -124
  706. package/features/aiChat/abstractions.js +0 -6
  707. package/features/aiChat/abstractions.js.map +0 -1
  708. package/features/aiChat/feature.d.ts +0 -3
  709. package/features/aiChat/feature.js +0 -19
  710. package/features/aiChat/feature.js.map +0 -1
  711. package/features/aiChat/index.d.ts +0 -6
  712. package/features/aiChat/index.js +0 -3
  713. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
  714. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
  715. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
  716. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
  717. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
  718. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/FormModel.test.js","sources":["../../../src/features/formModel/FormModel.test.ts"],"sourcesContent":["import { describe, it, expect, vi } from \"vitest\";\nimport { z } from \"zod\";\nimport { Container } from \"@webiny/di\";\nimport { FormModelFeature } from \"./feature.js\";\nimport {\n FormModelFactory,\n type IFormModel,\n type IFormModelConfig,\n type IRowNodeVM,\n type ITabsNodeVM,\n type IElementNodeVM,\n type IObjectFieldVM,\n type ILayoutNodeAccessHandle,\n type LayoutNodeVM\n} from \"./abstractions.js\";\n\nfunction createForm(config: IFormModelConfig): IFormModel {\n const container = new Container();\n FormModelFeature.register(container);\n return container.resolve(FormModelFactory).create(config);\n}\n\nfunction asRow(node: LayoutNodeVM): IRowNodeVM {\n if (node.type !== \"row\") {\n throw new Error(`Expected row node, got \"${node.type}\"`);\n }\n return node;\n}\n\nfunction createBasicForm() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields.text().label(\"Path\").required(\"Path is required\")\n })\n });\n}\n\ndescribe(\"FormModel\", () => {\n describe(\"field creation\", () => {\n it(\"should create fields from builder definitions\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\")).toBeDefined();\n expect(form.field(\"path\")).toBeDefined();\n });\n\n it(\"should throw on unknown field access\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"unknown\")).toThrow('Field \"unknown\" not found.');\n });\n });\n\n describe(\"setValue / getValue\", () => {\n it(\"should set and get field values\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Hello\");\n expect(form.field(\"title\").getValue()).toBe(\"Hello\");\n });\n\n it(\"should default to null when no defaultValue is set\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should use defaultValue when provided\", () => {\n const form = createForm({\n fields: fields => ({\n status: fields.text().defaultValue(\"draft\")\n })\n });\n expect(form.field(\"status\").getValue()).toBe(\"draft\");\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"should return all field values including hidden\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n const data = form.getData();\n\n expect(data).toEqual({\n title: \"Hello\",\n pageType: \"static\"\n });\n });\n\n it(\"should hydrate fields from data object\", () => {\n const form = createBasicForm();\n form.setData({ title: \"My Page\", path: \"/my-page\" });\n\n expect(form.field(\"title\").getValue()).toBe(\"My Page\");\n expect(form.field(\"path\").getValue()).toBe(\"/my-page\");\n });\n\n it(\"should ignore unknown fields in setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Test\", unknown: \"value\" });\n expect(form.field(\"title\").getValue()).toBe(\"Test\");\n expect(() => form.field(\"unknown\")).toThrow();\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"should not be dirty initially\", () => {\n const form = createBasicForm();\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after setValue\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Loaded\", path: \"/loaded\" });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should not be dirty after reverting to baseline value\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n form.field(\"title\").setValue(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should revert values to setData baseline\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n form.reset();\n\n expect(form.field(\"title\").getValue()).toBe(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should clear validation state on reset\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.errors.length).toBeGreaterThan(0);\n\n form.reset();\n expect(form.errors).toEqual([]);\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"should fail validation for empty required fields\", async () => {\n const form = createBasicForm();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.isValid).toBe(false);\n expect(form.errors).toHaveLength(2);\n expect(form.errors[0].path).toBe(\"title\");\n expect(form.errors[0].message).toBe(\"Title is required\");\n expect(form.errors[1].path).toBe(\"path\");\n });\n\n it(\"should pass validation when required fields have values\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.isValid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should validate zod schemas\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().label(\"Email\").schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"not-an-email\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Invalid email\");\n });\n\n it(\"should run required check before zod schema\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .label(\"Email\")\n .required(\"Email is required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Email is required\");\n });\n\n it(\"should expose field-level validation in field.vm\", async () => {\n const form = createBasicForm();\n await form.validate();\n\n const titleVm = form.field(\"title\").vm;\n expect(titleVm.validation.isValid).toBe(false);\n expect(titleVm.validation.message).toBe(\"Title is required\");\n });\n\n it(\"isValid should be null before first validation\", () => {\n const form = createBasicForm();\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"submit\", () => {\n it(\"should return data when valid\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const result = await form.submit();\n\n expect(result).toEqual({\n title: \"My Page\",\n path: \"/my-page\"\n });\n });\n\n it(\"should return false when invalid\", async () => {\n const form = createBasicForm();\n const result = await form.submit();\n expect(result).toBe(false);\n });\n });\n\n describe(\"vm\", () => {\n it(\"should expose layout with field VMs\", () => {\n const form = createBasicForm();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n expect(asRow(vm.layout[1]).fields[0].name).toBe(\"path\");\n });\n\n it(\"should exclude hidden fields from layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should expose isDirty and isValid\", () => {\n const form = createBasicForm();\n expect(form.vm.isDirty).toBe(false);\n expect(form.vm.isValid).toBeNull();\n });\n\n it(\"should expose field onChange that calls setValue\", () => {\n const form = createBasicForm();\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n fieldVM.onChange(\"New Value\");\n expect(form.field(\"title\").getValue()).toBe(\"New Value\");\n });\n });\n\n describe(\"layout\", () => {\n it(\"should generate default layout (one row per non-hidden field)\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n });\n\n it(\"should use explicit layout when provided\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\", \"path\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields).toHaveLength(2);\n });\n\n it(\"should warn about orphan fields in explicit layout\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Field \"path\" is not in the layout')\n );\n\n warnSpy.mockRestore();\n });\n\n it(\"should not warn about hidden orphan fields\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n });\n\n describe(\"beforeChange / afterChange\", () => {\n it(\"should run beforeChange pipeline in order, transforming value\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n .beforeChange(value => String(value).toLowerCase())\n })\n });\n\n form.field(\"path\").setValue(\" Hello World \");\n expect(form.field(\"path\").getValue()).toBe(\"hello world\");\n });\n\n it(\"should run afterChange after value is stored\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n });\n\n it(\"should pass transformed value to afterChange\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).toLowerCase())\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"path\").setValue(\"HELLO\");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n expect(received).toEqual([\"hello\"]);\n });\n\n it(\"should not fire afterChange when value does not change (recursion guard)\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(() => \"constant\")\n .afterChange(() => {\n calls.push(\"afterChange\");\n })\n })\n });\n\n form.field(\"title\").setValue(\"anything\");\n expect(calls).toEqual([\"afterChange\"]);\n expect(form.field(\"title\").getValue()).toBe(\"constant\");\n\n // Setting again — beforeChange still produces \"constant\", which === current value.\n // afterChange should NOT fire.\n form.field(\"title\").setValue(\"something else\");\n expect(calls).toEqual([\"afterChange\"]);\n });\n\n it(\"should not trigger beforeChange or afterChange on setData\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(value => {\n calls.push(\"before\");\n return value;\n })\n .afterChange(() => {\n calls.push(\"after\");\n })\n })\n });\n\n form.setData({ title: \"Loaded\" });\n expect(calls).toEqual([]);\n expect(form.field(\"title\").getValue()).toBe(\"Loaded\");\n });\n\n it(\"should support cross-field afterChange triggering target field pipeline\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange((value, { form }) => {\n // Auto-generate path from title\n const path = \"/\" + String(value).toLowerCase().replace(/\\s+/g, \"-\");\n form.field(\"path\").setValue(path);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => {\n // Ensure path starts with /\n const str = String(value);\n return str.startsWith(\"/\") ? str : \"/\" + str;\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n });\n\n it(\"should allow appending callbacks to existing fields at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n const field = form.field(\"title\");\n field.addBeforeChange(value => String(value).toUpperCase());\n field.setValue(\"hello\");\n expect(field.getValue()).toBe(\"HELLO\");\n });\n\n it(\"should chain builder callbacks with runtime-appended callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Append another transform at runtime (simulating a modifier)\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should demonstrate title→path with path-dirty tracking\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .required(\"Title is required\")\n .afterChange((value, { form }) => {\n // Only auto-generate if path is empty\n if (form.field(\"path\").getValue()) {\n return;\n }\n const slug = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n form.field(\"path\").setValue(\"/\" + slug);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Type title → path auto-fills (path was null/empty)\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n\n // Manually edit path → title changes no longer overwrite\n form.field(\"path\").setValue(\"/custom-path\");\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n\n form.field(\"title\").setValue(\"New Title\");\n // Path still \"/custom-path\" because path is no longer empty\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n });\n });\n\n describe(\"field with options\", () => {\n it(\"should resolve static options in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ]);\n });\n\n it(\"should resolve reactive options function in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options(() => {\n // Dynamic options based on form state\n return [{ label: \"Dynamic\", value: \"dynamic\" }];\n })\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([{ label: \"Dynamic\", value: \"dynamic\" }]);\n });\n });\n\n describe(\"modifiers (Phase 3)\", () => {\n describe(\"form.fields() — add / replace / remove\", () => {\n it(\"should add a new field via form.fields()\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n }));\n\n expect(form.field(\"language\")).toBeDefined();\n expect(form.field(\"language\").type).toBe(\"text\");\n expect(form.getData()).toHaveProperty(\"language\");\n });\n\n it(\"should add a field that appears in getData but not layout until positioned\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.fields(fields => ({\n description: fields.text().label(\"Description\")\n }));\n\n // Field exists in data\n expect(form.getData()).toHaveProperty(\"description\");\n\n // But not in layout until explicitly positioned\n const fieldNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(fieldNames).not.toContain(\"description\");\n\n // Position it\n form.layout(layout => [layout.row(\"description\").after(\"title\")]);\n const updatedNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(updatedNames).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should replace an existing field when key matches\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Old Value\");\n\n form.fields(fields => ({\n title: fields.text().label(\"Replaced Title\").placeholder(\"New placeholder\")\n }));\n\n // The field is replaced entirely — old value is gone\n expect(form.field(\"title\").config.label).toBe(\"Replaced Title\");\n expect(form.field(\"title\").config.placeholder).toBe(\"New placeholder\");\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should remove a field via undefined\", () => {\n const form = createBasicForm();\n form.fields(() => ({\n path: undefined\n }));\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove a field via field.remove()\", () => {\n const form = createBasicForm();\n form.field(\"path\").remove();\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove field from layout when removed via field.remove()\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n\n form.field(\"path\").remove();\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should handle add + remove in the same fields() call\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n path: undefined,\n slug: fields.text().label(\"Slug\")\n }));\n\n expect(() => form.field(\"path\")).toThrow();\n expect(form.field(\"slug\")).toBeDefined();\n });\n });\n\n describe(\"form.field().setDisabled()\", () => {\n it(\"should disable a field via setDisabled(true)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n\n expect(form.field(\"title\").vm.disabled).toBe(true);\n });\n\n it(\"should re-enable a field via setDisabled(false)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n form.field(\"title\").setDisabled(false);\n\n expect(form.field(\"title\").vm.disabled).toBe(false);\n });\n });\n\n describe(\"form.field().as() — type narrowing\", () => {\n it(\"should return the field when type matches\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([{ label: \"English\", value: \"en\" }])\n })\n });\n\n const textField = form.field(\"lang\").as(\"text\");\n expect(textField).toBe(form.field(\"lang\"));\n });\n\n it(\"should throw when type does not match\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"title\").as(\"boolean\")).toThrow(\n 'Field \"title\" is type \"text\", not \"boolean\".'\n );\n });\n });\n\n describe(\"modifier appends callbacks to existing fields\", () => {\n it(\"should append beforeChange to an existing field\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Modifier appends another transform\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should append afterChange to an existing field\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n // Modifier appends afterChange\n form.field(\"title\").addAfterChange((value, { form }) => {\n received.push(value);\n form.field(\"path\").setValue(\"/\" + String(value).toLowerCase());\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n expect(form.field(\"path\").getValue()).toBe(\"/hello\");\n });\n });\n\n describe(\"layout positional modifiers\", () => {\n function createFormWithLayout() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.row(\"path\"),\n layout.row(\"description\")\n ]\n });\n }\n\n it(\"should insert a row before a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").before(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"language\", \"path\", \"description\"]);\n });\n\n it(\"should insert a row after a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\", \"description\"]);\n });\n\n it(\"should replace a target row\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n slug: fields.text().label(\"Slug\")\n }));\n\n form.layout(layout => [layout.row(\"slug\").replace(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"slug\", \"description\"]);\n });\n\n it(\"should remove a field from layout\", () => {\n const form = createFormWithLayout();\n\n form.layout(layout => {\n layout.remove(\"path\");\n return [];\n });\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should append when no position is specified\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n\n it(\"should append when target is not found\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"nonexistent\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n });\n\n describe(\"IFormModifier integration\", () => {\n it(\"should support a full modifier workflow: add field + position in layout + append callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Simulate a language modifier\n const modifier = {\n modify(form: IFormModel) {\n // Add language field\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n .afterChange((value, { form }) => {\n const current = String(form.field(\"path\").getValue() || \"\");\n const stripped = current.replace(/^\\/[a-z]{2}\\//, \"/\");\n if (value && value !== \"en\") {\n form.field(\"path\").setValue(\"/\" + value + stripped);\n } else {\n form.field(\"path\").setValue(stripped);\n }\n })\n }));\n\n // Position after path\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n }\n };\n\n modifier.modify(form);\n\n // Verify layout order\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\"]);\n\n // Verify language field works\n form.field(\"path\").setValue(\"/demo\");\n form.field(\"language\").setValue(\"de\");\n expect(form.field(\"path\").getValue()).toBe(\"/de/demo\");\n\n // Verify getData includes language\n const data = form.getData();\n expect(data.language).toBe(\"de\");\n });\n });\n });\n\n describe(\"layout system expansion (Phase 5)\", () => {\n describe(\"separator\", () => {\n it(\"should include separator nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout.row(\"description\")\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"row\");\n });\n\n it(\"should support separator via modifier layout API\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"description\")]\n });\n\n form.layout(layout => [layout.separator().after(\"title\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[1].type).toBe(\"separator\");\n });\n });\n\n describe(\"tabs\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\"),\n metaDescription: fields.text().label(\"Meta Description\")\n }),\n layout: layout => [\n layout.row(\"title\", \"slug\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\")\n .description(\"Optimize how this page appears in search\")\n .layout(layout => [\n layout.row(\"metaTitle\"),\n layout.row(\"metaDescription\")\n ]);\n })\n ]\n });\n }\n\n it(\"should resolve tabs layout node with tab definitions\", () => {\n const form = createFormWithTabs();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.id).toBe(\"settings\");\n expect(tabsNode.tabs).toHaveLength(2);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[0].label).toBe(\"General\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[1].label).toBe(\"SEO\");\n expect(tabsNode.tabs[1].description).toBe(\n \"Optimize how this page appears in search\"\n );\n });\n\n it(\"should resolve fields inside tab layouts\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n const generalTab = tabsNode.tabs[0];\n expect(generalTab.layout).toHaveLength(1);\n expect(generalTab.layout[0].type).toBe(\"row\");\n const generalRow = generalTab.layout[0] as IRowNodeVM;\n expect(generalRow.fields[0].name).toBe(\"description\");\n\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(2);\n });\n\n it(\"should default activeTabId to the first tab\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should switch active tab via setActiveTab\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"seo\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"seo\");\n });\n\n it(\"should fall back to first tab when active tab ID is invalid\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"nonexistent\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should compute hasErrors for tabs based on referenced fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n metaTitle: fields.text().label(\"Meta Title\").required(\"Required\")\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Before validation, no errors\n let tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(false);\n\n // Fill only title, leave metaTitle empty\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n\n it(\"should not warn about fields inside tabs as orphans\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n\n it(\"should return null for tabs with empty tabs array\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.tabs(\"empty\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n });\n\n describe(\"element\", () => {\n it(\"should include element nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.element(\"usage-stats\", { plan: \"enterprise\" })\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[1].type).toBe(\"element\");\n\n const elementNode = vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"usage-stats\");\n expect(elementNode.props).toEqual({ plan: \"enterprise\" });\n });\n\n it(\"should support element without props\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.element(\"divider\")]\n });\n\n const elementNode = form.vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"divider\");\n expect(elementNode.props).toBeUndefined();\n });\n });\n\n describe(\"named layout node access — form.layout(nodeId)\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n }\n\n it(\"should access a tabs node by ID and add a new tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].label).toBe(\"Analytics\");\n });\n\n it(\"should add a tab before an existing tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .before(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].id).toBe(\"seo\");\n });\n\n it(\"should throw when accessing a non-existent node ID\", () => {\n const form = createFormWithTabs();\n expect(() =>\n (form.layout(\"nonexistent\") as ILayoutNodeAccessHandle).as(\"tabs\")\n ).toThrow('Layout node \"nonexistent\" not found.');\n });\n });\n\n describe(\"positional modifiers targeting tabs/element nodes\", () => {\n it(\"should insert a row before a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n subtitle: fields.text().label(\"Subtitle\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"subtitle\").before(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n expect(form.vm.layout[2].type).toBe(\"tabs\");\n\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"subtitle\");\n });\n\n it(\"should remove a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => {\n layout.remove(\"settings\");\n return [];\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n\n it(\"should replace a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"metaTitle\").replace(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(2);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"metaTitle\");\n });\n });\n\n describe(\"modifier integration with tabs\", () => {\n it(\"should support a full modifier workflow: base form with tabs + modifier adds tab + modifier appends to existing tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Modifier A: add analytics tab\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n // Verify full layout\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3); // row, separator, tabs\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[2] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n\n // SEO tab has metaTitle\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(1);\n\n // Verify all fields are in getData\n const data = form.getData();\n expect(data).toHaveProperty(\"trackingId\");\n });\n });\n });\n\n describe(\"object fields (Phase 6)\", () => {\n describe(\"non-list object field\", () => {\n function createFormWithObject() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Street is required\"),\n city: f.text().label(\"City\").required(\"City is required\")\n }))\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"address\")]\n });\n }\n\n it(\"should create an object field with children\", () => {\n const form = createFormWithObject();\n const field = form.field(\"address\");\n expect(field).toBeDefined();\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should access child fields via dot-notation\", () => {\n const form = createFormWithObject();\n const street = form.field(\"address.street\");\n expect(street).toBeDefined();\n expect(street.type).toBe(\"text\");\n });\n\n it(\"should throw on invalid dot-notation\", () => {\n const form = createFormWithObject();\n expect(() => form.field(\"address.zipcode\")).toThrow(\n 'Field \"address.zipcode\" not found.'\n );\n });\n\n it(\"should return nested object from getData\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const data = form.getData();\n expect(data.address).toEqual({\n street: \"123 Main St\",\n city: \"Springfield\"\n });\n });\n\n it(\"should hydrate children from setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n\n expect(form.field(\"address.street\").getValue()).toBe(\"456 Oak Ave\");\n expect(form.field(\"address.city\").getValue()).toBe(\"Portland\");\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after changing a child field\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n form.field(\"address.street\").setValue(\"789 Pine Rd\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should validate children recursively\", async () => {\n const form = createFormWithObject();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors.length).toBeGreaterThan(0);\n // Parent object is filtered out when children have errors\n expect(form.errors.some(e => e.path === \"address\")).toBe(false);\n expect(form.errors.some(e => e.path === \"address.street\")).toBe(true);\n expect(form.errors.some(e => e.path === \"address.city\")).toBe(true);\n });\n\n it(\"should pass validation when children are valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should expose IObjectFieldVM from field.vm\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const vm = form.field(\"address\").vm as IObjectFieldVM;\n expect(vm.type).toBe(\"object\");\n expect(vm.isList).toBe(false);\n expect(vm.fields).toHaveLength(2);\n expect(vm.fields[0].name).toBe(\"street\");\n expect(vm.fields[0].value).toBe(\"123 Main St\");\n expect(vm.fields[1].name).toBe(\"city\");\n expect(vm.items).toHaveLength(0);\n });\n\n it(\"should render object field in a row via default layout\", () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\")\n }))\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(vm.layout[0].type).toBe(\"row\");\n const row = asRow(vm.layout[0]);\n expect(row.fields[0].type).toBe(\"object\");\n expect(row.fields[0].name).toBe(\"address\");\n });\n\n it(\"should reset to baseline values\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"Original St\", city: \"Original City\" }\n });\n\n form.field(\"address.street\").setValue(\"Changed St\");\n expect(form.isDirty).toBe(true);\n\n form.reset();\n expect(form.field(\"address.street\").getValue()).toBe(\"Original St\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should submit nested data when valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const result = await form.submit();\n expect(result).toEqual({\n title: \"Home\",\n address: {\n street: \"123 Main St\",\n city: \"Springfield\"\n }\n });\n });\n });\n\n describe(\"list object field\", () => {\n function createFormWithList() {\n return createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\").required(\"Name is required\"),\n model: f.text().label(\"Model\").required(\"Model is required\")\n }))\n .list()\n }),\n layout: layout => [layout.row(\"presets\")]\n });\n }\n\n it(\"should create a list object field\", () => {\n const form = createFormWithList();\n const field = form.field(\"presets\");\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should return empty array from getData initially\", () => {\n const form = createFormWithList();\n expect(form.getData().presets).toEqual([]);\n });\n\n it(\"should add items via the field VM\", () => {\n const form = createFormWithList();\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.isList).toBe(true);\n expect(vm.items).toHaveLength(0);\n\n vm.addItem();\n\n const updatedVm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(updatedVm.items).toHaveLength(1);\n expect(updatedVm.items[0].fields).toHaveLength(2);\n expect(updatedVm.items[0].fields[0].name).toBe(\"name\");\n });\n\n it(\"should hydrate list from setData\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const data = form.getData();\n expect(data.presets).toEqual([\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]);\n });\n\n it(\"should expose items via IObjectFieldVM\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.items).toHaveLength(2);\n expect(vm.items[0].fields[0].value).toBe(\"Default\");\n expect(vm.items[1].fields[1].value).toBe(\"claude-haiku\");\n });\n\n it(\"should remove items via item.remove()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].remove();\n\n expect(form.getData().presets).toEqual([{ name: \"Fast\", model: \"claude-haiku\" }]);\n });\n\n it(\"should remove items via removeItem()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" },\n { name: \"C\", model: \"c\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.removeItem(1);\n\n expect(form.getData().presets).toEqual([\n { name: \"A\", model: \"a\" },\n { name: \"C\", model: \"c\" }\n ]);\n });\n\n it(\"should validate all items\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"\", model: \"\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"should pass validation when all items are valid\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should validate with listSchema\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: [{ name: \"Only one\" }] });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"At least 2 presets are required\");\n });\n\n it(\"should be dirty after adding an item\", () => {\n const form = createFormWithList();\n form.setData({ presets: [] });\n expect(form.isDirty).toBe(false);\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.addItem();\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should have stable keys across re-renders\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" }\n ]\n });\n\n const vm1 = form.field(\"presets\").vm as IObjectFieldVM;\n const key0 = vm1.items[0].key;\n const key1 = vm1.items[1].key;\n\n // Re-read VM — keys should be the same\n const vm2 = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm2.items[0].key).toBe(key0);\n expect(vm2.items[1].key).toBe(key1);\n });\n\n it(\"should pass empty list validation when not required\", async () => {\n const form = createFormWithList();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should modify item field values via VM onChange\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [{ name: \"Default\", model: \"claude-sonnet\" }]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].fields[0].onChange(\"Updated\");\n\n expect((form.getData().presets as any[])[0].name).toBe(\"Updated\");\n });\n });\n\n describe(\"hasErrors rollup through tabs\", () => {\n it(\"should report hasErrors in tabs containing object fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Required\")\n }))\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"details\", tab => {\n tab.label(\"Details\").layout(layout => [layout.row(\"address\")]);\n })\n ]\n });\n\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n const tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n });\n });\n\n describe(\"templated object fields (Phase 8a)\", () => {\n function createFormWithTemplatedObject() {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .label(\"Content\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\").fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\").fields(f => ({\n body: f.text().label(\"Body\").required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"shape\", () => {\n it(\"starts with no active template and empty children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(field.isTemplated).toBe(true);\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"exposes available templates via VM\", () => {\n const form = createFormWithTemplatedObject();\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.isTemplated).toBe(true);\n expect(vm.availableTemplates).toEqual([\n { id: \"hero\", label: \"Hero Banner\" },\n { id: \"text\", label: \"Rich Text\" }\n ]);\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.fields).toEqual([]);\n });\n\n it(\"rejects .fields() alongside .template() at build time\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .fields(f => ({ x: f.text() }))\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/both .fields\\(\\) and .template\\(\\)/);\n });\n\n it(\"rejects duplicate template ids\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"a\", t => {\n t.label(\"A1\").fields(f => ({ x: f.text() }));\n })\n .template(\"a\", t => {\n t.label(\"A2\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/Duplicate template id \"a\"/);\n });\n\n it(\"rejects reserved _templateId as template id\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"_templateId\", t => {\n t.label(\"X\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).toThrow(/reserved/);\n });\n\n it(\"rejects _templateId as a child field name in a template\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ _templateId: f.text() }));\n })\n })\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"allows combining .list() with .template() (Phase 8b)\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .list()\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).not.toThrow();\n });\n });\n\n describe(\"setTemplate / switching\", () => {\n it(\"builds children when a template is selected\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n\n expect(field.activeTemplateId).toBe(\"hero\");\n expect(field.children.size).toBe(2);\n expect(form.field(\"content.heading\").type).toBe(\"text\");\n expect(form.field(\"content.image\").type).toBe(\"text\");\n });\n\n it(\"discards data when switching to a different template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hello\");\n\n field.setTemplate(\"text\");\n\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\")).toBeDefined();\n expect(() => form.field(\"content.heading\")).toThrow();\n });\n\n it(\"is a no-op when setting the currently active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Preserved\");\n field.setTemplate(\"hero\");\n\n expect(form.field(\"content.heading\").getValue()).toBe(\"Preserved\");\n });\n\n it(\"throws when setting an unknown template id\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(() => field.setTemplate(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"wires the form reference on newly created children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // Setting a value on a child requires _form to be wired for pipelines.\n expect(() => form.field(\"content.heading\").setValue(\"OK\")).not.toThrow();\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"returns null when no template is active\", () => {\n const form = createFormWithTemplatedObject();\n expect(form.getData().content).toBeNull();\n });\n\n it(\"includes _templateId and child values when active\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Welcome\");\n form.field(\"content.image\").setValue(\"cover.jpg\");\n\n expect(form.getData().content).toEqual({\n _templateId: \"hero\",\n heading: \"Welcome\",\n image: \"cover.jpg\"\n });\n });\n\n it(\"hydrates via setData by reading _templateId\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"text\", body: \"Lorem ipsum\" }\n });\n\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\").getValue()).toBe(\"Lorem ipsum\");\n });\n\n it(\"setData with null clears the active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"X\");\n\n form.setData({ content: null as any });\n\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"setData ignores unknown template id silently\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"nope\", foo: \"bar\" } as any\n });\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"required templated object fails validation when no template active\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path === \"content\")).toBe(true);\n });\n\n it(\"required templated object passes when template active with valid children\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\")\n }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hi\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"validates child fields inside active template\", async () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // heading is required; no value set\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"passes validation when object is optional and no template selected\", async () => {\n const form = createFormWithTemplatedObject();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"template visibility\", () => {\n it(\"filters availableTemplates by reactive visible callback\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n content: fields\n .object()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n\n it(\"hiding a template does not clear an already-active selection\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"enterprise\"),\n content: fields.object().template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"premium\");\n form.field(\"content.y\").setValue(\"set\");\n\n form.field(\"plan\").setValue(\"free\");\n\n // Template no longer in picker, but active selection + data preserved.\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(vm.activeTemplateId).toBe(\"premium\");\n expect(form.field(\"content.y\").getValue()).toBe(\"set\");\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after switching template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n (form.field(\"content\") as any).setTemplate(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"templated list fields (Phase 8b)\", () => {\n function createFormWithTemplatedList() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .label(\"Sections\")\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\"),\n image: f.text()\n }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({\n body: f.text().required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"addItem / templateId\", () => {\n it(\"requires a template id when adding to a templated list\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem()).toThrow(/require a template id/);\n });\n\n it(\"rejects unknown template ids\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"adds an item with the picked template's children\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.has(\"heading\")).toBe(true);\n expect(field.items[0].children.has(\"image\")).toBe(true);\n });\n\n it(\"allows mixing different templates across items\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.addItem(\"hero\");\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\", \"hero\"]);\n });\n });\n\n describe(\"getData\", () => {\n it(\"includes _templateId per item\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Welcome\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"Lorem\");\n\n expect(form.getData().sections).toEqual([\n { _templateId: \"hero\", heading: \"Welcome\", image: null },\n { _templateId: \"text\", body: \"Lorem\" }\n ]);\n });\n });\n\n describe(\"setData\", () => {\n it(\"hydrates items by reading each item's _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H1\", image: \"img.jpg\" },\n { _templateId: \"text\", body: \"Body copy\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.get(\"heading\").getValue()).toBe(\"H1\");\n expect(field.items[1].templateId).toBe(\"text\");\n expect(field.items[1].children.get(\"body\").getValue()).toBe(\"Body copy\");\n });\n\n it(\"silently drops items with invalid or missing _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"Keep\" },\n { _templateId: \"nope\", x: 1 } as any,\n { heading: \"no-id\" } as any,\n null as any,\n { _templateId: \"text\", body: \"Also keep\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n });\n\n describe(\"duplicate / move / remove\", () => {\n it(\"duplicates an item preserving templateId and values\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Original\");\n field.items[0].children.get(\"image\").setValue(\"pic.jpg\");\n\n field.duplicateItem(0);\n\n expect(field.items.length).toBe(2);\n expect(field.items[1].templateId).toBe(\"hero\");\n expect(field.items[1].children.get(\"heading\").getValue()).toBe(\"Original\");\n expect(field.items[1].children.get(\"image\").getValue()).toBe(\"pic.jpg\");\n expect(field.items[0].key).not.toBe(field.items[1].key);\n });\n\n it(\"moves items while preserving templateId\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.moveItem(0, 1);\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"text\", \"hero\"]);\n });\n\n it(\"removes items by index\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.removeItem(0);\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n });\n\n describe(\"VM\", () => {\n it(\"exposes templateId and duplicate on each item VM\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(1);\n expect(vm.items[0].templateId).toBe(\"hero\");\n expect(typeof vm.items[0].duplicate).toBe(\"function\");\n });\n\n it(\"VM addItem(templateId) appends an item\", () => {\n const form = createFormWithTemplatedList();\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n vm.addItem(\"hero\");\n vm.addItem(\"text\");\n\n const field = form.field(\"sections\") as any;\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"availableTemplates respects reactive visible() on templated lists\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n sections: fields\n .object()\n .list()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n });\n\n describe(\"validation\", () => {\n it(\"validates each item's children under its template\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\"); // heading is required, not set\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"ok\");\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path.startsWith(\"sections\"))).toBe(true);\n });\n\n it(\"passes when every item's required fields are filled\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"H\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"B\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with templated list\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H\", image: \"\" },\n { _templateId: \"text\", body: \"B\" }\n ]\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after adding an item\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [{ _templateId: \"hero\", heading: \"H\", image: \"\" }]\n });\n (form.field(\"sections\") as any).addItem(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"per-template / inner object layouts (Phase 8c)\", () => {\n describe(\"non-templated single object\", () => {\n it(\"defaults to one row per visible child when no layout.object() is registered\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n })\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"b\"]);\n });\n\n it(\"resolves the registered inner layout against the children\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n }),\n layout: layout => [layout.object(\"meta\", l => [l.row(\"a\", \"b\")])]\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n });\n\n it(\"throws when a per-template map is passed to a non-templated field\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({ a: f.text() }))\n }),\n layout: layout => [layout.object(\"meta\", { tplA: l => [l.row(\"a\")] })]\n })\n ).toThrow(/not templated/);\n });\n });\n\n describe(\"non-templated list\", () => {\n it(\"applies the inner layout to every list item\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({ a: f.text(), b: f.text() }))\n }),\n layout: layout => [layout.object(\"rows\", l => [l.row(\"a\", \"b\")])]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n field.addItem();\n const vm = field.vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n expect(item.layout.length).toBe(1);\n expect(asRow(item.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n }\n });\n });\n\n describe(\"templated single object\", () => {\n function buildTemplatedForm(layoutFactory?: IFormModelConfig[\"layout\"]) {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layoutFactory\n });\n }\n\n it(\"uses the active template's per-template layout\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n let vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n\n field.setTemplate(\"cta\");\n vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"falls back to default one-row-per-child when active template has no entry\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n // no entry for \"cta\"\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"cta\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"returns an empty layout when no template is active\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", { hero: l => [l.row(\"heading\", \"subheading\")] })\n ]);\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.layout).toEqual([]);\n });\n\n it(\"silently ignores an unknown template id in the layout map\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n unknown: l => [l.row(\"xxx\")]\n })\n ]);\n // Should not throw at build time; the unknown entry is dead until referenced.\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n });\n\n it(\"throws when a single LayoutNode[] is passed to a templated field\", () => {\n expect(() =>\n buildTemplatedForm(layout => [layout.object(\"content\", l => [l.row(\"x\")])])\n ).toThrow(/is templated/);\n });\n\n it(\"falls back to default when no layout.object() is registered\", () => {\n const form = buildTemplatedForm();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"subheading\"]);\n });\n });\n\n describe(\"templated list\", () => {\n function buildTemplatedListForm() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]\n });\n }\n\n it(\"each item resolves layout against its own template\", () => {\n const form = buildTemplatedListForm();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"cta\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n expect(asRow(vm.items[0].layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n expect(asRow(vm.items[1].layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.items[1].layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"hides hidden child fields from the resolved layout row\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n secret: f.text().hidden()\n }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"secret\")]\n })\n ]\n });\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n });\n });\n\n describe(\"interaction with form.vm.layout\", () => {\n it(\"the form layout exposes a single-field row for the object\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n const layout = form.vm.layout;\n expect(layout.length).toBe(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"content\"]);\n });\n\n it(\"hides the object node from form.vm.layout when the field is not visible\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .hidden()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n expect(form.vm.layout).toEqual([]);\n });\n });\n });\n\n describe(\"nested object layouts (Phase 8c.1)\", () => {\n it(\"registers layout.object() nested inside another object's inner layout (non-templated)\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(seoVm.layout.length).toBe(1);\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"supports three levels of nesting\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.object().fields(f => ({\n b: f.object().fields(g => ({\n c: g.object().fields(h => ({\n x: h.text(),\n y: h.text()\n }))\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"a\", l1 => [\n l1.object(\"b\", l2 => [l2.object(\"c\", l3 => [l3.row(\"x\", \"y\")])])\n ])\n ]\n });\n const aVm = form.field(\"a\").vm as IObjectFieldVM;\n const bVm = asRow(aVm.layout[0]).fields[0] as IObjectFieldVM;\n const cVm = asRow(bVm.layout[0]).fields[0] as IObjectFieldVM;\n expect(cVm.layout.length).toBe(1);\n expect(asRow(cVm.layout[0]).fields.map(f => f.name)).toEqual([\"x\", \"y\"]);\n });\n\n it(\"registers nested layouts on a templated single object when its template activates\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"block\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"block\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"block\").vm as IObjectFieldVM;\n const seoRow = asRow(vm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on a templated list — each item gets its own\", () => {\n const form = createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"hero\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n const seoVm = asRow(item.layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n }\n });\n\n it(\"registers nested layouts on a non-templated list item upon creation\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({\n label: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"rows\", l => [\n l.row(\"label\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n const vm = form.field(\"rows\").vm as IObjectFieldVM;\n const seoVm = asRow(vm.items[0].layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on children added via field.as('object').fields() at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text()\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n // seo doesn't exist yet; the layout entry is a no-op until we add it.\n form.field(\"page\")\n .as(\"object\")\n .fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"recurses through tabs nested inside an inner layout\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs()\n .tab(\"main\", tab => {\n tab.label(\"Main\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seoTab\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const seoVm = form.field(\"page.seo\").vm as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"resolves tabs inside an inner layout against the children scope\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n body: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs(\"pageTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\"), l.row(\"body\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n expect(pageVm.layout.length).toBe(1);\n const tabs = pageVm.layout[0] as ITabsNodeVM;\n expect(tabs.type).toBe(\"tabs\");\n expect(tabs.tabs.map(t => t.id)).toEqual([\"general\", \"seo\"]);\n const generalTab = tabs.tabs[0];\n expect(asRow(generalTab.layout[0]).fields.map(f => f.name)).toEqual([\"title\"]);\n expect(asRow(generalTab.layout[1]).fields.map(f => f.name)).toEqual([\"body\"]);\n const seoTab = tabs.tabs[1];\n const seoVm = asRow(seoTab.layout[0]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n });\n\n describe(\"runtime template modification (Phase 8d)\", () => {\n function createSingleTemplatedForm() {\n return createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n }\n\n function createListTemplatedForm() {\n return createForm({\n fields: fields => ({\n blocks: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n })\n })\n });\n }\n\n it(\"templates.add appends a template and the picker lists it\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.add(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n });\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"templates.add throws on duplicate id\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"hero\", t => {\n t.label(\"Other\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/Duplicate template id \"hero\"/);\n });\n\n it(\"templates.add throws on reserved _templateId\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"_templateId\", t => {\n t.label(\"Reserved\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/reserved/);\n });\n\n it(\"templates.add throws when the template defines a reserved _templateId field\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"bad\", t => {\n t.label(\"Bad\").fields(f => ({ _templateId: f.text() }));\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"templates.remove removes the template from the picker\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.templates.remove(\"text\");\n const vm = form.field(\"blocks\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\"]);\n });\n\n it(\"templates.remove silently no-ops on unknown id\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n const before = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(() => field.templates.remove(\"nonExistent\")).not.toThrow();\n const after = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(after).toBe(before);\n });\n\n it(\"templates.remove clears active template on a single-object field via onChange(null) semantics\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n expect(field.activeTemplateId).toBe(\"hero\");\n field.templates.remove(\"hero\");\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n expect(form.field(\"content\").getValue()).toBeNull();\n });\n\n it(\"templates.remove drops list items whose _templateId matches\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.addItem(\"hero\", { heading: \"H1\" });\n field.addItem(\"text\", { body: \"B1\" });\n field.addItem(\"hero\", { heading: \"H2\" });\n expect(field.items.length).toBe(3);\n field.templates.remove(\"hero\");\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n\n it(\"templates.add throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() =>\n field.templates.add(\"x\", t => {\n t.label(\"X\").fields(f => ({ y: f.text() }));\n })\n ).toThrow(/not templated/);\n });\n\n it(\"templates.remove throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() => field.templates.remove(\"anything\")).toThrow(/not templated/);\n });\n\n it(\"orphan layout entry persists silently and is reused when the same template id is re-added\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n })\n ]\n });\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n const vmBefore = form.field(\"content\").vm as IObjectFieldVM;\n const rowBefore = asRow(vmBefore.layout[0]);\n expect(rowBefore.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n\n field.templates.remove(\"hero\");\n field.templates.add(\"hero\", t => {\n t.label(\"Hero v2\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n });\n field.setTemplate(\"hero\");\n\n const vmAfter = form.field(\"content\").vm as IObjectFieldVM;\n const rowAfter = asRow(vmAfter.layout[0]);\n expect(rowAfter.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n });\n\n it(\"removing all templates does not emit dev warnings (orphan suppression)\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.remove(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(warn).not.toHaveBeenCalled();\n warn.mockRestore();\n });\n });\n\n describe(\"requiredWhen (Phase 11)\", () => {\n it(\"makes a field required when the callback returns true\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Seats required\"\n )\n })\n });\n\n // plan = free → not required → validation passes\n expect(form.field(\"seats\").vm.required).toBe(false);\n expect(await form.validate()).toBe(true);\n\n // plan = pro → becomes required → empty value fails validation\n form.field(\"plan\").setValue(\"pro\");\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(await form.validate()).toBe(false);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Seats required\");\n });\n\n it(\"chains requiredWhen callbacks — first truthy wins\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n flag: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Pro requires it\"\n )\n .requiredWhen(\n ({ form }) => form.field(\"flag\").getValue() === \"on\",\n \"Flag requires it\"\n )\n })\n });\n\n form.field(\"flag\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Flag requires it\");\n\n // First-truthy-wins: enable plan too, plan callback runs first.\n form.field(\"plan\").setValue(\"pro\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Pro requires it\");\n });\n\n it(\"hard .required() always wins over requiredWhen messages\", async () => {\n const form = createForm({\n fields: fields => ({\n seats: fields\n .text()\n .required(\"Always required\")\n .requiredWhen(() => true, \"Conditional message\")\n })\n });\n\n await form.validate();\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Always required\");\n });\n\n it(\"modifier-added requiredWhen chains with builder-defined ones\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n other: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Pro required\"\n )\n })\n });\n\n form.field(\"seats\").addRequiredWhen(\n ({ form }) => form.field(\"other\").getValue() === \"on\",\n \"Other required\"\n );\n\n // Neither truthy → not required.\n expect(form.field(\"seats\").vm.required).toBe(false);\n\n // Modifier callback truthy.\n form.field(\"other\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Other required\");\n });\n });\n\n describe(\"computed / computedUntilDirty (Phase 11)\", () => {\n it(\"computed field exposes derived value reactively\", () => {\n const form = createForm({\n fields: fields => ({\n first: fields.text().defaultValue(\"Ada\"),\n last: fields.text().defaultValue(\"Lovelace\"),\n full: fields\n .text()\n .computed(\n ({ form }) =>\n `${form.field(\"first\").getValue()} ${form.field(\"last\").getValue()}`\n )\n })\n });\n\n expect(form.field(\"full\").getValue()).toBe(\"Ada Lovelace\");\n form.field(\"first\").setValue(\"Grace\");\n expect(form.field(\"full\").getValue()).toBe(\"Grace Lovelace\");\n });\n\n it(\"computed field stays editable but value remains derived\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields.text().computed(({ form }) => form.field(\"src\").getValue())\n })\n });\n\n // Not auto-disabled.\n expect(form.field(\"derived\").vm.disabled).toBe(false);\n\n // User edit doesn't override the computed value.\n form.field(\"derived\").vm.onChange(\"manual override\");\n expect(form.field(\"derived\").getValue()).toBe(\"A\");\n });\n\n it(\"computedUntilDirty switches to manual after first UI edit\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields\n .text()\n .computedUntilDirty(({ form }) => `derived-${form.field(\"src\").getValue()}`)\n })\n });\n\n expect(form.field(\"derived\").getValue()).toBe(\"derived-A\");\n\n form.field(\"derived\").vm.onChange(\"manual\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n\n // Source changes no longer overwrite manual edit.\n form.field(\"src\").setValue(\"B\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n });\n\n it(\"computed field still participates in validation\", async () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"\"),\n derived: fields\n .text()\n .required(\"Derived must not be empty\")\n .computed(({ form }) => form.field(\"src\").getValue())\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.field(\"derived\").vm.validation.message).toBe(\"Derived must not be empty\");\n\n form.field(\"src\").setValue(\"hello\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"computedUntilDirty can access nested fields inside object via dot notation\", () => {\n const form = createForm({\n fields: fields => ({\n group: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text().defaultValue(\"Hello World\"),\n fieldId: f.text().computedUntilDirty(({ form }) =>\n String(form.field(\"group.label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"hello-world\");\n\n form.field(\"group.label\").setValue(\"New Title\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"new-title\");\n\n // Manual edit overrides\n form.field(\"group.fieldId\").vm.onChange(\"custom-id\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"custom-id\");\n\n // Source changes no longer overwrite\n form.field(\"group.label\").setValue(\"Another\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"custom-id\");\n });\n\n it(\"computedUntilDirty works after setData for nested object fields\", () => {\n const form = createForm({\n fields: fields => ({\n general: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text(),\n fieldId: f.text().computedUntilDirty(({ form }) =>\n String(form.field(\"general.label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n // Before setData, label is null, fieldId computes to \"\"\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"\");\n\n // After setData, fieldId should compute from the new label\n form.setData({ general: { label: \"My Field\" } });\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"my-field\");\n\n // Changing label updates fieldId\n form.field(\"general.label\").setValue(\"Updated Label\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"updated-label\");\n\n // UI edit overrides\n form.field(\"general.fieldId\").vm.onChange(\"custom\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"custom\");\n\n form.field(\"general.label\").setValue(\"Ignored\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"custom\");\n });\n\n it(\"field.parent().field() resolves sibling fields relative to the parent object\", () => {\n const form = createForm({\n fields: fields => ({\n group: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text().defaultValue(\"Hello\"),\n slug: f.text().computedUntilDirty(({ field }) =>\n String(field.parent().field(\"label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n expect(form.field(\"group.slug\").getValue()).toBe(\"hello\");\n\n form.field(\"group.label\").setValue(\"New Title\");\n expect(form.field(\"group.slug\").getValue()).toBe(\"new-title\");\n });\n\n it(\"field.parent().field() can traverse into sibling objects\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n message: f\n .text()\n .defaultValue(\"default\")\n .computedUntilDirty(({ field }) => {\n const preset = field\n .parent()\n .field(\"settings.preset\")\n .getValue();\n return preset === \"custom\"\n ? \"Custom message\"\n : `Preset: ${preset}`;\n }),\n settings: f\n .object()\n .renderer(\"passthrough\")\n .fields(inner => ({\n preset: inner.text().defaultValue(\"custom\")\n }))\n }))\n })\n });\n\n expect(form.field(\"wrapper.message\").getValue()).toBe(\"Custom message\");\n\n form.field(\"wrapper.settings.preset\").setValue(\"email\");\n expect(form.field(\"wrapper.message\").getValue()).toBe(\"Preset: email\");\n });\n\n it(\"modifier setComputed converts a regular field into a computed one\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"X\"),\n derived: fields.text().defaultValue(\"initial\")\n })\n });\n\n form.field(\"derived\").setComputed(({ form }) => `from-${form.field(\"src\").getValue()}`);\n\n expect(form.field(\"derived\").getValue()).toBe(\"from-X\");\n form.field(\"src\").setValue(\"Y\");\n expect(form.field(\"derived\").getValue()).toBe(\"from-Y\");\n });\n });\n\n describe('field(\"...\").as(\"object\").fields() (Phase 11)', () => {\n it(\"adds new children to an existing object field at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"First\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n lastName: f.text().label(\"Last\")\n }));\n\n form.field(\"profile.firstName\").setValue(\"Ada\");\n form.field(\"profile.lastName\").setValue(\"Lovelace\");\n expect(form.getData()).toEqual({\n profile: { firstName: \"Ada\", lastName: \"Lovelace\" }\n });\n });\n\n it(\"replaces existing children when keys collide\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"Old\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n firstName: f.text().label(\"New\")\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.get(\"firstName\")?.config.label).toBe(\"New\");\n });\n\n it(\"removes children when factory returns undefined\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text(),\n lastName: f.text()\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(() => ({\n lastName: undefined\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.has(\"lastName\")).toBe(false);\n expect(profile.children.has(\"firstName\")).toBe(true);\n });\n\n it(\"propagates added children to existing list items\", () => {\n const form = createForm({\n fields: fields => ({\n contacts: fields\n .object()\n .list()\n .fields(f => ({\n name: f.text()\n }))\n })\n });\n\n const contacts = form.field(\"contacts\").as(\"object\");\n contacts.addItem({ name: \"Ada\" });\n contacts.addItem({ name: \"Grace\" });\n\n contacts.fields(f => ({\n email: f.text()\n }));\n\n // Existing items now have the new child.\n expect(contacts.items[0].children.has(\"email\")).toBe(true);\n expect(contacts.items[1].children.has(\"email\")).toBe(true);\n\n // Newly added items pick up the child too.\n contacts.addItem({ name: \"Linus\", email: \"linus@example.com\" });\n expect(contacts.items[2].children.get(\"email\")?.getValue()).toBe(\"linus@example.com\");\n });\n\n it(\"throws when called on a templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n });\n\n expect(() => {\n form.field(\"block\")\n .as(\"object\")\n .fields(f => ({ y: f.text() }));\n }).toThrow(/templated/);\n });\n });\n\n describe(\"form.addRule() (Phase 11)\", () => {\n it(\"runs a Zod schema against getData() and surfaces issues\", async () => {\n const form = createForm({\n fields: fields => ({\n password: fields.text().defaultValue(\"a\"),\n confirm: fields.text().defaultValue(\"b\")\n })\n });\n\n form.addRule(\n z\n .object({\n password: z.string(),\n confirm: z.string()\n })\n .refine(d => d.password === d.confirm, {\n message: \"Passwords must match\",\n path: [\"confirm\"]\n })\n );\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.message === \"Passwords must match\")).toBe(true);\n // Error surfaced on per-field validation when path matches.\n expect(form.field(\"confirm\").vm.validation.isValid).toBe(false);\n expect(form.field(\"confirm\").vm.validation.message).toBe(\"Passwords must match\");\n });\n\n it(\"runs an imperative function and merges returned errors\", async () => {\n const form = createForm({\n fields: fields => ({\n age: fields.text().defaultValue(\"17\")\n })\n });\n\n form.addRule(f => {\n if (Number(f.field(\"age\").getValue()) < 18) {\n return [{ path: \"age\", message: \"Must be 18+\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"age\").vm.validation.message).toBe(\"Must be 18+\");\n\n form.field(\"age\").setValue(\"21\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"supports async imperative rules\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().defaultValue(\"taken\")\n })\n });\n\n form.addRule(async f => {\n await Promise.resolve();\n if (f.field(\"name\").getValue() === \"taken\") {\n return [{ path: \"name\", message: \"Already taken\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Already taken\");\n });\n });\n\n describe(\"form.setLayout() (Phase 11)\", () => {\n it(\"replaces the layout entirely\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text(),\n c: fields.text()\n }),\n layout: layout => [layout.row(\"a\"), layout.row(\"b\"), layout.row(\"c\")]\n });\n\n form.setLayout(layout => [layout.row(\"c\", \"a\")]);\n\n const layout = form.vm.layout;\n expect(layout).toHaveLength(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"c\", \"a\"]);\n });\n\n it(\"emits orphan warnings for fields not in the new layout\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text()\n })\n });\n\n warn.mockClear();\n form.setLayout(layout => [layout.row(\"a\")]);\n\n expect(warn).toHaveBeenCalledWith(\n expect.stringContaining('Field \"b\" is not in the layout')\n );\n warn.mockRestore();\n });\n });\n\n describe(\"Phase 10: Advanced Validation\", () => {\n describe(\"field.vm.validating\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").vm.validating).toBe(false);\n });\n\n it(\"should be true while async schema validates\", async () => {\n let resolveValidation!: () => void;\n const form = createForm({\n fields: fields => ({\n email: fields.text().schema(\n z.string().refine(async () => {\n await new Promise<void>(r => {\n resolveValidation = r;\n });\n return true;\n })\n )\n })\n });\n form.field(\"email\").setValue(\"test@test.com\");\n\n const promise = form.validate();\n // Allow microtask to enter the async refine\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validating).toBe(true);\n\n resolveValidation();\n await promise;\n expect(form.field(\"email\").vm.validating).toBe(false);\n });\n\n it(\"should be false after sync-only validation\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required()\n })\n });\n form.field(\"name\").setValue(\"hello\");\n await form.validate();\n expect(form.field(\"name\").vm.validating).toBe(false);\n });\n });\n\n describe(\"form.submitted\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.submitted).toBe(false);\n });\n\n it(\"should be true after validate()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should be true after failed validate()\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should reset to false on setData()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.setData({ title: \"new\", path: \"/new\" });\n expect(form.submitted).toBe(false);\n });\n\n it(\"should reset to false on reset()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.reset();\n expect(form.submitted).toBe(false);\n });\n });\n\n describe(\"validate-on-blur after submit\", () => {\n it(\"should not validate on blur before first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().required(\"Required\")\n })\n });\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBeNull();\n });\n\n it(\"should validate on blur after first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .required(\"Required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"bad\");\n await form.submit();\n expect(form.field(\"email\").vm.validation.isValid).toBe(false);\n\n // Fix the value and blur — should re-validate\n form.field(\"email\").setValue(\"valid@email.com\");\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBe(true);\n });\n\n it(\"should show error on blur for invalid value after submit\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required(\"Name is required\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n await form.submit();\n expect(form.field(\"name\").vm.validation.isValid).toBe(true);\n\n // Clear the value and blur — should fail required check\n form.field(\"name\").setValue(\"\");\n form.field(\"name\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"name\").vm.validation.isValid).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Name is required\");\n });\n });\n\n describe(\"validation memoization\", () => {\n it(\"should not re-run schema on blur when value unchanged\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Blur with same value — should use cache\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"should re-run schema on blur when value changed\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Change value and blur — should re-validate\n form.field(\"slug\").setValue(\"world\");\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should always re-run schema on form.validate()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Same value, but form.validate() forces re-validation\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should clear cache on resetValidation()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Reset validation — clears cache\n form.field(\"slug\").resetValidation();\n\n // Blur with same value — should re-validate (cache cleared)\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"async validation with z.refine\", () => {\n it(\"should validate async refine on submit\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"taken\");\n const result = await form.submit();\n expect(result).toBe(false);\n expect(form.field(\"slug\").vm.validation.isValid).toBe(false);\n expect(form.field(\"slug\").vm.validation.message).toBe(\"This slug is already taken\");\n });\n\n it(\"should pass async refine with valid value\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"available\");\n const result = await form.submit();\n expect(result).toEqual({ slug: \"available\" });\n expect(form.field(\"slug\").vm.validation.isValid).toBe(true);\n });\n });\n });\n\n describe(\"normalizeValue\", () => {\n it(\"should coerce string to number on setValue for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"42\");\n expect(form.field(\"count\").getValue()).toBe(42);\n });\n\n it(\"should normalize invalid values to null for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"\");\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(null);\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(\"abc\");\n expect(form.field(\"count\").getValue()).toBe(null);\n });\n\n it(\"should store number for number field with options\", () => {\n const form = createForm({\n fields: fields => ({\n tier: fields\n .number()\n .label(\"Tier\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n })\n });\n\n form.field(\"tier\").setValue(\"100\");\n expect(form.field(\"tier\").getValue()).toBe(100);\n expect(typeof form.field(\"tier\").getValue()).toBe(\"number\");\n });\n\n it(\"should coerce to boolean on setValue for boolean fields\", () => {\n const form = createForm({\n fields: fields => ({\n active: fields.boolean().label(\"Active\")\n })\n });\n\n form.field(\"active\").setValue(1);\n expect(form.field(\"active\").getValue()).toBe(true);\n\n form.field(\"active\").setValue(0);\n expect(form.field(\"active\").getValue()).toBe(false);\n });\n\n it(\"should apply normalizeValue on setData (via setValueSilent)\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.setData({ count: \"42\" } as any);\n expect(form.field(\"count\").getValue()).toBe(42);\n expect(typeof form.field(\"count\").getValue()).toBe(\"number\");\n });\n\n it(\"should not alter text field values\", () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().label(\"Name\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n expect(form.field(\"name\").getValue()).toBe(\"hello\");\n\n form.field(\"name\").setValue(42);\n expect(form.field(\"name\").getValue()).toBe(42);\n });\n\n it(\"should run normalizeValue before beforeChange\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n count: fields\n .number()\n .label(\"Count\")\n .beforeChange(value => {\n log.push(value);\n return value;\n })\n })\n });\n\n form.field(\"count\").setValue(\"7\");\n expect(log).toEqual([7]);\n });\n });\n\n describe(\"focusField\", () => {\n it(\"should set focusRequested on the target field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n expect(form.field(\"path\").vm.focusRequested).toBe(false);\n });\n\n it(\"should activate the correct tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"slug\")]);\n })\n ]\n });\n\n // Initially the first tab is active\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"general\");\n\n form.focusField(\"slug\");\n expect(form.field(\"slug\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"seo\");\n });\n\n it(\"should activate nested tabs inside object fields\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text().label(\"Title\"),\n metaTitle: f.text().label(\"Meta Title\")\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs(\"pageTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"metaTitle\")]);\n })\n ])\n ]\n });\n\n form.focusField(\"page.metaTitle\");\n expect(form.field(\"page.metaTitle\").vm.focusRequested).toBe(true);\n });\n\n it(\"should clear previous focus when focusing a new field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.focusField(\"path\");\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n });\n\n it(\"should allow renderer to clear focus via clearFocusRequest\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.field(\"title\").vm.clearFocusRequest();\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n });\n\n it(\"should not throw on unknown field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n expect(() => form.focusField(\"nonexistent\")).not.toThrow();\n });\n\n it(\"should propagate qualifiedName through nested objects\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text().label(\"Meta Title\")\n }))\n }))\n })\n });\n\n const meta = form.field(\"page.seo.metaTitle\");\n expect(meta.qualifiedName).toBe(\"page.seo.metaTitle\");\n });\n\n it(\"field.focus() should delegate to form.focusField\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [\n layout\n .tabs(\"tabs\")\n .tab(\"t1\", tab => {\n tab.label(\"T1\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"t2\", tab => {\n tab.label(\"T2\").layout(l => [l.row(\"path\")]);\n })\n ]\n });\n\n form.field(\"path\").focus();\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"t2\");\n });\n });\n\n describe(\"primitive list addItem / removeItem\", () => {\n it(\"addItem appends to empty list\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n const vm = form.field(\"tags\").vm;\n expect(vm.value).toEqual([]);\n\n vm.addItem(\"hello\");\n expect(form.field(\"tags\").vm.value).toEqual([\"hello\"]);\n });\n\n it(\"addItem appends with default null when no value given\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem();\n expect(form.field(\"tags\").vm.value).toEqual([null]);\n });\n\n it(\"addItem appends to existing values\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"c\");\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"b\", \"c\"]);\n });\n\n it(\"removeItem removes at index\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(1);\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"c\"]);\n });\n\n it(\"removeItem from beginning preserves order\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(0);\n expect(form.field(\"tags\").vm.value).toEqual([\"b\", \"c\"]);\n });\n\n it(\"operations go through beforeChange pipeline\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: f => ({\n tags: f\n .text()\n .list()\n .defaultValue([\"a\"])\n .beforeChange((value, _params) => {\n log.push(value);\n return value;\n })\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"b\");\n form.field(\"tags\").vm.removeItem(0);\n expect(log).toEqual([[\"a\", \"b\"], [\"b\"]]);\n });\n });\n\n describe(\"field context\", () => {\n it(\"should expose context derived from sibling fields via form param\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"My Article\"),\n description: fields.text().defaultValue(\"A great article\"),\n media: fields.file().context(({ form }) => ({\n title: form.field(\"title\").getValue(),\n description: form.field(\"description\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({\n title: \"My Article\",\n description: \"A great article\"\n });\n });\n\n it(\"should access root-level siblings via field.parent().field()\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Root Sibling\"),\n media: fields.file().context(({ field }) => ({\n title: field.parent().field(\"title\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({\n title: \"Root Sibling\"\n });\n });\n\n it(\"should reactively update context when source fields change\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Original\"),\n media: fields.file().context(({ form }) => ({\n title: form.field(\"title\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({ title: \"Original\" });\n\n form.field(\"title\").setValue(\"Updated\");\n expect(form.field(\"media\").vm.context).toEqual({ title: \"Updated\" });\n });\n\n it(\"should default to empty object when no context callback is set\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text()\n })\n });\n\n expect(form.field(\"title\").vm.context).toEqual({});\n });\n\n it(\"should access root fields via form param from nested object\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Page Title\"),\n settings: fields.object().fields(f => ({\n media: f.file().context(({ form }) => ({\n title: form.field(\"title\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"title\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.media\").vm.context).toEqual({\n title: \"Page Title\"\n });\n\n form.field(\"title\").setValue(\"New Title\");\n expect(form.field(\"settings.media\").vm.context).toEqual({\n title: \"New Title\"\n });\n });\n\n it(\"should navigate to siblings via field.parent().field()\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields.object().fields(f => ({\n title: f.text().defaultValue(\"Nested Title\"),\n media: f.file().context(({ field }) => ({\n title: field.parent().field(\"title\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.media\").vm.context).toEqual({\n title: \"Nested Title\"\n });\n });\n\n it(\"should navigate multiple levels up via chained parent()\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Root Title\"),\n settings: fields.object().fields(f => ({\n nested: f.object().fields(inner => ({\n media: inner.file().context(({ field }) => ({\n title: field.parent().parent().parent().field(\"title\").getValue()\n }))\n }))\n }))\n }),\n layout: l => [l.row(\"title\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n title: \"Root Title\"\n });\n\n form.field(\"title\").setValue(\"Updated Root\");\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n title: \"Updated Root\"\n });\n });\n\n it(\"should navigate past parent to grandparent scope\", () => {\n const form = createForm({\n fields: fields => ({\n settings: fields.object().fields(f => ({\n label: f.text().defaultValue(\"Settings Label\"),\n nested: f.object().fields(inner => ({\n media: inner.file().context(({ field }) => ({\n label: field.parent().parent().field(\"label\").getValue()\n }))\n }))\n }))\n }),\n layout: l => [l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n label: \"Settings Label\"\n });\n });\n\n it(\"should throw when navigating above root level\", () => {\n const form = createForm({\n fields: fields => ({\n media: fields.file().context(({ field }) => ({\n bad: field.parent().parent().field(\"x\").getValue()\n }))\n })\n });\n\n expect(() => form.field(\"media\").vm.context).toThrow(\n \"Cannot navigate above root level.\"\n );\n });\n\n it(\"should use both field navigator and form in the same callback\", () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().defaultValue(\"my-slug\"),\n settings: fields.object().fields(f => ({\n label: f.text().defaultValue(\"Settings Label\"),\n media: f.file().context(({ field, form }) => ({\n label: field.parent().field(\"label\").getValue(),\n slug: form.field(\"slug\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"slug\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.media\").vm.context).toEqual({\n label: \"Settings Label\",\n slug: \"my-slug\"\n });\n });\n });\n\n describe(\"$. static references in rules\", () => {\n it(\"$. resolves rule targets relative to the parent object\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n status: f.text().defaultValue(\"draft\"),\n details: f.text().rules([\n {\n type: \"condition\",\n target: \"$.status\",\n operator: \"eq\",\n value: \"draft\",\n action: \"hide\"\n }\n ])\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.details\").visible).toBe(false);\n\n form.field(\"wrapper.status\").setValue(\"published\");\n expect(form.field(\"wrapper.details\").visible).toBe(true);\n });\n\n it(\"$. in rules with disable action\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n locked: f.text().defaultValue(\"yes\"),\n editable: f.text().rules([\n {\n type: \"condition\",\n target: \"$.locked\",\n operator: \"eq\",\n value: \"yes\",\n action: \"disable\"\n }\n ])\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.editable\").disabled).toBe(true);\n\n form.field(\"wrapper.locked\").setValue(\"no\");\n expect(form.field(\"wrapper.editable\").disabled).toBe(false);\n });\n });\n});\n"],"names":["createForm","config","container","Container","FormModelFeature","FormModelFactory","asRow","node","Error","createBasicForm","fields","describe","it","form","expect","data","valid","z","titleVm","result","vm","fieldVM","layout","warnSpy","vi","console","value","String","received","calls","path","str","field","slug","fieldNames","row","updatedNames","undefined","textField","createFormWithLayout","names","modifier","current","stripped","createFormWithTabs","tab","tabsNode","generalTab","generalRow","seoTab","elementNode","createFormWithObject","f","street","e","createFormWithList","updatedVm","vm1","key0","key1","vm2","createFormWithTemplatedObject","t","createFormWithTemplatedList","i","l","item","buildTemplatedForm","layoutFactory","buildTemplatedListForm","g","inner","pageVm","seoRow","seoVm","h","l1","l2","l3","aVm","bVm","cVm","tabs","createSingleTemplatedForm","createListTemplatedForm","before","after","vmBefore","rowBefore","vmAfter","rowAfter","warn","preset","profile","contacts","d","Number","Promise","resolveValidation","r","promise","setTimeout","schemaSpy","log","meta","_params"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/FormModel.test.js","sources":["../../../src/features/formModel/FormModel.test.ts"],"sourcesContent":["import { describe, it, expect, vi } from \"vitest\";\nimport { z } from \"zod\";\nimport { Container } from \"@webiny/di\";\nimport { FormModelFeature } from \"./feature.js\";\nimport { IdentityContextFeature } from \"~/features/security/IdentityContext/feature.js\";\nimport {\n FormModelFactory,\n type IFormModel,\n type IFormModelConfig,\n type IRowNodeVM,\n type ITabsNodeVM,\n type IElementNodeVM,\n type IRule,\n type IObjectFieldVM,\n type ILayoutNodeAccessHandle,\n type LayoutNodeVM\n} from \"./abstractions.js\";\n\nfunction createForm(config: IFormModelConfig): IFormModel {\n const container = new Container();\n IdentityContextFeature.register(container);\n FormModelFeature.register(container);\n return container.resolve(FormModelFactory).create(config);\n}\n\nfunction asRow(node: LayoutNodeVM): IRowNodeVM {\n if (node.type !== \"row\") {\n throw new Error(`Expected row node, got \"${node.type}\"`);\n }\n return node;\n}\n\nfunction createBasicForm() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields.text().label(\"Path\").required(\"Path is required\")\n })\n });\n}\n\ndescribe(\"FormModel\", () => {\n describe(\"field creation\", () => {\n it(\"should create fields from builder definitions\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\")).toBeDefined();\n expect(form.field(\"path\")).toBeDefined();\n });\n\n it(\"should throw on unknown field access\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"unknown\")).toThrow('Field \"unknown\" not found.');\n });\n });\n\n describe(\"setValue / getValue\", () => {\n it(\"should set and get field values\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Hello\");\n expect(form.field(\"title\").getValue()).toBe(\"Hello\");\n });\n\n it(\"should default to null when no defaultValue is set\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should use defaultValue when provided\", () => {\n const form = createForm({\n fields: fields => ({\n status: fields.text().defaultValue(\"draft\")\n })\n });\n expect(form.field(\"status\").getValue()).toBe(\"draft\");\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"should return all field values including hidden\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n const data = form.getData();\n\n expect(data).toEqual({\n title: \"Hello\",\n pageType: \"static\"\n });\n });\n\n it(\"should hydrate fields from data object\", () => {\n const form = createBasicForm();\n form.setData({ title: \"My Page\", path: \"/my-page\" });\n\n expect(form.field(\"title\").getValue()).toBe(\"My Page\");\n expect(form.field(\"path\").getValue()).toBe(\"/my-page\");\n });\n\n it(\"should ignore unknown fields in setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Test\", unknown: \"value\" });\n expect(form.field(\"title\").getValue()).toBe(\"Test\");\n expect(() => form.field(\"unknown\")).toThrow();\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"should not be dirty initially\", () => {\n const form = createBasicForm();\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after setValue\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Loaded\", path: \"/loaded\" });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should not be dirty after reverting to baseline value\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n expect(form.isDirty).toBe(true);\n form.field(\"title\").setValue(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n });\n\n describe(\"reset\", () => {\n it(\"should revert values to setData baseline\", () => {\n const form = createBasicForm();\n form.setData({ title: \"Original\", path: \"/original\" });\n form.field(\"title\").setValue(\"Changed\");\n form.reset();\n\n expect(form.field(\"title\").getValue()).toBe(\"Original\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should clear validation state on reset\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.errors.length).toBeGreaterThan(0);\n\n form.reset();\n expect(form.errors).toEqual([]);\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"should fail validation for empty required fields\", async () => {\n const form = createBasicForm();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.isValid).toBe(false);\n expect(form.errors).toHaveLength(2);\n expect(form.errors[0].path).toBe(\"title\");\n expect(form.errors[0].message).toBe(\"Title is required\");\n expect(form.errors[1].path).toBe(\"path\");\n });\n\n it(\"should pass validation when required fields have values\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.isValid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should validate zod schemas\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().label(\"Email\").schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"not-an-email\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Invalid email\");\n });\n\n it(\"should run required check before zod schema\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .label(\"Email\")\n .required(\"Email is required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Email is required\");\n });\n\n it(\"should skip zod validation for non-required field with null value\", async () => {\n const form = createForm({\n fields: fields => ({\n description: fields.text().label(\"Description\").schema(z.string())\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n expect(form.field(\"description\").vm.validation.isValid).toBeNull();\n });\n\n it(\"should skip zod validation for non-required field with undefined value\", async () => {\n const form = createForm({\n fields: fields => ({\n description: fields.text().label(\"Description\").schema(z.string())\n })\n });\n\n form.field(\"description\").setValue(undefined as any);\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n expect(form.field(\"description\").vm.validation.isValid).toBeNull();\n });\n\n it(\"should run zod validation for non-required field with empty string value\", async () => {\n const form = createForm({\n fields: fields => ({\n description: fields\n .text()\n .label(\"Description\")\n .schema(z.string().min(3, \"Too short\"))\n })\n });\n\n form.field(\"description\").setValue(\"\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.field(\"description\").vm.validation.isValid).toBe(false);\n expect(form.field(\"description\").vm.validation.message).toBe(\"Too short\");\n });\n\n it(\"should fail required validation for required field with null value even when schema is set\", async () => {\n const form = createForm({\n fields: fields => ({\n description: fields\n .text()\n .label(\"Description\")\n .required(\"Description is required\")\n .schema(z.string().min(3, \"Too short\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.field(\"description\").vm.validation.isValid).toBe(false);\n expect(form.field(\"description\").vm.validation.message).toBe(\"Description is required\");\n });\n\n it(\"should run and pass zod validation for non-required field with valid value\", async () => {\n const form = createForm({\n fields: fields => ({\n description: fields\n .text()\n .label(\"Description\")\n .schema(z.string().min(3, \"Too short\"))\n })\n });\n\n form.field(\"description\").setValue(\"Hello world\");\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.field(\"description\").vm.validation.isValid).toBe(true);\n });\n\n it(\"should expose field-level validation in field.vm\", async () => {\n const form = createBasicForm();\n await form.validate();\n\n const titleVm = form.field(\"title\").vm;\n expect(titleVm.validation.isValid).toBe(false);\n expect(titleVm.validation.message).toBe(\"Title is required\");\n });\n\n it(\"setValidationWithCache should populate the validation cache\", async () => {\n const schema = z.string().min(3, \"Too short\");\n const spy = vi.spyOn(schema, \"safeParseAsync\");\n const form = createForm({\n fields: fields => ({\n description: fields.text().label(\"Description\").schema(schema)\n })\n });\n\n const valid1 = await form.validate();\n expect(valid1).toBe(true);\n expect(spy).not.toHaveBeenCalled();\n\n const valid2 = await form.validate();\n expect(valid2).toBe(true);\n expect(spy).not.toHaveBeenCalled();\n expect(form.field(\"description\").vm.validation.isValid).toBeNull();\n spy.mockRestore();\n });\n\n it(\"isValid should be null before first validation\", () => {\n const form = createBasicForm();\n expect(form.isValid).toBeNull();\n });\n });\n\n describe(\"submit\", () => {\n it(\"should return data when valid\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"My Page\");\n form.field(\"path\").setValue(\"/my-page\");\n\n const result = await form.submit();\n\n expect(result).toEqual({\n title: \"My Page\",\n path: \"/my-page\"\n });\n });\n\n it(\"should return false when invalid\", async () => {\n const form = createBasicForm();\n const result = await form.submit();\n expect(result).toBe(false);\n });\n });\n\n describe(\"vm\", () => {\n it(\"should expose layout with field VMs\", () => {\n const form = createBasicForm();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n expect(asRow(vm.layout[1]).fields[0].name).toBe(\"path\");\n });\n\n it(\"should exclude hidden fields from layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(asRow(vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should expose isDirty and isValid\", () => {\n const form = createBasicForm();\n expect(form.vm.isDirty).toBe(false);\n expect(form.vm.isValid).toBeNull();\n });\n\n it(\"should expose field onChange that calls setValue\", () => {\n const form = createBasicForm();\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n fieldVM.onChange(\"New Value\");\n expect(form.field(\"title\").getValue()).toBe(\"New Value\");\n });\n });\n\n describe(\"layout\", () => {\n it(\"should generate default layout (one row per non-hidden field)\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n });\n\n it(\"should use explicit layout when provided\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\", \"path\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields).toHaveLength(2);\n });\n\n it(\"should warn about orphan fields in explicit layout\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Field \"path\" is not in the layout')\n );\n\n warnSpy.mockRestore();\n });\n\n it(\"should not warn about hidden orphan fields\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n pageType: fields.text().hidden().defaultValue(\"static\")\n }),\n layout: layout => [layout.row(\"title\")]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n });\n\n describe(\"beforeChange / afterChange\", () => {\n it(\"should run beforeChange pipeline in order, transforming value\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n .beforeChange(value => String(value).toLowerCase())\n })\n });\n\n form.field(\"path\").setValue(\" Hello World \");\n expect(form.field(\"path\").getValue()).toBe(\"hello world\");\n });\n\n it(\"should run afterChange after value is stored\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n });\n\n it(\"should pass transformed value to afterChange\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).toLowerCase())\n .afterChange(value => {\n received.push(value);\n })\n })\n });\n\n form.field(\"path\").setValue(\"HELLO\");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n expect(received).toEqual([\"hello\"]);\n });\n\n it(\"should not fire afterChange when value does not change (recursion guard)\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(() => \"constant\")\n .afterChange(() => {\n calls.push(\"afterChange\");\n })\n })\n });\n\n form.field(\"title\").setValue(\"anything\");\n expect(calls).toEqual([\"afterChange\"]);\n expect(form.field(\"title\").getValue()).toBe(\"constant\");\n\n // Setting again — beforeChange still produces \"constant\", which === current value.\n // afterChange should NOT fire.\n form.field(\"title\").setValue(\"something else\");\n expect(calls).toEqual([\"afterChange\"]);\n });\n\n it(\"should not trigger beforeChange or afterChange on setData\", () => {\n const calls: string[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .beforeChange(value => {\n calls.push(\"before\");\n return value;\n })\n .afterChange(() => {\n calls.push(\"after\");\n })\n })\n });\n\n form.setData({ title: \"Loaded\" });\n expect(calls).toEqual([]);\n expect(form.field(\"title\").getValue()).toBe(\"Loaded\");\n });\n\n it(\"should support cross-field afterChange triggering target field pipeline\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .afterChange((value, { form }) => {\n // Auto-generate path from title\n const path = \"/\" + String(value).toLowerCase().replace(/\\s+/g, \"-\");\n form.field(\"path\").setValue(path);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => {\n // Ensure path starts with /\n const str = String(value);\n return str.startsWith(\"/\") ? str : \"/\" + str;\n })\n })\n });\n\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n });\n\n it(\"should allow appending callbacks to existing fields at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n const field = form.field(\"title\");\n field.addBeforeChange(value => String(value).toUpperCase());\n field.setValue(\"hello\");\n expect(field.getValue()).toBe(\"HELLO\");\n });\n\n it(\"should chain builder callbacks with runtime-appended callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Append another transform at runtime (simulating a modifier)\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should demonstrate title→path with path-dirty tracking\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields\n .text()\n .label(\"Title\")\n .required(\"Title is required\")\n .afterChange((value, { form }) => {\n // Only auto-generate if path is empty\n if (form.field(\"path\").getValue()) {\n return;\n }\n const slug = String(value)\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n form.field(\"path\").setValue(\"/\" + slug);\n }),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Type title → path auto-fills (path was null/empty)\n form.field(\"title\").setValue(\"Hello World\");\n expect(form.field(\"path\").getValue()).toBe(\"/hello-world\");\n\n // Manually edit path → title changes no longer overwrite\n form.field(\"path\").setValue(\"/custom-path\");\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n\n form.field(\"title\").setValue(\"New Title\");\n // Path still \"/custom-path\" because path is no longer empty\n expect(form.field(\"path\").getValue()).toBe(\"/custom-path\");\n });\n });\n\n describe(\"field with options\", () => {\n it(\"should resolve static options in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ]);\n });\n\n it(\"should resolve reactive options function in field VM\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options(() => {\n // Dynamic options based on form state\n return [{ label: \"Dynamic\", value: \"dynamic\" }];\n })\n })\n });\n\n const fieldVM = asRow(form.vm.layout[0]).fields[0];\n expect(fieldVM.options).toEqual([{ label: \"Dynamic\", value: \"dynamic\" }]);\n });\n });\n\n describe(\"modifiers (Phase 3)\", () => {\n describe(\"form.fields() — add / replace / remove\", () => {\n it(\"should add a new field via form.fields()\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n }));\n\n expect(form.field(\"language\")).toBeDefined();\n expect(form.field(\"language\").type).toBe(\"text\");\n expect(form.getData()).toHaveProperty(\"language\");\n });\n\n it(\"should add a field that appears in getData but not layout until positioned\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.fields(fields => ({\n description: fields.text().label(\"Description\")\n }));\n\n // Field exists in data\n expect(form.getData()).toHaveProperty(\"description\");\n\n // But not in layout until explicitly positioned\n const fieldNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(fieldNames).not.toContain(\"description\");\n\n // Position it\n form.layout(layout => [layout.row(\"description\").after(\"title\")]);\n const updatedNames = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(updatedNames).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should replace an existing field when key matches\", () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"Old Value\");\n\n form.fields(fields => ({\n title: fields.text().label(\"Replaced Title\").placeholder(\"New placeholder\")\n }));\n\n // The field is replaced entirely — old value is gone\n expect(form.field(\"title\").config.label).toBe(\"Replaced Title\");\n expect(form.field(\"title\").config.placeholder).toBe(\"New placeholder\");\n expect(form.field(\"title\").getValue()).toBeNull();\n });\n\n it(\"should remove a field via undefined\", () => {\n const form = createBasicForm();\n form.fields(() => ({\n path: undefined\n }));\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove a field via field.remove()\", () => {\n const form = createBasicForm();\n form.field(\"path\").remove();\n\n expect(() => form.field(\"path\")).toThrow('Field \"path\" not found.');\n expect(form.getData()).not.toHaveProperty(\"path\");\n });\n\n it(\"should remove field from layout when removed via field.remove()\", () => {\n const form = createBasicForm();\n expect(form.vm.layout).toHaveLength(2);\n\n form.field(\"path\").remove();\n\n expect(form.vm.layout).toHaveLength(1);\n expect(asRow(form.vm.layout[0]).fields[0].name).toBe(\"title\");\n });\n\n it(\"should handle add + remove in the same fields() call\", () => {\n const form = createBasicForm();\n form.fields(fields => ({\n path: undefined,\n slug: fields.text().label(\"Slug\")\n }));\n\n expect(() => form.field(\"path\")).toThrow();\n expect(form.field(\"slug\")).toBeDefined();\n });\n });\n\n describe(\"form.field().setDisabled()\", () => {\n it(\"should disable a field via setDisabled(true)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n\n expect(form.field(\"title\").vm.disabled).toBe(true);\n });\n\n it(\"should re-enable a field via setDisabled(false)\", () => {\n const form = createBasicForm();\n form.field(\"title\").setDisabled(true);\n form.field(\"title\").setDisabled(false);\n\n expect(form.field(\"title\").vm.disabled).toBe(false);\n });\n });\n\n describe(\"form.field().as() — type narrowing\", () => {\n it(\"should return the field when type matches\", () => {\n const form = createForm({\n fields: fields => ({\n lang: fields\n .text()\n .label(\"Language\")\n .options([{ label: \"English\", value: \"en\" }])\n })\n });\n\n const textField = form.field(\"lang\").as(\"text\");\n expect(textField).toBe(form.field(\"lang\"));\n });\n\n it(\"should throw when type does not match\", () => {\n const form = createBasicForm();\n expect(() => form.field(\"title\").as(\"boolean\")).toThrow(\n 'Field \"title\" is type \"text\", not \"boolean\".'\n );\n });\n });\n\n describe(\"modifier appends callbacks to existing fields\", () => {\n it(\"should append beforeChange to an existing field\", () => {\n const form = createForm({\n fields: fields => ({\n path: fields\n .text()\n .label(\"Path\")\n .beforeChange(value => String(value).trim())\n })\n });\n\n // Modifier appends another transform\n form.field(\"path\").addBeforeChange(value => String(value).toLowerCase());\n\n form.field(\"path\").setValue(\" HELLO \");\n expect(form.field(\"path\").getValue()).toBe(\"hello\");\n });\n\n it(\"should append afterChange to an existing field\", () => {\n const received: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n // Modifier appends afterChange\n form.field(\"title\").addAfterChange((value, { form }) => {\n received.push(value);\n form.field(\"path\").setValue(\"/\" + String(value).toLowerCase());\n });\n\n form.field(\"title\").setValue(\"Hello\");\n expect(received).toEqual([\"Hello\"]);\n expect(form.field(\"path\").getValue()).toBe(\"/hello\");\n });\n });\n\n describe(\"layout positional modifiers\", () => {\n function createFormWithLayout() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.row(\"path\"),\n layout.row(\"description\")\n ]\n });\n }\n\n it(\"should insert a row before a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").before(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"language\", \"path\", \"description\"]);\n });\n\n it(\"should insert a row after a target\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\", \"description\"]);\n });\n\n it(\"should replace a target row\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n slug: fields.text().label(\"Slug\")\n }));\n\n form.layout(layout => [layout.row(\"slug\").replace(\"path\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"slug\", \"description\"]);\n });\n\n it(\"should remove a field from layout\", () => {\n const form = createFormWithLayout();\n\n form.layout(layout => {\n layout.remove(\"path\");\n return [];\n });\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"description\"]);\n });\n\n it(\"should append when no position is specified\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n\n it(\"should append when target is not found\", () => {\n const form = createFormWithLayout();\n form.fields(fields => ({\n language: fields.text().label(\"Language\").options([])\n }));\n\n form.layout(layout => [layout.row(\"language\").after(\"nonexistent\")]);\n\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"description\", \"language\"]);\n });\n });\n\n describe(\"IFormModifier integration\", () => {\n it(\"should support a full modifier workflow: add field + position in layout + append callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n path: fields\n .text()\n .label(\"Path\")\n .required(\"Path is required\")\n .beforeChange(value => {\n const str = String(value);\n return (\n \"/\" +\n str\n .replace(/^\\//, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9/-]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n );\n })\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"path\")]\n });\n\n // Simulate a language modifier\n const modifier = {\n modify(form: IFormModel) {\n // Add language field\n form.fields(fields => ({\n language: fields\n .text()\n .label(\"Language\")\n .options([\n { label: \"English\", value: \"en\" },\n { label: \"German\", value: \"de\" }\n ])\n .afterChange((value, { form }) => {\n const current = String(form.field(\"path\").getValue() || \"\");\n const stripped = current.replace(/^\\/[a-z]{2}\\//, \"/\");\n if (value && value !== \"en\") {\n form.field(\"path\").setValue(\"/\" + value + stripped);\n } else {\n form.field(\"path\").setValue(stripped);\n }\n })\n }));\n\n // Position after path\n form.layout(layout => [layout.row(\"language\").after(\"path\")]);\n }\n };\n\n modifier.modify(form);\n\n // Verify layout order\n const names = form.vm.layout.map(row => asRow(row).fields[0].name);\n expect(names).toEqual([\"title\", \"path\", \"language\"]);\n\n // Verify language field works\n form.field(\"path\").setValue(\"/demo\");\n form.field(\"language\").setValue(\"de\");\n expect(form.field(\"path\").getValue()).toBe(\"/de/demo\");\n\n // Verify getData includes language\n const data = form.getData();\n expect(data.language).toBe(\"de\");\n });\n });\n });\n\n describe(\"layout system expansion (Phase 5)\", () => {\n describe(\"separator\", () => {\n it(\"should include separator nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout.row(\"description\")\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"row\");\n });\n\n it(\"should support separator via modifier layout API\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"description\")]\n });\n\n form.layout(layout => [layout.separator().after(\"title\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[1].type).toBe(\"separator\");\n });\n });\n\n describe(\"tabs\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\"),\n metaDescription: fields.text().label(\"Meta Description\")\n }),\n layout: layout => [\n layout.row(\"title\", \"slug\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\")\n .description(\"Optimize how this page appears in search\")\n .layout(layout => [\n layout.row(\"metaTitle\"),\n layout.row(\"metaDescription\")\n ]);\n })\n ]\n });\n }\n\n it(\"should resolve tabs layout node with tab definitions\", () => {\n const form = createFormWithTabs();\n const vm = form.vm;\n\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.id).toBe(\"settings\");\n expect(tabsNode.tabs).toHaveLength(2);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[0].label).toBe(\"General\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[1].label).toBe(\"SEO\");\n expect(tabsNode.tabs[1].description).toBe(\n \"Optimize how this page appears in search\"\n );\n });\n\n it(\"should resolve fields inside tab layouts\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n const generalTab = tabsNode.tabs[0];\n expect(generalTab.layout).toHaveLength(1);\n expect(generalTab.layout[0].type).toBe(\"row\");\n const generalRow = generalTab.layout[0] as IRowNodeVM;\n expect(generalRow.fields[0].name).toBe(\"description\");\n\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(2);\n });\n\n it(\"should default activeTabId to the first tab\", () => {\n const form = createFormWithTabs();\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should switch active tab via setActiveTab\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"seo\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"seo\");\n });\n\n it(\"should fall back to first tab when active tab ID is invalid\", () => {\n const form = createFormWithTabs();\n let tabsNode = form.vm.layout[1] as ITabsNodeVM;\n\n tabsNode.setActiveTab(\"nonexistent\");\n\n tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.activeTabId).toBe(\"general\");\n });\n\n it(\"should compute hasErrors for tabs based on referenced fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\").required(\"Title is required\"),\n metaTitle: fields.text().label(\"Meta Title\").required(\"Required\")\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Before validation, no errors\n let tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(false);\n\n // Fill only title, leave metaTitle empty\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n\n it(\"should not warn about fields inside tabs as orphans\", () => {\n const warnSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n expect(warnSpy).not.toHaveBeenCalled();\n warnSpy.mockRestore();\n });\n\n it(\"should return null for tabs with empty tabs array\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.tabs(\"empty\")]\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n });\n\n describe(\"element\", () => {\n it(\"should include element nodes in the resolved layout\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.element(\"usage-stats\", { plan: \"enterprise\" })\n ]\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(2);\n expect(vm.layout[1].type).toBe(\"element\");\n\n const elementNode = vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"usage-stats\");\n expect(elementNode.props).toEqual({ plan: \"enterprise\" });\n });\n\n it(\"should support element without props\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n }),\n layout: layout => [layout.row(\"title\"), layout.element(\"divider\")]\n });\n\n const elementNode = form.vm.layout[1] as IElementNodeVM;\n expect(elementNode.renderer).toBe(\"divider\");\n expect(elementNode.props).toBeUndefined();\n });\n });\n\n describe(\"named layout node access — form.layout(nodeId)\", () => {\n function createFormWithTabs() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n }\n\n it(\"should access a tabs node by ID and add a new tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].label).toBe(\"Analytics\");\n });\n\n it(\"should add a tab before an existing tab\", () => {\n const form = createFormWithTabs();\n\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .before(\"seo\");\n\n const tabsNode = form.vm.layout[1] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"analytics\");\n expect(tabsNode.tabs[2].id).toBe(\"seo\");\n });\n\n it(\"should throw when accessing a non-existent node ID\", () => {\n const form = createFormWithTabs();\n expect(() =>\n (form.layout(\"nonexistent\") as ILayoutNodeAccessHandle).as(\"tabs\")\n ).toThrow('Layout node \"nonexistent\" not found.');\n });\n });\n\n describe(\"positional modifiers targeting tabs/element nodes\", () => {\n it(\"should insert a row before a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n subtitle: fields.text().label(\"Subtitle\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"subtitle\").before(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(3);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n expect(form.vm.layout[2].type).toBe(\"tabs\");\n\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"subtitle\");\n });\n\n it(\"should remove a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => {\n layout.remove(\"settings\");\n return [];\n });\n\n expect(form.vm.layout).toHaveLength(1);\n expect(form.vm.layout[0].type).toBe(\"row\");\n });\n\n it(\"should replace a tabs node by ID\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.tabs(\"settings\").tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n ]\n });\n\n form.layout(layout => [layout.row(\"metaTitle\").replace(\"settings\")]);\n\n expect(form.vm.layout).toHaveLength(2);\n expect(form.vm.layout[0].type).toBe(\"row\");\n expect(form.vm.layout[1].type).toBe(\"row\");\n const row = form.vm.layout[1] as IRowNodeVM;\n expect(row.fields[0].name).toBe(\"metaTitle\");\n });\n });\n\n describe(\"modifier integration with tabs\", () => {\n it(\"should support a full modifier workflow: base form with tabs + modifier adds tab + modifier appends to existing tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n description: fields.text().label(\"Description\"),\n metaTitle: fields.text().label(\"Meta Title\")\n }),\n layout: layout => [\n layout.row(\"title\"),\n layout.separator(),\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"description\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(layout => [layout.row(\"metaTitle\")]);\n })\n ]\n });\n\n // Modifier A: add analytics tab\n form.fields(fields => ({\n trackingId: fields.text().label(\"Tracking ID\")\n }));\n\n (form.layout(\"settings\") as ILayoutNodeAccessHandle)\n .as(\"tabs\")\n .tab(\"analytics\", tab => {\n tab.label(\"Analytics\").layout(layout => [layout.row(\"trackingId\")]);\n })\n .after(\"seo\");\n\n // Verify full layout\n const vm = form.vm;\n expect(vm.layout).toHaveLength(3); // row, separator, tabs\n expect(vm.layout[0].type).toBe(\"row\");\n expect(vm.layout[1].type).toBe(\"separator\");\n expect(vm.layout[2].type).toBe(\"tabs\");\n\n const tabsNode = vm.layout[2] as ITabsNodeVM;\n expect(tabsNode.tabs).toHaveLength(3);\n expect(tabsNode.tabs[0].id).toBe(\"general\");\n expect(tabsNode.tabs[1].id).toBe(\"seo\");\n expect(tabsNode.tabs[2].id).toBe(\"analytics\");\n\n // SEO tab has metaTitle\n const seoTab = tabsNode.tabs[1];\n expect(seoTab.layout).toHaveLength(1);\n\n // Verify all fields are in getData\n const data = form.getData();\n expect(data).toHaveProperty(\"trackingId\");\n });\n });\n });\n\n describe(\"object fields (Phase 6)\", () => {\n describe(\"non-list object field\", () => {\n function createFormWithObject() {\n return createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Street is required\"),\n city: f.text().label(\"City\").required(\"City is required\")\n }))\n }),\n layout: layout => [layout.row(\"title\"), layout.row(\"address\")]\n });\n }\n\n it(\"should create an object field with children\", () => {\n const form = createFormWithObject();\n const field = form.field(\"address\");\n expect(field).toBeDefined();\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should access child fields via dot-notation\", () => {\n const form = createFormWithObject();\n const street = form.field(\"address.street\");\n expect(street).toBeDefined();\n expect(street.type).toBe(\"text\");\n });\n\n it(\"should throw on invalid dot-notation\", () => {\n const form = createFormWithObject();\n expect(() => form.field(\"address.zipcode\")).toThrow(\n 'Field \"address.zipcode\" not found.'\n );\n });\n\n it(\"should return nested object from getData\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const data = form.getData();\n expect(data.address).toEqual({\n street: \"123 Main St\",\n city: \"Springfield\"\n });\n });\n\n it(\"should hydrate children from setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n\n expect(form.field(\"address.street\").getValue()).toBe(\"456 Oak Ave\");\n expect(form.field(\"address.city\").getValue()).toBe(\"Portland\");\n });\n\n it(\"should not be dirty after setData\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should be dirty after changing a child field\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"456 Oak Ave\", city: \"Portland\" }\n });\n form.field(\"address.street\").setValue(\"789 Pine Rd\");\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should validate children recursively\", async () => {\n const form = createFormWithObject();\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors.length).toBeGreaterThan(0);\n // Parent object is filtered out when children have errors\n expect(form.errors.some(e => e.path === \"address\")).toBe(false);\n expect(form.errors.some(e => e.path === \"address.street\")).toBe(true);\n expect(form.errors.some(e => e.path === \"address.city\")).toBe(true);\n });\n\n it(\"should pass validation when children are valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should expose IObjectFieldVM from field.vm\", () => {\n const form = createFormWithObject();\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const vm = form.field(\"address\").vm as IObjectFieldVM;\n expect(vm.type).toBe(\"object\");\n expect(vm.isList).toBe(false);\n expect(vm.fields).toHaveLength(2);\n expect(vm.fields[0].name).toBe(\"street\");\n expect(vm.fields[0].value).toBe(\"123 Main St\");\n expect(vm.fields[1].name).toBe(\"city\");\n expect(vm.items).toHaveLength(0);\n });\n\n it(\"should render object field in a row via default layout\", () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\")\n }))\n })\n });\n\n const vm = form.vm;\n expect(vm.layout).toHaveLength(1);\n expect(vm.layout[0].type).toBe(\"row\");\n const row = asRow(vm.layout[0]);\n expect(row.fields[0].type).toBe(\"object\");\n expect(row.fields[0].name).toBe(\"address\");\n });\n\n it(\"should reset to baseline values\", () => {\n const form = createFormWithObject();\n form.setData({\n title: \"Home\",\n address: { street: \"Original St\", city: \"Original City\" }\n });\n\n form.field(\"address.street\").setValue(\"Changed St\");\n expect(form.isDirty).toBe(true);\n\n form.reset();\n expect(form.field(\"address.street\").getValue()).toBe(\"Original St\");\n expect(form.isDirty).toBe(false);\n });\n\n it(\"should submit nested data when valid\", async () => {\n const form = createFormWithObject();\n form.field(\"title\").setValue(\"Home\");\n form.field(\"address.street\").setValue(\"123 Main St\");\n form.field(\"address.city\").setValue(\"Springfield\");\n\n const result = await form.submit();\n expect(result).toEqual({\n title: \"Home\",\n address: {\n street: \"123 Main St\",\n city: \"Springfield\"\n }\n });\n });\n\n it(\"should skip schema validation for non-required object field with null underlying data\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\")\n }))\n .schema(z.object({ street: z.string().min(1) }))\n })\n });\n\n form.setData({ address: null as any });\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should skip schema validation for non-required object field with undefined underlying data\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\")\n }))\n .schema(z.object({ street: z.string().min(1) }))\n })\n });\n\n form.setData({ address: undefined as any });\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should run schema validation for non-required object field with populated values\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\")\n }))\n .schema(z.object({ street: z.string().min(5, \"Street too short\") }))\n })\n });\n\n form.field(\"address.street\").setValue(\"Hi\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors).toHaveLength(1);\n expect(form.errors[0].message).toBe(\"Street too short\");\n });\n\n it(\"should run schema validation for required object field with populated but invalid values\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\")\n }))\n .required(\"Address is required\")\n .schema(\n z.object({\n street: z.string().min(5, \"Street too short\")\n })\n )\n })\n });\n\n form.field(\"address.street\").setValue(\"Hi\");\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors).toHaveLength(1);\n expect(form.errors[0].message).toBe(\"Street too short\");\n });\n\n it(\"should fail required validation for required object field with null data even when schema is set\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\")\n }))\n .required(\"Address is required\")\n .schema(z.object({ street: z.string().min(1) }))\n })\n });\n\n form.setData({ address: null as any });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors).toHaveLength(1);\n expect(form.errors[0].message).toBe(\"Address is required\");\n });\n\n it(\"should skip schema validation for non-required object field when all child values are empty\", async () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\")\n }))\n .schema(\n z.object({\n street: z.string().min(1),\n city: z.string().min(1)\n })\n )\n })\n });\n\n form.field(\"address.street\").setValue(\"\");\n form.field(\"address.city\").setValue(\"\");\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n });\n\n describe(\"list object field\", () => {\n function createFormWithList() {\n return createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\").required(\"Name is required\"),\n model: f.text().label(\"Model\").required(\"Model is required\")\n }))\n .list()\n }),\n layout: layout => [layout.row(\"presets\")]\n });\n }\n\n it(\"should create a list object field\", () => {\n const form = createFormWithList();\n const field = form.field(\"presets\");\n expect(field.type).toBe(\"object\");\n });\n\n it(\"should return empty array from getData initially\", () => {\n const form = createFormWithList();\n expect(form.getData().presets).toEqual([]);\n });\n\n it(\"should add items via the field VM\", () => {\n const form = createFormWithList();\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.isList).toBe(true);\n expect(vm.items).toHaveLength(0);\n\n vm.addItem();\n\n const updatedVm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(updatedVm.items).toHaveLength(1);\n expect(updatedVm.items[0].fields).toHaveLength(2);\n expect(updatedVm.items[0].fields[0].name).toBe(\"name\");\n });\n\n it(\"should hydrate list from setData\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const data = form.getData();\n expect(data.presets).toEqual([\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]);\n });\n\n it(\"should expose items via IObjectFieldVM\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm.items).toHaveLength(2);\n expect(vm.items[0].fields[0].value).toBe(\"Default\");\n expect(vm.items[1].fields[1].value).toBe(\"claude-haiku\");\n });\n\n it(\"should remove items via item.remove()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].remove();\n\n expect(form.getData().presets).toEqual([{ name: \"Fast\", model: \"claude-haiku\" }]);\n });\n\n it(\"should remove items via removeItem()\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" },\n { name: \"C\", model: \"c\" }\n ]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.removeItem(1);\n\n expect(form.getData().presets).toEqual([\n { name: \"A\", model: \"a\" },\n { name: \"C\", model: \"c\" }\n ]);\n });\n\n it(\"should validate all items\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"\", model: \"\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"should pass validation when all items are valid\", async () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"Default\", model: \"claude-sonnet\" },\n { name: \"Fast\", model: \"claude-haiku\" }\n ]\n });\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should validate with listSchema\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: [{ name: \"Only one\" }] });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"At least 2 presets are required\");\n });\n\n it(\"should skip listSchema validation for non-required list field with empty list\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should skip listSchema validation for non-required list field with undefined value\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: undefined as any });\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should skip listSchema validation for non-required list field with null value\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: null as any });\n const valid = await form.validate();\n\n expect(valid).toBe(true);\n expect(form.errors).toHaveLength(0);\n });\n\n it(\"should enforce listSchema validation for required list field with null value\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .required(\"Presets are required\")\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n form.setData({ presets: null as any });\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n expect(form.errors[0].message).toBe(\"Presets are required\");\n });\n\n it(\"should enforce listSchema validation for required list field with empty list\", async () => {\n const form = createForm({\n fields: fields => ({\n presets: fields\n .object()\n .label(\"Presets\")\n .fields(f => ({\n name: f.text().label(\"Name\")\n }))\n .list()\n .required(\"Presets are required\")\n .listSchema(z.array(z.any()).min(2, \"At least 2 presets are required\"))\n })\n });\n\n const valid = await form.validate();\n\n expect(valid).toBe(false);\n });\n\n it(\"should be dirty after adding an item\", () => {\n const form = createFormWithList();\n form.setData({ presets: [] });\n expect(form.isDirty).toBe(false);\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.addItem();\n expect(form.isDirty).toBe(true);\n });\n\n it(\"should have stable keys across re-renders\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [\n { name: \"A\", model: \"a\" },\n { name: \"B\", model: \"b\" }\n ]\n });\n\n const vm1 = form.field(\"presets\").vm as IObjectFieldVM;\n const key0 = vm1.items[0].key;\n const key1 = vm1.items[1].key;\n\n // Re-read VM — keys should be the same\n const vm2 = form.field(\"presets\").vm as IObjectFieldVM;\n expect(vm2.items[0].key).toBe(key0);\n expect(vm2.items[1].key).toBe(key1);\n });\n\n it(\"should pass empty list validation when not required\", async () => {\n const form = createFormWithList();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"should modify item field values via VM onChange\", () => {\n const form = createFormWithList();\n form.setData({\n presets: [{ name: \"Default\", model: \"claude-sonnet\" }]\n });\n\n const vm = form.field(\"presets\").vm as IObjectFieldVM;\n vm.items[0].fields[0].onChange(\"Updated\");\n\n expect((form.getData().presets as any[])[0].name).toBe(\"Updated\");\n });\n });\n\n describe(\"hasErrors rollup through tabs\", () => {\n it(\"should report hasErrors in tabs containing object fields\", async () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n address: fields\n .object()\n .label(\"Address\")\n .fields(f => ({\n street: f.text().label(\"Street\").required(\"Required\")\n }))\n }),\n layout: layout => [\n layout\n .tabs(\"settings\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(layout => [layout.row(\"title\")]);\n })\n .tab(\"details\", tab => {\n tab.label(\"Details\").layout(layout => [layout.row(\"address\")]);\n })\n ]\n });\n\n form.field(\"title\").setValue(\"Hello\");\n await form.validate();\n\n const tabsNode = form.vm.layout[0] as ITabsNodeVM;\n expect(tabsNode.tabs[0].hasErrors).toBe(false);\n expect(tabsNode.tabs[1].hasErrors).toBe(true);\n });\n });\n });\n\n describe(\"templated object fields (Phase 8a)\", () => {\n function createFormWithTemplatedObject() {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .label(\"Content\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .description(\"Large heading with an image\")\n .fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\").fields(f => ({\n body: f.text().label(\"Body\").required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"shape\", () => {\n it(\"starts with no active template and empty children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(field.isTemplated).toBe(true);\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"exposes available templates via VM\", () => {\n const form = createFormWithTemplatedObject();\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.isTemplated).toBe(true);\n expect(vm.availableTemplates).toEqual([\n {\n id: \"hero\",\n label: \"Hero Banner\",\n description: \"Large heading with an image\"\n },\n { id: \"text\", label: \"Rich Text\" }\n ]);\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.fields).toEqual([]);\n });\n\n it(\"rejects .fields() alongside .template() at build time\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .fields(f => ({ x: f.text() }))\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/both .fields\\(\\) and .template\\(\\)/);\n });\n\n it(\"rejects duplicate template ids\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"a\", t => {\n t.label(\"A1\").fields(f => ({ x: f.text() }));\n })\n .template(\"a\", t => {\n t.label(\"A2\").fields(f => ({ y: f.text() }));\n })\n })\n })\n ).toThrow(/Duplicate template id \"a\"/);\n });\n\n it(\"rejects reserved _templateId as template id\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"_templateId\", t => {\n t.label(\"X\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).toThrow(/reserved/);\n });\n\n it(\"rejects _templateId as a child field name in a template\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ _templateId: f.text() }));\n })\n })\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"allows combining .list() with .template() (Phase 8b)\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .list()\n .template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n })\n ).not.toThrow();\n });\n });\n\n describe(\"setTemplate / switching\", () => {\n it(\"builds children when a template is selected\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n\n expect(field.activeTemplateId).toBe(\"hero\");\n expect(field.children.size).toBe(2);\n expect(form.field(\"content.heading\").type).toBe(\"text\");\n expect(form.field(\"content.image\").type).toBe(\"text\");\n });\n\n it(\"discards data when switching to a different template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hello\");\n\n field.setTemplate(\"text\");\n\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\")).toBeDefined();\n expect(() => form.field(\"content.heading\")).toThrow();\n });\n\n it(\"is a no-op when setting the currently active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Preserved\");\n field.setTemplate(\"hero\");\n\n expect(form.field(\"content.heading\").getValue()).toBe(\"Preserved\");\n });\n\n it(\"throws when setting an unknown template id\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n expect(() => field.setTemplate(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"wires the form reference on newly created children\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // Setting a value on a child requires _form to be wired for pipelines.\n expect(() => form.field(\"content.heading\").setValue(\"OK\")).not.toThrow();\n });\n });\n\n describe(\"getData / setData\", () => {\n it(\"returns null when no template is active\", () => {\n const form = createFormWithTemplatedObject();\n expect(form.getData().content).toBeNull();\n });\n\n it(\"includes _templateId and child values when active\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Welcome\");\n form.field(\"content.image\").setValue(\"cover.jpg\");\n\n expect(form.getData().content).toEqual({\n _templateId: \"hero\",\n heading: \"Welcome\",\n image: \"cover.jpg\"\n });\n });\n\n it(\"hydrates via setData by reading _templateId\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"text\", body: \"Lorem ipsum\" }\n });\n\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBe(\"text\");\n expect(form.field(\"content.body\").getValue()).toBe(\"Lorem ipsum\");\n });\n\n it(\"setData with null clears the active template\", () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"X\");\n\n form.setData({ content: null as any });\n\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n });\n\n it(\"setData ignores unknown template id silently\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"nope\", foo: \"bar\" } as any\n });\n const field = form.field(\"content\") as any;\n expect(field.activeTemplateId).toBeNull();\n });\n });\n\n describe(\"validation\", () => {\n it(\"required templated object fails validation when no template active\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path === \"content\")).toBe(true);\n });\n\n it(\"required templated object passes when template active with valid children\", async () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .required(\"Pick a template\")\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\")\n }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n form.field(\"content.heading\").setValue(\"Hi\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n\n it(\"validates child fields inside active template\", async () => {\n const form = createFormWithTemplatedObject();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n // heading is required; no value set\n const valid = await form.validate();\n expect(valid).toBe(false);\n });\n\n it(\"passes validation when object is optional and no template selected\", async () => {\n const form = createFormWithTemplatedObject();\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"template visibility\", () => {\n it(\"filters availableTemplates by reactive visible callback\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n content: fields\n .object()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n\n it(\"hiding a template does not clear an already-active selection\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"enterprise\"),\n content: fields.object().template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const field = form.field(\"content\") as any;\n field.setTemplate(\"premium\");\n form.field(\"content.y\").setValue(\"set\");\n\n form.field(\"plan\").setValue(\"free\");\n\n // Template no longer in picker, but active selection + data preserved.\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(vm.activeTemplateId).toBe(\"premium\");\n expect(form.field(\"content.y\").getValue()).toBe(\"set\");\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after switching template\", () => {\n const form = createFormWithTemplatedObject();\n form.setData({\n content: { _templateId: \"hero\", heading: \"Hello\", image: \"\" }\n });\n (form.field(\"content\") as any).setTemplate(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"templated list fields (Phase 8b)\", () => {\n function createFormWithTemplatedList() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .label(\"Sections\")\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().required(\"Required\"),\n image: f.text()\n }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({\n body: f.text().required(\"Required\")\n }));\n })\n })\n });\n }\n\n describe(\"addItem / templateId\", () => {\n it(\"requires a template id when adding to a templated list\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem()).toThrow(/require a template id/);\n });\n\n it(\"rejects unknown template ids\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n expect(() => field.addItem(\"missing\")).toThrow(/Template \"missing\" not found/);\n });\n\n it(\"adds an item with the picked template's children\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.has(\"heading\")).toBe(true);\n expect(field.items[0].children.has(\"image\")).toBe(true);\n });\n\n it(\"allows mixing different templates across items\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.addItem(\"hero\");\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\", \"hero\"]);\n });\n });\n\n describe(\"getData\", () => {\n it(\"includes _templateId per item\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Welcome\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"Lorem\");\n\n expect(form.getData().sections).toEqual([\n { _templateId: \"hero\", heading: \"Welcome\", image: null },\n { _templateId: \"text\", body: \"Lorem\" }\n ]);\n });\n });\n\n describe(\"setData\", () => {\n it(\"hydrates items by reading each item's _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H1\", image: \"img.jpg\" },\n { _templateId: \"text\", body: \"Body copy\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items[0].templateId).toBe(\"hero\");\n expect(field.items[0].children.get(\"heading\").getValue()).toBe(\"H1\");\n expect(field.items[1].templateId).toBe(\"text\");\n expect(field.items[1].children.get(\"body\").getValue()).toBe(\"Body copy\");\n });\n\n it(\"silently drops items with invalid or missing _templateId\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"Keep\" },\n { _templateId: \"nope\", x: 1 } as any,\n { heading: \"no-id\" } as any,\n null as any,\n { _templateId: \"text\", body: \"Also keep\" }\n ]\n });\n\n const field = form.field(\"sections\") as any;\n expect(field.items.length).toBe(2);\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n });\n\n describe(\"duplicate / move / remove\", () => {\n it(\"duplicates an item preserving templateId and values\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"Original\");\n field.items[0].children.get(\"image\").setValue(\"pic.jpg\");\n\n field.duplicateItem(0);\n\n expect(field.items.length).toBe(2);\n expect(field.items[1].templateId).toBe(\"hero\");\n expect(field.items[1].children.get(\"heading\").getValue()).toBe(\"Original\");\n expect(field.items[1].children.get(\"image\").getValue()).toBe(\"pic.jpg\");\n expect(field.items[0].key).not.toBe(field.items[1].key);\n });\n\n it(\"moves items while preserving templateId\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.moveItem(0, 1);\n\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"text\", \"hero\"]);\n });\n\n it(\"removes items by index\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"text\");\n field.removeItem(0);\n\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n });\n\n describe(\"VM\", () => {\n it(\"exposes templateId and duplicate on each item VM\", () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(1);\n expect(vm.items[0].templateId).toBe(\"hero\");\n expect(typeof vm.items[0].duplicate).toBe(\"function\");\n });\n\n it(\"VM addItem(templateId) appends an item\", () => {\n const form = createFormWithTemplatedList();\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n vm.addItem(\"hero\");\n vm.addItem(\"text\");\n\n const field = form.field(\"sections\") as any;\n expect(field.items.map((i: any) => i.templateId)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"availableTemplates respects reactive visible() on templated lists\", () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n sections: fields\n .object()\n .list()\n .template(\"basic\", t => {\n t.label(\"Basic\").fields(f => ({ x: f.text() }));\n })\n .template(\"premium\", t => {\n t.label(\"Premium\")\n .visible(f => f.field(\"plan\").getValue() === \"enterprise\")\n .fields(f => ({ y: f.text() }));\n })\n })\n });\n\n const vm1 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm1.availableTemplates.map(t => t.id)).toEqual([\"basic\"]);\n\n form.field(\"plan\").setValue(\"enterprise\");\n const vm2 = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm2.availableTemplates.map(t => t.id)).toEqual([\"basic\", \"premium\"]);\n });\n });\n\n describe(\"validation\", () => {\n it(\"validates each item's children under its template\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\"); // heading is required, not set\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"ok\");\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.path.startsWith(\"sections\"))).toBe(true);\n });\n\n it(\"passes when every item's required fields are filled\", async () => {\n const form = createFormWithTemplatedList();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.items[0].children.get(\"heading\").setValue(\"H\");\n field.addItem(\"text\");\n field.items[1].children.get(\"body\").setValue(\"B\");\n\n const valid = await form.validate();\n expect(valid).toBe(true);\n });\n });\n\n describe(\"isDirty\", () => {\n it(\"is not dirty after setData with templated list\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [\n { _templateId: \"hero\", heading: \"H\", image: \"\" },\n { _templateId: \"text\", body: \"B\" }\n ]\n });\n expect(form.isDirty).toBe(false);\n });\n\n it(\"becomes dirty after adding an item\", () => {\n const form = createFormWithTemplatedList();\n form.setData({\n sections: [{ _templateId: \"hero\", heading: \"H\", image: \"\" }]\n });\n (form.field(\"sections\") as any).addItem(\"text\");\n expect(form.isDirty).toBe(true);\n });\n });\n });\n\n describe(\"per-template / inner object layouts (Phase 8c)\", () => {\n describe(\"non-templated single object\", () => {\n it(\"defaults to one row per visible child when no layout.object() is registered\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n })\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"b\"]);\n });\n\n it(\"resolves the registered inner layout against the children\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n }),\n layout: layout => [layout.object(\"meta\", l => [l.row(\"a\", \"b\")])]\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n });\n\n it(\"throws when a per-template map is passed to a non-templated field\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n meta: fields.object().fields(f => ({ a: f.text() }))\n }),\n layout: layout => [layout.object(\"meta\", { tplA: l => [l.row(\"a\")] })]\n })\n ).toThrow(/not templated/);\n });\n });\n\n describe(\"non-templated list\", () => {\n it(\"applies the inner layout to every list item\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({ a: f.text(), b: f.text() }))\n }),\n layout: layout => [layout.object(\"rows\", l => [l.row(\"a\", \"b\")])]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n field.addItem();\n const vm = field.vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n expect(item.layout.length).toBe(1);\n expect(asRow(item.layout[0]).fields.map(f => f.name)).toEqual([\"a\", \"b\"]);\n }\n });\n });\n\n describe(\"templated single object\", () => {\n function buildTemplatedForm(layoutFactory?: IFormModelConfig[\"layout\"]) {\n return createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layoutFactory\n });\n }\n\n it(\"uses the active template's per-template layout\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n let vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(1);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n\n field.setTemplate(\"cta\");\n vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"falls back to default one-row-per-child when active template has no entry\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n // no entry for \"cta\"\n })\n ]);\n const field = form.field(\"content\") as any;\n field.setTemplate(\"cta\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"returns an empty layout when no template is active\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", { hero: l => [l.row(\"heading\", \"subheading\")] })\n ]);\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.activeTemplateId).toBeNull();\n expect(vm.layout).toEqual([]);\n });\n\n it(\"silently ignores an unknown template id in the layout map\", () => {\n const form = buildTemplatedForm(layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n unknown: l => [l.row(\"xxx\")]\n })\n ]);\n // Should not throw at build time; the unknown entry is dead until referenced.\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n });\n\n it(\"throws when a single LayoutNode[] is passed to a templated field\", () => {\n expect(() =>\n buildTemplatedForm(layout => [layout.object(\"content\", l => [l.row(\"x\")])])\n ).toThrow(/is templated/);\n });\n\n it(\"falls back to default when no layout.object() is registered\", () => {\n const form = buildTemplatedForm();\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.length).toBe(2);\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n expect(asRow(vm.layout[1]).fields.map(f => f.name)).toEqual([\"subheading\"]);\n });\n });\n\n describe(\"templated list\", () => {\n function buildTemplatedListForm() {\n return createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }));\n })\n .template(\"cta\", t => {\n t.label(\"CTA\").fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [l.row(\"heading\", \"subheading\")],\n cta: l => [l.row(\"text\"), l.row(\"url\")]\n })\n ]\n });\n }\n\n it(\"each item resolves layout against its own template\", () => {\n const form = buildTemplatedListForm();\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"cta\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n expect(asRow(vm.items[0].layout[0]).fields.map(f => f.name)).toEqual([\n \"heading\",\n \"subheading\"\n ]);\n expect(asRow(vm.items[1].layout[0]).fields.map(f => f.name)).toEqual([\"text\"]);\n expect(asRow(vm.items[1].layout[1]).fields.map(f => f.name)).toEqual([\"url\"]);\n });\n\n it(\"hides hidden child fields from the resolved layout row\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n secret: f.text().hidden()\n }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"secret\")]\n })\n ]\n });\n const field = form.field(\"content\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"heading\"]);\n });\n });\n\n describe(\"interaction with form.vm.layout\", () => {\n it(\"the form layout exposes a single-field row for the object\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n const layout = form.vm.layout;\n expect(layout.length).toBe(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"content\"]);\n });\n\n it(\"hides the object node from form.vm.layout when the field is not visible\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .hidden()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n }),\n layout: layout => [layout.object(\"content\", { hero: l => [l.row(\"heading\")] })]\n });\n expect(form.vm.layout).toEqual([]);\n });\n });\n });\n\n describe(\"inner layouts declared on the field builder\", () => {\n it(\"lays out a single object's children with .layout()\", () => {\n const form = createForm({\n fields: fields => ({\n address: fields\n .object()\n .fields(f => ({\n street: f.text().label(\"Street\"),\n city: f.text().label(\"City\"),\n zip: f.text().label(\"Zip\")\n }))\n .layout(l => [l.row(\"street\"), l.row(\"city\", \"zip\")])\n })\n });\n const vm = form.field(\"address\").vm as IObjectFieldVM;\n expect(vm.layout.map(node => asRow(node).fields.map(f => f.name))).toEqual([\n [\"street\"],\n [\"city\", \"zip\"]\n ]);\n });\n\n it(\"applies .layout() to every list item\", () => {\n const form = createForm({\n fields: fields => ({\n stats: fields\n .object()\n .list()\n .fields(f => ({\n value: f.number().label(\"Value\"),\n label: f.text().label(\"Label\")\n }))\n .layout(l => [l.row(\"value\", \"label\")])\n })\n });\n form.setData({\n stats: [\n { value: 1, label: \"A\" },\n { value: 2, label: \"B\" }\n ]\n });\n const vm = form.field(\"stats\").vm as IObjectFieldVM;\n expect(vm.items).toHaveLength(2);\n for (const item of vm.items) {\n expect(item.layout.map(node => asRow(node).fields.map(f => f.name))).toEqual([\n [\"value\", \"label\"]\n ]);\n }\n });\n\n it(\"lays out an object nested in another object with its own .layout()\", () => {\n const form = createForm({\n fields: fields => ({\n subMenu: fields\n .object()\n .fields(f => ({\n climbing: f\n .object()\n .list()\n .fields(c => ({\n label: c.text().label(\"Label\"),\n url: c.text().label(\"URL\")\n }))\n .layout(l => [l.row(\"label\", \"url\")]),\n yoga: f.text().label(\"Yoga\")\n }))\n .layout(l => [l.row(\"climbing\", \"yoga\")])\n })\n });\n form.setData({ subMenu: { climbing: [{ label: \"Classes\", url: \"/c\" }], yoga: \"\" } });\n\n const outer = form.field(\"subMenu\").vm as IObjectFieldVM;\n expect(asRow(outer.layout[0]).fields.map(f => f.name)).toEqual([\"climbing\", \"yoga\"]);\n\n const inner = form.field(\"subMenu.climbing\").vm as IObjectFieldVM;\n expect(asRow(inner.items[0].layout[0]).fields.map(f => f.name)).toEqual([\n \"label\",\n \"url\"\n ]);\n });\n\n it(\"lets a layout.object() node override the field's .layout()\", () => {\n const form = createForm({\n fields: fields => ({\n meta: fields\n .object()\n .fields(f => ({\n a: f.text().label(\"A\"),\n b: f.text().label(\"B\")\n }))\n .layout(l => [l.row(\"a\", \"b\")])\n }),\n layout: layout => [layout.object(\"meta\", l => [l.row(\"b\"), l.row(\"a\")])]\n });\n const vm = form.field(\"meta\").vm as IObjectFieldVM;\n expect(vm.layout.map(node => asRow(node).fields.map(f => f.name))).toEqual([\n [\"b\"],\n [\"a\"]\n ]);\n });\n\n it(\"uses the layout declared on each template\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"hero\", t => {\n t.label(\"Hero\")\n .fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\")\n }))\n .layout(l => [l.row(\"heading\", \"subheading\")]);\n })\n .template(\"cta\", t => {\n t.label(\"CTA\")\n .fields(f => ({\n text: f.text().label(\"Text\"),\n url: f.text().label(\"URL\")\n }))\n .layout(l => [l.row(\"url\", \"text\")]);\n })\n }),\n layout: layout => [\n layout.object(\"content\", { hero: l => [l.row(\"subheading\"), l.row(\"heading\")] })\n ]\n });\n const field = form.field(\"content\") as any;\n\n // \"hero\" is overridden by the layout.object() node.\n field.setTemplate(\"hero\");\n let vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.map(node => asRow(node).fields.map(f => f.name))).toEqual([\n [\"subheading\"],\n [\"heading\"]\n ]);\n\n // \"cta\" isn't mentioned by the override, so it keeps its declared layout.\n field.setTemplate(\"cta\");\n vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.layout.map(node => asRow(node).fields.map(f => f.name))).toEqual([\n [\"url\", \"text\"]\n ]);\n });\n\n it(\"throws when an object has both .layout() and .template()\", () => {\n expect(() =>\n createForm({\n fields: fields => ({\n content: fields\n .object()\n .template(\"hero\", t => {\n t.fields(f => ({ heading: f.text() }));\n })\n .layout(l => [l.row(\"heading\")])\n })\n })\n ).toThrow(/both .layout\\(\\) and .template\\(\\)/);\n });\n });\n\n describe(\"nested object layouts (Phase 8c.1)\", () => {\n it(\"registers layout.object() nested inside another object's inner layout (non-templated)\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(seoVm.layout.length).toBe(1);\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"supports three levels of nesting\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.object().fields(f => ({\n b: f.object().fields(g => ({\n c: g.object().fields(h => ({\n x: h.text(),\n y: h.text()\n }))\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"a\", l1 => [\n l1.object(\"b\", l2 => [l2.object(\"c\", l3 => [l3.row(\"x\", \"y\")])])\n ])\n ]\n });\n const aVm = form.field(\"a\").vm as IObjectFieldVM;\n const bVm = asRow(aVm.layout[0]).fields[0] as IObjectFieldVM;\n const cVm = asRow(bVm.layout[0]).fields[0] as IObjectFieldVM;\n expect(cVm.layout.length).toBe(1);\n expect(asRow(cVm.layout[0]).fields.map(f => f.name)).toEqual([\"x\", \"y\"]);\n });\n\n it(\"registers nested layouts on a templated single object when its template activates\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"block\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"block\") as any;\n field.setTemplate(\"hero\");\n const vm = form.field(\"block\").vm as IObjectFieldVM;\n const seoRow = asRow(vm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on a templated list — each item gets its own\", () => {\n const form = createForm({\n fields: fields => ({\n sections: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({\n heading: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n })\n }),\n layout: layout => [\n layout.object(\"sections\", {\n hero: l => [\n l.row(\"heading\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ]\n })\n ]\n });\n const field = form.field(\"sections\") as any;\n field.addItem(\"hero\");\n field.addItem(\"hero\");\n const vm = form.field(\"sections\").vm as IObjectFieldVM;\n expect(vm.items.length).toBe(2);\n for (const item of vm.items) {\n const seoVm = asRow(item.layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n }\n });\n\n it(\"registers nested layouts on a non-templated list item upon creation\", () => {\n const form = createForm({\n fields: fields => ({\n rows: fields\n .object()\n .list()\n .fields(f => ({\n label: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"rows\", l => [\n l.row(\"label\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n const field = form.field(\"rows\") as any;\n field.addItem();\n const vm = form.field(\"rows\").vm as IObjectFieldVM;\n const seoVm = asRow(vm.items[0].layout[1]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"registers nested layouts on children added via field.as('object').fields() at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text()\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l.row(\"title\"),\n l.object(\"seo\", inner => [inner.row(\"metaTitle\", \"metaDescription\")])\n ])\n ]\n });\n // seo doesn't exist yet; the layout entry is a no-op until we add it.\n form.field(\"page\")\n .as(\"object\")\n .fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }));\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n const seoRow = asRow(pageVm.layout[1]);\n const seoVm = seoRow.fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"recurses through tabs nested inside an inner layout\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs()\n .tab(\"main\", tab => {\n tab.label(\"Main\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seoTab\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const seoVm = form.field(\"page.seo\").vm as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n\n it(\"resolves tabs inside an inner layout against the children scope\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text(),\n body: f.text(),\n seo: f.object().fields(g => ({\n metaTitle: g.text(),\n metaDescription: g.text()\n }))\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs(\"pageTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\"), l.row(\"body\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [\n l.object(\"seo\", inner => [\n inner.row(\"metaTitle\", \"metaDescription\")\n ])\n ]);\n })\n ])\n ]\n });\n const pageVm = form.field(\"page\").vm as IObjectFieldVM;\n expect(pageVm.layout.length).toBe(1);\n const tabs = pageVm.layout[0] as ITabsNodeVM;\n expect(tabs.type).toBe(\"tabs\");\n expect(tabs.tabs.map(t => t.id)).toEqual([\"general\", \"seo\"]);\n const generalTab = tabs.tabs[0];\n expect(asRow(generalTab.layout[0]).fields.map(f => f.name)).toEqual([\"title\"]);\n expect(asRow(generalTab.layout[1]).fields.map(f => f.name)).toEqual([\"body\"]);\n const seoTab = tabs.tabs[1];\n const seoVm = asRow(seoTab.layout[0]).fields[0] as IObjectFieldVM;\n expect(asRow(seoVm.layout[0]).fields.map(f => f.name)).toEqual([\n \"metaTitle\",\n \"metaDescription\"\n ]);\n });\n });\n\n describe(\"runtime template modification (Phase 8d)\", () => {\n function createSingleTemplatedForm() {\n return createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n })\n });\n }\n\n function createListTemplatedForm() {\n return createForm({\n fields: fields => ({\n blocks: fields\n .object()\n .list()\n .template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text() }));\n })\n .template(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n })\n })\n });\n }\n\n it(\"templates.add appends a template and the picker lists it\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.add(\"text\", t => {\n t.label(\"Text\").fields(f => ({ body: f.text() }));\n });\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\", \"text\"]);\n });\n\n it(\"templates.add keeps the layout declared on the added template\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.add(\"cta\", t => {\n t.label(\"CTA\")\n .fields(f => ({ text: f.text(), url: f.text() }))\n .layout(l => [l.row(\"text\", \"url\")]);\n });\n (form.field(\"content\") as any).setTemplate(\"cta\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(asRow(vm.layout[0]).fields.map(f => f.name)).toEqual([\"text\", \"url\"]);\n });\n\n it(\"templates.add throws on duplicate id\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"hero\", t => {\n t.label(\"Other\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/Duplicate template id \"hero\"/);\n });\n\n it(\"templates.add throws on reserved _templateId\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"_templateId\", t => {\n t.label(\"Reserved\").fields(f => ({ x: f.text() }));\n })\n ).toThrow(/reserved/);\n });\n\n it(\"templates.add throws when the template defines a reserved _templateId field\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n expect(() =>\n field.templates.add(\"bad\", t => {\n t.label(\"Bad\").fields(f => ({ _templateId: f.text() }));\n })\n ).toThrow(/reserved field \"_templateId\"/);\n });\n\n it(\"templates.remove removes the template from the picker\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.templates.remove(\"text\");\n const vm = form.field(\"blocks\").vm as IObjectFieldVM;\n expect(vm.availableTemplates.map(t => t.id)).toEqual([\"hero\"]);\n });\n\n it(\"templates.remove silently no-ops on unknown id\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n const before = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(() => field.templates.remove(\"nonExistent\")).not.toThrow();\n const after = (form.field(\"blocks\").vm as IObjectFieldVM).availableTemplates.length;\n expect(after).toBe(before);\n });\n\n it(\"templates.remove clears active template on a single-object field via onChange(null) semantics\", () => {\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n expect(field.activeTemplateId).toBe(\"hero\");\n field.templates.remove(\"hero\");\n expect(field.activeTemplateId).toBeNull();\n expect(field.children.size).toBe(0);\n expect(form.field(\"content\").getValue()).toBeNull();\n });\n\n it(\"templates.remove drops list items whose _templateId matches\", () => {\n const form = createListTemplatedForm();\n const field = form.field(\"blocks\").as(\"object\");\n field.addItem(\"hero\", { heading: \"H1\" });\n field.addItem(\"text\", { body: \"B1\" });\n field.addItem(\"hero\", { heading: \"H2\" });\n expect(field.items.length).toBe(3);\n field.templates.remove(\"hero\");\n expect(field.items.length).toBe(1);\n expect(field.items[0].templateId).toBe(\"text\");\n });\n\n it(\"templates.add throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() =>\n field.templates.add(\"x\", t => {\n t.label(\"X\").fields(f => ({ y: f.text() }));\n })\n ).toThrow(/not templated/);\n });\n\n it(\"templates.remove throws when called on a non-templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n plain: fields.object().fields(f => ({ x: f.text() }))\n })\n });\n const field = form.field(\"plain\").as(\"object\");\n expect(() => field.templates.remove(\"anything\")).toThrow(/not templated/);\n });\n\n it(\"orphan layout entry persists silently and is reused when the same template id is re-added\", () => {\n const form = createForm({\n fields: fields => ({\n content: fields.object().template(\"hero\", t => {\n t.label(\"Hero\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n })\n }),\n layout: layout => [\n layout.object(\"content\", {\n hero: l => [l.row(\"heading\", \"subheading\")]\n })\n ]\n });\n const field = form.field(\"content\").as(\"object\");\n field.setTemplate(\"hero\");\n const vmBefore = form.field(\"content\").vm as IObjectFieldVM;\n const rowBefore = asRow(vmBefore.layout[0]);\n expect(rowBefore.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n\n field.templates.remove(\"hero\");\n field.templates.add(\"hero\", t => {\n t.label(\"Hero v2\").fields(f => ({ heading: f.text(), subheading: f.text() }));\n });\n field.setTemplate(\"hero\");\n\n const vmAfter = form.field(\"content\").vm as IObjectFieldVM;\n const rowAfter = asRow(vmAfter.layout[0]);\n expect(rowAfter.fields.map(f => f.name)).toEqual([\"heading\", \"subheading\"]);\n });\n\n it(\"removing all templates does not emit dev warnings (orphan suppression)\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createSingleTemplatedForm();\n const field = form.field(\"content\").as(\"object\");\n field.templates.remove(\"hero\");\n const vm = form.field(\"content\").vm as IObjectFieldVM;\n expect(vm.availableTemplates).toEqual([]);\n expect(warn).not.toHaveBeenCalled();\n warn.mockRestore();\n });\n });\n\n describe(\"requiredWhen (Phase 11)\", () => {\n it(\"makes a field required when the callback returns true\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Seats required\"\n )\n })\n });\n\n // plan = free → not required → validation passes\n expect(form.field(\"seats\").vm.required).toBe(false);\n expect(await form.validate()).toBe(true);\n\n // plan = pro → becomes required → empty value fails validation\n form.field(\"plan\").setValue(\"pro\");\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(await form.validate()).toBe(false);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Seats required\");\n });\n\n it(\"chains requiredWhen callbacks — first truthy wins\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n flag: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Pro requires it\"\n )\n .requiredWhen(\n ({ form }) => form.field(\"flag\").getValue() === \"on\",\n \"Flag requires it\"\n )\n })\n });\n\n form.field(\"flag\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Flag requires it\");\n\n // First-truthy-wins: enable plan too, plan callback runs first.\n form.field(\"plan\").setValue(\"pro\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Pro requires it\");\n });\n\n it(\"hard .required() always wins over requiredWhen messages\", async () => {\n const form = createForm({\n fields: fields => ({\n seats: fields\n .text()\n .required(\"Always required\")\n .requiredWhen(() => true, \"Conditional message\")\n })\n });\n\n await form.validate();\n expect(form.field(\"seats\").vm.required).toBe(true);\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Always required\");\n });\n\n it(\"modifier-added requiredWhen chains with builder-defined ones\", async () => {\n const form = createForm({\n fields: fields => ({\n plan: fields.text().defaultValue(\"free\"),\n other: fields.text().defaultValue(\"off\"),\n seats: fields\n .text()\n .requiredWhen(\n ({ form }) => form.field(\"plan\").getValue() === \"pro\",\n \"Pro required\"\n )\n })\n });\n\n form.field(\"seats\").addRequiredWhen(\n ({ form }) => form.field(\"other\").getValue() === \"on\",\n \"Other required\"\n );\n\n // Neither truthy → not required.\n expect(form.field(\"seats\").vm.required).toBe(false);\n\n // Modifier callback truthy.\n form.field(\"other\").setValue(\"on\");\n await form.validate();\n expect(form.field(\"seats\").vm.validation.message).toBe(\"Other required\");\n });\n });\n\n describe(\"computed / computedUntilDirty (Phase 11)\", () => {\n it(\"computed field exposes derived value reactively\", () => {\n const form = createForm({\n fields: fields => ({\n first: fields.text().defaultValue(\"Ada\"),\n last: fields.text().defaultValue(\"Lovelace\"),\n full: fields\n .text()\n .computed(\n ({ form }) =>\n `${form.field(\"first\").getValue()} ${form.field(\"last\").getValue()}`\n )\n })\n });\n\n expect(form.field(\"full\").getValue()).toBe(\"Ada Lovelace\");\n form.field(\"first\").setValue(\"Grace\");\n expect(form.field(\"full\").getValue()).toBe(\"Grace Lovelace\");\n });\n\n it(\"computed field stays editable but value remains derived\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields.text().computed(({ form }) => form.field(\"src\").getValue())\n })\n });\n\n // Not auto-disabled.\n expect(form.field(\"derived\").vm.disabled).toBe(false);\n\n // User edit doesn't override the computed value.\n form.field(\"derived\").vm.onChange(\"manual override\");\n expect(form.field(\"derived\").getValue()).toBe(\"A\");\n });\n\n it(\"computedUntilDirty switches to manual after first UI edit\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"A\"),\n derived: fields\n .text()\n .computedUntilDirty(({ form }) => `derived-${form.field(\"src\").getValue()}`)\n })\n });\n\n expect(form.field(\"derived\").getValue()).toBe(\"derived-A\");\n\n form.field(\"derived\").vm.onChange(\"manual\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n\n // Source changes no longer overwrite manual edit.\n form.field(\"src\").setValue(\"B\");\n expect(form.field(\"derived\").getValue()).toBe(\"manual\");\n });\n\n it(\"computed field still participates in validation\", async () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"\"),\n derived: fields\n .text()\n .required(\"Derived must not be empty\")\n .computed(({ form }) => form.field(\"src\").getValue())\n })\n });\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.field(\"derived\").vm.validation.message).toBe(\"Derived must not be empty\");\n\n form.field(\"src\").setValue(\"hello\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"computedUntilDirty can access nested fields inside object via dot notation\", () => {\n const form = createForm({\n fields: fields => ({\n group: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text().defaultValue(\"Hello World\"),\n fieldId: f.text().computedUntilDirty(({ form }) =>\n String(form.field(\"group.label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"hello-world\");\n\n form.field(\"group.label\").setValue(\"New Title\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"new-title\");\n\n // Manual edit overrides\n form.field(\"group.fieldId\").vm.onChange(\"custom-id\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"custom-id\");\n\n // Source changes no longer overwrite\n form.field(\"group.label\").setValue(\"Another\");\n expect(form.field(\"group.fieldId\").getValue()).toBe(\"custom-id\");\n });\n\n it(\"computedUntilDirty works after setData for nested object fields\", () => {\n const form = createForm({\n fields: fields => ({\n general: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text(),\n fieldId: f.text().computedUntilDirty(({ form }) =>\n String(form.field(\"general.label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n // Before setData, label is null, fieldId computes to \"\"\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"\");\n\n // After setData, fieldId should compute from the new label\n form.setData({ general: { label: \"My Field\" } });\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"my-field\");\n\n // Changing label updates fieldId\n form.field(\"general.label\").setValue(\"Updated Label\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"updated-label\");\n\n // UI edit overrides\n form.field(\"general.fieldId\").vm.onChange(\"custom\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"custom\");\n\n form.field(\"general.label\").setValue(\"Ignored\");\n expect(form.field(\"general.fieldId\").getValue()).toBe(\"custom\");\n });\n\n it(\"field.parent().field() resolves sibling fields relative to the parent object\", () => {\n const form = createForm({\n fields: fields => ({\n group: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n label: f.text().defaultValue(\"Hello\"),\n slug: f.text().computedUntilDirty(({ field }) =>\n String(field.parent().field(\"label\").getValue() || \"\")\n .toLowerCase()\n .replace(/\\s+/g, \"-\")\n )\n }))\n })\n });\n\n expect(form.field(\"group.slug\").getValue()).toBe(\"hello\");\n\n form.field(\"group.label\").setValue(\"New Title\");\n expect(form.field(\"group.slug\").getValue()).toBe(\"new-title\");\n });\n\n it(\"field.parent().field() can traverse into sibling objects\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n message: f\n .text()\n .defaultValue(\"default\")\n .computedUntilDirty(({ field }) => {\n const preset = field\n .parent()\n .field(\"settings.preset\")\n .getValue();\n return preset === \"custom\"\n ? \"Custom message\"\n : `Preset: ${preset}`;\n }),\n settings: f\n .object()\n .renderer(\"passthrough\")\n .fields(inner => ({\n preset: inner.text().defaultValue(\"custom\")\n }))\n }))\n })\n });\n\n expect(form.field(\"wrapper.message\").getValue()).toBe(\"Custom message\");\n\n form.field(\"wrapper.settings.preset\").setValue(\"email\");\n expect(form.field(\"wrapper.message\").getValue()).toBe(\"Preset: email\");\n });\n\n it(\"modifier setComputed converts a regular field into a computed one\", () => {\n const form = createForm({\n fields: fields => ({\n src: fields.text().defaultValue(\"X\"),\n derived: fields.text().defaultValue(\"initial\")\n })\n });\n\n form.field(\"derived\").setComputed(({ form }) => `from-${form.field(\"src\").getValue()}`);\n\n expect(form.field(\"derived\").getValue()).toBe(\"from-X\");\n form.field(\"src\").setValue(\"Y\");\n expect(form.field(\"derived\").getValue()).toBe(\"from-Y\");\n });\n });\n\n describe('field(\"...\").as(\"object\").fields() (Phase 11)', () => {\n it(\"adds new children to an existing object field at runtime\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"First\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n lastName: f.text().label(\"Last\")\n }));\n\n form.field(\"profile.firstName\").setValue(\"Ada\");\n form.field(\"profile.lastName\").setValue(\"Lovelace\");\n expect(form.getData()).toEqual({\n profile: { firstName: \"Ada\", lastName: \"Lovelace\" }\n });\n });\n\n it(\"replaces existing children when keys collide\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text().label(\"Old\")\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(f => ({\n firstName: f.text().label(\"New\")\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.get(\"firstName\")?.config.label).toBe(\"New\");\n });\n\n it(\"removes children when factory returns undefined\", () => {\n const form = createForm({\n fields: fields => ({\n profile: fields.object().fields(f => ({\n firstName: f.text(),\n lastName: f.text()\n }))\n })\n });\n\n form.field(\"profile\")\n .as(\"object\")\n .fields(() => ({\n lastName: undefined\n }));\n\n const profile = form.field(\"profile\").as(\"object\");\n expect(profile.children.has(\"lastName\")).toBe(false);\n expect(profile.children.has(\"firstName\")).toBe(true);\n });\n\n it(\"propagates added children to existing list items\", () => {\n const form = createForm({\n fields: fields => ({\n contacts: fields\n .object()\n .list()\n .fields(f => ({\n name: f.text()\n }))\n })\n });\n\n const contacts = form.field(\"contacts\").as(\"object\");\n contacts.addItem({ name: \"Ada\" });\n contacts.addItem({ name: \"Grace\" });\n\n contacts.fields(f => ({\n email: f.text()\n }));\n\n // Existing items now have the new child.\n expect(contacts.items[0].children.has(\"email\")).toBe(true);\n expect(contacts.items[1].children.has(\"email\")).toBe(true);\n\n // Newly added items pick up the child too.\n contacts.addItem({ name: \"Linus\", email: \"linus@example.com\" });\n expect(contacts.items[2].children.get(\"email\")?.getValue()).toBe(\"linus@example.com\");\n });\n\n it(\"throws when called on a templated object field\", () => {\n const form = createForm({\n fields: fields => ({\n block: fields.object().template(\"a\", t => {\n t.label(\"A\").fields(f => ({ x: f.text() }));\n })\n })\n });\n\n expect(() => {\n form.field(\"block\")\n .as(\"object\")\n .fields(f => ({ y: f.text() }));\n }).toThrow(/templated/);\n });\n });\n\n describe(\"form.addRule() (Phase 11)\", () => {\n it(\"runs a Zod schema against getData() and surfaces issues\", async () => {\n const form = createForm({\n fields: fields => ({\n password: fields.text().defaultValue(\"a\"),\n confirm: fields.text().defaultValue(\"b\")\n })\n });\n\n form.addRule(\n z\n .object({\n password: z.string(),\n confirm: z.string()\n })\n .refine(d => d.password === d.confirm, {\n message: \"Passwords must match\",\n path: [\"confirm\"]\n })\n );\n\n const valid = await form.validate();\n expect(valid).toBe(false);\n expect(form.errors.some(e => e.message === \"Passwords must match\")).toBe(true);\n // Error surfaced on per-field validation when path matches.\n expect(form.field(\"confirm\").vm.validation.isValid).toBe(false);\n expect(form.field(\"confirm\").vm.validation.message).toBe(\"Passwords must match\");\n });\n\n it(\"runs an imperative function and merges returned errors\", async () => {\n const form = createForm({\n fields: fields => ({\n age: fields.text().defaultValue(\"17\")\n })\n });\n\n form.addRule(f => {\n if (Number(f.field(\"age\").getValue()) < 18) {\n return [{ path: \"age\", message: \"Must be 18+\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"age\").vm.validation.message).toBe(\"Must be 18+\");\n\n form.field(\"age\").setValue(\"21\");\n expect(await form.validate()).toBe(true);\n });\n\n it(\"supports async imperative rules\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().defaultValue(\"taken\")\n })\n });\n\n form.addRule(async f => {\n await Promise.resolve();\n if (f.field(\"name\").getValue() === \"taken\") {\n return [{ path: \"name\", message: \"Already taken\" }];\n }\n return [];\n });\n\n expect(await form.validate()).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Already taken\");\n });\n });\n\n describe(\"form.setLayout() (Phase 11)\", () => {\n it(\"replaces the layout entirely\", () => {\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text(),\n c: fields.text()\n }),\n layout: layout => [layout.row(\"a\"), layout.row(\"b\"), layout.row(\"c\")]\n });\n\n form.setLayout(layout => [layout.row(\"c\", \"a\")]);\n\n const layout = form.vm.layout;\n expect(layout).toHaveLength(1);\n const row = asRow(layout[0]);\n expect(row.fields.map(f => f.name)).toEqual([\"c\", \"a\"]);\n });\n\n it(\"emits orphan warnings for fields not in the new layout\", () => {\n const warn = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n const form = createForm({\n fields: fields => ({\n a: fields.text(),\n b: fields.text()\n })\n });\n\n warn.mockClear();\n form.setLayout(layout => [layout.row(\"a\")]);\n\n expect(warn).toHaveBeenCalledWith(\n expect.stringContaining('Field \"b\" is not in the layout')\n );\n warn.mockRestore();\n });\n });\n\n describe(\"Phase 10: Advanced Validation\", () => {\n describe(\"field.vm.validating\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.field(\"title\").vm.validating).toBe(false);\n });\n\n it(\"should be true while async schema validates\", async () => {\n let resolveValidation!: () => void;\n const form = createForm({\n fields: fields => ({\n email: fields.text().schema(\n z.string().refine(async () => {\n await new Promise<void>(r => {\n resolveValidation = r;\n });\n return true;\n })\n )\n })\n });\n form.field(\"email\").setValue(\"test@test.com\");\n\n const promise = form.validate();\n // Allow microtask to enter the async refine\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validating).toBe(true);\n\n resolveValidation();\n await promise;\n expect(form.field(\"email\").vm.validating).toBe(false);\n });\n\n it(\"should be false after sync-only validation\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required()\n })\n });\n form.field(\"name\").setValue(\"hello\");\n await form.validate();\n expect(form.field(\"name\").vm.validating).toBe(false);\n });\n });\n\n describe(\"form.submitted\", () => {\n it(\"should be false initially\", () => {\n const form = createBasicForm();\n expect(form.submitted).toBe(false);\n });\n\n it(\"should be true after validate()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should be true after failed validate()\", async () => {\n const form = createBasicForm();\n await form.validate();\n expect(form.submitted).toBe(true);\n });\n\n it(\"should reset to false on setData()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.setData({ title: \"new\", path: \"/new\" });\n expect(form.submitted).toBe(false);\n });\n\n it(\"should reset to false on reset()\", async () => {\n const form = createBasicForm();\n form.field(\"title\").setValue(\"t\");\n form.field(\"path\").setValue(\"/p\");\n await form.validate();\n expect(form.submitted).toBe(true);\n\n form.reset();\n expect(form.submitted).toBe(false);\n });\n });\n\n describe(\"validate-on-blur after submit\", () => {\n it(\"should not validate on blur before first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields.text().required(\"Required\")\n })\n });\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBeNull();\n });\n\n it(\"should validate on blur after first submit\", async () => {\n const form = createForm({\n fields: fields => ({\n email: fields\n .text()\n .required(\"Required\")\n .schema(z.string().email(\"Invalid email\"))\n })\n });\n\n form.field(\"email\").setValue(\"bad\");\n await form.submit();\n expect(form.field(\"email\").vm.validation.isValid).toBe(false);\n\n // Fix the value and blur — should re-validate\n form.field(\"email\").setValue(\"valid@email.com\");\n form.field(\"email\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"email\").vm.validation.isValid).toBe(true);\n });\n\n it(\"should show error on blur for invalid value after submit\", async () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().required(\"Name is required\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n await form.submit();\n expect(form.field(\"name\").vm.validation.isValid).toBe(true);\n\n // Clear the value and blur — should fail required check\n form.field(\"name\").setValue(\"\");\n form.field(\"name\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(form.field(\"name\").vm.validation.isValid).toBe(false);\n expect(form.field(\"name\").vm.validation.message).toBe(\"Name is required\");\n });\n });\n\n describe(\"validation memoization\", () => {\n it(\"should not re-run schema on blur when value unchanged\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Blur with same value — should use cache\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n });\n\n it(\"should re-run schema on blur when value changed\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Change value and blur — should re-validate\n form.field(\"slug\").setValue(\"world\");\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should always re-run schema on form.validate()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Same value, but form.validate() forces re-validation\n await form.validate();\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n\n it(\"should clear cache on resetValidation()\", async () => {\n const schemaSpy = vi.fn().mockReturnValue(true);\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(z.string().refine(schemaSpy, \"fail\"))\n })\n });\n\n form.field(\"slug\").setValue(\"hello\");\n await form.submit();\n expect(schemaSpy).toHaveBeenCalledTimes(1);\n\n // Reset validation — clears cache\n form.field(\"slug\").resetValidation();\n\n // Blur with same value — should re-validate (cache cleared)\n form.field(\"slug\").vm.onBlur();\n await new Promise(r => setTimeout(r, 0));\n expect(schemaSpy).toHaveBeenCalledTimes(2);\n });\n });\n\n describe(\"async validation with z.refine\", () => {\n it(\"should validate async refine on submit\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"taken\");\n const result = await form.submit();\n expect(result).toBe(false);\n expect(form.field(\"slug\").vm.validation.isValid).toBe(false);\n expect(form.field(\"slug\").vm.validation.message).toBe(\"This slug is already taken\");\n });\n\n it(\"should pass async refine with valid value\", async () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().schema(\n z.string().refine(async value => {\n return value !== \"taken\";\n }, \"This slug is already taken\")\n )\n })\n });\n\n form.field(\"slug\").setValue(\"available\");\n const result = await form.submit();\n expect(result).toEqual({ slug: \"available\" });\n expect(form.field(\"slug\").vm.validation.isValid).toBe(true);\n });\n });\n });\n\n describe(\"normalizeValue\", () => {\n it(\"should coerce string to number on setValue for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"42\");\n expect(form.field(\"count\").getValue()).toBe(42);\n });\n\n it(\"should normalize invalid values to null for number fields\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.field(\"count\").setValue(\"\");\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(null);\n expect(form.field(\"count\").getValue()).toBe(null);\n\n form.field(\"count\").setValue(\"abc\");\n expect(form.field(\"count\").getValue()).toBe(null);\n });\n\n it(\"should store number for number field with options\", () => {\n const form = createForm({\n fields: fields => ({\n tier: fields\n .number()\n .label(\"Tier\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n })\n });\n\n form.field(\"tier\").setValue(\"100\");\n expect(form.field(\"tier\").getValue()).toBe(100);\n expect(typeof form.field(\"tier\").getValue()).toBe(\"number\");\n });\n\n it(\"should coerce to boolean on setValue for boolean fields\", () => {\n const form = createForm({\n fields: fields => ({\n active: fields.boolean().label(\"Active\")\n })\n });\n\n form.field(\"active\").setValue(1);\n expect(form.field(\"active\").getValue()).toBe(true);\n\n form.field(\"active\").setValue(0);\n expect(form.field(\"active\").getValue()).toBe(false);\n });\n\n it(\"should apply normalizeValue on setData (via setValueSilent)\", () => {\n const form = createForm({\n fields: fields => ({\n count: fields.number().label(\"Count\")\n })\n });\n\n form.setData({ count: \"42\" } as any);\n expect(form.field(\"count\").getValue()).toBe(42);\n expect(typeof form.field(\"count\").getValue()).toBe(\"number\");\n });\n\n it(\"should not alter text field values\", () => {\n const form = createForm({\n fields: fields => ({\n name: fields.text().label(\"Name\")\n })\n });\n\n form.field(\"name\").setValue(\"hello\");\n expect(form.field(\"name\").getValue()).toBe(\"hello\");\n\n form.field(\"name\").setValue(42);\n expect(form.field(\"name\").getValue()).toBe(42);\n });\n\n it(\"should run normalizeValue before beforeChange\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: fields => ({\n count: fields\n .number()\n .label(\"Count\")\n .beforeChange(value => {\n log.push(value);\n return value;\n })\n })\n });\n\n form.field(\"count\").setValue(\"7\");\n expect(log).toEqual([7]);\n });\n });\n\n describe(\"focusField\", () => {\n it(\"should set focusRequested on the target field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n expect(form.field(\"path\").vm.focusRequested).toBe(false);\n });\n\n it(\"should activate the correct tab\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n slug: fields.text().label(\"Slug\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"slug\")]);\n })\n ]\n });\n\n // Initially the first tab is active\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"general\");\n\n form.focusField(\"slug\");\n expect(form.field(\"slug\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"seo\");\n });\n\n it(\"should activate nested tabs inside object fields\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n title: f.text().label(\"Title\"),\n metaTitle: f.text().label(\"Meta Title\")\n }))\n }),\n layout: layout => [\n layout.object(\"page\", l => [\n l\n .tabs(\"pageTabs\")\n .tab(\"general\", tab => {\n tab.label(\"General\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"seo\", tab => {\n tab.label(\"SEO\").layout(l => [l.row(\"metaTitle\")]);\n })\n ])\n ]\n });\n\n form.focusField(\"page.metaTitle\");\n expect(form.field(\"page.metaTitle\").vm.focusRequested).toBe(true);\n });\n\n it(\"should clear previous focus when focusing a new field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.focusField(\"path\");\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n });\n\n it(\"should allow renderer to clear focus via clearFocusRequest\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n form.focusField(\"title\");\n expect(form.field(\"title\").vm.focusRequested).toBe(true);\n\n form.field(\"title\").vm.clearFocusRequest();\n expect(form.field(\"title\").vm.focusRequested).toBe(false);\n });\n\n it(\"should not throw on unknown field\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\")\n })\n });\n\n expect(() => form.focusField(\"nonexistent\")).not.toThrow();\n });\n\n it(\"should propagate qualifiedName through nested objects\", () => {\n const form = createForm({\n fields: fields => ({\n page: fields.object().fields(f => ({\n seo: f.object().fields(g => ({\n metaTitle: g.text().label(\"Meta Title\")\n }))\n }))\n })\n });\n\n const meta = form.field(\"page.seo.metaTitle\");\n expect(meta.qualifiedName).toBe(\"page.seo.metaTitle\");\n });\n\n it(\"field.focus() should delegate to form.focusField\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().label(\"Title\"),\n path: fields.text().label(\"Path\")\n }),\n layout: layout => [\n layout\n .tabs(\"tabs\")\n .tab(\"t1\", tab => {\n tab.label(\"T1\").layout(l => [l.row(\"title\")]);\n })\n .tab(\"t2\", tab => {\n tab.label(\"T2\").layout(l => [l.row(\"path\")]);\n })\n ]\n });\n\n form.field(\"path\").focus();\n expect(form.field(\"path\").vm.focusRequested).toBe(true);\n expect((form.vm.layout[0] as any).activeTabId).toBe(\"t2\");\n });\n });\n\n describe(\"primitive list addItem / removeItem\", () => {\n it(\"addItem appends to empty list\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n const vm = form.field(\"tags\").vm;\n expect(vm.value).toEqual([]);\n\n vm.addItem(\"hello\");\n expect(form.field(\"tags\").vm.value).toEqual([\"hello\"]);\n });\n\n it(\"addItem appends with default null when no value given\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list()\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem();\n expect(form.field(\"tags\").vm.value).toEqual([null]);\n });\n\n it(\"addItem appends to existing values\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"c\");\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"b\", \"c\"]);\n });\n\n it(\"removeItem removes at index\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(1);\n expect(form.field(\"tags\").vm.value).toEqual([\"a\", \"c\"]);\n });\n\n it(\"removeItem from beginning preserves order\", () => {\n const form = createForm({\n fields: f => ({\n tags: f.text().list().defaultValue([\"a\", \"b\", \"c\"])\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.removeItem(0);\n expect(form.field(\"tags\").vm.value).toEqual([\"b\", \"c\"]);\n });\n\n it(\"operations go through beforeChange pipeline\", () => {\n const log: unknown[] = [];\n const form = createForm({\n fields: f => ({\n tags: f\n .text()\n .list()\n .defaultValue([\"a\"])\n .beforeChange((value, _params) => {\n log.push(value);\n return value;\n })\n }),\n layout: l => [l.row(\"tags\")]\n });\n\n form.field(\"tags\").vm.addItem(\"b\");\n form.field(\"tags\").vm.removeItem(0);\n expect(log).toEqual([[\"a\", \"b\"], [\"b\"]]);\n });\n });\n\n describe(\"field context\", () => {\n it(\"should expose context derived from sibling fields via form param\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"My Article\"),\n description: fields.text().defaultValue(\"A great article\"),\n media: fields.file().context(({ form }) => ({\n title: form.field(\"title\").getValue(),\n description: form.field(\"description\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({\n title: \"My Article\",\n description: \"A great article\"\n });\n });\n\n it(\"should access root-level siblings via field.parent().field()\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Root Sibling\"),\n media: fields.file().context(({ field }) => ({\n title: field.parent().field(\"title\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({\n title: \"Root Sibling\"\n });\n });\n\n it(\"should reactively update context when source fields change\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Original\"),\n media: fields.file().context(({ form }) => ({\n title: form.field(\"title\").getValue()\n }))\n })\n });\n\n expect(form.field(\"media\").vm.context).toEqual({ title: \"Original\" });\n\n form.field(\"title\").setValue(\"Updated\");\n expect(form.field(\"media\").vm.context).toEqual({ title: \"Updated\" });\n });\n\n it(\"should default to empty object when no context callback is set\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text()\n })\n });\n\n expect(form.field(\"title\").vm.context).toEqual({});\n });\n\n it(\"should access root fields via form param from nested object\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Page Title\"),\n settings: fields.object().fields(f => ({\n media: f.file().context(({ form }) => ({\n title: form.field(\"title\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"title\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.media\").vm.context).toEqual({\n title: \"Page Title\"\n });\n\n form.field(\"title\").setValue(\"New Title\");\n expect(form.field(\"settings.media\").vm.context).toEqual({\n title: \"New Title\"\n });\n });\n\n it(\"should navigate to siblings via field.parent().field()\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields.object().fields(f => ({\n title: f.text().defaultValue(\"Nested Title\"),\n media: f.file().context(({ field }) => ({\n title: field.parent().field(\"title\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.media\").vm.context).toEqual({\n title: \"Nested Title\"\n });\n });\n\n it(\"should navigate multiple levels up via chained parent()\", () => {\n const form = createForm({\n fields: fields => ({\n title: fields.text().defaultValue(\"Root Title\"),\n settings: fields.object().fields(f => ({\n nested: f.object().fields(inner => ({\n media: inner.file().context(({ field }) => ({\n title: field.parent().parent().parent().field(\"title\").getValue()\n }))\n }))\n }))\n }),\n layout: l => [l.row(\"title\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n title: \"Root Title\"\n });\n\n form.field(\"title\").setValue(\"Updated Root\");\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n title: \"Updated Root\"\n });\n });\n\n it(\"should navigate past parent to grandparent scope\", () => {\n const form = createForm({\n fields: fields => ({\n settings: fields.object().fields(f => ({\n label: f.text().defaultValue(\"Settings Label\"),\n nested: f.object().fields(inner => ({\n media: inner.file().context(({ field }) => ({\n label: field.parent().parent().field(\"label\").getValue()\n }))\n }))\n }))\n }),\n layout: l => [l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.nested.media\").vm.context).toEqual({\n label: \"Settings Label\"\n });\n });\n\n it(\"should throw when navigating above root level\", () => {\n const form = createForm({\n fields: fields => ({\n media: fields.file().context(({ field }) => ({\n bad: field.parent().parent().field(\"x\").getValue()\n }))\n })\n });\n\n expect(() => form.field(\"media\").vm.context).toThrow(\n \"Cannot navigate above root level.\"\n );\n });\n\n it(\"should use both field navigator and form in the same callback\", () => {\n const form = createForm({\n fields: fields => ({\n slug: fields.text().defaultValue(\"my-slug\"),\n settings: fields.object().fields(f => ({\n label: f.text().defaultValue(\"Settings Label\"),\n media: f.file().context(({ field, form }) => ({\n label: field.parent().field(\"label\").getValue(),\n slug: form.field(\"slug\").getValue()\n }))\n }))\n }),\n layout: l => [l.row(\"slug\"), l.row(\"settings\")]\n });\n\n expect(form.field(\"settings.media\").vm.context).toEqual({\n label: \"Settings Label\",\n slug: \"my-slug\"\n });\n });\n });\n\n describe(\"$. static references in rules\", () => {\n it(\"$. resolves rule targets relative to the parent object\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n status: f.text().defaultValue(\"draft\"),\n details: f.text().rules([\n {\n type: \"condition\",\n target: \"$.status\",\n operator: \"==\",\n value: \"draft\",\n action: \"hide\"\n }\n ])\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.details\").visible).toBe(false);\n\n form.field(\"wrapper.status\").setValue(\"published\");\n expect(form.field(\"wrapper.details\").visible).toBe(true);\n });\n\n it(\"$. in rules with disable action\", () => {\n const form = createForm({\n fields: fields => ({\n wrapper: fields\n .object()\n .renderer(\"passthrough\")\n .fields(f => ({\n locked: f.text().defaultValue(\"yes\"),\n editable: f.text().rules([\n {\n type: \"condition\",\n target: \"$.locked\",\n operator: \"==\",\n value: \"yes\",\n action: \"disable\"\n }\n ])\n }))\n }),\n layout: l => [l.row(\"wrapper\")]\n });\n\n expect(form.field(\"wrapper.editable\").disabled).toBe(true);\n\n form.field(\"wrapper.locked\").setValue(\"no\");\n expect(form.field(\"wrapper.editable\").disabled).toBe(false);\n });\n });\n\n describe(\"$. static references in rules inside list items\", () => {\n const hideWhen = (target: string, operator: string, value: IRule[\"value\"]): IRule[] => [\n { type: \"condition\", target, operator, value, action: \"hide\" }\n ];\n\n // Reads a child of a list item without relying on its qualified path.\n const itemChild = (form: IFormModel, listPath: string, index: number, name: string) => {\n const list = form.field(listPath) as any;\n const child = list.items[index]?.children.get(name);\n if (!child) {\n throw new Error(`No child \"${name}\" on item ${index} of \"${listPath}\".`);\n }\n return child as ReturnType<IFormModel[\"field\"]>;\n };\n\n it(\"resolves $. against the owning item of an object list\", () => {\n const form = createForm({\n fields: fields => ({\n links: fields\n .object()\n .list()\n .renderer(\"passthrough\")\n .fields(f => ({\n style: f.text(),\n url: f.text().rules(hideWhen(\"$.style\", \"==\", \"initiative\")),\n customUrls: f.text().rules(hideWhen(\"$.style\", \"!=\", \"initiative\"))\n }))\n })\n });\n\n form.setData({ links: [{ style: \"initiative\" }, { style: \"standard\" }] });\n\n expect(itemChild(form, \"links\", 0, \"url\").visible).toBe(false);\n expect(itemChild(form, \"links\", 0, \"customUrls\").visible).toBe(true);\n expect(itemChild(form, \"links\", 1, \"url\").visible).toBe(true);\n expect(itemChild(form, \"links\", 1, \"customUrls\").visible).toBe(false);\n\n itemChild(form, \"links\", 1, \"style\").setValue(\"initiative\");\n expect(itemChild(form, \"links\", 1, \"url\").visible).toBe(false);\n expect(itemChild(form, \"links\", 1, \"customUrls\").visible).toBe(true);\n });\n\n it(\"resolves $. for items added with addItem()\", () => {\n const form = createForm({\n fields: fields => ({\n links: fields\n .object()\n .list()\n .renderer(\"passthrough\")\n .fields(f => ({\n locked: f.boolean(),\n label: f.text().rules([\n {\n type: \"condition\",\n target: \"$.locked\",\n operator: \"==\",\n value: true,\n action: \"disable\"\n }\n ])\n }))\n })\n });\n\n (form.field(\"links\") as any).addItem();\n expect(itemChild(form, \"links\", 0, \"label\").disabled).toBe(false);\n\n itemChild(form, \"links\", 0, \"locked\").setValue(true);\n expect(itemChild(form, \"links\", 0, \"label\").disabled).toBe(true);\n });\n\n it(\"keeps resolving against the owning item after reorder and removal\", () => {\n const form = createForm({\n fields: fields => ({\n links: fields\n .object()\n .list()\n .renderer(\"passthrough\")\n .fields(f => ({\n style: f.text(),\n url: f.text().rules(hideWhen(\"$.style\", \"==\", \"initiative\"))\n }))\n })\n });\n\n form.setData({ links: [{ style: \"initiative\" }, { style: \"standard\" }] });\n const list = form.field(\"links\") as any;\n const firstUrl = itemChild(form, \"links\", 0, \"url\");\n const secondUrl = itemChild(form, \"links\", 1, \"url\");\n\n list.moveItem(0, 1);\n expect(firstUrl.visible).toBe(false);\n expect(secondUrl.visible).toBe(true);\n\n list.removeItem(0);\n expect(firstUrl.visible).toBe(false);\n });\n\n it(\"field.parent() resolves siblings of the owning item in callbacks\", () => {\n const form = createForm({\n fields: fields => ({\n links: fields\n .object()\n .list()\n .renderer(\"passthrough\")\n .fields(f => ({\n style: f.text(),\n url: f\n .text()\n .hiddenWhen(\n ({ field }) =>\n field.parent().field(\"style\").getValue() === \"initiative\"\n )\n }))\n })\n });\n\n form.setData({ links: [{ style: \"initiative\" }, { style: \"standard\" }] });\n\n expect(itemChild(form, \"links\", 0, \"url\").visible).toBe(false);\n expect(itemChild(form, \"links\", 1, \"url\").visible).toBe(true);\n });\n\n describe(\"dynamic zone shaped templated list\", () => {\n const createBlocksForm = () =>\n createForm({\n fields: fields => ({\n blocks: fields\n .object()\n .list()\n .renderer(\"passthrough\")\n .template(\"heroBlock\", t => {\n t.label(\"Hero\").fields(f => ({\n _id: f.text().hidden(),\n ctaStyle: f.text(),\n ctaUrl: f\n .text()\n .rules(hideWhen(\"$.ctaStyle\", \"==\", \"initiative\")),\n customUrls: f\n .text()\n .rules(hideWhen(\"$.ctaStyle\", \"!=\", \"initiative\"))\n }));\n })\n .template(\"richTextBlock\", t => {\n t.label(\"Rich Text\").fields(f => ({\n _id: f.text().hidden(),\n headerStyle: f.text().defaultValue(\"manual\"),\n header: f\n .text()\n .rules(hideWhen(\"$.headerStyle\", \"!=\", \"manual\")),\n headingGroupRef: f\n .text()\n .rules(hideWhen(\"$.headerStyle\", \"!=\", \"reference\"))\n }));\n })\n .template(\"classesBlock\", t => {\n t.label(\"Classes\").fields(f => ({\n _id: f.text().hidden(),\n classes: f\n .object()\n .list()\n .renderer(\"passthrough\")\n .fields(c => ({\n customCTA: c.boolean(),\n customCTALabel: c\n .text()\n .rules(hideWhen(\"$.customCTA\", \"!=\", true))\n }))\n }));\n })\n })\n });\n\n it(\"resolves $. against the owning template item\", () => {\n const form = createBlocksForm();\n form.setData({\n blocks: [\n { _templateId: \"heroBlock\", _id: \"hero1\", ctaStyle: \"initiative\" },\n { _templateId: \"heroBlock\", _id: \"hero2\", ctaStyle: \"standard\" }\n ]\n });\n\n expect(itemChild(form, \"blocks\", 0, \"ctaUrl\").visible).toBe(false);\n expect(itemChild(form, \"blocks\", 0, \"customUrls\").visible).toBe(true);\n expect(itemChild(form, \"blocks\", 1, \"ctaUrl\").visible).toBe(true);\n expect(itemChild(form, \"blocks\", 1, \"customUrls\").visible).toBe(false);\n });\n\n it(\"re-evaluates when the referenced sibling changes\", () => {\n const form = createBlocksForm();\n form.setData({\n blocks: [{ _templateId: \"richTextBlock\", _id: \"rt1\", headerStyle: \"manual\" }]\n });\n\n expect(itemChild(form, \"blocks\", 0, \"header\").visible).toBe(true);\n expect(itemChild(form, \"blocks\", 0, \"headingGroupRef\").visible).toBe(false);\n\n itemChild(form, \"blocks\", 0, \"headerStyle\").setValue(\"reference\");\n expect(itemChild(form, \"blocks\", 0, \"header\").visible).toBe(false);\n expect(itemChild(form, \"blocks\", 0, \"headingGroupRef\").visible).toBe(true);\n });\n\n it(\"resolves $. inside an object list nested in a template item\", () => {\n const form = createBlocksForm();\n form.setData({\n blocks: [\n {\n _templateId: \"classesBlock\",\n _id: \"classes1\",\n classes: [{ customCTA: true }, { customCTA: false }]\n }\n ]\n });\n\n const classes = itemChild(form, \"blocks\", 0, \"classes\");\n const classItem = (index: number, name: string) =>\n (classes as any).items[index].children.get(name);\n\n expect(classItem(0, \"customCTALabel\").visible).toBe(true);\n expect(classItem(1, \"customCTALabel\").visible).toBe(false);\n\n classItem(1, \"customCTA\").setValue(true);\n expect(classItem(1, \"customCTALabel\").visible).toBe(true);\n });\n });\n });\n\n describe(\"setErrors\", () => {\n const createProductForm = () =>\n createForm({\n fields: fields => ({\n sku: fields.text().label(\"SKU\"),\n variants: fields\n .object()\n .list()\n .label(\"Variants\")\n .fields(f => ({ code: f.text().label(\"Code\") }))\n })\n });\n\n it(\"assigns an error to the field at its path and lists it in form errors\", () => {\n const form = createProductForm();\n\n form.setErrors([{ path: \"sku\", message: \"Value must be unique.\" }]);\n\n expect(form.field(\"sku\").vm.validation).toMatchObject({\n isValid: false,\n message: \"Value must be unique.\"\n });\n expect(form.vm.hasErrors).toBe(true);\n expect(form.errors).toEqual([\n {\n path: \"sku\",\n label: \"SKU\",\n breadcrumb: [\"SKU\"],\n message: \"Value must be unique.\"\n }\n ]);\n });\n\n it(\"resolves paths into list items\", () => {\n const form = createProductForm();\n form.setData({ variants: [{ code: \"a\" }, { code: \"b\" }] });\n\n form.setErrors([{ path: \"variants.1.code\", message: \"Invalid code.\" }]);\n\n const list = form.field(\"variants\") as any;\n expect(list.items[1].children.get(\"code\").vm.validation.isValid).toBe(false);\n expect(list.items[0].children.get(\"code\").vm.validation.isValid).not.toBe(false);\n expect(form.errors).toEqual([\n expect.objectContaining({\n path: \"variants.1.code\",\n breadcrumb: [\"Variants\", \"Code\"]\n })\n ]);\n });\n\n it(\"keeps errors without a matching field as form-level errors\", () => {\n const form = createProductForm();\n\n form.setErrors([\n { path: \"\", message: \"Could not update entry.\" },\n { path: \"unknown.field\", message: \"Something is wrong.\" }\n ]);\n\n expect(form.errors).toEqual([\n { path: \"\", message: \"Could not update entry.\" },\n { path: \"unknown.field\", message: \"Something is wrong.\" }\n ]);\n expect(form.isValid).toBe(false);\n });\n\n it(\"bumps submitCount so FormErrors scrolls into view\", () => {\n const form = createProductForm();\n const before = form.submitCount;\n\n form.setErrors([{ path: \"sku\", message: \"Value must be unique.\" }]);\n\n expect(form.submitCount).toBe(before + 1);\n });\n\n it(\"is cleared by the next validate()\", async () => {\n const form = createProductForm();\n form.setErrors([\n { path: \"sku\", message: \"Value must be unique.\" },\n { path: \"\", message: \"Could not update entry.\" }\n ]);\n\n await form.validate();\n\n expect(form.errors).toEqual([]);\n expect(form.field(\"sku\").vm.validation.isValid).not.toBe(false);\n });\n\n it(\"is cleared by setData()\", () => {\n const form = createProductForm();\n form.setErrors([{ path: \"\", message: \"Could not update entry.\" }]);\n\n form.setData({ sku: \"ABC\" });\n\n expect(form.errors).toEqual([]);\n expect(form.vm.hasErrors).toBe(false);\n });\n\n it(\"clears the field errors of the previous call when given an empty set\", () => {\n const form = createProductForm();\n form.setErrors([{ path: \"sku\", message: \"Value must be unique.\" }]);\n\n form.setErrors([]);\n\n expect(form.field(\"sku\").vm.validation.isValid).not.toBe(false);\n expect(form.errors).toEqual([]);\n expect(form.isValid).toBe(true);\n expect(form.vm.hasErrors).toBe(false);\n });\n\n it(\"keeps only the errors of the latest rejected save\", () => {\n const form = createProductForm();\n form.setData({ variants: [{ code: \"a\" }] });\n form.setErrors([{ path: \"sku\", message: \"Value must be unique.\" }]);\n\n form.setErrors([{ path: \"variants.0.code\", message: \"Invalid code.\" }]);\n\n expect(form.field(\"sku\").vm.validation.isValid).not.toBe(false);\n expect(form.errors).toEqual([\n expect.objectContaining({ path: \"variants.0.code\", message: \"Invalid code.\" })\n ]);\n });\n });\n});\n"],"names":["createForm","config","container","Container","IdentityContextFeature","FormModelFeature","FormModelFactory","asRow","node","Error","createBasicForm","fields","describe","it","form","expect","data","valid","z","undefined","titleVm","schema","spy","vi","valid1","valid2","result","vm","fieldVM","layout","warnSpy","console","value","String","received","calls","path","str","field","slug","fieldNames","row","updatedNames","textField","createFormWithLayout","names","modifier","current","stripped","createFormWithTabs","tab","tabsNode","generalTab","generalRow","seoTab","elementNode","createFormWithObject","f","street","e","createFormWithList","updatedVm","vm1","key0","key1","vm2","createFormWithTemplatedObject","t","createFormWithTemplatedList","i","l","item","buildTemplatedForm","layoutFactory","buildTemplatedListForm","c","outer","inner","g","pageVm","seoRow","seoVm","h","l1","l2","l3","aVm","bVm","cVm","tabs","createSingleTemplatedForm","createListTemplatedForm","before","after","vmBefore","rowBefore","vmAfter","rowAfter","warn","preset","profile","contacts","d","Number","Promise","resolveValidation","r","promise","setTimeout","schemaSpy","log","meta","_params","hideWhen","target","operator","itemChild","listPath","index","name","list","child","firstUrl","secondUrl","createBlocksForm","classes","classItem","createProductForm"],"mappings":";;;;;;AAkBA,SAASA,WAAWC,MAAwB;IACxC,MAAMC,YAAY,IAAIC;IACtBC,uBAAuB,QAAQ,CAACF;IAChCG,iBAAiB,QAAQ,CAACH;IAC1B,OAAOA,UAAU,OAAO,CAACI,kBAAkB,MAAM,CAACL;AACtD;AAEA,SAASM,MAAMC,IAAkB;IAC7B,IAAIA,AAAc,UAAdA,KAAK,IAAI,EACT,MAAM,IAAIC,MAAM,CAAC,wBAAwB,EAAED,KAAK,IAAI,CAAC,CAAC,CAAC;IAE3D,OAAOA;AACX;AAEA,SAASE;IACL,OAAOV,WAAW;QACd,QAAQW,CAAAA,SAAW;gBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7C,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC/C;IACJ;AACJ;AAEAC,SAAS,aAAa;IAClBA,SAAS,kBAAkB;QACvBC,GAAG,iDAAiD;YAChD,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,KAAK,CAAC,UAAU,WAAW;YACvCC,OAAOD,KAAK,KAAK,CAAC,SAAS,WAAW;QAC1C;QAEAD,GAAG,wCAAwC;YACvC,MAAMC,OAAOJ;YACbK,OAAO,IAAMD,KAAK,KAAK,CAAC,YAAY,OAAO,CAAC;QAChD;IACJ;IAEAF,SAAS,uBAAuB;QAC5BC,GAAG,mCAAmC;YAClC,MAAMC,OAAOJ;YACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QAChD;QAEAD,GAAG,sDAAsD;YACrD,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,QAAQ;QACnD;QAEAD,GAAG,yCAAyC;YACxC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,QAAQA,OAAO,IAAI,GAAG,YAAY,CAAC;oBACvC;YACJ;YACAI,OAAOD,KAAK,KAAK,CAAC,UAAU,QAAQ,IAAI,IAAI,CAAC;QACjD;IACJ;IAEAF,SAAS,qBAAqB;QAC1BC,GAAG,mDAAmD;YAClD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,UAAUA,OAAO,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;oBAClD;YACJ;YAEAG,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7B,MAAME,OAAOF,KAAK,OAAO;YAEzBC,OAAOC,MAAM,OAAO,CAAC;gBACjB,OAAO;gBACP,UAAU;YACd;QACJ;QAEAH,GAAG,0CAA0C;YACzC,MAAMC,OAAOJ;YACbI,KAAK,OAAO,CAAC;gBAAE,OAAO;gBAAW,MAAM;YAAW;YAElDC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAC5CC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,2CAA2C;YAC1C,MAAMC,OAAOJ;YACbI,KAAK,OAAO,CAAC;gBAAE,OAAO;gBAAQ,SAAS;YAAQ;YAC/CC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAC5CC,OAAO,IAAMD,KAAK,KAAK,CAAC,YAAY,OAAO;QAC/C;IACJ;IAEAF,SAAS,WAAW;QAChBC,GAAG,iCAAiC;YAChC,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;QAEAD,GAAG,kCAAkC;YACjC,MAAMC,OAAOJ;YACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;QAEAD,GAAG,qCAAqC;YACpC,MAAMC,OAAOJ;YACbI,KAAK,OAAO,CAAC;gBAAE,OAAO;gBAAU,MAAM;YAAU;YAChDC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;QAEAD,GAAG,yDAAyD;YACxD,MAAMC,OAAOJ;YACbI,KAAK,OAAO,CAAC;gBAAE,OAAO;gBAAY,MAAM;YAAY;YACpDA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC1BA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;IACJ;IAEAF,SAAS,SAAS;QACdC,GAAG,4CAA4C;YAC3C,MAAMC,OAAOJ;YACbI,KAAK,OAAO,CAAC;gBAAE,OAAO;gBAAY,MAAM;YAAY;YACpDA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BA,KAAK,KAAK;YAEVC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAC5CC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;QAEAD,GAAG,0CAA0C;YACzC,MAAMC,OAAOJ;YACb,MAAMI,KAAK,QAAQ;YACnBC,OAAOD,KAAK,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;YAE3CA,KAAK,KAAK;YACVC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE;YAC9BC,OAAOD,KAAK,OAAO,EAAE,QAAQ;QACjC;IACJ;IAEAF,SAAS,cAAc;QACnBC,GAAG,oDAAoD;YACnD,MAAMC,OAAOJ;YACb,MAAMO,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC1BC,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACjCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACjCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACpCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACrC;QAEAD,GAAG,2DAA2D;YAC1D,MAAMC,OAAOJ;YACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAE5B,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC1BC,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;QACrC;QAEAD,GAAG,+BAA+B;YAC9B,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,MAAM,CAACO,EAAE,MAAM,GAAG,KAAK,CAAC;oBAChE;YACJ;YAEAJ,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7B,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;QACxC;QAEAD,GAAG,+CAA+C;YAC9C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,QAAQ,CAAC,qBACT,MAAM,CAACO,EAAE,MAAM,GAAG,KAAK,CAAC;oBACjC;YACJ;YAEA,MAAMD,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;QACxC;QAEAD,GAAG,qEAAqE;YACpE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC,eAAe,MAAM,CAACO,EAAE,MAAM;oBACnE;YACJ;YAEA,MAAMD,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACjCC,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ;QACpE;QAEAD,GAAG,0EAA0E;YACzE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC,eAAe,MAAM,CAACO,EAAE,MAAM;oBACnE;YACJ;YAEAJ,KAAK,KAAK,CAAC,eAAe,QAAQ,CAACK;YACnC,MAAMF,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACjCC,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ;QACpE;QAEAD,GAAG,4EAA4E;YAC3E,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OACR,IAAI,GACJ,KAAK,CAAC,eACN,MAAM,CAACO,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;oBAClC;YACJ;YAEAJ,KAAK,KAAK,CAAC,eAAe,QAAQ,CAAC;YACnC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC7DC,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;QAEAD,GAAG,8FAA8F;YAC7F,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OACR,IAAI,GACJ,KAAK,CAAC,eACN,QAAQ,CAAC,2BACT,MAAM,CAACO,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;oBAClC;YACJ;YAEA,MAAMD,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC7DC,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;QAEAD,GAAG,8EAA8E;YAC7E,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OACR,IAAI,GACJ,KAAK,CAAC,eACN,MAAM,CAACO,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;oBAClC;YACJ;YAEAJ,KAAK,KAAK,CAAC,eAAe,QAAQ,CAAC;YACnC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;YAEjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;QAEAD,GAAG,oDAAoD;YACnD,MAAMC,OAAOJ;YACb,MAAMI,KAAK,QAAQ;YAEnB,MAAMM,UAAUN,KAAK,KAAK,CAAC,SAAS,EAAE;YACtCC,OAAOK,QAAQ,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YACxCL,OAAOK,QAAQ,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC5C;QAEAP,GAAG,+DAA+D;YAC9D,MAAMQ,SAASH,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;YACjC,MAAMI,MAAMC,GAAG,KAAK,CAACF,QAAQ;YAC7B,MAAMP,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC,eAAe,MAAM,CAACU;oBAC3D;YACJ;YAEA,MAAMG,SAAS,MAAMV,KAAK,QAAQ;YAClCC,OAAOS,QAAQ,IAAI,CAAC;YACpBT,OAAOO,KAAK,GAAG,CAAC,gBAAgB;YAEhC,MAAMG,SAAS,MAAMX,KAAK,QAAQ;YAClCC,OAAOU,QAAQ,IAAI,CAAC;YACpBV,OAAOO,KAAK,GAAG,CAAC,gBAAgB;YAChCP,OAAOD,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ;YAChEQ,IAAI,WAAW;QACnB;QAEAT,GAAG,kDAAkD;YACjD,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,OAAO,EAAE,QAAQ;QACjC;IACJ;IAEAF,SAAS,UAAU;QACfC,GAAG,iCAAiC;YAChC,MAAMC,OAAOJ;YACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAE5B,MAAMY,SAAS,MAAMZ,KAAK,MAAM;YAEhCC,OAAOW,QAAQ,OAAO,CAAC;gBACnB,OAAO;gBACP,MAAM;YACV;QACJ;QAEAb,GAAG,oCAAoC;YACnC,MAAMC,OAAOJ;YACb,MAAMgB,SAAS,MAAMZ,KAAK,MAAM;YAChCC,OAAOW,QAAQ,IAAI,CAAC;QACxB;IACJ;IAEAd,SAAS,MAAM;QACXC,GAAG,uCAAuC;YACtC,MAAMC,OAAOJ;YACb,MAAMiB,KAAKb,KAAK,EAAE;YAElBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;YAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAC/BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAChDZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACpD;QAEAd,GAAG,4CAA4C;YAC3C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,UAAUA,OAAO,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;oBAClD;YACJ;YAEA,MAAMgB,KAAKb,KAAK,EAAE;YAClBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;YAC/BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACpD;QAEAd,GAAG,qCAAqC;YACpC,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YAC7BC,OAAOD,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ;QACpC;QAEAD,GAAG,oDAAoD;YACnD,MAAMC,OAAOJ;YACb,MAAMkB,UAAUrB,MAAMO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAClDc,QAAQ,QAAQ,CAAC;YACjBb,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QAChD;IACJ;IAEAF,SAAS,UAAU;QACfC,GAAG,iEAAiE;YAChE,MAAMC,OAAOJ;YACbK,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;QACxC;QAEAD,GAAG,4CAA4C;YAC3C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBACA,QAAQkB,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,SAAS;qBAAQ;YACnD;YAEAd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;YACpCC,OAAOR,MAAMO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC;QACzD;QAEAD,GAAG,sDAAsD;YACrD,MAAMiB,UAAUP,GAAG,KAAK,CAACQ,SAAS,QAAQ,kBAAkB,CAAC,KAAO;YAEpE/B,WAAW;gBACP,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBACA,QAAQkB,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC;qBAAS;YAC3C;YAEAd,OAAOe,SAAS,oBAAoB,CAChCf,OAAO,gBAAgB,CAAC;YAG5Be,QAAQ,WAAW;QACvB;QAEAjB,GAAG,8CAA8C;YAC7C,MAAMiB,UAAUP,GAAG,KAAK,CAACQ,SAAS,QAAQ,kBAAkB,CAAC,KAAO;YAEpE/B,WAAW;gBACP,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,UAAUA,OAAO,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;oBAClD;gBACA,QAAQkB,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC;qBAAS;YAC3C;YAEAd,OAAOe,SAAS,GAAG,CAAC,gBAAgB;YACpCA,QAAQ,WAAW;QACvB;IACJ;IAEAlB,SAAS,8BAA8B;QACnCC,GAAG,iEAAiE;YAChE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,YAAY,CAACqB,CAAAA,QAASC,OAAOD,OAAO,IAAI,IACxC,YAAY,CAACA,CAAAA,QAASC,OAAOD,OAAO,WAAW;oBACxD;YACJ;YAEAlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,gDAAgD;YAC/C,MAAMqB,WAAsB,EAAE;YAC9B,MAAMpB,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,WAAW,CAACqB,CAAAA;4BACTE,SAAS,IAAI,CAACF;wBAClB;oBACR;YACJ;YAEAlB,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOmB,UAAU,OAAO,CAAC;gBAAC;aAAQ;QACtC;QAEArB,GAAG,gDAAgD;YAC/C,MAAMqB,WAAsB,EAAE;YAC9B,MAAMpB,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,YAAY,CAACqB,CAAAA,QAASC,OAAOD,OAAO,WAAW,IAC/C,WAAW,CAACA,CAAAA;4BACTE,SAAS,IAAI,CAACF;wBAClB;oBACR;YACJ;YAEAlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAC3CC,OAAOmB,UAAU,OAAO,CAAC;gBAAC;aAAQ;QACtC;QAEArB,GAAG,4EAA4E;YAC3E,MAAMsB,QAAkB,EAAE;YAC1B,MAAMrB,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,YAAY,CAAC,IAAM,YACnB,WAAW,CAAC;4BACTwB,MAAM,IAAI,CAAC;wBACf;oBACR;YACJ;YAEArB,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOoB,OAAO,OAAO,CAAC;gBAAC;aAAc;YACrCpB,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAI5CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOoB,OAAO,OAAO,CAAC;gBAAC;aAAc;QACzC;QAEAtB,GAAG,6DAA6D;YAC5D,MAAMsB,QAAkB,EAAE;YAC1B,MAAMrB,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,YAAY,CAACqB,CAAAA;4BACVG,MAAM,IAAI,CAAC;4BACX,OAAOH;wBACX,GACC,WAAW,CAAC;4BACTG,MAAM,IAAI,CAAC;wBACf;oBACR;YACJ;YAEArB,KAAK,OAAO,CAAC;gBAAE,OAAO;YAAS;YAC/BC,OAAOoB,OAAO,OAAO,CAAC,EAAE;YACxBpB,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QAChD;QAEAD,GAAG,2EAA2E;YAC1E,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,WAAW,CAAC,CAACqB,OAAO,EAAElB,IAAI,EAAE;4BAEzB,MAAMsB,OAAO,MAAMH,OAAOD,OAAO,WAAW,GAAG,OAAO,CAAC,QAAQ;4BAC/DlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAACsB;wBAChC;wBACJ,MAAMzB,OACD,IAAI,GACJ,KAAK,CAAC,QACN,YAAY,CAACqB,CAAAA;4BAEV,MAAMK,MAAMJ,OAAOD;4BACnB,OAAOK,IAAI,UAAU,CAAC,OAAOA,MAAM,MAAMA;wBAC7C;oBACR;YACJ;YAEAvB,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,kEAAkE;YACjE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC/B;YACJ;YAEA,MAAM2B,QAAQxB,KAAK,KAAK,CAAC;YACzBwB,MAAM,eAAe,CAACN,CAAAA,QAASC,OAAOD,OAAO,WAAW;YACxDM,MAAM,QAAQ,CAAC;YACfvB,OAAOuB,MAAM,QAAQ,IAAI,IAAI,CAAC;QAClC;QAEAzB,GAAG,kEAAkE;YACjE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,YAAY,CAACqB,CAAAA,QAASC,OAAOD,OAAO,IAAI;oBACjD;YACJ;YAGAlB,KAAK,KAAK,CAAC,QAAQ,eAAe,CAACkB,CAAAA,QAASC,OAAOD,OAAO,WAAW;YACrElB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,0DAA0D;YACzD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,KAAK,CAAC,SACN,QAAQ,CAAC,qBACT,WAAW,CAAC,CAACqB,OAAO,EAAElB,IAAI,EAAE;4BAEzB,IAAIA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAC3B;4BAEJ,MAAMyB,OAAON,OAAOD,OACf,WAAW,GACX,OAAO,CAAC,eAAe,KACvB,OAAO,CAAC,UAAU;4BACvBlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAMyB;wBACtC;wBACJ,MAAM5B,OACD,IAAI,GACJ,KAAK,CAAC,QACN,QAAQ,CAAC,oBACT,YAAY,CAACqB,CAAAA;4BACV,MAAMK,MAAMJ,OAAOD;4BACnB,OACI,MACAK,IACK,OAAO,CAAC,OAAO,IACf,WAAW,GACX,OAAO,CAAC,iBAAiB,KACzB,OAAO,CAAC,UAAU;wBAE/B;oBACR;gBACA,QAAQR,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC;wBAAUA,OAAO,GAAG,CAAC;qBAAQ;YAC/D;YAGAf,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAG3CA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAE3CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAE7BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;IACJ;IAEAF,SAAS,sBAAsB;QAC3BC,GAAG,6CAA6C;YAC5C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,YACN,OAAO,CAAC;4BACL;gCAAE,OAAO;gCAAW,OAAO;4BAAK;4BAChC;gCAAE,OAAO;gCAAU,OAAO;4BAAK;yBAClC;oBACT;YACJ;YAEA,MAAMiB,UAAUrB,MAAMO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAClDC,OAAOa,QAAQ,OAAO,EAAE,OAAO,CAAC;gBAC5B;oBAAE,OAAO;oBAAW,OAAO;gBAAK;gBAChC;oBAAE,OAAO;oBAAU,OAAO;gBAAK;aAClC;QACL;QAEAf,GAAG,wDAAwD;YACvD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,YACN,OAAO,CAAC,IAEE;gCAAC;oCAAE,OAAO;oCAAW,OAAO;gCAAU;6BAAE;oBAE3D;YACJ;YAEA,MAAMiB,UAAUrB,MAAMO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAClDC,OAAOa,QAAQ,OAAO,EAAE,OAAO,CAAC;gBAAC;oBAAE,OAAO;oBAAW,OAAO;gBAAU;aAAE;QAC5E;IACJ;IAEAhB,SAAS,uBAAuB;QAC5BA,SAAS,0CAA0C;YAC/CC,GAAG,4CAA4C;gBAC3C,MAAMC,OAAOJ;gBACbI,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,UAAUA,OACL,IAAI,GACJ,KAAK,CAAC,YACN,OAAO,CAAC;4BACL;gCAAE,OAAO;gCAAW,OAAO;4BAAK;4BAChC;gCAAE,OAAO;gCAAU,OAAO;4BAAK;yBAClC;oBACT;gBAEAI,OAAOD,KAAK,KAAK,CAAC,aAAa,WAAW;gBAC1CC,OAAOD,KAAK,KAAK,CAAC,YAAY,IAAI,EAAE,IAAI,CAAC;gBACzCC,OAAOD,KAAK,OAAO,IAAI,cAAc,CAAC;YAC1C;YAEAD,GAAG,8EAA8E;gBAC7E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC/B;gBACJ;gBAEAG,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACrC;gBAGAI,OAAOD,KAAK,OAAO,IAAI,cAAc,CAAC;gBAGtC,MAAM0B,aAAa1B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACtE1B,OAAOyB,YAAY,GAAG,CAAC,SAAS,CAAC;gBAGjC1B,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,eAAe,KAAK,CAAC;qBAAS;gBAChE,MAAMa,eAAe5B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACxE1B,OAAO2B,cAAc,OAAO,CAAC;oBAAC;oBAAS;iBAAc;YACzD;YAEA7B,GAAG,qDAAqD;gBACpD,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAE7BA,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,kBAAkB,WAAW,CAAC;oBAC7D;gBAGAI,OAAOD,KAAK,KAAK,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;gBAC9CC,OAAOD,KAAK,KAAK,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;gBACpDC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,QAAQ;YACnD;YAEAD,GAAG,uCAAuC;gBACtC,MAAMC,OAAOJ;gBACbI,KAAK,MAAM,CAAC,IAAO;wBACf,MAAMK;oBACV;gBAEAJ,OAAO,IAAMD,KAAK,KAAK,CAAC,SAAS,OAAO,CAAC;gBACzCC,OAAOD,KAAK,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC;YAC9C;YAEAD,GAAG,4CAA4C;gBAC3C,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,QAAQ,MAAM;gBAEzBC,OAAO,IAAMD,KAAK,KAAK,CAAC,SAAS,OAAO,CAAC;gBACzCC,OAAOD,KAAK,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC;YAC9C;YAEAD,GAAG,mEAAmE;gBAClE,MAAMC,OAAOJ;gBACbK,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBAEpCA,KAAK,KAAK,CAAC,QAAQ,MAAM;gBAEzBC,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOR,MAAMO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACzD;YAEAD,GAAG,wDAAwD;gBACvD,MAAMC,OAAOJ;gBACbI,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,MAAMQ;wBACN,MAAMR,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBAEAI,OAAO,IAAMD,KAAK,KAAK,CAAC,SAAS,OAAO;gBACxCC,OAAOD,KAAK,KAAK,CAAC,SAAS,WAAW;YAC1C;QACJ;QAEAF,SAAS,8BAA8B;YACnCC,GAAG,gDAAgD;gBAC/C,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,WAAW,CAAC;gBAEhCC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YACjD;YAEAD,GAAG,mDAAmD;gBAClD,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,WAAW,CAAC;gBAChCA,KAAK,KAAK,CAAC,SAAS,WAAW,CAAC;gBAEhCC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YACjD;QACJ;QAEAF,SAAS,sCAAsC;YAC3CC,GAAG,6CAA6C;gBAC5C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,YACN,OAAO,CAAC;gCAAC;oCAAE,OAAO;oCAAW,OAAO;gCAAK;6BAAE;wBACpD;gBACJ;gBAEA,MAAMgC,YAAY7B,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxCC,OAAO4B,WAAW,IAAI,CAAC7B,KAAK,KAAK,CAAC;YACtC;YAEAD,GAAG,yCAAyC;gBACxC,MAAMC,OAAOJ;gBACbK,OAAO,IAAMD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,OAAO,CACnD;YAER;QACJ;QAEAF,SAAS,iDAAiD;YACtDC,GAAG,mDAAmD;gBAClD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,YAAY,CAACqB,CAAAA,QAASC,OAAOD,OAAO,IAAI;wBACjD;gBACJ;gBAGAlB,KAAK,KAAK,CAAC,QAAQ,eAAe,CAACkB,CAAAA,QAASC,OAAOD,OAAO,WAAW;gBAErElB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAC/C;YAEAD,GAAG,kDAAkD;gBACjD,MAAMqB,WAAsB,EAAE;gBAC9B,MAAMpB,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC9B;gBACJ;gBAGAG,KAAK,KAAK,CAAC,SAAS,cAAc,CAAC,CAACkB,OAAO,EAAElB,IAAI,EAAE;oBAC/CoB,SAAS,IAAI,CAACF;oBACdlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAMmB,OAAOD,OAAO,WAAW;gBAC/D;gBAEAlB,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BC,OAAOmB,UAAU,OAAO,CAAC;oBAAC;iBAAQ;gBAClCnB,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAC/C;QACJ;QAEAF,SAAS,+BAA+B;YACpC,SAASgC;gBACL,OAAO5C,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC1B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,GAAG,CAAC;4BACXA,OAAO,GAAG,CAAC;yBACd;gBACL;YACJ;YAEAhB,GAAG,uCAAuC;gBACtC,MAAMC,OAAO8B;gBACb9B,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC,YAAY,OAAO,CAAC,EAAE;oBACxD;gBAEAG,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,YAAY,MAAM,CAAC;qBAAQ;gBAE7D,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAY;oBAAQ;iBAAc;YACtE;YAEAhC,GAAG,sCAAsC;gBACrC,MAAMC,OAAO8B;gBACb9B,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC,YAAY,OAAO,CAAC,EAAE;oBACxD;gBAEAG,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC;qBAAQ;gBAE5D,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAQ;oBAAY;iBAAc;YACtE;YAEAhC,GAAG,+BAA+B;gBAC9B,MAAMC,OAAO8B;gBACb9B,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBAEAG,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,QAAQ,OAAO,CAAC;qBAAQ;gBAE1D,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAQ;iBAAc;YAC1D;YAEAhC,GAAG,qCAAqC;gBACpC,MAAMC,OAAO8B;gBAEb9B,KAAK,MAAM,CAACe,CAAAA;oBACRA,OAAO,MAAM,CAAC;oBACd,OAAO,EAAE;gBACb;gBAEA,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;iBAAc;YAClD;YAEAhC,GAAG,+CAA+C;gBAC9C,MAAMC,OAAO8B;gBACb9B,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC,YAAY,OAAO,CAAC,EAAE;oBACxD;gBAEAG,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC;qBAAY;gBAE9C,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAQ;oBAAe;iBAAW;YACtE;YAEAhC,GAAG,0CAA0C;gBACzC,MAAMC,OAAO8B;gBACb9B,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC,YAAY,OAAO,CAAC,EAAE;oBACxD;gBAEAG,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC;qBAAe;gBAEnE,MAAMgB,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAQ;oBAAe;iBAAW;YACtE;QACJ;QAEAjC,SAAS,6BAA6B;YAClCC,GAAG,8FAA8F;gBAC7F,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;4BAC7C,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,QAAQ,CAAC,oBACT,YAAY,CAACqB,CAAAA;gCACV,MAAMK,MAAMJ,OAAOD;gCACnB,OACI,MACAK,IACK,OAAO,CAAC,OAAO,IACf,WAAW,GACX,OAAO,CAAC,iBAAiB,KACzB,OAAO,CAAC,UAAU;4BAE/B;wBACR;oBACA,QAAQR,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;4BAAUA,OAAO,GAAG,CAAC;yBAAQ;gBAC/D;gBAGA,MAAMiB,WAAW;oBACb,QAAOhC,IAAgB;wBAEnBA,KAAK,MAAM,CAACH,CAAAA,SAAW;gCACnB,UAAUA,OACL,IAAI,GACJ,KAAK,CAAC,YACN,OAAO,CAAC;oCACL;wCAAE,OAAO;wCAAW,OAAO;oCAAK;oCAChC;wCAAE,OAAO;wCAAU,OAAO;oCAAK;iCAClC,EACA,WAAW,CAAC,CAACqB,OAAO,EAAElB,IAAI,EAAE;oCACzB,MAAMiC,UAAUd,OAAOnB,KAAK,KAAK,CAAC,QAAQ,QAAQ,MAAM;oCACxD,MAAMkC,WAAWD,QAAQ,OAAO,CAAC,iBAAiB;oCAClD,IAAIf,SAASA,AAAU,SAAVA,OACTlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAMkB,QAAQgB;yCAE1ClC,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAACkC;gCAEpC;4BACR;wBAGAlC,KAAK,MAAM,CAACe,CAAAA,SAAU;gCAACA,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC;6BAAQ;oBAChE;gBACJ;gBAEAiB,SAAS,MAAM,CAAChC;gBAGhB,MAAM+B,QAAQ/B,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC2B,CAAAA,MAAOlC,MAAMkC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;gBACjE1B,OAAO8B,OAAO,OAAO,CAAC;oBAAC;oBAAS;oBAAQ;iBAAW;gBAGnD/B,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5BA,KAAK,KAAK,CAAC,YAAY,QAAQ,CAAC;gBAChCC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;gBAG3C,MAAME,OAAOF,KAAK,OAAO;gBACzBC,OAAOC,KAAK,QAAQ,EAAE,IAAI,CAAC;YAC/B;QACJ;IACJ;IAEAJ,SAAS,qCAAqC;QAC1CA,SAAS,aAAa;YAClBC,GAAG,yDAAyD;gBACxD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,SAAS;4BAChBA,OAAO,GAAG,CAAC;yBACd;gBACL;gBAEA,MAAMF,KAAKb,KAAK,EAAE;gBAClBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACnC;YAEAd,GAAG,oDAAoD;gBACnD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;4BAAUA,OAAO,GAAG,CAAC;yBAAe;gBACtE;gBAEAf,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,SAAS,GAAG,KAAK,CAAC;qBAAS;gBAEzDd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACxC;QACJ;QAEAF,SAAS,QAAQ;YACb,SAASqC;gBACL,OAAOjD,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC1B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;4BACjC,WAAWA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC/B,iBAAiBA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACzC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC,SAAS;4BACpBA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE,GACC,GAAG,CAAC,OAAOqB,CAAAA;gCACRA,IAAI,KAAK,CAAC,OACL,WAAW,CAAC,4CACZ,MAAM,CAACrB,CAAAA,SAAU;wCACdA,OAAO,GAAG,CAAC;wCACXA,OAAO,GAAG,CAAC;qCACd;4BACT;yBACP;gBACL;YACJ;YAEAhB,GAAG,wDAAwD;gBACvD,MAAMC,OAAOmC;gBACb,MAAMtB,KAAKb,KAAK,EAAE;gBAElBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAE/B,MAAMwB,WAAWxB,GAAG,MAAM,CAAC,EAAE;gBAC7BZ,OAAOoC,SAAS,EAAE,EAAE,IAAI,CAAC;gBACzBpC,OAAOoC,SAAS,IAAI,EAAE,YAAY,CAAC;gBACnCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;gBACpCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;gBACpCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CACrC;YAER;YAEAtC,GAAG,4CAA4C;gBAC3C,MAAMC,OAAOmC;gBACb,MAAME,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAElC,MAAMsC,aAAaD,SAAS,IAAI,CAAC,EAAE;gBACnCpC,OAAOqC,WAAW,MAAM,EAAE,YAAY,CAAC;gBACvCrC,OAAOqC,WAAW,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACvC,MAAMC,aAAaD,WAAW,MAAM,CAAC,EAAE;gBACvCrC,OAAOsC,WAAW,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAEvC,MAAMC,SAASH,SAAS,IAAI,CAAC,EAAE;gBAC/BpC,OAAOuC,OAAO,MAAM,EAAE,YAAY,CAAC;YACvC;YAEAzC,GAAG,+CAA+C;gBAC9C,MAAMC,OAAOmC;gBACb,MAAME,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAClCC,OAAOoC,SAAS,WAAW,EAAE,IAAI,CAAC;YACtC;YAEAtC,GAAG,6CAA6C;gBAC5C,MAAMC,OAAOmC;gBACb,IAAIE,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAEhCqC,SAAS,YAAY,CAAC;gBAEtBA,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC5BC,OAAOoC,SAAS,WAAW,EAAE,IAAI,CAAC;YACtC;YAEAtC,GAAG,+DAA+D;gBAC9D,MAAMC,OAAOmC;gBACb,IAAIE,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAEhCqC,SAAS,YAAY,CAAC;gBAEtBA,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC5BC,OAAOoC,SAAS,WAAW,EAAE,IAAI,CAAC;YACtC;YAEAtC,GAAG,gEAAgE;gBAC/D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;4BAC7C,WAAWA,OAAO,IAAI,GAAG,KAAK,CAAC,cAAc,QAAQ,CAAC;wBAC1D;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAS;4BAC/D,GACC,GAAG,CAAC,OAAOqB,CAAAA;gCACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAa;4BAC/D;yBACP;gBACL;gBAGA,IAAIsB,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAChCC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;gBACxCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;gBAGxCrC,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7B,MAAMA,KAAK,QAAQ;gBAEnBqC,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC5BC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;gBACxCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YAC5C;YAEAtC,GAAG,uDAAuD;gBACtD,MAAMiB,UAAUP,GAAG,KAAK,CAACQ,SAAS,QAAQ,kBAAkB,CAAC,KAAO;gBAEpE/B,WAAW;oBACP,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,WAAWqB,CAAAA;gCACnCA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE;yBACH;gBACL;gBAEAd,OAAOe,SAAS,GAAG,CAAC,gBAAgB;gBACpCA,QAAQ,WAAW;YACvB;YAEAjB,GAAG,qDAAqD;gBACpD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC/B;oBACA,QAAQkB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;4BAAUA,OAAO,IAAI,CAAC;yBAAS;gBACjE;gBAEAd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACxC;QACJ;QAEAF,SAAS,WAAW;YAChBC,GAAG,uDAAuD;gBACtD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC/B;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,OAAO,CAAC,eAAe;gCAAE,MAAM;4BAAa;yBACtD;gBACL;gBAEA,MAAMF,KAAKb,KAAK,EAAE;gBAClBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAE/B,MAAM4B,cAAc5B,GAAG,MAAM,CAAC,EAAE;gBAChCZ,OAAOwC,YAAY,QAAQ,EAAE,IAAI,CAAC;gBAClCxC,OAAOwC,YAAY,KAAK,EAAE,OAAO,CAAC;oBAAE,MAAM;gBAAa;YAC3D;YAEA1C,GAAG,wCAAwC;gBACvC,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC/B;oBACA,QAAQkB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;4BAAUA,OAAO,OAAO,CAAC;yBAAW;gBACtE;gBAEA,MAAM0B,cAAczC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBACrCC,OAAOwC,YAAY,QAAQ,EAAE,IAAI,CAAC;gBAClCxC,OAAOwC,YAAY,KAAK,EAAE,aAAa;YAC3C;QACJ;QAEA3C,SAAS,kDAAkD;YACvD,SAASqC;gBACL,OAAOjD,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;4BACjC,WAAWA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACnC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE,GACC,GAAG,CAAC,OAAOqB,CAAAA;gCACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAa;4BAC/D;yBACP;gBACL;YACJ;YAEAhB,GAAG,qDAAqD;gBACpD,MAAMC,OAAOmC;gBAEbnC,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,YAAYA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACpC;gBAECG,KAAK,MAAM,CAAC,YACR,EAAE,CAAC,QACH,GAAG,CAAC,aAAaoC,CAAAA;oBACdA,IAAI,KAAK,CAAC,aAAa,MAAM,CAACrB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;yBAAc;gBACtE,GACC,KAAK,CAAC;gBAEX,MAAMsB,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAClCC,OAAOoC,SAAS,IAAI,EAAE,YAAY,CAAC;gBACnCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;YACxC;YAEAtC,GAAG,2CAA2C;gBAC1C,MAAMC,OAAOmC;gBAEbnC,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,YAAYA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACpC;gBAECG,KAAK,MAAM,CAAC,YACR,EAAE,CAAC,QACH,GAAG,CAAC,aAAaoC,CAAAA;oBACdA,IAAI,KAAK,CAAC,aAAa,MAAM,CAACrB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;yBAAc;gBACtE,GACC,MAAM,CAAC;gBAEZ,MAAMsB,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAClCC,OAAOoC,SAAS,IAAI,EAAE,YAAY,CAAC;gBACnCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;YACrC;YAEAtC,GAAG,sDAAsD;gBACrD,MAAMC,OAAOmC;gBACblC,OAAO,IACFD,KAAK,MAAM,CAAC,eAA2C,EAAE,CAAC,SAC7D,OAAO,CAAC;YACd;QACJ;QAEAF,SAAS,qDAAqD;YAC1DC,GAAG,gDAAgD;gBAC/C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC9B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,WAAWqB,CAAAA;gCACnCA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE;yBACH;gBACL;gBAEAf,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,YAAY,MAAM,CAAC;qBAAY;gBAEjEd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAEpC,MAAM2B,MAAM3B,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC7BC,OAAO0B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACpC;YAEA5B,GAAG,mCAAmC;gBAClC,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACrC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,WAAWqB,CAAAA;gCACnCA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE;yBACH;gBACL;gBAEAf,KAAK,MAAM,CAACe,CAAAA;oBACRA,OAAO,MAAM,CAAC;oBACd,OAAO,EAAE;gBACb;gBAEAd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,oCAAoC;gBACnC,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;4BACjC,WAAWA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACnC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,WAAWqB,CAAAA;gCACnCA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE;yBACH;gBACL;gBAEAf,KAAK,MAAM,CAACe,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC,aAAa,OAAO,CAAC;qBAAY;gBAEnEd,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACpCC,OAAOD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACpC,MAAM2B,MAAM3B,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC7BC,OAAO0B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACpC;QACJ;QAEA7B,SAAS,kCAAkC;YACvCC,GAAG,uHAAuH;gBACtH,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC;4BACjC,WAAWA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACnC;oBACA,QAAQkB,CAAAA,SAAU;4BACdA,OAAO,GAAG,CAAC;4BACXA,OAAO,SAAS;4BAChBA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAe;4BACrE,GACC,GAAG,CAAC,OAAOqB,CAAAA;gCACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAa;4BAC/D;yBACP;gBACL;gBAGAf,KAAK,MAAM,CAACH,CAAAA,SAAW;wBACnB,YAAYA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACpC;gBAECG,KAAK,MAAM,CAAC,YACR,EAAE,CAAC,QACH,GAAG,CAAC,aAAaoC,CAAAA;oBACdA,IAAI,KAAK,CAAC,aAAa,MAAM,CAACrB,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;yBAAc;gBACtE,GACC,KAAK,CAAC;gBAGX,MAAMF,KAAKb,KAAK,EAAE;gBAClBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAE/B,MAAMwB,WAAWxB,GAAG,MAAM,CAAC,EAAE;gBAC7BZ,OAAOoC,SAAS,IAAI,EAAE,YAAY,CAAC;gBACnCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBACjCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;gBAGjC,MAAMG,SAASH,SAAS,IAAI,CAAC,EAAE;gBAC/BpC,OAAOuC,OAAO,MAAM,EAAE,YAAY,CAAC;gBAGnC,MAAMtC,OAAOF,KAAK,OAAO;gBACzBC,OAAOC,MAAM,cAAc,CAAC;YAChC;QACJ;IACJ;IAEAJ,SAAS,2BAA2B;QAChCA,SAAS,yBAAyB;YAC9B,SAAS4C;gBACL,OAAOxD,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC,UAAU,QAAQ,CAAC;oCAC1C,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;gCAC1C;wBACR;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;4BAAUA,OAAO,GAAG,CAAC;yBAAW;gBAClE;YACJ;YAEAhB,GAAG,+CAA+C;gBAC9C,MAAMC,OAAO0C;gBACb,MAAMlB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,OAAO,WAAW;gBACzBvB,OAAOuB,MAAM,IAAI,EAAE,IAAI,CAAC;YAC5B;YAEAzB,GAAG,+CAA+C;gBAC9C,MAAMC,OAAO0C;gBACb,MAAME,SAAS5C,KAAK,KAAK,CAAC;gBAC1BC,OAAO2C,QAAQ,WAAW;gBAC1B3C,OAAO2C,OAAO,IAAI,EAAE,IAAI,CAAC;YAC7B;YAEA7C,GAAG,wCAAwC;gBACvC,MAAMC,OAAO0C;gBACbzC,OAAO,IAAMD,KAAK,KAAK,CAAC,oBAAoB,OAAO,CAC/C;YAER;YAEAD,GAAG,4CAA4C;gBAC3C,MAAMC,OAAO0C;gBACb1C,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCA,KAAK,KAAK,CAAC,gBAAgB,QAAQ,CAAC;gBAEpC,MAAME,OAAOF,KAAK,OAAO;gBACzBC,OAAOC,KAAK,OAAO,EAAE,OAAO,CAAC;oBACzB,QAAQ;oBACR,MAAM;gBACV;YACJ;YAEAH,GAAG,wCAAwC;gBACvC,MAAMC,OAAO0C;gBACb1C,KAAK,OAAO,CAAC;oBACT,OAAO;oBACP,SAAS;wBAAE,QAAQ;wBAAe,MAAM;oBAAW;gBACvD;gBAEAC,OAAOD,KAAK,KAAK,CAAC,kBAAkB,QAAQ,IAAI,IAAI,CAAC;gBACrDC,OAAOD,KAAK,KAAK,CAAC,gBAAgB,QAAQ,IAAI,IAAI,CAAC;YACvD;YAEAD,GAAG,qCAAqC;gBACpC,MAAMC,OAAO0C;gBACb1C,KAAK,OAAO,CAAC;oBACT,OAAO;oBACP,SAAS;wBAAE,QAAQ;wBAAe,MAAM;oBAAW;gBACvD;gBACAC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,gDAAgD;gBAC/C,MAAMC,OAAO0C;gBACb1C,KAAK,OAAO,CAAC;oBACT,OAAO;oBACP,SAAS;wBAAE,QAAQ;wBAAe,MAAM;oBAAW;gBACvD;gBACAA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,wCAAwC;gBACvC,MAAMC,OAAO0C;gBACb,MAAMvC,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;gBAE3CC,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,AAAW,cAAXA,EAAE,IAAI,GAAiB,IAAI,CAAC;gBACzD5C,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,AAAW,qBAAXA,EAAE,IAAI,GAAwB,IAAI,CAAC;gBAChE5C,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,AAAW,mBAAXA,EAAE,IAAI,GAAsB,IAAI,CAAC;YAClE;YAEA9C,GAAG,kDAAkD;gBACjD,MAAMC,OAAO0C;gBACb1C,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCA,KAAK,KAAK,CAAC,gBAAgB,QAAQ,CAAC;gBAEpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,8CAA8C;gBAC7C,MAAMC,OAAO0C;gBACb1C,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCA,KAAK,KAAK,CAAC,gBAAgB,QAAQ,CAAC;gBAEpC,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,IAAI,EAAE,IAAI,CAAC;gBACrBZ,OAAOY,GAAG,MAAM,EAAE,IAAI,CAAC;gBACvBZ,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;gBAChCZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/BZ,OAAOY,GAAG,KAAK,EAAE,YAAY,CAAC;YAClC;YAEAd,GAAG,0DAA0D;gBACzD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACvB,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB;wBACR;gBACJ;gBAEA,MAAM9B,KAAKb,KAAK,EAAE;gBAClBC,OAAOY,GAAG,MAAM,EAAE,YAAY,CAAC;gBAC/BZ,OAAOY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/B,MAAMc,MAAMlC,MAAMoB,GAAG,MAAM,CAAC,EAAE;gBAC9BZ,OAAO0B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAChC1B,OAAO0B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACpC;YAEA5B,GAAG,mCAAmC;gBAClC,MAAMC,OAAO0C;gBACb1C,KAAK,OAAO,CAAC;oBACT,OAAO;oBACP,SAAS;wBAAE,QAAQ;wBAAe,MAAM;oBAAgB;gBAC5D;gBAEAA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;gBAE1BA,KAAK,KAAK;gBACVC,OAAOD,KAAK,KAAK,CAAC,kBAAkB,QAAQ,IAAI,IAAI,CAAC;gBACrDC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,wCAAwC;gBACvC,MAAMC,OAAO0C;gBACb1C,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCA,KAAK,KAAK,CAAC,gBAAgB,QAAQ,CAAC;gBAEpC,MAAMY,SAAS,MAAMZ,KAAK,MAAM;gBAChCC,OAAOW,QAAQ,OAAO,CAAC;oBACnB,OAAO;oBACP,SAAS;wBACL,QAAQ;wBACR,MAAM;oBACV;gBACJ;YACJ;YAEAb,GAAG,yFAAyF;gBACxF,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC3B,IACC,MAAM,CAACvC,EAAE,MAAM,CAAC;gCAAE,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC;4BAAG;wBACrD;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAAS;gBAAY;gBACpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;YAEAD,GAAG,8FAA8F;gBAC7F,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC3B,IACC,MAAM,CAACvC,EAAE,MAAM,CAAC;gCAAE,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC;4BAAG;wBACrD;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAASK;gBAAiB;gBACzC,MAAMF,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;YAEAD,GAAG,oFAAoF;gBACnF,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC3B,IACC,MAAM,CAACvC,EAAE,MAAM,CAAC;gCAAE,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;4BAAoB;wBACzE;gBACJ;gBAEAJ,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;gBACjCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,4FAA4F;gBAC3F,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC3B,IACC,QAAQ,CAAC,uBACT,MAAM,CACHvC,EAAE,MAAM,CAAC;gCACL,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG;4BAC9B;wBAEZ;gBACJ;gBAEAJ,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;gBACjCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,oGAAoG;gBACnG,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC3B,IACC,QAAQ,CAAC,uBACT,MAAM,CAACvC,EAAE,MAAM,CAAC;gCAAE,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC;4BAAG;wBACrD;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAAS;gBAAY;gBACpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;gBACjCC,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,+FAA+F;gBAC9F,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACvB,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,MAAM,CACHvC,EAAE,MAAM,CAAC;gCACL,QAAQA,EAAE,MAAM,GAAG,GAAG,CAAC;gCACvB,MAAMA,EAAE,MAAM,GAAG,GAAG,CAAC;4BACzB;wBAEZ;gBACJ;gBAEAJ,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;gBACtCA,KAAK,KAAK,CAAC,gBAAgB,QAAQ,CAAC;gBACpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;QACJ;QAEAF,SAAS,qBAAqB;YAC1B,SAASgD;gBACL,OAAO5D,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;oCACtC,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;gCAC5C,IACC,IAAI;wBACb;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,GAAG,CAAC;yBAAW;gBAC7C;YACJ;YAEAhB,GAAG,qCAAqC;gBACpC,MAAMC,OAAO8C;gBACb,MAAMtB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,IAAI,EAAE,IAAI,CAAC;YAC5B;YAEAzB,GAAG,oDAAoD;gBACnD,MAAMC,OAAO8C;gBACb7C,OAAOD,KAAK,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE;YAC7C;YAEAD,GAAG,qCAAqC;gBACpC,MAAMC,OAAO8C;gBACb,MAAMjC,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,MAAM,EAAE,IAAI,CAAC;gBACvBZ,OAAOY,GAAG,KAAK,EAAE,YAAY,CAAC;gBAE9BA,GAAG,OAAO;gBAEV,MAAMkC,YAAY/C,KAAK,KAAK,CAAC,WAAW,EAAE;gBAC1CC,OAAO8C,UAAU,KAAK,EAAE,YAAY,CAAC;gBACrC9C,OAAO8C,UAAU,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;gBAC/C9C,OAAO8C,UAAU,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACnD;YAEAhD,GAAG,oCAAoC;gBACnC,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;wBAC1C;4BAAE,MAAM;4BAAQ,OAAO;wBAAe;qBACzC;gBACL;gBAEA,MAAME,OAAOF,KAAK,OAAO;gBACzBC,OAAOC,KAAK,OAAO,EAAE,OAAO,CAAC;oBACzB;wBAAE,MAAM;wBAAW,OAAO;oBAAgB;oBAC1C;wBAAE,MAAM;wBAAQ,OAAO;oBAAe;iBACzC;YACL;YAEAH,GAAG,0CAA0C;gBACzC,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;wBAC1C;4BAAE,MAAM;4BAAQ,OAAO;wBAAe;qBACzC;gBACL;gBAEA,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,KAAK,EAAE,YAAY,CAAC;gBAC9BZ,OAAOY,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;gBACzCZ,OAAOY,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;YAC7C;YAEAd,GAAG,yCAAyC;gBACxC,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;wBAC1C;4BAAE,MAAM;4BAAQ,OAAO;wBAAe;qBACzC;gBACL;gBAEA,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCa,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM;gBAElBZ,OAAOD,KAAK,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;oBAAC;wBAAE,MAAM;wBAAQ,OAAO;oBAAe;iBAAE;YACpF;YAEAD,GAAG,wCAAwC;gBACvC,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAK,OAAO;wBAAI;wBACxB;4BAAE,MAAM;4BAAK,OAAO;wBAAI;wBACxB;4BAAE,MAAM;4BAAK,OAAO;wBAAI;qBAC3B;gBACL;gBAEA,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCa,GAAG,UAAU,CAAC;gBAEdZ,OAAOD,KAAK,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;oBACnC;wBAAE,MAAM;wBAAK,OAAO;oBAAI;oBACxB;wBAAE,MAAM;wBAAK,OAAO;oBAAI;iBAC3B;YACL;YAEAD,GAAG,6BAA6B;gBAC5B,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;wBAC1C;4BAAE,MAAM;4BAAI,OAAO;wBAAG;qBACzB;gBACL;gBAEA,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,mDAAmD;gBAClD,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;wBAC1C;4BAAE,MAAM;4BAAQ,OAAO;wBAAe;qBACzC;gBACL;gBAEA,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,mCAAmC;gBAClC,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAAS;wBAAC;4BAAE,MAAM;wBAAW;qBAAE;gBAAC;gBAC/C,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,iFAAiF;gBAChF,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEA,MAAMD,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;YAEAD,GAAG,sFAAsF;gBACrF,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAASK;gBAAiB;gBACzC,MAAMF,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;YAEAD,GAAG,iFAAiF;gBAChF,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAAS;gBAAY;gBACpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,EAAE,YAAY,CAAC;YACrC;YAEAD,GAAG,gFAAgF;gBAC/E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,QAAQ,CAAC,wBACT,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEAJ,KAAK,OAAO,CAAC;oBAAE,SAAS;gBAAY;gBACpC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC;YAEAD,GAAG,gFAAgF;gBAC/E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACzB,IACC,IAAI,GACJ,QAAQ,CAAC,wBACT,UAAU,CAACvC,EAAE,KAAK,CAACA,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;wBAC5C;gBACJ;gBAEA,MAAMD,QAAQ,MAAMH,KAAK,QAAQ;gBAEjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,wCAAwC;gBACvC,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBAAE,SAAS,EAAE;gBAAC;gBAC3BC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;gBAE1B,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCa,GAAG,OAAO;gBACVZ,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,6CAA6C;gBAC5C,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBACL;4BAAE,MAAM;4BAAK,OAAO;wBAAI;wBACxB;4BAAE,MAAM;4BAAK,OAAO;wBAAI;qBAC3B;gBACL;gBAEA,MAAMgD,MAAMhD,KAAK,KAAK,CAAC,WAAW,EAAE;gBACpC,MAAMiD,OAAOD,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG;gBAC7B,MAAME,OAAOF,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG;gBAG7B,MAAMG,MAAMnD,KAAK,KAAK,CAAC,WAAW,EAAE;gBACpCC,OAAOkD,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAACF;gBAC9BhD,OAAOkD,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAACD;YAClC;YAEAnD,GAAG,uDAAuD;gBACtD,MAAMC,OAAO8C;gBACb,MAAM3C,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,mDAAmD;gBAClD,MAAMC,OAAO8C;gBACb9C,KAAK,OAAO,CAAC;oBACT,SAAS;wBAAC;4BAAE,MAAM;4BAAW,OAAO;wBAAgB;qBAAE;gBAC1D;gBAEA,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCa,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;gBAE/BZ,OAAQD,KAAK,OAAO,GAAG,OAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAC3D;QACJ;QAEAF,SAAS,iCAAiC;YACtCC,GAAG,4DAA4D;gBAC3D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;4BAC3B,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,MAAM,CAAC8C,CAAAA,IAAM;oCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC,UAAU,QAAQ,CAAC;gCAC9C;wBACR;oBACA,QAAQ5B,CAAAA,SAAU;4BACdA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAS;4BAC/D,GACC,GAAG,CAAC,WAAWqB,CAAAA;gCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACrB,CAAAA,SAAU;wCAACA,OAAO,GAAG,CAAC;qCAAW;4BACjE;yBACP;gBACL;gBAEAf,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7B,MAAMA,KAAK,QAAQ;gBAEnB,MAAMqC,WAAWrC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAClCC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;gBACxCpC,OAAOoC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YAC5C;QACJ;IACJ;IAEAvC,SAAS,sCAAsC;QAC3C,SAASsD;YACL,OAAOlE,WAAW;gBACd,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,KAAK,CAAC,WACN,QAAQ,CAAC,QAAQwD,CAAAA;4BACdA,EAAE,KAAK,CAAC,eACH,WAAW,CAAC,+BACZ,MAAM,CAACV,CAAAA,IAAM;oCACV,SAASA,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,QAAQ,CAAC;oCAC5C,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC1B;wBACR,GACC,QAAQ,CAAC,QAAQU,CAAAA;4BACdA,EAAE,KAAK,CAAC,aAAa,MAAM,CAACV,CAAAA,IAAM;oCAC9B,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;gCAC1C;wBACJ;oBACR;YACJ;QACJ;QAEA7C,SAAS,SAAS;YACdC,GAAG,qDAAqD;gBACpD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,WAAW,EAAE,IAAI,CAAC;gBAC/BvB,OAAOuB,MAAM,gBAAgB,EAAE,QAAQ;gBACvCvB,OAAOuB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACrC;YAEAzB,GAAG,sCAAsC;gBACrC,MAAMC,OAAOoD;gBACb,MAAMvC,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,WAAW,EAAE,IAAI,CAAC;gBAC5BZ,OAAOY,GAAG,kBAAkB,EAAE,OAAO,CAAC;oBAClC;wBACI,IAAI;wBACJ,OAAO;wBACP,aAAa;oBACjB;oBACA;wBAAE,IAAI;wBAAQ,OAAO;oBAAY;iBACpC;gBACDZ,OAAOY,GAAG,gBAAgB,EAAE,QAAQ;gBACpCZ,OAAOY,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;YAChC;YAEAd,GAAG,yDAAyD;gBACxDE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,SAASA,OACJ,MAAM,GACN,MAAM,CAAC8C,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG,IAC3B,QAAQ,CAAC,KAAKU,CAAAA;oCACXA,EAAE,KAAK,CAAC,KAAK,MAAM,CAACV,CAAAA,IAAM;4CAAE,GAAGA,EAAE,IAAI;wCAAG;gCAC5C;4BACR;oBACJ,IACF,OAAO,CAAC;YACd;YAEA5C,GAAG,kCAAkC;gBACjCE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,KAAKwD,CAAAA;oCACXA,EAAE,KAAK,CAAC,MAAM,MAAM,CAACV,CAAAA,IAAM;4CAAE,GAAGA,EAAE,IAAI;wCAAG;gCAC7C,GACC,QAAQ,CAAC,KAAKU,CAAAA;oCACXA,EAAE,KAAK,CAAC,MAAM,MAAM,CAACV,CAAAA,IAAM;4CAAE,GAAGA,EAAE,IAAI;wCAAG;gCAC7C;4BACR;oBACJ,IACF,OAAO,CAAC;YACd;YAEA5C,GAAG,+CAA+C;gBAC9CE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,eAAewD,CAAAA;oCAC7CA,EAAE,KAAK,CAAC,KAAK,MAAM,CAACV,CAAAA,IAAM;4CAAE,GAAGA,EAAE,IAAI;wCAAG;gCAC5C;4BACJ;oBACJ,IACF,OAAO,CAAC;YACd;YAEA5C,GAAG,2DAA2D;gBAC1DE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;oCACtCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;4CAAE,aAAaA,EAAE,IAAI;wCAAG;gCACzD;4BACJ;oBACJ,IACF,OAAO,CAAC;YACd;YAEA5C,GAAG,wDAAwD;gBACvDE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,SAASA,OACJ,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,KAAKwD,CAAAA;oCACXA,EAAE,KAAK,CAAC,KAAK,MAAM,CAACV,CAAAA,IAAM;4CAAE,GAAGA,EAAE,IAAI;wCAAG;gCAC5C;4BACR;oBACJ,IACF,GAAG,CAAC,OAAO;YACjB;QACJ;QAEA7C,SAAS,2BAA2B;YAChCC,GAAG,+CAA+C;gBAC9C,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBAEzBwB,MAAM,WAAW,CAAC;gBAElBvB,OAAOuB,MAAM,gBAAgB,EAAE,IAAI,CAAC;gBACpCvB,OAAOuB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;gBACjCvB,OAAOD,KAAK,KAAK,CAAC,mBAAmB,IAAI,EAAE,IAAI,CAAC;gBAChDC,OAAOD,KAAK,KAAK,CAAC,iBAAiB,IAAI,EAAE,IAAI,CAAC;YAClD;YAEAD,GAAG,wDAAwD;gBACvD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBAEzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC;gBAEvCwB,MAAM,WAAW,CAAC;gBAElBvB,OAAOuB,MAAM,gBAAgB,EAAE,IAAI,CAAC;gBACpCvB,OAAOD,KAAK,KAAK,CAAC,iBAAiB,WAAW;gBAC9CC,OAAO,IAAMD,KAAK,KAAK,CAAC,oBAAoB,OAAO;YACvD;YAEAD,GAAG,yDAAyD;gBACxD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBAEzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC;gBACvCwB,MAAM,WAAW,CAAC;gBAElBvB,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAC1D;YAEAD,GAAG,8CAA8C;gBAC7C,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAO,IAAMuB,MAAM,WAAW,CAAC,YAAY,OAAO,CAAC;YACvD;YAEAzB,GAAG,sDAAsD;gBACrD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAElBvB,OAAO,IAAMD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC,OAAO,GAAG,CAAC,OAAO;YAC1E;QACJ;QAEAF,SAAS,qBAAqB;YAC1BC,GAAG,2CAA2C;gBAC1C,MAAMC,OAAOoD;gBACbnD,OAAOD,KAAK,OAAO,GAAG,OAAO,EAAE,QAAQ;YAC3C;YAEAD,GAAG,qDAAqD;gBACpD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC;gBACvCA,KAAK,KAAK,CAAC,iBAAiB,QAAQ,CAAC;gBAErCC,OAAOD,KAAK,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;oBACnC,aAAa;oBACb,SAAS;oBACT,OAAO;gBACX;YACJ;YAEAD,GAAG,+CAA+C;gBAC9C,MAAMC,OAAOoD;gBACbpD,KAAK,OAAO,CAAC;oBACT,SAAS;wBAAE,aAAa;wBAAQ,MAAM;oBAAc;gBACxD;gBAEA,MAAMwB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,gBAAgB,EAAE,IAAI,CAAC;gBACpCvB,OAAOD,KAAK,KAAK,CAAC,gBAAgB,QAAQ,IAAI,IAAI,CAAC;YACvD;YAEAD,GAAG,gDAAgD;gBAC/C,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC;gBAEvCA,KAAK,OAAO,CAAC;oBAAE,SAAS;gBAAY;gBAEpCC,OAAOuB,MAAM,gBAAgB,EAAE,QAAQ;gBACvCvB,OAAOuB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACrC;YAEAzB,GAAG,gDAAgD;gBAC/C,MAAMC,OAAOoD;gBACbpD,KAAK,OAAO,CAAC;oBACT,SAAS;wBAAE,aAAa;wBAAQ,KAAK;oBAAM;gBAC/C;gBACA,MAAMwB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,gBAAgB,EAAE,QAAQ;YAC3C;QACJ;QAEA1B,SAAS,cAAc;YACnBC,GAAG,sEAAsE;gBACrE,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,mBACT,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCAAE,SAASA,EAAE,IAAI;oCAAG;4BACrD;wBACR;gBACJ;gBAEA,MAAMxC,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,AAAW,cAAXA,EAAE,IAAI,GAAiB,IAAI,CAAC;YAC7D;YAEA9C,GAAG,6EAA6E;gBAC5E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,mBACT,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCACzB,SAASA,EAAE,IAAI,GAAG,QAAQ,CAAC;oCAC/B;4BACJ;wBACR;gBACJ;gBAEA,MAAMnB,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,mBAAmB,QAAQ,CAAC;gBAEvC,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,iDAAiD;gBAChD,MAAMC,OAAOoD;gBACb,MAAM5B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAElB,MAAMrB,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;YAEAJ,GAAG,sEAAsE;gBACrE,MAAMC,OAAOoD;gBACb,MAAMjD,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;QACJ;QAEAL,SAAS,uBAAuB;YAC5BC,GAAG,2DAA2D;gBAC1D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;4BACjC,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,SAASwD,CAAAA;gCACfA,EAAE,KAAK,CAAC,SAAS,MAAM,CAACV,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BAChD,GACC,QAAQ,CAAC,WAAWU,CAAAA;gCACjBA,EAAE,KAAK,CAAC,WACH,OAAO,CAACV,CAAAA,IAAKA,AAA+B,iBAA/BA,EAAE,KAAK,CAAC,QAAQ,QAAQ,IACrC,MAAM,CAACA,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BACpC;wBACR;gBACJ;gBAEA,MAAMK,MAAMhD,KAAK,KAAK,CAAC,WAAW,EAAE;gBACpCC,OAAO+C,IAAI,kBAAkB,CAAC,GAAG,CAACK,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;oBAAC;iBAAQ;gBAE/DrD,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMmD,MAAMnD,KAAK,KAAK,CAAC,WAAW,EAAE;gBACpCC,OAAOkD,IAAI,kBAAkB,CAAC,GAAG,CAACE,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;oBAAC;oBAAS;iBAAU;YAC9E;YAEAtD,GAAG,gEAAgE;gBAC/D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;4BACjC,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,WAAWwD,CAAAA;gCACzCA,EAAE,KAAK,CAAC,WACH,OAAO,CAACV,CAAAA,IAAKA,AAA+B,iBAA/BA,EAAE,KAAK,CAAC,QAAQ,QAAQ,IACrC,MAAM,CAACA,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BACpC;wBACJ;gBACJ;gBAEA,MAAMnB,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClBxB,KAAK,KAAK,CAAC,aAAa,QAAQ,CAAC;gBAEjCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAG5B,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,kBAAkB,EAAE,OAAO,CAAC,EAAE;gBACxCZ,OAAOY,GAAG,gBAAgB,EAAE,IAAI,CAAC;gBACjCZ,OAAOD,KAAK,KAAK,CAAC,aAAa,QAAQ,IAAI,IAAI,CAAC;YACpD;QACJ;QAEAF,SAAS,WAAW;YAChBC,GAAG,4CAA4C;gBAC3C,MAAMC,OAAOoD;gBACbpD,KAAK,OAAO,CAAC;oBACT,SAAS;wBAAE,aAAa;wBAAQ,SAAS;wBAAS,OAAO;oBAAG;gBAChE;gBACAC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,0CAA0C;gBACzC,MAAMC,OAAOoD;gBACbpD,KAAK,OAAO,CAAC;oBACT,SAAS;wBAAE,aAAa;wBAAQ,SAAS;wBAAS,OAAO;oBAAG;gBAChE;gBACCA,KAAK,KAAK,CAAC,WAAmB,WAAW,CAAC;gBAC3CC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;QACJ;IACJ;IAEAF,SAAS,oCAAoC;QACzC,SAASwD;YACL,OAAOpE,WAAW;gBACd,QAAQW,CAAAA,SAAW;wBACf,UAAUA,OACL,MAAM,GACN,KAAK,CAAC,YACN,IAAI,GACJ,QAAQ,CAAC,QAAQwD,CAAAA;4BACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCACzB,SAASA,EAAE,IAAI,GAAG,QAAQ,CAAC;oCAC3B,OAAOA,EAAE,IAAI;gCACjB;wBACJ,GACC,QAAQ,CAAC,QAAQU,CAAAA;4BACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCACzB,MAAMA,EAAE,IAAI,GAAG,QAAQ,CAAC;gCAC5B;wBACJ;oBACR;YACJ;QACJ;QAEA7C,SAAS,wBAAwB;YAC7BC,GAAG,0DAA0D;gBACzD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAO,IAAMuB,MAAM,OAAO,IAAI,OAAO,CAAC;YAC1C;YAEAzB,GAAG,gCAAgC;gBAC/B,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAO,IAAMuB,MAAM,OAAO,CAAC,YAAY,OAAO,CAAC;YACnD;YAEAzB,GAAG,oDAAoD;gBACnD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBAEdvB,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBACvCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC;gBACpDvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC;YACtD;YAEAzB,GAAG,kDAAkD;gBACjD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBAEdvB,OAAOuB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC+B,IAAWA,EAAE,UAAU,GAAG,OAAO,CAAC;oBAAC;oBAAQ;oBAAQ;iBAAO;YACtF;QACJ;QAEAzD,SAAS,WAAW;YAChBC,GAAG,iCAAiC;gBAChC,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC;gBAChDA,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC;gBAE7CvB,OAAOD,KAAK,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;oBACpC;wBAAE,aAAa;wBAAQ,SAAS;wBAAW,OAAO;oBAAK;oBACvD;wBAAE,aAAa;wBAAQ,MAAM;oBAAQ;iBACxC;YACL;QACJ;QAEAF,SAAS,WAAW;YAChBC,GAAG,qDAAqD;gBACpD,MAAMC,OAAOsD;gBACbtD,KAAK,OAAO,CAAC;oBACT,UAAU;wBACN;4BAAE,aAAa;4BAAQ,SAAS;4BAAM,OAAO;wBAAU;wBACvD;4BAAE,aAAa;4BAAQ,MAAM;wBAAY;qBAC5C;gBACL;gBAEA,MAAMwB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBACvCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;gBAC/DvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBACvCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAChE;YAEAzB,GAAG,4DAA4D;gBAC3D,MAAMC,OAAOsD;gBACbtD,KAAK,OAAO,CAAC;oBACT,UAAU;wBACN;4BAAE,aAAa;4BAAQ,SAAS;wBAAO;wBACvC;4BAAE,aAAa;4BAAQ,GAAG;wBAAE;wBAC5B;4BAAE,SAAS;wBAAQ;wBACnB;wBACA;4BAAE,aAAa;4BAAQ,MAAM;wBAAY;qBAC5C;gBACL;gBAEA,MAAMwB,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChCvB,OAAOuB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC+B,IAAWA,EAAE,UAAU,GAAG,OAAO,CAAC;oBAAC;oBAAQ;iBAAO;YAC9E;QACJ;QAEAzD,SAAS,6BAA6B;YAClCC,GAAG,uDAAuD;gBACtD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC;gBAChDA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC;gBAE9CA,MAAM,aAAa,CAAC;gBAEpBvB,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBACvCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;gBAC/DvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;gBAC7DvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAACA,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG;YAC1D;YAEAzB,GAAG,2CAA2C;gBAC1C,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBACdA,MAAM,QAAQ,CAAC,GAAG;gBAElBvB,OAAOuB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC+B,IAAWA,EAAE,UAAU,GAAG,OAAO,CAAC;oBAAC;oBAAQ;iBAAO;YAC9E;YAEAxD,GAAG,0BAA0B;gBACzB,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBACdA,MAAM,UAAU,CAAC;gBAEjBvB,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;YAC3C;QACJ;QAEA1B,SAAS,MAAM;YACXC,GAAG,oDAAoD;gBACnD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBAEd,MAAMX,KAAKb,KAAK,KAAK,CAAC,YAAY,EAAE;gBACpCC,OAAOY,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC7BZ,OAAOY,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBACpCZ,OAAO,OAAOY,GAAG,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YAC9C;YAEAd,GAAG,0CAA0C;gBACzC,MAAMC,OAAOsD;gBACb,MAAMzC,KAAKb,KAAK,KAAK,CAAC,YAAY,EAAE;gBACpCa,GAAG,OAAO,CAAC;gBACXA,GAAG,OAAO,CAAC;gBAEX,MAAMW,QAAQxB,KAAK,KAAK,CAAC;gBACzBC,OAAOuB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC+B,IAAWA,EAAE,UAAU,GAAG,OAAO,CAAC;oBAAC;oBAAQ;iBAAO;YAC9E;YAEAxD,GAAG,qEAAqE;gBACpE,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;4BACjC,UAAUA,OACL,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,SAASwD,CAAAA;gCACfA,EAAE,KAAK,CAAC,SAAS,MAAM,CAACV,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BAChD,GACC,QAAQ,CAAC,WAAWU,CAAAA;gCACjBA,EAAE,KAAK,CAAC,WACH,OAAO,CAACV,CAAAA,IAAKA,AAA+B,iBAA/BA,EAAE,KAAK,CAAC,QAAQ,QAAQ,IACrC,MAAM,CAACA,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BACpC;wBACR;gBACJ;gBAEA,MAAMK,MAAMhD,KAAK,KAAK,CAAC,YAAY,EAAE;gBACrCC,OAAO+C,IAAI,kBAAkB,CAAC,GAAG,CAACK,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;oBAAC;iBAAQ;gBAE/DrD,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMmD,MAAMnD,KAAK,KAAK,CAAC,YAAY,EAAE;gBACrCC,OAAOkD,IAAI,kBAAkB,CAAC,GAAG,CAACE,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;oBAAC;oBAAS;iBAAU;YAC9E;QACJ;QAEAvD,SAAS,cAAc;YACnBC,GAAG,qDAAqD;gBACpD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC;gBAE7C,MAAMrB,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;gBACnBF,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC;YACtE;YAEA9C,GAAG,uDAAuD;gBACtD,MAAMC,OAAOsD;gBACb,MAAM9B,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC;gBAChDA,MAAM,OAAO,CAAC;gBACdA,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC;gBAE7C,MAAMrB,QAAQ,MAAMH,KAAK,QAAQ;gBACjCC,OAAOE,OAAO,IAAI,CAAC;YACvB;QACJ;QAEAL,SAAS,WAAW;YAChBC,GAAG,kDAAkD;gBACjD,MAAMC,OAAOsD;gBACbtD,KAAK,OAAO,CAAC;oBACT,UAAU;wBACN;4BAAE,aAAa;4BAAQ,SAAS;4BAAK,OAAO;wBAAG;wBAC/C;4BAAE,aAAa;4BAAQ,MAAM;wBAAI;qBACpC;gBACL;gBACAC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;YAEAD,GAAG,sCAAsC;gBACrC,MAAMC,OAAOsD;gBACbtD,KAAK,OAAO,CAAC;oBACT,UAAU;wBAAC;4BAAE,aAAa;4BAAQ,SAAS;4BAAK,OAAO;wBAAG;qBAAE;gBAChE;gBACCA,KAAK,KAAK,CAAC,YAAoB,OAAO,CAAC;gBACxCC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC9B;QACJ;IACJ;IAEAF,SAAS,kDAAkD;QACvDA,SAAS,+BAA+B;YACpCC,GAAG,+EAA+E;gBAC9E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;oCAC/B,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAClB,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACtB;wBACJ;gBACJ;gBACA,MAAM9B,KAAKb,KAAK,KAAK,CAAC,QAAQ,EAAE;gBAChCC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAI;gBACjE1C,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAI;YACrE;YAEA5C,GAAG,6DAA6D;gBAC5D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;oCAC/B,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAClB,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACtB;wBACJ;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,KAAK;iCAAK;yBAAE;gBACrE;gBACA,MAAM3C,KAAKb,KAAK,KAAK,CAAC,QAAQ,EAAE;gBAChCC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;oBAAK;iBAAI;YAC1E;YAEA5C,GAAG,qEAAqE;gBACpEE,OAAO,IACHf,WAAW;wBACP,QAAQW,CAAAA,SAAW;gCACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;wCAAE,GAAGA,EAAE,IAAI;oCAAG;4BACrD;wBACA,QAAQ5B,CAAAA,SAAU;gCAACA,OAAO,MAAM,CAAC,QAAQ;oCAAE,MAAMyC,CAAAA,IAAK;4CAACA,EAAE,GAAG,CAAC;yCAAK;gCAAC;6BAAG;oBAC1E,IACF,OAAO,CAAC;YACd;QACJ;QAEA1D,SAAS,sBAAsB;YAC3BC,GAAG,+CAA+C;gBAC9C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OACD,MAAM,GACN,IAAI,GACJ,MAAM,CAAC8C,CAAAA,IAAM;oCAAE,GAAGA,EAAE,IAAI;oCAAI,GAAGA,EAAE,IAAI;gCAAG;wBACjD;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,KAAK;iCAAK;yBAAE;gBACrE;gBACA,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO;gBACbA,MAAM,OAAO;gBACb,MAAMX,KAAKW,MAAM,EAAE;gBACnBvB,OAAOY,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC7B,KAAK,MAAM4C,QAAQ5C,GAAG,KAAK,CAAE;oBACzBZ,OAAOwD,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;oBAChCxD,OAAOR,MAAMgE,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACd,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;wBAAC;wBAAK;qBAAI;gBAC5E;YACJ;QACJ;QAEA7C,SAAS,2BAA2B;YAChC,SAAS4D,mBAAmBC,aAA0C;gBAClE,OAAOzE,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCACzB,SAASA,EAAE,IAAI,GAAG,KAAK,CAAC;wCACxB,YAAYA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAC/B;4BACJ,GACC,QAAQ,CAAC,OAAOU,CAAAA;gCACbA,EAAE,KAAK,CAAC,OAAO,MAAM,CAACV,CAAAA,IAAM;wCACxB,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;wCACrB,KAAKA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACxB;4BACJ;wBACR;oBACA,QAAQgB;gBACZ;YACJ;YAEA5D,GAAG,kDAAkD;gBACjD,MAAMC,OAAO0D,mBAAmB3C,CAAAA,SAAU;wBACtCA,OAAO,MAAM,CAAC,WAAW;4BACrB,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;4BAC3C,KAAKA,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;oCAASA,EAAE,GAAG,CAAC;iCAAO;wBAC3C;qBACH;gBACD,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClB,IAAIX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACjCC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBACxD;oBACA;iBACH;gBAEDnB,MAAM,WAAW,CAAC;gBAClBX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBAC7BC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAO;gBACpE1C,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAM;YACvE;YAEA5C,GAAG,6EAA6E;gBAC5E,MAAMC,OAAO0D,mBAAmB3C,CAAAA,SAAU;wBACtCA,OAAO,MAAM,CAAC,WAAW;4BACrB,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;wBAE/C;qBACH;gBACD,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClB,MAAMX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAO;gBACpE1C,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAM;YACvE;YAEA5C,GAAG,sDAAsD;gBACrD,MAAMC,OAAO0D,mBAAmB3C,CAAAA,SAAU;wBACtCA,OAAO,MAAM,CAAC,WAAW;4BAAE,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;wBAAC;qBAC1E;gBACD,MAAM3C,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,gBAAgB,EAAE,QAAQ;gBACpCZ,OAAOY,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;YAChC;YAEAd,GAAG,6DAA6D;gBAC5D,MAAMC,OAAO0D,mBAAmB3C,CAAAA,SAAU;wBACtCA,OAAO,MAAM,CAAC,WAAW;4BACrB,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;4BAC3C,SAASA,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAO;wBAChC;qBACH;gBAED,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClB,MAAMX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBACxD;oBACA;iBACH;YACL;YAEA5C,GAAG,oEAAoE;gBACnEE,OAAO,IACHyD,mBAAmB3C,CAAAA,SAAU;4BAACA,OAAO,MAAM,CAAC,WAAWyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAK;yBAAE,GAC5E,OAAO,CAAC;YACd;YAEAzD,GAAG,+DAA+D;gBAC9D,MAAMC,OAAO0D;gBACb,MAAMlC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClB,MAAMX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC9BZ,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAU;gBACvE1C,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAa;YAC9E;QACJ;QAEA7C,SAAS,kBAAkB;YACvB,SAAS8D;gBACL,OAAO1E,WAAW;oBACd,QAAQW,CAAAA,SAAW;4BACf,UAAUA,OACL,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCACzB,SAASA,EAAE,IAAI,GAAG,KAAK,CAAC;wCACxB,YAAYA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAC/B;4BACJ,GACC,QAAQ,CAAC,OAAOU,CAAAA;gCACbA,EAAE,KAAK,CAAC,OAAO,MAAM,CAACV,CAAAA,IAAM;wCACxB,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;wCACrB,KAAKA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACxB;4BACJ;wBACR;oBACA,QAAQ5B,CAAAA,SAAU;4BACdA,OAAO,MAAM,CAAC,YAAY;gCACtB,MAAMyC,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC,WAAW;qCAAc;gCAC3C,KAAKA,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC;wCAASA,EAAE,GAAG,CAAC;qCAAO;4BAC3C;yBACH;gBACL;YACJ;YAEAzD,GAAG,sDAAsD;gBACrD,MAAMC,OAAO4D;gBACb,MAAMpC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,OAAO,CAAC;gBACdA,MAAM,OAAO,CAAC;gBACd,MAAMX,KAAKb,KAAK,KAAK,CAAC,YAAY,EAAE;gBACpCC,OAAOY,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC7BZ,OAAOR,MAAMoB,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBACjE;oBACA;iBACH;gBACD1C,OAAOR,MAAMoB,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAO;gBAC7E1C,OAAOR,MAAMoB,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAM;YAChF;YAEA5C,GAAG,0DAA0D;gBACzD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;gCACtCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCACzB,SAASA,EAAE,IAAI;wCACf,QAAQA,EAAE,IAAI,GAAG,MAAM;oCAC3B;4BACJ;wBACJ;oBACA,QAAQ5B,CAAAA,SAAU;4BACdA,OAAO,MAAM,CAAC,WAAW;gCACrB,MAAMyC,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC,WAAW;qCAAU;4BAC3C;yBACH;gBACL;gBACA,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;gBACzBwB,MAAM,WAAW,CAAC;gBAClB,MAAMX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;gBACnCC,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAU;YAC3E;QACJ;QAEA7C,SAAS,mCAAmC;YACxCC,GAAG,6DAA6D;gBAC5D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;gCACtCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCAAE,SAASA,EAAE,IAAI;oCAAG;4BACrD;wBACJ;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,MAAM,CAAC,WAAW;gCAAE,MAAMyC,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC;qCAAW;4BAAC;yBAAG;gBACnF;gBACA,MAAMzC,SAASf,KAAK,EAAE,CAAC,MAAM;gBAC7BC,OAAOc,OAAO,MAAM,EAAE,IAAI,CAAC;gBAC3B,MAAMY,MAAMlC,MAAMsB,MAAM,CAAC,EAAE;gBAC3Bd,OAAO0B,IAAI,MAAM,CAAC,GAAG,CAACgB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAAC;iBAAU;YAC3D;YAEA5C,GAAG,2EAA2E;gBAC1E,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,MAAM,GACN,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCAAE,SAASA,EAAE,IAAI;oCAAG;4BACrD;wBACR;oBACA,QAAQ5B,CAAAA,SAAU;4BAACA,OAAO,MAAM,CAAC,WAAW;gCAAE,MAAMyC,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC;qCAAW;4BAAC;yBAAG;gBACnF;gBACAvD,OAAOD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;YACrC;QACJ;IACJ;IAEAF,SAAS,+CAA+C;QACpDC,GAAG,sDAAsD;YACrD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,MAAM,CAAC8C,CAAAA,IAAM;gCACV,QAAQA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACvB,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACrB,KAAKA,EAAE,IAAI,GAAG,KAAK,CAAC;4BACxB,IACC,MAAM,CAACa,CAAAA,IAAK;gCAACA,EAAE,GAAG,CAAC;gCAAWA,EAAE,GAAG,CAAC,QAAQ;6BAAO;oBAC5D;YACJ;YACA,MAAM3C,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YACnCC,OAAOY,GAAG,MAAM,CAAC,GAAG,CAACnB,CAAAA,OAAQD,MAAMC,MAAM,MAAM,CAAC,GAAG,CAACiD,CAAAA,IAAKA,EAAE,IAAI,IAAI,OAAO,CAAC;gBACvE;oBAAC;iBAAS;gBACV;oBAAC;oBAAQ;iBAAM;aAClB;QACL;QAEA5C,GAAG,wCAAwC;YACvC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,IAAI,GACJ,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,MAAM,GAAG,KAAK,CAAC;gCACxB,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC;4BAC1B,IACC,MAAM,CAACa,CAAAA,IAAK;gCAACA,EAAE,GAAG,CAAC,SAAS;6BAAS;oBAC9C;YACJ;YACAxD,KAAK,OAAO,CAAC;gBACT,OAAO;oBACH;wBAAE,OAAO;wBAAG,OAAO;oBAAI;oBACvB;wBAAE,OAAO;wBAAG,OAAO;oBAAI;iBAC1B;YACL;YACA,MAAMa,KAAKb,KAAK,KAAK,CAAC,SAAS,EAAE;YACjCC,OAAOY,GAAG,KAAK,EAAE,YAAY,CAAC;YAC9B,KAAK,MAAM4C,QAAQ5C,GAAG,KAAK,CACvBZ,OAAOwD,KAAK,MAAM,CAAC,GAAG,CAAC/D,CAAAA,OAAQD,MAAMC,MAAM,MAAM,CAAC,GAAG,CAACiD,CAAAA,IAAKA,EAAE,IAAI,IAAI,OAAO,CAAC;gBACzE;oBAAC;oBAAS;iBAAQ;aACrB;QAET;QAEA5C,GAAG,sEAAsE;YACrE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,MAAM,CAAC8C,CAAAA,IAAM;gCACV,UAAUA,EACL,MAAM,GACN,IAAI,GACJ,MAAM,CAACkB,CAAAA,IAAM;wCACV,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC;wCACtB,KAAKA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACxB,IACC,MAAM,CAACL,CAAAA,IAAK;wCAACA,EAAE,GAAG,CAAC,SAAS;qCAAO;gCACxC,MAAMb,EAAE,IAAI,GAAG,KAAK,CAAC;4BACzB,IACC,MAAM,CAACa,CAAAA,IAAK;gCAACA,EAAE,GAAG,CAAC,YAAY;6BAAQ;oBAChD;YACJ;YACAxD,KAAK,OAAO,CAAC;gBAAE,SAAS;oBAAE,UAAU;wBAAC;4BAAE,OAAO;4BAAW,KAAK;wBAAK;qBAAE;oBAAE,MAAM;gBAAG;YAAE;YAElF,MAAM8D,QAAQ9D,KAAK,KAAK,CAAC,WAAW,EAAE;YACtCC,OAAOR,MAAMqE,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACnB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAY;aAAO;YAEnF,MAAMoB,QAAQ/D,KAAK,KAAK,CAAC,oBAAoB,EAAE;YAC/CC,OAAOR,MAAMsE,MAAM,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACpB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBACpE;gBACA;aACH;QACL;QAEA5C,GAAG,8DAA8D;YAC7D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,MAAM,GACN,MAAM,CAAC8C,CAAAA,IAAM;gCACV,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAClB,GAAGA,EAAE,IAAI,GAAG,KAAK,CAAC;4BACtB,IACC,MAAM,CAACa,CAAAA,IAAK;gCAACA,EAAE,GAAG,CAAC,KAAK;6BAAK;oBACtC;gBACA,QAAQzC,CAAAA,SAAU;wBAACA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCAACA,EAAE,GAAG,CAAC;gCAAMA,EAAE,GAAG,CAAC;6BAAK;qBAAE;YAC5E;YACA,MAAM3C,KAAKb,KAAK,KAAK,CAAC,QAAQ,EAAE;YAChCC,OAAOY,GAAG,MAAM,CAAC,GAAG,CAACnB,CAAAA,OAAQD,MAAMC,MAAM,MAAM,CAAC,GAAG,CAACiD,CAAAA,IAAKA,EAAE,IAAI,IAAI,OAAO,CAAC;gBACvE;oBAAC;iBAAI;gBACL;oBAAC;iBAAI;aACR;QACL;QAEA5C,GAAG,6CAA6C;YAC5C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,QAAQwD,CAAAA;4BACdA,EAAE,KAAK,CAAC,QACH,MAAM,CAACV,CAAAA,IAAM;oCACV,SAASA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACxB,YAAYA,EAAE,IAAI,GAAG,KAAK,CAAC;gCAC/B,IACC,MAAM,CAACa,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;wBACrD,GACC,QAAQ,CAAC,OAAOH,CAAAA;4BACbA,EAAE,KAAK,CAAC,OACH,MAAM,CAACV,CAAAA,IAAM;oCACV,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACrB,KAAKA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACxB,IACC,MAAM,CAACa,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,OAAO;iCAAQ;wBAC3C;oBACR;gBACA,QAAQzC,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,WAAW;4BAAE,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;oCAAeA,EAAE,GAAG,CAAC;iCAAW;wBAAC;qBACjF;YACL;YACA,MAAMhC,QAAQxB,KAAK,KAAK,CAAC;YAGzBwB,MAAM,WAAW,CAAC;YAClB,IAAIX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YACjCC,OAAOY,GAAG,MAAM,CAAC,GAAG,CAACnB,CAAAA,OAAQD,MAAMC,MAAM,MAAM,CAAC,GAAG,CAACiD,CAAAA,IAAKA,EAAE,IAAI,IAAI,OAAO,CAAC;gBACvE;oBAAC;iBAAa;gBACd;oBAAC;iBAAU;aACd;YAGDnB,MAAM,WAAW,CAAC;YAClBX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YAC7BC,OAAOY,GAAG,MAAM,CAAC,GAAG,CAACnB,CAAAA,OAAQD,MAAMC,MAAM,MAAM,CAAC,GAAG,CAACiD,CAAAA,IAAKA,EAAE,IAAI,IAAI,OAAO,CAAC;gBACvE;oBAAC;oBAAO;iBAAO;aAClB;QACL;QAEA5C,GAAG,4DAA4D;YAC3DE,OAAO,IACHf,WAAW;oBACP,QAAQW,CAAAA,SAAW;4BACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,QAAQwD,CAAAA;gCACdA,EAAE,MAAM,CAACV,CAAAA,IAAM;wCAAE,SAASA,EAAE,IAAI;oCAAG;4BACvC,GACC,MAAM,CAACa,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAW;wBACvC;gBACJ,IACF,OAAO,CAAC;QACd;IACJ;IAEA1D,SAAS,sCAAsC;QAC3CC,GAAG,yFAAyF;YACxF,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,OAAOA,EAAE,IAAI;gCACb,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACzB,WAAWA,EAAE,IAAI;wCACjB,iBAAiBA,EAAE,IAAI;oCAC3B;4BACJ;oBACJ;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EAAE,GAAG,CAAC;gCACNA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;wCAACA,MAAM,GAAG,CAAC,aAAa;qCAAmB;6BACvE;qBACJ;YACL;YACA,MAAME,SAASjE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACpC,MAAMkE,SAASzE,MAAMwE,OAAO,MAAM,CAAC,EAAE;YACrC,MAAME,QAAQD,OAAO,MAAM,CAAC,EAAE;YAC9BjE,OAAOkE,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YACjClE,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;QAEA5C,GAAG,oCAAoC;YACnC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,GAAGA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC5B,GAAGA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACvB,GAAGA,EAAE,MAAM,GAAG,MAAM,CAACI,CAAAA,IAAM;gDACvB,GAAGA,EAAE,IAAI;gDACT,GAAGA,EAAE,IAAI;4CACb;oCACJ;4BACJ;oBACJ;gBACA,QAAQrD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,KAAKsD,CAAAA,KAAM;gCACrBA,GAAG,MAAM,CAAC,KAAKC,CAAAA,KAAM;wCAACA,GAAG,MAAM,CAAC,KAAKC,CAAAA,KAAM;gDAACA,GAAG,GAAG,CAAC,KAAK;6CAAK;qCAAE;6BAClE;qBACJ;YACL;YACA,MAAMC,MAAMxE,KAAK,KAAK,CAAC,KAAK,EAAE;YAC9B,MAAMyE,MAAMhF,MAAM+E,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAC1C,MAAME,MAAMjF,MAAMgF,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAC1CxE,OAAOyE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAC/BzE,OAAOR,MAAMiF,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC/B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAK;aAAI;QAC3E;QAEA5C,GAAG,qFAAqF;YACpF,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;4BACpCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCACzB,SAASA,EAAE,IAAI;oCACf,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;4CACzB,WAAWA,EAAE,IAAI;4CACjB,iBAAiBA,EAAE,IAAI;wCAC3B;gCACJ;wBACJ;oBACJ;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,SAAS;4BACnB,MAAMyC,CAAAA,IAAK;oCACPA,EAAE,GAAG,CAAC;oCACNA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;4CAACA,MAAM,GAAG,CAAC,aAAa;yCAAmB;iCACvE;wBACL;qBACH;YACL;YACA,MAAMvC,QAAQxB,KAAK,KAAK,CAAC;YACzBwB,MAAM,WAAW,CAAC;YAClB,MAAMX,KAAKb,KAAK,KAAK,CAAC,SAAS,EAAE;YACjC,MAAMkE,SAASzE,MAAMoB,GAAG,MAAM,CAAC,EAAE;YACjC,MAAMsD,QAAQD,OAAO,MAAM,CAAC,EAAE;YAC9BjE,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;QAEA5C,GAAG,yEAAyE;YACxE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,UAAUA,OACL,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,QAAQwD,CAAAA;4BACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCACzB,SAASA,EAAE,IAAI;oCACf,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;4CACzB,WAAWA,EAAE,IAAI;4CACjB,iBAAiBA,EAAE,IAAI;wCAC3B;gCACJ;wBACJ;oBACR;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,YAAY;4BACtB,MAAMyC,CAAAA,IAAK;oCACPA,EAAE,GAAG,CAAC;oCACNA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;4CAACA,MAAM,GAAG,CAAC,aAAa;yCAAmB;iCACvE;wBACL;qBACH;YACL;YACA,MAAMvC,QAAQxB,KAAK,KAAK,CAAC;YACzBwB,MAAM,OAAO,CAAC;YACdA,MAAM,OAAO,CAAC;YACd,MAAMX,KAAKb,KAAK,KAAK,CAAC,YAAY,EAAE;YACpCC,OAAOY,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAC7B,KAAK,MAAM4C,QAAQ5C,GAAG,KAAK,CAAE;gBACzB,MAAMsD,QAAQ1E,MAAMgE,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;gBAC7CxD,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;oBAC3D;oBACA;iBACH;YACL;QACJ;QAEA5C,GAAG,uEAAuE;YACtE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,MAAM,GACN,IAAI,GACJ,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI;gCACb,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACzB,WAAWA,EAAE,IAAI;wCACjB,iBAAiBA,EAAE,IAAI;oCAC3B;4BACJ;oBACR;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EAAE,GAAG,CAAC;gCACNA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;wCAACA,MAAM,GAAG,CAAC,aAAa;qCAAmB;6BACvE;qBACJ;YACL;YACA,MAAMvC,QAAQxB,KAAK,KAAK,CAAC;YACzBwB,MAAM,OAAO;YACb,MAAMX,KAAKb,KAAK,KAAK,CAAC,QAAQ,EAAE;YAChC,MAAMmE,QAAQ1E,MAAMoB,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YACpDZ,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;QAEA5C,GAAG,yFAAyF;YACxF,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,OAAOA,EAAE,IAAI;4BACjB;oBACJ;gBACA,QAAQ5B,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EAAE,GAAG,CAAC;gCACNA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;wCAACA,MAAM,GAAG,CAAC,aAAa;qCAAmB;6BACvE;qBACJ;YACL;YAEA/D,KAAK,KAAK,CAAC,QACN,EAAE,CAAC,UACH,MAAM,CAAC2C,CAAAA,IAAM;oBACV,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;4BACzB,WAAWA,EAAE,IAAI;4BACjB,iBAAiBA,EAAE,IAAI;wBAC3B;gBACJ;YACJ,MAAMC,SAASjE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACpC,MAAMkE,SAASzE,MAAMwE,OAAO,MAAM,CAAC,EAAE;YACrC,MAAME,QAAQD,OAAO,MAAM,CAAC,EAAE;YAC9BjE,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;QAEA5C,GAAG,uDAAuD;YACtD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,OAAOA,EAAE,IAAI;gCACb,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACzB,WAAWA,EAAE,IAAI;wCACjB,iBAAiBA,EAAE,IAAI;oCAC3B;4BACJ;oBACJ;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EACK,IAAI,GACJ,GAAG,CAAC,QAAQpB,CAAAA;oCACTA,IAAI,KAAK,CAAC,QAAQ,MAAM,CAACoB,CAAAA,IAAK;4CAACA,EAAE,GAAG,CAAC;yCAAS;gCAClD,GACC,GAAG,CAAC,UAAUpB,CAAAA;oCACXA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACoB,CAAAA,IAAK;4CACzBA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;oDACrBA,MAAM,GAAG,CAAC,aAAa;iDAC1B;yCACJ;gCACL;6BACP;qBACJ;YACL;YACA,MAAMI,QAAQnE,KAAK,KAAK,CAAC,YAAY,EAAE;YACvCC,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;QAEA5C,GAAG,mEAAmE;YAClE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,OAAOA,EAAE,IAAI;gCACb,MAAMA,EAAE,IAAI;gCACZ,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACzB,WAAWA,EAAE,IAAI;wCACjB,iBAAiBA,EAAE,IAAI;oCAC3B;4BACJ;oBACJ;gBACA,QAAQjD,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWpB,CAAAA;oCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACoB,CAAAA,IAAK;4CAACA,EAAE,GAAG,CAAC;4CAAUA,EAAE,GAAG,CAAC;yCAAQ;gCACpE,GACC,GAAG,CAAC,OAAOpB,CAAAA;oCACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACoB,CAAAA,IAAK;4CACzBA,EAAE,MAAM,CAAC,OAAOO,CAAAA,QAAS;oDACrBA,MAAM,GAAG,CAAC,aAAa;iDAC1B;yCACJ;gCACL;6BACP;qBACJ;YACL;YACA,MAAME,SAASjE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACpCC,OAAOgE,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAClC,MAAMU,OAAOV,OAAO,MAAM,CAAC,EAAE;YAC7BhE,OAAO0E,KAAK,IAAI,EAAE,IAAI,CAAC;YACvB1E,OAAO0E,KAAK,IAAI,CAAC,GAAG,CAACtB,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;gBAAC;gBAAW;aAAM;YAC3D,MAAMf,aAAaqC,KAAK,IAAI,CAAC,EAAE;YAC/B1E,OAAOR,MAAM6C,WAAW,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACK,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;aAAQ;YAC7E1C,OAAOR,MAAM6C,WAAW,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACK,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;aAAO;YAC5E,MAAMH,SAASmC,KAAK,IAAI,CAAC,EAAE;YAC3B,MAAMR,QAAQ1E,MAAM+C,OAAO,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;YAC/CvC,OAAOR,MAAM0E,MAAM,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAACxB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAC3D;gBACA;aACH;QACL;IACJ;IAEA7C,SAAS,4CAA4C;QACjD,SAAS8E;YACL,OAAO1F,WAAW;gBACd,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;4BACtCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCAAE,SAASA,EAAE,IAAI;gCAAG;wBACrD;oBACJ;YACJ;QACJ;QAEA,SAASkC;YACL,OAAO3F,WAAW;gBACd,QAAQW,CAAAA,SAAW;wBACf,QAAQA,OACH,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,QAAQwD,CAAAA;4BACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCAAE,SAASA,EAAE,IAAI;gCAAG;wBACrD,GACC,QAAQ,CAAC,QAAQU,CAAAA;4BACdA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCAAE,MAAMA,EAAE,IAAI;gCAAG;wBAClD;oBACR;YACJ;QACJ;QAEA5C,GAAG,4DAA4D;YAC3D,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCwB,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ6B,CAAAA;gBACxBA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wBAAE,MAAMA,EAAE,IAAI;oBAAG;YAClD;YACA,MAAM9B,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YACnCC,OAAOY,GAAG,kBAAkB,CAAC,GAAG,CAACwC,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;gBAAC;gBAAQ;aAAO;QACzE;QAEAtD,GAAG,iEAAiE;YAChE,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCwB,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO6B,CAAAA;gBACvBA,EAAE,KAAK,CAAC,OACH,MAAM,CAACV,CAAAA,IAAM;wBAAE,MAAMA,EAAE,IAAI;wBAAI,KAAKA,EAAE,IAAI;oBAAG,IAC7C,MAAM,CAACa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC,QAAQ;qBAAO;YAC3C;YACCxD,KAAK,KAAK,CAAC,WAAmB,WAAW,CAAC;YAC3C,MAAMa,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YACnCC,OAAOR,MAAMoB,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC8B,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAQ;aAAM;QAC/E;QAEA5C,GAAG,wCAAwC;YACvC,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCC,OAAO,IACHuB,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ6B,CAAAA;oBACxBA,EAAE,KAAK,CAAC,SAAS,MAAM,CAACV,CAAAA,IAAM;4BAAE,GAAGA,EAAE,IAAI;wBAAG;gBAChD,IACF,OAAO,CAAC;QACd;QAEA5C,GAAG,gDAAgD;YAC/C,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCC,OAAO,IACHuB,MAAM,SAAS,CAAC,GAAG,CAAC,eAAe6B,CAAAA;oBAC/BA,EAAE,KAAK,CAAC,YAAY,MAAM,CAACV,CAAAA,IAAM;4BAAE,GAAGA,EAAE,IAAI;wBAAG;gBACnD,IACF,OAAO,CAAC;QACd;QAEA5C,GAAG,+EAA+E;YAC9E,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCC,OAAO,IACHuB,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO6B,CAAAA;oBACvBA,EAAE,KAAK,CAAC,OAAO,MAAM,CAACV,CAAAA,IAAM;4BAAE,aAAaA,EAAE,IAAI;wBAAG;gBACxD,IACF,OAAO,CAAC;QACd;QAEA5C,GAAG,yDAAyD;YACxD,MAAMC,OAAO6E;YACb,MAAMrD,QAAQxB,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YACtCwB,MAAM,SAAS,CAAC,MAAM,CAAC;YACvB,MAAMX,KAAKb,KAAK,KAAK,CAAC,UAAU,EAAE;YAClCC,OAAOY,GAAG,kBAAkB,CAAC,GAAG,CAACwC,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;gBAAC;aAAO;QACjE;QAEAtD,GAAG,kDAAkD;YACjD,MAAMC,OAAO6E;YACb,MAAMrD,QAAQxB,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM8E,SAAU9E,KAAK,KAAK,CAAC,UAAU,EAAE,CAAoB,kBAAkB,CAAC,MAAM;YACpFC,OAAO,IAAMuB,MAAM,SAAS,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,OAAO;YAC/D,MAAMuD,QAAS/E,KAAK,KAAK,CAAC,UAAU,EAAE,CAAoB,kBAAkB,CAAC,MAAM;YACnFC,OAAO8E,OAAO,IAAI,CAACD;QACvB;QAEA/E,GAAG,iGAAiG;YAChG,MAAMC,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCwB,MAAM,WAAW,CAAC;YAClBvB,OAAOuB,MAAM,gBAAgB,EAAE,IAAI,CAAC;YACpCA,MAAM,SAAS,CAAC,MAAM,CAAC;YACvBvB,OAAOuB,MAAM,gBAAgB,EAAE,QAAQ;YACvCvB,OAAOuB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YACjCvB,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,QAAQ;QACrD;QAEAD,GAAG,+DAA+D;YAC9D,MAAMC,OAAO6E;YACb,MAAMrD,QAAQxB,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YACtCwB,MAAM,OAAO,CAAC,QAAQ;gBAAE,SAAS;YAAK;YACtCA,MAAM,OAAO,CAAC,QAAQ;gBAAE,MAAM;YAAK;YACnCA,MAAM,OAAO,CAAC,QAAQ;gBAAE,SAAS;YAAK;YACtCvB,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAChCA,MAAM,SAAS,CAAC,MAAM,CAAC;YACvBvB,OAAOuB,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAChCvB,OAAOuB,MAAM,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;QAC3C;QAEAzB,GAAG,oEAAoE;YACnE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAAE,GAAGA,EAAE,IAAI;4BAAG;oBACtD;YACJ;YACA,MAAMnB,QAAQxB,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACrCC,OAAO,IACHuB,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK6B,CAAAA;oBACrBA,EAAE,KAAK,CAAC,KAAK,MAAM,CAACV,CAAAA,IAAM;4BAAE,GAAGA,EAAE,IAAI;wBAAG;gBAC5C,IACF,OAAO,CAAC;QACd;QAEA5C,GAAG,uEAAuE;YACtE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAAE,GAAGA,EAAE,IAAI;4BAAG;oBACtD;YACJ;YACA,MAAMnB,QAAQxB,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACrCC,OAAO,IAAMuB,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,OAAO,CAAC;QAC7D;QAEAzB,GAAG,6FAA6F;YAC5F,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,QAAQ,CAAC,QAAQwD,CAAAA;4BACtCA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;oCAAE,SAASA,EAAE,IAAI;oCAAI,YAAYA,EAAE,IAAI;gCAAG;wBAC3E;oBACJ;gBACA,QAAQ5B,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,WAAW;4BACrB,MAAMyC,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC,WAAW;iCAAc;wBAC/C;qBACH;YACL;YACA,MAAMhC,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCwB,MAAM,WAAW,CAAC;YAClB,MAAMwD,WAAWhF,KAAK,KAAK,CAAC,WAAW,EAAE;YACzC,MAAMiF,YAAYxF,MAAMuF,SAAS,MAAM,CAAC,EAAE;YAC1C/E,OAAOgF,UAAU,MAAM,CAAC,GAAG,CAACtC,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAW;aAAa;YAE3EnB,MAAM,SAAS,CAAC,MAAM,CAAC;YACvBA,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ6B,CAAAA;gBACxBA,EAAE,KAAK,CAAC,WAAW,MAAM,CAACV,CAAAA,IAAM;wBAAE,SAASA,EAAE,IAAI;wBAAI,YAAYA,EAAE,IAAI;oBAAG;YAC9E;YACAnB,MAAM,WAAW,CAAC;YAElB,MAAM0D,UAAUlF,KAAK,KAAK,CAAC,WAAW,EAAE;YACxC,MAAMmF,WAAW1F,MAAMyF,QAAQ,MAAM,CAAC,EAAE;YACxCjF,OAAOkF,SAAS,MAAM,CAAC,GAAG,CAACxC,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAW;aAAa;QAC9E;QAEA5C,GAAG,0EAA0E;YACzE,MAAMqF,OAAO3E,GAAG,KAAK,CAACQ,SAAS,QAAQ,kBAAkB,CAAC,KAAO;YACjE,MAAMjB,OAAO4E;YACb,MAAMpD,QAAQxB,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACvCwB,MAAM,SAAS,CAAC,MAAM,CAAC;YACvB,MAAMX,KAAKb,KAAK,KAAK,CAAC,WAAW,EAAE;YACnCC,OAAOY,GAAG,kBAAkB,EAAE,OAAO,CAAC,EAAE;YACxCZ,OAAOmF,MAAM,GAAG,CAAC,gBAAgB;YACjCA,KAAK,WAAW;QACpB;IACJ;IAEAtF,SAAS,2BAA2B;QAChCC,GAAG,yDAAyD;YACxD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,OAAOA,OACF,IAAI,GACJ,YAAY,CACT,CAAC,EAAEG,IAAI,EAAE,GAAKA,AAAkC,UAAlCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IACzC;oBAEZ;YACJ;YAGAC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC7CC,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;YAGnCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC7CC,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3D;QAEAD,GAAG,qDAAqD;YACpD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,OAAOA,OACF,IAAI,GACJ,YAAY,CACT,CAAC,EAAEG,IAAI,EAAE,GAAKA,AAAkC,UAAlCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IACzC,mBAEH,YAAY,CACT,CAAC,EAAEA,IAAI,EAAE,GAAKA,AAAkC,SAAlCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IACzC;oBAEZ;YACJ;YAEAA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5B,MAAMA,KAAK,QAAQ;YACnBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAGvDA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5B,MAAMA,KAAK,QAAQ;YACnBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3D;QAEAD,GAAG,2DAA2D;YAC1D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,IAAI,GACJ,QAAQ,CAAC,mBACT,YAAY,CAAC,IAAM,MAAM;oBAClC;YACJ;YAEA,MAAMG,KAAK,QAAQ;YACnBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC7CC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3D;QAEAD,GAAG,gEAAgE;YAC/D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,OAAOA,OACF,IAAI,GACJ,YAAY,CACT,CAAC,EAAEG,IAAI,EAAE,GAAKA,AAAkC,UAAlCA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IACzC;oBAEZ;YACJ;YAEAA,KAAK,KAAK,CAAC,SAAS,eAAe,CAC/B,CAAC,EAAEA,IAAI,EAAE,GAAKA,AAAmC,SAAnCA,KAAK,KAAK,CAAC,SAAS,QAAQ,IAC1C;YAIJC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YAG7CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7B,MAAMA,KAAK,QAAQ;YACnBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3D;IACJ;IAEAF,SAAS,4CAA4C;QACjDC,GAAG,mDAAmD;YAClD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,MAAMA,OACD,IAAI,GACJ,QAAQ,CACL,CAAC,EAAEG,IAAI,EAAE,GACL,GAAGA,KAAK,KAAK,CAAC,SAAS,QAAQ,GAAG,CAAC,EAAEA,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI;oBAEpF;YACJ;YAEAC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAC3CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,2DAA2D;YAC1D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAChC,SAASA,OAAO,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAEG,IAAI,EAAE,GAAKA,KAAK,KAAK,CAAC,OAAO,QAAQ;oBAC5E;YACJ;YAGAC,OAAOD,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;YAG/CA,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAClCC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;QAClD;QAEAD,GAAG,6DAA6D;YAC5D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAChC,SAASA,OACJ,IAAI,GACJ,kBAAkB,CAAC,CAAC,EAAEG,IAAI,EAAE,GAAK,CAAC,QAAQ,EAAEA,KAAK,KAAK,CAAC,OAAO,QAAQ,IAAI;oBACnF;YACJ;YAEAC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;YAE9CA,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAClCC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;YAG9CA,KAAK,KAAK,CAAC,OAAO,QAAQ,CAAC;YAC3BC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;QAClD;QAEAD,GAAG,mDAAmD;YAClD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAChC,SAASA,OACJ,IAAI,GACJ,QAAQ,CAAC,6BACT,QAAQ,CAAC,CAAC,EAAEG,IAAI,EAAE,GAAKA,KAAK,KAAK,CAAC,OAAO,QAAQ;oBAC1D;YACJ;YAEA,MAAMG,QAAQ,MAAMH,KAAK,QAAQ;YACjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAEzDA,KAAK,KAAK,CAAC,OAAO,QAAQ,CAAC;YAC3BC,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;QACvC;QAEAD,GAAG,8EAA8E;YAC7E,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC7B,SAASA,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE3C,IAAI,EAAE,GAC1CmB,OAAOnB,KAAK,KAAK,CAAC,eAAe,QAAQ,MAAM,IAC1C,WAAW,GACX,OAAO,CAAC,QAAQ;4BAE7B;oBACR;YACJ;YAEAC,OAAOD,KAAK,KAAK,CAAC,iBAAiB,QAAQ,IAAI,IAAI,CAAC;YAEpDA,KAAK,KAAK,CAAC,eAAe,QAAQ,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,iBAAiB,QAAQ,IAAI,IAAI,CAAC;YAGpDA,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;YACxCC,OAAOD,KAAK,KAAK,CAAC,iBAAiB,QAAQ,IAAI,IAAI,CAAC;YAGpDA,KAAK,KAAK,CAAC,eAAe,QAAQ,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,iBAAiB,QAAQ,IAAI,IAAI,CAAC;QACxD;QAEAD,GAAG,mEAAmE;YAClE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI;gCACb,SAASA,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE3C,IAAI,EAAE,GAC1CmB,OAAOnB,KAAK,KAAK,CAAC,iBAAiB,QAAQ,MAAM,IAC5C,WAAW,GACX,OAAO,CAAC,QAAQ;4BAE7B;oBACR;YACJ;YAGAC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAGtDA,KAAK,OAAO,CAAC;gBAAE,SAAS;oBAAE,OAAO;gBAAW;YAAE;YAC9CC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAGtDA,KAAK,KAAK,CAAC,iBAAiB,QAAQ,CAAC;YACrCC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAGtDA,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;YAC1CC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAEtDA,KAAK,KAAK,CAAC,iBAAiB,QAAQ,CAAC;YACrCC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;QAC1D;QAEAD,GAAG,gFAAgF;YAC/E,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC7B,MAAMA,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAEnB,KAAK,EAAE,GACxCL,OAAOK,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ,MAAM,IAC9C,WAAW,GACX,OAAO,CAAC,QAAQ;4BAE7B;oBACR;YACJ;YAEAvB,OAAOD,KAAK,KAAK,CAAC,cAAc,QAAQ,IAAI,IAAI,CAAC;YAEjDA,KAAK,KAAK,CAAC,eAAe,QAAQ,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,cAAc,QAAQ,IAAI,IAAI,CAAC;QACrD;QAEAD,GAAG,4DAA4D;YAC3D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,SAASA,EACJ,IAAI,GACJ,YAAY,CAAC,WACb,kBAAkB,CAAC,CAAC,EAAEnB,KAAK,EAAE;oCAC1B,MAAM6D,SAAS7D,MACV,MAAM,GACN,KAAK,CAAC,mBACN,QAAQ;oCACb,OAAO6D,AAAW,aAAXA,SACD,mBACA,CAAC,QAAQ,EAAEA,QAAQ;gCAC7B;gCACJ,UAAU1C,EACL,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAACoB,CAAAA,QAAU;wCACd,QAAQA,MAAM,IAAI,GAAG,YAAY,CAAC;oCACtC;4BACR;oBACR;YACJ;YAEA9D,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;YAEtDA,KAAK,KAAK,CAAC,2BAA2B,QAAQ,CAAC;YAC/CC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,QAAQ,IAAI,IAAI,CAAC;QAC1D;QAEAD,GAAG,qEAAqE;YACpE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAChC,SAASA,OAAO,IAAI,GAAG,YAAY,CAAC;oBACxC;YACJ;YAEAG,KAAK,KAAK,CAAC,WAAW,WAAW,CAAC,CAAC,EAAEA,IAAI,EAAE,GAAK,CAAC,KAAK,EAAEA,KAAK,KAAK,CAAC,OAAO,QAAQ,IAAI;YAEtFC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;YAC9CA,KAAK,KAAK,CAAC,OAAO,QAAQ,CAAC;YAC3BC,OAAOD,KAAK,KAAK,CAAC,WAAW,QAAQ,IAAI,IAAI,CAAC;QAClD;IACJ;IAEAF,SAAS,iDAAiD;QACtDC,GAAG,4DAA4D;YAC3D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAClC,WAAWA,EAAE,IAAI,GAAG,KAAK,CAAC;4BAC9B;oBACJ;YACJ;YAEA3C,KAAK,KAAK,CAAC,WACN,EAAE,CAAC,UACH,MAAM,CAAC2C,CAAAA,IAAM;oBACV,UAAUA,EAAE,IAAI,GAAG,KAAK,CAAC;gBAC7B;YAEJ3C,KAAK,KAAK,CAAC,qBAAqB,QAAQ,CAAC;YACzCA,KAAK,KAAK,CAAC,oBAAoB,QAAQ,CAAC;YACxCC,OAAOD,KAAK,OAAO,IAAI,OAAO,CAAC;gBAC3B,SAAS;oBAAE,WAAW;oBAAO,UAAU;gBAAW;YACtD;QACJ;QAEAD,GAAG,gDAAgD;YAC/C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAClC,WAAWA,EAAE,IAAI,GAAG,KAAK,CAAC;4BAC9B;oBACJ;YACJ;YAEA3C,KAAK,KAAK,CAAC,WACN,EAAE,CAAC,UACH,MAAM,CAAC2C,CAAAA,IAAM;oBACV,WAAWA,EAAE,IAAI,GAAG,KAAK,CAAC;gBAC9B;YAEJ,MAAM2C,UAAUtF,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACzCC,OAAOqF,QAAQ,QAAQ,CAAC,GAAG,CAAC,cAAc,OAAO,OAAO,IAAI,CAAC;QACjE;QAEAvF,GAAG,mDAAmD;YAClD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAClC,WAAWA,EAAE,IAAI;gCACjB,UAAUA,EAAE,IAAI;4BACpB;oBACJ;YACJ;YAEA3C,KAAK,KAAK,CAAC,WACN,EAAE,CAAC,UACH,MAAM,CAAC,IAAO;oBACX,UAAUK;gBACd;YAEJ,MAAMiF,UAAUtF,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACzCC,OAAOqF,QAAQ,QAAQ,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC;YAC9CrF,OAAOqF,QAAQ,QAAQ,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC;QACnD;QAEAvF,GAAG,oDAAoD;YACnD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,UAAUA,OACL,MAAM,GACN,IAAI,GACJ,MAAM,CAAC8C,CAAAA,IAAM;gCACV,MAAMA,EAAE,IAAI;4BAChB;oBACR;YACJ;YAEA,MAAM4C,WAAWvF,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3CuF,SAAS,OAAO,CAAC;gBAAE,MAAM;YAAM;YAC/BA,SAAS,OAAO,CAAC;gBAAE,MAAM;YAAQ;YAEjCA,SAAS,MAAM,CAAC5C,CAAAA,IAAM;oBAClB,OAAOA,EAAE,IAAI;gBACjB;YAGA1C,OAAOsF,SAAS,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC;YACrDtF,OAAOsF,SAAS,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC;YAGrDA,SAAS,OAAO,CAAC;gBAAE,MAAM;gBAAS,OAAO;YAAoB;YAC7DtF,OAAOsF,SAAS,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,YAAY,IAAI,CAAC;QACrE;QAEAxF,GAAG,kDAAkD;YACjD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,QAAQ,CAAC,KAAKwD,CAAAA;4BACjCA,EAAE,KAAK,CAAC,KAAK,MAAM,CAACV,CAAAA,IAAM;oCAAE,GAAGA,EAAE,IAAI;gCAAG;wBAC5C;oBACJ;YACJ;YAEA1C,OAAO;gBACHD,KAAK,KAAK,CAAC,SACN,EAAE,CAAC,UACH,MAAM,CAAC2C,CAAAA,IAAM;wBAAE,GAAGA,EAAE,IAAI;oBAAG;YACpC,GAAG,OAAO,CAAC;QACf;IACJ;IAEA7C,SAAS,6BAA6B;QAClCC,GAAG,2DAA2D;YAC1D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,UAAUA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACrC,SAASA,OAAO,IAAI,GAAG,YAAY,CAAC;oBACxC;YACJ;YAEAG,KAAK,OAAO,CACRI,EAAAA,MACW,CAAC;gBACJ,UAAUA,EAAE,MAAM;gBAClB,SAASA,EAAE,MAAM;YACrB,GACC,MAAM,CAACoF,CAAAA,IAAKA,EAAE,QAAQ,KAAKA,EAAE,OAAO,EAAE;gBACnC,SAAS;gBACT,MAAM;oBAAC;iBAAU;YACrB;YAGR,MAAMrF,QAAQ,MAAMH,KAAK,QAAQ;YACjCC,OAAOE,OAAO,IAAI,CAAC;YACnBF,OAAOD,KAAK,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,AAAc,2BAAdA,EAAE,OAAO,GAA8B,IAAI,CAAC;YAEzE5C,OAAOD,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YACzDC,OAAOD,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC7D;QAEAD,GAAG,0DAA0D;YACzD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,YAAY,CAAC;oBACpC;YACJ;YAEAG,KAAK,OAAO,CAAC2C,CAAAA;gBACT,IAAI8C,OAAO9C,EAAE,KAAK,CAAC,OAAO,QAAQ,MAAM,IACpC,OAAO;oBAAC;wBAAE,MAAM;wBAAO,SAAS;oBAAc;iBAAE;gBAEpD,OAAO,EAAE;YACb;YAEA1C,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAErDA,KAAK,KAAK,CAAC,OAAO,QAAQ,CAAC;YAC3BC,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;QACvC;QAEAD,GAAG,mCAAmC;YAClC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;oBACrC;YACJ;YAEAG,KAAK,OAAO,CAAC,OAAM2C;gBACf,MAAM+C,QAAQ,OAAO;gBACrB,IAAI/C,AAA+B,YAA/BA,EAAE,KAAK,CAAC,QAAQ,QAAQ,IACxB,OAAO;oBAAC;wBAAE,MAAM;wBAAQ,SAAS;oBAAgB;iBAAE;gBAEvD,OAAO,EAAE;YACb;YAEA1C,OAAO,MAAMD,KAAK,QAAQ,IAAI,IAAI,CAAC;YACnCC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;QAC1D;IACJ;IAEAF,SAAS,+BAA+B;QACpCC,GAAG,gCAAgC;YAC/B,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,GAAGA,OAAO,IAAI;wBACd,GAAGA,OAAO,IAAI;wBACd,GAAGA,OAAO,IAAI;oBAClB;gBACA,QAAQkB,CAAAA,SAAU;wBAACA,OAAO,GAAG,CAAC;wBAAMA,OAAO,GAAG,CAAC;wBAAMA,OAAO,GAAG,CAAC;qBAAK;YACzE;YAEAf,KAAK,SAAS,CAACe,CAAAA,SAAU;oBAACA,OAAO,GAAG,CAAC,KAAK;iBAAK;YAE/C,MAAMA,SAASf,KAAK,EAAE,CAAC,MAAM;YAC7BC,OAAOc,QAAQ,YAAY,CAAC;YAC5B,MAAMY,MAAMlC,MAAMsB,MAAM,CAAC,EAAE;YAC3Bd,OAAO0B,IAAI,MAAM,CAAC,GAAG,CAACgB,CAAAA,IAAKA,EAAE,IAAI,GAAG,OAAO,CAAC;gBAAC;gBAAK;aAAI;QAC1D;QAEA5C,GAAG,0DAA0D;YACzD,MAAMqF,OAAO3E,GAAG,KAAK,CAACQ,SAAS,QAAQ,kBAAkB,CAAC,KAAO;YACjE,MAAMjB,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,GAAGA,OAAO,IAAI;wBACd,GAAGA,OAAO,IAAI;oBAClB;YACJ;YAEAuF,KAAK,SAAS;YACdpF,KAAK,SAAS,CAACe,CAAAA,SAAU;oBAACA,OAAO,GAAG,CAAC;iBAAK;YAE1Cd,OAAOmF,MAAM,oBAAoB,CAC7BnF,OAAO,gBAAgB,CAAC;YAE5BmF,KAAK,WAAW;QACpB;IACJ;IAEAtF,SAAS,iCAAiC;QACtCA,SAAS,uBAAuB;YAC5BC,GAAG,6BAA6B;gBAC5B,MAAMC,OAAOJ;gBACbK,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;YACnD;YAEAD,GAAG,+CAA+C;gBAC9C,IAAI4F;gBACJ,MAAM3F,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,MAAM,CACvBO,EAAE,MAAM,GAAG,MAAM,CAAC;gCACd,MAAM,IAAIsF,QAAcE,CAAAA;oCACpBD,oBAAoBC;gCACxB;gCACA,OAAO;4BACX;wBAER;gBACJ;gBACA5F,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAE7B,MAAM6F,UAAU7F,KAAK,QAAQ;gBAE7B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;gBAE/C2F;gBACA,MAAME;gBACN5F,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;YACnD;YAEAD,GAAG,8CAA8C;gBAC7C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,QAAQ;wBAChC;gBACJ;gBACAG,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,QAAQ;gBACnBC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;YAClD;QACJ;QAEAF,SAAS,kBAAkB;YACvBC,GAAG,6BAA6B;gBAC5B,MAAMC,OAAOJ;gBACbK,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;YAChC;YAEAD,GAAG,mCAAmC;gBAClC,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,QAAQ;gBACnBC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;YAChC;YAEAD,GAAG,0CAA0C;gBACzC,MAAMC,OAAOJ;gBACb,MAAMI,KAAK,QAAQ;gBACnBC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;YAChC;YAEAD,GAAG,sCAAsC;gBACrC,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,QAAQ;gBACnBC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;gBAE5BA,KAAK,OAAO,CAAC;oBAAE,OAAO;oBAAO,MAAM;gBAAO;gBAC1CC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;YAChC;YAEAD,GAAG,oCAAoC;gBACnC,MAAMC,OAAOJ;gBACbI,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,QAAQ;gBACnBC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;gBAE5BA,KAAK,KAAK;gBACVC,OAAOD,KAAK,SAAS,EAAE,IAAI,CAAC;YAChC;QACJ;QAEAF,SAAS,iCAAiC;YACtCC,GAAG,mDAAmD;gBAClD,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OAAO,IAAI,GAAG,QAAQ,CAAC;wBAClC;gBACJ;gBACAG,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM;gBAC7B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ;YAC9D;YAEAD,GAAG,8CAA8C;gBAC7C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,OAAOA,OACF,IAAI,GACJ,QAAQ,CAAC,YACT,MAAM,CAACO,EAAE,MAAM,GAAG,KAAK,CAAC;wBACjC;gBACJ;gBAEAJ,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7B,MAAMA,KAAK,MAAM;gBACjBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;gBAGvDA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7BA,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM;gBAC7B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC3D;YAEAD,GAAG,4DAA4D;gBAC3D,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,QAAQ,CAAC;wBACjC;gBACJ;gBAEAG,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,MAAM;gBACjBC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;gBAGtDA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5BA,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC5B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;gBACtDC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1D;QACJ;QAEAF,SAAS,0BAA0B;YAC/BC,GAAG,yDAAyD;gBACxD,MAAMgG,YAAYtF,GAAG,EAAE,GAAG,eAAe,CAAC;gBAC1C,MAAMT,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CAACO,EAAE,MAAM,GAAG,MAAM,CAAC2F,WAAW;wBAC5D;gBACJ;gBAEA/F,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,MAAM;gBACjBC,OAAO8F,WAAW,qBAAqB,CAAC;gBAGxC/F,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC5B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAO8F,WAAW,qBAAqB,CAAC;YAC5C;YAEAhG,GAAG,mDAAmD;gBAClD,MAAMgG,YAAYtF,GAAG,EAAE,GAAG,eAAe,CAAC;gBAC1C,MAAMT,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CAACO,EAAE,MAAM,GAAG,MAAM,CAAC2F,WAAW;wBAC5D;gBACJ;gBAEA/F,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,MAAM;gBACjBC,OAAO8F,WAAW,qBAAqB,CAAC;gBAGxC/F,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5BA,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC5B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAO8F,WAAW,qBAAqB,CAAC;YAC5C;YAEAhG,GAAG,kDAAkD;gBACjD,MAAMgG,YAAYtF,GAAG,EAAE,GAAG,eAAe,CAAC;gBAC1C,MAAMT,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CAACO,EAAE,MAAM,GAAG,MAAM,CAAC2F,WAAW;wBAC5D;gBACJ;gBAEA/F,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,QAAQ;gBACnBC,OAAO8F,WAAW,qBAAqB,CAAC;gBAGxC,MAAM/F,KAAK,QAAQ;gBACnBC,OAAO8F,WAAW,qBAAqB,CAAC;YAC5C;YAEAhG,GAAG,2CAA2C;gBAC1C,MAAMgG,YAAYtF,GAAG,EAAE,GAAG,eAAe,CAAC;gBAC1C,MAAMT,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CAACO,EAAE,MAAM,GAAG,MAAM,CAAC2F,WAAW;wBAC5D;gBACJ;gBAEA/F,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMA,KAAK,MAAM;gBACjBC,OAAO8F,WAAW,qBAAqB,CAAC;gBAGxC/F,KAAK,KAAK,CAAC,QAAQ,eAAe;gBAGlCA,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC5B,MAAM,IAAI0F,QAAQE,CAAAA,IAAKE,WAAWF,GAAG;gBACrC3F,OAAO8F,WAAW,qBAAqB,CAAC;YAC5C;QACJ;QAEAjG,SAAS,kCAAkC;YACvCC,GAAG,0CAA0C;gBACzC,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CACtBO,EAAE,MAAM,GAAG,MAAM,CAAC,OAAMc,QACbA,AAAU,YAAVA,OACR;wBAEX;gBACJ;gBAEAlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMY,SAAS,MAAMZ,KAAK,MAAM;gBAChCC,OAAOW,QAAQ,IAAI,CAAC;gBACpBX,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;gBACtDC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1D;YAEAD,GAAG,6CAA6C;gBAC5C,MAAMC,OAAOd,WAAW;oBACpB,QAAQW,CAAAA,SAAW;4BACf,MAAMA,OAAO,IAAI,GAAG,MAAM,CACtBO,EAAE,MAAM,GAAG,MAAM,CAAC,OAAMc,QACbA,AAAU,YAAVA,OACR;wBAEX;gBACJ;gBAEAlB,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC5B,MAAMY,SAAS,MAAMZ,KAAK,MAAM;gBAChCC,OAAOW,QAAQ,OAAO,CAAC;oBAAE,MAAM;gBAAY;gBAC3CX,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1D;QACJ;IACJ;IAEAF,SAAS,kBAAkB;QACvBC,GAAG,gEAAgE;YAC/D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,KAAK,CAAC;oBACjC;YACJ;YAEAG,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QAChD;QAEAD,GAAG,6DAA6D;YAC5D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,KAAK,CAAC;oBACjC;YACJ;YAEAG,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAE5CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAE5CA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QAChD;QAEAD,GAAG,qDAAqD;YACpD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OACD,MAAM,GACN,KAAK,CAAC,QACN,OAAO,CAAC;4BACL;gCAAE,OAAO;gCAAU,OAAO;4BAAI;4BAC9B;gCAAE,OAAO;gCAAU,OAAO;4BAAI;yBACjC;oBACT;YACJ;YAEAG,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAC3CC,OAAO,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QACtD;QAEAD,GAAG,2DAA2D;YAC1D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,QAAQA,OAAO,OAAO,GAAG,KAAK,CAAC;oBACnC;YACJ;YAEAG,KAAK,KAAK,CAAC,UAAU,QAAQ,CAAC;YAC9BC,OAAOD,KAAK,KAAK,CAAC,UAAU,QAAQ,IAAI,IAAI,CAAC;YAE7CA,KAAK,KAAK,CAAC,UAAU,QAAQ,CAAC;YAC9BC,OAAOD,KAAK,KAAK,CAAC,UAAU,QAAQ,IAAI,IAAI,CAAC;QACjD;QAEAD,GAAG,+DAA+D;YAC9D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,MAAM,GAAG,KAAK,CAAC;oBACjC;YACJ;YAEAG,KAAK,OAAO,CAAC;gBAAE,OAAO;YAAK;YAC3BC,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;YAC5CC,OAAO,OAAOD,KAAK,KAAK,CAAC,SAAS,QAAQ,IAAI,IAAI,CAAC;QACvD;QAEAD,GAAG,sCAAsC;YACrC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;YACJ;YAEAG,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;YAE3CA,KAAK,KAAK,CAAC,QAAQ,QAAQ,CAAC;YAC5BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,QAAQ,IAAI,IAAI,CAAC;QAC/C;QAEAD,GAAG,iDAAiD;YAChD,MAAMiG,MAAiB,EAAE;YACzB,MAAMhG,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,KAAK,CAAC,SACN,YAAY,CAACqB,CAAAA;4BACV8E,IAAI,IAAI,CAAC9E;4BACT,OAAOA;wBACX;oBACR;YACJ;YAEAlB,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAO+F,KAAK,OAAO,CAAC;gBAAC;aAAE;QAC3B;IACJ;IAEAlG,SAAS,cAAc;QACnBC,GAAG,iDAAiD;YAChD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;YACJ;YAEAG,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YACnDC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;QACtD;QAEAD,GAAG,mCAAmC;YAClC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBACA,QAAQkB,CAAAA,SAAU;wBACdA,OACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWqB,CAAAA;4BACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACoB,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAS;wBACrD,GACC,GAAG,CAAC,OAAOpB,CAAAA;4BACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACoB,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAQ;wBAChD;qBACP;YACL;YAGAvD,OAAQD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAS,WAAW,EAAE,IAAI,CAAC;YAEpDA,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YAClDC,OAAQD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAS,WAAW,EAAE,IAAI,CAAC;QACxD;QAEAD,GAAG,oDAAoD;YACnD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC;gCACtB,WAAWA,EAAE,IAAI,GAAG,KAAK,CAAC;4BAC9B;oBACJ;gBACA,QAAQ5B,CAAAA,SAAU;wBACdA,OAAO,MAAM,CAAC,QAAQyC,CAAAA,IAAK;gCACvBA,EACK,IAAI,CAAC,YACL,GAAG,CAAC,WAAWpB,CAAAA;oCACZA,IAAI,KAAK,CAAC,WAAW,MAAM,CAACoB,CAAAA,IAAK;4CAACA,EAAE,GAAG,CAAC;yCAAS;gCACrD,GACC,GAAG,CAAC,OAAOpB,CAAAA;oCACRA,IAAI,KAAK,CAAC,OAAO,MAAM,CAACoB,CAAAA,IAAK;4CAACA,EAAE,GAAG,CAAC;yCAAa;gCACrD;6BACP;qBACJ;YACL;YAEAxD,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;QAChE;QAEAD,GAAG,yDAAyD;YACxD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;YACJ;YAEAG,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YAEnDA,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YACnDC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;QACtD;QAEAD,GAAG,8DAA8D;YAC7D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC/B;YACJ;YAEAG,KAAK,UAAU,CAAC;YAChBC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YAEnDA,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,iBAAiB;YACxCC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;QACvD;QAEAD,GAAG,qCAAqC;YACpC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC/B;YACJ;YAEAI,OAAO,IAAMD,KAAK,UAAU,CAAC,gBAAgB,GAAG,CAAC,OAAO;QAC5D;QAEAD,GAAG,yDAAyD;YACxD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAC/B,KAAKA,EAAE,MAAM,GAAG,MAAM,CAACqB,CAAAA,IAAM;wCACzB,WAAWA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAC9B;4BACJ;oBACJ;YACJ;YAEA,MAAMiC,OAAOjG,KAAK,KAAK,CAAC;YACxBC,OAAOgG,KAAK,aAAa,EAAE,IAAI,CAAC;QACpC;QAEAlG,GAAG,oDAAoD;YACnD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC;wBAC3B,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B;gBACA,QAAQkB,CAAAA,SAAU;wBACdA,OACK,IAAI,CAAC,QACL,GAAG,CAAC,MAAMqB,CAAAA;4BACPA,IAAI,KAAK,CAAC,MAAM,MAAM,CAACoB,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAS;wBAChD,GACC,GAAG,CAAC,MAAMpB,CAAAA;4BACPA,IAAI,KAAK,CAAC,MAAM,MAAM,CAACoB,CAAAA,IAAK;oCAACA,EAAE,GAAG,CAAC;iCAAQ;wBAC/C;qBACP;YACL;YAEAxD,KAAK,KAAK,CAAC,QAAQ,KAAK;YACxBC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;YAClDC,OAAQD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAS,WAAW,EAAE,IAAI,CAAC;QACxD;IACJ;IAEAF,SAAS,uCAAuC;QAC5CC,GAAG,iCAAiC;YAChC,MAAMC,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EAAE,IAAI,GAAG,IAAI;oBACvB;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEA,MAAM3C,KAAKb,KAAK,KAAK,CAAC,QAAQ,EAAE;YAChCC,OAAOY,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE;YAE3BA,GAAG,OAAO,CAAC;YACXZ,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAC;aAAQ;QACzD;QAEAD,GAAG,yDAAyD;YACxD,MAAMC,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EAAE,IAAI,GAAG,IAAI;oBACvB;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEAxD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO;YAC7BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAC;aAAK;QACtD;QAEAD,GAAG,sCAAsC;YACrC,MAAMC,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EAAE,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;4BAAC;4BAAK;yBAAI;oBACjD;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEAxD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;YAC9BC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAC;gBAAK;gBAAK;aAAI;QAC/D;QAEAD,GAAG,+BAA+B;YAC9B,MAAMC,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EAAE,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;4BAAC;4BAAK;4BAAK;yBAAI;oBACtD;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEAxD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YACjCC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAC;gBAAK;aAAI;QAC1D;QAEAD,GAAG,6CAA6C;YAC5C,MAAMC,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EAAE,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;4BAAC;4BAAK;4BAAK;yBAAI;oBACtD;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEAxD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YACjCC,OAAOD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAC;gBAAK;aAAI;QAC1D;QAEAD,GAAG,+CAA+C;YAC9C,MAAMiG,MAAiB,EAAE;YACzB,MAAMhG,OAAOd,WAAW;gBACpB,QAAQyD,CAAAA,IAAM;wBACV,MAAMA,EACD,IAAI,GACJ,IAAI,GACJ,YAAY,CAAC;4BAAC;yBAAI,EAClB,YAAY,CAAC,CAACzB,OAAOgF;4BAClBF,IAAI,IAAI,CAAC9E;4BACT,OAAOA;wBACX;oBACR;gBACA,QAAQsC,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAQ;YAChC;YAEAxD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;YAC9BA,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YACjCC,OAAO+F,KAAK,OAAO,CAAC;gBAAC;oBAAC;oBAAK;iBAAI;gBAAE;oBAAC;iBAAI;aAAC;QAC3C;IACJ;IAEAlG,SAAS,iBAAiB;QACtBC,GAAG,oEAAoE;YACnE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,aAAaA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACxC,OAAOA,OAAO,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEG,IAAI,EAAE,GAAM;gCACxC,OAAOA,KAAK,KAAK,CAAC,SAAS,QAAQ;gCACnC,aAAaA,KAAK,KAAK,CAAC,eAAe,QAAQ;4BACnD;oBACJ;YACJ;YAEAC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3C,OAAO;gBACP,aAAa;YACjB;QACJ;QAEAD,GAAG,gEAAgE;YAC/D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,OAAOA,OAAO,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE2B,KAAK,EAAE,GAAM;gCACzC,OAAOA,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;4BACjD;oBACJ;YACJ;YAEAvB,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3C,OAAO;YACX;QACJ;QAEAD,GAAG,8DAA8D;YAC7D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,OAAOA,OAAO,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEG,IAAI,EAAE,GAAM;gCACxC,OAAOA,KAAK,KAAK,CAAC,SAAS,QAAQ;4BACvC;oBACJ;YACJ;YAEAC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAAE,OAAO;YAAW;YAEnEA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAAE,OAAO;YAAU;QACtE;QAEAD,GAAG,kEAAkE;YACjE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI;oBACtB;YACJ;YAEAI,OAAOD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD;QAEAD,GAAG,+DAA+D;YAC9D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,UAAUA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCACnC,OAAOA,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE3C,IAAI,EAAE,GAAM;wCACnC,OAAOA,KAAK,KAAK,CAAC,SAAS,QAAQ;oCACvC;4BACJ;oBACJ;gBACA,QAAQwD,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;wBAAUA,EAAE,GAAG,CAAC;qBAAY;YACpD;YAEAvD,OAAOD,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACpD,OAAO;YACX;YAEAA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACpD,OAAO;YACX;QACJ;QAEAD,GAAG,0DAA0D;YACzD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCAClC,OAAOA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC7B,OAAOA,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEnB,KAAK,EAAE,GAAM;wCACpC,OAAOA,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;oCACjD;4BACJ;oBACJ;gBACA,QAAQgC,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAW;YACnC;YAEAvD,OAAOD,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACnD,OAAO;YACX;QACJ;QAEAD,GAAG,2DAA2D;YAC1D,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,YAAY,CAAC;wBAClC,UAAUA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCACnC,QAAQA,EAAE,MAAM,GAAG,MAAM,CAACoB,CAAAA,QAAU;wCAChC,OAAOA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEvC,KAAK,EAAE,GAAM;gDACxC,OAAOA,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;4CACnE;oCACJ;4BACJ;oBACJ;gBACA,QAAQgC,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;wBAAUA,EAAE,GAAG,CAAC;qBAAY;YACpD;YAEAvD,OAAOD,KAAK,KAAK,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3D,OAAO;YACX;YAEAA,KAAK,KAAK,CAAC,SAAS,QAAQ,CAAC;YAC7BC,OAAOD,KAAK,KAAK,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3D,OAAO;YACX;QACJ;QAEAD,GAAG,oDAAoD;YACnD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,UAAUA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCACnC,OAAOA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC7B,QAAQA,EAAE,MAAM,GAAG,MAAM,CAACoB,CAAAA,QAAU;wCAChC,OAAOA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEvC,KAAK,EAAE,GAAM;gDACxC,OAAOA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;4CAC1D;oCACJ;4BACJ;oBACJ;gBACA,QAAQgC,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAY;YACpC;YAEAvD,OAAOD,KAAK,KAAK,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC3D,OAAO;YACX;QACJ;QAEAD,GAAG,iDAAiD;YAChD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OAAO,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE2B,KAAK,EAAE,GAAM;gCACzC,KAAKA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,QAAQ;4BACpD;oBACJ;YACJ;YAEAvB,OAAO,IAAMD,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAChD;QAER;QAEAD,GAAG,iEAAiE;YAChE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,MAAMA,OAAO,IAAI,GAAG,YAAY,CAAC;wBACjC,UAAUA,OAAO,MAAM,GAAG,MAAM,CAAC8C,CAAAA,IAAM;gCACnC,OAAOA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC7B,OAAOA,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,EAAEnB,KAAK,EAAExB,IAAI,EAAE,GAAM;wCAC1C,OAAOwB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;wCAC7C,MAAMxB,KAAK,KAAK,CAAC,QAAQ,QAAQ;oCACrC;4BACJ;oBACJ;gBACA,QAAQwD,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;wBAASA,EAAE,GAAG,CAAC;qBAAY;YACnD;YAEAvD,OAAOD,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACpD,OAAO;gBACP,MAAM;YACV;QACJ;IACJ;IAEAF,SAAS,iCAAiC;QACtCC,GAAG,0DAA0D;YACzD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,QAAQA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC9B,SAASA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACpB;wCACI,MAAM;wCACN,QAAQ;wCACR,UAAU;wCACV,OAAO;wCACP,QAAQ;oCACZ;iCACH;4BACL;oBACR;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAW;YACnC;YAEAvD,OAAOD,KAAK,KAAK,CAAC,mBAAmB,OAAO,EAAE,IAAI,CAAC;YAEnDA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;YACtCC,OAAOD,KAAK,KAAK,CAAC,mBAAmB,OAAO,EAAE,IAAI,CAAC;QACvD;QAEAD,GAAG,mCAAmC;YAClC,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,SAASA,OACJ,MAAM,GACN,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,QAAQA,EAAE,IAAI,GAAG,YAAY,CAAC;gCAC9B,UAAUA,EAAE,IAAI,GAAG,KAAK,CAAC;oCACrB;wCACI,MAAM;wCACN,QAAQ;wCACR,UAAU;wCACV,OAAO;wCACP,QAAQ;oCACZ;iCACH;4BACL;oBACR;gBACA,QAAQa,CAAAA,IAAK;wBAACA,EAAE,GAAG,CAAC;qBAAW;YACnC;YAEAvD,OAAOD,KAAK,KAAK,CAAC,oBAAoB,QAAQ,EAAE,IAAI,CAAC;YAErDA,KAAK,KAAK,CAAC,kBAAkB,QAAQ,CAAC;YACtCC,OAAOD,KAAK,KAAK,CAAC,oBAAoB,QAAQ,EAAE,IAAI,CAAC;QACzD;IACJ;IAEAF,SAAS,mDAAmD;QACxD,MAAMqG,WAAW,CAACC,QAAgBC,UAAkBnF,QAAmC;gBACnF;oBAAE,MAAM;oBAAakF;oBAAQC;oBAAUnF;oBAAO,QAAQ;gBAAO;aAChE;QAGD,MAAMoF,YAAY,CAACtG,MAAkBuG,UAAkBC,OAAeC;YAClE,MAAMC,OAAO1G,KAAK,KAAK,CAACuG;YACxB,MAAMI,QAAQD,KAAK,KAAK,CAACF,MAAM,EAAE,SAAS,IAAIC;YAC9C,IAAI,CAACE,OACD,MAAM,IAAIhH,MAAM,CAAC,UAAU,EAAE8G,KAAK,UAAU,EAAED,MAAM,KAAK,EAAED,SAAS,EAAE,CAAC;YAE3E,OAAOI;QACX;QAEA5G,GAAG,yDAAyD;YACxD,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI;gCACb,KAAKA,EAAE,IAAI,GAAG,KAAK,CAACwD,SAAS,WAAW,MAAM;gCAC9C,YAAYxD,EAAE,IAAI,GAAG,KAAK,CAACwD,SAAS,WAAW,MAAM;4BACzD;oBACR;YACJ;YAEAnG,KAAK,OAAO,CAAC;gBAAE,OAAO;oBAAC;wBAAE,OAAO;oBAAa;oBAAG;wBAAE,OAAO;oBAAW;iBAAE;YAAC;YAEvEC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC;YACxDC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,cAAc,OAAO,EAAE,IAAI,CAAC;YAC/DC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC;YACxDC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,cAAc,OAAO,EAAE,IAAI,CAAC;YAE/DsG,UAAUtG,MAAM,SAAS,GAAG,SAAS,QAAQ,CAAC;YAC9CC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC;YACxDC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,cAAc,OAAO,EAAE,IAAI,CAAC;QACnE;QAEAD,GAAG,8CAA8C;YAC7C,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,QAAQA,EAAE,OAAO;gCACjB,OAAOA,EAAE,IAAI,GAAG,KAAK,CAAC;oCAClB;wCACI,MAAM;wCACN,QAAQ;wCACR,UAAU;wCACV,OAAO;wCACP,QAAQ;oCACZ;iCACH;4BACL;oBACR;YACJ;YAEC3C,KAAK,KAAK,CAAC,SAAiB,OAAO;YACpCC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,SAAS,QAAQ,EAAE,IAAI,CAAC;YAE3DsG,UAAUtG,MAAM,SAAS,GAAG,UAAU,QAAQ,CAAC;YAC/CC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,SAAS,QAAQ,EAAE,IAAI,CAAC;QAC/D;QAEAD,GAAG,qEAAqE;YACpE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI;gCACb,KAAKA,EAAE,IAAI,GAAG,KAAK,CAACwD,SAAS,WAAW,MAAM;4BAClD;oBACR;YACJ;YAEAnG,KAAK,OAAO,CAAC;gBAAE,OAAO;oBAAC;wBAAE,OAAO;oBAAa;oBAAG;wBAAE,OAAO;oBAAW;iBAAE;YAAC;YACvE,MAAM0G,OAAO1G,KAAK,KAAK,CAAC;YACxB,MAAM4G,WAAWN,UAAUtG,MAAM,SAAS,GAAG;YAC7C,MAAM6G,YAAYP,UAAUtG,MAAM,SAAS,GAAG;YAE9C0G,KAAK,QAAQ,CAAC,GAAG;YACjBzG,OAAO2G,SAAS,OAAO,EAAE,IAAI,CAAC;YAC9B3G,OAAO4G,UAAU,OAAO,EAAE,IAAI,CAAC;YAE/BH,KAAK,UAAU,CAAC;YAChBzG,OAAO2G,SAAS,OAAO,EAAE,IAAI,CAAC;QAClC;QAEA7G,GAAG,oEAAoE;YACnE,MAAMC,OAAOd,WAAW;gBACpB,QAAQW,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,MAAM,CAAC8C,CAAAA,IAAM;gCACV,OAAOA,EAAE,IAAI;gCACb,KAAKA,EACA,IAAI,GACJ,UAAU,CACP,CAAC,EAAEnB,KAAK,EAAE,GACNA,AAA6C,iBAA7CA,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,QAAQ;4BAEtD;oBACR;YACJ;YAEAxB,KAAK,OAAO,CAAC;gBAAE,OAAO;oBAAC;wBAAE,OAAO;oBAAa;oBAAG;wBAAE,OAAO;oBAAW;iBAAE;YAAC;YAEvEC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC;YACxDC,OAAOqG,UAAUtG,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC;QAC5D;QAEAF,SAAS,sCAAsC;YAC3C,MAAMgH,mBAAmB,IACrB5H,WAAW;oBACP,QAAQW,CAAAA,SAAW;4BACf,QAAQA,OACH,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,QAAQ,CAAC,aAAawD,CAAAA;gCACnBA,EAAE,KAAK,CAAC,QAAQ,MAAM,CAACV,CAAAA,IAAM;wCACzB,KAAKA,EAAE,IAAI,GAAG,MAAM;wCACpB,UAAUA,EAAE,IAAI;wCAChB,QAAQA,EACH,IAAI,GACJ,KAAK,CAACwD,SAAS,cAAc,MAAM;wCACxC,YAAYxD,EACP,IAAI,GACJ,KAAK,CAACwD,SAAS,cAAc,MAAM;oCAC5C;4BACJ,GACC,QAAQ,CAAC,iBAAiB9C,CAAAA;gCACvBA,EAAE,KAAK,CAAC,aAAa,MAAM,CAACV,CAAAA,IAAM;wCAC9B,KAAKA,EAAE,IAAI,GAAG,MAAM;wCACpB,aAAaA,EAAE,IAAI,GAAG,YAAY,CAAC;wCACnC,QAAQA,EACH,IAAI,GACJ,KAAK,CAACwD,SAAS,iBAAiB,MAAM;wCAC3C,iBAAiBxD,EACZ,IAAI,GACJ,KAAK,CAACwD,SAAS,iBAAiB,MAAM;oCAC/C;4BACJ,GACC,QAAQ,CAAC,gBAAgB9C,CAAAA;gCACtBA,EAAE,KAAK,CAAC,WAAW,MAAM,CAACV,CAAAA,IAAM;wCAC5B,KAAKA,EAAE,IAAI,GAAG,MAAM;wCACpB,SAASA,EACJ,MAAM,GACN,IAAI,GACJ,QAAQ,CAAC,eACT,MAAM,CAACkB,CAAAA,IAAM;gDACV,WAAWA,EAAE,OAAO;gDACpB,gBAAgBA,EACX,IAAI,GACJ,KAAK,CAACsC,SAAS,eAAe,MAAM;4CAC7C;oCACR;4BACJ;wBACR;gBACJ;YAEJpG,GAAG,gDAAgD;gBAC/C,MAAMC,OAAO8G;gBACb9G,KAAK,OAAO,CAAC;oBACT,QAAQ;wBACJ;4BAAE,aAAa;4BAAa,KAAK;4BAAS,UAAU;wBAAa;wBACjE;4BAAE,aAAa;4BAAa,KAAK;4BAAS,UAAU;wBAAW;qBAClE;gBACL;gBAEAC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,IAAI,CAAC;gBAC5DC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,cAAc,OAAO,EAAE,IAAI,CAAC;gBAChEC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,IAAI,CAAC;gBAC5DC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,cAAc,OAAO,EAAE,IAAI,CAAC;YACpE;YAEAD,GAAG,oDAAoD;gBACnD,MAAMC,OAAO8G;gBACb9G,KAAK,OAAO,CAAC;oBACT,QAAQ;wBAAC;4BAAE,aAAa;4BAAiB,KAAK;4BAAO,aAAa;wBAAS;qBAAE;gBACjF;gBAEAC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,IAAI,CAAC;gBAC5DC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,mBAAmB,OAAO,EAAE,IAAI,CAAC;gBAErEsG,UAAUtG,MAAM,UAAU,GAAG,eAAe,QAAQ,CAAC;gBACrDC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,IAAI,CAAC;gBAC5DC,OAAOqG,UAAUtG,MAAM,UAAU,GAAG,mBAAmB,OAAO,EAAE,IAAI,CAAC;YACzE;YAEAD,GAAG,+DAA+D;gBAC9D,MAAMC,OAAO8G;gBACb9G,KAAK,OAAO,CAAC;oBACT,QAAQ;wBACJ;4BACI,aAAa;4BACb,KAAK;4BACL,SAAS;gCAAC;oCAAE,WAAW;gCAAK;gCAAG;oCAAE,WAAW;gCAAM;6BAAE;wBACxD;qBACH;gBACL;gBAEA,MAAM+G,UAAUT,UAAUtG,MAAM,UAAU,GAAG;gBAC7C,MAAMgH,YAAY,CAACR,OAAeC,OAC7BM,QAAgB,KAAK,CAACP,MAAM,CAAC,QAAQ,CAAC,GAAG,CAACC;gBAE/CxG,OAAO+G,UAAU,GAAG,kBAAkB,OAAO,EAAE,IAAI,CAAC;gBACpD/G,OAAO+G,UAAU,GAAG,kBAAkB,OAAO,EAAE,IAAI,CAAC;gBAEpDA,UAAU,GAAG,aAAa,QAAQ,CAAC;gBACnC/G,OAAO+G,UAAU,GAAG,kBAAkB,OAAO,EAAE,IAAI,CAAC;YACxD;QACJ;IACJ;IAEAlH,SAAS,aAAa;QAClB,MAAMmH,oBAAoB,IACtB/H,WAAW;gBACP,QAAQW,CAAAA,SAAW;wBACf,KAAKA,OAAO,IAAI,GAAG,KAAK,CAAC;wBACzB,UAAUA,OACL,MAAM,GACN,IAAI,GACJ,KAAK,CAAC,YACN,MAAM,CAAC8C,CAAAA,IAAM;gCAAE,MAAMA,EAAE,IAAI,GAAG,KAAK,CAAC;4BAAQ;oBACrD;YACJ;QAEJ5C,GAAG,yEAAyE;YACxE,MAAMC,OAAOiH;YAEbjH,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAO,SAAS;gBAAwB;aAAE;YAElEC,OAAOD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;gBAClD,SAAS;gBACT,SAAS;YACb;YACAC,OAAOD,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YAC/BC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC;gBACxB;oBACI,MAAM;oBACN,OAAO;oBACP,YAAY;wBAAC;qBAAM;oBACnB,SAAS;gBACb;aACH;QACL;QAEAD,GAAG,kCAAkC;YACjC,MAAMC,OAAOiH;YACbjH,KAAK,OAAO,CAAC;gBAAE,UAAU;oBAAC;wBAAE,MAAM;oBAAI;oBAAG;wBAAE,MAAM;oBAAI;iBAAE;YAAC;YAExDA,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAmB,SAAS;gBAAgB;aAAE;YAEtE,MAAM0G,OAAO1G,KAAK,KAAK,CAAC;YACxBC,OAAOyG,KAAK,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YACtEzG,OAAOyG,KAAK,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC;YAC1EzG,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC;gBACxBC,OAAO,gBAAgB,CAAC;oBACpB,MAAM;oBACN,YAAY;wBAAC;wBAAY;qBAAO;gBACpC;aACH;QACL;QAEAF,GAAG,8DAA8D;YAC7D,MAAMC,OAAOiH;YAEbjH,KAAK,SAAS,CAAC;gBACX;oBAAE,MAAM;oBAAI,SAAS;gBAA0B;gBAC/C;oBAAE,MAAM;oBAAiB,SAAS;gBAAsB;aAC3D;YAEDC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC;gBACxB;oBAAE,MAAM;oBAAI,SAAS;gBAA0B;gBAC/C;oBAAE,MAAM;oBAAiB,SAAS;gBAAsB;aAC3D;YACDC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;QAC9B;QAEAD,GAAG,qDAAqD;YACpD,MAAMC,OAAOiH;YACb,MAAMnC,SAAS9E,KAAK,WAAW;YAE/BA,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAO,SAAS;gBAAwB;aAAE;YAElEC,OAAOD,KAAK,WAAW,EAAE,IAAI,CAAC8E,SAAS;QAC3C;QAEA/E,GAAG,qCAAqC;YACpC,MAAMC,OAAOiH;YACbjH,KAAK,SAAS,CAAC;gBACX;oBAAE,MAAM;oBAAO,SAAS;gBAAwB;gBAChD;oBAAE,MAAM;oBAAI,SAAS;gBAA0B;aAClD;YAED,MAAMA,KAAK,QAAQ;YAEnBC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE;YAC9BC,OAAOD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC;QAC7D;QAEAD,GAAG,2BAA2B;YAC1B,MAAMC,OAAOiH;YACbjH,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAI,SAAS;gBAA0B;aAAE;YAEjEA,KAAK,OAAO,CAAC;gBAAE,KAAK;YAAM;YAE1BC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE;YAC9BC,OAAOD,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;QACnC;QAEAD,GAAG,wEAAwE;YACvE,MAAMC,OAAOiH;YACbjH,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAO,SAAS;gBAAwB;aAAE;YAElEA,KAAK,SAAS,CAAC,EAAE;YAEjBC,OAAOD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC;YACzDC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE;YAC9BC,OAAOD,KAAK,OAAO,EAAE,IAAI,CAAC;YAC1BC,OAAOD,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;QACnC;QAEAD,GAAG,qDAAqD;YACpD,MAAMC,OAAOiH;YACbjH,KAAK,OAAO,CAAC;gBAAE,UAAU;oBAAC;wBAAE,MAAM;oBAAI;iBAAE;YAAC;YACzCA,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAO,SAAS;gBAAwB;aAAE;YAElEA,KAAK,SAAS,CAAC;gBAAC;oBAAE,MAAM;oBAAmB,SAAS;gBAAgB;aAAE;YAEtEC,OAAOD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC;YACzDC,OAAOD,KAAK,MAAM,EAAE,OAAO,CAAC;gBACxBC,OAAO,gBAAgB,CAAC;oBAAE,MAAM;oBAAmB,SAAS;gBAAgB;aAC/E;QACL;IACJ;AACJ"}