kitchen-simulator 5.0.0-test.4 → 5.0.0-test.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (751) hide show
  1. package/package.json +23 -41
  2. package/es/@history.js +0 -3
  3. package/es/@history.js.map +0 -1
  4. package/es/AppContext.js +0 -4
  5. package/es/AppContext.js.map +0 -1
  6. package/es/KitchenConfigurator.js +0 -1345
  7. package/es/KitchenConfigurator.js.map +0 -1
  8. package/es/KitchenConfiguratorApp.js +0 -532
  9. package/es/KitchenConfiguratorApp.js.map +0 -1
  10. package/es/actions/area-actions.js +0 -15
  11. package/es/actions/area-actions.js.map +0 -1
  12. package/es/actions/export.js +0 -26
  13. package/es/actions/export.js.map +0 -1
  14. package/es/actions/groups-actions.js +0 -90
  15. package/es/actions/groups-actions.js.map +0 -1
  16. package/es/actions/holes-actions.js +0 -120
  17. package/es/actions/holes-actions.js.map +0 -1
  18. package/es/actions/items-actions.js +0 -314
  19. package/es/actions/items-actions.js.map +0 -1
  20. package/es/actions/lines-actions.js +0 -83
  21. package/es/actions/lines-actions.js.map +0 -1
  22. package/es/actions/project-actions.js +0 -282
  23. package/es/actions/project-actions.js.map +0 -1
  24. package/es/actions/scene-actions.js +0 -34
  25. package/es/actions/scene-actions.js.map +0 -1
  26. package/es/actions/user-actions.js +0 -59
  27. package/es/actions/user-actions.js.map +0 -1
  28. package/es/actions/vertices-actions.js +0 -28
  29. package/es/actions/vertices-actions.js.map +0 -1
  30. package/es/actions/viewer2d-actions.js +0 -59
  31. package/es/actions/viewer2d-actions.js.map +0 -1
  32. package/es/actions/viewer3d-actions.js +0 -24
  33. package/es/actions/viewer3d-actions.js.map +0 -1
  34. package/es/catalog/areas/area/planner-element.js +0 -41
  35. package/es/catalog/areas/area/planner-element.js.map +0 -1
  36. package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  37. package/es/catalog/areas/area/textures/grass.jpg +0 -0
  38. package/es/catalog/areas/area/textures/parquet.jpg +0 -0
  39. package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  40. package/es/catalog/areas/area/textures/tile1.jpg +0 -0
  41. package/es/catalog/back.png +0 -0
  42. package/es/catalog/catalog.js +0 -278
  43. package/es/catalog/catalog.js.map +0 -1
  44. package/es/catalog/doors.png +0 -0
  45. package/es/catalog/doorways.png +0 -0
  46. package/es/catalog/envMap/nx.hdr +0 -0
  47. package/es/catalog/envMap/ny.hdr +0 -0
  48. package/es/catalog/envMap/nz.hdr +0 -0
  49. package/es/catalog/envMap/px.hdr +0 -0
  50. package/es/catalog/envMap/py.hdr +0 -0
  51. package/es/catalog/envMap/pz.hdr +0 -0
  52. package/es/catalog/factories/area-factory-3d.js +0 -183
  53. package/es/catalog/factories/area-factory-3d.js.map +0 -1
  54. package/es/catalog/factories/area-factory.js +0 -82
  55. package/es/catalog/factories/area-factory.js.map +0 -1
  56. package/es/catalog/factories/export.js +0 -8
  57. package/es/catalog/factories/export.js.map +0 -1
  58. package/es/catalog/factories/wall-factory-3d.js +0 -203
  59. package/es/catalog/factories/wall-factory-3d.js.map +0 -1
  60. package/es/catalog/factories/wall-factory.js +0 -269
  61. package/es/catalog/factories/wall-factory.js.map +0 -1
  62. package/es/catalog/holes/door-closet/planner-element.js +0 -223
  63. package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
  64. package/es/catalog/holes/door-double/door_double.png +0 -0
  65. package/es/catalog/holes/door-double/planner-element.js +0 -316
  66. package/es/catalog/holes/door-double/planner-element.js.map +0 -1
  67. package/es/catalog/holes/door-exterior/planner-element.js +0 -216
  68. package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
  69. package/es/catalog/holes/door-interior/planner-element.js +0 -228
  70. package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
  71. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  72. package/es/catalog/holes/door-panic/planner-element.js +0 -504
  73. package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
  74. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  75. package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
  76. package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  77. package/es/catalog/holes/door-sliding/planner-element.js +0 -226
  78. package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
  79. package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
  80. package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  81. package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
  82. package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  83. package/es/catalog/holes/gate/gate.jpg +0 -0
  84. package/es/catalog/holes/window-clear/planner-element.js +0 -167
  85. package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
  86. package/es/catalog/holes/window-clear/texture.png +0 -0
  87. package/es/catalog/holes/window-cross/planner-element.js +0 -166
  88. package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
  89. package/es/catalog/holes/window-cross/texture.png +0 -0
  90. package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
  91. package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  92. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  93. package/es/catalog/holes/window-vertical/planner-element.js +0 -277
  94. package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
  95. package/es/catalog/holes/window-vertical/texture.png +0 -0
  96. package/es/catalog/lines/wall/planner-element.js +0 -71
  97. package/es/catalog/lines/wall/planner-element.js.map +0 -1
  98. package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  99. package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  100. package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
  101. package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
  102. package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
  103. package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  104. package/es/catalog/lines/wall/textures/morden.jpg +0 -0
  105. package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  106. package/es/catalog/lines/wall/textures/painted.jpg +0 -0
  107. package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  108. package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
  109. package/es/catalog/lines/wall/wall.png +0 -0
  110. package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
  111. package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  112. package/es/catalog/molding/molding-dcm/texture.png +0 -0
  113. package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
  114. package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  115. package/es/catalog/molding/molding-fbm/texture.png +0 -0
  116. package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
  117. package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  118. package/es/catalog/molding/molding-lrm/texture.png +0 -0
  119. package/es/catalog/properties/export.js +0 -22
  120. package/es/catalog/properties/export.js.map +0 -1
  121. package/es/catalog/properties/property-checkbox.js +0 -72
  122. package/es/catalog/properties/property-checkbox.js.map +0 -1
  123. package/es/catalog/properties/property-color.js +0 -40
  124. package/es/catalog/properties/property-color.js.map +0 -1
  125. package/es/catalog/properties/property-enum.js +0 -56
  126. package/es/catalog/properties/property-enum.js.map +0 -1
  127. package/es/catalog/properties/property-hidden.js +0 -20
  128. package/es/catalog/properties/property-hidden.js.map +0 -1
  129. package/es/catalog/properties/property-lenght-measure.js +0 -102
  130. package/es/catalog/properties/property-lenght-measure.js.map +0 -1
  131. package/es/catalog/properties/property-length-measure.js +0 -86
  132. package/es/catalog/properties/property-length-measure.js.map +0 -1
  133. package/es/catalog/properties/property-length-measure_hole.js +0 -102
  134. package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
  135. package/es/catalog/properties/property-number.js +0 -49
  136. package/es/catalog/properties/property-number.js.map +0 -1
  137. package/es/catalog/properties/property-read-only.js +0 -27
  138. package/es/catalog/properties/property-read-only.js.map +0 -1
  139. package/es/catalog/properties/property-string.js +0 -49
  140. package/es/catalog/properties/property-string.js.map +0 -1
  141. package/es/catalog/properties/property-toggle.js +0 -40
  142. package/es/catalog/properties/property-toggle.js.map +0 -1
  143. package/es/catalog/properties/shared-property-style.js +0 -15
  144. package/es/catalog/properties/shared-property-style.js.map +0 -1
  145. package/es/catalog/utils/FuseUtils.js +0 -83
  146. package/es/catalog/utils/FuseUtils.js.map +0 -1
  147. package/es/catalog/utils/exporter.js +0 -149
  148. package/es/catalog/utils/exporter.js.map +0 -1
  149. package/es/catalog/utils/geom-utils.js +0 -190
  150. package/es/catalog/utils/geom-utils.js.map +0 -1
  151. package/es/catalog/utils/item-loader.js +0 -1522
  152. package/es/catalog/utils/item-loader.js.map +0 -1
  153. package/es/catalog/utils/load-obj.js +0 -92
  154. package/es/catalog/utils/load-obj.js.map +0 -1
  155. package/es/catalog/utils/mtl-loader.js +0 -358
  156. package/es/catalog/utils/mtl-loader.js.map +0 -1
  157. package/es/catalog/utils/obj-loader.js +0 -477
  158. package/es/catalog/utils/obj-loader.js.map +0 -1
  159. package/es/catalog/windows.png +0 -0
  160. package/es/class/FuseUtils.js +0 -83
  161. package/es/class/FuseUtils.js.map +0 -1
  162. package/es/class/area.js +0 -146
  163. package/es/class/area.js.map +0 -1
  164. package/es/class/export.js +0 -25
  165. package/es/class/export.js.map +0 -1
  166. package/es/class/group.js +0 -441
  167. package/es/class/group.js.map +0 -1
  168. package/es/class/guide.js +0 -63
  169. package/es/class/guide.js.map +0 -1
  170. package/es/class/hole.js +0 -931
  171. package/es/class/hole.js.map +0 -1
  172. package/es/class/item.js +0 -1888
  173. package/es/class/item.js.map +0 -1
  174. package/es/class/layer.js +0 -668
  175. package/es/class/layer.js.map +0 -1
  176. package/es/class/line.js +0 -1290
  177. package/es/class/line.js.map +0 -1
  178. package/es/class/project.js +0 -823
  179. package/es/class/project.js.map +0 -1
  180. package/es/class/vertex.js +0 -267
  181. package/es/class/vertex.js.map +0 -1
  182. package/es/components/atoms/Snackbar/index.js +0 -50
  183. package/es/components/atoms/Snackbar/index.js.map +0 -1
  184. package/es/components/atoms/radio-button/index.js +0 -26
  185. package/es/components/atoms/radio-button/index.js.map +0 -1
  186. package/es/components/atoms/radio-button/styles.js +0 -5
  187. package/es/components/atoms/radio-button/styles.js.map +0 -1
  188. package/es/components/button/MainButton.js +0 -92
  189. package/es/components/button/MainButton.js.map +0 -1
  190. package/es/components/button/ToggleMeasureButton.js +0 -56
  191. package/es/components/button/ToggleMeasureButton.js.map +0 -1
  192. package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
  193. package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  194. package/es/components/catalog-view/catalog-item.js +0 -226
  195. package/es/components/catalog-view/catalog-item.js.map +0 -1
  196. package/es/components/catalog-view/catalog-list.js +0 -182
  197. package/es/components/catalog-view/catalog-list.js.map +0 -1
  198. package/es/components/catalog-view/catalog-page-item.js +0 -130
  199. package/es/components/catalog-view/catalog-page-item.js.map +0 -1
  200. package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
  201. package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  202. package/es/components/configurator/custom-configurator.js +0 -94
  203. package/es/components/configurator/custom-configurator.js.map +0 -1
  204. package/es/components/configurator/project-configurator.js +0 -131
  205. package/es/components/configurator/project-configurator.js.map +0 -1
  206. package/es/components/content.js +0 -123
  207. package/es/components/content.js.map +0 -1
  208. package/es/components/export.js +0 -24
  209. package/es/components/export.js.map +0 -1
  210. package/es/components/firstsetting/button/styles.js +0 -27
  211. package/es/components/firstsetting/button/styles.js.map +0 -1
  212. package/es/components/firstsetting/export.js +0 -9
  213. package/es/components/firstsetting/export.js.map +0 -1
  214. package/es/components/firstsetting/firstsetting-content-button.js +0 -217
  215. package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
  216. package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
  217. package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  218. package/es/components/firstsetting/firstsetting.js +0 -626
  219. package/es/components/firstsetting/firstsetting.js.map +0 -1
  220. package/es/components/footerbar/button/ControlButton.js +0 -72
  221. package/es/components/footerbar/button/ControlButton.js.map +0 -1
  222. package/es/components/footerbar/button/DirectionButton.js +0 -69
  223. package/es/components/footerbar/button/DirectionButton.js.map +0 -1
  224. package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
  225. package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  226. package/es/components/footerbar/button/ToggleButton.js +0 -76
  227. package/es/components/footerbar/button/ToggleButton.js.map +0 -1
  228. package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
  229. package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  230. package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
  231. package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  232. package/es/components/footerbar/button/styles.js +0 -22
  233. package/es/components/footerbar/button/styles.js.map +0 -1
  234. package/es/components/footerbar/export.js +0 -9
  235. package/es/components/footerbar/export.js.map +0 -1
  236. package/es/components/footerbar/footer-content-button.js +0 -217
  237. package/es/components/footerbar/footer-content-button.js.map +0 -1
  238. package/es/components/footerbar/footer-toggle-button.js +0 -126
  239. package/es/components/footerbar/footer-toggle-button.js.map +0 -1
  240. package/es/components/footerbar/footerbar.js +0 -801
  241. package/es/components/footerbar/footerbar.js.map +0 -1
  242. package/es/components/footerbar/styles.js +0 -34
  243. package/es/components/footerbar/styles.js.map +0 -1
  244. package/es/components/header/button/MenuButton.js +0 -70
  245. package/es/components/header/button/MenuButton.js.map +0 -1
  246. package/es/components/header/button/SaveButton.js +0 -48
  247. package/es/components/header/button/SaveButton.js.map +0 -1
  248. package/es/components/header/button/styles.js +0 -59
  249. package/es/components/header/button/styles.js.map +0 -1
  250. package/es/components/header/export.js +0 -5
  251. package/es/components/header/export.js.map +0 -1
  252. package/es/components/header/header.js +0 -550
  253. package/es/components/header/header.js.map +0 -1
  254. package/es/components/header/header.style.css +0 -47
  255. package/es/components/header/styles.js +0 -41
  256. package/es/components/header/styles.js.map +0 -1
  257. package/es/components/login/Login.js +0 -86
  258. package/es/components/login/Login.js.map +0 -1
  259. package/es/components/login/LoginForm/index.js +0 -132
  260. package/es/components/login/LoginForm/index.js.map +0 -1
  261. package/es/components/login/Register.js +0 -96
  262. package/es/components/login/Register.js.map +0 -1
  263. package/es/components/login/RegisterForm/index.js +0 -230
  264. package/es/components/login/RegisterForm/index.js.map +0 -1
  265. package/es/components/login/jwtService.js +0 -232
  266. package/es/components/login/jwtService.js.map +0 -1
  267. package/es/components/login/style.css +0 -158
  268. package/es/components/login/style.scss +0 -260
  269. package/es/components/molecules/slider/index.js +0 -13
  270. package/es/components/molecules/slider/index.js.map +0 -1
  271. package/es/components/molecules/slider/styles.js +0 -2
  272. package/es/components/molecules/slider/styles.js.map +0 -1
  273. package/es/components/molecules/slider/styles.scss +0 -3
  274. package/es/components/myprojects/export.js +0 -5
  275. package/es/components/myprojects/export.js.map +0 -1
  276. package/es/components/myprojects/index.js +0 -446
  277. package/es/components/myprojects/index.js.map +0 -1
  278. package/es/components/myprojects/styles.js +0 -24
  279. package/es/components/myprojects/styles.js.map +0 -1
  280. package/es/components/sidebar/custom-accordion.js +0 -38
  281. package/es/components/sidebar/custom-accordion.js.map +0 -1
  282. package/es/components/sidebar/export.js +0 -14
  283. package/es/components/sidebar/export.js.map +0 -1
  284. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
  285. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  286. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
  287. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  288. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
  289. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  290. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
  291. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  292. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
  293. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  294. package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
  295. package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  296. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  297. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  298. package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
  299. package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  300. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
  301. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  302. package/es/components/sidebar/panel-group-editor.js +0 -211
  303. package/es/components/sidebar/panel-group-editor.js.map +0 -1
  304. package/es/components/sidebar/panel-groups.js +0 -267
  305. package/es/components/sidebar/panel-groups.js.map +0 -1
  306. package/es/components/sidebar/panel-guides.js +0 -185
  307. package/es/components/sidebar/panel-guides.js.map +0 -1
  308. package/es/components/sidebar/panel-layer-elements.js +0 -251
  309. package/es/components/sidebar/panel-layer-elements.js.map +0 -1
  310. package/es/components/sidebar/panel-layers.js +0 -340
  311. package/es/components/sidebar/panel-layers.js.map +0 -1
  312. package/es/components/sidebar/panel.js +0 -103
  313. package/es/components/sidebar/panel.js.map +0 -1
  314. package/es/components/sidebar/sidebar.js +0 -109
  315. package/es/components/sidebar/sidebar.js.map +0 -1
  316. package/es/components/sidebar/toolbar-panel.js +0 -164
  317. package/es/components/sidebar/toolbar-panel.js.map +0 -1
  318. package/es/components/sign/export.js +0 -6
  319. package/es/components/sign/export.js.map +0 -1
  320. package/es/components/sign/main/index.js +0 -560
  321. package/es/components/sign/main/index.js.map +0 -1
  322. package/es/components/sign/main/styles.js +0 -20
  323. package/es/components/sign/main/styles.js.map +0 -1
  324. package/es/components/style/button.js +0 -114
  325. package/es/components/style/button.js.map +0 -1
  326. package/es/components/style/cancel-button.js +0 -23
  327. package/es/components/style/cancel-button.js.map +0 -1
  328. package/es/components/style/content-container.js +0 -34
  329. package/es/components/style/content-container.js.map +0 -1
  330. package/es/components/style/content-title.js +0 -30
  331. package/es/components/style/content-title.js.map +0 -1
  332. package/es/components/style/delete-button.js +0 -26
  333. package/es/components/style/delete-button.js.map +0 -1
  334. package/es/components/style/export.js +0 -32
  335. package/es/components/style/export.js.map +0 -1
  336. package/es/components/style/form-block.js +0 -25
  337. package/es/components/style/form-block.js.map +0 -1
  338. package/es/components/style/form-color-input.js +0 -28
  339. package/es/components/style/form-color-input.js.map +0 -1
  340. package/es/components/style/form-label.js +0 -27
  341. package/es/components/style/form-label.js.map +0 -1
  342. package/es/components/style/form-number-input.js +0 -190
  343. package/es/components/style/form-number-input.js.map +0 -1
  344. package/es/components/style/form-number-input_2.js +0 -207
  345. package/es/components/style/form-number-input_2.js.map +0 -1
  346. package/es/components/style/form-select.js +0 -21
  347. package/es/components/style/form-select.js.map +0 -1
  348. package/es/components/style/form-slider.js +0 -46
  349. package/es/components/style/form-slider.js.map +0 -1
  350. package/es/components/style/form-submit-button.js +0 -27
  351. package/es/components/style/form-submit-button.js.map +0 -1
  352. package/es/components/style/form-text-input.js +0 -77
  353. package/es/components/style/form-text-input.js.map +0 -1
  354. package/es/components/toolbar/button/ControlButton.js +0 -69
  355. package/es/components/toolbar/button/ControlButton.js.map +0 -1
  356. package/es/components/toolbar/button/DirectionButton.js +0 -50
  357. package/es/components/toolbar/button/DirectionButton.js.map +0 -1
  358. package/es/components/toolbar/button/RightButton.js +0 -133
  359. package/es/components/toolbar/button/RightButton.js.map +0 -1
  360. package/es/components/toolbar/button/ToggleButton.js +0 -59
  361. package/es/components/toolbar/button/ToggleButton.js.map +0 -1
  362. package/es/components/toolbar/button/index.js +0 -88
  363. package/es/components/toolbar/button/index.js.map +0 -1
  364. package/es/components/toolbar/button/styles.js +0 -14
  365. package/es/components/toolbar/button/styles.js.map +0 -1
  366. package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
  367. package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  368. package/es/components/toolbar/components/Pricing.js +0 -101
  369. package/es/components/toolbar/components/Pricing.js.map +0 -1
  370. package/es/components/toolbar/components/ReviewForQuote.js +0 -476
  371. package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
  372. package/es/components/toolbar/export.js +0 -14
  373. package/es/components/toolbar/export.js.map +0 -1
  374. package/es/components/toolbar/main/Alert.js +0 -125
  375. package/es/components/toolbar/main/Alert.js.map +0 -1
  376. package/es/components/toolbar/main/TakePictureModal.js +0 -100
  377. package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
  378. package/es/components/toolbar/main/confirm-popup.js +0 -88
  379. package/es/components/toolbar/main/confirm-popup.js.map +0 -1
  380. package/es/components/toolbar/main/index.js +0 -4612
  381. package/es/components/toolbar/main/index.js.map +0 -1
  382. package/es/components/toolbar/main/lShaped.json +0 -311
  383. package/es/components/toolbar/main/longNarrow.json +0 -238
  384. package/es/components/toolbar/main/myComponents.js +0 -118
  385. package/es/components/toolbar/main/myComponents.js.map +0 -1
  386. package/es/components/toolbar/main/oRectangle.json +0 -220
  387. package/es/components/toolbar/main/rectangle.json +0 -238
  388. package/es/components/toolbar/main/style.css +0 -107
  389. package/es/components/toolbar/main/styles.js +0 -64
  390. package/es/components/toolbar/main/styles.js.map +0 -1
  391. package/es/components/toolbar/plugin-item.js +0 -150
  392. package/es/components/toolbar/plugin-item.js.map +0 -1
  393. package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
  394. package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  395. package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
  396. package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  397. package/es/components/toolbar/popup/appliance/index.js +0 -81
  398. package/es/components/toolbar/popup/appliance/index.js.map +0 -1
  399. package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
  400. package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  401. package/es/components/toolbar/popup/autosaveprompt/styles.css +0 -64
  402. package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
  403. package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  404. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
  405. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  406. package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
  407. package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  408. package/es/components/toolbar/popup/cabinet/index.js +0 -83
  409. package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
  410. package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
  411. package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  412. package/es/components/toolbar/popup/doorStyle/index.js +0 -61
  413. package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
  414. package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
  415. package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  416. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
  417. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  418. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
  419. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  420. package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
  421. package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  422. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
  423. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  424. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
  425. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  426. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
  427. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  428. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
  429. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  430. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
  431. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  432. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
  433. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  434. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
  435. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  436. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
  437. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  438. package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
  439. package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  440. package/es/components/toolbar/popup/downloadsummary/styles.css +0 -177
  441. package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
  442. package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  443. package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
  444. package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  445. package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
  446. package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  447. package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
  448. package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  449. package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
  450. package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  451. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
  452. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  453. package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
  454. package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  455. package/es/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
  456. package/es/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
  457. package/es/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
  458. package/es/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
  459. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
  460. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  461. package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
  462. package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  463. package/es/components/toolbar/popup/floorplan/index.js +0 -49
  464. package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
  465. package/es/components/toolbar/popup/index.js +0 -188
  466. package/es/components/toolbar/popup/index.js.map +0 -1
  467. package/es/components/toolbar/popup/newproject/index.js +0 -67
  468. package/es/components/toolbar/popup/newproject/index.js.map +0 -1
  469. package/es/components/toolbar/popup/newproject/styles.css +0 -64
  470. package/es/components/toolbar/popup/newproject/styles.js +0 -9
  471. package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
  472. package/es/components/toolbar/popup/product/appliance.js +0 -65
  473. package/es/components/toolbar/popup/product/appliance.js.map +0 -1
  474. package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
  475. package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  476. package/es/components/toolbar/popup/product/doorstyle.js +0 -50
  477. package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
  478. package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
  479. package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  480. package/es/components/toolbar/popup/product/floor.js +0 -52
  481. package/es/components/toolbar/popup/product/floor.js.map +0 -1
  482. package/es/components/toolbar/popup/product/floorproduct.js +0 -61
  483. package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
  484. package/es/components/toolbar/popup/product/index.js +0 -52
  485. package/es/components/toolbar/popup/product/index.js.map +0 -1
  486. package/es/components/toolbar/popup/product/primary.js +0 -63
  487. package/es/components/toolbar/popup/product/primary.js.map +0 -1
  488. package/es/components/toolbar/popup/product/productline.js +0 -120
  489. package/es/components/toolbar/popup/product/productline.js.map +0 -1
  490. package/es/components/toolbar/popup/product/reviewItem.js +0 -338
  491. package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
  492. package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
  493. package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  494. package/es/components/toolbar/popup/product/style.css +0 -54
  495. package/es/components/toolbar/popup/product/styles.js +0 -71
  496. package/es/components/toolbar/popup/product/styles.js.map +0 -1
  497. package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
  498. package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  499. package/es/components/toolbar/popup/savedesign/index.js +0 -508
  500. package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
  501. package/es/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
  502. package/es/components/toolbar/popup/savedesign/styles.js +0 -19
  503. package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
  504. package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
  505. package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  506. package/es/components/toolbar/popup/styles.js +0 -98
  507. package/es/components/toolbar/popup/styles.js.map +0 -1
  508. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
  509. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  510. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
  511. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  512. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
  513. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  514. package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
  515. package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  516. package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
  517. package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  518. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
  519. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  520. package/es/components/toolbar/popup/submitforquote/index.js +0 -690
  521. package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
  522. package/es/components/toolbar/popup/submitforquote/styles.css +0 -105
  523. package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
  524. package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  525. package/es/components/toolbar/popup/submitprompt/index.js +0 -71
  526. package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
  527. package/es/components/toolbar/popup/submitprompt/styles.css +0 -64
  528. package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
  529. package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  530. package/es/components/toolbar/toolbar-button.js +0 -105
  531. package/es/components/toolbar/toolbar-button.js.map +0 -1
  532. package/es/components/toolbar/toolbar-load-button.js +0 -29
  533. package/es/components/toolbar/toolbar-load-button.js.map +0 -1
  534. package/es/components/toolbar/toolbar-save-button.js +0 -27
  535. package/es/components/toolbar/toolbar-save-button.js.map +0 -1
  536. package/es/components/tutorial-view/Modal.js +0 -498
  537. package/es/components/tutorial-view/Modal.js.map +0 -1
  538. package/es/components/tutorial-view/style.css +0 -111
  539. package/es/components/tutorial-view/styles.js +0 -6
  540. package/es/components/tutorial-view/styles.js.map +0 -1
  541. package/es/components/viewer2d/area.js +0 -83
  542. package/es/components/viewer2d/area.js.map +0 -1
  543. package/es/components/viewer2d/export.js +0 -32
  544. package/es/components/viewer2d/export.js.map +0 -1
  545. package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
  546. package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  547. package/es/components/viewer2d/grids/grid-streak.js +0 -38
  548. package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
  549. package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
  550. package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  551. package/es/components/viewer2d/grids/grids.js +0 -36
  552. package/es/components/viewer2d/grids/grids.js.map +0 -1
  553. package/es/components/viewer2d/group.js +0 -54
  554. package/es/components/viewer2d/group.js.map +0 -1
  555. package/es/components/viewer2d/item.js +0 -514
  556. package/es/components/viewer2d/item.js.map +0 -1
  557. package/es/components/viewer2d/layer.js +0 -165
  558. package/es/components/viewer2d/layer.js.map +0 -1
  559. package/es/components/viewer2d/line.js +0 -889
  560. package/es/components/viewer2d/line.js.map +0 -1
  561. package/es/components/viewer2d/ruler.js +0 -101
  562. package/es/components/viewer2d/ruler.js.map +0 -1
  563. package/es/components/viewer2d/rulerDist.js +0 -147
  564. package/es/components/viewer2d/rulerDist.js.map +0 -1
  565. package/es/components/viewer2d/rulerX.js +0 -152
  566. package/es/components/viewer2d/rulerX.js.map +0 -1
  567. package/es/components/viewer2d/rulerY.js +0 -154
  568. package/es/components/viewer2d/rulerY.js.map +0 -1
  569. package/es/components/viewer2d/scene.js +0 -141
  570. package/es/components/viewer2d/scene.js.map +0 -1
  571. package/es/components/viewer2d/snap.js +0 -75
  572. package/es/components/viewer2d/snap.js.map +0 -1
  573. package/es/components/viewer2d/state.js +0 -79
  574. package/es/components/viewer2d/state.js.map +0 -1
  575. package/es/components/viewer2d/utils.js +0 -163
  576. package/es/components/viewer2d/utils.js.map +0 -1
  577. package/es/components/viewer2d/vertex.js +0 -67
  578. package/es/components/viewer2d/vertex.js.map +0 -1
  579. package/es/components/viewer2d/viewer2d.js +0 -1402
  580. package/es/components/viewer2d/viewer2d.js.map +0 -1
  581. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
  582. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  583. package/es/components/viewer3d/dcm.js +0 -402
  584. package/es/components/viewer3d/dcm.js.map +0 -1
  585. package/es/components/viewer3d/fbm.js +0 -415
  586. package/es/components/viewer3d/fbm.js.map +0 -1
  587. package/es/components/viewer3d/front3D.js +0 -67
  588. package/es/components/viewer3d/front3D.js.map +0 -1
  589. package/es/components/viewer3d/grid-creator.js +0 -26
  590. package/es/components/viewer3d/grid-creator.js.map +0 -1
  591. package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
  592. package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  593. package/es/components/viewer3d/grids/grid-streak.js +0 -28
  594. package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
  595. package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
  596. package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  597. package/es/components/viewer3d/libs/first-person-controls.js +0 -68
  598. package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
  599. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
  600. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  601. package/es/components/viewer3d/libs/mtl-loader.js +0 -358
  602. package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
  603. package/es/components/viewer3d/libs/obj-loader.js +0 -463
  604. package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
  605. package/es/components/viewer3d/libs/orbit-controls.js +0 -699
  606. package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
  607. package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
  608. package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  609. package/es/components/viewer3d/lrm.js +0 -306
  610. package/es/components/viewer3d/lrm.js.map +0 -1
  611. package/es/components/viewer3d/model.js +0 -709
  612. package/es/components/viewer3d/model.js.map +0 -1
  613. package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
  614. package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  615. package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
  616. package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  617. package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
  618. package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  619. package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
  620. package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  621. package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
  622. package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  623. package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
  624. package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  625. package/es/components/viewer3d/scene-creator.js +0 -3607
  626. package/es/components/viewer3d/scene-creator.js.map +0 -1
  627. package/es/components/viewer3d/three-memory-cleaner.js +0 -52
  628. package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
  629. package/es/components/viewer3d/viewer3d-first-person.js +0 -316
  630. package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
  631. package/es/components/viewer3d/viewer3d.js +0 -2504
  632. package/es/components/viewer3d/viewer3d.js.map +0 -1
  633. package/es/components/wizardstep/button/styles.js +0 -60
  634. package/es/components/wizardstep/button/styles.js.map +0 -1
  635. package/es/components/wizardstep/export.js +0 -5
  636. package/es/components/wizardstep/export.js.map +0 -1
  637. package/es/components/wizardstep/index.js +0 -971
  638. package/es/components/wizardstep/index.js.map +0 -1
  639. package/es/components/wizardstep/styles.js +0 -61
  640. package/es/components/wizardstep/styles.js.map +0 -1
  641. package/es/components/wizardstep/wizardstep-content-button.js +0 -217
  642. package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
  643. package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
  644. package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  645. package/es/constants.js +0 -637
  646. package/es/constants.js.map +0 -1
  647. package/es/hooks/useCheckCart.js +0 -53
  648. package/es/hooks/useCheckCart.js.map +0 -1
  649. package/es/hooks/useGetPricesBySku.js +0 -74
  650. package/es/hooks/useGetPricesBySku.js.map +0 -1
  651. package/es/hooks/useValidateToken.js +0 -201
  652. package/es/hooks/useValidateToken.js.map +0 -1
  653. package/es/index.js +0 -17
  654. package/es/index.js.map +0 -1
  655. package/es/models.js +0 -511
  656. package/es/models.js.map +0 -1
  657. package/es/plugins/SVGLoader.js +0 -1413
  658. package/es/plugins/SVGLoader.js.map +0 -1
  659. package/es/plugins/autosave.js +0 -34
  660. package/es/plugins/autosave.js.map +0 -1
  661. package/es/plugins/console-debugger.js +0 -38
  662. package/es/plugins/console-debugger.js.map +0 -1
  663. package/es/plugins/export.js +0 -10
  664. package/es/plugins/export.js.map +0 -1
  665. package/es/plugins/keyboard.js +0 -102
  666. package/es/plugins/keyboard.js.map +0 -1
  667. package/es/reducers/areas-reducer.js +0 -13
  668. package/es/reducers/areas-reducer.js.map +0 -1
  669. package/es/reducers/export.js +0 -26
  670. package/es/reducers/export.js.map +0 -1
  671. package/es/reducers/groups-reducer.js +0 -39
  672. package/es/reducers/groups-reducer.js.map +0 -1
  673. package/es/reducers/holes-reducer.js +0 -63
  674. package/es/reducers/holes-reducer.js.map +0 -1
  675. package/es/reducers/items-reducer.js +0 -144
  676. package/es/reducers/items-reducer.js.map +0 -1
  677. package/es/reducers/lines-reducer.js +0 -46
  678. package/es/reducers/lines-reducer.js.map +0 -1
  679. package/es/reducers/project-reducer.js +0 -130
  680. package/es/reducers/project-reducer.js.map +0 -1
  681. package/es/reducers/reducer.js +0 -20
  682. package/es/reducers/reducer.js.map +0 -1
  683. package/es/reducers/scene-reducer.js +0 -29
  684. package/es/reducers/scene-reducer.js.map +0 -1
  685. package/es/reducers/user-reducer.js +0 -42
  686. package/es/reducers/user-reducer.js.map +0 -1
  687. package/es/reducers/vertices-reducer.js +0 -20
  688. package/es/reducers/vertices-reducer.js.map +0 -1
  689. package/es/reducers/viewer2d-reducer.js +0 -76
  690. package/es/reducers/viewer2d-reducer.js.map +0 -1
  691. package/es/reducers/viewer3d-reducer.js +0 -57
  692. package/es/reducers/viewer3d-reducer.js.map +0 -1
  693. package/es/shared-style.js +0 -67
  694. package/es/shared-style.js.map +0 -1
  695. package/es/styles/export.js +0 -6
  696. package/es/styles/export.js.map +0 -1
  697. package/es/styles/tabs.css +0 -40
  698. package/es/translator/en.js +0 -105
  699. package/es/translator/en.js.map +0 -1
  700. package/es/translator/it.js +0 -80
  701. package/es/translator/it.js.map +0 -1
  702. package/es/translator/ru.js +0 -80
  703. package/es/translator/ru.js.map +0 -1
  704. package/es/translator/translator.js +0 -85
  705. package/es/translator/translator.js.map +0 -1
  706. package/es/utils/browser.js +0 -34
  707. package/es/utils/browser.js.map +0 -1
  708. package/es/utils/email-validator.js +0 -5
  709. package/es/utils/email-validator.js.map +0 -1
  710. package/es/utils/export.js +0 -26
  711. package/es/utils/export.js.map +0 -1
  712. package/es/utils/geometry.js +0 -2237
  713. package/es/utils/geometry.js.map +0 -1
  714. package/es/utils/get-edges-of-subgraphs.js +0 -27
  715. package/es/utils/get-edges-of-subgraphs.js.map +0 -1
  716. package/es/utils/graph-cycles.js +0 -239
  717. package/es/utils/graph-cycles.js.map +0 -1
  718. package/es/utils/graph-inner-cycles.js +0 -47
  719. package/es/utils/graph-inner-cycles.js.map +0 -1
  720. package/es/utils/graph.js +0 -150
  721. package/es/utils/graph.js.map +0 -1
  722. package/es/utils/helper.js +0 -337
  723. package/es/utils/helper.js.map +0 -1
  724. package/es/utils/history.js +0 -30
  725. package/es/utils/history.js.map +0 -1
  726. package/es/utils/id-broker.js +0 -20
  727. package/es/utils/id-broker.js.map +0 -1
  728. package/es/utils/logger.js +0 -9
  729. package/es/utils/logger.js.map +0 -1
  730. package/es/utils/math.js +0 -51
  731. package/es/utils/math.js.map +0 -1
  732. package/es/utils/molding.js +0 -840
  733. package/es/utils/molding.js.map +0 -1
  734. package/es/utils/name-generator.js +0 -19
  735. package/es/utils/name-generator.js.map +0 -1
  736. package/es/utils/objects-utils.js +0 -51
  737. package/es/utils/objects-utils.js.map +0 -1
  738. package/es/utils/phone-validator.js +0 -5
  739. package/es/utils/phone-validator.js.map +0 -1
  740. package/es/utils/process-black-list.js +0 -19
  741. package/es/utils/process-black-list.js.map +0 -1
  742. package/es/utils/react-if.js +0 -19
  743. package/es/utils/react-if.js.map +0 -1
  744. package/es/utils/snap-scene.js +0 -100
  745. package/es/utils/snap-scene.js.map +0 -1
  746. package/es/utils/snap.js +0 -238
  747. package/es/utils/snap.js.map +0 -1
  748. package/es/utils/threeCSG.es6.js +0 -499
  749. package/es/utils/threeCSG.es6.js.map +0 -1
  750. package/es/version.js +0 -2
  751. package/es/version.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewer3DDownLoad.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","_classCallCheck","a","n","TypeError","_defineProperties","key","_createClass","i","_toPrimitive","toPrimitive","call","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_inherits","create","_setPrototypeOf","React","PropTypes","ReactDOM","Three","parseData","updateScene","visibleTransformBox","getDistances","fVLine","deleteSpecifiedMeshObjects","createBacksplash","checkCabinetOverlap","disposeScene","disposeObject","diff","SharedStyle","MODE_DRAWING_ITEM_3D","UNIT_CENTIMETER","MODE_DRAWING_HOLE_3D","SECONDARY_PURPLE_COLOR","ARRAY_ELEVATION_VIEW_MODES","MODE_FRONT_ELEVATION_VIEW","MODE_RIGHT_ELEVATION_VIEW","MODE_LEFT_ELEVATION_VIEW","MODE_BACK_ELEVATION_VIEW","MODE_3D_VIEW","BASE_CABINET_LAYOUTPOS","WALL_CABINET_LAYOUTPOS","TALL_CABINET_LAYOUTPOS","isUndefined","verticesDistance","almostEqual","convert","GeometryUtils","RGBELoader","CameraControls","install","THREE","returnReplaceableDeepSearchType","getAllMeshes","vectorIntersectWithMesh","Viewer3DDownLoad","_React$Component","props","_this","state","isLoading","showflag","toolObj","angleObj","waitForRender","lastMousePosition","width","height","renderingID","mode","window","__elevationRendererDownload","renderer","__threeRendererDownload","WebGLRenderer","preserveDrawingBuffer","alpha","antialias","shadowMap","enabled","shadowMapSoft","domElement","style","display","componentDidMount","nextProps","_this2","scene3D","camera","pivot","cameraControls","clock","actions","areaActions","context","holesActions","itemsActions","sceneActions","linesActions","projectActions","catalog","self","scene","setupLight","inbBox","includes","ambilight","AmbientLight","add","addDirLight","inColor","inIntensity","inPosition","dirLight","DirectionalLight","castShadow","shadow","mapSize","x","shadowMapSize","y","near","far","shadowCameraFar","top","shadowCameraSize","bottom","left","right","position","copy","targetObject","Object3D","bboxCenter","target","updateMatrixWorld","addSpotLight","inTarget","inDistance","spotLight","SpotLight","intensity","color","setHex","angle","distance","penumbra","decay","Vector3","z","Math","max","abs","min","dirLightPos","ceiling","getObjectByName","ceilBBox","Box3","setFromObject","spot1","spot2","spot3","spot4","spotlightDis","setState","setIsLoadingElevation","setIsLoading3D","_parseData","promise","planData","then","objToRemove","plan","traverse","obj","geometry","removeFromParent","bbox","radius","angleInDegrees","angleInRadians","PI","eyeX","sin","eyeZ","cos","setLookAt","boundingBox","area","getIn","selectedLayer","layer","areas","lights","snapBox","msg","layers","id","visible","items","item","doorStyle","name","confirm","init","render","data","_loop","aVertices","lines","vertices","_loop3","realVec","vec","ceilHeight","from","unit","to","datas","vertex","fLen","sX","sY","eX","eY","len","sqrt","cLen","cX","cY","endLen","vec2","Vector2","light","toIntersect","mouse","gridPlane","grid","raycaster","Raycaster","selectedObject","currentObject","isSelected","bRotate","bMove","bMoveUP","gridMatrix","Matrix4","rayDirection","gridPlanOrigin","Point","sPoint","snapFlag","snapAnimI","snapDelta","t_i","targetPoint","targetRot","targetUVec","targetCRotation","targetObj","targetNumber","allItemRect","allItemSnap","allLines","allLineRects","allLineSnap","allRect","allArea","backsplashVisible","holeItems","getHoleItems","removeSnapBox","remove","camToGrid","camPos","mapCursorPosition","altitude","subVectors","camD","rayD","intersectPt","multiplyScalar","applyMatrix4","pointLineDistance","point","line","pX","pY","l1x","l1y","l2x","l2y","pLine","Line","pAngle","lAngle","pDistance","oDistance","directDistance","lineDistance","dX","dY","dPoint","getInterSect","shape1","shape2","count","sl1","sl2","j","el1","el2","flag","getLineInterSect","getRectPoints","pos","rot","rX","rY","cRot","floor","prepareSnap","getAllLines","buildRectFromLines","getAllItems","getAllItemSnap","getAllLineSnap","cur","others","concat","validateSnaps","getAllArea","lineRect","areainfo","sz","size","get","rect","vert","collisionCheck","tObj","_this3","undefined","userData","layerId","layoutpos","catid","type","cat","elements","info","oPos","clone","sBounding","children","depth","oVertices","itemId","sceneGraph","console","log","ocatid","ocat","olayoutpos","tRot","rotation","tPos","tBounding","twidth","tdepth","tVertices","_loop2","properties","v","_ret","collisionHoleCheck","currentItem","selectedItem","otherItem","needSnap","holes","holeID","hole","theight","trot","collisionSlide","item3D","originPos","sVertices","cur_category","selected","category","itemID","toJS","exchange","layerID","targetData","targetPos","vArray","dteArray","lineArray","vdistanceArray","cVecArray","inFlag","v1","v2","tPosDistance","realDistance","tPosDistance1","realDistance1","k","temp","temp1","temp2","tX","tY","set","snap","parent","source","sRot","layoutType","altitudeLength","snapBoxGeom","BoxGeometry","snapBoxObj","Mesh","MeshBasicMaterial","transparent","blending","MultiplyBlending","removeSnapBoxObj","box","BoxHelper","material","linewidth","depthTest","renderOrder","deltaX","deltaZ","sPos","tPoses","pZ","tNum","curDis","cx","cz","selectedObj","rotRad","snapLine","lineId","snapLineThickness","iX","iY","lineVec","oLength","normalize","vec2Legnth","lineLength","transLength","directPoint","directLine","dLength","reduceLen","scale","realAngle","result","sourcePos","firstMove","prevX","prevY","selObj","createToolObject","canvas","document","createElement","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","img2","clockWise","lastAngle","createAngleObject","rotate","lineWidth","toolTexture","Texture","needsUpdate","Sprite","SpriteMaterial","map","sizeAttenuation","angleTexture","getPoint","alti","offsetX","offsetY","setFromCamera","ray","direction","updateMouseCoord","getIntersectWallPoint","arrMesh","mesh","intersects","intersectObjects","mouseDownEvent","event","matrixWorld","invert","itemInfo","sCount","transflag","meshes","object","isMesh","toolIntersects","pow","uv","indexOf","isNaN","unselectAll","removeReplacingSupport","selItem","image","centerPos","beginRotatingItem3D","beginDraggingHole3D","beginDraggingItem3D","mouseButtons","ACTION","NONE","setClearColor","Color","COLORS","white","setSize","canvasWrapper","findDOMNode","refs","appendChild","setTimeout","itemPos","err","JSON","stringify","Clock","Scene","background","maxX","maxY","minX","minY","toArray","vertex0","vertex1","x1","y1","x2","y2","l0","l1","line_length","posX","posY","cameraRect","OrthographicCamera","aspectRatio","PerspectiveCamera","enable","loadENV","load","texture","mapping","EquirectangularReflectionMapping","environment","dispose","dollyToCursor","infinityDolly","minDistance","maxDistance","Infinity","zoomSpeed","cam","delta","getDelta","update","updateMatrix","elemID","LODs","rotateY","indexAttribute","getIndex","firstFaceIndices","getX","normalAttribute","attributes","normal","fromBufferAttribute","sub","vertex2","posVec","cameraLine","child","opacity","dot","requestAnimationFrame","componentWillUnmount","cancelAnimationFrame","renderLists","componentWillReceiveProps","_this4","aspect","updateProjectionMatrix","implementBacksplash","allItems","getAllItemSpecified","calcRect","getCalcRectFromItem3D","isSnappedLine","setBacksplashVisible","implementWarningBox","prepareSnapSpec","layer1","changedValues","showfg","_this$state","_updateScene","p1Value","alignItems","justifyContent","animation","alt","pointerEvents","ref","Component","default","propTypes","isRequired","number","replaceCabinet","func","contextTypes"],"sources":["../../../../../../src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx"],"sourcesContent":["'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport * as Three from 'three';\nimport {\n parseData,\n updateScene,\n visibleTransformBox,\n getDistances,\n fVLine,\n deleteSpecifiedMeshObjects,\n createBacksplash,\n checkCabinetOverlap\n} from '../../../../viewer3d/scene-creator';\nimport { disposeScene } from '../../../../viewer3d/three-memory-cleaner';\nimport { disposeObject } from '../../../../viewer3d/three-memory-cleaner';\nimport diff from 'immutablediff';\nimport * as SharedStyle from '../../../../../shared-style';\nimport {\n MODE_DRAWING_ITEM_3D,\n UNIT_CENTIMETER,\n MODE_DRAWING_HOLE_3D,\n SECONDARY_PURPLE_COLOR,\n ARRAY_ELEVATION_VIEW_MODES,\n MODE_FRONT_ELEVATION_VIEW,\n MODE_RIGHT_ELEVATION_VIEW,\n MODE_LEFT_ELEVATION_VIEW,\n MODE_BACK_ELEVATION_VIEW,\n MODE_3D_VIEW,\n BASE_CABINET_LAYOUTPOS,\n WALL_CABINET_LAYOUTPOS,\n TALL_CABINET_LAYOUTPOS\n} from '../../../../../constants';\nimport { isUndefined } from 'util';\nimport { verticesDistance, almostEqual } from '../../../../../utils/geometry';\nimport convert from 'convert-units';\nimport { GeometryUtils } from '../../../../../utils/export';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';\nimport CameraControls from 'camera-controls';\nCameraControls.install({ THREE: Three });\nimport { returnReplaceableDeepSearchType } from '../../../../viewer2d/utils';\nimport {\n getAllMeshes,\n vectorIntersectWithMesh\n} from '../../../../../utils/objects-utils';\n\nexport default class Viewer3DDownLoad extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n showflag: true,\n toolObj: null,\n angleObj: null,\n waitForRender: 0\n };\n this.lastMousePosition = {};\n this.width = props.width;\n this.height = props.height;\n this.renderingID = 0;\n\n let { mode } = props.state;\n\n if (!window.__elevationRendererDownload) {\n window.__elevationRendererDownload = {};\n }\n\n this.renderer =\n (mode == 'MODE_3D_VIEW'\n ? window.__threeRendererDownload\n : window.__elevationRendererDownload[mode]) ||\n new Three.WebGLRenderer({\n preserveDrawingBuffer: true,\n alpha: true,\n antialias: true\n });\n\n this.renderer.shadowMap.enabled = true;\n this.renderer.shadowMapSoft = true;\n if (mode == 'MODE_3D_VIEW') {\n window.__threeRendererDownload = this.renderer;\n } else {\n window.__elevationRendererDownload[mode] = this.renderer;\n }\n\n this.renderer.domElement.style.display = 'none';\n }\n\n componentDidMount(nextProps) {\n let scene3D, camera, pivot, cameraControls, clock;\n\n const actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n const self = this;\n const { state } = this.props;\n const { mode, scene } = state;\n function setupLight(scene, inbBox) {\n if (ARRAY_ELEVATION_VIEW_MODES.includes(mode)) {\n const ambilight = new Three.AmbientLight('0xffffff', 3);\n scene.add(ambilight);\n } else {\n const shadowMapSize = 2048;\n const shadowCameraSize =\n Math.max(\n Math.abs(inbBox.min.x - inbBox.max.x),\n Math.abs(inbBox.min.y - inbBox.max.y),\n Math.abs(inbBox.min.z - inbBox.max.z)\n ) / 2;\n const shadowCameraFar = shadowCameraSize * 10;\n const bboxCenter = new Three.Vector3(\n (inbBox.min.x + inbBox.max.x) / 2,\n inbBox.min.y,\n (inbBox.min.z + inbBox.max.z) / 2\n );\n function addDirLight(inColor, inIntensity, inPosition) {\n const dirLight = new Three.DirectionalLight(inColor, inIntensity);\n dirLight.castShadow = true;\n dirLight.shadow.mapSize.x = shadowMapSize;\n dirLight.shadow.mapSize.y = shadowMapSize;\n dirLight.shadow.camera.near = 0;\n dirLight.shadow.camera.far = shadowCameraFar;\n\n dirLight.shadow.camera.top = shadowCameraSize * 1.5;\n dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.left = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.right = shadowCameraSize * 1.5;\n dirLight.position.copy(inPosition);\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(bboxCenter);\n scene.add(targetObject);\n\n dirLight.target = targetObject;\n dirLight.target.updateMatrixWorld();\n\n scene.add(dirLight);\n }\n function addSpotLight(\n inColor,\n inIntensity,\n inPosition,\n inTarget,\n inDistance\n ) {\n const spotLight = new Three.SpotLight();\n spotLight.intensity = inIntensity;\n spotLight.color.setHex(inColor);\n spotLight.position.copy(inPosition);\n spotLight.angle = 1.3;\n spotLight.distance = inDistance;\n spotLight.penumbra = 1.8;\n spotLight.decay = 0.01;\n\n spotLight.castShadow = true;\n spotLight.shadow.intensity = 2;\n spotLight.shadow.mapSize.width = 4096;\n spotLight.shadow.mapSize.height = 4096;\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(\n new Three.Vector3(inTarget.x, 0, inTarget.z)\n );\n scene.add(targetObject);\n\n spotLight.target = targetObject;\n spotLight.target.updateMatrixWorld();\n scene.add(spotLight);\n }\n\n const dirLightPos = new Three.Vector3(\n inbBox.max.x,\n inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),\n inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)\n );\n\n addDirLight('white', 1.5, dirLightPos);\n\n const ceiling = scene3D.getObjectByName('ceil');\n if (ceiling) {\n const ceilBBox = new Three.Box3().setFromObject(ceiling);\n\n const spot1 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4\n );\n const spot2 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spot3 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n const spot4 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);\n\n // check if spotlight is inside the room\n vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);\n vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);\n vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);\n vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);\n }\n }\n }\n\n // Load data\n this.setState({ isLoading: true, waitForRender: 0 });\n switch (self.props.state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('front', true);\n break;\n case MODE_BACK_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('back', true);\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('left', true);\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('right', true);\n break;\n case MODE_3D_VIEW:\n self.props.setIsLoading3D(true);\n break;\n }\n const { promise, planData } = parseData(\n scene,\n actions,\n this.context.catalog,\n camera,\n this.renderer,\n state.mode\n );\n\n promise.then(() => {\n let objToRemove = [];\n planData.plan.traverse(obj => {\n if (obj.geometry === null) {\n objToRemove.push(obj);\n }\n });\n objToRemove.forEach(obj => {\n obj.removeFromParent();\n });\n const bbox = new Three.Box3().setFromObject(planData.plan);\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n //cameraControls.fitToBox(bbox, true);\n if (cameraControls) {\n const radius = 400; // Distance from target\n const angleInDegrees = 5;\n const angleInRadians = (angleInDegrees * Math.PI) / 180;\n\n // Calculate a position angleInDegrees to the right on the horizontal circle\n const eyeX = Math.sin(angleInRadians) * radius;\n const eyeZ = Math.cos(angleInRadians) * radius;\n\n cameraControls.setLookAt(eyeX, 0, eyeZ, 0, 0, 0); // Set camera with Y elevation\n }\n }\n setupLight(scene3D, planData.boundingBox);\n\n self.setState({ waitForRender: 1 });\n });\n\n const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);\n const layer = scene.getIn(['layers', scene.selectedLayer]);\n const areas = [],\n lights = [];\n\n let snapBox = null;\n\n // Check for data\n let msg = '';\n scene.layers.forEach(layer => {\n if (layer.id === scene.selectedLayer || layer.visible) {\n layer.items.forEach(item => {\n if (item.doorStyle === null) {\n if (!msg.includes(item.name + \"'s doorStyle is null.\"))\n msg += item.name + \"'s doorStyle is null.\\n\";\n }\n });\n }\n });\n if (msg !== '') {\n confirm(msg);\n }\n\n init();\n render();\n\n area.forEach(data => {\n areas.push(data);\n });\n for (let i = 0; i < areas.length; i++) {\n let aVertices = [];\n let lines = [];\n let height = 100;\n areas[i].vertices.forEach(data => {\n aVertices.push(data);\n });\n layer.lines.forEach(data => {\n lines.push(data);\n });\n for (let i = 0; i < lines.length; i++) {\n let data = lines[i];\n let realVec = [];\n data.vertices.forEach(vec => {\n realVec.push(vec);\n });\n if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {\n height = convert(layer.ceilHeight)\n .from(layer.unit)\n .to(UNIT_CENTIMETER);\n // height = data.properties.getIn(['height', 'length']);\n break;\n }\n }\n let vertices = [];\n areas[i].vertices.forEach(datas => {\n let vertex = scene.getIn([\n 'layers',\n scene.selectedLayer,\n 'vertices',\n datas\n ]);\n vertices.push(vertex);\n });\n vertices.push(vertices[0]);\n let fLen = vertices.length - 1;\n for (let i = 0; i < fLen; i++) {\n let sX = vertices[i].x;\n let sY = vertices[i].y;\n let eX = vertices[i + 1].x;\n let eY = vertices[i + 1].y;\n let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));\n for (let cLen = 200; cLen < len; cLen += 200) {\n let cX = sX + ((eX - sX) * cLen) / len;\n let cY = sY + ((eY - sY) * cLen) / len;\n let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));\n if (endLen <= 100) continue;\n let vec2 = new Three.Vector2(cX - sX, cY - sY);\n let angle = vec2.angle() + Math.PI / 2;\n cX = Math.cos(angle) * 30 + cX;\n cY = Math.sin(angle) * 30 + cY;\n let spotLight = new Three.SpotLight(0xeeeeee, 1.7);\n spotLight.angle = 0.76;\n spotLight.castShadow = true;\n spotLight.penumbra = 1;\n spotLight.decay = 1.7;\n spotLight.distance = height - 20;\n let target = new Three.Object3D();\n spotLight.target = target;\n lights.push({\n light: spotLight,\n target: target,\n x: cX,\n y: cY,\n height: height\n });\n }\n }\n }\n // //////////////////////////\n\n // OBJECT PICKING\n let toIntersect = [planData.plan];\n let mouse = new Three.Vector2();\n let gridPlane = planData.grid;\n let raycaster = new Three.Raycaster();\n let selectedObject = {};\n let currentObject = null;\n let isSelected = false;\n let bRotate = false;\n let bMove = false;\n let bMoveUP = false;\n /** Transformation matrix of grid */\n const gridMatrix = new Three.Matrix4();\n let rayDirection = new Three.Vector3();\n /** World position of grid plane */\n let gridPlanOrigin = new Three.Vector3();\n let Point = new Three.Vector2();\n let sPoint = new Three.Vector2();\n\n // SNAP FUNCTION VARIABLE\n let snapFlag = false;\n let snapAnimI = 0;\n let snapDelta = 6;\n let t_i = 0;\n let targetPoint = new Three.Vector3();\n let targetRot = 0;\n let targetUVec = new Three.Vector3();\n let targetCRotation = 0;\n let targetObj = null;\n let targetNumber = 0;\n\n let allItemRect;\n let allItemSnap;\n let allLines;\n let allLineRects;\n let allLineSnap;\n let allRect;\n let allArea;\n\n // end snap function variable///////////////////////\n let backsplashVisible = false;\n let holeItems = GeometryUtils.getHoleItems(layer);\n\n let removeSnapBox = () => {\n if (snapBox != null) {\n planData.plan.remove(snapBox);\n disposeObject(snapBox);\n snapBox = null;\n targetObj = null;\n snapFlag = false;\n }\n };\n\n const camToGrid = new Three.Vector3();\n let camPos = camera.position;\n\n const mapCursorPosition = (e, altitude) => {\n camToGrid.subVectors(gridPlanOrigin, camPos);\n\n let camD = camToGrid.y + (altitude ? altitude : 0);\n let rayD = rayDirection.y;\n\n const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);\n intersectPt.y = gridPlanOrigin.y;\n intersectPt.applyMatrix4(gridMatrix);\n\n return { x: intersectPt.x, y: -intersectPt.z };\n };\n\n /* for Snap Functions*/\n\n let pointLineDistance = function (point, line) {\n // return distance from point to line and directional point of line\n let pX = point.x;\n let pY = point.y;\n let l1x = line[0].x;\n let l1y = line[0].y;\n let l2x = line[1].x;\n let l2y = line[1].y;\n let pLine = new Three.Vector2(l1x - pX, l1y - pY);\n let Line = new Three.Vector2(l1x - l2x, l1y - l2y);\n let pAngle = pLine.angle();\n let lAngle = Line.angle();\n let pDistance = pLine.length();\n let oDistance = Line.length();\n let directDistance = Math.sin(pAngle - lAngle) * pDistance;\n let lineDistance = Math.cos(pAngle - lAngle) * pDistance;\n let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;\n let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;\n let dPoint = { x: dX, y: dY };\n return { distance: directDistance, point: dPoint };\n };\n let getInterSect = function (shape1, shape2) {\n // return result of intersect of two shape\n let count = 0;\n for (let i = 0; i < shape1.length - 1; i++) {\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\n let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };\n for (let j = 0; j < shape2.length - 1; j++) {\n let el1 = { x: shape2[j].x, y: shape2[j].y };\n let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };\n let flag = GeometryUtils.getLineInterSect(\n sl1.x,\n sl1.y,\n sl2.x,\n sl2.y,\n el1.x,\n el1.y,\n el2.x,\n el2.y\n );\n if (flag) {\n count++;\n if (count > 1) return true;\n }\n }\n }\n return false;\n };\n\n this.getRectPoints = function (width, height, pos, rot) {\n // return 4 points from it's position, width, height, and rotation info\n let rX = width / 2;\n let rY = height / 2;\n let vertices = [];\n let cRot = rot;\n let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rY = -rY;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n vertices.push(vertices[0]);\n vertices.push(vertices[2]);\n return vertices;\n };\n\n const prepareSnap = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItems(\n this.props.state.scene,\n actions.catalog,\n allLineRects\n );\n allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\n allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);\n allRect = allItemRect.others.concat(allLineRects);\n allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);\n allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);\n allArea = GeometryUtils.getAllArea(layer);\n };\n\n // prepareSnapSpec(layer);\n let lineRect = layer => {\n let areainfo = [];\n layer.areas.forEach(area => {\n let sz = area.vertices.size;\n for (var i = 0; i < sz; i++) {\n areainfo.push(area.vertices.get(i));\n }\n });\n let rect = [];\n areainfo.forEach(area => {\n let vert = layer.vertices.get(area);\n rect.push(vert.x, vert.y);\n });\n return rect;\n };\n\n this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {\n //collision check from one object to every other object excpet target object\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let layoutpos = 'utype';\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n layoutpos = cat.info.layoutpos;\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n let olayoutpos = ocat.info.layoutpos;\n if (\n !(\n (layoutpos === BASE_CABINET_LAYOUTPOS &&\n olayoutpos === WALL_CABINET_LAYOUTPOS) ||\n (layoutpos === WALL_CABINET_LAYOUTPOS &&\n olayoutpos === BASE_CABINET_LAYOUTPOS)\n )\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n datas = [];\n layer.lines.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let item = layer.lines.getIn([data.id]);\n // let llayoutpos = catalog.elements[item.type].info.layoutpos;\n let vertices = [];\n item.vertices.forEach(data => {\n let vertex = layer.vertices.get(data);\n vertices.push({ x: vertex.x, y: vertex.y });\n });\n let vec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let tRot = vec.angle();\n let tPos = new Three.Vector2(\n (vertices[0].x + vertices[1].x) / 2,\n (vertices[0].y + vertices[1].y) / 2\n );\n let tdepth = item.properties.getIn(['thickness', 'length']);\n let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);\n let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionHoleCheck = function (\n obj,\n pos,\n rot,\n tObj,\n item = null,\n catalog\n ) {\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let currentItem;\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n currentItem = {\n selectedItem: item,\n cat\n };\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n if (!ocat)\n ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];\n let otherItem = {\n item,\n cat: ocat\n };\n\n if (\n GeometryUtils.needSnap(currentItem, otherItem) &&\n otherItem.cat.type != 'cabinet'\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n\n let holes = [];\n layer.lines.forEach(line => {\n line.holes.forEach(holeID => {\n let hole = layer.holes.get(holeID);\n holes.push(hole);\n });\n });\n let i = 0;\n for (; i < holes.length; i++) {\n let tPos = new Three.Vector2(holes[i].x, holes[i].y);\n let twidth = holes[i].properties.getIn(['width', 'length']);\n let theight = holes[i].properties.getIn(['thickness', 'length']);\n let trot = holes[i].rotation;\n let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionSlide = function (\n item3D,\n originPos,\n layer,\n sVertices,\n tPos,\n item\n ) {\n let items = [];\n\n let cur_category = '';\n let catalog = actions.catalog;\n if (layer.selected.items.size > 0) {\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\n let catid = selectedItem.type;\n let cat = catalog.elements[catid];\n if (cat === undefined || cat === null)\n cat = catalog.getIn(['elements', catid]);\n cur_category = cat.obj.category;\n }\n\n layer.items.forEach(data => {\n if (data.id == selectedObject.itemID) {\n return;\n }\n\n items.push(data.toJS());\n });\n let oPos = new Three.Vector2(originPos.x, -originPos.z);\n\n // sort from distance\n for (let i = 0; i < items.length - 1; i++) {\n for (let j = i + 1; j < items.length; j++) {\n if (\n verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >\n verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))\n ) {\n let exchange = items[j];\n items[j] = items[i];\n items[i] = exchange;\n }\n }\n }\n let i = 0;\n\n for (; i < items.length; i++) {\n if (!items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n if (target === undefined) {\n return false;\n }\n let targetData = layer.items.getIn([items[i].id]);\n let tRot = targetData.rotation;\n let tPos = new Three.Vector2(targetData.x, targetData.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(sVertices, tVertices)) {\n break;\n }\n }\n if (items.length == 0 || !items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n let targetData = layer.items.getIn([items[i].id]);\n let targetPos = new Three.Vector2(targetData.x, targetData.y);\n let tRot = targetData.rotation;\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n targetPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n // ////////////////////////\n let vArray = [];\n let dteArray = [];\n let lineArray = [];\n let vdistanceArray = [];\n let cVecArray = [];\n let inFlag = false;\n for (let i = 0; i < 4; i++) {\n let v1 = tVertices[i];\n let v2 = tVertices[i + 1];\n let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [\n { x: v1.x, y: v1.y },\n { x: v2.x, y: v2.y }\n ]);\n dteArray.push(data.distance);\n vArray.push(data.point);\n lineArray.push([v1, v2]);\n }\n // if tPos in target object\n let tPosDistance =\n Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[2]).distance);\n let realDistance = new Three.Vector2(\n lineArray[1][0].x - lineArray[1][1].x,\n lineArray[1][0].y - lineArray[1][1].y\n ).length();\n let tPosDistance1 =\n Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[3]).distance);\n let realDistance1 = new Three.Vector2(\n lineArray[0][0].x - lineArray[0][1].x,\n lineArray[0][0].y - lineArray[0][1].y\n ).length();\n if (\n Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&\n Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01\n )\n inFlag = true;\n // ////////////////////\n let key = 0;\n // sort distance from origin point\n for (let j = 0; j < dteArray.length - 1; j++) {\n for (let k = j + 1; k < dteArray.length; k++) {\n if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {\n let temp = dteArray[k];\n dteArray[j] = dteArray[k];\n dteArray[k] = temp;\n let temp1 = vArray[k];\n vArray[j] = vArray[k];\n vArray[k] = temp1;\n let temp2 = lineArray[k];\n lineArray[j] = lineArray[k];\n lineArray[k] = temp2;\n }\n }\n }\n // //////////////////////////////\n for (let i = 0; i < 4; i++) {\n let data = pointLineDistance(sVertices[i], lineArray[key]);\n vdistanceArray.push(data.distance);\n cVecArray.push({\n x: data.point.x - sVertices[i].x,\n y: data.point.y - sVertices[i].y\n });\n }\n\n for (let j = 0; j < vdistanceArray.length; j++) {\n let tX = tPos.x + cVecArray[j].x;\n let tY = tPos.y + cVecArray[j].y;\n if (\n this.collisionCheck(\n item3D,\n new Three.Vector2(tX, tY),\n item.rotation,\n {\n userData: { itemId: null }\n },\n item,\n this.context.catalog\n )\n ) {\n item3D.position.set(tX, originPos.y, -tY);\n sPoint.set(tX, tY);\n break;\n }\n }\n };\n\n this.snap = function (obj, layer) {\n // snap operation\n let target = obj.userData.target;\n for (; target.parent != null; ) {\n if (target.name == 'pivot') break;\n target = target.parent;\n }\n let source = obj.parent.parent.parent;\n if (target.userData.type == 'item') {\n let sRot = layer.getIn(['items', source.userData.itemId]).rotation;\n let tRot = layer.getIn(['items', target.userData.itemId])\n ? layer.getIn(['items', target.userData.itemId]).rotation\n : 0;\n let item = layer.getIn(['items', source.userData.itemId]);\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let tBounding = target.children[0].userData;\n let tPos = target.position.clone();\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 200;\n snapBoxObj.add(box);\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n let deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 +\n (sBounding.max.x - sBounding.min.x) / 2;\n let deltaZ =\n (tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n let sPos = snapBoxObj.position.clone();\n // avaliable snap place///////////////\n let tPoses = [];\n let pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n let pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 -\n (sBounding.max.x - sBounding.min.x) / 2;\n deltaZ =\n -(tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n let distance = Math.sqrt(\n (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +\n (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)\n );\n let tNum = 1;\n tPos = tPoses[0].clone();\n for (let i = 1; i < tPoses.length; i++) {\n let curDis = Math.sqrt(\n (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +\n (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)\n );\n if (curDis < distance) {\n distance = curDis;\n tNum = i + 1;\n tPos = tPoses[i].clone();\n }\n }\n // //////////////////////////////////\n if (\n targetObj != null &&\n targetObj.userData.itemId == target.userData.itemId &&\n tNum == targetNumber\n ) {\n removeSnapBoxObj();\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////\n if (tNum >= 3) tRot += 180;\n\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = tPos;\n snapBox = snapBoxObj;\n let cx = sPos.x - tPos.x;\n let cz = sPos.z - tPos.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n } else {\n let item = layer.getIn(['items', source.userData.itemId]);\n if (holeItems.length) {\n let i;\n for (i = 0; i < holeItems.length; i++) {\n let hole = holeItems[i];\n if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {\n if (\n item.y + selectedObj.size.width / 2 >=\n hole.y - hole.width / 2 &&\n item.y - selectedObj.size.width / 2 <=\n hole.y + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.x <= hole.x &&\n item.x + selectedObj.size.height >= hole.x\n : item.x >= hole.x &&\n item.x - selectedObj.size.height <= hole.x)\n )\n break;\n } else {\n if (\n item.x + selectedObj.size.width / 2 >=\n hole.x - hole.width / 2 &&\n item.x - selectedObj.size.width / 2 <=\n hole.x + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.y <= hole.y &&\n item.y + selectedObj.size.height >= hole.y\n : item.y >= hole.y &&\n item.y - selectedObj.size.height <= hole.y)\n )\n break;\n }\n }\n if (i != holeItems.length) return;\n }\n if (target.userData.type == 'hole') {\n snapFlag = false;\n return;\n } else {\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 100;\n snapBoxObj.add(box);\n\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n\n let snapLine = layer.getIn(['lines', target.userData.lineId]);\n // let snapLineThickness = snapLine.properties.getIn([\n // 'thickness',\n // 'length'\n // ]);\n let snapLineThickness = 10.64;\n let vertices = [];\n if (snapLine === undefined) return;\n snapLine.vertices.forEach(data => {\n let vec = layer.getIn(['vertices', data]);\n vertices.push(vec);\n });\n let iX = source.position.clone().x;\n let iY = -source.position.clone().z;\n let lineVec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let oLength = Math.sqrt(\n lineVec.x * lineVec.x + lineVec.y * lineVec.y\n );\n lineVec.normalize();\n let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);\n let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\n let angle = Math.abs(lineVec.angle() - vec2.angle());\n angle = angle > Math.PI ? 2 * Math.PI - angle : angle;\n let lineLength = Math.cos(angle) * vec2Legnth;\n let transLength = 0;\n if (lineLength < 100) {\n transLength = -lineLength + (snapLineThickness + width) / 2;\n }\n if (lineLength > oLength - 100) {\n transLength =\n -lineLength - (snapLineThickness + width) / 2 + oLength;\n }\n let directPoint = new Three.Vector2(\n lineVec.x * lineLength + vertices[0].x,\n lineVec.y * lineLength + vertices[0].y\n );\n let directLine = new Three.Vector2(\n directPoint.x - iX,\n directPoint.y - iY\n );\n let dLength = Math.sqrt(\n (iX - directPoint.x) * (iX - directPoint.x) +\n (iY - directPoint.y) * (iY - directPoint.y)\n );\n let reduceLen = (snapLineThickness + depth) / 2;\n let scale = (dLength - reduceLen) / dLength;\n let tPos = new Three.Vector2(\n iX + (directPoint.x - iX) * scale + lineVec.x * transLength,\n iY + (directPoint.y - iY) * scale + lineVec.y * transLength\n );\n let realAngle = directLine.angle() - Math.PI / 2;\n let tRot = (realAngle * 180) / Math.PI;\n let sPos = new Three.Vector2(iX, iY);\n let sRot = item.rotation;\n let tNum = 0;\n // //////////////////////////////////////\n // check part////\n let result = this.collisionCheck(\n source,\n tPos,\n tRot,\n target,\n item,\n this.context.catalog\n );\n // console.log('result', result);\n if (result == false) {\n removeSnapBoxObj();\n removeSnapBox();\n return;\n }\n // ////////////////\n if (targetObj === target && snapBox !== null) {\n removeSnapBoxObj();\n snapAnimI = 20;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n snapFlag = false;\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////////\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n snapBox = snapBoxObj;\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n }\n }\n };\n\n /*end of snap functions*/\n let selectedObj = null;\n let firstMove = false;\n let prevX, prevY;\n\n let selObj = null;\n\n let createToolObject = () => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 200;\n canvas.style.width = 50 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = '#FFFFFF';\n ctx.strokeStyle = '#000000';\n ctx.beginPath();\n ctx.arc(50, 50, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img1 = new Image();\n img1.crossOrigin = 'anonymous';\n img1.src = '/assets/img/svg/3d_item_rotation.svg';\n img1.onload = function () {\n ctx.drawImage(img1, 16, 16, 68, 68);\n };\n\n ctx.beginPath();\n ctx.arc(50, 150, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img2 = new Image();\n img2.crossOrigin = 'anonymous';\n img2.src = '/assets/img/svg/3d_item_move.svg';\n img2.onload = function () {\n ctx.drawImage(img2, 16, 116, 68, 68);\n };\n\n return canvas;\n };\n\n let clockWise = true;\n let lastAngle = 0;\n\n let createAngleObject = rotate => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 100;\n canvas.style.width = 100 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.strokeStyle = '#FFFFFF';\n ctx.lineWidth = 10;\n ctx.beginPath();\n ctx.arc(50, 50, 45, 0, 2 * Math.PI);\n ctx.stroke();\n\n ctx.strokeStyle = SECONDARY_PURPLE_COLOR;\n ctx.lineWidth = 6;\n ctx.beginPath();\n if (lastAngle < 15 && lastAngle > -15) {\n if (rotate >= 0) {\n clockWise = false;\n } else {\n clockWise = true;\n }\n if (lastAngle === 0) {\n if (rotate > -180) {\n clockWise = true;\n } else {\n clockWise = false;\n }\n }\n }\n\n ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);\n ctx.stroke();\n\n lastAngle = rotate;\n\n return canvas;\n };\n\n let toolTexture = new Three.Texture(createToolObject());\n toolTexture.needsUpdate = true;\n\n let toolObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })\n );\n toolObj.material.transparent = true;\n toolObj.material.depthTest = false;\n toolObj.scale.set(20, 40, 20);\n toolObj.renderOrder = 3;\n toolObj.name = 'toolObj';\n\n let angleTexture = new Three.Texture(createAngleObject(0));\n angleTexture.needsUpdate = true;\n\n let angleObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })\n );\n\n angleObj.scale.set(0.075, 0.075, 0.075);\n angleObj.material.transparent = true;\n angleObj.material.depthTest = false;\n angleObj.renderOrder = 3;\n angleObj.name = 'angleObj';\n\n /**\n * Calculate plane point of mouse with `event` & `altitude`\n * * Calculate mouse.x & mouse.y\n * * Set raycaster from camera & Set raycaster direction\n * * Calculate Point & dispatch an action\n */\n const getPoint = (e, alti) => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n Point = mapCursorPosition(e, alti);\n this.context.projectActions.updateMouseCoord(Point);\n };\n\n const getIntersectWallPoint = e => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;\n let keys = Object.keys(lines);\n let arrMesh = [];\n keys.forEach(key => {\n lines[key].children[0].children.forEach(mesh => {\n if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);\n });\n });\n if (arrMesh.length > 0) {\n const intersects = raycaster.intersectObjects(arrMesh);\n if (intersects.length > 0) {\n let intersectPt = intersects[0].point;\n intersectPt.applyMatrix4(gridMatrix);\n\n Point = { x: intersectPt.x, y: -intersectPt.z };\n this.context.projectActions.updateMouseCoord(Point);\n return true;\n }\n }\n\n return false;\n };\n\n this.mouseDownEvent = event => {\n gridPlanOrigin = gridPlane.position;\n gridMatrix.copy(gridPlane.matrixWorld).invert();\n let altitude = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n altitude = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(event, altitude);\n\n const state = this.props.state;\n\n this.lastMousePosition.x = mouse.x;\n this.lastMousePosition.y = mouse.y;\n\n const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);\n const sCount =\n layer.selected.areas.size +\n layer.selected.holes.size +\n layer.selected.items.size +\n layer.selected.lines.size;\n\n if (sCount <= 0) {\n isSelected = false;\n } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {\n isSelected = true;\n }\n\n prevX = Point.x;\n prevY = Point.y;\n\n /**\n * 0 - rotate\n * 1 - move up/down\n * 2 - move x/y\n * 3 - camera rotate\n */\n let transflag = 3;\n raycaster.setFromCamera(mouse, camera);\n const meshes = [];\n toIntersect.forEach(object => {\n if (!object) return;\n object.traverse(o => {\n if (o.isMesh) meshes.push(o);\n });\n });\n let intersects = raycaster.intersectObjects(meshes, true);\n\n let toolIntersects = raycaster.intersectObjects([toolObj], true);\n\n if (toolIntersects.length > 0) {\n let distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 2;\n } else {\n distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 0;\n }\n }\n }\n\n if (intersects.length > 0) {\n let i = 0,\n length = intersects.length;\n for (i = 0; i < length; i++) {\n if (\n intersects[i].object.type !== 'BoxHelper' &&\n // intersects[i].object.type === OBJTYPE_MESH &&\n intersects[i].object.name !== 'lineText' &&\n intersects[i].object.name !== 'soul' &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n\n if (intersects[i] !== undefined) {\n if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;\n if (intersects[i].object.name.indexOf('transHole') != -1)\n transflag = 2;\n } else {\n console.log('intersects[i] is undefined in viewer3d/viewer3d.js');\n }\n }\n\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;\n\n if (isSelected) {\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\n let i;\n for (i = 0; i < intersects.length; i++) {\n if (\n intersects[i].object instanceof Three.Mesh &&\n intersects[i].object.name != 'TransformBox' &&\n intersects[i].object.type != 'Line' &&\n intersects[i].object.name != 'lineText' &&\n intersects[i].object.name != 'countertops' &&\n intersects[i].object.type != 'BoxHelper' &&\n intersects[i].object.name != 'floor' &&\n intersects[i].object.name != 'backFace' &&\n intersects[i].object.name != 'soul' &&\n !intersects[i].object.name.includes('backsplash') &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n if (intersects[i] === undefined) {\n if (transflag !== 0 && transflag !== 2) {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n return;\n }\n }\n if (selectedObject !== undefined) {\n sPoint.set(Point.x, Point.y);\n if (transflag == 0) {\n scene3D.remove(toolObj);\n let alti = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n alti = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(\n { offsetX: event.offsetX - 50, offsetY: event.offsetY },\n alti\n );\n let selectedItem =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(selectedItem)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n\n lastAngle = 0;\n\n angleObj.position.set(\n planData.plan.position.x + Point.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : selItem.properties.get('altitude').get('length') +\n planData.plan.position.y,\n planData.plan.position.z - Point.y\n );\n\n angleTexture.image = createAngleObject(0);\n angleTexture.needsUpdate = true;\n\n scene3D.add(angleObj);\n this.setState({ angleObj: angleObj });\n let centerPos = Point;\n getPoint(event, alti);\n\n this.context.itemsActions.beginRotatingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y,\n centerPos.x,\n centerPos.y\n );\n bRotate = true;\n } else if (transflag == 1) {\n bMoveUP = true;\n } else if (transflag == 2) {\n switch (true) {\n case 'holeID' in selectedObject:\n this.context.holesActions.beginDraggingHole3D(\n selectedObject.layerID,\n selectedObject.holeID,\n Point.x,\n Point.y\n );\n break;\n default:\n this.context.itemsActions.beginDraggingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y\n );\n break;\n }\n bMove = true;\n scene3D.remove(toolObj);\n }\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(mode))\n cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;\n }\n } else {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n return;\n }\n }\n };\n\n this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color\n this.renderer.setSize(this.width, this.height);\n\n // Add the output of the renderer to the html element\n const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);\n canvasWrapper.appendChild(this.renderer.domElement);\n\n //\n\n if (\n scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=\n 0\n ) {\n // if selected Object\n isSelected = true;\n selectedObject.layerID = scene.selectedLayer;\n selectedObject.itemID = scene\n .getIn(['layers', scene.selectedLayer, 'selected', 'items'])\n .toJS()[0];\n setTimeout(() => {\n try {\n currentObject =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(currentObject)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n let itemPos = currentObject.position.clone();\n toolObj.position.set(\n planData.plan.position.x + itemPos.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : planData.plan.position.y + currentObject.children[0].position.y,\n planData.plan.position.z + itemPos.z\n );\n\n scene3D.add(toolObj);\n this.setState({ toolObj: toolObj });\n } catch (err) {\n console.log(\n 'selectedObject : ' +\n JSON.stringify(selectedObject) +\n '\\nError: ' +\n err\n );\n }\n }, 2000);\n }\n\n // Scene functions\n\n function init() {\n clock = new Three.Clock();\n scene3D = new Three.Scene();\n scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\n // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);\n window.scene3D = scene3D;\n // Camera\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n let { layers } = scene;\n let selectedLayer = layers.get(scene.selectedLayer);\n let ceilHeight = convert(selectedLayer.ceilHeight)\n .from(selectedLayer.unit)\n .to(scene.unit);\n let vertices = selectedLayer.vertices.toJS();\n let maxX = 0,\n maxY = 0,\n minX = 0,\n minY = 0;\n let lines = [];\n selectedLayer.lines.toArray().forEach(line => {\n let vertex0 = selectedLayer.vertices.get(line.vertices.get(0));\n let vertex1 = selectedLayer.vertices.get(line.vertices.get(1));\n let { x: x1, y: y1 } = vertex0;\n let { x: x2, y: y2 } = vertex1;\n let data = line.toJS();\n data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };\n switch (mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 < x2) {\n lines.push(data);\n }\n break;\n case MODE_BACK_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 > x2) {\n lines.push(data);\n }\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 < y2) {\n lines.push(data);\n }\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 > y2) {\n lines.push(data);\n }\n break;\n default:\n break;\n }\n });\n for (let vertex in vertices) {\n maxX = Math.max(vertices[vertex].x, maxX);\n maxY = Math.max(vertices[vertex].y, maxY);\n if (minX === 0) minX = vertices[vertex].x;\n if (minY === 0) minY = vertices[vertex].y;\n minX = Math.min(vertices[vertex].x, minX);\n minY = Math.min(vertices[vertex].y, minY);\n }\n let line_length, angle, posX, posY;\n switch (state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = -(minY - 100);\n posX = (minX + maxX) / 2;\n angle = 0;\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = -(minX - 100);\n posY = (minY + maxY) / 2;\n angle = -Math.PI / 2;\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = maxX + 100;\n posY = (minY + maxY) / 2;\n angle = Math.PI / 2;\n break;\n case MODE_BACK_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = maxY + 100;\n posX = (minX + maxX) / 2;\n angle = Math.PI;\n break;\n }\n let scale = Math.min(\n (self.width * 0.85) / line_length,\n (self.height * 0.85) / ceilHeight\n );\n // let frontRect = {width: line_length * scale, height: ceilHeight * scale};\n let cameraRect = {\n width: self.width / scale,\n height: self.height / scale\n };\n camera = new Three.OrthographicCamera(\n -cameraRect.width / 2,\n cameraRect.width / 2,\n cameraRect.height / 2,\n -cameraRect.height / 2,\n 1,\n 10000\n );\n camera.position.set(posX, ceilHeight / 2, -posY);\n camera.rotation.set(0, angle, 0);\n } else {\n const aspectRatio = self.width / self.height;\n camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);\n camera.position.set(0, 0, 1);\n }\n camera.layers.enable(1);\n\n function loadENV() {\n new RGBELoader().load(\n '/assets/brown_photostudio_02_1k.hdr',\n function (texture) {\n texture.mapping = Three.EquirectangularReflectionMapping;\n scene3D.environment = texture;\n texture.dispose();\n }\n );\n }\n\n // Camera Controls\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n cameraControls = new CameraControls(camera, self.renderer.domElement);\n cameraControls.dollyToCursor = true;\n cameraControls.infinityDolly = true;\n cameraControls.minDistance = 50;\n cameraControls.maxDistance = Infinity;\n cameraControls.zoomSpeed = 1;\n\n loadENV();\n }\n\n scene3D.add(planData.plan);\n scene3D.add(planData.grid);\n scene3D.add(camera);\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n planData.cam.add(camera);\n scene3D.add(planData.cam);\n } else {\n pivot = new Three.Object3D();\n pivot.add(camera);\n scene3D.add(pivot);\n }\n\n // LIGHT\n\n let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light\n }\n\n function render() {\n const delta = clock.getDelta(); // Get time delta for smooth updates\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode))\n cameraControls.update(delta);\n for (let i = 0; i < lights.length; i++) {\n lights[i].light.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y + lights[i].height - 10,\n planData.plan.position.z - lights[i].y\n );\n lights[i].target.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y,\n planData.plan.position.z - lights[i].y\n );\n }\n\n camera.updateMatrix();\n camera.updateMatrixWorld();\n\n for (let elemID in planData.sceneGraph.LODs) {\n planData.sceneGraph.LODs[elemID].update(camera);\n }\n if (snapBox !== null) {\n if (snapAnimI >= 15) {\n if ('x' in targetPoint)\n snapBox.position.set(\n targetPoint.x,\n snapBox.position.y,\n targetPoint.z\n );\n snapFlag = false;\n t_i++;\n } else {\n if (snapAnimI == 0) {\n targetCRotation =\n ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *\n 180) /\n Math.PI) %\n 360;\n if (targetCRotation > 180) targetCRotation -= 360;\n if (targetCRotation < -180) targetCRotation += 360;\n targetCRotation = (targetCRotation / 180) * Math.PI;\n }\n if (snapAnimI < 10) {\n snapBox.rotateY(targetCRotation / 10);\n } else {\n snapBox.position.set(\n snapBox.position.clone().x - targetUVec.x / 10,\n snapBox.position.clone().y - targetUVec.y / 10,\n snapBox.position.clone().z - targetUVec.z / 10\n );\n }\n snapAnimI++;\n }\n }\n\n if (t_i === 20) {\n //stop snap after 5s\n removeSnapBox();\n }\n\n // hide hole if wall is not visible\n let layerID = self.props.state.scene.selectedLayer;\n let layer = self.props.state.scene.layers.get(layerID);\n layer.holes.forEach(data => {\n let line = planData.sceneGraph.layers[layerID].lines[data.line];\n let hole = planData.sceneGraph.layers[layerID].holes[data.id];\n if (line instanceof Three.Object3D && !line.isMesh) {\n line = line.children[0].children[0];\n // index(faces) of the line\n const indexAttribute = line.geometry.getIndex();\n const firstFaceIndices = [\n indexAttribute.getX(0),\n indexAttribute.getX(1),\n indexAttribute.getX(2)\n ];\n\n if (firstFaceIndices == undefined) return;\n // normal vector of the line\n const normalAttribute = line.geometry.attributes.normal;\n let normal = new Three.Vector3()\n .fromBufferAttribute(normalAttribute, 0)\n .clone();\n normal = normal\n .applyMatrix4(line.matrixWorld)\n .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))\n .normalize();\n let vertices = layer.lines.get(data.line).vertices.toJS();\n let vertex1 = layer.vertices.get(vertices[0]);\n let vertex2 = layer.vertices.get(vertices[1]);\n let cX = (vertex1.x + vertex2.x) / 2;\n let cY = (vertex1.y + vertex2.y) / 2;\n let posVec = new Three.Vector3(cX, 150, -cY);\n posVec = posVec.add(planData.plan.position.clone());\n let cameraLine = camera.position.clone().sub(posVec);\n if (hole) {\n hole.traverse(child => {\n if (child.isMesh) {\n child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;\n child.material.transparent =\n cameraLine.dot(normal) > 0 ? false : true;\n child.material.needsUpdate = true;\n }\n });\n }\n }\n // /////////////////////////////////////\n });\n\n if (scene3D && camera) {\n self.renderer.render(scene3D, camera);\n }\n self.renderingID = requestAnimationFrame(render);\n\n if (self.state.waitForRender > 0) {\n self.state.waitForRender++;\n if (self.state.waitForRender > 2) {\n self.setState({ isLoading: false, waitForRender: 0 });\n\n switch (self.props.state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n setTimeout(() => {\n self.props.setIsLoadingElevation('front', false);\n }, 100);\n break;\n case MODE_BACK_ELEVATION_VIEW:\n setTimeout(() => {\n self.props.setIsLoadingElevation('back', false);\n }, self);\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n setTimeout(() => {\n self.props.setIsLoadingElevation('left', false);\n }, 100);\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n setTimeout(() => {\n self.props.setIsLoadingElevation('right', false);\n }, 100);\n break;\n case MODE_3D_VIEW:\n setTimeout(() => self.props.setIsLoading3D(false), 100);\n break;\n }\n self.renderer.domElement.style.display = 'block';\n }\n }\n }\n\n //\n\n window.planData = planData;\n this.planData = planData;\n this.camera = camera;\n this.cameraControls = cameraControls;\n this.scene3D = scene3D;\n\n prepareSnap(layer);\n }\n\n componentWillUnmount() {\n cancelAnimationFrame(this.renderingID);\n\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(this.props.state.mode)) {\n if (this.cameraControls !== undefined) this.cameraControls.dispose();\n }\n\n disposeScene(this.scene3D);\n this.scene3D.remove(this.planData.plan);\n this.scene3D.remove(this.planData.grid);\n\n this.scene3D = null;\n this.planData = null;\n this.camera = null;\n this.cameraControls = null;\n this.renderer.renderLists.dispose();\n }\n\n componentWillReceiveProps(nextProps) {\n if (diff(this.props.state, nextProps.state).toJS().length == 0) return;\n\n let { width, height } = nextProps;\n let actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n this.width = width;\n this.height = height;\n\n this.renderer.setSize(width, height);\n\n let allLines;\n let allLineRects;\n let allItemRect;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n let data = nextProps.state.scene;\n let layer = data.getIn(['layers', data.selectedLayer]);\n const self = this;\n\n function implementBacksplash() {\n let allItems = GeometryUtils.getAllItemSpecified(\n nextProps.state.scene,\n actions.catalog,\n BASE_CABINET_LAYOUTPOS\n );\n let i,\n items = [];\n for (i = 0; i < allItems.others.length; i++)\n items.push(allItems.others[i]);\n if (allItems.cur) items.push(allItems.cur);\n\n for (i = 0; i < items.length; i++) {\n let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);\n let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);\n actions.itemsActions.setBacksplashVisible(\n items[i].itemInfo.id,\n visible\n );\n\n createBacksplash(\n items[i],\n nextProps.state.scene.getIn([\n 'layers',\n nextProps.state.scene.selectedLayer\n ]),\n planData,\n nextProps.state.scene\n );\n }\n }\n function implementWarningBox() {\n let holeItems = GeometryUtils.getHoleItems(layer);\n let i,\n items = [];\n for (i = 0; i < allItemRect.others.length; i++)\n items.push(allItemRect.others[i]);\n if (allItemRect.cur) items.push(allItemRect.cur);\n\n for (i = 0; i < items.length; i++)\n checkCabinetOverlap(\n { x: items[i].pos.x, y: items[i].pos.y },\n items[i],\n holeItems,\n planData\n );\n }\n\n let prepareSnapSpec = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItemSpecified(\n this.props.state.scene,\n actions.catalog,\n [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]\n );\n };\n\n let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);\n\n if (this.state.showflag) {\n prepareSnapSpec(layer);\n implementBacksplash();\n implementWarningBox();\n this.setState({ showflag: false });\n }\n if (\n nextProps.state.scene !== this.props.state.scene ||\n (nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') !==\n this.props.state.doorStyle.get('name'))\n ) {\n let changedValues = diff(this.props.state.scene, nextProps.state.scene);\n prepareSnapSpec(layer);\n if (\n nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') ===\n this.props.state.doorStyle.get('name')\n ) {\n self.setState({ isLoading: true, waitForRender: 0 });\n\n switch (self.props.state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('front', true);\n break;\n case MODE_BACK_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('back', true);\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('left', true);\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n self.props.setIsLoadingElevation('right', true);\n break;\n case MODE_3D_VIEW:\n self.props.setIsLoading3D(true);\n break;\n }\n self.renderer.domElement.style.display = 'none';\n }\n if (nextProps.state.scene.showfg == true) {\n implementBacksplash();\n implementWarningBox();\n } else {\n deleteSpecifiedMeshObjects('TransformBox');\n }\n let { toolObj, angleObj } = this.state;\n var { promise } = updateScene(\n this.planData,\n nextProps.state.scene,\n this.props.state.scene,\n changedValues.toJS(),\n actions,\n this.context.catalog,\n nextProps.state.mode,\n toolObj,\n angleObj\n );\n promise.then(p1Value => {\n self.setState({ waitForRender: 1 });\n });\n }\n }\n\n render() {\n const { isLoading } = this.state;\n if (isLoading) {\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'none');\n this.renderer.domElement.style.display = 'none';\n return (\n <div\n style={{\n alignItems: ' center',\n width: this.props.width,\n height: this.props.height,\n display: 'inline-flex',\n justifyContent: 'center'\n }}\n >\n <img\n style={{\n width: '70px',\n height: '70px',\n animation: 'spin 2s linear infinite'\n }}\n src={'/assets/img/loading_large.gif'}\n alt=\"img\"\n />\n </div>\n );\n } else {\n this.renderer.domElement.style.pointerEvents = 'auto';\n this.renderer.domElement.style.opacity = '1';\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'block');\n return React.createElement('div', { ref: 'canvasWrapper' });\n }\n }\n}\n\nViewer3DDownLoad.propTypes = {\n state: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n replaceCabinet: PropTypes.func.isRequired\n};\n\nViewer3DDownLoad.contextTypes = {\n areaActions: PropTypes.object.isRequired,\n holesActions: PropTypes.object.isRequired,\n itemsActions: PropTypes.object.isRequired,\n linesActions: PropTypes.object.isRequired,\n sceneActions: PropTypes.object.isRequired,\n projectActions: PropTypes.object.isRequired,\n catalog: PropTypes.object\n};\n"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAAA,SAAAK,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAX,CAAA,GAAAS,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAP,CAAA,GAAAA,CAAA,CAAAY,MAAA,WAAAL,CAAA,WAAAE,MAAA,CAAAI,wBAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAR,CAAA,YAAAQ,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAY,OAAA,WAAAb,CAAA,IAAAc,eAAA,CAAAf,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAa,yBAAA,GAAAb,MAAA,CAAAc,gBAAA,CAAAjB,CAAA,EAAAG,MAAA,CAAAa,yBAAA,CAAAd,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAY,OAAA,WAAAb,CAAA,IAAAE,MAAA,CAAAe,cAAA,CAAAlB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAI,wBAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAe,gBAAAf,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAkB,cAAA,CAAAlB,CAAA,MAAAD,CAAA,GAAAG,MAAA,CAAAe,cAAA,CAAAlB,CAAA,EAAAC,CAAA,IAAAmB,KAAA,EAAAlB,CAAA,EAAAM,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAAtB,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAuB,gBAAAC,CAAA,EAAAC,CAAA,UAAAD,CAAA,YAAAC,CAAA,aAAAC,SAAA;AAAA,SAAAC,kBAAA3B,CAAA,EAAAC,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAD,CAAA,CAAAY,MAAA,EAAAX,CAAA,UAAAR,CAAA,GAAAO,CAAA,CAAAC,CAAA,GAAAR,CAAA,CAAAc,UAAA,GAAAd,CAAA,CAAAc,UAAA,QAAAd,CAAA,CAAA2B,YAAA,kBAAA3B,CAAA,KAAAA,CAAA,CAAA4B,QAAA,QAAAnB,MAAA,CAAAe,cAAA,CAAAlB,CAAA,EAAAmB,cAAA,CAAAzB,CAAA,CAAAkC,GAAA,GAAAlC,CAAA;AAAA,SAAAmC,aAAA7B,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,IAAA0B,iBAAA,CAAA3B,CAAA,CAAAF,SAAA,EAAAG,CAAA,GAAAC,CAAA,IAAAyB,iBAAA,CAAA3B,CAAA,EAAAE,CAAA,GAAAC,MAAA,CAAAe,cAAA,CAAAlB,CAAA,iBAAAsB,QAAA,SAAAtB,CAAA;AAAA,SAAAmB,eAAAjB,CAAA,QAAA4B,CAAA,GAAAC,YAAA,CAAA7B,CAAA,gCAAAT,OAAA,CAAAqC,CAAA,IAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAA7B,CAAA,EAAAD,CAAA,oBAAAR,OAAA,CAAAS,CAAA,MAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAP,MAAA,CAAAqC,WAAA,kBAAAhC,CAAA,QAAA8B,CAAA,GAAA9B,CAAA,CAAAiC,IAAA,CAAA/B,CAAA,EAAAD,CAAA,gCAAAR,OAAA,CAAAqC,CAAA,UAAAA,CAAA,YAAAJ,SAAA,yEAAAzB,CAAA,GAAAiC,MAAA,GAAAC,MAAA,EAAAjC,CAAA;AAAA,SAAAkC,WAAAlC,CAAA,EAAAR,CAAA,EAAAM,CAAA,WAAAN,CAAA,GAAA2C,eAAA,CAAA3C,CAAA,GAAA4C,0BAAA,CAAApC,CAAA,EAAAqC,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAA/C,CAAA,EAAAM,CAAA,QAAAqC,eAAA,CAAAnC,CAAA,EAAAL,WAAA,IAAAH,CAAA,CAAAgB,KAAA,CAAAR,CAAA,EAAAF,CAAA;AAAA,SAAAsC,2BAAApC,CAAA,EAAAF,CAAA,QAAAA,CAAA,iBAAAP,OAAA,CAAAO,CAAA,0BAAAA,CAAA,UAAAA,CAAA,iBAAAA,CAAA,YAAA0B,SAAA,qEAAAgB,sBAAA,CAAAxC,CAAA;AAAA,SAAAwC,uBAAA1C,CAAA,mBAAAA,CAAA,YAAA2C,cAAA,sEAAA3C,CAAA;AAAA,SAAAuC,0BAAA,cAAArC,CAAA,IAAA0C,OAAA,CAAA9C,SAAA,CAAA+C,OAAA,CAAAZ,IAAA,CAAAO,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAA1C,CAAA,aAAAqC,yBAAA,YAAAA,0BAAA,aAAArC,CAAA;AAAA,SAAAmC,gBAAAnC,CAAA,WAAAmC,eAAA,GAAAlC,MAAA,CAAA2C,cAAA,GAAA3C,MAAA,CAAA4C,cAAA,CAAAC,IAAA,eAAA9C,CAAA,WAAAA,CAAA,CAAA+C,SAAA,IAAA9C,MAAA,CAAA4C,cAAA,CAAA7C,CAAA,MAAAmC,eAAA,CAAAnC,CAAA;AAAA,SAAAgD,UAAAhD,CAAA,EAAAF,CAAA,6BAAAA,CAAA,aAAAA,CAAA,YAAA0B,SAAA,wDAAAxB,CAAA,CAAAJ,SAAA,GAAAK,MAAA,CAAAgD,MAAA,CAAAnD,CAAA,IAAAA,CAAA,CAAAF,SAAA,IAAAD,WAAA,IAAAuB,KAAA,EAAAlB,CAAA,EAAAoB,QAAA,MAAAD,YAAA,WAAAlB,MAAA,CAAAe,cAAA,CAAAhB,CAAA,iBAAAoB,QAAA,SAAAtB,CAAA,IAAAoD,eAAA,CAAAlD,CAAA,EAAAF,CAAA;AAAA,SAAAoD,gBAAAlD,CAAA,EAAAF,CAAA,WAAAoD,eAAA,GAAAjD,MAAA,CAAA2C,cAAA,GAAA3C,MAAA,CAAA2C,cAAA,CAAAE,IAAA,eAAA9C,CAAA,EAAAF,CAAA,WAAAE,CAAA,CAAA+C,SAAA,GAAAjD,CAAA,EAAAE,CAAA,KAAAkD,eAAA,CAAAlD,CAAA,EAAAF,CAAA;AAEb,OAAOqD,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SACEC,SAAS,EACTC,WAAW,EACXC,mBAAmB,EACnBC,YAAY,EACZC,MAAM,EACNC,0BAA0B,EAC1BC,gBAAgB,EAChBC,mBAAmB,QACd,oCAAoC;AAC3C,SAASC,YAAY,QAAQ,2CAA2C;AACxE,SAASC,aAAa,QAAQ,2CAA2C;AACzE,OAAOC,IAAI,MAAM,eAAe;AAChC,OAAO,KAAKC,WAAW,MAAM,6BAA6B;AAC1D,SACEC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EACpBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,yBAAyB,EACzBC,yBAAyB,EACzBC,wBAAwB,EACxBC,wBAAwB,EACxBC,YAAY,EACZC,sBAAsB,EACtBC,sBAAsB,EACtBC,sBAAsB,QACjB,0BAA0B;AACjC,SAASC,WAAW,QAAQ,MAAM;AAClC,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,+BAA+B;AAC7E,OAAOC,OAAO,MAAM,eAAe;AACnC,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,UAAU,QAAQ,uCAAuC;AAClE,OAAOC,cAAc,MAAM,iBAAiB;AAC5CA,cAAc,CAACC,OAAO,CAAC;EAAEC,KAAK,EAAElC;AAAM,CAAC,CAAC;AACxC,SAASmC,+BAA+B,QAAQ,4BAA4B;AAC5E,SACEC,YAAY,EACZC,uBAAuB,QAClB,oCAAoC;AAAC,IAEvBC,gBAAgB,0BAAAC,gBAAA;EACnC,SAAAD,iBAAYE,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAA1E,eAAA,OAAAuE,gBAAA;IACjBG,KAAA,GAAA7D,UAAA,OAAA0D,gBAAA,GAAME,KAAK;IACXC,KAAA,CAAKC,KAAK,GAAG;MACXC,SAAS,EAAE,KAAK;MAChBC,QAAQ,EAAE,IAAI;MACdC,OAAO,EAAE,IAAI;MACbC,QAAQ,EAAE,IAAI;MACdC,aAAa,EAAE;IACjB,CAAC;IACDN,KAAA,CAAKO,iBAAiB,GAAG,CAAC,CAAC;IAC3BP,KAAA,CAAKQ,KAAK,GAAGT,KAAK,CAACS,KAAK;IACxBR,KAAA,CAAKS,MAAM,GAAGV,KAAK,CAACU,MAAM;IAC1BT,KAAA,CAAKU,WAAW,GAAG,CAAC;IAEpB,IAAMC,IAAI,GAAKZ,KAAK,CAACE,KAAK,CAApBU,IAAI;IAEV,IAAI,CAACC,MAAM,CAACC,2BAA2B,EAAE;MACvCD,MAAM,CAACC,2BAA2B,GAAG,CAAC,CAAC;IACzC;IAEAb,KAAA,CAAKc,QAAQ,GACX,CAACH,IAAI,IAAI,cAAc,GACnBC,MAAM,CAACG,uBAAuB,GAC9BH,MAAM,CAACC,2BAA2B,CAACF,IAAI,CAAC,KAC5C,IAAIpD,KAAK,CAACyD,aAAa,CAAC;MACtBC,qBAAqB,EAAE,IAAI;MAC3BC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE;IACb,CAAC,CAAC;IAEJnB,KAAA,CAAKc,QAAQ,CAACM,SAAS,CAACC,OAAO,GAAG,IAAI;IACtCrB,KAAA,CAAKc,QAAQ,CAACQ,aAAa,GAAG,IAAI;IAClC,IAAIX,IAAI,IAAI,cAAc,EAAE;MAC1BC,MAAM,CAACG,uBAAuB,GAAGf,KAAA,CAAKc,QAAQ;IAChD,CAAC,MAAM;MACLF,MAAM,CAACC,2BAA2B,CAACF,IAAI,CAAC,GAAGX,KAAA,CAAKc,QAAQ;IAC1D;IAEAd,KAAA,CAAKc,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACC,OAAO,GAAG,MAAM;IAAC,OAAAzB,KAAA;EAClD;EAAC/C,SAAA,CAAA4C,gBAAA,EAAAC,gBAAA;EAAA,OAAAlE,YAAA,CAAAiE,gBAAA;IAAAlE,GAAA;IAAAR,KAAA,EAED,SAAAuG,iBAAiBA,CAACC,SAAS,EAAE;MAAA,IAAAC,MAAA;MAC3B,IAAIC,OAAO,EAAEC,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAEC,KAAK;MAEjD,IAAMC,OAAO,GAAG;QACdC,WAAW,EAAE,IAAI,CAACC,OAAO,CAACD,WAAW;QACrCE,YAAY,EAAE,IAAI,CAACD,OAAO,CAACC,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACF,OAAO,CAACE,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACH,OAAO,CAACG,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACJ,OAAO,CAACI,YAAY;QACvCC,cAAc,EAAE,IAAI,CAACL,OAAO,CAACK,cAAc;QAC3CC,OAAO,EAAE,IAAI,CAACN,OAAO,CAACM;MACxB,CAAC;MAED,IAAMC,IAAI,GAAG,IAAI;MACjB,IAAQ1C,KAAK,GAAK,IAAI,CAACF,KAAK,CAApBE,KAAK;MACb,IAAQU,IAAI,GAAYV,KAAK,CAArBU,IAAI;QAAEiC,KAAK,GAAK3C,KAAK,CAAf2C,KAAK;MACnB,SAASC,UAAUA,CAACD,KAAK,EAAEE,MAAM,EAAE;QACjC,IAAItE,0BAA0B,CAACuE,QAAQ,CAACpC,IAAI,CAAC,EAAE;UAC7C,IAAMqC,SAAS,GAAG,IAAIzF,KAAK,CAAC0F,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;UACvDL,KAAK,CAACM,GAAG,CAACF,SAAS,CAAC;QACtB,CAAC,MAAM;UAAA,IAcIG,WAAW,GAApB,SAASA,WAAWA,CAACC,OAAO,EAAEC,WAAW,EAAEC,UAAU,EAAE;YACrD,IAAMC,QAAQ,GAAG,IAAIhG,KAAK,CAACiG,gBAAgB,CAACJ,OAAO,EAAEC,WAAW,CAAC;YACjEE,QAAQ,CAACE,UAAU,GAAG,IAAI;YAC1BF,QAAQ,CAACG,MAAM,CAACC,OAAO,CAACC,CAAC,GAAGC,aAAa;YACzCN,QAAQ,CAACG,MAAM,CAACC,OAAO,CAACG,CAAC,GAAGD,aAAa;YACzCN,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACiC,IAAI,GAAG,CAAC;YAC/BR,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACkC,GAAG,GAAGC,eAAe;YAE5CV,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACoC,GAAG,GAAGC,gBAAgB,GAAG,GAAG;YACnDZ,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACsC,MAAM,GAAG,CAACD,gBAAgB,GAAG,GAAG;YACvDZ,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACuC,IAAI,GAAG,CAACF,gBAAgB,GAAG,GAAG;YACrDZ,QAAQ,CAACG,MAAM,CAAC5B,MAAM,CAACwC,KAAK,GAAGH,gBAAgB,GAAG,GAAG;YACrDZ,QAAQ,CAACgB,QAAQ,CAACC,IAAI,CAAClB,UAAU,CAAC;YAElC,IAAMmB,YAAY,GAAG,IAAIlH,KAAK,CAACmH,QAAQ,CAAC,CAAC;YACzCD,YAAY,CAACF,QAAQ,CAACC,IAAI,CAACG,UAAU,CAAC;YACtC/B,KAAK,CAACM,GAAG,CAACuB,YAAY,CAAC;YAEvBlB,QAAQ,CAACqB,MAAM,GAAGH,YAAY;YAC9BlB,QAAQ,CAACqB,MAAM,CAACC,iBAAiB,CAAC,CAAC;YAEnCjC,KAAK,CAACM,GAAG,CAACK,QAAQ,CAAC;UACrB,CAAC;UAAA,IACQuB,YAAY,GAArB,SAASA,YAAYA,CACnB1B,OAAO,EACPC,WAAW,EACXC,UAAU,EACVyB,QAAQ,EACRC,UAAU,EACV;YACA,IAAMC,SAAS,GAAG,IAAI1H,KAAK,CAAC2H,SAAS,CAAC,CAAC;YACvCD,SAAS,CAACE,SAAS,GAAG9B,WAAW;YACjC4B,SAAS,CAACG,KAAK,CAACC,MAAM,CAACjC,OAAO,CAAC;YAC/B6B,SAAS,CAACV,QAAQ,CAACC,IAAI,CAAClB,UAAU,CAAC;YACnC2B,SAAS,CAACK,KAAK,GAAG,GAAG;YACrBL,SAAS,CAACM,QAAQ,GAAGP,UAAU;YAC/BC,SAAS,CAACO,QAAQ,GAAG,GAAG;YACxBP,SAAS,CAACQ,KAAK,GAAG,IAAI;YAEtBR,SAAS,CAACxB,UAAU,GAAG,IAAI;YAC3BwB,SAAS,CAACvB,MAAM,CAACyB,SAAS,GAAG,CAAC;YAC9BF,SAAS,CAACvB,MAAM,CAACC,OAAO,CAACnD,KAAK,GAAG,IAAI;YACrCyE,SAAS,CAACvB,MAAM,CAACC,OAAO,CAAClD,MAAM,GAAG,IAAI;YAEtC,IAAMgE,YAAY,GAAG,IAAIlH,KAAK,CAACmH,QAAQ,CAAC,CAAC;YACzCD,YAAY,CAACF,QAAQ,CAACC,IAAI,CACxB,IAAIjH,KAAK,CAACmI,OAAO,CAACX,QAAQ,CAACnB,CAAC,EAAE,CAAC,EAAEmB,QAAQ,CAACY,CAAC,CAC7C,CAAC;YACD/C,KAAK,CAACM,GAAG,CAACuB,YAAY,CAAC;YAEvBQ,SAAS,CAACL,MAAM,GAAGH,YAAY;YAC/BQ,SAAS,CAACL,MAAM,CAACC,iBAAiB,CAAC,CAAC;YACpCjC,KAAK,CAACM,GAAG,CAAC+B,SAAS,CAAC;UACtB,CAAC;UAlED,IAAMpB,aAAa,GAAG,IAAI;UAC1B,IAAMM,gBAAgB,GACpByB,IAAI,CAACC,GAAG,CACND,IAAI,CAACE,GAAG,CAAChD,MAAM,CAACiD,GAAG,CAACnC,CAAC,GAAGd,MAAM,CAAC+C,GAAG,CAACjC,CAAC,CAAC,EACrCgC,IAAI,CAACE,GAAG,CAAChD,MAAM,CAACiD,GAAG,CAACjC,CAAC,GAAGhB,MAAM,CAAC+C,GAAG,CAAC/B,CAAC,CAAC,EACrC8B,IAAI,CAACE,GAAG,CAAChD,MAAM,CAACiD,GAAG,CAACJ,CAAC,GAAG7C,MAAM,CAAC+C,GAAG,CAACF,CAAC,CACtC,CAAC,GAAG,CAAC;UACP,IAAM1B,eAAe,GAAGE,gBAAgB,GAAG,EAAE;UAC7C,IAAMQ,UAAU,GAAG,IAAIpH,KAAK,CAACmI,OAAO,CAClC,CAAC5C,MAAM,CAACiD,GAAG,CAACnC,CAAC,GAAGd,MAAM,CAAC+C,GAAG,CAACjC,CAAC,IAAI,CAAC,EACjCd,MAAM,CAACiD,GAAG,CAACjC,CAAC,EACZ,CAAChB,MAAM,CAACiD,GAAG,CAACJ,CAAC,GAAG7C,MAAM,CAAC+C,GAAG,CAACF,CAAC,IAAI,CAClC,CAAC;UAwDD,IAAMK,WAAW,GAAG,IAAIzI,KAAK,CAACmI,OAAO,CACnC5C,MAAM,CAAC+C,GAAG,CAACjC,CAAC,EACZd,MAAM,CAAC+C,GAAG,CAAC/B,CAAC,GAAG,GAAG,GAAG8B,IAAI,CAACE,GAAG,CAAChD,MAAM,CAAC+C,GAAG,CAAC/B,CAAC,GAAGhB,MAAM,CAACiD,GAAG,CAACjC,CAAC,CAAC,EAC1DhB,MAAM,CAACiD,GAAG,CAACJ,CAAC,GAAG,GAAG,GAAGC,IAAI,CAACE,GAAG,CAAChD,MAAM,CAAC+C,GAAG,CAACF,CAAC,GAAG7C,MAAM,CAACiD,GAAG,CAACJ,CAAC,CAC3D,CAAC;UAEDxC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE6C,WAAW,CAAC;UAEtC,IAAMC,OAAO,GAAGpE,OAAO,CAACqE,eAAe,CAAC,MAAM,CAAC;UAC/C,IAAID,OAAO,EAAE;YACX,IAAME,QAAQ,GAAG,IAAI5I,KAAK,CAAC6I,IAAI,CAAC,CAAC,CAACC,aAAa,CAACJ,OAAO,CAAC;YAExD,IAAMK,KAAK,GAAG,IAAI/I,KAAK,CAACmI,OAAO,CAC7BS,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGgC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGuC,QAAQ,CAACN,GAAG,CAACjC,CAAC,CAAC,GAAG,CAAC,EAC9DuC,QAAQ,CAACN,GAAG,CAAC/B,CAAC,GAAG,GAAG,EACpBqC,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAGC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAG7C,MAAM,CAAC+C,GAAG,CAACF,CAAC,CAAC,GAAG,CAC7D,CAAC;YACD,IAAMY,KAAK,GAAG,IAAIhJ,KAAK,CAACmI,OAAO,CAC7BS,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGgC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGuC,QAAQ,CAACN,GAAG,CAACjC,CAAC,CAAC,GAAG,CAAC,EAC9DuC,QAAQ,CAACN,GAAG,CAAC/B,CAAC,GAAG,GAAG,EACpBqC,QAAQ,CAACN,GAAG,CAACF,CAAC,GAAGC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAGQ,QAAQ,CAACN,GAAG,CAACF,CAAC,CAAC,GAAG,CAC/D,CAAC;YAED,IAAMa,KAAK,GAAG,IAAIjJ,KAAK,CAACmI,OAAO,CAC7BS,QAAQ,CAACN,GAAG,CAACjC,CAAC,GAAGgC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGuC,QAAQ,CAACN,GAAG,CAACjC,CAAC,CAAC,GAAG,CAAC,EAC9DuC,QAAQ,CAACN,GAAG,CAAC/B,CAAC,GAAG,GAAG,EACpBqC,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAGC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAGQ,QAAQ,CAACN,GAAG,CAACF,CAAC,CAAC,GAAG,CAC/D,CAAC;YACD,IAAMc,KAAK,GAAG,IAAIlJ,KAAK,CAACmI,OAAO,CAC7BS,QAAQ,CAACN,GAAG,CAACjC,CAAC,GAAGgC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACnC,CAAC,GAAGuC,QAAQ,CAACN,GAAG,CAACjC,CAAC,CAAC,GAAG,CAAC,EAC9DuC,QAAQ,CAACN,GAAG,CAAC/B,CAAC,GAAG,GAAG,EACpBqC,QAAQ,CAACN,GAAG,CAACF,CAAC,GAAGC,IAAI,CAACE,GAAG,CAACK,QAAQ,CAACJ,GAAG,CAACJ,CAAC,GAAGQ,QAAQ,CAACN,GAAG,CAACF,CAAC,CAAC,GAAG,CAC/D,CAAC;YAED,IAAMe,YAAY,GAAG,GAAG,GAAGd,IAAI,CAACE,GAAG,CAAChD,MAAM,CAACiD,GAAG,CAACjC,CAAC,GAAGhB,MAAM,CAAC+C,GAAG,CAAC/B,CAAC,CAAC;;YAEhE;YACAlE,uBAAuB,CAAC0G,KAAK,EAAEzE,OAAO,CAACqE,eAAe,CAAC,OAAO,CAAC,CAAC,IAC9DpB,YAAY,CAAC,UAAU,EAAE,GAAG,EAAEwB,KAAK,EAAEA,KAAK,EAAEI,YAAY,CAAC;YAC3D9G,uBAAuB,CAAC2G,KAAK,EAAE1E,OAAO,CAACqE,eAAe,CAAC,OAAO,CAAC,CAAC,IAC9DpB,YAAY,CAAC,UAAU,EAAE,GAAG,EAAEyB,KAAK,EAAEA,KAAK,EAAEG,YAAY,CAAC;YAC3D9G,uBAAuB,CAAC4G,KAAK,EAAE3E,OAAO,CAACqE,eAAe,CAAC,OAAO,CAAC,CAAC,IAC9DpB,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE0B,KAAK,EAAEA,KAAK,EAAEE,YAAY,CAAC;YAC3D9G,uBAAuB,CAAC6G,KAAK,EAAE5E,OAAO,CAACqE,eAAe,CAAC,OAAO,CAAC,CAAC,IAC9DpB,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE2B,KAAK,EAAEA,KAAK,EAAEC,YAAY,CAAC;UAC7D;QACF;MACF;;MAEA;MACA,IAAI,CAACC,QAAQ,CAAC;QAAEzG,SAAS,EAAE,IAAI;QAAEI,aAAa,EAAE;MAAE,CAAC,CAAC;MACpD,QAAQqC,IAAI,CAAC5C,KAAK,CAACE,KAAK,CAACU,IAAI;QAC3B,KAAKlC,yBAAyB;UAC5BkE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;UAC/C;QACF,KAAKhI,wBAAwB;UAC3B+D,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;UAC9C;QACF,KAAKjI,wBAAwB;UAC3BgE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;UAC9C;QACF,KAAKlI,yBAAyB;UAC5BiE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;UAC/C;QACF,KAAK/H,YAAY;UACf8D,IAAI,CAAC5C,KAAK,CAAC8G,cAAc,CAAC,IAAI,CAAC;UAC/B;MACJ;MACA,IAAAC,UAAA,GAA8BtJ,SAAS,CACrCoF,KAAK,EACLV,OAAO,EACP,IAAI,CAACE,OAAO,CAACM,OAAO,EACpBZ,MAAM,EACN,IAAI,CAAChB,QAAQ,EACbb,KAAK,CAACU,IACR,CAAC;QAPOoG,OAAO,GAAAD,UAAA,CAAPC,OAAO;QAAEC,QAAQ,GAAAF,UAAA,CAARE,QAAQ;MASzBD,OAAO,CAACE,IAAI,CAAC,YAAM;QACjB,IAAIC,WAAW,GAAG,EAAE;QACpBF,QAAQ,CAACG,IAAI,CAACC,QAAQ,CAAC,UAAAC,GAAG,EAAI;UAC5B,IAAIA,GAAG,CAACC,QAAQ,KAAK,IAAI,EAAE;YACzBJ,WAAW,CAAC1M,IAAI,CAAC6M,GAAG,CAAC;UACvB;QACF,CAAC,CAAC;QACFH,WAAW,CAACrM,OAAO,CAAC,UAAAwM,GAAG,EAAI;UACzBA,GAAG,CAACE,gBAAgB,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,IAAMC,IAAI,GAAG,IAAIjK,KAAK,CAAC6I,IAAI,CAAC,CAAC,CAACC,aAAa,CAACW,QAAQ,CAACG,IAAI,CAAC;QAC1D,IAAI,CAAC3I,0BAA0B,CAACuE,QAAQ,CAAC9C,KAAK,CAACU,IAAI,CAAC,EAAE;UACpD;UACA,IAAIqB,cAAc,EAAE;YAClB,IAAMyF,MAAM,GAAG,GAAG,CAAC,CAAC;YACpB,IAAMC,cAAc,GAAG,CAAC;YACxB,IAAMC,cAAc,GAAID,cAAc,GAAG9B,IAAI,CAACgC,EAAE,GAAI,GAAG;;YAEvD;YACA,IAAMC,IAAI,GAAGjC,IAAI,CAACkC,GAAG,CAACH,cAAc,CAAC,GAAGF,MAAM;YAC9C,IAAMM,IAAI,GAAGnC,IAAI,CAACoC,GAAG,CAACL,cAAc,CAAC,GAAGF,MAAM;YAE9CzF,cAAc,CAACiG,SAAS,CAACJ,IAAI,EAAE,CAAC,EAAEE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACpD;QACF;QACAlF,UAAU,CAAChB,OAAO,EAAEmF,QAAQ,CAACkB,WAAW,CAAC;QAEzCvF,IAAI,CAACgE,QAAQ,CAAC;UAAErG,aAAa,EAAE;QAAE,CAAC,CAAC;MACrC,CAAC,CAAC;MAEF,IAAM6H,IAAI,GAAGvF,KAAK,CAACwF,KAAK,CAAC,CAAC,QAAQ,EAAExF,KAAK,CAACyF,aAAa,EAAE,OAAO,CAAC,CAAC;MAClE,IAAMC,KAAK,GAAG1F,KAAK,CAACwF,KAAK,CAAC,CAAC,QAAQ,EAAExF,KAAK,CAACyF,aAAa,CAAC,CAAC;MAC1D,IAAME,KAAK,GAAG,EAAE;QACdC,MAAM,GAAG,EAAE;MAEb,IAAIC,OAAO,GAAG,IAAI;;MAElB;MACA,IAAIC,GAAG,GAAG,EAAE;MACZ9F,KAAK,CAAC+F,MAAM,CAAC9N,OAAO,CAAC,UAAAyN,KAAK,EAAI;QAC5B,IAAIA,KAAK,CAACM,EAAE,KAAKhG,KAAK,CAACyF,aAAa,IAAIC,KAAK,CAACO,OAAO,EAAE;UACrDP,KAAK,CAACQ,KAAK,CAACjO,OAAO,CAAC,UAAAkO,IAAI,EAAI;YAC1B,IAAIA,IAAI,CAACC,SAAS,KAAK,IAAI,EAAE;cAC3B,IAAI,CAACN,GAAG,CAAC3F,QAAQ,CAACgG,IAAI,CAACE,IAAI,GAAG,uBAAuB,CAAC,EACpDP,GAAG,IAAIK,IAAI,CAACE,IAAI,GAAG,yBAAyB;YAChD;UACF,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;MACF,IAAIP,GAAG,KAAK,EAAE,EAAE;QACdQ,OAAO,CAACR,GAAG,CAAC;MACd;MAEAS,IAAI,CAAC,CAAC;MACNC,MAAM,CAAC,CAAC;MAERjB,IAAI,CAACtN,OAAO,CAAC,UAAAwO,IAAI,EAAI;QACnBd,KAAK,CAAC/N,IAAI,CAAC6O,IAAI,CAAC;MAClB,CAAC,CAAC;MAAC,IAAAC,KAAA,YAAAA,MAAA,EACoC;QACrC,IAAIC,SAAS,GAAG,EAAE;QAClB,IAAIC,KAAK,GAAG,EAAE;QACd,IAAI/I,MAAM,GAAG,GAAG;QAChB8H,KAAK,CAAC1M,CAAC,CAAC,CAAC4N,QAAQ,CAAC5O,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAChCE,SAAS,CAAC/O,IAAI,CAAC6O,IAAI,CAAC;QACtB,CAAC,CAAC;QACFf,KAAK,CAACkB,KAAK,CAAC3O,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1BG,KAAK,CAAChP,IAAI,CAAC6O,IAAI,CAAC;QAClB,CAAC,CAAC;QAAC,IAAAK,MAAA,YAAAA,OAAA,EACoC;UACrC,IAAIL,IAAI,GAAGG,KAAK,CAAC3N,IAAC,CAAC;UACnB,IAAI8N,OAAO,GAAG,EAAE;UAChBN,IAAI,CAACI,QAAQ,CAAC5O,OAAO,CAAC,UAAA+O,GAAG,EAAI;YAC3BD,OAAO,CAACnP,IAAI,CAACoP,GAAG,CAAC;UACnB,CAAC,CAAC;UACF,IAAIL,SAAS,CAACxG,QAAQ,CAAC4G,OAAO,CAAC,CAAC,CAAC,CAAC,IAAIJ,SAAS,CAACxG,QAAQ,CAAC4G,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACpElJ,MAAM,GAAGrB,OAAO,CAACkJ,KAAK,CAACuB,UAAU,CAAC,CAC/BC,IAAI,CAACxB,KAAK,CAACyB,IAAI,CAAC,CAChBC,EAAE,CAAC3L,eAAe,CAAC;YACtB;YAAA;UAEF;QACF,CAAC;QAbD,KAAK,IAAIxC,IAAC,GAAG,CAAC,EAAEA,IAAC,GAAG2N,KAAK,CAAC5O,MAAM,EAAEiB,IAAC,EAAE;UAAA,IAAA6N,MAAA,IAWjC;QAAM;QAGV,IAAID,QAAQ,GAAG,EAAE;QACjBlB,KAAK,CAAC1M,CAAC,CAAC,CAAC4N,QAAQ,CAAC5O,OAAO,CAAC,UAAAoP,KAAK,EAAI;UACjC,IAAIC,MAAM,GAAGtH,KAAK,CAACwF,KAAK,CAAC,CACvB,QAAQ,EACRxF,KAAK,CAACyF,aAAa,EACnB,UAAU,EACV4B,KAAK,CACN,CAAC;UACFR,QAAQ,CAACjP,IAAI,CAAC0P,MAAM,CAAC;QACvB,CAAC,CAAC;QACFT,QAAQ,CAACjP,IAAI,CAACiP,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAIU,IAAI,GAAGV,QAAQ,CAAC7O,MAAM,GAAG,CAAC;QAC9B,KAAK,IAAIiB,IAAC,GAAG,CAAC,EAAEA,IAAC,GAAGsO,IAAI,EAAEtO,IAAC,EAAE,EAAE;UAC7B,IAAIuO,EAAE,GAAGX,QAAQ,CAAC5N,IAAC,CAAC,CAAC+H,CAAC;UACtB,IAAIyG,EAAE,GAAGZ,QAAQ,CAAC5N,IAAC,CAAC,CAACiI,CAAC;UACtB,IAAIwG,EAAE,GAAGb,QAAQ,CAAC5N,IAAC,GAAG,CAAC,CAAC,CAAC+H,CAAC;UAC1B,IAAI2G,EAAE,GAAGd,QAAQ,CAAC5N,IAAC,GAAG,CAAC,CAAC,CAACiI,CAAC;UAC1B,IAAI0G,GAAG,GAAG5E,IAAI,CAAC6E,IAAI,CAAC,CAACH,EAAE,GAAGF,EAAE,KAAKE,EAAE,GAAGF,EAAE,CAAC,GAAG,CAACG,EAAE,GAAGF,EAAE,KAAKE,EAAE,GAAGF,EAAE,CAAC,CAAC;UAClE,KAAK,IAAIK,IAAI,GAAG,GAAG,EAAEA,IAAI,GAAGF,GAAG,EAAEE,IAAI,IAAI,GAAG,EAAE;YAC5C,IAAIC,EAAE,GAAGP,EAAE,GAAI,CAACE,EAAE,GAAGF,EAAE,IAAIM,IAAI,GAAIF,GAAG;YACtC,IAAII,EAAE,GAAGP,EAAE,GAAI,CAACE,EAAE,GAAGF,EAAE,IAAIK,IAAI,GAAIF,GAAG;YACtC,IAAIK,MAAM,GAAGjF,IAAI,CAAC6E,IAAI,CAAC,CAACH,EAAE,GAAGK,EAAE,KAAKL,EAAE,GAAGK,EAAE,CAAC,GAAG,CAACJ,EAAE,GAAGK,EAAE,KAAKL,EAAE,GAAGK,EAAE,CAAC,CAAC;YACrE,IAAIC,MAAM,IAAI,GAAG,EAAE;YACnB,IAAIC,IAAI,GAAG,IAAIvN,KAAK,CAACwN,OAAO,CAACJ,EAAE,GAAGP,EAAE,EAAEQ,EAAE,GAAGP,EAAE,CAAC;YAC9C,IAAI/E,KAAK,GAAGwF,IAAI,CAACxF,KAAK,CAAC,CAAC,GAAGM,IAAI,CAACgC,EAAE,GAAG,CAAC;YACtC+C,EAAE,GAAG/E,IAAI,CAACoC,GAAG,CAAC1C,KAAK,CAAC,GAAG,EAAE,GAAGqF,EAAE;YAC9BC,EAAE,GAAGhF,IAAI,CAACkC,GAAG,CAACxC,KAAK,CAAC,GAAG,EAAE,GAAGsF,EAAE;YAC9B,IAAI3F,SAAS,GAAG,IAAI1H,KAAK,CAAC2H,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;YAClDD,SAAS,CAACK,KAAK,GAAG,IAAI;YACtBL,SAAS,CAACxB,UAAU,GAAG,IAAI;YAC3BwB,SAAS,CAACO,QAAQ,GAAG,CAAC;YACtBP,SAAS,CAACQ,KAAK,GAAG,GAAG;YACrBR,SAAS,CAACM,QAAQ,GAAG9E,MAAM,GAAG,EAAE;YAChC,IAAImE,MAAM,GAAG,IAAIrH,KAAK,CAACmH,QAAQ,CAAC,CAAC;YACjCO,SAAS,CAACL,MAAM,GAAGA,MAAM;YACzB4D,MAAM,CAAChO,IAAI,CAAC;cACVwQ,KAAK,EAAE/F,SAAS;cAChBL,MAAM,EAAEA,MAAM;cACdhB,CAAC,EAAE+G,EAAE;cACL7G,CAAC,EAAE8G,EAAE;cACLnK,MAAM,EAAEA;YACV,CAAC,CAAC;UACJ;QACF;MACF,CAAC;MApED,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0M,KAAK,CAAC3N,MAAM,EAAEiB,CAAC,EAAE;QAAAyN,KAAA;MAAA;MAqErC;;MAEA;MACA,IAAI2B,WAAW,GAAG,CAACjE,QAAQ,CAACG,IAAI,CAAC;MACjC,IAAI+D,KAAK,GAAG,IAAI3N,KAAK,CAACwN,OAAO,CAAC,CAAC;MAC/B,IAAII,SAAS,GAAGnE,QAAQ,CAACoE,IAAI;MAC7B,IAAIC,SAAS,GAAG,IAAI9N,KAAK,CAAC+N,SAAS,CAAC,CAAC;MACrC,IAAIC,cAAc,GAAG,CAAC,CAAC;MACvB,IAAIC,aAAa,GAAG,IAAI;MACxB,IAAIC,UAAU,GAAG,KAAK;MACtB,IAAIC,OAAO,GAAG,KAAK;MACnB,IAAIC,KAAK,GAAG,KAAK;MACjB,IAAIC,OAAO,GAAG,KAAK;MACnB;MACA,IAAMC,UAAU,GAAG,IAAItO,KAAK,CAACuO,OAAO,CAAC,CAAC;MACtC,IAAIC,YAAY,GAAG,IAAIxO,KAAK,CAACmI,OAAO,CAAC,CAAC;MACtC;MACA,IAAIsG,cAAc,GAAG,IAAIzO,KAAK,CAACmI,OAAO,CAAC,CAAC;MACxC,IAAIuG,KAAK,GAAG,IAAI1O,KAAK,CAACwN,OAAO,CAAC,CAAC;MAC/B,IAAImB,MAAM,GAAG,IAAI3O,KAAK,CAACwN,OAAO,CAAC,CAAC;;MAEhC;MACA,IAAIoB,QAAQ,GAAG,KAAK;MACpB,IAAIC,SAAS,GAAG,CAAC;MACjB,IAAIC,SAAS,GAAG,CAAC;MACjB,IAAIC,GAAG,GAAG,CAAC;MACX,IAAIC,WAAW,GAAG,IAAIhP,KAAK,CAACmI,OAAO,CAAC,CAAC;MACrC,IAAI8G,SAAS,GAAG,CAAC;MACjB,IAAIC,UAAU,GAAG,IAAIlP,KAAK,CAACmI,OAAO,CAAC,CAAC;MACpC,IAAIgH,eAAe,GAAG,CAAC;MACvB,IAAIC,SAAS,GAAG,IAAI;MACpB,IAAIC,YAAY,GAAG,CAAC;MAEpB,IAAIC,WAAW;MACf,IAAIC,WAAW;MACf,IAAIC,QAAQ;MACZ,IAAIC,YAAY;MAChB,IAAIC,WAAW;MACf,IAAIC,OAAO;MACX,IAAIC,OAAO;;MAEX;MACA,IAAIC,iBAAiB,GAAG,KAAK;MAC7B,IAAIC,SAAS,GAAGhO,aAAa,CAACiO,YAAY,CAAChF,KAAK,CAAC;MAEjD,IAAIiF,aAAa,GAAG,SAAhBA,aAAaA,CAAA,EAAS;QACxB,IAAI9E,OAAO,IAAI,IAAI,EAAE;UACnBzB,QAAQ,CAACG,IAAI,CAACqG,MAAM,CAAC/E,OAAO,CAAC;UAC7BxK,aAAa,CAACwK,OAAO,CAAC;UACtBA,OAAO,GAAG,IAAI;UACdkE,SAAS,GAAG,IAAI;UAChBR,QAAQ,GAAG,KAAK;QAClB;MACF,CAAC;MAED,IAAMsB,SAAS,GAAG,IAAIlQ,KAAK,CAACmI,OAAO,CAAC,CAAC;MACrC,IAAIgI,MAAM,GAAG5L,MAAM,CAACyC,QAAQ;MAE5B,IAAMoJ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI5T,CAAC,EAAE6T,QAAQ,EAAK;QACzCH,SAAS,CAACI,UAAU,CAAC7B,cAAc,EAAE0B,MAAM,CAAC;QAE5C,IAAII,IAAI,GAAGL,SAAS,CAAC3J,CAAC,IAAI8J,QAAQ,GAAGA,QAAQ,GAAG,CAAC,CAAC;QAClD,IAAIG,IAAI,GAAGhC,YAAY,CAACjI,CAAC;QAEzB,IAAMkK,WAAW,GAAGjC,YAAY,CAACkC,cAAc,CAACH,IAAI,GAAGC,IAAI,CAAC,CAAC7K,GAAG,CAACwK,MAAM,CAAC;QACxEM,WAAW,CAAClK,CAAC,GAAGkI,cAAc,CAAClI,CAAC;QAChCkK,WAAW,CAACE,YAAY,CAACrC,UAAU,CAAC;QAEpC,OAAO;UAAEjI,CAAC,EAAEoK,WAAW,CAACpK,CAAC;UAAEE,CAAC,EAAE,CAACkK,WAAW,CAACrI;QAAE,CAAC;MAChD,CAAC;;MAED;;MAEA,IAAIwI,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAaC,KAAK,EAAEC,IAAI,EAAE;QAC7C;QACA,IAAIC,EAAE,GAAGF,KAAK,CAACxK,CAAC;QAChB,IAAI2K,EAAE,GAAGH,KAAK,CAACtK,CAAC;QAChB,IAAI0K,GAAG,GAAGH,IAAI,CAAC,CAAC,CAAC,CAACzK,CAAC;QACnB,IAAI6K,GAAG,GAAGJ,IAAI,CAAC,CAAC,CAAC,CAACvK,CAAC;QACnB,IAAI4K,GAAG,GAAGL,IAAI,CAAC,CAAC,CAAC,CAACzK,CAAC;QACnB,IAAI+K,GAAG,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACvK,CAAC;QACnB,IAAI8K,KAAK,GAAG,IAAIrR,KAAK,CAACwN,OAAO,CAACyD,GAAG,GAAGF,EAAE,EAAEG,GAAG,GAAGF,EAAE,CAAC;QACjD,IAAIM,IAAI,GAAG,IAAItR,KAAK,CAACwN,OAAO,CAACyD,GAAG,GAAGE,GAAG,EAAED,GAAG,GAAGE,GAAG,CAAC;QAClD,IAAIG,MAAM,GAAGF,KAAK,CAACtJ,KAAK,CAAC,CAAC;QAC1B,IAAIyJ,MAAM,GAAGF,IAAI,CAACvJ,KAAK,CAAC,CAAC;QACzB,IAAI0J,SAAS,GAAGJ,KAAK,CAAChU,MAAM,CAAC,CAAC;QAC9B,IAAIqU,SAAS,GAAGJ,IAAI,CAACjU,MAAM,CAAC,CAAC;QAC7B,IAAIsU,cAAc,GAAGtJ,IAAI,CAACkC,GAAG,CAACgH,MAAM,GAAGC,MAAM,CAAC,GAAGC,SAAS;QAC1D,IAAIG,YAAY,GAAGvJ,IAAI,CAACoC,GAAG,CAAC8G,MAAM,GAAGC,MAAM,CAAC,GAAGC,SAAS;QACxD,IAAII,EAAE,GAAGZ,GAAG,GAAI,CAACE,GAAG,GAAGF,GAAG,IAAIW,YAAY,GAAIF,SAAS;QACvD,IAAII,EAAE,GAAGZ,GAAG,GAAI,CAACE,GAAG,GAAGF,GAAG,IAAIU,YAAY,GAAIF,SAAS;QACvD,IAAIK,MAAM,GAAG;UAAE1L,CAAC,EAAEwL,EAAE;UAAEtL,CAAC,EAAEuL;QAAG,CAAC;QAC7B,OAAO;UAAE9J,QAAQ,EAAE2J,cAAc;UAAEd,KAAK,EAAEkB;QAAO,CAAC;MACpD,CAAC;MACD,IAAIC,YAAY,GAAG,SAAfA,YAAYA,CAAaC,MAAM,EAAEC,MAAM,EAAE;QAC3C;QACA,IAAIC,KAAK,GAAG,CAAC;QACb,KAAK,IAAI7T,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG2T,MAAM,CAAC5U,MAAM,GAAG,CAAC,EAAEiB,EAAC,EAAE,EAAE;UAC1C,IAAI8T,GAAG,GAAG;YAAE/L,CAAC,EAAE4L,MAAM,CAAC3T,EAAC,CAAC,CAAC+H,CAAC;YAAEE,CAAC,EAAE0L,MAAM,CAAC3T,EAAC,CAAC,CAACiI;UAAE,CAAC;UAC5C,IAAI8L,GAAG,GAAG;YAAEhM,CAAC,EAAE4L,MAAM,CAAC3T,EAAC,GAAG,CAAC,CAAC,CAAC+H,CAAC;YAAEE,CAAC,EAAE0L,MAAM,CAAC3T,EAAC,GAAG,CAAC,CAAC,CAACiI;UAAE,CAAC;UACpD,KAAK,IAAI+L,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,MAAM,CAAC7U,MAAM,GAAG,CAAC,EAAEiV,CAAC,EAAE,EAAE;YAC1C,IAAIC,GAAG,GAAG;cAAElM,CAAC,EAAE6L,MAAM,CAACI,CAAC,CAAC,CAACjM,CAAC;cAAEE,CAAC,EAAE2L,MAAM,CAACI,CAAC,CAAC,CAAC/L;YAAE,CAAC;YAC5C,IAAIiM,GAAG,GAAG;cAAEnM,CAAC,EAAE6L,MAAM,CAACI,CAAC,GAAG,CAAC,CAAC,CAACjM,CAAC;cAAEE,CAAC,EAAE2L,MAAM,CAACI,CAAC,GAAG,CAAC,CAAC,CAAC/L;YAAE,CAAC;YACpD,IAAIkM,IAAI,GAAG3Q,aAAa,CAAC4Q,gBAAgB,CACvCN,GAAG,CAAC/L,CAAC,EACL+L,GAAG,CAAC7L,CAAC,EACL8L,GAAG,CAAChM,CAAC,EACLgM,GAAG,CAAC9L,CAAC,EACLgM,GAAG,CAAClM,CAAC,EACLkM,GAAG,CAAChM,CAAC,EACLiM,GAAG,CAACnM,CAAC,EACLmM,GAAG,CAACjM,CACN,CAAC;YACD,IAAIkM,IAAI,EAAE;cACRN,KAAK,EAAE;cACP,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;YAC5B;UACF;QACF;QACA,OAAO,KAAK;MACd,CAAC;MAED,IAAI,CAACQ,aAAa,GAAG,UAAU1P,KAAK,EAAEC,MAAM,EAAE0P,GAAG,EAAEC,GAAG,EAAE;QACtD;QACA,IAAIC,EAAE,GAAG7P,KAAK,GAAG,CAAC;QAClB,IAAI8P,EAAE,GAAG7P,MAAM,GAAG,CAAC;QACnB,IAAIgJ,QAAQ,GAAG,EAAE;QACjB,IAAI8G,IAAI,GAAGH,GAAG;QACd,IAAI9B,EAAE,GAAG6B,GAAG,CAACvM,CAAC,GAAGgC,IAAI,CAACoC,GAAG,CAACuI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACoC,GAAG,CAACuI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACxE,IAAI/B,EAAE,GAAG4B,GAAG,CAACrM,CAAC,GAAG8B,IAAI,CAACkC,GAAG,CAACyI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACkC,GAAG,CAACyI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACxE7G,QAAQ,CAACjP,IAAI,CAAC;UAAEoJ,CAAC,EAAEgC,IAAI,CAAC4K,KAAK,CAAClC,EAAE,GAAG,GAAG,CAAC;UAAExK,CAAC,EAAE8B,IAAI,CAAC4K,KAAK,CAACjC,EAAE,GAAG,GAAG;QAAE,CAAC,CAAC;QACnE8B,EAAE,GAAG,CAACA,EAAE;QACR/B,EAAE,GAAG6B,GAAG,CAACvM,CAAC,GAAGgC,IAAI,CAACoC,GAAG,CAACuI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACoC,GAAG,CAACuI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE/B,EAAE,GAAG4B,GAAG,CAACrM,CAAC,GAAG8B,IAAI,CAACkC,GAAG,CAACyI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACkC,GAAG,CAACyI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE7G,QAAQ,CAACjP,IAAI,CAAC;UAAEoJ,CAAC,EAAEgC,IAAI,CAAC4K,KAAK,CAAClC,EAAE,GAAG,GAAG,CAAC;UAAExK,CAAC,EAAE8B,IAAI,CAAC4K,KAAK,CAACjC,EAAE,GAAG,GAAG;QAAE,CAAC,CAAC;QACnE+B,EAAE,GAAG,CAACA,EAAE;QACRhC,EAAE,GAAG6B,GAAG,CAACvM,CAAC,GAAGgC,IAAI,CAACoC,GAAG,CAACuI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACoC,GAAG,CAACuI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE/B,EAAE,GAAG4B,GAAG,CAACrM,CAAC,GAAG8B,IAAI,CAACkC,GAAG,CAACyI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACkC,GAAG,CAACyI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE7G,QAAQ,CAACjP,IAAI,CAAC;UAAEoJ,CAAC,EAAEgC,IAAI,CAAC4K,KAAK,CAAClC,EAAE,GAAG,GAAG,CAAC;UAAExK,CAAC,EAAE8B,IAAI,CAAC4K,KAAK,CAACjC,EAAE,GAAG,GAAG;QAAE,CAAC,CAAC;QACnE8B,EAAE,GAAG,CAACA,EAAE;QACR/B,EAAE,GAAG6B,GAAG,CAACvM,CAAC,GAAGgC,IAAI,CAACoC,GAAG,CAACuI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACoC,GAAG,CAACuI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE/B,EAAE,GAAG4B,GAAG,CAACrM,CAAC,GAAG8B,IAAI,CAACkC,GAAG,CAACyI,IAAI,CAAC,GAAGF,EAAE,GAAGzK,IAAI,CAACkC,GAAG,CAACyI,IAAI,GAAG3K,IAAI,CAACgC,EAAE,GAAG,CAAC,CAAC,GAAG0I,EAAE;QACpE7G,QAAQ,CAACjP,IAAI,CAAC;UAAEoJ,CAAC,EAAEgC,IAAI,CAAC4K,KAAK,CAAClC,EAAE,GAAG,GAAG,CAAC;UAAExK,CAAC,EAAE8B,IAAI,CAAC4K,KAAK,CAACjC,EAAE,GAAG,GAAG;QAAE,CAAC,CAAC;QACnE9E,QAAQ,CAACjP,IAAI,CAACiP,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1BA,QAAQ,CAACjP,IAAI,CAACiP,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAOA,QAAQ;MACjB,CAAC;MAED,IAAMgH,WAAW,GAAG,SAAdA,WAAWA,CAAGnI,KAAK,EAAI;QAC3ByE,QAAQ,GAAG1N,aAAa,CAACqR,WAAW,CAACpI,KAAK,CAAC;QAC3C0E,YAAY,GAAG3N,aAAa,CAACsR,kBAAkB,CAACrI,KAAK,EAAEyE,QAAQ,CAAC;QAChEF,WAAW,GAAGxN,aAAa,CAACuR,WAAW,CACrChP,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAAC2C,KAAK,EACtBV,OAAO,CAACQ,OAAO,EACfsK,YACF,CAAC;QACDF,WAAW,GAAGzN,aAAa,CAACwR,cAAc,CAAChE,WAAW,CAAC;QACvDI,WAAW,GAAG5N,aAAa,CAACyR,cAAc,CAAC9D,YAAY,EAAEH,WAAW,CAACkE,GAAG,CAAC;QACzE7D,OAAO,GAAGL,WAAW,CAACmE,MAAM,CAACC,MAAM,CAACjE,YAAY,CAAC;QACjDF,WAAW,GAAGzN,aAAa,CAAC6R,aAAa,CAACpE,WAAW,EAAEI,OAAO,CAAC;QAC/DD,WAAW,GAAG5N,aAAa,CAAC6R,aAAa,CAACjE,WAAW,EAAEC,OAAO,CAAC;QAC/DC,OAAO,GAAG9N,aAAa,CAAC8R,UAAU,CAAC7I,KAAK,CAAC;MAC3C,CAAC;;MAED;MACA,IAAI8I,QAAQ,GAAG,SAAXA,QAAQA,CAAG9I,KAAK,EAAI;QACtB,IAAI+I,QAAQ,GAAG,EAAE;QACjB/I,KAAK,CAACC,KAAK,CAAC1N,OAAO,CAAC,UAAAsN,IAAI,EAAI;UAC1B,IAAImJ,EAAE,GAAGnJ,IAAI,CAACsB,QAAQ,CAAC8H,IAAI;UAC3B,KAAK,IAAI1V,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyV,EAAE,EAAEzV,CAAC,EAAE,EAAE;YAC3BwV,QAAQ,CAAC7W,IAAI,CAAC2N,IAAI,CAACsB,QAAQ,CAAC+H,GAAG,CAAC3V,CAAC,CAAC,CAAC;UACrC;QACF,CAAC,CAAC;QACF,IAAI4V,IAAI,GAAG,EAAE;QACbJ,QAAQ,CAACxW,OAAO,CAAC,UAAAsN,IAAI,EAAI;UACvB,IAAIuJ,IAAI,GAAGpJ,KAAK,CAACmB,QAAQ,CAAC+H,GAAG,CAACrJ,IAAI,CAAC;UACnCsJ,IAAI,CAACjX,IAAI,CAACkX,IAAI,CAAC9N,CAAC,EAAE8N,IAAI,CAAC5N,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,OAAO2N,IAAI;MACb,CAAC;MAED,IAAI,CAACE,cAAc,GAAG,UAAUtK,GAAG,EAAE8I,GAAG,EAAEC,GAAG,EAAEwB,IAAI,EAAwB;QAAA,IAAAC,MAAA;QAAA,IAAtB9I,IAAI,GAAApO,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAmX,SAAA,GAAAnX,SAAA,MAAG,IAAI;QAAA,IAAE+H,OAAO,GAAA/H,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAmX,SAAA;QACvE;QACA,IAAIxJ,KAAK,GAAG,IAAI,CAACvI,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACwF,KAAK,CAAC,CACvC,QAAQ,EACRf,GAAG,CAAC0K,QAAQ,CAACC,OAAO,CACrB,CAAC;QACF,IAAIC,SAAS,GAAG,OAAO;QACvB,IAAIlJ,IAAI,KAAK,IAAI,EAAE;UACjB,IAAImJ,KAAK,GAAGnJ,IAAI,CAACoJ,IAAI;UACrB,IAAIC,GAAG,GAAG1P,OAAO,CAAC2P,QAAQ,CAACH,KAAK,CAAC;UACjCD,SAAS,GAAGG,GAAG,CAACE,IAAI,CAACL,SAAS;QAChC;QACA,IAAIM,IAAI,GAAG,IAAIhV,KAAK,CAACwN,OAAO,CAACoF,GAAG,CAACqC,KAAK,CAAC,CAAC,CAAC5O,CAAC,EAAEuM,GAAG,CAACqC,KAAK,CAAC,CAAC,CAAC1O,CAAC,CAAC;QAC1D,IAAI2O,SAAS,GAAGpL,GAAG,CAACqL,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;QACxC,IAAIvR,KAAK,GAAGiS,SAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,SAAS,CAAC1M,GAAG,CAACnC,CAAC;QAC7C,IAAI+O,KAAK,GAAGF,SAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,SAAS,CAAC1M,GAAG,CAACJ,CAAC;QAC7C,IAAIiN,SAAS,GAAG,IAAI,CAAC1C,aAAa,CAChC1P,KAAK,EACLmS,KAAK,EACLJ,IAAI,CAACC,KAAK,CAAC,CAAC,EACVpC,GAAG,GAAG,GAAG,GAAI,GAAG,GAAIxK,IAAI,CAACgC,EAC7B,CAAC;QACD,IAAIqC,KAAK,GAAG,EAAE;QACd3B,KAAK,CAACQ,KAAK,CAACjO,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1BY,KAAK,CAACzP,IAAI,CAAC6O,IAAI,CAAC;QAClB,CAAC,CAAC;QACF,KAAK,IAAIxN,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGoO,KAAK,CAACrP,MAAM,EAAEiB,GAAC,EAAE,EAAE;UACrC,IAAIwN,IAAI,GAAGY,KAAK,CAACpO,GAAC,CAAC;UACnB,IAAIwN,IAAI,CAACT,EAAE,IAAIvB,GAAG,CAAC0K,QAAQ,CAACc,MAAM,IAAIxJ,IAAI,CAACT,EAAE,IAAIgJ,IAAI,CAACG,QAAQ,CAACc,MAAM,EACnE;UACF,IAAIjO,MAAM,GACRoC,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAACtB,GAAG,CAAC0K,QAAQ,CAACC,OAAO,CAAC,CAAClJ,KAAK,CAACO,IAAI,CAACT,EAAE,CAAC;UACjE,IAAIhE,MAAM,KAAKkN,SAAS,EAAE;YACxBiB,OAAO,CAACC,GAAG,CACT3J,IAAI,CAACT,EAAE,GACL,iEACJ,CAAC;YACD,OAAO,KAAK;UACd;UACA,IAAIG,KAAI,GAAGT,KAAK,CAACQ,KAAK,CAACV,KAAK,CAAC,CAACiB,IAAI,CAACT,EAAE,CAAC,CAAC;UACvC,IAAIqK,MAAM,GAAGlK,KAAI,CAACoJ,IAAI;UACtB,IAAIe,IAAI,GAAGxQ,OAAO,CAAC2P,QAAQ,CAACY,MAAM,CAAC;UACnC,IAAIE,UAAU,GAAGD,IAAI,CAACZ,IAAI,CAACL,SAAS;UACpC,IACE,EACGA,SAAS,KAAKnT,sBAAsB,IACnCqU,UAAU,KAAKpU,sBAAsB,IACtCkT,SAAS,KAAKlT,sBAAsB,IACnCoU,UAAU,KAAKrU,sBAAuB,CACzC,EACD;YACA,IAAIsU,IAAI,GAAGrK,KAAI,CAACsK,QAAQ;YACxB,IAAIC,IAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAAChC,KAAI,CAACnF,CAAC,EAAEmF,KAAI,CAACjF,CAAC,CAAC;YAC5C,IAAIyP,SAAS,GAAG3O,MAAM,CAAC8N,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;YAC3C,IAAIyB,MAAM,GAAGD,SAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,SAAS,CAACxN,GAAG,CAACnC,CAAC;YAC9C,IAAI6P,MAAM,GAAGF,SAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,SAAS,CAACxN,GAAG,CAACJ,CAAC;YAC9C,IAAI+N,SAAS,GAAG,IAAI,CAACxD,aAAa,CAChCsD,MAAM,EACNC,MAAM,EACNH,IAAI,CAACd,KAAK,CAAC,CAAC,EACVY,IAAI,GAAG,GAAG,GAAI,GAAG,GAAIxN,IAAI,CAACgC,EAC9B,CAAC;YACD,IAAI2H,YAAY,CAACqD,SAAS,EAAEc,SAAS,CAAC,EAAE;cACtC,OAAO,KAAK;YACd;UACF;QACF;QACAzJ,KAAK,GAAG,EAAE;QACV3B,KAAK,CAACkB,KAAK,CAAC3O,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1BY,KAAK,CAACzP,IAAI,CAAC6O,IAAI,CAAC;QAClB,CAAC,CAAC;QAAC,IAAAsK,MAAA,YAAAA,OAAA,EACoC;YACrC,IAAItK,IAAI,GAAGY,KAAK,CAACpO,GAAC,CAAC;YACnB,IAAIwN,IAAI,CAACT,EAAE,IAAIvB,GAAG,CAAC0K,QAAQ,CAACc,MAAM,IAAIxJ,IAAI,CAACT,EAAE,IAAIgJ,IAAI,CAACG,QAAQ,CAACc,MAAM;YAErE,IAAI9J,IAAI,GAAGT,KAAK,CAACkB,KAAK,CAACpB,KAAK,CAAC,CAACiB,IAAI,CAACT,EAAE,CAAC,CAAC;YACvC;YACA,IAAIa,QAAQ,GAAG,EAAE;YACjBV,IAAI,CAACU,QAAQ,CAAC5O,OAAO,CAAC,UAAAwO,IAAI,EAAI;cAC5B,IAAIa,MAAM,GAAG5B,KAAK,CAACmB,QAAQ,CAAC+H,GAAG,CAACnI,IAAI,CAAC;cACrCI,QAAQ,CAACjP,IAAI,CAAC;gBAAEoJ,CAAC,EAAEsG,MAAM,CAACtG,CAAC;gBAAEE,CAAC,EAAEoG,MAAM,CAACpG;cAAE,CAAC,CAAC;YAC7C,CAAC,CAAC;YACF,IAAI8F,GAAG,GAAG,IAAIrM,KAAK,CAACwN,OAAO,CACzBtB,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,GAAG6F,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,EAC7B6F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAAC,GAAG2F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAC9B,CAAC;YACD,IAAIsP,IAAI,GAAGxJ,GAAG,CAACtE,KAAK,CAAC,CAAC;YACtB,IAAIgO,IAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAC1B,CAACtB,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,GAAG6F,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,IAAI,CAAC,EACnC,CAAC6F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAAC,GAAG2F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAAC,IAAI,CACpC,CAAC;YACD,IAAI2P,MAAM,GAAG1K,IAAI,CAAC6K,UAAU,CAACxL,KAAK,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAIoL,MAAM,GAAG5N,IAAI,CAAC6E,IAAI,CAACb,GAAG,CAAChG,CAAC,GAAGgG,GAAG,CAAChG,CAAC,GAAGgG,GAAG,CAAC9F,CAAC,GAAG8F,GAAG,CAAC9F,CAAC,CAAC;YACrD,IAAI4P,SAAS,GAAG7B,MAAI,CAAC3B,aAAa,CAACsD,MAAM,EAAEC,MAAM,EAAEH,IAAI,CAACd,KAAK,CAAC,CAAC,EAAEY,IAAI,CAAC;YACtE,IAAI7D,YAAY,CAACqD,SAAS,EAAEc,SAAS,CAAC,EAAE;cAAA;gBAAAG,CAAA,EAC/B;cAAK;YACd;UACF,CAAC;UAAAC,IAAA;QA1BD,KAAK,IAAIjY,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGoO,KAAK,CAACrP,MAAM,EAAEiB,GAAC,EAAE;UAAAiY,IAAA,GAAAH,MAAA;UAAA,IAAAG,IAAA,QAGjC;UAAS,IAAAA,IAAA,SAAAA,IAAA,CAAAD,CAAA;QAAA;QAwBb,OAAO,IAAI;MACb,CAAC;MAED,IAAI,CAACE,kBAAkB,GAAG,UACxB1M,GAAG,EACH8I,GAAG,EACHC,GAAG,EACHwB,IAAI,EAGJ;QAAA,IAFA7I,IAAI,GAAApO,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAmX,SAAA,GAAAnX,SAAA,MAAG,IAAI;QAAA,IACX+H,OAAO,GAAA/H,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAmX,SAAA;QAEP,IAAIxJ,KAAK,GAAG,IAAI,CAACvI,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACwF,KAAK,CAAC,CACvC,QAAQ,EACRf,GAAG,CAAC0K,QAAQ,CAACC,OAAO,CACrB,CAAC;QACF,IAAIgC,WAAW;QACf,IAAIjL,IAAI,KAAK,IAAI,EAAE;UACjB,IAAImJ,KAAK,GAAGnJ,IAAI,CAACoJ,IAAI;UACrB,IAAIC,GAAG,GAAG1P,OAAO,CAAC2P,QAAQ,CAACH,KAAK,CAAC;UACjC8B,WAAW,GAAG;YACZC,YAAY,EAAElL,IAAI;YAClBqJ,GAAG,EAAHA;UACF,CAAC;QACH;QACA,IAAIG,IAAI,GAAG,IAAIhV,KAAK,CAACwN,OAAO,CAACoF,GAAG,CAACqC,KAAK,CAAC,CAAC,CAAC5O,CAAC,EAAEuM,GAAG,CAACqC,KAAK,CAAC,CAAC,CAAC1O,CAAC,CAAC;QAC1D,IAAI2O,SAAS,GAAGpL,GAAG,CAACqL,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;QACxC,IAAIvR,KAAK,GAAGiS,SAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,SAAS,CAAC1M,GAAG,CAACnC,CAAC;QAC7C,IAAI+O,KAAK,GAAGF,SAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,SAAS,CAAC1M,GAAG,CAACJ,CAAC;QAC7C,IAAIiN,SAAS,GAAG,IAAI,CAAC1C,aAAa,CAChC1P,KAAK,EACLmS,KAAK,EACLJ,IAAI,CAACC,KAAK,CAAC,CAAC,EACVpC,GAAG,GAAG,GAAG,GAAI,GAAG,GAAIxK,IAAI,CAACgC,EAC7B,CAAC;QAED,IAAIqC,KAAK,GAAG,EAAE;QACd3B,KAAK,CAACQ,KAAK,CAACjO,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1BY,KAAK,CAACzP,IAAI,CAAC6O,IAAI,CAAC;QAClB,CAAC,CAAC;QACF,KAAK,IAAIxN,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGoO,KAAK,CAACrP,MAAM,EAAEiB,GAAC,EAAE,EAAE;UACrC,IAAIwN,IAAI,GAAGY,KAAK,CAACpO,GAAC,CAAC;UACnB,IAAIwN,IAAI,CAACT,EAAE,IAAIvB,GAAG,CAAC0K,QAAQ,CAACc,MAAM,IAAIxJ,IAAI,CAACT,EAAE,IAAIgJ,IAAI,CAACG,QAAQ,CAACc,MAAM,EACnE;UACF,IAAIjO,MAAM,GACRoC,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAACtB,GAAG,CAAC0K,QAAQ,CAACC,OAAO,CAAC,CAAClJ,KAAK,CAACO,IAAI,CAACT,EAAE,CAAC;UACjE,IAAIhE,MAAM,KAAKkN,SAAS,EAAE;YACxBiB,OAAO,CAACC,GAAG,CACT3J,IAAI,CAACT,EAAE,GACL,iEACJ,CAAC;YACD,OAAO,KAAK;UACd;UACA,IAAIG,MAAI,GAAGT,KAAK,CAACQ,KAAK,CAACV,KAAK,CAAC,CAACiB,IAAI,CAACT,EAAE,CAAC,CAAC;UACvC,IAAIqK,MAAM,GAAGlK,MAAI,CAACoJ,IAAI;UACtB,IAAIe,IAAI,GAAGxQ,OAAO,CAAC2P,QAAQ,CAACY,MAAM,CAAC;UACnC,IAAI,CAACC,IAAI,EACPA,IAAI,GAAGxQ,OAAO,CAAC2P,QAAQ,CAAC3S,+BAA+B,CAACuT,MAAM,CAAC,CAAC;UAClE,IAAIiB,SAAS,GAAG;YACdnL,IAAI,EAAJA,MAAI;YACJqJ,GAAG,EAAEc;UACP,CAAC;UAED,IACE7T,aAAa,CAAC8U,QAAQ,CAACH,WAAW,EAAEE,SAAS,CAAC,IAC9CA,SAAS,CAAC9B,GAAG,CAACD,IAAI,IAAI,SAAS,EAC/B;YACA,IAAIiB,IAAI,GAAGrK,MAAI,CAACsK,QAAQ;YACxB,IAAIC,IAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAAChC,MAAI,CAACnF,CAAC,EAAEmF,MAAI,CAACjF,CAAC,CAAC;YAC5C,IAAIyP,SAAS,GAAG3O,MAAM,CAAC8N,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;YAC3C,IAAIyB,MAAM,GAAGD,SAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,SAAS,CAACxN,GAAG,CAACnC,CAAC;YAC9C,IAAI6P,MAAM,GAAGF,SAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,SAAS,CAACxN,GAAG,CAACJ,CAAC;YAC9C,IAAI+N,SAAS,GAAG,IAAI,CAACxD,aAAa,CAChCsD,MAAM,EACNC,MAAM,EACNH,IAAI,CAACd,KAAK,CAAC,CAAC,EACVY,IAAI,GAAG,GAAG,GAAI,GAAG,GAAIxN,IAAI,CAACgC,EAC9B,CAAC;YACD,IAAI2H,YAAY,CAACqD,SAAS,EAAEc,SAAS,CAAC,EAAE;cACtC,OAAO,KAAK;YACd;UACF;QACF;QAEA,IAAIU,KAAK,GAAG,EAAE;QACd9L,KAAK,CAACkB,KAAK,CAAC3O,OAAO,CAAC,UAAAwT,IAAI,EAAI;UAC1BA,IAAI,CAAC+F,KAAK,CAACvZ,OAAO,CAAC,UAAAwZ,MAAM,EAAI;YAC3B,IAAIC,IAAI,GAAGhM,KAAK,CAAC8L,KAAK,CAAC5C,GAAG,CAAC6C,MAAM,CAAC;YAClCD,KAAK,CAAC5Z,IAAI,CAAC8Z,IAAI,CAAC;UAClB,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,IAAIzY,CAAC,GAAG,CAAC;QACT,OAAOA,CAAC,GAAGuY,KAAK,CAACxZ,MAAM,EAAEiB,CAAC,EAAE,EAAE;UAC5B,IAAIyX,KAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAACqJ,KAAK,CAACvY,CAAC,CAAC,CAAC+H,CAAC,EAAEwQ,KAAK,CAACvY,CAAC,CAAC,CAACiI,CAAC,CAAC;UACpD,IAAI0P,OAAM,GAAGY,KAAK,CAACvY,CAAC,CAAC,CAAC+X,UAAU,CAACxL,KAAK,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;UAC3D,IAAImM,OAAO,GAAGH,KAAK,CAACvY,CAAC,CAAC,CAAC+X,UAAU,CAACxL,KAAK,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;UAChE,IAAIoM,IAAI,GAAGJ,KAAK,CAACvY,CAAC,CAAC,CAACwX,QAAQ;UAC5B,IAAIK,UAAS,GAAG,IAAI,CAACxD,aAAa,CAACsD,OAAM,EAAEe,OAAO,EAAEjB,KAAI,CAACd,KAAK,CAAC,CAAC,EAAEgC,IAAI,CAAC;UACvE,IAAIjF,YAAY,CAACqD,SAAS,EAAEc,UAAS,CAAC,EAAE;YACtC,OAAO,KAAK;UACd;QACF;QACA,OAAO,IAAI;MACb,CAAC;MAED,IAAI,CAACe,cAAc,GAAG,UACpBC,MAAM,EACNC,SAAS,EACTrM,KAAK,EACLsM,SAAS,EACTtB,IAAI,EACJvK,IAAI,EACJ;QACA,IAAID,KAAK,GAAG,EAAE;QAEd,IAAI+L,YAAY,GAAG,EAAE;QACrB,IAAInS,OAAO,GAAGR,OAAO,CAACQ,OAAO;QAC7B,IAAI4F,KAAK,CAACwM,QAAQ,CAAChM,KAAK,CAACyI,IAAI,GAAG,CAAC,EAAE;UACjC,IAAI0C,YAAY,GAAG3L,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAEE,KAAK,CAACwM,QAAQ,CAAChM,KAAK,CAAC0I,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACtE,IAAIU,KAAK,GAAG+B,YAAY,CAAC9B,IAAI;UAC7B,IAAIC,GAAG,GAAG1P,OAAO,CAAC2P,QAAQ,CAACH,KAAK,CAAC;UACjC,IAAIE,GAAG,KAAKN,SAAS,IAAIM,GAAG,KAAK,IAAI,EACnCA,GAAG,GAAG1P,OAAO,CAAC0F,KAAK,CAAC,CAAC,UAAU,EAAE8J,KAAK,CAAC,CAAC;UAC1C2C,YAAY,GAAGzC,GAAG,CAAC/K,GAAG,CAAC0N,QAAQ;QACjC;QAEAzM,KAAK,CAACQ,KAAK,CAACjO,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1B,IAAIA,IAAI,CAACT,EAAE,IAAI2C,cAAc,CAACyJ,MAAM,EAAE;YACpC;UACF;UAEAlM,KAAK,CAACtO,IAAI,CAAC6O,IAAI,CAAC4L,IAAI,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,IAAI1C,IAAI,GAAG,IAAIhV,KAAK,CAACwN,OAAO,CAAC4J,SAAS,CAAC/Q,CAAC,EAAE,CAAC+Q,SAAS,CAAChP,CAAC,CAAC;;QAEvD;QACA,KAAK,IAAI9J,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGiN,KAAK,CAAClO,MAAM,GAAG,CAAC,EAAEiB,GAAC,EAAE,EAAE;UACzC,KAAK,IAAIgU,CAAC,GAAGhU,GAAC,GAAG,CAAC,EAAEgU,CAAC,GAAG/G,KAAK,CAAClO,MAAM,EAAEiV,CAAC,EAAE,EAAE;YACzC,IACE3Q,gBAAgB,CAACqT,IAAI,EAAE,IAAIhV,KAAK,CAACwN,OAAO,CAACjC,KAAK,CAACjN,GAAC,CAAC,CAAC+H,CAAC,EAAEkF,KAAK,CAACjN,GAAC,CAAC,CAACiI,CAAC,CAAC,CAAC,GACjE5E,gBAAgB,CAACqT,IAAI,EAAE,IAAIhV,KAAK,CAACwN,OAAO,CAACjC,KAAK,CAAC+G,CAAC,CAAC,CAACjM,CAAC,EAAEkF,KAAK,CAAC+G,CAAC,CAAC,CAAC/L,CAAC,CAAC,CAAC,EACjE;cACA,IAAIoR,QAAQ,GAAGpM,KAAK,CAAC+G,CAAC,CAAC;cACvB/G,KAAK,CAAC+G,CAAC,CAAC,GAAG/G,KAAK,CAACjN,GAAC,CAAC;cACnBiN,KAAK,CAACjN,GAAC,CAAC,GAAGqZ,QAAQ;YACrB;UACF;QACF;QACA,IAAIrZ,CAAC,GAAG,CAAC;QAET,OAAOA,CAAC,GAAGiN,KAAK,CAAClO,MAAM,EAAEiB,CAAC,EAAE,EAAE;UAC5B,IAAI,CAACiN,KAAK,CAACjN,CAAC,CAAC,EAAE;UACf,IAAI+I,OAAM,GACRoC,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAAC4C,cAAc,CAAC4J,OAAO,CAAC,CAACrM,KAAK,CAACA,KAAK,CAACjN,CAAC,CAAC,CAAC+M,EAAE,CAAC;UACvE,IAAIhE,OAAM,KAAKkN,SAAS,EAAE;YACxB,OAAO,KAAK;UACd;UACA,IAAIsD,WAAU,GAAG9M,KAAK,CAACQ,KAAK,CAACV,KAAK,CAAC,CAACU,KAAK,CAACjN,CAAC,CAAC,CAAC+M,EAAE,CAAC,CAAC;UACjD,IAAIwK,KAAI,GAAGgC,WAAU,CAAC/B,QAAQ;UAC9B,IAAIC,MAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAACqK,WAAU,CAACxR,CAAC,EAAEwR,WAAU,CAACtR,CAAC,CAAC;UACxD,IAAIyP,UAAS,GAAG3O,OAAM,CAAC8N,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;UAC3C,IAAIyB,QAAM,GAAGD,UAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,UAAS,CAACxN,GAAG,CAACnC,CAAC;UAC9C,IAAI6P,OAAM,GAAGF,UAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,UAAS,CAACxN,GAAG,CAACJ,CAAC;UAC9C,IAAI+N,WAAS,GAAG,IAAI,CAACxD,aAAa,CAChCsD,QAAM,EACNC,OAAM,EACNH,MAAI,CAACd,KAAK,CAAC,CAAC,EACVY,KAAI,GAAG,GAAG,GAAI,GAAG,GAAIxN,IAAI,CAACgC,EAC9B,CAAC;UACD,IAAI2H,YAAY,CAACqF,SAAS,EAAElB,WAAS,CAAC,EAAE;YACtC;UACF;QACF;QACA,IAAI5K,KAAK,CAAClO,MAAM,IAAI,CAAC,IAAI,CAACkO,KAAK,CAACjN,CAAC,CAAC,EAAE;QACpC,IAAI+I,MAAM,GACRoC,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAAC4C,cAAc,CAAC4J,OAAO,CAAC,CAACrM,KAAK,CAACA,KAAK,CAACjN,CAAC,CAAC,CAAC+M,EAAE,CAAC;QACvE,IAAIwM,UAAU,GAAG9M,KAAK,CAACQ,KAAK,CAACV,KAAK,CAAC,CAACU,KAAK,CAACjN,CAAC,CAAC,CAAC+M,EAAE,CAAC,CAAC;QACjD,IAAIyM,SAAS,GAAG,IAAI9X,KAAK,CAACwN,OAAO,CAACqK,UAAU,CAACxR,CAAC,EAAEwR,UAAU,CAACtR,CAAC,CAAC;QAC7D,IAAIsP,IAAI,GAAGgC,UAAU,CAAC/B,QAAQ;QAC9B,IAAIE,SAAS,GAAG3O,MAAM,CAAC8N,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;QAC3C,IAAIyB,MAAM,GAAGD,SAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,SAAS,CAACxN,GAAG,CAACnC,CAAC;QAC9C,IAAI6P,MAAM,GAAGF,SAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,SAAS,CAACxN,GAAG,CAACJ,CAAC;QAC9C,IAAI+N,SAAS,GAAG,IAAI,CAACxD,aAAa,CAChCsD,MAAM,EACNC,MAAM,EACN4B,SAAS,CAAC7C,KAAK,CAAC,CAAC,EACfY,IAAI,GAAG,GAAG,GAAI,GAAG,GAAIxN,IAAI,CAACgC,EAC9B,CAAC;QACD;QACA,IAAI0N,MAAM,GAAG,EAAE;QACf,IAAIC,QAAQ,GAAG,EAAE;QACjB,IAAIC,SAAS,GAAG,EAAE;QAClB,IAAIC,cAAc,GAAG,EAAE;QACvB,IAAIC,SAAS,GAAG,EAAE;QAClB,IAAIC,MAAM,GAAG,KAAK;QAClB,KAAK,IAAI9Z,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG,CAAC,EAAEA,GAAC,EAAE,EAAE;UAC1B,IAAI+Z,EAAE,GAAGlC,SAAS,CAAC7X,GAAC,CAAC;UACrB,IAAIga,EAAE,GAAGnC,SAAS,CAAC7X,GAAC,GAAG,CAAC,CAAC;UACzB,IAAIwN,IAAI,GAAG8E,iBAAiB,CAAC;YAAEvK,CAAC,EAAE0P,IAAI,CAAC1P,CAAC;YAAEE,CAAC,EAAEwP,IAAI,CAACxP;UAAE,CAAC,EAAE,CACrD;YAAEF,CAAC,EAAEgS,EAAE,CAAChS,CAAC;YAAEE,CAAC,EAAE8R,EAAE,CAAC9R;UAAE,CAAC,EACpB;YAAEF,CAAC,EAAEiS,EAAE,CAACjS,CAAC;YAAEE,CAAC,EAAE+R,EAAE,CAAC/R;UAAE,CAAC,CACrB,CAAC;UACFyR,QAAQ,CAAC/a,IAAI,CAAC6O,IAAI,CAAC9D,QAAQ,CAAC;UAC5B+P,MAAM,CAAC9a,IAAI,CAAC6O,IAAI,CAAC+E,KAAK,CAAC;UACvBoH,SAAS,CAAChb,IAAI,CAAC,CAACob,EAAE,EAAEC,EAAE,CAAC,CAAC;QAC1B;QACA;QACA,IAAIC,YAAY,GACdlQ,IAAI,CAACE,GAAG,CAACqI,iBAAiB,CAACmF,IAAI,EAAEkC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACjQ,QAAQ,CAAC,GACxDK,IAAI,CAACE,GAAG,CAACqI,iBAAiB,CAACmF,IAAI,EAAEkC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACjQ,QAAQ,CAAC;QAC1D,IAAIwQ,YAAY,GAAG,IAAIxY,KAAK,CAACwN,OAAO,CAClCyK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC5R,CAAC,GAAG4R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC5R,CAAC,EACrC4R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC1R,CAAC,GAAG0R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC1R,CACtC,CAAC,CAAClJ,MAAM,CAAC,CAAC;QACV,IAAIob,aAAa,GACfpQ,IAAI,CAACE,GAAG,CAACqI,iBAAiB,CAACmF,IAAI,EAAEkC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACjQ,QAAQ,CAAC,GACxDK,IAAI,CAACE,GAAG,CAACqI,iBAAiB,CAACmF,IAAI,EAAEkC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACjQ,QAAQ,CAAC;QAC1D,IAAI0Q,aAAa,GAAG,IAAI1Y,KAAK,CAACwN,OAAO,CACnCyK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC5R,CAAC,GAAG4R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC5R,CAAC,EACrC4R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC1R,CAAC,GAAG0R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC1R,CACtC,CAAC,CAAClJ,MAAM,CAAC,CAAC;QACV,IACEgL,IAAI,CAACE,GAAG,CAACF,IAAI,CAACE,GAAG,CAACgQ,YAAY,CAAC,GAAGlQ,IAAI,CAACE,GAAG,CAACiQ,YAAY,CAAC,CAAC,GAAG,IAAI,IAChEnQ,IAAI,CAACE,GAAG,CAACF,IAAI,CAACE,GAAG,CAACkQ,aAAa,CAAC,GAAGpQ,IAAI,CAACE,GAAG,CAACmQ,aAAa,CAAC,CAAC,GAAG,IAAI,EAElEN,MAAM,GAAG,IAAI;QACf;QACA,IAAIha,GAAG,GAAG,CAAC;QACX;QACA,KAAK,IAAIkU,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG0F,QAAQ,CAAC3a,MAAM,GAAG,CAAC,EAAEiV,EAAC,EAAE,EAAE;UAC5C,KAAK,IAAIqG,CAAC,GAAGrG,EAAC,GAAG,CAAC,EAAEqG,CAAC,GAAGX,QAAQ,CAAC3a,MAAM,EAAEsb,CAAC,EAAE,EAAE;YAC5C,IAAItQ,IAAI,CAACE,GAAG,CAACyP,QAAQ,CAAC1F,EAAC,CAAC,CAAC,GAAGjK,IAAI,CAACE,GAAG,CAACyP,QAAQ,CAACW,CAAC,CAAC,CAAC,EAAE;cACjD,IAAIC,IAAI,GAAGZ,QAAQ,CAACW,CAAC,CAAC;cACtBX,QAAQ,CAAC1F,EAAC,CAAC,GAAG0F,QAAQ,CAACW,CAAC,CAAC;cACzBX,QAAQ,CAACW,CAAC,CAAC,GAAGC,IAAI;cAClB,IAAIC,KAAK,GAAGd,MAAM,CAACY,CAAC,CAAC;cACrBZ,MAAM,CAACzF,EAAC,CAAC,GAAGyF,MAAM,CAACY,CAAC,CAAC;cACrBZ,MAAM,CAACY,CAAC,CAAC,GAAGE,KAAK;cACjB,IAAIC,KAAK,GAAGb,SAAS,CAACU,CAAC,CAAC;cACxBV,SAAS,CAAC3F,EAAC,CAAC,GAAG2F,SAAS,CAACU,CAAC,CAAC;cAC3BV,SAAS,CAACU,CAAC,CAAC,GAAGG,KAAK;YACtB;UACF;QACF;QACA;QACA,KAAK,IAAIxa,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG,CAAC,EAAEA,GAAC,EAAE,EAAE;UAC1B,IAAIwN,KAAI,GAAG8E,iBAAiB,CAACyG,SAAS,CAAC/Y,GAAC,CAAC,EAAE2Z,SAAS,CAAC7Z,GAAG,CAAC,CAAC;UAC1D8Z,cAAc,CAACjb,IAAI,CAAC6O,KAAI,CAAC9D,QAAQ,CAAC;UAClCmQ,SAAS,CAAClb,IAAI,CAAC;YACboJ,CAAC,EAAEyF,KAAI,CAAC+E,KAAK,CAACxK,CAAC,GAAGgR,SAAS,CAAC/Y,GAAC,CAAC,CAAC+H,CAAC;YAChCE,CAAC,EAAEuF,KAAI,CAAC+E,KAAK,CAACtK,CAAC,GAAG8Q,SAAS,CAAC/Y,GAAC,CAAC,CAACiI;UACjC,CAAC,CAAC;QACJ;QAEA,KAAK,IAAI+L,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG4F,cAAc,CAAC7a,MAAM,EAAEiV,GAAC,EAAE,EAAE;UAC9C,IAAIyG,EAAE,GAAGhD,IAAI,CAAC1P,CAAC,GAAG8R,SAAS,CAAC7F,GAAC,CAAC,CAACjM,CAAC;UAChC,IAAI2S,EAAE,GAAGjD,IAAI,CAACxP,CAAC,GAAG4R,SAAS,CAAC7F,GAAC,CAAC,CAAC/L,CAAC;UAChC,IACE,IAAI,CAAC6N,cAAc,CACjB+C,MAAM,EACN,IAAInX,KAAK,CAACwN,OAAO,CAACuL,EAAE,EAAEC,EAAE,CAAC,EACzBxN,IAAI,CAACsK,QAAQ,EACb;YACEtB,QAAQ,EAAE;cAAEc,MAAM,EAAE;YAAK;UAC3B,CAAC,EACD9J,IAAI,EACJ,IAAI,CAAC3G,OAAO,CAACM,OACf,CAAC,EACD;YACAgS,MAAM,CAACnQ,QAAQ,CAACiS,GAAG,CAACF,EAAE,EAAE3B,SAAS,CAAC7Q,CAAC,EAAE,CAACyS,EAAE,CAAC;YACzCrK,MAAM,CAACsK,GAAG,CAACF,EAAE,EAAEC,EAAE,CAAC;YAClB;UACF;QACF;MACF,CAAC;MAED,IAAI,CAACE,IAAI,GAAG,UAAUpP,GAAG,EAAEiB,KAAK,EAAE;QAChC;QACA,IAAI1D,MAAM,GAAGyC,GAAG,CAAC0K,QAAQ,CAACnN,MAAM;QAChC,OAAOA,MAAM,CAAC8R,MAAM,IAAI,IAAI,GAAI;UAC9B,IAAI9R,MAAM,CAACqE,IAAI,IAAI,OAAO,EAAE;UAC5BrE,MAAM,GAAGA,MAAM,CAAC8R,MAAM;QACxB;QACA,IAAIC,MAAM,GAAGtP,GAAG,CAACqP,MAAM,CAACA,MAAM,CAACA,MAAM;QACrC,IAAI9R,MAAM,CAACmN,QAAQ,CAACI,IAAI,IAAI,MAAM,EAAE;UAClC,IAAIyE,IAAI,GAAGtO,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAEuO,MAAM,CAAC5E,QAAQ,CAACc,MAAM,CAAC,CAAC,CAACQ,QAAQ;UAClE,IAAID,IAAI,GAAG9K,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAExD,MAAM,CAACmN,QAAQ,CAACc,MAAM,CAAC,CAAC,GACrDvK,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAExD,MAAM,CAACmN,QAAQ,CAACc,MAAM,CAAC,CAAC,CAACQ,QAAQ,GACvD,CAAC;UACL,IAAItK,IAAI,GAAGT,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAEuO,MAAM,CAAC5E,QAAQ,CAACc,MAAM,CAAC,CAAC;UACzD,IAAIgE,UAAU,GAAG9N,IAAI,CAACkJ,SAAS;UAC/B,IAAI6E,cAAc,GAAG1X,OAAO,CAC1B2J,IAAI,CAAC6K,UAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAC/C,CAAC,CACE0B,IAAI,CAAC,IAAI,CAAC,CACVE,EAAE,CAAC,IAAI,CAAC;UACX,IAAIyI,SAAS,GAAGkE,MAAM,CAACjE,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;UAC3C,IAAIwB,SAAS,GAAG3O,MAAM,CAAC8N,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;UAC3C,IAAIuB,IAAI,GAAG1O,MAAM,CAACL,QAAQ,CAACiO,KAAK,CAAC,CAAC;UAClC,IAAIhS,KAAK,GAAGiS,SAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,SAAS,CAAC1M,GAAG,CAACnC,CAAC;UAC7C,IAAInD,MAAM,GAAGgS,SAAS,CAAC5M,GAAG,CAAC/B,CAAC,GAAG2O,SAAS,CAAC1M,GAAG,CAACjC,CAAC;UAC9C,IAAI6O,KAAK,GAAGF,SAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,SAAS,CAAC1M,GAAG,CAACJ,CAAC;UAC7C,IAAIoR,WAAW,GAAG,IAAIxZ,KAAK,CAACyZ,WAAW,CAACxW,KAAK,EAAEC,MAAM,EAAEkS,KAAK,CAAC;UAC7D,IAAIsE,UAAU,GAAG,IAAI1Z,KAAK,CAAC2Z,IAAI,CAC7BH,WAAW,EACX,IAAIxZ,KAAK,CAAC4Z,iBAAiB,CAAC;YAC1B;YACA;YACAC,WAAW,EAAE,IAAI;YACjBC,QAAQ,EAAE9Z,KAAK,CAAC+Z;UAClB,CAAC,CACH,CAAC;UACD,IAAIC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;YAC3B,IAAIN,UAAU,EAAE;cACdjQ,QAAQ,CAACG,IAAI,CAACqG,MAAM,CAACyJ,UAAU,CAAC;cAChChZ,aAAa,CAACgZ,UAAU,CAAC;YAC3B;YACA9K,QAAQ,GAAG,KAAK;UAClB,CAAC;UACD,IAAIqL,GAAG,GAAG,IAAIja,KAAK,CAACka,SAAS,CAACR,UAAU,EAAE,QAAQ,CAAC;UACnDO,GAAG,CAACE,QAAQ,CAACC,SAAS,GAAG,CAAC;UAC1BH,GAAG,CAACE,QAAQ,CAACE,SAAS,GAAG,KAAK;UAC9BJ,GAAG,CAACK,WAAW,GAAG,GAAG;UACrBZ,UAAU,CAAC/T,GAAG,CAACsU,GAAG,CAAC;UACnBP,UAAU,CAAC1S,QAAQ,CAACiS,GAAG,CACrBG,MAAM,CAACpS,QAAQ,CAACX,CAAC,EACjBiT,UAAU,KAAK9X,sBAAsB,GACjC+X,cAAc,GAAGH,MAAM,CAACpS,QAAQ,CAACT,CAAC,GAAGrD,MAAM,GAAG,CAAC,GAC/CkW,MAAM,CAACpS,QAAQ,CAACT,CAAC,GAAGrD,MAAM,GAAG,CAAC,EAClCkW,MAAM,CAACpS,QAAQ,CAACoB,CAClB,CAAC;UACDsR,UAAU,CAAC5D,QAAQ,CAACmD,GAAG,CACrBG,MAAM,CAACtD,QAAQ,CAACzP,CAAC,EACjB+S,MAAM,CAACtD,QAAQ,CAACvP,CAAC,EACjB6S,MAAM,CAACtD,QAAQ,CAAC1N,CAClB,CAAC;UACDsR,UAAU,CAAChO,IAAI,GAAG,cAAc;UAChCjC,QAAQ,CAACG,IAAI,CAACjE,GAAG,CAAC+T,UAAU,CAAC;UAC7B,IAAIa,MAAM,GACR,CAACvE,SAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,SAAS,CAACxN,GAAG,CAACnC,CAAC,IAAI,CAAC,GACvC,CAAC6O,SAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,SAAS,CAAC1M,GAAG,CAACnC,CAAC,IAAI,CAAC;UACzC,IAAImU,MAAM,GACR,CAACxE,SAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,SAAS,CAACxN,GAAG,CAACJ,CAAC,IAAI,CAAC,GACvC,CAAC8M,SAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,SAAS,CAAC1M,GAAG,CAACJ,CAAC,IAAI,CAAC;UACzC,IAAIqS,IAAI,GAAGf,UAAU,CAAC1S,QAAQ,CAACiO,KAAK,CAAC,CAAC;UACtC;UACA,IAAIyF,MAAM,GAAG,EAAE;UACf,IAAI3J,EAAE,GACJgF,IAAI,CAAC1P,CAAC,GACNkU,MAAM,GAAGlS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3C,IAAIsQ,EAAE,GACJ5E,IAAI,CAAC3N,CAAC,GACNmS,MAAM,GAAGlS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CqQ,MAAM,CAACzd,IAAI,CAAC,IAAI+C,KAAK,CAACmI,OAAO,CAAC4I,EAAE,EAAE,CAAC,EAAE4J,EAAE,CAAC,CAAC;UACzCJ,MAAM,GAAG,CAACA,MAAM;UAChBxJ,EAAE,GACAgF,IAAI,CAAC1P,CAAC,GACNkU,MAAM,GAAGlS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CsQ,EAAE,GACA5E,IAAI,CAAC3N,CAAC,GACNmS,MAAM,GAAGlS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CqQ,MAAM,CAACzd,IAAI,CAAC,IAAI+C,KAAK,CAACmI,OAAO,CAAC4I,EAAE,EAAE,CAAC,EAAE4J,EAAE,CAAC,CAAC;UACzCJ,MAAM,GACJ,CAACvE,SAAS,CAAC1N,GAAG,CAACjC,CAAC,GAAG2P,SAAS,CAACxN,GAAG,CAACnC,CAAC,IAAI,CAAC,GACvC,CAAC6O,SAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,SAAS,CAAC1M,GAAG,CAACnC,CAAC,IAAI,CAAC;UACzCmU,MAAM,GACJ,EAAExE,SAAS,CAAC1N,GAAG,CAACF,CAAC,GAAG4N,SAAS,CAACxN,GAAG,CAACJ,CAAC,CAAC,GAAG,CAAC,GACxC,CAAC8M,SAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,SAAS,CAAC1M,GAAG,CAACJ,CAAC,IAAI,CAAC;UACzC2I,EAAE,GACAgF,IAAI,CAAC1P,CAAC,GACNkU,MAAM,GAAGlS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CsQ,EAAE,GACA5E,IAAI,CAAC3N,CAAC,GACNmS,MAAM,GAAGlS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CqQ,MAAM,CAACzd,IAAI,CAAC,IAAI+C,KAAK,CAACmI,OAAO,CAAC4I,EAAE,EAAE,CAAC,EAAE4J,EAAE,CAAC,CAAC;UACzCJ,MAAM,GAAG,CAACA,MAAM;UAChBxJ,EAAE,GACAgF,IAAI,CAAC1P,CAAC,GACNkU,MAAM,GAAGlS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CsQ,EAAE,GACA5E,IAAI,CAAC3N,CAAC,GACNmS,MAAM,GAAGlS,IAAI,CAACkC,GAAG,CAAEsL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC,GACzCmQ,MAAM,GAAGnS,IAAI,CAACoC,GAAG,CAAEoL,IAAI,GAAG,GAAG,GAAIxN,IAAI,CAACgC,EAAE,CAAC;UAC3CqQ,MAAM,CAACzd,IAAI,CAAC,IAAI+C,KAAK,CAACmI,OAAO,CAAC4I,EAAE,EAAE,CAAC,EAAE4J,EAAE,CAAC,CAAC;UACzC,IAAI3S,QAAQ,GAAGK,IAAI,CAAC6E,IAAI,CACtB,CAACuN,IAAI,CAACpU,CAAC,GAAGqU,MAAM,CAAC,CAAC,CAAC,CAACrU,CAAC,KAAKoU,IAAI,CAACpU,CAAC,GAAGqU,MAAM,CAAC,CAAC,CAAC,CAACrU,CAAC,CAAC,GAC7C,CAACoU,IAAI,CAACrS,CAAC,GAAGsS,MAAM,CAAC,CAAC,CAAC,CAACtS,CAAC,KAAKqS,IAAI,CAACrS,CAAC,GAAGsS,MAAM,CAAC,CAAC,CAAC,CAACtS,CAAC,CAClD,CAAC;UACD,IAAIwS,IAAI,GAAG,CAAC;UACZ7E,IAAI,GAAG2E,MAAM,CAAC,CAAC,CAAC,CAACzF,KAAK,CAAC,CAAC;UACxB,KAAK,IAAI3W,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGoc,MAAM,CAACrd,MAAM,EAAEiB,GAAC,EAAE,EAAE;YACtC,IAAIuc,MAAM,GAAGxS,IAAI,CAAC6E,IAAI,CACpB,CAACuN,IAAI,CAACpU,CAAC,GAAGqU,MAAM,CAACpc,GAAC,CAAC,CAAC+H,CAAC,KAAKoU,IAAI,CAACpU,CAAC,GAAGqU,MAAM,CAACpc,GAAC,CAAC,CAAC+H,CAAC,CAAC,GAC7C,CAACoU,IAAI,CAACrS,CAAC,GAAGsS,MAAM,CAACpc,GAAC,CAAC,CAAC8J,CAAC,KAAKqS,IAAI,CAACrS,CAAC,GAAGsS,MAAM,CAACpc,GAAC,CAAC,CAAC8J,CAAC,CAClD,CAAC;YACD,IAAIyS,MAAM,GAAG7S,QAAQ,EAAE;cACrBA,QAAQ,GAAG6S,MAAM;cACjBD,IAAI,GAAGtc,GAAC,GAAG,CAAC;cACZyX,IAAI,GAAG2E,MAAM,CAACpc,GAAC,CAAC,CAAC2W,KAAK,CAAC,CAAC;YAC1B;UACF;UACA;UACA,IACE7F,SAAS,IAAI,IAAI,IACjBA,SAAS,CAACoF,QAAQ,CAACc,MAAM,IAAIjO,MAAM,CAACmN,QAAQ,CAACc,MAAM,IACnDsF,IAAI,IAAIvL,YAAY,EACpB;YACA2K,gBAAgB,CAAC,CAAC;YAClB;UACF,CAAC,MAAM;YACLhK,aAAa,CAAC,CAAC;UACjB;UACA;UACA,IAAI4K,IAAI,IAAI,CAAC,EAAE/E,IAAI,IAAI,GAAG;UAE1BhH,SAAS,GAAG,CAAC;UACbE,GAAG,GAAG,CAAC;UACPK,SAAS,GAAG/H,MAAM;UAClBgI,YAAY,GAAGuL,IAAI;UACnB3L,SAAS,GAAG4G,IAAI;UAChB7G,WAAW,GAAG+G,IAAI;UAClB7K,OAAO,GAAGwO,UAAU;UACpB,IAAIoB,EAAE,GAAGL,IAAI,CAACpU,CAAC,GAAG0P,IAAI,CAAC1P,CAAC;UACxB,IAAI0U,EAAE,GAAGN,IAAI,CAACrS,CAAC,GAAG2N,IAAI,CAAC3N,CAAC;UACxB8G,UAAU,GAAG,IAAIlP,KAAK,CAACmI,OAAO,CAAC2S,EAAE,EAAE,CAAC,EAAEC,EAAE,CAAC;UACzC5L,eAAe,GAAK,CAAC0G,IAAI,GAAGwD,IAAI,IAAI,GAAG,GAAI,GAAG,GAAIhR,IAAI,CAACgC,EAAE;QAC3D,CAAC,MAAM;UACL,IAAImB,MAAI,GAAGT,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAEuO,MAAM,CAAC5E,QAAQ,CAACc,MAAM,CAAC,CAAC;UACzD,IAAIxF,SAAS,CAACzS,MAAM,EAAE;YACpB,IAAIiB,GAAC;YACL,KAAKA,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGwR,SAAS,CAACzS,MAAM,EAAEiB,GAAC,EAAE,EAAE;cACrC,IAAIyY,IAAI,GAAGjH,SAAS,CAACxR,GAAC,CAAC;cACvB,IAAI+J,IAAI,CAACE,GAAG,CAACF,IAAI,CAACkC,GAAG,CAACyQ,WAAW,CAACC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;gBAChD,IACEzP,MAAI,CAACjF,CAAC,GAAGyU,WAAW,CAAChH,IAAI,CAAC/Q,KAAK,GAAG,CAAC,IACjC8T,IAAI,CAACxQ,CAAC,GAAGwQ,IAAI,CAAC9T,KAAK,GAAG,CAAC,IACzBuI,MAAI,CAACjF,CAAC,GAAGyU,WAAW,CAAChH,IAAI,CAAC/Q,KAAK,GAAG,CAAC,IACjC8T,IAAI,CAACxQ,CAAC,GAAGwQ,IAAI,CAAC9T,KAAK,GAAG,CAAC,KACxB+X,WAAW,CAACC,MAAM,IAAI,CAAC,IAAID,WAAW,CAACC,MAAM,IAAI,CAAC5S,IAAI,CAACgC,EAAE,GAAG,CAAC,GAC1DmB,MAAI,CAACnF,CAAC,IAAI0Q,IAAI,CAAC1Q,CAAC,IAChBmF,MAAI,CAACnF,CAAC,GAAG2U,WAAW,CAAChH,IAAI,CAAC9Q,MAAM,IAAI6T,IAAI,CAAC1Q,CAAC,GAC1CmF,MAAI,CAACnF,CAAC,IAAI0Q,IAAI,CAAC1Q,CAAC,IAChBmF,MAAI,CAACnF,CAAC,GAAG2U,WAAW,CAAChH,IAAI,CAAC9Q,MAAM,IAAI6T,IAAI,CAAC1Q,CAAC,CAAC,EAE/C;cACJ,CAAC,MAAM;gBACL,IACEmF,MAAI,CAACnF,CAAC,GAAG2U,WAAW,CAAChH,IAAI,CAAC/Q,KAAK,GAAG,CAAC,IACjC8T,IAAI,CAAC1Q,CAAC,GAAG0Q,IAAI,CAAC9T,KAAK,GAAG,CAAC,IACzBuI,MAAI,CAACnF,CAAC,GAAG2U,WAAW,CAAChH,IAAI,CAAC/Q,KAAK,GAAG,CAAC,IACjC8T,IAAI,CAAC1Q,CAAC,GAAG0Q,IAAI,CAAC9T,KAAK,GAAG,CAAC,KACxB+X,WAAW,CAACC,MAAM,IAAI,CAAC,IAAID,WAAW,CAACC,MAAM,IAAI,CAAC5S,IAAI,CAACgC,EAAE,GAAG,CAAC,GAC1DmB,MAAI,CAACjF,CAAC,IAAIwQ,IAAI,CAACxQ,CAAC,IAChBiF,MAAI,CAACjF,CAAC,GAAGyU,WAAW,CAAChH,IAAI,CAAC9Q,MAAM,IAAI6T,IAAI,CAACxQ,CAAC,GAC1CiF,MAAI,CAACjF,CAAC,IAAIwQ,IAAI,CAACxQ,CAAC,IAChBiF,MAAI,CAACjF,CAAC,GAAGyU,WAAW,CAAChH,IAAI,CAAC9Q,MAAM,IAAI6T,IAAI,CAACxQ,CAAC,CAAC,EAE/C;cACJ;YACF;YACA,IAAIjI,GAAC,IAAIwR,SAAS,CAACzS,MAAM,EAAE;UAC7B;UACA,IAAIgK,MAAM,CAACmN,QAAQ,CAACI,IAAI,IAAI,MAAM,EAAE;YAClChG,QAAQ,GAAG,KAAK;YAChB;UACF,CAAC,MAAM;YACL,IAAI0K,WAAU,GAAG9N,MAAI,CAACkJ,SAAS;YAC/B,IAAI6E,eAAc,GAAG1X,OAAO,CAC1B2J,MAAI,CAAC6K,UAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAC/C,CAAC,CACE0B,IAAI,CAAC,IAAI,CAAC,CACVE,EAAE,CAAC,IAAI,CAAC;YACX,IAAIyI,UAAS,GAAGkE,MAAM,CAACjE,QAAQ,CAAC,CAAC,CAAC,CAACX,QAAQ;YAC3C,IAAIvR,MAAK,GAAGiS,UAAS,CAAC5M,GAAG,CAACjC,CAAC,GAAG6O,UAAS,CAAC1M,GAAG,CAACnC,CAAC;YAC7C,IAAInD,OAAM,GAAGgS,UAAS,CAAC5M,GAAG,CAAC/B,CAAC,GAAG2O,UAAS,CAAC1M,GAAG,CAACjC,CAAC;YAC9C,IAAI6O,MAAK,GAAGF,UAAS,CAAC5M,GAAG,CAACF,CAAC,GAAG8M,UAAS,CAAC1M,GAAG,CAACJ,CAAC;YAC7C,IAAIoR,YAAW,GAAG,IAAIxZ,KAAK,CAACyZ,WAAW,CAACxW,MAAK,EAAEC,OAAM,EAAEkS,MAAK,CAAC;YAC7D,IAAIsE,WAAU,GAAG,IAAI1Z,KAAK,CAAC2Z,IAAI,CAC7BH,YAAW,EACX,IAAIxZ,KAAK,CAAC4Z,iBAAiB,CAAC;cAC1B;cACA;cACAC,WAAW,EAAE,IAAI;cACjBC,QAAQ,EAAE9Z,KAAK,CAAC+Z;YAClB,CAAC,CACH,CAAC;YACD,IAAIC,iBAAgB,GAAG,SAAnBA,iBAAgBA,CAAA,EAAS;cAC3B,IAAIN,WAAU,EAAE;gBACdjQ,QAAQ,CAACG,IAAI,CAACqG,MAAM,CAACyJ,WAAU,CAAC;gBAChChZ,aAAa,CAACgZ,WAAU,CAAC;cAC3B;cACA9K,QAAQ,GAAG,KAAK;YAClB,CAAC;YACD,IAAIqL,IAAG,GAAG,IAAIja,KAAK,CAACka,SAAS,CAACR,WAAU,EAAE,QAAQ,CAAC;YACnDO,IAAG,CAACE,QAAQ,CAACC,SAAS,GAAG,CAAC;YAC1BH,IAAG,CAACE,QAAQ,CAACE,SAAS,GAAG,KAAK;YAC9BJ,IAAG,CAACK,WAAW,GAAG,GAAG;YACrBZ,WAAU,CAAC/T,GAAG,CAACsU,IAAG,CAAC;YAEnBP,WAAU,CAAC1S,QAAQ,CAACiS,GAAG,CACrBG,MAAM,CAACpS,QAAQ,CAACX,CAAC,EACjBiT,WAAU,KAAK9X,sBAAsB,GACjC+X,eAAc,GAAGH,MAAM,CAACpS,QAAQ,CAACT,CAAC,GAAGrD,OAAM,GAAG,CAAC,GAC/CkW,MAAM,CAACpS,QAAQ,CAACT,CAAC,GAAGrD,OAAM,GAAG,CAAC,EAClCkW,MAAM,CAACpS,QAAQ,CAACoB,CAClB,CAAC;YACDsR,WAAU,CAAC5D,QAAQ,CAACmD,GAAG,CACrBG,MAAM,CAACtD,QAAQ,CAACzP,CAAC,EACjB+S,MAAM,CAACtD,QAAQ,CAACvP,CAAC,EACjB6S,MAAM,CAACtD,QAAQ,CAAC1N,CAClB,CAAC;YACDsR,WAAU,CAAChO,IAAI,GAAG,cAAc;YAChCjC,QAAQ,CAACG,IAAI,CAACjE,GAAG,CAAC+T,WAAU,CAAC;YAE7B,IAAIwB,QAAQ,GAAGnQ,KAAK,CAACF,KAAK,CAAC,CAAC,OAAO,EAAExD,MAAM,CAACmN,QAAQ,CAAC2G,MAAM,CAAC,CAAC;YAC7D;YACA;YACA;YACA;YACA,IAAIC,iBAAiB,GAAG,KAAK;YAC7B,IAAIlP,QAAQ,GAAG,EAAE;YACjB,IAAIgP,QAAQ,KAAK3G,SAAS,EAAE;YAC5B2G,QAAQ,CAAChP,QAAQ,CAAC5O,OAAO,CAAC,UAAAwO,IAAI,EAAI;cAChC,IAAIO,GAAG,GAAGtB,KAAK,CAACF,KAAK,CAAC,CAAC,UAAU,EAAEiB,IAAI,CAAC,CAAC;cACzCI,QAAQ,CAACjP,IAAI,CAACoP,GAAG,CAAC;YACpB,CAAC,CAAC;YACF,IAAIgP,EAAE,GAAGjC,MAAM,CAACpS,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC5O,CAAC;YAClC,IAAIiV,EAAE,GAAG,CAAClC,MAAM,CAACpS,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC7M,CAAC;YACnC,IAAImT,OAAO,GAAG,IAAIvb,KAAK,CAACwN,OAAO,CAC7BtB,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,GAAG6F,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,EAC7B6F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAAC,GAAG2F,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAC9B,CAAC;YACD,IAAIiV,OAAO,GAAGnT,IAAI,CAAC6E,IAAI,CACrBqO,OAAO,CAAClV,CAAC,GAAGkV,OAAO,CAAClV,CAAC,GAAGkV,OAAO,CAAChV,CAAC,GAAGgV,OAAO,CAAChV,CAC9C,CAAC;YACDgV,OAAO,CAACE,SAAS,CAAC,CAAC;YACnB,IAAIlO,IAAI,GAAG,IAAIvN,KAAK,CAACwN,OAAO,CAAC6N,EAAE,GAAGnP,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,EAAEiV,EAAE,GAAGpP,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CAAC,CAAC;YACpE,IAAImV,UAAU,GAAGrT,IAAI,CAAC6E,IAAI,CAACK,IAAI,CAAClH,CAAC,GAAGkH,IAAI,CAAClH,CAAC,GAAGkH,IAAI,CAAChH,CAAC,GAAGgH,IAAI,CAAChH,CAAC,CAAC;YAC7D,IAAIwB,KAAK,GAAGM,IAAI,CAACE,GAAG,CAACgT,OAAO,CAACxT,KAAK,CAAC,CAAC,GAAGwF,IAAI,CAACxF,KAAK,CAAC,CAAC,CAAC;YACpDA,KAAK,GAAGA,KAAK,GAAGM,IAAI,CAACgC,EAAE,GAAG,CAAC,GAAGhC,IAAI,CAACgC,EAAE,GAAGtC,KAAK,GAAGA,KAAK;YACrD,IAAI4T,UAAU,GAAGtT,IAAI,CAACoC,GAAG,CAAC1C,KAAK,CAAC,GAAG2T,UAAU;YAC7C,IAAIE,WAAW,GAAG,CAAC;YACnB,IAAID,UAAU,GAAG,GAAG,EAAE;cACpBC,WAAW,GAAG,CAACD,UAAU,GAAG,CAACP,iBAAiB,GAAGnY,MAAK,IAAI,CAAC;YAC7D;YACA,IAAI0Y,UAAU,GAAGH,OAAO,GAAG,GAAG,EAAE;cAC9BI,WAAW,GACT,CAACD,UAAU,GAAG,CAACP,iBAAiB,GAAGnY,MAAK,IAAI,CAAC,GAAGuY,OAAO;YAC3D;YACA,IAAIK,WAAW,GAAG,IAAI7b,KAAK,CAACwN,OAAO,CACjC+N,OAAO,CAAClV,CAAC,GAAGsV,UAAU,GAAGzP,QAAQ,CAAC,CAAC,CAAC,CAAC7F,CAAC,EACtCkV,OAAO,CAAChV,CAAC,GAAGoV,UAAU,GAAGzP,QAAQ,CAAC,CAAC,CAAC,CAAC3F,CACvC,CAAC;YACD,IAAIuV,UAAU,GAAG,IAAI9b,KAAK,CAACwN,OAAO,CAChCqO,WAAW,CAACxV,CAAC,GAAGgV,EAAE,EAClBQ,WAAW,CAACtV,CAAC,GAAG+U,EAClB,CAAC;YACD,IAAIS,OAAO,GAAG1T,IAAI,CAAC6E,IAAI,CACrB,CAACmO,EAAE,GAAGQ,WAAW,CAACxV,CAAC,KAAKgV,EAAE,GAAGQ,WAAW,CAACxV,CAAC,CAAC,GACzC,CAACiV,EAAE,GAAGO,WAAW,CAACtV,CAAC,KAAK+U,EAAE,GAAGO,WAAW,CAACtV,CAAC,CAC9C,CAAC;YACD,IAAIyV,SAAS,GAAG,CAACZ,iBAAiB,GAAGhG,MAAK,IAAI,CAAC;YAC/C,IAAI6G,KAAK,GAAG,CAACF,OAAO,GAAGC,SAAS,IAAID,OAAO;YAC3C,IAAIhG,MAAI,GAAG,IAAI/V,KAAK,CAACwN,OAAO,CAC1B6N,EAAE,GAAG,CAACQ,WAAW,CAACxV,CAAC,GAAGgV,EAAE,IAAIY,KAAK,GAAGV,OAAO,CAAClV,CAAC,GAAGuV,WAAW,EAC3DN,EAAE,GAAG,CAACO,WAAW,CAACtV,CAAC,GAAG+U,EAAE,IAAIW,KAAK,GAAGV,OAAO,CAAChV,CAAC,GAAGqV,WAClD,CAAC;YACD,IAAIM,SAAS,GAAGJ,UAAU,CAAC/T,KAAK,CAAC,CAAC,GAAGM,IAAI,CAACgC,EAAE,GAAG,CAAC;YAChD,IAAIwL,MAAI,GAAIqG,SAAS,GAAG,GAAG,GAAI7T,IAAI,CAACgC,EAAE;YACtC,IAAIoQ,KAAI,GAAG,IAAIza,KAAK,CAACwN,OAAO,CAAC6N,EAAE,EAAEC,EAAE,CAAC;YACpC,IAAIjC,KAAI,GAAG7N,MAAI,CAACsK,QAAQ;YACxB,IAAI8E,KAAI,GAAG,CAAC;YACZ;YACA;YACA,IAAIuB,MAAM,GAAG,IAAI,CAAC/H,cAAc,CAC9BgF,MAAM,EACNrD,MAAI,EACJF,MAAI,EACJxO,MAAM,EACNmE,MAAI,EACJ,IAAI,CAAC3G,OAAO,CAACM,OACf,CAAC;YACD;YACA,IAAIgX,MAAM,IAAI,KAAK,EAAE;cACnBnC,iBAAgB,CAAC,CAAC;cAClBhK,aAAa,CAAC,CAAC;cACf;YACF;YACA;YACA,IAAIZ,SAAS,KAAK/H,MAAM,IAAI6D,OAAO,KAAK,IAAI,EAAE;cAC5C8O,iBAAgB,CAAC,CAAC;cAClBnL,SAAS,GAAG,EAAE;cACdG,WAAW,GAAG,IAAIhP,KAAK,CAACmI,OAAO,CAAC4N,MAAI,CAAC1P,CAAC,EAAE,CAAC,EAAE,CAAC0P,MAAI,CAACxP,CAAC,CAAC;cACnD,IAAI6V,UAAS,GAAGlR,OAAO,CAAClE,QAAQ,CAACiO,KAAK,CAAC,CAAC;cACxC,IAAI6F,GAAE,GAAGsB,UAAS,CAAC/V,CAAC,GAAG2I,WAAW,CAAC3I,CAAC;cACpC,IAAI0U,GAAE,GAAGqB,UAAS,CAAChU,CAAC,GAAG4G,WAAW,CAAC5G,CAAC;cACpC8G,UAAU,GAAG,IAAIlP,KAAK,CAACmI,OAAO,CAAC2S,GAAE,EAAE,CAAC,EAAEC,GAAE,CAAC;cACzC9L,SAAS,GAAG4G,MAAI;cAChB1G,eAAe,GAAK,CAAC0G,MAAI,GAAGwD,KAAI,IAAI,GAAG,GAAI,GAAG,GAAIhR,IAAI,CAACgC,EAAE;cACzDuE,QAAQ,GAAG,KAAK;cAChB;YACF,CAAC,MAAM;cACLoB,aAAa,CAAC,CAAC;YACjB;YACA;YACAnB,SAAS,GAAG,CAAC;YACbE,GAAG,GAAG,CAAC;YACPK,SAAS,GAAG/H,MAAM;YAClBgI,YAAY,GAAGuL,KAAI;YACnB3L,SAAS,GAAG4G,MAAI;YAChB7G,WAAW,GAAG,IAAIhP,KAAK,CAACmI,OAAO,CAAC4N,MAAI,CAAC1P,CAAC,EAAE,CAAC,EAAE,CAAC0P,MAAI,CAACxP,CAAC,CAAC;YACnD2E,OAAO,GAAGwO,WAAU;YACpB,IAAI0C,SAAS,GAAGlR,OAAO,CAAClE,QAAQ,CAACiO,KAAK,CAAC,CAAC;YACxC,IAAI6F,IAAE,GAAGsB,SAAS,CAAC/V,CAAC,GAAG2I,WAAW,CAAC3I,CAAC;YACpC,IAAI0U,IAAE,GAAGqB,SAAS,CAAChU,CAAC,GAAG4G,WAAW,CAAC5G,CAAC;YACpC8G,UAAU,GAAG,IAAIlP,KAAK,CAACmI,OAAO,CAAC2S,IAAE,EAAE,CAAC,EAAEC,IAAE,CAAC;YACzC9L,SAAS,GAAG4G,MAAI;YAChB1G,eAAe,GAAK,CAAC0G,MAAI,GAAGwD,KAAI,IAAI,GAAG,GAAI,GAAG,GAAIhR,IAAI,CAACgC,EAAE;UAC3D;QACF;MACF,CAAC;;MAED;MACA,IAAI2Q,WAAW,GAAG,IAAI;MACtB,IAAIqB,SAAS,GAAG,KAAK;MACrB,IAAIC,KAAK,EAAEC,KAAK;MAEhB,IAAIC,MAAM,GAAG,IAAI;MAEjB,IAAIC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;QAC3B,IAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QAC/CF,MAAM,CAACzZ,KAAK,GAAG,GAAG;QAClByZ,MAAM,CAACxZ,MAAM,GAAG,GAAG;QACnBwZ,MAAM,CAACzY,KAAK,CAAChB,KAAK,GAAG,EAAE,GAAG,IAAI;QAC9ByZ,MAAM,CAACzY,KAAK,CAACf,MAAM,GAAG,GAAG,GAAG,IAAI;QAChC,IAAM2Z,GAAG,GAAGH,MAAM,CAACI,UAAU,CAAC,IAAI,CAAC;QACnCD,GAAG,CAACE,SAAS,GAAG,SAAS;QACzBF,GAAG,CAACG,WAAW,GAAG,SAAS;QAC3BH,GAAG,CAACI,SAAS,CAAC,CAAC;QACfJ,GAAG,CAACK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG7U,IAAI,CAACgC,EAAE,CAAC;QACnCwS,GAAG,CAACM,IAAI,CAAC,CAAC;QACVN,GAAG,CAACO,MAAM,CAAC,CAAC;QACZ,IAAIC,IAAI,GAAG,IAAIC,KAAK,CAAC,CAAC;QACtBD,IAAI,CAACE,WAAW,GAAG,WAAW;QAC9BF,IAAI,CAACG,GAAG,GAAG,sCAAsC;QACjDH,IAAI,CAACI,MAAM,GAAG,YAAY;UACxBZ,GAAG,CAACa,SAAS,CAACL,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAEDR,GAAG,CAACI,SAAS,CAAC,CAAC;QACfJ,GAAG,CAACK,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG7U,IAAI,CAACgC,EAAE,CAAC;QACpCwS,GAAG,CAACM,IAAI,CAAC,CAAC;QACVN,GAAG,CAACO,MAAM,CAAC,CAAC;QACZ,IAAIO,IAAI,GAAG,IAAIL,KAAK,CAAC,CAAC;QACtBK,IAAI,CAACJ,WAAW,GAAG,WAAW;QAC9BI,IAAI,CAACH,GAAG,GAAG,kCAAkC;QAC7CG,IAAI,CAACF,MAAM,GAAG,YAAY;UACxBZ,GAAG,CAACa,SAAS,CAACC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACtC,CAAC;QAED,OAAOjB,MAAM;MACf,CAAC;MAED,IAAIkB,SAAS,GAAG,IAAI;MACpB,IAAIC,SAAS,GAAG,CAAC;MAEjB,IAAIC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAGC,MAAM,EAAI;QAChC,IAAMrB,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QAC/CF,MAAM,CAACzZ,KAAK,GAAG,GAAG;QAClByZ,MAAM,CAACxZ,MAAM,GAAG,GAAG;QACnBwZ,MAAM,CAACzY,KAAK,CAAChB,KAAK,GAAG,GAAG,GAAG,IAAI;QAC/ByZ,MAAM,CAACzY,KAAK,CAACf,MAAM,GAAG,GAAG,GAAG,IAAI;QAChC,IAAM2Z,GAAG,GAAGH,MAAM,CAACI,UAAU,CAAC,IAAI,CAAC;QACnCD,GAAG,CAACG,WAAW,GAAG,SAAS;QAC3BH,GAAG,CAACmB,SAAS,GAAG,EAAE;QAClBnB,GAAG,CAACI,SAAS,CAAC,CAAC;QACfJ,GAAG,CAACK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG7U,IAAI,CAACgC,EAAE,CAAC;QACnCwS,GAAG,CAACO,MAAM,CAAC,CAAC;QAEZP,GAAG,CAACG,WAAW,GAAGhc,sBAAsB;QACxC6b,GAAG,CAACmB,SAAS,GAAG,CAAC;QACjBnB,GAAG,CAACI,SAAS,CAAC,CAAC;QACf,IAAIY,SAAS,GAAG,EAAE,IAAIA,SAAS,GAAG,CAAC,EAAE,EAAE;UACrC,IAAIE,MAAM,IAAI,CAAC,EAAE;YACfH,SAAS,GAAG,KAAK;UACnB,CAAC,MAAM;YACLA,SAAS,GAAG,IAAI;UAClB;UACA,IAAIC,SAAS,KAAK,CAAC,EAAE;YACnB,IAAIE,MAAM,GAAG,CAAC,GAAG,EAAE;cACjBH,SAAS,GAAG,IAAI;YAClB,CAAC,MAAM;cACLA,SAAS,GAAG,KAAK;YACnB;UACF;QACF;QAEAf,GAAG,CAACK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAGa,MAAM,GAAG,KAAK,GAAI1V,IAAI,CAACgC,EAAE,EAAEuT,SAAS,CAAC;QAC7Df,GAAG,CAACO,MAAM,CAAC,CAAC;QAEZS,SAAS,GAAGE,MAAM;QAElB,OAAOrB,MAAM;MACf,CAAC;MAED,IAAIuB,WAAW,GAAG,IAAIje,KAAK,CAACke,OAAO,CAACzB,gBAAgB,CAAC,CAAC,CAAC;MACvDwB,WAAW,CAACE,WAAW,GAAG,IAAI;MAE9B,IAAItb,OAAO,GAAG,IAAI7C,KAAK,CAACoe,MAAM,CAC5B,IAAIpe,KAAK,CAACqe,cAAc,CAAC;QAAEC,GAAG,EAAEL,WAAW;QAAEM,eAAe,EAAE;MAAK,CAAC,CACtE,CAAC;MACD1b,OAAO,CAACsX,QAAQ,CAACN,WAAW,GAAG,IAAI;MACnChX,OAAO,CAACsX,QAAQ,CAACE,SAAS,GAAG,KAAK;MAClCxX,OAAO,CAACoZ,KAAK,CAAChD,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;MAC7BpW,OAAO,CAACyX,WAAW,GAAG,CAAC;MACvBzX,OAAO,CAAC6I,IAAI,GAAG,SAAS;MAExB,IAAI8S,YAAY,GAAG,IAAIxe,KAAK,CAACke,OAAO,CAACJ,iBAAiB,CAAC,CAAC,CAAC,CAAC;MAC1DU,YAAY,CAACL,WAAW,GAAG,IAAI;MAE/B,IAAIrb,QAAQ,GAAG,IAAI9C,KAAK,CAACoe,MAAM,CAC7B,IAAIpe,KAAK,CAACqe,cAAc,CAAC;QAAEC,GAAG,EAAEE,YAAY;QAAED,eAAe,EAAE;MAAM,CAAC,CACxE,CAAC;MAEDzb,QAAQ,CAACmZ,KAAK,CAAChD,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;MACvCnW,QAAQ,CAACqX,QAAQ,CAACN,WAAW,GAAG,IAAI;MACpC/W,QAAQ,CAACqX,QAAQ,CAACE,SAAS,GAAG,KAAK;MACnCvX,QAAQ,CAACwX,WAAW,GAAG,CAAC;MACxBxX,QAAQ,CAAC4I,IAAI,GAAG,UAAU;;MAE1B;AACJ;AACA;AACA;AACA;AACA;MACI,IAAM+S,QAAQ,GAAG,SAAXA,QAAQA,CAAIjiB,CAAC,EAAEkiB,IAAI,EAAK;QAC5B/Q,KAAK,CAACtH,CAAC,GAAI7J,CAAC,CAACmiB,OAAO,GAAGta,MAAI,CAACpB,KAAK,GAAI,CAAC,GAAG,CAAC;QAC1C0K,KAAK,CAACpH,CAAC,GAAI,CAAC/J,CAAC,CAACoiB,OAAO,GAAGva,MAAI,CAACnB,MAAM,GAAI,CAAC,GAAG,CAAC;QAE5C4K,SAAS,CAAC+Q,aAAa,CAAClR,KAAK,EAAEpJ,MAAM,CAAC;QACtCiK,YAAY,GAAGV,SAAS,CAACgR,GAAG,CAACC,SAAS;QAEtCrQ,KAAK,GAAG0B,iBAAiB,CAAC5T,CAAC,EAAEkiB,IAAI,CAAC;QAClCra,MAAI,CAACQ,OAAO,CAACK,cAAc,CAAC8Z,gBAAgB,CAACtQ,KAAK,CAAC;MACrD,CAAC;MAED,IAAMuQ,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGziB,CAAC,EAAI;QACjCmR,KAAK,CAACtH,CAAC,GAAI7J,CAAC,CAACmiB,OAAO,GAAGta,MAAI,CAACpB,KAAK,GAAI,CAAC,GAAG,CAAC;QAC1C0K,KAAK,CAACpH,CAAC,GAAI,CAAC/J,CAAC,CAACoiB,OAAO,GAAGva,MAAI,CAACnB,MAAM,GAAI,CAAC,GAAG,CAAC;QAE5C4K,SAAS,CAAC+Q,aAAa,CAAClR,KAAK,EAAEpJ,MAAM,CAAC;QACtCiK,YAAY,GAAGV,SAAS,CAACgR,GAAG,CAACC,SAAS;QAEtC,IAAI9S,KAAK,GAAGxC,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAAC/F,KAAK,CAACyF,aAAa,CAAC,CAACmB,KAAK;QACjE,IAAIrP,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACqP,KAAK,CAAC;QAC7B,IAAIiT,OAAO,GAAG,EAAE;QAChBtiB,IAAI,CAACU,OAAO,CAAC,UAAAc,GAAG,EAAI;UAClB6N,KAAK,CAAC7N,GAAG,CAAC,CAAC+W,QAAQ,CAAC,CAAC,CAAC,CAACA,QAAQ,CAAC7X,OAAO,CAAC,UAAA6hB,IAAI,EAAI;YAC9C,IAAIA,IAAI,CAACzT,IAAI,IAAI,MAAM,IAAIyT,IAAI,CAAC7T,OAAO,EAAE4T,OAAO,CAACjiB,IAAI,CAACkiB,IAAI,CAAC;UAC7D,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,IAAID,OAAO,CAAC7hB,MAAM,GAAG,CAAC,EAAE;UACtB,IAAM+hB,UAAU,GAAGtR,SAAS,CAACuR,gBAAgB,CAACH,OAAO,CAAC;UACtD,IAAIE,UAAU,CAAC/hB,MAAM,GAAG,CAAC,EAAE;YACzB,IAAIoT,WAAW,GAAG2O,UAAU,CAAC,CAAC,CAAC,CAACvO,KAAK;YACrCJ,WAAW,CAACE,YAAY,CAACrC,UAAU,CAAC;YAEpCI,KAAK,GAAG;cAAErI,CAAC,EAAEoK,WAAW,CAACpK,CAAC;cAAEE,CAAC,EAAE,CAACkK,WAAW,CAACrI;YAAE,CAAC;YAC/C/D,MAAI,CAACQ,OAAO,CAACK,cAAc,CAAC8Z,gBAAgB,CAACtQ,KAAK,CAAC;YACnD,OAAO,IAAI;UACb;QACF;QAEA,OAAO,KAAK;MACd,CAAC;MAED,IAAI,CAAC4Q,cAAc,GAAG,UAAAC,KAAK,EAAI;QAC7B9Q,cAAc,GAAGb,SAAS,CAAC5G,QAAQ;QACnCsH,UAAU,CAACrH,IAAI,CAAC2G,SAAS,CAAC4R,WAAW,CAAC,CAACC,MAAM,CAAC,CAAC;QAC/C,IAAIpP,QAAQ,GAAG,CAAC;QAChB,IACEf,WAAW,IACXA,WAAW,CAACkE,GAAG,IACflE,WAAW,CAACkE,GAAG,CAACkM,QAAQ,KAAKnL,SAAS,EACtC;UACA,IAAI8B,UAAU,GAAG/G,WAAW,CAACkE,GAAG,CAACkM,QAAQ,CAACrJ,UAAU;UACpDhG,QAAQ,GAAGgG,UAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;UACpD,IAAI2B,IAAI,GAAG6J,UAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI;UAC1DwF,QAAQ,GAAGxO,OAAO,CAACwO,QAAQ,CAAC,CAAC9D,IAAI,CAACC,IAAI,CAAC,CAACC,EAAE,CAACpI,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACmH,IAAI,CAAC;QACzE;QACAiS,QAAQ,CAACc,KAAK,EAAElP,QAAQ,CAAC;QAEzB,IAAM3N,KAAK,GAAG2B,MAAI,CAAC7B,KAAK,CAACE,KAAK;QAE9B2B,MAAI,CAACrB,iBAAiB,CAACqD,CAAC,GAAGsH,KAAK,CAACtH,CAAC;QAClChC,MAAI,CAACrB,iBAAiB,CAACuD,CAAC,GAAGoH,KAAK,CAACpH,CAAC;QAElC,IAAMwE,KAAK,GAAGrI,KAAK,CAAC2C,KAAK,CAACwF,KAAK,CAAC,CAAC,QAAQ,EAAEnI,KAAK,CAAC2C,KAAK,CAACyF,aAAa,CAAC,CAAC;QACtE,IAAM6U,MAAM,GACV5U,KAAK,CAACwM,QAAQ,CAACvM,KAAK,CAACgJ,IAAI,GACzBjJ,KAAK,CAACwM,QAAQ,CAACV,KAAK,CAAC7C,IAAI,GACzBjJ,KAAK,CAACwM,QAAQ,CAAChM,KAAK,CAACyI,IAAI,GACzBjJ,KAAK,CAACwM,QAAQ,CAACtL,KAAK,CAAC+H,IAAI;QAE3B,IAAI2L,MAAM,IAAI,CAAC,EAAE;UACfzR,UAAU,GAAG,KAAK;QACpB,CAAC,MAAM,IAAIyR,MAAM,IAAI,CAAC,IAAI3R,cAAc,IAAI,QAAQ,IAAIA,cAAc,EAAE;UACtEE,UAAU,GAAG,IAAI;QACnB;QAEAoO,KAAK,GAAG5N,KAAK,CAACrI,CAAC;QACfkW,KAAK,GAAG7N,KAAK,CAACnI,CAAC;;QAEf;AACN;AACA;AACA;AACA;AACA;QACM,IAAIqZ,SAAS,GAAG,CAAC;QACjB9R,SAAS,CAAC+Q,aAAa,CAAClR,KAAK,EAAEpJ,MAAM,CAAC;QACtC,IAAMsb,MAAM,GAAG,EAAE;QACjBnS,WAAW,CAACpQ,OAAO,CAAC,UAAAwiB,MAAM,EAAI;UAC5B,IAAI,CAACA,MAAM,EAAE;UACbA,MAAM,CAACjW,QAAQ,CAAC,UAAA3N,CAAC,EAAI;YACnB,IAAIA,CAAC,CAAC6jB,MAAM,EAAEF,MAAM,CAAC5iB,IAAI,CAACf,CAAC,CAAC;UAC9B,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,IAAIkjB,UAAU,GAAGtR,SAAS,CAACuR,gBAAgB,CAACQ,MAAM,EAAE,IAAI,CAAC;QAEzD,IAAIG,cAAc,GAAGlS,SAAS,CAACuR,gBAAgB,CAAC,CAACxc,OAAO,CAAC,EAAE,IAAI,CAAC;QAEhE,IAAImd,cAAc,CAAC3iB,MAAM,GAAG,CAAC,EAAE;UAC7B,IAAI2K,QAAQ,GAAGK,IAAI,CAAC6E,IAAI,CACtB7E,IAAI,CAAC4X,GAAG,CAAC,CAACD,cAAc,CAAC,CAAC,CAAC,CAACE,EAAE,CAAC7Z,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAC9CgC,IAAI,CAAC4X,GAAG,CAAC,CAACD,cAAc,CAAC,CAAC,CAAC,CAACE,EAAE,CAAC3Z,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CACrD,CAAC;UACD,IAAIyB,QAAQ,IAAI,EAAE,EAAE;YAClB4X,SAAS,GAAG,CAAC;UACf,CAAC,MAAM;YACL5X,QAAQ,GAAGK,IAAI,CAAC6E,IAAI,CAClB7E,IAAI,CAAC4X,GAAG,CAAC,CAACD,cAAc,CAAC,CAAC,CAAC,CAACE,EAAE,CAAC7Z,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAC9CgC,IAAI,CAAC4X,GAAG,CAAC,CAACD,cAAc,CAAC,CAAC,CAAC,CAACE,EAAE,CAAC3Z,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CACrD,CAAC;YACD,IAAIyB,QAAQ,IAAI,EAAE,EAAE;cAClB4X,SAAS,GAAG,CAAC;YACf;UACF;QACF;QAEA,IAAIR,UAAU,CAAC/hB,MAAM,GAAG,CAAC,EAAE;UACzB,IAAIiB,GAAC,GAAG,CAAC;YACPjB,MAAM,GAAG+hB,UAAU,CAAC/hB,MAAM;UAC5B,KAAKiB,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGjB,MAAM,EAAEiB,GAAC,EAAE,EAAE;YAC3B,IACE8gB,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAAClL,IAAI,KAAK,WAAW;YACzC;YACAwK,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,KAAK,UAAU,IACxC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,KAAK,MAAM,IACpC,CAAC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,CAAClG,QAAQ,CAAC,YAAY,CAAC,EAEjD;UACJ;UAEA,IAAI4Z,UAAU,CAAC9gB,GAAC,CAAC,KAAKiW,SAAS,EAAE;YAC/B,IAAI6K,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,CAACyU,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAEP,SAAS,GAAG,CAAC;YACrE,IAAIR,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,CAACyU,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EACtDP,SAAS,GAAG,CAAC;UACjB,CAAC,MAAM;YACLpK,OAAO,CAACC,GAAG,CAAC,oDAAoD,CAAC;UACnE;QACF;QAEA,IAAIpR,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAACU,IAAI,IAAIvC,oBAAoB,EAAE;QAEnD,IAAIqN,UAAU,EAAE;UACd,IAAIkR,UAAU,CAAC/hB,MAAM,GAAG,CAAC,IAAI,CAAC+iB,KAAK,CAAChB,UAAU,CAAC,CAAC,CAAC,CAACpX,QAAQ,CAAC,EAAE;YAC3D,IAAI1J,GAAC;YACL,KAAKA,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG8gB,UAAU,CAAC/hB,MAAM,EAAEiB,GAAC,EAAE,EAAE;cACtC,IACE8gB,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,YAAY9f,KAAK,CAAC2Z,IAAI,IAC1CyF,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,cAAc,IAC3C0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAAClL,IAAI,IAAI,MAAM,IACnCwK,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,UAAU,IACvC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,aAAa,IAC1C0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAAClL,IAAI,IAAI,WAAW,IACxCwK,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,OAAO,IACpC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,UAAU,IACvC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,IAAI,MAAM,IACnC,CAAC0T,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,CAAClG,QAAQ,CAAC,YAAY,CAAC,IACjD,CAAC4Z,UAAU,CAAC9gB,GAAC,CAAC,CAACwhB,MAAM,CAACpU,IAAI,CAAClG,QAAQ,CAAC,YAAY,CAAC,EAEjD;YACJ;YACA,IAAI4Z,UAAU,CAAC9gB,GAAC,CAAC,KAAKiW,SAAS,EAAE;cAC/B,IAAIqL,SAAS,KAAK,CAAC,IAAIA,SAAS,KAAK,CAAC,EAAE;gBACtC1R,UAAU,GAAG,KAAK;gBAClB7J,MAAI,CAACQ,OAAO,CAACK,cAAc,CAACmb,WAAW,CAAC,CAAC;gBACzC/b,OAAO,CAAC2L,MAAM,CAACpN,OAAO,CAAC;gBACvBwB,MAAI,CAACQ,OAAO,CAACE,YAAY,CAACub,sBAAsB,CAAC,CAAC;gBAClD;cACF;YACF;YACA,IAAItS,cAAc,KAAKuG,SAAS,EAAE;cAChC5F,MAAM,CAACsK,GAAG,CAACvK,KAAK,CAACrI,CAAC,EAAEqI,KAAK,CAACnI,CAAC,CAAC;cAC5B,IAAIqZ,SAAS,IAAI,CAAC,EAAE;gBAClBtb,OAAO,CAAC2L,MAAM,CAACpN,OAAO,CAAC;gBACvB,IAAI6b,IAAI,GAAG,CAAC;gBACZ,IACEpP,WAAW,IACXA,WAAW,CAACkE,GAAG,IACflE,WAAW,CAACkE,GAAG,CAACkM,QAAQ,KAAKnL,SAAS,EACtC;kBACA,IAAI8B,WAAU,GAAG/G,WAAW,CAACkE,GAAG,CAACkM,QAAQ,CAACrJ,UAAU;kBACpDqI,IAAI,GAAGrI,WAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;kBAChD,IAAI2B,KAAI,GAAG6J,WAAU,CAACxL,KAAK,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI;kBAC1D6T,IAAI,GAAG7c,OAAO,CAAC6c,IAAI,CAAC,CAACnS,IAAI,CAACC,KAAI,CAAC,CAACC,EAAE,CAACpI,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACmH,IAAI,CAAC;gBACjE;gBACAiS,QAAQ,CACN;kBAAEE,OAAO,EAAEY,KAAK,CAACZ,OAAO,GAAG,EAAE;kBAAEC,OAAO,EAAEW,KAAK,CAACX;gBAAQ,CAAC,EACvDF,IACF,CAAC;gBACD,IAAIhI,YAAY,GACdjN,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAAC4C,cAAc,CAAC4J,OAAO,CAAC,CAACrM,KAAK,CACtDyC,cAAc,CAACyJ,MAAM,CACtB;gBACH,IAAI/V,WAAW,CAACgV,YAAY,CAAC,EAAE;gBAC/B,IAAM6J,OAAO,GAAGlc,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAAC+F,MAAM,CAC1C6I,GAAG,CAACjG,cAAc,CAAC4J,OAAO,CAAC,CAC3BrM,KAAK,CAAC0I,GAAG,CAACjG,cAAc,CAACyJ,MAAM,CAAC;gBAEnCoG,SAAS,GAAG,CAAC;gBAEb/a,QAAQ,CAACkE,QAAQ,CAACiS,GAAG,CACnBxP,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACX,CAAC,GAAGqI,KAAK,CAACrI,CAAC,EAClCka,OAAO,CAAC/I,QAAQ,KAAK,UAAU,GAC3B,CAAC/N,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,GACvBga,OAAO,CAAClK,UAAU,CAACpC,GAAG,CAAC,QAAQ,CAAC,CAACA,GAAG,CAAC,QAAQ,CAAC,GAChDsM,OAAO,CAAClK,UAAU,CAACpC,GAAG,CAAC,UAAU,CAAC,CAACA,GAAG,CAAC,QAAQ,CAAC,GAC9CxK,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,EAC9BkD,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACoB,CAAC,GAAGsG,KAAK,CAACnI,CACnC,CAAC;gBAEDiY,YAAY,CAACgC,KAAK,GAAG1C,iBAAiB,CAAC,CAAC,CAAC;gBACzCU,YAAY,CAACL,WAAW,GAAG,IAAI;gBAE/B7Z,OAAO,CAACqB,GAAG,CAAC7C,QAAQ,CAAC;gBACrBuB,MAAI,CAAC+E,QAAQ,CAAC;kBAAEtG,QAAQ,EAAEA;gBAAS,CAAC,CAAC;gBACrC,IAAI2d,SAAS,GAAG/R,KAAK;gBACrB+P,QAAQ,CAACc,KAAK,EAAEb,IAAI,CAAC;gBAErBra,MAAI,CAACQ,OAAO,CAACE,YAAY,CAAC2b,mBAAmB,CAC3C1S,cAAc,CAAC4J,OAAO,EACtB5J,cAAc,CAACyJ,MAAM,EACrB/I,KAAK,CAACrI,CAAC,EACPqI,KAAK,CAACnI,CAAC,EACPka,SAAS,CAACpa,CAAC,EACXoa,SAAS,CAACla,CACZ,CAAC;gBACD4H,OAAO,GAAG,IAAI;cAChB,CAAC,MAAM,IAAIyR,SAAS,IAAI,CAAC,EAAE;gBACzBvR,OAAO,GAAG,IAAI;cAChB,CAAC,MAAM,IAAIuR,SAAS,IAAI,CAAC,EAAE;gBACzB,QAAQ,IAAI;kBACV,KAAK,QAAQ,IAAI5R,cAAc;oBAC7B3J,MAAI,CAACQ,OAAO,CAACC,YAAY,CAAC6b,mBAAmB,CAC3C3S,cAAc,CAAC4J,OAAO,EACtB5J,cAAc,CAAC8I,MAAM,EACrBpI,KAAK,CAACrI,CAAC,EACPqI,KAAK,CAACnI,CACR,CAAC;oBACD;kBACF;oBACElC,MAAI,CAACQ,OAAO,CAACE,YAAY,CAAC6b,mBAAmB,CAC3C5S,cAAc,CAAC4J,OAAO,EACtB5J,cAAc,CAACyJ,MAAM,EACrB/I,KAAK,CAACrI,CAAC,EACPqI,KAAK,CAACnI,CACR,CAAC;oBACD;gBACJ;gBACA6H,KAAK,GAAG,IAAI;gBACZ9J,OAAO,CAAC2L,MAAM,CAACpN,OAAO,CAAC;cACzB;cACA,IAAI,CAAC5B,0BAA0B,CAACuE,QAAQ,CAACpC,IAAI,CAAC,EAC5CqB,cAAc,CAACoc,YAAY,CAAC/Z,IAAI,GAAG9E,cAAc,CAAC8e,MAAM,CAACC,IAAI;YACjE;UACF,CAAC,MAAM;YACL7S,UAAU,GAAG,KAAK;YAClB7J,MAAI,CAACQ,OAAO,CAACK,cAAc,CAACmb,WAAW,CAAC,CAAC;YACzC/b,OAAO,CAAC2L,MAAM,CAACpN,OAAO,CAAC;YACvBwB,MAAI,CAACQ,OAAO,CAACE,YAAY,CAACub,sBAAsB,CAAC,CAAC;YAClD;UACF;QACF;MACF,CAAC;MAED,IAAI,CAAC/c,QAAQ,CAACyd,aAAa,CAAC,IAAIhhB,KAAK,CAACihB,KAAK,CAACrgB,WAAW,CAACsgB,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;MACxE,IAAI,CAAC5d,QAAQ,CAAC6d,OAAO,CAAC,IAAI,CAACne,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;;MAE9C;MACA,IAAMme,aAAa,GAAGthB,QAAQ,CAACuhB,WAAW,CAAC,IAAI,CAACC,IAAI,CAACF,aAAa,CAAC;MACnEA,aAAa,CAACG,WAAW,CAAC,IAAI,CAACje,QAAQ,CAACS,UAAU,CAAC;;MAEnD;;MAEA,IACEqB,KAAK,CAACwF,KAAK,CAAC,CAAC,QAAQ,EAAExF,KAAK,CAACyF,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAACkJ,IAAI,IACtE,CAAC,EACD;QACA;QACA9F,UAAU,GAAG,IAAI;QACjBF,cAAc,CAAC4J,OAAO,GAAGvS,KAAK,CAACyF,aAAa;QAC5CkD,cAAc,CAACyJ,MAAM,GAAGpS,KAAK,CAC1BwF,KAAK,CAAC,CAAC,QAAQ,EAAExF,KAAK,CAACyF,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAC3D4M,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ+J,UAAU,CAAC,YAAM;UACf,IAAI;YACFxT,aAAa,GACXxE,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAAC4C,cAAc,CAAC4J,OAAO,CAAC,CAACrM,KAAK,CACtDyC,cAAc,CAACyJ,MAAM,CACtB;YACH,IAAI/V,WAAW,CAACuM,aAAa,CAAC,EAAE;YAChC,IAAMsS,OAAO,GAAGlc,MAAI,CAAC7B,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAAC+F,MAAM,CAC1C6I,GAAG,CAACjG,cAAc,CAAC4J,OAAO,CAAC,CAC3BrM,KAAK,CAAC0I,GAAG,CAACjG,cAAc,CAACyJ,MAAM,CAAC;YACnC,IAAIiK,OAAO,GAAGzT,aAAa,CAACjH,QAAQ,CAACiO,KAAK,CAAC,CAAC;YAC5CpS,OAAO,CAACmE,QAAQ,CAACiS,GAAG,CAClBxP,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACX,CAAC,GAAGqb,OAAO,CAACrb,CAAC,EACpCka,OAAO,CAAC/I,QAAQ,KAAK,UAAU,GAC3B,CAAC/N,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,GACvBga,OAAO,CAAClK,UAAU,CAACpC,GAAG,CAAC,QAAQ,CAAC,CAACA,GAAG,CAAC,QAAQ,CAAC,GAChDxK,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,GAAG0H,aAAa,CAACkH,QAAQ,CAAC,CAAC,CAAC,CAACnO,QAAQ,CAACT,CAAC,EACnEkD,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACoB,CAAC,GAAGsZ,OAAO,CAACtZ,CACrC,CAAC;YAED9D,OAAO,CAACqB,GAAG,CAAC9C,OAAO,CAAC;YACpBwB,MAAI,CAAC+E,QAAQ,CAAC;cAAEvG,OAAO,EAAEA;YAAQ,CAAC,CAAC;UACrC,CAAC,CAAC,OAAO8e,GAAG,EAAE;YACZnM,OAAO,CAACC,GAAG,CACT,mBAAmB,GACjBmM,IAAI,CAACC,SAAS,CAAC7T,cAAc,CAAC,GAC9B,WAAW,GACX2T,GACJ,CAAC;UACH;QACF,CAAC,EAAE,IAAI,CAAC;MACV;;MAEA;;MAEA,SAAS/V,IAAIA,CAAA,EAAG;QACdlH,KAAK,GAAG,IAAI1E,KAAK,CAAC8hB,KAAK,CAAC,CAAC;QACzBxd,OAAO,GAAG,IAAItE,KAAK,CAAC+hB,KAAK,CAAC,CAAC;QAC3Bzd,OAAO,CAAC0d,UAAU,GAAG,IAAIhiB,KAAK,CAACihB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD;QACA5d,MAAM,CAACiB,OAAO,GAAGA,OAAO;QACxB;QACA,IAAIrD,0BAA0B,CAACuE,QAAQ,CAAC9C,KAAK,CAACU,IAAI,CAAC,EAAE;UACnD,IAAMgI,MAAM,GAAK/F,KAAK,CAAhB+F,MAAM;UACZ,IAAIN,aAAa,GAAGM,MAAM,CAAC6I,GAAG,CAAC5O,KAAK,CAACyF,aAAa,CAAC;UACnD,IAAIwB,UAAU,GAAGzK,OAAO,CAACiJ,aAAa,CAACwB,UAAU,CAAC,CAC/CC,IAAI,CAACzB,aAAa,CAAC0B,IAAI,CAAC,CACxBC,EAAE,CAACpH,KAAK,CAACmH,IAAI,CAAC;UACjB,IAAIN,QAAQ,GAAGpB,aAAa,CAACoB,QAAQ,CAACwL,IAAI,CAAC,CAAC;UAC5C,IAAIuK,IAAI,GAAG,CAAC;YACVC,IAAI,GAAG,CAAC;YACRC,IAAI,GAAG,CAAC;YACRC,IAAI,GAAG,CAAC;UACV,IAAInW,KAAK,GAAG,EAAE;UACdnB,aAAa,CAACmB,KAAK,CAACoW,OAAO,CAAC,CAAC,CAAC/kB,OAAO,CAAC,UAAAwT,IAAI,EAAI;YAC5C,IAAIwR,OAAO,GAAGxX,aAAa,CAACoB,QAAQ,CAAC+H,GAAG,CAACnD,IAAI,CAAC5E,QAAQ,CAAC+H,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAIsO,OAAO,GAAGzX,aAAa,CAACoB,QAAQ,CAAC+H,GAAG,CAACnD,IAAI,CAAC5E,QAAQ,CAAC+H,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,IAASuO,EAAE,GAAYF,OAAO,CAAxBjc,CAAC;cAASoc,EAAE,GAAKH,OAAO,CAAjB/b,CAAC;YACd,IAASmc,EAAE,GAAYH,OAAO,CAAxBlc,CAAC;cAASsc,EAAE,GAAKJ,OAAO,CAAjBhc,CAAC;YACd,IAAIuF,IAAI,GAAGgF,IAAI,CAAC4G,IAAI,CAAC,CAAC;YACtB5L,IAAI,GAAA3O,aAAA,CAAAA,aAAA,KAAQ2O,IAAI;cAAE8W,EAAE,EAAE;gBAAEvc,CAAC,EAAEmc,EAAE;gBAAEjc,CAAC,EAAEkc;cAAG,CAAC;cAAEI,EAAE,EAAE;gBAAExc,CAAC,EAAEqc,EAAE;gBAAEnc,CAAC,EAAEoc;cAAG;YAAC,EAAE;YAC9D,QAAQvf,IAAI;cACV,KAAKlC,yBAAyB;gBAC5B,IAAIU,WAAW,CAAC6gB,EAAE,EAAEE,EAAE,CAAC,IAAIH,EAAE,GAAGE,EAAE,EAAE;kBAClCzW,KAAK,CAAChP,IAAI,CAAC6O,IAAI,CAAC;gBAClB;gBACA;cACF,KAAKzK,wBAAwB;gBAC3B,IAAIO,WAAW,CAAC6gB,EAAE,EAAEE,EAAE,CAAC,IAAIH,EAAE,GAAGE,EAAE,EAAE;kBAClCzW,KAAK,CAAChP,IAAI,CAAC6O,IAAI,CAAC;gBAClB;gBACA;cACF,KAAK1K,wBAAwB;gBAC3B,IAAIQ,WAAW,CAAC4gB,EAAE,EAAEE,EAAE,CAAC,IAAID,EAAE,GAAGE,EAAE,EAAE;kBAClC1W,KAAK,CAAChP,IAAI,CAAC6O,IAAI,CAAC;gBAClB;gBACA;cACF,KAAK3K,yBAAyB;gBAC5B,IAAIS,WAAW,CAAC4gB,EAAE,EAAEE,EAAE,CAAC,IAAID,EAAE,GAAGE,EAAE,EAAE;kBAClC1W,KAAK,CAAChP,IAAI,CAAC6O,IAAI,CAAC;gBAClB;gBACA;cACF;gBACE;YACJ;UACF,CAAC,CAAC;UACF,KAAK,IAAIa,MAAM,IAAIT,QAAQ,EAAE;YAC3B+V,IAAI,GAAG5Z,IAAI,CAACC,GAAG,CAAC4D,QAAQ,CAACS,MAAM,CAAC,CAACtG,CAAC,EAAE4b,IAAI,CAAC;YACzCC,IAAI,GAAG7Z,IAAI,CAACC,GAAG,CAAC4D,QAAQ,CAACS,MAAM,CAAC,CAACpG,CAAC,EAAE2b,IAAI,CAAC;YACzC,IAAIC,IAAI,KAAK,CAAC,EAAEA,IAAI,GAAGjW,QAAQ,CAACS,MAAM,CAAC,CAACtG,CAAC;YACzC,IAAI+b,IAAI,KAAK,CAAC,EAAEA,IAAI,GAAGlW,QAAQ,CAACS,MAAM,CAAC,CAACpG,CAAC;YACzC4b,IAAI,GAAG9Z,IAAI,CAACG,GAAG,CAAC0D,QAAQ,CAACS,MAAM,CAAC,CAACtG,CAAC,EAAE8b,IAAI,CAAC;YACzCC,IAAI,GAAG/Z,IAAI,CAACG,GAAG,CAAC0D,QAAQ,CAACS,MAAM,CAAC,CAACpG,CAAC,EAAE6b,IAAI,CAAC;UAC3C;UACA,IAAIU,WAAW,EAAE/a,KAAK,EAAEgb,IAAI,EAAEC,IAAI;UAClC,QAAQtgB,KAAK,CAACU,IAAI;YAChB,KAAKlC,yBAAyB;cAC5B4hB,WAAW,GAAGb,IAAI,GAAGE,IAAI;cACzBa,IAAI,GAAG,EAAEZ,IAAI,GAAG,GAAG,CAAC;cACpBW,IAAI,GAAG,CAACZ,IAAI,GAAGF,IAAI,IAAI,CAAC;cACxBla,KAAK,GAAG,CAAC;cACT;YACF,KAAK5G,yBAAyB;cAC5B2hB,WAAW,GAAGZ,IAAI,GAAGE,IAAI;cACzBW,IAAI,GAAG,EAAEZ,IAAI,GAAG,GAAG,CAAC;cACpBa,IAAI,GAAG,CAACZ,IAAI,GAAGF,IAAI,IAAI,CAAC;cACxBna,KAAK,GAAG,CAACM,IAAI,CAACgC,EAAE,GAAG,CAAC;cACpB;YACF,KAAKjJ,wBAAwB;cAC3B0hB,WAAW,GAAGZ,IAAI,GAAGE,IAAI;cACzBW,IAAI,GAAGd,IAAI,GAAG,GAAG;cACjBe,IAAI,GAAG,CAACZ,IAAI,GAAGF,IAAI,IAAI,CAAC;cACxBna,KAAK,GAAGM,IAAI,CAACgC,EAAE,GAAG,CAAC;cACnB;YACF,KAAKhJ,wBAAwB;cAC3ByhB,WAAW,GAAGb,IAAI,GAAGE,IAAI;cACzBa,IAAI,GAAGd,IAAI,GAAG,GAAG;cACjBa,IAAI,GAAG,CAACZ,IAAI,GAAGF,IAAI,IAAI,CAAC;cACxBla,KAAK,GAAGM,IAAI,CAACgC,EAAE;cACf;UACJ;UACA,IAAI4R,KAAK,GAAG5T,IAAI,CAACG,GAAG,CACjBpD,IAAI,CAACnC,KAAK,GAAG,IAAI,GAAI6f,WAAW,EAChC1d,IAAI,CAAClC,MAAM,GAAG,IAAI,GAAIoJ,UACzB,CAAC;UACD;UACA,IAAI2W,UAAU,GAAG;YACfhgB,KAAK,EAAEmC,IAAI,CAACnC,KAAK,GAAGgZ,KAAK;YACzB/Y,MAAM,EAAEkC,IAAI,CAAClC,MAAM,GAAG+Y;UACxB,CAAC;UACD1X,MAAM,GAAG,IAAIvE,KAAK,CAACkjB,kBAAkB,CACnC,CAACD,UAAU,CAAChgB,KAAK,GAAG,CAAC,EACrBggB,UAAU,CAAChgB,KAAK,GAAG,CAAC,EACpBggB,UAAU,CAAC/f,MAAM,GAAG,CAAC,EACrB,CAAC+f,UAAU,CAAC/f,MAAM,GAAG,CAAC,EACtB,CAAC,EACD,KACF,CAAC;UACDqB,MAAM,CAACyC,QAAQ,CAACiS,GAAG,CAAC8J,IAAI,EAAEzW,UAAU,GAAG,CAAC,EAAE,CAAC0W,IAAI,CAAC;UAChDze,MAAM,CAACuR,QAAQ,CAACmD,GAAG,CAAC,CAAC,EAAElR,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC,MAAM;UACL,IAAMob,WAAW,GAAG/d,IAAI,CAACnC,KAAK,GAAGmC,IAAI,CAAClC,MAAM;UAC5CqB,MAAM,GAAG,IAAIvE,KAAK,CAACojB,iBAAiB,CAAC,EAAE,EAAED,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC;UAChE5e,MAAM,CAACyC,QAAQ,CAACiS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B;QACA1U,MAAM,CAAC6G,MAAM,CAACiY,MAAM,CAAC,CAAC,CAAC;QAEvB,SAASC,OAAOA,CAAA,EAAG;UACjB,IAAIvhB,UAAU,CAAC,CAAC,CAACwhB,IAAI,CACnB,qCAAqC,EACrC,UAAUC,OAAO,EAAE;YACjBA,OAAO,CAACC,OAAO,GAAGzjB,KAAK,CAAC0jB,gCAAgC;YACxDpf,OAAO,CAACqf,WAAW,GAAGH,OAAO;YAC7BA,OAAO,CAACI,OAAO,CAAC,CAAC;UACnB,CACF,CAAC;QACH;;QAEA;QACA,IAAI,CAAC3iB,0BAA0B,CAACuE,QAAQ,CAAC9C,KAAK,CAACU,IAAI,CAAC,EAAE;UACpDqB,cAAc,GAAG,IAAIzC,cAAc,CAACuC,MAAM,EAAEa,IAAI,CAAC7B,QAAQ,CAACS,UAAU,CAAC;UACrES,cAAc,CAACof,aAAa,GAAG,IAAI;UACnCpf,cAAc,CAACqf,aAAa,GAAG,IAAI;UACnCrf,cAAc,CAACsf,WAAW,GAAG,EAAE;UAC/Btf,cAAc,CAACuf,WAAW,GAAGC,QAAQ;UACrCxf,cAAc,CAACyf,SAAS,GAAG,CAAC;UAE5BZ,OAAO,CAAC,CAAC;QACX;QAEAhf,OAAO,CAACqB,GAAG,CAAC8D,QAAQ,CAACG,IAAI,CAAC;QAC1BtF,OAAO,CAACqB,GAAG,CAAC8D,QAAQ,CAACoE,IAAI,CAAC;QAC1BvJ,OAAO,CAACqB,GAAG,CAACpB,MAAM,CAAC;QACnB,IAAItD,0BAA0B,CAACuE,QAAQ,CAAC9C,KAAK,CAACU,IAAI,CAAC,EAAE;UACnDqG,QAAQ,CAAC0a,GAAG,CAACxe,GAAG,CAACpB,MAAM,CAAC;UACxBD,OAAO,CAACqB,GAAG,CAAC8D,QAAQ,CAAC0a,GAAG,CAAC;QAC3B,CAAC,MAAM;UACL3f,KAAK,GAAG,IAAIxE,KAAK,CAACmH,QAAQ,CAAC,CAAC;UAC5B3C,KAAK,CAACmB,GAAG,CAACpB,MAAM,CAAC;UACjBD,OAAO,CAACqB,GAAG,CAACnB,KAAK,CAAC;QACpB;;QAEA;;QAEA,IAAIiJ,KAAK,GAAG,IAAIzN,KAAK,CAAC0F,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;MACrD;MAEA,SAASmG,MAAMA,CAAA,EAAG;QAChB,IAAMuY,KAAK,GAAG1f,KAAK,CAAC2f,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAACpjB,0BAA0B,CAACuE,QAAQ,CAAC9C,KAAK,CAACU,IAAI,CAAC,EAClDqB,cAAc,CAAC6f,MAAM,CAACF,KAAK,CAAC;QAC9B,KAAK,IAAI9lB,IAAC,GAAG,CAAC,EAAEA,IAAC,GAAG2M,MAAM,CAAC5N,MAAM,EAAEiB,IAAC,EAAE,EAAE;UACtC2M,MAAM,CAAC3M,IAAC,CAAC,CAACmP,KAAK,CAACzG,QAAQ,CAACiS,GAAG,CAC1BxP,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACX,CAAC,GAAG4E,MAAM,CAAC3M,IAAC,CAAC,CAAC+H,CAAC,EACtCoD,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,GAAG0E,MAAM,CAAC3M,IAAC,CAAC,CAAC4E,MAAM,GAAG,EAAE,EAChDuG,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACoB,CAAC,GAAG6C,MAAM,CAAC3M,IAAC,CAAC,CAACiI,CACvC,CAAC;UACD0E,MAAM,CAAC3M,IAAC,CAAC,CAAC+I,MAAM,CAACL,QAAQ,CAACiS,GAAG,CAC3BxP,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACX,CAAC,GAAG4E,MAAM,CAAC3M,IAAC,CAAC,CAAC+H,CAAC,EACtCoD,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACT,CAAC,EACxBkD,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACoB,CAAC,GAAG6C,MAAM,CAAC3M,IAAC,CAAC,CAACiI,CACvC,CAAC;QACH;QAEAhC,MAAM,CAACggB,YAAY,CAAC,CAAC;QACrBhgB,MAAM,CAAC+C,iBAAiB,CAAC,CAAC;QAE1B,KAAK,IAAIkd,MAAM,IAAI/a,QAAQ,CAAC8L,UAAU,CAACkP,IAAI,EAAE;UAC3Chb,QAAQ,CAAC8L,UAAU,CAACkP,IAAI,CAACD,MAAM,CAAC,CAACF,MAAM,CAAC/f,MAAM,CAAC;QACjD;QACA,IAAI2G,OAAO,KAAK,IAAI,EAAE;UACpB,IAAI2D,SAAS,IAAI,EAAE,EAAE;YACnB,IAAI,GAAG,IAAIG,WAAW,EACpB9D,OAAO,CAAClE,QAAQ,CAACiS,GAAG,CAClBjK,WAAW,CAAC3I,CAAC,EACb6E,OAAO,CAAClE,QAAQ,CAACT,CAAC,EAClByI,WAAW,CAAC5G,CACd,CAAC;YACHwG,QAAQ,GAAG,KAAK;YAChBG,GAAG,EAAE;UACP,CAAC,MAAM;YACL,IAAIF,SAAS,IAAI,CAAC,EAAE;cAClBM,eAAe,GACX,CAAEF,SAAS,GAAG,GAAG,GAAI5G,IAAI,CAACgC,EAAE,GAAGa,OAAO,CAAC4K,QAAQ,CAACvP,CAAC,GAAG8B,IAAI,CAACgC,EAAE,IAC3D,GAAG,GACHhC,IAAI,CAACgC,EAAE,GACT,GAAG;cACL,IAAI8E,eAAe,GAAG,GAAG,EAAEA,eAAe,IAAI,GAAG;cACjD,IAAIA,eAAe,GAAG,CAAC,GAAG,EAAEA,eAAe,IAAI,GAAG;cAClDA,eAAe,GAAIA,eAAe,GAAG,GAAG,GAAI9G,IAAI,CAACgC,EAAE;YACrD;YACA,IAAIwE,SAAS,GAAG,EAAE,EAAE;cAClB3D,OAAO,CAACwZ,OAAO,CAACvV,eAAe,GAAG,EAAE,CAAC;YACvC,CAAC,MAAM;cACLjE,OAAO,CAAClE,QAAQ,CAACiS,GAAG,CAClB/N,OAAO,CAAClE,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC5O,CAAC,GAAG6I,UAAU,CAAC7I,CAAC,GAAG,EAAE,EAC9C6E,OAAO,CAAClE,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC1O,CAAC,GAAG2I,UAAU,CAAC3I,CAAC,GAAG,EAAE,EAC9C2E,OAAO,CAAClE,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC7M,CAAC,GAAG8G,UAAU,CAAC9G,CAAC,GAAG,EAC9C,CAAC;YACH;YACAyG,SAAS,EAAE;UACb;QACF;QAEA,IAAIE,GAAG,KAAK,EAAE,EAAE;UACd;UACAiB,aAAa,CAAC,CAAC;QACjB;;QAEA;QACA,IAAI4H,OAAO,GAAGxS,IAAI,CAAC5C,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACyF,aAAa;QAClD,IAAIC,KAAK,GAAG3F,IAAI,CAAC5C,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAAC+F,MAAM,CAAC6I,GAAG,CAAC2D,OAAO,CAAC;QACtD7M,KAAK,CAAC8L,KAAK,CAACvZ,OAAO,CAAC,UAAAwO,IAAI,EAAI;UAC1B,IAAIgF,IAAI,GAAGrH,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAACwM,OAAO,CAAC,CAAC3L,KAAK,CAACH,IAAI,CAACgF,IAAI,CAAC;UAC/D,IAAIiG,IAAI,GAAGtN,QAAQ,CAAC8L,UAAU,CAACnK,MAAM,CAACwM,OAAO,CAAC,CAACf,KAAK,CAAC/K,IAAI,CAACT,EAAE,CAAC;UAC7D,IAAIyF,IAAI,YAAY9Q,KAAK,CAACmH,QAAQ,IAAI,CAAC2J,IAAI,CAACiP,MAAM,EAAE;YAClDjP,IAAI,GAAGA,IAAI,CAACqE,QAAQ,CAAC,CAAC,CAAC,CAACA,QAAQ,CAAC,CAAC,CAAC;YACnC;YACA,IAAMwP,cAAc,GAAG7T,IAAI,CAAC/G,QAAQ,CAAC6a,QAAQ,CAAC,CAAC;YAC/C,IAAMC,gBAAgB,GAAG,CACvBF,cAAc,CAACG,IAAI,CAAC,CAAC,CAAC,EACtBH,cAAc,CAACG,IAAI,CAAC,CAAC,CAAC,EACtBH,cAAc,CAACG,IAAI,CAAC,CAAC,CAAC,CACvB;YAED,IAAID,gBAAgB,IAAItQ,SAAS,EAAE;YACnC;YACA,IAAMwQ,eAAe,GAAGjU,IAAI,CAAC/G,QAAQ,CAACib,UAAU,CAACC,MAAM;YACvD,IAAIA,MAAM,GAAG,IAAIjlB,KAAK,CAACmI,OAAO,CAAC,CAAC,CAC7B+c,mBAAmB,CAACH,eAAe,EAAE,CAAC,CAAC,CACvC9P,KAAK,CAAC,CAAC;YACVgQ,MAAM,GAAGA,MAAM,CACZtU,YAAY,CAACG,IAAI,CAAC0O,WAAW,CAAC,CAC9B2F,GAAG,CAAC,IAAInlB,KAAK,CAACmI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAACwI,YAAY,CAACG,IAAI,CAAC0O,WAAW,CAAC,CAAC,CAC9D/D,SAAS,CAAC,CAAC;YACd,IAAIvP,QAAQ,GAAGnB,KAAK,CAACkB,KAAK,CAACgI,GAAG,CAACnI,IAAI,CAACgF,IAAI,CAAC,CAAC5E,QAAQ,CAACwL,IAAI,CAAC,CAAC;YACzD,IAAI6K,OAAO,GAAGxX,KAAK,CAACmB,QAAQ,CAAC+H,GAAG,CAAC/H,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAIkZ,OAAO,GAAGra,KAAK,CAACmB,QAAQ,CAAC+H,GAAG,CAAC/H,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAIkB,EAAE,GAAG,CAACmV,OAAO,CAAClc,CAAC,GAAG+e,OAAO,CAAC/e,CAAC,IAAI,CAAC;YACpC,IAAIgH,EAAE,GAAG,CAACkV,OAAO,CAAChc,CAAC,GAAG6e,OAAO,CAAC7e,CAAC,IAAI,CAAC;YACpC,IAAI8e,MAAM,GAAG,IAAIrlB,KAAK,CAACmI,OAAO,CAACiF,EAAE,EAAE,GAAG,EAAE,CAACC,EAAE,CAAC;YAC5CgY,MAAM,GAAGA,MAAM,CAAC1f,GAAG,CAAC8D,QAAQ,CAACG,IAAI,CAAC5C,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAAC;YACnD,IAAIqQ,UAAU,GAAG/gB,MAAM,CAACyC,QAAQ,CAACiO,KAAK,CAAC,CAAC,CAACkQ,GAAG,CAACE,MAAM,CAAC;YACpD,IAAItO,IAAI,EAAE;cACRA,IAAI,CAAClN,QAAQ,CAAC,UAAA0b,KAAK,EAAI;gBACrB,IAAIA,KAAK,CAACxF,MAAM,EAAE;kBAChBwF,KAAK,CAACpL,QAAQ,CAACqL,OAAO,GAAGF,UAAU,CAACG,GAAG,CAACR,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;kBAC3DM,KAAK,CAACpL,QAAQ,CAACN,WAAW,GACxByL,UAAU,CAACG,GAAG,CAACR,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;kBAC3CM,KAAK,CAACpL,QAAQ,CAACgE,WAAW,GAAG,IAAI;gBACnC;cACF,CAAC,CAAC;YACJ;UACF;UACA;QACF,CAAC,CAAC;QAEF,IAAI7Z,OAAO,IAAIC,MAAM,EAAE;UACrBa,IAAI,CAAC7B,QAAQ,CAACsI,MAAM,CAACvH,OAAO,EAAEC,MAAM,CAAC;QACvC;QACAa,IAAI,CAACjC,WAAW,GAAGuiB,qBAAqB,CAAC7Z,MAAM,CAAC;QAEhD,IAAIzG,IAAI,CAAC1C,KAAK,CAACK,aAAa,GAAG,CAAC,EAAE;UAChCqC,IAAI,CAAC1C,KAAK,CAACK,aAAa,EAAE;UAC1B,IAAIqC,IAAI,CAAC1C,KAAK,CAACK,aAAa,GAAG,CAAC,EAAE;YAChCqC,IAAI,CAACgE,QAAQ,CAAC;cAAEzG,SAAS,EAAE,KAAK;cAAEI,aAAa,EAAE;YAAE,CAAC,CAAC;YAErD,QAAQqC,IAAI,CAAC5C,KAAK,CAACE,KAAK,CAACU,IAAI;cAC3B,KAAKlC,yBAAyB;gBAC5BugB,UAAU,CAAC,YAAM;kBACfrc,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;gBAClD,CAAC,EAAE,GAAG,CAAC;gBACP;cACF,KAAKhI,wBAAwB;gBAC3BogB,UAAU,CAAC,YAAM;kBACfrc,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC;gBACjD,CAAC,EAAEjE,IAAI,CAAC;gBACR;cACF,KAAKhE,wBAAwB;gBAC3BqgB,UAAU,CAAC,YAAM;kBACfrc,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC;gBACjD,CAAC,EAAE,GAAG,CAAC;gBACP;cACF,KAAKlI,yBAAyB;gBAC5BsgB,UAAU,CAAC,YAAM;kBACfrc,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;gBAClD,CAAC,EAAE,GAAG,CAAC;gBACP;cACF,KAAK/H,YAAY;gBACfmgB,UAAU,CAAC;kBAAA,OAAMrc,IAAI,CAAC5C,KAAK,CAAC8G,cAAc,CAAC,KAAK,CAAC;gBAAA,GAAE,GAAG,CAAC;gBACvD;YACJ;YACAlE,IAAI,CAAC7B,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACC,OAAO,GAAG,OAAO;UAClD;QACF;MACF;;MAEA;;MAEAb,MAAM,CAACoG,QAAQ,GAAGA,QAAQ;MAC1B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAAClF,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACE,cAAc,GAAGA,cAAc;MACpC,IAAI,CAACH,OAAO,GAAGA,OAAO;MAEtB4O,WAAW,CAACnI,KAAK,CAAC;IACpB;EAAC;IAAA3M,GAAA;IAAAR,KAAA,EAED,SAAA+nB,oBAAoBA,CAAA,EAAG;MACrBC,oBAAoB,CAAC,IAAI,CAACziB,WAAW,CAAC;MAEtC,IAAI,CAAClC,0BAA0B,CAACuE,QAAQ,CAAC,IAAI,CAAChD,KAAK,CAACE,KAAK,CAACU,IAAI,CAAC,EAAE;QAC/D,IAAI,IAAI,CAACqB,cAAc,KAAK8P,SAAS,EAAE,IAAI,CAAC9P,cAAc,CAACmf,OAAO,CAAC,CAAC;MACtE;MAEAnjB,YAAY,CAAC,IAAI,CAAC6D,OAAO,CAAC;MAC1B,IAAI,CAACA,OAAO,CAAC2L,MAAM,CAAC,IAAI,CAACxG,QAAQ,CAACG,IAAI,CAAC;MACvC,IAAI,CAACtF,OAAO,CAAC2L,MAAM,CAAC,IAAI,CAACxG,QAAQ,CAACoE,IAAI,CAAC;MAEvC,IAAI,CAACvJ,OAAO,GAAG,IAAI;MACnB,IAAI,CAACmF,QAAQ,GAAG,IAAI;MACpB,IAAI,CAAClF,MAAM,GAAG,IAAI;MAClB,IAAI,CAACE,cAAc,GAAG,IAAI;MAC1B,IAAI,CAAClB,QAAQ,CAACsiB,WAAW,CAACjC,OAAO,CAAC,CAAC;IACrC;EAAC;IAAAxlB,GAAA;IAAAR,KAAA,EAED,SAAAkoB,yBAAyBA,CAAC1hB,SAAS,EAAE;MAAA,IAAA2hB,MAAA;MACnC,IAAIplB,IAAI,CAAC,IAAI,CAAC6B,KAAK,CAACE,KAAK,EAAE0B,SAAS,CAAC1B,KAAK,CAAC,CAACgV,IAAI,CAAC,CAAC,CAACra,MAAM,IAAI,CAAC,EAAE;MAEhE,IAAM4F,KAAK,GAAamB,SAAS,CAA3BnB,KAAK;QAAEC,MAAM,GAAKkB,SAAS,CAApBlB,MAAM;MACnB,IAAIyB,OAAO,GAAG;QACZC,WAAW,EAAE,IAAI,CAACC,OAAO,CAACD,WAAW;QACrCE,YAAY,EAAE,IAAI,CAACD,OAAO,CAACC,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACF,OAAO,CAACE,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACH,OAAO,CAACG,YAAY;QACvCC,YAAY,EAAE,IAAI,CAACJ,OAAO,CAACI,YAAY;QACvCC,cAAc,EAAE,IAAI,CAACL,OAAO,CAACK,cAAc;QAC3CC,OAAO,EAAE,IAAI,CAACN,OAAO,CAACM;MACxB,CAAC;MAED,IAAI,CAAClC,KAAK,GAAGA,KAAK;MAClB,IAAI,CAACC,MAAM,GAAGA,MAAM;MAEpB,IAAI,CAACK,QAAQ,CAAC6d,OAAO,CAACne,KAAK,EAAEC,MAAM,CAAC;MAEpC,IAAIsM,QAAQ;MACZ,IAAIC,YAAY;MAChB,IAAIH,WAAW;MAEf,IAAI,CAAC/K,MAAM,CAACyhB,MAAM,GAAG/iB,KAAK,GAAGC,MAAM;MACnC,IAAI,CAACqB,MAAM,CAAC0hB,sBAAsB,CAAC,CAAC;MAEpC,IAAIna,IAAI,GAAG1H,SAAS,CAAC1B,KAAK,CAAC2C,KAAK;MAChC,IAAI0F,KAAK,GAAGe,IAAI,CAACjB,KAAK,CAAC,CAAC,QAAQ,EAAEiB,IAAI,CAAChB,aAAa,CAAC,CAAC;MACtD,IAAM1F,IAAI,GAAG,IAAI;MAEjB,SAAS8gB,mBAAmBA,CAAA,EAAG;QAC7B,IAAIC,QAAQ,GAAGrkB,aAAa,CAACskB,mBAAmB,CAC9ChiB,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,EACrBV,OAAO,CAACQ,OAAO,EACf5D,sBACF,CAAC;QACD,IAAIjD,CAAC;UACHiN,KAAK,GAAG,EAAE;QACZ,KAAKjN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6nB,QAAQ,CAAC1S,MAAM,CAACpW,MAAM,EAAEiB,CAAC,EAAE,EACzCiN,KAAK,CAACtO,IAAI,CAACkpB,QAAQ,CAAC1S,MAAM,CAACnV,CAAC,CAAC,CAAC;QAChC,IAAI6nB,QAAQ,CAAC3S,GAAG,EAAEjI,KAAK,CAACtO,IAAI,CAACkpB,QAAQ,CAAC3S,GAAG,CAAC;QAE1C,KAAKlV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiN,KAAK,CAAClO,MAAM,EAAEiB,CAAC,EAAE,EAAE;UACjC,IAAI+nB,QAAQ,GAAGvkB,aAAa,CAACwkB,qBAAqB,CAAC/a,KAAK,CAACjN,CAAC,CAAC,CAAC;UAC5D,IAAIgN,OAAO,GAAGxJ,aAAa,CAACykB,aAAa,CAACF,QAAQ,EAAE5W,YAAY,CAAC;UACjE9K,OAAO,CAACI,YAAY,CAACyhB,oBAAoB,CACvCjb,KAAK,CAACjN,CAAC,CAAC,CAACohB,QAAQ,CAACrU,EAAE,EACpBC,OACF,CAAC;UAED/K,gBAAgB,CACdgL,KAAK,CAACjN,CAAC,CAAC,EACR8F,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,CAACwF,KAAK,CAAC,CAC1B,QAAQ,EACRzG,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,CAACyF,aAAa,CACpC,CAAC,EACFrB,QAAQ,EACRrF,SAAS,CAAC1B,KAAK,CAAC2C,KAClB,CAAC;QACH;MACF;MACA,SAASohB,mBAAmBA,CAAA,EAAG;QAC7B,IAAI3W,SAAS,GAAGhO,aAAa,CAACiO,YAAY,CAAChF,KAAK,CAAC;QACjD,IAAIzM,CAAC;UACHiN,KAAK,GAAG,EAAE;QACZ,KAAKjN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgR,WAAW,CAACmE,MAAM,CAACpW,MAAM,EAAEiB,CAAC,EAAE,EAC5CiN,KAAK,CAACtO,IAAI,CAACqS,WAAW,CAACmE,MAAM,CAACnV,CAAC,CAAC,CAAC;QACnC,IAAIgR,WAAW,CAACkE,GAAG,EAAEjI,KAAK,CAACtO,IAAI,CAACqS,WAAW,CAACkE,GAAG,CAAC;QAEhD,KAAKlV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiN,KAAK,CAAClO,MAAM,EAAEiB,CAAC,EAAE,EAC/BkC,mBAAmB,CACjB;UAAE6F,CAAC,EAAEkF,KAAK,CAACjN,CAAC,CAAC,CAACsU,GAAG,CAACvM,CAAC;UAAEE,CAAC,EAAEgF,KAAK,CAACjN,CAAC,CAAC,CAACsU,GAAG,CAACrM;QAAE,CAAC,EACxCgF,KAAK,CAACjN,CAAC,CAAC,EACRwR,SAAS,EACTrG,QACF,CAAC;MACL;MAEA,IAAIid,eAAe,GAAG,SAAlBA,eAAeA,CAAG3b,KAAK,EAAI;QAC7ByE,QAAQ,GAAG1N,aAAa,CAACqR,WAAW,CAACpI,KAAK,CAAC;QAC3C0E,YAAY,GAAG3N,aAAa,CAACsR,kBAAkB,CAACrI,KAAK,EAAEyE,QAAQ,CAAC;QAChEF,WAAW,GAAGxN,aAAa,CAACskB,mBAAmB,CAC7CL,MAAI,CAACvjB,KAAK,CAACE,KAAK,CAAC2C,KAAK,EACtBV,OAAO,CAACQ,OAAO,EACf,CAAC3D,sBAAsB,EAAEC,sBAAsB,CACjD,CAAC;MACH,CAAC;MAED,IAAIklB,MAAM,GAAG,IAAI,CAACnkB,KAAK,CAACE,KAAK,CAAC2C,KAAK,CAACwF,KAAK,CAAC,CAAC,QAAQ,EAAEiB,IAAI,CAAChB,aAAa,CAAC,CAAC;MAEzE,IAAI,IAAI,CAACpI,KAAK,CAACE,QAAQ,EAAE;QACvB8jB,eAAe,CAAC3b,KAAK,CAAC;QACtBmb,mBAAmB,CAAC,CAAC;QACrBO,mBAAmB,CAAC,CAAC;QACrB,IAAI,CAACrd,QAAQ,CAAC;UAAExG,QAAQ,EAAE;QAAM,CAAC,CAAC;MACpC;MACA,IACEwB,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,KAAK,IAAI,CAAC7C,KAAK,CAACE,KAAK,CAAC2C,KAAK,IAC/CjB,SAAS,CAAC1B,KAAK,CAAC+I,SAAS,IACxBrH,SAAS,CAAC1B,KAAK,CAAC+I,SAAS,CAACwI,GAAG,CAAC,MAAM,CAAC,KACnC,IAAI,CAACzR,KAAK,CAACE,KAAK,CAAC+I,SAAS,CAACwI,GAAG,CAAC,MAAM,CAAE,EAC3C;QACA,IAAI2S,aAAa,GAAGjmB,IAAI,CAAC,IAAI,CAAC6B,KAAK,CAACE,KAAK,CAAC2C,KAAK,EAAEjB,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,CAAC;QACvEqhB,eAAe,CAAC3b,KAAK,CAAC;QACtB,IACE3G,SAAS,CAAC1B,KAAK,CAAC+I,SAAS,IACzBrH,SAAS,CAAC1B,KAAK,CAAC+I,SAAS,CAACwI,GAAG,CAAC,MAAM,CAAC,KACnC,IAAI,CAACzR,KAAK,CAACE,KAAK,CAAC+I,SAAS,CAACwI,GAAG,CAAC,MAAM,CAAC,EACxC;UACA7O,IAAI,CAACgE,QAAQ,CAAC;YAAEzG,SAAS,EAAE,IAAI;YAAEI,aAAa,EAAE;UAAE,CAAC,CAAC;UAEpD,QAAQqC,IAAI,CAAC5C,KAAK,CAACE,KAAK,CAACU,IAAI;YAC3B,KAAKlC,yBAAyB;cAC5BkE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;cAC/C;YACF,KAAKhI,wBAAwB;cAC3B+D,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;cAC9C;YACF,KAAKjI,wBAAwB;cAC3BgE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;cAC9C;YACF,KAAKlI,yBAAyB;cAC5BiE,IAAI,CAAC5C,KAAK,CAAC6G,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;cAC/C;YACF,KAAK/H,YAAY;cACf8D,IAAI,CAAC5C,KAAK,CAAC8G,cAAc,CAAC,IAAI,CAAC;cAC/B;UACJ;UACAlE,IAAI,CAAC7B,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACC,OAAO,GAAG,MAAM;QACjD;QACA,IAAIE,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,CAACwhB,MAAM,IAAI,IAAI,EAAE;UACxCX,mBAAmB,CAAC,CAAC;UACrBO,mBAAmB,CAAC,CAAC;QACvB,CAAC,MAAM;UACLnmB,0BAA0B,CAAC,cAAc,CAAC;QAC5C;QACA,IAAAwmB,WAAA,GAA4B,IAAI,CAACpkB,KAAK;UAAhCG,OAAO,GAAAikB,WAAA,CAAPjkB,OAAO;UAAEC,QAAQ,GAAAgkB,WAAA,CAARhkB,QAAQ;QACvB,IAAAikB,YAAA,GAAkB7mB,WAAW,CAC3B,IAAI,CAACuJ,QAAQ,EACbrF,SAAS,CAAC1B,KAAK,CAAC2C,KAAK,EACrB,IAAI,CAAC7C,KAAK,CAACE,KAAK,CAAC2C,KAAK,EACtBuhB,aAAa,CAAClP,IAAI,CAAC,CAAC,EACpB/S,OAAO,EACP,IAAI,CAACE,OAAO,CAACM,OAAO,EACpBf,SAAS,CAAC1B,KAAK,CAACU,IAAI,EACpBP,OAAO,EACPC,QACF,CAAC;UAVK0G,OAAO,GAAAud,YAAA,CAAPvd,OAAO;QAWbA,OAAO,CAACE,IAAI,CAAC,UAAAsd,OAAO,EAAI;UACtB5hB,IAAI,CAACgE,QAAQ,CAAC;YAAErG,aAAa,EAAE;UAAE,CAAC,CAAC;QACrC,CAAC,CAAC;MACJ;IACF;EAAC;IAAA3E,GAAA;IAAAR,KAAA,EAED,SAAAiO,MAAMA,CAAA,EAAG;MACP,IAAQlJ,SAAS,GAAK,IAAI,CAACD,KAAK,CAAxBC,SAAS;MACjB,IAAIA,SAAS,EAAE;QACb;QACA,IAAI,CAACY,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACC,OAAO,GAAG,MAAM;QAC/C,oBACErE,KAAA,CAAA+c,aAAA;UACE3Y,KAAK,EAAE;YACLgjB,UAAU,EAAE,SAAS;YACrBhkB,KAAK,EAAE,IAAI,CAACT,KAAK,CAACS,KAAK;YACvBC,MAAM,EAAE,IAAI,CAACV,KAAK,CAACU,MAAM;YACzBgB,OAAO,EAAE,aAAa;YACtBgjB,cAAc,EAAE;UAClB;QAAE,gBAEFrnB,KAAA,CAAA+c,aAAA;UACE3Y,KAAK,EAAE;YACLhB,KAAK,EAAE,MAAM;YACbC,MAAM,EAAE,MAAM;YACdikB,SAAS,EAAE;UACb,CAAE;UACF3J,GAAG,EAAE,+BAAgC;UACrC4J,GAAG,EAAC;QAAK,CACV,CACE,CAAC;MAEV,CAAC,MAAM;QACL,IAAI,CAAC7jB,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACojB,aAAa,GAAG,MAAM;QACrD,IAAI,CAAC9jB,QAAQ,CAACS,UAAU,CAACC,KAAK,CAACuhB,OAAO,GAAG,GAAG;QAC5C;QACA,oBAAO3lB,KAAK,CAAC+c,aAAa,CAAC,KAAK,EAAE;UAAE0K,GAAG,EAAE;QAAgB,CAAC,CAAC;MAC7D;IACF;EAAC;AAAA,EA9oE2CznB,KAAK,CAAC0nB,SAAS;AAAA,SAAxCjlB,gBAAgB,IAAAklB,OAAA;AAipErCllB,gBAAgB,CAACmlB,SAAS,GAAG;EAC3B/kB,KAAK,EAAE5C,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EAClCzkB,KAAK,EAAEnD,SAAS,CAAC6nB,MAAM,CAACD,UAAU;EAClCxkB,MAAM,EAAEpD,SAAS,CAAC6nB,MAAM,CAACD,UAAU;EACnCE,cAAc,EAAE9nB,SAAS,CAAC+nB,IAAI,CAACH;AACjC,CAAC;AAEDplB,gBAAgB,CAACwlB,YAAY,GAAG;EAC9BljB,WAAW,EAAE9E,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EACxC5iB,YAAY,EAAEhF,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EACzC3iB,YAAY,EAAEjF,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EACzCziB,YAAY,EAAEnF,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EACzC1iB,YAAY,EAAElF,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EACzCxiB,cAAc,EAAEpF,SAAS,CAACggB,MAAM,CAAC4H,UAAU;EAC3CviB,OAAO,EAAErF,SAAS,CAACggB;AACrB,CAAC","ignoreList":[]}
@@ -1,87 +0,0 @@
1
- import React from 'react';
2
- import DownloadSummaryTemp from './downloadSummaryTemp';
3
- import * as constants from '../../../../constants';
4
- var ShowCabinetInfo = function ShowCabinetInfo(_ref) {
5
- var productDATA = _ref.productDATA,
6
- totalPrice = _ref.totalPrice,
7
- props = _ref.props;
8
- return /*#__PURE__*/React.createElement(DownloadSummaryTemp, {
9
- config: props
10
- }, /*#__PURE__*/React.createElement("div", {
11
- style: {
12
- marginBottom: '32px'
13
- }
14
- }, /*#__PURE__*/React.createElement("div", {
15
- style: {
16
- marginTop: '20px',
17
- color: '#000F33',
18
- fontSize: '17px',
19
- fontFamily: 'Open Sans',
20
- fontWeight: '700',
21
- lineHeight: '45.9px',
22
- wordWrap: 'break-word'
23
- }
24
- }, constants.LIST_PARTS), /*#__PURE__*/React.createElement("div", {
25
- style: {
26
- marginTop: 7,
27
- color: '#434D63',
28
- fontSize: '9px',
29
- fontFamily: 'Open Sans',
30
- fontWeight: '600',
31
- lineHeight: '15px',
32
- wordWrap: 'break-word'
33
- }
34
- }, constants.LIST_QUANTITIES)), /*#__PURE__*/React.createElement("div", {
35
- style: {
36
- marginTop: '30px',
37
- marginBottom: '30px'
38
- }
39
- }, /*#__PURE__*/React.createElement("div", {
40
- style: styles.tHeader
41
- }, /*#__PURE__*/React.createElement("div", null, constants.PRODUCT), /*#__PURE__*/React.createElement("div", null, constants.SUBTOTAL)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
42
- style: styles.tBody
43
- }, productDATA), /*#__PURE__*/React.createElement("div", {
44
- style: styles.totalPrice
45
- }, /*#__PURE__*/React.createElement("div", null, "Total"), /*#__PURE__*/React.createElement("div", null, "$", totalPrice)))));
46
- };
47
- var styles = {
48
- tHeader: {
49
- display: 'flex',
50
- justifyContent: 'space-between',
51
- alignItems: 'center',
52
- height: '25px',
53
- backgroundColor: '#FAFlAFF',
54
- padding: '0 4px 0 20px',
55
- color: '#565F77',
56
- fontSize: '9px',
57
- fontFamily: 'Open Sans',
58
- fontWeight: '600',
59
- lineHeight: '12px',
60
- wordWrap: 'break-word'
61
- },
62
- tBody: {
63
- color: '#000F33',
64
- fontSize: '9px',
65
- fontFamily: 'Open Sans',
66
- fontWeight: '600',
67
- lineHeight: '13px',
68
- wordWrap: 'break-word'
69
- },
70
- totalPrice: {
71
- display: 'flex',
72
- justifyContent: 'space-between',
73
- alignItems: 'center',
74
- height: '25px',
75
- backgroundColor: '#FAFAFF',
76
- padding: '0 0 0 20px',
77
- color: '#000F33',
78
- marginTop: 12,
79
- fontSize: '9px',
80
- fontFamily: 'Open Sans',
81
- fontWeight: '600',
82
- lineHeight: '12px',
83
- wordWrap: 'break-word'
84
- }
85
- };
86
- export default ShowCabinetInfo;
87
- //# sourceMappingURL=showCabinetInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"showCabinetInfo.js","names":["React","DownloadSummaryTemp","constants","ShowCabinetInfo","_ref","productDATA","totalPrice","props","createElement","config","style","marginBottom","marginTop","color","fontSize","fontFamily","fontWeight","lineHeight","wordWrap","LIST_PARTS","LIST_QUANTITIES","styles","tHeader","PRODUCT","SUBTOTAL","tBody","display","justifyContent","alignItems","height","backgroundColor","padding"],"sources":["../../../../../src/components/toolbar/popup/downloadsummary/showCabinetInfo.js"],"sourcesContent":["import React from 'react';\nimport DownloadSummaryTemp from './downloadSummaryTemp';\nimport * as constants from '../../../../constants';\n\nconst ShowCabinetInfo = ({ productDATA, totalPrice, props }) => {\n return (\n <DownloadSummaryTemp config={props}>\n <div style={{ marginBottom: '32px' }}>\n <div\n style={{\n marginTop: '20px',\n color: '#000F33',\n fontSize: '17px',\n fontFamily: 'Open Sans',\n fontWeight: '700',\n lineHeight: '45.9px',\n wordWrap: 'break-word'\n }}\n >\n {constants.LIST_PARTS}\n </div>\n <div\n style={{\n marginTop: 7,\n color: '#434D63',\n fontSize: '9px',\n fontFamily: 'Open Sans',\n fontWeight: '600',\n lineHeight: '15px',\n wordWrap: 'break-word'\n }}\n >\n {constants.LIST_QUANTITIES}\n </div>\n </div>\n <div style={{ marginTop: '30px', marginBottom: '30px' }}>\n <div style={styles.tHeader}>\n <div>{constants.PRODUCT}</div>\n <div>{constants.SUBTOTAL}</div>\n </div>\n <div>\n <div style={styles.tBody}>{productDATA}</div>\n <div style={styles.totalPrice}>\n <div>Total</div>\n <div>${totalPrice}</div>\n </div>\n </div>\n </div>\n </DownloadSummaryTemp>\n );\n};\n\nconst styles = {\n tHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '25px',\n backgroundColor: '#FAFlAFF',\n padding: '0 4px 0 20px',\n color: '#565F77',\n fontSize: '9px',\n fontFamily: 'Open Sans',\n fontWeight: '600',\n lineHeight: '12px',\n wordWrap: 'break-word'\n },\n tBody: {\n color: '#000F33',\n fontSize: '9px',\n fontFamily: 'Open Sans',\n fontWeight: '600',\n lineHeight: '13px',\n wordWrap: 'break-word'\n },\n totalPrice: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '25px',\n backgroundColor: '#FAFAFF',\n padding: '0 0 0 20px',\n color: '#000F33',\n marginTop: 12,\n fontSize: '9px',\n fontFamily: 'Open Sans',\n fontWeight: '600',\n lineHeight: '12px',\n wordWrap: 'break-word'\n }\n};\n\nexport default ShowCabinetInfo;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,mBAAmB,MAAM,uBAAuB;AACvD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAElD,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAA2C;EAAA,IAArCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAAEC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;EACvD,oBACEP,KAAA,CAAAQ,aAAA,CAACP,mBAAmB;IAACQ,MAAM,EAAEF;EAAM,gBACjCP,KAAA,CAAAQ,aAAA;IAAKE,KAAK,EAAE;MAAEC,YAAY,EAAE;IAAO;EAAE,gBACnCX,KAAA,CAAAQ,aAAA;IACEE,KAAK,EAAE;MACLE,SAAS,EAAE,MAAM;MACjBC,KAAK,EAAE,SAAS;MAChBC,QAAQ,EAAE,MAAM;MAChBC,UAAU,EAAE,WAAW;MACvBC,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAE,QAAQ;MACpBC,QAAQ,EAAE;IACZ;EAAE,GAEDhB,SAAS,CAACiB,UACR,CAAC,eACNnB,KAAA,CAAAQ,aAAA;IACEE,KAAK,EAAE;MACLE,SAAS,EAAE,CAAC;MACZC,KAAK,EAAE,SAAS;MAChBC,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,WAAW;MACvBC,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAE,MAAM;MAClBC,QAAQ,EAAE;IACZ;EAAE,GAEDhB,SAAS,CAACkB,eACR,CACF,CAAC,eACNpB,KAAA,CAAAQ,aAAA;IAAKE,KAAK,EAAE;MAAEE,SAAS,EAAE,MAAM;MAAED,YAAY,EAAE;IAAO;EAAE,gBACtDX,KAAA,CAAAQ,aAAA;IAAKE,KAAK,EAAEW,MAAM,CAACC;EAAQ,gBACzBtB,KAAA,CAAAQ,aAAA,cAAMN,SAAS,CAACqB,OAAa,CAAC,eAC9BvB,KAAA,CAAAQ,aAAA,cAAMN,SAAS,CAACsB,QAAc,CAC3B,CAAC,eACNxB,KAAA,CAAAQ,aAAA,2BACER,KAAA,CAAAQ,aAAA;IAAKE,KAAK,EAAEW,MAAM,CAACI;EAAM,GAAEpB,WAAiB,CAAC,eAC7CL,KAAA,CAAAQ,aAAA;IAAKE,KAAK,EAAEW,MAAM,CAACf;EAAW,gBAC5BN,KAAA,CAAAQ,aAAA,cAAK,OAAU,CAAC,eAChBR,KAAA,CAAAQ,aAAA,cAAK,GAAC,EAACF,UAAgB,CACpB,CACF,CACF,CACc,CAAC;AAE1B,CAAC;AAED,IAAMe,MAAM,GAAG;EACbC,OAAO,EAAE;IACPI,OAAO,EAAE,MAAM;IACfC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE,MAAM;IACdC,eAAe,EAAE,UAAU;IAC3BC,OAAO,EAAE,cAAc;IACvBlB,KAAK,EAAE,SAAS;IAChBC,QAAQ,EAAE,KAAK;IACfC,UAAU,EAAE,WAAW;IACvBC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE;EACZ,CAAC;EACDO,KAAK,EAAE;IACLZ,KAAK,EAAE,SAAS;IAChBC,QAAQ,EAAE,KAAK;IACfC,UAAU,EAAE,WAAW;IACvBC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE;EACZ,CAAC;EACDZ,UAAU,EAAE;IACVoB,OAAO,EAAE,MAAM;IACfC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBC,MAAM,EAAE,MAAM;IACdC,eAAe,EAAE,SAAS;IAC1BC,OAAO,EAAE,YAAY;IACrBlB,KAAK,EAAE,SAAS;IAChBD,SAAS,EAAE,EAAE;IACbE,QAAQ,EAAE,KAAK;IACfC,UAAU,EAAE,WAAW;IACvBC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE;EACZ;AACF,CAAC;AAED,eAAef,eAAe","ignoreList":[]}