@webex/calling 3.11.0 → 3.12.0-llmrefactor.2

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 (372) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallRecording/CallRecording.js +160 -0
  12. package/dist/CallRecording/CallRecording.js.map +1 -0
  13. package/dist/CallRecording/CallRecording.test.js +257 -0
  14. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  15. package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
  16. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  17. package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
  18. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  19. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  20. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  21. package/dist/CallRecording/constants.js +50 -0
  22. package/dist/CallRecording/constants.js.map +1 -0
  23. package/dist/CallRecording/types.js +137 -0
  24. package/dist/CallRecording/types.js.map +1 -0
  25. package/dist/CallRecording/utils.js +42 -0
  26. package/dist/CallRecording/utils.js.map +1 -0
  27. package/dist/CallRecording/utils.test.js +97 -0
  28. package/dist/CallRecording/utils.test.js.map +1 -0
  29. package/dist/CallSettings/CallSettings.js +311 -0
  30. package/dist/CallSettings/CallSettings.js.map +1 -0
  31. package/dist/CallSettings/CallSettings.test.js +122 -0
  32. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  33. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  34. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  35. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  36. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  37. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  38. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  39. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  40. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  41. package/dist/CallSettings/constants.js +31 -0
  42. package/dist/CallSettings/constants.js.map +1 -0
  43. package/dist/CallSettings/testFixtures.js +68 -0
  44. package/dist/CallSettings/testFixtures.js.map +1 -0
  45. package/dist/CallSettings/types.js +7 -0
  46. package/dist/CallSettings/types.js.map +1 -0
  47. package/dist/CallingClient/CallingClient.js +1349 -0
  48. package/dist/CallingClient/CallingClient.js.map +1 -0
  49. package/dist/CallingClient/CallingClient.test.js +1625 -0
  50. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  51. package/dist/CallingClient/callRecordFixtures.js +101 -0
  52. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  53. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  54. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  55. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  56. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  57. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  58. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  59. package/dist/CallingClient/calling/call.js +3666 -0
  60. package/dist/CallingClient/calling/call.js.map +1 -0
  61. package/dist/CallingClient/calling/call.test.js +3970 -0
  62. package/dist/CallingClient/calling/call.test.js.map +1 -0
  63. package/dist/CallingClient/calling/callManager.js +531 -0
  64. package/dist/CallingClient/calling/callManager.js.map +1 -0
  65. package/dist/CallingClient/calling/callManager.test.js +881 -0
  66. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  67. package/dist/CallingClient/calling/index.js +30 -0
  68. package/dist/CallingClient/calling/index.js.map +1 -0
  69. package/dist/CallingClient/calling/types.js +79 -0
  70. package/dist/CallingClient/calling/types.js.map +1 -0
  71. package/dist/CallingClient/callingClientFixtures.js +143 -0
  72. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  73. package/dist/CallingClient/constants.js +272 -0
  74. package/dist/CallingClient/constants.js.map +1 -0
  75. package/dist/CallingClient/line/index.js +339 -0
  76. package/dist/CallingClient/line/index.js.map +1 -0
  77. package/dist/CallingClient/line/line.test.js +379 -0
  78. package/dist/CallingClient/line/line.test.js.map +1 -0
  79. package/dist/CallingClient/line/types.js +21 -0
  80. package/dist/CallingClient/line/types.js.map +1 -0
  81. package/dist/CallingClient/registration/index.js +19 -0
  82. package/dist/CallingClient/registration/index.js.map +1 -0
  83. package/dist/CallingClient/registration/register.js +2079 -0
  84. package/dist/CallingClient/registration/register.js.map +1 -0
  85. package/dist/CallingClient/registration/register.test.js +2476 -0
  86. package/dist/CallingClient/registration/register.test.js.map +1 -0
  87. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  88. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  89. package/dist/CallingClient/registration/types.js +33 -0
  90. package/dist/CallingClient/registration/types.js.map +1 -0
  91. package/dist/CallingClient/registration/webWorker.js +67 -0
  92. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  93. package/dist/CallingClient/registration/webWorker.test.js +189 -0
  94. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  95. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  96. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  97. package/dist/CallingClient/types.js +14 -0
  98. package/dist/CallingClient/types.js.map +1 -0
  99. package/dist/CallingClient/utils/constants.js +58 -0
  100. package/dist/CallingClient/utils/constants.js.map +1 -0
  101. package/dist/CallingClient/utils/index.js +63 -0
  102. package/dist/CallingClient/utils/index.js.map +1 -0
  103. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  104. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  105. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  106. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  107. package/dist/CallingClient/utils/request.js +435 -0
  108. package/dist/CallingClient/utils/request.js.map +1 -0
  109. package/dist/CallingClient/utils/request.test.js +999 -0
  110. package/dist/CallingClient/utils/request.test.js.map +1 -0
  111. package/dist/CallingClient/utils/types.js +7 -0
  112. package/dist/CallingClient/utils/types.js.map +1 -0
  113. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  114. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  115. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  116. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  117. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  118. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  119. package/dist/Contacts/ContactsClient.js +1208 -0
  120. package/dist/Contacts/ContactsClient.js.map +1 -0
  121. package/dist/Contacts/ContactsClient.test.js +999 -0
  122. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  123. package/dist/Contacts/constants.js +40 -0
  124. package/dist/Contacts/constants.js.map +1 -0
  125. package/dist/Contacts/contactFixtures.js +430 -0
  126. package/dist/Contacts/contactFixtures.js.map +1 -0
  127. package/dist/Contacts/types.js +43 -0
  128. package/dist/Contacts/types.js.map +1 -0
  129. package/dist/Errors/catalog/CallError.js +89 -0
  130. package/dist/Errors/catalog/CallError.js.map +1 -0
  131. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  132. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  133. package/dist/Errors/catalog/ExtendedError.js +42 -0
  134. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  135. package/dist/Errors/catalog/LineError.js +85 -0
  136. package/dist/Errors/catalog/LineError.js.map +1 -0
  137. package/dist/Errors/index.js +28 -0
  138. package/dist/Errors/index.js.map +1 -0
  139. package/dist/Errors/types.js +61 -0
  140. package/dist/Errors/types.js.map +1 -0
  141. package/dist/Events/impl/index.js +79 -0
  142. package/dist/Events/impl/index.js.map +1 -0
  143. package/dist/Events/types.js +134 -0
  144. package/dist/Events/types.js.map +1 -0
  145. package/dist/Logger/index.js +228 -0
  146. package/dist/Logger/index.js.map +1 -0
  147. package/dist/Logger/index.test.js +87 -0
  148. package/dist/Logger/index.test.js.map +1 -0
  149. package/dist/Logger/types.js +34 -0
  150. package/dist/Logger/types.js.map +1 -0
  151. package/dist/Metrics/index.js +595 -0
  152. package/dist/Metrics/index.js.map +1 -0
  153. package/dist/Metrics/index.test.js +819 -0
  154. package/dist/Metrics/index.test.js.map +1 -0
  155. package/dist/Metrics/types.js +82 -0
  156. package/dist/Metrics/types.js.map +1 -0
  157. package/dist/SDKConnector/index.js +102 -0
  158. package/dist/SDKConnector/index.js.map +1 -0
  159. package/dist/SDKConnector/index.test.js +9 -0
  160. package/dist/SDKConnector/index.test.js.map +1 -0
  161. package/dist/SDKConnector/types.js +7 -0
  162. package/dist/SDKConnector/types.js.map +1 -0
  163. package/dist/SDKConnector/utils.js +39 -0
  164. package/dist/SDKConnector/utils.js.map +1 -0
  165. package/dist/SDKConnector/utils.test.js +9 -0
  166. package/dist/SDKConnector/utils.test.js.map +1 -0
  167. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  168. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  169. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  170. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  171. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  172. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  173. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  174. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  175. package/dist/Voicemail/Voicemail.js +472 -0
  176. package/dist/Voicemail/Voicemail.js.map +1 -0
  177. package/dist/Voicemail/Voicemail.test.js +391 -0
  178. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  179. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  180. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  181. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  182. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  183. package/dist/Voicemail/constants.js +61 -0
  184. package/dist/Voicemail/constants.js.map +1 -0
  185. package/dist/Voicemail/types.js +7 -0
  186. package/dist/Voicemail/types.js.map +1 -0
  187. package/dist/Voicemail/voicemailFixture.js +524 -0
  188. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  189. package/dist/api.js +213 -0
  190. package/dist/api.js.map +1 -0
  191. package/dist/common/Utils.js +1624 -0
  192. package/dist/common/Utils.js.map +1 -0
  193. package/dist/common/Utils.test.js +2225 -0
  194. package/dist/common/Utils.test.js.map +1 -0
  195. package/dist/common/constants.js +62 -0
  196. package/dist/common/constants.js.map +1 -0
  197. package/dist/common/index.js +19 -0
  198. package/dist/common/index.js.map +1 -0
  199. package/dist/common/testUtil.js +988 -0
  200. package/dist/common/testUtil.js.map +1 -0
  201. package/dist/common/types.js +78 -0
  202. package/dist/common/types.js.map +1 -0
  203. package/dist/index.js +452 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/mobius-socket/config.js +24 -0
  206. package/dist/mobius-socket/config.js.map +1 -0
  207. package/dist/mobius-socket/errors.js +143 -0
  208. package/dist/mobius-socket/errors.js.map +1 -0
  209. package/dist/mobius-socket/errors.test.js +20 -0
  210. package/dist/mobius-socket/errors.test.js.map +1 -0
  211. package/dist/mobius-socket/index.js +57 -0
  212. package/dist/mobius-socket/index.js.map +1 -0
  213. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  214. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  215. package/dist/mobius-socket/mobius-socket.js +849 -0
  216. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  217. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  218. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  219. package/dist/mobius-socket/socket/constants.js +55 -0
  220. package/dist/mobius-socket/socket/constants.js.map +1 -0
  221. package/dist/mobius-socket/socket/index.js +15 -0
  222. package/dist/mobius-socket/socket/index.js.map +1 -0
  223. package/dist/mobius-socket/socket/socket-base.js +604 -0
  224. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  225. package/dist/mobius-socket/socket/socket.js +19 -0
  226. package/dist/mobius-socket/socket/socket.js.map +1 -0
  227. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  228. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  229. package/dist/mobius-socket/socket/types.js +7 -0
  230. package/dist/mobius-socket/socket/types.js.map +1 -0
  231. package/dist/mobius-socket/socket.test.js +727 -0
  232. package/dist/mobius-socket/socket.test.js.map +1 -0
  233. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  234. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  235. package/dist/mobius-socket/test/promise-tick.js +28 -0
  236. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  237. package/dist/mobius-socket/types.js +7 -0
  238. package/dist/mobius-socket/types.js.map +1 -0
  239. package/dist/module/CallHistory/CallHistory.js +28 -17
  240. package/dist/module/CallRecording/CallRecording.js +56 -0
  241. package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
  242. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  243. package/dist/module/CallRecording/constants.js +28 -0
  244. package/dist/module/CallRecording/types.js +19 -0
  245. package/dist/module/CallRecording/utils.js +14 -0
  246. package/dist/module/CallingClient/CallingClient.js +166 -8
  247. package/dist/module/CallingClient/calling/call.js +201 -68
  248. package/dist/module/CallingClient/calling/callManager.js +51 -11
  249. package/dist/module/CallingClient/calling/types.js +2 -0
  250. package/dist/module/CallingClient/constants.js +29 -0
  251. package/dist/module/CallingClient/line/index.js +4 -2
  252. package/dist/module/CallingClient/registration/register.js +274 -64
  253. package/dist/module/CallingClient/registration/types.js +5 -1
  254. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  255. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  256. package/dist/module/CallingClient/utils/constants.js +36 -0
  257. package/dist/module/CallingClient/utils/index.js +5 -0
  258. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  259. package/dist/module/CallingClient/utils/request.js +211 -0
  260. package/dist/module/CallingClient/utils/types.js +1 -0
  261. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  262. package/dist/module/Contacts/ContactsClient.js +1 -1
  263. package/dist/module/Errors/types.js +2 -0
  264. package/dist/module/Events/types.js +23 -10
  265. package/dist/module/Metrics/index.js +48 -1
  266. package/dist/module/Metrics/types.js +18 -0
  267. package/dist/module/api.js +3 -2
  268. package/dist/module/common/Utils.js +85 -22
  269. package/dist/module/common/testUtil.js +6 -1
  270. package/dist/module/common/types.js +3 -0
  271. package/dist/module/index.js +7 -3
  272. package/dist/module/mobius-socket/config.js +15 -0
  273. package/dist/module/mobius-socket/errors.js +58 -0
  274. package/dist/module/mobius-socket/index.js +24 -0
  275. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  276. package/dist/module/mobius-socket/socket/constants.js +26 -0
  277. package/dist/module/mobius-socket/socket/index.js +4 -0
  278. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  279. package/dist/module/mobius-socket/socket/socket.js +9 -0
  280. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  281. package/dist/module/mobius-socket/socket/types.js +1 -0
  282. package/dist/module/mobius-socket/types.js +1 -0
  283. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  284. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  285. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  286. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  287. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  288. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  289. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  290. package/dist/types/CallRecording/constants.d.ts +29 -0
  291. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  292. package/dist/types/CallRecording/types.d.ts +176 -0
  293. package/dist/types/CallRecording/types.d.ts.map +1 -0
  294. package/dist/types/CallRecording/utils.d.ts +3 -0
  295. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  296. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  297. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  298. package/dist/types/CallingClient/calling/call.d.ts +17 -3
  299. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  300. package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
  301. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  302. package/dist/types/CallingClient/calling/types.d.ts +38 -9
  303. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  304. package/dist/types/CallingClient/constants.d.ts +29 -0
  305. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  306. package/dist/types/CallingClient/line/index.d.ts +1 -1
  307. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  308. package/dist/types/CallingClient/registration/register.d.ts +10 -2
  309. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  310. package/dist/types/CallingClient/registration/types.d.ts +29 -3
  311. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  312. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  313. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  314. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  315. package/dist/types/CallingClient/types.d.ts +6 -3
  316. package/dist/types/CallingClient/types.d.ts.map +1 -1
  317. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  318. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  319. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  320. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  321. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  322. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  323. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  324. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  325. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  326. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  327. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  328. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  329. package/dist/types/Errors/types.d.ts +2 -0
  330. package/dist/types/Errors/types.d.ts.map +1 -1
  331. package/dist/types/Events/types.d.ts +80 -16
  332. package/dist/types/Events/types.d.ts.map +1 -1
  333. package/dist/types/Metrics/index.d.ts.map +1 -1
  334. package/dist/types/Metrics/types.d.ts +19 -2
  335. package/dist/types/Metrics/types.d.ts.map +1 -1
  336. package/dist/types/SDKConnector/types.d.ts +39 -12
  337. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  338. package/dist/types/api.d.ts +6 -4
  339. package/dist/types/api.d.ts.map +1 -1
  340. package/dist/types/common/Utils.d.ts +9 -4
  341. package/dist/types/common/Utils.d.ts.map +1 -1
  342. package/dist/types/common/testUtil.d.ts +5 -1
  343. package/dist/types/common/testUtil.d.ts.map +1 -1
  344. package/dist/types/common/types.d.ts +9 -1
  345. package/dist/types/common/types.d.ts.map +1 -1
  346. package/dist/types/index.d.ts +9 -4
  347. package/dist/types/index.d.ts.map +1 -1
  348. package/dist/types/mobius-socket/config.d.ts +17 -0
  349. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  350. package/dist/types/mobius-socket/errors.d.ts +32 -0
  351. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  352. package/dist/types/mobius-socket/index.d.ts +14 -0
  353. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  354. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  355. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  356. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  357. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  358. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  359. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  360. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  361. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  362. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  363. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  364. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  365. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  366. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  367. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  368. package/dist/types/mobius-socket/types.d.ts +21 -0
  369. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  370. package/package.json +21 -5
  371. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  372. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_crypto","require","_sinon","_interopRequireDefault","_testHelperChai","_testHelperMockWebex","_testHelperMockWebSocket","_index","_interopRequireWildcard","_errors","_config","_socket","_mochaHelpers","_constants","_promiseTick","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t3","hasOwnProperty","call","_Object$defineProperty2","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","crypto","randomUUID","_defineProperty3","value","configurable","describe","createUuid","afterEach","resetMobiusSocketInstance","it","configuredWebex","MockWebex","instance","getMobiusSocketInstance","assert","instanceOf","MobiusSocket","deepEqual","config","mobiusConfig","mobiusSocket","consumerConfig","initialConnectionMaxRetries","backoffTimeReset","mockWebSocket","socketOpenStub","usingFakeTimers","webex","statusStartTypingMessage","_stringify","id","data","eventType","actor","conversationId","timestamp","_now","trackingId","concat","emitAuthResponse","_ref","undefined","_ref$statusCode","statusCode","_ref$statusMessage","statusMessage","authRequest","JSON","parse","send","lastCall","args","emit","type","subtype","MESSAGE_TYPES","AUTH","createAsyncEvent","eventId","createSessionSocket","close","sinon","stub","returns","_promise","resolve","removeAllListeners","countGenericEventEmits","emitSpy","getCalls","beforeEach","jest","useFakeTimers","doNotFake","credentials","refresh","getUserToken","toString","internal","device","registered","register","webSocketUrl","getWebSocketUrl","useServiceCatalogUrl","services","convertUrlToPriorityHostUrl","markFailedUrl","switchActiveClusterIds","invalidateCache","isValidHost","metrics","submitClientMetrics","logger","console","Socket","callsFake","_len","Array","_key","_construct2","MockWebSocket","origOpen","prototype","open","_len2","_key2","promise","_apply","process","nextTick","debug","fn","error","info","log","warn","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","useRealTimers","disconnect","restore","getWebSocketConstructor","setTimeout","stop","notCalled","connect","then","calledOnce","isFalse","connected","isTrue","connecting","calledWith","match","any","check","reject","ConnectionError","promiseTick","advanceTimersByTime","calledTwice","calledThrice","isRejected","skipInBrowser","maxRetries","hasEverConnected","all","code","onCall","BadRequest","UnknownResponse","called","NotAuthorized","Forbidden","backoffSpy","spy","_backoffSpy$firstCall","isUndefined","firstCall","_backoffSpy$firstCall2","socketUrl","equal","defaultMobiusSocketOptions","testProxyUrl","agent","proxy","href","reason","on","readyState","_callee2","_context2","isDefined","backoffCall","socket","attemptConnection","_reason","message","wssResponseTimeout","_callee3","requestPromise","requestPayload","response","_context3","sendWssRequest","token","sent","_callee4","authPayload","_context4","_callee5","_context5","name","_callee6","_context6","_callee7","_context7","_callee8","_context8","_callee9","_context9","url","getConnectedWebSocketUrl","event","emitEvent","res","prepareUrl","wsUrl","connectWithBackoffStub","shutdownSwitchoverBackoffCall","placeholder","handleImminentShutdown","callArgs","isObject","isShutdownSwitchover","attemptOptions","done","throws","Error","connectWithBackoff","shutdownEvent","result","onmessage","regularEvent","someField","sequenceNumber","_callee0","_context0","originalDedupCacheMaxSize","dedupCacheMaxSize","_callee1","_context1","_callee10","_context10","_callee11","_context11","_callee12","_context12","mockSocket","anotherSocket","reconnect","closeEvent","onclose","MOBIUS_SOCKET_4001_EVENT","neverCalledWith","strictEqual","resetHistory","isOk","_callee13","emitCalls","hasCompleteEvent","_context13","context","onSuccess","newSocket","some","_callee14","testError","hasFailureEvent","_context14","_callee15","_context15","callCount","prepareUrlStub","getUserTokenStub","_callee16","_context16","prepareAndOpenSocket","_callee17","_context17","forceCloseDelay","_callee18","_context18","_callee19","_context19","_callee20","_context20","customOption","_callee21","_context21","_callee22","_t2","_context22","fail","prepareAndOpenSocketStub","callback","abort","attachSocketEventListeners","_callee23","originalSocket","_context23","exists","_callee24","onSuccessStub","_context24","_callee25","_context25","_callee26","_context26","catch","err","attemptStub","cb","abortStub","_callee27","_context27","_callee28","_context28"],"sources":["mobius-socket.test.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {randomUUID} from 'crypto';\nimport sinon from 'sinon';\nimport {assert} from '@webex/test-helper-chai';\nimport MockWebex from '@webex/test-helper-mock-webex';\nimport MockWebSocket from '@webex/test-helper-mock-web-socket';\nimport MobiusSocket, {getMobiusSocketInstance, resetMobiusSocketInstance} from './index';\nimport {BadRequest, NotAuthorized, Forbidden, UnknownResponse, ConnectionError} from './errors';\nimport mobiusConfig from './config';\nimport Socket from './socket';\nimport {skipInBrowser} from './test/mocha-helpers';\nimport {MESSAGE_TYPES, MOBIUS_SOCKET_4001_EVENT} from './socket/constants';\n\nimport promiseTick from './test/promise-tick';\n\nif (!crypto.randomUUID) {\n Object.defineProperty(crypto, 'randomUUID', {\n value: randomUUID,\n configurable: true,\n });\n}\n\ndescribe('plugin-mobius-socket', () => {\n const createUuid = () => crypto.randomUUID();\n\n describe('getMobiusSocketInstance', () => {\n afterEach(() => {\n resetMobiusSocketInstance();\n });\n\n it('uses package config when consumer config is not provided', () => {\n const configuredWebex = new MockWebex();\n const instance = getMobiusSocketInstance(configuredWebex);\n\n assert.instanceOf(instance, MobiusSocket);\n assert.deepEqual(instance.config, mobiusConfig.mobiusSocket);\n });\n\n it('uses consumer config when it is provided', () => {\n const configuredWebex = new MockWebex();\n const consumerConfig = {\n initialConnectionMaxRetries: 0,\n backoffTimeReset: 1234,\n };\n\n const instance = getMobiusSocketInstance(configuredWebex, consumerConfig);\n\n assert.instanceOf(instance, MobiusSocket);\n assert.deepEqual(instance.config, {\n ...mobiusConfig.mobiusSocket,\n ...consumerConfig,\n });\n });\n });\n\n describe('MobiusSocket', () => {\n let mobiusSocket;\n let mockWebSocket;\n let socketOpenStub;\n let usingFakeTimers;\n let webex;\n\n const statusStartTypingMessage = JSON.stringify({\n id: createUuid(),\n data: {\n eventType: 'status.start_typing',\n actor: {\n id: 'actorId',\n },\n conversationId: createUuid(),\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n });\n\n const emitAuthResponse = ({statusCode = 200, statusMessage = 'OK'} = {}) => {\n const authRequest = JSON.parse(mockWebSocket.send.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: MESSAGE_TYPES.AUTH,\n trackingId: authRequest.trackingId,\n statusCode,\n statusMessage,\n }),\n });\n };\n\n const createAsyncEvent = (eventId, eventType = 'custom.event') => ({\n data: {\n type: 'async_event',\n eventId,\n data: {\n eventType,\n },\n },\n });\n\n const createSessionSocket = () => ({\n close: sinon.stub().returns(Promise.resolve()),\n removeAllListeners: sinon.stub(),\n });\n\n const countGenericEventEmits = (emitSpy) =>\n emitSpy.getCalls().filter((call) => call.args[0] === 'event').length;\n\n beforeEach(() => {\n jest.useFakeTimers({doNotFake: ['nextTick']});\n usingFakeTimers = true;\n });\n\n beforeEach(() => {\n webex = new MockWebex();\n webex.credentials = {\n refresh: sinon.stub().returns(Promise.resolve()),\n getUserToken: sinon.stub().returns(\n Promise.resolve({\n toString() {\n return 'Bearer FAKE';\n },\n })\n ),\n };\n webex.internal.device = {\n registered: true,\n register: sinon.stub().returns(Promise.resolve()),\n refresh: sinon.stub().returns(Promise.resolve()),\n webSocketUrl: 'ws://example.com',\n getWebSocketUrl: sinon.stub().returns(Promise.resolve('ws://example-2.com')),\n useServiceCatalogUrl: sinon\n .stub()\n .returns(Promise.resolve('https://service-catalog-url.com')),\n };\n webex.internal.services = {\n convertUrlToPriorityHostUrl: sinon.stub().returns(Promise.resolve('ws://example-2.com')),\n markFailedUrl: sinon.stub().returns(Promise.resolve()),\n switchActiveClusterIds: sinon.stub(),\n invalidateCache: sinon.stub(),\n isValidHost: sinon.stub().returns(Promise.resolve(true)),\n };\n webex.internal.metrics.submitClientMetrics = sinon.stub();\n webex.trackingId = 'fakeTrackingId';\n webex.logger = console;\n\n sinon.stub(Socket, 'getWebSocketConstructor').callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n\n return mockWebSocket;\n }\n );\n\n const origOpen = Socket.prototype.open;\n\n socketOpenStub = sinon.stub(Socket.prototype, 'open').callsFake(function (...args) {\n const promise = Reflect.apply(origOpen, this, args);\n\n process.nextTick(() => {\n mockWebSocket.open();\n // Simulate Mobius auth response after socket open\n process.nextTick(() => {\n emitAuthResponse();\n });\n });\n\n return promise;\n });\n\n mobiusSocket = new MobiusSocket(webex, {...mobiusConfig.mobiusSocket});\n\n (mobiusSocket as any).logger = {\n debug: jest.fn(),\n error: jest.fn(),\n info: jest.fn(),\n log: jest.fn(),\n warn: jest.fn(),\n };\n });\n\n afterEach(async () => {\n if (usingFakeTimers) {\n jest.useRealTimers();\n usingFakeTimers = false;\n }\n\n // Clean up MobiusSocket connections and internal state\n if (mobiusSocket) {\n try {\n await mobiusSocket.disconnect();\n } catch (e) {\n // Ignore cleanup errors\n }\n }\n\n // Ensure mock socket is properly closed\n if (mockWebSocket && typeof mockWebSocket.close === 'function') {\n try {\n mockWebSocket.close();\n } catch (e) {\n // Ignore cleanup errors\n }\n }\n\n if (socketOpenStub) {\n socketOpenStub.restore();\n }\n\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n\n // Small delay to ensure all async operations complete\n await new Promise((resolve) => {\n setTimeout(resolve, 10);\n });\n });\n\n describe('#connect()', () => {\n it('lazily registers the device', () => {\n webex.internal.device.registered = false;\n assert.notCalled(webex.internal.device.register);\n const promise = mobiusSocket.connect();\n\n return promise.then(() => {\n assert.calledOnce(webex.internal.device.register);\n });\n });\n\n it('connects to MobiusSocket using default url', () => {\n const promise = mobiusSocket.connect();\n\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.calledWith(socketOpenStub, 'ws://example.com', sinon.match.any);\n });\n });\n\n describe('when `maxRetries` is set', () => {\n const check = () => {\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open');\n socketOpenStub.returns(Promise.reject(new ConnectionError()));\n assert.notCalled(Socket.prototype.open);\n\n const promise = mobiusSocket.connect();\n\n return promiseTick(5)\n .then(() => {\n assert.calledOnce(Socket.prototype.open);\n\n return promiseTick(5);\n })\n .then(() => {\n jest.advanceTimersByTime(mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(5);\n })\n .then(() => {\n assert.calledTwice(Socket.prototype.open);\n jest.advanceTimersByTime(2 * mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(5);\n })\n .then(() => {\n assert.calledThrice(Socket.prototype.open);\n jest.advanceTimersByTime(5 * mobiusSocket.config.backoffTimeReset);\n\n return assert.isRejected(promise);\n })\n .then(() => {\n assert.calledThrice(Socket.prototype.open);\n });\n };\n\n // skipping due to apparent bug with lolex in all browsers but Chrome.\n skipInBrowser(it)('fails after configured `initialConnectionMaxRetries` attempts', () => {\n mobiusSocket.config.maxRetries = 0;\n mobiusSocket.config.initialConnectionMaxRetries = 2;\n\n return check();\n });\n\n // skipping due to apparent bug with lolex in all browsers but Chrome.\n // if initial retries is zero and mobiusSocket has never connected, do not retry\n skipInBrowser(it)('fails immediately when `initialConnectionMaxRetries` is 0', () => {\n mobiusSocket.config.maxRetries = 2;\n mobiusSocket.config.initialConnectionMaxRetries = 0;\n\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open');\n socketOpenStub.returns(Promise.reject(new ConnectionError()));\n assert.notCalled(Socket.prototype.open);\n\n const promise = mobiusSocket.connect();\n\n return promiseTick(5)\n .then(() => {\n assert.calledOnce(Socket.prototype.open);\n\n return assert.isRejected(promise);\n })\n .then(() => {\n assert.calledOnce(Socket.prototype.open);\n });\n });\n\n // initial retries is non-zero so takes precedence over maxRetries when mobiusSocket has never connected\n skipInBrowser(it)('fails after `initialConnectionMaxRetries` attempts', () => {\n mobiusSocket.config.maxRetries = 0;\n mobiusSocket.config.initialConnectionMaxRetries = 2;\n\n return check();\n });\n\n // initial retries is non-zero so takes precedence over maxRetries when mobiusSocket has never connected\n skipInBrowser(it)('fails after `initialConnectionMaxRetries` attempts', () => {\n mobiusSocket.config.initialConnectionMaxRetries = 2;\n mobiusSocket.config.maxRetries = 5;\n\n return check();\n });\n\n // when mobiusSocket has connected maxRetries is used and the initialConnectionMaxRetries is ignored\n skipInBrowser(it)('fails after `initialConnectionMaxRetries` attempts', () => {\n mobiusSocket.config.initialConnectionMaxRetries = 5;\n mobiusSocket.config.maxRetries = 2;\n mobiusSocket.hasEverConnected = true;\n\n return check();\n });\n });\n\n it('can safely be called multiple times', () => {\n const promise = Promise.all([\n mobiusSocket.connect(),\n mobiusSocket.connect(),\n mobiusSocket.connect(),\n mobiusSocket.connect(),\n ]);\n\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.calledOnce(Socket.prototype.open);\n });\n });\n\n // skipping due to apparent bug with lolex in all browsers but Chrome.\n skipInBrowser(describe)('when the connection fails', () => {\n it('backs off exponentially', () => {\n mobiusSocket.config.initialConnectionMaxRetries = 2;\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open');\n socketOpenStub.returns(Promise.reject(new ConnectionError({code: 4001})));\n // Note: onCall is zero-based\n socketOpenStub.onCall(2).returns(Promise.resolve(new MockWebSocket()));\n assert.notCalled(Socket.prototype.open);\n\n const promise = mobiusSocket.connect();\n\n return promiseTick(5)\n .then(() => {\n assert.calledOnce(Socket.prototype.open);\n\n // I'm not sure why, but it's important the clock doesn't advance\n // until a tick happens\n return promiseTick(5);\n })\n .then(() => {\n jest.advanceTimersByTime(mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(5);\n })\n .then(() => {\n assert.calledTwice(Socket.prototype.open);\n jest.advanceTimersByTime(2 * mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(5);\n })\n .then(() => {\n assert.calledThrice(Socket.prototype.open);\n jest.advanceTimersByTime(5 * mobiusSocket.config.backoffTimeReset);\n\n return promise;\n })\n .then(() => {\n assert.calledThrice(Socket.prototype.open);\n jest.advanceTimersByTime(8 * mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(5);\n })\n .then(() => {\n assert.calledThrice(Socket.prototype.open);\n });\n });\n\n describe('with `BadRequest`', () => {\n it('fails permanently', () => {\n jest.useRealTimers();\n usingFakeTimers = false;\n socketOpenStub.restore();\n socketOpenStub = sinon\n .stub(Socket.prototype, 'open')\n .returns(Promise.reject(new BadRequest({code: 4400})));\n\n return assert.isRejected(mobiusSocket.connect());\n });\n });\n\n describe('with `UnknownResponse`', () => {\n it('triggers a device refresh', () => {\n mobiusSocket.config.initialConnectionMaxRetries = 1;\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open').returns(Promise.resolve());\n socketOpenStub.onCall(0).returns(Promise.reject(new UnknownResponse({code: 4444})));\n assert.notCalled(webex.credentials.refresh);\n assert.notCalled(webex.internal.device.refresh);\n const promise = mobiusSocket.connect();\n\n return promiseTick(7).then(() => {\n assert.notCalled(webex.credentials.refresh);\n assert.called(webex.internal.device.refresh);\n jest.advanceTimersByTime(1000);\n\n return promise;\n });\n });\n });\n\n describe('with `NotAuthorized`', () => {\n it('triggers a token refresh', () => {\n mobiusSocket.config.initialConnectionMaxRetries = 1;\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open').returns(Promise.resolve());\n socketOpenStub.onCall(0).returns(Promise.reject(new NotAuthorized({code: 4401})));\n assert.notCalled(webex.credentials.refresh);\n assert.notCalled(webex.internal.device.refresh);\n const promise = mobiusSocket.connect();\n\n return promiseTick(7).then(() => {\n assert.called(webex.credentials.refresh);\n assert.notCalled(webex.internal.device.refresh);\n jest.advanceTimersByTime(1000);\n\n return promise;\n });\n });\n });\n\n describe('with `Forbidden`', () => {\n it('fails permanently', () => {\n jest.useRealTimers();\n usingFakeTimers = false;\n socketOpenStub.restore();\n socketOpenStub = sinon\n .stub(Socket.prototype, 'open')\n .returns(Promise.reject(new Forbidden({code: 4403})));\n\n return assert.isRejected(mobiusSocket.connect());\n });\n });\n\n // describe(`with \\`NotFound\\``, () => {\n // it(`triggers a device refresh`, () => {\n // socketOpenStub.restore();\n // socketOpenStub = sinon.stub(Socket.prototype, `open`).returns(Promise.resolve());\n // socketOpenStub.onCall(0).returns(Promise.reject(new NotFound({code: 4404})));\n // assert.notCalled(webex.credentials.refresh);\n // assert.notCalled(webex.internal.device.refresh);\n // const promise = mobiusSocket.connect();\n // return promiseTick(6)\n // .then(() => {\n // assert.notCalled(webex.credentials.refresh);\n // assert.called(webex.internal.device.refresh);\n // clock.tick(1000);\n // return assert.isFulfilled(promise);\n // });\n // });\n // });\n });\n\n describe('when connected', () => {\n it('resolves immediately', () =>\n mobiusSocket.connect().then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n const promise = mobiusSocket.connect();\n\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n return promise;\n }));\n\n // skipping due to apparent bug with lolex in all browsers but Chrome.\n skipInBrowser(it)('does not continue attempting to connect', () => {\n const promise = mobiusSocket.connect();\n\n // Wait for the connection to be established before proceeding\n mockWebSocket.open();\n\n return promise.then(() =>\n promiseTick(2)\n .then(() => {\n jest.advanceTimersByTime(6 * mobiusSocket.config.backoffTimeReset);\n\n return promiseTick(2);\n })\n .then(() => {\n assert.calledOnce(Socket.prototype.open);\n })\n );\n });\n });\n\n describe('when webSocketUrl is provided', () => {\n it('connects to MobiusSocket with provided url', () => {\n const webSocketUrl = 'ws://providedurl.com';\n const promise = mobiusSocket.connect(webSocketUrl);\n\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.calledWith(Socket.prototype.open, 'ws://providedurl.com', sinon.match.any);\n });\n });\n });\n\n describe('when config.initialConnectionMaxRetries is set to 0', () => {\n it('connects successfully through the shared backoff flow', () => {\n const backoffSpy = sinon.spy(mobiusSocket, 'connectWithBackoff');\n mobiusSocket.config.initialConnectionMaxRetries = 0;\n const promise = mobiusSocket.connect('ws://example.com');\n\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.isTrue(mobiusSocket.hasEverConnected, 'hasEverConnected is true');\n assert.calledOnce(Socket.prototype.open);\n assert.calledOnce(backoffSpy);\n assert.isUndefined(backoffSpy.firstCall.args[2]?.initialConnectionMaxRetries);\n backoffSpy.restore();\n });\n });\n\n it('rejects immediately on failure without retrying', () => {\n jest.useRealTimers();\n usingFakeTimers = false;\n socketOpenStub.restore();\n socketOpenStub = sinon\n .stub(Socket.prototype, 'open')\n .returns(Promise.reject(new ConnectionError({code: 4001})));\n mobiusSocket.config.initialConnectionMaxRetries = 0;\n\n const promise = mobiusSocket.connect('ws://example.com');\n\n return assert.isRejected(promise).then(() => {\n assert.calledOnce(Socket.prototype.open);\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n });\n });\n\n it('uses config-driven initial retry behavior in the shared backoff strategy', () => {\n const backoffSpy = sinon.spy(mobiusSocket, 'connectWithBackoff');\n mobiusSocket.config.initialConnectionMaxRetries = 0;\n\n const promise = mobiusSocket.connect('ws://example.com');\n\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.calledOnce(backoffSpy);\n assert.isUndefined(backoffSpy.firstCall.args[2]?.initialConnectionMaxRetries);\n backoffSpy.restore();\n });\n });\n\n it('treats a different explicit URL as a fresh initial connect', () => {\n jest.useRealTimers();\n usingFakeTimers = false;\n mobiusSocket.hasEverConnected = true;\n mobiusSocket.socketUrl = 'ws://old-url.com';\n mobiusSocket.config.initialConnectionMaxRetries = 0;\n mobiusSocket.config.maxRetries = 5;\n\n socketOpenStub.restore();\n socketOpenStub = sinon\n .stub(Socket.prototype, 'open')\n .returns(Promise.reject(new ConnectionError({code: 4001})));\n\n const promise = mobiusSocket.connect('ws://new-url.com');\n\n return assert.isRejected(promise).then(() => {\n assert.calledOnce(Socket.prototype.open);\n assert.equal(mobiusSocket.socketUrl, 'ws://new-url.com');\n assert.isFalse(mobiusSocket.hasEverConnected, 'hasEverConnected is false');\n });\n });\n });\n });\n\n describe('Websocket proxy agent', () => {\n afterEach(() => {\n delete webex.config.defaultMobiusSocketOptions;\n });\n\n it('connects to MobiusSocket using proxy agent', () => {\n const testProxyUrl = 'http://proxyurl.com:80';\n\n webex.config.defaultMobiusSocketOptions = {agent: {proxy: {href: testProxyUrl}}};\n const promise = mobiusSocket.connect();\n\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.calledWith(\n socketOpenStub,\n 'ws://example.com',\n sinon.match.has(\n 'agent',\n sinon.match.has('proxy', sinon.match.has('href', testProxyUrl))\n )\n );\n });\n });\n\n it('connects to MobiusSocket without proxy agent', () => {\n const promise = mobiusSocket.connect();\n\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n mockWebSocket.open();\n\n return promise.then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.calledWith(socketOpenStub, 'ws://example.com', sinon.match({agent: undefined}));\n });\n });\n });\n\n describe('#disconnect()', () => {\n it('disconnects the WebSocket', () =>\n mobiusSocket\n .connect()\n .then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n const promise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n\n return promise;\n })\n .then(() => {\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.isUndefined(\n mobiusSocket.mockWebSocket,\n 'MobiusSocket does not have a mockWebSocket'\n );\n }));\n\n it('disconnects the WebSocket with code 3050', () =>\n mobiusSocket\n .connect()\n .then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n const promise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 3050,\n reason: 'done (permanent)',\n });\n\n return promise;\n })\n .then(() => {\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n assert.isUndefined(\n mobiusSocket.mockWebSocket,\n 'MobiusSocket does not have a mockWebSocket'\n );\n }));\n\n it('stops emitting message events', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', spy);\n\n return mobiusSocket\n .connect()\n .then(() => {\n assert.isTrue(mobiusSocket.connected, 'MobiusSocket is connected');\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n assert.notCalled(spy);\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {data: statusStartTypingMessage});\n })\n .then(() => {\n assert.calledOnce(spy);\n\n const promise = mobiusSocket.disconnect();\n\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {data: statusStartTypingMessage});\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n mockWebSocket.emit('message', {data: statusStartTypingMessage});\n\n return promise;\n })\n\n .then(() => {\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {data: statusStartTypingMessage});\n assert.calledOnce(spy);\n });\n });\n\n describe('when there is a connection attempt inflight', () => {\n it('stops the attempt when disconnect called', () => {\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open');\n socketOpenStub.onCall(0).returns(\n // Delay the opening of the socket so that disconnect is called while open\n // is in progress\n promiseTick(2 * mobiusSocket.config.backoffTimeReset)\n // Pretend the socket opened successfully. Failing should be fine too but\n // it generates more console output.\n .then(() => Promise.resolve())\n );\n const promise = mobiusSocket.connect();\n\n // Wait for the connect call to setup\n return promiseTick(mobiusSocket.config.backoffTimeReset).then(async () => {\n // By this time backoffCall and mobiusSocket socket should be defined by the\n // 'connect' call\n assert.isDefined(mobiusSocket.backoffCall, 'MobiusSocket backoffCall is not defined');\n assert.isDefined(mobiusSocket.socket, 'MobiusSocket socket is not defined');\n // Calling disconnect will abort the backoffCall, close the socket, and\n // reject the connect\n mobiusSocket.disconnect();\n assert.isUndefined(\n mobiusSocket.backoffCall,\n 'MobiusSocket backoffCall is still defined'\n );\n // The socket will never be unset (which seems bad)\n assert.isDefined(mobiusSocket.socket, 'MobiusSocket socket is not defined');\n\n await assert.isRejected(promise);\n });\n });\n\n it('stops the attempt when backoffCall is undefined', () => {\n socketOpenStub.restore();\n socketOpenStub = sinon.stub(Socket.prototype, 'open');\n socketOpenStub.returns(Promise.resolve());\n\n let reason;\n\n mobiusSocket.backoffCall = undefined;\n\n const promise = mobiusSocket.attemptConnection('ws://example.com', (_reason) => {\n reason = _reason;\n });\n\n return promiseTick(mobiusSocket.config.backoffTimeReset).then(() => {\n assert.match(reason.message, /prevent socket open when backoffCall no longer defined/);\n\n // Ensure the promise was actually rejected (short-circuited)\n return assert.isRejected(promise);\n });\n });\n });\n });\n\n describe('#sendWssRequest()', () => {\n beforeEach(() => {\n mobiusSocket.config.wssResponseTimeout = 100;\n });\n\n it('resolves when a matching response_event arrives', async () => {\n await mobiusSocket.connect();\n\n const requestPromise = mobiusSocket.sendWssRequest({\n type: 'auth',\n data: {\n token: 'test',\n },\n });\n\n await promiseTick();\n\n const requestPayload = JSON.parse(mockWebSocket.send.lastCall.args[0]);\n assert.equal(requestPayload.data.token, 'test');\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: 'auth',\n trackingId: requestPayload.trackingId,\n statusCode: 200,\n statusMessage: 'OK',\n }),\n });\n\n const response = await requestPromise;\n\n assert.equal(response.type, 'response_event');\n assert.equal(response.subtype, 'auth');\n assert.equal(response.trackingId, requestPayload.trackingId);\n assert.equal(response.statusCode, 200);\n });\n\n it('strips the Bearer prefix from connect-time auth token', async () => {\n await mobiusSocket.connect();\n\n const authPayload = JSON.parse(mockWebSocket.send.firstCall.args[0]);\n\n assert.equal(authPayload.type, MESSAGE_TYPES.AUTH);\n assert.equal(authPayload.data.token, 'FAKE');\n });\n\n it('rejects when a matching response_event is non-2xx', async () => {\n await mobiusSocket.connect();\n\n const requestPromise = mobiusSocket.sendWssRequest({\n type: 'auth',\n data: {\n token: 'test',\n },\n });\n\n await promiseTick();\n\n const requestPayload = JSON.parse(mockWebSocket.send.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: 'auth',\n trackingId: requestPayload.trackingId,\n statusCode: 403,\n statusMessage: 'Forbidden',\n }),\n });\n\n const error = await assert.isRejected(requestPromise);\n\n assert.equal(error.name, 'MobiusSocketResponseError');\n assert.equal(error.statusCode, 403);\n assert.equal(error.statusMessage, 'Forbidden');\n assert.equal(error.trackingId, requestPayload.trackingId);\n });\n\n it('rejects when the matching response does not arrive before timeout', async () => {\n await mobiusSocket.connect();\n\n const requestPromise = mobiusSocket.sendWssRequest({\n type: 'auth',\n data: {\n token: 'test',\n },\n });\n\n jest.advanceTimersByTime(101);\n await promiseTick();\n\n const error = await assert.isRejected(requestPromise);\n\n assert.equal(error.name, 'MobiusSocketResponseError');\n assert.equal(error.statusCode, 408);\n assert.equal(error.statusMessage, 'Mobius websocket response timed out');\n });\n\n it('rejects with a clear error when the matching response is missing status code', async () => {\n await mobiusSocket.connect();\n\n const requestPromise = mobiusSocket.sendWssRequest({\n type: 'auth',\n data: {\n token: 'test',\n },\n });\n\n await promiseTick();\n\n const requestPayload = JSON.parse(mockWebSocket.send.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: 'auth',\n trackingId: requestPayload.trackingId,\n }),\n });\n\n const error = await assert.isRejected(requestPromise);\n\n assert.equal(error.name, 'MobiusSocketResponseError');\n assert.isUndefined(error.statusCode);\n assert.equal(error.statusMessage, 'Socket response missing status code');\n });\n\n it('rejects pending requests when the active socket closes', async () => {\n await mobiusSocket.connect();\n\n const requestPromise = mobiusSocket.sendWssRequest({\n type: 'auth',\n data: {\n token: 'test',\n },\n });\n\n mockWebSocket.emit('close', {\n code: 1003,\n reason: 'service rejected request',\n });\n\n const error = await assert.isRejected(requestPromise);\n\n assert.instanceOf(error, ConnectionError);\n assert.equal(error.code, 1003);\n assert.equal(error.reason, 'service rejected request');\n });\n\n it('rejects array payloads', async () => {\n await mobiusSocket.connect();\n\n const error = await assert.isRejected(mobiusSocket.sendWssRequest([]));\n\n assert.equal(error.message, '`payload` is required');\n });\n });\n\n describe('#getConnectedWebSocketUrl()', () => {\n it('returns the connected websocket url', () => {\n mobiusSocket.socket = {\n connected: true,\n url: 'ws://connected-url.com',\n };\n\n assert.equal(mobiusSocket.getConnectedWebSocketUrl(), 'ws://connected-url.com');\n });\n\n it('returns undefined when not connected', () => {\n mobiusSocket.socket = {\n connected: false,\n url: 'ws://disconnected-url.com',\n };\n\n assert.isUndefined(mobiusSocket.getConnectedWebSocketUrl());\n });\n });\n\n describe('#_emit()', () => {\n it('emits Error-safe events and log the error with the call parameters', () => {\n const error = 'error';\n const event = {data: 'some data'};\n mobiusSocket.on('break', () => {\n throw error;\n });\n sinon.stub(mobiusSocket.logger, 'error');\n\n return Promise.resolve(mobiusSocket.emitEvent('break', event)).then((res) => {\n assert.calledWith(\n mobiusSocket.logger.error,\n 'MobiusSocket: error occurred in event handler:',\n error,\n ' with args: ',\n ['break', event]\n );\n\n return res;\n });\n });\n });\n\n describe('#_prepareUrl()', () => {\n it('returns the provided URL as-is (no Mercury URL transforms)', () =>\n mobiusSocket.prepareUrl('ws://provided.com').then((wsUrl) => {\n assert.equal(wsUrl, 'ws://provided.com');\n }));\n\n it('falls back to device webSocketUrl when no URL is provided', () =>\n mobiusSocket.prepareUrl().then((wsUrl) => {\n assert.equal(wsUrl, 'ws://example.com');\n }));\n });\n\n describe('shutdown protocol', () => {\n describe('#_handleImminentShutdown()', () => {\n let connectWithBackoffStub;\n\n beforeEach(() => {\n mobiusSocket.connected = true;\n mobiusSocket.socket = {\n url: 'ws://old-socket.com',\n removeAllListeners: sinon.stub(),\n };\n connectWithBackoffStub = sinon.stub(mobiusSocket, 'connectWithBackoff');\n connectWithBackoffStub.returns(Promise.resolve());\n sinon.stub(mobiusSocket, 'emitEvent');\n });\n\n afterEach(() => {\n connectWithBackoffStub.restore();\n mobiusSocket.emitEvent.restore();\n });\n\n it('should be idempotent - no-op if already in progress', () => {\n mobiusSocket.shutdownSwitchoverBackoffCall = {placeholder: true};\n\n mobiusSocket.handleImminentShutdown();\n\n assert.notCalled(connectWithBackoffStub);\n });\n\n it('should set switchover flags when called', () => {\n mobiusSocket.handleImminentShutdown();\n\n assert.calledOnce(connectWithBackoffStub);\n const callArgs = connectWithBackoffStub.firstCall.args;\n assert.isUndefined(callArgs[0]); // webSocketUrl\n assert.isObject(callArgs[1]); // context\n assert.isTrue(callArgs[1].isShutdownSwitchover);\n assert.isObject(callArgs[1].attemptOptions);\n assert.isTrue(callArgs[1].attemptOptions.isShutdownSwitchover);\n });\n\n it('should call _connectWithBackoff with correct parameters', (done) => {\n mobiusSocket.handleImminentShutdown();\n\n process.nextTick(() => {\n assert.calledOnce(connectWithBackoffStub);\n const callArgs = connectWithBackoffStub.firstCall.args;\n assert.isUndefined(callArgs[0]); // webSocketUrl\n assert.isObject(callArgs[1]); // context\n assert.isTrue(callArgs[1].isShutdownSwitchover);\n assert.isObject(callArgs[1].attemptOptions);\n assert.isTrue(callArgs[1].attemptOptions.isShutdownSwitchover);\n done();\n });\n });\n\n it('should handle exceptions during switchover', () => {\n connectWithBackoffStub.restore();\n sinon.stub(mobiusSocket, 'connectWithBackoff').throws(new Error('Connection failed'));\n\n mobiusSocket.handleImminentShutdown();\n\n assert.isUndefined(mobiusSocket.shutdownSwitchoverBackoffCall);\n mobiusSocket.connectWithBackoff.restore();\n });\n });\n\n describe('#_onmessage() with shutdown message', () => {\n beforeEach(() => {\n sinon.stub(mobiusSocket, 'handleImminentShutdown');\n sinon.stub(mobiusSocket, 'emitEvent');\n });\n\n afterEach(() => {\n mobiusSocket.handleImminentShutdown.restore();\n mobiusSocket.emitEvent.restore();\n });\n\n it('should trigger _handleImminentShutdown on shutdown message', () => {\n const shutdownEvent = {\n data: {\n type: 'shutdown',\n },\n };\n\n const result = mobiusSocket.onmessage(shutdownEvent);\n\n assert.calledOnce(mobiusSocket.handleImminentShutdown);\n assert.calledWith(\n mobiusSocket.emitEvent,\n 'event:mobius_shutdown_imminent',\n shutdownEvent.data\n );\n assert.instanceOf(result, Promise);\n });\n\n it('should handle shutdown message without additional data gracefully', () => {\n const shutdownEvent = {\n data: {\n type: 'shutdown',\n },\n };\n\n mobiusSocket.onmessage(shutdownEvent);\n\n assert.calledOnce(mobiusSocket.handleImminentShutdown);\n });\n\n it('should not trigger shutdown handling for non-shutdown messages', () => {\n const regularEvent = {\n data: {\n type: 'regular',\n data: {\n eventType: 'conversation.activity',\n },\n },\n };\n\n mobiusSocket.onmessage(regularEvent);\n\n assert.notCalled(mobiusSocket.handleImminentShutdown);\n });\n });\n\n describe('#_onmessage() with missing data or eventType', () => {\n beforeEach(() => {\n sinon.stub(mobiusSocket, 'emitEvent');\n });\n\n afterEach(() => {\n mobiusSocket.emitEvent.restore();\n });\n\n it('should not throw when envelope.data is undefined', () => {\n const event = {\n data: {\n type: 'someType',\n // no nested data property\n },\n };\n\n const result = mobiusSocket.onmessage(event);\n\n assert.instanceOf(result, Promise);\n assert.calledWith(mobiusSocket.emitEvent, 'event', event.data);\n });\n\n it('should not throw when data.eventType is undefined', () => {\n const event = {\n data: {\n type: 'someType',\n data: {\n // no eventType property\n someField: 'value',\n },\n },\n };\n\n const result = mobiusSocket.onmessage(event);\n\n assert.instanceOf(result, Promise);\n assert.calledWith(mobiusSocket.emitEvent, 'event', event.data);\n });\n\n it('should emit generic event for messages without eventType (e.g. subscription responses)', () => {\n const event = {\n data: {\n id: 'msg-123',\n sequenceNumber: 5,\n data: {\n statusCode: 200,\n },\n },\n };\n\n const result = mobiusSocket.onmessage(event);\n\n assert.instanceOf(result, Promise);\n assert.calledOnce(mobiusSocket.emitEvent);\n assert.calledWith(mobiusSocket.emitEvent, 'event', event.data);\n });\n\n it('should still process messages with a valid eventType', async () => {\n const event = {\n data: {\n data: {\n eventType: 'conversation.activity',\n },\n },\n };\n\n await mobiusSocket.onmessage(event);\n\n assert.calledWith(mobiusSocket.emitEvent, 'event:conversation', event.data);\n assert.calledWith(mobiusSocket.emitEvent, 'event:conversation.activity', event.data);\n });\n });\n\n describe('#_onmessage() async_event deduplication', () => {\n let originalDedupCacheMaxSize;\n\n beforeEach(() => {\n originalDedupCacheMaxSize = mobiusSocket.config.dedupCacheMaxSize;\n });\n\n afterEach(() => {\n mobiusSocket.config.dedupCacheMaxSize = originalDedupCacheMaxSize;\n });\n\n it('suppresses duplicate async_event messages', async () => {\n const emitSpy = sinon.spy(mobiusSocket, 'emitEvent');\n\n await mobiusSocket.onmessage(createAsyncEvent('evt-1'));\n await mobiusSocket.onmessage(createAsyncEvent('evt-1'));\n\n assert.equal(countGenericEventEmits(emitSpy), 1);\n emitSpy.restore();\n });\n\n it('suppresses duplicate async_event messages across socket replacement without disconnect', async () => {\n const emitSpy = sinon.spy(mobiusSocket, 'emitEvent');\n mobiusSocket.socket = createSessionSocket();\n\n await mobiusSocket.onmessage(createAsyncEvent('evt-2'));\n\n mobiusSocket.socket = createSessionSocket();\n await mobiusSocket.onmessage(createAsyncEvent('evt-2'));\n\n assert.equal(countGenericEventEmits(emitSpy), 1);\n emitSpy.restore();\n });\n\n it('evicts only the oldest eventId when the dedup cache exceeds max size', async () => {\n const emitSpy = sinon.spy(mobiusSocket, 'emitEvent');\n\n mobiusSocket.config.dedupCacheMaxSize = 3;\n\n await mobiusSocket.onmessage(createAsyncEvent('e1'));\n await mobiusSocket.onmessage(createAsyncEvent('e2'));\n await mobiusSocket.onmessage(createAsyncEvent('e3'));\n await mobiusSocket.onmessage(createAsyncEvent('e4'));\n await mobiusSocket.onmessage(createAsyncEvent('e2'));\n await mobiusSocket.onmessage(createAsyncEvent('e1'));\n\n assert.equal(countGenericEventEmits(emitSpy), 5);\n emitSpy.restore();\n });\n\n it('clears the dedup cache on disconnect', async () => {\n const emitSpy = sinon.spy(mobiusSocket, 'emitEvent');\n\n await mobiusSocket.onmessage(createAsyncEvent('evt-3'));\n\n mobiusSocket.socket = createSessionSocket();\n await mobiusSocket.disconnect();\n await mobiusSocket.onmessage(createAsyncEvent('evt-3'));\n\n assert.equal(countGenericEventEmits(emitSpy), 2);\n emitSpy.restore();\n });\n });\n\n describe('#_onclose() with code 4001 (shutdown replacement)', () => {\n let mockSocket;\n let anotherSocket;\n\n beforeEach(() => {\n mockSocket = {\n url: 'ws://active-socket.com',\n removeAllListeners: sinon.stub(),\n };\n anotherSocket = {\n url: 'ws://old-socket.com',\n removeAllListeners: sinon.stub(),\n };\n mobiusSocket.socket = mockSocket;\n mobiusSocket.connected = true;\n sinon.stub(mobiusSocket, 'emitEvent');\n sinon.stub(mobiusSocket, 'reconnect');\n });\n\n afterEach(() => {\n mobiusSocket.emitEvent.restore();\n mobiusSocket.reconnect.restore();\n });\n\n it('should handle active socket close with 4001 - emits registration.down, offline.permanent, and tears down state', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n mobiusSocket.onclose(closeEvent, mockSocket);\n\n assert.calledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n assert.calledWith(mobiusSocket.emitEvent, 'event:async_event', MOBIUS_SOCKET_4001_EVENT);\n // 4001 will not reconnect, so connection-lifecycle listeners must be notified\n // via the suffixed offline.permanent event in addition to registration.down.\n assert.calledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n assert.notCalled(mobiusSocket.reconnect);\n assert.isFalse(mobiusSocket.connected);\n });\n\n it('should handle non-active socket close with 4001 - emits registration.down without tearing down state', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n mobiusSocket.onclose(closeEvent, anotherSocket);\n\n assert.calledWith(mobiusSocket.emitEvent, 'event:async_event', MOBIUS_SOCKET_4001_EVENT);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.replaced', closeEvent);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n // Non-active socket close must not surface a disconnect to lifecycle listeners.\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n assert.notCalled(mobiusSocket.reconnect);\n assert.isTrue(mobiusSocket.connected);\n assert.strictEqual(mobiusSocket.socket, mockSocket);\n });\n\n it('should emit registration.down for both active and non-active socket closes with 4001', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n // Non-active socket: only registration.down is emitted (no 'offline' / 'offline.permanent')\n mobiusSocket.onclose(closeEvent, anotherSocket);\n assert.calledWith(mobiusSocket.emitEvent, 'event:async_event', MOBIUS_SOCKET_4001_EVENT);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n\n mobiusSocket.emitEvent.resetHistory();\n\n // Active socket: 'offline' and 'offline.permanent' are emitted alongside registration.down\n mobiusSocket.onclose(closeEvent, mockSocket);\n assert.calledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n assert.calledWith(mobiusSocket.emitEvent, 'event:async_event', MOBIUS_SOCKET_4001_EVENT);\n assert.calledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n });\n\n it('should handle missing sourceSocket parameter (treats as non-active)', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n mobiusSocket.onclose(closeEvent, undefined);\n\n assert.calledWith(mobiusSocket.emitEvent, 'event:async_event', MOBIUS_SOCKET_4001_EVENT);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.replaced', closeEvent);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n assert.notCalled(mobiusSocket.reconnect);\n });\n\n it('should clean up event listeners from non-active socket when it closes', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n mobiusSocket.onclose(closeEvent, anotherSocket);\n\n assert.calledOnce(anotherSocket.removeAllListeners);\n });\n\n it('should not clean up listeners from active socket listeners until close handler runs', () => {\n const closeEvent = {\n code: 4001,\n reason: 'replaced during shutdown',\n };\n\n mobiusSocket.onclose(closeEvent, mockSocket);\n\n assert.calledOnce(mockSocket.removeAllListeners);\n });\n });\n\n describe('#_onclose() with code 4429 (too many requests)', () => {\n let mockSocket;\n let anotherSocket;\n\n beforeEach(() => {\n mockSocket = {\n url: 'ws://active-socket.com',\n removeAllListeners: sinon.stub(),\n };\n anotherSocket = {\n url: 'ws://old-socket.com',\n removeAllListeners: sinon.stub(),\n };\n mobiusSocket.socket = mockSocket;\n mobiusSocket.connected = true;\n sinon.stub(mobiusSocket, 'emitEvent');\n sinon.stub(mobiusSocket, 'reconnect');\n });\n\n afterEach(() => {\n mobiusSocket.emitEvent.restore();\n mobiusSocket.reconnect.restore();\n });\n\n it('should emit offline.permanent and tear down state on active socket close, without reconnecting', () => {\n const closeEvent = {\n code: 4429,\n reason: 'too many requests',\n };\n\n mobiusSocket.onclose(closeEvent, mockSocket);\n\n assert.calledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n // 4429 tears down without auto-reconnect, so lifecycle listeners must be notified.\n assert.calledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n assert.notCalled(mobiusSocket.reconnect);\n assert.isFalse(mobiusSocket.connected);\n });\n\n it('should not emit offline.permanent for a non-active socket close', () => {\n const closeEvent = {\n code: 4429,\n reason: 'too many requests',\n };\n\n mobiusSocket.onclose(closeEvent, anotherSocket);\n\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline', closeEvent);\n assert.neverCalledWith(mobiusSocket.emitEvent, 'offline.permanent', closeEvent);\n assert.notCalled(mobiusSocket.reconnect);\n assert.isTrue(mobiusSocket.connected);\n assert.strictEqual(mobiusSocket.socket, mockSocket);\n });\n });\n\n describe('shutdown switchover with retry logic', () => {\n let connectWithBackoffStub;\n\n beforeEach(() => {\n mobiusSocket.connected = true;\n mobiusSocket.socket = {\n url: 'ws://old-socket.com',\n removeAllListeners: sinon.stub(),\n };\n connectWithBackoffStub = sinon.stub(mobiusSocket, 'connectWithBackoff');\n sinon.stub(mobiusSocket, 'emitEvent');\n });\n\n afterEach(() => {\n connectWithBackoffStub.restore();\n mobiusSocket.emitEvent.restore();\n });\n\n it('should call _connectWithBackoff with shutdown switchover context', (done) => {\n connectWithBackoffStub.returns(Promise.resolve());\n\n mobiusSocket.handleImminentShutdown();\n\n process.nextTick(() => {\n assert.calledOnce(connectWithBackoffStub);\n const callArgs = connectWithBackoffStub.firstCall.args;\n\n assert.isUndefined(callArgs[0]); // webSocketUrl\n assert.isObject(callArgs[1]);\n assert.isTrue(callArgs[1].isShutdownSwitchover);\n assert.isObject(callArgs[1].attemptOptions);\n assert.isTrue(callArgs[1].attemptOptions.isShutdownSwitchover);\n done();\n });\n });\n\n it('should set shutdownSwitchoverBackoffCall during switchover', () => {\n connectWithBackoffStub.callsFake(() => {\n mobiusSocket.shutdownSwitchoverBackoffCall = {placeholder: true};\n\n return new Promise(() => {}); // Never resolves\n });\n\n mobiusSocket.handleImminentShutdown();\n\n assert.isOk(mobiusSocket.shutdownSwitchoverBackoffCall);\n });\n\n it('should emit success event when switchover completes', async () => {\n connectWithBackoffStub.callsFake((url, context) => {\n if (context && context.attemptOptions && context.attemptOptions.onSuccess) {\n const newSocket = {url: 'ws://new-socket.com'};\n context.attemptOptions.onSuccess(newSocket, 'ws://new-socket.com');\n }\n\n return Promise.resolve();\n });\n\n mobiusSocket.handleImminentShutdown();\n\n await promiseTick(50);\n\n const emitCalls = mobiusSocket.emitEvent.getCalls();\n const hasCompleteEvent = emitCalls.some(\n (call) => call.args[0] === 'event:mobius_shutdown_switchover_complete'\n );\n\n assert.isTrue(hasCompleteEvent, 'Should emit switchover complete event');\n });\n\n it('should emit failure event when switchover exhausts retries', async () => {\n const testError = new Error('Connection failed');\n\n connectWithBackoffStub.returns(Promise.reject(testError));\n\n mobiusSocket.handleImminentShutdown();\n await promiseTick(50);\n\n const emitCalls = mobiusSocket.emitEvent.getCalls();\n const hasFailureEvent = emitCalls.some(\n (call) =>\n call.args[0] === 'event:mobius_shutdown_switchover_failed' &&\n call.args[1] &&\n call.args[1].reason === testError\n );\n\n assert.isTrue(hasFailureEvent, 'Should emit switchover failed event');\n });\n\n it('should allow old socket to be closed by server after switchover failure', async () => {\n connectWithBackoffStub.returns(Promise.reject(new Error('Failed')));\n\n mobiusSocket.handleImminentShutdown();\n await promiseTick(50);\n\n assert.equal(mobiusSocket.socket.removeAllListeners.callCount, 0);\n });\n });\n\n describe('#_prepareAndOpenSocket()', () => {\n let mockSocket;\n let prepareUrlStub;\n let getUserTokenStub;\n\n beforeEach(() => {\n mockSocket = {\n open: sinon.stub().returns(Promise.resolve()),\n };\n prepareUrlStub = sinon\n .stub(mobiusSocket, 'prepareUrl')\n .returns(Promise.resolve('ws://example.com'));\n getUserTokenStub = webex.credentials.getUserToken;\n getUserTokenStub.returns(\n Promise.resolve({\n toString: () => 'mock-token',\n })\n );\n });\n\n afterEach(() => {\n prepareUrlStub.restore();\n });\n\n it('should prepare URL and get user token', async () => {\n await mobiusSocket.prepareAndOpenSocket(mockSocket, 'ws://test.com', false);\n\n assert.calledOnce(prepareUrlStub);\n assert.calledWith(prepareUrlStub, 'ws://test.com');\n assert.calledOnce(getUserTokenStub);\n });\n\n it('should open socket with correct options for normal connection', async () => {\n await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, false);\n\n assert.calledOnce(mockSocket.open);\n const callArgs = mockSocket.open.firstCall.args;\n\n assert.equal(callArgs[0], 'ws://example.com');\n assert.isObject(callArgs[1]);\n assert.equal(callArgs[1].token, 'mock-token');\n assert.isDefined(callArgs[1].forceCloseDelay);\n assert.isDefined(callArgs[1].wssResponseTimeout);\n });\n\n it('should log with correct prefix for normal connection', async () => {\n await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, false);\n\n // The method should complete successfully - we're testing it runs without error\n // Actual log message verification is complex due to existing stubs in parent scope\n assert.calledOnce(mockSocket.open);\n });\n\n it('should log with shutdown prefix for shutdown connection', async () => {\n await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, true);\n\n // The method should complete successfully with shutdown flag\n assert.calledOnce(mockSocket.open);\n });\n\n it('should merge custom mobiusSocket options when provided', async () => {\n webex.config.defaultMobiusSocketOptions = {\n customOption: 'test-value',\n wssResponseTimeout: 99999,\n };\n\n await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, false);\n\n const callArgs = mockSocket.open.firstCall.args;\n\n assert.equal(callArgs[1].customOption, 'test-value');\n assert.equal(callArgs[1].wssResponseTimeout, 99999); // Custom value overrides default\n });\n\n it('should return the webSocketUrl after opening', async () => {\n const result = await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, false);\n\n assert.equal(result, 'ws://example.com');\n });\n\n it('should handle errors during socket open', async () => {\n mockSocket.open.returns(Promise.reject(new Error('Open failed')));\n\n try {\n await mobiusSocket.prepareAndOpenSocket(mockSocket, undefined, false);\n assert.fail('Should have thrown an error');\n } catch (err) {\n assert.equal(err.message, 'Open failed');\n }\n });\n });\n\n describe('#_attemptConnection() with shutdown switchover', () => {\n let prepareAndOpenSocketStub;\n let callback;\n\n beforeEach(() => {\n prepareAndOpenSocketStub = sinon\n .stub(mobiusSocket, 'prepareAndOpenSocket')\n .returns(Promise.resolve('ws://new-socket.com'));\n callback = sinon.stub();\n mobiusSocket.shutdownSwitchoverBackoffCall = {abort: sinon.stub()};\n mobiusSocket.socket = {url: 'ws://test.com'};\n mobiusSocket.connected = true;\n sinon.stub(mobiusSocket, 'emitEvent');\n sinon.stub(mobiusSocket, 'attachSocketEventListeners');\n });\n\n afterEach(() => {\n prepareAndOpenSocketStub.restore();\n mobiusSocket.emitEvent.restore();\n mobiusSocket.attachSocketEventListeners.restore();\n mobiusSocket.shutdownSwitchoverBackoffCall = undefined;\n });\n\n it('should not set socket reference before opening for shutdown switchover', async () => {\n const originalSocket = mobiusSocket.socket;\n\n await mobiusSocket.attemptConnection('ws://test.com', callback, {\n isShutdownSwitchover: true,\n attemptOptions: {\n onSuccess: (newSocket, url) => {\n assert.exists(newSocket);\n assert.equal(url, 'ws://new-socket.com');\n },\n },\n });\n\n // During shutdown switchover, this.socket should remain the old socket\n assert.equal(mobiusSocket.socket, originalSocket);\n });\n\n it('should call onSuccess callback with new socket and URL for shutdown', async () => {\n const onSuccessStub = sinon.stub();\n\n await mobiusSocket.attemptConnection('ws://test.com', callback, {\n isShutdownSwitchover: true,\n attemptOptions: {\n onSuccess: onSuccessStub,\n },\n });\n\n assert.calledOnce(onSuccessStub);\n assert.equal(onSuccessStub.firstCall.args[1], 'ws://new-socket.com');\n });\n\n it('should emit shutdown switchover complete event', async () => {\n await mobiusSocket.attemptConnection('ws://test.com', callback, {\n isShutdownSwitchover: true,\n attemptOptions: {\n onSuccess: (newSocket, url) => {\n mobiusSocket.socket = newSocket;\n mobiusSocket.connected = true;\n mobiusSocket.emitEvent('event:mobius_shutdown_switchover_complete', {\n url,\n });\n },\n },\n });\n\n assert.calledWith(\n mobiusSocket.emitEvent,\n 'event:mobius_shutdown_switchover_complete',\n sinon.match.has('url', 'ws://new-socket.com')\n );\n });\n\n it('should use simpler error handling for shutdown switchover failures', async () => {\n prepareAndOpenSocketStub.returns(Promise.reject(new Error('Connection failed')));\n\n await mobiusSocket\n .attemptConnection('ws://test.com', callback, {\n isShutdownSwitchover: true,\n attemptOptions: {},\n })\n .catch(() => {});\n\n assert.calledOnce(callback);\n assert.instanceOf(callback.firstCall.args[0], Error);\n });\n\n it('should check shutdownSwitchoverBackoffCall for shutdown connections', () => {\n mobiusSocket.shutdownSwitchoverBackoffCall = undefined;\n\n const result = mobiusSocket.attemptConnection('ws://test.com', callback, {\n isShutdownSwitchover: true,\n });\n\n return result.catch((err) => {\n assert.instanceOf(err, Error);\n assert.match(err.message, /switchover backoff call/);\n });\n });\n });\n\n describe('#_connectWithBackoff() with shutdown switchover', () => {\n it('should use shutdown-specific parameters when called', () => {\n const connectWithBackoffStub = sinon\n .stub(mobiusSocket, 'connectWithBackoff')\n .returns(Promise.resolve());\n\n mobiusSocket.handleImminentShutdown();\n\n assert.calledOnce(connectWithBackoffStub);\n const callArgs = connectWithBackoffStub.firstCall.args;\n assert.isUndefined(callArgs[0]); // webSocketUrl\n assert.isObject(callArgs[1]);\n assert.isTrue(callArgs[1].isShutdownSwitchover);\n\n connectWithBackoffStub.restore();\n });\n\n it('should pass shutdown switchover options to _attemptConnection', () => {\n const attemptStub = sinon.stub(mobiusSocket, 'attemptConnection');\n attemptStub.callsFake((url, cb) => cb());\n\n const context = {\n isShutdownSwitchover: true,\n attemptOptions: {\n isShutdownSwitchover: true,\n onSuccess: () => {},\n },\n };\n\n const promise = mobiusSocket.connectWithBackoff(undefined, context);\n\n return promise.then(() => {\n assert.calledOnce(attemptStub);\n const callArgs = attemptStub.firstCall.args;\n assert.isObject(callArgs[2]);\n assert.isTrue(callArgs[2].isShutdownSwitchover);\n attemptStub.restore();\n });\n });\n\n it('should set and clear state flags appropriately', () => {\n sinon.stub(mobiusSocket, 'attemptConnection').callsFake((url, cb) => cb());\n\n mobiusSocket.shutdownSwitchoverBackoffCall = {placeholder: true};\n\n const promise = mobiusSocket.connectWithBackoff(undefined, {\n isShutdownSwitchover: true,\n attemptOptions: {isShutdownSwitchover: true, onSuccess: () => {}},\n });\n\n return promise.then(() => {\n assert.isUndefined(mobiusSocket.shutdownSwitchoverBackoffCall);\n mobiusSocket.attemptConnection.restore();\n });\n });\n });\n\n describe('#disconnect() with shutdown switchover in progress', () => {\n let abortStub;\n\n beforeEach(() => {\n mobiusSocket.socket = {\n close: sinon.stub().returns(Promise.resolve()),\n removeAllListeners: sinon.stub(),\n connecting: false,\n connected: true,\n };\n abortStub = sinon.stub();\n mobiusSocket.shutdownSwitchoverBackoffCall = {abort: abortStub};\n });\n\n it('should abort shutdown switchover backoff call on disconnect', async () => {\n await mobiusSocket.disconnect();\n\n assert.calledOnce(abortStub);\n });\n\n it('should handle disconnect when no switchover is in progress', async () => {\n mobiusSocket.shutdownSwitchoverBackoffCall = undefined;\n\n await mobiusSocket.disconnect();\n\n assert.calledOnce(mobiusSocket.socket.close);\n });\n });\n });\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,wBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,MAAA,GAAAC,uBAAA,CAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,OAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,aAAA,GAAAX,OAAA;AACA,IAAAY,UAAA,GAAAZ,OAAA;AAEA,IAAAa,YAAA,GAAAX,sBAAA,CAAAF,OAAA;AAA8C,SAAAO,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAT,uBAAA,YAAAA,wBAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,GAAA,IAAAf,CAAA,gBAAAe,GAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,GAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,uBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,GAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,GAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,GAAA,IAAAf,CAAA,CAAAe,GAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAoB,YAAA,CAAArB,CAAA,OAAAsB,6BAAA,QAAAhB,CAAA,GAAAgB,6BAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAgB,gCAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,OAAA8B,OAAA,WAAA5B,CAAA,QAAA6B,gBAAA,CAAAtB,OAAA,EAAAV,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAA8B,iCAAA,GAAAC,wBAAA,CAAAlC,CAAA,EAAAiC,iCAAA,CAAAhC,CAAA,KAAAmB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,GAAA8B,OAAA,WAAA5B,CAAA,IAAAe,uBAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAgB,gCAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA,IAhB9C;AACA;AACA;AAgBA,IAAI,CAACmC,MAAM,CAACC,UAAU,EAAE;EACtB,IAAAC,gBAAA,CAAA3B,OAAA,EAAsByB,MAAM,EAAE,YAAY,EAAE;IAC1CG,KAAK,EAAEF,kBAAU;IACjBG,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ;AAEAC,QAAQ,CAAC,sBAAsB,EAAE,YAAM;EACrC,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAA;IAAA,OAASN,MAAM,CAACC,UAAU,CAAC,CAAC;EAAA;EAE5CI,QAAQ,CAAC,yBAAyB,EAAE,YAAM;IACxCE,SAAS,CAAC,YAAM;MACd,IAAAC,gCAAyB,EAAC,CAAC;IAC7B,CAAC,CAAC;IAEFC,EAAE,CAAC,0DAA0D,EAAE,YAAM;MACnE,IAAMC,eAAe,GAAG,IAAIC,4BAAS,CAAC,CAAC;MACvC,IAAMC,QAAQ,GAAG,IAAAC,8BAAuB,EAACH,eAAe,CAAC;MAEzDI,sBAAM,CAACC,UAAU,CAACH,QAAQ,EAAEI,cAAY,CAAC;MACzCF,sBAAM,CAACG,SAAS,CAACL,QAAQ,CAACM,MAAM,EAAEC,eAAY,CAACC,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEFX,EAAE,CAAC,0CAA0C,EAAE,YAAM;MACnD,IAAMC,eAAe,GAAG,IAAIC,4BAAS,CAAC,CAAC;MACvC,IAAMU,cAAc,GAAG;QACrBC,2BAA2B,EAAE,CAAC;QAC9BC,gBAAgB,EAAE;MACpB,CAAC;MAED,IAAMX,QAAQ,GAAG,IAAAC,8BAAuB,EAACH,eAAe,EAAEW,cAAc,CAAC;MAEzEP,sBAAM,CAACC,UAAU,CAACH,QAAQ,EAAEI,cAAY,CAAC;MACzCF,sBAAM,CAACG,SAAS,CAACL,QAAQ,CAACM,MAAM,EAAA1B,aAAA,CAAAA,aAAA,KAC3B2B,eAAY,CAACC,YAAY,GACzBC,cAAc,CAClB,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhB,QAAQ,CAAC,cAAc,EAAE,YAAM;IAC7B,IAAIe,YAAY;IAChB,IAAII,aAAa;IACjB,IAAIC,cAAc;IAClB,IAAIC,eAAe;IACnB,IAAIC,KAAK;IAET,IAAMC,wBAAwB,GAAG,IAAAC,UAAA,CAAAtD,OAAA,EAAe;MAC9CuD,EAAE,EAAExB,UAAU,CAAC,CAAC;MAChByB,IAAI,EAAE;QACJC,SAAS,EAAE,qBAAqB;QAChCC,KAAK,EAAE;UACLH,EAAE,EAAE;QACN,CAAC;QACDI,cAAc,EAAE5B,UAAU,CAAC;MAC7B,CAAC;MACD6B,SAAS,EAAE,IAAAC,IAAA,CAAA7D,OAAA,EAAS,CAAC;MACrB8D,UAAU,YAAAC,MAAA,CAAYhC,UAAU,CAAC,CAAC,OAAAgC,MAAA,CAAI,IAAAF,IAAA,CAAA7D,OAAA,EAAS,CAAC;IAClD,CAAC,CAAC;IAEF,IAAMgE,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAsD;MAAA,IAAAC,IAAA,GAAA/C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAgD,SAAA,GAAAhD,SAAA,MAAP,CAAC,CAAC;QAAAiD,eAAA,GAAAF,IAAA,CAA5CG,UAAU;QAAVA,UAAU,GAAAD,eAAA,cAAG,GAAG,GAAAA,eAAA;QAAAE,kBAAA,GAAAJ,IAAA,CAAEK,aAAa;QAAbA,aAAa,GAAAD,kBAAA,cAAG,IAAI,GAAAA,kBAAA;MAC/D,IAAME,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACxB,aAAa,CAACyB,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC;MAEnE3B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;QAC5BrB,IAAI,EAAE,IAAAF,UAAA,CAAAtD,OAAA,EAAe;UACnB8E,IAAI,EAAE,gBAAgB;UACtBC,OAAO,EAAEC,wBAAa,CAACC,IAAI;UAC3BnB,UAAU,EAAES,WAAW,CAACT,UAAU;UAClCM,UAAU,EAAVA,UAAU;UACVE,aAAa,EAAbA;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC;IAED,IAAMY,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,OAAO;MAAA,IAAE1B,SAAS,GAAAvC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAgD,SAAA,GAAAhD,SAAA,MAAG,cAAc;MAAA,OAAM;QACjEsC,IAAI,EAAE;UACJsB,IAAI,EAAE,aAAa;UACnBK,OAAO,EAAPA,OAAO;UACP3B,IAAI,EAAE;YACJC,SAAS,EAATA;UACF;QACF;MACF,CAAC;IAAA,CAAC;IAEF,IAAM2B,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA;MAAA,OAAU;QACjCC,KAAK,EAAEC,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;QAC9CC,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;MACjC,CAAC;IAAA,CAAC;IAEF,IAAMK,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,OAAO;MAAA,OACrCA,OAAO,CAACC,QAAQ,CAAC,CAAC,CAACjF,MAAM,CAAC,UAACN,IAAI;QAAA,OAAKA,IAAI,CAACqE,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;MAAA,EAAC,CAACzD,MAAM;IAAA;IAEtE4E,UAAU,CAAC,YAAM;MACfC,IAAI,CAACC,aAAa,CAAC;QAACC,SAAS,EAAE,CAAC,UAAU;MAAC,CAAC,CAAC;MAC7C/C,eAAe,GAAG,IAAI;IACxB,CAAC,CAAC;IAEF4C,UAAU,CAAC,YAAM;MACf3C,KAAK,GAAG,IAAIhB,4BAAS,CAAC,CAAC;MACvBgB,KAAK,CAAC+C,WAAW,GAAG;QAClBC,OAAO,EAAEd,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;QAChDW,YAAY,EAAEf,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAChCC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC;UACdY,QAAQ,WAARA,QAAQA,CAAA,EAAG;YACT,OAAO,aAAa;UACtB;QACF,CAAC,CACH;MACF,CAAC;MACDlD,KAAK,CAACmD,QAAQ,CAACC,MAAM,GAAG;QACtBC,UAAU,EAAE,IAAI;QAChBC,QAAQ,EAAEpB,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;QACjDU,OAAO,EAAEd,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;QAChDiB,YAAY,EAAE,kBAAkB;QAChCC,eAAe,EAAEtB,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5EmB,oBAAoB,EAAEvB,cAAK,CACxBC,IAAI,CAAC,CAAC,CACNC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,iCAAiC,CAAC;MAC/D,CAAC;MACDtC,KAAK,CAACmD,QAAQ,CAACO,QAAQ,GAAG;QACxBC,2BAA2B,EAAEzB,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACxFsB,aAAa,EAAE1B,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;QACtDuB,sBAAsB,EAAE3B,cAAK,CAACC,IAAI,CAAC,CAAC;QACpC2B,eAAe,EAAE5B,cAAK,CAACC,IAAI,CAAC,CAAC;QAC7B4B,WAAW,EAAE7B,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,IAAI,CAAC;MACzD,CAAC;MACDtC,KAAK,CAACmD,QAAQ,CAACa,OAAO,CAACC,mBAAmB,GAAG/B,cAAK,CAACC,IAAI,CAAC,CAAC;MACzDnC,KAAK,CAACU,UAAU,GAAG,gBAAgB;MACnCV,KAAK,CAACkE,MAAM,GAAGC,OAAO;MAEtBjC,cAAK,CAACC,IAAI,CAACiC,eAAM,EAAE,yBAAyB,CAAC,CAACC,SAAS,CACrD;QAAA,OACE,YAAmB;UAAA,SAAAC,IAAA,GAAAxG,SAAA,CAAAC,MAAA,EAANyD,IAAI,OAAA+C,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;YAAJhD,IAAI,CAAAgD,IAAA,IAAA1G,SAAA,CAAA0G,IAAA;UAAA;UACf3E,aAAa,OAAA4E,WAAA,CAAA7H,OAAA,EAAO8H,gCAAa,EAAIlD,IAAI,CAAC;UAE1C,OAAO3B,aAAa;QACtB,CAAC;MAAA,CACL,CAAC;MAED,IAAM8E,QAAQ,GAAGP,eAAM,CAACQ,SAAS,CAACC,IAAI;MAEtC/E,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAACP,SAAS,CAAC,YAAmB;QAAA,SAAAS,KAAA,GAAAhH,SAAA,CAAAC,MAAA,EAANyD,IAAI,OAAA+C,KAAA,CAAAO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJvD,IAAI,CAAAuD,KAAA,IAAAjH,SAAA,CAAAiH,KAAA;QAAA;QAC/E,IAAMC,OAAO,GAAG,IAAAC,MAAA,CAAArI,OAAA,EAAc+H,QAAQ,EAAE,IAAI,EAAEnD,IAAI,CAAC;QAEnD0D,OAAO,CAACC,QAAQ,CAAC,YAAM;UACrBtF,aAAa,CAACgF,IAAI,CAAC,CAAC;UACpB;UACAK,OAAO,CAACC,QAAQ,CAAC,YAAM;YACrBvE,gBAAgB,CAAC,CAAC;UACpB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,OAAOoE,OAAO;MAChB,CAAC,CAAC;MAEFvF,YAAY,GAAG,IAAIJ,cAAY,CAACW,KAAK,EAAAnC,aAAA,KAAM2B,eAAY,CAACC,YAAY,CAAC,CAAC;MAErEA,YAAY,CAASyE,MAAM,GAAG;QAC7BkB,KAAK,EAAExC,IAAI,CAACyC,EAAE,CAAC,CAAC;QAChBC,KAAK,EAAE1C,IAAI,CAACyC,EAAE,CAAC,CAAC;QAChBE,IAAI,EAAE3C,IAAI,CAACyC,EAAE,CAAC,CAAC;QACfG,GAAG,EAAE5C,IAAI,CAACyC,EAAE,CAAC,CAAC;QACdI,IAAI,EAAE7C,IAAI,CAACyC,EAAE,CAAC;MAChB,CAAC;IACH,CAAC,CAAC;IAEFzG,SAAS,kBAAA8G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAC,SAAAC,QAAA;MAAA,IAAAC,EAAA;MAAA,OAAAH,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YACR,IAAInG,eAAe,EAAE;cACnB6C,IAAI,CAACuD,aAAa,CAAC,CAAC;cACpBpG,eAAe,GAAG,KAAK;YACzB;;YAEA;YAAA,KACIN,YAAY;cAAAuG,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAE,IAAA;YAAA,OAENzG,YAAY,CAAC2G,UAAU,CAAC,CAAC;UAAA;YAAAJ,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAH,EAAA,GAAAE,QAAA;UAAA;YAMnC;YACA,IAAInG,aAAa,IAAI,OAAOA,aAAa,CAACoC,KAAK,KAAK,UAAU,EAAE;cAC9D,IAAI;gBACFpC,aAAa,CAACoC,KAAK,CAAC,CAAC;cACvB,CAAC,CAAC,OAAO/F,CAAC,EAAE;gBACV;cAAA;YAEJ;YAEA,IAAI4D,cAAc,EAAE;cAClBA,cAAc,CAACuG,OAAO,CAAC,CAAC;YAC1B;YAEA,IAAIjC,eAAM,CAACkC,uBAAuB,CAACD,OAAO,EAAE;cAC1CjC,eAAM,CAACkC,uBAAuB,CAACD,OAAO,CAAC,CAAC;YAC1C;;YAEA;YAAAL,QAAA,CAAAE,IAAA;YAAA,OACM,IAAA7D,QAAA,CAAAzF,OAAA,CAAY,UAAC0F,OAAO,EAAK;cAC7BiE,UAAU,CAACjE,OAAO,EAAE,EAAE,CAAC;YACzB,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA0D,QAAA,CAAAQ,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA,CACH,GAAC;IAEFnH,QAAQ,CAAC,YAAY,EAAE,YAAM;MAC3BI,EAAE,CAAC,6BAA6B,EAAE,YAAM;QACtCkB,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACC,UAAU,GAAG,KAAK;QACxClE,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACE,QAAQ,CAAC;QAChD,IAAM0B,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;QAEtC,OAAO1B,OAAO,CAAC2B,IAAI,CAAC,YAAM;UACxBxH,sBAAM,CAACyH,UAAU,CAAC5G,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACE,QAAQ,CAAC;QACnD,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFxE,EAAE,CAAC,4CAA4C,EAAE,YAAM;QACrD,IAAMkG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;QAEtCvH,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;QACvE3H,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACuH,UAAU,EAAE,4BAA4B,CAAC;QACpEnH,aAAa,CAACgF,IAAI,CAAC,CAAC;QAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;UACxBxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE7H,sBAAM,CAAC8H,UAAU,CAACnH,cAAc,EAAE,kBAAkB,EAAEoC,cAAK,CAACgF,KAAK,CAACC,GAAG,CAAC;QACxE,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFzI,QAAQ,CAAC,0BAA0B,EAAE,YAAM;QACzC,IAAM0I,KAAK,GAAG,SAARA,KAAKA,CAAA,EAAS;UAClBtH,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC;UACrD9E,cAAc,CAACsC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIC,uBAAe,CAAC,CAAC,CAAC,CAAC;UAC7DnI,sBAAM,CAACsH,SAAS,CAACrC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAEvC,IAAMG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;UAEtC,OAAO,IAAAa,oBAAW,EAAC,CAAC,CAAC,CAClBZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAExC,OAAO,IAAA0C,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACV/D,IAAI,CAAC4E,mBAAmB,CAAC/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAE9D,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACsI,WAAW,CAACrD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YACzCjC,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAElE,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACuI,YAAY,CAACtD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAC1CjC,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAElE,OAAOT,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC;UACnC,CAAC,CAAC,CACD2B,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACuI,YAAY,CAACtD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAC5C,CAAC,CAAC;QACN,CAAC;;QAED;QACA,IAAA+C,2BAAa,EAAC9I,EAAE,CAAC,CAAC,+DAA+D,EAAE,YAAM;UACvFW,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAClCpI,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UAEnD,OAAOyH,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;;QAEF;QACA;QACA,IAAAQ,2BAAa,EAAC9I,EAAE,CAAC,CAAC,2DAA2D,EAAE,YAAM;UACnFW,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAClCpI,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UAEnDG,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC;UACrD9E,cAAc,CAACsC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIC,uBAAe,CAAC,CAAC,CAAC,CAAC;UAC7DnI,sBAAM,CAACsH,SAAS,CAACrC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAEvC,IAAMG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;UAEtC,OAAO,IAAAa,oBAAW,EAAC,CAAC,CAAC,CAClBZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAExC,OAAO1F,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC;UACnC,CAAC,CAAC,CACD2B,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAC1C,CAAC,CAAC;QACN,CAAC,CAAC;;QAEF;QACA,IAAA+C,2BAAa,EAAC9I,EAAE,CAAC,CAAC,oDAAoD,EAAE,YAAM;UAC5EW,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAClCpI,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UAEnD,OAAOyH,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;;QAEF;QACA,IAAAQ,2BAAa,EAAC9I,EAAE,CAAC,CAAC,oDAAoD,EAAE,YAAM;UAC5EW,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UACnDF,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAElC,OAAOT,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;;QAEF;QACA,IAAAQ,2BAAa,EAAC9I,EAAE,CAAC,CAAC,oDAAoD,EAAE,YAAM;UAC5EW,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UACnDF,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAClCpI,YAAY,CAACqI,gBAAgB,GAAG,IAAI;UAEpC,OAAOV,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFtI,EAAE,CAAC,qCAAqC,EAAE,YAAM;QAC9C,IAAMkG,OAAO,GAAG3C,QAAA,CAAAzF,OAAA,CAAQmL,GAAG,CAAC,CAC1BtI,YAAY,CAACiH,OAAO,CAAC,CAAC,EACtBjH,YAAY,CAACiH,OAAO,CAAC,CAAC,EACtBjH,YAAY,CAACiH,OAAO,CAAC,CAAC,EACtBjH,YAAY,CAACiH,OAAO,CAAC,CAAC,CACvB,CAAC;QAEF7G,aAAa,CAACgF,IAAI,CAAC,CAAC;QAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;UACxBxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC;;MAEF;MACA,IAAA+C,2BAAa,EAAClJ,QAAQ,CAAC,CAAC,2BAA2B,EAAE,YAAM;QACzDI,EAAE,CAAC,yBAAyB,EAAE,YAAM;UAClCW,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UACnDG,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC;UACrD9E,cAAc,CAACsC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIC,uBAAe,CAAC;YAACU,IAAI,EAAE;UAAI,CAAC,CAAC,CAAC,CAAC;UACzE;UACAlI,cAAc,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,IAAIoC,gCAAa,CAAC,CAAC,CAAC,CAAC;UACtEvF,sBAAM,CAACsH,SAAS,CAACrC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAEvC,IAAMG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;UAEtC,OAAO,IAAAa,oBAAW,EAAC,CAAC,CAAC,CAClBZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;;YAExC;YACA;YACA,OAAO,IAAA0C,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACV/D,IAAI,CAAC4E,mBAAmB,CAAC/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAE9D,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACsI,WAAW,CAACrD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YACzCjC,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAElE,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACuI,YAAY,CAACtD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAC1CjC,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAElE,OAAOoF,OAAO;UAChB,CAAC,CAAC,CACD2B,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACuI,YAAY,CAACtD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAC1CjC,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;YAElE,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;UACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;YACVxH,sBAAM,CAACuI,YAAY,CAACtD,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;UAC5C,CAAC,CAAC;QACN,CAAC,CAAC;QAEFnG,QAAQ,CAAC,mBAAmB,EAAE,YAAM;UAClCI,EAAE,CAAC,mBAAmB,EAAE,YAAM;YAC5B8D,IAAI,CAACuD,aAAa,CAAC,CAAC;YACpBpG,eAAe,GAAG,KAAK;YACvBD,cAAc,CAACuG,OAAO,CAAC,CAAC;YACxBvG,cAAc,GAAGoC,cAAK,CACnBC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAC9BxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIa,kBAAU,CAAC;cAACF,IAAI,EAAE;YAAI,CAAC,CAAC,CAAC,CAAC;YAExD,OAAO7I,sBAAM,CAACwI,UAAU,CAAClI,YAAY,CAACiH,OAAO,CAAC,CAAC,CAAC;UAClD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFhI,QAAQ,CAAC,wBAAwB,EAAE,YAAM;UACvCI,EAAE,CAAC,2BAA2B,EAAE,YAAM;YACpCW,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;YACnDG,cAAc,CAACuG,OAAO,CAAC,CAAC;YACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAACxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;YAChFxC,cAAc,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIc,uBAAe,CAAC;cAACH,IAAI,EAAE;YAAI,CAAC,CAAC,CAAC,CAAC;YACnF7I,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAAC+C,WAAW,CAACC,OAAO,CAAC;YAC3C7D,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACJ,OAAO,CAAC;YAC/C,IAAMgC,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;YAEtC,OAAO,IAAAa,oBAAW,EAAC,CAAC,CAAC,CAACZ,IAAI,CAAC,YAAM;cAC/BxH,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAAC+C,WAAW,CAACC,OAAO,CAAC;cAC3C7D,sBAAM,CAACiJ,MAAM,CAACpI,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACJ,OAAO,CAAC;cAC5CJ,IAAI,CAAC4E,mBAAmB,CAAC,IAAI,CAAC;cAE9B,OAAOxC,OAAO;YAChB,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFtG,QAAQ,CAAC,sBAAsB,EAAE,YAAM;UACrCI,EAAE,CAAC,0BAA0B,EAAE,YAAM;YACnCW,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;YACnDG,cAAc,CAACuG,OAAO,CAAC,CAAC;YACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAACxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;YAChFxC,cAAc,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC7F,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIgB,qBAAa,CAAC;cAACL,IAAI,EAAE;YAAI,CAAC,CAAC,CAAC,CAAC;YACjF7I,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAAC+C,WAAW,CAACC,OAAO,CAAC;YAC3C7D,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACJ,OAAO,CAAC;YAC/C,IAAMgC,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;YAEtC,OAAO,IAAAa,oBAAW,EAAC,CAAC,CAAC,CAACZ,IAAI,CAAC,YAAM;cAC/BxH,sBAAM,CAACiJ,MAAM,CAACpI,KAAK,CAAC+C,WAAW,CAACC,OAAO,CAAC;cACxC7D,sBAAM,CAACsH,SAAS,CAACzG,KAAK,CAACmD,QAAQ,CAACC,MAAM,CAACJ,OAAO,CAAC;cAC/CJ,IAAI,CAAC4E,mBAAmB,CAAC,IAAI,CAAC;cAE9B,OAAOxC,OAAO;YAChB,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFtG,QAAQ,CAAC,kBAAkB,EAAE,YAAM;UACjCI,EAAE,CAAC,mBAAmB,EAAE,YAAM;YAC5B8D,IAAI,CAACuD,aAAa,CAAC,CAAC;YACpBpG,eAAe,GAAG,KAAK;YACvBD,cAAc,CAACuG,OAAO,CAAC,CAAC;YACxBvG,cAAc,GAAGoC,cAAK,CACnBC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAC9BxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIiB,iBAAS,CAAC;cAACN,IAAI,EAAE;YAAI,CAAC,CAAC,CAAC,CAAC;YAEvD,OAAO7I,sBAAM,CAACwI,UAAU,CAAClI,YAAY,CAACiH,OAAO,CAAC,CAAC,CAAC;UAClD,CAAC,CAAC;QACJ,CAAC,CAAC;;QAEF;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF,CAAC,CAAC;MAEFhI,QAAQ,CAAC,gBAAgB,EAAE,YAAM;QAC/BI,EAAE,CAAC,sBAAsB,EAAE;UAAA,OACzBW,YAAY,CAACiH,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,YAAM;YAChCxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;YAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;YACzE,IAAMhC,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;YAEtCvH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;YAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;YAEzE,OAAOhC,OAAO;UAChB,CAAC,CAAC;QAAA,EAAC;;QAEL;QACA,IAAA4C,2BAAa,EAAC9I,EAAE,CAAC,CAAC,yCAAyC,EAAE,YAAM;UACjE,IAAMkG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;;UAEtC;UACA7G,aAAa,CAACgF,IAAI,CAAC,CAAC;UAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC;YAAA,OAClB,IAAAY,oBAAW,EAAC,CAAC,CAAC,CACXZ,IAAI,CAAC,YAAM;cACV/D,IAAI,CAAC4E,mBAAmB,CAAC,CAAC,GAAG/H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC;cAElE,OAAO,IAAA2H,oBAAW,EAAC,CAAC,CAAC;YACvB,CAAC,CAAC,CACDZ,IAAI,CAAC,YAAM;cACVxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YAC1C,CAAC,CAAC;UAAA,CACN,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFnG,QAAQ,CAAC,+BAA+B,EAAE,YAAM;QAC9CI,EAAE,CAAC,4CAA4C,EAAE,YAAM;UACrD,IAAMyE,YAAY,GAAG,sBAAsB;UAC3C,IAAMyB,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAACnD,YAAY,CAAC;UAElDpE,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;UACvE3H,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACuH,UAAU,EAAE,4BAA4B,CAAC;UACpEnH,aAAa,CAACgF,IAAI,CAAC,CAAC;UAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;YACxBxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;YAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;YACzE7H,sBAAM,CAAC8H,UAAU,CAAC7C,eAAM,CAACQ,SAAS,CAACC,IAAI,EAAE,sBAAsB,EAAE3C,cAAK,CAACgF,KAAK,CAACC,GAAG,CAAC;UACnF,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFzI,QAAQ,CAAC,qDAAqD,EAAE,YAAM;QACpEI,EAAE,CAAC,uDAAuD,EAAE,YAAM;UAChE,IAAMyJ,UAAU,GAAGrG,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,oBAAoB,CAAC;UAChEA,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UACnD,IAAMqF,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,kBAAkB,CAAC;UAExDvH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACuH,UAAU,EAAE,4BAA4B,CAAC;UACpEnH,aAAa,CAACgF,IAAI,CAAC,CAAC;UAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;YAAA,IAAA8B,qBAAA;YACxBtJ,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;YAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;YACzE7H,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqI,gBAAgB,EAAE,0BAA0B,CAAC;YACxE3I,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YACxC1F,sBAAM,CAACyH,UAAU,CAAC2B,UAAU,CAAC;YAC7BpJ,sBAAM,CAACuJ,WAAW,EAAAD,qBAAA,GAACF,UAAU,CAACI,SAAS,CAACnH,IAAI,CAAC,CAAC,CAAC,cAAAiH,qBAAA,uBAA5BA,qBAAA,CAA8B9I,2BAA2B,CAAC;YAC7E4I,UAAU,CAAClC,OAAO,CAAC,CAAC;UACtB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFvH,EAAE,CAAC,iDAAiD,EAAE,YAAM;UAC1D8D,IAAI,CAACuD,aAAa,CAAC,CAAC;UACpBpG,eAAe,GAAG,KAAK;UACvBD,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CACnBC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAC9BxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIC,uBAAe,CAAC;YAACU,IAAI,EAAE;UAAI,CAAC,CAAC,CAAC,CAAC;UAC7DvI,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UAEnD,IAAMqF,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,kBAAkB,CAAC;UAExD,OAAOvH,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC,CAAC2B,IAAI,CAAC,YAAM;YAC3CxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YACxC1F,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;UACzE,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFhI,EAAE,CAAC,0EAA0E,EAAE,YAAM;UACnF,IAAMyJ,UAAU,GAAGrG,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,oBAAoB,CAAC;UAChEA,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UAEnD,IAAMqF,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,kBAAkB,CAAC;UAExD7G,aAAa,CAACgF,IAAI,CAAC,CAAC;UAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;YAAA,IAAAiC,sBAAA;YACxBzJ,sBAAM,CAACyH,UAAU,CAAC2B,UAAU,CAAC;YAC7BpJ,sBAAM,CAACuJ,WAAW,EAAAE,sBAAA,GAACL,UAAU,CAACI,SAAS,CAACnH,IAAI,CAAC,CAAC,CAAC,cAAAoH,sBAAA,uBAA5BA,sBAAA,CAA8BjJ,2BAA2B,CAAC;YAC7E4I,UAAU,CAAClC,OAAO,CAAC,CAAC;UACtB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFvH,EAAE,CAAC,4DAA4D,EAAE,YAAM;UACrE8D,IAAI,CAACuD,aAAa,CAAC,CAAC;UACpBpG,eAAe,GAAG,KAAK;UACvBN,YAAY,CAACqI,gBAAgB,GAAG,IAAI;UACpCrI,YAAY,CAACoJ,SAAS,GAAG,kBAAkB;UAC3CpJ,YAAY,CAACF,MAAM,CAACI,2BAA2B,GAAG,CAAC;UACnDF,YAAY,CAACF,MAAM,CAACsI,UAAU,GAAG,CAAC;UAElC/H,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CACnBC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC,CAC9BxC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIC,uBAAe,CAAC;YAACU,IAAI,EAAE;UAAI,CAAC,CAAC,CAAC,CAAC;UAE7D,IAAMhD,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,kBAAkB,CAAC;UAExD,OAAOvH,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC,CAAC2B,IAAI,CAAC,YAAM;YAC3CxH,sBAAM,CAACyH,UAAU,CAACxC,eAAM,CAACQ,SAAS,CAACC,IAAI,CAAC;YACxC1F,sBAAM,CAAC2J,KAAK,CAACrJ,YAAY,CAACoJ,SAAS,EAAE,kBAAkB,CAAC;YACxD1J,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqI,gBAAgB,EAAE,2BAA2B,CAAC;UAC5E,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFpJ,QAAQ,CAAC,uBAAuB,EAAE,YAAM;MACtCE,SAAS,CAAC,YAAM;QACd,OAAOoB,KAAK,CAACT,MAAM,CAACwJ,0BAA0B;MAChD,CAAC,CAAC;MAEFjK,EAAE,CAAC,4CAA4C,EAAE,YAAM;QACrD,IAAMkK,YAAY,GAAG,wBAAwB;QAE7ChJ,KAAK,CAACT,MAAM,CAACwJ,0BAA0B,GAAG;UAACE,KAAK,EAAE;YAACC,KAAK,EAAE;cAACC,IAAI,EAAEH;YAAY;UAAC;QAAC,CAAC;QAChF,IAAMhE,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;QAEtCvH,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;QACvE3H,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACuH,UAAU,EAAE,4BAA4B,CAAC;QACpEnH,aAAa,CAACgF,IAAI,CAAC,CAAC;QAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;UACxBxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE7H,sBAAM,CAAC8H,UAAU,CACfnH,cAAc,EACd,kBAAkB,EAClBoC,cAAK,CAACgF,KAAK,CAACpK,GAAG,CACb,OAAO,EACPoF,cAAK,CAACgF,KAAK,CAACpK,GAAG,CAAC,OAAO,EAAEoF,cAAK,CAACgF,KAAK,CAACpK,GAAG,CAAC,MAAM,EAAEkM,YAAY,CAAC,CAChE,CACF,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFlK,EAAE,CAAC,8CAA8C,EAAE,YAAM;QACvD,IAAMkG,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;QAEtCvH,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;QACvE3H,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACuH,UAAU,EAAE,4BAA4B,CAAC;QACpEnH,aAAa,CAACgF,IAAI,CAAC,CAAC;QAEpB,OAAOG,OAAO,CAAC2B,IAAI,CAAC,YAAM;UACxBxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE7H,sBAAM,CAAC8H,UAAU,CAACnH,cAAc,EAAE,kBAAkB,EAAEoC,cAAK,CAACgF,KAAK,CAAC;YAAC+B,KAAK,EAAEnI;UAAS,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFpC,QAAQ,CAAC,eAAe,EAAE,YAAM;MAC9BI,EAAE,CAAC,2BAA2B,EAAE;QAAA,OAC9BW,YAAY,CACTiH,OAAO,CAAC,CAAC,CACTC,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE,IAAMhC,OAAO,GAAGvF,YAAY,CAAC2G,UAAU,CAAC,CAAC;UAEzCvG,aAAa,CAAC4B,IAAI,CAAC,OAAO,EAAE;YAC1BuG,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC,CAAC;UAEF,OAAOpE,OAAO;QAChB,CAAC,CAAC,CACD2B,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;UACvE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE7H,sBAAM,CAACuJ,WAAW,CAChBjJ,YAAY,CAACI,aAAa,EAC1B,4CACF,CAAC;QACH,CAAC,CAAC;MAAA,EAAC;MAEPf,EAAE,CAAC,0CAA0C,EAAE;QAAA,OAC7CW,YAAY,CACTiH,OAAO,CAAC,CAAC,CACTC,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE,IAAMhC,OAAO,GAAGvF,YAAY,CAAC2G,UAAU,CAAC,CAAC;UAEzCvG,aAAa,CAAC4B,IAAI,CAAC,OAAO,EAAE;YAC1BuG,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC,CAAC;UAEF,OAAOpE,OAAO;QAChB,CAAC,CAAC,CACD2B,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,EAAE,+BAA+B,CAAC;UACvE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UACzE7H,sBAAM,CAACuJ,WAAW,CAChBjJ,YAAY,CAACI,aAAa,EAC1B,4CACF,CAAC;QACH,CAAC,CAAC;MAAA,EAAC;MAEPf,EAAE,CAAC,+BAA+B,EAAE,YAAM;QACxC,IAAM0J,GAAG,GAAGtG,cAAK,CAACsG,GAAG,CAAC,CAAC;QAEvB/I,YAAY,CAAC4J,EAAE,CAAC,2BAA2B,EAAEb,GAAG,CAAC;QAEjD,OAAO/I,YAAY,CAChBiH,OAAO,CAAC,CAAC,CACTC,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,EAAE,2BAA2B,CAAC;UAClE3H,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACuH,UAAU,EAAE,gCAAgC,CAAC;UAEzE7H,sBAAM,CAACsH,SAAS,CAAC+B,GAAG,CAAC;UACrB3I,aAAa,CAACyJ,UAAU,GAAG,CAAC;UAC5BzJ,aAAa,CAAC4B,IAAI,CAAC,MAAM,CAAC;UAC1B5B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;YAACrB,IAAI,EAAEH;UAAwB,CAAC,CAAC;QACjE,CAAC,CAAC,CACD0G,IAAI,CAAC,YAAM;UACVxH,sBAAM,CAACyH,UAAU,CAAC4B,GAAG,CAAC;UAEtB,IAAMxD,OAAO,GAAGvF,YAAY,CAAC2G,UAAU,CAAC,CAAC;UAEzCvG,aAAa,CAACyJ,UAAU,GAAG,CAAC;UAC5BzJ,aAAa,CAAC4B,IAAI,CAAC,MAAM,CAAC;UAC1B5B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;YAACrB,IAAI,EAAEH;UAAwB,CAAC,CAAC;UAC/DJ,aAAa,CAAC4B,IAAI,CAAC,OAAO,EAAE;YAC1BuG,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC,CAAC;UACFvJ,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;YAACrB,IAAI,EAAEH;UAAwB,CAAC,CAAC;UAE/D,OAAO+E,OAAO;QAChB,CAAC,CAAC,CAED2B,IAAI,CAAC,YAAM;UACV9G,aAAa,CAACyJ,UAAU,GAAG,CAAC;UAC5BzJ,aAAa,CAAC4B,IAAI,CAAC,MAAM,CAAC;UAC1B5B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;YAACrB,IAAI,EAAEH;UAAwB,CAAC,CAAC;UAC/Dd,sBAAM,CAACyH,UAAU,CAAC4B,GAAG,CAAC;QACxB,CAAC,CAAC;MACN,CAAC,CAAC;MAEF9J,QAAQ,CAAC,6CAA6C,EAAE,YAAM;QAC5DI,EAAE,CAAC,0CAA0C,EAAE,YAAM;UACnDgB,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC;UACrD9E,cAAc,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC7F,OAAO;UAC9B;UACA;UACA,IAAAmF,oBAAW,EAAC,CAAC,GAAG9H,YAAY,CAACF,MAAM,CAACK,gBAAgB;UAClD;UACA;UAAA,CACC+G,IAAI,CAAC;YAAA,OAAMtE,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC;UAAA,EACjC,CAAC;UACD,IAAM0C,OAAO,GAAGvF,YAAY,CAACiH,OAAO,CAAC,CAAC;;UAEtC;UACA,OAAO,IAAAa,oBAAW,EAAC9H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC,CAAC+G,IAAI,kBAAAjB,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAC,SAAA2D,SAAA;YAAA,OAAA5D,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAyD,SAAA;cAAA,kBAAAA,SAAA,CAAAvD,IAAA,GAAAuD,SAAA,CAAAtD,IAAA;gBAAA;kBAC5D;kBACA;kBACA/G,sBAAM,CAACsK,SAAS,CAAChK,YAAY,CAACiK,WAAW,EAAE,yCAAyC,CAAC;kBACrFvK,sBAAM,CAACsK,SAAS,CAAChK,YAAY,CAACkK,MAAM,EAAE,oCAAoC,CAAC;kBAC3E;kBACA;kBACAlK,YAAY,CAAC2G,UAAU,CAAC,CAAC;kBACzBjH,sBAAM,CAACuJ,WAAW,CAChBjJ,YAAY,CAACiK,WAAW,EACxB,2CACF,CAAC;kBACD;kBACAvK,sBAAM,CAACsK,SAAS,CAAChK,YAAY,CAACkK,MAAM,EAAE,oCAAoC,CAAC;kBAACH,SAAA,CAAAtD,IAAA;kBAAA,OAEtE/G,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC;gBAAA;gBAAA;kBAAA,OAAAwE,SAAA,CAAAhD,IAAA;cAAA;YAAA,GAAA+C,QAAA;UAAA,CACjC,GAAC;QACJ,CAAC,CAAC;QAEFzK,EAAE,CAAC,iDAAiD,EAAE,YAAM;UAC1DgB,cAAc,CAACuG,OAAO,CAAC,CAAC;UACxBvG,cAAc,GAAGoC,cAAK,CAACC,IAAI,CAACiC,eAAM,CAACQ,SAAS,EAAE,MAAM,CAAC;UACrD9E,cAAc,CAACsC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;UAEzC,IAAI8G,MAAM;UAEV3J,YAAY,CAACiK,WAAW,GAAG5I,SAAS;UAEpC,IAAMkE,OAAO,GAAGvF,YAAY,CAACmK,iBAAiB,CAAC,kBAAkB,EAAE,UAACC,OAAO,EAAK;YAC9ET,MAAM,GAAGS,OAAO;UAClB,CAAC,CAAC;UAEF,OAAO,IAAAtC,oBAAW,EAAC9H,YAAY,CAACF,MAAM,CAACK,gBAAgB,CAAC,CAAC+G,IAAI,CAAC,YAAM;YAClExH,sBAAM,CAAC+H,KAAK,CAACkC,MAAM,CAACU,OAAO,EAAE,wDAAwD,CAAC;;YAEtF;YACA,OAAO3K,sBAAM,CAACwI,UAAU,CAAC3C,OAAO,CAAC;UACnC,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFtG,QAAQ,CAAC,mBAAmB,EAAE,YAAM;MAClCiE,UAAU,CAAC,YAAM;QACflD,YAAY,CAACF,MAAM,CAACwK,kBAAkB,GAAG,GAAG;MAC9C,CAAC,CAAC;MAEFjL,EAAE,CAAC,iDAAiD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAoE,SAAA;QAAA,IAAAC,cAAA,EAAAC,cAAA,EAAAC,QAAA;QAAA,OAAAxE,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAqE,SAAA;UAAA,kBAAAA,SAAA,CAAAnE,IAAA,GAAAmE,SAAA,CAAAlE,IAAA;YAAA;cAAAkE,SAAA,CAAAlE,IAAA;cAAA,OAC9CzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtBuD,cAAc,GAAGxK,YAAY,CAAC4K,cAAc,CAAC;gBACjD3I,IAAI,EAAE,MAAM;gBACZtB,IAAI,EAAE;kBACJkK,KAAK,EAAE;gBACT;cACF,CAAC,CAAC;cAAAF,SAAA,CAAAlE,IAAA;cAAA,OAEI,IAAAqB,oBAAW,EAAC,CAAC;YAAA;cAEb2C,cAAc,GAAG9I,IAAI,CAACC,KAAK,CAACxB,aAAa,CAACyB,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC;cACtErC,sBAAM,CAAC2J,KAAK,CAACoB,cAAc,CAAC9J,IAAI,CAACkK,KAAK,EAAE,MAAM,CAAC;cAE/CzK,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;gBAC5BrB,IAAI,EAAE,IAAAF,UAAA,CAAAtD,OAAA,EAAe;kBACnB8E,IAAI,EAAE,gBAAgB;kBACtBC,OAAO,EAAE,MAAM;kBACfjB,UAAU,EAAEwJ,cAAc,CAACxJ,UAAU;kBACrCM,UAAU,EAAE,GAAG;kBACfE,aAAa,EAAE;gBACjB,CAAC;cACH,CAAC,CAAC;cAACkJ,SAAA,CAAAlE,IAAA;cAAA,OAEoB+D,cAAc;YAAA;cAA/BE,QAAQ,GAAAC,SAAA,CAAAG,IAAA;cAEdpL,sBAAM,CAAC2J,KAAK,CAACqB,QAAQ,CAACzI,IAAI,EAAE,gBAAgB,CAAC;cAC7CvC,sBAAM,CAAC2J,KAAK,CAACqB,QAAQ,CAACxI,OAAO,EAAE,MAAM,CAAC;cACtCxC,sBAAM,CAAC2J,KAAK,CAACqB,QAAQ,CAACzJ,UAAU,EAAEwJ,cAAc,CAACxJ,UAAU,CAAC;cAC5DvB,sBAAM,CAAC2J,KAAK,CAACqB,QAAQ,CAACnJ,UAAU,EAAE,GAAG,CAAC;YAAC;YAAA;cAAA,OAAAoJ,SAAA,CAAA5D,IAAA;UAAA;QAAA,GAAAwD,QAAA;MAAA,CACxC,GAAC;MAEFlL,EAAE,CAAC,uDAAuD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA4E,SAAA;QAAA,IAAAC,WAAA;QAAA,OAAA9E,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA2E,SAAA;UAAA,kBAAAA,SAAA,CAAAzE,IAAA,GAAAyE,SAAA,CAAAxE,IAAA;YAAA;cAAAwE,SAAA,CAAAxE,IAAA;cAAA,OACpDzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtB+D,WAAW,GAAGrJ,IAAI,CAACC,KAAK,CAACxB,aAAa,CAACyB,IAAI,CAACqH,SAAS,CAACnH,IAAI,CAAC,CAAC,CAAC,CAAC;cAEpErC,sBAAM,CAAC2J,KAAK,CAAC2B,WAAW,CAAC/I,IAAI,EAAEE,wBAAa,CAACC,IAAI,CAAC;cAClD1C,sBAAM,CAAC2J,KAAK,CAAC2B,WAAW,CAACrK,IAAI,CAACkK,KAAK,EAAE,MAAM,CAAC;YAAC;YAAA;cAAA,OAAAI,SAAA,CAAAlE,IAAA;UAAA;QAAA,GAAAgE,QAAA;MAAA,CAC9C,GAAC;MAEF1L,EAAE,CAAC,mDAAmD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA+E,SAAA;QAAA,IAAAV,cAAA,EAAAC,cAAA,EAAA5E,KAAA;QAAA,OAAAK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA6E,SAAA;UAAA,kBAAAA,SAAA,CAAA3E,IAAA,GAAA2E,SAAA,CAAA1E,IAAA;YAAA;cAAA0E,SAAA,CAAA1E,IAAA;cAAA,OAChDzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtBuD,cAAc,GAAGxK,YAAY,CAAC4K,cAAc,CAAC;gBACjD3I,IAAI,EAAE,MAAM;gBACZtB,IAAI,EAAE;kBACJkK,KAAK,EAAE;gBACT;cACF,CAAC,CAAC;cAAAM,SAAA,CAAA1E,IAAA;cAAA,OAEI,IAAAqB,oBAAW,EAAC,CAAC;YAAA;cAEb2C,cAAc,GAAG9I,IAAI,CAACC,KAAK,CAACxB,aAAa,CAACyB,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC;cAEtE3B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;gBAC5BrB,IAAI,EAAE,IAAAF,UAAA,CAAAtD,OAAA,EAAe;kBACnB8E,IAAI,EAAE,gBAAgB;kBACtBC,OAAO,EAAE,MAAM;kBACfjB,UAAU,EAAEwJ,cAAc,CAACxJ,UAAU;kBACrCM,UAAU,EAAE,GAAG;kBACfE,aAAa,EAAE;gBACjB,CAAC;cACH,CAAC,CAAC;cAAC0J,SAAA,CAAA1E,IAAA;cAAA,OAEiB/G,sBAAM,CAACwI,UAAU,CAACsC,cAAc,CAAC;YAAA;cAA/C3E,KAAK,GAAAsF,SAAA,CAAAL,IAAA;cAEXpL,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACuF,IAAI,EAAE,2BAA2B,CAAC;cACrD1L,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACtE,UAAU,EAAE,GAAG,CAAC;cACnC7B,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACpE,aAAa,EAAE,WAAW,CAAC;cAC9C/B,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAAC5E,UAAU,EAAEwJ,cAAc,CAACxJ,UAAU,CAAC;YAAC;YAAA;cAAA,OAAAkK,SAAA,CAAApE,IAAA;UAAA;QAAA,GAAAmE,QAAA;MAAA,CAC3D,GAAC;MAEF7L,EAAE,CAAC,mEAAmE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAkF,SAAA;QAAA,IAAAb,cAAA,EAAA3E,KAAA;QAAA,OAAAK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAgF,SAAA;UAAA,kBAAAA,SAAA,CAAA9E,IAAA,GAAA8E,SAAA,CAAA7E,IAAA;YAAA;cAAA6E,SAAA,CAAA7E,IAAA;cAAA,OAChEzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtBuD,cAAc,GAAGxK,YAAY,CAAC4K,cAAc,CAAC;gBACjD3I,IAAI,EAAE,MAAM;gBACZtB,IAAI,EAAE;kBACJkK,KAAK,EAAE;gBACT;cACF,CAAC,CAAC;cAEF1H,IAAI,CAAC4E,mBAAmB,CAAC,GAAG,CAAC;cAACuD,SAAA,CAAA7E,IAAA;cAAA,OACxB,IAAAqB,oBAAW,EAAC,CAAC;YAAA;cAAAwD,SAAA,CAAA7E,IAAA;cAAA,OAEC/G,sBAAM,CAACwI,UAAU,CAACsC,cAAc,CAAC;YAAA;cAA/C3E,KAAK,GAAAyF,SAAA,CAAAR,IAAA;cAEXpL,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACuF,IAAI,EAAE,2BAA2B,CAAC;cACrD1L,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACtE,UAAU,EAAE,GAAG,CAAC;cACnC7B,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACpE,aAAa,EAAE,qCAAqC,CAAC;YAAC;YAAA;cAAA,OAAA6J,SAAA,CAAAvE,IAAA;UAAA;QAAA,GAAAsE,QAAA;MAAA,CAC1E,GAAC;MAEFhM,EAAE,CAAC,8EAA8E,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAoF,SAAA;QAAA,IAAAf,cAAA,EAAAC,cAAA,EAAA5E,KAAA;QAAA,OAAAK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAkF,SAAA;UAAA,kBAAAA,SAAA,CAAAhF,IAAA,GAAAgF,SAAA,CAAA/E,IAAA;YAAA;cAAA+E,SAAA,CAAA/E,IAAA;cAAA,OAC3EzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtBuD,cAAc,GAAGxK,YAAY,CAAC4K,cAAc,CAAC;gBACjD3I,IAAI,EAAE,MAAM;gBACZtB,IAAI,EAAE;kBACJkK,KAAK,EAAE;gBACT;cACF,CAAC,CAAC;cAAAW,SAAA,CAAA/E,IAAA;cAAA,OAEI,IAAAqB,oBAAW,EAAC,CAAC;YAAA;cAEb2C,cAAc,GAAG9I,IAAI,CAACC,KAAK,CAACxB,aAAa,CAACyB,IAAI,CAACC,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC;cAEtE3B,aAAa,CAAC4B,IAAI,CAAC,SAAS,EAAE;gBAC5BrB,IAAI,EAAE,IAAAF,UAAA,CAAAtD,OAAA,EAAe;kBACnB8E,IAAI,EAAE,gBAAgB;kBACtBC,OAAO,EAAE,MAAM;kBACfjB,UAAU,EAAEwJ,cAAc,CAACxJ;gBAC7B,CAAC;cACH,CAAC,CAAC;cAACuK,SAAA,CAAA/E,IAAA;cAAA,OAEiB/G,sBAAM,CAACwI,UAAU,CAACsC,cAAc,CAAC;YAAA;cAA/C3E,KAAK,GAAA2F,SAAA,CAAAV,IAAA;cAEXpL,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACuF,IAAI,EAAE,2BAA2B,CAAC;cACrD1L,sBAAM,CAACuJ,WAAW,CAACpD,KAAK,CAACtE,UAAU,CAAC;cACpC7B,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACpE,aAAa,EAAE,qCAAqC,CAAC;YAAC;YAAA;cAAA,OAAA+J,SAAA,CAAAzE,IAAA;UAAA;QAAA,GAAAwE,QAAA;MAAA,CAC1E,GAAC;MAEFlM,EAAE,CAAC,wDAAwD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAsF,SAAA;QAAA,IAAAjB,cAAA,EAAA3E,KAAA;QAAA,OAAAK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAoF,SAAA;UAAA,kBAAAA,SAAA,CAAAlF,IAAA,GAAAkF,SAAA,CAAAjF,IAAA;YAAA;cAAAiF,SAAA,CAAAjF,IAAA;cAAA,OACrDzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAEtBuD,cAAc,GAAGxK,YAAY,CAAC4K,cAAc,CAAC;gBACjD3I,IAAI,EAAE,MAAM;gBACZtB,IAAI,EAAE;kBACJkK,KAAK,EAAE;gBACT;cACF,CAAC,CAAC;cAEFzK,aAAa,CAAC4B,IAAI,CAAC,OAAO,EAAE;gBAC1BuG,IAAI,EAAE,IAAI;gBACVoB,MAAM,EAAE;cACV,CAAC,CAAC;cAAC+B,SAAA,CAAAjF,IAAA;cAAA,OAEiB/G,sBAAM,CAACwI,UAAU,CAACsC,cAAc,CAAC;YAAA;cAA/C3E,KAAK,GAAA6F,SAAA,CAAAZ,IAAA;cAEXpL,sBAAM,CAACC,UAAU,CAACkG,KAAK,EAAEgC,uBAAe,CAAC;cACzCnI,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAAC0C,IAAI,EAAE,IAAI,CAAC;cAC9B7I,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAAC8D,MAAM,EAAE,0BAA0B,CAAC;YAAC;YAAA;cAAA,OAAA+B,SAAA,CAAA3E,IAAA;UAAA;QAAA,GAAA0E,QAAA;MAAA,CACxD,GAAC;MAEFpM,EAAE,CAAC,wBAAwB,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAwF,SAAA;QAAA,IAAA9F,KAAA;QAAA,OAAAK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAsF,SAAA;UAAA,kBAAAA,SAAA,CAAApF,IAAA,GAAAoF,SAAA,CAAAnF,IAAA;YAAA;cAAAmF,SAAA,CAAAnF,IAAA;cAAA,OACrBzG,YAAY,CAACiH,OAAO,CAAC,CAAC;YAAA;cAAA2E,SAAA,CAAAnF,IAAA;cAAA,OAER/G,sBAAM,CAACwI,UAAU,CAAClI,YAAY,CAAC4K,cAAc,CAAC,EAAE,CAAC,CAAC;YAAA;cAAhE/E,KAAK,GAAA+F,SAAA,CAAAd,IAAA;cAEXpL,sBAAM,CAAC2J,KAAK,CAACxD,KAAK,CAACwE,OAAO,EAAE,uBAAuB,CAAC;YAAC;YAAA;cAAA,OAAAuB,SAAA,CAAA7E,IAAA;UAAA;QAAA,GAAA4E,QAAA;MAAA,CACtD,GAAC;IACJ,CAAC,CAAC;IAEF1M,QAAQ,CAAC,6BAA6B,EAAE,YAAM;MAC5CI,EAAE,CAAC,qCAAqC,EAAE,YAAM;QAC9CW,YAAY,CAACkK,MAAM,GAAG;UACpB7C,SAAS,EAAE,IAAI;UACfwE,GAAG,EAAE;QACP,CAAC;QAEDnM,sBAAM,CAAC2J,KAAK,CAACrJ,YAAY,CAAC8L,wBAAwB,CAAC,CAAC,EAAE,wBAAwB,CAAC;MACjF,CAAC,CAAC;MAEFzM,EAAE,CAAC,sCAAsC,EAAE,YAAM;QAC/CW,YAAY,CAACkK,MAAM,GAAG;UACpB7C,SAAS,EAAE,KAAK;UAChBwE,GAAG,EAAE;QACP,CAAC;QAEDnM,sBAAM,CAACuJ,WAAW,CAACjJ,YAAY,CAAC8L,wBAAwB,CAAC,CAAC,CAAC;MAC7D,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF7M,QAAQ,CAAC,UAAU,EAAE,YAAM;MACzBI,EAAE,CAAC,oEAAoE,EAAE,YAAM;QAC7E,IAAMwG,KAAK,GAAG,OAAO;QACrB,IAAMkG,KAAK,GAAG;UAACpL,IAAI,EAAE;QAAW,CAAC;QACjCX,YAAY,CAAC4J,EAAE,CAAC,OAAO,EAAE,YAAM;UAC7B,MAAM/D,KAAK;QACb,CAAC,CAAC;QACFpD,cAAK,CAACC,IAAI,CAAC1C,YAAY,CAACyE,MAAM,EAAE,OAAO,CAAC;QAExC,OAAO7B,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC7C,YAAY,CAACgM,SAAS,CAAC,OAAO,EAAED,KAAK,CAAC,CAAC,CAAC7E,IAAI,CAAC,UAAC+E,GAAG,EAAK;UAC3EvM,sBAAM,CAAC8H,UAAU,CACfxH,YAAY,CAACyE,MAAM,CAACoB,KAAK,EACzB,gDAAgD,EAChDA,KAAK,EACL,cAAc,EACd,CAAC,OAAO,EAAEkG,KAAK,CACjB,CAAC;UAED,OAAOE,GAAG;QACZ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhN,QAAQ,CAAC,gBAAgB,EAAE,YAAM;MAC/BI,EAAE,CAAC,4DAA4D,EAAE;QAAA,OAC/DW,YAAY,CAACkM,UAAU,CAAC,mBAAmB,CAAC,CAAChF,IAAI,CAAC,UAACiF,KAAK,EAAK;UAC3DzM,sBAAM,CAAC2J,KAAK,CAAC8C,KAAK,EAAE,mBAAmB,CAAC;QAC1C,CAAC,CAAC;MAAA,EAAC;MAEL9M,EAAE,CAAC,2DAA2D,EAAE;QAAA,OAC9DW,YAAY,CAACkM,UAAU,CAAC,CAAC,CAAChF,IAAI,CAAC,UAACiF,KAAK,EAAK;UACxCzM,sBAAM,CAAC2J,KAAK,CAAC8C,KAAK,EAAE,kBAAkB,CAAC;QACzC,CAAC,CAAC;MAAA,EAAC;IACP,CAAC,CAAC;IAEFlN,QAAQ,CAAC,mBAAmB,EAAE,YAAM;MAClCA,QAAQ,CAAC,4BAA4B,EAAE,YAAM;QAC3C,IAAImN,sBAAsB;QAE1BlJ,UAAU,CAAC,YAAM;UACflD,YAAY,CAACqH,SAAS,GAAG,IAAI;UAC7BrH,YAAY,CAACkK,MAAM,GAAG;YACpB2B,GAAG,EAAE,qBAAqB;YAC1B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACD0J,sBAAsB,GAAG3J,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,oBAAoB,CAAC;UACvEoM,sBAAsB,CAACzJ,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;UACjDJ,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACdiN,sBAAsB,CAACxF,OAAO,CAAC,CAAC;UAChC5G,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,qDAAqD,EAAE,YAAM;UAC9DW,YAAY,CAACqM,6BAA6B,GAAG;YAACC,WAAW,EAAE;UAAI,CAAC;UAEhEtM,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC7M,sBAAM,CAACsH,SAAS,CAACoF,sBAAsB,CAAC;QAC1C,CAAC,CAAC;QAEF/M,EAAE,CAAC,yCAAyC,EAAE,YAAM;UAClDW,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC7M,sBAAM,CAACyH,UAAU,CAACiF,sBAAsB,CAAC;UACzC,IAAMI,QAAQ,GAAGJ,sBAAsB,CAAClD,SAAS,CAACnH,IAAI;UACtDrC,sBAAM,CAACuJ,WAAW,CAACuD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACjC9M,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC9B9M,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACE,oBAAoB,CAAC;UAC/ChN,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAAC;UAC3CjN,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAACD,oBAAoB,CAAC;QAChE,CAAC,CAAC;QAEFrN,EAAE,CAAC,yDAAyD,EAAE,UAACuN,IAAI,EAAK;UACtE5M,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC9G,OAAO,CAACC,QAAQ,CAAC,YAAM;YACrBhG,sBAAM,CAACyH,UAAU,CAACiF,sBAAsB,CAAC;YACzC,IAAMI,QAAQ,GAAGJ,sBAAsB,CAAClD,SAAS,CAACnH,IAAI;YACtDrC,sBAAM,CAACuJ,WAAW,CAACuD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC9M,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B9M,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACE,oBAAoB,CAAC;YAC/ChN,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAAC;YAC3CjN,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAACD,oBAAoB,CAAC;YAC9DE,IAAI,CAAC,CAAC;UACR,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFvN,EAAE,CAAC,4CAA4C,EAAE,YAAM;UACrD+M,sBAAsB,CAACxF,OAAO,CAAC,CAAC;UAChCnE,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,oBAAoB,CAAC,CAAC6M,MAAM,CAAC,IAAIC,KAAK,CAAC,mBAAmB,CAAC,CAAC;UAErF9M,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC7M,sBAAM,CAACuJ,WAAW,CAACjJ,YAAY,CAACqM,6BAA6B,CAAC;UAC9DrM,YAAY,CAAC+M,kBAAkB,CAACnG,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF3H,QAAQ,CAAC,qCAAqC,EAAE,YAAM;QACpDiE,UAAU,CAAC,YAAM;UACfT,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,wBAAwB,CAAC;UAClDyC,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACda,YAAY,CAACuM,sBAAsB,CAAC3F,OAAO,CAAC,CAAC;UAC7C5G,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,4DAA4D,EAAE,YAAM;UACrE,IAAM2N,aAAa,GAAG;YACpBrM,IAAI,EAAE;cACJsB,IAAI,EAAE;YACR;UACF,CAAC;UAED,IAAMgL,MAAM,GAAGjN,YAAY,CAACkN,SAAS,CAACF,aAAa,CAAC;UAEpDtN,sBAAM,CAACyH,UAAU,CAACnH,YAAY,CAACuM,sBAAsB,CAAC;UACtD7M,sBAAM,CAAC8H,UAAU,CACfxH,YAAY,CAACgM,SAAS,EACtB,gCAAgC,EAChCgB,aAAa,CAACrM,IAChB,CAAC;UACDjB,sBAAM,CAACC,UAAU,CAACsN,MAAM,EAAArK,QAAA,CAAAzF,OAAS,CAAC;QACpC,CAAC,CAAC;QAEFkC,EAAE,CAAC,mEAAmE,EAAE,YAAM;UAC5E,IAAM2N,aAAa,GAAG;YACpBrM,IAAI,EAAE;cACJsB,IAAI,EAAE;YACR;UACF,CAAC;UAEDjC,YAAY,CAACkN,SAAS,CAACF,aAAa,CAAC;UAErCtN,sBAAM,CAACyH,UAAU,CAACnH,YAAY,CAACuM,sBAAsB,CAAC;QACxD,CAAC,CAAC;QAEFlN,EAAE,CAAC,gEAAgE,EAAE,YAAM;UACzE,IAAM8N,YAAY,GAAG;YACnBxM,IAAI,EAAE;cACJsB,IAAI,EAAE,SAAS;cACftB,IAAI,EAAE;gBACJC,SAAS,EAAE;cACb;YACF;UACF,CAAC;UAEDZ,YAAY,CAACkN,SAAS,CAACC,YAAY,CAAC;UAEpCzN,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACuM,sBAAsB,CAAC;QACvD,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFtN,QAAQ,CAAC,8CAA8C,EAAE,YAAM;QAC7DiE,UAAU,CAAC,YAAM;UACfT,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACda,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,kDAAkD,EAAE,YAAM;UAC3D,IAAM0M,KAAK,GAAG;YACZpL,IAAI,EAAE;cACJsB,IAAI,EAAE;cACN;YACF;UACF,CAAC;UAED,IAAMgL,MAAM,GAAGjN,YAAY,CAACkN,SAAS,CAACnB,KAAK,CAAC;UAE5CrM,sBAAM,CAACC,UAAU,CAACsN,MAAM,EAAArK,QAAA,CAAAzF,OAAS,CAAC;UAClCuC,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,OAAO,EAAED,KAAK,CAACpL,IAAI,CAAC;QAChE,CAAC,CAAC;QAEFtB,EAAE,CAAC,mDAAmD,EAAE,YAAM;UAC5D,IAAM0M,KAAK,GAAG;YACZpL,IAAI,EAAE;cACJsB,IAAI,EAAE,UAAU;cAChBtB,IAAI,EAAE;gBACJ;gBACAyM,SAAS,EAAE;cACb;YACF;UACF,CAAC;UAED,IAAMH,MAAM,GAAGjN,YAAY,CAACkN,SAAS,CAACnB,KAAK,CAAC;UAE5CrM,sBAAM,CAACC,UAAU,CAACsN,MAAM,EAAArK,QAAA,CAAAzF,OAAS,CAAC;UAClCuC,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,OAAO,EAAED,KAAK,CAACpL,IAAI,CAAC;QAChE,CAAC,CAAC;QAEFtB,EAAE,CAAC,wFAAwF,EAAE,YAAM;UACjG,IAAM0M,KAAK,GAAG;YACZpL,IAAI,EAAE;cACJD,EAAE,EAAE,SAAS;cACb2M,cAAc,EAAE,CAAC;cACjB1M,IAAI,EAAE;gBACJY,UAAU,EAAE;cACd;YACF;UACF,CAAC;UAED,IAAM0L,MAAM,GAAGjN,YAAY,CAACkN,SAAS,CAACnB,KAAK,CAAC;UAE5CrM,sBAAM,CAACC,UAAU,CAACsN,MAAM,EAAArK,QAAA,CAAAzF,OAAS,CAAC;UAClCuC,sBAAM,CAACyH,UAAU,CAACnH,YAAY,CAACgM,SAAS,CAAC;UACzCtM,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,OAAO,EAAED,KAAK,CAACpL,IAAI,CAAC;QAChE,CAAC,CAAC;QAEFtB,EAAE,CAAC,sDAAsD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAmH,SAAA;UAAA,IAAAvB,KAAA;UAAA,OAAA7F,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAiH,SAAA;YAAA,kBAAAA,SAAA,CAAA/G,IAAA,GAAA+G,SAAA,CAAA9G,IAAA;cAAA;gBACnDsF,KAAK,GAAG;kBACZpL,IAAI,EAAE;oBACJA,IAAI,EAAE;sBACJC,SAAS,EAAE;oBACb;kBACF;gBACF,CAAC;gBAAA2M,SAAA,CAAA9G,IAAA;gBAAA,OAEKzG,YAAY,CAACkN,SAAS,CAACnB,KAAK,CAAC;cAAA;gBAEnCrM,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,oBAAoB,EAAED,KAAK,CAACpL,IAAI,CAAC;gBAC3EjB,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,6BAA6B,EAAED,KAAK,CAACpL,IAAI,CAAC;cAAC;cAAA;gBAAA,OAAA4M,SAAA,CAAAxG,IAAA;YAAA;UAAA,GAAAuG,QAAA;QAAA,CACtF,GAAC;MACJ,CAAC,CAAC;MAEFrO,QAAQ,CAAC,yCAAyC,EAAE,YAAM;QACxD,IAAIuO,yBAAyB;QAE7BtK,UAAU,CAAC,YAAM;UACfsK,yBAAyB,GAAGxN,YAAY,CAACF,MAAM,CAAC2N,iBAAiB;QACnE,CAAC,CAAC;QAEFtO,SAAS,CAAC,YAAM;UACda,YAAY,CAACF,MAAM,CAAC2N,iBAAiB,GAAGD,yBAAyB;QACnE,CAAC,CAAC;QAEFnO,EAAE,CAAC,2CAA2C,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAuH,SAAA;UAAA,IAAA1K,OAAA;UAAA,OAAAkD,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAqH,SAAA;YAAA,kBAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAAlH,IAAA;cAAA;gBACxCzD,OAAO,GAAGP,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,WAAW,CAAC;gBAAA2N,SAAA,CAAAlH,IAAA;gBAAA,OAE9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAAAsL,SAAA,CAAAlH,IAAA;gBAAA,OACjDzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAEvD3C,sBAAM,CAAC2J,KAAK,CAACtG,sBAAsB,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChDA,OAAO,CAAC4D,OAAO,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAA+G,SAAA,CAAA5G,IAAA;YAAA;UAAA,GAAA2G,QAAA;QAAA,CACnB,GAAC;QAEFrO,EAAE,CAAC,wFAAwF,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAyH,UAAA;UAAA,IAAA5K,OAAA;UAAA,OAAAkD,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAuH,UAAA;YAAA,kBAAAA,UAAA,CAAArH,IAAA,GAAAqH,UAAA,CAAApH,IAAA;cAAA;gBACrFzD,OAAO,GAAGP,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,WAAW,CAAC;gBACpDA,YAAY,CAACkK,MAAM,GAAG3H,mBAAmB,CAAC,CAAC;gBAACsL,UAAA,CAAApH,IAAA;gBAAA,OAEtCzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAEvDrC,YAAY,CAACkK,MAAM,GAAG3H,mBAAmB,CAAC,CAAC;gBAACsL,UAAA,CAAApH,IAAA;gBAAA,OACtCzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAEvD3C,sBAAM,CAAC2J,KAAK,CAACtG,sBAAsB,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChDA,OAAO,CAAC4D,OAAO,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAAiH,UAAA,CAAA9G,IAAA;YAAA;UAAA,GAAA6G,SAAA;QAAA,CACnB,GAAC;QAEFvO,EAAE,CAAC,sEAAsE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA2H,UAAA;UAAA,IAAA9K,OAAA;UAAA,OAAAkD,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAyH,UAAA;YAAA,kBAAAA,UAAA,CAAAvH,IAAA,GAAAuH,UAAA,CAAAtH,IAAA;cAAA;gBACnEzD,OAAO,GAAGP,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,WAAW,CAAC;gBAEpDA,YAAY,CAACF,MAAM,CAAC2N,iBAAiB,GAAG,CAAC;gBAACM,UAAA,CAAAtH,IAAA;gBAAA,OAEpCzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAAA0L,UAAA,CAAAtH,IAAA;gBAAA,OAC9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAAA0L,UAAA,CAAAtH,IAAA;gBAAA,OAC9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAAA0L,UAAA,CAAAtH,IAAA;gBAAA,OAC9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAAA0L,UAAA,CAAAtH,IAAA;gBAAA,OAC9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAAA0L,UAAA,CAAAtH,IAAA;gBAAA,OAC9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,IAAI,CAAC,CAAC;cAAA;gBAEpD3C,sBAAM,CAAC2J,KAAK,CAACtG,sBAAsB,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChDA,OAAO,CAAC4D,OAAO,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAAmH,UAAA,CAAAhH,IAAA;YAAA;UAAA,GAAA+G,SAAA;QAAA,CACnB,GAAC;QAEFzO,EAAE,CAAC,sCAAsC,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA6H,UAAA;UAAA,IAAAhL,OAAA;UAAA,OAAAkD,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA2H,UAAA;YAAA,kBAAAA,UAAA,CAAAzH,IAAA,GAAAyH,UAAA,CAAAxH,IAAA;cAAA;gBACnCzD,OAAO,GAAGP,cAAK,CAACsG,GAAG,CAAC/I,YAAY,EAAE,WAAW,CAAC;gBAAAiO,UAAA,CAAAxH,IAAA;gBAAA,OAE9CzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAEvDrC,YAAY,CAACkK,MAAM,GAAG3H,mBAAmB,CAAC,CAAC;gBAAC0L,UAAA,CAAAxH,IAAA;gBAAA,OACtCzG,YAAY,CAAC2G,UAAU,CAAC,CAAC;cAAA;gBAAAsH,UAAA,CAAAxH,IAAA;gBAAA,OACzBzG,YAAY,CAACkN,SAAS,CAAC7K,gBAAgB,CAAC,OAAO,CAAC,CAAC;cAAA;gBAEvD3C,sBAAM,CAAC2J,KAAK,CAACtG,sBAAsB,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChDA,OAAO,CAAC4D,OAAO,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAAqH,UAAA,CAAAlH,IAAA;YAAA;UAAA,GAAAiH,SAAA;QAAA,CACnB,GAAC;MACJ,CAAC,CAAC;MAEF/O,QAAQ,CAAC,mDAAmD,EAAE,YAAM;QAClE,IAAIiP,UAAU;QACd,IAAIC,aAAa;QAEjBjL,UAAU,CAAC,YAAM;UACfgL,UAAU,GAAG;YACXrC,GAAG,EAAE,wBAAwB;YAC7B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACDyL,aAAa,GAAG;YACdtC,GAAG,EAAE,qBAAqB;YAC1B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACD1C,YAAY,CAACkK,MAAM,GAAGgE,UAAU;UAChClO,YAAY,CAACqH,SAAS,GAAG,IAAI;UAC7B5E,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;UACrCyC,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACda,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;UAChC5G,YAAY,CAACoO,SAAS,CAACxH,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,gHAAgH,EAAE,YAAM;UACzH,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEH,UAAU,CAAC;UAE5CxO,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UAChE3O,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEuC,mCAAwB,CAAC;UACxF;UACA;UACA7O,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAC1E3O,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACoO,SAAS,CAAC;UACxC1O,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,CAAC;QACxC,CAAC,CAAC;QAEFhI,EAAE,CAAC,sGAAsG,EAAE,YAAM;UAC/G,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEF,aAAa,CAAC;UAE/CzO,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEuC,mCAAwB,CAAC;UACxF7O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,kBAAkB,EAAEqC,UAAU,CAAC;UAC9E3O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UACrE;UACA3O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAC/E3O,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACoO,SAAS,CAAC;UACxC1O,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,CAAC;UACrC3H,sBAAM,CAAC+O,WAAW,CAACzO,YAAY,CAACkK,MAAM,EAAEgE,UAAU,CAAC;QACrD,CAAC,CAAC;QAEF7O,EAAE,CAAC,sFAAsF,EAAE,YAAM;UAC/F,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;;UAED;UACA3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEF,aAAa,CAAC;UAC/CzO,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEuC,mCAAwB,CAAC;UACxF7O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UACrE3O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAE/ErO,YAAY,CAACgM,SAAS,CAAC0C,YAAY,CAAC,CAAC;;UAErC;UACA1O,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEH,UAAU,CAAC;UAC5CxO,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UAChE3O,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEuC,mCAAwB,CAAC;UACxF7O,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;QAC5E,CAAC,CAAC;QAEFhP,EAAE,CAAC,qEAAqE,EAAE,YAAM;UAC9E,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEhN,SAAS,CAAC;UAE3C3B,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEuC,mCAAwB,CAAC;UACxF7O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,kBAAkB,EAAEqC,UAAU,CAAC;UAC9E3O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAC/E3O,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACoO,SAAS,CAAC;QAC1C,CAAC,CAAC;QAEF/O,EAAE,CAAC,uEAAuE,EAAE,YAAM;UAChF,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEF,aAAa,CAAC;UAE/CzO,sBAAM,CAACyH,UAAU,CAACgH,aAAa,CAACrL,kBAAkB,CAAC;QACrD,CAAC,CAAC;QAEFzD,EAAE,CAAC,qFAAqF,EAAE,YAAM;UAC9F,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEH,UAAU,CAAC;UAE5CxO,sBAAM,CAACyH,UAAU,CAAC+G,UAAU,CAACpL,kBAAkB,CAAC;QAClD,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF7D,QAAQ,CAAC,gDAAgD,EAAE,YAAM;QAC/D,IAAIiP,UAAU;QACd,IAAIC,aAAa;QAEjBjL,UAAU,CAAC,YAAM;UACfgL,UAAU,GAAG;YACXrC,GAAG,EAAE,wBAAwB;YAC7B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACDyL,aAAa,GAAG;YACdtC,GAAG,EAAE,qBAAqB;YAC1B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACD1C,YAAY,CAACkK,MAAM,GAAGgE,UAAU;UAChClO,YAAY,CAACqH,SAAS,GAAG,IAAI;UAC7B5E,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;UACrCyC,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACda,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;UAChC5G,YAAY,CAACoO,SAAS,CAACxH,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,gGAAgG,EAAE,YAAM;UACzG,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEH,UAAU,CAAC;UAE5CxO,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UAChE;UACA3O,sBAAM,CAAC8H,UAAU,CAACxH,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAC1E3O,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACoO,SAAS,CAAC;UACxC1O,sBAAM,CAAC0H,OAAO,CAACpH,YAAY,CAACqH,SAAS,CAAC;QACxC,CAAC,CAAC;QAEFhI,EAAE,CAAC,iEAAiE,EAAE,YAAM;UAC1E,IAAMgP,UAAU,GAAG;YACjB9F,IAAI,EAAE,IAAI;YACVoB,MAAM,EAAE;UACV,CAAC;UAED3J,YAAY,CAACsO,OAAO,CAACD,UAAU,EAAEF,aAAa,CAAC;UAE/CzO,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,SAAS,EAAEqC,UAAU,CAAC;UACrE3O,sBAAM,CAAC8O,eAAe,CAACxO,YAAY,CAACgM,SAAS,EAAE,mBAAmB,EAAEqC,UAAU,CAAC;UAC/E3O,sBAAM,CAACsH,SAAS,CAAChH,YAAY,CAACoO,SAAS,CAAC;UACxC1O,sBAAM,CAAC4H,MAAM,CAACtH,YAAY,CAACqH,SAAS,CAAC;UACrC3H,sBAAM,CAAC+O,WAAW,CAACzO,YAAY,CAACkK,MAAM,EAAEgE,UAAU,CAAC;QACrD,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFjP,QAAQ,CAAC,sCAAsC,EAAE,YAAM;QACrD,IAAImN,sBAAsB;QAE1BlJ,UAAU,CAAC,YAAM;UACflD,YAAY,CAACqH,SAAS,GAAG,IAAI;UAC7BrH,YAAY,CAACkK,MAAM,GAAG;YACpB2B,GAAG,EAAE,qBAAqB;YAC1B/I,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC;UACjC,CAAC;UACD0J,sBAAsB,GAAG3J,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,oBAAoB,CAAC;UACvEyC,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;QACvC,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACdiN,sBAAsB,CAACxF,OAAO,CAAC,CAAC;UAChC5G,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,kEAAkE,EAAE,UAACuN,IAAI,EAAK;UAC/ER,sBAAsB,CAACzJ,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;UAEjD7C,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC9G,OAAO,CAACC,QAAQ,CAAC,YAAM;YACrBhG,sBAAM,CAACyH,UAAU,CAACiF,sBAAsB,CAAC;YACzC,IAAMI,QAAQ,GAAGJ,sBAAsB,CAAClD,SAAS,CAACnH,IAAI;YAEtDrC,sBAAM,CAACuJ,WAAW,CAACuD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC9M,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B9M,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACE,oBAAoB,CAAC;YAC/ChN,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAAC;YAC3CjN,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACG,cAAc,CAACD,oBAAoB,CAAC;YAC9DE,IAAI,CAAC,CAAC;UACR,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFvN,EAAE,CAAC,4DAA4D,EAAE,YAAM;UACrE+M,sBAAsB,CAACxH,SAAS,CAAC,YAAM;YACrC5E,YAAY,CAACqM,6BAA6B,GAAG;cAACC,WAAW,EAAE;YAAI,CAAC;YAEhE,OAAO,IAAA1J,QAAA,CAAAzF,OAAA,CAAY,YAAM,CAAC,CAAC,CAAC,CAAC,CAAC;UAChC,CAAC,CAAC;UAEF6C,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC7M,sBAAM,CAACiP,IAAI,CAAC3O,YAAY,CAACqM,6BAA6B,CAAC;QACzD,CAAC,CAAC;QAEFhN,EAAE,CAAC,qDAAqD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAyI,UAAA;UAAA,IAAAC,SAAA,EAAAC,gBAAA;UAAA,OAAA5I,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAyI,UAAA;YAAA,kBAAAA,UAAA,CAAAvI,IAAA,GAAAuI,UAAA,CAAAtI,IAAA;cAAA;gBACxD2F,sBAAsB,CAACxH,SAAS,CAAC,UAACiH,GAAG,EAAEmD,OAAO,EAAK;kBACjD,IAAIA,OAAO,IAAIA,OAAO,CAACrC,cAAc,IAAIqC,OAAO,CAACrC,cAAc,CAACsC,SAAS,EAAE;oBACzE,IAAMC,SAAS,GAAG;sBAACrD,GAAG,EAAE;oBAAqB,CAAC;oBAC9CmD,OAAO,CAACrC,cAAc,CAACsC,SAAS,CAACC,SAAS,EAAE,qBAAqB,CAAC;kBACpE;kBAEA,OAAOtM,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC;gBAC1B,CAAC,CAAC;gBAEF7C,YAAY,CAACuM,sBAAsB,CAAC,CAAC;gBAACwC,UAAA,CAAAtI,IAAA;gBAAA,OAEhC,IAAAqB,oBAAW,EAAC,EAAE,CAAC;cAAA;gBAEf+G,SAAS,GAAG7O,YAAY,CAACgM,SAAS,CAAC/I,QAAQ,CAAC,CAAC;gBAC7C6L,gBAAgB,GAAGD,SAAS,CAACM,IAAI,CACrC,UAACzR,IAAI;kBAAA,OAAKA,IAAI,CAACqE,IAAI,CAAC,CAAC,CAAC,KAAK,2CAA2C;gBAAA,CACxE,CAAC;gBAEDrC,sBAAM,CAAC4H,MAAM,CAACwH,gBAAgB,EAAE,uCAAuC,CAAC;cAAC;cAAA;gBAAA,OAAAC,UAAA,CAAAhI,IAAA;YAAA;UAAA,GAAA6H,SAAA;QAAA,CAC1E,GAAC;QAEFvP,EAAE,CAAC,4DAA4D,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAiJ,UAAA;UAAA,IAAAC,SAAA,EAAAR,SAAA,EAAAS,eAAA;UAAA,OAAApJ,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAiJ,UAAA;YAAA,kBAAAA,UAAA,CAAA/I,IAAA,GAAA+I,UAAA,CAAA9I,IAAA;cAAA;gBACzD4I,SAAS,GAAG,IAAIvC,KAAK,CAAC,mBAAmB,CAAC;gBAEhDV,sBAAsB,CAACzJ,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAACyH,SAAS,CAAC,CAAC;gBAEzDrP,YAAY,CAACuM,sBAAsB,CAAC,CAAC;gBAACgD,UAAA,CAAA9I,IAAA;gBAAA,OAChC,IAAAqB,oBAAW,EAAC,EAAE,CAAC;cAAA;gBAEf+G,SAAS,GAAG7O,YAAY,CAACgM,SAAS,CAAC/I,QAAQ,CAAC,CAAC;gBAC7CqM,eAAe,GAAGT,SAAS,CAACM,IAAI,CACpC,UAACzR,IAAI;kBAAA,OACHA,IAAI,CAACqE,IAAI,CAAC,CAAC,CAAC,KAAK,yCAAyC,IAC1DrE,IAAI,CAACqE,IAAI,CAAC,CAAC,CAAC,IACZrE,IAAI,CAACqE,IAAI,CAAC,CAAC,CAAC,CAAC4H,MAAM,KAAK0F,SAAS;gBAAA,CACrC,CAAC;gBAED3P,sBAAM,CAAC4H,MAAM,CAACgI,eAAe,EAAE,qCAAqC,CAAC;cAAC;cAAA;gBAAA,OAAAC,UAAA,CAAAxI,IAAA;YAAA;UAAA,GAAAqI,SAAA;QAAA,CACvE,GAAC;QAEF/P,EAAE,CAAC,yEAAyE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAqJ,UAAA;UAAA,OAAAtJ,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAmJ,UAAA;YAAA,kBAAAA,UAAA,CAAAjJ,IAAA,GAAAiJ,UAAA,CAAAhJ,IAAA;cAAA;gBAC5E2F,sBAAsB,CAACzJ,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIkF,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAEnE9M,YAAY,CAACuM,sBAAsB,CAAC,CAAC;gBAACkD,UAAA,CAAAhJ,IAAA;gBAAA,OAChC,IAAAqB,oBAAW,EAAC,EAAE,CAAC;cAAA;gBAErBpI,sBAAM,CAAC2J,KAAK,CAACrJ,YAAY,CAACkK,MAAM,CAACpH,kBAAkB,CAAC4M,SAAS,EAAE,CAAC,CAAC;cAAC;cAAA;gBAAA,OAAAD,UAAA,CAAA1I,IAAA;YAAA;UAAA,GAAAyI,SAAA;QAAA,CACnE,GAAC;MACJ,CAAC,CAAC;MAEFvQ,QAAQ,CAAC,0BAA0B,EAAE,YAAM;QACzC,IAAIiP,UAAU;QACd,IAAIyB,cAAc;QAClB,IAAIC,gBAAgB;QAEpB1M,UAAU,CAAC,YAAM;UACfgL,UAAU,GAAG;YACX9I,IAAI,EAAE3C,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC;UAC9C,CAAC;UACD8M,cAAc,GAAGlN,cAAK,CACnBC,IAAI,CAAC1C,YAAY,EAAE,YAAY,CAAC,CAChC2C,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,kBAAkB,CAAC,CAAC;UAC/C+M,gBAAgB,GAAGrP,KAAK,CAAC+C,WAAW,CAACE,YAAY;UACjDoM,gBAAgB,CAACjN,OAAO,CACtBC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC;YACdY,QAAQ,EAAE,SAAVA,QAAQA,CAAA;cAAA,OAAQ,YAAY;YAAA;UAC9B,CAAC,CACH,CAAC;QACH,CAAC,CAAC;QAEFtE,SAAS,CAAC,YAAM;UACdwQ,cAAc,CAAC/I,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEFvH,EAAE,CAAC,uCAAuC,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA0J,UAAA;UAAA,OAAA3J,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAwJ,UAAA;YAAA,kBAAAA,UAAA,CAAAtJ,IAAA,GAAAsJ,UAAA,CAAArJ,IAAA;cAAA;gBAAAqJ,UAAA,CAAArJ,IAAA;gBAAA,OACpCzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC;cAAA;gBAE3ExO,sBAAM,CAACyH,UAAU,CAACwI,cAAc,CAAC;gBACjCjQ,sBAAM,CAAC8H,UAAU,CAACmI,cAAc,EAAE,eAAe,CAAC;gBAClDjQ,sBAAM,CAACyH,UAAU,CAACyI,gBAAgB,CAAC;cAAC;cAAA;gBAAA,OAAAE,UAAA,CAAA/I,IAAA;YAAA;UAAA,GAAA8I,SAAA;QAAA,CACrC,GAAC;QAEFxQ,EAAE,CAAC,+DAA+D,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA6J,UAAA;UAAA,IAAAxD,QAAA;UAAA,OAAAtG,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA2J,UAAA;YAAA,kBAAAA,UAAA,CAAAzJ,IAAA,GAAAyJ,UAAA,CAAAxJ,IAAA;cAAA;gBAAAwJ,UAAA,CAAAxJ,IAAA;gBAAA,OAC5DzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,KAAK,CAAC;cAAA;gBAErE3B,sBAAM,CAACyH,UAAU,CAAC+G,UAAU,CAAC9I,IAAI,CAAC;gBAC5BoH,QAAQ,GAAG0B,UAAU,CAAC9I,IAAI,CAAC8D,SAAS,CAACnH,IAAI;gBAE/CrC,sBAAM,CAAC2J,KAAK,CAACmD,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;gBAC7C9M,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B9M,sBAAM,CAAC2J,KAAK,CAACmD,QAAQ,CAAC,CAAC,CAAC,CAAC3B,KAAK,EAAE,YAAY,CAAC;gBAC7CnL,sBAAM,CAACsK,SAAS,CAACwC,QAAQ,CAAC,CAAC,CAAC,CAAC0D,eAAe,CAAC;gBAC7CxQ,sBAAM,CAACsK,SAAS,CAACwC,QAAQ,CAAC,CAAC,CAAC,CAAClC,kBAAkB,CAAC;cAAC;cAAA;gBAAA,OAAA2F,UAAA,CAAAlJ,IAAA;YAAA;UAAA,GAAAiJ,SAAA;QAAA,CAClD,GAAC;QAEF3Q,EAAE,CAAC,sDAAsD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAgK,UAAA;UAAA,OAAAjK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA8J,UAAA;YAAA,kBAAAA,UAAA,CAAA5J,IAAA,GAAA4J,UAAA,CAAA3J,IAAA;cAAA;gBAAA2J,UAAA,CAAA3J,IAAA;gBAAA,OACnDzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,KAAK,CAAC;cAAA;gBAErE;gBACA;gBACA3B,sBAAM,CAACyH,UAAU,CAAC+G,UAAU,CAAC9I,IAAI,CAAC;cAAC;cAAA;gBAAA,OAAAgL,UAAA,CAAArJ,IAAA;YAAA;UAAA,GAAAoJ,SAAA;QAAA,CACpC,GAAC;QAEF9Q,EAAE,CAAC,yDAAyD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAkK,UAAA;UAAA,OAAAnK,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAgK,UAAA;YAAA,kBAAAA,UAAA,CAAA9J,IAAA,GAAA8J,UAAA,CAAA7J,IAAA;cAAA;gBAAA6J,UAAA,CAAA7J,IAAA;gBAAA,OACtDzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,IAAI,CAAC;cAAA;gBAEpE;gBACA3B,sBAAM,CAACyH,UAAU,CAAC+G,UAAU,CAAC9I,IAAI,CAAC;cAAC;cAAA;gBAAA,OAAAkL,UAAA,CAAAvJ,IAAA;YAAA;UAAA,GAAAsJ,SAAA;QAAA,CACpC,GAAC;QAEFhR,EAAE,CAAC,wDAAwD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAoK,UAAA;UAAA,IAAA/D,QAAA;UAAA,OAAAtG,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAkK,UAAA;YAAA,kBAAAA,UAAA,CAAAhK,IAAA,GAAAgK,UAAA,CAAA/J,IAAA;cAAA;gBAC3DlG,KAAK,CAACT,MAAM,CAACwJ,0BAA0B,GAAG;kBACxCmH,YAAY,EAAE,YAAY;kBAC1BnG,kBAAkB,EAAE;gBACtB,CAAC;gBAACkG,UAAA,CAAA/J,IAAA;gBAAA,OAEIzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,KAAK,CAAC;cAAA;gBAE/DmL,QAAQ,GAAG0B,UAAU,CAAC9I,IAAI,CAAC8D,SAAS,CAACnH,IAAI;gBAE/CrC,sBAAM,CAAC2J,KAAK,CAACmD,QAAQ,CAAC,CAAC,CAAC,CAACiE,YAAY,EAAE,YAAY,CAAC;gBACpD/Q,sBAAM,CAAC2J,KAAK,CAACmD,QAAQ,CAAC,CAAC,CAAC,CAAClC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;cAAA;cAAA;gBAAA,OAAAkG,UAAA,CAAAzJ,IAAA;YAAA;UAAA,GAAAwJ,SAAA;QAAA,CACtD,GAAC;QAEFlR,EAAE,CAAC,8CAA8C,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAuK,UAAA;UAAA,IAAAzD,MAAA;UAAA,OAAA/G,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAqK,UAAA;YAAA,kBAAAA,UAAA,CAAAnK,IAAA,GAAAmK,UAAA,CAAAlK,IAAA;cAAA;gBAAAkK,UAAA,CAAAlK,IAAA;gBAAA,OAC5BzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,KAAK,CAAC;cAAA;gBAA9E4L,MAAM,GAAA0D,UAAA,CAAA7F,IAAA;gBAEZpL,sBAAM,CAAC2J,KAAK,CAAC4D,MAAM,EAAE,kBAAkB,CAAC;cAAC;cAAA;gBAAA,OAAA0D,UAAA,CAAA5J,IAAA;YAAA;UAAA,GAAA2J,SAAA;QAAA,CAC1C,GAAC;QAEFrR,EAAE,CAAC,yCAAyC,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAyK,UAAA;UAAA,IAAAC,GAAA;UAAA,OAAA3K,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAwK,UAAA;YAAA,kBAAAA,UAAA,CAAAtK,IAAA,GAAAsK,UAAA,CAAArK,IAAA;cAAA;gBAC5CyH,UAAU,CAAC9I,IAAI,CAACzC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIkF,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;gBAACgE,UAAA,CAAAtK,IAAA;gBAAAsK,UAAA,CAAArK,IAAA;gBAAA,OAG1DzG,YAAY,CAAC+P,oBAAoB,CAAC7B,UAAU,EAAE7M,SAAS,EAAE,KAAK,CAAC;cAAA;gBACrE3B,sBAAM,CAACqR,IAAI,CAAC,6BAA6B,CAAC;gBAACD,UAAA,CAAArK,IAAA;gBAAA;cAAA;gBAAAqK,UAAA,CAAAtK,IAAA;gBAAAqK,GAAA,GAAAC,UAAA;gBAE3CpR,sBAAM,CAAC2J,KAAK,CAACwH,GAAA,CAAIxG,OAAO,EAAE,aAAa,CAAC;cAAC;cAAA;gBAAA,OAAAyG,UAAA,CAAA/J,IAAA;YAAA;UAAA,GAAA6J,SAAA;QAAA,CAE5C,GAAC;MACJ,CAAC,CAAC;MAEF3R,QAAQ,CAAC,gDAAgD,EAAE,YAAM;QAC/D,IAAI+R,wBAAwB;QAC5B,IAAIC,QAAQ;QAEZ/N,UAAU,CAAC,YAAM;UACf8N,wBAAwB,GAAGvO,cAAK,CAC7BC,IAAI,CAAC1C,YAAY,EAAE,sBAAsB,CAAC,CAC1C2C,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,qBAAqB,CAAC,CAAC;UAClDoO,QAAQ,GAAGxO,cAAK,CAACC,IAAI,CAAC,CAAC;UACvB1C,YAAY,CAACqM,6BAA6B,GAAG;YAAC6E,KAAK,EAAEzO,cAAK,CAACC,IAAI,CAAC;UAAC,CAAC;UAClE1C,YAAY,CAACkK,MAAM,GAAG;YAAC2B,GAAG,EAAE;UAAe,CAAC;UAC5C7L,YAAY,CAACqH,SAAS,GAAG,IAAI;UAC7B5E,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,WAAW,CAAC;UACrCyC,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,4BAA4B,CAAC;QACxD,CAAC,CAAC;QAEFb,SAAS,CAAC,YAAM;UACd6R,wBAAwB,CAACpK,OAAO,CAAC,CAAC;UAClC5G,YAAY,CAACgM,SAAS,CAACpF,OAAO,CAAC,CAAC;UAChC5G,YAAY,CAACmR,0BAA0B,CAACvK,OAAO,CAAC,CAAC;UACjD5G,YAAY,CAACqM,6BAA6B,GAAGhL,SAAS;QACxD,CAAC,CAAC;QAEFhC,EAAE,CAAC,wEAAwE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAiL,UAAA;UAAA,IAAAC,cAAA;UAAA,OAAAnL,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAgL,UAAA;YAAA,kBAAAA,UAAA,CAAA9K,IAAA,GAAA8K,UAAA,CAAA7K,IAAA;cAAA;gBACrE4K,cAAc,GAAGrR,YAAY,CAACkK,MAAM;gBAAAoH,UAAA,CAAA7K,IAAA;gBAAA,OAEpCzG,YAAY,CAACmK,iBAAiB,CAAC,eAAe,EAAE8G,QAAQ,EAAE;kBAC9DvE,oBAAoB,EAAE,IAAI;kBAC1BC,cAAc,EAAE;oBACdsC,SAAS,EAAE,SAAXA,SAASA,CAAGC,SAAS,EAAErD,GAAG,EAAK;sBAC7BnM,sBAAM,CAAC6R,MAAM,CAACrC,SAAS,CAAC;sBACxBxP,sBAAM,CAAC2J,KAAK,CAACwC,GAAG,EAAE,qBAAqB,CAAC;oBAC1C;kBACF;gBACF,CAAC,CAAC;cAAA;gBAEF;gBACAnM,sBAAM,CAAC2J,KAAK,CAACrJ,YAAY,CAACkK,MAAM,EAAEmH,cAAc,CAAC;cAAC;cAAA;gBAAA,OAAAC,UAAA,CAAAvK,IAAA;YAAA;UAAA,GAAAqK,SAAA;QAAA,CACnD,GAAC;QAEF/R,EAAE,CAAC,qEAAqE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAqL,UAAA;UAAA,IAAAC,aAAA;UAAA,OAAAvL,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAoL,UAAA;YAAA,kBAAAA,UAAA,CAAAlL,IAAA,GAAAkL,UAAA,CAAAjL,IAAA;cAAA;gBAClEgL,aAAa,GAAGhP,cAAK,CAACC,IAAI,CAAC,CAAC;gBAAAgP,UAAA,CAAAjL,IAAA;gBAAA,OAE5BzG,YAAY,CAACmK,iBAAiB,CAAC,eAAe,EAAE8G,QAAQ,EAAE;kBAC9DvE,oBAAoB,EAAE,IAAI;kBAC1BC,cAAc,EAAE;oBACdsC,SAAS,EAAEwC;kBACb;gBACF,CAAC,CAAC;cAAA;gBAEF/R,sBAAM,CAACyH,UAAU,CAACsK,aAAa,CAAC;gBAChC/R,sBAAM,CAAC2J,KAAK,CAACoI,aAAa,CAACvI,SAAS,CAACnH,IAAI,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC;cAAC;cAAA;gBAAA,OAAA2P,UAAA,CAAA3K,IAAA;YAAA;UAAA,GAAAyK,SAAA;QAAA,CACtE,GAAC;QAEFnS,EAAE,CAAC,gDAAgD,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAwL,UAAA;UAAA,OAAAzL,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAsL,UAAA;YAAA,kBAAAA,UAAA,CAAApL,IAAA,GAAAoL,UAAA,CAAAnL,IAAA;cAAA;gBAAAmL,UAAA,CAAAnL,IAAA;gBAAA,OAC7CzG,YAAY,CAACmK,iBAAiB,CAAC,eAAe,EAAE8G,QAAQ,EAAE;kBAC9DvE,oBAAoB,EAAE,IAAI;kBAC1BC,cAAc,EAAE;oBACdsC,SAAS,EAAE,SAAXA,SAASA,CAAGC,SAAS,EAAErD,GAAG,EAAK;sBAC7B7L,YAAY,CAACkK,MAAM,GAAGgF,SAAS;sBAC/BlP,YAAY,CAACqH,SAAS,GAAG,IAAI;sBAC7BrH,YAAY,CAACgM,SAAS,CAAC,2CAA2C,EAAE;wBAClEH,GAAG,EAAHA;sBACF,CAAC,CAAC;oBACJ;kBACF;gBACF,CAAC,CAAC;cAAA;gBAEFnM,sBAAM,CAAC8H,UAAU,CACfxH,YAAY,CAACgM,SAAS,EACtB,2CAA2C,EAC3CvJ,cAAK,CAACgF,KAAK,CAACpK,GAAG,CAAC,KAAK,EAAE,qBAAqB,CAC9C,CAAC;cAAC;cAAA;gBAAA,OAAAuU,UAAA,CAAA7K,IAAA;YAAA;UAAA,GAAA4K,SAAA;QAAA,CACH,GAAC;QAEFtS,EAAE,CAAC,oEAAoE,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAA0L,UAAA;UAAA,OAAA3L,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAwL,UAAA;YAAA,kBAAAA,UAAA,CAAAtL,IAAA,GAAAsL,UAAA,CAAArL,IAAA;cAAA;gBACvEuK,wBAAwB,CAACrO,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQyK,MAAM,CAAC,IAAIkF,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAACgF,UAAA,CAAArL,IAAA;gBAAA,OAE3EzG,YAAY,CACfmK,iBAAiB,CAAC,eAAe,EAAE8G,QAAQ,EAAE;kBAC5CvE,oBAAoB,EAAE,IAAI;kBAC1BC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,CACDoF,KAAK,CAAC,YAAM,CAAC,CAAC,CAAC;cAAA;gBAElBrS,sBAAM,CAACyH,UAAU,CAAC8J,QAAQ,CAAC;gBAC3BvR,sBAAM,CAACC,UAAU,CAACsR,QAAQ,CAAC/H,SAAS,CAACnH,IAAI,CAAC,CAAC,CAAC,EAAE+K,KAAK,CAAC;cAAC;cAAA;gBAAA,OAAAgF,UAAA,CAAA/K,IAAA;YAAA;UAAA,GAAA8K,SAAA;QAAA,CACtD,GAAC;QAEFxS,EAAE,CAAC,qEAAqE,EAAE,YAAM;UAC9EW,YAAY,CAACqM,6BAA6B,GAAGhL,SAAS;UAEtD,IAAM4L,MAAM,GAAGjN,YAAY,CAACmK,iBAAiB,CAAC,eAAe,EAAE8G,QAAQ,EAAE;YACvEvE,oBAAoB,EAAE;UACxB,CAAC,CAAC;UAEF,OAAOO,MAAM,CAAC8E,KAAK,CAAC,UAACC,GAAG,EAAK;YAC3BtS,sBAAM,CAACC,UAAU,CAACqS,GAAG,EAAElF,KAAK,CAAC;YAC7BpN,sBAAM,CAAC+H,KAAK,CAACuK,GAAG,CAAC3H,OAAO,EAAE,yBAAyB,CAAC;UACtD,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFpL,QAAQ,CAAC,iDAAiD,EAAE,YAAM;QAChEI,EAAE,CAAC,qDAAqD,EAAE,YAAM;UAC9D,IAAM+M,sBAAsB,GAAG3J,cAAK,CACjCC,IAAI,CAAC1C,YAAY,EAAE,oBAAoB,CAAC,CACxC2C,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;UAE7B7C,YAAY,CAACuM,sBAAsB,CAAC,CAAC;UAErC7M,sBAAM,CAACyH,UAAU,CAACiF,sBAAsB,CAAC;UACzC,IAAMI,QAAQ,GAAGJ,sBAAsB,CAAClD,SAAS,CAACnH,IAAI;UACtDrC,sBAAM,CAACuJ,WAAW,CAACuD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACjC9M,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC;UAC5B9M,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACE,oBAAoB,CAAC;UAE/CN,sBAAsB,CAACxF,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QAEFvH,EAAE,CAAC,+DAA+D,EAAE,YAAM;UACxE,IAAM4S,WAAW,GAAGxP,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,mBAAmB,CAAC;UACjEiS,WAAW,CAACrN,SAAS,CAAC,UAACiH,GAAG,EAAEqG,EAAE;YAAA,OAAKA,EAAE,CAAC,CAAC;UAAA,EAAC;UAExC,IAAMlD,OAAO,GAAG;YACdtC,oBAAoB,EAAE,IAAI;YAC1BC,cAAc,EAAE;cACdD,oBAAoB,EAAE,IAAI;cAC1BuC,SAAS,EAAE,SAAXA,SAASA,CAAA,EAAQ,CAAC;YACpB;UACF,CAAC;UAED,IAAM1J,OAAO,GAAGvF,YAAY,CAAC+M,kBAAkB,CAAC1L,SAAS,EAAE2N,OAAO,CAAC;UAEnE,OAAOzJ,OAAO,CAAC2B,IAAI,CAAC,YAAM;YACxBxH,sBAAM,CAACyH,UAAU,CAAC8K,WAAW,CAAC;YAC9B,IAAMzF,QAAQ,GAAGyF,WAAW,CAAC/I,SAAS,CAACnH,IAAI;YAC3CrC,sBAAM,CAAC+M,QAAQ,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B9M,sBAAM,CAAC4H,MAAM,CAACkF,QAAQ,CAAC,CAAC,CAAC,CAACE,oBAAoB,CAAC;YAC/CuF,WAAW,CAACrL,OAAO,CAAC,CAAC;UACvB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFvH,EAAE,CAAC,gDAAgD,EAAE,YAAM;UACzDoD,cAAK,CAACC,IAAI,CAAC1C,YAAY,EAAE,mBAAmB,CAAC,CAAC4E,SAAS,CAAC,UAACiH,GAAG,EAAEqG,EAAE;YAAA,OAAKA,EAAE,CAAC,CAAC;UAAA,EAAC;UAE1ElS,YAAY,CAACqM,6BAA6B,GAAG;YAACC,WAAW,EAAE;UAAI,CAAC;UAEhE,IAAM/G,OAAO,GAAGvF,YAAY,CAAC+M,kBAAkB,CAAC1L,SAAS,EAAE;YACzDqL,oBAAoB,EAAE,IAAI;YAC1BC,cAAc,EAAE;cAACD,oBAAoB,EAAE,IAAI;cAAEuC,SAAS,EAAE,SAAXA,SAASA,CAAA,EAAQ,CAAC;YAAC;UAClE,CAAC,CAAC;UAEF,OAAO1J,OAAO,CAAC2B,IAAI,CAAC,YAAM;YACxBxH,sBAAM,CAACuJ,WAAW,CAACjJ,YAAY,CAACqM,6BAA6B,CAAC;YAC9DrM,YAAY,CAACmK,iBAAiB,CAACvD,OAAO,CAAC,CAAC;UAC1C,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF3H,QAAQ,CAAC,oDAAoD,EAAE,YAAM;QACnE,IAAIkT,SAAS;QAEbjP,UAAU,CAAC,YAAM;UACflD,YAAY,CAACkK,MAAM,GAAG;YACpB1H,KAAK,EAAEC,cAAK,CAACC,IAAI,CAAC,CAAC,CAACC,OAAO,CAACC,QAAA,CAAAzF,OAAA,CAAQ0F,OAAO,CAAC,CAAC,CAAC;YAC9CC,kBAAkB,EAAEL,cAAK,CAACC,IAAI,CAAC,CAAC;YAChC6E,UAAU,EAAE,KAAK;YACjBF,SAAS,EAAE;UACb,CAAC;UACD8K,SAAS,GAAG1P,cAAK,CAACC,IAAI,CAAC,CAAC;UACxB1C,YAAY,CAACqM,6BAA6B,GAAG;YAAC6E,KAAK,EAAEiB;UAAS,CAAC;QACjE,CAAC,CAAC;QAEF9S,EAAE,CAAC,6DAA6D,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAiM,UAAA;UAAA,OAAAlM,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAA+L,UAAA;YAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAA5L,IAAA;cAAA;gBAAA4L,UAAA,CAAA5L,IAAA;gBAAA,OAC1DzG,YAAY,CAAC2G,UAAU,CAAC,CAAC;cAAA;gBAE/BjH,sBAAM,CAACyH,UAAU,CAACgL,SAAS,CAAC;cAAC;cAAA;gBAAA,OAAAE,UAAA,CAAAtL,IAAA;YAAA;UAAA,GAAAqL,SAAA;QAAA,CAC9B,GAAC;QAEF/S,EAAE,CAAC,4DAA4D,mBAAA4G,kBAAA,CAAA9I,OAAA,eAAA+I,YAAA,CAAA/I,OAAA,CAAAgJ,IAAA,CAAE,SAAAmM,UAAA;UAAA,OAAApM,YAAA,CAAA/I,OAAA,CAAAmJ,IAAA,WAAAiM,UAAA;YAAA,kBAAAA,UAAA,CAAA/L,IAAA,GAAA+L,UAAA,CAAA9L,IAAA;cAAA;gBAC/DzG,YAAY,CAACqM,6BAA6B,GAAGhL,SAAS;gBAACkR,UAAA,CAAA9L,IAAA;gBAAA,OAEjDzG,YAAY,CAAC2G,UAAU,CAAC,CAAC;cAAA;gBAE/BjH,sBAAM,CAACyH,UAAU,CAACnH,YAAY,CAACkK,MAAM,CAAC1H,KAAK,CAAC;cAAC;cAAA;gBAAA,OAAA+P,UAAA,CAAAxL,IAAA;YAAA;UAAA,GAAAuL,SAAA;QAAA,CAC9C,GAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SOCKET_READY_STATE = exports.MOBIUS_SOCKET_4001_EVENT = exports.MESSAGE_TYPES = void 0;
9
+ var _freeze = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/freeze"));
10
+ /**
11
+ * WebSocket connection ready states.
12
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState
13
+ */
14
+ var SOCKET_READY_STATE = exports.SOCKET_READY_STATE = (0, _freeze.default)({
15
+ /** Connection is being established */
16
+ CONNECTING: 0,
17
+ /** Connection is open and ready to communicate */
18
+ OPEN: 1,
19
+ /** Connection is in the process of closing */
20
+ CLOSING: 2,
21
+ /** Connection is closed */
22
+ CLOSED: 3
23
+ });
24
+
25
+ /**
26
+ * Message type identifiers for socket communications.
27
+ */
28
+ var MESSAGE_TYPES = exports.MESSAGE_TYPES = (0, _freeze.default)({
29
+ /** Authentication message type */
30
+ AUTH: 'auth',
31
+ /** Event acknowledgment message type */
32
+ EVENT_ACK: 'event_ack'
33
+ });
34
+
35
+ /**
36
+ * Event payload for a 4001 event from Mobius.
37
+ * This is defined this way as mobius requires 4001 code to be handled the same way as a registration.down event.
38
+ */
39
+ var MOBIUS_SOCKET_4001_EVENT = exports.MOBIUS_SOCKET_4001_EVENT = {
40
+ type: 'async_event',
41
+ trackingId: '4001-event',
42
+ eventId: '4001-event-id',
43
+ data: {
44
+ eventType: 'registration.down',
45
+ deviceInfo: {
46
+ userId: '4001-user-id',
47
+ device: {
48
+ deviceId: '4001-device-id',
49
+ uri: '4001-device-uri',
50
+ status: 'inactive'
51
+ }
52
+ }
53
+ }
54
+ };
55
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK","MOBIUS_SOCKET_4001_EVENT","type","trackingId","eventId","data","eventType","deviceInfo","userId","device","deviceId","uri","status"],"sources":["constants.ts"],"sourcesContent":["/**\n * WebSocket connection ready states.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState\n */\nexport const SOCKET_READY_STATE = Object.freeze({\n /** Connection is being established */\n CONNECTING: 0,\n /** Connection is open and ready to communicate */\n OPEN: 1,\n /** Connection is in the process of closing */\n CLOSING: 2,\n /** Connection is closed */\n CLOSED: 3,\n});\n\n/**\n * Message type identifiers for socket communications.\n */\nexport const MESSAGE_TYPES = Object.freeze({\n /** Authentication message type */\n AUTH: 'auth',\n /** Event acknowledgment message type */\n EVENT_ACK: 'event_ack',\n});\n\n/**\n * Event payload for a 4001 event from Mobius.\n * This is defined this way as mobius requires 4001 code to be handled the same way as a registration.down event.\n */\nexport const MOBIUS_SOCKET_4001_EVENT = {\n type: 'async_event',\n trackingId: '4001-event',\n eventId: '4001-event-id',\n data: {\n eventType: 'registration.down',\n deviceInfo: {\n userId: '4001-user-id',\n device: {\n deviceId: '4001-device-id',\n uri: '4001-device-uri',\n status: 'inactive',\n },\n },\n },\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,OAAA,CAAAC,OAAA,EAAc;EAC9C;EACAC,UAAU,EAAE,CAAC;EACb;EACAC,IAAI,EAAE,CAAC;EACP;EACAC,OAAO,EAAE,CAAC;EACV;EACAC,MAAM,EAAE;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACO,IAAMC,aAAa,GAAAP,OAAA,CAAAO,aAAA,GAAG,IAAAN,OAAA,CAAAC,OAAA,EAAc;EACzC;EACAM,IAAI,EAAE,MAAM;EACZ;EACAC,SAAS,EAAE;AACb,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACO,IAAMC,wBAAwB,GAAAV,OAAA,CAAAU,wBAAA,GAAG;EACtCC,IAAI,EAAE,aAAa;EACnBC,UAAU,EAAE,YAAY;EACxBC,OAAO,EAAE,eAAe;EACxBC,IAAI,EAAE;IACJC,SAAS,EAAE,mBAAmB;IAC9BC,UAAU,EAAE;MACVC,MAAM,EAAE,cAAc;MACtBC,MAAM,EAAE;QACNC,QAAQ,EAAE,gBAAgB;QAC1BC,GAAG,EAAE,iBAAiB;QACtBC,MAAM,EAAE;MACV;IACF;EACF;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _socket.default;
12
+ }
13
+ });
14
+ var _socket = _interopRequireDefault(require("./socket"));
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {default} from './socket';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA","ignoreList":[]}