@recombine-ai/bosun 0.12.2 → 0.14.0

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 (231) hide show
  1. package/build/client/_app/immutable/assets/0.C52H_1gD.css +1 -0
  2. package/build/client/_app/immutable/assets/0.C52H_1gD.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.C52H_1gD.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/DT-Nc4X8.js +1 -0
  5. package/build/client/_app/immutable/chunks/DT-Nc4X8.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/DT-Nc4X8.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{CFkSbzDR.js → DpK9GbNl.js} +1 -1
  8. package/build/client/_app/immutable/chunks/DpK9GbNl.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/DpK9GbNl.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/DpnRcXcI.js +1 -0
  11. package/build/client/_app/immutable/chunks/DpnRcXcI.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DpnRcXcI.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/WU4sY4ua.js +3 -0
  14. package/build/client/_app/immutable/chunks/WU4sY4ua.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/WU4sY4ua.js.gz +0 -0
  16. package/build/client/_app/immutable/entry/{app.o-KFh_Cb.js → app.Dsozg03K.js} +2 -2
  17. package/build/client/_app/immutable/entry/app.Dsozg03K.js.br +0 -0
  18. package/build/client/_app/immutable/entry/app.Dsozg03K.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/start.u3sAF1g1.js +1 -0
  20. package/build/client/_app/immutable/entry/start.u3sAF1g1.js.br +2 -0
  21. package/build/client/_app/immutable/entry/start.u3sAF1g1.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{0.DzAzg3lC.js → 0.PqjhF1QL.js} +1 -1
  23. package/build/client/_app/immutable/nodes/0.PqjhF1QL.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/0.PqjhF1QL.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{1.CgJnX42R.js → 1.CeaYEPDC.js} +1 -1
  26. package/build/client/_app/immutable/nodes/1.CeaYEPDC.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/1.CeaYEPDC.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/10.DDmx2fJe.js +12 -0
  29. package/build/client/_app/immutable/nodes/10.DDmx2fJe.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/10.DDmx2fJe.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{17.Dh0U5ZLs.js → 17.DSVuCWoY.js} +1 -1
  32. package/build/client/_app/immutable/nodes/17.DSVuCWoY.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/17.DSVuCWoY.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/18.D5HhWZR8.js +11 -0
  35. package/build/client/_app/immutable/nodes/18.D5HhWZR8.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/18.D5HhWZR8.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{2.CUHzTabj.js → 2.D6Bd4az6.js} +1 -1
  38. package/build/client/_app/immutable/nodes/2.D6Bd4az6.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/2.D6Bd4az6.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{3.fG_Roq0i.js → 3.LaYKamuf.js} +1 -1
  41. package/build/client/_app/immutable/nodes/3.LaYKamuf.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/3.LaYKamuf.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{4.CLFkMI6C.js → 4.DvSSPHp6.js} +1 -1
  44. package/build/client/_app/immutable/nodes/4.DvSSPHp6.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/4.DvSSPHp6.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{5.DTNqvnb6.js → 5.D0AE4cAT.js} +1 -1
  47. package/build/client/_app/immutable/nodes/5.D0AE4cAT.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/5.D0AE4cAT.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{6.4xYVoDHd.js → 6.l_w8FITo.js} +1 -1
  50. package/build/client/_app/immutable/nodes/6.l_w8FITo.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/6.l_w8FITo.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{8.CRjSjXfT.js → 8.D51f7wuE.js} +1 -1
  53. package/build/client/_app/immutable/nodes/8.D51f7wuE.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/8.D51f7wuE.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/9.6UjiO-jB.js +2 -0
  56. package/build/client/_app/immutable/nodes/9.6UjiO-jB.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/9.6UjiO-jB.js.gz +0 -0
  58. package/build/client/_app/version.json +1 -1
  59. package/build/client/_app/version.json.br +0 -0
  60. package/build/client/_app/version.json.gz +0 -0
  61. package/build/server/chunks/{0-DZjFjCYb.js → 0-C8GM7KhM.js} +4 -4
  62. package/build/server/chunks/{0-DZjFjCYb.js.map → 0-C8GM7KhM.js.map} +1 -1
  63. package/build/server/chunks/{1-BnDJQctI.js → 1-D6beYunF.js} +3 -3
  64. package/build/server/chunks/{1-BnDJQctI.js.map → 1-D6beYunF.js.map} +1 -1
  65. package/build/server/chunks/{10-CaY_D1yr.js → 10-DUm1sxLB.js} +3 -3
  66. package/build/server/chunks/{10-CaY_D1yr.js.map → 10-DUm1sxLB.js.map} +1 -1
  67. package/build/server/chunks/{15-BMEAVslz.js → 15-BRw8wtLp.js} +2 -2
  68. package/build/server/chunks/{15-BMEAVslz.js.map → 15-BRw8wtLp.js.map} +1 -1
  69. package/build/server/chunks/{17-n_LzmOIf.js → 17-DmTinIOr.js} +3 -3
  70. package/build/server/chunks/{17-n_LzmOIf.js.map → 17-DmTinIOr.js.map} +1 -1
  71. package/build/server/chunks/{18-DGfJMJic.js → 18-WwHhv16m.js} +3 -3
  72. package/build/server/chunks/{18-DGfJMJic.js.map → 18-WwHhv16m.js.map} +1 -1
  73. package/build/server/chunks/{2-CNylBPwc.js → 2-OnF-oKQM.js} +3 -3
  74. package/build/server/chunks/{2-CNylBPwc.js.map → 2-OnF-oKQM.js.map} +1 -1
  75. package/build/server/chunks/{3-Cfx-Gcr_.js → 3-Dd-gL5uB.js} +3 -3
  76. package/build/server/chunks/{3-Cfx-Gcr_.js.map → 3-Dd-gL5uB.js.map} +1 -1
  77. package/build/server/chunks/{4-B6TVtBCA.js → 4-C3x6cmyv.js} +3 -3
  78. package/build/server/chunks/{4-B6TVtBCA.js.map → 4-C3x6cmyv.js.map} +1 -1
  79. package/build/server/chunks/{5-BLm6rhN5.js → 5-CiuoFl6L.js} +3 -3
  80. package/build/server/chunks/{5-BLm6rhN5.js.map → 5-CiuoFl6L.js.map} +1 -1
  81. package/build/server/chunks/{6-DNRqV68B.js → 6-D_KHM930.js} +3 -3
  82. package/build/server/chunks/{6-DNRqV68B.js.map → 6-D_KHM930.js.map} +1 -1
  83. package/build/server/chunks/{8-CMgxOut_.js → 8-WnGdxpYD.js} +3 -3
  84. package/build/server/chunks/{8-CMgxOut_.js.map → 8-WnGdxpYD.js.map} +1 -1
  85. package/build/server/chunks/{9-6WeCfWuG.js → 9-CwinUUou.js} +3 -3
  86. package/build/server/chunks/{9-6WeCfWuG.js.map → 9-CwinUUou.js.map} +1 -1
  87. package/build/server/chunks/{AgentSidebar-DvIlda-E.js → AgentSidebar-C--dGIV5.js} +4 -4
  88. package/build/server/chunks/{AgentSidebar-DvIlda-E.js.map → AgentSidebar-C--dGIV5.js.map} +1 -1
  89. package/build/server/chunks/{Button-BLigKkGG.js → Button-oIUr2LUP.js} +2 -2
  90. package/build/server/chunks/{Button-BLigKkGG.js.map → Button-oIUr2LUP.js.map} +1 -1
  91. package/build/server/chunks/{ChatStepTrace-CqqIjRLU.js → ChatStepTrace-DirlvCw9.js} +97 -14
  92. package/build/server/chunks/ChatStepTrace-DirlvCw9.js.map +1 -0
  93. package/build/server/chunks/{ContextEditor-D5B2mO8Z.js → ContextEditor-ngRBOJVc.js} +4 -4
  94. package/build/server/chunks/{ContextEditor-D5B2mO8Z.js.map → ContextEditor-ngRBOJVc.js.map} +1 -1
  95. package/build/server/chunks/{Dropdown-7dp1qEYv.js → Dropdown-DfCyYHqi.js} +2 -2
  96. package/build/server/chunks/{Dropdown-7dp1qEYv.js.map → Dropdown-DfCyYHqi.js.map} +1 -1
  97. package/build/server/chunks/{Icon-CXFHkSIr.js → Icon-DadJPtVP.js} +2 -2
  98. package/build/server/chunks/{Icon-CXFHkSIr.js.map → Icon-DadJPtVP.js.map} +1 -1
  99. package/build/server/chunks/{Input-OdQKNdS6.js → Input-R74u4cO5.js} +2 -2
  100. package/build/server/chunks/{Input-OdQKNdS6.js.map → Input-R74u4cO5.js.map} +1 -1
  101. package/build/server/chunks/{Modal-DtVsRmmO.js → Modal-CAzVFw5x.js} +4 -4
  102. package/build/server/chunks/Modal-CAzVFw5x.js.map +1 -0
  103. package/build/server/chunks/{Tab-CD1H0E3P.js → Tab-D13L_Up5.js} +4 -4
  104. package/build/server/chunks/{Tab-CD1H0E3P.js.map → Tab-D13L_Up5.js.map} +1 -1
  105. package/build/server/chunks/{_layout.svelte-B-CkD4a0.js → _layout.svelte-BIMexfnk.js} +128 -15
  106. package/build/server/chunks/_layout.svelte-BIMexfnk.js.map +1 -0
  107. package/build/server/chunks/{_layout.svelte-C5eqrEen.js → _layout.svelte-D4EOIHJJ.js} +8 -8
  108. package/build/server/chunks/_layout.svelte-D4EOIHJJ.js.map +1 -0
  109. package/build/server/chunks/{_layout.svelte-BBFCF-xw.js → _layout.svelte-DK7yl8vI.js} +17 -17
  110. package/build/server/chunks/_layout.svelte-DK7yl8vI.js.map +1 -0
  111. package/build/server/chunks/{_layout.svelte-cPhmW5bZ.js → _layout.svelte-Dk-9LkfL.js} +10 -10
  112. package/build/server/chunks/_layout.svelte-Dk-9LkfL.js.map +1 -0
  113. package/build/server/chunks/{_page.svelte-0J2xaeyC.js → _page.svelte-B81e653N.js} +25 -174
  114. package/build/server/chunks/_page.svelte-B81e653N.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-_sXVlB3C.js → _page.svelte-BTKQMuSz.js} +88 -37
  116. package/build/server/chunks/_page.svelte-BTKQMuSz.js.map +1 -0
  117. package/build/server/chunks/{_page.svelte-Cxh9_vUl.js → _page.svelte-BkmclXmx.js} +17 -12
  118. package/build/server/chunks/_page.svelte-BkmclXmx.js.map +1 -0
  119. package/build/server/chunks/{_page.svelte-DbV3HGn5.js → _page.svelte-CeO_ScC8.js} +2 -2
  120. package/build/server/chunks/{_page.svelte-DbV3HGn5.js.map → _page.svelte-CeO_ScC8.js.map} +1 -1
  121. package/build/server/chunks/{_page.svelte-BYVcy49A.js → _page.svelte-Cu8a_kUO.js} +4 -4
  122. package/build/server/chunks/{_page.svelte-BYVcy49A.js.map → _page.svelte-Cu8a_kUO.js.map} +1 -1
  123. package/build/server/chunks/{_page.svelte-BgoX8Y6N.js → _page.svelte-D5S0QjlI.js} +12 -12
  124. package/build/server/chunks/_page.svelte-D5S0QjlI.js.map +1 -0
  125. package/build/server/chunks/{_page.svelte-CqGOvPRO.js → _page.svelte-YoDx7gDL.js} +6 -6
  126. package/build/server/chunks/{_page.svelte-CqGOvPRO.js.map → _page.svelte-YoDx7gDL.js.map} +1 -1
  127. package/build/server/chunks/{_page.svelte-C_S_qUgZ.js → _page.svelte-ej3vdYeF.js} +10 -10
  128. package/build/server/chunks/{_page.svelte-C_S_qUgZ.js.map → _page.svelte-ej3vdYeF.js.map} +1 -1
  129. package/build/server/chunks/{agents-context-rV2narXG.js → agents-context-w03Lz_6n.js} +2 -2
  130. package/build/server/chunks/{agents-context-rV2narXG.js.map → agents-context-w03Lz_6n.js.map} +1 -1
  131. package/build/server/chunks/client-WFEvX_be.js +33 -0
  132. package/build/server/chunks/client-WFEvX_be.js.map +1 -0
  133. package/build/server/chunks/{conversation-view-memory-BZguFlTt.js → conversation-view-memory-B0PllWRL.js} +2 -2
  134. package/build/server/chunks/{conversation-view-memory-BZguFlTt.js.map → conversation-view-memory-B0PllWRL.js.map} +1 -1
  135. package/build/server/chunks/{edit-workspace-context-B1nYQ5hD.js → edit-workspace-context-BEioXKWB.js} +2 -2
  136. package/build/server/chunks/{edit-workspace-context-B1nYQ5hD.js.map → edit-workspace-context-BEioXKWB.js.map} +1 -1
  137. package/build/server/chunks/error.svelte-BjIDhioc.js +15 -0
  138. package/build/server/chunks/{error.svelte-DA-yulF5.js.map → error.svelte-BjIDhioc.js.map} +1 -1
  139. package/build/server/chunks/{index-CSpGrMM2.js → index-rHCWxLFZ.js} +5 -5
  140. package/build/server/chunks/{index-CSpGrMM2.js.map → index-rHCWxLFZ.js.map} +1 -1
  141. package/build/server/chunks/{index-server-DsYEXu5n.js → index-server-BMxlf3ZC.js} +2 -2
  142. package/build/server/chunks/{index-server-DsYEXu5n.js.map → index-server-BMxlf3ZC.js.map} +1 -1
  143. package/build/server/chunks/index2-DdOgqE2_.js +24 -0
  144. package/build/server/chunks/index2-DdOgqE2_.js.map +1 -0
  145. package/build/server/chunks/{index3-qVi61CNf.js → index3-DC4GTqD1.js} +2 -2
  146. package/build/server/chunks/{index3-qVi61CNf.js.map → index3-DC4GTqD1.js.map} +1 -1
  147. package/build/server/chunks/{root-CDJwhpIB.js → root-UeqiktJA.js} +118 -4
  148. package/build/server/chunks/root-UeqiktJA.js.map +1 -0
  149. package/build/server/chunks/{state.svelte-DT7cgvTK.js → state.svelte-CLOYXiU6.js} +3 -3
  150. package/build/server/chunks/{state.svelte-DT7cgvTK.js.map → state.svelte-CLOYXiU6.js.map} +1 -1
  151. package/build/server/index.js +10 -11
  152. package/build/server/index.js.map +1 -1
  153. package/build/server/manifest.js +14 -14
  154. package/build/server/manifest.js.map +1 -1
  155. package/package.json +2 -2
  156. package/src/backend/tests/academy-json.spec.ts +65 -0
  157. package/src/backend/tests/academy.ts +83 -46
  158. package/src/backend/tests/data.ts +6 -2
  159. package/src/backend/tests/emulate-agents.ts +40 -4
  160. package/src/backend/tests/json-field-match.ts +73 -0
  161. package/src/backend/tests/pii-sanitized-test-drafts.spec.ts +162 -0
  162. package/src/backend/tests/pii-sanitized-test-drafts.ts +106 -0
  163. package/src/backend/tests/pii-sanitizer.spec.ts +145 -0
  164. package/src/backend/tests/pii-sanitizer.ts +171 -0
  165. package/src/backend/tests/router.ts +42 -1
  166. package/src/backend/tests/suite.spec.ts +54 -0
  167. package/src/backend/tests/suite.ts +20 -11
  168. package/build/client/_app/immutable/assets/0.CH-WU4JN.css +0 -1
  169. package/build/client/_app/immutable/assets/0.CH-WU4JN.css.br +0 -0
  170. package/build/client/_app/immutable/assets/0.CH-WU4JN.css.gz +0 -0
  171. package/build/client/_app/immutable/chunks/CFkSbzDR.js.br +0 -0
  172. package/build/client/_app/immutable/chunks/CFkSbzDR.js.gz +0 -0
  173. package/build/client/_app/immutable/chunks/DQmjMBKm.js +0 -1
  174. package/build/client/_app/immutable/chunks/DQmjMBKm.js.br +0 -0
  175. package/build/client/_app/immutable/chunks/DQmjMBKm.js.gz +0 -0
  176. package/build/client/_app/immutable/chunks/DUdfYZrb.js +0 -3
  177. package/build/client/_app/immutable/chunks/DUdfYZrb.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/DUdfYZrb.js.gz +0 -0
  179. package/build/client/_app/immutable/chunks/W6dJ5sed.js +0 -1
  180. package/build/client/_app/immutable/chunks/W6dJ5sed.js.br +0 -0
  181. package/build/client/_app/immutable/chunks/W6dJ5sed.js.gz +0 -0
  182. package/build/client/_app/immutable/entry/app.o-KFh_Cb.js.br +0 -0
  183. package/build/client/_app/immutable/entry/app.o-KFh_Cb.js.gz +0 -0
  184. package/build/client/_app/immutable/entry/start.B5RrntSX.js +0 -1
  185. package/build/client/_app/immutable/entry/start.B5RrntSX.js.br +0 -2
  186. package/build/client/_app/immutable/entry/start.B5RrntSX.js.gz +0 -0
  187. package/build/client/_app/immutable/nodes/0.DzAzg3lC.js.br +0 -0
  188. package/build/client/_app/immutable/nodes/0.DzAzg3lC.js.gz +0 -0
  189. package/build/client/_app/immutable/nodes/1.CgJnX42R.js.br +0 -0
  190. package/build/client/_app/immutable/nodes/1.CgJnX42R.js.gz +0 -0
  191. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js +0 -7
  192. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js.br +0 -0
  193. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js.gz +0 -0
  194. package/build/client/_app/immutable/nodes/17.Dh0U5ZLs.js.br +0 -0
  195. package/build/client/_app/immutable/nodes/17.Dh0U5ZLs.js.gz +0 -0
  196. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js +0 -11
  197. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js.br +0 -0
  198. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js.gz +0 -0
  199. package/build/client/_app/immutable/nodes/2.CUHzTabj.js.br +0 -0
  200. package/build/client/_app/immutable/nodes/2.CUHzTabj.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/3.fG_Roq0i.js.br +0 -0
  202. package/build/client/_app/immutable/nodes/3.fG_Roq0i.js.gz +0 -0
  203. package/build/client/_app/immutable/nodes/4.CLFkMI6C.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/4.CLFkMI6C.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/5.DTNqvnb6.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/5.DTNqvnb6.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/6.4xYVoDHd.js.br +0 -0
  208. package/build/client/_app/immutable/nodes/6.4xYVoDHd.js.gz +0 -0
  209. package/build/client/_app/immutable/nodes/8.CRjSjXfT.js.br +0 -0
  210. package/build/client/_app/immutable/nodes/8.CRjSjXfT.js.gz +0 -0
  211. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js +0 -2
  212. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js.br +0 -0
  213. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js.gz +0 -0
  214. package/build/server/chunks/ChatStepTrace-CqqIjRLU.js.map +0 -1
  215. package/build/server/chunks/MockGenerator-GEpXTgX0.js +0 -117
  216. package/build/server/chunks/MockGenerator-GEpXTgX0.js.map +0 -1
  217. package/build/server/chunks/Modal-DtVsRmmO.js.map +0 -1
  218. package/build/server/chunks/_layout.svelte-B-CkD4a0.js.map +0 -1
  219. package/build/server/chunks/_layout.svelte-BBFCF-xw.js.map +0 -1
  220. package/build/server/chunks/_layout.svelte-C5eqrEen.js.map +0 -1
  221. package/build/server/chunks/_layout.svelte-cPhmW5bZ.js.map +0 -1
  222. package/build/server/chunks/_page.svelte-0J2xaeyC.js.map +0 -1
  223. package/build/server/chunks/_page.svelte-BgoX8Y6N.js.map +0 -1
  224. package/build/server/chunks/_page.svelte-Cxh9_vUl.js.map +0 -1
  225. package/build/server/chunks/_page.svelte-_sXVlB3C.js.map +0 -1
  226. package/build/server/chunks/error.svelte-DA-yulF5.js +0 -15
  227. package/build/server/chunks/events-BQ65tUJo.js +0 -120
  228. package/build/server/chunks/events-BQ65tUJo.js.map +0 -1
  229. package/build/server/chunks/index2-DO4B3D-P.js +0 -52
  230. package/build/server/chunks/index2-DO4B3D-P.js.map +0 -1
  231. package/build/server/chunks/root-CDJwhpIB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_page.svelte-C_S_qUgZ.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js"],"sourcesContent":["import { e as escape_html, f as derived, a as ensure_array_like, c as attr_style, b as attr_class, g as clsx } from \"../../../../../../chunks/index.js\";\nimport { o as onDestroy } from \"../../../../../../chunks/index-server.js\";\nimport { p as page } from \"../../../../../../chunks/index2.js\";\nimport { B as Button } from \"../../../../../../chunks/Button.js\";\n/* empty css */\nimport { g as getPersistedTelescopeSourceId, T as TelescopeClient } from \"../../../../../../chunks/source-selection.js\";\nimport { b as buildResponseLatencySpans, f as findResponseLatencyUserTurn, R as RESPONSE_LATENCY_THRESHOLD_MS } from \"../../../../../../chunks/latency.js\";\nimport { g as getConversationViewMemory, c as conversationViewMemoryKey } from \"../../../../../../chunks/conversation-view-memory.js\";\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const SPEECH_BUBBLE_HEIGHT_PX = 30;\n const TIMELINE_RULER_HEIGHT_PX = 32;\n const TIMELINE_ROW_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX;\n const TIMELINE_ROW_GAP_PX = 5;\n const WAVEFORM_ROW_HEIGHT_PX = 160;\n const SPEECH_BUBBLE_VERTICAL_GAP_PX = TIMELINE_ROW_GAP_PX;\n const SPEECH_BUBBLE_LEVEL_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX + SPEECH_BUBBLE_VERTICAL_GAP_PX;\n const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS = 500;\n const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS = 2500;\n const SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS = 3e4;\n const RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS = 250;\n const GUIDE_ROW_LABELS = /* @__PURE__ */ new Set([\"VAD\", \"Playback\"]);\n const client = new TelescopeClient(fetch);\n const BOSUN_COLORS = {\n blue: \"#569cd6\",\n green: \"#93FF6D\",\n greenDark: \"#00B58A\",\n orange: \"#ce9178\",\n purple: \"#81147D\",\n red: \"#FF6666\",\n gray: \"#767676\"\n };\n const ROW_DEFS = [\n {\n label: \"VAD\",\n eventTypes: [\"vad.activated\", \"vad.deactivated\"]\n },\n {\n label: \"STT\",\n eventTypes: [\n \"stt.started\",\n \"stt.interim\",\n \"stt.final\",\n \"stt.final_transcript\"\n ]\n },\n { label: \"Trigger\", eventTypes: [\"speech.created\"] },\n {\n label: \"Reply Pending\",\n eventTypes: [\"reply.pending.started\", \"reply.pending.completed\"]\n },\n {\n label: \"LLM Transport\",\n eventTypes: [\n \"llm.connect_tcp.started\",\n \"llm.connect_tcp.completed\",\n \"llm.connect_tcp.failed\",\n \"llm.start_tls.started\",\n \"llm.start_tls.completed\",\n \"llm.start_tls.failed\"\n ]\n },\n {\n label: \"LLM Wait\",\n eventTypes: [\"llm.wait.started\", \"llm.requested\", \"llm.wait.completed\"]\n },\n {\n label: \"LLM Stream\",\n eventTypes: [\n \"llm.stream.started\",\n \"llm.first_token\",\n \"llm.completed\",\n \"llm.stream.completed\"\n ]\n },\n {\n label: \"TTS Text\",\n eventTypes: [\"tts.text.first_sent\", \"tts.text.completed\"]\n },\n {\n label: \"Provider\",\n eventTypes: [\n \"tts.provider.started\",\n \"tts.audio.first_received\",\n \"tts.audio.last_received\",\n \"tts.provider.completed\"\n ]\n },\n {\n label: \"Decode\",\n eventTypes: [\"tts.decode.started\", \"tts.decode.completed\"]\n },\n {\n label: \"Output Queue\",\n eventTypes: [\"audio.output.wait.started\", \"audio.output.wait.completed\"]\n },\n {\n label: \"Playback\",\n eventTypes: [\n \"audio.playback.started\",\n \"audio.playback.stopped\",\n \"audio.playback.ended\"\n ]\n },\n { label: \"Response Latency\" },\n {\n label: \"Interruptions\",\n eventTypes: [\"interruption.detected\", \"audio.playback.interrupted\"]\n },\n { label: \"Other\" }\n ];\n const TIMELINE_ROW_LABELS = new Set(ROW_DEFS.map((row) => row.label));\n const COLOR_BY_KEY = {\n call: tintHex(BOSUN_COLORS.gray, 0.2),\n vad: tintHex(BOSUN_COLORS.purple, 0.35),\n stt: tintHex(BOSUN_COLORS.purple, 0.2),\n trigger: BOSUN_COLORS.greenDark,\n \"response.latency.ok\": BOSUN_COLORS.green,\n \"response.latency.high\": BOSUN_COLORS.red,\n \"reply.pending\": tintHex(BOSUN_COLORS.greenDark, 0.18),\n \"llm.transport\": tintHex(BOSUN_COLORS.blue, 0.18),\n \"llm.wait\": tintHex(BOSUN_COLORS.blue, -0.25),\n \"llm.stream\": BOSUN_COLORS.blue,\n \"tts.text\": BOSUN_COLORS.orange,\n \"tts.provider.lifecycle\": tintHex(BOSUN_COLORS.purple, -0.18),\n \"tts.provider\": tintHex(BOSUN_COLORS.purple, 0.12),\n \"tts.decode\": tintHex(BOSUN_COLORS.orange, -0.12),\n \"audio.output.wait\": BOSUN_COLORS.orange,\n playback: tintHex(BOSUN_COLORS.greenDark, -0.08),\n interruption: BOSUN_COLORS.orange,\n other: BOSUN_COLORS.gray\n };\n const SPAN_RULES = [\n {\n startEventType: \"reply.pending.started\",\n endEventType: \"reply.pending.completed\",\n row: \"Reply Pending\",\n colorKey: \"reply.pending\",\n label: \"Reply pending\",\n description: \"Derived from adjacent reply-pending lifecycle events\"\n },\n {\n startEventType: \"llm.connect_tcp.started\",\n endEventType: \"llm.connect_tcp.completed\",\n row: \"LLM Transport\",\n colorKey: \"llm.transport\",\n label: \"Connect TCP\",\n description: \"Derived from adjacent TCP connect lifecycle events\"\n },\n {\n startEventType: \"llm.start_tls.started\",\n endEventType: \"llm.start_tls.completed\",\n row: \"LLM Transport\",\n colorKey: \"llm.transport\",\n label: \"Start TLS\",\n description: \"Derived from adjacent TLS lifecycle events\"\n },\n {\n startEventType: \"llm.wait.started\",\n endEventType: \"llm.wait.completed\",\n row: \"LLM Wait\",\n colorKey: \"llm.wait\",\n label: \"LLM wait\",\n description: \"Derived from adjacent LLM wait lifecycle events\"\n },\n {\n startEventType: \"llm.stream.started\",\n endEventType: \"llm.stream.completed\",\n row: \"LLM Stream\",\n colorKey: \"llm.stream\",\n label: \"LLM stream\",\n description: \"Derived from adjacent LLM stream lifecycle events\"\n },\n {\n startEventType: \"tts.text.first_sent\",\n endEventType: \"tts.text.completed\",\n row: \"TTS Text\",\n colorKey: \"tts.text\",\n label: \"TTS text send\",\n description: \"Derived from adjacent TTS text send and completion events\"\n },\n {\n startEventType: \"tts.provider.started\",\n endEventType: \"tts.audio.first_received\",\n row: \"Provider\",\n colorKey: \"tts.provider.lifecycle\",\n label: \"Provider wait\",\n description: \"Derived from adjacent provider start and first-audio events\"\n },\n {\n startEventType: \"tts.audio.first_received\",\n endEventType: \"tts.provider.completed\",\n row: \"Provider\",\n colorKey: \"tts.provider\",\n label: \"Provider audio\",\n description: \"Derived from adjacent provider first-audio and completion events\"\n },\n {\n startEventType: \"tts.decode.started\",\n endEventType: \"tts.decode.completed\",\n row: \"Decode\",\n colorKey: \"tts.decode\",\n label: \"Decode\",\n description: \"Derived from adjacent local decode lifecycle events\"\n },\n {\n startEventType: \"audio.output.wait.started\",\n endEventType: \"audio.output.wait.completed\",\n row: \"Output Queue\",\n colorKey: \"audio.output.wait\",\n label: \"Output queue\",\n description: \"Derived from adjacent audio-output wait lifecycle events\"\n },\n {\n startEventType: \"audio.playback.started\",\n endEventType: \"audio.playback.stopped\",\n row: \"Playback\",\n colorKey: \"playback\",\n label: \"Playback\",\n description: \"Derived from adjacent playback start and playback stop events\"\n }\n ];\n const SPAN_RULE_BY_START = new Map(SPAN_RULES.map((rule) => [rule.startEventType, rule]));\n function emptyRecordingResponse() {\n return {\n exists: false,\n audioUrl: null,\n fileName: null,\n mimeType: null,\n size: null,\n uploadedAt: null,\n alignmentOffsetMs: 0\n };\n }\n const viewMemory = getConversationViewMemory();\n const initialSourceId = getPersistedTelescopeSourceId() ?? \"\";\n const initialConversationId = page.params.conversationId ?? \"\";\n const initialMemoryKey = conversationViewMemoryKey(initialConversationId, initialSourceId);\n const initialMemory = viewMemory.latency.get(initialMemoryKey);\n client.setSourceId(initialSourceId || void 0);\n let sourceId = initialSourceId;\n let conversation = initialMemory?.conversation ?? null;\n let traces = initialMemory?.traces ?? [];\n let conversationTraces = initialMemory?.conversationTraces ?? [];\n let dataLoaded = initialMemory?.dataLoaded ?? false;\n let error = initialMemory?.error ?? null;\n let recording = initialMemory?.recording ?? emptyRecordingResponse();\n let recordingLoaded = initialMemory?.recordingLoaded ?? false;\n let recordingError = initialMemory?.recordingError ?? null;\n let uploadInFlight = false;\n let waveform = initialMemory?.waveform ?? null;\n let waveformError = initialMemory?.waveformError ?? null;\n let playbackPositionMs = initialMemory?.playbackPositionMs ?? 0;\n let playbackPlaying = false;\n let playbackError = null;\n let alignmentSaving = false;\n let alignmentError = null;\n let viewDirty = initialMemory?.viewDirty ?? false;\n let viewportStartMs = null;\n let viewportEndMs = null;\n let scrollViewportEl = null;\n let fileInputEl = null;\n let humanSpeechBubbleReservedLevels = initialMemory?.humanSpeechBubbleReservedLevels ?? 1;\n let copyLatencyState = \"idle\";\n let loadKey = \"\";\n let playbackFrame = 0;\n let playbackAudioBuffer = initialMemory?.playbackAudioBuffer ?? null;\n let playbackAudioContext = null;\n let playbackSourceNode = null;\n let playbackStartedAtMs = null;\n let playbackStartedAtContextTime = null;\n const conversationId = derived(() => page.params.conversationId);\n function buildRecordingApiUrlFor(cid, nextSourceId) {\n const params = new URLSearchParams();\n if (nextSourceId) params.set(\"source\", nextSourceId);\n const search = params.toString();\n return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : \"\"}`;\n }\n const recordingApiUrl = derived(() => {\n if (!conversationId()) return \"\";\n return buildRecordingApiUrlFor(conversationId(), sourceId);\n });\n const timelineOriginMs = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n for (const trace of traces) {\n if (typeof trace.atMs !== \"number\" || !Number.isFinite(trace.atMs)) continue;\n min = Math.min(min, trace.atMs);\n }\n if (Number.isFinite(min)) return min;\n if (typeof conversation?.createdAt === \"number\" && Number.isFinite(conversation.createdAt)) {\n return conversation.createdAt;\n }\n return Number.isFinite(min) ? min : 0;\n });\n const callSegments = derived(() => buildCallLatencySegments(traces));\n const latencyTraceCount = derived(() => traces.length);\n const aiResponses = derived(() => buildAiResponses());\n const playbackSpeechMatches = derived(() => buildPlaybackSpeechMatches(callSegments(), aiResponses()));\n const timelineSegments = derived(() => {\n const playbackSegments = callSegments().map((segment) => {\n const speech = playbackSpeechMatches().bySegmentId.get(segment.id);\n if (!speech || segment.row !== \"Playback\" || segment.durationMs <= 0) return segment;\n return {\n ...segment,\n speechText: speech.text,\n speechFullText: speech.fullText,\n speechTraceLabel: speech.traceLabel\n };\n });\n return [\n ...playbackSegments,\n ...buildStandaloneWaitSegments(aiResponses(), playbackSpeechMatches().responseIds)\n ];\n });\n const timelineRows = derived(() => {\n const grouped = /* @__PURE__ */ new Map();\n for (const segment of timelineSegments()) {\n const items = grouped.get(segment.row);\n if (items) items.push(segment);\n else grouped.set(segment.row, [segment]);\n }\n return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);\n });\n const speechBubbleBaseLayouts = derived(() => buildSpeechBubbleBaseLayouts());\n const humanSpeechBubbleLevelCount = derived(() => Math.max(humanSpeechBubbleReservedLevels, speechBubbleRoleLevelCount(speechBubbleBaseLayouts(), \"human\")));\n const speechBubbles = derived(() => compactSpeechBubbleLayouts(speechBubbleBaseLayouts()));\n const humanSpeechBubbleLaneHeightPx = derived(() => speechBubbleLaneHeightPx(humanSpeechBubbleLevelCount()));\n const speechBubbleAreaHeightPx = derived(() => humanSpeechBubbleLaneHeightPx());\n const timelineRowsHeightPx = derived(() => timelineRows().length * TIMELINE_ROW_HEIGHT_PX + Math.max(0, timelineRows().length - 1) * TIMELINE_ROW_GAP_PX);\n const traceRowsToBubbleGapPx = derived(() => timelineRows().length > 0 ? TIMELINE_ROW_GAP_PX : 0);\n const speechBubbleAreaTopPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx());\n const waveformRowVisible = derived(() => recording.exists);\n const waveformRowHeightPx = derived(() => waveformRowVisible() ? TIMELINE_ROW_GAP_PX + WAVEFORM_ROW_HEIGHT_PX : 0);\n const guideLines = derived(() => buildGuideLines(timelineRows()));\n const recordingStartMs = derived(() => {\n if (!waveform) return null;\n return timelineOriginMs() + recording.alignmentOffsetMs;\n });\n const timelinePlotHeightPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx() + speechBubbleAreaHeightPx() + waveformRowHeightPx());\n const playbackAbsoluteMs = derived(() => {\n if (recordingStartMs() == null) return null;\n return recordingStartMs() + playbackPositionMs;\n });\n const playbackCursor = derived(() => {\n const absoluteMs = playbackAbsoluteMs();\n if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;\n return {\n leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),\n topPx: TIMELINE_RULER_HEIGHT_PX,\n heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)\n };\n });\n const timelineOriginLine = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (timelineOriginMs() < viewportStartMs || timelineOriginMs() > viewportEndMs) return null;\n return {\n leftPercent: (timelineOriginMs() - viewportStartMs) / durationMs * 100,\n topPx: TIMELINE_RULER_HEIGHT_PX,\n heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)\n };\n });\n const contentExtent = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments()) {\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (waveform && recordingStartMs() != null) {\n min = Math.min(min, recordingStartMs());\n max = Math.max(max, recordingStartMs() + waveform.durationMs);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return null;\n if (max <= min) max = min + 1;\n return { min, max };\n });\n const conversationTraceExtent = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments()) {\n if (!TIMELINE_ROW_LABELS.has(segment.row)) continue;\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return null;\n if (max <= min) max = min + 1;\n return { min, max };\n });\n const viewportDurationMs = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n return duration > 0 ? duration : null;\n });\n const visibleTicks = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return [];\n return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs());\n });\n function saveViewMemory(key = loadKey) {\n if (!key) return;\n const previous = viewMemory.latency.get(key);\n const memory = {\n conversation,\n traces,\n conversationTraces,\n dataLoaded,\n error,\n recording,\n recordingLoaded,\n recordingError,\n waveform,\n waveformError,\n playbackAudioBuffer,\n playbackPositionMs,\n viewportStartMs,\n viewportEndMs,\n viewportOriginMs: timelineOriginMs(),\n viewDirty,\n humanSpeechBubbleReservedLevels,\n scrollTop: previous?.scrollTop ?? scrollViewportEl?.scrollTop ?? 0,\n scrollLeft: previous?.scrollLeft ?? scrollViewportEl?.scrollLeft ?? 0\n };\n viewMemory.latency.set(key, memory);\n const cid = conversationId();\n const currentSourceId = getPersistedTelescopeSourceId() ?? \"\";\n if (cid && currentSourceId && key === conversationViewMemoryKey(cid, \"\")) {\n viewMemory.latency.set(conversationViewMemoryKey(cid, currentSourceId), memory);\n }\n }\n onDestroy(() => {\n saveViewMemory();\n stopPlayback(false);\n void closePlaybackAudioContext();\n });\n function normalizeNonEmptyString(value) {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed ? trimmed : null;\n }\n function ms(value) {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n }\n function clampByte(value) {\n return Math.max(0, Math.min(255, Math.round(value)));\n }\n function clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n }\n function tintHex(hex, amount) {\n const raw = (hex ?? \"\").trim().replace(/^#/, \"\");\n const expanded = raw.length === 3 ? raw.split(\"\").map((part) => `${part}${part}`).join(\"\") : raw;\n if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n const t = Math.abs(Math.max(-1, Math.min(1, amount)));\n const target = amount >= 0 ? 255 : 0;\n return `#${clampByte(r + (target - r) * t).toString(16).padStart(2, \"0\")}${clampByte(g + (target - g) * t).toString(16).padStart(2, \"0\")}${clampByte(b + (target - b) * t).toString(16).padStart(2, \"0\")}`;\n }\n function fmtSignedMs(value) {\n if (value == null || !Number.isFinite(value)) return \"0 ms\";\n const rounded = Math.round(value);\n if (rounded === 0) return \"0 ms\";\n return `${rounded > 0 ? \"+\" : \"\"}${rounded} ms`;\n }\n function formatRelativeTime(offsetMs) {\n if (!Number.isFinite(offsetMs)) return \"—\";\n const sign = offsetMs < 0 ? \"-\" : \"\";\n const abs = Math.abs(offsetMs);\n if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;\n if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;\n const totalSeconds = abs / 1e3;\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds - minutes * 60;\n return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, \"0\")}`;\n }\n function safeJson(value) {\n try {\n return JSON.stringify(value ?? null, null, 2);\n } catch {\n return String(value);\n }\n }\n async function copyLatencyStream() {\n try {\n await navigator.clipboard.writeText(safeJson(traces));\n copyLatencyState = \"ok\";\n window.setTimeout(\n () => {\n copyLatencyState = \"idle\";\n },\n 2e3\n );\n } catch (reason) {\n console.error(\"Failed to copy latency stream\", reason);\n copyLatencyState = \"error\";\n window.setTimeout(\n () => {\n copyLatencyState = \"idle\";\n },\n 3e3\n );\n }\n }\n function describeTrace(trace) {\n const time = typeof trace.createdAt === \"number\" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : \"unknown time\";\n if (trace.traceType === \"LATENCY\") {\n return `Latency • #${trace.seq ?? \"?\"} • ${trace.eventType ?? \"unknown\"} • ${time}`;\n }\n if (trace.traceType === \"CONVERSATIONAL\") {\n return `Conversational • ${trace.eventName} • ${time}`;\n }\n if (trace.traceType === \"STEP\") {\n return `Step • ${trace.name ?? \"unknown\"} • ${time}`;\n }\n return `API • ${trace.operationName} • ${time}`;\n }\n function latencyPayload(trace) {\n const payload = trace.payload;\n return payload && typeof payload === \"object\" && !Array.isArray(payload) ? payload : {};\n }\n function latencyRow(eventType) {\n if (eventType === \"call.started\" || eventType === \"call.ended\") return \"Call\";\n if (eventType.startsWith(\"vad.\")) return \"VAD\";\n if (eventType.startsWith(\"stt.\")) return \"STT\";\n if (eventType === \"speech.created\") return \"Trigger\";\n if (eventType.startsWith(\"reply.pending.\")) return \"Reply Pending\";\n if (eventType.startsWith(\"llm.connect_tcp.\") || eventType.startsWith(\"llm.start_tls.\")) {\n return \"LLM Transport\";\n }\n if (eventType === \"llm.requested\" || eventType.startsWith(\"llm.wait.\")) return \"LLM Wait\";\n if (eventType === \"llm.first_token\" || eventType === \"llm.completed\" || eventType.startsWith(\"llm.stream.\")) {\n return \"LLM Stream\";\n }\n if (eventType.startsWith(\"tts.text.\")) return \"TTS Text\";\n if (eventType.startsWith(\"tts.provider.\")) return \"Provider\";\n if (eventType === \"tts.audio.first_received\" || eventType === \"tts.audio.last_received\") {\n return \"Provider\";\n }\n if (eventType.startsWith(\"tts.decode.\")) return \"Decode\";\n if (eventType.startsWith(\"audio.output.wait.\")) return \"Output Queue\";\n if (eventType === \"interruption.detected\" || eventType === \"audio.playback.interrupted\") {\n return \"Interruptions\";\n }\n if (eventType.startsWith(\"audio.playback.\")) return \"Playback\";\n return \"Other\";\n }\n function latencyColorKey(eventType) {\n if (eventType === \"call.started\" || eventType === \"call.ended\") return \"call\";\n if (eventType.startsWith(\"vad.\")) return \"vad\";\n if (eventType.startsWith(\"stt.\")) return \"stt\";\n if (eventType === \"speech.created\") return \"trigger\";\n if (eventType.startsWith(\"reply.pending.\")) return \"reply.pending\";\n if (eventType.startsWith(\"llm.connect_tcp.\") || eventType.startsWith(\"llm.start_tls.\")) {\n return \"llm.transport\";\n }\n if (eventType === \"llm.requested\" || eventType.startsWith(\"llm.wait.\")) return \"llm.wait\";\n if (eventType === \"llm.first_token\" || eventType === \"llm.completed\" || eventType.startsWith(\"llm.stream.\")) {\n return \"llm.stream\";\n }\n if (eventType.startsWith(\"tts.text.\")) return \"tts.text\";\n if (eventType.startsWith(\"tts.provider.\")) return \"tts.provider.lifecycle\";\n if (eventType === \"tts.audio.first_received\" || eventType === \"tts.audio.last_received\") {\n return \"tts.provider\";\n }\n if (eventType.startsWith(\"tts.decode.\")) return \"tts.decode\";\n if (eventType.startsWith(\"audio.output.wait.\")) return \"audio.output.wait\";\n if (eventType === \"interruption.detected\" || eventType === \"audio.playback.interrupted\") {\n return \"interruption\";\n }\n if (eventType.startsWith(\"audio.playback.\")) return \"playback\";\n return \"other\";\n }\n function latencyEventMarker(eventType) {\n switch (eventType) {\n case \"vad.activated\":\n case \"stt.started\":\n return \"start\";\n case \"vad.deactivated\":\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"end\";\n default:\n return null;\n }\n }\n function latencyLabel(trace) {\n switch (trace.eventType) {\n case \"call.started\":\n return \"Call started\";\n case \"call.ended\":\n return \"Call ended\";\n case \"vad.activated\":\n return \"VAD activated\";\n case \"vad.deactivated\":\n return \"VAD deactivated\";\n case \"stt.started\":\n return \"STT start\";\n case \"stt.interim\":\n return \"STT interim\";\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"STT final\";\n case \"speech.created\":\n return \"Speech created\";\n case \"reply.pending.started\":\n return \"Reply pending start\";\n case \"reply.pending.completed\":\n return \"Reply pending end\";\n case \"llm.connect_tcp.started\":\n return \"Connect TCP start\";\n case \"llm.connect_tcp.completed\":\n return \"Connect TCP end\";\n case \"llm.connect_tcp.failed\":\n return \"Connect TCP failed\";\n case \"llm.start_tls.started\":\n return \"TLS start\";\n case \"llm.start_tls.completed\":\n return \"TLS end\";\n case \"llm.start_tls.failed\":\n return \"TLS failed\";\n case \"llm.wait.started\":\n return \"LLM wait start\";\n case \"llm.wait.completed\":\n return \"LLM wait end\";\n case \"llm.stream.started\":\n return \"LLM stream start\";\n case \"llm.stream.completed\":\n return \"LLM stream end\";\n case \"llm.requested\":\n return \"LLM request\";\n case \"llm.first_token\":\n return \"LLM first token\";\n case \"llm.completed\":\n return \"LLM end\";\n case \"tts.text.first_sent\":\n return \"TTS first text\";\n case \"tts.text.completed\":\n return \"TTS text end\";\n case \"tts.provider.started\":\n return \"Provider start\";\n case \"tts.provider.completed\":\n return \"Provider end\";\n case \"tts.audio.first_received\":\n return \"Provider audio received\";\n case \"tts.audio.last_received\":\n return \"Provider audio end\";\n case \"tts.decode.started\":\n return \"Decode start\";\n case \"tts.decode.completed\":\n return \"Decode end\";\n case \"audio.output.wait.started\":\n return \"Output queue start\";\n case \"audio.output.wait.completed\":\n return \"Output queue end\";\n case \"interruption.detected\":\n return \"Interruption detected\";\n case \"audio.playback.started\":\n return \"Playback start\";\n case \"audio.playback.stopped\":\n return \"Playback stop\";\n case \"audio.playback.ended\":\n return \"Playback end\";\n case \"audio.playback.interrupted\":\n return \"Playback interrupted\";\n default:\n return trace.eventType;\n }\n }\n function latencyDescription(trace) {\n const payload = latencyPayload(trace);\n switch (trace.eventType) {\n case \"call.started\":\n return \"Call-scoped latency stream started\";\n case \"call.ended\":\n return \"Call-scoped latency stream ended\";\n case \"vad.activated\":\n return \"Raw VAD activation event\";\n case \"vad.deactivated\":\n return \"Raw VAD deactivation event\";\n case \"stt.started\":\n return \"Speech-to-text detected speech start\";\n case \"stt.interim\":\n return normalizeNonEmptyString(payload.originalType) === \"preflight_transcript\" ? \"Speech-to-text preflight transcript\" : \"Speech-to-text interim transcript\";\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"Speech-to-text final transcript\";\n case \"speech.created\":\n return \"LiveKit created a speech handle\";\n case \"reply.pending.started\":\n return \"Reply generation was committed, but downstream generation has not started yet\";\n case \"reply.pending.completed\":\n return \"Reply generation moved from pending into the LLM request phase\";\n case \"llm.connect_tcp.started\":\n return \"httpcore started opening a new TCP connection for the LLM request\";\n case \"llm.connect_tcp.completed\":\n return \"httpcore finished opening a new TCP connection for the LLM request\";\n case \"llm.connect_tcp.failed\":\n return \"httpcore failed while opening a new TCP connection for the LLM request\";\n case \"llm.start_tls.started\":\n return \"httpcore started TLS negotiation for the LLM request\";\n case \"llm.start_tls.completed\":\n return \"httpcore finished TLS negotiation for the LLM request\";\n case \"llm.start_tls.failed\":\n return \"httpcore failed during TLS negotiation for the LLM request\";\n case \"llm.wait.started\":\n return \"LLM request is in flight and waiting for the first token\";\n case \"llm.wait.completed\":\n return \"The LLM wait phase ended when the first token arrived\";\n case \"llm.stream.started\":\n return \"LLM streaming phase started\";\n case \"llm.stream.completed\":\n return \"LLM streaming phase ended\";\n case \"llm.requested\":\n return \"AnyVan received an LLM request\";\n case \"llm.first_token\":\n return \"First LLM token received\";\n case \"llm.completed\":\n return \"LLM streaming completed\";\n case \"tts.text.first_sent\":\n return \"First text chunk sent to the TTS provider\";\n case \"tts.text.completed\":\n return \"Last non-empty text chunk observed for this TTS stream\";\n case \"tts.provider.started\":\n return \"Provider lifecycle started when the first non-empty TTS text chunk was sent\";\n case \"tts.provider.completed\":\n return \"Provider lifecycle ended when the provider stream reported completion\";\n case \"tts.audio.first_received\":\n return \"First audio chunk received from the TTS provider\";\n case \"tts.audio.last_received\":\n return \"Last audio chunk received from the TTS provider\";\n case \"tts.decode.started\":\n return \"First provider audio bytes were handed into the local decode path\";\n case \"tts.decode.completed\":\n return \"The first decoded audio frame left the local decode path\";\n case \"audio.output.wait.started\":\n return \"The first local audio frame was handed to the LiveKit audio output\";\n case \"audio.output.wait.completed\":\n return \"The audio-output wait phase ended when low-level playback actually started\";\n case \"interruption.detected\":\n return \"User speech overlapped active playback; this does not guarantee playback stopped\";\n case \"audio.playback.started\":\n return \"First played audio frame\";\n case \"audio.playback.stopped\":\n return \"Playback lifecycle ended on the Playback row\";\n case \"audio.playback.ended\":\n return \"Audio playback finished normally\";\n case \"audio.playback.interrupted\":\n return \"Audio playback ended because the output buffer was interrupted\";\n default:\n return null;\n }\n }\n function latencyText(trace) {\n const payload = latencyPayload(trace);\n return normalizeNonEmptyString(payload.text);\n }\n function isFinalSttLatencyTrace(trace) {\n return trace.eventType === \"stt.final\" || trace.eventType === \"stt.final_transcript\";\n }\n function bubbleText(value) {\n const text = normalizeNonEmptyString(value);\n if (!text) return null;\n return text.replace(/\\s+/g, \" \").trim() || null;\n }\n function latencyTranscriptText(trace) {\n const payload = latencyPayload(trace);\n const text = bubbleText(payload.text) ?? bubbleText(payload.transcript) ?? bubbleText(payload.finalTranscript) ?? bubbleText(payload.final_transcript) ?? bubbleText(payload.message);\n if (text) return text;\n const alternatives = payload.alternatives;\n if (Array.isArray(alternatives)) {\n for (const alternative of alternatives) {\n if (!alternative || typeof alternative !== \"object\") continue;\n const alternativeText = bubbleText(alternative.text);\n if (alternativeText) return alternativeText;\n }\n }\n return null;\n }\n function isConversationalTrace(trace) {\n return trace.traceType === \"CONVERSATIONAL\";\n }\n function isUserConversationalTrace(trace) {\n return isConversationalTrace(trace) && trace.role.toLowerCase() === \"user\" && (trace.eventName === \"received-message\" || trace.eventName === \"llm-handler-stream-requested\");\n }\n function isAgentConversationalTrace(trace) {\n return isConversationalTrace(trace) && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function conversationalTraceKey(trace) {\n return normalizeNonEmptyString(trace.traceId) ?? `${trace.createdAt}:${trace.eventName}:${trace.content}`;\n }\n function findPreviousConversationalTrace(items, beforeIndex) {\n for (let index = beforeIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.traceType === \"CONVERSATIONAL\") return candidate;\n }\n return null;\n }\n function findResponseLatencyAgentTrace(items, span) {\n const startCreatedAt = ms(span.startTrace.createdAt);\n const endCreatedAt = ms(span.endTrace.createdAt);\n if (startCreatedAt == null) return null;\n for (let index = 0; index < items.length; index += 1) {\n const candidate = items[index];\n if (!isAgentConversationalTrace(candidate)) continue;\n if (candidate.createdAt < startCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {\n continue;\n }\n if (endCreatedAt != null && candidate.createdAt < endCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {\n continue;\n }\n const previous = findPreviousConversationalTrace(items, index);\n if (!previous || !isUserConversationalTrace(previous)) continue;\n return candidate;\n }\n return null;\n }\n function segmentDistanceFromTime(segment, timeMs) {\n if (timeMs >= segment.start && timeMs <= segment.end) return 0;\n return Math.min(Math.abs(timeMs - segment.start), Math.abs(timeMs - segment.end));\n }\n function findPlaybackSegmentForSpan(span, playbackSegments, usedSegmentIds) {\n const candidates = playbackSegments.filter((segment) => {\n if (usedSegmentIds.has(segment.id)) return false;\n return segment.start >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS;\n }).sort((a, b) => Math.abs(a.start - span.end) - Math.abs(b.start - span.end));\n if (candidates[0]) return candidates[0];\n return playbackSegments.find((segment) => !usedSegmentIds.has(segment.id) && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS && segment.end >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS) ?? null;\n }\n function findPlaybackSegmentForResponse(responseTime, playbackSegments, usedSegmentIds) {\n const candidates = playbackSegments.filter((segment) => {\n if (usedSegmentIds.has(segment.id)) return false;\n return segment.end >= responseTime - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS && segment.start <= responseTime + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n }).sort((a, b) => segmentDistanceFromTime(a, responseTime) - segmentDistanceFromTime(b, responseTime));\n return candidates[0] ?? null;\n }\n function callStartTime() {\n for (const trace of traces.slice().sort(compareLatencyTraces)) {\n if (trace.eventType === \"call.started\" && Number.isFinite(trace.atMs)) return trace.atMs;\n }\n return timelineOriginMs();\n }\n function findHumanBubbleStartTime(anchorTime, playbackSegments) {\n const lastPlayback = playbackSegments.filter((segment) => segment.start <= anchorTime).sort((a, b) => b.start - a.start || b.end - a.end)[0];\n if (!lastPlayback) return Math.min(callStartTime(), anchorTime);\n if (lastPlayback.end <= anchorTime) return Math.min(lastPlayback.end, anchorTime);\n return Math.min(lastPlayback.start, anchorTime);\n }\n function isTagOnlyResponse(value) {\n return value.replace(/<[^>]+>/g, \"\").trim() === \"\";\n }\n function isWaitResponse(value) {\n return /<WAIT\\b[^>]*\\/?\\s*>/i.test(value);\n }\n function isMainStepResponse(trace) {\n return trace.traceType === \"STEP\" && trace.name === \"main\" && normalizeNonEmptyString(trace.response) != null;\n }\n function responseTextWithoutTags(value) {\n return value.replace(/<[^>]+>/g, \" \").replace(/\\s+/g, \" \").trim();\n }\n function isEquivalentAiResponseText(a, b) {\n if (a === b) return true;\n const spokenA = responseTextWithoutTags(a);\n const spokenB = responseTextWithoutTags(b);\n return spokenA !== \"\" && spokenA === spokenB;\n }\n function responseTurnBounds(createdAt) {\n let start = createdAt - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n let end = createdAt + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n for (const trace of conversationTraces) {\n if (!isUserConversationalTrace(trace)) continue;\n if (trace.createdAt <= createdAt) start = trace.createdAt;\n else {\n end = trace.createdAt;\n break;\n }\n }\n return { start, end };\n }\n function findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds) {\n const bounds = responseTurnBounds(agentTrace.createdAt);\n return stepResponses.filter((trace) => !usedStepTraceIds.has(traceKey(trace)) && trace.createdAt >= bounds.start && trace.createdAt < bounds.end).sort((a, b) => Math.abs(a.createdAt - agentTrace.createdAt) - Math.abs(b.createdAt - agentTrace.createdAt))[0] ?? null;\n }\n function buildAiResponses() {\n const built = [];\n const usedStepTraceIds = /* @__PURE__ */ new Set();\n const stepResponses = conversationTraces.filter(isMainStepResponse).sort(compareConversationTraces);\n const agentTraces = conversationTraces.filter(isAgentConversationalTrace).sort(compareConversationTraces);\n for (const agentTrace of agentTraces) {\n const stepTrace = findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds);\n const stepFullText = stepTrace ? normalizeNonEmptyString(stepTrace.response) : null;\n const fullText = stepFullText ?? normalizeNonEmptyString(agentTrace.content);\n const text = bubbleText(fullText);\n if (!text || !fullText) continue;\n const duplicate = built.find((response) => response.agentTraceIds.size > 0 && Math.abs(response.createdAt - agentTrace.createdAt) <= 1e3 && isEquivalentAiResponseText(response.fullText, fullText));\n if (duplicate) {\n duplicate.agentTraceIds.add(conversationalTraceKey(agentTrace));\n if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));\n continue;\n }\n if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));\n built.push({\n id: stepTrace ? `response:step:${traceKey(stepTrace)}` : `response:agent:${conversationalTraceKey(agentTrace)}`,\n text,\n fullText,\n createdAt: agentTrace.createdAt,\n agentTraceIds: /* @__PURE__ */ new Set([conversationalTraceKey(agentTrace)]),\n traceLabel: describeTrace(stepTrace ?? agentTrace)\n });\n }\n for (const stepTrace of stepResponses) {\n const stepTraceId = traceKey(stepTrace);\n if (usedStepTraceIds.has(stepTraceId)) continue;\n const fullText = normalizeNonEmptyString(stepTrace.response);\n const text = bubbleText(fullText);\n if (!text || !fullText) continue;\n built.push({\n id: `response:step:${stepTraceId}`,\n text,\n fullText,\n createdAt: stepTrace.createdAt,\n agentTraceIds: /* @__PURE__ */ new Set(),\n traceLabel: describeTrace(stepTrace)\n });\n }\n return built.sort((a, b) => a.createdAt - b.createdAt || a.id.localeCompare(b.id));\n }\n function traceKey(trace) {\n return normalizeNonEmptyString(trace.traceId) ?? `${trace.seq ?? \"?\"}:${trace.createdAt ?? \"?\"}`;\n }\n function buildTtsTextEvents() {\n return traces.slice().sort(compareLatencyTraces).flatMap((trace) => {\n if (trace.eventType !== \"tts.text.first_sent\" && trace.eventType !== \"tts.text.completed\") {\n return [];\n }\n const text = bubbleText(latencyText(trace));\n return text ? [{ trace, text }] : [];\n });\n }\n function findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTextTraceIds, previousPlaybackEnd) {\n const lowerBound = previousPlaybackEnd - 250;\n const upperBound = playbackSegment.start + 2e3;\n const candidates = ttsTextEvents.filter(({ trace }) => {\n if (usedTextTraceIds.has(traceKey(trace))) return false;\n return trace.atMs >= lowerBound && trace.atMs <= upperBound;\n }).sort((a, b) => Math.abs(a.trace.atMs - playbackSegment.start) - Math.abs(b.trace.atMs - playbackSegment.start));\n return candidates[0] ?? null;\n }\n function buildPlaybackSpeechMatches(inputSegments, responses) {\n const bySegmentId = /* @__PURE__ */ new Map();\n const playbackSegments = inputSegments.filter((segment) => segment.row === \"Playback\" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);\n const usedAgentPlaybackSegmentIds = /* @__PURE__ */ new Set();\n const usedResponseIds = /* @__PURE__ */ new Set();\n const usedTtsTextTraceIds = /* @__PURE__ */ new Set();\n const ttsTextEvents = buildTtsTextEvents();\n let previousPlaybackEnd = callStartTime();\n for (const playbackSegment of playbackSegments) {\n const ttsText = findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTtsTextTraceIds, previousPlaybackEnd);\n previousPlaybackEnd = Math.max(previousPlaybackEnd, playbackSegment.end);\n if (!ttsText) continue;\n usedTtsTextTraceIds.add(traceKey(ttsText.trace));\n bySegmentId.set(playbackSegment.id, {\n text: ttsText.text,\n fullText: ttsText.text,\n traceLabel: describeTrace(ttsText.trace)\n });\n }\n for (const span of buildResponseLatencySpans(traces)) {\n if (findResponseLatencyUserTurn(conversationTraces, span) == null) continue;\n const agentTrace = findResponseLatencyAgentTrace(conversationTraces, span);\n if (!agentTrace) continue;\n const response = responses.find((candidate) => candidate.agentTraceIds.has(conversationalTraceKey(agentTrace)));\n if (!response) continue;\n if (usedResponseIds.has(response.id)) continue;\n if (isTagOnlyResponse(response.fullText)) continue;\n const playbackSegment = findPlaybackSegmentForSpan(span, playbackSegments, usedAgentPlaybackSegmentIds);\n if (!playbackSegment) continue;\n usedAgentPlaybackSegmentIds.add(playbackSegment.id);\n usedResponseIds.add(response.id);\n bySegmentId.set(playbackSegment.id, {\n text: response.text,\n fullText: response.fullText,\n traceLabel: response.traceLabel\n });\n }\n for (const response of responses) {\n if (usedResponseIds.has(response.id)) continue;\n if (isTagOnlyResponse(response.fullText)) continue;\n const playbackSegment = findPlaybackSegmentForResponse(response.createdAt, playbackSegments, usedAgentPlaybackSegmentIds);\n if (!playbackSegment) continue;\n usedAgentPlaybackSegmentIds.add(playbackSegment.id);\n usedResponseIds.add(response.id);\n bySegmentId.set(playbackSegment.id, {\n text: response.text,\n fullText: response.fullText,\n traceLabel: response.traceLabel\n });\n }\n return { bySegmentId, responseIds: usedResponseIds };\n }\n function buildStandaloneWaitSegments(responses, usedResponseIds) {\n return responses.flatMap((response) => {\n if (usedResponseIds.has(response.id) || !isWaitResponse(response.fullText)) return [];\n const end = findWaitResponseEnd(response.createdAt);\n return [\n {\n ...makeSegment({\n id: `playback:wait:${response.id}`,\n row: \"Playback\",\n start: response.createdAt,\n end,\n colorKey: \"playback\",\n label: \"WAIT response\",\n traceLabel: response.traceLabel\n }),\n speechText: response.text,\n speechFullText: response.fullText,\n speechTraceLabel: response.traceLabel\n }\n ];\n });\n }\n function findWaitResponseEnd(start) {\n const nextActivity = traces.filter((trace) => trace.atMs > start && (trace.eventType === \"audio.playback.started\" || trace.eventType === \"stt.started\" || trace.eventType === \"vad.activated\" || trace.eventType === \"call.ended\")).sort((a, b) => a.atMs - b.atMs || a.seq - b.seq)[0];\n return nextActivity ? nextActivity.atMs : start + 1;\n }\n function buildSpeechBubbleCandidates() {\n const built = [];\n const playbackSegments = callSegments().filter((segment) => segment.row === \"Playback\" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);\n traces.slice().sort(compareLatencyTraces).forEach((trace) => {\n if (!isFinalSttLatencyTrace(trace)) return;\n const text = latencyTranscriptText(trace);\n if (!text) return;\n built.push({\n id: `bubble:human:${trace.traceId ?? trace.seq}`,\n role: \"human\",\n text,\n fullText: text,\n anchorTime: trace.atMs,\n minStartTime: findHumanBubbleStartTime(trace.atMs, playbackSegments),\n anchorRow: \"STT\",\n traceLabel: describeTrace(trace)\n });\n });\n return built.sort((a, b) => a.anchorTime - b.anchorTime || a.role.localeCompare(b.role) || a.id.localeCompare(b.id));\n }\n function timelineRowAnchorPx(rowLabel) {\n const rowIndex = timelineRows().findIndex((row) => row.label === rowLabel);\n if (rowIndex === -1) return TIMELINE_RULER_HEIGHT_PX;\n return TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX) + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);\n }\n function speechBubbleRoleLevelCount(bubbles, role) {\n let maxLevel = -1;\n for (const bubble of bubbles) {\n if (bubble.role !== role) continue;\n maxLevel = Math.max(maxLevel, bubble.level);\n }\n return maxLevel + 1;\n }\n function speechBubbleLaneHeightPx(levelCount) {\n return Math.max(0, levelCount) * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;\n }\n function compactSpeechBubbleLayouts(bubbles) {\n const bubbleAreaTopPx = speechBubbleAreaTopPx();\n return bubbles.map((bubble) => {\n const topPx = bubble.level * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;\n const globalTopPx = bubbleAreaTopPx + topPx;\n const rowAnchorPx = timelineRowAnchorPx(bubble.anchorRow);\n return {\n ...bubble,\n topPx,\n lineTopPx: rowAnchorPx,\n lineHeightPx: Math.max(1, globalTopPx - rowAnchorPx)\n };\n });\n }\n function buildSpeechBubbleLayoutForRole(role, candidates) {\n return [];\n }\n function buildSpeechBubbleBaseLayouts() {\n buildSpeechBubbleCandidates();\n return buildSpeechBubbleLayoutForRole();\n }\n function speechBubbleStyle(bubble) {\n return `left:${Math.round(bubble.leftPx)}px;top:${Math.round(bubble.topPx)}px;width:${Math.round(bubble.widthPx)}px;height:${SPEECH_BUBBLE_HEIGHT_PX}px;`;\n }\n function speechBubbleLineStyle(bubble) {\n return `left:${bubble.anchorPercent}%;top:${Math.round(bubble.lineTopPx)}px;height:${Math.round(bubble.lineHeightPx)}px;`;\n }\n function speechBubbleClass(bubble) {\n const base = \"absolute z-20 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 px-3 text-sm leading-[30px] text-rc-gray-100 backdrop-blur-md\";\n if (bubble.role === \"agent\") {\n return `${base} bg-rc-green-700`;\n }\n return `${base} bg-rc-gray-700`;\n }\n function makeSegment(input) {\n return {\n id: input.id,\n row: input.row,\n start: input.start,\n end: input.end,\n durationMs: Math.max(0, input.end - input.start),\n colorKey: input.colorKey,\n label: input.label,\n description: input.description ?? null,\n explain: input.explain ?? null,\n text: input.text ?? null,\n speechText: null,\n speechFullText: null,\n speechTraceLabel: null,\n traceLabel: input.traceLabel,\n eventMarker: input.eventMarker ?? null\n };\n }\n function compareLatencyTraces(a, b) {\n return a.seq - b.seq || a.atMs - b.atMs || (a.createdAt ?? 0) - (b.createdAt ?? 0) || String(a.traceId ?? \"\").localeCompare(String(b.traceId ?? \"\"));\n }\n function findNextLatencyEvent(events, startIndex, match, stop) {\n for (let index = startIndex + 1; index < events.length; index += 1) {\n const next = events[index];\n if (stop(next)) return null;\n if (match(next)) return next;\n }\n return null;\n }\n function buildResponseLatencySegments(events) {\n return buildResponseLatencySpans(events).filter((span) => findResponseLatencyUserTurn(conversationTraces, span) != null).map((span) => makeSegment({\n id: `derived:${span.id}`,\n row: \"Response Latency\",\n start: span.start,\n end: span.end,\n colorKey: span.isHigh ? \"response.latency.high\" : \"response.latency.ok\",\n label: \"Final STT -> speech start\",\n description: span.speechCreatedTrace ? \"Final STT transcript -> first audio for the next uncancelled LiveKit speech\" : \"Final STT transcript -> next audio playback start\",\n explain: span.isHigh ? `High latency (>${RESPONSE_LATENCY_THRESHOLD_MS}ms)` : \"OK\",\n text: span.text,\n traceLabel: span.speechCreatedTrace ? `${describeTrace(span.startTrace)} -> ${describeTrace(span.speechCreatedTrace)} -> ${describeTrace(span.endTrace)}` : `${describeTrace(span.startTrace)} -> ${describeTrace(span.endTrace)}`\n }));\n }\n function buildDerivedSegments(events) {\n const built = buildResponseLatencySegments(events);\n events.forEach((trace, index) => {\n const rule = SPAN_RULE_BY_START.get(trace.eventType);\n if (!rule) return;\n const next = findNextLatencyEvent(events, index, (candidate) => candidate.eventType === rule.endEventType, (candidate) => candidate.eventType === rule.startEventType);\n if (!next || next.atMs < trace.atMs) return;\n built.push(makeSegment({\n id: `derived:${rule.row.toLowerCase().replaceAll(\" \", \"_\")}:${trace.seq}:${next.seq}`,\n row: rule.row,\n start: trace.atMs,\n end: next.atMs,\n colorKey: rule.colorKey,\n label: rule.label,\n description: rule.description,\n traceLabel: describeTrace(trace)\n }));\n });\n return built;\n }\n function buildCallLatencySegments(input) {\n const events = input.slice().filter((trace) => typeof trace.atMs === \"number\" && Number.isFinite(trace.atMs) && typeof trace.seq === \"number\" && Number.isFinite(trace.seq)).sort(compareLatencyTraces);\n const pointSegments = events.map((trace, index) => makeSegment({\n id: `point:${trace.traceId ?? trace.seq}:${index}`,\n row: latencyRow(trace.eventType),\n start: trace.atMs,\n end: trace.atMs,\n colorKey: latencyColorKey(trace.eventType),\n label: latencyLabel(trace),\n description: latencyDescription(trace),\n text: latencyText(trace),\n traceLabel: describeTrace(trace),\n eventMarker: latencyEventMarker(trace.eventType)\n }));\n const derivedSegments = buildDerivedSegments(events);\n return [...derivedSegments, ...pointSegments].sort((a, b) => a.start - b.start || (a.durationMs === 0 ? 1 : 0) - (b.durationMs === 0 ? 1 : 0) || a.end - b.end || a.row.localeCompare(b.row));\n }\n function buildRecordingResponse(raw) {\n const next = raw && typeof raw === \"object\" ? raw : {};\n const audioUrl = typeof next.audioUrl === \"string\" && next.audioUrl.trim() ? next.audioUrl : null;\n return {\n exists: next.exists === true && audioUrl != null,\n audioUrl,\n fileName: typeof next.fileName === \"string\" ? next.fileName : null,\n mimeType: typeof next.mimeType === \"string\" ? next.mimeType : null,\n size: typeof next.size === \"number\" && Number.isFinite(next.size) ? next.size : null,\n uploadedAt: typeof next.uploadedAt === \"string\" ? next.uploadedAt : null,\n alignmentOffsetMs: typeof next.alignmentOffsetMs === \"number\" && Number.isFinite(next.alignmentOffsetMs) ? next.alignmentOffsetMs : 0\n };\n }\n function getResponseError(payload, fallback) {\n const next = payload && typeof payload === \"object\" ? payload : {};\n if (typeof next.error === \"string\" && next.error.trim()) return next.error;\n if (typeof next.message === \"string\" && next.message.trim()) return next.message;\n return fallback;\n }\n async function readResponsePayload(response) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return response.json().catch(() => ({}));\n }\n const text = (await response.text().catch(() => \"\")).trim();\n if (!text) return {};\n if (contentType.includes(\"text/html\")) {\n const titleMatch = text.match(/<title>([^<]+)<\\/title>/i);\n const headingMatch = text.match(/<h1[^>]*>([^<]+)<\\/h1>/i);\n return {\n message: titleMatch?.[1]?.trim() || headingMatch?.[1]?.trim() || `${response.status} ${response.statusText}`.trim()\n };\n }\n return { message: text };\n }\n function isPlaybackTraceBubble(segment) {\n return segment.row === \"Playback\" && !segment.eventMarker && segment.durationMs > 0;\n }\n function segmentDisplayText(segment) {\n if (isPlaybackTraceBubble(segment)) return segment.speechText;\n return null;\n }\n function segmentStyle(segment) {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(duration) || duration <= 0) return null;\n const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;\n const border = tintHex(fill, -0.25);\n if (segment.end === segment.start) {\n if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;\n const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);\n if (segment.eventMarker === \"start\") {\n return `left:${pointPercent}%;width:7px;background:${fill};border-color:${border};clip-path:polygon(0 0,100% 50%,0 100%);`;\n }\n if (segment.eventMarker === \"end\") {\n return `left:calc(${pointPercent}% - 7px);width:7px;background:${fill};border-color:${border};clip-path:polygon(100% 0,0 50%,100% 100%);`;\n }\n return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;\n }\n const visibleStart = Math.max(segment.start, viewportStartMs);\n const visibleEnd = Math.min(segment.end, viewportEndMs);\n if (visibleEnd < visibleStart) return null;\n const leftPercent = (visibleStart - viewportStartMs) / duration * 100;\n const widthPercent = (visibleEnd - visibleStart) / duration * 100;\n if (isPlaybackTraceBubble(segment)) {\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);`;\n }\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;\n }\n function segmentClass(segment) {\n if (segment.eventMarker) {\n return \"absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]\";\n }\n if (isPlaybackTraceBubble(segment)) {\n return \"absolute inset-y-0 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 bg-rc-green-700 px-3 text-sm leading-[30px] text-rc-gray-100 shadow-[0_0_0_1px_rgba(0,0,0,0.12)] backdrop-blur-md\";\n }\n return \"absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]\";\n }\n function guideLineStyle(guide) {\n return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;\n }\n function timelineOriginLineStyle(originLine) {\n return `left:${originLine.leftPercent}%;top:${originLine.topPx}px;height:${originLine.heightPx}px;`;\n }\n function tickLabelClass(tick) {\n const base = \"absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400\";\n if (tick.leftPercent <= 0.1) return base;\n if (tick.leftPercent >= 99.9) return `${base} -translate-x-full`;\n return `${base} -translate-x-1/2`;\n }\n function buildGuideLines(rows) {\n if (!recording.exists || viewportStartMs == null || viewportEndMs == null) return [];\n const rangeStartMs = viewportStartMs;\n const rangeEndMs = viewportEndMs;\n const durationMs = rangeEndMs - rangeStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const waveformBottomPx = timelinePlotHeightPx();\n const seen = /* @__PURE__ */ new Set();\n const built = [];\n rows.forEach((row, rowIndex) => {\n if (!GUIDE_ROW_LABELS.has(row.label)) return;\n const rowTopPx = TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX);\n const rowAnchorPx = rowTopPx + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);\n row.segments.forEach((segment) => {\n if (segment.id.startsWith(\"playback:wait:\")) return;\n const color = tintHex(COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray, 0.15);\n const times = segment.end === segment.start ? segment.start >= rangeStartMs && segment.start <= rangeEndMs ? [segment.start] : [] : (() => {\n const visibleStart = Math.max(segment.start, rangeStartMs);\n const visibleEnd = Math.min(segment.end, rangeEndMs);\n return visibleEnd < visibleStart ? [] : [visibleStart, visibleEnd];\n })();\n for (const timeMs of times) {\n const roundedTime = Math.round(timeMs);\n const key = `${row.label}:${roundedTime}`;\n if (seen.has(key)) continue;\n seen.add(key);\n const leftPercent = clamp((timeMs - rangeStartMs) / durationMs * 100, 0, 100);\n built.push({\n id: `${segment.id}:${roundedTime}`,\n leftPercent,\n topPx: rowAnchorPx,\n heightPx: Math.max(1, waveformBottomPx - rowAnchorPx),\n color,\n opacity: row.label === \"VAD\" ? 0.62 : 0.48\n });\n }\n });\n });\n return built;\n }\n function chooseTickStep(durationMs) {\n const approx = durationMs / 7;\n const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));\n const normalized = approx / magnitude;\n if (normalized <= 1) return 1 * magnitude;\n if (normalized <= 2) return 2 * magnitude;\n if (normalized <= 5) return 5 * magnitude;\n return 10 * magnitude;\n }\n function buildTicks(startMs, endMs, originMs) {\n const durationMs = endMs - startMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const stepMs = chooseTickStep(durationMs);\n const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;\n const ticks = [];\n for (let tick = firstTick; tick <= endMs; tick += stepMs) {\n const leftPercent = (tick - startMs) / durationMs * 100;\n ticks.push({\n time: tick,\n leftPercent,\n label: formatRelativeTime(tick - originMs)\n });\n }\n return ticks;\n }\n function createAudioContext() {\n const next = window.AudioContext ?? window.webkitAudioContext;\n if (!next) {\n throw new Error(\"Web Audio is not available in this browser\");\n }\n return new next();\n }\n function stopPlaybackTicker() {\n if (!playbackFrame) return;\n window.cancelAnimationFrame(playbackFrame);\n playbackFrame = 0;\n }\n async function closePlaybackAudioContext() {\n const context = playbackAudioContext;\n playbackAudioContext = null;\n if (!context) return;\n await context.close().catch(() => {\n });\n }\n async function ensurePlaybackAudioContext() {\n if (!playbackAudioContext || playbackAudioContext.state === \"closed\") {\n playbackAudioContext = createAudioContext();\n }\n if (playbackAudioContext.state === \"suspended\") {\n await playbackAudioContext.resume();\n }\n return playbackAudioContext;\n }\n function getPlaybackPositionMs() {\n const durationMs = getRecordingDurationMs();\n if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {\n const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;\n const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);\n return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);\n }\n return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);\n }\n function stopPlayback(preservePosition = true) {\n if (preservePosition) {\n playbackPositionMs = getPlaybackPositionMs();\n }\n const source = playbackSourceNode;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n stopPlaybackTicker();\n if (!source) return;\n source.onended = null;\n try {\n source.stop();\n } catch {\n }\n source.disconnect();\n }\n function startPlaybackTicker() {\n stopPlaybackTicker();\n const tick = () => {\n if (!playbackPlaying) {\n playbackFrame = 0;\n return;\n }\n playbackPositionMs = getPlaybackPositionMs();\n playbackFrame = window.requestAnimationFrame(tick);\n };\n playbackFrame = window.requestAnimationFrame(tick);\n }\n function getRecordingDurationMs() {\n if (waveform && Number.isFinite(waveform.durationMs)) {\n return Math.max(0, waveform.durationMs);\n }\n if (playbackAudioBuffer && Number.isFinite(playbackAudioBuffer.duration)) {\n return Math.max(0, playbackAudioBuffer.duration * 1e3);\n }\n return 0;\n }\n async function togglePlayback() {\n if (!recording.exists || !recording.audioUrl) return;\n playbackError = null;\n if (playbackPlaying) {\n stopPlayback(true);\n return;\n }\n await startPlaybackAtMs(playbackPositionMs);\n }\n async function startPlaybackAtMs(nextMs) {\n const buffer = playbackAudioBuffer;\n if (!buffer) {\n playbackError = \"Failed to decode recording for playback\";\n return;\n }\n const durationMs = Math.max(0, buffer.duration * 1e3);\n const startMs = durationMs > 0 ? nextMs >= durationMs ? 0 : clamp(nextMs, 0, durationMs) : Math.max(0, nextMs);\n stopPlayback(false);\n playbackPositionMs = startMs;\n try {\n const context = await ensurePlaybackAudioContext();\n const source = context.createBufferSource();\n source.buffer = buffer;\n source.connect(context.destination);\n source.onended = () => {\n if (playbackSourceNode !== source) return;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n playbackPositionMs = durationMs;\n stopPlaybackTicker();\n };\n playbackSourceNode = source;\n playbackStartedAtMs = startMs;\n playbackStartedAtContextTime = context.currentTime;\n playbackPlaying = true;\n playbackError = null;\n startPlaybackTicker();\n source.start(0, startMs / 1e3);\n } catch (reason) {\n stopPlayback(false);\n playbackPlaying = false;\n playbackError = reason instanceof Error ? reason.message : \"Failed to play recording\";\n }\n }\n function compareConversationTraces(a, b) {\n return a.createdAt - b.createdAt || String(a.traceId ?? \"\").localeCompare(String(b.traceId ?? \"\"));\n }\n function fitViewport(markDirty = true) {\n const extent = conversationTraceExtent() ?? contentExtent();\n if (!extent) return;\n const originMs = timelineOriginMs();\n viewportStartMs = originMs;\n viewportEndMs = Math.max(originMs + 1e3, extent.max);\n viewDirty = markDirty;\n }\n function clampViewport(startMs, endMs) {\n const extent = contentExtent();\n if (!extent) return { startMs, endMs };\n const durationMs = endMs - startMs;\n if (durationMs <= 0) return { startMs, endMs };\n const marginMs = Math.max(1e3, durationMs * 0.25);\n const minAllowed = extent.min - marginMs;\n const maxAllowed = extent.max + marginMs;\n if (durationMs >= maxAllowed - minAllowed) {\n return { startMs: minAllowed, endMs: maxAllowed };\n }\n if (startMs < minAllowed) {\n endMs += minAllowed - startMs;\n startMs = minAllowed;\n }\n if (endMs > maxAllowed) {\n startMs -= endMs - maxAllowed;\n endMs = maxAllowed;\n }\n return { startMs, endMs };\n }\n function setViewport(startMs, endMs) {\n if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;\n const next = clampViewport(startMs, endMs);\n viewportStartMs = next.startMs;\n viewportEndMs = next.endMs;\n }\n function zoomViewport(factor, focusRatio = 0.5) {\n if (viewportStartMs == null || viewportEndMs == null) return;\n const currentDuration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;\n const extent = contentExtent();\n const contentDuration = extent ? extent.max - extent.min : currentDuration;\n const minDuration = Math.min(100, currentDuration);\n const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);\n const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);\n const nextFocusRatio = clamp(focusRatio, 0, 1);\n const focusMs = viewportStartMs + currentDuration * nextFocusRatio;\n const nextStartMs = focusMs - nextDuration * nextFocusRatio;\n viewDirty = true;\n setViewport(nextStartMs, nextStartMs + nextDuration);\n }\n function setLocalAlignmentOffset(nextOffsetMs) {\n recording = { ...recording, alignmentOffsetMs: Math.round(nextOffsetMs) };\n }\n async function persistAlignmentOffset() {\n if (!recording.exists || !recordingApiUrl()) return;\n alignmentSaving = true;\n alignmentError = null;\n try {\n const response = await fetch(recordingApiUrl(), {\n method: \"PATCH\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\"\n },\n body: JSON.stringify({ alignmentOffsetMs: recording.alignmentOffsetMs })\n });\n const payload = await readResponsePayload(response);\n if (!response.ok) {\n throw new Error(getResponseError(payload, \"Failed to save alignment offset\"));\n }\n recording = buildRecordingResponse(payload);\n } catch (reason) {\n alignmentError = reason instanceof Error ? reason.message : String(reason);\n } finally {\n alignmentSaving = false;\n }\n }\n async function resetAlignment() {\n if (!recording.exists) return;\n viewDirty = true;\n setLocalAlignmentOffset(0);\n await persistAlignmentOffset();\n }\n $$renderer2.push(`<div class=\"flex h-full min-h-0 flex-col bg-rc-gray-700\"><div class=\"flex-none border-b border-rc-gray-300/40 p-4\"><div class=\"flex flex-wrap items-start justify-between gap-3\"><div><h2 class=\"text-lg font-semibold text-rc-gray-100\">Latency `);\n if (conversationId()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"text-rc-gray-100\">for conversation Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversationId())}</span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></h2> <div class=\"mt-2 flex flex-wrap gap-x-5 gap-y-1 text-xs text-rc-gray-300\"><div><span class=\"text-rc-gray-400\">Latency events:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(latencyTraceCount())}</span></div> <div><span class=\"text-rc-gray-400\">Timeline items:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(callSegments().length)}</span></div> <div><span class=\"text-rc-gray-400\">Recording offset:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(fmtSignedMs(recording.alignmentOffsetMs))}</span></div> `);\n if (recording.exists && playbackAbsoluteMs() != null) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div><span class=\"text-rc-gray-400\">Playhead:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(formatRelativeTime(playbackAbsoluteMs() - timelineOriginMs()))}</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (viewportStartMs != null && viewportEndMs != null) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div><span class=\"text-rc-gray-400\">Viewport:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(formatRelativeTime(viewportStartMs - timelineOriginMs()))} → ${escape_html(formatRelativeTime(viewportEndMs - timelineOriginMs()))}</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div></div> <div class=\"flex flex-wrap items-center gap-2\"><input type=\"file\" accept=\".wav,audio/wav,audio/x-wav\" class=\"hidden\"/> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: uploadInFlight,\n onclick: () => fileInputEl?.click(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(recording.exists ? \"Replace WAV\" : \"Upload WAV\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !recording.exists,\n onclick: () => void togglePlayback(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(playbackPlaying ? \"Pause\" : \"Play\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs() == null,\n onclick: () => zoomViewport(0.8),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom in`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs() == null,\n onclick: () => zoomViewport(1.25),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom out`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !(conversationTraceExtent() ?? contentExtent()),\n onclick: () => fitViewport(true),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Fit call`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !recording.exists || alignmentSaving,\n onclick: resetAlignment,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Reset alignment`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !traces.length,\n onclick: copyLatencyStream,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(copyLatencyState === \"ok\" ? \"Copied\" : copyLatencyState === \"error\" ? \"Copy failed\" : \"Copy latency stream\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (error) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Failed to load latency traces: ${escape_html(error)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (recordingError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Recording error: ${escape_html(recordingError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (alignmentError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Alignment error: ${escape_html(alignmentError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Playback error: ${escape_html(playbackError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"rc-scroll min-h-0 flex-1 overflow-auto p-4\"><div class=\"flex flex-col gap-4\"><div class=\"rounded-md border border-rc-gray-650 p-3\">`);\n if (!callSegments().length) {\n $$renderer2.push(\"<!--[1-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No latency events were found on this call.</div>`);\n } else if (viewportStartMs == null || viewportEndMs == null) {\n $$renderer2.push(\"<!--[2-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">Preparing timeline…</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"grid grid-cols-[140px_minmax(0,1fr)] gap-x-3\"><div class=\"flex flex-col\"><div class=\"h-8\"></div> <!--[-->`);\n const each_array = ensure_array_like(timelineRows());\n for (let rowIndex = 0, $$length = each_array.length; rowIndex < $$length; rowIndex++) {\n let row = each_array[rowIndex];\n $$renderer2.push(`<div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}>${escape_html(row.label)}</div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}>Human</div> `);\n if (waveformRowVisible()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>Waveform</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative\"><div class=\"pointer-events-none absolute inset-0 z-10 overflow-hidden\"><!--[-->`);\n const each_array_1 = ensure_array_like(speechBubbles());\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let bubble = each_array_1[$$index_1];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-rc-gray-300/40\"${attr_style(speechBubbleLineStyle(bubble))}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_2 = ensure_array_like(guideLines());\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let guide = each_array_2[$$index_2];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-dashed\"${attr_style(guideLineStyle(guide))}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n if (timelineOriginLine()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"absolute border-l border-rc-gray-200/80\"${attr_style(timelineOriginLineStyle(timelineOriginLine()))}></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackCursor()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l-2 border-rc-green-200/90\"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx}px;height:${playbackCursor().heightPx}px;`)}></div> <div class=\"absolute h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200\"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx - 4}px;`)}></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60\"><!--[-->`);\n const each_array_3 = ensure_array_like(visibleTicks());\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let tick = each_array_3[$$index_3];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/70\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div${attr_class(clsx(tickLabelClass(tick)))}${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> <!--[-->`);\n const each_array_4 = ensure_array_like(timelineRows());\n for (let rowIndex = 0, $$length = each_array_4.length; rowIndex < $$length; rowIndex++) {\n let row = each_array_4[rowIndex];\n $$renderer2.push(`<div class=\"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60\"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}><!--[-->`);\n const each_array_5 = ensure_array_like(visibleTicks());\n for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {\n let tick = each_array_5[$$index_4];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_6 = ensure_array_like(row.segments);\n for (let $$index_5 = 0, $$length2 = each_array_6.length; $$index_5 < $$length2; $$index_5++) {\n let segment = each_array_6[$$index_5];\n const style = segmentStyle(segment);\n const text = segmentDisplayText(segment);\n if (style) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div${attr_class(clsx(segmentClass(segment)))}${attr_style(style)}>`);\n if (text) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"block truncate\">${escape_html(text)}</span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--> <div${attr_class(\"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60\", void 0, {\n \"rounded-b\": !waveformRowVisible(),\n \"border-b\": !waveformRowVisible()\n })}${attr_style(`height:${speechBubbleAreaHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}><div class=\"absolute inset-x-0 top-0 border-b border-rc-gray-700/50\"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;`)}></div> <!--[-->`);\n const each_array_7 = ensure_array_like(visibleTicks());\n for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {\n let tick = each_array_7[$$index_7];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/45\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_8 = ensure_array_like(speechBubbles());\n for (let $$index_8 = 0, $$length = each_array_8.length; $$index_8 < $$length; $$index_8++) {\n let bubble = each_array_8[$$index_8];\n $$renderer2.push(`<div${attr_class(clsx(speechBubbleClass(bubble)))}${attr_style(speechBubbleStyle(bubble))}>${escape_html(bubble.text)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> `);\n if (waveformRowVisible()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"relative z-0 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60\"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>`);\n if (waveformError) {\n $$renderer2.push(\"<!--[1-->\");\n $$renderer2.push(`<div class=\"absolute inset-0 flex items-center justify-center px-4 text-sm text-red-300\">Failed to decode waveform: ${escape_html(waveformError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<canvas class=\"absolute inset-0 h-full w-full\"></canvas>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_9 = ensure_array_like(visibleTicks());\n for (let $$index_9 = 0, $$length = each_array_9.length; $$index_9 < $$length; $$index_9++) {\n let tick = each_array_9[$$index_9];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div></div>`);\n }\n $$renderer2.push(`<!--]--></div></div></div></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_page.svelte-ej3vdYeF.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js"],"sourcesContent":["import { e as escape_html, f as derived, a as ensure_array_like, c as attr_style, b as attr_class, g as clsx } from \"../../../../../../chunks/index.js\";\nimport { o as onDestroy } from \"../../../../../../chunks/index-server.js\";\nimport { p as page } from \"../../../../../../chunks/index2.js\";\nimport { B as Button } from \"../../../../../../chunks/Button.js\";\n/* empty css */\nimport { g as getPersistedTelescopeSourceId, T as TelescopeClient } from \"../../../../../../chunks/source-selection.js\";\nimport { b as buildResponseLatencySpans, f as findResponseLatencyUserTurn, R as RESPONSE_LATENCY_THRESHOLD_MS } from \"../../../../../../chunks/latency.js\";\nimport { g as getConversationViewMemory, c as conversationViewMemoryKey } from \"../../../../../../chunks/conversation-view-memory.js\";\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const SPEECH_BUBBLE_HEIGHT_PX = 30;\n const TIMELINE_RULER_HEIGHT_PX = 32;\n const TIMELINE_ROW_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX;\n const TIMELINE_ROW_GAP_PX = 5;\n const WAVEFORM_ROW_HEIGHT_PX = 160;\n const SPEECH_BUBBLE_VERTICAL_GAP_PX = TIMELINE_ROW_GAP_PX;\n const SPEECH_BUBBLE_LEVEL_HEIGHT_PX = SPEECH_BUBBLE_HEIGHT_PX + SPEECH_BUBBLE_VERTICAL_GAP_PX;\n const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS = 500;\n const SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS = 2500;\n const SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS = 3e4;\n const RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS = 250;\n const GUIDE_ROW_LABELS = /* @__PURE__ */ new Set([\"VAD\", \"Playback\"]);\n const client = new TelescopeClient(fetch);\n const BOSUN_COLORS = {\n blue: \"#569cd6\",\n green: \"#93FF6D\",\n greenDark: \"#00B58A\",\n orange: \"#ce9178\",\n purple: \"#81147D\",\n red: \"#FF6666\",\n gray: \"#767676\"\n };\n const ROW_DEFS = [\n {\n label: \"VAD\",\n eventTypes: [\"vad.activated\", \"vad.deactivated\"]\n },\n {\n label: \"STT\",\n eventTypes: [\n \"stt.started\",\n \"stt.interim\",\n \"stt.final\",\n \"stt.final_transcript\"\n ]\n },\n { label: \"Trigger\", eventTypes: [\"speech.created\"] },\n {\n label: \"Reply Pending\",\n eventTypes: [\"reply.pending.started\", \"reply.pending.completed\"]\n },\n {\n label: \"LLM Transport\",\n eventTypes: [\n \"llm.connect_tcp.started\",\n \"llm.connect_tcp.completed\",\n \"llm.connect_tcp.failed\",\n \"llm.start_tls.started\",\n \"llm.start_tls.completed\",\n \"llm.start_tls.failed\"\n ]\n },\n {\n label: \"LLM Wait\",\n eventTypes: [\"llm.wait.started\", \"llm.requested\", \"llm.wait.completed\"]\n },\n {\n label: \"LLM Stream\",\n eventTypes: [\n \"llm.stream.started\",\n \"llm.first_token\",\n \"llm.completed\",\n \"llm.stream.completed\"\n ]\n },\n {\n label: \"TTS Text\",\n eventTypes: [\"tts.text.first_sent\", \"tts.text.completed\"]\n },\n {\n label: \"Provider\",\n eventTypes: [\n \"tts.provider.started\",\n \"tts.audio.first_received\",\n \"tts.audio.last_received\",\n \"tts.provider.completed\"\n ]\n },\n {\n label: \"Decode\",\n eventTypes: [\"tts.decode.started\", \"tts.decode.completed\"]\n },\n {\n label: \"Output Queue\",\n eventTypes: [\"audio.output.wait.started\", \"audio.output.wait.completed\"]\n },\n {\n label: \"Playback\",\n eventTypes: [\n \"audio.playback.started\",\n \"audio.playback.stopped\",\n \"audio.playback.ended\"\n ]\n },\n { label: \"Response Latency\" },\n {\n label: \"Interruptions\",\n eventTypes: [\"interruption.detected\", \"audio.playback.interrupted\"]\n },\n { label: \"Other\" }\n ];\n const TIMELINE_ROW_LABELS = new Set(ROW_DEFS.map((row) => row.label));\n const COLOR_BY_KEY = {\n call: tintHex(BOSUN_COLORS.gray, 0.2),\n vad: tintHex(BOSUN_COLORS.purple, 0.35),\n stt: tintHex(BOSUN_COLORS.purple, 0.2),\n trigger: BOSUN_COLORS.greenDark,\n \"response.latency.ok\": BOSUN_COLORS.green,\n \"response.latency.high\": BOSUN_COLORS.red,\n \"reply.pending\": tintHex(BOSUN_COLORS.greenDark, 0.18),\n \"llm.transport\": tintHex(BOSUN_COLORS.blue, 0.18),\n \"llm.wait\": tintHex(BOSUN_COLORS.blue, -0.25),\n \"llm.stream\": BOSUN_COLORS.blue,\n \"tts.text\": BOSUN_COLORS.orange,\n \"tts.provider.lifecycle\": tintHex(BOSUN_COLORS.purple, -0.18),\n \"tts.provider\": tintHex(BOSUN_COLORS.purple, 0.12),\n \"tts.decode\": tintHex(BOSUN_COLORS.orange, -0.12),\n \"audio.output.wait\": BOSUN_COLORS.orange,\n playback: tintHex(BOSUN_COLORS.greenDark, -0.08),\n interruption: BOSUN_COLORS.orange,\n other: BOSUN_COLORS.gray\n };\n const SPAN_RULES = [\n {\n startEventType: \"reply.pending.started\",\n endEventType: \"reply.pending.completed\",\n row: \"Reply Pending\",\n colorKey: \"reply.pending\",\n label: \"Reply pending\",\n description: \"Derived from adjacent reply-pending lifecycle events\"\n },\n {\n startEventType: \"llm.connect_tcp.started\",\n endEventType: \"llm.connect_tcp.completed\",\n row: \"LLM Transport\",\n colorKey: \"llm.transport\",\n label: \"Connect TCP\",\n description: \"Derived from adjacent TCP connect lifecycle events\"\n },\n {\n startEventType: \"llm.start_tls.started\",\n endEventType: \"llm.start_tls.completed\",\n row: \"LLM Transport\",\n colorKey: \"llm.transport\",\n label: \"Start TLS\",\n description: \"Derived from adjacent TLS lifecycle events\"\n },\n {\n startEventType: \"llm.wait.started\",\n endEventType: \"llm.wait.completed\",\n row: \"LLM Wait\",\n colorKey: \"llm.wait\",\n label: \"LLM wait\",\n description: \"Derived from adjacent LLM wait lifecycle events\"\n },\n {\n startEventType: \"llm.stream.started\",\n endEventType: \"llm.stream.completed\",\n row: \"LLM Stream\",\n colorKey: \"llm.stream\",\n label: \"LLM stream\",\n description: \"Derived from adjacent LLM stream lifecycle events\"\n },\n {\n startEventType: \"tts.text.first_sent\",\n endEventType: \"tts.text.completed\",\n row: \"TTS Text\",\n colorKey: \"tts.text\",\n label: \"TTS text send\",\n description: \"Derived from adjacent TTS text send and completion events\"\n },\n {\n startEventType: \"tts.provider.started\",\n endEventType: \"tts.audio.first_received\",\n row: \"Provider\",\n colorKey: \"tts.provider.lifecycle\",\n label: \"Provider wait\",\n description: \"Derived from adjacent provider start and first-audio events\"\n },\n {\n startEventType: \"tts.audio.first_received\",\n endEventType: \"tts.provider.completed\",\n row: \"Provider\",\n colorKey: \"tts.provider\",\n label: \"Provider audio\",\n description: \"Derived from adjacent provider first-audio and completion events\"\n },\n {\n startEventType: \"tts.decode.started\",\n endEventType: \"tts.decode.completed\",\n row: \"Decode\",\n colorKey: \"tts.decode\",\n label: \"Decode\",\n description: \"Derived from adjacent local decode lifecycle events\"\n },\n {\n startEventType: \"audio.output.wait.started\",\n endEventType: \"audio.output.wait.completed\",\n row: \"Output Queue\",\n colorKey: \"audio.output.wait\",\n label: \"Output queue\",\n description: \"Derived from adjacent audio-output wait lifecycle events\"\n },\n {\n startEventType: \"audio.playback.started\",\n endEventType: \"audio.playback.stopped\",\n row: \"Playback\",\n colorKey: \"playback\",\n label: \"Playback\",\n description: \"Derived from adjacent playback start and playback stop events\"\n }\n ];\n const SPAN_RULE_BY_START = new Map(SPAN_RULES.map((rule) => [rule.startEventType, rule]));\n function emptyRecordingResponse() {\n return {\n exists: false,\n audioUrl: null,\n fileName: null,\n mimeType: null,\n size: null,\n uploadedAt: null,\n alignmentOffsetMs: 0\n };\n }\n const viewMemory = getConversationViewMemory();\n const initialSourceId = getPersistedTelescopeSourceId() ?? \"\";\n const initialConversationId = page.params.conversationId ?? \"\";\n const initialMemoryKey = conversationViewMemoryKey(initialConversationId, initialSourceId);\n const initialMemory = viewMemory.latency.get(initialMemoryKey);\n client.setSourceId(initialSourceId || void 0);\n let sourceId = initialSourceId;\n let conversation = initialMemory?.conversation ?? null;\n let traces = initialMemory?.traces ?? [];\n let conversationTraces = initialMemory?.conversationTraces ?? [];\n let dataLoaded = initialMemory?.dataLoaded ?? false;\n let error = initialMemory?.error ?? null;\n let recording = initialMemory?.recording ?? emptyRecordingResponse();\n let recordingLoaded = initialMemory?.recordingLoaded ?? false;\n let recordingError = initialMemory?.recordingError ?? null;\n let uploadInFlight = false;\n let waveform = initialMemory?.waveform ?? null;\n let waveformError = initialMemory?.waveformError ?? null;\n let playbackPositionMs = initialMemory?.playbackPositionMs ?? 0;\n let playbackPlaying = false;\n let playbackError = null;\n let alignmentSaving = false;\n let alignmentError = null;\n let viewDirty = initialMemory?.viewDirty ?? false;\n let viewportStartMs = null;\n let viewportEndMs = null;\n let scrollViewportEl = null;\n let fileInputEl = null;\n let humanSpeechBubbleReservedLevels = initialMemory?.humanSpeechBubbleReservedLevels ?? 1;\n let copyLatencyState = \"idle\";\n let loadKey = \"\";\n let playbackFrame = 0;\n let playbackAudioBuffer = initialMemory?.playbackAudioBuffer ?? null;\n let playbackAudioContext = null;\n let playbackSourceNode = null;\n let playbackStartedAtMs = null;\n let playbackStartedAtContextTime = null;\n const conversationId = derived(() => page.params.conversationId);\n function buildRecordingApiUrlFor(cid, nextSourceId) {\n const params = new URLSearchParams();\n if (nextSourceId) params.set(\"source\", nextSourceId);\n const search = params.toString();\n return `/traces/api/latency/${encodeURIComponent(cid)}${search ? `?${search}` : \"\"}`;\n }\n const recordingApiUrl = derived(() => {\n if (!conversationId()) return \"\";\n return buildRecordingApiUrlFor(conversationId(), sourceId);\n });\n const timelineOriginMs = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n for (const trace of traces) {\n if (typeof trace.atMs !== \"number\" || !Number.isFinite(trace.atMs)) continue;\n min = Math.min(min, trace.atMs);\n }\n if (Number.isFinite(min)) return min;\n if (typeof conversation?.createdAt === \"number\" && Number.isFinite(conversation.createdAt)) {\n return conversation.createdAt;\n }\n return Number.isFinite(min) ? min : 0;\n });\n const callSegments = derived(() => buildCallLatencySegments(traces));\n const latencyTraceCount = derived(() => traces.length);\n const aiResponses = derived(() => buildAiResponses());\n const playbackSpeechMatches = derived(() => buildPlaybackSpeechMatches(callSegments(), aiResponses()));\n const timelineSegments = derived(() => {\n const playbackSegments = callSegments().map((segment) => {\n const speech = playbackSpeechMatches().bySegmentId.get(segment.id);\n if (!speech || segment.row !== \"Playback\" || segment.durationMs <= 0) return segment;\n return {\n ...segment,\n speechText: speech.text,\n speechFullText: speech.fullText,\n speechTraceLabel: speech.traceLabel\n };\n });\n return [\n ...playbackSegments,\n ...buildStandaloneWaitSegments(aiResponses(), playbackSpeechMatches().responseIds)\n ];\n });\n const timelineRows = derived(() => {\n const grouped = /* @__PURE__ */ new Map();\n for (const segment of timelineSegments()) {\n const items = grouped.get(segment.row);\n if (items) items.push(segment);\n else grouped.set(segment.row, [segment]);\n }\n return [...ROW_DEFS].reverse().map((row) => ({ label: row.label, segments: grouped.get(row.label) ?? [] })).filter((row) => row.segments.length > 0);\n });\n const speechBubbleBaseLayouts = derived(() => buildSpeechBubbleBaseLayouts());\n const humanSpeechBubbleLevelCount = derived(() => Math.max(humanSpeechBubbleReservedLevels, speechBubbleRoleLevelCount(speechBubbleBaseLayouts(), \"human\")));\n const speechBubbles = derived(() => compactSpeechBubbleLayouts(speechBubbleBaseLayouts()));\n const humanSpeechBubbleLaneHeightPx = derived(() => speechBubbleLaneHeightPx(humanSpeechBubbleLevelCount()));\n const speechBubbleAreaHeightPx = derived(() => humanSpeechBubbleLaneHeightPx());\n const timelineRowsHeightPx = derived(() => timelineRows().length * TIMELINE_ROW_HEIGHT_PX + Math.max(0, timelineRows().length - 1) * TIMELINE_ROW_GAP_PX);\n const traceRowsToBubbleGapPx = derived(() => timelineRows().length > 0 ? TIMELINE_ROW_GAP_PX : 0);\n const speechBubbleAreaTopPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx());\n const waveformRowVisible = derived(() => recording.exists);\n const waveformRowHeightPx = derived(() => waveformRowVisible() ? TIMELINE_ROW_GAP_PX + WAVEFORM_ROW_HEIGHT_PX : 0);\n const guideLines = derived(() => buildGuideLines(timelineRows()));\n const recordingStartMs = derived(() => {\n if (!waveform) return null;\n return timelineOriginMs() + recording.alignmentOffsetMs;\n });\n const timelinePlotHeightPx = derived(() => TIMELINE_RULER_HEIGHT_PX + timelineRowsHeightPx() + traceRowsToBubbleGapPx() + speechBubbleAreaHeightPx() + waveformRowHeightPx());\n const playbackAbsoluteMs = derived(() => {\n if (recordingStartMs() == null) return null;\n return recordingStartMs() + playbackPositionMs;\n });\n const playbackCursor = derived(() => {\n const absoluteMs = playbackAbsoluteMs();\n if (absoluteMs == null || viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (absoluteMs < viewportStartMs || absoluteMs > viewportEndMs) return null;\n return {\n leftPercent: clamp((absoluteMs - viewportStartMs) / durationMs * 100, 0, 100),\n topPx: TIMELINE_RULER_HEIGHT_PX,\n heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)\n };\n });\n const timelineOriginLine = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const durationMs = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return null;\n if (timelineOriginMs() < viewportStartMs || timelineOriginMs() > viewportEndMs) return null;\n return {\n leftPercent: (timelineOriginMs() - viewportStartMs) / durationMs * 100,\n topPx: TIMELINE_RULER_HEIGHT_PX,\n heightPx: Math.max(1, timelinePlotHeightPx() - TIMELINE_RULER_HEIGHT_PX)\n };\n });\n const contentExtent = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments()) {\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (waveform && recordingStartMs() != null) {\n min = Math.min(min, recordingStartMs());\n max = Math.max(max, recordingStartMs() + waveform.durationMs);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return null;\n if (max <= min) max = min + 1;\n return { min, max };\n });\n const conversationTraceExtent = derived(() => {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n for (const segment of callSegments()) {\n if (!TIMELINE_ROW_LABELS.has(segment.row)) continue;\n min = Math.min(min, segment.start);\n max = Math.max(max, segment.end);\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return null;\n if (max <= min) max = min + 1;\n return { min, max };\n });\n const viewportDurationMs = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n return duration > 0 ? duration : null;\n });\n const visibleTicks = derived(() => {\n if (viewportStartMs == null || viewportEndMs == null) return [];\n return buildTicks(viewportStartMs, viewportEndMs, timelineOriginMs());\n });\n function saveViewMemory(key = loadKey) {\n if (!key) return;\n const previous = viewMemory.latency.get(key);\n const memory = {\n conversation,\n traces,\n conversationTraces,\n dataLoaded,\n error,\n recording,\n recordingLoaded,\n recordingError,\n waveform,\n waveformError,\n playbackAudioBuffer,\n playbackPositionMs,\n viewportStartMs,\n viewportEndMs,\n viewportOriginMs: timelineOriginMs(),\n viewDirty,\n humanSpeechBubbleReservedLevels,\n scrollTop: previous?.scrollTop ?? scrollViewportEl?.scrollTop ?? 0,\n scrollLeft: previous?.scrollLeft ?? scrollViewportEl?.scrollLeft ?? 0\n };\n viewMemory.latency.set(key, memory);\n const cid = conversationId();\n const currentSourceId = getPersistedTelescopeSourceId() ?? \"\";\n if (cid && currentSourceId && key === conversationViewMemoryKey(cid, \"\")) {\n viewMemory.latency.set(conversationViewMemoryKey(cid, currentSourceId), memory);\n }\n }\n onDestroy(() => {\n saveViewMemory();\n stopPlayback(false);\n void closePlaybackAudioContext();\n });\n function normalizeNonEmptyString(value) {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed ? trimmed : null;\n }\n function ms(value) {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n }\n function clampByte(value) {\n return Math.max(0, Math.min(255, Math.round(value)));\n }\n function clamp(value, min, max) {\n return Math.min(max, Math.max(min, value));\n }\n function tintHex(hex, amount) {\n const raw = (hex ?? \"\").trim().replace(/^#/, \"\");\n const expanded = raw.length === 3 ? raw.split(\"\").map((part) => `${part}${part}`).join(\"\") : raw;\n if (expanded.length !== 6 || !/^[0-9a-fA-F]+$/.test(expanded)) return hex;\n const r = parseInt(expanded.slice(0, 2), 16);\n const g = parseInt(expanded.slice(2, 4), 16);\n const b = parseInt(expanded.slice(4, 6), 16);\n const t = Math.abs(Math.max(-1, Math.min(1, amount)));\n const target = amount >= 0 ? 255 : 0;\n return `#${clampByte(r + (target - r) * t).toString(16).padStart(2, \"0\")}${clampByte(g + (target - g) * t).toString(16).padStart(2, \"0\")}${clampByte(b + (target - b) * t).toString(16).padStart(2, \"0\")}`;\n }\n function fmtSignedMs(value) {\n if (value == null || !Number.isFinite(value)) return \"0 ms\";\n const rounded = Math.round(value);\n if (rounded === 0) return \"0 ms\";\n return `${rounded > 0 ? \"+\" : \"\"}${rounded} ms`;\n }\n function formatRelativeTime(offsetMs) {\n if (!Number.isFinite(offsetMs)) return \"—\";\n const sign = offsetMs < 0 ? \"-\" : \"\";\n const abs = Math.abs(offsetMs);\n if (abs < 1e4) return `${sign}${(abs / 1e3).toFixed(1)}s`;\n if (abs < 6e4) return `${sign}${(abs / 1e3).toFixed(2)}s`;\n const totalSeconds = abs / 1e3;\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds - minutes * 60;\n return `${sign}${minutes}:${seconds.toFixed(1).padStart(4, \"0\")}`;\n }\n function safeJson(value) {\n try {\n return JSON.stringify(value ?? null, null, 2);\n } catch {\n return String(value);\n }\n }\n async function copyLatencyStream() {\n try {\n await navigator.clipboard.writeText(safeJson(traces));\n copyLatencyState = \"ok\";\n window.setTimeout(\n () => {\n copyLatencyState = \"idle\";\n },\n 2e3\n );\n } catch (reason) {\n console.error(\"Failed to copy latency stream\", reason);\n copyLatencyState = \"error\";\n window.setTimeout(\n () => {\n copyLatencyState = \"idle\";\n },\n 3e3\n );\n }\n }\n function describeTrace(trace) {\n const time = typeof trace.createdAt === \"number\" && Number.isFinite(trace.createdAt) ? new Date(trace.createdAt).toLocaleTimeString() : \"unknown time\";\n if (trace.traceType === \"LATENCY\") {\n return `Latency • #${trace.seq ?? \"?\"} • ${trace.eventType ?? \"unknown\"} • ${time}`;\n }\n if (trace.traceType === \"CONVERSATIONAL\") {\n return `Conversational • ${trace.eventName} • ${time}`;\n }\n if (trace.traceType === \"STEP\") {\n return `Step • ${trace.name ?? \"unknown\"} • ${time}`;\n }\n return `API • ${trace.operationName} • ${time}`;\n }\n function latencyPayload(trace) {\n const payload = trace.payload;\n return payload && typeof payload === \"object\" && !Array.isArray(payload) ? payload : {};\n }\n function latencyRow(eventType) {\n if (eventType === \"call.started\" || eventType === \"call.ended\") return \"Call\";\n if (eventType.startsWith(\"vad.\")) return \"VAD\";\n if (eventType.startsWith(\"stt.\")) return \"STT\";\n if (eventType === \"speech.created\") return \"Trigger\";\n if (eventType.startsWith(\"reply.pending.\")) return \"Reply Pending\";\n if (eventType.startsWith(\"llm.connect_tcp.\") || eventType.startsWith(\"llm.start_tls.\")) {\n return \"LLM Transport\";\n }\n if (eventType === \"llm.requested\" || eventType.startsWith(\"llm.wait.\")) return \"LLM Wait\";\n if (eventType === \"llm.first_token\" || eventType === \"llm.completed\" || eventType.startsWith(\"llm.stream.\")) {\n return \"LLM Stream\";\n }\n if (eventType.startsWith(\"tts.text.\")) return \"TTS Text\";\n if (eventType.startsWith(\"tts.provider.\")) return \"Provider\";\n if (eventType === \"tts.audio.first_received\" || eventType === \"tts.audio.last_received\") {\n return \"Provider\";\n }\n if (eventType.startsWith(\"tts.decode.\")) return \"Decode\";\n if (eventType.startsWith(\"audio.output.wait.\")) return \"Output Queue\";\n if (eventType === \"interruption.detected\" || eventType === \"audio.playback.interrupted\") {\n return \"Interruptions\";\n }\n if (eventType.startsWith(\"audio.playback.\")) return \"Playback\";\n return \"Other\";\n }\n function latencyColorKey(eventType) {\n if (eventType === \"call.started\" || eventType === \"call.ended\") return \"call\";\n if (eventType.startsWith(\"vad.\")) return \"vad\";\n if (eventType.startsWith(\"stt.\")) return \"stt\";\n if (eventType === \"speech.created\") return \"trigger\";\n if (eventType.startsWith(\"reply.pending.\")) return \"reply.pending\";\n if (eventType.startsWith(\"llm.connect_tcp.\") || eventType.startsWith(\"llm.start_tls.\")) {\n return \"llm.transport\";\n }\n if (eventType === \"llm.requested\" || eventType.startsWith(\"llm.wait.\")) return \"llm.wait\";\n if (eventType === \"llm.first_token\" || eventType === \"llm.completed\" || eventType.startsWith(\"llm.stream.\")) {\n return \"llm.stream\";\n }\n if (eventType.startsWith(\"tts.text.\")) return \"tts.text\";\n if (eventType.startsWith(\"tts.provider.\")) return \"tts.provider.lifecycle\";\n if (eventType === \"tts.audio.first_received\" || eventType === \"tts.audio.last_received\") {\n return \"tts.provider\";\n }\n if (eventType.startsWith(\"tts.decode.\")) return \"tts.decode\";\n if (eventType.startsWith(\"audio.output.wait.\")) return \"audio.output.wait\";\n if (eventType === \"interruption.detected\" || eventType === \"audio.playback.interrupted\") {\n return \"interruption\";\n }\n if (eventType.startsWith(\"audio.playback.\")) return \"playback\";\n return \"other\";\n }\n function latencyEventMarker(eventType) {\n switch (eventType) {\n case \"vad.activated\":\n case \"stt.started\":\n return \"start\";\n case \"vad.deactivated\":\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"end\";\n default:\n return null;\n }\n }\n function latencyLabel(trace) {\n switch (trace.eventType) {\n case \"call.started\":\n return \"Call started\";\n case \"call.ended\":\n return \"Call ended\";\n case \"vad.activated\":\n return \"VAD activated\";\n case \"vad.deactivated\":\n return \"VAD deactivated\";\n case \"stt.started\":\n return \"STT start\";\n case \"stt.interim\":\n return \"STT interim\";\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"STT final\";\n case \"speech.created\":\n return \"Speech created\";\n case \"reply.pending.started\":\n return \"Reply pending start\";\n case \"reply.pending.completed\":\n return \"Reply pending end\";\n case \"llm.connect_tcp.started\":\n return \"Connect TCP start\";\n case \"llm.connect_tcp.completed\":\n return \"Connect TCP end\";\n case \"llm.connect_tcp.failed\":\n return \"Connect TCP failed\";\n case \"llm.start_tls.started\":\n return \"TLS start\";\n case \"llm.start_tls.completed\":\n return \"TLS end\";\n case \"llm.start_tls.failed\":\n return \"TLS failed\";\n case \"llm.wait.started\":\n return \"LLM wait start\";\n case \"llm.wait.completed\":\n return \"LLM wait end\";\n case \"llm.stream.started\":\n return \"LLM stream start\";\n case \"llm.stream.completed\":\n return \"LLM stream end\";\n case \"llm.requested\":\n return \"LLM request\";\n case \"llm.first_token\":\n return \"LLM first token\";\n case \"llm.completed\":\n return \"LLM end\";\n case \"tts.text.first_sent\":\n return \"TTS first text\";\n case \"tts.text.completed\":\n return \"TTS text end\";\n case \"tts.provider.started\":\n return \"Provider start\";\n case \"tts.provider.completed\":\n return \"Provider end\";\n case \"tts.audio.first_received\":\n return \"Provider audio received\";\n case \"tts.audio.last_received\":\n return \"Provider audio end\";\n case \"tts.decode.started\":\n return \"Decode start\";\n case \"tts.decode.completed\":\n return \"Decode end\";\n case \"audio.output.wait.started\":\n return \"Output queue start\";\n case \"audio.output.wait.completed\":\n return \"Output queue end\";\n case \"interruption.detected\":\n return \"Interruption detected\";\n case \"audio.playback.started\":\n return \"Playback start\";\n case \"audio.playback.stopped\":\n return \"Playback stop\";\n case \"audio.playback.ended\":\n return \"Playback end\";\n case \"audio.playback.interrupted\":\n return \"Playback interrupted\";\n default:\n return trace.eventType;\n }\n }\n function latencyDescription(trace) {\n const payload = latencyPayload(trace);\n switch (trace.eventType) {\n case \"call.started\":\n return \"Call-scoped latency stream started\";\n case \"call.ended\":\n return \"Call-scoped latency stream ended\";\n case \"vad.activated\":\n return \"Raw VAD activation event\";\n case \"vad.deactivated\":\n return \"Raw VAD deactivation event\";\n case \"stt.started\":\n return \"Speech-to-text detected speech start\";\n case \"stt.interim\":\n return normalizeNonEmptyString(payload.originalType) === \"preflight_transcript\" ? \"Speech-to-text preflight transcript\" : \"Speech-to-text interim transcript\";\n case \"stt.final\":\n case \"stt.final_transcript\":\n return \"Speech-to-text final transcript\";\n case \"speech.created\":\n return \"LiveKit created a speech handle\";\n case \"reply.pending.started\":\n return \"Reply generation was committed, but downstream generation has not started yet\";\n case \"reply.pending.completed\":\n return \"Reply generation moved from pending into the LLM request phase\";\n case \"llm.connect_tcp.started\":\n return \"httpcore started opening a new TCP connection for the LLM request\";\n case \"llm.connect_tcp.completed\":\n return \"httpcore finished opening a new TCP connection for the LLM request\";\n case \"llm.connect_tcp.failed\":\n return \"httpcore failed while opening a new TCP connection for the LLM request\";\n case \"llm.start_tls.started\":\n return \"httpcore started TLS negotiation for the LLM request\";\n case \"llm.start_tls.completed\":\n return \"httpcore finished TLS negotiation for the LLM request\";\n case \"llm.start_tls.failed\":\n return \"httpcore failed during TLS negotiation for the LLM request\";\n case \"llm.wait.started\":\n return \"LLM request is in flight and waiting for the first token\";\n case \"llm.wait.completed\":\n return \"The LLM wait phase ended when the first token arrived\";\n case \"llm.stream.started\":\n return \"LLM streaming phase started\";\n case \"llm.stream.completed\":\n return \"LLM streaming phase ended\";\n case \"llm.requested\":\n return \"AnyVan received an LLM request\";\n case \"llm.first_token\":\n return \"First LLM token received\";\n case \"llm.completed\":\n return \"LLM streaming completed\";\n case \"tts.text.first_sent\":\n return \"First text chunk sent to the TTS provider\";\n case \"tts.text.completed\":\n return \"Last non-empty text chunk observed for this TTS stream\";\n case \"tts.provider.started\":\n return \"Provider lifecycle started when the first non-empty TTS text chunk was sent\";\n case \"tts.provider.completed\":\n return \"Provider lifecycle ended when the provider stream reported completion\";\n case \"tts.audio.first_received\":\n return \"First audio chunk received from the TTS provider\";\n case \"tts.audio.last_received\":\n return \"Last audio chunk received from the TTS provider\";\n case \"tts.decode.started\":\n return \"First provider audio bytes were handed into the local decode path\";\n case \"tts.decode.completed\":\n return \"The first decoded audio frame left the local decode path\";\n case \"audio.output.wait.started\":\n return \"The first local audio frame was handed to the LiveKit audio output\";\n case \"audio.output.wait.completed\":\n return \"The audio-output wait phase ended when low-level playback actually started\";\n case \"interruption.detected\":\n return \"User speech overlapped active playback; this does not guarantee playback stopped\";\n case \"audio.playback.started\":\n return \"First played audio frame\";\n case \"audio.playback.stopped\":\n return \"Playback lifecycle ended on the Playback row\";\n case \"audio.playback.ended\":\n return \"Audio playback finished normally\";\n case \"audio.playback.interrupted\":\n return \"Audio playback ended because the output buffer was interrupted\";\n default:\n return null;\n }\n }\n function latencyText(trace) {\n const payload = latencyPayload(trace);\n return normalizeNonEmptyString(payload.text);\n }\n function isFinalSttLatencyTrace(trace) {\n return trace.eventType === \"stt.final\" || trace.eventType === \"stt.final_transcript\";\n }\n function bubbleText(value) {\n const text = normalizeNonEmptyString(value);\n if (!text) return null;\n return text.replace(/\\s+/g, \" \").trim() || null;\n }\n function latencyTranscriptText(trace) {\n const payload = latencyPayload(trace);\n const text = bubbleText(payload.text) ?? bubbleText(payload.transcript) ?? bubbleText(payload.finalTranscript) ?? bubbleText(payload.final_transcript) ?? bubbleText(payload.message);\n if (text) return text;\n const alternatives = payload.alternatives;\n if (Array.isArray(alternatives)) {\n for (const alternative of alternatives) {\n if (!alternative || typeof alternative !== \"object\") continue;\n const alternativeText = bubbleText(alternative.text);\n if (alternativeText) return alternativeText;\n }\n }\n return null;\n }\n function isConversationalTrace(trace) {\n return trace.traceType === \"CONVERSATIONAL\";\n }\n function isUserConversationalTrace(trace) {\n return isConversationalTrace(trace) && trace.role.toLowerCase() === \"user\" && (trace.eventName === \"received-message\" || trace.eventName === \"llm-handler-stream-requested\");\n }\n function isAgentConversationalTrace(trace) {\n return isConversationalTrace(trace) && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function conversationalTraceKey(trace) {\n return normalizeNonEmptyString(trace.traceId) ?? `${trace.createdAt}:${trace.eventName}:${trace.content}`;\n }\n function findPreviousConversationalTrace(items, beforeIndex) {\n for (let index = beforeIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.traceType === \"CONVERSATIONAL\") return candidate;\n }\n return null;\n }\n function findResponseLatencyAgentTrace(items, span) {\n const startCreatedAt = ms(span.startTrace.createdAt);\n const endCreatedAt = ms(span.endTrace.createdAt);\n if (startCreatedAt == null) return null;\n for (let index = 0; index < items.length; index += 1) {\n const candidate = items[index];\n if (!isAgentConversationalTrace(candidate)) continue;\n if (candidate.createdAt < startCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {\n continue;\n }\n if (endCreatedAt != null && candidate.createdAt < endCreatedAt - RESPONSE_LATENCY_TRACE_MATCH_TOLERANCE_MS) {\n continue;\n }\n const previous = findPreviousConversationalTrace(items, index);\n if (!previous || !isUserConversationalTrace(previous)) continue;\n return candidate;\n }\n return null;\n }\n function segmentDistanceFromTime(segment, timeMs) {\n if (timeMs >= segment.start && timeMs <= segment.end) return 0;\n return Math.min(Math.abs(timeMs - segment.start), Math.abs(timeMs - segment.end));\n }\n function findPlaybackSegmentForSpan(span, playbackSegments, usedSegmentIds) {\n const candidates = playbackSegments.filter((segment) => {\n if (usedSegmentIds.has(segment.id)) return false;\n return segment.start >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS;\n }).sort((a, b) => Math.abs(a.start - span.end) - Math.abs(b.start - span.end));\n if (candidates[0]) return candidates[0];\n return playbackSegments.find((segment) => !usedSegmentIds.has(segment.id) && segment.start <= span.end + SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_AFTER_MS && segment.end >= span.end - SPEECH_BUBBLE_PLAYBACK_SPAN_MATCH_BEFORE_MS) ?? null;\n }\n function findPlaybackSegmentForResponse(responseTime, playbackSegments, usedSegmentIds) {\n const candidates = playbackSegments.filter((segment) => {\n if (usedSegmentIds.has(segment.id)) return false;\n return segment.end >= responseTime - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS && segment.start <= responseTime + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n }).sort((a, b) => segmentDistanceFromTime(a, responseTime) - segmentDistanceFromTime(b, responseTime));\n return candidates[0] ?? null;\n }\n function callStartTime() {\n for (const trace of traces.slice().sort(compareLatencyTraces)) {\n if (trace.eventType === \"call.started\" && Number.isFinite(trace.atMs)) return trace.atMs;\n }\n return timelineOriginMs();\n }\n function findHumanBubbleStartTime(anchorTime, playbackSegments) {\n const lastPlayback = playbackSegments.filter((segment) => segment.start <= anchorTime).sort((a, b) => b.start - a.start || b.end - a.end)[0];\n if (!lastPlayback) return Math.min(callStartTime(), anchorTime);\n if (lastPlayback.end <= anchorTime) return Math.min(lastPlayback.end, anchorTime);\n return Math.min(lastPlayback.start, anchorTime);\n }\n function isTagOnlyResponse(value) {\n return value.replace(/<[^>]+>/g, \"\").trim() === \"\";\n }\n function isWaitResponse(value) {\n return /<WAIT\\b[^>]*\\/?\\s*>/i.test(value);\n }\n function isMainStepResponse(trace) {\n return trace.traceType === \"STEP\" && trace.name === \"main\" && normalizeNonEmptyString(trace.response) != null;\n }\n function responseTextWithoutTags(value) {\n return value.replace(/<[^>]+>/g, \" \").replace(/\\s+/g, \" \").trim();\n }\n function isEquivalentAiResponseText(a, b) {\n if (a === b) return true;\n const spokenA = responseTextWithoutTags(a);\n const spokenB = responseTextWithoutTags(b);\n return spokenA !== \"\" && spokenA === spokenB;\n }\n function responseTurnBounds(createdAt) {\n let start = createdAt - SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n let end = createdAt + SPEECH_BUBBLE_AGENT_PLAYBACK_MATCH_WINDOW_MS;\n for (const trace of conversationTraces) {\n if (!isUserConversationalTrace(trace)) continue;\n if (trace.createdAt <= createdAt) start = trace.createdAt;\n else {\n end = trace.createdAt;\n break;\n }\n }\n return { start, end };\n }\n function findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds) {\n const bounds = responseTurnBounds(agentTrace.createdAt);\n return stepResponses.filter((trace) => !usedStepTraceIds.has(traceKey(trace)) && trace.createdAt >= bounds.start && trace.createdAt < bounds.end).sort((a, b) => Math.abs(a.createdAt - agentTrace.createdAt) - Math.abs(b.createdAt - agentTrace.createdAt))[0] ?? null;\n }\n function buildAiResponses() {\n const built = [];\n const usedStepTraceIds = /* @__PURE__ */ new Set();\n const stepResponses = conversationTraces.filter(isMainStepResponse).sort(compareConversationTraces);\n const agentTraces = conversationTraces.filter(isAgentConversationalTrace).sort(compareConversationTraces);\n for (const agentTrace of agentTraces) {\n const stepTrace = findStepResponseForAgentTrace(agentTrace, stepResponses, usedStepTraceIds);\n const stepFullText = stepTrace ? normalizeNonEmptyString(stepTrace.response) : null;\n const fullText = stepFullText ?? normalizeNonEmptyString(agentTrace.content);\n const text = bubbleText(fullText);\n if (!text || !fullText) continue;\n const duplicate = built.find((response) => response.agentTraceIds.size > 0 && Math.abs(response.createdAt - agentTrace.createdAt) <= 1e3 && isEquivalentAiResponseText(response.fullText, fullText));\n if (duplicate) {\n duplicate.agentTraceIds.add(conversationalTraceKey(agentTrace));\n if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));\n continue;\n }\n if (stepTrace) usedStepTraceIds.add(traceKey(stepTrace));\n built.push({\n id: stepTrace ? `response:step:${traceKey(stepTrace)}` : `response:agent:${conversationalTraceKey(agentTrace)}`,\n text,\n fullText,\n createdAt: agentTrace.createdAt,\n agentTraceIds: /* @__PURE__ */ new Set([conversationalTraceKey(agentTrace)]),\n traceLabel: describeTrace(stepTrace ?? agentTrace)\n });\n }\n for (const stepTrace of stepResponses) {\n const stepTraceId = traceKey(stepTrace);\n if (usedStepTraceIds.has(stepTraceId)) continue;\n const fullText = normalizeNonEmptyString(stepTrace.response);\n const text = bubbleText(fullText);\n if (!text || !fullText) continue;\n built.push({\n id: `response:step:${stepTraceId}`,\n text,\n fullText,\n createdAt: stepTrace.createdAt,\n agentTraceIds: /* @__PURE__ */ new Set(),\n traceLabel: describeTrace(stepTrace)\n });\n }\n return built.sort((a, b) => a.createdAt - b.createdAt || a.id.localeCompare(b.id));\n }\n function traceKey(trace) {\n return normalizeNonEmptyString(trace.traceId) ?? `${trace.seq ?? \"?\"}:${trace.createdAt ?? \"?\"}`;\n }\n function buildTtsTextEvents() {\n return traces.slice().sort(compareLatencyTraces).flatMap((trace) => {\n if (trace.eventType !== \"tts.text.first_sent\" && trace.eventType !== \"tts.text.completed\") {\n return [];\n }\n const text = bubbleText(latencyText(trace));\n return text ? [{ trace, text }] : [];\n });\n }\n function findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTextTraceIds, previousPlaybackEnd) {\n const lowerBound = previousPlaybackEnd - 250;\n const upperBound = playbackSegment.start + 2e3;\n const candidates = ttsTextEvents.filter(({ trace }) => {\n if (usedTextTraceIds.has(traceKey(trace))) return false;\n return trace.atMs >= lowerBound && trace.atMs <= upperBound;\n }).sort((a, b) => Math.abs(a.trace.atMs - playbackSegment.start) - Math.abs(b.trace.atMs - playbackSegment.start));\n return candidates[0] ?? null;\n }\n function buildPlaybackSpeechMatches(inputSegments, responses) {\n const bySegmentId = /* @__PURE__ */ new Map();\n const playbackSegments = inputSegments.filter((segment) => segment.row === \"Playback\" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);\n const usedAgentPlaybackSegmentIds = /* @__PURE__ */ new Set();\n const usedResponseIds = /* @__PURE__ */ new Set();\n const usedTtsTextTraceIds = /* @__PURE__ */ new Set();\n const ttsTextEvents = buildTtsTextEvents();\n let previousPlaybackEnd = callStartTime();\n for (const playbackSegment of playbackSegments) {\n const ttsText = findTtsTextForPlayback(playbackSegment, ttsTextEvents, usedTtsTextTraceIds, previousPlaybackEnd);\n previousPlaybackEnd = Math.max(previousPlaybackEnd, playbackSegment.end);\n if (!ttsText) continue;\n usedTtsTextTraceIds.add(traceKey(ttsText.trace));\n bySegmentId.set(playbackSegment.id, {\n text: ttsText.text,\n fullText: ttsText.text,\n traceLabel: describeTrace(ttsText.trace)\n });\n }\n for (const span of buildResponseLatencySpans(traces)) {\n if (findResponseLatencyUserTurn(conversationTraces, span) == null) continue;\n const agentTrace = findResponseLatencyAgentTrace(conversationTraces, span);\n if (!agentTrace) continue;\n const response = responses.find((candidate) => candidate.agentTraceIds.has(conversationalTraceKey(agentTrace)));\n if (!response) continue;\n if (usedResponseIds.has(response.id)) continue;\n if (isTagOnlyResponse(response.fullText)) continue;\n const playbackSegment = findPlaybackSegmentForSpan(span, playbackSegments, usedAgentPlaybackSegmentIds);\n if (!playbackSegment) continue;\n usedAgentPlaybackSegmentIds.add(playbackSegment.id);\n usedResponseIds.add(response.id);\n bySegmentId.set(playbackSegment.id, {\n text: response.text,\n fullText: response.fullText,\n traceLabel: response.traceLabel\n });\n }\n for (const response of responses) {\n if (usedResponseIds.has(response.id)) continue;\n if (isTagOnlyResponse(response.fullText)) continue;\n const playbackSegment = findPlaybackSegmentForResponse(response.createdAt, playbackSegments, usedAgentPlaybackSegmentIds);\n if (!playbackSegment) continue;\n usedAgentPlaybackSegmentIds.add(playbackSegment.id);\n usedResponseIds.add(response.id);\n bySegmentId.set(playbackSegment.id, {\n text: response.text,\n fullText: response.fullText,\n traceLabel: response.traceLabel\n });\n }\n return { bySegmentId, responseIds: usedResponseIds };\n }\n function buildStandaloneWaitSegments(responses, usedResponseIds) {\n return responses.flatMap((response) => {\n if (usedResponseIds.has(response.id) || !isWaitResponse(response.fullText)) return [];\n const end = findWaitResponseEnd(response.createdAt);\n return [\n {\n ...makeSegment({\n id: `playback:wait:${response.id}`,\n row: \"Playback\",\n start: response.createdAt,\n end,\n colorKey: \"playback\",\n label: \"WAIT response\",\n traceLabel: response.traceLabel\n }),\n speechText: response.text,\n speechFullText: response.fullText,\n speechTraceLabel: response.traceLabel\n }\n ];\n });\n }\n function findWaitResponseEnd(start) {\n const nextActivity = traces.filter((trace) => trace.atMs > start && (trace.eventType === \"audio.playback.started\" || trace.eventType === \"stt.started\" || trace.eventType === \"vad.activated\" || trace.eventType === \"call.ended\")).sort((a, b) => a.atMs - b.atMs || a.seq - b.seq)[0];\n return nextActivity ? nextActivity.atMs : start + 1;\n }\n function buildSpeechBubbleCandidates() {\n const built = [];\n const playbackSegments = callSegments().filter((segment) => segment.row === \"Playback\" && segment.durationMs > 0).sort((a, b) => a.start - b.start || a.end - b.end);\n traces.slice().sort(compareLatencyTraces).forEach((trace) => {\n if (!isFinalSttLatencyTrace(trace)) return;\n const text = latencyTranscriptText(trace);\n if (!text) return;\n built.push({\n id: `bubble:human:${trace.traceId ?? trace.seq}`,\n role: \"human\",\n text,\n fullText: text,\n anchorTime: trace.atMs,\n minStartTime: findHumanBubbleStartTime(trace.atMs, playbackSegments),\n anchorRow: \"STT\",\n traceLabel: describeTrace(trace)\n });\n });\n return built.sort((a, b) => a.anchorTime - b.anchorTime || a.role.localeCompare(b.role) || a.id.localeCompare(b.id));\n }\n function timelineRowAnchorPx(rowLabel) {\n const rowIndex = timelineRows().findIndex((row) => row.label === rowLabel);\n if (rowIndex === -1) return TIMELINE_RULER_HEIGHT_PX;\n return TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX) + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);\n }\n function speechBubbleRoleLevelCount(bubbles, role) {\n let maxLevel = -1;\n for (const bubble of bubbles) {\n if (bubble.role !== role) continue;\n maxLevel = Math.max(maxLevel, bubble.level);\n }\n return maxLevel + 1;\n }\n function speechBubbleLaneHeightPx(levelCount) {\n return Math.max(0, levelCount) * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;\n }\n function compactSpeechBubbleLayouts(bubbles) {\n const bubbleAreaTopPx = speechBubbleAreaTopPx();\n return bubbles.map((bubble) => {\n const topPx = bubble.level * SPEECH_BUBBLE_LEVEL_HEIGHT_PX;\n const globalTopPx = bubbleAreaTopPx + topPx;\n const rowAnchorPx = timelineRowAnchorPx(bubble.anchorRow);\n return {\n ...bubble,\n topPx,\n lineTopPx: rowAnchorPx,\n lineHeightPx: Math.max(1, globalTopPx - rowAnchorPx)\n };\n });\n }\n function buildSpeechBubbleLayoutForRole(role, candidates) {\n return [];\n }\n function buildSpeechBubbleBaseLayouts() {\n buildSpeechBubbleCandidates();\n return buildSpeechBubbleLayoutForRole();\n }\n function speechBubbleStyle(bubble) {\n return `left:${Math.round(bubble.leftPx)}px;top:${Math.round(bubble.topPx)}px;width:${Math.round(bubble.widthPx)}px;height:${SPEECH_BUBBLE_HEIGHT_PX}px;`;\n }\n function speechBubbleLineStyle(bubble) {\n return `left:${bubble.anchorPercent}%;top:${Math.round(bubble.lineTopPx)}px;height:${Math.round(bubble.lineHeightPx)}px;`;\n }\n function speechBubbleClass(bubble) {\n const base = \"absolute z-20 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 px-3 text-sm leading-[30px] text-rc-gray-100 backdrop-blur-md\";\n if (bubble.role === \"agent\") {\n return `${base} bg-rc-green-700`;\n }\n return `${base} bg-rc-gray-700`;\n }\n function makeSegment(input) {\n return {\n id: input.id,\n row: input.row,\n start: input.start,\n end: input.end,\n durationMs: Math.max(0, input.end - input.start),\n colorKey: input.colorKey,\n label: input.label,\n description: input.description ?? null,\n explain: input.explain ?? null,\n text: input.text ?? null,\n speechText: null,\n speechFullText: null,\n speechTraceLabel: null,\n traceLabel: input.traceLabel,\n eventMarker: input.eventMarker ?? null\n };\n }\n function compareLatencyTraces(a, b) {\n return a.seq - b.seq || a.atMs - b.atMs || (a.createdAt ?? 0) - (b.createdAt ?? 0) || String(a.traceId ?? \"\").localeCompare(String(b.traceId ?? \"\"));\n }\n function findNextLatencyEvent(events, startIndex, match, stop) {\n for (let index = startIndex + 1; index < events.length; index += 1) {\n const next = events[index];\n if (stop(next)) return null;\n if (match(next)) return next;\n }\n return null;\n }\n function buildResponseLatencySegments(events) {\n return buildResponseLatencySpans(events).filter((span) => findResponseLatencyUserTurn(conversationTraces, span) != null).map((span) => makeSegment({\n id: `derived:${span.id}`,\n row: \"Response Latency\",\n start: span.start,\n end: span.end,\n colorKey: span.isHigh ? \"response.latency.high\" : \"response.latency.ok\",\n label: \"Final STT -> speech start\",\n description: span.speechCreatedTrace ? \"Final STT transcript -> first audio for the next uncancelled LiveKit speech\" : \"Final STT transcript -> next audio playback start\",\n explain: span.isHigh ? `High latency (>${RESPONSE_LATENCY_THRESHOLD_MS}ms)` : \"OK\",\n text: span.text,\n traceLabel: span.speechCreatedTrace ? `${describeTrace(span.startTrace)} -> ${describeTrace(span.speechCreatedTrace)} -> ${describeTrace(span.endTrace)}` : `${describeTrace(span.startTrace)} -> ${describeTrace(span.endTrace)}`\n }));\n }\n function buildDerivedSegments(events) {\n const built = buildResponseLatencySegments(events);\n events.forEach((trace, index) => {\n const rule = SPAN_RULE_BY_START.get(trace.eventType);\n if (!rule) return;\n const next = findNextLatencyEvent(events, index, (candidate) => candidate.eventType === rule.endEventType, (candidate) => candidate.eventType === rule.startEventType);\n if (!next || next.atMs < trace.atMs) return;\n built.push(makeSegment({\n id: `derived:${rule.row.toLowerCase().replaceAll(\" \", \"_\")}:${trace.seq}:${next.seq}`,\n row: rule.row,\n start: trace.atMs,\n end: next.atMs,\n colorKey: rule.colorKey,\n label: rule.label,\n description: rule.description,\n traceLabel: describeTrace(trace)\n }));\n });\n return built;\n }\n function buildCallLatencySegments(input) {\n const events = input.slice().filter((trace) => typeof trace.atMs === \"number\" && Number.isFinite(trace.atMs) && typeof trace.seq === \"number\" && Number.isFinite(trace.seq)).sort(compareLatencyTraces);\n const pointSegments = events.map((trace, index) => makeSegment({\n id: `point:${trace.traceId ?? trace.seq}:${index}`,\n row: latencyRow(trace.eventType),\n start: trace.atMs,\n end: trace.atMs,\n colorKey: latencyColorKey(trace.eventType),\n label: latencyLabel(trace),\n description: latencyDescription(trace),\n text: latencyText(trace),\n traceLabel: describeTrace(trace),\n eventMarker: latencyEventMarker(trace.eventType)\n }));\n const derivedSegments = buildDerivedSegments(events);\n return [...derivedSegments, ...pointSegments].sort((a, b) => a.start - b.start || (a.durationMs === 0 ? 1 : 0) - (b.durationMs === 0 ? 1 : 0) || a.end - b.end || a.row.localeCompare(b.row));\n }\n function buildRecordingResponse(raw) {\n const next = raw && typeof raw === \"object\" ? raw : {};\n const audioUrl = typeof next.audioUrl === \"string\" && next.audioUrl.trim() ? next.audioUrl : null;\n return {\n exists: next.exists === true && audioUrl != null,\n audioUrl,\n fileName: typeof next.fileName === \"string\" ? next.fileName : null,\n mimeType: typeof next.mimeType === \"string\" ? next.mimeType : null,\n size: typeof next.size === \"number\" && Number.isFinite(next.size) ? next.size : null,\n uploadedAt: typeof next.uploadedAt === \"string\" ? next.uploadedAt : null,\n alignmentOffsetMs: typeof next.alignmentOffsetMs === \"number\" && Number.isFinite(next.alignmentOffsetMs) ? next.alignmentOffsetMs : 0\n };\n }\n function getResponseError(payload, fallback) {\n const next = payload && typeof payload === \"object\" ? payload : {};\n if (typeof next.error === \"string\" && next.error.trim()) return next.error;\n if (typeof next.message === \"string\" && next.message.trim()) return next.message;\n return fallback;\n }\n async function readResponsePayload(response) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return response.json().catch(() => ({}));\n }\n const text = (await response.text().catch(() => \"\")).trim();\n if (!text) return {};\n if (contentType.includes(\"text/html\")) {\n const titleMatch = text.match(/<title>([^<]+)<\\/title>/i);\n const headingMatch = text.match(/<h1[^>]*>([^<]+)<\\/h1>/i);\n return {\n message: titleMatch?.[1]?.trim() || headingMatch?.[1]?.trim() || `${response.status} ${response.statusText}`.trim()\n };\n }\n return { message: text };\n }\n function isPlaybackTraceBubble(segment) {\n return segment.row === \"Playback\" && !segment.eventMarker && segment.durationMs > 0;\n }\n function segmentDisplayText(segment) {\n if (isPlaybackTraceBubble(segment)) return segment.speechText;\n return null;\n }\n function segmentStyle(segment) {\n if (viewportStartMs == null || viewportEndMs == null) return null;\n const duration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(duration) || duration <= 0) return null;\n const fill = COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray;\n const border = tintHex(fill, -0.25);\n if (segment.end === segment.start) {\n if (segment.start < viewportStartMs || segment.start > viewportEndMs) return null;\n const pointPercent = clamp((segment.start - viewportStartMs) / duration * 100, 0, 100);\n if (segment.eventMarker === \"start\") {\n return `left:${pointPercent}%;width:7px;background:${fill};border-color:${border};clip-path:polygon(0 0,100% 50%,0 100%);`;\n }\n if (segment.eventMarker === \"end\") {\n return `left:calc(${pointPercent}% - 7px);width:7px;background:${fill};border-color:${border};clip-path:polygon(100% 0,0 50%,100% 100%);`;\n }\n return `left:calc(${pointPercent}% - 2px);width:4px;background:${fill};border-color:${border};`;\n }\n const visibleStart = Math.max(segment.start, viewportStartMs);\n const visibleEnd = Math.min(segment.end, viewportEndMs);\n if (visibleEnd < visibleStart) return null;\n const leftPercent = (visibleStart - viewportStartMs) / duration * 100;\n const widthPercent = (visibleEnd - visibleStart) / duration * 100;\n if (isPlaybackTraceBubble(segment)) {\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);`;\n }\n return `left:${leftPercent}%;width:max(${widthPercent}%,2px);background:${fill};border-color:${border};`;\n }\n function segmentClass(segment) {\n if (segment.eventMarker) {\n return \"absolute inset-y-0 shadow-[0_0_0_1px_rgba(0,0,0,0.28)]\";\n }\n if (isPlaybackTraceBubble(segment)) {\n return \"absolute inset-y-0 overflow-hidden truncate rounded-lg border-thin border-rc-gray-110 bg-rc-green-700 px-3 text-sm leading-[30px] text-rc-gray-100 shadow-[0_0_0_1px_rgba(0,0,0,0.12)] backdrop-blur-md\";\n }\n return \"absolute inset-y-0 rounded border shadow-[0_0_0_1px_rgba(0,0,0,0.12)]\";\n }\n function guideLineStyle(guide) {\n return `left:${guide.leftPercent}%;top:${guide.topPx}px;height:${guide.heightPx}px;border-color:${guide.color};opacity:${guide.opacity};`;\n }\n function timelineOriginLineStyle(originLine) {\n return `left:${originLine.leftPercent}%;top:${originLine.topPx}px;height:${originLine.heightPx}px;`;\n }\n function tickLabelClass(tick) {\n const base = \"absolute top-1 whitespace-nowrap text-[11px] text-rc-gray-400\";\n if (tick.leftPercent <= 0.1) return base;\n if (tick.leftPercent >= 99.9) return `${base} -translate-x-full`;\n return `${base} -translate-x-1/2`;\n }\n function buildGuideLines(rows) {\n if (!recording.exists || viewportStartMs == null || viewportEndMs == null) return [];\n const rangeStartMs = viewportStartMs;\n const rangeEndMs = viewportEndMs;\n const durationMs = rangeEndMs - rangeStartMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const waveformBottomPx = timelinePlotHeightPx();\n const seen = /* @__PURE__ */ new Set();\n const built = [];\n rows.forEach((row, rowIndex) => {\n if (!GUIDE_ROW_LABELS.has(row.label)) return;\n const rowTopPx = TIMELINE_RULER_HEIGHT_PX + rowIndex * (TIMELINE_ROW_HEIGHT_PX + TIMELINE_ROW_GAP_PX);\n const rowAnchorPx = rowTopPx + Math.round(TIMELINE_ROW_HEIGHT_PX / 2);\n row.segments.forEach((segment) => {\n if (segment.id.startsWith(\"playback:wait:\")) return;\n const color = tintHex(COLOR_BY_KEY[segment.colorKey] ?? BOSUN_COLORS.gray, 0.15);\n const times = segment.end === segment.start ? segment.start >= rangeStartMs && segment.start <= rangeEndMs ? [segment.start] : [] : (() => {\n const visibleStart = Math.max(segment.start, rangeStartMs);\n const visibleEnd = Math.min(segment.end, rangeEndMs);\n return visibleEnd < visibleStart ? [] : [visibleStart, visibleEnd];\n })();\n for (const timeMs of times) {\n const roundedTime = Math.round(timeMs);\n const key = `${row.label}:${roundedTime}`;\n if (seen.has(key)) continue;\n seen.add(key);\n const leftPercent = clamp((timeMs - rangeStartMs) / durationMs * 100, 0, 100);\n built.push({\n id: `${segment.id}:${roundedTime}`,\n leftPercent,\n topPx: rowAnchorPx,\n heightPx: Math.max(1, waveformBottomPx - rowAnchorPx),\n color,\n opacity: row.label === \"VAD\" ? 0.62 : 0.48\n });\n }\n });\n });\n return built;\n }\n function chooseTickStep(durationMs) {\n const approx = durationMs / 7;\n const magnitude = 10 ** Math.floor(Math.log10(Math.max(1, approx)));\n const normalized = approx / magnitude;\n if (normalized <= 1) return 1 * magnitude;\n if (normalized <= 2) return 2 * magnitude;\n if (normalized <= 5) return 5 * magnitude;\n return 10 * magnitude;\n }\n function buildTicks(startMs, endMs, originMs) {\n const durationMs = endMs - startMs;\n if (!Number.isFinite(durationMs) || durationMs <= 0) return [];\n const stepMs = chooseTickStep(durationMs);\n const firstTick = Math.ceil((startMs - originMs) / stepMs) * stepMs + originMs;\n const ticks = [];\n for (let tick = firstTick; tick <= endMs; tick += stepMs) {\n const leftPercent = (tick - startMs) / durationMs * 100;\n ticks.push({\n time: tick,\n leftPercent,\n label: formatRelativeTime(tick - originMs)\n });\n }\n return ticks;\n }\n function createAudioContext() {\n const next = window.AudioContext ?? window.webkitAudioContext;\n if (!next) {\n throw new Error(\"Web Audio is not available in this browser\");\n }\n return new next();\n }\n function stopPlaybackTicker() {\n if (!playbackFrame) return;\n window.cancelAnimationFrame(playbackFrame);\n playbackFrame = 0;\n }\n async function closePlaybackAudioContext() {\n const context = playbackAudioContext;\n playbackAudioContext = null;\n if (!context) return;\n await context.close().catch(() => {\n });\n }\n async function ensurePlaybackAudioContext() {\n if (!playbackAudioContext || playbackAudioContext.state === \"closed\") {\n playbackAudioContext = createAudioContext();\n }\n if (playbackAudioContext.state === \"suspended\") {\n await playbackAudioContext.resume();\n }\n return playbackAudioContext;\n }\n function getPlaybackPositionMs() {\n const durationMs = getRecordingDurationMs();\n if (playbackPlaying && playbackAudioContext && playbackStartedAtMs != null && playbackStartedAtContextTime != null) {\n const elapsedMs = (playbackAudioContext.currentTime - playbackStartedAtContextTime) * 1e3;\n const currentMs = playbackStartedAtMs + Math.max(0, elapsedMs);\n return durationMs > 0 ? clamp(currentMs, 0, durationMs) : Math.max(0, currentMs);\n }\n return durationMs > 0 ? clamp(playbackPositionMs, 0, durationMs) : Math.max(0, playbackPositionMs);\n }\n function stopPlayback(preservePosition = true) {\n if (preservePosition) {\n playbackPositionMs = getPlaybackPositionMs();\n }\n const source = playbackSourceNode;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n stopPlaybackTicker();\n if (!source) return;\n source.onended = null;\n try {\n source.stop();\n } catch {\n }\n source.disconnect();\n }\n function startPlaybackTicker() {\n stopPlaybackTicker();\n const tick = () => {\n if (!playbackPlaying) {\n playbackFrame = 0;\n return;\n }\n playbackPositionMs = getPlaybackPositionMs();\n playbackFrame = window.requestAnimationFrame(tick);\n };\n playbackFrame = window.requestAnimationFrame(tick);\n }\n function getRecordingDurationMs() {\n if (waveform && Number.isFinite(waveform.durationMs)) {\n return Math.max(0, waveform.durationMs);\n }\n if (playbackAudioBuffer && Number.isFinite(playbackAudioBuffer.duration)) {\n return Math.max(0, playbackAudioBuffer.duration * 1e3);\n }\n return 0;\n }\n async function togglePlayback() {\n if (!recording.exists || !recording.audioUrl) return;\n playbackError = null;\n if (playbackPlaying) {\n stopPlayback(true);\n return;\n }\n await startPlaybackAtMs(playbackPositionMs);\n }\n async function startPlaybackAtMs(nextMs) {\n const buffer = playbackAudioBuffer;\n if (!buffer) {\n playbackError = \"Failed to decode recording for playback\";\n return;\n }\n const durationMs = Math.max(0, buffer.duration * 1e3);\n const startMs = durationMs > 0 ? nextMs >= durationMs ? 0 : clamp(nextMs, 0, durationMs) : Math.max(0, nextMs);\n stopPlayback(false);\n playbackPositionMs = startMs;\n try {\n const context = await ensurePlaybackAudioContext();\n const source = context.createBufferSource();\n source.buffer = buffer;\n source.connect(context.destination);\n source.onended = () => {\n if (playbackSourceNode !== source) return;\n playbackSourceNode = null;\n playbackStartedAtMs = null;\n playbackStartedAtContextTime = null;\n playbackPlaying = false;\n playbackPositionMs = durationMs;\n stopPlaybackTicker();\n };\n playbackSourceNode = source;\n playbackStartedAtMs = startMs;\n playbackStartedAtContextTime = context.currentTime;\n playbackPlaying = true;\n playbackError = null;\n startPlaybackTicker();\n source.start(0, startMs / 1e3);\n } catch (reason) {\n stopPlayback(false);\n playbackPlaying = false;\n playbackError = reason instanceof Error ? reason.message : \"Failed to play recording\";\n }\n }\n function compareConversationTraces(a, b) {\n return a.createdAt - b.createdAt || String(a.traceId ?? \"\").localeCompare(String(b.traceId ?? \"\"));\n }\n function fitViewport(markDirty = true) {\n const extent = conversationTraceExtent() ?? contentExtent();\n if (!extent) return;\n const originMs = timelineOriginMs();\n viewportStartMs = originMs;\n viewportEndMs = Math.max(originMs + 1e3, extent.max);\n viewDirty = markDirty;\n }\n function clampViewport(startMs, endMs) {\n const extent = contentExtent();\n if (!extent) return { startMs, endMs };\n const durationMs = endMs - startMs;\n if (durationMs <= 0) return { startMs, endMs };\n const marginMs = Math.max(1e3, durationMs * 0.25);\n const minAllowed = extent.min - marginMs;\n const maxAllowed = extent.max + marginMs;\n if (durationMs >= maxAllowed - minAllowed) {\n return { startMs: minAllowed, endMs: maxAllowed };\n }\n if (startMs < minAllowed) {\n endMs += minAllowed - startMs;\n startMs = minAllowed;\n }\n if (endMs > maxAllowed) {\n startMs -= endMs - maxAllowed;\n endMs = maxAllowed;\n }\n return { startMs, endMs };\n }\n function setViewport(startMs, endMs) {\n if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs <= startMs) return;\n const next = clampViewport(startMs, endMs);\n viewportStartMs = next.startMs;\n viewportEndMs = next.endMs;\n }\n function zoomViewport(factor, focusRatio = 0.5) {\n if (viewportStartMs == null || viewportEndMs == null) return;\n const currentDuration = viewportEndMs - viewportStartMs;\n if (!Number.isFinite(currentDuration) || currentDuration <= 0) return;\n const extent = contentExtent();\n const contentDuration = extent ? extent.max - extent.min : currentDuration;\n const minDuration = Math.min(100, currentDuration);\n const maxDuration = Math.max(contentDuration + Math.max(2e3, contentDuration * 0.1), 5e3);\n const nextDuration = clamp(currentDuration * factor, minDuration, maxDuration);\n const nextFocusRatio = clamp(focusRatio, 0, 1);\n const focusMs = viewportStartMs + currentDuration * nextFocusRatio;\n const nextStartMs = focusMs - nextDuration * nextFocusRatio;\n viewDirty = true;\n setViewport(nextStartMs, nextStartMs + nextDuration);\n }\n function setLocalAlignmentOffset(nextOffsetMs) {\n recording = { ...recording, alignmentOffsetMs: Math.round(nextOffsetMs) };\n }\n async function persistAlignmentOffset() {\n if (!recording.exists || !recordingApiUrl()) return;\n alignmentSaving = true;\n alignmentError = null;\n try {\n const response = await fetch(recordingApiUrl(), {\n method: \"PATCH\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\"\n },\n body: JSON.stringify({ alignmentOffsetMs: recording.alignmentOffsetMs })\n });\n const payload = await readResponsePayload(response);\n if (!response.ok) {\n throw new Error(getResponseError(payload, \"Failed to save alignment offset\"));\n }\n recording = buildRecordingResponse(payload);\n } catch (reason) {\n alignmentError = reason instanceof Error ? reason.message : String(reason);\n } finally {\n alignmentSaving = false;\n }\n }\n async function resetAlignment() {\n if (!recording.exists) return;\n viewDirty = true;\n setLocalAlignmentOffset(0);\n await persistAlignmentOffset();\n }\n $$renderer2.push(`<div class=\"flex h-full min-h-0 flex-col bg-rc-gray-700\"><div class=\"flex-none border-b border-rc-gray-300/40 p-4\"><div class=\"flex flex-wrap items-start justify-between gap-3\"><div><h2 class=\"text-lg font-semibold text-rc-gray-100\">Latency `);\n if (conversationId()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"text-rc-gray-100\">for conversation Id:</span> <span class=\"text-rc-green-200\">${escape_html(conversationId())}</span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></h2> <div class=\"mt-2 flex flex-wrap gap-x-5 gap-y-1 text-xs text-rc-gray-300\"><div><span class=\"text-rc-gray-400\">Latency events:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(latencyTraceCount())}</span></div> <div><span class=\"text-rc-gray-400\">Timeline items:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(callSegments().length)}</span></div> <div><span class=\"text-rc-gray-400\">Recording offset:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(fmtSignedMs(recording.alignmentOffsetMs))}</span></div> `);\n if (recording.exists && playbackAbsoluteMs() != null) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div><span class=\"text-rc-gray-400\">Playhead:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(formatRelativeTime(playbackAbsoluteMs() - timelineOriginMs()))}</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (viewportStartMs != null && viewportEndMs != null) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div><span class=\"text-rc-gray-400\">Viewport:</span> <span class=\"font-mono text-rc-gray-100\">${escape_html(formatRelativeTime(viewportStartMs - timelineOriginMs()))} → ${escape_html(formatRelativeTime(viewportEndMs - timelineOriginMs()))}</span></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div></div> <div class=\"flex flex-wrap items-center gap-2\"><input type=\"file\" accept=\".wav,audio/wav,audio/x-wav\" class=\"hidden\"/> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: uploadInFlight,\n onclick: () => fileInputEl?.click(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(recording.exists ? \"Replace WAV\" : \"Upload WAV\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !recording.exists,\n onclick: () => void togglePlayback(),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(playbackPlaying ? \"Pause\" : \"Play\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs() == null,\n onclick: () => zoomViewport(0.8),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom in`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: viewportDurationMs() == null,\n onclick: () => zoomViewport(1.25),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Zoom out`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !(conversationTraceExtent() ?? contentExtent()),\n onclick: () => fitViewport(true),\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Fit call`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !recording.exists || alignmentSaving,\n onclick: resetAlignment,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->Reset alignment`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----> `);\n Button($$renderer2, {\n variant: \"secondary\",\n size: \"small\",\n disabled: !traces.length,\n onclick: copyLatencyStream,\n children: ($$renderer3) => {\n $$renderer3.push(`<!---->${escape_html(copyLatencyState === \"ok\" ? \"Copied\" : copyLatencyState === \"error\" ? \"Copy failed\" : \"Copy latency stream\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (error) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Failed to load latency traces: ${escape_html(error)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (recordingError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Recording error: ${escape_html(recordingError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (alignmentError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Alignment error: ${escape_html(alignmentError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackError) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-2 text-sm text-red-300\">Playback error: ${escape_html(playbackError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"rc-scroll min-h-0 flex-1 overflow-auto p-4\"><div class=\"flex flex-col gap-4\"><div class=\"rounded-md border border-rc-gray-650 p-3\">`);\n if (!callSegments().length) {\n $$renderer2.push(\"<!--[1-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No latency events were found on this call.</div>`);\n } else if (viewportStartMs == null || viewportEndMs == null) {\n $$renderer2.push(\"<!--[2-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">Preparing timeline…</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"grid grid-cols-[140px_minmax(0,1fr)] gap-x-3\"><div class=\"flex flex-col\"><div class=\"h-8\"></div> <!--[-->`);\n const each_array = ensure_array_like(timelineRows());\n for (let rowIndex = 0, $$length = each_array.length; rowIndex < $$length; rowIndex++) {\n let row = each_array[rowIndex];\n $$renderer2.push(`<div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}>${escape_html(row.label)}</div>`);\n }\n $$renderer2.push(`<!--]--> <div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}>Human</div> `);\n if (waveformRowVisible()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"flex items-center text-xs text-rc-gray-300\"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>Waveform</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative\"><div class=\"pointer-events-none absolute inset-0 z-10 overflow-hidden\"><!--[-->`);\n const each_array_1 = ensure_array_like(speechBubbles());\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let bubble = each_array_1[$$index_1];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-rc-gray-300/40\"${attr_style(speechBubbleLineStyle(bubble))}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_2 = ensure_array_like(guideLines());\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let guide = each_array_2[$$index_2];\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l border-dashed\"${attr_style(guideLineStyle(guide))}></div>`);\n }\n $$renderer2.push(`<!--]--> `);\n if (timelineOriginLine()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"absolute border-l border-rc-gray-200/80\"${attr_style(timelineOriginLineStyle(timelineOriginLine()))}></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (playbackCursor()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"absolute -translate-x-1/2 border-l-2 border-rc-green-200/90\"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx}px;height:${playbackCursor().heightPx}px;`)}></div> <div class=\"absolute h-2 w-2 -translate-x-1/2 rounded-full bg-rc-green-200\"${attr_style(`left:${playbackCursor().leftPercent}%;top:${playbackCursor().topPx - 4}px;`)}></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"relative z-0 h-8 overflow-hidden rounded-t border border-b-0 border-rc-gray-700/60\"><!--[-->`);\n const each_array_3 = ensure_array_like(visibleTicks());\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let tick = each_array_3[$$index_3];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/70\"${attr_style(`left:${tick.leftPercent}%;`)}></div> <div${attr_class(clsx(tickLabelClass(tick)))}${attr_style(`left:${tick.leftPercent}%;`)}>${escape_html(tick.label)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> <!--[-->`);\n const each_array_4 = ensure_array_like(timelineRows());\n for (let rowIndex = 0, $$length = each_array_4.length; rowIndex < $$length; rowIndex++) {\n let row = each_array_4[rowIndex];\n $$renderer2.push(`<div class=\"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60\"${attr_style(`height:${TIMELINE_ROW_HEIGHT_PX}px;margin-top:${rowIndex === 0 ? 0 : TIMELINE_ROW_GAP_PX}px;`)}><!--[-->`);\n const each_array_5 = ensure_array_like(visibleTicks());\n for (let $$index_4 = 0, $$length2 = each_array_5.length; $$index_4 < $$length2; $$index_4++) {\n let tick = each_array_5[$$index_4];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_6 = ensure_array_like(row.segments);\n for (let $$index_5 = 0, $$length2 = each_array_6.length; $$index_5 < $$length2; $$index_5++) {\n let segment = each_array_6[$$index_5];\n const style = segmentStyle(segment);\n const text = segmentDisplayText(segment);\n if (style) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div${attr_class(clsx(segmentClass(segment)))}${attr_style(style)}>`);\n if (text) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<span class=\"block truncate\">${escape_html(text)}</span>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--> <div${attr_class(\"relative z-0 overflow-hidden border-x border-t border-rc-gray-700/60\", void 0, {\n \"rounded-b\": !waveformRowVisible(),\n \"border-b\": !waveformRowVisible()\n })}${attr_style(`height:${speechBubbleAreaHeightPx()}px;margin-top:${traceRowsToBubbleGapPx()}px;`)}><div class=\"absolute inset-x-0 top-0 border-b border-rc-gray-700/50\"${attr_style(`height:${humanSpeechBubbleLaneHeightPx()}px;`)}></div> <!--[-->`);\n const each_array_7 = ensure_array_like(visibleTicks());\n for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {\n let tick = each_array_7[$$index_7];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/45\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_8 = ensure_array_like(speechBubbles());\n for (let $$index_8 = 0, $$length = each_array_8.length; $$index_8 < $$length; $$index_8++) {\n let bubble = each_array_8[$$index_8];\n $$renderer2.push(`<div${attr_class(clsx(speechBubbleClass(bubble)))}${attr_style(speechBubbleStyle(bubble))}>${escape_html(bubble.text)}</div>`);\n }\n $$renderer2.push(`<!--]--></div> `);\n if (waveformRowVisible()) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"relative z-0 overflow-hidden rounded-b border-x border-b border-t border-rc-gray-700/60\"${attr_style(`height:${WAVEFORM_ROW_HEIGHT_PX}px;margin-top:${TIMELINE_ROW_GAP_PX}px;`)}>`);\n if (waveformError) {\n $$renderer2.push(\"<!--[1-->\");\n $$renderer2.push(`<div class=\"absolute inset-0 flex items-center justify-center px-4 text-sm text-red-300\">Failed to decode waveform: ${escape_html(waveformError)}</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<canvas class=\"absolute inset-0 h-full w-full\"></canvas>`);\n }\n $$renderer2.push(`<!--]--> <!--[-->`);\n const each_array_9 = ensure_array_like(visibleTicks());\n for (let $$index_9 = 0, $$length = each_array_9.length; $$index_9 < $$length; $$index_9++) {\n let tick = each_array_9[$$index_9];\n $$renderer2.push(`<div class=\"absolute inset-y-0 w-px bg-rc-gray-700/60\"${attr_style(`left:${tick.leftPercent}%;`)}></div>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div></div>`);\n }\n $$renderer2.push(`<!--]--></div></div></div></div> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAQA,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AACpC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK;AACxC,IAAI,MAAM,uBAAuB,GAAG,EAAE;AACtC,IAAI,MAAM,wBAAwB,GAAG,EAAE;AACvC,IAAI,MAAM,sBAAsB,GAAG,uBAAuB;AAC1D,IAAI,MAAM,mBAAmB,GAAG,CAAC;AACjC,IAAI,MAAM,sBAAsB,GAAG,GAAG;AACtC,IAAI,MAAM,6BAA6B,GAAG,mBAAmB;AAC7D,IAAI,MAAM,6BAA6B,GAAG,uBAAuB,GAAG,6BAA6B;AACjG,IAAI,MAAM,2CAA2C,GAAG,GAAG;AAC3D,IAAI,MAAM,0CAA0C,GAAG,IAAI;AAC3D,IAAI,MAAM,4CAA4C,GAAG,GAAG;AAC5D,IAAI,MAAM,yCAAyC,GAAG,GAAG;AACzD,IAAI,MAAM,gBAAgB,mBAAmB,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC7C,IAAI,MAAM,YAAY,GAAG;AACzB,MAAM,IAAI,EAAE,SAAS;AACrB,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,SAAS,EAAE,SAAS;AAC1B,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,GAAG,EAAE,SAAS;AACpB,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG;AACrB,MAAM;AACN,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,UAAU,EAAE,CAAC,eAAe,EAAE,iBAAiB;AACvD,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,UAAU,EAAE;AACpB,UAAU,aAAa;AACvB,UAAU,aAAa;AACvB,UAAU,WAAW;AACrB,UAAU;AACV;AACA,OAAO;AACP,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE;AAC1D,MAAM;AACN,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,UAAU,EAAE,CAAC,uBAAuB,EAAE,yBAAyB;AACvE,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,UAAU,EAAE;AACpB,UAAU,yBAAyB;AACnC,UAAU,2BAA2B;AACrC,UAAU,wBAAwB;AAClC,UAAU,uBAAuB;AACjC,UAAU,yBAAyB;AACnC,UAAU;AACV;AACA,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,UAAU,EAAE,CAAC,kBAAkB,EAAE,eAAe,EAAE,oBAAoB;AAC9E,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,YAAY;AAC3B,QAAQ,UAAU,EAAE;AACpB,UAAU,oBAAoB;AAC9B,UAAU,iBAAiB;AAC3B,UAAU,eAAe;AACzB,UAAU;AACV;AACA,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,UAAU,EAAE,CAAC,qBAAqB,EAAE,oBAAoB;AAChE,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,UAAU,EAAE;AACpB,UAAU,sBAAsB;AAChC,UAAU,0BAA0B;AACpC,UAAU,yBAAyB;AACnC,UAAU;AACV;AACA,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,QAAQ;AACvB,QAAQ,UAAU,EAAE,CAAC,oBAAoB,EAAE,sBAAsB;AACjE,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,cAAc;AAC7B,QAAQ,UAAU,EAAE,CAAC,2BAA2B,EAAE,6BAA6B;AAC/E,OAAO;AACP,MAAM;AACN,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,UAAU,EAAE;AACpB,UAAU,wBAAwB;AAClC,UAAU,wBAAwB;AAClC,UAAU;AACV;AACA,OAAO;AACP,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACnC,MAAM;AACN,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,UAAU,EAAE,CAAC,uBAAuB,EAAE,4BAA4B;AAC1E,OAAO;AACP,MAAM,EAAE,KAAK,EAAE,OAAO;AACtB,KAAK;AACL,IAAI,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,MAAM,YAAY,GAAG;AACzB,MAAM,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;AAC3C,MAAM,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7C,MAAM,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;AAC5C,MAAM,OAAO,EAAE,YAAY,CAAC,SAAS;AACrC,MAAM,qBAAqB,EAAE,YAAY,CAAC,KAAK;AAC/C,MAAM,uBAAuB,EAAE,YAAY,CAAC,GAAG;AAC/C,MAAM,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;AAC5D,MAAM,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;AACvD,MAAM,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACnD,MAAM,YAAY,EAAE,YAAY,CAAC,IAAI;AACrC,MAAM,UAAU,EAAE,YAAY,CAAC,MAAM;AACrC,MAAM,wBAAwB,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACnE,MAAM,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;AACxD,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;AACvD,MAAM,mBAAmB,EAAE,YAAY,CAAC,MAAM;AAC9C,MAAM,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;AACtD,MAAM,YAAY,EAAE,YAAY,CAAC,MAAM;AACvC,MAAM,KAAK,EAAE,YAAY,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,UAAU,GAAG;AACvB,MAAM;AACN,QAAQ,cAAc,EAAE,uBAAuB;AAC/C,QAAQ,YAAY,EAAE,yBAAyB;AAC/C,QAAQ,GAAG,EAAE,eAAe;AAC5B,QAAQ,QAAQ,EAAE,eAAe;AACjC,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,yBAAyB;AACjD,QAAQ,YAAY,EAAE,2BAA2B;AACjD,QAAQ,GAAG,EAAE,eAAe;AAC5B,QAAQ,QAAQ,EAAE,eAAe;AACjC,QAAQ,KAAK,EAAE,aAAa;AAC5B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,uBAAuB;AAC/C,QAAQ,YAAY,EAAE,yBAAyB;AAC/C,QAAQ,GAAG,EAAE,eAAe;AAC5B,QAAQ,QAAQ,EAAE,eAAe;AACjC,QAAQ,KAAK,EAAE,WAAW;AAC1B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,kBAAkB;AAC1C,QAAQ,YAAY,EAAE,oBAAoB;AAC1C,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,oBAAoB;AAC5C,QAAQ,YAAY,EAAE,sBAAsB;AAC5C,QAAQ,GAAG,EAAE,YAAY;AACzB,QAAQ,QAAQ,EAAE,YAAY;AAC9B,QAAQ,KAAK,EAAE,YAAY;AAC3B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,qBAAqB;AAC7C,QAAQ,YAAY,EAAE,oBAAoB;AAC1C,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,sBAAsB;AAC9C,QAAQ,YAAY,EAAE,0BAA0B;AAChD,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,QAAQ,EAAE,wBAAwB;AAC1C,QAAQ,KAAK,EAAE,eAAe;AAC9B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,0BAA0B;AAClD,QAAQ,YAAY,EAAE,wBAAwB;AAC9C,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,KAAK,EAAE,gBAAgB;AAC/B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,oBAAoB;AAC5C,QAAQ,YAAY,EAAE,sBAAsB;AAC5C,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,QAAQ,EAAE,YAAY;AAC9B,QAAQ,KAAK,EAAE,QAAQ;AACvB,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,2BAA2B;AACnD,QAAQ,YAAY,EAAE,6BAA6B;AACnD,QAAQ,GAAG,EAAE,cAAc;AAC3B,QAAQ,QAAQ,EAAE,mBAAmB;AACrC,QAAQ,KAAK,EAAE,cAAc;AAC7B,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM;AACN,QAAQ,cAAc,EAAE,wBAAwB;AAChD,QAAQ,YAAY,EAAE,wBAAwB;AAC9C,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,QAAQ,EAAE,UAAU;AAC5B,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,WAAW,EAAE;AACrB;AACA,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7F,IAAI,SAAS,sBAAsB,GAAG;AACtC,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,QAAQ,EAAE,IAAI;AACtB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,iBAAiB,EAAE;AAC3B,OAAO;AACP,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,yBAAyB,EAAE;AAClD,IAAI,MAAM,eAAe,GAAG,6BAA6B,EAAE,IAAI,EAAE;AACjE,IAAI,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;AAClE,IAAI,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,qBAAqB,EAAE,eAAe,CAAC;AAC9F,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAClE,IAAI,MAAM,CAAC,WAAW,CAAC,eAAe,IAAI,MAAM,CAAC;AACjD,IAAI,IAAI,QAAQ,GAAG,eAAe;AAClC,IAAI,IAAI,YAAY,GAAG,aAAa,EAAE,YAAY,IAAI,IAAI;AAC1D,IAAI,IAAI,MAAM,GAAG,aAAa,EAAE,MAAM,IAAI,EAAE;AAC5C,IAAI,IAAI,kBAAkB,GAAG,aAAa,EAAE,kBAAkB,IAAI,EAAE;AACpE,IAAI,IAAI,UAAU,GAAG,aAAa,EAAE,UAAU,IAAI,KAAK;AACvD,IAAI,IAAI,KAAK,GAAG,aAAa,EAAE,KAAK,IAAI,IAAI;AAC5C,IAAI,IAAI,SAAS,GAAG,aAAa,EAAE,SAAS,IAAI,sBAAsB,EAAE;AACxE,IAAI,IAAI,eAAe,GAAG,aAAa,EAAE,eAAe,IAAI,KAAK;AACjE,IAAI,IAAI,cAAc,GAAG,aAAa,EAAE,cAAc,IAAI,IAAI;AAC9D,IAAI,IAAI,cAAc,GAAG,KAAK;AAC9B,IAAI,IAAI,QAAQ,GAAG,aAAa,EAAE,QAAQ,IAAI,IAAI;AAClD,IAAI,IAAI,aAAa,GAAG,aAAa,EAAE,aAAa,IAAI,IAAI;AAC5D,IAAI,IAAI,kBAAkB,GAAG,aAAa,EAAE,kBAAkB,IAAI,CAAC;AACnE,IAAI,IAAI,eAAe,GAAG,KAAK;AAC/B,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,IAAI,eAAe,GAAG,KAAK;AAC/B,IAAI,IAAI,cAAc,GAAG,IAAI;AAC7B,IAAI,IAAI,SAAS,GAAG,aAAa,EAAE,SAAS,IAAI,KAAK;AACrD,IAAI,IAAI,eAAe,GAAG,IAAI;AAC9B,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,IAAI,gBAAgB,GAAG,IAAI;AAC/B,IAAI,IAAI,WAAW,GAAG,IAAI;AAC1B,IAAI,IAAI,+BAA+B,GAAG,aAAa,EAAE,+BAA+B,IAAI,CAAC;AAC7F,IAAI,IAAI,gBAAgB,GAAG,MAAM;AACjC,IAAI,IAAI,OAAO,GAAG,EAAE;AACpB,IAAI,IAAI,aAAa,GAAG,CAAC;AACzB,IAAI,IAAI,mBAAmB,GAAG,aAAa,EAAE,mBAAmB,IAAI,IAAI;AACxE,IAAI,IAAI,oBAAoB,GAAG,IAAI;AACnC,IAAI,IAAI,kBAAkB,GAAG,IAAI;AACjC,IAAI,IAAI,mBAAmB,GAAG,IAAI;AAClC,IAAI,IAAI,4BAA4B,GAAG,IAAI;AAC3C,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;AACpE,IAAI,SAAS,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE;AACxD,MAAM,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;AAC1C,MAAM,IAAI,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC1D,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE;AACtC,MAAM,OAAO,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM;AAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE;AACtC,MAAM,OAAO,uBAAuB,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC;AAChE,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM;AAC3C,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB;AACxC,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAClC,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5E,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;AACvC,MAAM;AACN,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG;AAC1C,MAAM,IAAI,OAAO,YAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAClG,QAAQ,OAAO,YAAY,CAAC,SAAS;AACrC,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAC3C,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACxE,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC;AAC1D,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,gBAAgB,EAAE,CAAC;AACzD,IAAI,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,0BAA0B,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1G,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM;AAC3C,MAAM,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;AAC/D,QAAQ,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1E,QAAQ,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE,OAAO,OAAO;AAC5F,QAAQ,OAAO;AACf,UAAU,GAAG,OAAO;AACpB,UAAU,UAAU,EAAE,MAAM,CAAC,IAAI;AACjC,UAAU,cAAc,EAAE,MAAM,CAAC,QAAQ;AACzC,UAAU,gBAAgB,EAAE,MAAM,CAAC;AACnC,SAAS;AACT,MAAM,CAAC,CAAC;AACR,MAAM,OAAO;AACb,QAAQ,GAAG,gBAAgB;AAC3B,QAAQ,GAAG,2BAA2B,CAAC,WAAW,EAAE,EAAE,qBAAqB,EAAE,CAAC,WAAW;AACzF,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM;AACvC,MAAM,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC/C,MAAM,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,EAAE;AAChD,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9C,QAAQ,IAAI,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,aAAa,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAChD,MAAM;AACN,MAAM,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1J,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,4BAA4B,EAAE,CAAC;AACjF,IAAI,MAAM,2BAA2B,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,0BAA0B,CAAC,uBAAuB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAChK,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,0BAA0B,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC9F,IAAI,MAAM,6BAA6B,GAAG,OAAO,CAAC,MAAM,wBAAwB,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAChH,IAAI,MAAM,wBAAwB,GAAG,OAAO,CAAC,MAAM,6BAA6B,EAAE,CAAC;AACnF,IAAI,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC;AAC7J,IAAI,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,mBAAmB,GAAG,CAAC,CAAC;AACrG,IAAI,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,EAAE,GAAG,sBAAsB,EAAE,CAAC;AAC7H,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC;AAC9D,IAAI,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,kBAAkB,EAAE,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,CAAC,CAAC;AACtH,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;AACrE,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM;AAC3C,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAChC,MAAM,OAAO,gBAAgB,EAAE,GAAG,SAAS,CAAC,iBAAiB;AAC7D,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,EAAE,GAAG,sBAAsB,EAAE,GAAG,wBAAwB,EAAE,GAAG,mBAAmB,EAAE,CAAC;AACjL,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM;AAC7C,MAAM,IAAI,gBAAgB,EAAE,IAAI,IAAI,EAAE,OAAO,IAAI;AACjD,MAAM,OAAO,gBAAgB,EAAE,GAAG,kBAAkB;AACpD,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM;AACzC,MAAM,MAAM,UAAU,GAAG,kBAAkB,EAAE;AAC7C,MAAM,IAAI,UAAU,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,IAAI;AAC7F,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe;AACxD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,IAAI;AACtE,MAAM,IAAI,UAAU,GAAG,eAAe,IAAI,UAAU,GAAG,aAAa,EAAE,OAAO,IAAI;AACjF,MAAM,OAAO;AACb,QAAQ,WAAW,EAAE,KAAK,CAAC,CAAC,UAAU,GAAG,eAAe,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACrF,QAAQ,KAAK,EAAE,wBAAwB;AACvC,QAAQ,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,wBAAwB;AAC/E,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM;AAC7C,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,IAAI;AACvE,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe;AACxD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,IAAI;AACtE,MAAM,IAAI,gBAAgB,EAAE,GAAG,eAAe,IAAI,gBAAgB,EAAE,GAAG,aAAa,EAAE,OAAO,IAAI;AACjG,MAAM,OAAO;AACb,QAAQ,WAAW,EAAE,CAAC,gBAAgB,EAAE,GAAG,eAAe,IAAI,UAAU,GAAG,GAAG;AAC9E,QAAQ,KAAK,EAAE,wBAAwB;AACvC,QAAQ,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,wBAAwB;AAC/E,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;AACxC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB;AACxC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB;AACxC,MAAM,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,EAAE;AAC5C,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACxC,MAAM;AACN,MAAM,IAAI,QAAQ,IAAI,gBAAgB,EAAE,IAAI,IAAI,EAAE;AAClD,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC;AAC/C,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;AACrE,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AACnC,MAAM,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AACzB,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM;AAClD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB;AACxC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB;AACxC,MAAM,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,EAAE;AAC5C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACnD,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACxC,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AACnC,MAAM,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AACzB,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM;AAC7C,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,IAAI;AACvE,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,eAAe;AACtD,MAAM,OAAO,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI;AAC3C,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM;AACvC,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,EAAE;AACrE,MAAM,OAAO,UAAU,CAAC,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAC3E,IAAI,CAAC,CAAC;AACN,IAAI,SAAS,cAAc,CAAC,GAAG,GAAG,OAAO,EAAE;AAC3C,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,YAAY;AACpB,QAAQ,MAAM;AACd,QAAQ,kBAAkB;AAC1B,QAAQ,UAAU;AAClB,QAAQ,KAAK;AACb,QAAQ,SAAS;AACjB,QAAQ,eAAe;AACvB,QAAQ,cAAc;AACtB,QAAQ,QAAQ;AAChB,QAAQ,aAAa;AACrB,QAAQ,mBAAmB;AAC3B,QAAQ,kBAAkB;AAC1B,QAAQ,eAAe;AACvB,QAAQ,aAAa;AACrB,QAAQ,gBAAgB,EAAE,gBAAgB,EAAE;AAC5C,QAAQ,SAAS;AACjB,QAAQ,+BAA+B;AACvC,QAAQ,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,gBAAgB,EAAE,SAAS,IAAI,CAAC;AAC1E,QAAQ,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,gBAAgB,EAAE,UAAU,IAAI;AAC5E,OAAO;AACP,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACzC,MAAM,MAAM,GAAG,GAAG,cAAc,EAAE;AAClC,MAAM,MAAM,eAAe,GAAG,6BAA6B,EAAE,IAAI,EAAE;AACnE,MAAM,IAAI,GAAG,IAAI,eAAe,IAAI,GAAG,KAAK,yBAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAChF,QAAQ,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC;AACvF,MAAM;AACN,IAAI;AACJ,IAAI,SAAS,CAAC,MAAM;AACpB,MAAM,cAAc,EAAE;AACtB,MAAM,YAAY,CAAC,KAAK,CAAC;AACzB,MAAM,KAAK,yBAAyB,EAAE;AACtC,IAAI,CAAC,CAAC;AACN,IAAI,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC5C,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;AAChD,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAClC,MAAM,OAAO,OAAO,GAAG,OAAO,GAAG,IAAI;AACrC,IAAI;AACJ,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE;AACvB,MAAM,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;AAC/E,IAAI;AACJ,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,IAAI;AACJ,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChD,IAAI;AACJ,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAClC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;AACtG,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG;AAC/E,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAC1C,MAAM,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChN,IAAI;AACJ,IAAI,SAAS,WAAW,CAAC,KAAK,EAAE;AAChC,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM;AACjE,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC,MAAM,IAAI,OAAO,KAAK,CAAC,EAAE,OAAO,MAAM;AACtC,MAAM,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;AACrD,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG;AAChD,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;AAC1C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpC,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,GAAG;AACpC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,EAAE;AACjD,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,IAAI;AACJ,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC7B,MAAM,IAAI;AACV,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,MAAM,CAAC,CAAC,MAAM;AACd,QAAQ,OAAO,MAAM,CAAC,KAAK,CAAC;AAC5B,MAAM;AACN,IAAI;AACJ,IAAI,eAAe,iBAAiB,GAAG;AACvC,MAAM,IAAI;AACV,QAAQ,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,gBAAgB,GAAG,IAAI;AAC/B,QAAQ,MAAM,CAAC,UAAU;AACzB,UAAU,MAAM;AAChB,YAAY,gBAAgB,GAAG,MAAM;AACrC,UAAU,CAAC;AACX,UAAU;AACV,SAAS;AACT,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,MAAM,CAAC;AAC9D,QAAQ,gBAAgB,GAAG,OAAO;AAClC,QAAQ,MAAM,CAAC,UAAU;AACzB,UAAU,MAAM;AAChB,YAAY,gBAAgB,GAAG,MAAM;AACrC,UAAU,CAAC;AACX,UAAU;AACV,SAAS;AACT,MAAM;AACN,IAAI;AACJ,IAAI,SAAS,aAAa,CAAC,KAAK,EAAE;AAClC,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,GAAG,cAAc;AAC5J,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACzC,QAAQ,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3F,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,gBAAgB,EAAE;AAChD,QAAQ,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9D,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AACtC,QAAQ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,MAAM;AACN,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrD,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AACnC,MAAM,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE;AAC7F,IAAI;AACJ,IAAI,SAAS,UAAU,CAAC,SAAS,EAAE;AACnC,MAAM,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,YAAY,EAAE,OAAO,MAAM;AACnF,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpD,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpD,MAAM,IAAI,SAAS,KAAK,gBAAgB,EAAE,OAAO,SAAS;AAC1D,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,OAAO,eAAe;AACxE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9F,QAAQ,OAAO,eAAe;AAC9B,MAAM;AACN,MAAM,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,UAAU;AAC/F,MAAM,IAAI,SAAS,KAAK,iBAAiB,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AACnH,QAAQ,OAAO,YAAY;AAC3B,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,UAAU;AAC9D,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,OAAO,UAAU;AAClE,MAAM,IAAI,SAAS,KAAK,0BAA0B,IAAI,SAAS,KAAK,yBAAyB,EAAE;AAC/F,QAAQ,OAAO,UAAU;AACzB,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,OAAO,QAAQ;AAC9D,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,cAAc;AAC3E,MAAM,IAAI,SAAS,KAAK,uBAAuB,IAAI,SAAS,KAAK,4BAA4B,EAAE;AAC/F,QAAQ,OAAO,eAAe;AAC9B,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,UAAU;AACpE,MAAM,OAAO,OAAO;AACpB,IAAI;AACJ,IAAI,SAAS,eAAe,CAAC,SAAS,EAAE;AACxC,MAAM,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,YAAY,EAAE,OAAO,MAAM;AACnF,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpD,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACpD,MAAM,IAAI,SAAS,KAAK,gBAAgB,EAAE,OAAO,SAAS;AAC1D,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,OAAO,eAAe;AACxE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9F,QAAQ,OAAO,eAAe;AAC9B,MAAM;AACN,MAAM,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,UAAU;AAC/F,MAAM,IAAI,SAAS,KAAK,iBAAiB,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AACnH,QAAQ,OAAO,YAAY;AAC3B,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,UAAU;AAC9D,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,OAAO,wBAAwB;AAChF,MAAM,IAAI,SAAS,KAAK,0BAA0B,IAAI,SAAS,KAAK,yBAAyB,EAAE;AAC/F,QAAQ,OAAO,cAAc;AAC7B,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,OAAO,YAAY;AAClE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,mBAAmB;AAChF,MAAM,IAAI,SAAS,KAAK,uBAAuB,IAAI,SAAS,KAAK,4BAA4B,EAAE;AAC/F,QAAQ,OAAO,cAAc;AAC7B,MAAM;AACN,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO,UAAU;AACpE,MAAM,OAAO,OAAO;AACpB,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,SAAS,EAAE;AAC3C,MAAM,QAAQ,SAAS;AACvB,QAAQ,KAAK,eAAe;AAC5B,QAAQ,KAAK,aAAa;AAC1B,UAAU,OAAO,OAAO;AACxB,QAAQ,KAAK,iBAAiB;AAC9B,QAAQ,KAAK,WAAW;AACxB,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,KAAK;AACtB,QAAQ;AACR,UAAU,OAAO,IAAI;AACrB;AACA,IAAI;AACJ,IAAI,SAAS,YAAY,CAAC,KAAK,EAAE;AACjC,MAAM,QAAQ,KAAK,CAAC,SAAS;AAC7B,QAAQ,KAAK,cAAc;AAC3B,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,YAAY;AACzB,UAAU,OAAO,YAAY;AAC7B,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,eAAe;AAChC,QAAQ,KAAK,iBAAiB;AAC9B,UAAU,OAAO,iBAAiB;AAClC,QAAQ,KAAK,aAAa;AAC1B,UAAU,OAAO,WAAW;AAC5B,QAAQ,KAAK,aAAa;AAC1B,UAAU,OAAO,aAAa;AAC9B,QAAQ,KAAK,WAAW;AACxB,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,WAAW;AAC5B,QAAQ,KAAK,gBAAgB;AAC7B,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,qBAAqB;AACtC,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,mBAAmB;AACpC,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,mBAAmB;AACpC,QAAQ,KAAK,2BAA2B;AACxC,UAAU,OAAO,iBAAiB;AAClC,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,oBAAoB;AACrC,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,WAAW;AAC5B,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,SAAS;AAC1B,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,YAAY;AAC7B,QAAQ,KAAK,kBAAkB;AAC/B,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,kBAAkB;AACnC,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,aAAa;AAC9B,QAAQ,KAAK,iBAAiB;AAC9B,UAAU,OAAO,iBAAiB;AAClC,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,SAAS;AAC1B,QAAQ,KAAK,qBAAqB;AAClC,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,0BAA0B;AACvC,UAAU,OAAO,yBAAyB;AAC1C,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,oBAAoB;AACrC,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,YAAY;AAC7B,QAAQ,KAAK,2BAA2B;AACxC,UAAU,OAAO,oBAAoB;AACrC,QAAQ,KAAK,6BAA6B;AAC1C,UAAU,OAAO,kBAAkB;AACnC,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,uBAAuB;AACxC,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,gBAAgB;AACjC,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,eAAe;AAChC,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,cAAc;AAC/B,QAAQ,KAAK,4BAA4B;AACzC,UAAU,OAAO,sBAAsB;AACvC,QAAQ;AACR,UAAU,OAAO,KAAK,CAAC,SAAS;AAChC;AACA,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACvC,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,MAAM,QAAQ,KAAK,CAAC,SAAS;AAC7B,QAAQ,KAAK,cAAc;AAC3B,UAAU,OAAO,oCAAoC;AACrD,QAAQ,KAAK,YAAY;AACzB,UAAU,OAAO,kCAAkC;AACnD,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,0BAA0B;AAC3C,QAAQ,KAAK,iBAAiB;AAC9B,UAAU,OAAO,4BAA4B;AAC7C,QAAQ,KAAK,aAAa;AAC1B,UAAU,OAAO,sCAAsC;AACvD,QAAQ,KAAK,aAAa;AAC1B,UAAU,OAAO,uBAAuB,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,sBAAsB,GAAG,qCAAqC,GAAG,mCAAmC;AACvK,QAAQ,KAAK,WAAW;AACxB,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,iCAAiC;AAClD,QAAQ,KAAK,gBAAgB;AAC7B,UAAU,OAAO,iCAAiC;AAClD,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,+EAA+E;AAChG,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,gEAAgE;AACjF,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,mEAAmE;AACpF,QAAQ,KAAK,2BAA2B;AACxC,UAAU,OAAO,oEAAoE;AACrF,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,wEAAwE;AACzF,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,sDAAsD;AACvE,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,uDAAuD;AACxE,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,4DAA4D;AAC7E,QAAQ,KAAK,kBAAkB;AAC/B,UAAU,OAAO,0DAA0D;AAC3E,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,uDAAuD;AACxE,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,6BAA6B;AAC9C,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,2BAA2B;AAC5C,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,gCAAgC;AACjD,QAAQ,KAAK,iBAAiB;AAC9B,UAAU,OAAO,0BAA0B;AAC3C,QAAQ,KAAK,eAAe;AAC5B,UAAU,OAAO,yBAAyB;AAC1C,QAAQ,KAAK,qBAAqB;AAClC,UAAU,OAAO,2CAA2C;AAC5D,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,wDAAwD;AACzE,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,6EAA6E;AAC9F,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,uEAAuE;AACxF,QAAQ,KAAK,0BAA0B;AACvC,UAAU,OAAO,kDAAkD;AACnE,QAAQ,KAAK,yBAAyB;AACtC,UAAU,OAAO,iDAAiD;AAClE,QAAQ,KAAK,oBAAoB;AACjC,UAAU,OAAO,mEAAmE;AACpF,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,0DAA0D;AAC3E,QAAQ,KAAK,2BAA2B;AACxC,UAAU,OAAO,oEAAoE;AACrF,QAAQ,KAAK,6BAA6B;AAC1C,UAAU,OAAO,4EAA4E;AAC7F,QAAQ,KAAK,uBAAuB;AACpC,UAAU,OAAO,kFAAkF;AACnG,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,0BAA0B;AAC3C,QAAQ,KAAK,wBAAwB;AACrC,UAAU,OAAO,8CAA8C;AAC/D,QAAQ,KAAK,sBAAsB;AACnC,UAAU,OAAO,kCAAkC;AACnD,QAAQ,KAAK,4BAA4B;AACzC,UAAU,OAAO,gEAAgE;AACjF,QAAQ;AACR,UAAU,OAAO,IAAI;AACrB;AACA,IAAI;AACJ,IAAI,SAAS,WAAW,CAAC,KAAK,EAAE;AAChC,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,MAAM,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC;AAClD,IAAI;AACJ,IAAI,SAAS,sBAAsB,CAAC,KAAK,EAAE;AAC3C,MAAM,OAAO,KAAK,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,sBAAsB;AAC1F,IAAI;AACJ,IAAI,SAAS,UAAU,CAAC,KAAK,EAAE;AAC/B,MAAM,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACjD,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AAC5B,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI;AACrD,IAAI;AACJ,IAAI,SAAS,qBAAqB,CAAC,KAAK,EAAE;AAC1C,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;AAC3C,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3L,MAAM,IAAI,IAAI,EAAE,OAAO,IAAI;AAC3B,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AAC/C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACvC,QAAQ,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AAChD,UAAU,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAC/D,UAAU,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;AAC9D,UAAU,IAAI,eAAe,EAAE,OAAO,eAAe;AACrD,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,SAAS,qBAAqB,CAAC,KAAK,EAAE;AAC1C,MAAM,OAAO,KAAK,CAAC,SAAS,KAAK,gBAAgB;AACjD,IAAI;AACJ,IAAI,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC9C,MAAM,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,KAAK,KAAK,CAAC,SAAS,KAAK,kBAAkB,IAAI,KAAK,CAAC,SAAS,KAAK,8BAA8B,CAAC;AAClL,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC/C,MAAM,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,KAAK,8BAA8B,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,CAAC;AACvI,IAAI;AACJ,IAAI,SAAS,sBAAsB,CAAC,KAAK,EAAE;AAC3C,MAAM,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/G,IAAI;AACJ,IAAI,SAAS,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE;AACjE,MAAM,KAAK,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AAChE,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,gBAAgB,EAAE,OAAO,SAAS;AACtE,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,SAAS,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE;AACxD,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD,MAAM,IAAI,cAAc,IAAI,IAAI,EAAE,OAAO,IAAI;AAC7C,MAAM,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC5D,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE;AACpD,QAAQ,IAAI,SAAS,CAAC,SAAS,GAAG,cAAc,GAAG,yCAAyC,EAAE;AAC9F,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,YAAY,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,GAAG,YAAY,GAAG,yCAAyC,EAAE;AACpH,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,+BAA+B,CAAC,KAAK,EAAE,KAAK,CAAC;AACtE,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE;AAC/D,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,SAAS,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE;AACtD,MAAM,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;AACpE,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACvF,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE;AAChF,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK;AAC9D,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK;AACxD,QAAQ,OAAO,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,2CAA2C,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,0CAA0C;AAChK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACpF,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC;AAC7C,MAAM,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,0CAA0C,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,2CAA2C,CAAC,IAAI,IAAI;AAC3O,IAAI;AACJ,IAAI,SAAS,8BAA8B,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE;AAC5F,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK;AAC9D,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK;AACxD,QAAQ,OAAO,OAAO,CAAC,GAAG,IAAI,YAAY,GAAG,4CAA4C,IAAI,OAAO,CAAC,KAAK,IAAI,YAAY,GAAG,4CAA4C;AACzK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,uBAAuB,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,uBAAuB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5G,MAAM,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,IAAI;AACJ,IAAI,SAAS,aAAa,GAAG;AAC7B,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;AACrE,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI;AAChG,MAAM;AACN,MAAM,OAAO,gBAAgB,EAAE;AAC/B,IAAI;AACJ,IAAI,SAAS,wBAAwB,CAAC,UAAU,EAAE,gBAAgB,EAAE;AACpE,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClJ,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC;AACrE,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC;AACvF,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;AACrD,IAAI;AACJ,IAAI,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACtC,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AACxD,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,MAAM,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACvC,MAAM,OAAO,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI;AACnH,IAAI;AACJ,IAAI,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC5C,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AACvE,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;AAC9B,MAAM,MAAM,OAAO,GAAG,uBAAuB,CAAC,CAAC,CAAC;AAChD,MAAM,MAAM,OAAO,GAAG,uBAAuB,CAAC,CAAC,CAAC;AAChD,MAAM,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,OAAO;AAClD,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,SAAS,EAAE;AAC3C,MAAM,IAAI,KAAK,GAAG,SAAS,GAAG,4CAA4C;AAC1E,MAAM,IAAI,GAAG,GAAG,SAAS,GAAG,4CAA4C;AACxE,MAAM,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE;AAC9C,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE;AAC/C,QAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS;AACjE,aAAa;AACb,UAAU,GAAG,GAAG,KAAK,CAAC,SAAS;AAC/B,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3B,IAAI;AACJ,IAAI,SAAS,6BAA6B,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE;AACxF,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7D,MAAM,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAC9Q,IAAI;AACJ,IAAI,SAAS,gBAAgB,GAAG;AAChC,MAAM,MAAM,KAAK,GAAG,EAAE;AACtB,MAAM,MAAM,gBAAgB,mBAAmB,IAAI,GAAG,EAAE;AACxD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACzG,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAC/G,MAAM,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAC5C,QAAQ,MAAM,SAAS,GAAG,6BAA6B,CAAC,UAAU,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACpG,QAAQ,MAAM,YAAY,GAAG,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC3F,QAAQ,MAAM,QAAQ,GAAG,YAAY,IAAI,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC;AACpF,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5M,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACzE,UAAU,IAAI,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAClE,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAChE,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,EAAE,EAAE,SAAS,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AACzH,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,SAAS,EAAE,UAAU,CAAC,SAAS;AACzC,UAAU,aAAa,kBAAkB,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,UAAU,UAAU,EAAE,aAAa,CAAC,SAAS,IAAI,UAAU;AAC3D,SAAS,CAAC;AACV,MAAM;AACN,MAAM,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AAC7C,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC/C,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC/C,QAAQ,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpE,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC5C,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,SAAS,EAAE,SAAS,CAAC,SAAS;AACxC,UAAU,aAAa,kBAAkB,IAAI,GAAG,EAAE;AAClD,UAAU,UAAU,EAAE,aAAa,CAAC,SAAS;AAC7C,SAAS,CAAC;AACV,MAAM;AACN,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,IAAI;AACJ,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC7B,MAAM,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;AACtG,IAAI;AACJ,IAAI,SAAS,kBAAkB,GAAG;AAClC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC1E,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,qBAAqB,IAAI,KAAK,CAAC,SAAS,KAAK,oBAAoB,EAAE;AACnG,UAAU,OAAO,EAAE;AACnB,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnD,QAAQ,OAAO,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE;AAC5C,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,SAAS,sBAAsB,CAAC,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE;AAC3G,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,GAAG;AAClD,MAAM,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,GAAG,GAAG;AACpD,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;AAC7D,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AAC/D,QAAQ,OAAO,KAAK,CAAC,IAAI,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU;AACnE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AACxH,MAAM,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,aAAa,EAAE,SAAS,EAAE;AAClE,MAAM,MAAM,WAAW,mBAAmB,IAAI,GAAG,EAAE;AACnD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACzK,MAAM,MAAM,2BAA2B,mBAAmB,IAAI,GAAG,EAAE;AACnE,MAAM,MAAM,eAAe,mBAAmB,IAAI,GAAG,EAAE;AACvD,MAAM,MAAM,mBAAmB,mBAAmB,IAAI,GAAG,EAAE;AAC3D,MAAM,MAAM,aAAa,GAAG,kBAAkB,EAAE;AAChD,MAAM,IAAI,mBAAmB,GAAG,aAAa,EAAE;AAC/C,MAAM,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;AACtD,QAAQ,MAAM,OAAO,GAAG,sBAAsB,CAAC,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;AACxH,QAAQ,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG,CAAC;AAChF,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxD,QAAQ,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE;AAC5C,UAAU,IAAI,EAAE,OAAO,CAAC,IAAI;AAC5B,UAAU,QAAQ,EAAE,OAAO,CAAC,IAAI;AAChC,UAAU,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;AACjD,SAAS,CAAC;AACV,MAAM;AACN,MAAM,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE;AAC5D,QAAQ,IAAI,2BAA2B,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;AAC3E,QAAQ,MAAM,UAAU,GAAG,6BAA6B,CAAC,kBAAkB,EAAE,IAAI,CAAC;AAClF,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AACvH,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC9C,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClD,QAAQ,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,EAAE,gBAAgB,EAAE,2BAA2B,CAAC;AAC/G,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,2BAA2B,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3D,QAAQ,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxC,QAAQ,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE;AAC5C,UAAU,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC7B,UAAU,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACrC,UAAU,UAAU,EAAE,QAAQ,CAAC;AAC/B,SAAS,CAAC;AACV,MAAM;AACN,MAAM,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACxC,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC9C,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClD,QAAQ,MAAM,eAAe,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,2BAA2B,CAAC;AACjI,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,2BAA2B,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3D,QAAQ,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxC,QAAQ,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE;AAC5C,UAAU,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC7B,UAAU,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACrC,UAAU,UAAU,EAAE,QAAQ,CAAC;AAC/B,SAAS,CAAC;AACV,MAAM;AACN,MAAM,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE;AAC1D,IAAI;AACJ,IAAI,SAAS,2BAA2B,CAAC,SAAS,EAAE,eAAe,EAAE;AACrE,MAAM,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC7C,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE;AAC7F,QAAQ,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC3D,QAAQ,OAAO;AACf,UAAU;AACV,YAAY,GAAG,WAAW,CAAC;AAC3B,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChD,cAAc,GAAG,EAAE,UAAU;AAC7B,cAAc,KAAK,EAAE,QAAQ,CAAC,SAAS;AACvC,cAAc,GAAG;AACjB,cAAc,QAAQ,EAAE,UAAU;AAClC,cAAc,KAAK,EAAE,eAAe;AACpC,cAAc,UAAU,EAAE,QAAQ,CAAC;AACnC,aAAa,CAAC;AACd,YAAY,UAAU,EAAE,QAAQ,CAAC,IAAI;AACrC,YAAY,cAAc,EAAE,QAAQ,CAAC,QAAQ;AAC7C,YAAY,gBAAgB,EAAE,QAAQ,CAAC;AACvC;AACA,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACxC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,SAAS,KAAK,wBAAwB,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7R,MAAM,OAAO,YAAY,GAAG,YAAY,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;AACzD,IAAI;AACJ,IAAI,SAAS,2BAA2B,GAAG;AAC3C,MAAM,MAAM,KAAK,GAAG,EAAE;AACtB,MAAM,MAAM,gBAAgB,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1K,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACnE,QAAQ,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,EAAE,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1D,UAAU,IAAI,EAAE,OAAO;AACvB,UAAU,IAAI;AACd,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,KAAK,CAAC,IAAI;AAChC,UAAU,YAAY,EAAE,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAC9E,UAAU,SAAS,EAAE,KAAK;AAC1B,UAAU,UAAU,EAAE,aAAa,CAAC,KAAK;AACzC,SAAS,CAAC;AACV,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1H,IAAI;AACJ,IAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AAC3C,MAAM,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC;AAChF,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,OAAO,wBAAwB;AAC1D,MAAM,OAAO,wBAAwB,GAAG,QAAQ,IAAI,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC;AAC1I,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,OAAO,EAAE,IAAI,EAAE;AACvD,MAAM,IAAI,QAAQ,GAAG,EAAE;AACvB,MAAM,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACpC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;AAClC,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACnD,MAAM;AACN,MAAM,OAAO,QAAQ,GAAG,CAAC;AACzB,IAAI;AACJ,IAAI,SAAS,wBAAwB,CAAC,UAAU,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,6BAA6B;AACpE,IAAI;AACJ,IAAI,SAAS,0BAA0B,CAAC,OAAO,EAAE;AACjD,MAAM,MAAM,eAAe,GAAG,qBAAqB,EAAE;AACrD,MAAM,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACrC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,6BAA6B;AAClE,QAAQ,MAAM,WAAW,GAAG,eAAe,GAAG,KAAK;AACnD,QAAQ,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;AACjE,QAAQ,OAAO;AACf,UAAU,GAAG,MAAM;AACnB,UAAU,KAAK;AACf,UAAU,SAAS,EAAE,WAAW;AAChC,UAAU,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW;AAC7D,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,SAAS,8BAA8B,CAAC,IAAI,EAAE,UAAU,EAAE;AAC9D,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,SAAS,4BAA4B,GAAG;AAC5C,MAAM,2BAA2B,EAAE;AACnC,MAAM,OAAO,8BAA8B,EAAE;AAC7C,IAAI;AACJ,IAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACvC,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,uBAAuB,CAAC,GAAG,CAAC;AAC/J,IAAI;AACJ,IAAI,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC3C,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;AAC/H,IAAI;AACJ,IAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACvC,MAAM,MAAM,IAAI,GAAG,gJAAgJ;AACnK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AACnC,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACxC,MAAM;AACN,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;AACrC,IAAI;AACJ,IAAI,SAAS,WAAW,CAAC,KAAK,EAAE;AAChC,MAAM,OAAO;AACb,QAAQ,EAAE,EAAE,KAAK,CAAC,EAAE;AACpB,QAAQ,GAAG,EAAE,KAAK,CAAC,GAAG;AACtB,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1B,QAAQ,GAAG,EAAE,KAAK,CAAC,GAAG;AACtB,QAAQ,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;AACxD,QAAQ,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAChC,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1B,QAAQ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;AAC9C,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;AACtC,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;AAChC,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,cAAc,EAAE,IAAI;AAC5B,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI;AAC1C,OAAO;AACP,IAAI;AACJ,IAAI,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;AACxC,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC1J,IAAI;AACJ,IAAI,SAAS,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;AACnE,MAAM,KAAK,IAAI,KAAK,GAAG,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AAC1E,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACnC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACpC,MAAM;AACN,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAClD,MAAM,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,2BAA2B,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AACzJ,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,GAAG,EAAE,kBAAkB;AAC/B,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,GAAG,EAAE,IAAI,CAAC,GAAG;AACrB,QAAQ,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,uBAAuB,GAAG,qBAAqB;AAC/E,QAAQ,KAAK,EAAE,2BAA2B;AAC1C,QAAQ,WAAW,EAAE,IAAI,CAAC,kBAAkB,GAAG,6EAA6E,GAAG,mDAAmD;AAClL,QAAQ,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,EAAE,6BAA6B,CAAC,GAAG,CAAC,GAAG,IAAI;AAC1F,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI;AACvB,QAAQ,UAAU,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzO,OAAO,CAAC,CAAC;AACT,IAAI;AACJ,IAAI,SAAS,oBAAoB,CAAC,MAAM,EAAE;AAC1C,MAAM,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,CAAC;AACxD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACvC,QAAQ,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5D,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC;AAC9K,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE;AAC7C,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/F,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvB,UAAU,KAAK,EAAE,KAAK,CAAC,IAAI;AAC3B,UAAU,GAAG,EAAE,IAAI,CAAC,IAAI;AACxB,UAAU,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACjC,UAAU,KAAK,EAAE,IAAI,CAAC,KAAK;AAC3B,UAAU,WAAW,EAAE,IAAI,CAAC,WAAW;AACvC,UAAU,UAAU,EAAE,aAAa,CAAC,KAAK;AACzC,SAAS,CAAC,CAAC;AACX,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,SAAS,wBAAwB,CAAC,KAAK,EAAE;AAC7C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7M,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,WAAW,CAAC;AACrE,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAQ,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AACxC,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI;AACzB,QAAQ,GAAG,EAAE,KAAK,CAAC,IAAI;AACvB,QAAQ,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;AAClD,QAAQ,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;AAClC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;AAC9C,QAAQ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;AAChC,QAAQ,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC;AACxC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC,SAAS;AACvD,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC;AAC1D,MAAM,OAAO,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnM,IAAI;AACJ,IAAI,SAAS,sBAAsB,CAAC,GAAG,EAAE;AACzC,MAAM,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE;AAC5D,MAAM,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;AACvG,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI;AACxD,QAAQ,QAAQ;AAChB,QAAQ,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1E,QAAQ,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1E,QAAQ,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AAC5F,QAAQ,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;AAChF,QAAQ,iBAAiB,EAAE,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG;AAC5I,OAAO;AACP,IAAI;AACJ,IAAI,SAAS,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE;AACxE,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK;AAChF,MAAM,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO;AACtF,MAAM,OAAO,QAAQ;AACrB,IAAI;AACJ,IAAI,eAAe,mBAAmB,CAAC,QAAQ,EAAE;AACjD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;AACpE,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACpD,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAChD,MAAM;AACN,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;AACjE,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC;AACjE,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC;AAClE,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;AAC3H,SAAS;AACT,MAAM;AACN,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC9B,IAAI;AACJ,IAAI,SAAS,qBAAqB,CAAC,OAAO,EAAE;AAC5C,MAAM,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC;AACzF,IAAI;AACJ,IAAI,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACzC,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU;AACnE,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,IAAI;AACvE,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,eAAe;AACtD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,OAAO,IAAI;AAClE,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,IAAI;AACtE,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,EAAE;AACzC,QAAQ,IAAI,OAAO,CAAC,KAAK,GAAG,eAAe,IAAI,OAAO,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,IAAI;AACzF,QAAQ,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AAC9F,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;AAC7C,UAAU,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,wCAAwC,CAAC;AACpI,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;AAC3C,UAAU,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,2CAA2C,CAAC;AACnJ,QAAQ;AACR,QAAQ,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AACvG,MAAM;AACN,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;AAC7D,MAAM,IAAI,UAAU,GAAG,YAAY,EAAE,OAAO,IAAI;AAChD,MAAM,MAAM,WAAW,GAAG,CAAC,YAAY,GAAG,eAAe,IAAI,QAAQ,GAAG,GAAG;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,UAAU,GAAG,YAAY,IAAI,QAAQ,GAAG,GAAG;AACvE,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;AAC1C,QAAQ,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC;AACtE,MAAM;AACN,MAAM,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9G,IAAI;AACJ,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC/B,QAAQ,OAAO,wDAAwD;AACvE,MAAM;AACN,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;AAC1C,QAAQ,OAAO,yMAAyM;AACxN,MAAM;AACN,MAAM,OAAO,uEAAuE;AACpF,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/I,IAAI;AACJ,IAAI,SAAS,uBAAuB,CAAC,UAAU,EAAE;AACjD,MAAM,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzG,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE;AAClC,MAAM,MAAM,IAAI,GAAG,+DAA+D;AAClF,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,EAAE,OAAO,IAAI;AAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACtE,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACvC,IAAI;AACJ,IAAI,SAAS,eAAe,CAAC,IAAI,EAAE;AACnC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,OAAO,EAAE;AAC1F,MAAM,MAAM,YAAY,GAAG,eAAe;AAC1C,MAAM,MAAM,UAAU,GAAG,aAAa;AACtC,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY;AAClD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE;AACpE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,EAAE;AACrD,MAAM,MAAM,IAAI,mBAAmB,IAAI,GAAG,EAAE;AAC5C,MAAM,MAAM,KAAK,GAAG,EAAE;AACtB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK;AACtC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC9C,QAAQ,MAAM,QAAQ,GAAG,wBAAwB,GAAG,QAAQ,IAAI,sBAAsB,GAAG,mBAAmB,CAAC;AAC7G,QAAQ,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC;AAC7E,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC1C,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AACvD,UAAU,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1F,UAAU,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,CAAC,KAAK,IAAI,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM;AACrJ,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;AACtE,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;AAChE,YAAY,OAAO,UAAU,GAAG,YAAY,GAAG,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;AAC9E,UAAU,CAAC,GAAG;AACd,UAAU,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AACtC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAClD,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACzB,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;AACzF,YAAY,KAAK,CAAC,IAAI,CAAC;AACvB,cAAc,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAChD,cAAc,WAAW;AACzB,cAAc,KAAK,EAAE,WAAW;AAChC,cAAc,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAAC;AACnE,cAAc,KAAK;AACnB,cAAc,OAAO,EAAE,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG;AACpD,aAAa,CAAC;AACd,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,UAAU,EAAE;AACxC,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC;AACnC,MAAM,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS;AAC3C,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS;AAC/C,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS;AAC/C,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS;AAC/C,MAAM,OAAO,EAAE,GAAG,SAAS;AAC3B,IAAI;AACJ,IAAI,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO;AACxC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE;AACpE,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,QAAQ;AACpF,MAAM,MAAM,KAAK,GAAG,EAAE;AACtB,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE;AAChE,QAAQ,MAAM,WAAW,GAAG,CAAC,IAAI,GAAG,OAAO,IAAI,UAAU,GAAG,GAAG;AAC/D,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,WAAW;AACrB,UAAU,KAAK,EAAE,kBAAkB,CAAC,IAAI,GAAG,QAAQ;AACnD,SAAS,CAAC;AACV,MAAM;AACN,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,SAAS,kBAAkB,GAAG;AAClC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,kBAAkB;AACnE,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACrE,MAAM;AACN,MAAM,OAAO,IAAI,IAAI,EAAE;AACvB,IAAI;AACJ,IAAI,SAAS,kBAAkB,GAAG;AAClC,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,MAAM,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAChD,MAAM,aAAa,GAAG,CAAC;AACvB,IAAI;AACJ,IAAI,eAAe,yBAAyB,GAAG;AAC/C,MAAM,MAAM,OAAO,GAAG,oBAAoB;AAC1C,MAAM,oBAAoB,GAAG,IAAI;AACjC,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,MAAM,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM;AACxC,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,eAAe,0BAA0B,GAAG;AAChD,MAAM,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC5E,QAAQ,oBAAoB,GAAG,kBAAkB,EAAE;AACnD,MAAM;AACN,MAAM,IAAI,oBAAoB,CAAC,KAAK,KAAK,WAAW,EAAE;AACtD,QAAQ,MAAM,oBAAoB,CAAC,MAAM,EAAE;AAC3C,MAAM;AACN,MAAM,OAAO,oBAAoB;AACjC,IAAI;AACJ,IAAI,SAAS,qBAAqB,GAAG;AACrC,MAAM,MAAM,UAAU,GAAG,sBAAsB,EAAE;AACjD,MAAM,IAAI,eAAe,IAAI,oBAAoB,IAAI,mBAAmB,IAAI,IAAI,IAAI,4BAA4B,IAAI,IAAI,EAAE;AAC1H,QAAQ,MAAM,SAAS,GAAG,CAAC,oBAAoB,CAAC,WAAW,GAAG,4BAA4B,IAAI,GAAG;AACjG,QAAQ,MAAM,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AACtE,QAAQ,OAAO,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AACxF,MAAM;AACN,MAAM,OAAO,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;AACxG,IAAI;AACJ,IAAI,SAAS,YAAY,CAAC,gBAAgB,GAAG,IAAI,EAAE;AACnD,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,kBAAkB,GAAG,qBAAqB,EAAE;AACpD,MAAM;AACN,MAAM,MAAM,MAAM,GAAG,kBAAkB;AACvC,MAAM,kBAAkB,GAAG,IAAI;AAC/B,MAAM,mBAAmB,GAAG,IAAI;AAChC,MAAM,4BAA4B,GAAG,IAAI;AACzC,MAAM,eAAe,GAAG,KAAK;AAC7B,MAAM,kBAAkB,EAAE;AAC1B,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,MAAM,MAAM,CAAC,OAAO,GAAG,IAAI;AAC3B,MAAM,IAAI;AACV,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,CAAC,CAAC,MAAM;AACd,MAAM;AACN,MAAM,MAAM,CAAC,UAAU,EAAE;AACzB,IAAI;AACJ,IAAI,SAAS,mBAAmB,GAAG;AACnC,MAAM,kBAAkB,EAAE;AAC1B,MAAM,MAAM,IAAI,GAAG,MAAM;AACzB,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,UAAU,aAAa,GAAG,CAAC;AAC3B,UAAU;AACV,QAAQ;AACR,QAAQ,kBAAkB,GAAG,qBAAqB,EAAE;AACpD,QAAQ,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC1D,MAAM,CAAC;AACP,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACxD,IAAI;AACJ,IAAI,SAAS,sBAAsB,GAAG;AACtC,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC5D,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC/C,MAAM;AACN,MAAM,IAAI,mBAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AAChF,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC9D,MAAM;AACN,MAAM,OAAO,CAAC;AACd,IAAI;AACJ,IAAI,eAAe,cAAc,GAAG;AACpC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACpD,MAAM,aAAa,GAAG,IAAI;AAC1B,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,YAAY,CAAC,IAAI,CAAC;AAC1B,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,iBAAiB,CAAC,kBAAkB,CAAC;AACjD,IAAI;AACJ,IAAI,eAAe,iBAAiB,CAAC,MAAM,EAAE;AAC7C,MAAM,MAAM,MAAM,GAAG,mBAAmB;AACxC,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,aAAa,GAAG,yCAAyC;AACjE,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC3D,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,GAAG,MAAM,IAAI,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACpH,MAAM,YAAY,CAAC,KAAK,CAAC;AACzB,MAAM,kBAAkB,GAAG,OAAO;AAClC,MAAM,IAAI;AACV,QAAQ,MAAM,OAAO,GAAG,MAAM,0BAA0B,EAAE;AAC1D,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE;AACnD,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM;AAC9B,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;AAC3C,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM;AAC/B,UAAU,IAAI,kBAAkB,KAAK,MAAM,EAAE;AAC7C,UAAU,kBAAkB,GAAG,IAAI;AACnC,UAAU,mBAAmB,GAAG,IAAI;AACpC,UAAU,4BAA4B,GAAG,IAAI;AAC7C,UAAU,eAAe,GAAG,KAAK;AACjC,UAAU,kBAAkB,GAAG,UAAU;AACzC,UAAU,kBAAkB,EAAE;AAC9B,QAAQ,CAAC;AACT,QAAQ,kBAAkB,GAAG,MAAM;AACnC,QAAQ,mBAAmB,GAAG,OAAO;AACrC,QAAQ,4BAA4B,GAAG,OAAO,CAAC,WAAW;AAC1D,QAAQ,eAAe,GAAG,IAAI;AAC9B,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,mBAAmB,EAAE;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,YAAY,CAAC,KAAK,CAAC;AAC3B,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,aAAa,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,0BAA0B;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7C,MAAM,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACxG,IAAI;AACJ,IAAI,SAAS,WAAW,CAAC,SAAS,GAAG,IAAI,EAAE;AAC3C,MAAM,MAAM,MAAM,GAAG,uBAAuB,EAAE,IAAI,aAAa,EAAE;AACjE,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,MAAM,MAAM,QAAQ,GAAG,gBAAgB,EAAE;AACzC,MAAM,eAAe,GAAG,QAAQ;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AAC1D,MAAM,SAAS,GAAG,SAAS;AAC3B,IAAI;AACJ,IAAI,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3C,MAAM,MAAM,MAAM,GAAG,aAAa,EAAE;AACpC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO;AACxC,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACpD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ;AAC9C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ;AAC9C,MAAM,IAAI,UAAU,IAAI,UAAU,GAAG,UAAU,EAAE;AACjD,QAAQ,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;AACzD,MAAM;AACN,MAAM,IAAI,OAAO,GAAG,UAAU,EAAE;AAChC,QAAQ,KAAK,IAAI,UAAU,GAAG,OAAO;AACrC,QAAQ,OAAO,GAAG,UAAU;AAC5B,MAAM;AACN,MAAM,IAAI,KAAK,GAAG,UAAU,EAAE;AAC9B,QAAQ,OAAO,IAAI,KAAK,GAAG,UAAU;AACrC,QAAQ,KAAK,GAAG,UAAU;AAC1B,MAAM;AACN,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAC/B,IAAI;AACJ,IAAI,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,OAAO,EAAE;AACpF,MAAM,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;AAChD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO;AACpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK;AAChC,IAAI;AACJ,IAAI,SAAS,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,EAAE;AACpD,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AAC5D,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,eAAe;AAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE;AACrE,MAAM,MAAM,MAAM,GAAG,aAAa,EAAE;AACpC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,eAAe;AAChF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC;AAC/F,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,GAAG,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;AACpF,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc;AACxE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc;AACjE,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,CAAC;AAC1D,IAAI;AACJ,IAAI,SAAS,uBAAuB,CAAC,YAAY,EAAE;AACnD,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC/E,IAAI;AACJ,IAAI,eAAe,sBAAsB,GAAG;AAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE;AACnD,MAAM,eAAe,GAAG,IAAI;AAC5B,MAAM,cAAc,GAAG,IAAI;AAC3B,MAAM,IAAI;AACV,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE;AACxD,UAAU,MAAM,EAAE,OAAO;AACzB,UAAU,OAAO,EAAE;AACnB,YAAY,MAAM,EAAE,kBAAkB;AACtC,YAAY,cAAc,EAAE;AAC5B,WAAW;AACX,UAAU,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,EAAE;AACjF,SAAS,CAAC;AACV,QAAQ,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,UAAU,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;AACvF,QAAQ;AACR,QAAQ,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC;AACnD,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,cAAc,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAClF,MAAM,CAAC,SAAS;AAChB,QAAQ,eAAe,GAAG,KAAK;AAC/B,MAAM;AACN,IAAI;AACJ,IAAI,eAAe,cAAc,GAAG;AACpC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7B,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM,uBAAuB,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,sBAAsB,EAAE;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,iPAAiP,CAAC,CAAC;AACzQ,IAAI,IAAI,cAAc,EAAE,EAAE;AAC1B,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,2FAA2F,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5J,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,4LAA4L,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,kHAAkH,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,oHAAoH,EAAE,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;AACxkB,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,kBAAkB,EAAE,IAAI,IAAI,EAAE;AAC1D,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,8FAA8F,EAAE,WAAW,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAClN,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AAC1D,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,8FAA8F,EAAE,WAAW,CAAC,kBAAkB,CAAC,eAAe,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,kBAAkB,CAAC,aAAa,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AACtR,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,4IAA4I,CAAC,CAAC;AACpK,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,cAAc;AAC9B,MAAM,OAAO,EAAE,MAAM,WAAW,EAAE,KAAK,EAAE;AACzC,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM;AACjC,MAAM,OAAO,EAAE,MAAM,KAAK,cAAc,EAAE;AAC1C,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrF,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,kBAAkB,EAAE,IAAI,IAAI;AAC5C,MAAM,OAAO,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC;AACtC,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC1C,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,kBAAkB,EAAE,IAAI,IAAI;AAC5C,MAAM,OAAO,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC;AACvC,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAC3C,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,EAAE,uBAAuB,EAAE,IAAI,aAAa,EAAE,CAAC;AAC/D,MAAM,OAAO,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC;AACtC,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAC3C,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,eAAe;AACpD,MAAM,OAAO,EAAE,cAAc;AAC7B,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAClD,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM;AAC9B,MAAM,OAAO,EAAE,iBAAiB;AAChC,MAAM,QAAQ,EAAE,CAAC,WAAW,KAAK;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,gBAAgB,KAAK,IAAI,GAAG,QAAQ,GAAG,gBAAgB,KAAK,OAAO,GAAG,aAAa,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9J,MAAM,CAAC;AACP,MAAM,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAC9B,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC5C,IAAI;AACJ,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,sEAAsE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3H,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,wDAAwD,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AACtH,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,wDAAwD,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AACtH,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,uDAAuD,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACpH,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,8JAA8J,CAAC,CAAC;AACtL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE;AAChC,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,sFAAsF,CAAC,CAAC;AAChH,IAAI,CAAC,MAAM,IAAI,eAAe,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AACjE,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,+DAA+D,CAAC,CAAC;AACzF,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,qHAAqH,CAAC,CAAC;AAC/I,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1D,MAAM,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE;AAC5F,QAAQ,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;AACtC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,uDAAuD,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAChO,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,gEAAgE,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,6BAA6B,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAC7M,MAAM,IAAI,kBAAkB,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,uDAAuD,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AAC1L,MAAM,CAAC,MAAM;AACb,QAAQ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,oHAAoH,CAAC,CAAC;AAC9I,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC7D,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACjG,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,qEAAqE,EAAE,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpJ,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC3C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE,CAAC;AAC1D,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACjG,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,6DAA6D,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpI,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,IAAI,kBAAkB,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,oDAAoD,EAAE,UAAU,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACnJ,MAAM,CAAC,MAAM;AACb,QAAQ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,IAAI,cAAc,EAAE,EAAE;AAC5B,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,wEAAwE,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,mFAAmF,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACtZ,MAAM,CAAC,MAAM;AACb,QAAQ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,uHAAuH,CAAC,CAAC;AACjJ,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC5D,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACjG,QAAQ,IAAI,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC;AAC1C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,sDAAsD,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9P,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC5D,MAAM,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE;AAC9F,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;AACxC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,iFAAiF,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACnO,QAAQ,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC9D,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,EAAE,EAAE;AACrG,UAAU,IAAI,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5C,UAAU,WAAW,CAAC,IAAI,CAAC,CAAC,sDAAsD,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACtI,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,QAAQ,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5D,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,EAAE,EAAE;AACrG,UAAU,IAAI,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC;AAC/C,UAAU,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;AAC7C,UAAU,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAClD,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,YAAY,IAAI,IAAI,EAAE;AACtB,cAAc,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,cAAc,WAAW,CAAC,IAAI,CAAC,CAAC,6BAA6B,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1F,YAAY,CAAC,MAAM;AACnB,cAAc,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5C,YAAY;AACZ,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC9C,UAAU,CAAC,MAAM;AACjB,YAAY,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,UAAU;AACV,UAAU,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC1C,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,sEAAsE,EAAE,MAAM,EAAE;AAClI,QAAQ,WAAW,EAAE,CAAC,kBAAkB,EAAE;AAC1C,QAAQ,UAAU,EAAE,CAAC,kBAAkB;AACvC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,wBAAwB,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,qEAAqE,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,6BAA6B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC9P,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC5D,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACjG,QAAQ,IAAI,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC;AAC1C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,sDAAsD,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpI,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC3C,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC7D,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACjG,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACxJ,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AACzC,MAAM,IAAI,kBAAkB,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,oGAAoG,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,sBAAsB,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzN,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACvC,UAAU,WAAW,CAAC,IAAI,CAAC,CAAC,oHAAoH,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACrL,QAAQ,CAAC,MAAM;AACf,UAAU,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACxC,UAAU,WAAW,CAAC,IAAI,CAAC,CAAC,wDAAwD,CAAC,CAAC;AACtF,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,QAAQ,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC9D,QAAQ,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AACnG,UAAU,IAAI,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5C,UAAU,WAAW,CAAC,IAAI,CAAC,CAAC,sDAAsD,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACtI,QAAQ;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM;AACb,QAAQ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC9C,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAC;AACzD,IAAI;AACJ,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI;AACJ,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,EAAE,CAAC,CAAC;AACJ;;;;"}